Browse Source

Merge branch 'olympia' into olympia-cli-forum

Leszek Wiesner 3 years ago
parent
commit
15eda9e9d4
100 changed files with 605 additions and 2640 deletions
  1. 7 1
      .env
  2. 7 2
      .github/workflows-disabled/run-network-tests.yml
  3. 1 0
      .github/workflows/create-release.yml
  4. 169 0
      .github/workflows/deploy-node-network.yml
  5. 42 4
      .github/workflows/deploy-playground.yml
  6. 3 1
      .github/workflows/run-integration-tests.yml
  7. 54 0
      .pipelines/deploy-node-network-inputs.json
  8. 17 10
      Cargo.lock
  9. 14 37
      README.md
  10. 0 2
      apps.Dockerfile
  11. 14 12
      build-node-docker.sh
  12. 0 0
      chain-metadata.json
  13. 34 36
      cli/README.md
  14. 6 2
      cli/package.json
  15. 51 42
      cli/scripts/content-test.sh
  16. 13 2
      cli/scripts/membership-test.sh
  17. 0 3
      cli/src/Api.ts
  18. 0 1
      cli/src/Types.ts
  19. 12 5
      cli/src/base/AccountsCommandBase.ts
  20. 0 1
      cli/src/base/ApiCommandBase.ts
  21. 0 1
      cli/src/commands/content/video.ts
  22. 0 1
      cli/src/commands/content/videos.ts
  23. 18 1
      devops/aws/cloudformation/infrastructure.yml
  24. 1 1
      devops/aws/cloudformation/single-instance-docker.yml
  25. 1 1
      devops/aws/cloudformation/single-instance.yml
  26. 7 7
      devops/aws/deploy-infra.sample.cfg
  27. 43 13
      devops/aws/deploy-playground-playbook.yml
  28. 1 1
      devops/aws/deploy-playground.sh
  29. 6 2
      devops/aws/deploy-single-node.sample.cfg
  30. 13 5
      devops/aws/roles/admin/tasks/deploy-pioneer.yml
  31. 40 0
      devops/aws/roles/rpc/tasks/main.yml
  32. 14 0
      devops/aws/roles/rpc/templates/Caddyfile.j2
  33. 9 3
      devops/aws/templates/Playground-Caddyfile.j2
  34. 0 1
      devops/vscode/settings.json
  35. 0 2
      distributor-node/src/services/networking/runtime/api.ts
  36. 7 23
      docker-compose.yml
  37. 1 1
      metadata-protobuf/tsconfig.json
  38. 0 4
      node/src/chain_spec/mod.rs
  39. 0 18
      pioneer.Dockerfile
  40. 0 2
      pioneer/.123trigger
  41. 0 1
      pioneer/.babelrc.js
  42. 0 3
      pioneer/.codeclimate.yml
  43. 0 3
      pioneer/.dockerignore
  44. 0 10
      pioneer/.editorconfig
  45. 0 4
      pioneer/.env-example
  46. 0 5
      pioneer/.eslintignore
  47. 0 35
      pioneer/.eslintrc.js
  48. 0 28
      pioneer/.gitignore
  49. 0 159
      pioneer/.gitlab-ci.yml
  50. 0 0
      pioneer/.npmignore
  51. 0 1
      pioneer/.nvmrc
  52. 0 1
      pioneer/.prettierignore
  53. 0 3
      pioneer/.storybook/addons.ts
  54. 0 19
      pioneer/.storybook/config.tsx
  55. 0 4
      pioneer/.storybook/style.css
  56. 0 47
      pioneer/.storybook/webpack.config.js
  57. 0 7
      pioneer/.stylelintrc
  58. 0 13
      pioneer/.travis.yml
  59. 0 19
      pioneer/BOUNTIES.md
  60. 0 478
      pioneer/CHANGELOG.md
  61. 0 45
      pioneer/CONTRIBUTING.md
  62. 0 26
      pioneer/Dockerfile
  63. 0 22
      pioneer/I18N.md
  64. 0 201
      pioneer/LICENSE
  65. 0 54
      pioneer/README.md
  66. 0 5
      pioneer/babel.config.js
  67. 0 33
      pioneer/deployment.extras.yml
  68. 0 60
      pioneer/deployment.template.yml
  69. 0 27
      pioneer/docker/nginx.conf
  70. 0 20
      pioneer/env.sh
  71. 0 24
      pioneer/gh-pages-refresh.sh
  72. 0 73
      pioneer/i18next-scanner.config.js
  73. 0 72
      pioneer/img/pioneer_new.svg
  74. 0 26
      pioneer/jest.config.js
  75. 0 14
      pioneer/lerna.json
  76. 0 98
      pioneer/package.json
  77. 0 0
      pioneer/packages/apps-config/.skip-npm
  78. 0 201
      pioneer/packages/apps-config/LICENSE
  79. 0 43
      pioneer/packages/apps-config/README.md
  80. 0 18
      pioneer/packages/apps-config/package.json
  81. 0 30
      pioneer/packages/apps-config/src/api/chain/arcadia.ts
  82. 0 27
      pioneer/packages/apps-config/src/api/chain/berlin.ts
  83. 0 11
      pioneer/packages/apps-config/src/api/chain/index.ts
  84. 0 18
      pioneer/packages/apps-config/src/api/index.ts
  85. 0 10
      pioneer/packages/apps-config/src/api/spec/acala.ts
  86. 0 28
      pioneer/packages/apps-config/src/api/spec/centrifuge-chain.ts
  87. 0 27
      pioneer/packages/apps-config/src/api/spec/edgeware.ts
  88. 0 72
      pioneer/packages/apps-config/src/api/spec/encointer-node-notee.ts
  89. 0 46
      pioneer/packages/apps-config/src/api/spec/encointer-node-teeproxy.ts
  90. 0 27
      pioneer/packages/apps-config/src/api/spec/index.ts
  91. 0 3
      pioneer/packages/apps-config/src/api/spec/joystream-node.ts
  92. 0 19
      pioneer/packages/apps-config/src/api/spec/kulupu.ts
  93. 0 11
      pioneer/packages/apps-config/src/api/spec/node-template.ts
  94. 0 22
      pioneer/packages/apps-config/src/api/spec/stable-poc.ts
  95. 0 12
      pioneer/packages/apps-config/src/api/util.ts
  96. 0 31
      pioneer/packages/apps-config/src/extensions/index.ts
  97. 0 25
      pioneer/packages/apps-config/src/links/commonwealth.ts
  98. 0 19
      pioneer/packages/apps-config/src/links/index.ts
  99. 0 30
      pioneer/packages/apps-config/src/links/polkascan.ts
  100. 0 22
      pioneer/packages/apps-config/src/links/polkassembly.ts

+ 7 - 1
.env

@@ -61,5 +61,11 @@ DISTRIBUTOR_1_ACCOUNT_URI=//testing//worker//Distribution//${DISTRIBUTOR_1_WORKE
 DISTRIBUTOR_2_WORKER_ID=1
 DISTRIBUTOR_2_ACCOUNT_URI=//testing//worker//Distribution//${DISTRIBUTOR_2_WORKER_ID}
 
+# Membership Faucet
+SCREENING_AUTHORITY_SEED=//Alice
+INVITING_MEMBER_ID=0
+
 # joystream/node docker image tag
-JOYSTREAM_NODE_TAG=latest
+# We do not provide a default value - scripts that startup a joystream-node service
+# Should be explicit about what version to use.
+# JOYSTREAM_NODE_TAG=latest

+ 7 - 2
.github/workflows-disabled/run-network-tests.yml

@@ -112,6 +112,7 @@ jobs:
           mkdir -p ${HOME}/.local/share/joystream-cli
           joystream-cli api:setUri ws://localhost:9944
           export RUNTIME=sumer
+          export TARGET_RUNTIME_TAG=latest
           tests/network-tests/run-migration-tests.sh
 
   basic_runtime:
@@ -140,7 +141,9 @@ jobs:
       - name: Ensure tests are runnable
         run: yarn workspace network-tests build
       - name: Execute network tests
-        run: tests/network-tests/run-full-tests.sh
+        run: |
+          export RUNTIME=latest
+          tests/network-tests/run-full-tests.sh
 
   new_chain_setup:
     name: Initialize new chain
@@ -172,5 +175,7 @@ jobs:
       # Bring up hydra query-node development instance, then run content directory
       # integration tests
       - name: Execute Tests
-        run: tests/network-tests/test-setup-new-chain.sh
+        run: |
+          export RUNTIME=latest
+          tests/network-tests/test-setup-new-chain.sh
 

+ 1 - 0
.github/workflows/create-release.yml

@@ -65,6 +65,7 @@ jobs:
         run: |
           export WORKSPACE_ROOT=`cargo metadata --offline --no-deps --format-version 1 | jq .workspace_root -r`
           sudo chmod a+w $WORKSPACE_ROOT
+          sudo chmod -R a+w $HOME/.cargo/registry
           ./scripts/raspberry-cross-build.sh
 
       - name: Tar the binary

+ 169 - 0
.github/workflows/deploy-node-network.yml

@@ -0,0 +1,169 @@
+name: Deploy Network
+
+on:
+  workflow_dispatch:
+    inputs:
+      jsonInput:
+        description: 'Json input (refer to .pipelines/deploy-node-network-inputs.json)'
+        required: true
+        default: ''
+
+defaults:
+  run:
+    working-directory: devops/aws
+
+jobs:
+  deploy-node-network:
+    name: Create CloudFormation stack and run Ansible playbook
+    runs-on: ubuntu-latest
+    env:
+      STACK_NAME: ga-deploy-node-network-${{ github.run_number }}
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v2
+
+      - name: Set env variables
+        id: myoutputs # set the outputs
+        run: |
+          jsonInput=$(jq -r '.inputs.jsonInput' $GITHUB_EVENT_PATH)
+          export ENCRYPTION_KEY=$(echo $jsonInput | jq -r '.encryptionKey.value')
+          echo ::set-output name=encryptionKey::$ENCRYPTION_KEY
+          echo "::add-mask::$ENCRYPTION_KEY"
+          echo ::set-output name=gitRepo::$(echo $jsonInput | jq -r '.gitRepo.value')
+          echo ::set-output name=branchName::$(echo $jsonInput | jq -r '.branchName.value')
+          echo ::set-output name=keyName::$(echo $jsonInput | jq -r '.keyName.value')
+          echo ::set-output name=numberOfValidators::$(echo $jsonInput | jq -r '.numberOfValidators.value')
+          echo ::set-output name=validatorInstanceType::$(echo $jsonInput | jq -r '.validatorInstanceType.value')
+          echo ::set-output name=buildInstanceType::$(echo $jsonInput | jq -r '.buildInstanceType.value')
+          echo ::set-output name=rpcInstanceType::$(echo $jsonInput | jq -r '.rpcInstanceType.value')
+          echo ::set-output name=ec2AMI::$(echo $jsonInput | jq -r '.ec2AMI.value')
+          echo ::set-output name=networkSuffix::$(echo $jsonInput | jq -r '.networkSuffix.value')
+          echo ::set-output name=deploymentType::$(echo $jsonInput | jq -r '.deploymentType.value')
+          initialBalancesFile=$(echo $jsonInput | jq -r '.initialBalancesFile.value')
+          initialMembersFile=$(echo $jsonInput | jq -r '.initialMembersFile.value')
+          if [ -z "$initialBalancesFile" ]
+          then
+            echo ::set-output name=initialBalancesFilePath::''
+          else
+            wget $initialBalancesFile -O initial-balances.json
+            echo ::set-output name=initialBalancesFilePath::'initial-balances.json'
+          fi
+          if [ -z "$initialMembersFile" ]
+          then
+            echo ::set-output name=initialMembersFilePath::''
+          else
+            wget $initialMembersFile -O initial-members.json
+            echo ::set-output name=initialMembersFilePath::'initial-members.json'
+          fi
+
+      - name: Install Ansible dependencies
+        run: pipx inject ansible-core boto3 botocore
+
+      - name: Configure AWS credentials
+        uses: aws-actions/configure-aws-credentials@v1
+        with:
+          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
+          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
+          aws-region: us-east-1
+
+      - name: Deploy to AWS CloudFormation
+        uses: aws-actions/aws-cloudformation-github-deploy@v1
+        id: deploy_stack
+        with:
+          name: ${{ env.STACK_NAME }}
+          template: devops/aws/cloudformation/infrastructure.yml
+          no-fail-on-empty-changeset: '1'
+          parameter-overrides: >-
+            KeyName=${{ steps.myoutputs.outputs.keyName }},
+            ValidatorEC2InstanceType=${{ steps.myoutputs.outputs.validatorInstanceType }},
+            RPCEC2InstanceType=${{ steps.myoutputs.outputs.rpcInstanceType }},
+            BuildEC2InstanceType=${{ steps.myoutputs.outputs.buildInstanceType }},
+            EC2AMI=${{ steps.myoutputs.outputs.ec2AMI }},
+            NumberOfValidators=${{ steps.myoutputs.outputs.numberOfValidators }}
+
+      - name: Prepare inventory for Ansible
+        run: |
+          ASG=${{ steps.deploy_stack.outputs.AutoScalingId }}
+
+          VALIDATORS=""
+
+          INSTANCES=$(aws autoscaling describe-auto-scaling-instances \
+            --query "AutoScalingInstances[?AutoScalingGroupName=='${ASG}'].InstanceId" --output text);
+
+          for ID in $INSTANCES
+          do
+            IP=$(aws ec2 describe-instances --instance-ids $ID --query "Reservations[].Instances[].PublicIpAddress" --output text)
+            VALIDATORS+="$IP\n"
+          done
+
+          echo -e "[build]\n${{ steps.deploy_stack.outputs.BuildPublicIp }}\n" >> inventory
+          echo -e "[validators]\n$VALIDATORS" >> inventory
+          echo -e "[rpc]\n${{ steps.deploy_stack.outputs.RPCPublicIp }}" >> inventory
+          cat inventory
+
+      - name: Run playbook to compile joystream-node on build server
+        uses: dawidd6/action-ansible-playbook@v2
+        if: steps.myoutputs.outputs.ec2AMI == ''
+        with:
+          playbook: build-code.yml
+          directory: devops/aws
+          requirements: requirements.yml
+          key: ${{ secrets.SSH_PRIVATE_KEY }}
+          options: |
+            --inventory inventory
+            --extra-vars "branch_name=${{ steps.myoutputs.outputs.branchName }} \
+                          git_repo=${{ steps.myoutputs.outputs.gitRepo }} data_path=mydata"
+
+      - name: Run playbook to install additional utils on build server
+        uses: dawidd6/action-ansible-playbook@v2
+        if: steps.myoutputs.outputs.ec2AMI == ''
+        with:
+          playbook: setup-admin.yml
+          directory: devops/aws
+          requirements: requirements.yml
+          key: ${{ secrets.SSH_PRIVATE_KEY }}
+          options: |
+            --inventory inventory
+
+      - name: Run playbook to configure chain-spec and pioneer
+        uses: dawidd6/action-ansible-playbook@v2
+        with:
+          playbook: chain-spec-pioneer.yml
+          directory: devops/aws
+          requirements: requirements.yml
+          key: ${{ secrets.SSH_PRIVATE_KEY }}
+          options: |
+            --inventory inventory
+            --extra-vars "network_suffix=${{ steps.myoutputs.outputs.networkSuffix }} data_path=mydata \
+                          number_of_validators=${{ steps.myoutputs.outputs.numberOfValidators }} \
+                          git_repo=${{ steps.myoutputs.outputs.gitRepo }} \
+                          deployment_type=${{ steps.myoutputs.outputs.deploymentType }} \
+                          bucket_name=${{ steps.deploy_stack.outputs.S3BucketName }} \
+                          branch_name=${{ steps.myoutputs.outputs.branchName }} \
+                          initial_members_file=${{ steps.myoutputs.outputs.initialMembersFilePath }} \
+                          initial_balances_file=${{ steps.myoutputs.outputs.initialBalancesFilePath }}"
+
+      - name: Encrpyt the artifacts
+        run: |
+          7z a -p${{ steps.myoutputs.outputs.encryptionKey }} chain-data.7z mydata/*
+
+      - name: Save the output as an artifact
+        uses: actions/upload-artifact@v2
+        with:
+          name: data-chainspec-auth
+          path: devops/aws/chain-data.7z
+
+      - name: Print output URL's
+        run: |
+          echo -e "Pioneer URL: https://${{ steps.deploy_stack.outputs.DomainName }}"
+          echo -e "RPC: wss://${{ steps.deploy_stack.outputs.RPCPublicIp }}.nip.io/ws-rpc"
+
+      - name: Delete CloudFormation Stack if any step failed
+        if: failure()
+        run: |
+          echo "Empty the bucket"
+          aws s3 rm s3://${{ steps.deploy_stack.outputs.S3BucketName }} --recursive || echo "No bucket"
+          echo "Deleting ${{ env.STACK_NAME }} stack"
+          aws cloudformation delete-stack --stack-name ${{ env.STACK_NAME }}
+          echo "Waiting for ${{ env.STACK_NAME }} to be deleted..."
+          aws cloudformation wait stack-delete-complete --stack-name ${{ env.STACK_NAME }}

+ 42 - 4
.github/workflows/deploy-playground.yml

@@ -19,17 +19,29 @@ on:
         description: 'AWS EC2 instance type (t2.micro, t2.large)'
         required: false
         default: 't2.micro'
-
+      stackNamePrefix:
+        description: 'Additional identifier to include in stack name'
+        required: false
+        default: 'playground'
+      skipChainSetup:
+        description: 'Optionally skip running newChainSetup script (true or false)'
+        required: true
+        default: 'false'
+      # TODO: customDomain instead of ip_address.nip.io
+      # customDomain:
+      #   description: 'DNS hostname to use for deployment'
+      #   required: false
+      #   default: ''
 defaults:
   run:
     working-directory: devops/aws
 
 jobs:
   deploy-playground:
-    name: Create an EC2 instance and configure docker-compose stack
+    name: Deploy Playground Job
     runs-on: ubuntu-latest
     env:
-      STACK_NAME: joystream-playground-${{ github.event.inputs.branchName }}-${{ github.run_number }}
+      STACK_NAME: ${{ github.event.inputs.stackNamePrefix }}-${{ github.event.inputs.branchName }}-${{ github.run_number }}
     steps:
       - name: Checkout
         uses: actions/checkout@v2
@@ -44,6 +56,16 @@ jobs:
           aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
           aws-region: us-east-1
 
+      - name: Check if CloudFormation stack exists
+        id: stack_exists
+        run: |
+          if aws cloudformation describe-stacks --stack-name ${{ env.STACK_NAME }} >/dev/null 2>/dev/null; then
+            echo "Stack already exists"
+            exit 1
+          else
+            echo "Stack does not exist"
+          fi
+
       - name: Deploy to AWS CloudFormation
         uses: aws-actions/aws-cloudformation-github-deploy@v1
         id: deploy_stack
@@ -65,4 +87,20 @@ jobs:
             ${{ steps.deploy_stack.outputs.PublicIp }}
           options: |
             --extra-vars "git_repo=${{ github.event.inputs.gitRepo }} \
-                          branch_name=${{ github.event.inputs.branchName }}"
+                          branch_name=${{ github.event.inputs.branchName }} \
+                          skip_chain_setup=${{ github.event.inputs.skipChainSetup }}"
+
+      - name: Save the endpoints file as an artifact
+        uses: actions/upload-artifact@v2
+        with:
+          name: endpoints
+          path: devops/aws/endpoints.json
+
+      - name: Delete CloudFormation Stack if any step failed
+        # Skip if stack already existed
+        if: failure() && steps.stack_exists.outcome != 'failure'
+        run: |
+          echo "Deleting ${{ env.STACK_NAME }} stack"
+          aws cloudformation delete-stack --stack-name ${{ env.STACK_NAME }}
+          echo "Waiting for ${{ env.STACK_NAME }} to be deleted..."
+          aws cloudformation wait stack-delete-complete --stack-name ${{ env.STACK_NAME }}

+ 3 - 1
.github/workflows/run-integration-tests.yml

@@ -109,4 +109,6 @@ jobs:
         run: yarn workspace integration-tests build
       # Bring up hydra query-node development instance, then run integration tests
       - name: Execute Tests
-        run: query-node/run-tests.sh
+        run: |
+          export JOYSTREAM_NODE_TAG=latest
+          query-node/run-tests.sh

+ 54 - 0
.pipelines/deploy-node-network-inputs.json

@@ -0,0 +1,54 @@
+{
+  "gitRepo": {
+    "description": "Code repository",
+    "value": "https://github.com/Joystream/joystream.git"
+  },
+  "branchName": {
+    "description": "Branch to deploy",
+    "value": "master"
+  },
+  "keyName": {
+    "description": "SSH key pair on AWS",
+    "value": "joystream-github-action-key"
+  },
+  "numberOfValidators": {
+    "description": "Number of validators to deploy",
+    "value": "2"
+  },
+  "validatorInstanceType": {
+    "description": "AWS EC2 instance type for Validators (t2.micro, t2.large)",
+    "value": "t2.micro"
+  },
+  "buildInstanceType": {
+    "description": "AWS EC2 instance type for Build Instance (t2.micro, t2.large)",
+    "value": "t2.large"
+  },
+  "rpcInstanceType": {
+    "description": "AWS EC2 instance type for RPC (t2.micro, t2.large)",
+    "value": "t2.micro"
+  },
+  "ec2AMI": {
+    "description": "Pre-built AMI ID (ami-095792100b6e43a67)",
+    "value": "ami-095792100b6e43a67"
+  },
+  "networkSuffix": {
+    "description": "Network suffix that will be added to the network name",
+    "value": "8129"
+  },
+  "initialBalancesFile": {
+    "description": "HTTP Link to the Initial Balances file",
+    "value": ""
+  },
+  "initialMembersFile": {
+    "description": "HTTP Link to the Initial Members file",
+    "value": ""
+  },
+  "deploymentType": {
+    "description": "Chain deployment type (live, dev etc.)",
+    "value": "live"
+  },
+  "encryptionKey": {
+    "description": "Password to encrypt the artifacts",
+    "value": "password"
+  }
+}

+ 17 - 10
Cargo.lock

@@ -424,9 +424,9 @@ checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff"
 
 [[package]]
 name = "bindgen"
-version = "0.57.0"
+version = "0.59.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd4865004a46a0aafb2a0a5eb19d3c9fc46ee5f063a6cfc605c69ac9ecf5263d"
+checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8"
 dependencies = [
  "bitflags",
  "cexpr",
@@ -678,9 +678,9 @@ dependencies = [
 
 [[package]]
 name = "cexpr"
-version = "0.4.0"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27"
+checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
 dependencies = [
  "nom",
 ]
@@ -3078,9 +3078,9 @@ dependencies = [
 
 [[package]]
 name = "librocksdb-sys"
-version = "6.17.3"
+version = "6.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5da125e1c0f22c7cae785982115523a0738728498547f415c9054cb17c7e89f9"
+checksum = "c309a9d2470844aceb9a4a098cf5286154d20596868b75a6b36357d2bb9ca25d"
 dependencies = [
  "bindgen",
  "cc",
@@ -3333,6 +3333,12 @@ dependencies = [
  "syn",
 ]
 
+[[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
 [[package]]
 name = "miniz_oxide"
 version = "0.4.4"
@@ -3534,11 +3540,12 @@ checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451"
 
 [[package]]
 name = "nom"
-version = "5.1.2"
+version = "7.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af"
+checksum = "1b1d11e1ef389c76fe5b81bcaf2ea32cf88b62bc494e19f493d0b30e7a930109"
 dependencies = [
  "memchr",
+ "minimal-lexical",
  "version_check",
 ]
 
@@ -6548,9 +6555,9 @@ dependencies = [
 
 [[package]]
 name = "shlex"
-version = "0.1.1"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2"
+checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
 
 [[package]]
 name = "signal-hook"

+ 14 - 37
README.md

@@ -14,7 +14,7 @@ The following tools are required for building, testing and contributing to this
 - [Rust](https://www.rust-lang.org/tools/install) toolchain - _required_
 - [nodejs](https://nodejs.org/) v14.x - _required_
 - [yarn classic](https://classic.yarnpkg.com/en/docs/install) package manager v1.22.x- _required_
-- [docker](https://www.docker.com/get-started) and docker-compose - _required_
+- [docker](https://www.docker.com/get-started) and docker-compose v.1.29 or higher - _required_
 - [ansible](https://www.ansible.com/) - _optional_
 
 If you use VSCode as your code editor we recommend using the workspace [settings](devops/vscode/settings.json) for recommend eslint plugin to function properly.
@@ -46,13 +46,13 @@ yarn start
 **Server Applications - infrastructure**
 
 - [Storage Node](./storage-node) - Media Storage Infrastructure
-- [Query Node](https://github.com/Joystream/joystream/tree/query_node/query-node) - _under development_
-- [Discovery Node](https://github.com/Joystream/joystream/tree/init_discovery_node/discovery_node) - _under development_
+- [Query Node](./query-node)
+- [Distributor Node](./distributor-node)
 
 **Front-end Applications**
 
-- [Pioneer](./pioneer) - Main UI for accessing all Joystream features
-- [Atlas](https://github.com/Joystream/joystream/tree/init_atlas/atlas) - Media Player- _under development_
+- [Pioneer v2](https://github.com/Joystream/pioneer) - Main UI for accessing Joystream community and governance features
+- [Atlas](https://github.com/Joystream/atlas) - Media Player
 
 **Tools and CLI**
 
@@ -60,46 +60,16 @@ yarn start
 
 **Testing infrastructure**
 
-- [Network integration](./tests/network-tests) - Joystream network integration testing framework
-
-## Exploring the network with Pioneer
-
-Pioneer is currently the main web interface to interact with the network:
-
-Currently hosted on: https://testnet.joystream.org
-
-You may have to disable some privacy/ad-blocker extensions in your browser for proper functionality, especially when browsing media.
-
-You can also run a local development instance:
-
-The HEAD of the master branch should always be used for the correct version of the applications to connect to the current testnet:
-
-```sh
-git checkout master
-yarn install
-yarn build:packages
-yarn workspace pioneer start
-```
-
-This runs a local development web server on port 3000.
-
-Use the link below to browse the network using the publicly hosted endpoint:
-http://localhost:3000/?rpc=wss://rome-rpc-endpoint.joystream.org:9944/
+- [Network integration](./tests/integration-tests) - Joystream network integration testing framework
 
 ## Running a local full node
 
-You can also run your our own joystream-node:
-
 ```sh
 git checkout master
 WASM_BUILD_TOOLCHAIN=nightly-2021-02-20 cargo +nightly-2021-02-20 build --release
 ./target/release/joystream-node -- --pruning archive --chain testnets/joy-testnet-5.json
 ```
 
-Wait for the node to sync to the latest block, then change pioneer settings "remote node" option to "Local Node", or follow the link below:
-
-http://localhost:3000/?rpc=ws://localhost:9944/
-
 Learn more about [joystream-node](node/README.md).
 
 A step by step guide to setup a full node and validator on the Joystream testnet, can be found [here](https://github.com/Joystream/helpdesk/tree/master/roles/validators).
@@ -107,7 +77,14 @@ A step by step guide to setup a full node and validator on the Joystream testnet
 ### Integration tests
 
 ```bash
-tests/network-tests/run-tests.sh
+# Make sure yarn packages are built
+yarn build:packages
+
+# Build the test joystream-node
+TEST_NODE=true yarn build:node:docker
+
+# Run tests
+./query-node/run-tests.sh
 ```
 
 ### Contributing

+ 0 - 2
apps.Dockerfile

@@ -3,8 +3,6 @@ FROM --platform=linux/x86-64 node:14 as builder
 WORKDIR /joystream
 COPY . /joystream
 
-RUN rm -fr /joystream/pioneer
-
 # Do not set NODE_ENV=production until after running yarn install
 # to ensure dev dependencies are installed.
 RUN yarn --frozen-lockfile

+ 14 - 12
build-node-docker.sh

@@ -2,23 +2,25 @@
 
 set -e
 
-if ! command -v docker-compose &> /dev/null
-then
-  echo "docker-compose not found. Skipping docker image builds."
-  exit 0
-fi
+# Looks for a cached joystream/node image matching code shasum.
+# Search order: local repo then dockerhub. If no cached image is found we build it.
 
-# Fetch a cached joystream/node image if one is found matching code shasum instead of building
 CODE_HASH=`scripts/runtime-code-shasum.sh`
 IMAGE=joystream/node:${CODE_HASH}
-echo "Trying to fetch cached ${IMAGE} image"
-docker pull ${IMAGE} || :
 
+# Look for image locally
 if ! docker inspect ${IMAGE} > /dev/null;
 then
-  echo "Fetch failed, building image locally"
-  docker-compose build joystream-node
+  # Not found, try to fetch from remote repo
+  echo "Trying to fetch cached ${IMAGE} image"
+  docker pull ${IMAGE} || :
+
+  # If we didn't find it, build it
+  if ! docker inspect ${IMAGE} > /dev/null;
+  then
+    echo "Building ${IMAGE}.."
+    docker build . --file joystream-node.Dockerfile --tag ${IMAGE} --build-arg TEST_NODE=${TEST_NODE}
+  fi
 else
-  echo "Tagging cached image as 'latest'"
-  docker image tag ${IMAGE} joystream/node:latest
+  echo "Found ${IMAGE} in local repo"
 fi

File diff suppressed because it is too large
+ 0 - 0
chain-metadata.json


+ 34 - 36
cli/README.md

@@ -9,35 +9,13 @@ Command Line Interface for Joystream community and governance activities
 [![License](https://img.shields.io/npm/l/@joystream/cli.svg)](https://github.com/Joystream/joystream/blob/master/cli/package.json)
 
 <!-- toc -->
-* [Development](#development)
 * [Usage](#usage)
+* [Development](#development)
 * [First steps](#first-steps)
+* [Useful environment settings](#useful-environment-settings)
 * [Commands](#commands)
-* [Environment variables](#environment-variables)
 <!-- tocstop -->
 
-# Development
-<!-- development -->
-To run a command in developemnt environment (without installing the package):
-
-1. Navigate into the CLI root directory
-1. Execute any command like this:
-
-    ```
-        $ ./bin/run COMMAND
-    ```
-
-Alternatively:
-
-1. Navigate into the CLI root directory
-1. Execute `yarn link` (if that doesn't work, consider `sudo yarn link`)
-1. Execute command from any location like this:
-
-    ```
-        $ joystream-cli COMMAND
-    ```
-<!-- developmentstop -->
-
 # Usage
 <!-- usage -->
 ```sh-session
@@ -45,7 +23,7 @@ $ npm install -g @joystream/cli
 $ joystream-cli COMMAND
 running command...
 $ joystream-cli (-v|--version|version)
-@joystream/cli/0.6.0 linux-x64 node-v14.18.0
+@joystream/cli/0.7.0 linux-x64 node-v14.18.0
 $ joystream-cli --help [COMMAND]
 USAGE
   $ joystream-cli COMMAND
@@ -53,17 +31,43 @@ USAGE
 ```
 <!-- usagestop -->
 
+# Development
+<!-- development -->
+To run a command in developemnt environment (from the root of [Joystream monorepo](https://github.com/Joystream/joystream), without installing the package):
+
+```shell
+  $ yarn && yarn workspace @joystream/types build && yarn workspace @joystream/metadata-protobuf build
+  $ ./cli/bin/run COMMAND # OR:
+  $ yarn joystream-cli COMMAND
+```
+
+Alternatively:
+
+```shell
+  $ yarn workspace @joystream/cli link
+  $ joystream-cli COMMAND
+```
+<!-- developmentstop -->
+
+
 # First steps
 <!-- first-steps -->
 When using the CLI for the first time there are a few common steps you might want to take in order to configure the CLI:
 
-1. Set the correct node endpoint. You can do this by executing `api:setUri` or any command that requires an api connection. To verify the current endpoint you can execute `api:getUri`.
-1. In order to use the accounts/keys that you may already have access to within Pioneer, you need to dowload the backup json file(s) ([https://testnet.joystream.org/#/accounts](https://testnet.joystream.org/#/accounts)) and import them into the CLI by executing `account:import /path/to/backup.json`.
-1. By executing `account:choose` you can choose one of the imported accounts, that will then serve as context for the next commands (you can check currently selected account using `account:info`). If you just want to use the development _Alice_ or _Bob_ account, you can access them without importing by providing an additional flag: `account:choose --showSpecial`.
-1. The context should now be fully set up! Feel free to use the `--help` flag to investigate the available commands or take a look at the sections below.
-1. You may also find it useful to get the first part of the command (before the colon) autocompleted when you press `[Tab]` while typing the name in the console. Executing `autocomplete` command will provide the instructions on how to set this up (see documentation below).
+1. Set the correct Joystream node websocket endpoint. You can do this by executing [`api:setUri`](#joystream-cli-apiseturi-uri) and choosing one of the suggested endpoints of providing your own url. To verify the currently used Joystream node websocket endpoint you can execute [`api:getUri`](#joystream-cli-apigeturi).
+2. Set the Joystream query node endpoint. This is optional, but some commands (for example: [`content:createChannel`](#joystream-cli-contentcreatechannel)) will require a connection to the query node in order to fetch the data they need complete the requested operations (ie. [`content:createChannel`](#joystream-cli-contentcreatechannel) will need to fetch the available storage node endnpoints in order to upload the channel assets). In order to do that, execute [`api:setQueryNodeEndpoint`](#joystream-cli-apisetquerynodeendpoint-endpoint) and choose one of the suggested endpoints or provide your own url. You can use [`api:getQueryNodeEndpoint`](#joystream-cli-apigetquerynodeendpoint) any time to verify the currently set endpoint.
+3. In order to use your existing keys within the CLI, you can import them using [`account:import`](#joystream-cli-accountimport) command. You can provide json backup files exported from Pioneer or Polkadot{.js} extension as an input. You can also use raw mnemonic or seed phrases. See the [`account:import` command documentation](#joystream-cli-accountimport) for the full list of supported inputs.
+  The key to sign the transaction(s) with will be determined based on the required permissions, depending on the command you execute. For example, if you execute [`working-groups:updateRewardAccount --group storageProviders`](#joystream-cli-working-groupsupdaterewardaccount-address), the CLI will look for a storage provider role key among your available keys. If multiple execution contexts are available, the CLI will prompt you to choose the desired one.
+4. **Optionally:** You may also find it useful to get the first part of the command (before the colon) autocompleted when you press `[Tab]` while typing the command name in the console. Executing [`autocomplete`](#joystream-cli-autocomplete-shell) command will provide you the instructions on how to set this up.
+5. That's it! The CLI is now be fully set up! Feel free to use the `--help` flag to investigate the available commands or take a look at the commands documentation below.
 <!-- first-steps -->
 
+# Useful environment settings
+<!-- env -->
+- `FORCE_COLOR=0` - disables output coloring. This will make the output easier to parse in case it's redirected to a file or used within a script.
+- `AUTO_CONFIRM=true` - this will make the CLI skip asking for any confirmations (can be useful when creating bash scripts).
+<!-- envstop -->
+
 # Commands
 <!-- commands -->
 * [`joystream-cli account:create`](#joystream-cli-accountcreate)
@@ -1766,9 +1770,3 @@ OPTIONS
 
 _See code: [src/commands/working-groups/updateWorkerReward.ts](https://github.com/Joystream/joystream/blob/master/cli/src/commands/working-groups/updateWorkerReward.ts)_
 <!-- commandsstop -->
-
-# Environment variables
-<!-- env -->
-- `FORCE_COLOR` - can be set to `0` to disable output coloring
-- `AUTO_CONFIRM` - can be set to `1` or `true` to skip any required confirmations (can be useful for creating bash scripts)
-<!-- envstop -->

+ 6 - 2
cli/package.json

@@ -1,7 +1,7 @@
 {
   "name": "@joystream/cli",
   "description": "Command Line Interface for Joystream community and governance activities",
-  "version": "0.6.0",
+  "version": "0.7.0",
   "author": "Leszek Wiesner",
   "bin": {
     "joystream-cli": "./bin/run"
@@ -21,6 +21,9 @@
     "@oclif/plugin-not-found": "^1.2.4",
     "@oclif/plugin-warn-if-update-available": "^1.7.0",
     "@polkadot/api": "5.9.1",
+    "@polkadot/keyring": "7.3.1",
+    "@polkadot/util": "7.3.1",
+    "@polkadot/util-crypto": "7.3.1",
     "@types/cli-progress": "^3.9.1",
     "@types/fluent-ffmpeg": "^2.1.16",
     "@types/inquirer": "^6.5.0",
@@ -48,7 +51,8 @@
     "tslib": "^1.11.1",
     "blake3-wasm": "^2.1.5",
     "multihashes": "^4.0.3",
-    "form-data": "^4.0.0"
+    "form-data": "^4.0.0",
+    "graphql": "^14.7.0"
   },
   "devDependencies": {
     "@oclif/dev-cli": "^1.22.2",

+ 51 - 42
cli/scripts/content-test.sh

@@ -4,61 +4,70 @@ set -e
 SCRIPT_PATH="$(dirname "${BASH_SOURCE[0]}")"
 cd $SCRIPT_PATH
 
+mkdir ~/tmp || true
 echo "{}" > ~/tmp/empty.json
 
 export AUTO_CONFIRM=true
+export OCLIF_TS_NODE=0
+
+yarn workspace @joystream/cli build
+
+CLI=../bin/run
 
 # Init content lead
 GROUP=contentWorkingGroup yarn workspace api-scripts initialize-lead
 # Add integration tests lead key (in case the script is executed after ./start.sh)
-yarn joystream-cli account:import --suri //testing//worker//Content//0 --name "Test content lead key" --password "" || true
+${CLI} account:forget --name "Test content lead key" || true
+${CLI} account:import --suri //testing//worker//Content//0 --name "Test content lead key" --password "" || true
 # Test create/update/remove category
-yarn joystream-cli content:createVideoCategory -i ./examples/content/CreateCategory.json
-yarn joystream-cli content:createVideoCategory -i ./examples/content/CreateCategory.json
-yarn joystream-cli content:createVideoCategory -i ./examples/content/CreateCategory.json
-yarn joystream-cli content:createChannelCategory -i ./examples/content/CreateCategory.json
-yarn joystream-cli content:createChannelCategory -i ./examples/content/CreateCategory.json
-yarn joystream-cli content:createChannelCategory -i ./examples/content/CreateCategory.json
-yarn joystream-cli content:updateVideoCategory -i ./examples/content/UpdateCategory.json 2
-yarn joystream-cli content:updateChannelCategory -i ./examples/content/UpdateCategory.json 2
-yarn joystream-cli content:deleteChannelCategory 3
-yarn joystream-cli content:deleteVideoCategory 3
+${CLI} content:createVideoCategory -i ../examples/content/CreateCategory.json
+${CLI} content:createVideoCategory -i ../examples/content/CreateCategory.json
+${CLI} content:createVideoCategory -i ../examples/content/CreateCategory.json
+${CLI} content:createChannelCategory -i ../examples/content/CreateCategory.json
+${CLI} content:createChannelCategory -i ../examples/content/CreateCategory.json
+${CLI} content:createChannelCategory -i ../examples/content/CreateCategory.json
+${CLI} content:updateVideoCategory -i ../examples/content/UpdateCategory.json 2
+${CLI} content:updateChannelCategory -i ../examples/content/UpdateCategory.json 2
+${CLI} content:deleteChannelCategory 3
+${CLI} content:deleteVideoCategory 3
 # Group 1 - a valid group
-yarn joystream-cli content:createCuratorGroup
-yarn joystream-cli content:setCuratorGroupStatus 1 1
-yarn joystream-cli content:addCuratorToGroup 1 0
+${CLI} content:createCuratorGroup
+${CLI} content:setCuratorGroupStatus 1 1
+${CLI} content:addCuratorToGroup 1 0
 # Group 2 - test removeCuratorFromGroup
-yarn joystream-cli content:createCuratorGroup
-yarn joystream-cli content:addCuratorToGroup 2 0
-yarn joystream-cli content:removeCuratorFromGroup 2 0
+${CLI} content:createCuratorGroup
+${CLI} content:addCuratorToGroup 2 0
+${CLI} content:removeCuratorFromGroup 2 0
 # Create/update channel
-yarn joystream-cli content:createChannel -i ./examples/content/CreateChannel.json --context Member || true
-yarn joystream-cli content:createChannel -i ./examples/content/CreateChannel.json --context Curator || true
-yarn joystream-cli content:createChannel -i ~/tmp/empty.json --context Member || true
-yarn joystream-cli content:updateChannel -i ./examples/content/UpdateChannel.json 1 || true
+${CLI} content:createChannel -i ../examples/content/CreateChannel.json --context Member || true
+${CLI} content:createChannel -i ../examples/content/CreateChannel.json --context Curator || true
+${CLI} content:createChannel -i ~/tmp/empty.json --context Member || true
+${CLI} content:updateChannel -i ../examples/content/UpdateChannel.json 1 || true
 # Create/update video
-yarn joystream-cli content:createVideo -i ./examples/content/CreateVideo.json -c 1 || true
-yarn joystream-cli content:createVideo -i ./examples/content/CreateVideo.json -c 2 || true
-yarn joystream-cli content:createVideo -i ~/tmp/empty.json -c 2 || true
-yarn joystream-cli content:updateVideo -i ./examples/content/UpdateVideo.json 1 || true
+${CLI} content:createVideo -i ../examples/content/CreateVideo.json -c 1 || true
+${CLI} content:createVideo -i ../examples/content/CreateVideo.json -c 2 || true
+${CLI} content:createVideo -i ~/tmp/empty.json -c 2 || true
+${CLI} content:updateVideo -i ../examples/content/UpdateVideo.json 1 || true
 # Set featured videos
-yarn joystream-cli content:setFeaturedVideos 1,2
-yarn joystream-cli content:setFeaturedVideos 2,3
+${CLI} content:setFeaturedVideos 1,2
+${CLI} content:setFeaturedVideos 2,3
 # Update channel censorship status
-yarn joystream-cli content:updateChannelCensorshipStatus 1 1 --rationale "Test"
-yarn joystream-cli content:updateVideoCensorshipStatus 1 1 --rationale "Test"
+${CLI} content:updateChannelCensorshipStatus 1 1 --rationale "Test"
+${CLI} content:updateVideoCensorshipStatus 1 1 --rationale "Test"
 # Display-only commands
-yarn joystream-cli content:videos
-yarn joystream-cli content:video 1
-yarn joystream-cli content:channels
-yarn joystream-cli content:channel 1
-yarn joystream-cli content:curatorGroups
-yarn joystream-cli content:curatorGroup 1
+${CLI} content:videos
+${CLI} content:video 1
+${CLI} content:channels
+${CLI} content:channel 1
+${CLI} content:curatorGroups
+${CLI} content:curatorGroup 1
 # Remove videos/channels/assets
-yarn joystream-cli content:removeChannelAssets -c 1 -o 0
-yarn joystream-cli content:deleteVideo -v 1 -f
-yarn joystream-cli content:deleteVideo -v 2 -f
-yarn joystream-cli content:deleteVideo -v 3 -f
-yarn joystream-cli content:deleteChannel -c 1 -f
-yarn joystream-cli content:deleteChannel -c 2 -f
-yarn joystream-cli content:deleteChannel -c 3 -f
+${CLI} content:removeChannelAssets -c 1 -o 0
+${CLI} content:deleteVideo -v 1 -f
+${CLI} content:deleteVideo -v 2 -f
+${CLI} content:deleteVideo -v 3 -f
+${CLI} content:deleteChannel -c 1 -f
+${CLI} content:deleteChannel -c 2 -f
+${CLI} content:deleteChannel -c 3 -f
+# Forget test content lead account
+${CLI} account:forget --name "Test content lead key"

+ 13 - 2
cli/scripts/membership-test.sh

@@ -5,6 +5,9 @@ SCRIPT_PATH="$(dirname "${BASH_SOURCE[0]}")"
 cd $SCRIPT_PATH
 
 export AUTO_CONFIRM=true
+export OCLIF_TS_NODE=0
+
+yarn workspace @joystream/cli build
 
 CLI=../bin/run
 
@@ -12,6 +15,7 @@ CLI=../bin/run
 ${CLI} account:forget --name test_alice_member_controller_1 || true
 ${CLI} account:forget --name test_alice_member_root_1 || true
 ${CLI} account:forget --name test_alice_member_controller_2 || true
+${CLI} account:forget --name test_alice_member_staking || true
 
 # Create membership (controller: //Alice//controller, root: //Alice//root, sender: //Alice)
 MEMBER_HANDLE="alice-$(date +%s)"
@@ -74,10 +78,16 @@ ${CLI} account:transferTokens\
   --from 5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY\
   --to 5E5JemkFX48JMRFraGZrjPwKL1HnhLkPrMQxaBvoSXPmzKab
 
-# Add staking account
+# Import //Alice//staking key
+${CLI} account:import\
+  --suri //Alice//staking\
+  --name test_alice_member_staking\
+  --password=""
+
+# Add staking account (//Alice//staking)
 ${CLI} membership:addStakingAccount\
   --useMemberId="$MEMBER_ID"\
-  --address="5EHDeBnBEyNB2aCFEhcxiEdcQLLnyP96t8ghoxBXUmK2itQp"\
+  --address="5EheygkSi4q4QCN12d2Vy65EnoEtdJy6yw6o7XZpPRcaVJCS"\
   --fundsSource="5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY"\
   --withBalance="10000"
 
@@ -85,3 +95,4 @@ ${CLI} membership:addStakingAccount\
 ${CLI} account:forget --name test_alice_member_controller_1
 ${CLI} account:forget --name test_alice_member_root_1
 ${CLI} account:forget --name test_alice_member_controller_2
+${CLI} account:forget --name test_alice_member_staking

+ 0 - 3
cli/src/Api.ts

@@ -80,7 +80,6 @@ export default class Api {
     const api = new ApiPromise({ provider: wsProvider, types, metadata: metadataCache })
     await api.isReadyOrError
 
-    // Initializing some api params based on pioneer/packages/react-api/Api.tsx
     const [properties, chainType] = await Promise.all([api.rpc.system.properties(), api.rpc.system.chainType()])
 
     const tokenSymbol = properties.tokenSymbol.unwrap()[0].toString()
@@ -131,8 +130,6 @@ export default class Api {
   }
 
   // Working groups
-  // TODO: This is a lot of repeated logic from "/pioneer/joy-utils/transport"
-  // It will be refactored to "joystream-js" soon
   async entriesByIds<IDType extends UInt, ValueType extends Codec>(
     apiMethod: AugmentedQuery<'promise', (key: IDType) => Observable<ValueType>, [IDType]>
   ): Promise<[IDType, ValueType][]> {

+ 0 - 1
cli/src/Types.ts

@@ -51,7 +51,6 @@ export enum WorkingGroups {
   Distribution = 'distributors',
 }
 
-// In contrast to Pioneer, currently only StorageProviders group is available in CLI
 export const AvailableGroups: readonly WorkingGroups[] = [
   WorkingGroups.StorageProviders,
   WorkingGroups.Curators,

+ 12 - 5
cli/src/base/AccountsCommandBase.ts

@@ -374,15 +374,22 @@ export default abstract class AccountsCommandBase extends ApiCommandBase {
       }
     }
 
-    const requiredStakingAccountBalance = requiredStake.add(candidateTxFee).add(STAKING_ACCOUNT_CANDIDATE_STAKE)
+    const requiredStakingAccountBalance = !stakingStatus
+      ? requiredStake.add(candidateTxFee).add(STAKING_ACCOUNT_CANDIDATE_STAKE)
+      : requiredStake
     const missingStakingAccountBalance = requiredStakingAccountBalance.sub(balances.availableBalance)
     if (missingStakingAccountBalance.gtn(0)) {
       this.warn(
         `Not enough available staking account balance! Missing: ${chalk.cyanBright(
-          formatBalance(candidateTxFee.add(STAKING_ACCOUNT_CANDIDATE_STAKE))
-        )}. (includes ${chalk.cyanBright(formatBalance(candidateTxFee))} transaction fee and ${chalk.cyanBright(
-          formatBalance(STAKING_ACCOUNT_CANDIDATE_STAKE)
-        )} staking account candidate stake)`
+          formatBalance(missingStakingAccountBalance)
+        )}.` +
+          (!stakingStatus
+            ? ` (required balance includes ${chalk.cyanBright(
+                formatBalance(candidateTxFee)
+              )} transaction fee and ${chalk.cyanBright(
+                formatBalance(STAKING_ACCOUNT_CANDIDATE_STAKE)
+              )} staking account candidate stake)`
+            : '')
       )
       const transferTokens = await this.requestConfirmation(
         `Do you want to transfer ${chalk.cyan(formatBalance(missingStakingAccountBalance))} from another account?`

+ 0 - 1
cli/src/base/ApiCommandBase.ts

@@ -464,7 +464,6 @@ export default abstract class ApiCommandBase extends StateAwareCommandBase {
     return new Promise((resolve, reject) => {
       let unsubscribe: () => void
       tx.signAndSend(account, {}, (result) => {
-        // Implementation loosely based on /pioneer/packages/react-signer/src/Modal.tsx
         if (!result || !result.status) {
           return
         }

+ 0 - 1
cli/src/commands/content/video.ts

@@ -22,7 +22,6 @@ export default class VideoCommand extends ContentDirectoryCommandBase {
       displayCollapsedRow({
         'ID': videoId.toString(),
         'InChannel': aVideo.in_channel.toString(),
-        'InSeries': aVideo.in_series.unwrapOr('NONE').toString(),
         'IsCensored': aVideo.is_censored.toString(),
         'CommentsEnabled': aVideo.enable_comments.toString(),
         'PostId': aVideo.video_post_id.toString(),

+ 0 - 1
cli/src/commands/content/videos.ts

@@ -30,7 +30,6 @@ export default class VideosCommand extends ContentDirectoryCommandBase {
         videos.map(([id, v]) => ({
           'ID': id.toString(),
           'InChannel': v.in_channel.toString(),
-          'InSeries': v.in_series.unwrapOr('NONE').toString(),
           'IsCensored': v.is_censored.toString(),
           'CommentsEnabled': v.enable_comments.toString(),
           'PostId': v.video_post_id.toString(),

+ 18 - 1
devops/aws/cloudformation/infrastructure.yml

@@ -111,7 +111,7 @@ Resources:
         BlockDeviceMappings:
           - DeviceName: /dev/sda1
             Ebs:
-              VolumeSize: '40'
+              VolumeSize: '120'
         UserData:
           Fn::Base64: !Sub |
             #!/bin/bash -xe
@@ -128,6 +128,23 @@ Resources:
             # Install the updates
             apt-get upgrade -y
 
+            apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
+
+            curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
+
+            echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
+
+            apt-get update -y
+
+            apt-get install -y docker-ce docker-ce-cli containerd.io
+
+            usermod -aG docker ubuntu
+
+            # Update docker-compose to 1.28+
+            curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
+            chmod +x /usr/local/bin/docker-compose
+            ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose
+
             # Get latest cfn scripts and install them;
             apt-get install -y python3-setuptools
             mkdir -p /opt/aws/bin

+ 1 - 1
devops/aws/cloudformation/single-instance-docker.yml

@@ -58,7 +58,7 @@ Resources:
         BlockDeviceMappings:
           - DeviceName: /dev/sda1
             Ebs:
-              VolumeSize: '30'
+              VolumeSize: '120'
         UserData:
           Fn::Base64: !Sub |
             #!/bin/bash -xe

+ 1 - 1
devops/aws/cloudformation/single-instance.yml

@@ -48,7 +48,7 @@ Resources:
         BlockDeviceMappings:
           - DeviceName: /dev/sda1
             Ebs:
-              VolumeSize: '30'
+              VolumeSize: '120'
         UserData:
           Fn::Base64: !Sub |
             #!/bin/bash -xe

+ 7 - 7
devops/aws/deploy-infra.sample.cfg

@@ -5,13 +5,13 @@ REGION=us-east-1
 CLI_PROFILE=joystream-user
 KEY_PATH="/Users/joystream/Joystream/joystream-key.pem"
 AWS_KEY_PAIR_NAME="joystream-key"
-DEFAULT_EC2_INSTANCE_TYPE=t2.micro
-VALIDATOR_EC2_INSTANCE_TYPE=t2.micro
-BUILD_EC2_INSTANCE_TYPE=t2.xlarge
-RPC_EC2_INSTANCE_TYPE=t2.micro
+DEFAULT_EC2_INSTANCE_TYPE=t2.medium
+VALIDATOR_EC2_INSTANCE_TYPE=t2.medium
+BUILD_EC2_INSTANCE_TYPE=t2.large
+RPC_EC2_INSTANCE_TYPE=t2.medium
 
 # prebuilt AMI with joystream-node, chain-spec and subkey already built
-EC2_AMI_ID="ami-08ffec5991ca99db9"
+EC2_AMI_ID="ami-095792100b6e43a67"
 
 ACCOUNT_ID=$(aws sts get-caller-identity --profile $CLI_PROFILE --query Account --output text)
 
@@ -28,12 +28,12 @@ NUMBER_OF_VALIDATORS=2
 LOCAL_CODE_PATH="~/Joystream/joystream"
 NETWORK_SUFFIX=7891
 
-DEPLOYMENT_TYPE=live
+DEPLOYMENT_TYPE=staging
 INITIAL_MEMBERS_PATH=""
 INITIAL_BALANCES_PATH=""
 
 GIT_REPO="https://github.com/Joystream/joystream.git"
-BRANCH_NAME=sumer
+BRANCH_NAME=master
 
 # If true will build LOCAL_CODE_PATH otherwise will pull from GIT_REPO:BRANCH_NAME
 BUILD_LOCAL_CODE=false

+ 43 - 13
devops/aws/deploy-playground-playbook.yml

@@ -55,6 +55,19 @@
       command: yarn build:node:docker
       args:
         chdir: '{{ remote_code_path }}'
+      async: 3600
+      poll: 0
+      register: node_build_result
+
+    - name: Check on build node image async task
+      async_status:
+        jid: '{{ node_build_result.ansible_job_id }}'
+      register: job_result
+      until: job_result.finished
+      # Max number of times to check for status
+      retries: 36
+      # Check for the status every 100s
+      delay: 100
 
     - name: Run docker-compose
       command: yarn start
@@ -62,8 +75,9 @@
         chdir: '{{ remote_code_path }}'
       environment:
         PERSIST: 'true'
-        COLOSSUS_1_NODE_URI: 'https://{{ inventory_hostname }}.nip.io/colossus-1/'
-        DISTRIBUTOR_1_NODE_URI: 'https://{{ inventory_hostname }}.nip.io/distributor-1/'
+        COLOSSUS_1_URL: 'https://{{ inventory_hostname }}.nip.io/colossus-1/'
+        DISTRIBUTOR_1_URL: 'https://{{ inventory_hostname }}.nip.io/distributor-1/'
+        SKIP_CHAIN_SETUP: '{{ skip_chain_setup }}'
       async: 1800
       poll: 0
       register: compose_result
@@ -93,16 +107,32 @@
         caddy_systemd_capabilities_enabled: true
         caddy_update: false
 
+    - name: Set endpoints
+      set_fact:
+        all_services: |
+          websocket_rpc: wss://{{ nip_domain }}/ws-rpc
+          http_rpc: https://{{ nip_domain }}/http-rpc
+          colossus: https://{{ nip_domain }}/colossus-1
+          distributor: https://{{ nip_domain }}/distributor-1
+          graphql_server: https://{{ nip_domain }}/query-node/server/graphql
+          graphql_server_websocket: wss://{{ nip_domain }}/query-node/server/graphql
+          indexer: https://{{ nip_domain }}/query-node/indexer/graphql
+          member_faucet: https://{{ nip_domain }}/member-faucet/register
+          orion: https://{{ nip_domain }}/orion/graphql
+      run_once: yes
+
     - name: Print endpoints
       debug:
-        msg:
-          - 'The services should now be accesible at:'
-          - 'Pioneer: https://{{ nip_domain }}/'
-          - 'WebSocket RPC: wss://{{ nip_domain }}/ws-rpc'
-          - 'HTTP RPC: https://{{ nip_domain }}/http-rpc'
-          - 'Colossus: https://{{ nip_domain }}/colossus-1'
-          - 'Distributor: https://{{ nip_domain }}/distributor-1'
-          - 'GraphQL server: https://{{ nip_domain }}/query-node/server/graphql'
-          - 'Indexer: https://{{ nip_domain }}/query-node/indexer/graphql'
-          - 'Member Faucet: https://{{ nip_domain }}/member-faucet/register'
-          - 'Orion: https://{{ nip_domain }}/orion/graphql'
+        msg: '{{ all_services | from_yaml }}'
+      run_once: yes
+
+    - name: Create config.json to serve as Caddy endpoint
+      copy:
+        content: '{{ all_services | from_yaml | to_json }}'
+        dest: '/home/ubuntu/config.json'
+
+    - name: Save output as file on local
+      copy:
+        content: '{{ all_services | from_yaml | to_json }}'
+        dest: 'endpoints.json'
+      delegate_to: localhost

+ 1 - 1
devops/aws/deploy-playground.sh

@@ -42,5 +42,5 @@ if [ $? -eq 0 ]; then
 
   echo -e "\n\n=========== Configuring node ==========="
   ansible-playbook -i $SERVER_IP, --private-key $KEY_PATH deploy-playground-playbook.yml \
-    --extra-vars "branch_name=$BRANCH_NAME git_repo=$GIT_REPO"
+    --extra-vars "branch_name=$BRANCH_NAME git_repo=$GIT_REPO skip_chain_setup=$SKIP_CHAIN_SETUP"
 fi

+ 6 - 2
devops/aws/deploy-single-node.sample.cfg

@@ -12,8 +12,12 @@ DATE_TIME=$(date +"%d-%b-%Y-%H-%M-%S")
 
 SINGLE_NODE_STACK_NAME="joystream-node-$DATE_TIME"
 
-BINARY_FILE="https://github.com/Joystream/joystream/releases/download/v9.3.0/joystream-node-5.1.0-9d9e77751-x86_64-linux-gnu.tar.gz"
-CHAIN_SPEC_FILE="https://github.com/Joystream/joystream/releases/download/v9.3.0/joy-testnet-5.json"
+# For deploy single node playbook only
+# GIZA
+BINARY_FILE="https://github.com/Joystream/joystream/releases/download/v9.14.0/joystream-node-5.14.0-feb3930-x86_64-linux-gnu.tar.gz"
+CHAIN_SPEC_FILE="https://github.com/Joystream/joystream/releases/download/v9.14.0/joy-testnet-5.json"
 
+# For deploy playground playbook only
 GIT_REPO="https://github.com/Joystream/joystream.git"
 BRANCH_NAME="master"
+SKIP_CHAIN_SETUP="false"

+ 13 - 5
devops/aws/roles/admin/tasks/deploy-pioneer.yml

@@ -9,10 +9,19 @@
   shell: "WS_URL=wss://{{ ws_rpc }} yarn && yarn workspace @joystream/types build && yarn workspace pioneer build"
   args:
     chdir: "{{ remote_code_path }}"
-  retries: 3
-  delay: 5
-  register: result
-  until: result is not failed
+  async: 3600
+  poll: 0
+  register: build_result
+
+- name: Check on build async task
+  async_status:
+    jid: '{{ build_result.ansible_job_id }}'
+  register: job_result
+  until: job_result.finished
+  # Max number of times to check for status
+  retries: 36
+  # Check for the status every 100s
+  delay: 100
 
 - name: Copying build files to local
   synchronize:
@@ -25,6 +34,5 @@
   community.aws.s3_sync:
     bucket: "{{ bucket_name }}"
     file_root: "{{ data_path }}/build"
-    profile: joystream-user
     region: us-east-1
   delegate_to: localhost

+ 40 - 0
devops/aws/roles/rpc/tasks/main.yml

@@ -22,10 +22,50 @@
     enabled: yes
   become: yes
 
+- name: Build required packages
+  shell: yarn build:packages
+  args:
+    chdir: '{{ remote_code_path }}'
+  # Run in async fashion for max duration of 1 hr
+  async: 3600
+  poll: 0
+  register: build_result
+
+- name: Check on build async task
+  async_status:
+    jid: '{{ build_result.ansible_job_id }}'
+  register: job_result
+  until: job_result.finished
+  # Max number of times to check for status
+  retries: 36
+  # Check for the status every 100s
+  delay: 100
+
+- name: Run query node containers
+  command: yarn workspace query-node-root start:dev
+  environment:
+    JOYSTREAM_NODE_WS: 'ws://{{ inventory_hostname }}:9944/'
+  args:
+    chdir: '{{ remote_code_path }}'
+  async: 1800
+  poll: 0
+  register: compose_result
+
+- name: Check on yarn start task
+  async_status:
+    jid: '{{ compose_result.ansible_job_id }}'
+  register: job_result
+  until: job_result.finished
+  # Max number of times to check for status
+  retries: 18
+  # Check for the status every 100s
+  delay: 100
+
 - name: Set websocket and http endpoint variables
   set_fact:
     ws_rpc: "{{ inventory_hostname }}.nip.io/ws-rpc"
     http_rpc: "{{ inventory_hostname }}.nip.io/http-rpc"
+    nip_domain: "{{ inventory_hostname }}.nip.io"
   run_once: yes
 
 - name: Install and configure Caddy

+ 14 - 0
devops/aws/roles/rpc/templates/Caddyfile.j2

@@ -5,3 +5,17 @@
 {{ http_rpc }} {
     reverse_proxy localhost:9933
 }
+
+{{ nip_domain }}/@apollographql/* {
+    reverse_proxy localhost:8081
+}
+
+{{ nip_domain }}/query-node/server* {
+    uri strip_prefix /query-node/server
+    reverse_proxy localhost:8081
+}
+
+{{ nip_domain }}/query-node/indexer* {
+    uri strip_prefix /query-node/indexer
+    reverse_proxy localhost:4000
+}

+ 9 - 3
devops/aws/templates/Playground-Caddyfile.j2

@@ -28,6 +28,11 @@
     reverse_proxy localhost:8081
 }
 
+wss://{{ nip_domain }}/query-node/server* {
+    uri strip_prefix /query-node/server
+    reverse_proxy localhost:8081
+}
+
 {{ nip_domain }}/query-node/indexer* {
     uri strip_prefix /query-node/indexer
     reverse_proxy localhost:4000
@@ -43,7 +48,8 @@
     reverse_proxy localhost:3002
 }
 
-# Pioneer
-{{ nip_domain }}/* {
-    reverse_proxy localhost:3000
+{{ nip_domain }}/config.json {
+    root * /home/ubuntu
+    rewrite * /config.json
+    file_server
 }

+ 0 - 1
devops/vscode/settings.json

@@ -1,7 +1,6 @@
 {
   "eslint.workingDirectories": [
     "./cli",
-    "./pioneer",
     "./tests/network-tests",
     "./types",
     "./storage-node",

+ 0 - 2
distributor-node/src/services/networking/runtime/api.ts

@@ -36,7 +36,6 @@ export class RuntimeApi {
     const wsProvider: WsProvider = new WsProvider(apiUri)
     const api = await ApiPromise.create({ provider: wsProvider, types, metadata: metadataCache })
 
-    // Initializing some api params based on pioneer/packages/react-api/Api.tsx
     const [properties, chainType] = await Promise.all([api.rpc.system.properties(), api.rpc.system.chainType()])
 
     const tokenSymbol = properties.tokenSymbol.unwrap()[0].toString()
@@ -119,7 +118,6 @@ export class RuntimeApi {
     return new Promise((resolve, reject) => {
       let unsubscribe: () => void
       tx.signAndSend(keyPair, {}, (result) => {
-        // Implementation loosely based on /pioneer/packages/react-signer/src/Modal.tsx
         if (!result || !result.status) {
           return
         }

+ 7 - 23
docker-compose.yml

@@ -1,16 +1,9 @@
-# Compiles new joystream/node and joystream/apps images if local images not found
-# and runs a complete joystream development network
-# To prevent build of docker images run docker-compose with "--no-build" arg
+# Complete joystream development network
 version: '3.4'
 services:
   joystream-node:
     image: joystream/node:$JOYSTREAM_NODE_TAG
     restart: unless-stopped
-    build:
-      # context is relative to the compose file
-      context: .
-      # dockerfile is relative to the context
-      dockerfile: joystream-node.Dockerfile
     container_name: joystream-node
     volumes:
       - chain-data:/data
@@ -263,26 +256,17 @@ services:
     ports:
       - "127.0.0.1:6379:6379"
 
-  pioneer:
-    image: nginx
-    container_name: pioneer
-    restart: unless-stopped
-    volumes:
-      - ./pioneer/packages/apps/build:/usr/share/nginx/html
-    ports:
-      - "3000:80"
-    environment:
-      - NGINX_PORT=80
-
   faucet:
-    image: joystream/faucet:giza
+    image: joystream/faucet:olympia
     restart: on-failure
     container_name: faucet
+    env_file:
+      - .env
     environment:
-      - SCREENING_AUTHORITY_SEED=//Alice
+      - SCREENING_AUTHORITY_SEED=${SCREENING_AUTHORITY_SEED}
       - PORT=3002
-      - PROVIDER=ws://joystream-node:9944
-      - ENDOWMENT=0
+      - INVITING_MEMBER_ID=${INVITING_MEMBER_ID}
+      - PROVIDER=${JOYSTREAM_NODE_WS}
     ports:
       - "3002:3002"
 

+ 1 - 1
metadata-protobuf/tsconfig.json

@@ -1,6 +1,6 @@
 {
   "compilerOptions": {
-    "target": "esnext",
+    "target": "es2017",
     "module": "commonjs",
     "outDir": "lib",
     "strict": true,

+ 0 - 4
node/src/chain_spec/mod.rs

@@ -276,11 +276,7 @@ pub fn testnet_genesis(
                 next_channel_id: 1,
                 next_video_category_id: 1,
                 next_video_id: 1,
-                next_playlist_id: 1,
-                next_series_id: 1,
-                next_person_id: 1,
                 next_video_post_id: 1,
-                next_channel_transfer_request_id: 1,
                 video_migration: node_runtime::content::MigrationConfigRecord {
                     current_id: 1,
                     final_id: 1,

+ 0 - 18
pioneer.Dockerfile

@@ -1,18 +0,0 @@
-FROM node:14 as builder
-
-WORKDIR /joystream
-COPY . /joystream
-
-RUN yarn
-RUN NODE_ENV=production yarn workspace @joystream/types build
-RUN NODE_ENV=production yarn workspace pioneer build
-
-FROM ubuntu:18.04
-
-RUN apt-get update && apt-get -y install nginx
-
-COPY --from=builder /joystream/pioneer/packages/apps/build /var/www/html
-
-EXPOSE 80
-
-CMD ["nginx", "-g", "daemon off;"]

+ 0 - 2
pioneer/.123trigger

@@ -1,2 +0,0 @@
-11
-0.45.2

+ 0 - 1
pioneer/.babelrc.js

@@ -1 +0,0 @@
-module.exports = require('./babel.config.js');

+ 0 - 3
pioneer/.codeclimate.yml

@@ -1,3 +0,0 @@
-exclude_patterns:
-- "**/*.spec.js"
-- "**/*.spec.ts"

+ 0 - 3
pioneer/.dockerignore

@@ -1,3 +0,0 @@
-node_modules
-build
-.git

+ 0 - 10
pioneer/.editorconfig

@@ -1,10 +0,0 @@
-root = true
-[*]
-indent_style=space
-indent_size=2
-tab_width=2
-end_of_line=lf
-charset=utf-8
-trim_trailing_whitespace=true
-max_line_length=120
-insert_final_newline=true

+ 0 - 4
pioneer/.env-example

@@ -1,4 +0,0 @@
-# You can define all your ENV in such a file and run docker as:
-# docker run ... --env-file .env ...
-WS_URL=ws://localhost:9944
-POLKADOT_UI_SAMPLE=42

+ 0 - 5
pioneer/.eslintignore

@@ -1,5 +0,0 @@
-**/build/*
-**/coverage/*
-**/node_modules/*
-.eslintrc.js
-i18next-scanner.config.js

+ 0 - 35
pioneer/.eslintrc.js

@@ -1,35 +0,0 @@
-// At some point don't depend on @polkadot rules and use @joystream/eslint-config
-const base = require('@polkadot/dev/config/eslint');
-
-// add override for any (a metric ton of them, initial conversion)
-module.exports = {
-  ...base,
-  parserOptions: {
-    ...base.parserOptions,
-    project: [
-      './tsconfig.json'
-    ]
-  },
-  rules: {
-    ...base.rules,
-    '@typescript-eslint/no-explicit-any': 'off',
-    'new-cap': 'off',
-    '@typescript-eslint/interface-name-prefix': 'off',
-    '@typescript-eslint/ban-ts-comment': 'error',
-    // why only required in VSCode!?!? is eslint plugin not working like eslint commandline?
-    // Or are we having to add this because of new versions of eslint-config-* ?
-    'no-console': 'off',
-    // Override some extended config rules:
-    'camelcase': 'off',
-    'header/header': 'off',
-    'sort-keys': 'off',
-    'react/jsx-sort-props': 'off',
-    'react/jsx-max-props-per-line': 'off',
-    'sort-destructure-keys/sort-destructure-keys': 'off',
-    '@typescript-eslint/unbound-method': 'warn', // Doesn't work well with our version of Formik, see: https://github.com/formium/formik/issues/2589
-    'react-hooks/exhaustive-deps': 'warn', // Causes more issues than it solves currently
-    'no-void': 'off' // Otherwise we cannot mark unhandles promises
-  },
-  // isolate pioneer from monorepo eslint rules
-  root: true
-};

+ 0 - 28
pioneer/.gitignore

@@ -1,28 +0,0 @@
-build/
-coverage/
-node_modules/
-tmp/
-.idea/
-.vscode/
-.DS_Store
-.env.local
-.env.development.local
-.env.test.local
-.env.production.local
-.npmrc
-.yarn/*
-!.yarn/releases
-!.yarn/plugins
-.pnp.*
-cc-test-reporter
-package-lock.json
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-!patches/**
-
-# Built Joystream types:
-packages/joy-types/lib/
-
-# Storybook
-storybook-static/

+ 0 - 159
pioneer/.gitlab-ci.yml

@@ -1,159 +0,0 @@
-image: roffe/kubectl:latest
-variables:
-  CI_REGISTRY: parity.azurecr.io
-  CI_REGISTRY_USER: parity
-  AUTO_DEVOPS_DOMAIN: poc-3.polkadot.io
-
-.kubernetes: &kubernetes
-  tags:
-    - kubernetes
-
-stages:
-  - dockerize
-  - test
-  - review
-  - staging
-  - production
-  - cleanup
-
-before_script:
-  - export DOCKER_IMAGE=$CI_REGISTRY/$CI_PROJECT_PATH_SLUG
-  - export DOCKER_TAG=$CI_COMMIT_REF_SLUG-$VERSION
-  - export DOCKER_IMAGE_FULL_NAME=$DOCKER_IMAGE:$DOCKER_TAG
-
-dockerize:
-  stage: dockerize
-  environment:
-    name: infrastructure_build
-  tags:
-    - kubernetes-parity-build
-  image: docker:git
-  services:
-    - docker:dind
-  variables:
-    DOCKER_DRIVER: overlay2
-    DOCKER_HOST: tcp://localhost:2375
-  script:
-    - echo $DOCKER_IMAGE
-    - echo $DOCKER_TAG
-    - echo $DOCKER_IMAGE_FULL_NAME
-    - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY"
-    - docker build -t "$DOCKER_IMAGE_FULL_NAME" .
-    - docker push "$DOCKER_IMAGE_FULL_NAME"
-  only:
-    - master
-
-review:
-  stage: review
-  <<: *kubernetes
-  script:
-    - setup_kubernetes
-    - deploy
-  environment:
-    name: review/$CI_COMMIT_REF_NAME
-    url: https://$CI_ENVIRONMENT_SLUG.$AUTO_DEVOPS_DOMAIN
-    on_stop: stop_review
-  only:
-    refs:
-      - branches
-    kubernetes: active
-  except:
-    - master
-
-stop_review:
-  stage: cleanup
-  <<: *kubernetes
-  variables:
-    GIT_STRATEGY: none
-  script:
-    - setup_kubernetes
-    - delete
-  environment:
-    name: review/$CI_COMMIT_REF_NAME
-    action: stop
-  when: manual
-  allow_failure: true
-  only:
-    refs:
-      - branches
-    kubernetes: active
-  except:
-    - master
-
-staging:
-  stage: staging
-  <<: *kubernetes
-  script:
-    - setup_kubernetes
-    - deploy
-  environment:
-    name: staging
-    url: https://staging.$AUTO_DEVOPS_DOMAIN
-  only:
-    refs:
-      - master
-    kubernetes: active
-
-production:
-  stage: production
-  <<: *kubernetes
-  script:
-    - setup_kubernetes
-    - deploy
-  environment:
-    name: production
-    url: https://$AUTO_DEVOPS_DOMAIN
-  when: manual
-  only:
-    refs:
-      - master
-    kubernetes: active
-
-# ---------------------------------------------------------------------------
-.auto_devops: &auto_devops |
-  # Auto DevOps variables and functions
-  [[ "$TRACE" ]] && set -x
-  export DOCKER_IMAGE=$CI_REGISTRY/$CI_PROJECT_PATH_SLUG
-  export DOCKER_TAG=$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHA
-  export DOCKER_IMAGE_FULL_NAME=$DOCKER_IMAGE:$DOCKER_TAG
-
-  export AUTODEVOPS_HOST=$(echo $CI_ENVIRONMENT_URL | awk -F/ '{print $3}')
-
-  function build() {
-    if [[ -n "$CI_REGISTRY_USER" ]]; then
-      echo "Logging to GitLab Container Registry with CI credentials..."
-      docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
-      echo ""
-    fi
-
-    echo "Building Dockerfile-based application..."
-    docker build -t "$DOCKER_IMAGE_FULL_NAME" .
-
-    echo "Pushing to GitLab Container Registry..."
-    docker push "$DOCKER_IMAGE_FULL_NAME"
-    echo ""
-  }
-
-  function setup_kubernetes() {
-    kubectl describe namespace "$KUBE_NAMESPACE" || kubectl create namespace "$KUBE_NAMESPACE"
-    kubectl create secret -n "$KUBE_NAMESPACE" \
-      docker-registry gitlab-registry \
-      --docker-server="$CI_REGISTRY" \
-      --docker-username="$CI_REGISTRY_USER" \
-      --docker-password="$CI_REGISTRY_PASSWORD" \
-      --docker-email="$GITLAB_USER_EMAIL" \
-      -o yaml --dry-run | kubectl replace -n "$KUBE_NAMESPACE" --force -f -
-  }
-
-  function deploy() {
-    cat ./deployment.template.yml | envsubst | kubectl apply -n "$KUBE_NAMESPACE" -f -
-  }
-
-  function delete() {
-    kubectl -n "$KUBE_NAMESPACE" delete "deploy/$CI_ENVIRONMENT_SLUG-backend"
-    kubectl -n "$KUBE_NAMESPACE" delete "svc/$CI_ENVIRONMENT_SLUG-service"
-    kubectl -n "$KUBE_NAMESPACE" delete "ing/$CI_ENVIRONMENT_SLUG-ingress"
-  }
-
-before_script:
-  - *auto_devops

+ 0 - 0
pioneer/.npmignore


+ 0 - 1
pioneer/.nvmrc

@@ -1 +0,0 @@
-10.13.0

+ 0 - 1
pioneer/.prettierignore

@@ -1 +0,0 @@
-**

+ 0 - 3
pioneer/.storybook/addons.ts

@@ -1,3 +0,0 @@
-import '@storybook/addon-knobs/register';
-import '@storybook/addon-actions/register';
-import '@storybook/addon-storysource/register';

+ 0 - 19
pioneer/.storybook/config.tsx

@@ -1,19 +0,0 @@
-import React from 'react'
-import { configure, addDecorator } from '@storybook/react';
-import '@storybook/addon-console';
-import StoryRouter from 'storybook-react-router';
-
-import GlobalStyle from '@polkadot/react-components/styles';
-import 'semantic-ui-css/semantic.min.css'
-import './style.css'
-
-addDecorator(StoryRouter());
-
-addDecorator(story => (
-  <div className='StorybookRoot'>
-    <GlobalStyle />
-    {story()}
-  </div>
-));
-
-configure(require.context('../packages', true, /\.stories\.tsx?$/), module)

+ 0 - 4
pioneer/.storybook/style.css

@@ -1,4 +0,0 @@
-.StorybookRoot {
-  background-color: #fafafa;
-  padding: 1rem 5rem;
-}

+ 0 - 47
pioneer/.storybook/webpack.config.js

@@ -1,47 +0,0 @@
-const path = require('path')
-const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin');
-module.exports = ({ config }) => {
-  // Styles (replace the provided rule):
-  const originalCssRuleIndex = config.module.rules.findIndex(rule => rule.test.source.includes('.css'));
-  config.module.rules[originalCssRuleIndex] = {
-    test: /\.(sa|sc|c)ss$/i,
-    use: [
-      // Creates `style` nodes from JS strings
-      'style-loader',
-      // Translates CSS into CommonJS
-      'css-loader',
-      // Compiles Sass to CSS
-      'sass-loader'
-    ]
-  };
-
-  // TypeScript loader (via Babel to match polkadot/apps)
-  config.module.rules.push({
-    test: /\.(js|ts|tsx)$/,
-    exclude: /(node_modules)/,
-    use: [
-      {
-        loader: require.resolve('babel-loader'),
-        options: require('@polkadot/dev/config/babel')
-      },
-    ],
-  });
-  config.resolve.extensions.push('.js', '.ts', '.tsx');
-
-  // TSConfig, uses the same file as packages
-  config.resolve.plugins = config.resolve.plugins || [];
-  config.resolve.plugins.push(
-    new TsconfigPathsPlugin({
-      configFile: path.resolve(__dirname, '../tsconfig.json'),
-    })
-  );
-
-  // Stories parser
-  config.module.rules.push({
-      test: /\.stories\.tsx?$/,
-      loaders: [require.resolve('@storybook/source-loader')],
-      enforce: 'pre',
-  });
-
-  return config;
-};

+ 0 - 7
pioneer/.stylelintrc

@@ -1,7 +0,0 @@
-{
-  "extends": [
-    "stylelint-config-recommended",
-    "stylelint-config-styled-components"
-  ],
-  "defaultSeverity": "warning"
-}

+ 0 - 13
pioneer/.travis.yml

@@ -1,13 +0,0 @@
-language: node_js
-node_js:
-  - "12"
-cache:
-  yarn: true
-  directories:
-    - node_modules
-before_install:
-  - curl -o- -L https://yarnpkg.com/install.sh | bash
-  - export PATH=$HOME/.yarn/bin:$PATH
-script:
-  - yarn
-  - yarn build

+ 0 - 19
pioneer/BOUNTIES.md

@@ -1,19 +0,0 @@
-# Bounties
-
-From time-to-time we will add bounties for features.
-
-These are generously provided by the [Web3 Foundation](https://web3.foundation/) and as such employees of Parity or those of the W3F are ineligible for them. (This includes people being by either Party for development or community work, related or un-related to polkadot-js).
-
-The idea is that these bounties should be left open to community participation, so only if there is no outside interest for a specific issue, should those directly or indirectly paid by the W3F for work, attempt to close an issue. (in which case it will be "un-bountied")
-
-Current bounties are tracked by the [!bounty](https://github.com/polkadot-js/apps/labels/%21bounty) label.
-
-## Process
-
-Once listed, the normal [Gitcoin](https://gitcoin.co/) process kicks in. This means application, work and payment is managed by this tool. The values for bounties are determined by the size estimation done by the team.
-
-## Some small requests
-
-Please don't start work on an issue until you have been approved via the gitcoin interface. We generally love enthusiasm and code in the repo, however short-cutting the process does create some issues for the management of the bounties. We certainly don't want to be playing favorites if 2 PRs for the same issue are created at the same time. And in cases where somebody else has been approved and an unapproved PR comes in... well, it gets really murky.
-
-When making changes, please do not force push in your PRs, especially not after a review has been started. We will clone your repo and work from that, doing a simple `pull` on a force-pushed branch ends up being, well, less than simple. We squash merge all PRs, so you do not clutter up the history by using stock-standard pushes to your branch.

+ 0 - 478
pioneer/CHANGELOG.md

@@ -1,478 +0,0 @@
-# CHANGELOG
-
-## 0.51.1 Jul 27, 2020
-
-- Support for Acala chain and types (Thanks to https://github.com/aniiantt)
-- First batch of i18n for Arabic (Thanks to https://github.com/nightwolf3)
-- Update for Polkadot council thresholds
-- Council motion adjustment to cater for current and previous generations
-- Adjust imminent proposals to not need own type adjustments
-- Cleanup voting totals to only take free into account
-- Support JSON v3 formats with kdf
-- Always display time left in countdowns, not blocks
-- Adjust progress component to be circular
-- Rename "Deposit" button to "Send" button (less confusion)
-- Ensure new generation tip cancel works for council & users
-- Split council votes in backing & number of votes
-- Adjust council motions to have the correct max display for nay votes
-- Adjust payout toggles with increasing day increments
-- Adjust button formats & layouts
-- Adjust council slashing params to cater for current generation
-- Fixed for keyboard locale detection
-- Don't allow display in an iframe
-
-## 0.50.1 Jul 20, 2020
-
-- Adjust CSPs for Electron (Thanks to https://github.com/EthWorks)
-- Move delegation column to badge (Thanks to https://github.com/Tbaut)
-- Display costs for preimage calls
-- Add buttons for bid/unbid on Society
-- Allow tip endorsements while in countdown
-- Flatten events to group by same-kind in the same block
-- Adjust identity validation to check for whitespacing
-- Allow the use of VecFixed params with type detection/inputs
-- Adjust controller changing to filter when stash === controller (no error, but warn)
-- Allow the poll module via Governance proxy
-- Expand proxy detection to deep-inspect batched calls
-- Ensure various APIs are available (filtering) before attempting to render
-- Ensure tooltips are correctly displayed on account hovers
-- Cleanup council display for candidates
-- Cleanup and simplify QR import logic (& always set genesisHash, even when not supplied)
-- Always set genesisHash when accounts are derived
-- Adjust breakpoints for `AccountName` via `AddressShort`
-- Cleanup SUI dependencies with unused components, Progress, Responsive, Toggle
-- Adjust module bundling splits, remove unused libraries & fonts
-- Remove unmaintained page-123code (& references)
-- Don't display finalized blocks when grandpa is not available
-
-## 0.49.1 Jul 13, 2020
-
-- Update Subscan links with supported chains (https://github.com/carumusan)
-- Enhance Electron desktop with CSP & best practices (Thanks to https://github.com/EthWorks)
-- Activate Electron update feature by default (Thanks to https://github.com/EthWorks)
-- Use external browser for embedded links in Electron (Thanks to https://github.com/EthWorks)
-- Add testing around Electron features (Thanks to https://github.com/EthWorks)
-- Support democracy account delegation (Thanks to https://github.com/Tbaut)
-- Don't filter selected on multi account selector (Thanks to https://github.com/Tbaut)
-- Add support for Polkadot denomination poll
-- Allow input & display of OpaqueCall type from multisig
-- Indicate own nominees on targets page (re-added with badges)
-- Re-add indicator for own nominators in staking targets
-- Add `?filter=<string>` query param support on staking URLs
-- Add generator for Kusama society designs
-- Handle OpaqueCall in inputs and well as displays (multisig)
-- Small layout adjustments for address display components
-- Performance improvements on wrapped styles, component libraries
-- Add support for display detected ASCII bytes as text
-- Adjust type injection to override on-connect API defaults
-- Adjust attestation display with no-balance filters
-
-## 0.48.1 Jul 6, 2020
-
-- Fix for electron package build (Thanks to https://github.com/EthWorks)
-- Allow for setting of sub identities via account action
-- Adjust known account icons (Society & Treasury)
-- Add Westend chain to Subscan link generator
-- Display a warning with extensions and no injected accounts
-- Retrieve all tips at once and sort by closing
-- Fix identity set dialogs to never pass empty fields
-- Optimize favorites retrieval & selection for staking (shared between)
-- Support new registrar ProxyType in the signer
-- Hide funds unbonding when non bonded
-- Add withdraw action to staking menu (as available)
-- Fix InputAddress component with state change warnings
-- Bump to latest API and utilities
-
-## 0.47.1 Jul 1, 2020
-
-- Update zh translation (Thanks to https://github.com/dushaobindoudou)
-- Add DataHighway Harbour testnet endpoint (Thanks to https://github.com/ltfschoen)
-- Small I18N key fix (Thanks to https://github.com/ltfschoen)
-- Allow for Electron auto-update on Mac (Thanks to https://github.com/EthWorks)
-- Swap to default conviction of 1x (Thanks to https://github.com/Tbaut)
-- Make preimage hash selectable on FF (Thanks to https://github.com/Tbaut)
-- show unbonding value in staking actions (Thanks to https://github.com/Tbaut)
-- Default (via toggle) to only last 25% of eras for payouts
-- Allow retracting of tips by proposer
-- Allow tipping with new Substrate types (dual old/new support)
-- Enable the full retrieval of all Map/Doublemap entries
-- Support correct display of vesting with locks (& unlock via account)
-- Adjust on-chain identity inputs with field validation
-- Enable grouping of democracy locks by type
-- Resolve identity links starting with https://twitter
-- Display voted & unvoted council motions, referendums & tips
-- Adjust toggles for file/bytes uploads
-- Correct handling of recursive param structures in extrinsics
-- Swap icons to use font-awesome directly, including official components
-- Additional small UI cleanups and fixes
-
-## 0.46.1 Jun 22, 2020
-
-- I18n for es (Thanks to https://github.com/wimel)
-- Support for importing mini secrets via QR (Thanks to https://github.com/hanwencheng)
-- Update SubstrateTEE types (Thanks to https://github.com/brenzi)
-- Support for multisig calls with new weight parameters
-- Split sign and send updates in the signer modal for better UI tracking
-- Hide zero nonce of accounts/contracts pages
-- Display API extrinsic construction errors in the extrinsics app
-- Do not display signer proxies when there are none matching against accounts
-- Sort recovery addresses to align with the Substrate implementation
-- Check for funded controller on bonding
-- Suggest max values for bonding (& bonding extra), adjusting checks
-- Handle isForceEra to adjust era displays
-- Display candidacy bond on council submission
-- Adjust AddressMni & AddressSmall components to take advantage of bigger screens
-- Display referendum & treasury tips voting status
-- Add tips close buttons & countdown timer
-- Disabled nominations via targets when in election
-- Expand targets page to include waiting validators (full overview of all)
-- Apply shared filters (name, toggles) on all validator lists
-- Display balances in account view sidebar
-- Adjust signer dialog ith split sign/send (better status displays)
-- Adjust proxy checks for sudo calls to closer align with Polkadot
-- Apply i18n caching, with no reload on translation page
-- Add "Apply" i18n button to reflect editing changes in the UI
-- Support Tuple inputs (params/extrinsics) for custom names
-- `@polkadot/api` 1.20.1
-- `@polkadot/util` 2.15.1
-
-## 0.45.2 Jun 16, 2020
-
-- I18n for ja (Thanks to https://github.com/SotaWatanabe)
-- I18n for pt (thanks to https://github.com/laurogripa)
-- I18n for ru (Thanks to https://github.com/illlefr4u)
-- Update Encointer types (thanks to https://github.com/brenzi)
-- Improve Electron app security settings (Thanks to https://github.com/EthWorks)
-- Rework signer dialog to cater for proxies (and multisig/proxy combinations)
-- Construct payouts with oldest eras first (expire first)
-- Show outstanding multisig approvals on accounts page
-- Allow for addition of proxied accounts (access to proxy account only)
-- Change claims to handle no statements required (new module now on Kusama)
-- Publish docker image on release
-- update collective calls to handle weights enhancements for latest Substrate
-- Allow for tip endorsements with 0 value
-- add Centrifuge live as a connection option
-- Adjust Polkascan links with current active chains
-- When collective proposal is in close state, hide vote buttons
-- Cleanup technical committee display (header alignment)
-- Adjust IPFS/IPNS network extraction for local gateways
-- `@polkadot/api` 1.19.1
-- `@polkadot/util` 2.14.1
-
-## 0.44.1 Jun 10, 2020
-
-- Publish electron images on release (Thanks to https://github.com/EthWorks)
-- Adjust with latest Arcardia types (Thanks to https://github.com/ETeissonniere)
-- Extensions and fixes to the russian translations (Thanks to https://github.com/illlefr4u)
-- Rewrite of the contracts app (Thanks to https://github.com/kwingram25)
-- New types for SubstrateTEE (Thanks to https://github.com/brenzi)
-- Adjust for new Polkadot CC1 & Kusama types
-- Cater for new multisig module location
-- Filter multisig signatories based on approvals, set final state based on threshold
-- Adapt QR codes to cater for hashing on large payloads
-- Adjust collective extrinsics to cater for weight & lengths
-- Allow bonding with full free amount (this fixes bonding for vesting)
-- Fixes for Kusama as well as Polkadot claims
-- Allow Polkadot CC1 links to Polkascan & Subscan
-- Update Polkascan links with new formats
-- Don't display era progress when Forcing `isForceNone`
-- Overall styling adjustments
-- Cater for `{kusama,polkadot,westend}.dotapps.io` redirects
-- `@polkadot/api` 1.18.1
-- `@polkadot/util` 2.13.1
-
-## 0.43.1 May 26, 2020
-
-- Support for Polkadot CC1 Claims (Thanks to https://github.com/amaurymartiny & https://github.com/Tbaut)
-- Small typo fixes (Thanks to https://github.com/Swader)
-- updates to russian translation (Thanks to https://github.com/illlefr4u)
-- Adjustments to Electron build support (Thanks to https://github.com/EthWorks)
-- Support for Polkadot CC1 types & RPC endpoints
-- Detect & support new proposal close process in Substrate
-- Adjust checks for on-click validator (immediate isActive)
-- `@polkadot/api` 1.16.1
-- `@polkadot/util` 2.11.1
-
-## 0.42.1 May 22, 2020
-
-- Adjust Subscan proposal links (Thanks to https://github.com/illlefr4u)
-- Add environment suport for docker images (Thanks to https://github.com/chevdor)
-- Adjust overflows on small screens (Thanks to https://github.com/dushaobindoudou)
-- Add links to Polkaassembly (Thanks to https://github.com/Tbaut)
-- Address popup with detailed info (Thanks to https://github.com/kwingram25)
-- Add Russian translation (Thanks to https://github.com/gregzaitsev)
-- Russian translation adjustments (Thanks to https://github.com/illlefr4u)
-- Add Nodle RPC endpoint (Thanks to https://github.com/ETeissonniere)
-- Update Kulupu types (Thanks to https://github.com/sorpaas)
-- Update Edgeware types (Thanks to https://github.com/drewstone)
-- Update Encointer types (Thanks to https://github.com/brenzi)
-- Update node-template types (Thanks to https://github.com/shawntabrizi)
-- Update node-template types (Thanks to https://github.com/JoshOrndorff)
-- Higher default contracts gas limit (Thanks to https://github.com/Stefie)
-- Add block number display to event overview (Thanks to https://github.com/danforbes)
-- Basic Electron support (Thanks to https://github.com/EthWorks)
-- Documentation around IPFS pinning (Thanks to https://github.com/chevdor)
-- Added IPFS/IPNS publishing (ipns via dotapps.io)
-- Support for multisig wallets
-- Ledger address on-wallet display option
-- Add support for new per-staker payouts
-- Allow for "best" selection in staking
-- Simplified nominator & validator creation flows
-- Display >64 nominators on staking pages (clipped payouts)
-- Remove tooltips on staking and elsewhere (large number causes performance issues)
-- Council isMember checks uses council in addition to elections
-- Allow closing of council proposals
-- Expand Treasury proposal inline in council (for approve/reject)
-- Expand external proposals in council (preimage lookups)
-- Allow for sudo with unchecked weight
-- Adjust referendums to display turnout and sentiment
-- Add columar modals with extra info
-- Add table summaries with totals for free, bonded & stash payouts
-- Add images to metadata update dropdowns
-- Ecdsa keypair support
-- Display delegations in voting breakdowns
-- Adjust registrar modal with per-account filters
-- Add i18n linting script
-- Add i18n editor with translation file generator
-- Custom i18n loader with caching
-- Add JS sample for storage key generation
-- Misc UI fixes & adjustments throughout
-- Allow for tabes with aliasses (on renames) & redirects
-- Align types and calls with latest substrate
-
-## 0.41.1 Apr 20, 2020
-
-- Fix for searching child identities on parent name (Thanks to https://github.com/krogla)
-- Support chains with no balances module (Thanks to https://github.com/Voxelot)
-- Add out-of-the-box support for Encointer (Thanks to https://github.com/brenzi)
-- Add ava.do endpoint for Kusama (Thanks to https://github.com/Swader)
-- Show remaining time on staking payout actions, link payouts from actions
-- Display per-validator nominators on waiting list
-- Add support for Treasury tipping (display of available & creation)
-- Adjust display of passing/failing calcs in democracy (incl. no display when other side is 0)
-- Enable use of `system_chainType` to detect development chains
-- Adjust Expander display for balances as used in accounts
-- Adjust formatting outputs (via cleanup) for state queries
-- Cleanup nowrap on Extender as part of tables
-- Optimize retrieval of old-style validator/nominator payouts (not full historyDepth)
-- Optimize AccountName with caching & when used in lists (no lookup information attached, but not shown)
-- Optimize IdentityIcon with removal of extra queries
-- Optimize Transfers, no unneeded useEffect
-- Cleanups, remove unused components with no references (dropped in earlier refactoring)
-- More components to functional, specific focus on TxModal extends
-- Bumps to all @polkadot/* packages for latest support everywhere
-
-## 0.40.1 Apr 9, 2020
-
-- Swap voting to aye/nay toggles (Thanks to https://github.com/Lowhearth)
-- Cater for chains where no tip is present (Thanks to https://github.com/Sushisource)
-- Export chain-specific settings via QR (thanks to https://github.com/hanwencheng)
-- Improve support for WS_URL usage (Thanks to https://github.com/chevdor)
-- Add out-of-the-box support for Centrifuge (Thanks to https://github.com/philipstanislaus)
-- Cleanup docker image construction (Thanks to https://github.com/philipstanislaus)
-- Add out-of-the-box support for node template (Thanks to https://github.com/JoshOrndorff)
-- Text cleanups (Thanks to https://github.com/x5engine)
-- Text cleanups (Thanks to https://github.com/ltfschoen)
-- update Parachains to support latest Polkadot (Thanks to https://github.com/kwingram25)
-- Rework multi address inputs (e.g. nominations & council) (Thanks to https://github.com/kwingram25)
-- Introduce apps-config as a single source of config information
-- Cater for metadata updates to extensions
-- Rework explorer layouts, combining extrinsics & events into a single view
-- Swap all layouts to be explicitly table-based (instead of table-like)
-- Cater for latest Substrate referendum updates
-- Allow for fast-tracking proposals
-- Time countdowns where applicable, e.g. referendums
-- Show referendum pass/fail status as well as change information
-- Combine Accounts & Contacts into a single app
-- Support for display of parent/child relationships in accounts
-- Add ErrorBoundary around components
-- Update Westend after reset
-- Enable Subscan explorer
-- Support for simple payouts on Substrate, with Payouts screen
-- Extensive use of useCallback & React.memo for functional components
-- Add Expander component for consistent UI
-- Loading spinners used consistently
-- Specific names for society & treasury addresses
-- Cleanup all voting lock, consistent display
-- ... loads of other under-the-hood improvements and cleanups
-
-## 0.39.1 Jan 31, 2020
-
-- **Breaking** Drop support for V1 Substrate chains
-- Translation into Chinese (Thanks to https://github.com/dushaobindoudou)
-- Support for sign-only transactions (Thanks to https://github.com/mzolkiewski)
-- Add support for WestEnd testnet
-- Add support for social recovery in accounts
-- Add counters for all proposal-based apps
-- Disable spellcheck on all input fields (privacy)
-- Query the paymentInfo API to get weight fee information
-- Remove FF warning with https:// -> ws://localhost
-- Staking now supports where the controller or stash accounts are not local
-- Social app
-- Add support for identity setting (via identity module)
-- Add support for registrars to hand out identity judgements
-- Use both internal and lib hooks as applicable (refactoring)
-- Support QR codes (accounts) with optional names
-- Cleanup all Modals, simplify
-- Adjust balance display formats
-- Update to latest libraries (incl. util 2.0 & api 1.0)
-
-## 0.38.1
-
-- Fix summarybar in 123-code (Thanks to https://github.com/anakornk)
-- Update Edgeware with correct keys (Thanks to https://github.com/drewstone)
-- Add InputAddressMulti inputs, both to council and staking nominators
-- Rework all layouts, removing cards for table-ike-layouts
-- Technical comittee app
-- Allow for external proposal and queued for dispatch in democracy
-- Add pre-image support to democracy proposals (including imminent)
-- Improved staking page rendering (background)
-- Update to latest libraries
-
-## 0.37.1
-
-- Support for Kusama CC3
-- Support for contracts with new ABI v2 (Thanks to https://github.com/kwingram25)
-- Support for on-chain nicks
-- Speed improvements for the staking pages
-- Add account derivation from existing account
-- Council voting with runner up & phragmen
-- Allow favorites in validators pages
-- Rework nominations to take favorites & current into account
-- Enhance AddressCard with additional info (incl. vested)
-- Move account/address actions to popup menu
-- Convert a large number of components to use hooks
-- Display validator graphs
-- Refactor of backup modal (Thanks to @LukeSugiura)
-- Enable language setting options (Thanks to @LukeSugiura)
-- Allow for signRaw to be used in the signing toolbox (injected accounts)
-- Display account names in status events
-- Nomination targets dashboard
-- Validator preferences are expressed as commission % as supported by chains
-- Account locks are applied on a genesis range (e.g. CC2 & CC3 allow availability)
-- ... lots of smaller enhancements & bug fixes
-
-## 0.36.1
-
-- Api 0.95.1, Util 1.6.1, Extension 0.13.1
-- Support latest contracts ABI (via API), incl. rework of contracts UI
-- Support for Kusama CC2
-- Support for Edgeware mainnet
-- Experimental Ledger support
-- Display forks on explorer (limited to Babe)
-- Change settings to have Save as well as Save & Reload (depending on changes made)
-- Updates to struct & enum rendering (as per extrinsic app)
-- Backup, Password change & Delete don't show for built-in dev accounts
-- Add commissions to the staking overview
-- UI theme update
-- A large number of components refactored for React functional components
-- Allow dismiss of all notifications (via bounty)
-- Migrate all buttons to have icons (via bounty)
-- Proposal submission via modal (via bounty)
-- i18n string extraction (via bounty)
-- adjust signature validity (via bounty)
-- Make the network selection clickable on network name (via bounty)
-- ... and a number of cleanups all around
-
-## 0.35.1
-
-- Api 0.91.1, Util 1.2.1, Extension 0.10.1
-- Support for accounts added via Qr (for instance, the Parity Signer)
-- Support for accounts tied to specific chains (instead of just available to all)
-- GenericAsset app transfers
-- Support for Edgeware with default types
-- Display received heartbeats for validators
-- Allow optional params (really as optional) in RPC toolbox
-- Add Polkascan for Kusama
-- Fix account derivation with `///password`
-- Lots of component & maintainability cleanups
-
-## 0.34.1
-
-- Kusama support
-- Full support for Substrate 2.x & Polkadot 0.5.0 networks
-- Lots of UI updated to support both Substrate 1.x & 2.x chains
-- Add of claims app for Kusama (and Polkadot)
-- Basic Council, Parachains & Treasury apps
-- Moved ui-* packages to react-*
-
-## 0.33.1
-
-- Allow for externally injected accounts (i.e. via extension, polkadot-js & SingleSource)
-- Links to extrnisics & addresses on Polkascan
-- Rework Account & Address layouts with cards
-- Transfer can happen from any point (via Transfer modal)
-- Use new api.derive functions
-- Introduce multi support (most via api.derive.*)
-- Update all account and address modals
-- Add seconding of proposals
-- Staking updates, including un-bonding & withdrawals
-- Update explorer with global query on hash/blocks
-- Add filters on the staking page
-- Vanitygen now supports sr25519 as well
-- Fixes for importing of old JSON
-- Latest @polkadot/util & @polkadot/api
-- A large number of optimizations and smaller fixes
-
-## 0.32.1
-
-- Support for Substrate 1.0 release & metadata v4
-- @polkadot/api 0.77.1
-
-## 0.31.1
-
-- Cleanups, fixes and features around the poc-4 staking module
-- Number of UI enhancements
-
-## 0.30.1
-
-- Staking page indicator for offline nodes (count & block)
-- Rework page tabs and content layouts
-- Cleanup of all UI summary headers
-- Emberic Elem support (replaces Dried Danta)
-
-## 0.29.1
-
-- @polkadot/util & @polkadot/api 0.75.1
-
-## 0.28.1
-
-- Support for substrate 1.0-rc
-
-## 0.27.1
-
-- Bring in new staking & nominating functions
-- Swap default keyring accounts (on creation) to sr25519
-- New faster crypto algorithms
-- Misc. bug fixes all around
-
-## 0.26.1
-
-- Swap keyring to HDKD derivation, mnemonic keys are now not backwards compatible with those created earlier. (Defaults are still for ed25519)
-- Swap crypto to new WASM-backed version (and remove libsodium dependency)
-- UI to allow for derived keys for ed25519 and sr25519
-- New mobile-friendly sidebar
-- Fix issues with nominating (old non-bonds interface)
-
-## 0.25.1
-
-- Swap to publishing -beta.x on merge (non-breaking testing)
-
- ## 0.24.1
-
- Storage now handles Option type properly
-
- ## 0.23.1
-
- JavaScript console introduced
-
-## 0.22.1
-
-- Use new Compact<Index> transaction format - this requires the latest binaries from either Polkadot or Substrate
-
-## 0.21.1
-
-- PoC-3 support with latest Substrate master & Polkadot master
-- Add support for Charred Cherry (Substrate) and Alexander (Polkadot) testnets
-- Too many changes to mention, master now only supports latest PoC-3 iteration
-- Use https://poc-2.polkadot.io if access is required to PoC-2 era networks

+ 0 - 45
pioneer/CONTRIBUTING.md

@@ -1,45 +0,0 @@
-# Contributing
-
-## What?
-
-Individuals making significant and valuable contributions are given commit-access to a project to contribute as they see fit.
-A project is more like an open wiki than a standard guarded open source project.
-
-## Rules
-
-There are a few basic ground-rules for contributors (including the maintainer(s) of the project):
-
-1. **No `--force` pushes** or modifying the Git history in any way. If you need to rebase, ensure you do it in your own repo.
-2. **Non-master branches**, prefixed with a short name moniker (e.g. `<initials>-<feature>`) must be used for ongoing work.
-3. **All modifications** must be made in a **pull-request** to solicit feedback from other contributors.
-4. A pull-request *must not be merged until CI* has finished successfully.
-
-#### Merging pull requests once CI is successful:
-- A pull request with no large change to logic that is an urgent fix may be merged after a non-author contributor has reviewed it well.
-- No PR should be merged until all reviews' comments are addressed.
-
-#### Reviewing pull requests:
-When reviewing a pull request, the end-goal is to suggest useful changes to the author. Reviews should finish with approval unless there are issues that would result in:
-
-- Buggy behaviour.
-- Undue maintenance burden.
-- Breaking with house coding style.
-- Pessimisation (i.e. reduction of speed as measured in the projects benchmarks).
-- Feature reduction (i.e. it removes some aspect of functionality that a significant minority of users rely on).
-- Uselessness (i.e. it does not strictly add a feature or fix a known issue).
-
-#### Reviews may not be used as an effective veto for a PR because:
-- There exists a somewhat cleaner/better/faster way of accomplishing the same feature/fix.
-- It does not fit well with some other contributors' longer-term vision for the project.
-
-## Releases
-
-Declaring formal releases remains the prerogative of the project maintainer(s).
-
-## Changes to this arrangement
-
-This is an experiment and feedback is welcome! This document may also be subject to pull-requests or changes by contributors where you believe you have something valuable to add or change.
-
-## Heritage
-
-These contributing guidelines are modified from the "OPEN Open Source Project" guidelines for the Level project: [https://github.com/Level/community/blob/master/CONTRIBUTING.md](https://github.com/Level/community/blob/master/CONTRIBUTING.md)

+ 0 - 26
pioneer/Dockerfile

@@ -1,26 +0,0 @@
-FROM ubuntu:18.04 as builder
-
-# Install any needed packages
-RUN apt-get update && apt-get install -y curl git gnupg
-
-# install nodejs
-RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
-RUN apt-get install -y nodejs
-
-WORKDIR /app
-RUN git clone https://github.com/polkadot-js/apps
-
-WORKDIR /app/apps
-RUN npm install yarn -g
-RUN yarn
-RUN NODE_ENV=production yarn build
-
-FROM ubuntu:18.04
-
-RUN apt-get update && apt-get -y install nginx
-
-COPY --from=builder /app/apps/packages/apps/build /var/www/html
-
-EXPOSE 80
-
-CMD ["nginx", "-g", "daemon off;"]

+ 0 - 22
pioneer/I18N.md

@@ -1,22 +0,0 @@
-# I18N
-
-The apps UI allows all strings to be translated. Additionally it has a basic UI that allows for the creation of the required translation files, which will give an overview on the progress for a specific language.
-
-## Updating translations
-
-To update translations, the following process is required.
-
-- launch the apps UI, either locally or via https://polkadot.js.org/apps
-- explicitly navigate to the i18n page, https://polkadot.js.org/apps/#/settings/i18n
-
-Here you will find a dropdown of all the available languages and all the modules that maps to the UI. On a single screen you will be able to see all the available strings for a specific module.
-
-- adjust any strings as required
-- once completed with the changes, click the `Generate translation.json` button to download the translation file
-- this file can now be added to the repo with a PR to https://github.com/polkadot-js/apps/tree/master/packages/apps/public/locales
-
-## Adding a new language (if not in dropdown above)
-
-The process is similar for the above, but does require a new folder with the language identifier to be added. Create [packages/apps/public/locales/<id>](https://github.com/polkadot-js/apps/tree/master/packages/apps/public/locales) folder with an empty `translation.json` (containing only `{}`). After addition of the folder, run `yarn build:i18n` and then the new language will be available for update as per the process in the previous section.
-
-In addition to the language folder, the language also needs to be added to the dropdown for available languages, this can be found in [packages/apps-config/src/settings.languages.ts](https://github.com/polkadot-js/apps/blob/master/packages/apps-config/src/settings/languages.ts)

+ 0 - 201
pioneer/LICENSE

@@ -1,201 +0,0 @@
-                              Apache License
-                        Version 2.0, January 2004
-                    http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-  "License" shall mean the terms and conditions for use, reproduction,
-  and distribution as defined by Sections 1 through 9 of this document.
-
-  "Licensor" shall mean the copyright owner or entity authorized by
-  the copyright owner that is granting the License.
-
-  "Legal Entity" shall mean the union of the acting entity and all
-  other entities that control, are controlled by, or are under common
-  control with that entity. For the purposes of this definition,
-  "control" means (i) the power, direct or indirect, to cause the
-  direction or management of such entity, whether by contract or
-  otherwise, or (ii) ownership of fifty percent (50%) or more of the
-  outstanding shares, or (iii) beneficial ownership of such entity.
-
-  "You" (or "Your") shall mean an individual or Legal Entity
-  exercising permissions granted by this License.
-
-  "Source" form shall mean the preferred form for making modifications,
-  including but not limited to software source code, documentation
-  source, and configuration files.
-
-  "Object" form shall mean any form resulting from mechanical
-  transformation or translation of a Source form, including but
-  not limited to compiled object code, generated documentation,
-  and conversions to other media types.
-
-  "Work" shall mean the work of authorship, whether in Source or
-  Object form, made available under the License, as indicated by a
-  copyright notice that is included in or attached to the work
-  (an example is provided in the Appendix below).
-
-  "Derivative Works" shall mean any work, whether in Source or Object
-  form, that is based on (or derived from) the Work and for which the
-  editorial revisions, annotations, elaborations, or other modifications
-  represent, as a whole, an original work of authorship. For the purposes
-  of this License, Derivative Works shall not include works that remain
-  separable from, or merely link (or bind by name) to the interfaces of,
-  the Work and Derivative Works thereof.
-
-  "Contribution" shall mean any work of authorship, including
-  the original version of the Work and any modifications or additions
-  to that Work or Derivative Works thereof, that is intentionally
-  submitted to Licensor for inclusion in the Work by the copyright owner
-  or by an individual or Legal Entity authorized to submit on behalf of
-  the copyright owner. For the purposes of this definition, "submitted"
-  means any form of electronic, verbal, or written communication sent
-  to the Licensor or its representatives, including but not limited to
-  communication on electronic mailing lists, source code control systems,
-  and issue tracking systems that are managed by, or on behalf of, the
-  Licensor for the purpose of discussing and improving the Work, but
-  excluding communication that is conspicuously marked or otherwise
-  designated in writing by the copyright owner as "Not a Contribution."
-
-  "Contributor" shall mean Licensor and any individual or Legal Entity
-  on behalf of whom a Contribution has been received by Licensor and
-  subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
-  this License, each Contributor hereby grants to You a perpetual,
-  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-  copyright license to reproduce, prepare Derivative Works of,
-  publicly display, publicly perform, sublicense, and distribute the
-  Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
-  this License, each Contributor hereby grants to You a perpetual,
-  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-  (except as stated in this section) patent license to make, have made,
-  use, offer to sell, sell, import, and otherwise transfer the Work,
-  where such license applies only to those patent claims licensable
-  by such Contributor that are necessarily infringed by their
-  Contribution(s) alone or by combination of their Contribution(s)
-  with the Work to which such Contribution(s) was submitted. If You
-  institute patent litigation against any entity (including a
-  cross-claim or counterclaim in a lawsuit) alleging that the Work
-  or a Contribution incorporated within the Work constitutes direct
-  or contributory patent infringement, then any patent licenses
-  granted to You under this License for that Work shall terminate
-  as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
-  Work or Derivative Works thereof in any medium, with or without
-  modifications, and in Source or Object form, provided that You
-  meet the following conditions:
-
-  (a) You must give any other recipients of the Work or
-      Derivative Works a copy of this License; and
-
-  (b) You must cause any modified files to carry prominent notices
-      stating that You changed the files; and
-
-  (c) You must retain, in the Source form of any Derivative Works
-      that You distribute, all copyright, patent, trademark, and
-      attribution notices from the Source form of the Work,
-      excluding those notices that do not pertain to any part of
-      the Derivative Works; and
-
-  (d) If the Work includes a "NOTICE" text file as part of its
-      distribution, then any Derivative Works that You distribute must
-      include a readable copy of the attribution notices contained
-      within such NOTICE file, excluding those notices that do not
-      pertain to any part of the Derivative Works, in at least one
-      of the following places: within a NOTICE text file distributed
-      as part of the Derivative Works; within the Source form or
-      documentation, if provided along with the Derivative Works; or,
-      within a display generated by the Derivative Works, if and
-      wherever such third-party notices normally appear. The contents
-      of the NOTICE file are for informational purposes only and
-      do not modify the License. You may add Your own attribution
-      notices within Derivative Works that You distribute, alongside
-      or as an addendum to the NOTICE text from the Work, provided
-      that such additional attribution notices cannot be construed
-      as modifying the License.
-
-  You may add Your own copyright statement to Your modifications and
-  may provide additional or different license terms and conditions
-  for use, reproduction, or distribution of Your modifications, or
-  for any such Derivative Works as a whole, provided Your use,
-  reproduction, and distribution of the Work otherwise complies with
-  the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
-  any Contribution intentionally submitted for inclusion in the Work
-  by You to the Licensor shall be under the terms and conditions of
-  this License, without any additional terms or conditions.
-  Notwithstanding the above, nothing herein shall supersede or modify
-  the terms of any separate license agreement you may have executed
-  with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
-  names, trademarks, service marks, or product names of the Licensor,
-  except as required for reasonable and customary use in describing the
-  origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
-  agreed to in writing, Licensor provides the Work (and each
-  Contributor provides its Contributions) on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-  implied, including, without limitation, any warranties or conditions
-  of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-  PARTICULAR PURPOSE. You are solely responsible for determining the
-  appropriateness of using or redistributing the Work and assume any
-  risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
-  whether in tort (including negligence), contract, or otherwise,
-  unless required by applicable law (such as deliberate and grossly
-  negligent acts) or agreed to in writing, shall any Contributor be
-  liable to You for damages, including any direct, indirect, special,
-  incidental, or consequential damages of any character arising as a
-  result of this License or out of the use or inability to use the
-  Work (including but not limited to damages for loss of goodwill,
-  work stoppage, computer failure or malfunction, or any and all
-  other commercial damages or losses), even if such Contributor
-  has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
-  the Work or Derivative Works thereof, You may choose to offer,
-  and charge a fee for, acceptance of support, warranty, indemnity,
-  or other liability obligations and/or rights consistent with this
-  License. However, in accepting such obligations, You may act only
-  on Your own behalf and on Your sole responsibility, not on behalf
-  of any other Contributor, and only if You agree to indemnify,
-  defend, and hold each Contributor harmless for any liability
-  incurred by, or claims asserted against, such Contributor by reason
-  of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
-  To apply the Apache License to your work, attach the following
-  boilerplate notice, with the fields enclosed by brackets "[]"
-  replaced with your own identifying information. (Don't include
-  the brackets!)  The text should be enclosed in the appropriate
-  comment syntax for the file format. We also recommend that a
-  file or class name and description of purpose be included on the
-  same "printed page" as the copyright notice for easier
-  identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.

+ 0 - 54
pioneer/README.md

@@ -1,54 +0,0 @@
-<p align="center"><img src="img/pioneer_new.svg"></p>
-
-![Content Directory](https://user-images.githubusercontent.com/4144334/67765742-bbfab280-fa44-11e9-8b13-494b1bfb6014.jpeg)
-
-A Portal into the Joystream network. Provides a view and interaction layer from a browser.
-
-This can be accessed as a hosted application via [https://testnet.joystream.org](https://testnet.joystream.org).
-
-## overview
-
-The repo is split into a number of packages, each representing an application. These are -
-
-- [apps](packages/apps/) This is the main entry point. It handles the selection sidebar and routing to the specific application being displayed.
-- [page-accounts](packages/page-accounts/) A basic account management app.
-- [page-address-book](packages/page-address-book/) A basic address management app.
-- [page-explorer](packages/page-explorer/) A simple block explorer. It only shows the most recent blocks, updating as they become available.
-- [page-extrinsics](packages/page-extrinsics/) Submission of extrinsics to a node.
-- [page-js](packages/page-js/) An online code editor with [@polkadot-js/api](https://github.com/polkadot-js/api/tree/master/packages/api) access to the currently connected node.
-- [page-settings](packages/page-settings/) A basic settings management app, allowing choice of language, node to connect to, and theme
-- [page-staking](packages/page-staking/) A basic staking management app, allowing staking and nominations.
-- [page-storage](packages/page-storage/) A simple node storage query application. Multiple queries can be queued and updates as new values become available.
-- [page-toolbox](packages/page-toolbox/) Submission of raw data to RPC endpoints and utility hashing functions.
-- [page-transfer](packages/page-transfer/) A basic account management app, allowing transfer of Units/DOTs between accounts.
-
-In addition the following libraries are also included in the repo. These are to be moved to the [@polkadot/ui](https://github.com/polkadot-js/ui/) repository once it reaches a base level of stability and usability. (At this point with the framework being tested on the apps above, it makes development easier having it close)
-
-- [react-components](packages/react-components/) A reactive (using RxJS) application framework with a number of useful shared components.
-- [react-signer](packages/react-signer/) Signer implementation for apps.
-- [react-query](packages/react-query) Base components that use the RxJS Observable APIs
-
-## development
-
-Contributions are welcome!
-
-To start off, this repo (along with others in the [@polkadot](https://github.com/polkadot-js/) family) uses yarn workspaces to organise the code. As such, after cloning dependencies _should_ be installed via `yarn`, not via npm, the latter will result in broken dependencies.
-
-To get started -
-
-1. Clone the repo locally, via `git clone https://github.com/joystream/joystream <optional local path>`
-2. Ensure that you have a recent LTS version of Node.js, for development purposes [Node >=10.13.0](https://nodejs.org/en/) is recommended.
-3. Ensure that you have a recent version of Yarn, for development purposes [Yarn >=1.10.1](https://yarnpkg.com/docs/install) is required.
-4. Install the dependencies by running `yarn`
-5. Ready! Now you can launch the UI (assuming you have a local Polkadot Node running), via `yarn run start`
-6. Access the UI via [http://localhost:3000](http://localhost:3000)
-
-### Storybook
-
-There is a [StoryBook](https://storybook.js.org) implementation, the UI for which can be started with `yarn storybook` and then accessed in a browser via http://localhost:3001 (and the server will open a new browser tab by default when it starts).
-
-Story code can be placed anywhere in the `packages` directory, and will be detected as long as the file name ends in `.stories.tsx. Stories should be defined in the [Component Story Format (CSF)](https://storybook.js.org/docs/formats/component-story-format) for consistency.
-
-There are several StoryBook addons available, the most useful of which is [Knobs](https://www.npmjs.com/package/@storybook/addon-knobs), which allows props to be altered in real time.
-
-Note that currently StoryBook only allows for stateless components; it has no connection to polkadot.js or any Substrate node. This means that existing components, which are often tightly coupled with the Polkadot API, cannot be used in storybook.

+ 0 - 5
pioneer/babel.config.js

@@ -1,5 +0,0 @@
-// Copyright 2017-2020 @polkadot/apps authors & contributors
-// This software may be modified and distributed under the terms
-// of the Apache-2.0 license. See the LICENSE file for details.
-
-module.exports = require('@polkadot/dev/config/babel');

+ 0 - 33
pioneer/deployment.extras.yml

@@ -1,33 +0,0 @@
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
-  name: production-ingress-substrate-ui
-  namespace: poc3-122
-  annotations:
-    kubernetes.io/ingress.class: traefik
-    traefik.frontend.entryPoints: "https,http"
-spec:
-  rules:
-  - host: substrate-ui.parity.io
-    http:
-      paths:
-      - backend:
-          serviceName: production-service
-          servicePort: 80
----
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
-  name: production-ingress-substrate-ui-light
-  namespace: poc3-122
-  annotations:
-    kubernetes.io/ingress.class: traefik
-    traefik.frontend.entryPoints: "https,http"
-spec:
-  rules:
-  - host: substrate-ui-light.parity.io
-    http:
-      paths:
-      - backend:
-          serviceName: production-service
-          servicePort: 80

+ 0 - 60
pioneer/deployment.template.yml

@@ -1,60 +0,0 @@
----
-apiVersion: v1
-data:
-# AZURE_DOCKER_REGISTRY_CONFIG is base64 of this:
-# {"auths":{"parity.azurecr.io":{"username":"parity","password":"<password>","email":"admin@parity.io","auth":"<base64 of user+passwoed>"}}}
-  .dockerconfigjson: $AZURE_DOCKER_REGISTRY_CONFIG
-kind: Secret
-metadata:
-  name: azure-docker-registry-key
-type: kubernetes.io/dockerconfigjson
----
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
-  name: $CI_ENVIRONMENT_SLUG-backend
-spec:
-  replicas: $REPLICAS
-  template:
-    metadata:
-      labels:
-        app: $CI_ENVIRONMENT_SLUG
-        component: backend
-    spec:
-      containers:
-        - name: $CI_ENVIRONMENT_SLUG-backend
-          image: $DOCKER_IMAGE_FULL_NAME
-          imagePullPolicy: Always
-          ports:
-          - containerPort: 80
-      imagePullSecrets:
-        - name: azure-docker-registry-key
----
-apiVersion: v1
-kind: Service
-metadata:
-  name: $CI_ENVIRONMENT_SLUG-service
-spec:
-  selector:
-    app: $CI_ENVIRONMENT_SLUG
-  ports:
-    - name: http
-      port: 80
-      targetPort: 80
-      protocol: TCP
----
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
-  name: $CI_ENVIRONMENT_SLUG-ingress
-  annotations:
-    kubernetes.io/ingress.class: traefik
-    traefik.frontend.entryPoints: "https,http"
-spec:
-  rules:
-  - host: $AUTODEVOPS_HOST
-    http:
-      paths:
-      - backend:
-          serviceName: $CI_ENVIRONMENT_SLUG-service
-          servicePort: 80

+ 0 - 27
pioneer/docker/nginx.conf

@@ -1,27 +0,0 @@
-user  nginx;
-worker_processes  1;
-
-error_log  /var/log/nginx/error.log warn;
-pid        /var/run/nginx.pid;
-
-events {
-    worker_connections  1024;
-}
-
-http {
-    include       /etc/nginx/mime.types;
-    default_type  application/octet-stream;
-
-    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
-                      '$status $body_bytes_sent "$http_referer" '
-                      '"$http_user_agent" "$http_x_forwarded_for"';
-
-    access_log  /var/log/nginx/access.log  main;
-
-    sendfile        on;
-    #tcp_nopush     on;
-
-    keepalive_timeout  65;
-    gzip  on;
-    include /etc/nginx/conf.d/*.conf;
-}

+ 0 - 20
pioneer/env.sh

@@ -1,20 +0,0 @@
-#!/bin/bash
-
-# This script is used when the docker container starts and does the magic to
-# bring the ENV variables to the generated static UI.
-
-TARGET=./env-config.js
-
-# Recreate config file
-echo -n > $TARGET
-
-declare -a vars=(
-  "WS_URL"
-  "SAMPLE"
-)
-
-echo "window.process_env = {" >> $TARGET
-for VAR in ${vars[@]}; do
-  echo "  $VAR: \"${!VAR}\"," >> $TARGET
-done
-echo "}" >> $TARGET

+ 0 - 24
pioneer/gh-pages-refresh.sh

@@ -1,24 +0,0 @@
-#!/bin/bash
-
-exit 0
-
-# checkout latest
-git fetch
-git checkout gh-pages
-git pull
-git checkout --orphan gh-pages-temp
-
-# cleanup
-rm -rf node_modules
-rm -rf coverage
-rm -rf packages
-rm -rf test
-
-# add
-git add -A
-git commit -am "refresh history"
-
-# danger, force new
-git branch -D gh-pages
-git branch -m gh-pages
-git push -f origin gh-pages

+ 0 - 73
pioneer/i18next-scanner.config.js

@@ -1,73 +0,0 @@
-// Copyright 2017-2020 @polkadot/apps authors & contributors
-// This software may be modified and distributed under the terms
-// of the Apache-2.0 license. See the LICENSE file for details.
-
-const fs = require('fs');
-const path = require('path');
-const typescript = require('typescript');
-
-const findPackages = require('./scripts/findPackages');
-
-function transform (file, enc, done) {
-  const { ext } = path.parse(file.path);
-
-  if (ext === '.tsx') {
-    const content = fs.readFileSync(file.path, enc);
-
-    const { outputText } = typescript.transpileModule(content, {
-      compilerOptions: {
-        target: 'es2018'
-      },
-      fileName: path.basename(file.path)
-    });
-
-    const parserHandler = (key, options) => {
-      options.defaultValue = key;
-
-      if (process.platform !== 'win32') {
-        options.ns = /packages\/(.*?)\/src/g.exec(file.path)[1].replace('page-', 'app-');
-      } else {
-        options.ns = /packages\\(.*?)\\src/g.exec(file.path)[1].replace('page-', 'app-');
-      }
-
-      this.parser.set(key, options);
-    };
-
-    this.parser.parseFuncFromString(outputText, parserHandler);
-  }
-
-  done();
-}
-
-module.exports = {
-  input: [
-    'packages/*/src/**/*.{ts,tsx}',
-    // Use ! to filter out files or directories
-    '!packages/*/src/**/*.spec.{ts,tsx}',
-    '!packages/*/src/i18n/**',
-    '!**/node_modules/**'
-  ],
-  options: {
-    debug: true,
-    defaultLng: 'en',
-    func: {
-      extensions: ['.tsx', '.ts'],
-      list: ['t', 'i18next.t', 'i18n.t']
-    },
-    keySeparator: false, // key separator
-    lngs: ['en'],
-    ns: findPackages().map(({ dir }) => dir.replace('page-', 'app-')),
-    nsSeparator: false, // namespace separator
-    resource: {
-      jsonIndent: 2,
-      lineEnding: '\n',
-      loadPath: 'packages/apps/public/locales/{{lng}}/{{ns}}.json',
-      savePath: 'packages/apps/public/locales/{{lng}}/{{ns}}.json'
-    },
-    trans: {
-      component: 'Trans'
-    }
-  },
-  output: './',
-  transform
-};

File diff suppressed because it is too large
+ 0 - 72
pioneer/img/pioneer_new.svg


+ 0 - 26
pioneer/jest.config.js

@@ -1,26 +0,0 @@
-// Copyright 2017-2020 @polkadot/apps authors & contributors
-// This software may be modified and distributed under the terms
-// of the Apache-2.0 license. See the LICENSE file for details.
-
-const config = require('@polkadot/dev/config/jest');
-
-const findPackages = require('./scripts/findPackages');
-
-const internalModules = findPackages()
-  .filter(({ name }) => !['@polkadot/apps'].includes(name))
-  .reduce((modules, { dir, name }) => {
-    modules[`${name}(.*)$`] = `<rootDir>/packages/${dir}/src/$1`;
-
-    return modules;
-  }, {});
-
-module.exports = Object.assign({}, config, {
-  moduleNameMapper: {
-    ...internalModules,
-    '\\.(css|less)$': 'empty/object',
-    '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': 'empty/object'
-  },
-  transformIgnorePatterns: [
-    '<rootDir>/node_modules'
-  ]
-});

+ 0 - 14
pioneer/lerna.json

@@ -1,14 +0,0 @@
-{
-  "lerna": "2.11.0",
-  "npmClient": "yarn",
-  "useWorkspaces": true,
-  "command": {
-    "publish": {
-      "allowBranch": "master"
-    }
-  },
-  "packages": [
-    "packages/*"
-  ],
-  "version": "0.51.1"
-}

+ 0 - 98
pioneer/package.json

@@ -1,98 +0,0 @@
-{
-  "version": "0.51.1",
-  "license": "Apache-2",
-  "private": true,
-  "engines": {
-    "node": ">=14.0.0",
-    "yarn": "^1.22.0"
-  },
-  "homepage": ".",
-  "name": "pioneer",
-  "scripts": {
-    "analyze": "yarn clean && BUILD_ANALYZE=1 yarn run build:code && yarn source-map-explorer packages/apps/build/main.*.js",
-    "build": "yarn run build:i18n && yarn run build:code",
-    "build:code": "NODE_ENV=production node ./scripts/dev-build-ts.js",
-    "build:i18n": "i18next-scanner --config i18next-scanner.config.js && node ./scripts/i18nSort.js",
-    "build:www": "rm -rf packages/apps/build && mkdir -p packages/apps/build && yarn run build:i18n && cd packages/apps && NODE_ENV=production webpack --config webpack.config.js",
-    "docs": "echo \"skipping docs\"",
-    "clean": "polkadot-dev-clean-build",
-    "clean:i18n": "rm -rf packages/apps/public/locales/en && mkdir -p packages/apps/public/locales/en",
-    "lint": "tsc --noEmit --pretty && eslint --ext .js,.jsx,.ts,.tsx .",
-    "lint:css": "stylelint './packages/**/src/**/*.tsx'",
-    "lint-only-errors": "yarn lint --quiet",
-    "lint-autofix": "yarn lint --fix",
-    "postinstall": "polkadot-dev-yarn-only",
-    "test": "echo \"skipping tests\"",
-    "vanitygen": "node packages/app-accounts/scripts/vanitygen.js",
-    "start": "yarn clean && cd packages/apps && webpack --config webpack.config.js",
-    "build-storybook": "build-storybook -c .storybook",
-    "storybook": "start-storybook -s ./packages/apps/public -p 3001"
-  },
-  "devDependencies": {
-    "//": "Joystream-specific",
-    "@babel/core": "^7.10.5",
-    "@babel/register": "^7.10.5",
-    "@babel/runtime": "^7.10.5",
-    "@pinata/sdk": "^1.1.10",
-    "@polkadot/dev": "^0.55.28",
-    "@polkadot/ts": "^0.4.7",
-    "@storybook/addon-actions": "^5.2.5",
-    "@storybook/addon-console": "^1.2.1",
-    "@storybook/addon-knobs": "^5.2.5",
-    "@storybook/addon-storysource": "^5.2.5",
-    "@storybook/react": "^5.2.5",
-    "@types/bn.js": "^4.11.6",
-    "@types/chart.js": "^2.9.23",
-    "@types/file-saver": "^2.0.1",
-    "@types/i18next": "^13.0.0",
-    "@types/jest": "^26.0.10",
-    "@types/react-beautiful-dnd": "^13.0.0",
-    "@types/react-copy-to-clipboard": "^4.3.0",
-    "@types/react-dom": "^16.9.8",
-    "@types/react-router-dom": "^5.1.5",
-    "@types/react-tooltip": "^4.2.4",
-    "@types/store": "^2.0.2",
-    "@types/styled-components": "^5.1.1",
-    "@types/styled-theming": "^2.2.4",
-    "concurrently": "^5.2.0",
-    "devtron": "^1.4.0",
-    "dnslink-cloudflare": "^2.0.4",
-    "eslint-plugin-header": "^3.0.0",
-    "eslint-plugin-sort-destructure-keys": "^1.3.5",
-    "i18next-scanner": "^2.11.0",
-    "jest": "^26.4.1",
-    "react": "^16.13.1",
-    "react-dom": "^16.13.1",
-    "react-i18next": "^11.7.0",
-    "source-map-explorer": "^2.4.2",
-    "storybook-react-router": "^1.0.8",
-    "stylelint": "^13.6.1",
-    "stylelint-config-recommended": "^3.0.0",
-    "stylelint-config-styled-components": "^0.1.1",
-    "terser-webpack-plugin": "^3.0.7",
-    "ts-jest": "^26.2.0",
-    "tsconfig-paths-webpack-plugin": "^3.2.0",
-    "typescript": "^4.4.3",
-    "webpack": "^4.44.0",
-    "webpack-cli": "^3.3.12",
-    "webpack-merge": "^4.2.2",
-    "webpack-plugin-serve": "^1.0.1"
-  },
-  "dependencies": {
-    "@joystream/types": "link:../types",
-    "@types/lodash": "^4.14.138",
-    "@types/marked": "^0.7.0",
-    "ajv": "^6.10.2",
-    "cpx": "^1.5.0",
-    "css-loader": "^3.2.0",
-    "less": "^3.10.3",
-    "less-loader": "^5.0.0",
-    "lodash": "^4.17.15",
-    "node-sass": "^4.13.0",
-    "sass-loader": "^8.0.0",
-    "style-loader": "^1.0.0"
-  },
-  "volta": {
-    "extends": "../package.json"
-  }
-}

+ 0 - 0
pioneer/packages/apps-config/.skip-npm


+ 0 - 201
pioneer/packages/apps-config/LICENSE

@@ -1,201 +0,0 @@
-                              Apache License
-                        Version 2.0, January 2004
-                    http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-  "License" shall mean the terms and conditions for use, reproduction,
-  and distribution as defined by Sections 1 through 9 of this document.
-
-  "Licensor" shall mean the copyright owner or entity authorized by
-  the copyright owner that is granting the License.
-
-  "Legal Entity" shall mean the union of the acting entity and all
-  other entities that control, are controlled by, or are under common
-  control with that entity. For the purposes of this definition,
-  "control" means (i) the power, direct or indirect, to cause the
-  direction or management of such entity, whether by contract or
-  otherwise, or (ii) ownership of fifty percent (50%) or more of the
-  outstanding shares, or (iii) beneficial ownership of such entity.
-
-  "You" (or "Your") shall mean an individual or Legal Entity
-  exercising permissions granted by this License.
-
-  "Source" form shall mean the preferred form for making modifications,
-  including but not limited to software source code, documentation
-  source, and configuration files.
-
-  "Object" form shall mean any form resulting from mechanical
-  transformation or translation of a Source form, including but
-  not limited to compiled object code, generated documentation,
-  and conversions to other media types.
-
-  "Work" shall mean the work of authorship, whether in Source or
-  Object form, made available under the License, as indicated by a
-  copyright notice that is included in or attached to the work
-  (an example is provided in the Appendix below).
-
-  "Derivative Works" shall mean any work, whether in Source or Object
-  form, that is based on (or derived from) the Work and for which the
-  editorial revisions, annotations, elaborations, or other modifications
-  represent, as a whole, an original work of authorship. For the purposes
-  of this License, Derivative Works shall not include works that remain
-  separable from, or merely link (or bind by name) to the interfaces of,
-  the Work and Derivative Works thereof.
-
-  "Contribution" shall mean any work of authorship, including
-  the original version of the Work and any modifications or additions
-  to that Work or Derivative Works thereof, that is intentionally
-  submitted to Licensor for inclusion in the Work by the copyright owner
-  or by an individual or Legal Entity authorized to submit on behalf of
-  the copyright owner. For the purposes of this definition, "submitted"
-  means any form of electronic, verbal, or written communication sent
-  to the Licensor or its representatives, including but not limited to
-  communication on electronic mailing lists, source code control systems,
-  and issue tracking systems that are managed by, or on behalf of, the
-  Licensor for the purpose of discussing and improving the Work, but
-  excluding communication that is conspicuously marked or otherwise
-  designated in writing by the copyright owner as "Not a Contribution."
-
-  "Contributor" shall mean Licensor and any individual or Legal Entity
-  on behalf of whom a Contribution has been received by Licensor and
-  subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
-  this License, each Contributor hereby grants to You a perpetual,
-  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-  copyright license to reproduce, prepare Derivative Works of,
-  publicly display, publicly perform, sublicense, and distribute the
-  Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
-  this License, each Contributor hereby grants to You a perpetual,
-  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-  (except as stated in this section) patent license to make, have made,
-  use, offer to sell, sell, import, and otherwise transfer the Work,
-  where such license applies only to those patent claims licensable
-  by such Contributor that are necessarily infringed by their
-  Contribution(s) alone or by combination of their Contribution(s)
-  with the Work to which such Contribution(s) was submitted. If You
-  institute patent litigation against any entity (including a
-  cross-claim or counterclaim in a lawsuit) alleging that the Work
-  or a Contribution incorporated within the Work constitutes direct
-  or contributory patent infringement, then any patent licenses
-  granted to You under this License for that Work shall terminate
-  as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
-  Work or Derivative Works thereof in any medium, with or without
-  modifications, and in Source or Object form, provided that You
-  meet the following conditions:
-
-  (a) You must give any other recipients of the Work or
-      Derivative Works a copy of this License; and
-
-  (b) You must cause any modified files to carry prominent notices
-      stating that You changed the files; and
-
-  (c) You must retain, in the Source form of any Derivative Works
-      that You distribute, all copyright, patent, trademark, and
-      attribution notices from the Source form of the Work,
-      excluding those notices that do not pertain to any part of
-      the Derivative Works; and
-
-  (d) If the Work includes a "NOTICE" text file as part of its
-      distribution, then any Derivative Works that You distribute must
-      include a readable copy of the attribution notices contained
-      within such NOTICE file, excluding those notices that do not
-      pertain to any part of the Derivative Works, in at least one
-      of the following places: within a NOTICE text file distributed
-      as part of the Derivative Works; within the Source form or
-      documentation, if provided along with the Derivative Works; or,
-      within a display generated by the Derivative Works, if and
-      wherever such third-party notices normally appear. The contents
-      of the NOTICE file are for informational purposes only and
-      do not modify the License. You may add Your own attribution
-      notices within Derivative Works that You distribute, alongside
-      or as an addendum to the NOTICE text from the Work, provided
-      that such additional attribution notices cannot be construed
-      as modifying the License.
-
-  You may add Your own copyright statement to Your modifications and
-  may provide additional or different license terms and conditions
-  for use, reproduction, or distribution of Your modifications, or
-  for any such Derivative Works as a whole, provided Your use,
-  reproduction, and distribution of the Work otherwise complies with
-  the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
-  any Contribution intentionally submitted for inclusion in the Work
-  by You to the Licensor shall be under the terms and conditions of
-  this License, without any additional terms or conditions.
-  Notwithstanding the above, nothing herein shall supersede or modify
-  the terms of any separate license agreement you may have executed
-  with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
-  names, trademarks, service marks, or product names of the Licensor,
-  except as required for reasonable and customary use in describing the
-  origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
-  agreed to in writing, Licensor provides the Work (and each
-  Contributor provides its Contributions) on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-  implied, including, without limitation, any warranties or conditions
-  of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-  PARTICULAR PURPOSE. You are solely responsible for determining the
-  appropriateness of using or redistributing the Work and assume any
-  risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
-  whether in tort (including negligence), contract, or otherwise,
-  unless required by applicable law (such as deliberate and grossly
-  negligent acts) or agreed to in writing, shall any Contributor be
-  liable to You for damages, including any direct, indirect, special,
-  incidental, or consequential damages of any character arising as a
-  result of this License or out of the use or inability to use the
-  Work (including but not limited to damages for loss of goodwill,
-  work stoppage, computer failure or malfunction, or any and all
-  other commercial damages or losses), even if such Contributor
-  has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
-  the Work or Derivative Works thereof, You may choose to offer,
-  and charge a fee for, acceptance of support, warranty, indemnity,
-  or other liability obligations and/or rights consistent with this
-  License. However, in accepting such obligations, You may act only
-  on Your own behalf and on Your sole responsibility, not on behalf
-  of any other Contributor, and only if You agree to indemnify,
-  defend, and hold each Contributor harmless for any liability
-  incurred by, or claims asserted against, such Contributor by reason
-  of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
-  To apply the Apache License to your work, attach the following
-  boilerplate notice, with the fields enclosed by brackets "[]"
-  replaced with your own identifying information. (Don't include
-  the brackets!)  The text should be enclosed in the appropriate
-  comment syntax for the file format. We also recommend that a
-  file or class name and description of purpose be included on the
-  same "printed page" as the copyright notice for easier
-  identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.

+ 0 - 43
pioneer/packages/apps-config/README.md

@@ -1,43 +0,0 @@
-# @polkadot/apps-config
-
-General config for various services, including settings, external links & types. This is a central source of all the configuration settings that can be tweaked. This also means that it can be customized (via PR) to support any additional chains. The internals are split into a number of settings -
-
-- [api](./src/api) - Here you can add any chain or node-type specific types configuration. When added, it means that when the UI connects to either a runtime with a spec name, or a chain with a specific name, the types will be automatically added to the API as used in the app.
-- [links](./src/links) - These are all links to external providers such as explorers. This information is used anywhere where there is an external link to determine the providers for these links.
-- [settings](./src/settings) - These are used in dropdowns, specifically under the settings page.
-- [ui](./src/ui) - Logos & color settings for chain and node spec specific overrides. This means that when the runtime/chain is detected, the specific logo would be used.
-
-Customization for each of these are discussed next.
-
-## Api
-
-The API config can be done in one of two ways -
-
-- [chain](./src/api/chain) - Here we are mapping to a specific chain name. Generally the next type would be preferred, however if you are supporting multiple chains with individual configs, you would probably want to add the chain-specific information in here.
-- [spec](./src/api/spec) - Here we are mapping from the runtime spec name of the chain to specific types. This means that when connected to a specific spec, these types will be injected.
-
-The actual type definitions you should be familiar with, it is exactly the same as you would upload via the settings page in JSON, or as detailed in the [API types pages](https://polkadot.js.org/api/start/types.extend.html#extending-types).
-
-## Links
-
-We are not going to spend too much time here, since it is generally applicable to explorers and like services. However, should you run one of these services, you can take a look at the existing configs and customize for your setup.
-
-## Settings
-
-There are 2 general areas of interest here -
-
-- [endpoints](./src/settings) - This is where we can add additional endpoints to appear in the dropdowns. We would like to keep this to mostly live networks, although based on demand can probably extend to a testing-only section as well.
-- [ss58](./src/settings) - Should you wish to add your ss58Format to the settings dropdown, this is where the configuration take place
-
-## UI
-
-These are self-explanatory and config here actually does get used in other parts as well. Basically the information here is broken down into a couple of categories -
-
-- [general](./src/ui/general)
-  - color configuration based on chain
-- [identityIcon](./src/ui/identityIcons)
-  - specific identityIcon to use based on node name
-- [logos](./src/ui/logos)
-  - chains - Specific logos when connecting to a specific chain
-  - nodes - Logos that are used when connecting to a specific runtime spec type (catch-all)
-  - named - These logos are used as overrides when we pass an explicit logo name 

+ 0 - 18
pioneer/packages/apps-config/package.json

@@ -1,18 +0,0 @@
-{
-  "name": "@polkadot/apps-config",
-  "private": true,
-  "version": "0.51.1",
-  "main": "index.js",
-  "repository": "https://github.com/polkadot-js/apps.git",
-  "author": "Jaco Greeff <jacogr@gmail.com>",
-  "maintainers": [
-    "Jaco Greeff <jacogr@gmail.com>"
-  ],
-  "contributors": [],
-  "license": "Apache-2.0",
-  "dependencies": {
-    "@acala-network/type-definitions": "0.3.1",
-    "@babel/runtime": "^7.10.5",
-    "edgeware-node-types": "^2.3.4"
-  }
-}

+ 0 - 30
pioneer/packages/apps-config/src/api/chain/arcadia.ts

@@ -1,30 +0,0 @@
-// Copyright 2017-2020 @polkadot/apps-config authors & contributors
-// This software may be modified and distributed under the terms
-// of the Apache-2.0 license. See the LICENSE file for details.
-
-export default {
-  Amendment: 'Call',
-  Application: {
-    candidate: 'AccountId',
-    candidate_deposit: 'Balance',
-    challenged_block: 'BlockNumber',
-    challenger: 'Option<AccountId>',
-    challenger_deposit: 'Option<Balance>',
-    created_block: 'BlockNumber',
-    metadata: 'Vec<u8>',
-    voters_against: 'Vec<(AccountId, Balance)>',
-    voters_for: 'Vec<(AccountId, Balance)>',
-    votes_against: 'Option<Balance>',
-    votes_for: 'Option<Balance>'
-  },
-  CertificateId: 'AccountId',
-  RootCertificate: {
-    child_revocations: 'Vec<CertificateId>',
-    created: 'BlockNumber',
-    key: 'CertificateId',
-    owner: 'AccountId',
-    renewed: 'BlockNumber',
-    revoked: 'bool',
-    validity: 'BlockNumber'
-  }
-};

+ 0 - 27
pioneer/packages/apps-config/src/api/chain/berlin.ts

@@ -1,27 +0,0 @@
-// Copyright 2017-2020 @polkadot/apps-config authors & contributors
-// This software may be modified and distributed under the terms
-// of the Apache-2.0 license. See the LICENSE file for details.
-
-// structs need to be in order
-/* eslint-disable sort-keys */
-
-import * as edgewareDefinitions from 'edgeware-node-types/interfaces/definitions';
-
-const edgTypes = Object
-  .values(edgewareDefinitions)
-  .reduce((res, { types }) => ({ ...res, ...types }), {});
-
-export default {
-  ...edgTypes,
-  // aliases that don't do well as part of interfaces
-  'voting::VoteType': 'VoteType',
-  'voting::TallyType': 'TallyType',
-  'voting::Tally': 'VotingTally',
-  // chain-specific overrides
-  Address: 'GenericAddress',
-  Keys: 'SessionKeys4',
-  StakingLedger: 'StakingLedgerTo223',
-  Votes: 'VotesTo230',
-  ReferendumInfo: 'ReferendumInfoTo239',
-  Weight: 'u32'
-};

+ 0 - 11
pioneer/packages/apps-config/src/api/chain/index.ts

@@ -1,11 +0,0 @@
-// Copyright 2017-2020 @polkadot/apps-config authors & contributors
-// This software may be modified and distributed under the terms
-// of the Apache-2.0 license. See the LICENSE file for details.
-
-import Arcadia from './arcadia';
-import Berlin from './berlin';
-
-export default {
-  'Arcadia Nodle Network': Arcadia,
-  Berlin
-};

+ 0 - 18
pioneer/packages/apps-config/src/api/index.ts

@@ -1,18 +0,0 @@
-// Copyright 2017-2020 @polkadot/apps-config authors & contributors
-// This software may be modified and distributed under the terms
-// of the Apache-2.0 license. See the LICENSE file for details.
-
-import typesChain from './chain';
-import typesSpec from './spec';
-
-export function getChainTypes (specName: string, chainName: string): Record<string, string | Record<string, unknown>> {
-  return {
-    ...(typesSpec[specName as 'edgeware'] || {}),
-    ...(typesChain[chainName as 'Berlin'] || {})
-  };
-}
-
-export {
-  typesChain,
-  typesSpec
-};

+ 0 - 10
pioneer/packages/apps-config/src/api/spec/acala.ts

@@ -1,10 +0,0 @@
-// Copyright 2017-2020 @polkadot/apps-config authors & contributors
-// This software may be modified and distributed under the terms
-// of the Apache-2.0 license. See the LICENSE file for details.
-
-import * as acalaDefinitions from '@acala-network/type-definitions';
-import { typesFromDefs } from '../util';
-
-const acaTypes = typesFromDefs(acalaDefinitions);
-
-export default acaTypes;

+ 0 - 28
pioneer/packages/apps-config/src/api/spec/centrifuge-chain.ts

@@ -1,28 +0,0 @@
-// Copyright 2017-2020 @polkadot/apps-config authors & contributors
-// This software may be modified and distributed under the terms
-// of the Apache-2.0 license. See the LICENSE file for details.
-
-// structs need to be in order
-/* eslint-disable sort-keys */
-
-export default {
-  // chain-specific
-  AnchorData: {
-    id: 'H256',
-    docRoot: 'H256',
-    anchoredBlock: 'u64'
-  },
-  Fee: {
-    key: 'Hash',
-    price: 'Balance'
-  },
-  PreCommitData: {
-    signingRoot: 'H256',
-    identity: 'H256',
-    expirationBlock: 'u64'
-  },
-  Proof: {
-    leafHash: 'H256',
-    sortedHashes: 'H256'
-  }
-};

+ 0 - 27
pioneer/packages/apps-config/src/api/spec/edgeware.ts

@@ -1,27 +0,0 @@
-// Copyright 2017-2020 @polkadot/apps-config authors & contributors
-// This software may be modified and distributed under the terms
-// of the Apache-2.0 license. See the LICENSE file for details.
-
-// structs need to be in order
-/* eslint-disable sort-keys */
-
-import * as edgewareDefinitions from 'edgeware-node-types/interfaces/definitions';
-
-const edgTypes = Object
-  .values(edgewareDefinitions)
-  .reduce((res, { types }) => ({ ...res, ...types }), {});
-
-export default {
-  ...edgTypes,
-  // aliases that don't do well as part of interfaces
-  'voting::VoteType': 'VoteType',
-  'voting::TallyType': 'TallyType',
-  'voting::Tally': 'VotingTally',
-  // chain-specific overrides
-  Address: 'GenericAddress',
-  Keys: 'SessionKeys4',
-  StakingLedger: 'StakingLedgerTo223',
-  Votes: 'VotesTo230',
-  ReferendumInfo: 'ReferendumInfoTo239',
-  Weight: 'u32'
-};

+ 0 - 72
pioneer/packages/apps-config/src/api/spec/encointer-node-notee.ts

@@ -1,72 +0,0 @@
-// Copyright 2017-2020 @polkadot/apps-config authors & contributors
-// This software may be modified and distributed under the terms
-// of the Apache-2.0 license. See the LICENSE file for details.
-
-// structs need to be in order
-/* eslint-disable sort-keys */
-/* eslint-disable camelcase */
-
-export default {
-  Address: 'AccountId',
-  LookupSource: 'AccountId',
-  CeremonyPhaseType: {
-    _enum: [
-      'Registering',
-      'Assigning',
-      'Attesting'
-    ]
-  },
-  CeremonyIndexType: 'u32',
-  ParticipantIndexType: 'u64',
-  MeetupIndexType: 'u64',
-  AttestationIndexType: 'u64',
-  CurrencyIdentifier: 'Hash',
-  BalanceType: 'i128',
-  BalanceEntry: {
-    principal: 'i128',
-    last_update: 'BlockNumber'
-  },
-  CurrencyCeremony: {
-    cid: 'CurrencyIdentifier',
-    cindex: 'CeremonyIndexType'
-  },
-  Location: {
-    lat: 'i64',
-    lon: 'i64'
-  },
-  Reputation: {
-    _enum: [
-      'Unverified',
-      'UnverifiedReputable',
-      'VerifiedUnlinked',
-      'VerifiedLinked'
-    ]
-  },
-  CurrencyPropertiesType: {
-    name_utf8: 'Text',
-    demurrage_per_block: 'i128'
-  },
-  ClaimOfAttendance: {
-    claimant_public: 'AccountId',
-    ceremony_index: 'CeremonyIndexType',
-    currency_identifier: 'CurrencyIdentifier',
-    meetup_index: 'MeetupIndexType',
-    location: 'Location',
-    timestamp: 'Moment',
-    number_of_participants_confirmed: 'u32'
-  },
-  Attestation: {
-    claim: 'ClaimOfAttendance',
-    signature: 'Signature',
-    public: 'AccountId'
-  },
-  ProofOfAttendance: {
-    prover_public: 'AccountId',
-    ceremony_index: 'CeremonyIndexType',
-    currency_identifier: 'CurrencyIdentifier',
-    attendee_public: 'AccountId',
-    attendee_signature: 'Signature'
-  },
-  // weight changed to u64 since 2.0.0-rc1 (commit 2051ecbf79e April 16th 2020
-  Weight: 'u32'
-};

+ 0 - 46
pioneer/packages/apps-config/src/api/spec/encointer-node-teeproxy.ts

@@ -1,46 +0,0 @@
-// Copyright 2017-2020 @polkadot/apps-config authors & contributors
-// This software may be modified and distributed under the terms
-// of the Apache-2.0 license. See the LICENSE file for details.
-
-// structs need to be in order
-/* eslint-disable sort-keys */
-/* eslint-disable camelcase */
-
-export default {
-  Address: 'AccountId',
-  LookupSource: 'AccountId',
-  CeremonyPhaseType: {
-    _enum: [
-      'Registering',
-      'Assigning',
-      'Attesting'
-    ]
-  },
-  CeremonyIndexType: 'u32',
-  CurrencyIdentifier: 'Hash',
-  CurrencyCeremony: {
-    cid: 'CurrencyIdentifier',
-    cindex: 'CeremonyIndexType'
-  },
-  Location: {
-    lat: 'i64',
-    lon: 'i64'
-  },
-  CurrencyPropertiesType: {
-    name_utf8: 'Text',
-    demurrage_per_block: 'i128'
-  },
-  ShardIdentifier: 'Hash',
-  Request: {
-    shard: 'ShardIdentifier',
-    cyphertext: 'Vec<u8>'
-  },
-  Enclave: {
-    pubkey: 'AccountId',
-    mrenclave: 'Hash',
-    timestamp: 'u64',
-    url: 'Text'
-  },
-  // weight changed to u64 since 2.0.0-rc1 (commit 2051ecbf79e April 16th 2020
-  Weight: 'u32'
-};

+ 0 - 27
pioneer/packages/apps-config/src/api/spec/index.ts

@@ -1,27 +0,0 @@
-// Copyright 2017-2020 @polkadot/apps-config authors & contributors
-// This software may be modified and distributed under the terms
-// of the Apache-2.0 license. See the LICENSE file for details.
-
-import acala from './acala';
-import centrifugeChain from './centrifuge-chain';
-import edgeware from './edgeware';
-import encointerNodeNotee from './encointer-node-notee';
-import encointerNodeTeeproxy from './encointer-node-teeproxy';
-import kulupu from './kulupu';
-import nodeTemplate from './node-template';
-import stablePoc from './stable-poc';
-import joystreamNode from './joystream-node';
-
-export default {
-  acala,
-  'centrifuge-chain': centrifugeChain,
-  edgeware,
-  'encointer-node': encointerNodeNotee,
-  'encointer-node-notee': encointerNodeNotee,
-  'encointer-node-teeproxy': encointerNodeTeeproxy,
-  kulupu,
-  'node-template': nodeTemplate,
-  'stable-poc': stablePoc,
-  stable_poc: stablePoc,
-  'joystream-node': joystreamNode
-};

+ 0 - 3
pioneer/packages/apps-config/src/api/spec/joystream-node.ts

@@ -1,3 +0,0 @@
-import { types } from '@joystream/types';
-
-export default types;

+ 0 - 19
pioneer/packages/apps-config/src/api/spec/kulupu.ts

@@ -1,19 +0,0 @@
-// Copyright 2017-2020 @polkadot/apps-config authors & contributors
-// This software may be modified and distributed under the terms
-// of the Apache-2.0 license. See the LICENSE file for details.
-
-// structs need to be in order
-/* eslint-disable sort-keys */
-
-export default {
-  Difficulty: 'U256',
-  DifficultyAndTimestamp: {
-    difficulty: 'Difficulty',
-    timestamp: 'Moment'
-  },
-  Era: {
-    genesisBlockHash: 'H256',
-    finalBlockHash: 'H256',
-    finalStateRoot: 'H256'
-  }
-};

+ 0 - 11
pioneer/packages/apps-config/src/api/spec/node-template.ts

@@ -1,11 +0,0 @@
-// Copyright 2017-2020 @polkadot/apps-config authors & contributors
-// This software may be modified and distributed under the terms
-// of the Apache-2.0 license. See the LICENSE file for details.
-
-// structs need to be in order
-/* eslint-disable sort-keys */
-
-export default {
-  Address: 'AccountId',
-  LookupSource: 'AccountId'
-};

+ 0 - 22
pioneer/packages/apps-config/src/api/spec/stable-poc.ts

@@ -1,22 +0,0 @@
-// Copyright 2017-2020 @polkadot/apps-config authors & contributors
-// This software may be modified and distributed under the terms
-// of the Apache-2.0 license. See the LICENSE file for details.
-
-// structs need to be in order
-/* eslint-disable sort-keys */
-
-export default {
-  AccountData: {
-    free: 'Balance',
-    reserved: 'Balance',
-    miscFrozen: 'Balance',
-    feeFrozen: 'Balance',
-    txCount: 'u32',
-    sessionIndex: 'u32'
-  },
-  TemplateAccountData: {
-    txCount: 'u32',
-    sessionIndex: 'u32'
-  },
-  TxCount: 'u32'
-};

+ 0 - 12
pioneer/packages/apps-config/src/api/util.ts

@@ -1,12 +0,0 @@
-// Copyright 2017-2020 @polkadot/apps-config authors & contributors
-// This software may be modified and distributed under the terms
-// of the Apache-2.0 license. See the LICENSE file for details.
-
-export function typesFromDefs (definitions: Record<string, { types: Record<string, any> }>): Record<string, any> {
-  return Object
-    .values(definitions)
-    .reduce((res: Record<string, any>, { types }): Record<string, any> => ({
-      ...res,
-      ...types
-    }), {});
-}

+ 0 - 31
pioneer/packages/apps-config/src/extensions/index.ts

@@ -1,31 +0,0 @@
-// Copyright 2017-2020 @polkadot/apps-config authors & contributors
-// This software may be modified and distributed under the terms
-// of the Apache-2.0 license. See the LICENSE file for details.
-
-// it would have been really good to import this from detect, however... not exported
-type Browser = 'chrome' | 'firefox';
-
-interface Extension {
-  desc: string;
-  link: string;
-  name: string;
-}
-
-const availableExtensions: Record<Browser, Extension[]> = [
-  {
-    browsers: {
-      chrome: 'https://chrome.google.com/webstore/detail/polkadot%7Bjs%7D-extension/mopnmbcafieddcagagdcbnhejhlodfdd',
-      firefox: 'https://addons.mozilla.org/en-US/firefox/addon/polkadot-js-extension/'
-    },
-    desc: 'Basic account injection and signer',
-    name: 'polkadot-js extension'
-  }
-].reduce((available: Record<Browser, Extension[]>, { browsers, desc, name }): Record<Browser, Extension[]> => {
-  Object.entries(browsers).forEach(([browser, link]): void => {
-    available[browser as 'chrome'].push({ desc, link, name });
-  });
-
-  return available;
-}, { chrome: [], firefox: [] });
-
-export { availableExtensions };

+ 0 - 25
pioneer/packages/apps-config/src/links/commonwealth.ts

@@ -1,25 +0,0 @@
-// Copyright 2017-2020 @polkadot/apps-config authors & contributors
-// This software may be modified and distributed under the terms
-// of the Apache-2.0 license. See the LICENSE file for details.
-
-import BN from 'bn.js';
-
-const HASH_PATHS = ['proposal/councilmotion'];
-
-export default {
-  chains: {
-    Edgeware: 'edgeware',
-    Kusama: 'kusama',
-    'Kusama CC3': 'kusama'
-  },
-  create: (chain: string, path: string, data: BN | number | string, hash?: string): string =>
-    `https://commonwealth.im/${chain}/${path}/${HASH_PATHS.includes(path) ? (hash || '') : data.toString()}`,
-  isActive: true,
-  paths: {
-    council: 'proposal/councilmotion',
-    proposal: 'proposal/democracyproposal',
-    referendum: 'proposal/referendum',
-    treasury: 'proposal/treasuryproposal'
-  },
-  url: 'https://commonwealth.im/'
-};

+ 0 - 19
pioneer/packages/apps-config/src/links/index.ts

@@ -1,19 +0,0 @@
-// Copyright 2017-2020 @polkadot/apps-config authors & contributors
-// This software may be modified and distributed under the terms
-// of the Apache-2.0 license. See the LICENSE file for details.
-
-import { ExternalDef } from './types';
-
-import Commonwealth from './commonwealth';
-import Polkascan from './polkascan';
-import Polkassembly from './polkassembly';
-import Subscan from './subscan';
-
-const externals: Record<string, ExternalDef> = {
-  Commonwealth,
-  Polkascan,
-  Polkassembly,
-  Subscan
-};
-
-export default externals;

+ 0 - 30
pioneer/packages/apps-config/src/links/polkascan.ts

@@ -1,30 +0,0 @@
-// Copyright 2017-2020 @polkadot/apps-config authors & contributors
-// This software may be modified and distributed under the terms
-// of the Apache-2.0 license. See the LICENSE file for details.
-
-import BN from 'bn.js';
-
-export default {
-  chains: {
-    // 'Centrifuge Mainnet': 'centrifuge',
-    // Edgeware: 'edgeware',
-    // Kulupu: 'kulupu',
-    Kusama: 'kusama',
-    Polkadot: 'polkadot',
-    'Polkadot CC1': 'polkadot-cc1'
-  },
-  create: (chain: string, path: string, data: BN | number | string): string =>
-    `https://polkascan.io/${chain}/${path}/${data.toString()}`,
-  isActive: true,
-  paths: {
-    address: 'account',
-    block: 'block',
-    council: 'council/motion',
-    extrinsic: 'transaction',
-    proposal: 'democracy/proposal',
-    referendum: 'democracy/referendum',
-    techcomm: 'techcomm/proposal',
-    treasury: 'treasury/proposal'
-  },
-  url: 'https://polkascan.io/'
-};

+ 0 - 22
pioneer/packages/apps-config/src/links/polkassembly.ts

@@ -1,22 +0,0 @@
-// Copyright 2017-2020 @polkadot/apps-config authors & contributors
-// This software may be modified and distributed under the terms
-// of the Apache-2.0 license. See the LICENSE file for details.
-
-import BN from 'bn.js';
-
-export default {
-  chains: {
-    Kusama: 'kusama',
-    'Kusama CC3': 'kusama'
-  },
-  create: (chain: string, path: string, data: BN | number | string): string =>
-    `https://${chain}.polkassembly.io/${path}/${data.toString()}`,
-  isActive: true,
-  paths: {
-    council: 'motion',
-    proposal: 'proposal',
-    referendum: 'referendum',
-    treasury: 'treasury'
-  },
-  url: 'https://polkassembly.io/'
-};

Some files were not shown because too many files changed in this diff