Jelajahi Sumber

Merge branch 'giza' into distributor-node

Leszek Wiesner 3 tahun lalu
induk
melakukan
76e433e9f0
86 mengubah file dengan 547 tambahan dan 523 penghapusan
  1. 1 0
      .env
  2. 1 1
      build-npm-packages.sh
  3. 4 4
      colossus.Dockerfile
  4. 1 0
      docker-compose.yml
  5. 1 3
      package.json
  6. 0 3
      query-node/build.sh
  7. 2 3
      query-node/codegen/package.json
  8. 242 240
      query-node/codegen/yarn.lock
  9. 3 5
      query-node/mappings/package.json
  10. 0 20
      query-node/mappings/scripts/postCodegen.ts
  11. 0 23
      query-node/mappings/scripts/postHydraCLIInstall.ts
  12. 0 45
      query-node/mappings/scripts/postInstall.ts
  13. 0 19
      query-node/mappings/scripts/utils.ts
  14. 1 1
      query-node/package.json
  15. 0 0
      storage-node/.eslintignore
  16. 0 0
      storage-node/.eslintrc.js
  17. 0 0
      storage-node/.gitignore
  18. 0 0
      storage-node/.prettierignore
  19. 55 36
      storage-node/README.md
  20. 0 0
      storage-node/bin/run
  21. 0 0
      storage-node/bin/run.cmd
  22. 4 3
      storage-node/package.json
  23. 0 0
      storage-node/scripts/create-auth-request-signature.ts
  24. 0 0
      storage-node/scripts/init-dev-bucket.sh
  25. 0 0
      storage-node/scripts/operatorMetadata.json
  26. 0 0
      storage-node/scripts/run-all-commands.sh
  27. 0 0
      storage-node/src/api-spec/openapi.yaml
  28. 0 0
      storage-node/src/command-base/ApiCommandBase.ts
  29. 0 0
      storage-node/src/command-base/ExitCodes.ts
  30. 0 0
      storage-node/src/commands/dev/init.ts
  31. 3 4
      storage-node/src/commands/dev/multihash.ts
  32. 0 0
      storage-node/src/commands/dev/sync.ts
  33. 0 0
      storage-node/src/commands/dev/upload.ts
  34. 0 0
      storage-node/src/commands/dev/verify-bag-id.ts
  35. 0 0
      storage-node/src/commands/leader/cancel-invite.ts
  36. 4 4
      storage-node/src/commands/leader/create-bucket.ts
  37. 0 0
      storage-node/src/commands/leader/delete-bucket.ts
  38. 0 0
      storage-node/src/commands/leader/invite-operator.ts
  39. 0 0
      storage-node/src/commands/leader/remove-operator.ts
  40. 0 0
      storage-node/src/commands/leader/set-bucket-limits.ts
  41. 0 0
      storage-node/src/commands/leader/set-global-uploading-status.ts
  42. 0 0
      storage-node/src/commands/leader/update-bag-limit.ts
  43. 0 0
      storage-node/src/commands/leader/update-bag.ts
  44. 0 0
      storage-node/src/commands/leader/update-blacklist.ts
  45. 0 0
      storage-node/src/commands/leader/update-bucket-status.ts
  46. 0 0
      storage-node/src/commands/leader/update-data-fee.ts
  47. 0 0
      storage-node/src/commands/leader/update-dynamic-bag-policy.ts
  48. 0 0
      storage-node/src/commands/leader/update-voucher-limits.ts
  49. 0 0
      storage-node/src/commands/operator/accept-invitation.ts
  50. 0 0
      storage-node/src/commands/operator/set-metadata.ts
  51. 34 5
      storage-node/src/commands/server.ts
  52. 0 0
      storage-node/src/index.ts
  53. 0 0
      storage-node/src/services/caching/localDataObjects.ts
  54. 0 0
      storage-node/src/services/caching/newUploads.ts
  55. 0 0
      storage-node/src/services/caching/tokenNonceKeeper.ts
  56. 0 0
      storage-node/src/services/helpers/auth.ts
  57. 0 0
      storage-node/src/services/helpers/bagTypes.ts
  58. 0 0
      storage-node/src/services/helpers/fileInfo.ts
  59. 0 0
      storage-node/src/services/helpers/hashing.ts
  60. 9 0
      storage-node/src/services/helpers/stdout.ts
  61. 106 52
      storage-node/src/services/logger.ts
  62. 0 0
      storage-node/src/services/metadata/generateTypes.ts
  63. 0 0
      storage-node/src/services/metadata/generated/OperatorMetadataJson.d.ts
  64. 0 0
      storage-node/src/services/metadata/schemas/index.ts
  65. 0 0
      storage-node/src/services/metadata/schemas/operatorMetadataSchema.ts
  66. 0 0
      storage-node/src/services/metadata/validationService.ts
  67. 0 0
      storage-node/src/services/queryNode/api.ts
  68. 0 0
      storage-node/src/services/queryNode/codegen.yml
  69. 0 0
      storage-node/src/services/queryNode/generated/queries.ts
  70. 0 0
      storage-node/src/services/queryNode/generated/schema.ts
  71. 0 0
      storage-node/src/services/queryNode/queries/queries.graphql
  72. 0 0
      storage-node/src/services/runtime/accounts.ts
  73. 0 0
      storage-node/src/services/runtime/api.ts
  74. 0 0
      storage-node/src/services/runtime/extrinsics.ts
  75. 0 0
      storage-node/src/services/runtime/hireLead.ts
  76. 0 0
      storage-node/src/services/sync/remoteStorageData.ts
  77. 0 0
      storage-node/src/services/sync/storageObligations.ts
  78. 0 0
      storage-node/src/services/sync/synchronizer.ts
  79. 0 0
      storage-node/src/services/sync/tasks.ts
  80. 0 0
      storage-node/src/services/sync/workingProcess.ts
  81. 11 3
      storage-node/src/services/webApi/app.ts
  82. 0 10
      storage-node/src/services/webApi/controllers/common.ts
  83. 0 0
      storage-node/src/services/webApi/controllers/filesApi.ts
  84. 0 0
      storage-node/src/services/webApi/controllers/stateApi.ts
  85. 0 0
      storage-node/tsconfig.json
  86. 65 39
      yarn.lock

+ 1 - 0
.env

@@ -28,6 +28,7 @@ BLOCK_HEIGHT=0
 
 GRAPHQL_SERVER_PORT=4002
 GRAPHQL_SERVER_HOST=graphql-server
+GRAPHQL_PLAYGROUND_SUBSCRIPTION_ENDPOINT=ws://localhost:8081/graphql
 
 WARTHOG_APP_PORT=4002
 WARTHOG_APP_HOST=hydra-indexer-gateway

+ 1 - 1
build-npm-packages.sh

@@ -8,5 +8,5 @@ yarn workspace @joystream/metadata-protobuf build
 yarn workspace query-node-root build
 yarn workspace @joystream/cli build
 yarn workspace storage-node build
-yarn workspace storage-node-v2 build
+yarn workspace storage-node build
 yarn workspace pioneer build

+ 4 - 4
colossus.Dockerfile

@@ -7,10 +7,10 @@ RUN yarn --frozen-lockfile
 
 RUN yarn workspace @joystream/types build
 RUN yarn workspace @joystream/metadata-protobuf build
-RUN yarn workspace storage-node-v2 build
+RUN yarn workspace storage-node build
 
 # Use these volumes to persist uploading data and to pass the keyfile.
-VOLUME ["/data", "/keystore"]
+VOLUME ["/data", "/keystore", "/logs"]
 
 # Required variables
 ENV WS_PROVIDER_ENDPOINT_URI=ws://not-set
@@ -31,5 +31,5 @@ ENV ACCOUNT_URI=
 # Colossus node port
 EXPOSE ${COLOSSUS_PORT}
 
-WORKDIR /joystream/storage-node-v2
-ENTRYPOINT yarn storage-node server --queryNodeEndpoint ${QUERY_NODE_ENDPOINT} --port ${COLOSSUS_PORT} --uploads /data --worker ${WORKER_ID} --apiUrl ${WS_PROVIDER_ENDPOINT_URI} --sync --syncInterval=${SYNC_INTERVAL} --keyFile=${ACCOUNT_KEYFILE} --elasticSearchEndpoint=${ELASTIC_SEARCH_ENDPOINT}
+WORKDIR /joystream/storage-node
+ENTRYPOINT yarn storage-node server --queryNodeEndpoint ${QUERY_NODE_ENDPOINT} --port ${COLOSSUS_PORT} --uploads /data --worker ${WORKER_ID} --apiUrl ${WS_PROVIDER_ENDPOINT_URI} --sync --syncInterval=${SYNC_INTERVAL} --keyFile=${ACCOUNT_KEYFILE} --elasticSearchEndpoint=${ELASTIC_SEARCH_ENDPOINT} --logFileName=/logs/log.txt

+ 1 - 0
docker-compose.yml

@@ -29,6 +29,7 @@ services:
     volumes:
       - /data
       - /keystore
+      - /logs
     ports:
       - '127.0.0.1:3333:3333'
     env_file:

+ 1 - 3
package.json

@@ -18,10 +18,8 @@
     "tests/network-tests",
     "cli",
     "types",
-    "storage-node-v2",
     "storage-node",
     "distributor-node",
-    "storage-node/packages/*",
     "devops/eslint-config",
     "devops/prettier-config",
     "pioneer",
@@ -53,7 +51,7 @@
     "typeorm": "0.2.34",
     "pg": "^8.4.0",
     "chalk": "^4.0.0",
-    "@joystream/warthog": "2.39.0"
+    "@joystream/warthog": "2.41.2"
   },
   "devDependencies": {
     "eslint": "^7.25.0",

+ 0 - 3
query-node/build.sh

@@ -16,9 +16,6 @@ yarn clean
 yarn codegen:noinstall
 yarn typegen # if this fails try to run this command outside of yarn workspaces
 
-# Post-codegen - fixes in autogenerated files
-yarn ts-node --project ./mappings/tsconfig.json ./mappings/scripts/postCodegen.ts
-
 # We run yarn again to ensure graphql-server dependencies are installed
 # and are inline with root workspace resolutions
 yarn

+ 2 - 3
query-node/codegen/package.json

@@ -5,10 +5,9 @@
   "author": "",
   "license": "ISC",
   "scripts": {
-    "postinstall": "cd .. && yarn workspace query-node-mappings postHydraCLIInstall"
   },
   "dependencies": {
-    "@joystream/hydra-cli": "3.1.0-alpha.13",
-    "@joystream/hydra-typegen": "3.1.0-alpha.13"
+    "@joystream/hydra-cli": "3.1.0-alpha.16",
+    "@joystream/hydra-typegen": "3.1.0-alpha.16"
   }
 }

+ 242 - 240
query-node/codegen/yarn.lock

@@ -33,9 +33,9 @@
   dependencies:
     xss "^1.0.8"
 
-"@apollographql/graphql-playground-react@https://github.com/Joystream/graphql-playground/releases/download/query-templates%401.7.27/graphql-playground-react-v1.7.27.tgz":
-  version "1.7.27"
-  resolved "https://github.com/Joystream/graphql-playground/releases/download/query-templates%401.7.27/graphql-playground-react-v1.7.27.tgz#f29765a3a182204bf2bb166a3ed10c7273637af9"
+"@apollographql/graphql-playground-react@https://github.com/Joystream/graphql-playground/releases/download/joystream%401.7.28/graphql-playground-react-v1.7.28.tgz":
+  version "1.7.28"
+  resolved "https://github.com/Joystream/graphql-playground/releases/download/joystream%401.7.28/graphql-playground-react-v1.7.28.tgz#24c9c54e14ae0ba13c894738b4b87301f5801b26"
   dependencies:
     "@types/lru-cache" "^4.1.1"
     apollo-link "^1.2.13"
@@ -205,10 +205,10 @@
   dependencies:
     regenerator-runtime "^0.13.4"
 
-"@babel/runtime@^7.14.6", "@babel/runtime@^7.15.3":
-  version "7.15.4"
-  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a"
-  integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==
+"@babel/runtime@^7.16.3":
+  version "7.16.7"
+  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa"
+  integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==
   dependencies:
     regenerator-runtime "^0.13.4"
 
@@ -306,15 +306,15 @@
   resolved "https://registry.yarnpkg.com/@josephg/resolvable/-/resolvable-1.0.1.tgz#69bc4db754d79e1a2f17a650d3466e038d94a5eb"
   integrity sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg==
 
-"@joystream/hydra-cli@3.1.0-alpha.13":
-  version "3.1.0-alpha.13"
-  resolved "https://registry.yarnpkg.com/@joystream/hydra-cli/-/hydra-cli-3.1.0-alpha.13.tgz#230485159e285f303757443e173d87fbe97f2835"
-  integrity sha512-hSUaSDRTHg8Y2atiRTl810aiscIKkdSEHUVlsfMb1fD7n9vCAX7hel2oUyfPMoW6NpnQaptkOtVinaLyAr/bkg==
+"@joystream/hydra-cli@3.1.0-alpha.16":
+  version "3.1.0-alpha.16"
+  resolved "https://registry.yarnpkg.com/@joystream/hydra-cli/-/hydra-cli-3.1.0-alpha.16.tgz#3bebe326b2ae6ad96b821797ca699c581217ac45"
+  integrity sha512-2Dq5fBqJWdqE0OhvI/kBA0i3gngnDmd0AaSFhJ03LE3mKTvzhapaOyWmEgO9vqQCSopSi0wWorizzksnu2+GQw==
   dependencies:
     "@inquirer/input" "^0.0.13-alpha.0"
     "@inquirer/password" "^0.0.12-alpha.0"
     "@inquirer/select" "^0.0.13-alpha.0"
-    "@joystream/warthog" "^2.40.0"
+    "@joystream/warthog" "~2.41.2"
     "@oclif/command" "^1.5.20"
     "@oclif/config" "^1"
     "@oclif/errors" "^1.3.3"
@@ -342,15 +342,15 @@
     pluralize "^8.0.0"
     tslib "1.11.2"
 
-"@joystream/hydra-typegen@3.1.0-alpha.13":
-  version "3.1.0-alpha.13"
-  resolved "https://registry.yarnpkg.com/@joystream/hydra-typegen/-/hydra-typegen-3.1.0-alpha.13.tgz#cb19dbe4b496a1b003b6c0a663ffa961743a07ca"
-  integrity sha512-ayIYrPc7ofQEsRIKL71Hvdm8/tqFNo4s1WwjwW7xAScTqIjimgG4y/3OjQbsgXzcLB03E4UOE0ECLwqzoYDrug==
+"@joystream/hydra-typegen@3.1.0-alpha.16":
+  version "3.1.0-alpha.16"
+  resolved "https://registry.yarnpkg.com/@joystream/hydra-typegen/-/hydra-typegen-3.1.0-alpha.16.tgz#5756b714767be8f3b237dba270386113c64b1245"
+  integrity sha512-ik1iegF7qZXeumsJ8baeff5VAxgrc6+yyRIZNFgWrCRDVEnP613XNFpUIcKzuXme7BhCVeaY5ynLaQUtU6lcUw==
   dependencies:
     "@oclif/command" "^1.8.0"
     "@oclif/config" "^1"
     "@oclif/errors" "^1.3.3"
-    "@polkadot/api" "4.16.2"
+    "@polkadot/api" "5.9.1"
     debug "^4.3.1"
     handlebars "^4.7.6"
     lodash "^4.17.20"
@@ -358,12 +358,12 @@
     yaml "^1.10.0"
     yaml-validator "^3.0.0"
 
-"@joystream/warthog@^2.40.0":
-  version "2.40.0"
-  resolved "https://registry.yarnpkg.com/@joystream/warthog/-/warthog-2.40.0.tgz#6384803b0326dd43b554aac65c68838249f1119e"
-  integrity sha512-fNlN0rzCPWvt1lrBXz24UFdwMMJBrrGPB1ObruQXJXTbZeZ+OuqIJLCCw2j+JjeT/Tl569VM4/S69jA+usCfng==
+"@joystream/warthog@~2.41.2":
+  version "2.41.2"
+  resolved "https://registry.yarnpkg.com/@joystream/warthog/-/warthog-2.41.2.tgz#6d3cf5c977320d1c77be518e848e011a9699b22d"
+  integrity sha512-1w6aT5P3xiI/HaTtqJrVj4Yp1/gxG8cGTeYgzlwr3iq8J11skwE4rLCHQucHfVueyBX49AaqWrhl+wI2ACqk4Q==
   dependencies:
-    "@apollographql/graphql-playground-react" "https://github.com/Joystream/graphql-playground/releases/download/query-templates%401.7.27/graphql-playground-react-v1.7.27.tgz"
+    "@apollographql/graphql-playground-react" "https://github.com/Joystream/graphql-playground/releases/download/joystream%401.7.28/graphql-playground-react-v1.7.28.tgz"
     "@types/app-root-path" "^1.2.4"
     "@types/bn.js" "^4.11.6"
     "@types/caller" "^1.0.0"
@@ -422,7 +422,7 @@
     typedi "^0.8.0"
     typeorm "0.2.37"
     typeorm-typedi-extensions "^0.4.1"
-    typescript "^3.9.7"
+    typescript "^4.4"
 
 "@nodelib/fs.scandir@2.1.5":
   version "2.1.5"
@@ -560,226 +560,204 @@
   resolved "https://registry.yarnpkg.com/@oclif/screen/-/screen-1.0.4.tgz#b740f68609dfae8aa71c3a6cab15d816407ba493"
   integrity sha512-60CHpq+eqnTxLZQ4PGHYNwUX572hgpMHGPtTWMjdTMsAvlm69lZV/4ly6O3sAYkomo4NggGcomrDpBe34rxUqw==
 
-"@polkadot/api-derive@4.16.2":
-  version "4.16.2"
-  resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-4.16.2.tgz#8ed97fec7965a1be1c5d87a3639752d5cdfdbc8a"
-  integrity sha512-xRAIGoeULK+E7uep5D0eDUN6m0KcMV4eOPkmvyfp7ndxfaf94ydfEOw+QemrnT1T/chA/qq96EYvuBe3lv5w1Q==
-  dependencies:
-    "@babel/runtime" "^7.14.6"
-    "@polkadot/api" "4.16.2"
-    "@polkadot/rpc-core" "4.16.2"
-    "@polkadot/types" "4.16.2"
-    "@polkadot/util" "^6.10.1"
-    "@polkadot/util-crypto" "^6.10.1"
-    "@polkadot/x-rxjs" "^6.10.1"
-
-"@polkadot/api@4.16.2":
-  version "4.16.2"
-  resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-4.16.2.tgz#361fbeb690d8b646387e9f8bec22929aca09d691"
-  integrity sha512-x+fWc7mE3ZuGxoFCTf/Tnv0z7rDTM198M9LnWUJdadyNT3QAtE+Cjgo1bCrroTnuD3whd0jhFLfLQCwz95RrwA==
-  dependencies:
-    "@babel/runtime" "^7.14.6"
-    "@polkadot/api-derive" "4.16.2"
-    "@polkadot/keyring" "^6.10.1"
-    "@polkadot/metadata" "4.16.2"
-    "@polkadot/rpc-core" "4.16.2"
-    "@polkadot/rpc-provider" "4.16.2"
-    "@polkadot/types" "4.16.2"
-    "@polkadot/types-known" "4.16.2"
-    "@polkadot/util" "^6.10.1"
-    "@polkadot/util-crypto" "^6.10.1"
-    "@polkadot/x-rxjs" "^6.10.1"
+"@polkadot/api-derive@5.9.1":
+  version "5.9.1"
+  resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-5.9.1.tgz#5937069920ded1439e6672b9d6be1072421b256b"
+  integrity sha512-iMrVKnYIS3UQciDlFqww6AFyXgG+iN8UqWu8QbTuZecri3qrSmM3Nn8Jkvju3meZIacwWIMSmBcnj8+zef3rkQ==
+  dependencies:
+    "@babel/runtime" "^7.15.4"
+    "@polkadot/api" "5.9.1"
+    "@polkadot/rpc-core" "5.9.1"
+    "@polkadot/types" "5.9.1"
+    "@polkadot/util" "^7.3.1"
+    "@polkadot/util-crypto" "^7.3.1"
+    rxjs "^7.3.0"
+
+"@polkadot/api@5.9.1":
+  version "5.9.1"
+  resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-5.9.1.tgz#ce314cc34f0a47098d039db7b9036bb491c2898c"
+  integrity sha512-POpIXn/Ao+NLB0uMldXdXU44dVbRr6+6Ax77Z0R285M8Z2EiF5jl2K3SPvlowLo4SntxiCSaHQxCekYhUcJKlw==
+  dependencies:
+    "@babel/runtime" "^7.15.4"
+    "@polkadot/api-derive" "5.9.1"
+    "@polkadot/keyring" "^7.3.1"
+    "@polkadot/rpc-core" "5.9.1"
+    "@polkadot/rpc-provider" "5.9.1"
+    "@polkadot/types" "5.9.1"
+    "@polkadot/types-known" "5.9.1"
+    "@polkadot/util" "^7.3.1"
+    "@polkadot/util-crypto" "^7.3.1"
     eventemitter3 "^4.0.7"
+    rxjs "^7.3.0"
+
+"@polkadot/keyring@^7.3.1":
+  version "7.9.2"
+  resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-7.9.2.tgz#1f5bf6b7bdb5942d275aebf72d4ed98abe874fa8"
+  integrity sha512-6UGoIxhiTyISkYEZhUbCPpgVxaneIfb/DBVlHtbvaABc8Mqh1KuqcTIq19Mh9wXlBuijl25rw4lUASrE/9sBqg==
+  dependencies:
+    "@babel/runtime" "^7.16.3"
+    "@polkadot/util" "7.9.2"
+    "@polkadot/util-crypto" "7.9.2"
+
+"@polkadot/networks@7.9.2", "@polkadot/networks@^7.3.1":
+  version "7.9.2"
+  resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-7.9.2.tgz#03e3f3ac6bdea177517436537826055df60bcb9a"
+  integrity sha512-4obI1RdW5/7TFwbwKA9oqw8aggVZ65JAUvIFMd2YmMC2T4+NiZLnok0WhRkhZkUnqjLIHXYNwq7Ho1i39dte0g==
+  dependencies:
+    "@babel/runtime" "^7.16.3"
+
+"@polkadot/rpc-core@5.9.1":
+  version "5.9.1"
+  resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-5.9.1.tgz#68e2a2ea18c15aa15743e7487a407fdd65d1d900"
+  integrity sha512-5fXiICAcjp7ow81DnIl2Dq/xuCtJUqyjJkxe9jNHJWBluBxOouqYDb8bYPPGSdckiaVyYe0l8lA9fBUFMdEt6w==
+  dependencies:
+    "@babel/runtime" "^7.15.4"
+    "@polkadot/rpc-provider" "5.9.1"
+    "@polkadot/types" "5.9.1"
+    "@polkadot/util" "^7.3.1"
+    rxjs "^7.3.0"
 
-"@polkadot/keyring@^6.10.1":
-  version "6.11.1"
-  resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-6.11.1.tgz#2510c349c965c74cc2f108f114f1048856940604"
-  integrity sha512-rW8INl7pO6Dmaffd6Df1yAYCRWa2RmWQ0LGfJeA/M6seVIkI6J3opZqAd4q2Op+h9a7z4TESQGk8yggOEL+Csg==
-  dependencies:
-    "@babel/runtime" "^7.14.6"
-    "@polkadot/util" "6.11.1"
-    "@polkadot/util-crypto" "6.11.1"
-
-"@polkadot/metadata@4.16.2":
-  version "4.16.2"
-  resolved "https://registry.yarnpkg.com/@polkadot/metadata/-/metadata-4.16.2.tgz#2a90c9e6ac500ee1b176a5e0e08b64c8d7bf5458"
-  integrity sha512-wx5DwAxV8zEDQzgdeDFRRlDb89CqmgY/eKusvMgzRuLG5Z4Hu4jxQ6LnBsjVmA70BBhgs+uAuJ7mzY76OO4wDw==
-  dependencies:
-    "@babel/runtime" "^7.14.6"
-    "@polkadot/types" "4.16.2"
-    "@polkadot/types-known" "4.16.2"
-    "@polkadot/util" "^6.10.1"
-    "@polkadot/util-crypto" "^6.10.1"
-
-"@polkadot/networks@6.11.1", "@polkadot/networks@^6.10.1":
-  version "6.11.1"
-  resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-6.11.1.tgz#8fd189593f6ee4f8bf64378d0aaae09e39a37d35"
-  integrity sha512-0C6Ha2kvr42se3Gevx6UhHzv3KnPHML0N73Amjwvdr4y0HLZ1Nfw+vcm5yqpz5gpiehqz97XqFrsPRauYdcksQ==
-  dependencies:
-    "@babel/runtime" "^7.14.6"
-
-"@polkadot/rpc-core@4.16.2":
-  version "4.16.2"
-  resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-4.16.2.tgz#a839407a1c00048a10ed711ad3dd1b52f8fd20cc"
-  integrity sha512-NAMkN5rtccLL7G0aeMqxx/R38exkJ/xVNEZh9Y/okw8w0iOCnZk72ge9ABkd/SJbLxm6l+5c87cTXUK77r1zTQ==
-  dependencies:
-    "@babel/runtime" "^7.14.6"
-    "@polkadot/metadata" "4.16.2"
-    "@polkadot/rpc-provider" "4.16.2"
-    "@polkadot/types" "4.16.2"
-    "@polkadot/util" "^6.10.1"
-    "@polkadot/x-rxjs" "^6.10.1"
-
-"@polkadot/rpc-provider@4.16.2":
-  version "4.16.2"
-  resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-4.16.2.tgz#73a0b6818ec57d10b735b1e471eb7d88dd8a39db"
-  integrity sha512-aAq3mHkgHziQrZQdNuxGSrkKKksA8Kk0N8WWsW1DZOkjt7rlF3vdmCguHTPlOzO4NHmeDsGVlGGBzjOza8QNbA==
-  dependencies:
-    "@babel/runtime" "^7.14.6"
-    "@polkadot/types" "4.16.2"
-    "@polkadot/util" "^6.10.1"
-    "@polkadot/util-crypto" "^6.10.1"
-    "@polkadot/x-fetch" "^6.10.1"
-    "@polkadot/x-global" "^6.10.1"
-    "@polkadot/x-ws" "^6.10.1"
+"@polkadot/rpc-provider@5.9.1":
+  version "5.9.1"
+  resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-5.9.1.tgz#8e67769c05ba71ecf4f5bc0c5a60eb9afc699167"
+  integrity sha512-9zamxfnsY7iCswXIK22W0Ji1XHLprm97js3WLw3lP2hr/uSim4Cv4y07zY/z4dDQyF0gJtjKwR27Wo9CZqdr6A==
+  dependencies:
+    "@babel/runtime" "^7.15.4"
+    "@polkadot/types" "5.9.1"
+    "@polkadot/util" "^7.3.1"
+    "@polkadot/util-crypto" "^7.3.1"
+    "@polkadot/x-fetch" "^7.3.1"
+    "@polkadot/x-global" "^7.3.1"
+    "@polkadot/x-ws" "^7.3.1"
     eventemitter3 "^4.0.7"
 
-"@polkadot/types-known@4.16.2":
-  version "4.16.2"
-  resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-4.16.2.tgz#94e54adb3ba767342f9aed226eb4aa973520b911"
-  integrity sha512-ydeS1SnO25O//TThzUBYjthCOH3h70j1IRVQ+CPVhVbZJoMRr47hIysFTBjyxyKVTQtj20vniZV8+qq6oiWggA==
-  dependencies:
-    "@babel/runtime" "^7.14.6"
-    "@polkadot/networks" "^6.10.1"
-    "@polkadot/types" "4.16.2"
-    "@polkadot/util" "^6.10.1"
-
-"@polkadot/types@4.16.2":
-  version "4.16.2"
-  resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-4.16.2.tgz#06dfedf19a50d659863c068ba1444efbc214c302"
-  integrity sha512-JSIvVKIBhRHCswDPYMoy4TLvR9O1NT5mqyIBoLjNKur0WShLk1jVtiyKbU+2/AuCbM1nehiWagmAlWmMFNaDMw==
-  dependencies:
-    "@babel/runtime" "^7.14.6"
-    "@polkadot/metadata" "4.16.2"
-    "@polkadot/util" "^6.10.1"
-    "@polkadot/util-crypto" "^6.10.1"
-    "@polkadot/x-rxjs" "^6.10.1"
-
-"@polkadot/util-crypto@6.11.1", "@polkadot/util-crypto@^6.10.1":
-  version "6.11.1"
-  resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-6.11.1.tgz#7a36acf5c8bf52541609ec0b0b2a69af295d652e"
-  integrity sha512-fWA1Nz17FxWJslweZS4l0Uo30WXb5mYV1KEACVzM+BSZAvG5eoiOAYX6VYZjyw6/7u53XKrWQlD83iPsg3KvZw==
-  dependencies:
-    "@babel/runtime" "^7.14.6"
-    "@polkadot/networks" "6.11.1"
-    "@polkadot/util" "6.11.1"
-    "@polkadot/wasm-crypto" "^4.0.2"
-    "@polkadot/x-randomvalues" "6.11.1"
-    base-x "^3.0.8"
-    base64-js "^1.5.1"
+"@polkadot/types-known@5.9.1":
+  version "5.9.1"
+  resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-5.9.1.tgz#e52fc7b803bc7cb3f41028f88963deb4ccee40af"
+  integrity sha512-7lpLuIVGaKziQRzPMnTxyjlYy3spL6WqUg3CcEzmJUKQeUonHglOliQh8JSSz1bcP+YuNHGXK1cKsTjHb+GYxA==
+  dependencies:
+    "@babel/runtime" "^7.15.4"
+    "@polkadot/networks" "^7.3.1"
+    "@polkadot/types" "5.9.1"
+    "@polkadot/util" "^7.3.1"
+
+"@polkadot/types@5.9.1":
+  version "5.9.1"
+  resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-5.9.1.tgz#74cf4695795f2aa365ff85d3873e22c430100bc9"
+  integrity sha512-30vcSlNBxPyWYZaxKDr/BoMhfLCRKB265XxpnnNJmbdZZsL+N4Zp2mJR9/UbA6ypmJBkUjD7b1s9AYsLwUs+8w==
+  dependencies:
+    "@babel/runtime" "^7.15.4"
+    "@polkadot/util" "^7.3.1"
+    "@polkadot/util-crypto" "^7.3.1"
+    rxjs "^7.3.0"
+
+"@polkadot/util-crypto@7.9.2", "@polkadot/util-crypto@^7.3.1":
+  version "7.9.2"
+  resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-7.9.2.tgz#cdc336f92a6bc3d40c5a23734e1974fb777817f0"
+  integrity sha512-nNwqUwP44eCH9jKKcPie+IHLKkg9LMe6H7hXo91hy3AtoslnNrT51tP3uAm5yllhLvswJfnAgnlHq7ybCgqeFw==
+  dependencies:
+    "@babel/runtime" "^7.16.3"
+    "@polkadot/networks" "7.9.2"
+    "@polkadot/util" "7.9.2"
+    "@polkadot/wasm-crypto" "^4.4.1"
+    "@polkadot/x-randomvalues" "7.9.2"
     blakejs "^1.1.1"
-    bn.js "^4.11.9"
+    bn.js "^4.12.0"
     create-hash "^1.2.0"
+    ed2curve "^0.3.0"
     elliptic "^6.5.4"
     hash.js "^1.1.7"
     js-sha3 "^0.8.0"
+    micro-base "^0.9.0"
     scryptsy "^2.1.0"
     tweetnacl "^1.0.3"
     xxhashjs "^0.2.2"
 
-"@polkadot/util@6.11.1", "@polkadot/util@^6.10.1":
-  version "6.11.1"
-  resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-6.11.1.tgz#8950b038ba3e6ebfc0a7ff47feeb972e81b2626c"
-  integrity sha512-TEdCetr9rsdUfJZqQgX/vxLuV4XU8KMoKBMJdx+JuQ5EWemIdQkEtMBdL8k8udNGbgSNiYFA6rPppATeIxAScg==
+"@polkadot/util@7.9.2", "@polkadot/util@^7.3.1":
+  version "7.9.2"
+  resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-7.9.2.tgz#567ac659516d6b685ed7e796919901d92e5cbe6b"
+  integrity sha512-6ABY6ErgkCsM4C6+X+AJSY4pBGwbKlHZmUtHftaiTvbaj4XuA4nTo3GU28jw8wY0Jh2cJZJvt6/BJ5GVkm5tBA==
   dependencies:
-    "@babel/runtime" "^7.14.6"
-    "@polkadot/x-textdecoder" "6.11.1"
-    "@polkadot/x-textencoder" "6.11.1"
+    "@babel/runtime" "^7.16.3"
+    "@polkadot/x-textdecoder" "7.9.2"
+    "@polkadot/x-textencoder" "7.9.2"
     "@types/bn.js" "^4.11.6"
-    bn.js "^4.11.9"
-    camelcase "^5.3.1"
+    bn.js "^4.12.0"
+    camelcase "^6.2.1"
     ip-regex "^4.3.0"
 
-"@polkadot/wasm-crypto-asmjs@^4.2.1":
-  version "4.2.1"
-  resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-4.2.1.tgz#6b7eae1c011709f8042dfd30872a5fc5e9e021c0"
-  integrity sha512-ON9EBpTNDCI3QRUmuQJIegYoAcwvxDaNNA7uwKTaEEStu8LjCIbQxbt4WbOBYWI0PoUpl4iIluXdT3XZ3V3jXA==
-  dependencies:
-    "@babel/runtime" "^7.15.3"
-
-"@polkadot/wasm-crypto-wasm@^4.2.1":
-  version "4.2.1"
-  resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-4.2.1.tgz#2a86f9b405e7195c3f523798c6ce4afffd19737e"
-  integrity sha512-Rs2CKiR4D+2hKzmKBfPNYxcd2E8NfLWia0av4fgicjT9YsWIWOGQUi9AtSOfazPOR9FrjxKJy+chQxAkcfKMnQ==
-  dependencies:
-    "@babel/runtime" "^7.15.3"
-
-"@polkadot/wasm-crypto@^4.0.2":
-  version "4.2.1"
-  resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto/-/wasm-crypto-4.2.1.tgz#4d09402f5ac71a90962fb58cbe4b1707772a4fb6"
-  integrity sha512-C/A/QnemOilRTLnM0LfhPY2N/x3ZFd1ihm9sXYyuh98CxtekSVYI9h4IJ5Jrgz5imSUHgvt9oJLqJ5GbWQV/Zg==
-  dependencies:
-    "@babel/runtime" "^7.15.3"
-    "@polkadot/wasm-crypto-asmjs" "^4.2.1"
-    "@polkadot/wasm-crypto-wasm" "^4.2.1"
-
-"@polkadot/x-fetch@^6.10.1":
-  version "6.11.1"
-  resolved "https://registry.yarnpkg.com/@polkadot/x-fetch/-/x-fetch-6.11.1.tgz#97d44d78ef0285eec6f6dbc4006302308ec8e24c"
-  integrity sha512-qJyLLnm+4SQEZ002UDz2wWnXbnnH84rIS0mLKZ5k82H4lMYY+PQflvzv6sbu463e/lgiEao+6zvWS6DSKv1Yog==
-  dependencies:
-    "@babel/runtime" "^7.14.6"
-    "@polkadot/x-global" "6.11.1"
-    "@types/node-fetch" "^2.5.10"
-    node-fetch "^2.6.1"
-
-"@polkadot/x-global@6.11.1", "@polkadot/x-global@^6.10.1":
-  version "6.11.1"
-  resolved "https://registry.yarnpkg.com/@polkadot/x-global/-/x-global-6.11.1.tgz#c292b3825fea60e9b33fff1790323fc57de1ca5d"
-  integrity sha512-lsBK/e4KbjfieyRmnPs7bTiGbP/6EoCZz7rqD/voNS5qsJAaXgB9LR+ilubun9gK/TDpebyxgO+J19OBiQPIRw==
-  dependencies:
-    "@babel/runtime" "^7.14.6"
-
-"@polkadot/x-randomvalues@6.11.1":
-  version "6.11.1"
-  resolved "https://registry.yarnpkg.com/@polkadot/x-randomvalues/-/x-randomvalues-6.11.1.tgz#f006fa250c8e82c92ccb769976a45a8e7f3df28b"
-  integrity sha512-2MfUfGZSOkuPt7GF5OJkPDbl4yORI64SUuKM25EGrJ22o1UyoBnPOClm9eYujLMD6BfDZRM/7bQqqoLW+NuHVw==
-  dependencies:
-    "@babel/runtime" "^7.14.6"
-    "@polkadot/x-global" "6.11.1"
-
-"@polkadot/x-rxjs@^6.10.1":
-  version "6.11.1"
-  resolved "https://registry.yarnpkg.com/@polkadot/x-rxjs/-/x-rxjs-6.11.1.tgz#5454708b61da70eea05708611d9148fce9372498"
-  integrity sha512-zIciEmij7SUuXXg9g/683Irx6GogxivrQS2pgBir2DI/YZq+um52+Dqg1mqsEZt74N4KMTMnzAZAP6LJOBOMww==
-  dependencies:
-    "@babel/runtime" "^7.14.6"
-    rxjs "^6.6.7"
-
-"@polkadot/x-textdecoder@6.11.1":
-  version "6.11.1"
-  resolved "https://registry.yarnpkg.com/@polkadot/x-textdecoder/-/x-textdecoder-6.11.1.tgz#6cc314645681cc4639085c03b65328671c7f182c"
-  integrity sha512-DI1Ym2lyDSS/UhnTT2e9WutukevFZ0WGpzj4eotuG2BTHN3e21uYtYTt24SlyRNMrWJf5+TkZItmZeqs1nwAfQ==
+"@polkadot/wasm-crypto-asmjs@^4.5.1":
+  version "4.5.1"
+  resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-4.5.1.tgz#e1025a49e106db11d1187caf65f56c960ea2ad2b"
+  integrity sha512-DOdRiWhxVvmqTvp+E9z1j+Yr0zDOGsDvqnT/eNw0Dl1FVUOImsEa7FKns/urASmcxCVEE1jtUWSnij29jrORMQ==
   dependencies:
-    "@babel/runtime" "^7.14.6"
-    "@polkadot/x-global" "6.11.1"
+    "@babel/runtime" "^7.16.3"
 
-"@polkadot/x-textencoder@6.11.1":
-  version "6.11.1"
-  resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-6.11.1.tgz#73e89da5b91954ae380042c19314c90472f59d9e"
-  integrity sha512-8ipjWdEuqFo+R4Nxsc3/WW9CSEiprX4XU91a37ZyRVC4e9R1bmvClrpXmRQLVcAQyhRvG8DKOOtWbz8xM+oXKg==
+"@polkadot/wasm-crypto-wasm@^4.5.1":
+  version "4.5.1"
+  resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-4.5.1.tgz#063a58ff7ddd939b7886a6a238109a8d2c416e46"
+  integrity sha512-hPwke85HxpgG/RAlwdCE8u5w7bThvWg399mlB+XjogXMxOUWBZSgq2XYbgzROUXx27inK9nStF4Pnc4zJnqs9A==
   dependencies:
-    "@babel/runtime" "^7.14.6"
-    "@polkadot/x-global" "6.11.1"
+    "@babel/runtime" "^7.16.3"
 
-"@polkadot/x-ws@^6.10.1":
-  version "6.11.1"
-  resolved "https://registry.yarnpkg.com/@polkadot/x-ws/-/x-ws-6.11.1.tgz#338adc7309e3a8e660fce8eb42f975426da48d10"
-  integrity sha512-GNu4ywrMlVi0QF6QSpKwYWMK6JRK+kadgN/zEhMoH1z5h8LwpqDLv128j5WspWbQti2teCQtridjf7t2Lzoe8Q==
-  dependencies:
-    "@babel/runtime" "^7.14.6"
-    "@polkadot/x-global" "6.11.1"
-    "@types/websocket" "^1.0.3"
+"@polkadot/wasm-crypto@^4.4.1":
+  version "4.5.1"
+  resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto/-/wasm-crypto-4.5.1.tgz#e1ac6d846a0ad8e991cec128994524183ef6e8fd"
+  integrity sha512-Cr21ais3Kq3aedIHZ3J1tjgeD/+K8FCiwEawr0oRywNBSJR8wyuZMePs4swR/6xm8wbBkpqoBVHz/UQHqqQJmA==
+  dependencies:
+    "@babel/runtime" "^7.16.3"
+    "@polkadot/wasm-crypto-asmjs" "^4.5.1"
+    "@polkadot/wasm-crypto-wasm" "^4.5.1"
+
+"@polkadot/x-fetch@^7.3.1":
+  version "7.9.2"
+  resolved "https://registry.yarnpkg.com/@polkadot/x-fetch/-/x-fetch-7.9.2.tgz#fe943be5854f7355630388b1b5d2bb52f1a3afb2"
+  integrity sha512-zutLkFJVaLVpY3cIGYJD0AReLfAnPr2J82Ca4pvy/BxqwwGYuGLcn36A4m6nliGBP2lcH4oYY+mcCqIwoPWQUQ==
+  dependencies:
+    "@babel/runtime" "^7.16.3"
+    "@polkadot/x-global" "7.9.2"
+    "@types/node-fetch" "^2.5.12"
+    node-fetch "^2.6.6"
+
+"@polkadot/x-global@7.9.2", "@polkadot/x-global@^7.3.1":
+  version "7.9.2"
+  resolved "https://registry.yarnpkg.com/@polkadot/x-global/-/x-global-7.9.2.tgz#b272b0a3bedaad3bcbf075ec4682abe68cf2a850"
+  integrity sha512-JX5CrGWckHf1P9xKXq4vQCAuMUbL81l2hOWX7xeP8nv4caHEpmf5T1wD1iMdQBL5PFifo6Pg0V6/oZBB+bts7A==
+  dependencies:
+    "@babel/runtime" "^7.16.3"
+
+"@polkadot/x-randomvalues@7.9.2":
+  version "7.9.2"
+  resolved "https://registry.yarnpkg.com/@polkadot/x-randomvalues/-/x-randomvalues-7.9.2.tgz#0c9bb7b48a0791c2a32e9605a31a5ce56fee621d"
+  integrity sha512-svQfG31yCXf6yVyIgP0NgCzEy7oc3Lw054ZspkaqjOivxYdrXaf5w3JSSUyM/MRjI2+nk+B/EyJoMYcfSwTfsQ==
+  dependencies:
+    "@babel/runtime" "^7.16.3"
+    "@polkadot/x-global" "7.9.2"
+
+"@polkadot/x-textdecoder@7.9.2":
+  version "7.9.2"
+  resolved "https://registry.yarnpkg.com/@polkadot/x-textdecoder/-/x-textdecoder-7.9.2.tgz#a78548e33efeb3a25f761fec9787b2bcae7f0608"
+  integrity sha512-wfwbSHXPhrOAl12QvlIOGNkMH/N/h8PId2ytIjvM/8zPPFB5Il6DWSFLtVapOGEpIFjEWbd5t8Td4pHBVXIEbg==
+  dependencies:
+    "@babel/runtime" "^7.16.3"
+    "@polkadot/x-global" "7.9.2"
+
+"@polkadot/x-textencoder@7.9.2":
+  version "7.9.2"
+  resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-7.9.2.tgz#b32bfd6fbff8587c56452f58252a52d62bbcd5b9"
+  integrity sha512-A19wwYINuZwU2dUyQ/mMzB0ISjyfc4cISfL4zCMUAVgj7xVoXMYV2GfjNdMpA8Wsjch3su6pxLbtJ2wU03sRTQ==
+  dependencies:
+    "@babel/runtime" "^7.16.3"
+    "@polkadot/x-global" "7.9.2"
+
+"@polkadot/x-ws@^7.3.1":
+  version "7.9.2"
+  resolved "https://registry.yarnpkg.com/@polkadot/x-ws/-/x-ws-7.9.2.tgz#016df26fa829b74f8b1e31a1dcd6e34256c1231f"
+  integrity sha512-+yppMsZtvDztVOSmkqAQuhR6TfV1Axa6ergAsWb52DrfXvFP5geqtARsI6ZdDgMsE3qHSVQTcJz8vgNOr5+ztQ==
+  dependencies:
+    "@babel/runtime" "^7.16.3"
+    "@polkadot/x-global" "7.9.2"
+    "@types/websocket" "^1.0.4"
     websocket "^1.0.34"
 
 "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
@@ -1164,7 +1142,7 @@
   resolved "https://registry.yarnpkg.com/@types/node-emoji/-/node-emoji-1.8.1.tgz#689cb74fdf6e84309bcafce93a135dfecd01de3f"
   integrity sha512-0fRfA90FWm6KJfw6P9QGyo0HDTCmthZ7cWaBQndITlaWLTZ6njRyKwrwpzpg+n6kBXBIGKeUHEQuBx7bphGJkA==
 
-"@types/node-fetch@^2.5.10":
+"@types/node-fetch@^2.5.12":
   version "2.5.12"
   resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66"
   integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==
@@ -1280,7 +1258,7 @@
   resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.6.3.tgz#31ca2e997bf13a0fffca30a25747d5b9f7dbb7de"
   integrity sha512-fWG42pMJOL4jKsDDZZREnXLjc3UE0R8LOJfARWYg6U966rxDT7TYejYzLnUF5cvSObGg34nd0+H2wHHU5Omdfw==
 
-"@types/websocket@^1.0.3":
+"@types/websocket@^1.0.4":
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.4.tgz#1dc497280d8049a5450854dd698ee7e6ea9e60b8"
   integrity sha512-qn1LkcFEKK8RPp459jkjzsfpbsx36BBt3oC3pITYtkoBw/aVX+EZFa5j3ThCRTNpLFvIMr5dSTD4RaMdilIOpA==
@@ -1706,14 +1684,7 @@ balanced-match@^1.0.0:
   resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
   integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
 
-base-x@^3.0.8:
-  version "3.0.8"
-  resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.8.tgz#1e1106c2537f0162e8b52474a557ebb09000018d"
-  integrity sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==
-  dependencies:
-    safe-buffer "^5.0.1"
-
-base64-js@^1.3.1, base64-js@^1.5.1:
+base64-js@^1.3.1:
   version "1.5.1"
   resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
   integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
@@ -1738,7 +1709,7 @@ bluebird@^3.3.5, bluebird@^3.5.5:
   resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
   integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
 
-bn.js@^4.11.9:
+bn.js@^4.11.9, bn.js@^4.12.0:
   version "4.12.0"
   resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
   integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
@@ -1861,11 +1832,16 @@ camelcase@^3.0.0:
   resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
   integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo=
 
-camelcase@^5.0.0, camelcase@^5.3.1:
+camelcase@^5.0.0:
   version "5.3.1"
   resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
   integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
 
+camelcase@^6.2.1:
+  version "6.3.0"
+  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
+  integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
+
 camelize@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b"
@@ -2491,6 +2467,13 @@ duplexer@^0.1.1:
   resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
   integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
 
+ed2curve@^0.3.0:
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/ed2curve/-/ed2curve-0.3.0.tgz#322b575152a45305429d546b071823a93129a05d"
+  integrity sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ==
+  dependencies:
+    tweetnacl "1.x.x"
+
 ee-first@1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
@@ -4213,6 +4196,11 @@ methods@~1.1.2:
   resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
   integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
 
+micro-base@^0.9.0:
+  version "0.9.0"
+  resolved "https://registry.yarnpkg.com/micro-base/-/micro-base-0.9.0.tgz#09cfe20285bec0ea97f41dc3d10e3fba3d0266ee"
+  integrity sha512-4+tOMKidYT5nQ6/UNmYrGVO5PMcnJdfuR4NC8HK8s2H61B4itOhA9yrsjBdqGV7ecdtej36x3YSIfPLRmPrspg==
+
 micromatch@^4.0.4:
   version "4.0.4"
   resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9"
@@ -4373,6 +4361,13 @@ node-fetch@^2.6.1:
   dependencies:
     whatwg-url "^5.0.0"
 
+node-fetch@^2.6.6:
+  version "2.6.6"
+  resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.6.tgz#1751a7c01834e8e1697758732e9efb6eeadfaf89"
+  integrity sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==
+  dependencies:
+    whatwg-url "^5.0.0"
+
 node-fingerprint@0.0.2:
   version "0.0.2"
   resolved "https://registry.yarnpkg.com/node-fingerprint/-/node-fingerprint-0.0.2.tgz#31cbabeb71a67ae7dd5a7dc042e51c3c75868501"
@@ -5352,13 +5347,20 @@ run-parallel@^1.1.9:
   dependencies:
     queue-microtask "^1.2.2"
 
-rxjs@^6.3.3, rxjs@^6.5.1, rxjs@^6.6.7:
+rxjs@^6.3.3, rxjs@^6.5.1:
   version "6.6.7"
   resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9"
   integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==
   dependencies:
     tslib "^1.9.0"
 
+rxjs@^7.3.0:
+  version "7.5.1"
+  resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.1.tgz#af73df343cbcab37628197f43ea0c8256f54b157"
+  integrity sha512-KExVEeZWxMZnZhUZtsJcFwz8IvPvgu4G2Z2QyqjZQzUGr32KDYuSxrEYO4w3tFFNbfLozcrKUTvTPi+E9ywJkQ==
+  dependencies:
+    tslib "^2.1.0"
+
 safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
   version "5.1.2"
   resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
@@ -5927,7 +5929,7 @@ tunnel-agent@^0.6.0:
   dependencies:
     safe-buffer "^5.0.1"
 
-tweetnacl@^1.0.3:
+tweetnacl@1.x.x, tweetnacl@^1.0.3:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596"
   integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==
@@ -6041,10 +6043,10 @@ typescript-tuple@^2.2.1:
   dependencies:
     typescript-compare "^0.0.2"
 
-typescript@^3.9.7:
-  version "3.9.10"
-  resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8"
-  integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==
+typescript@^4.4:
+  version "4.5.4"
+  resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.4.tgz#a17d3a0263bf5c8723b9c52f43c5084edf13c2e8"
+  integrity sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==
 
 uc.micro@^1.0.1, uc.micro@^1.0.5:
   version "1.0.6"

+ 3 - 5
query-node/mappings/package.json

@@ -11,8 +11,6 @@
     "lint": "eslint . --quiet --ext .ts",
     "checks": "prettier ./ --check && yarn lint",
     "format": "prettier ./ --write ",
-    "postinstall": "yarn ts-node ./scripts/postInstall.ts",
-    "postHydraCLIInstall": "yarn ts-node ./scripts/postHydraCLIInstall.ts",
     "bootstrap-data:fetch:members": "yarn ts-node ./bootstrap-data/scripts/fetchMembersData.ts",
     "bootstrap-data:fetch:categories": "yarn ts-node ./bootstrap-data/scripts/fetchCategories.ts",
     "bootstrap-data:fetch:workingGroups": "yarn ts-node ./bootstrap-data/scripts/fetchWorkingGroupsData.ts",
@@ -20,12 +18,12 @@
   },
   "dependencies": {
     "@polkadot/types": "5.9.1",
-    "@joystream/hydra-common": "3.1.0-alpha.13",
-    "@joystream/hydra-db-utils": "3.1.0-alpha.13",
+    "@joystream/hydra-common": "3.1.0-alpha.16",
+    "@joystream/hydra-db-utils": "3.1.0-alpha.16",
     "@joystream/metadata-protobuf": "^1.0.0",
     "@joystream/sumer-types": "npm:@joystream/types@^0.16.0",
     "@joystream/types": "^0.17.0",
-    "@joystream/warthog": "2.39.0",
+    "@joystream/warthog": "2.41.2",
     "@apollo/client": "^3.2.5"
   },
   "devDependencies": {

+ 0 - 20
query-node/mappings/scripts/postCodegen.ts

@@ -1,20 +0,0 @@
-// A script to be executed post hydra codegen, that may include modifications to autogenerated files
-import fs from 'fs'
-import path from 'path'
-
-// TS4 useUnknownInCatchVariables is not compatible with auto-generated code inside generated/graphql-server
-const serverTsConfigPath = path.resolve(__dirname, '../../generated/graphql-server/tsconfig.json')
-const serverTsConfig = JSON.parse(fs.readFileSync(serverTsConfigPath).toString())
-serverTsConfig.compilerOptions.useUnknownInCatchVariables = false
-fs.writeFileSync(serverTsConfigPath, JSON.stringify(serverTsConfig, undefined, 2))
-
-// Type assertions are no longer needed for createTypeUnsafe in @polkadot/api 5.9.1 (and they break the build)
-// Here we're relpacing createTypeUnsafe<Assertions>(...params) to createTypeUnsafe(...params) in all generated types:
-const generatedTypesPaths = path.resolve(__dirname, '../generated/types')
-fs.readdirSync(generatedTypesPaths).map((fileName) => {
-  if (path.extname(fileName) === '.ts') {
-    const filePath = path.join(generatedTypesPaths, fileName)
-    const fileContent = fs.readFileSync(filePath).toString()
-    fs.writeFileSync(filePath, fileContent.replace(/createTypeUnsafe<[^(]+[(]/g, 'createTypeUnsafe('))
-  }
-})

+ 0 - 23
query-node/mappings/scripts/postHydraCLIInstall.ts

@@ -1,23 +0,0 @@
-// A script to be executed post hydra-cli install, that may include patches for Hydra CLI
-import path from 'path'
-import { replaceInFile } from './utils'
-
-// FIXME: Temporary fix for missing JOIN and HAVING conditions in search queries (Hydra)
-const searchServiceTemplatePath = path.resolve(
-  __dirname,
-  '../../codegen/node_modules/@joystream/hydra-cli/lib/src/templates/textsearch/service.ts.mst'
-)
-
-replaceInFile({
-  filePath: searchServiceTemplatePath,
-  regex: /queries = queries\.concat\(generateSqlQuery\(repositories\[index\]\.metadata\.tableName, WHERE\)\);/,
-  newContent:
-    'queries = queries.concat(generateSqlQuery(repositories[index].metadata.tableName, qb.createJoinExpression(), WHERE, qb.createHavingExpression()));',
-})
-
-replaceInFile({
-  filePath: searchServiceTemplatePath,
-  regex: /const generateSqlQuery =[\s\S]+\+ where;/,
-  newContent: `const generateSqlQuery = (table: string, joins: string, where: string, having: string) =>
-  \`SELECT '\${table}_' || "\${table}"."id" AS unique_id FROM "\${table}" \` + joins + ' ' + where + ' ' + having;`,
-})

+ 0 - 45
query-node/mappings/scripts/postInstall.ts

@@ -1,45 +0,0 @@
-// A script to be executed post query-node install, that may include workarounds in Hydra node_modules
-import path from 'path'
-import { replaceInFile } from './utils'
-
-// FIXME: Temporarly remove broken sanitizeNullCharacter call
-const subscribersJsPath = path.resolve(
-  __dirname,
-  '../../../node_modules/@joystream/hydra-processor/lib/db/subscribers.js'
-)
-replaceInFile({
-  filePath: subscribersJsPath,
-  regex: /sanitizeNullCharacter\(entity, field\);/g,
-  newContent: '//sanitizeNullCharacter(entity, field)',
-})
-
-// FIXME: Temporarly replace broken relations resolution in @joystream/warthog
-const dataLoaderJsPath = path.resolve(
-  __dirname,
-  '../../../node_modules/@joystream/warthog/dist/middleware/DataLoaderMiddleware.js'
-)
-replaceInFile({
-  filePath: dataLoaderJsPath,
-  regex: /return context\.connection\.relationIdLoader[\s\S]+return group\.related;\s+\}\);\s+\}\)/,
-  newContent: `return Promise.all(
-    entities.map(entity => context.connection.relationLoader.load(relation, entity))
-  ).then(function (results) {
-    return results.map(function (related) {
-      return (relation.isManyToOne || relation.isOneToOne) ? related[0] : related
-    })
-  })`,
-})
-
-// FIXME: Temporary fix for "table name x specified more than once"
-const baseServiceJsPath = path.resolve(__dirname, '../../../node_modules/@joystream/warthog/dist/core/BaseService.js')
-replaceInFile({
-  filePath: baseServiceJsPath,
-  regex: /function common\(parameters, localIdColumn, foreignTableName, foreignColumnMap, foreignColumnName\) \{[^}]+\}/,
-  newContent: `function common(parameters, localIdColumn, foreignTableName, foreignColumnMap, foreignColumnName) {
-    const uuid = require('uuid/v4')
-    const foreignTableAlias = uuid().replace('-', '')
-    var foreingIdColumn = "\\"" + foreignTableAlias + "\\".\\"" + foreignColumnMap[foreignColumnName] + "\\"";
-    parameters.topLevelQb.leftJoin(foreignTableName, foreignTableAlias, localIdColumn + " = " + foreingIdColumn);
-    addWhereCondition(parameters, foreignTableAlias, foreignColumnMap);
-  }`,
-})

+ 0 - 19
query-node/mappings/scripts/utils.ts

@@ -1,19 +0,0 @@
-import fs from 'fs'
-import { blake2AsHex } from '@polkadot/util-crypto'
-
-type ReplaceLinesInFileParams = {
-  filePath: string
-  regex: RegExp
-  newContent: string
-}
-
-export function replaceInFile({ filePath, regex, newContent }: ReplaceLinesInFileParams): void {
-  const paramsHash = blake2AsHex(filePath + '|' + regex.source + '|' + newContent)
-  const startMark = `/* BEGIN REPLACED CONTENT ${paramsHash} */`
-  const endMark = `/* END REPLACED CONTENT ${paramsHash} */`
-  const fileContent = fs.readFileSync(filePath).toString()
-  if (fileContent.includes(startMark)) {
-    return
-  }
-  fs.writeFileSync(filePath, fileContent.replace(regex, `${startMark}\n${newContent}\n${endMark}`))
-}

+ 1 - 1
query-node/package.json

@@ -41,7 +41,7 @@
     "tslib": "^2.0.0",
     "@types/bn.js": "^4.11.6",
     "bn.js": "^5.1.2",
-    "@joystream/hydra-processor": "3.1.0-alpha.13"
+    "@joystream/hydra-processor": "3.1.0-alpha.16"
   },
   "volta": {
 		"extends": "../package.json"

+ 0 - 0
storage-node-v2/.eslintignore → storage-node/.eslintignore


+ 0 - 0
storage-node-v2/.eslintrc.js → storage-node/.eslintrc.js


+ 0 - 0
storage-node-v2/.gitignore → storage-node/.gitignore


+ 0 - 0
storage-node-v2/.prettierignore → storage-node/.prettierignore


+ 55 - 36
storage-node-v2/README.md → storage-node/README.md

@@ -111,10 +111,10 @@ bash
 yarn
 yarn workspace @joystream/types build
 yarn workspace @joystream/metadata-protobuf build
-yarn workspace storage-node-v2 build
+yarn workspace storage-node build
 
 # Verify installation
-cd storage-node-v2
+cd storage-node
 yarn storage-node version
 ```
 # Usage
@@ -650,16 +650,23 @@ USAGE
   $ storage-node operator:accept-invitation
 
 OPTIONS
-  -h, --help                   show CLI help
-  -i, --bucketId=bucketId      (required) Storage bucket ID
-  -k, --keyFile=keyFile        Key file for the account. Mandatory in non-dev environment.
-  -m, --dev                    Use development mode
-  -p, --password=password      Key file password (optional). Could be overriden by ACCOUNT_PWD environment variable.
-  -u, --apiUrl=apiUrl          [default: ws://localhost:9944] Runtime API URL. Mandatory in non-dev environment.
-  -w, --workerId=workerId      (required) Storage operator worker ID
+  -h, --help                                     show CLI help
+  -i, --bucketId=bucketId                        (required) Storage bucket ID
+  -k, --keyFile=keyFile                          Key file for the account. Mandatory in non-dev environment.
+  -m, --dev                                      Use development mode
 
-  -y, --accountUri=accountUri  Account URI (optional). Has a priority over the keyFile and password flags. Could be
-                               overriden by ACCOUNT_URI environment variable.
+  -p, --password=password                        Key file password (optional). Could be overriden by ACCOUNT_PWD
+                                                 environment variable.
+
+  -t, --transactorAccountId=transactorAccountId  (required) Transactor account ID (public key)
+
+  -u, --apiUrl=apiUrl                            [default: ws://localhost:9944] Runtime API URL. Mandatory in non-dev
+                                                 environment.
+
+  -w, --workerId=workerId                        (required) Storage operator worker ID
+
+  -y, --accountUri=accountUri                    Account URI (optional). Has a priority over the keyFile and password
+                                                 flags. Could be overriden by ACCOUNT_URI environment variable.
 ```
 
 _See code: [src/commands/operator/accept-invitation.ts](https://github.com/Joystream/joystream/blob/v2.0.0/src/commands/operator/accept-invitation.ts)_
@@ -698,46 +705,58 @@ USAGE
   $ storage-node server
 
 OPTIONS
-  -d, --uploads=uploads                              (required) Data uploading directory (absolute path).
+  -d, --uploads=uploads                                       (required) Data uploading directory (absolute path).
 
-  -e, --elasticSearchEndpoint=elasticSearchEndpoint  Elasticsearch endpoint (e.g.: http://some.com:8081).
-                                                     Log level could be set using the ELASTIC_LOG_LEVEL enviroment
-                                                     variable.
-                                                     Supported values: warn, error, debug, info. Default:debug
+  -e, --elasticSearchEndpoint=elasticSearchEndpoint           Elasticsearch endpoint (e.g.: http://some.com:8081).
+                                                              Log level could be set using the ELASTIC_LOG_LEVEL
+                                                              enviroment variable.
+                                                              Supported values: warn, error, debug, info. Default:debug
 
-  -h, --help                                         show CLI help
+  -h, --help                                                  show CLI help
 
-  -i, --syncInterval=syncInterval                    [default: 1] Interval between synchronizations (in minutes)
+  -i, --syncInterval=syncInterval                             [default: 1] Interval between synchronizations (in
+                                                              minutes)
 
-  -k, --keyFile=keyFile                              Key file for the account. Mandatory in non-dev environment.
+  -k, --keyFile=keyFile                                       Key file for the account. Mandatory in non-dev
+                                                              environment.
 
-  -m, --dev                                          Use development mode
+  -l, --logFilePath=logFilePath                               Absolute path to the rolling log files.
 
-  -o, --port=port                                    (required) Server port.
+  -m, --dev                                                   Use development mode
 
-  -p, --password=password                            Key file password (optional). Could be overriden by ACCOUNT_PWD
-                                                     environment variable.
+  -n, --logMaxFileNumber=logMaxFileNumber                     [default: 7] Maximum rolling log files number.
 
-  -q, --queryNodeEndpoint=queryNodeEndpoint          (required) [default: http://localhost:8081/graphql] Query node
-                                                     endpoint (e.g.: http://some.com:8081/graphql)
+  -o, --port=port                                             (required) Server port.
 
-  -r, --syncWorkersNumber=syncWorkersNumber          [default: 20] Sync workers number (max async operations in
-                                                     progress).
+  -p, --password=password                                     Key file password (optional). Could be overriden by
+                                                              ACCOUNT_PWD environment variable.
 
-  -s, --sync                                         Enable data synchronization.
+  -q, --queryNodeEndpoint=queryNodeEndpoint                   (required) [default: http://localhost:8081/graphql] Query
+                                                              node endpoint (e.g.: http://some.com:8081/graphql)
 
-  -t, --syncWorkersTimeout=syncWorkersTimeout        [default: 30] Asset downloading timeout for the syncronization (in
-                                                     minutes).
+  -r, --syncWorkersNumber=syncWorkersNumber                   [default: 20] Sync workers number (max async operations in
+                                                              progress).
 
-  -u, --apiUrl=apiUrl                                [default: ws://localhost:9944] Runtime API URL. Mandatory in
-                                                     non-dev environment.
+  -s, --sync                                                  Enable data synchronization.
 
-  -w, --worker=worker                                (required) Storage provider worker ID
+  -t, --syncWorkersTimeout=syncWorkersTimeout                 [default: 30] Asset downloading timeout for the
+                                                              syncronization (in minutes).
 
-  -y, --accountUri=accountUri                        Account URI (optional). Has a priority over the keyFile and
-                                                     password flags. Could be overriden by ACCOUNT_URI environment
-                                                     variable.
+  -u, --apiUrl=apiUrl                                         [default: ws://localhost:9944] Runtime API URL. Mandatory
+                                                              in non-dev environment.
+
+  -w, --worker=worker                                         (required) Storage provider worker ID
+
+  -x, --logMaxFileSize=logMaxFileSize                         [default: 50000000] Maximum rolling log files size in
+                                                              bytes.
+
+  -y, --accountUri=accountUri                                 Account URI (optional). Has a priority over the keyFile
+                                                              and password flags. Could be overriden by ACCOUNT_URI
+                                                              environment variable.
+
+  -z, --logFileChangeFrequency=(yearly|monthly|daily|hourly)  [default: daily] Log files update frequency.
 ```
 
 _See code: [src/commands/server.ts](https://github.com/Joystream/joystream/blob/v2.0.0/src/commands/server.ts)_
+
 <!-- commandsstop -->

+ 0 - 0
storage-node-v2/bin/run → storage-node/bin/run


+ 0 - 0
storage-node-v2/bin/run.cmd → storage-node/bin/run.cmd


+ 4 - 3
storage-node-v2/package.json → storage-node/package.json

@@ -1,5 +1,5 @@
 {
-  "name": "storage-node-v2",
+  "name": "storage-node",
   "description": "Joystream storage subsystem.",
   "version": "2.0.0",
   "author": "Joystream contributors",
@@ -55,7 +55,8 @@
     "url-join": "^4.0.1",
     "uuid": "^8.3.2",
     "winston": "^3.3.3",
-    "winston-elasticsearch": "^0.15.8"
+    "winston-elasticsearch": "^0.15.8",
+    "winston-daily-rotate-file": "^4.5.5"
   },
   "devDependencies": {
     "@graphql-codegen/cli": "^1.21.4",
@@ -129,7 +130,7 @@
   "repository": {
     "type": "git",
     "url": "https://github.com/Joystream/joystream",
-    "directory": "storage-node-v2"
+    "directory": "storage-node"
   },
   "scripts": {
     "postpack": "rm -f oclif.manifest.json",

+ 0 - 0
storage-node-v2/scripts/create-auth-request-signature.ts → storage-node/scripts/create-auth-request-signature.ts


+ 0 - 0
storage-node-v2/scripts/init-dev-bucket.sh → storage-node/scripts/init-dev-bucket.sh


+ 0 - 0
storage-node-v2/scripts/operatorMetadata.json → storage-node/scripts/operatorMetadata.json


+ 0 - 0
storage-node-v2/scripts/run-all-commands.sh → storage-node/scripts/run-all-commands.sh


+ 0 - 0
storage-node-v2/src/api-spec/openapi.yaml → storage-node/src/api-spec/openapi.yaml


+ 0 - 0
storage-node-v2/src/command-base/ApiCommandBase.ts → storage-node/src/command-base/ApiCommandBase.ts


+ 0 - 0
storage-node-v2/src/command-base/ExitCodes.ts → storage-node/src/command-base/ExitCodes.ts


+ 0 - 0
storage-node-v2/src/commands/dev/init.ts → storage-node/src/commands/dev/init.ts


+ 3 - 4
storage-node-v2/src/commands/dev/multihash.ts → storage-node/src/commands/dev/multihash.ts

@@ -1,6 +1,7 @@
 import { Command, flags } from '@oclif/command'
 import { hashFile } from '../../services/helpers/hashing'
-import logger, { createStdConsoleLogger } from '../../services/logger'
+import logger from '../../services/logger'
+import { print } from '../../services/helpers/stdout'
 
 /**
  * CLI command:
@@ -32,8 +33,6 @@ export default class DevMultihash extends Command {
 
     logger.info(`Hash: ${multi}`)
 
-    const stdConsoleLogger = createStdConsoleLogger()
-
-    stdConsoleLogger.info(multi)
+    print(multi)
   }
 }

+ 0 - 0
storage-node-v2/src/commands/dev/sync.ts → storage-node/src/commands/dev/sync.ts


+ 0 - 0
storage-node-v2/src/commands/dev/upload.ts → storage-node/src/commands/dev/upload.ts


+ 0 - 0
storage-node-v2/src/commands/dev/verify-bag-id.ts → storage-node/src/commands/dev/verify-bag-id.ts


+ 0 - 0
storage-node-v2/src/commands/leader/cancel-invite.ts → storage-node/src/commands/leader/cancel-invite.ts


+ 4 - 4
storage-node-v2/src/commands/leader/create-bucket.ts → storage-node/src/commands/leader/create-bucket.ts

@@ -1,7 +1,8 @@
 import { createStorageBucket } from '../../services/runtime/extrinsics'
 import { flags } from '@oclif/command'
 import ApiCommandBase from '../../command-base/ApiCommandBase'
-import logger, { createStdConsoleLogger } from '../../services/logger'
+import logger from '../../services/logger'
+import { print } from '../../services/helpers/stdout'
 
 /**
  * CLI command:
@@ -56,9 +57,8 @@ export default class LeaderCreateBucket extends ApiCommandBase {
       objectNumber
     )
     if (success) {
-      const stdConsoleLogger = createStdConsoleLogger()
-
-      stdConsoleLogger.info(bucketId)
+      const castedBucketId = bucketId as number
+      print(castedBucketId.toString())
     }
     this.exitAfterRuntimeCall(success)
   }

+ 0 - 0
storage-node-v2/src/commands/leader/delete-bucket.ts → storage-node/src/commands/leader/delete-bucket.ts


+ 0 - 0
storage-node-v2/src/commands/leader/invite-operator.ts → storage-node/src/commands/leader/invite-operator.ts


+ 0 - 0
storage-node-v2/src/commands/leader/remove-operator.ts → storage-node/src/commands/leader/remove-operator.ts


+ 0 - 0
storage-node-v2/src/commands/leader/set-bucket-limits.ts → storage-node/src/commands/leader/set-bucket-limits.ts


+ 0 - 0
storage-node-v2/src/commands/leader/set-global-uploading-status.ts → storage-node/src/commands/leader/set-global-uploading-status.ts


+ 0 - 0
storage-node-v2/src/commands/leader/update-bag-limit.ts → storage-node/src/commands/leader/update-bag-limit.ts


+ 0 - 0
storage-node-v2/src/commands/leader/update-bag.ts → storage-node/src/commands/leader/update-bag.ts


+ 0 - 0
storage-node-v2/src/commands/leader/update-blacklist.ts → storage-node/src/commands/leader/update-blacklist.ts


+ 0 - 0
storage-node-v2/src/commands/leader/update-bucket-status.ts → storage-node/src/commands/leader/update-bucket-status.ts


+ 0 - 0
storage-node-v2/src/commands/leader/update-data-fee.ts → storage-node/src/commands/leader/update-data-fee.ts


+ 0 - 0
storage-node-v2/src/commands/leader/update-dynamic-bag-policy.ts → storage-node/src/commands/leader/update-dynamic-bag-policy.ts


+ 0 - 0
storage-node-v2/src/commands/leader/update-voucher-limits.ts → storage-node/src/commands/leader/update-voucher-limits.ts


+ 0 - 0
storage-node-v2/src/commands/operator/accept-invitation.ts → storage-node/src/commands/operator/accept-invitation.ts


+ 0 - 0
storage-node-v2/src/commands/operator/set-metadata.ts → storage-node/src/commands/operator/set-metadata.ts


+ 34 - 5
storage-node-v2/src/commands/server.ts → storage-node/src/commands/server.ts

@@ -1,7 +1,7 @@
 import { flags } from '@oclif/command'
 import { createApp } from '../services/webApi/app'
 import ApiCommandBase from '../command-base/ApiCommandBase'
-import logger, { initElasticLogger } from '../services/logger'
+import logger, { initNewLogger, DatePatternByFrequency, Frequency } from '../services/logger'
 import { loadDataObjectIdCache } from '../services/caching/localDataObjects'
 import { ApiPromise } from '@polkadot/api'
 import { performSync, TempDirName } from '../services/sync/synchronizer'
@@ -75,6 +75,30 @@ export default class Server extends ApiCommandBase {
 Log level could be set using the ELASTIC_LOG_LEVEL enviroment variable.
 Supported values: warn, error, debug, info. Default:debug`,
     }),
+    logFilePath: flags.string({
+      char: 'l',
+      required: false,
+      description: `Absolute path to the rolling log files.`,
+    }),
+    logMaxFileNumber: flags.integer({
+      char: 'n',
+      required: false,
+      default: 7,
+      description: `Maximum rolling log files number.`,
+    }),
+    logMaxFileSize: flags.integer({
+      char: 'x',
+      required: false,
+      default: 50000000,
+      description: `Maximum rolling log files size in bytes.`,
+    }),
+    logFileChangeFrequency: flags.enum({
+      char: 'z',
+      description: `Log files update frequency.`,
+      options: Object.keys(DatePatternByFrequency),
+      default: 'daily',
+      required: false,
+    }),
     ...ApiCommandBase.flags,
   }
 
@@ -89,8 +113,15 @@ Supported values: warn, error, debug, info. Default:debug`,
       await loadDataObjectIdCache(flags.uploads, TempDirName)
     }
 
-    if (!_.isEmpty(flags.elasticSearchEndpoint)) {
-      initElasticLogger(logSource, flags.elasticSearchEndpoint ?? '')
+    if (!_.isEmpty(flags.elasticSearchEndpoint) || !_.isEmpty(flags.logFilePath)) {
+      initNewLogger({
+        elasticSearchlogSource: logSource,
+        elasticSearchEndpoint: flags.elasticSearchEndpoint,
+        filePath: flags.logFilePath,
+        maxFileNumber: flags.logMaxFileNumber,
+        maxFileSize: flags.logMaxFileSize,
+        fileFrequency: flags.logFileChangeFrequency as Frequency, // type checked in the flags.enum
+      })
     }
 
     logger.info(`Query node endpoint set: ${flags.queryNodeEndpoint}`)
@@ -138,8 +169,6 @@ Supported values: warn, error, debug, info. Default:debug`,
         process: this.config,
         queryNodeEndpoint: flags.queryNodeEndpoint,
         enableUploadingAuth: false,
-        elasticSearchEndpoint: flags.elasticSearchEndpoint,
-        logSource,
       })
       logger.info(`Listening on http://localhost:${port}`)
       app.listen(port)

+ 0 - 0
storage-node-v2/src/index.ts → storage-node/src/index.ts


+ 0 - 0
storage-node-v2/src/services/caching/localDataObjects.ts → storage-node/src/services/caching/localDataObjects.ts


+ 0 - 0
storage-node-v2/src/services/caching/newUploads.ts → storage-node/src/services/caching/newUploads.ts


+ 0 - 0
storage-node-v2/src/services/caching/tokenNonceKeeper.ts → storage-node/src/services/caching/tokenNonceKeeper.ts


+ 0 - 0
storage-node-v2/src/services/helpers/auth.ts → storage-node/src/services/helpers/auth.ts


+ 0 - 0
storage-node-v2/src/services/helpers/bagTypes.ts → storage-node/src/services/helpers/bagTypes.ts


+ 0 - 0
storage-node-v2/src/services/helpers/fileInfo.ts → storage-node/src/services/helpers/fileInfo.ts


+ 0 - 0
storage-node-v2/src/services/helpers/hashing.ts → storage-node/src/services/helpers/hashing.ts


+ 9 - 0
storage-node/src/services/helpers/stdout.ts

@@ -0,0 +1,9 @@
+/**
+ * Prints message to console. We don't use logger in some cases to avoid metadata printing.
+ *
+ * @param msg message to output
+ */
+export function print(msg: string): void {
+  /* eslint-disable no-console */
+  console.log(msg)
+}

+ 106 - 52
storage-node-v2/src/services/logger.ts → storage-node/src/services/logger.ts

@@ -3,6 +3,8 @@ import ecsformat from '@elastic/ecs-winston-format'
 import expressWinston from 'express-winston'
 import { Handler, ErrorRequestHandler } from 'express'
 import { ElasticsearchTransport } from 'winston-elasticsearch'
+import 'winston-daily-rotate-file'
+import path from 'path'
 
 /**
  * Possible log levels.
@@ -83,76 +85,57 @@ const proxy = new Proxy(InnerLogger, {
 export default proxy
 
 /**
- * Creates Express-Winston logger handler.
- * @param logSource - source tag for log entries.
- * @param elasticSearchEndpoint - elastic search engine endpoint (optional).
- * @returns  Express-Winston logger handler
+ * Creates Express-Winston default logger options.
  *
  */
-export function httpLogger(logSource: string, elasticSearchEndpoint?: string): Handler {
-  // ElasticSearch server date format.
-  const elasticDateFormat = 'YYYY-MM-DDTHH:mm:ss'
-
-  const transports: winston.transport[] = [
-    new winston.transports.Console({
-      format: winston.format.combine(winston.format.timestamp({ format: elasticDateFormat }), winston.format.json()),
-    }),
-  ]
-
-  if (elasticSearchEndpoint) {
-    const esTransport = createElasticTransport(logSource, elasticSearchEndpoint)
-    transports.push(esTransport)
+export function createExpressDefaultLoggerOptions(): expressWinston.LoggerOptions {
+  return {
+    winstonInstance: proxy,
+    level: 'http',
   }
+}
 
-  const opts: expressWinston.LoggerOptions = {
-    transports,
-    meta: true,
-    msg: 'HTTP {{req.method}} {{req.url}}',
-    expressFormat: true,
-    colorize: false,
+/**
+ * Creates Express-Winston error logger options.
+ *
+ */
+export function createExpressErrorLoggerOptions(): expressWinston.LoggerOptions {
+  return {
+    winstonInstance: proxy,
+    level: 'error',
+    msg: '{{req.method}} {{req.path}}: Error {{res.statusCode}}: {{err.message}}',
   }
-
-  return expressWinston.logger(opts)
 }
 
 /**
  * Creates Express-Winston error logger.
  *
+ * @param options - express winston logger options.
  * @returns  Express-Winston error logger
  *
  */
-export function errorLogger(): ErrorRequestHandler {
-  return expressWinston.errorLogger({
-    transports: [new winston.transports.Console()],
-    format: winston.format.combine(winston.format.json()),
-  })
+export function errorLogger(options: expressWinston.LoggerOptions): ErrorRequestHandler {
+  return expressWinston.errorLogger(options)
 }
 
 /**
- * Creates clean Console Winston logger for standard output.
+ * Creates Express-Winston logger handler.
  *
- * @returns Winston logger
+ * @param options - express winston logger options.
+ * @returns  Express-Winston logger handler
  *
  */
-export function createStdConsoleLogger(): winston.Logger {
-  const format = winston.format.printf((info) => `${info.message}`)
-
-  const transports = [new winston.transports.Console()]
-
-  return winston.createLogger({
-    levels,
-    format,
-    transports,
-  })
+export function httpLogger(options: expressWinston.LoggerOptions): Handler {
+  return expressWinston.logger(options)
 }
+
 /**
- * Creates Winston logger with Elastic search.
- * @param logSource - source tag for log entries.
- * @param elasticSearchEndpoint - elastic search engine endpoint.
+ * Creates Winston logger with ElasticSearch and File transports.
+ * @param customOptions - logger options
  * @returns Winston logger
  *
  */
-function createElasticLogger(logSource: string, elasticSearchEndpoint: string): winston.Logger {
+function createCustomLogger(customOptions: LogConfig): winston.Logger {
   const loggerOptions = createDefaultLoggerOptions()
 
   // Transports
@@ -161,8 +144,19 @@ function createElasticLogger(logSource: string, elasticSearchEndpoint: string):
     transports = Array.isArray(loggerOptions.transports) ? loggerOptions.transports : [loggerOptions.transports]
   }
 
-  const esTransport = createElasticTransport(logSource, elasticSearchEndpoint)
-  transports.push(esTransport)
+  if (customOptions.elasticSearchEndpoint) {
+    transports.push(createElasticTransport(customOptions.elasticSearchlogSource, customOptions.elasticSearchEndpoint))
+  }
+  if (customOptions.filePath) {
+    transports.push(
+      createFileTransport(
+        customOptions.filePath,
+        customOptions.fileFrequency,
+        customOptions.maxFileNumber,
+        customOptions.maxFileSize
+      )
+    )
+  }
 
   // Logger
   const logger = winston.createLogger(loggerOptions)
@@ -180,11 +174,10 @@ function createElasticLogger(logSource: string, elasticSearchEndpoint: string):
 /**
  * Updates the default system logger with elastic search capabilities.
  *
- * @param logSource - source tag for log entries.
- * @param elasticSearchEndpoint - elastic search engine endpoint.
+ * @param customOptions - logger options
  */
-export function initElasticLogger(logSource: string, elasticSearchEndpoint: string): void {
-  InnerLogger = createElasticLogger(logSource, elasticSearchEndpoint)
+export function initNewLogger(options: LogConfig): void {
+  InnerLogger = createCustomLogger(options)
 }
 
 /**
@@ -210,6 +203,67 @@ function createElasticTransport(logSource: string, elasticSearchEndpoint: string
     index: 'storage-node',
     format: ecsformat(),
     source: logSource,
+    retryLimit: 10,
   }
   return new ElasticsearchTransport(esTransportOpts)
 }
+
+/**
+ * Creates winston logger file transport.
+ *
+ * @param fileName - log file path
+ * @param fileFrequency - file frequence (daily,montly, etc.)
+ * @param maxFiles - maximum number of the log files
+ * @param maxSize - maximum log file size
+ * @returns winston file transport
+ */
+function createFileTransport(
+  filepath: string,
+  fileFrequency: Frequency,
+  maxFiles: number,
+  maxSize: number
+): winston.transport {
+  const options = {
+    filename: path.join(filepath, 'colossus-%DATE%.log'),
+    datePattern: DatePatternByFrequency[fileFrequency || 'daily'],
+    maxSize,
+    maxFiles,
+    level: 'debug',
+    format: ecsformat(),
+  }
+
+  return new winston.transports.DailyRotateFile(options)
+}
+
+export const DatePatternByFrequency = {
+  yearly: 'YYYY',
+  monthly: 'YYYY-MM',
+  daily: 'YYYY-MM-DD',
+  hourly: 'YYYY-MM-DD-HH',
+}
+
+/** File frequency for  */
+export type Frequency = keyof typeof DatePatternByFrequency
+
+/**
+ * Configuration for the ElasticSearch and File loggers
+ */
+export type LogConfig = {
+  /** Path to log files */
+  filePath?: string
+
+  /** Maximum log file size */
+  maxFileSize: number
+
+  /** Maximum number of the log files */
+  maxFileNumber: number
+
+  /** Log files update frequency (yearly, monthly, daily, hourly) */
+  fileFrequency: Frequency
+
+  /** Source tag for log entries. */
+  elasticSearchlogSource: string
+
+  /** Elastic search engine endpoint */
+  elasticSearchEndpoint?: string
+}

+ 0 - 0
storage-node-v2/src/services/metadata/generateTypes.ts → storage-node/src/services/metadata/generateTypes.ts


+ 0 - 0
storage-node-v2/src/services/metadata/generated/OperatorMetadataJson.d.ts → storage-node/src/services/metadata/generated/OperatorMetadataJson.d.ts


+ 0 - 0
storage-node-v2/src/services/metadata/schemas/index.ts → storage-node/src/services/metadata/schemas/index.ts


+ 0 - 0
storage-node-v2/src/services/metadata/schemas/operatorMetadataSchema.ts → storage-node/src/services/metadata/schemas/operatorMetadataSchema.ts


+ 0 - 0
storage-node-v2/src/services/metadata/validationService.ts → storage-node/src/services/metadata/validationService.ts


+ 0 - 0
storage-node-v2/src/services/queryNode/api.ts → storage-node/src/services/queryNode/api.ts


+ 0 - 0
storage-node-v2/src/services/queryNode/codegen.yml → storage-node/src/services/queryNode/codegen.yml


+ 0 - 0
storage-node-v2/src/services/queryNode/generated/queries.ts → storage-node/src/services/queryNode/generated/queries.ts


+ 0 - 0
storage-node-v2/src/services/queryNode/generated/schema.ts → storage-node/src/services/queryNode/generated/schema.ts


+ 0 - 0
storage-node-v2/src/services/queryNode/queries/queries.graphql → storage-node/src/services/queryNode/queries/queries.graphql


+ 0 - 0
storage-node-v2/src/services/runtime/accounts.ts → storage-node/src/services/runtime/accounts.ts


+ 0 - 0
storage-node-v2/src/services/runtime/api.ts → storage-node/src/services/runtime/api.ts


+ 0 - 0
storage-node-v2/src/services/runtime/extrinsics.ts → storage-node/src/services/runtime/extrinsics.ts


+ 0 - 0
storage-node-v2/src/services/runtime/hireLead.ts → storage-node/src/services/runtime/hireLead.ts


+ 0 - 0
storage-node-v2/src/services/sync/remoteStorageData.ts → storage-node/src/services/sync/remoteStorageData.ts


+ 0 - 0
storage-node-v2/src/services/sync/storageObligations.ts → storage-node/src/services/sync/storageObligations.ts


+ 0 - 0
storage-node-v2/src/services/sync/synchronizer.ts → storage-node/src/services/sync/synchronizer.ts


+ 0 - 0
storage-node-v2/src/services/sync/tasks.ts → storage-node/src/services/sync/tasks.ts


+ 0 - 0
storage-node-v2/src/services/sync/workingProcess.ts → storage-node/src/services/sync/workingProcess.ts


+ 11 - 3
storage-node-v2/src/services/webApi/app.ts → storage-node/src/services/webApi/app.ts

@@ -8,8 +8,13 @@ import { KeyringPair } from '@polkadot/keyring/types'
 import { ApiPromise } from '@polkadot/api'
 import { RequestData, verifyTokenSignature, parseUploadToken, UploadToken } from '../helpers/auth'
 import { checkRemoveNonce } from '../caching/tokenNonceKeeper'
-import { httpLogger, errorLogger } from '../../services/logger'
 import { AppConfig } from './controllers/common'
+import {
+  createExpressErrorLoggerOptions,
+  createExpressDefaultLoggerOptions,
+  httpLogger,
+  errorLogger,
+} from '../../services/logger'
 
 /**
  * Creates Express web application. Uses the OAS spec file for the API.
@@ -20,10 +25,11 @@ import { AppConfig } from './controllers/common'
 export async function createApp(config: AppConfig): Promise<Express> {
   const spec = path.join(__dirname, './../../api-spec/openapi.yaml')
   const app = express()
+  const expressLoggerOptions = createExpressDefaultLoggerOptions()
 
   app.use(cors())
   app.use(express.json())
-  app.use(httpLogger(config.logSource, config.elasticSearchEndpoint))
+  app.use(httpLogger(expressLoggerOptions))
 
   app.use(
     // Set parameters for each request.
@@ -56,7 +62,9 @@ export async function createApp(config: AppConfig): Promise<Express> {
     })
   ) // Required signature.
 
-  app.use(errorLogger())
+  // Error logger
+  const errorLoggerOptions = createExpressErrorLoggerOptions()
+  app.use(errorLogger(errorLoggerOptions))
 
   /* eslint-disable @typescript-eslint/no-unused-vars */
   app.use((err: Error, req: express.Request, res: express.Response, next: express.NextFunction) => {

+ 0 - 10
storage-node-v2/src/services/webApi/controllers/common.ts → storage-node/src/services/webApi/controllers/common.ts

@@ -132,16 +132,6 @@ export type AppConfig = {
    */
   enableUploadingAuth: boolean
 
-  /**
-   * Source tag for log entries for ElasticSearch.
-   */
-  logSource: string
-
-  /**
-   * ElasticSearch logging endpoint URL
-   */
-  elasticSearchEndpoint?: string
-
   /**
    * Max file size for uploading limit.
    */

+ 0 - 0
storage-node-v2/src/services/webApi/controllers/filesApi.ts → storage-node/src/services/webApi/controllers/filesApi.ts


+ 0 - 0
storage-node-v2/src/services/webApi/controllers/stateApi.ts → storage-node/src/services/webApi/controllers/stateApi.ts


+ 0 - 0
storage-node-v2/tsconfig.json → storage-node/tsconfig.json


+ 65 - 39
yarn.lock

@@ -134,9 +134,9 @@
   dependencies:
     xss "^1.0.8"
 
-"@apollographql/graphql-playground-react@https://github.com/Joystream/graphql-playground/releases/download/query-templates%401.7.27/graphql-playground-react-v1.7.27.tgz":
-  version "1.7.27"
-  resolved "https://github.com/Joystream/graphql-playground/releases/download/query-templates%401.7.27/graphql-playground-react-v1.7.27.tgz#f29765a3a182204bf2bb166a3ed10c7273637af9"
+"@apollographql/graphql-playground-react@https://github.com/Joystream/graphql-playground/releases/download/joystream%401.7.28/graphql-playground-react-v1.7.28.tgz":
+  version "1.7.28"
+  resolved "https://github.com/Joystream/graphql-playground/releases/download/joystream%401.7.28/graphql-playground-react-v1.7.28.tgz#24c9c54e14ae0ba13c894738b4b87301f5801b26"
   dependencies:
     "@types/lru-cache" "^4.1.1"
     apollo-link "^1.2.13"
@@ -3081,19 +3081,19 @@
   resolved "https://registry.yarnpkg.com/@josephg/resolvable/-/resolvable-1.0.1.tgz#69bc4db754d79e1a2f17a650d3466e038d94a5eb"
   integrity sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg==
 
-"@joystream/hydra-common@3.1.0-alpha.13", "@joystream/hydra-common@^3.1.0-alpha.13":
-  version "3.1.0-alpha.13"
-  resolved "https://registry.yarnpkg.com/@joystream/hydra-common/-/hydra-common-3.1.0-alpha.13.tgz#90292e8aa7cd79014f01faa21a193d39ff403522"
-  integrity sha512-867WpaNRp8qoBakOSPNCtM3KiLipYDk92mWC659qFCG3bjLLTJmnv4TEpfvUMF28oteeis0KxSutu5k5GLao7A==
+"@joystream/hydra-common@3.1.0-alpha.16", "@joystream/hydra-common@^3.1.0-alpha.16":
+  version "3.1.0-alpha.16"
+  resolved "https://registry.yarnpkg.com/@joystream/hydra-common/-/hydra-common-3.1.0-alpha.16.tgz#ae9c140d863c82f7b42e9265fe644125d1ec6cf9"
+  integrity sha512-XG/UvwCBvjjftbyemWGFUzvyB+gYHCZVHtbfthZaaPnq50L+wyCnjWpiFF/PFT3I8cMwj3HT6i8G2lQPdxRVfw==
   dependencies:
     bn.js "^5.1.3"
 
-"@joystream/hydra-db-utils@3.1.0-alpha.13", "@joystream/hydra-db-utils@^3.1.0-alpha.13":
-  version "3.1.0-alpha.13"
-  resolved "https://registry.yarnpkg.com/@joystream/hydra-db-utils/-/hydra-db-utils-3.1.0-alpha.13.tgz#b023a081c63009d7d5524b2fcf6256249c2b55d1"
-  integrity sha512-VbDfDpuKt1Fn2644eGmxoRiS7OhRMJLoSEhbSAbtowhfDPAvWXHpYrM9Hbex+hiqVXF+UENry+wvA6d2rYc8bA==
+"@joystream/hydra-db-utils@3.1.0-alpha.16", "@joystream/hydra-db-utils@^3.1.0-alpha.16":
+  version "3.1.0-alpha.16"
+  resolved "https://registry.yarnpkg.com/@joystream/hydra-db-utils/-/hydra-db-utils-3.1.0-alpha.16.tgz#fbed064cc47f232fb38bb48db03b82bdc357b2c9"
+  integrity sha512-4ABM4ZQ3/ZIDHe0g3u/FrPgef8wnH0dpfTnYx4qtepbr2iHHxW6b4k038Ubpuo0mvJRnnabE0+q4mPYsBGuwoQ==
   dependencies:
-    "@joystream/hydra-common" "^3.1.0-alpha.13"
+    "@joystream/hydra-common" "^3.1.0-alpha.16"
     "@types/ioredis" "^4.17.4"
     bn.js "^5.1.3"
     ioredis "^4.17.3"
@@ -3101,13 +3101,13 @@
     shortid "^2.2.16"
     typeorm "^0.2.25"
 
-"@joystream/hydra-processor@3.1.0-alpha.13":
-  version "3.1.0-alpha.13"
-  resolved "https://registry.yarnpkg.com/@joystream/hydra-processor/-/hydra-processor-3.1.0-alpha.13.tgz#c41687a6aa4ebcc163ada4184ed56110988a3e50"
-  integrity sha512-8VJXb0sJbwUapvgNT39UnSvnOaCw+zZw8vS/K3Qcl9vm1MHlS6Jwxkmkkwrn/mrfVNrwPBYCtjYAFLivUzhIsg==
+"@joystream/hydra-processor@3.1.0-alpha.16":
+  version "3.1.0-alpha.16"
+  resolved "https://registry.yarnpkg.com/@joystream/hydra-processor/-/hydra-processor-3.1.0-alpha.16.tgz#c1f5d6e879d1b39c41706b7dc41069a1e1dcd78a"
+  integrity sha512-hUzl2oR2FCvNd1/no+lX6EPdRNCSZChaAQT8lHBb296Ol/fxCmgW3Faudyrv289Zj3yQNP4EaHCrPHBhvpPG4Q==
   dependencies:
-    "@joystream/hydra-common" "^3.1.0-alpha.13"
-    "@joystream/hydra-db-utils" "^3.1.0-alpha.13"
+    "@joystream/hydra-common" "^3.1.0-alpha.16"
+    "@joystream/hydra-db-utils" "^3.1.0-alpha.16"
     "@oclif/command" "^1.8.0"
     "@oclif/config" "^1"
     "@oclif/errors" "^1.3.3"
@@ -3156,12 +3156,12 @@
     lodash "^4.17.15"
     moment "^2.24.0"
 
-"@joystream/warthog@2.39.0", "@joystream/warthog@^2.40.0":
-  version "2.39.0"
-  resolved "https://registry.yarnpkg.com/@joystream/warthog/-/warthog-2.39.0.tgz#3587b94953aed929bff809a7ba763d495e03170c"
-  integrity sha512-gwZ8oBqcN7Xez8BfBDeDIyMhZ7VcL2paMuj0n3qOplyH+sxsBwgBemDzV6RThmAGi3GOhVVQJqOMq3w6siWqzA==
+"@joystream/warthog@2.41.2", "@joystream/warthog@~2.41.2":
+  version "2.41.2"
+  resolved "https://registry.yarnpkg.com/@joystream/warthog/-/warthog-2.41.2.tgz#6d3cf5c977320d1c77be518e848e011a9699b22d"
+  integrity sha512-1w6aT5P3xiI/HaTtqJrVj4Yp1/gxG8cGTeYgzlwr3iq8J11skwE4rLCHQucHfVueyBX49AaqWrhl+wI2ACqk4Q==
   dependencies:
-    "@apollographql/graphql-playground-react" "https://github.com/Joystream/graphql-playground/releases/download/query-templates%401.7.27/graphql-playground-react-v1.7.27.tgz"
+    "@apollographql/graphql-playground-react" "https://github.com/Joystream/graphql-playground/releases/download/joystream%401.7.28/graphql-playground-react-v1.7.28.tgz"
     "@types/app-root-path" "^1.2.4"
     "@types/bn.js" "^4.11.6"
     "@types/caller" "^1.0.0"
@@ -3218,9 +3218,9 @@
     shortid "^2.2.15"
     type-graphql "^0.17.5"
     typedi "^0.8.0"
-    typeorm "^0.2.32"
+    typeorm "0.2.37"
     typeorm-typedi-extensions "^0.4.1"
-    typescript "^3.9.7"
+    typescript "^4.4"
 
 "@jsdevtools/ono@7.1.3", "@jsdevtools/ono@^7.1.3":
   version "7.1.3"
@@ -5665,9 +5665,9 @@
     "@types/babel__traverse" "*"
 
 "@types/babel__core@^7.1.0":
-  version "7.1.16"
-  resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.16.tgz#bc12c74b7d65e82d29876b5d0baf5c625ac58702"
-  integrity sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==
+  version "7.1.18"
+  resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8"
+  integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==
   dependencies:
     "@babel/parser" "^7.1.0"
     "@babel/types" "^7.0.0"
@@ -18136,6 +18136,13 @@ is-core-module@^2.2.0:
   dependencies:
     has "^1.0.3"
 
+is-core-module@^2.8.0:
+  version "2.8.0"
+  resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548"
+  integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==
+  dependencies:
+    has "^1.0.3"
+
 is-data-descriptor@^0.1.4:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
@@ -24357,6 +24364,11 @@ path-parse@^1.0.6:
   resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
   integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
 
+path-parse@^1.0.7:
+  version "1.0.7"
+  resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
+  integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
 path-root-regex@^0.1.0:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d"
@@ -27490,7 +27502,16 @@ resolve@1.1.7:
   resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
   integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
 
-resolve@1.x, resolve@^1.0.0, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.2.0, resolve@^1.20.0, resolve@^1.8.1:
+resolve@1.x, resolve@^1.0.0:
+  version "1.21.0"
+  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f"
+  integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==
+  dependencies:
+    is-core-module "^2.8.0"
+    path-parse "^1.0.7"
+    supports-preserve-symlinks-flag "^1.0.0"
+
+resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.2.0, resolve@^1.20.0, resolve@^1.8.1:
   version "1.20.0"
   resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
   integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
@@ -28516,18 +28537,18 @@ source-map-resolve@^0.5.0, source-map-resolve@^0.5.2:
     source-map-url "^0.4.0"
     urix "^0.1.0"
 
-source-map-support@^0.5.12, source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.12:
-  version "0.5.19"
-  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
-  integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
+source-map-support@^0.5.12, source-map-support@^0.5.17:
+  version "0.5.21"
+  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
+  integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
   dependencies:
     buffer-from "^1.0.0"
     source-map "^0.6.0"
 
-source-map-support@^0.5.17:
-  version "0.5.21"
-  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
-  integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
+source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.12:
+  version "0.5.19"
+  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
+  integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
   dependencies:
     buffer-from "^1.0.0"
     source-map "^0.6.0"
@@ -29492,6 +29513,11 @@ supports-hyperlinks@^2.0.0, supports-hyperlinks@^2.1.0:
     has-flag "^4.0.0"
     supports-color "^7.0.0"
 
+supports-preserve-symlinks-flag@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
+  integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
 svg-parser@^2.0.0:
   version "2.0.4"
   resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5"
@@ -30721,7 +30747,7 @@ typeorm-typedi-extensions@^0.4.1:
   resolved "https://registry.yarnpkg.com/typeorm-typedi-extensions/-/typeorm-typedi-extensions-0.4.1.tgz#e62e3c8f30021c9b8f258e068d38723dbd64de1d"
   integrity sha512-05hWktQ4zuXzTTUO3ao56yOezlvUuZhH2NRS//m0SOGCAJoVlfPTMHcmDaMSQy/lMfAwPWoIyn+sfK7ONzTdXQ==
 
-typeorm@0.2.34, typeorm@^0.2.25, typeorm@^0.2.32:
+typeorm@0.2.34, typeorm@0.2.37, typeorm@^0.2.25:
   version "0.2.34"
   resolved "https://registry.yarnpkg.com/typeorm/-/typeorm-0.2.34.tgz#637b3cec2de54ee7f423012b813a2022c0aacc8b"
   integrity sha512-FZAeEGGdSGq7uTH3FWRQq67JjKu0mgANsSZ04j3kvDYNgy9KwBl/6RFgMVgiSgjf7Rqd7NrhC2KxVT7I80qf7w==
@@ -30771,7 +30797,7 @@ typescript-tuple@^2.2.1:
   dependencies:
     typescript-compare "^0.0.2"
 
-typescript@2.2.2, typescript@^3.0.3, typescript@^3.3, typescript@^3.8.3, typescript@^3.9.5, typescript@^3.9.7, typescript@^4.0.3, typescript@^4.4.3:
+typescript@2.2.2, typescript@^3.0.3, typescript@^3.3, typescript@^3.8.3, typescript@^3.9.5, typescript@^3.9.7, typescript@^4.0.3, typescript@^4.4, typescript@^4.4.3:
   version "4.4.3"
   resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324"
   integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==