diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 6ba7c70267..c9d8bd47f4 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -24,10 +24,6 @@ updates: schedule: interval: daily open-pull-requests-limit: 10 - - package-ecosystem: npm - directory: "/big-dipper-backend" - schedule: - interval: daily - package-ecosystem: pub directory: "/dart_sdk" schedule: diff --git a/big-dipper-backend/.dockerignore b/big-dipper-backend/.dockerignore deleted file mode 100644 index 7efb511e90..0000000000 --- a/big-dipper-backend/.dockerignore +++ /dev/null @@ -1,6 +0,0 @@ -/node_modules -/.meteor/local -/.github -.git -.envrc -package-lock.json \ No newline at end of file diff --git a/big-dipper-backend/.eslintrc.json b/big-dipper-backend/.eslintrc.json deleted file mode 100644 index bfde7f1a5a..0000000000 --- a/big-dipper-backend/.eslintrc.json +++ /dev/null @@ -1,156 +0,0 @@ -{ - "env": { - "browser": true, - "es6": true, - "node": true - }, - "extends": [ - "eslint:recommended", - "plugin:react/recommended", - "plugin:import/errors", - "plugin:import/warnings", - "@meteorjs/eslint-config-meteor" - ], - "globals": { - "Atomics": "readonly", - "SharedArrayBuffer": "readonly" - }, - "parserOptions": { - "ecmaFeatures": { - "jsx": true - }, - "ecmaVersion": 6, - "sourceType": "module" - }, - "plugins": [ - "import", - "meteor", - "react" - ], - "rules": { - "indent": ["warn", 4], - - "array-bracket-spacing": "off", - "array-callback-return": "off", - "arrow-body-style": "off", - "arrow-parens": "off", - "arrow-spacing": "off", - "block-spacing": "off", - "brace-style": "off", - "class-methods-use-this": "off", - "comma-dangle": "off", - "comma-spacing": "off", - "comma-style": "off", - "consistent-return": "off", - "curly": "off", - "default-case": "off", - "dot-notation": "off", - "eol-last": "off", - "eqeqeq": "off", - "function-paren-newline": "off", - "global-require": "off", - "guard-for-in": "off", - "implicit-arrow-linebreak": "off", - "import/newline-after-import": "off", - "import/no-cycle": "off", - "import/no-duplicates": "off", - "import/no-unresolved": "off", - "import/no-useless-path-segments": "off", - "import/order": "off", - "import/prefer-default-export": "off", - "jsx-a11y/alt-text": "off", - "jsx-a11y/anchor-is-valid": "off", - "jsx-a11y/click-events-have-key-events": "off", - "jsx-a11y/heading-has-content": "off", - "jsx-a11y/no-static-element-interactions": "off", - "jsx-quotes": "off", - "key-spacing": "off", - "keyword-spacing": "off", - "linebreak-style": "off", - "lines-between-class-members": "off", - "max-len": "off", - "meteor/audit-argument-checks": "off", - "no-bitwise": "off", - "no-case-declarations": "off", - "no-console": "off", - "no-continue": "off", - "no-else-return": "off", - "no-empty": "off", - "no-eval": "off", - "no-extra-semi": "off", - "no-fallthrough": "off", - "no-lonely-if": "off", - "no-multi-spaces": "off", - "no-multiple-empty-lines": "off", - "no-nested-ternary": "off", - "no-param-reassign": "off", - "no-plusplus": "off", - "no-prototype-builtins": "off", - "no-restricted-globals": "off", - "no-restricted-syntax": "off", - "no-return-assign": "off", - "no-self-assign": "off", - "no-sequences": "off", - "no-shadow": "off", - "no-throw-literal": "off", - "no-trailing-spaces": "off", - "no-undef": "off", - "no-underscore-dangle": "off", - "no-unneeded-ternary": "off", - "no-unreachable": "off", - "no-unused-expressions": "off", - "no-unused-vars": "off", - "no-use-before-define": "off", - "no-useless-constructor": "off", - "no-var": "off", - "nonblock-statement-body-position": "off", - "object-curly-newline": "off", - "object-curly-spacing": "off", - "object-property-newline": "off", - "object-shorthand": "off", - "one-var": "off", - "one-var-declaration-per-line": "off", - "operator-assignment": "off", - "operator-linebreak": "off", - "option.": "off", - "padded-blocks": "off", - "prefer-const": "off", - "prefer-destructuring": "off", - "prefer-template": "off", - "quote-props": "off", - "quotes": "off", - "radix": "off", - "react/destructuring-assignment": "off", - "react/forbid-prop-types": "off", - "react/jsx-boolean-value": "off", - "react/jsx-closing-bracket-location": "off", - "react/jsx-closing-tag-location": "off", - "react/jsx-curly-spacing": "off", - "react/jsx-first-prop-new-line": "off", - "react/jsx-indent": "off", - "react/jsx-indent-props": "off", - "react/jsx-max-props-per-line": "off", - "react/jsx-no-target-blank": "off", - "react/jsx-no-undef": "off", - "react/jsx-one-expression-per-line": "off", - "react/jsx-props-no-multi-spaces": "off", - "react/jsx-tag-spacing": "off", - "react/jsx-wrap-multilines": "off", - "react/no-access-state-in-setstate": "off", - "react/no-array-index-key": "off", - "react/no-did-update-set-state": "off", - "react/no-unescaped-entities": "off", - "react/no-unused-state": "off", - "react/prefer-stateless-function": "off", - "react/prop-types": "off", - "react/require-default-props": "off", - "react/self-closing-comp": "off", - "react/sort-comp": "off", - "semi": "off", - "semi-spacing": "off", - "space-before-blocks": "off", - "space-in-parens": "off", - "space-infix-ops": "off", - "spaced-comment": "off" - } -} diff --git a/big-dipper-backend/.gitignore b/big-dipper-backend/.gitignore deleted file mode 100644 index 6b1a3e131a..0000000000 --- a/big-dipper-backend/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -.DS_Store -node_modules/ -.vscode -output/ -.envrc -ali-scripts.txt -firebase.json - diff --git a/big-dipper-backend/.meteor/.finished-upgraders b/big-dipper-backend/.meteor/.finished-upgraders deleted file mode 100644 index c07b6ff75a..0000000000 --- a/big-dipper-backend/.meteor/.finished-upgraders +++ /dev/null @@ -1,19 +0,0 @@ -# This file contains information which helps Meteor properly upgrade your -# app when you run 'meteor update'. You should check it into version control -# with your project. - -notices-for-0.9.0 -notices-for-0.9.1 -0.9.4-platform-file -notices-for-facebook-graph-api-2 -1.2.0-standard-minifiers-package -1.2.0-meteor-platform-split -1.2.0-cordova-changes -1.2.0-breaking-changes -1.3.0-split-minifiers-package -1.4.0-remove-old-dev-bundle-link -1.4.1-add-shell-server-package -1.4.3-split-account-service-packages -1.5-add-dynamic-import-package -1.7-split-underscore-from-meteor-base -1.8.3-split-jquery-from-blaze diff --git a/big-dipper-backend/.meteor/.gitignore b/big-dipper-backend/.meteor/.gitignore deleted file mode 100644 index 4083037423..0000000000 --- a/big-dipper-backend/.meteor/.gitignore +++ /dev/null @@ -1 +0,0 @@ -local diff --git a/big-dipper-backend/.meteor/.id b/big-dipper-backend/.meteor/.id deleted file mode 100644 index f872189792..0000000000 --- a/big-dipper-backend/.meteor/.id +++ /dev/null @@ -1,7 +0,0 @@ -# This file contains a token that is unique to your project. -# Check it into your repository along with the rest of this directory. -# It can be used for purposes such as: -# - ensuring you don't accidentally deploy one app on top of another -# - providing package authors with aggregated statistics - -kkzd2ruogx6j.v70fzzjrhvff diff --git a/big-dipper-backend/.meteor/packages b/big-dipper-backend/.meteor/packages deleted file mode 100644 index 4676390b27..0000000000 --- a/big-dipper-backend/.meteor/packages +++ /dev/null @@ -1,39 +0,0 @@ -# Meteor packages used by this project, one per line. -# Check this file (and the other files in this directory) into your repository. -# -# 'meteor add' and 'meteor remove' will edit this file for you, -# but you can also edit it by hand. - -meteor-base@1.5.1 # Packages every Meteor app needs to have -mobile-experience@1.1.0 # Packages for a great mobile UX -mongo@1.15.0 # The database Meteor supports right now -reactive-var@1.0.11 # Reactive variable for tracker -tracker@1.2.0 # Meteor's client-side reactive programming library - -standard-minifier-css@1.8.1 # CSS minifier run for production mode -standard-minifier-js@2.8.0 # JS minifier run for production mode -es5-shim@4.8.0 # ECMAScript 5 compatibility for older browsers -ecmascript@0.16.2 # Enable ECMAScript2015+ syntax in app code -shell-server@0.5.0 # Server-side component of the `meteor shell` command - -less@2.8.0 # Leaner CSS language - -meteortesting:mocha # A package for writing and running your meteor app and package tests with mocha -johanbrook:publication-collector # Test a Meteor publication by collecting its output -static-html@1.3.2 -react-meteor-data -bkruse:pace -dburles:collection-helpers -http@1.4.2 -reywood:publish-composite -jquery -universe:i18n -fourseven:scss -kadira:dochead -check@1.3.1 -ostrio:flow-router-meta -ostrio:flow-router-extra -server-render@0.4.0 -nimble:restivus -meteorhacks:async -webapp diff --git a/big-dipper-backend/.meteor/platforms b/big-dipper-backend/.meteor/platforms deleted file mode 100644 index efeba1b50c..0000000000 --- a/big-dipper-backend/.meteor/platforms +++ /dev/null @@ -1,2 +0,0 @@ -server -browser diff --git a/big-dipper-backend/.meteor/release b/big-dipper-backend/.meteor/release deleted file mode 100644 index 66dd7b6647..0000000000 --- a/big-dipper-backend/.meteor/release +++ /dev/null @@ -1 +0,0 @@ -METEOR@2.7.3 diff --git a/big-dipper-backend/.meteor/versions b/big-dipper-backend/.meteor/versions deleted file mode 100644 index 7f0b3c408e..0000000000 --- a/big-dipper-backend/.meteor/versions +++ /dev/null @@ -1,101 +0,0 @@ -accounts-base@2.2.3 -accounts-password@2.3.1 -allow-deny@1.1.1 -autoupdate@1.8.0 -babel-compiler@7.9.0 -babel-runtime@1.5.1 -base64@1.0.12 -binary-heap@1.0.11 -bkruse:pace@0.5.1 -blaze-tools@1.1.3 -boilerplate-generator@1.7.1 -caching-compiler@1.2.2 -caching-html-compiler@1.2.1 -callback-hook@1.4.0 -check@1.3.1 -coffeescript@1.0.17 -dburles:collection-helpers@1.1.0 -ddp@1.4.0 -ddp-client@2.5.0 -ddp-common@1.4.0 -ddp-rate-limiter@1.1.0 -ddp-server@2.5.0 -diff-sequence@1.1.1 -dynamic-import@0.7.2 -ecmascript@0.16.2 -ecmascript-runtime@0.8.0 -ecmascript-runtime-client@0.12.1 -ecmascript-runtime-server@0.11.0 -ejson@1.1.2 -email@2.2.1 -es5-shim@4.8.0 -fetch@0.1.1 -fourseven:scss@4.15.0 -geojson-utils@1.0.10 -hot-code-push@1.0.4 -html-tools@1.1.3 -htmljs@1.1.1 -http@1.4.4 -id-map@1.1.1 -inter-process-messaging@0.1.1 -johanbrook:publication-collector@1.1.0 -jquery@3.0.0 -kadira:dochead@1.5.0 -launch-screen@1.3.0 -less@2.8.0 -lmieulet:meteor-coverage@3.2.0 -localstorage@1.2.0 -logging@1.3.1 -meteor@1.10.0 -meteor-base@1.5.1 -meteorhacks:async@1.0.0 -meteortesting:browser-tests@1.3.5 -meteortesting:mocha@1.1.5 -meteortesting:mocha-core@7.0.1 -minifier-css@1.6.0 -minifier-js@2.7.4 -minimongo@1.8.0 -mobile-experience@1.1.0 -mobile-status-bar@1.1.0 -modern-browsers@0.1.8 -modules@0.18.0 -modules-runtime@0.13.0 -mongo@1.15.0 -mongo-decimal@0.1.3 -mongo-dev-server@1.1.0 -mongo-id@1.0.8 -nimble:restivus@0.8.13 -npm-mongo@4.3.1 -ordered-dict@1.1.0 -ostrio:flow-router-extra@3.8.1 -ostrio:flow-router-meta@2.1.2 -ostrio:flow-router-title@3.2.2 -promise@0.12.0 -random@1.2.0 -rate-limit@1.0.9 -react-fast-refresh@0.2.3 -react-meteor-data@2.5.1 -reactive-dict@1.3.0 -reactive-var@1.0.11 -reload@1.3.1 -retry@1.1.0 -reywood:publish-composite@1.7.3 -routepolicy@1.1.1 -server-render@0.4.0 -service-configuration@1.3.0 -sha@1.0.9 -shell-server@0.5.0 -simple:json-routes@2.1.0 -socket-stream-client@0.5.0 -spacebars-compiler@1.3.1 -standard-minifier-css@1.8.1 -standard-minifier-js@2.8.0 -static-html@1.3.2 -templating-tools@1.2.2 -tracker@1.2.0 -typescript@4.5.4 -underscore@1.0.10 -universe:i18n@1.32.6 -url@1.3.2 -webapp@1.13.1 -webapp-hashing@1.1.0 diff --git a/big-dipper-backend/.well-known/apple-app-site-association b/big-dipper-backend/.well-known/apple-app-site-association deleted file mode 100644 index 43b3dc46a7..0000000000 --- a/big-dipper-backend/.well-known/apple-app-site-association +++ /dev/null @@ -1,14 +0,0 @@ -{ - "applinks": { - "details": [{ - "appIDs": ["QV67PMQ8H3.xyz.pylons.wallet"], - "components": [{ - "/": "*", - "comment": "" - }] - }] - }, - "webcredentials": { - "apps": ["QV67PMQ8H3.xyz.pylons.wallet"] - } -} \ No newline at end of file diff --git a/big-dipper-backend/API_DOCS.md b/big-dipper-backend/API_DOCS.md deleted file mode 100644 index da4504546e..0000000000 --- a/big-dipper-backend/API_DOCS.md +++ /dev/null @@ -1,167 +0,0 @@ -# API DOCUMENTATION - -## Why APIs in Meteor? -Meteor provides us a package containing both the frontend and the backend. The Web frontend consumes Meteor Methods, but there is no way a Mobile frontend can interact with Meteor other than REST APIs. So, we have added the APIs here using RESTIVUS to make it possible for the mobile side to access the required data. - -## Endpoints - -### 1. Like an NFT -###### Description -This endpoint lets the end user to like or unlike a specific nft. It toggles a user's like i.e. on hitting once the user adds their like, and on hitting again, the user removes their like. The error response mentioned below will be received if any of the arguments is non-string type or is empty. -###### URL -`/api/actions/likes/:cookbookId/:recipeId` -###### Method -`POST` -###### Parameters -`cookbookId` :warning: MUST be a non-empty string -

-`recipeId` :warning: MUST be a non-empty string -###### Body -``` -{ - "userId": "a non-empty string" -} -``` -###### Success Response -``` -{ - "Code": 200, - "Message": "Successful", - "Data": { - "liked": true, - "totalLikes": 7 - } -} -``` -###### Error Response -``` -{ - "Code": 400, - "Message": "invalid request", - "Data": null -} -``` - -### 2. Get Likes on an NFT -###### URL -`/api/actions/likes/:cookbookId/:recipeId` -###### Method -`GET` -###### Parameters -`cookbookId` :warning: MUST be a non-empty string -

-`recipeId` :warning: MUST be a non-empty string -###### Success Response -``` -{ - "Code": 200, - "Message": "Successful", - "Data": { - "totalLikes": 7 - } -} -``` -###### Error Response -``` -{ - "Code": 400, - "Message": "invalid request", - "Data": null -} -``` - -### 3. View an NFT -###### Description -This endpoint lets the end user to view a specific nft. It upserts a user's view i.e. on hitting once the user adds their view, and the same user hitting again won't increment the views of the nft. The error response mentioned below will be received if any of the arguments is non-string type or is empty. -###### URL -`/api/actions/views/:cookbookId/:recipeId` -###### Method -`POST` -###### Parameters -`cookbookId` :warning: MUST be a non-empty string -

-`recipeId` :warning: MUST be a non-empty string -###### Body -``` -{ - "userId": "a non-empty string" -} -``` -###### Success Response -``` -{ - "Code": 200, - "Message": "Successful", - "Data": { - "views": true, - "totalViews": 7 - } -} -``` -###### Error Response -``` -{ - "Code": 400, - "Message": "invalid request", - "Data": null -} -``` - -### 4. Get Views on an NFT -###### URL -`/api/actions/views/:cookbookId/:recipeId` -###### Method -`GET` -###### Parameters -`cookbookId` :warning: MUST be a non-empty string -

-`recipeId` :warning: MUST be a non-empty string -###### Success Response -``` -{ - "Code": 200, - "Message": "Successful", - "Data": { - "totalViews": 7 - } -} -``` -###### Error Response -``` -{ - "Code": 400, - "Message": "invalid request", - "Data": null -} -``` - -### 5. Get Like Status -###### URL -`/api/actions/likes/:userId/:cookbookId/:recipeId` -###### Method -`GET` -###### Parameters -`recipeId` :warning: MUST be a non-empty string -

-`cookbookId` :warning: MUST be a non-empty string -

-`recipeId` :warning: MUST be a non-empty string -###### Success Response -``` -{ - "Code": 200, - "Message": "Successful", - "Data": { - "liked": true - } -} -``` -###### Error Response -``` -{ - "Code": 400, - "Message": "invalid request", - "Data": null -} -``` - diff --git a/big-dipper-backend/CHANGELOG.md b/big-dipper-backend/CHANGELOG.md deleted file mode 100644 index 69dc847cf2..0000000000 --- a/big-dipper-backend/CHANGELOG.md +++ /dev/null @@ -1,177 +0,0 @@ -# Changelog -## [v0.41.x-14.3] -* Added Apple app associate file. - -## [v0.41.x-14.2] -* Fixes Ledger WebUSB + Chrome 91.x issue (https://github.com/LedgerHQ/ledgerjs/issues/607) - -## v0.41.x-14.1 -* [#426] Updated proposal tally result, added activeVotingPower value to active proposal collection. -* [#524] Added `noreferrer` to Banner links - -## v0.41.x-14 -* [#488] Updated missing proposer address in proposals. -* [#486] Fixed delegators voting power display on gov proposals -* [#493] Fixed validators address showing as undefined in links. -* [#491] Fixed query that are called when the gov module is active. -* [#522] Fixed validator commission tx with correct validator operator address when signing with Ledger. - -## v0.41.x-13 -* [#484] Replaced delegation list displayed under validator page with total number of delegations. -* [#509] Added display list of addresses available for user to login with when connecting the Ledger. -* [#497] Fetch keybase with timer settings -* [#403] Unified token display to show stake denom with 6 decimal places (abandon displaying values in mint denom) and improved the txs by adding gas caluclations before broadcasting the tx to ensure the message will not fail due to insufficient funds to cover the fees. - -## v0.41.x-12 -* [#387] Added Bluetooth Ledger support -* Fix transaction simulation bug - -## v0.41.x-11 -* Replaced Random Validators and Chart components with Latest Blocks and Latest Transactions components on homepage -* Update meta data to align with setting values - -## v0.41.x-10 -* Bump Meteor to v2.2 -## v0.41.x-9 -* Added banner support. Banner settings are loading remotely from the url defined in settings. - -## v0.41.x-8 - -* [#487] Fixed typo in the query which make validator power change tx lookup failed. -* Fixed an issue on displaying individual transaction. -* Updated Ledger app name checking so that it will follows the value defined in settings. -* [#213] Updated `@ledgerhq/hw-transport-webusb` pkg to v5.49.0 to fix Ledger errors on Windows10 - -## v0.41.x-7 (Stargate compatible) - -* [#472] Fix missing transactions -* [#449] Migrate API to gRPC gateway -* [#360] Update validator info correctly -* [#311] Update validator status to display validators correctly -* [#321] Enable module related components which will display 0 or hide the components when the Cosmos SDK modules are not implemented -* [#485] Query proposal tally results correctly -* Update transaction skeletons for Ledger to work properly -* Config correct Ledger app and app version - -## v0.39.x-7 - -* [#452] Fix VP Chart not being shown - -## v0.39.x-6 - -* Index transactions with timer settings - -## v0.39.x-5 - -* [#444] Fetch keybase in async function with query interval contolled by settings -* Fix missing value in VP distribution - -## v0.39.x-4 - -* [#436] Index transactions in a separate process -* Update to Meteor 1.12 -* [#435] Show inflation as 0% if there is no inflation (no minting module integrated) -* [#433] Create tx index for MsgCreateValidator -* Use react-json-view instead of JSONPretty -* Update uptime with signing info -* [#280] Remove reading genesis file -* Remove plural denom -* Simplify validator storing -* Get data and show proposal based on enabled modules -* Calculate validator uptime in async -* Update validator status - -## v0.39.x-3 - -* [#431] Create correct index for trasaction events - -## v0.39.x-2 - -* [#392] Fixed account page not rendering when the account is empty -* [#413] Fixed validator page error after logging in with Ledger - -## v0.39.x-1 - -* [#425] Fixed `commission_rates` might not exists in `validator.commission` object - -## v0.39.x - -* [#420] Update brand font -* [#418] Fix avatar at delegation pane -* [#404] Replace "casted" with "cast" -* [#421] Fix NaN on account delegation pane -* [#417] Fix NaN on account total value -* [#416] Add version number to UI -* Bump Meteor to v1.11.1 and update some dependency pcakges with security issues -* Dockerize big-dipper -* [#306] Display errors with SDK v0.38 format -* [#301] Using Jazzicon as avatar if no Keybase avatar exists -* [#297] Prettify unrecognized JSON messages -* [#294] Fixed cloneDeep typo in Account section for case-sensitve filesystems. -* [#284] Support Tendermint v0.33 block format -* [#346] Changed "Governanza" typo to "Gobernanza" in Spanish Translation -* [#375] Fixed the Commission Value Calculations that caused Account Page to break -* [#372] Fixed Redelegation List showing on all account pages - -## v0.37.x-patch-11 - -* [#303] Fixed wrong validator display in unjail message -* [#294] Fixed cloneDeep typo in Account section for case-sensitve filesystems. -* [#298] Fixed NaN values for Rewards and Commissions that were displayed after clicking Withdrawal Button -* [#288] Add Secp256p1 validator pubkey type. A new paramemter in public setting is added to control whether the validator pubkey is seck256p1 or default ed25519. If `secp256k1` in `settings.json` is set to `true`, it will see all validator pubkeys in Secp256k1 format. -* Fixed Commission bug in AccountTooltip to read rates from validator.commission.commission_rates.rate & validator.commission.rate -* Added Russian transation -* Fixed Unjail message with a correct account address. -* [#323] Display rewards amount in activities list. -* [#327] Fixed error in Proposals section to accept String and Number as a value in Changes table -* Hide Italian it-IT Translation -* Fixed hash overflow on mobile in Transaction Section (Added scroller) - -## v0.37.x-patch-10.1 - -* Fixed a display bug when there is no denom value in the tx fee - -## v0.37.x-patch-10 - -### Release Date: 24 Feb 2020 - -* Changed the structure of `coins.js` utility and `settings.json`. Information of multiple denoms can be defined in `settings.json`. A `bondDenom` should be defined and coins information is defined in `coins` array. `powerReduction` is the `token / power` ratio which is set to be `1,000,000` by default in the `staking` module. The display value of coins should be set correctly in the `coins` array. An example is as below. - - ```json - "bondDenom": "umuon", - "powerReduction": 1000000, - "coins": [ - { - "denom": "umuon", - "displayName": "Muon", - "displayNamePlural": "Muons", - "fraction": 1000000 - } - ], - ``` - -* Update Meteor to v1.9 -* [#267] Fixed Fee Decimal Places -* [#263] Fixed Tx fee to be displayed in Minting or Staking Denom depending on the fee amount -* [#262] Fixed Validator Popover in Account Section -* [#260] Fixed Token unit to display the correct Denom Name/Type -* [#227] Added additional info to be displayed for Parameter Change Proposal and Community Pool Spend Proposal -* [#276] Added Coin Selection Dropdown in Account Section to support multiple denomination -* [#289] Updated Coin Selection Dropdown to display the denom as the display (Staking) denom and only show when more than one type of Coin is available. - -## v0.37.x-patch-9 - -### Release Date: 22 Jan 2020 - -* Added features to disable `gov` and `mint` modules if they don't exist -* [#254] Fixed the delegation order in delegation panel -* [#253] Fixed total delegation became wrong after adding rewards -* Added Polish transation -* Added Spanish translation -* [#240] Fixed commission sorting -* [#239] Fixed Coin untilty. Now it shows coins from the chain matching with the `settings.json` if configuration exist. Please note there is a new `coins` object in the [`settings.json`](https://github.com/forbole/big_dipper/blob/master/default_settings.json#L17) to define the display parameters of each coin -* [#238] Styled the tooltip not to block the validator info -* [#230] Removed the delegation shares in account's delegation panel -* [#229] Fixed the account address display -* [#228] Added rewards column to account's delegation panel -* Added memo button in each transaction diff --git a/big-dipper-backend/CODE_OF_CONDUCT.md b/big-dipper-backend/CODE_OF_CONDUCT.md deleted file mode 100644 index 517857313c..0000000000 --- a/big-dipper-backend/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,76 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, sex characteristics, gender identity and expression, -level of experience, education, socio-economic status, nationality, personal -appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at referral@forbole.com. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -[homepage]: https://www.contributor-covenant.org - -For answers to common questions about this code of conduct, see -https://www.contributor-covenant.org/faq diff --git a/big-dipper-backend/CONTRIBUTING.md b/big-dipper-backend/CONTRIBUTING.md deleted file mode 100644 index 06491c1523..0000000000 --- a/big-dipper-backend/CONTRIBUTING.md +++ /dev/null @@ -1,19 +0,0 @@ -Big Dipper is always free and open. We welcome everyone to contribute to the Big Dipper as in contributing to the Cosmos Network. - -You can contribute in the following ways: - -## Submit issues -If you find any errors, bugs, questions, feature requests when you are using the Big Dipper (on [Cosmos](https://cosmos.bigdipper.live), [IRIS](https://iris.bigdipper.live), etc.), please do not hestitate to submit any [issues](https://github.com/forbole/big_dipper/issues). Any bug report and comments are welcome. We are always open to learn more about how this application can help Cosmos users. - -## Create Pull Request -If you are generous enough and can resolve some issues the Big Dipper is experiencing, please build everything in your own branch and create a Pull Request to us. We will review and merge if necessary. - -If it's just some simple errors like typo or missing a variable, etc, please create a Pull Request directly. If it's a feature change or some severe issues, please create an issue before creating a Pull Request. - -There are some code conventions to follow: - -1. App-wise constants are in **ALL CAPITAL LETTERS**, eg. `RPC`, `LCD` -2. Variables are in **camelCase** unless specified otherwise, eg. `bulkProposals`, `averageBlockTime` -3. Backend methods are in the format of **{scope}.{methodName}**, eg. `Validators.getAllDelegations`, `'Transactions.findDelegation'` - -If you have any question, do not hestiate to ping [Kwun](https://github.com/kwunyeung). diff --git a/big-dipper-backend/Dockerfile b/big-dipper-backend/Dockerfile deleted file mode 100644 index e64f36ab5b..0000000000 --- a/big-dipper-backend/Dockerfile +++ /dev/null @@ -1,21 +0,0 @@ -FROM geoffreybooth/meteor-base:2.7.3 - -COPY . app/ - -RUN bash app/scripts/build.sh - -FROM node:14.19.3-alpine - -RUN apk --no-cache add \ - bash \ - g++ \ - make - - -COPY --from=0 output/bundle app/bundle/ -COPY --from=0 app/scripts app/scripts - -RUN bash app/scripts/post_build.sh - -CMD ["node","--max-old-space-size=4096", "app/bundle/main.js"] - diff --git a/big-dipper-backend/LICENSE b/big-dipper-backend/LICENSE deleted file mode 100644 index e9bc737ead..0000000000 --- a/big-dipper-backend/LICENSE +++ /dev/null @@ -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 2018 Forbole Limited - - 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. diff --git a/big-dipper-backend/README.md b/big-dipper-backend/README.md deleted file mode 100644 index b580ca6114..0000000000 --- a/big-dipper-backend/README.md +++ /dev/null @@ -1,110 +0,0 @@ -# Big Dipper :sparkles: - -Built on Pylons - -## Projects running on mainnets - -[Explore Akash with Big Dipper](https://akash.bigdipper.live/) - -[Explore Band Protocol with Big Dipper](https://band.bigdipper.live/) - -[Explore Cosmos Hub with Big Dipper](https://cosmos.bigdipper.live) - -[Explore e-Money with Big Dipper](https://e-money.network/) - -[Explore IRISnet with Big Dipper](https://iris.bigdipper.live) - -[Explore IOV with Big Dipper](https://big-dipper.iov-mainnet-2.iov.one/) - -[Explore Kava with Big Dipper](https://kava.bigdipper.live/) - -[Explore LikeCoin Chain with Big Dipper](http://likecoin.bigdipper.live/) - -## Projects with testnets - -[Agoric](https://explorer.testnet.agoric.com/) - -[Desmos Network](https://morpheus.desmos.network/) - -[Persistence](https://explorer.persistence.one/) - -[Regen Network](https://explorer.regen.vitwit.com/) - -[Sentinel](https://explorer.sentinel.co/) - -## How to run The Big Dipper - -1. Copy `default_settings.json` to `settings.json`. -2. Update the RPC and API URLs -3. Update Bech32 address prefixes -4. Add coins settings -5. Update Ledger settings - -### Requirements - -- [Meteor v2.x](https://www.meteor.com/install) - -### Run in local - -```sh -meteor npm install --save -meteor --settings settings.json -``` - -### Run via docker-compose - -```sh -METEOR_SETTINGS=$(cat settings.json) docker-compose up -``` - -### Run in production - -```sh -./scripts/build.sh -``` - -It will create a packaged Node JS tarball in `Linux x86_64` architecture at `../output`. Deploy that packaged Node JS project with process manager like [PM2](https://github.com/Unitech/pm2) or [Phusion Passenger](https://www.phusionpassenger.com/library/walkthroughs/basics/nodejs/fundamental_concepts.html). - -You will need to have [MongoDB >= 4.x](https://docs.mongodb.com/manual/administration/install-on-linux/) installed and [setup environment variables](https://guide.meteor.com/deployment.html#environment) correctly in order run in production. For more details on how to deploy a Meteor application, please refer to the offical documentation on [Custom Deployment](https://guide.meteor.com/deployment.html#custom-deployment). - -### Docker builds - -big-dipper docker image is a multi stage build that is based on [disney/meteor-base](https://github.com/disney/meteor-base/). When you change the meteor or node version, change the lines `FROM geoffreybooth/meteor-base:2` and `FROM node:12.16.1-alpine` respectively. When running the image follow the same [environment variable principles](https://guide.meteor.com/deployment.html#environment) mentioned above. If you get an `non-zero exit (137)` error during the build phase, increase docker container memory and swap limit. Ideally you can set up [remote docker host](https://www.digitalocean.com/community/tutorials/how-to-provision-and-manage-remote-docker-hosts-with-docker-machine-on-ubuntu-18-04) to prevent your computer's fan going brrrrrr. - - -#### passing configs as .env -json configs can be passed as .env in docker-compose as such - -``` -... -environment: - ROOT_URL: ${APP_ROOT_URL:-http://localhost} - MONGO_URL: mongodb://mongo:27017/meteor - PORT: 3000 - METEOR_SETTINGS: ${METEOR_SETTINGS} - FIREBASE_CONFIG: ${FIREBASE_CONFIG} - -... -``` -.env file - -``` -FIREBASE_CONFIG= -ROOT_URL=https: -MONGO_URL=mongodb://127.0.0.1:3001 -METEOR_SETTINGS= - -``` - - ---- - -## Donations :pray: - -The Big Dipper is always free and open. Anyone can use to monitor available Cosmos hub or zones, or port to your own chain built with Cosmos SDK. We welcome any supports to help us improve this project. - -ATOM: `cosmos1n67vdlaejpj3uzswr9qapeg76zlkusj5k875ma`\ -BTC: `bc1qye4k27zsn5nehzded6jwsvzg8qd6kgvxyhckts`\ -ETH: `0x8CAb9F3fC6bBBD819050365627FC6B79d0ea73e6` - -And by downloading and using [Brave](https://brave.com/big517). diff --git a/big-dipper-backend/SECURITY.md b/big-dipper-backend/SECURITY.md deleted file mode 100644 index 47794cdae7..0000000000 --- a/big-dipper-backend/SECURITY.md +++ /dev/null @@ -1,12 +0,0 @@ -# Security Policy - -## Supported Versions - -| Version | Supported | -| -------- | ------------------ | -| 0.37.x | :white_check_mark: | -| 0.38.x | :white_check_mark: | - -## Reporting a Vulnerability - -Please report any security issues via email to . diff --git a/big-dipper-backend/both/document.html b/big-dipper-backend/both/document.html deleted file mode 100644 index db0134fc37..0000000000 --- a/big-dipper-backend/both/document.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - Big Dipper | Built on Pylons - - - - - - - - - - - -
- diff --git a/big-dipper-backend/both/i18n/en-us.i18n.yml b/big-dipper-backend/both/i18n/en-us.i18n.yml deleted file mode 100644 index f8e507855b..0000000000 --- a/big-dipper-backend/both/i18n/en-us.i18n.yml +++ /dev/null @@ -1,308 +0,0 @@ -_locale: 'en-US' -_namespace: '' - -common: - height: 'Height' - voter: 'Voter' - votingPower: 'Voting Power' - addresses: 'Addresses' - amounts: 'Amounts' - delegators: 'delegators' - block: 'block' - blocks: 'blocks' - precommit: 'precommit' - precommits: 'precommits' - last: 'last' - backToList: 'Back to List' - collapse: 'Collapse' - information: 'Information' - time: 'Time' - hash: 'Hash' - more: 'More' - fullStop: '.' - searchPlaceholder: 'Search with tx hash / block height / address' - cancel: 'Cancel' - ok: 'Ok' - retry: 'Retry' - rewards: 'Rewards' - bondedTokens: 'Bonded Tokens' - totalNumOfDelegations: 'Total Number of Delegations' - signIn: 'Sign In' - generatingAddresses: 'Generating addresses' - selectAddress: 'Select address to log in with from the list below:' - defaultAddressMessage: 'Your default address is account 0.' - back: 'Back' - next: 'Next' - txOutOfGasMessage: 'Unable to broadcast the transaction due to insufficient balance. Ensure you have enough funds available on your account to cover the transaction fees.' - estimatedGasPrice: 'Estimated gas price is {$gasPrice}.' -navbar: - siteName: 'BIG DIPPER' - version: '-' - validators: 'Validators' - blocks: 'Blocks' - transactions: 'Transactions' - art_sales: 'Art Sales' - activity_feed: 'Activity Feed' - proposals: 'Proposals' - votingPower: 'Voting Power' - lang: "ENG" - english: "English" - spanish: "Español" - italian: "Italiano" - polish: "Polski" - russian: "Русский" - chinese: "中文(繁)" - simChinese: "中文(简)" - portuguese: "Português" - license: 'LICENSE' - forkMe: 'Fork me!' -consensus: - consensusState: 'Consensus State' - round: 'Round' - step: 'Step' -chainStates: - price: 'Price' - marketCap: 'Market Cap' - inflation: 'Inflation' - communityPool: 'Community Pool' -chainStatus: - startMessage: 'The chain is going to start in' - stopWarning: 'The chain appears to be stopped for {$time}! Feed me with new blocks 😭!' - latestHeight: 'Latest Block Height' - averageBlockTime: 'Average Block Time' - all: 'All' - now: 'Now' - allTime: 'All Time' - lastMinute: 'Last Minute' - lastHour: 'Last Hour' - lastDay: 'Last Day' - seconds: 'seconds' - activeValidators: 'Active Validators' - outOfValidators: 'out of {$totalValidators} validators' - onlineVotingPower: 'Online Voting Power' - fromTotalStakes: '{$percent} from {$totalStakes} {$denomPlural}' -analytics: - blockTimeHistory: 'Block Time History' - averageBlockTime: 'Average Block Time' - blockInterval: 'Block Interval' - noOfValidators: 'No. of Validators' -validators: - randomValidators: 'Random Validators' - moniker: 'Moniker' - uptime: 'Uptime' - selfPercentage: 'Self%' - commission: 'Commission' - lastSeen: 'Last Seen' - status: 'Status' - jailed: 'Jailed' - navActive: 'Active' - navInactive: 'Inactive' - active: 'Active Validators' - inactive: 'Inactive Validators' - listOfActive: 'Here is a list of active validators.' - listOfInactive: 'Here is a list of inactive validators.' - validatorDetails: 'Validator Details' - lastNumBlocks: 'Last {$numBlocks} blocks' - validatorInfo: 'Validator Info' - operatorAddress: 'Operator Address' - selfDelegationAddress: 'Self-Delegate Address' - deeplinks: 'Deeplinks' - commissionRate: 'Commission Rate' - maxRate: 'Max Rate' - maxChangeRate: 'Max Change Rate' - selfDelegationRatio: 'Self Delegation Ratio' - proposerPriority: 'Proposer Priority' - delegatorShares: 'Delegator Shares' - userDelegateShares: 'Shares Delegated by you' - tokens: 'Tokens' - unbondingHeight: 'Unbonding Height' - unbondingTime: 'Unbonding Time' - jailedUntil: 'Jailed Until' - powerChange: 'Power Change' - delegations: 'Delegations' - transactions: 'Transactions' - validatorNotExists: 'Validator does not exist.' - backToValidator: 'Back to Validator' - missedBlocks: 'Missed Blocks' - missedPrecommits: 'Missed Precommits' - missedBlocksTitle: 'Missed blocks of {$moniker}' - totalMissed: 'Total missed' - block: 'Block' - missedCount: 'Miss Count' - iDontMiss: 'I do not miss ' - lastSyncTime: 'Last sync time' - delegator: 'Delegator' - amount: 'Amount' -blocks: - block: 'Block' - proposer: 'Proposer' - latestBlocks: 'Latest blocks' - noBlock: 'No block.' - numOfTxs: 'No. of Txs' - numOfTransactions: 'No. of Transactions' - notFound: 'No such block found.' -nfts: - id: 'ID' - purchase_nfts: 'Purchased NFTs' - notFound: 'No Nfts data found.' - residual: 'Residual' - quanitiy: 'Quantity' - noBlock: 'No block.' - name: 'Title' - nft_rul: 'NFT_URL' - description: 'Description' - resalelink: 'Resalelink' -transactions: - transaction: 'Transaction' - transactions: 'Transactions' - notFound: 'No transaction found.' - activities: 'Activities' - txHash: 'Tx Hash' - valid: 'Valid' - fee: 'Fee' - noFee: 'No fee' - gasUsedWanted: 'Gas (used / wanted)' - noTxFound: 'No such transaction found.' - noValidatorTxsFound: 'No transaction related to this validator was found.' - memo: 'Memo' - transfer: 'Transfer' - staking: 'Staking' - distribution: 'Distribution' - governance: 'Governance' - slashing: 'Slashing' -proposals: - notFound: 'No proposal found.' - listOfProposals: 'Here is a list of governance proposals.' - proposer: 'Proposer' - proposal: 'proposal' - proposals: 'Proposals' - proposalID: 'Proposal ID' - title: 'Title' - status: 'Status' - submitTime: 'Submit Time' - depositEndTime: 'Deposit End Time' - votingStartTime: 'Voting Start Time' - votingEndTime: 'End Voting Time' - totalDeposit: 'Total Deposit' - description: 'Description' - proposalType: 'Proposal Type' - proposalStatus: 'Proposal Status' - notStarted: 'not started' - final: 'final' - deposit: 'Deposit' - tallyResult: 'Tally Result' - yes: 'Yes' - abstain: 'Abstain' - no: 'No' - noWithVeto: 'No with Veto' - percentageVoted: '{$percent} of online voting power has been voted.' - validMessage: 'This proposal is {$tentative}valid.' - invalidMessage: 'Less than {$quorum} of voting power is voted. This proposal is invalid.' - moreVoteMessage: 'It will be a valid proposal once {$moreVotes} more votes are cast.' - key: 'Key' - value: 'Value' - amount: 'Amount' - recipient: 'Recipient' - changes: 'Changes' - subspace: 'Subspace' -recipes: - purchase_message: 'Please use the Pylons app to purchase!' - notFound: 'No Recipe data found.' - listOfRecipes: 'Here is a list of recipes.' - listOfItems: 'Here is a list of items for sale.' - recipe: 'Recipe' - recipes: 'Recipes' - snapshots: 'Snapshots' - recipeID: 'Recipe ID' - cookbook: 'Cookbook' - cookbooks: 'Cookbooks' - cookbookID: 'Cookbook ID' - cookbookowner: 'Cookbook Owner' - price: 'Price' - artist: 'Artist' - copies: 'Copies' - total_copies: 'Total Copies' - name: 'Name' - blockInterval: 'BlockInterval' - title: 'Title' - status: 'Status' - submitTime: 'Submit Time' - depositEndTime: 'Deposit End Time' - votingStartTime: 'Voting Start Time' - votingEndTime: 'End Voting Time' - totalDeposit: 'Total Deposit' - description: 'Description' - sender: 'Sender' - email: 'SupportEmail' - developer: 'Developer' - deeplinks: 'DeepLinks' - disabled: 'Disabled' - yes: 'Yes' - no: 'No' - key: 'Key' - value: 'Value' - amount: 'Amount' - recipient: 'Recipient' - changes: 'Changes' - subspace: 'Subspace' -votingPower: - distribution: 'Voting Power Distribution' - pareto: 'Pareto Principle (20/80 rule)' - minValidators34: 'Min no. of validators hold 34%+ power' -accounts: - accountDetails: 'Account Details' - available: 'Available' - delegated: 'Delegated' - unbonding: 'Unbonding' - rewards: 'Rewards' - total: 'Total' - notFound: 'This account does not exist. Are you looking for a wrong address?' - validators: 'Validators' - shares: 'Shares' - mature: 'Mature' - no: 'No ' - none: 'No ' - delegation: 'Delegation' - plural: 's' - signOut: 'Sign out' - signInText: 'You are signed in as ' - toLoginAs: 'To log in as' - signInWithLedger: 'Sign In With Ledger' - signInWarning: 'Please make sure your Ledger device is turned on and {$network} App {$version} or above is opened.' - pleaseAccept: 'please accept in your Ledger device.' - noRewards: 'No Rewards' - BLESupport: 'Bluetooth connection is currently only supported on Google Chrome Browser.' -activities: - single: 'A' - happened: 'happened.' - senders: 'The following sender(s)' - sent: 'sent' - receivers: 'to the following receipient(s)' - received: 'received' - failedTo: 'failed to ' - to: 'to' - from: 'from' - operatingAt: 'operating at' - withMoniker: 'with moniker' - withTitle: 'with title' - withA: 'with a' - withAmount: 'with {$amount}' -messageTypes: - send: 'Send' - cookbooks: 'Cookbooks' - createAccount: 'CreateAccount' - multiSend: 'Multi Send' - createValidator: 'Create Validator' - editValidator: 'Edit Validator' - delegate: 'Delegate' - undelegate: 'Undelegate' - redelegate: 'Redelegate' - submitProposal: 'Submit Proposal' - deposit: 'Deposit' - vote: 'Vote' - withdrawComission: 'Withdraw Commission' - withdrawReward: 'Withdraw Reward' - modifyWithdrawAddress: 'Modify Withdraw Address' - unjail: 'Unjail' - IBCTransfer: 'IBC Transfer' - IBCReceive: 'IBC Receive' diff --git a/big-dipper-backend/both/i18n/es-es.i18n.yml b/big-dipper-backend/both/i18n/es-es.i18n.yml deleted file mode 100644 index 2b28751041..0000000000 --- a/big-dipper-backend/both/i18n/es-es.i18n.yml +++ /dev/null @@ -1,238 +0,0 @@ -_locale: 'es-ES' -_namespace: '' - -common: - height: 'Altura' - voter: 'Votante' - votingPower: 'Poder de votación' - addresses: 'Direcciones' - amounts: 'Cantidades' - delegators: 'delegadores' - block: 'bloque' - blocks: 'bloques' - precommit: 'precommit' - precommits: 'precommits' - last: 'último' - backToList: 'Volver a la lista' - information: 'Información' - time: 'Tiempo' - hash: 'Hash' - more: 'Más' - fullStop: '.' - searchPlaceholder: 'Buscar con el tx hash / altura de bloque / dirección' - cancel: 'Cancelar' - retry: 'Reintentar' -navbar: - siteName: 'BIG DIPPER' - validators: 'Validadores' - blocks: 'Bloques' - transactions: 'Transacciones' - activity_feed: 'Activity Feed' - art_sales: 'Art Sales' - proposals: 'Propuestas' - votingPower: 'Poder de voto' - lang: 'ES' - english: 'English' - spanish: 'Español' - italian: 'Italiano' - polish: 'Polski' - russian: 'Русский' - chinese: '中文(繁)' - simChinese: '中文(简)' - portuguese: 'Português' - license: 'LICENCIA' - forkMe: 'Fork me!' -consensus: - consensusState: 'Estado de consenso' - round: 'Ronda' - step: 'Paso' -chainStates: - price: 'Precio' - marketCap: 'Capitalización de mercado' - inflation: 'Inflación' - communityPool: 'Community Pool' -chainStatus: - startMessage: 'La cadena comenzará en' - stopWarning: 'La cadena parece estar parada por {$time}! Dame de comer nuevos bloques 😭!' - latestHeight: 'Última altura de bloque' - averageBlockTime: 'Tiempo medio de bloque' - all: 'Todo' - now: 'Ahora' - allTime: 'Todo el tiempo' - lastMinute: 'Último minuto' - lastHour: 'Última hora' - lastDay: 'Último día' - seconds: 'segundos' - activeValidators: 'Validadores activos' - outOfValidators: 'fuera de {$totalValidators} validadores' - onlineVotingPower: 'Poder de voto en línea' - fromTotalStakes: '{$percent} de {$totalStakes} {$denomPlural}' -analytics: - blockTimeHistory: 'Historial de tiempo de bloque' - averageBlockTime: 'Tiempo medio de bloque' - blockInterval: 'Intervalo de bloque' - noOfValidators: 'No. de validadores' -validators: - randomValidators: 'Validadores aleatorios' - moniker: 'Moniker' - uptime: 'Tiempo de funcionamiento' - selfPercentage: 'Self%' - commission: 'Comisión' - lastSeen: 'Última vez visto' - status: 'Estado' - jailed: 'Encarcelado' - navActive: 'Activo' - navInactive: 'Inactivo' - active: 'Validadores activos' - inactive: 'Validadores inactivos' - listOfActive: 'Esta es una lista de los validadores activos.' - listOfInactive: 'Esta es una lista de los validadores inactivos.' - validatorDetails: 'Detalles del validador' - lastNumBlocks: 'Último {$numBlocks} bloques' - validatorInfo: 'Información del validador' - operatorAddress: 'Dirección de operador' - selfDelegationAddress: 'Dirección de autodelegación' - deeplinks: 'Deeplinks' - commissionRate: 'Ratio de comisión' - maxRate: 'Ratio máximo' - maxChangeRate: 'Ratio máximo de cambio' - selfDelegationRatio: 'Ratio de autodelegación' - proposerPriority: '' - delegatorShares: 'Acciones del delegador' - userDelegateShares: 'Acciones delegadas por ti' - tokens: 'Tokens' - unbondingHeight: 'Altura ' - unbondingTime: 'Tiempo para desvincularse' - powerChange: 'Power Change' - delegations: 'Delegaciones' - transactions: 'Transacciones' - validatorNotExists: 'El validador no existe.' - backToValidator: 'Volver al validador' - missedBlocks: 'Bloques perdidos' - missedPrecommits: 'Precommits perdidos' - missedBlocksTitle: 'Bloques perdidos de {$moniker}' - totalMissed: 'Total perdido' - block: 'Bloque' - missedCount: 'Perdidos' - iDontMiss: 'No he perdido ' - lastSyncTime: 'Último tiempo de sincronización' - delegator: 'Delegador' - amount: 'Cantidad' -blocks: - block: 'Bloque' - proposer: 'Proposer' - latestBlocks: 'Últimos bloques' - noBlock: 'No bloque.' - numOfTxs: 'No. de txs' - numOfTransactions: 'No. de transacciones' - notFound: 'No se ha encontrado tal bloque.' -transactions: - transaction: 'Transacción' - transactions: 'Transacciones' - notFound: 'No se encuentra la transacción.' - activities: 'Movimientos' - txHash: 'Tx Hash' - valid: 'Validez' - fee: 'Comisión' - noFee: 'No fee' - gasUsedWanted: 'Gas (usado / deseado)' - noTxFound: 'No se encontró ninguna transacción de este tipo.' - noValidatorTxsFound: 'No se encontró ninguna transaccion relacionada con este validador.' - memo: 'Memo' - transfer: 'Transferencia' - staking: 'Participación' - distribution: 'Distribución' - governance: 'Gobernanza' - slashing: 'Recorte' -proposals: - notFound: 'No se ha encontrado el proposal.' - listOfProposals: 'Here is a list of governance proposals.' - proposer: 'Proposer' - proposal: 'propuesta' - proposals: 'Propuestas' - proposalID: 'ID de la propuesta' - title: 'Título' - status: 'Estado' - submitTime: 'Plazo de entrega' - depositEndTime: 'Final del tiempo de depósito' - votingStartTime: 'Hora de inicio de la votación' - votingEndTime: 'Fin del tiempo de votación' - totalDeposit: 'Depósito total' - description: 'Descripción' - proposalType: 'Tipo de propuesta' - proposalStatus: 'Estado de la propuesta' - notStarted: 'no iniciado' - final: 'final' - deposit: 'Depósito' - tallyResult: 'Resultado del recuento' - yes: 'Si' - abstain: 'Abstención' - no: 'No' - none: 'None' - noWithVeto: 'No con Veto' - percentageVoted: '{$percent} del poder de voto online ha votado.' - validMessage: 'Este proposal es {$tentative}valido.' - invalidMessage: 'Menos del {$quorum} del poder de voto ha votado. Este proposal es invalido.' - moreVoteMessage: 'Será una propuesta válida una vez que {$moreVotes} más votos se emitan.' - key: 'Key' - value: 'Value' - amount: 'Amount' - recipient: 'Recipient' - changes: 'Changes' - subspace: 'Subspace' -votingPower: - distribution: 'Distribución del poder de Voto' - pareto: 'Pareto Principle (20/80 rule)' - minValidators34: 'Min no. of validators hold 34%+ power' -accounts: - accountDetails: 'Detalles de la cuenta' - available: 'Disponible' - delegated: 'Delegado' - unbonding: 'Unbonding' - rewards: 'Rewards' - total: 'Total' - notFound: 'Esta cuenta no existe. ¿Estas buscando una dirección equivocada?' - validators: 'Validadores' - shares: 'Shares' - mature: 'Mature' - no: 'No ' - delegation: 'Delegación' - plural: 's' - signOut: 'Cerrar sesión' - signInText: 'Estas registrado como ' - toLoginAs: 'Para conectarse como' - signInWithLedger: 'Registrarse con Ledger' - signInWarning: 'Por favor, asegúrese de que su dispositivo Ledger esté conectado y la App de Cosmos con la version 1.5.0 o superior esta abierta.' - pleaseAccept: 'por favor, acepta en tu dispositivo Ledger.' - noRewards: 'No Rewards' -activities: - single: 'A' - happened: 'sucedió.' - senders: 'Los siguientes remitentes' - sent: 'enviado a' - receivers: 'al siguiente destinatario' - received: 'recibido' - failedTo: 'failed to ' - to: 'a' - from: 'desde' - operatingAt: 'operando en' - withMoniker: 'con el moniker' - withTitle: 'con el título' - withA: 'con' -messageTypes: - send: 'Enviar' - multiSend: 'Multi Envío' - createValidator: 'Crear validador' - editValidator: 'Editar validador' - delegate: 'Delegar' - undelegate: 'Undelegar' - redelegate: 'Redelegar' - submitProposal: 'Enviar Proposal' - deposit: 'Depositar' - vote: 'Voto' - withdrawComission: 'Enviar comisión' - withdrawReward: 'Retirar recompensa' - modifyWithdrawAddress: 'Modificar la dirección de envío' - unjail: 'Unjail' - IBCTransfer: 'IBC Transfer' - IBCReceive: 'IBC Receive' diff --git a/big-dipper-backend/both/i18n/it-IT.i18n.yml b/big-dipper-backend/both/i18n/it-IT.i18n.yml deleted file mode 100644 index 1e57c837f6..0000000000 --- a/big-dipper-backend/both/i18n/it-IT.i18n.yml +++ /dev/null @@ -1,237 +0,0 @@ -_locale: 'it-IT' -_namespace: '' - -common: - height: 'Altezza' - voter: 'Votante' - votingPower: 'Potere di voto' - addresses: 'Indirizzi' - amounts: 'Importi' - delegators: 'delegatori' - block: 'blocco' - blocks: 'blocchi' - precommit: 'precommit' - precommits: 'precommit' - last: 'ultimo' - backToList: 'Torna alla Lista' - information: 'Informazioni' - time: 'Tempo' - hash: 'Hash' - more: 'Di più' - fullStop: '.' - searchPlaceholder: 'Cerca hash transazione / altezza blocco / indirizzo' - cancel: 'Annulla' - retry: 'Riprova' - rewards: 'Reward' -navbar: - siteName: 'BIG DIPPER' - validators: 'Validatori' - blocks: 'Blocchi' - transactions: 'Transazioni' - proposals: 'Proposte' - votingPower: 'Potere di Voto' - lang: "IT" - english: "English" - spanish: "Español" - italian: "Italiano" - polish: "Polski" - russian: "Русский" - chinese: "中文(繁)" - simChinese: "中文(简)" - portuguese: "Português" - license: 'LICENZA' - forkMe: 'Forkami!' -consensus: - consensusState: 'Stato del consenso' - round: 'Round' - step: 'Step' -chainStates: - price: 'Prezzo' - marketCap: 'Market Cap' - inflation: 'Inflazione' - communityPool: 'Community Pool' -chainStatus: - startMessage: 'The chain partirà tra' - stopWarning: 'La chain sembra essersi fermata per {$time}! Dammi nuovi blocchi 😭!' - latestHeight: 'Ultima Altezza di Blocco' - averageBlockTime: 'Tempo di Blocco Medio' - all: 'Tutti' - now: 'Ora' - allTime: 'Tutti i tempi' - lastMinute: 'Ultimo Minuto' - lastHour: 'Ultima ora' - lastDay: 'Ultimo giorno' - seconds: 'secondi' - activeValidators: 'Validatori Attivi' - outOfValidators: 'di {$totalValidators} validatori' - onlineVotingPower: 'Voting Power Attivo' - fromTotalStakes: '{$percent} di {$totalStakes} {$denomPlural}' -analytics: - blockTimeHistory: 'Storia Tempo di Blocco' - averageBlockTime: 'Tempo di Blocco Medio' - blockInterval: 'Intervallo di Blocco' - noOfValidators: 'N. Validatori' -validators: - randomValidators: 'Validatori random' - moniker: 'Moniker' - uptime: 'Uptime' - selfPercentage: '% autodelegata' - commission: 'Commissioni' - lastSeen: 'Visto per ultimo' - status: 'Stato' - jailed: 'Jailato' - navActive: 'Attivo' - navInactive: 'Inattivo' - active: 'Tutti i Validatori' - inactive: 'Validatori inattivi' - listOfActive: 'Ecco una lista di validatori attivi.' - listOfInactive: 'Ecco una lista di validatori inattivi.' - validatorDetails: 'Dettagli validatore' - lastNumBlocks: 'Utlimi {$numBlocks} blocchi' - validatorInfo: 'Info Validatore' - operatorAddress: 'Indirizzo Operatore' - selfDelegationAddress: 'Indirizzo di Auto-Delega' - deeplinks: 'Deeplinks' - commissionRate: 'Tasso di commissioni' - maxRate: 'Tasso massima' - maxChangeRate: 'Cambiamento del tasso massimo' - selfDelegationRatio: 'Tasso di Auto Delega' - proposerPriority: 'Priorità del proponente' - delegatorShares: 'Percentuale dei delegati' - userDelegateShares: 'Percentuale delega personale' - tokens: 'Token' - unbondingHeight: 'Altezza di unbond' - unbondingTime: 'Tempo di unbond' - powerChange: 'Modifica del potere' - delegations: 'Delegazioni' - transactions: 'Transazioni' - validatorNotExists: 'Validatore inesistente' - backToValidator: 'Torna al validatore' - missedBlocks: 'Blocchi mancanti' - missedPrecommits: 'Precommit mancati' - missedBlocksTitle: 'Manca il blocco: {$moniker}' - totalMissed: 'Totale perso' - block: 'Blocco' - missedCount: 'Mancato conteggio' - iDontMiss: 'Non mi manca' - lastSyncTime: 'Ultima sincronizzazione ora' - delegator: 'Delegante' - amount: 'Importo' -blocks: - block: 'Blocco' - proposer: 'Proponente' - latestBlocks: 'Ultimi blocchi' - noBlock: 'Nessun blocco' - numOfTxs: 'N. Txs' - numOfTransactions: 'N. di transazioni' - notFound: 'Nessun blocco trovato.' -transactions: - transaction: 'Transazione' - transactions: 'Transazioni' - notFound: 'Nessuna transazione trovata' - activities: 'Attività' - txHash: 'Hash Tx' - valid: 'Valido' - fee: 'Fee' - noFee: 'Nessuna fee' - gasUsedWanted: 'Gas (usato / voluto)' - noTxFound: 'Nessuna transazione trovata.' - noValidatorTxsFound: 'Nessuna transazione relativa a questo validatore trovata' - memo: 'Memo' - transfer: 'Trasferimento' - staking: 'Staking' - distribution: 'Distribuzione' - governance: 'Governance' - slashing: 'Slashing' -proposals: - notFound: 'Nessuna proposta trovata.' - listOfProposals: 'Questa è la lista delle proposte di governance' - proposer: 'Proponente' - proposal: 'Proposta' - proposals: 'Proposte' - proposalID: 'ID Proposta' - title: 'Titolo' - status: 'Stato' - submitTime: 'Ora invio' - depositEndTime: 'Ora di fine deposito' - votingStartTime: 'Ora di inizio votazione' - votingEndTime: 'Ora di fine votazione' - totalDeposit: 'Deposito totale' - description: 'Descrizione' - proposalType: 'Tipo di proposta' - proposalStatus: 'Stato della proposta' - notStarted: 'Non iniziato' - final: 'Finale' - deposit: 'Deposito' - tallyResult: 'Risultato conteggio' - yes: 'Sì' - abstain: 'Astenersi' - no: 'No' - noWithVeto: 'No con Veto' - percentageVoted: '{$percent} di voti raccolti tra i votanti attivi.' - validMessage: 'Questa proposta è {$tentative}valida.' - invalidMessage: 'Sono stati raccolti meno del {$quorum} di voti. Questa proposta è invalida.' - moreVoteMessage: 'Sarà una proposta valida quando {$moreVotes} più voti di ora saranno raccolti.' - key: 'Key' - value: 'Value' - amount: 'Amount' - recipient: 'Recipient' - changes: 'Changes' - subspace: 'Subspace' -votingPower: - distribution: 'Distribuzione del potere di voto' - pareto: 'Principio di Pareto (regola 20/80)' - minValidators34: 'Min n. di validatori che possiede il 34%+ di potere' -accounts: - accountDetails: 'Dettagli account' - available: 'Disponibile' - delegated: 'Delegati' - unbonding: 'Unbonding' - rewards: 'Rewards' - total: 'Totale' - notFound: "Questo account non esiste. Forse hai inserito l'indirizzo sbagliato?" - validators: 'Validatori' - shares: 'Share' - mature: 'Maturo' - no: 'No ' - none: 'Nessuno' - delegation: 'Delega' - plural: '' - signOut: 'Esci' - signInText: 'Registrati come' - toLoginAs: 'Accedi come' - signInWithLedger: 'Registrati con un Ledger' - signInWarning: 'Per favore assicurati che il tuo Ledger sia connesso e {$network} App {$version} or above che sia aperto.' - pleaseAccept: 'Per favore accetta nel tuo Ledger' - noRewards: 'Nessun reward' -activities: - single: 'Un (male), una (female)' - happened: 'è accaduto.' - senders: 'I seguenti mittenti' - sent: 'Inviato' - receivers: 'I seguenti destinatati' - received: 'Ricevuto' - failedTo: 'Ha fallito a ' - to: 'A' - from: 'Da' - operatingAt: 'che operano presso' - withMoniker: 'con moniker' - withTitle: 'con titolo' - withA: 'con un (male) / una (female)' -messageTypes: - send: 'Invia' - multiSend: 'Invio multipo' - createValidator: 'Crea un validatore' - editValidator: 'Modifica un validatore' - delegate: 'Delega' - undelegate: 'Rimuovi delega' - redelegate: 'Ridelega' - submitProposal: 'Invia proposta' - deposit: 'Deposita' - vote: 'Vota' - withdrawComission: 'Ritira una commissione' - withdrawReward: 'Ottieni un reward' - modifyWithdrawAddress: 'Modifica indirizzo di ritiro' - unjail: 'Unjail' - IBCTransfer: 'Trasferisci IBC' - IBCReceive: 'Ricevi IBC' diff --git a/big-dipper-backend/both/i18n/pl-PL.i18n.yml b/big-dipper-backend/both/i18n/pl-PL.i18n.yml deleted file mode 100644 index 86d344f869..0000000000 --- a/big-dipper-backend/both/i18n/pl-PL.i18n.yml +++ /dev/null @@ -1,237 +0,0 @@ -_locale: 'pl-PL' -_namespace: '' - -common: - height: 'Wysokość' - voter: 'Głosujący' - votingPower: 'Siła Głosu' - addresses: 'Adres' - amounts: 'Kwota' - delegators: 'Delegatorzy' - block: 'blok' - blocks: 'bloki' - precommit: 'precommit' - precommits: 'precommits' - last: 'ostatni' - backToList: 'Powrtót do Listy' - information: 'Informacje' - time: 'Czas' - hash: 'Hash' - more: 'Więcej' - fullStop: '.' - searchPlaceholder: 'Wyszukaj adres / transakcję / wysokość bloku' - cancel: 'Anuluj' - retry: 'Spróbuj ponownie' - rewards: 'Nagrody' -navbar: - siteName: 'Wielki Wóz' - validators: 'Walidatorzy' - blocks: 'Bloki' - transactions: 'Transakcje' - proposals: 'Propozycje' - votingPower: 'Siła Głosu' - lang: "PL" - english: "English" - spanish: "Español" - italian: "Italiano" - polish: "Polski" - russian: "Русский" - chinese: "中文(繁)" - simChinese: "中文(简)" - portuguese: "Português" - license: 'LICENCJA' - forkMe: 'Fork me!' -consensus: - consensusState: 'Status Konsensusu' - round: 'Runda' - step: 'Etap' -chainStates: - price: 'Cena' - marketCap: 'Kapitalizacja rynkowa' - inflation: 'Inflacja' - communityPool: 'Zasoby Społeczności' -chainStatus: - startMessage: 'Łańcuch bloków danych rozpocznie działanie za ' - topWarning: 'Wygląda na to że, łańcuch bloków danych zatrzymał się na {$time}! Odśwież stronę i nakarm mnie nowymi blokami 😭!' - latestHeight: 'Ostatnia wysokość bloku' - averageBlockTime: 'Średni Czas Bloku' - all: 'Całość' - now: 'Teraz' - allTime: 'Cały Czas' - lastMinute: 'Ostatnia Minuta' - lastHour: 'Ostatnia Godzina' - lastDay: 'Ostatni Dzień' - seconds: 'sekund' - activeValidators: 'Aktywni Walidatorzy' - outOfValidators: 'z grona {$totalValidators} walidatorów' - onlineVotingPower: 'Siła Głosu Online' - fromTotalStakes: '{$percent} spośród {$totalStakes} {$denomPlural}' -analytics: - blockTimeHistory: 'Czas Bloków' - averageBlockTime: 'Średni Czas Bloku' - blockInterval: 'Interwał Bloku' - noOfValidators: 'Liczba Walidatorów' -validators: - randomValidators: 'Losowo Wybrani Walidatorzy' - moniker: 'Moniker' - uptime: 'Dyspozycyjność' - selfPercentage: 'Self%' - commission: 'Prowizja' - lastSeen: 'Ostatnio widziany' - status: 'Status' - jailed: 'Jailed' - navActive: 'Aktywni' - navInactive: 'Nieaktywni' - active: 'Aktywni Walidatorzy' - inactive: 'Nieaktywni Walidatorzy' - listOfActive: 'Lista aktywnych Walidatorów' - listOfInactive: 'Lista nieaktywnych Walidatorów' - validatorDetails: 'Szczegóły Walidatora' - lastNumBlocks: 'Ostatnie {$numBlocks} bloków' - validatorInfo: 'Szczegóły Walidatora' - operatorAddress: 'Adres Operatora' - selfDelegationAddress: 'Adres Delegacji Self' - deeplinks: 'Deeplinks' - commissionRate: 'Wysokość prowizji' - maxRate: 'Maksymalna Stawka' - maxChangeRate: 'Maksymalna Stawka Zmiany Prowizji' - selfDelegationRatio: 'Proporcja Delegacji Self' - proposerPriority: 'Piorytet Propozycji' - delegatorShares: 'Akcje Delegującego' - userDelegateShares: 'Akcje Oddelegowane przez Ciebie' - tokens: 'Tokeny' - unbondingHeight: 'Wysokość Unbonding' - unbondingTime: 'Czas Unbonding' - powerChange: 'Zmiana Siły Głosu' - delegations: 'Delegacje' - transactions: 'Transakcje' - validatorNotExists: 'Walidator nie istnieje.' - backToValidator: 'Powrtót do Walidatora' - missedBlocks: 'Pominięte Bloki' - missedPrecommits: 'Pominięte Precommits' - missedBlocksTitle: ‘Pominięte Bloki od {$moniker}' - totalMissed: 'Łącznie pominięto' - block: 'Blok' - missedCount: 'Liczba pominiętych' - iDontMiss: 'Żadne bloki nie zostały pominięte' - lastSyncTime: 'Ostatni czas synch' - delegator: 'Delegujący' - amount: 'Kwota' -blocks: - block: 'Blok' - proposer: 'Autor Propozycji' - latestBlocks: 'Ostatnie Bloki' - noBlock: 'Ilość Bloków' - numOfTxs: 'Liczba Txs' - numOfTransactions: 'Liczba Transakcji' - notFound: 'Nie znaleziono bloku.' -transactions: - transaction: 'Transakcja' - transactions: 'Transakcje' - notFound: 'Nie znaleziono transakcji.' - activities: 'Aktywność' - txHash: 'Tx Hash' - valid: 'Ważna' - fee: 'Opłata' - noFee: 'Bezpłatnie' - gasUsedWanted: 'Gaz (użyty/ wymagany)' - noTxFound: 'Nie znaleziono podanej transakcji.' - noValidatorTxsFound: 'Nie znaleziono żadnej transakcji dla podanego Walidatora' - memo: 'Memo' - transfer: 'Wysłane' - staking: 'Udziały' - distribution: 'Dystrybucja' - governance: 'Administracja' - slashing: 'Cięcia' -proposals: - notFound: Nie znaleziono propozycji.' - listOfProposals: 'Poniżej znajduje się lista propozycji administracyjnych.' - proposer: 'Autor Propozycji' - proposal: 'propozycja' - proposals: 'Propozycje' - proposalID: 'ID Propozycji' - title: 'Tytuł' - status: 'Status' - submitTime: 'Czas Wysłania' - depositEndTime: 'Czas Końcowy dla Skladania Depozytu' - votingStartTime: 'Czas Rozpoczęcia Głosowania' - votingEndTime: 'Czas Końcowy Głosowania' - totalDeposit: 'Kwota Depozytu' - description: 'Szczegóły' - proposalType: 'Typ Propozycji' - proposalStatus: 'Status Propozycji' - notStarted: 'nie rozpoczęto' - final: 'końcowy' - deposit: 'Depozyt' - tallyResult: 'Wyniki Tally' - yes: 'Tak' - abstain: 'Wstrzymaj się od Głosu' - no: 'Nie' - noWithVeto: 'Nie z Veto' - percentageVoted: '{$percent} Głosów Online zostalo oddanych' - validMessage: 'Podana propozycja jest {$tentative}ważna.' - invalidMessage: 'Mniej niż {$quorum} głosów zostało oddanych. Podana propozycja jest nieważna.' - moreVoteMessage: 'Propozycja zostanie uznana za ważną jeśli {$moreVotes} lub więcej głosów zostanie oddanych.' - key: 'Key' - value: 'Value' - amount: 'Kwota' - recipient: 'Odbiorca' - changes: 'Zmiany' - subspace: 'Subspace' -votingPower: - distribution: 'Podział Siły Głosu' - pareto: 'Zasada Pareta (zasada 20/80)' - minValidators34: 'Co najmniej 34% Walidatorów ma prawo do głosowania.' -accounts: - accountDetails: 'Szczegóły Konta' - available: 'Dostępe' - delegated: 'Oddelegowane' - unbonding: 'Unbonding' - rewards: 'Nagrody' - total: 'Łącznie' - notFound: 'Konto nie istnieje. Sprawdź, czy adres odbiorcy został prawidłowo wpisany.' - validators: 'Walidatorzy' - shares: 'Akcje' - mature: 'Dojrzały' - no: 'Nie ' - none: 'Brak ' - delegation: 'Delegacja' - plural: '' - signOut: 'Wyloguj' - signInText: 'Zalogowany jako ' - toLoginAs: 'Aby zalogować się jako ' - signInWithLedger: 'Zaloguj się z Ledgerem' - signInWarning: 'Upewnij się, że Twój Ledger jest podłączony do komputera oraz aplikacja {$network} App {$version} lub nowsza jest uruchomiona.' - pleaseAccept: 'zaakceptuj połączenie na Twoim Ledgerze.' - noRewards: 'Brak Nagród' -activities: - single: ' ' - happened: 'został wykonany' - senders: 'Nadawca' - sent: 'wysłał' - receivers: 'do podanych odbiorców/cy' - received: 'otrzymał' - failedTo: 'Nie udało się' - to: 'do' - from: 'od' - operatingAt: 'operujący pod adresem' - withMoniker: 'z monikerem' - withTitle: 'pod tytułem' - withA: 'razem z' -messageTypes: - send: 'Wysłał' - multiSend: 'Wysłał Multi' - createValidator: 'Utwórz Walidatora' - editValidator: 'Edytuj Walidatora' - delegate: 'Oddelegował' - undelegate: 'Wycofał Oddelegowane Tokeny' - redelegate: 'Oddelegował Ponownie' - submitProposal: 'Wyśłał Propozycję' - deposit: 'Wpłacił Depozyt' - vote: 'Zagłosował' - withdrawComission: 'Wypłacił Prowizję' - withdrawReward: 'Wypłacił Nagrody' - modifyWithdrawAddress: 'Zmienił adres do wypłaty' - unjail: 'Unjail' - IBCTransfer: 'Wyślij IBC' - IBCReceive: 'Odbierz IBC' diff --git a/big-dipper-backend/both/i18n/pt-BR.i18n.yml b/big-dipper-backend/both/i18n/pt-BR.i18n.yml deleted file mode 100644 index 7f881f93ed..0000000000 --- a/big-dipper-backend/both/i18n/pt-BR.i18n.yml +++ /dev/null @@ -1,236 +0,0 @@ -_locale: 'pt-BR' -_namespace: '' - -common: - height: 'Altura' - voter: 'Eleitor' - votingPower: 'Poder de voto' - addresses: 'Endereços' - amounts: 'Quantidades' - delegators: 'delegadores' - block: 'bloco' - blocks: 'blocos' - precommit: 'precommit' - precommits: 'precommits' - last: 'último' - backToList: 'Voltar para lista' - information: 'Informação' - time: 'Data e hora' - hash: 'Hash' - more: 'Mais' - fullStop: '.' - searchPlaceholder: 'Pesquise por tx hash / altura do bloco / endereço' - cancel: 'Cancelar' - retry: 'Tentar novamente' - rewards: 'Recompensas' -navbar: - siteName: 'BIG DIPPER' - validators: 'Validadores' - blocks: 'Blocos' - transactions: 'Transações' - proposals: 'Propostas' - votingPower: 'Poder de voto' - lang: "pt-BR" - english: "English" - spanish: "Español" - italian: "Italiano" - polish: "Polski" - chinese: "中文(繁)" - simChinese: "中文(简)" - portuguese: "Português" - license: 'LICENÇA' - forkMe: 'Fork me!' -consensus: - consensusState: 'Estado de consenso' - round: 'Rodada' - step: 'Etapa' -chainStates: - price: 'Preço' - marketCap: 'Valor de mercado' - inflation: 'Inflação' - communityPool: 'Pool da comunidade' -chainStatus: - startMessage: 'A cadeia vai começar em' - stopWarning: 'A cadeia parece ter parado por {$time}! Alimente-me com novos blocos 😭!' - latestHeight: 'Última altura de bloco' - averageBlockTime: 'Tempo médio de bloco' - all: 'Tudo' - now: 'Agora' - allTime: 'Todo tempo' - lastMinute: 'Último minuto' - lastHour: 'Última hora' - lastDay: 'Último dia' - seconds: 'segundos' - activeValidators: 'Validadores ativos' - outOfValidators: 'de {$totalValidators} validadores' - onlineVotingPower: 'Poder de votação online' - fromTotalStakes: '{$percent} de {$totalStakes} {$denomPlural}' -analytics: - blockTimeHistory: 'Histórico de tempo de bloco' - averageBlockTime: 'Tempo médio de bloco' - blockInterval: 'Intervalo de bloco' - noOfValidators: 'Nº de validadores' -validators: - randomValidators: 'Validadores aleatórios' - moniker: 'Apelido' - uptime: 'Tempo de atividade' - selfPercentage: 'Self%' - commission: 'Comissão' - lastSeen: 'Visto pela última vez' - status: 'Status' - jailed: 'Engaiolado' - navActive: 'Ativo' - navInactive: 'Inativo' - active: 'Validadores Ativos' - inactive: 'Validadores Inativos' - listOfActive: 'Aqui está uma lista de validadores ativos.' - listOfInactive: 'Aqui está uma lista de validadores inativos.' - validatorDetails: 'Detalhes do validador' - lastNumBlocks: 'Últimos {$numBlocks} blocos' - validatorInfo: 'Informação do validador' - operatorAddress: 'Endereço do operador' - selfDelegationAddress: 'Endereço de auto-delegação' - deeplinks: 'Deeplinks' - commissionRate: 'Taxa de Comissão' - maxRate: 'Taxa máxima' - maxChangeRate: 'Taxa máxima de alteração' - selfDelegationRatio: 'Razão de auto-delegação' - proposerPriority: 'Prioridade do proponente' - delegatorShares: 'Ações do delegador' - userDelegateShares: 'Ações delegadas por você' - tokens: 'Tokens' - unbondingHeight: 'Altura de desvinculação' - unbondingTime: 'Tempo de desvinculação' - powerChange: 'Mudança de poder' - delegations: 'Delegações' - transactions: 'Transações' - validatorNotExists: 'O validador não existe.' - backToValidator: 'Voltar para validador' - missedBlocks: 'Blocos perdidos' - missedPrecommits: 'Precommits perdidos' - missedBlocksTitle: 'Blocos perdidos por {$moniker}' - totalMissed: 'Total perdido' - block: 'Bloco' - missedCount: 'Contagem de perdidos' - iDontMiss: 'Não há perdidos ' - lastSyncTime: 'Última sincronização' - delegator: 'Delegador' - amount: 'Quantidade' -blocks: - block: 'Bloco' - proposer: 'Proponente' - latestBlocks: 'Últimos Blocos' - noBlock: 'Sem bloco.' - numOfTxs: 'No. de Txs' - numOfTransactions: 'Nº de transações' - notFound: 'Nenhum bloco encontrado.' -transactions: - transaction: 'Transação' - transactions: 'Transações' - notFound: 'Nenhuma transação encontrada.' - activities: 'Atividades' - txHash: 'Tx Hash' - valid: 'Validade' - fee: 'Taxa' - noFee: 'Sem taxa' - gasUsedWanted: 'Gas (usado / desejado)' - noTxFound: 'Nenhuma transação encontrada.' - noValidatorTxsFound: 'Nenhuma transação relacionada a este validador foi encontrada.' - memo: 'Memo' - transfer: 'Transferência' - staking: 'Participação' - distribution: 'Distribuição' - governance: 'Governança' - slashing: 'Cortando' -proposals: - notFound: 'Nenhuma proposta encontrada.' - listOfProposals: 'Aqui está uma lista de propostas de governança.' - proposer: 'Proponente' - proposal: 'proposta' - proposals: 'Propostas' - proposalID: 'ID da proposta' - title: 'Título' - status: 'Status' - submitTime: 'Tempo de envio' - depositEndTime: 'Fim do tempo de depósito' - votingStartTime: 'Hora do início da votação' - votingEndTime: 'Fim do tempo de votação' - totalDeposit: 'Depósito Total' - description: 'Descrição' - proposalType: 'Tipo de proposta' - proposalStatus: 'Status da proposta' - notStarted: 'não iniciado' - final: 'final' - deposit: 'Depósito' - tallyResult: 'Resultado da contagem' - yes: 'Sim' - abstain: 'Abstenção' - no: 'Não' - noWithVeto: 'Não com Veto' - percentageVoted: '{$percent} do poder de voto já votou.' - validMessage: 'Esta proposta é {$tentative}válida.' - invalidMessage: 'Menos de {$ quorum} do poder de voto foi votado. Esta proposta é inválida..' - moreVoteMessage: 'Será uma proposta válida uma vez que {$moreVotes} mais votos sejam enviados.' - key: 'Chave' - value: 'Valor' - amount: 'Quantidade' - recipient: 'Recebedor' - changes: 'Alterações' - subspace: 'Subespaço' -votingPower: - distribution: 'Distribuição do poder de voto' - pareto: 'Princípio de Pareto (regra 20/80)' - minValidators34: 'Número mínimo de validadores que detem 34%+ de poder' -accounts: - accountDetails: 'Detalhes da conta' - available: 'disponível' - delegated: 'delegado' - unbonding: 'desvinculação' - rewards: 'Recompensas' - total: 'Total' - notFound: 'Essa conta não existe. Você está informando o endereço correto?' - validators: 'Validadores' - shares: 'Ações' - mature: 'Mature' - no: 'Não ' - none: 'Sem ' - delegation: 'delegação' - plural: 's' - signOut: 'Sair' - signInText: 'Você está conectado como ' - toLoginAs: 'Para entrar como' - signInWithLedger: 'Entrar com Ledger' - signInWarning: 'Certifique-se de que seu dispositivo Ledger esteja conectado e o {$network} App {$version} ou superior esteja aberto.' - pleaseAccept: 'por favor, aceite em seu dispositivo Ledger.' - noRewards: 'Sem recompensas' -activities: - single: 'A' - happened: 'aconteceu.' - senders: 'O(s) seguinte(s) remetente(s)' - sent: 'enviado' - receivers: 'para o(s) seguinte(s) destinatário(s)' - received: 'recebido' - failedTo: 'falhou em' - to: 'para' - from: 'de' - operatingAt: 'operado por' - withMoniker: 'com o apelido' - withTitle: 'com o título' - withA: 'com' -messageTypes: - send: 'Enviou' - multiSend: 'Envio múltiplo' - createValidator: 'Criar Validador' - editValidator: 'Editar Validador' - delegate: 'Delegar' - undelegate: 'Undelegar' - redelegate: 'Redelegar' - submitProposal: 'Enviar proposta' - deposit: 'Depósito' - vote: 'Vote' - withdrawComission: 'Retirar Comissão' - withdrawReward: 'Retirar Recompensa' - modifyWithdrawAddress: 'Modificar Endereço de Retirada' - unjail: 'Sair da jaula' - IBCTransfer: 'IBC transferido' - IBCReceive: 'IBC recebido' diff --git a/big-dipper-backend/both/i18n/ru-RU.i18n.yml b/big-dipper-backend/both/i18n/ru-RU.i18n.yml deleted file mode 100644 index 02b681ace2..0000000000 --- a/big-dipper-backend/both/i18n/ru-RU.i18n.yml +++ /dev/null @@ -1,252 +0,0 @@ -_locale: 'ru-RU' -_namespace: '' - -common: - height: 'Высота Блока' - voter: 'Избиратель' - votingPower: 'Право Голоса' - addresses: 'Адреса' - amounts: 'Суммы' - delegators: 'Делегаторы' - block: 'Блок' - blocks: 'Блоки' - precommit: 'Прекоммит' - precommits: 'Прекоммиты' - last: 'Последний' - backToList: 'Назад к списку' - information: 'Информация' - time: 'Время' - hash: 'Хэш' - more: 'Дальше' - fullStop: '.' - searchPlaceholder: 'Поиск по хэшу сделки / высоте блока / адресу' - cancel: 'Отмена' - retry: 'Повторить попытку' - rewards: 'Награды' - bondedTokens: 'Bonded Tokens' - totalNumOfDelegations: 'Всего Делегирований' - signIn: 'Войти' - generatingAddresses: 'Генерация адресов' - selectAddress: 'Выберите адрес, с которым хотите авторизоваться, из списка ниже:' - defaultAddressMessage: 'Ваш адрес по умолчанию это счет 0.' - back: 'Назад' - next: 'Вперед' - txOutOfGasMessage: 'Транзакция не осуществлена: недостаточный баланс. Убедитесь, что вашего баланса достаточно, чтобы покрыть комиссию.' - estimatedGasPrice: 'Примерная цена газа {$gasPrice}.' -navbar: - siteName: 'BIG DIPPER' - version: '-' - validators: 'Валидаторы' - blocks: 'Блоки' - transactions: 'Транзакции' - proposals: 'Предложения' - votingPower: 'Право голоса' - lang: "RU" - english: "English" - spanish: "Español" - italian: "Italiano" - polish: "Polski" - russian: "Русский" - chinese: "中文(繁)" - simChinese: "中文(简)" - portuguese: "Português" - license: 'ЛИЦЕНЗИЯ' - forkMe: Форк!' -consensus: - consensusState: 'Состояние консенсуса' - round: 'Раунд' - step: 'Этап' -chainStates: - price: 'Цена' - marketCap: 'Рыночная капитализация' - inflation: 'Инфляция' - communityPool: 'Коммьюнити пул' -chainStatus: - startMessage: 'Чейн будет запущен в' - stopWarning: 'Чейн не запущен уже {$time}! Накорми меня новыми блоками 😭!' - latestHeight: 'Последняя Высота Блока' - averageBlockTime: 'Среднее Время Блока' - all: 'Всё' - now: 'Сейчас' - allTime: 'За Все Время' - lastMinute: 'За Последнюю Минуту' - lastHour: 'За Последний Час' - lastDay: 'За Последний День' - seconds: 'секунды' - activeValidators: 'Активные валидаторы' - outOfValidators: 'из {$totalValidators} валидаторов' - onlineVotingPower: 'Онлайн Право Голоса' - fromTotalStakes: '{$percent} из {$totalStakes} {$denomPlural}' -analytics: - blockTimeHistory: 'История Времени Блока' - averageBlockTime: 'Среднее Время Блока' - blockInterval: 'Интервал Блока' - noOfValidators: 'Количество валидаторов' -validators: - randomValidators: 'Случайные Валидаторы' - moniker: 'Название' - uptime: 'Аптайм' - selfPercentage: '% самоделегирования' - commission: 'Комиссия' - lastSeen: 'Последний раз был онлайн' - status: 'Статус' - jailed: 'Jailed' - navActive: 'Активный' - navInactive: 'Неактивный' - active: 'Активные Валидаторы' - inactive: 'Неактивные Валидаторы' - listOfActive: 'Вот список активных валидаторов.' - listOfInactive: 'Вот список неактивных валидаторов.' - validatorDetails: 'Детали Валидатора' - lastNumBlocks: 'Последние {$numBlocks} блоков' - validatorInfo: 'Информация О Валидаторе' - operatorAddress: 'Адрес Оператора' - selfDelegationAddress: 'Адрес Самоделегирования' - deeplinks: 'Deeplinks' - commissionRate: 'Ставка Комиссии' - maxRate: 'Максимальная Ставка' - maxChangeRate: 'Максимальная Ставка Изменения' - selfDelegationRatio: 'Коэффициент Самоделегирования' - proposerPriority: 'Приоритет предложения' - delegatorShares: 'Доли делегатора' - userDelegateShares: 'Доли, делегированные вами' - tokens: 'Токены' - unbondingHeight: 'Высота Un-Бондинг' - unbondingTime: 'Время Un-Бондинг' - jailedUntil: 'Jailed До' - powerChange: 'Изменение власти' - delegations: 'Делегации' - transactions: 'Транзакции' - validatorNotExists: 'Валидатора не существует.' - backToValidator: 'Назад К Валидатору' - missedBlocks: 'Пропущенные Блоки' - missedPrecommits: 'Пропущенные Прекоммиты' - missedBlocksTitle: 'Пропущенные блоки {$moniker}' - totalMissed: 'Всего пропущено' - block: 'Блок' - missedCount: 'Пропущено' - iDontMiss: "Я не пропускаю" - lastSyncTime: 'Последнее время синхронизации' - delegator: 'Делегатор' - amount: 'Сумма' -blocks: - block: 'Блок' - proposer: 'Предложение' - latestBlocks: 'Последние блоки' - noBlock: 'Нет блока.' - numOfTxs: 'Количество транзакций' - numOfTransactions: 'Количество транзакций' - notFound: 'Такого блока не найдено.' -transactions: - transaction: 'Транзакция' - transactions: 'Транзакции' - notFound: 'Транзакция не найдена.' - activities: 'Активность' - txHash: 'Хэш транзакции' - valid: 'Действительна' - fee: 'Комиссия' - noFee: 'Без комиссии' - gasUsedWanted: 'Газ (использовано / хотелось)' - noTxFound: 'Транзакция не найдена' - noValidatorTxsFound: 'Транзакция, связанная с этом валидатором, не найдена.' - memo: 'Комментарий' - transfer: 'Передача' - staking: 'Стейкать' - distribution: 'Распределение' - governance: 'Управление' - slashing: 'Slashing' -proposals: - notFound: 'Предложение не найдено.' - listOfProposals: 'Список предложений по управлению' - proposer: 'Предлагающий' - proposal: 'Предложение' - proposals: 'Предложения' - proposalID: 'ID предложения' - title: 'Название' - status: 'Статус' - submitTime: 'Время Отправки' - depositEndTime: 'Время Окончания Депозита' - votingStartTime: 'Время Начала Голосования' - votingEndTime: 'Время Окончания Голосования' - totalDeposit: 'Общий депозит' - description: 'Описание' - proposalType: 'Тип Предложения' - proposalStatus: 'Статус Предложения' - notStarted: 'не начался' - final: 'окончено' - deposit: 'Депозит' - tallyResult: 'Итог Подсчета' - yes: 'За' - abstain: Воздержался - no: 'Против' - noWithVeto: 'Против с правом Вето' - percentageVoted: '{$percent} от всех голосов онлайн проголосовало.' - validMessage: 'Это предложение {$tentative}действительное.' - invalidMessage: 'Меньше чем {$quorum} голосующих проголосовало. Это предложение недействительное.' - moreVoteMessage: 'Предложение будет действительным, если еще {$moreVotes} голосующих отдадут свой голос.' - key: 'Ключ' - value: 'Значение' - amount: 'Сумма' - recipient: 'Получатель' - changes: 'Изменения' - subspace: 'Подмножество' -votingPower: - distribution: 'Распределение Количества Голосов' - pareto: 'Принцип Парето (правило 20/80)' - minValidators34: 'Минимальное количество валидаторов c 34%+ количеством голосов' -accounts: - accountDetails: 'Детали счета' - available: 'Доступно' - delegated: 'Заделегировано' - unbonding: 'Un-Бондинг' - rewards: 'Награды' - total: 'Всего' - notFound: 'Такого счета не существует. Вы ищете неправильный адрес?' - validators: 'Валидаторы' - shares: 'Доли' - mature: 'Зрелые' - no: 'Нет' - none: 'Нет' - delegation: 'Делегация' - plural: '' - signOut: 'Выйти' - signInText: 'Вы вошли как' - toLoginAs: 'Войти как' - signInWithLedger: 'Войти, используя Ledger' - signInWarning: 'Пожалуйста, убедитесь, что устройство Ledger подключено и {$network} App {$version} или выше открыто.' - pleaseAccept: 'пожалуйста, примите в своем Ledger устройстве.' - noRewards: 'Нет Наград' - BLESupport: 'Bluetooth-соединение пока что поддерживается только в браузере Google Chrome.' -activities: - single: ' ' - happened: 'произошло.' - senders: 'Этот отправитель(и)' - sent: 'отправил' - receivers: 'этому получателю(ям)' - received: 'получил' - failedTo: 'не удалось' - to: 'к' - from: из' - operatingAt: 'работающих на' - withMoniker: 'с названием' - withTitle: 'с названием' - withA: 'с' - withAmount: 'с {$amount}' -messageTypes: - send: 'Отправить' - multiSend: 'Отправить Нескольким' - createValidator: 'Создать Валидатора' - editValidator: 'Редактировать Валидатора' - delegate: 'Делегировать' - undelegate: 'Разделегировать' - redelegate: 'Ре-делегировать' - submitProposal: 'Отправить Предложение' - deposit: 'Депозит' - vote: 'Голосовать' - withdrawComission: 'Вывести Комиссии' - withdrawReward: 'Вывести Награду' - modifyWithdrawAddress: 'Изменить Адрес Вывода' - unjail: 'Un-Джейл' - IBCTransfer: 'IBC Трансфер' - IBCReceive: 'IBC Получение' - diff --git a/big-dipper-backend/both/i18n/zh-hans.i18n.yml b/big-dipper-backend/both/i18n/zh-hans.i18n.yml deleted file mode 100644 index 4fb1658303..0000000000 --- a/big-dipper-backend/both/i18n/zh-hans.i18n.yml +++ /dev/null @@ -1,238 +0,0 @@ -_locale: 'zh-Hans' -_namespace: '' - -common: - height: '高度' - voter: '投票人' - votingPower: '投票权' - addresses: '地址' - amounts: '数量' - delegators: '委托人' - block: '区块' - blocks: '区块' - precommit: '建块前保证' - precommits: '建块前保证' - last: '最后' - backToList: '回到列表' - information: '资讯' - time: '时间' - hash: '哈希' - more: '更多' - fullStop: '。' - searchPlaceholder: '搜寻交易哈希 / 区块高度 / 地址' - cancel: '取消' - retry: '重试' - bondedTokens: '受委托量' -navbar: - siteName: '北斗' - validators: '验证人' - blocks: '区块' - transactions: '交易' - proposals: '治理提案' - votingPower: '投票权分布' - lang: "中文(简)" - english: "English" - spanish: "Español" - italian: "Italiano" - polish: "Polski" - russian: "Русский" - chinese: "中文(繁)" - simChinese: "中文(简)" - portuguese: "Português" - license: 'LICENSE' - forkMe: 'Fork me!' -consensus: - consensusState: '共识状态' - round: '轮数' - step: '阶数' -chainStates: - price: '价格' - marketCap: '市值' - inflation: '通胀率' - communityPool: '社区储备' -chainStatus: - startMessage: '这链将还有以下时间便会开始' - stopWarning: '这链似乎已经停了 {$time}! 请继续喂我吃新的区块 😭!' - latestHeight: '最新区块高度' - averageBlockTime: '平均区块时间' - all: '全部' - now: '现在' - allTime: '全部' - lastMinute: '前一分钟' - lastHour: '前一小时' - lastDay: '前一天' - seconds: '秒' - activeValidators: '有效验证人' - outOfValidators: '来自总共 {$totalValidators} 个验证人' - onlineVotingPower: '在线投票权' - fromTotalStakes: '为 {$totalStakes} 颗 {$denom} 的 {$percent}' -analytics: - blockTimeHistory: '在线投票权' - averageBlockTime: 'Average Block Time' - blockInterval: 'Block Interval' - noOfValidators: 'No. of Validators' -validators: - randomValidators: '随机验证人' - moniker: '验证人代号' - uptime: '上线时间比重' - selfPercentage: '自我委托%' - commission: '佣金' - lastSeen: '最后投票时间' - status: '状态' - jailed: '被禁制' - navActive: '有效' - navInactive: '无效' - active: '有效验证人' - inactive: '无效验证人' - listOfActive: '这名单显示所有有效验证人' - listOfInactive: '这名单显示所有无效验证人' - validatorDetails: '验证人详情' - lastNumBlocks: '最后 {$numBlocks} 个区块' - validatorInfo: '验证人资讯' - operatorAddress: '操作地址' - selfDelegationAddress: '自我委托地址' - deeplinks: 'Deeplinks' - commissionRate: '佣金' - maxRate: '最大佣金限制' - maxChangeRate: '每天最大佣金变化限制' - selfDelegationRatio: '自我委托比例' - proposerPriority: '建块优先权' - delegatorShares: '委托股数' - userDelegateShares: '你委托的股数' - tokens: '代币数量' - unbondingHeight: '解绑高度' - unbondingTime: '解绑时间' - jailedUntil: '被禁制至' - powerChange: '投票权变更' - delegations: '委托' - transactions: '交易' - validatorNotExists: '验证人不存在。' - backToValidator: '回到验证人页面' - missedBlocks: '错过了的区块' - missedPrecommits: '遗留了的建块前保证' - missedBlocksTitle: '错过了 {$moniker} 的区块' - totalMissed: '一共错过了' - block: '区块' - missedCount: '错过数量' - iDontMiss: '我不会错过任何一个' - lastSyncTime: '上一次同步时间' - delegator: '委托人' - amount: '数量' -blocks: - proposer: '建块人' - block: '区块' - latestBlocks: '最近区块' - noBlock: '没有区块。' - numOfTxs: '交易数量' - numOfTransactions: '交易数量' - notFound: '没有这个区块。' -transactions: - transaction: '交易' - transactions: '交易' - notFound: '沒有交易。' - activities: '活动' - txHash: '交易哈希' - valid: '有效' - fee: '费用' - noFee: 'No fee' - gasUsedWanted: '瓦斯 (已用 / 要求)' - noTxFound: '没有这笔交易。' - noValidatorTxsFound: '没有跟这个验证人有关的交易' - memo: '备忘录' - transfer: '代币转移' - staking: '委托' - distribution: '收益分配' - governance: '链上治理' - slashing: '削减' -proposals: - notFound: '没有治理提案' - listOfProposals: '这名单显示所有治理提案' - proposer: '提案人' - proposal: '治理提案' - proposals: '治理提案' - proposalID: '提案编号' - title: '主题' - status: '状态' - submitTime: '提案时间' - depositEndTime: '存入押金' - votingStartTime: '投票开始时间' - votingEndTime: '投票结束时间' - totalDeposit: '押金总额' - description: '详细内容' - proposalType: '提案类型' - proposalStatus: '提案状态' - notStarted: '未开始' - final: '最后结果' - deposit: '押金' - tallyResult: '投票结果' - yes: '赞成' - abstain: '弃权' - no: '反对' - noWithVeto: '强烈反对' - percentageVoted: '现时在线投票权的投票率是 {$percent}。' - validMessage: '这个提案 {$tentative} 有效.' - invalidMessage: '已投票的在线投票权少于 {$quorum}。这个提案 無效。' - moreVoteMessage: '当再有多 {$moreVotes} 投票权投了票的话,这个提案将会有效。' - key: 'Key' - value: 'Value' - amount: 'Amount' - recipient: 'Recipient' - changes: 'Changes' - subspace: 'Subspace' -votingPower: - distribution: '投票权分布' - pareto: '帕累托原则 (20/80 定率)' - minValidators34: '最少合共有超过 34% 投票权的验证人' -accounts: - accountDetails: '帐户详情' - available: '可用的' - delegated: '委托中' - unbonding: '解绑中' - rewards: '未取回收益' - total: '总共' - notFound: '这个帐户不存在。你是否在查看一个错误的地址?' - validators: '验证人' - shares: '股数' - mature: '成熟日期' - no: '没有' - none: '没有' - delegation: '委托' - plural: '' - signOut: '登出' - signInText: '你已登录以下帐户' - toLoginAs: '登录以下帐户' - signInWithLedger: '透过 Ledger 登录' - signInWarning: '请确定你已经连接 Ledger 设备,并已开启 Cosmos App 版本 1.5.0 或以上。' - pleaseAccept: '请从你的 Ledger 设备确认。' - noRewards: 'No Rewards' -activities: - single: '一个' - happened: '发生了' - senders: '以下的帐户' - sent: '发了' - receivers: '到以下的帐户' - received: '收到' - failedTo: '未能' - to: '到' - from: '从' - operatingAt: '操作地址为' - withMoniker: '而验证人代号为' - withTitle: '治理提案主题为' - withA: '投了' -messageTypes: - send: '发送' - multiSend: '多重发送' - createValidator: '建立验证人' - editValidator: '编辑验证人资料' - delegate: '委托' - undelegate: '解委托' - redelegate: '转委托' - submitProposal: '提交议案' - deposit: '存入' - vote: '投票' - withdrawComission: '提取手续费' - withdrawReward: '提取收益' - modifyWithdrawAddress: '更改收益取回地址' - unjail: '赦免' - IBCTransfer: 'IBC Transfer' - IBCReceive: 'IBC Receive' diff --git a/big-dipper-backend/both/i18n/zh-hant.i18n.yml b/big-dipper-backend/both/i18n/zh-hant.i18n.yml deleted file mode 100644 index c1e9ff7d15..0000000000 --- a/big-dipper-backend/both/i18n/zh-hant.i18n.yml +++ /dev/null @@ -1,238 +0,0 @@ -_locale: 'zh-Hant' -_namespace: '' - -common: - height: '高度' - voter: '投票人' - votingPower: '投票權' - addresses: '地址' - amounts: '數量' - delegators: '委托人' - block: '區塊' - blocks: '區塊' - precommit: '建塊前保證' - precommits: '建塊前保證' - last: '最後' - backToList: '回到列表' - information: '資訊' - time: '時間' - hash: '哈希' - more: '更多' - fullStop: '。' - searchPlaceholder: '搜尋交易哈希 / 區塊高度 / 地址' - cancel: '取消' - retry: '重試' - bondedTokens: '受委托量' -navbar: - siteName: '北斗' - validators: '驗證人' - blocks: '區塊' - transactions: '交易' - proposals: '治理提案' - votingPower: '投票權分佈' - lang: "中文(繁)" - english: "English" - spanish: "Español" - italian: "Italiano" - polish: "Polski" - russian: "Русский" - chinese: "中文(繁)" - simChinese: "中文(简)" - portuguese: "Português" - license: 'LICENSE' - forkMe: 'Fork me!' -consensus: - consensusState: '共識狀態' - round: '輪數' - step: '階數' -chainStates: - price: '價格' - marketCap: '市值' - inflation: '通漲率' - communityPool: '社區儲備' -chainStatus: - startMessage: '這鏈將還有以下時間便會開始' - stopWarning: '這鏈似乎已經停了 {$time}! 請繼續餵我吃新的區塊 😭!' - latestHeight: '最新區塊高度' - averageBlockTime: '平均區塊時間' - all: '全部' - now: '現在' - allTime: '全部' - lastMinute: '前一分鐘' - lastHour: '前一小時' - lastDay: '前一天' - seconds: '秒' - activeValidators: '有效驗證人' - outOfValidators: '來自總共 {$totalValidators} 個驗證人' - onlineVotingPower: '在線投票權' - fromTotalStakes: '為 {$totalStakes} 顆 {$denom} 的 {$percent}' -analytics: - blockTimeHistory: '在線投票權' - averageBlockTime: 'Average Block Time' - blockInterval: 'Block Interval' - noOfValidators: 'No. of Validators' -validators: - randomValidators: '隨機驗證人' - moniker: '驗證人代號' - uptime: '上線時間比重' - selfPercentage: '自我委托%' - commission: '佣金' - lastSeen: '最後投票時間' - status: '狀態' - jailed: '被禁制' - navActive: '有效' - navInactive: '無效' - active: '有效驗證人' - inactive: '無效驗證人' - listOfActive: '這名單顯示所有有效驗證人' - listOfInactive: '這名單顯示所有無效驗證人' - validatorDetails: '驗證人詳情' - lastNumBlocks: '最後 {$numBlocks} 個區塊' - validatorInfo: '驗證人資訊' - operatorAddress: '操作地址' - selfDelegationAddress: '自我委托地址' - deeplinks: 'Deeplinks' - commissionRate: '佣金' - maxRate: '最大佣金限制' - maxChangeRate: '每天最大佣金變化限制' - selfDelegationRatio: '自我委托比列' - proposerPriority: '建塊優先權' - delegatorShares: '委托股數' - userDelegateShares: '你委托的股數' - tokens: '代幣數量' - unbondingHeight: '解綁高度' - unbondingTime: '解綁時間' - jailedUntil: '被禁制至' - powerChange: '投票權變更' - delegations: '委托' - transactions: '交易' - validatorNotExists: '驗證人不存在。' - backToValidator: '回到驗證人頁面' - missedBlocks: '錯過了的區塊' - missedPrecommits: '遺留了的建塊前保證' - missedBlocksTitle: '錯過了 {$moniker} 的區塊' - totalMissed: '一共錯過了' - block: '區塊' - missedCount: '錯過數量' - iDontMiss: '我不會錯過任何一個' - lastSyncTime: '上一次同步時間' - delegator: '委托人' - amount: '數量' -blocks: - proposer: '建塊人' - block: '區塊' - latestBlocks: '最近區塊' - noBlock: '沒有區塊。' - numOfTxs: '交易數量' - numOfTransactions: '交易數量' - notFound: '沒有這個區塊。' -transactions: - transaction: '交易' - transactions: '交易' - notFound: '沒有交易。' - activities: '活動' - txHash: '交易哈希' - valid: '有效' - fee: '費用' - noFee: 'No fee' - gasUsedWanted: '瓦斯 (已用 / 要求)' - noTxFound: '沒有這筆交易。' - noValidatorTxsFound: '沒有跟這個驗證人有關的交易' - memo: '備忘錄' - transfer: '代幣轉移' - staking: '委托' - distribution: '收益分配' - governance: '鏈上治理' - slashing: '削減' -proposals: - notFound: '沒有治理提案' - listOfProposals: '這名單顯示所有治理提案' - proposer: '提案人' - proposal: '治理提案' - proposals: '治理提案' - proposalID: '提案編號' - title: '主題' - status: '狀態' - submitTime: '提案時間' - depositEndTime: '存入押金' - votingStartTime: '投票開始時間' - votingEndTime: '投票結束時間' - totalDeposit: '押金總額' - description: '詳細內容' - proposalType: '提案類型' - proposalStatus: '提案狀態' - notStarted: '未開始' - final: '最後結果' - deposit: '押金' - tallyResult: '投票結果' - yes: '贊成' - abstain: '棄權' - no: '反對' - none: '反對' - noWithVeto: '強烈反對' - percentageVoted: '現時在線投票權的投票率是 {$percent}。' - validMessage: '這個提案 {$tentative} 有效.' - invalidMessage: '已投票的在線投票權少於 {$quorum}。這個 無效。' - moreVoteMessage: '當再有多 {$moreVotes} 投票權投了票的話,這個提案將會有效。' - key: 'Key' - value: 'Value' - amount: 'Amount' - recipient: 'Recipient' - changes: 'Changes' - subspace: 'Subspace' -votingPower: - distribution: '投票權分佈' - pareto: '帕累托原則 (20/80 定率)' - minValidators34: '最少合共有超過 34% 投票權的驗證人' -accounts: - accountDetails: '帳戶詳情' - available: '可用的' - delegated: '委托中' - unbonding: '解綁中' - rewards: '未取回收益' - total: '總共' - notFound: '這個帳戶不存在。你是否在查看一個錯誤的地址?' - validators: '驗證人' - shares: '股數' - mature: '成熟日期' - no: '沒有' - delegation: '委托' - plural: '' - signOut: '登出' - signInText: '你已登入以下帳戶' - toLoginAs: '登入以下帳戶' - signInWithLedger: '透過 Ledger 登入' - signInWarning: '請確定你已經連接 Ledger 設備,並已開啓 Cosmos App 版本 1.5.0 或以上。' - pleaseAccept: '請從你的 Ledger 設備確認。' - noRewards: 'No Rewards' -activities: - single: '一個' - happened: '發生了' - senders: '以下的帳戶' - sent: '發了' - receivers: '到以下的帳戶' - received: '收到' - failedTo: '未能' - to: '到' - from: '從' - operatingAt: '操作地止為' - withMoniker: '而驗證人代號為' - withTitle: '治理提案主題為' - withA: '投了' -messageTypes: - send: '發送' - multiSend: '多重發送' - createValidator: '建立驗證人' - editValidator: '編輯驗證人資料' - delegate: '委托' - undelegate: '解委托' - redelegate: '轉委托' - submitProposal: '提交議案' - deposit: '存入' - vote: '投票' - withdrawComission: '提取手續費' - withdrawReward: '提取收益' - modifyWithdrawAddress: '更改收益取回地址' - unjail: '赦免' - IBCTransfer: 'IBC Transfer' - IBCReceive: 'IBC Receive' diff --git a/big-dipper-backend/both/utils/coins.js b/big-dipper-backend/both/utils/coins.js deleted file mode 100644 index 851b1dd0dc..0000000000 --- a/big-dipper-backend/both/utils/coins.js +++ /dev/null @@ -1,72 +0,0 @@ -/* eslint-disable no-tabs */ -import { Meteor } from 'meteor/meteor'; -import numbro from 'numbro'; - -autoformat = (value) => { - let formatter = '0,0.0000'; - value = Math.round(value * 1000) / 1000 - if (Math.round(value) === value) - formatter = '0,0' - else if (Math.round(value * 10) === value * 10) - formatter = '0,0.0' - else if (Math.round(value * 100) === value * 100) - formatter = '0,0.00' - else if (Math.round(value * 1000) === value * 1000) - formatter = '0,0.000' - return numbro(value).format(formatter) -} - -const coinList = Meteor.settings.public.coins; - -export default class Coin { - - static StakingCoin = (coinList == null) ? "" : coinList.find(coin => coin.denom === Meteor.settings.public.bondDenom); - static MinStake = (coinList == null) ? 0 : 1 / Number(Coin.StakingCoin.fraction); - - constructor(amount, denom = Meteor.settings.public.bondDenom) { - const lowerDenom = denom.toLowerCase(); - if (coinList == null) { - this._coin = null; - } else { - this._coin = coinList.find(coin => - coin.denom.toLowerCase() === lowerDenom || coin.displayName.toLowerCase() === lowerDenom - ); - } - - - if (this._coin) { - if (lowerDenom === this._coin.denom.toLowerCase()) { - this._amount = Number(amount); - } else if (lowerDenom === this._coin.displayName.toLowerCase()) { - this._amount = Number(amount) * this._coin.fraction; - } - } else { - this._coin = ""; - this._amount = Number(amount); - } - } - - get amount() { - return this._amount; - } - - get stakingAmount() { - return (this._coin) ? this._amount / this._coin.fraction : this._amount; - } - - toString(precision) { - // default to display in mint denom if it has more than 4 decimal places - let minStake = Coin.StakingCoin.fraction / (precision ? (10 ** precision) : 10000) - if (this.amount === 0) { - return `0 ${this._coin.displayName}` - } else if (this.amount < minStake) { - return `${numbro(this.amount).format('0,0.000000' )} ${this._coin.denom}`; - } else if (!this._coin.displayName) { - return `${this.stakingAmount ?? 0} ${Coin.StakingCoin.displayName}` - } else if (this.amount % 1 === 0) { - return `${this.stakingAmount} ${this._coin.displayName}` - } else { - return `${precision?numbro(this.stakingAmount).format('0,0.' + '0'.repeat(precision)):autoformat(this.stakingAmount)} ${this._coin.displayName}` - } - } -} \ No newline at end of file diff --git a/big-dipper-backend/both/utils/loader.js b/big-dipper-backend/both/utils/loader.js deleted file mode 100644 index f8852105b1..0000000000 --- a/big-dipper-backend/both/utils/loader.js +++ /dev/null @@ -1,6 +0,0 @@ -import React from 'react'; -import { DisappearedLoading } from 'react-loadingg'; - -const Loader = () =>
; - -export default Loader; \ No newline at end of file diff --git a/big-dipper-backend/both/utils/time.js b/big-dipper-backend/both/utils/time.js deleted file mode 100644 index 9c92ad5583..0000000000 --- a/big-dipper-backend/both/utils/time.js +++ /dev/null @@ -1,4 +0,0 @@ -export const goTimeToISOString = (time) => { - const millisecond = parseInt(time.seconds+time.nanos.toString().substring(0,3)); - return (new Date(millisecond)).toISOString() -} \ No newline at end of file diff --git a/big-dipper-backend/cloudbuild.yaml b/big-dipper-backend/cloudbuild.yaml deleted file mode 100644 index c66110c9c6..0000000000 --- a/big-dipper-backend/cloudbuild.yaml +++ /dev/null @@ -1,56 +0,0 @@ -timeout: 12000s -substitutions: - _CUSTOM_REGION: us-west2-a - _CUSTOM_CLUSTER: cluster-1 -steps: - - name: gcr.io/cloud-builders/docker - entrypoint: bash - args: - - '-c' - - >- - docker pull gcr.io/zinc-interface-241613/big-dipper-v1:latest - || exit 0 - - name: "gcr.io/cloud-builders/gcloud" - id: Write Secrets to Env - entrypoint: bash - args: - - -c - - | - sed -i "s#mongoUrlVal#$(gcloud beta secrets versions access --secret=mongourl latest)#g" ./deploy/pylons-big-dipper/values.yaml - - name: gcr.io/cloud-builders/docker - id: Build - args: - - build - - . - - -t - - gcr.io/zinc-interface-241613/big-dipper-v1 - - name: gcr.io/cloud-builders/docker - args: - - push - - 'gcr.io/zinc-interface-241613/big-dipper-v1' - id: PushLatest - - name: gcr.io/cloud-builders/kubectl - id: Configure kubectl - args: - - cluster-info - env: - - CLOUDSDK_COMPUTE_REGION=$_CUSTOM_REGION - - CLOUDSDK_CONTAINER_CLUSTER=$_CUSTOM_CLUSTER - - KUBECONFIG=/workspace/.kube/config - - - name: gcr.io/zinc-interface-241613/helm - id: Deploy chart - args: - - upgrade - - big-dipper-v1 - - ./deploy/pylons-big-dipper - - -f - - ./deploy/pylons-big-dipper/values.yaml - # - --set-file - # - applicationSettingsJson="default_settings.json" - env: - - KUBECONFIG=/workspace/.kube/config - - TILLERLESS=true -options: - logging: CLOUD_LOGGING_ONLY - machineType: 'E2_HIGHCPU_32' \ No newline at end of file diff --git a/big-dipper-backend/default_settings.json b/big-dipper-backend/default_settings.json deleted file mode 100644 index b622d29702..0000000000 --- a/big-dipper-backend/default_settings.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "public": { - "chainName": "Pylons", - "chainId": "pylons-testnet-3", - "gtm": "{Add your Google Tag Manager ID here}", - "slashingWindow": 10000, - "uptimeWindow": 250, - "initialPageSize": 30, - "secp256k1": false, - "bech32PrefixAccAddr": "pylo", - "bech32PrefixAccPub": "pylopub", - "bech32PrefixValAddr": "pylovaloper", - "bech32PrefixValPub": "pylovaloperpub", - "bech32PrefixConsAddr": "pylovalcons", - "bech32PrefixConsPub": "pylovalconspub", - "bondDenom": "uatom", - "powerReduction": 1000000, - "dynamicLink": { - "apn": "tech.pylons.wallet", - "ibi": "xyz.pylons.wallet", - "isi": "1598732789", - "oflPlay": "https://play.google.com/store/apps/details?id=tech.pylons.wallet&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1", - "oflIOS": "https://apps.apple.com/us/app/pylons/id1598732789" - }, - "coins": [ - { - "denom": "uatom", - "displayName": "ATOM", - "fraction": 1000000 - }, - { - "denom": "ubedrock", - "displayName": "UBEDROCK", - "fraction": 1000000 - }, - { - "denom": "umuon", - "displayName": "MUON", - "fraction": 1000000 - }, - { - "denom": "ustripeusd", - "displayName": "STRIPEUSD", - "fraction": 1000000 - }, - { - "denom": "ujunox", - "displayName": "JUNO", - "fraction": 1000000 - }, - { - "denom": "upylon", - "displayName": "PYLON", - "fraction": 1000000 - }, - { - "denom": "uusd", - "displayName": "UST", - "fraction": 1000000 - }, - { - "denom": "urun", - "displayName": "RUN", - "fraction": 1000000 - }, - { - "denom": "ujunox", - "displayName": "JUNO", - "fraction": 1000000 - }, - { - "denom": "eeur", - "displayName": "EEUR", - "fraction": 1000000 - }, - { - "denom": "weth-wei", - "displayName": "WETH", - "fraction": 1000000 - } - ], - "ledger": { - "coinType": 118, - "appName": "Cosmos", - "appVersion": "2.16.0", - "gasPrice": 0.02 - }, - "modules": { - "bank": true, - "supply": true, - "minting": false, - "gov": true, - "distribution": false - }, - "banners": false, - "baseURL": "https://wallet.pylons.tech", - "cosmos_sdk": 43 - }, - "remote": { - "rpc": "https://rpc.pylons.tech", - "api": "https://lcd.pylons.tech" - }, - "debug": { - "startTimer": true - }, - "params": { - "startHeight": 0, - "defaultBlockTime": 10000, - "validatorUpdateWindow": 300, - "blockInterval": 10000, - "transactionsInterval": 1000, - "keybaseFetchingInterval": 1000000, - "consensusInterval": 1000, - "statusInterval": 7500, - "signingInfoInterval": 1800000, - "proposalInterval": 5000, - "recipeInterval": 5000, - "nftInterval": 5000, - "cookbookInterval": 5000, - "missedBlocksInterval": 60000, - "delegationInterval": 900000, - "sendNotifications": 0, - "collectNotificationsInterval": 10000 - } -} \ No newline at end of file diff --git a/big-dipper-backend/deploy/big-dipper-dev/network/managed-cert.yaml b/big-dipper-backend/deploy/big-dipper-dev/network/managed-cert.yaml deleted file mode 100644 index 8cfdb3211b..0000000000 --- a/big-dipper-backend/deploy/big-dipper-dev/network/managed-cert.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: networking.gke.io/v1 -kind: ManagedCertificate -metadata: - name: managed-cert -spec: - domains: - - wallet.pylons.tech \ No newline at end of file diff --git a/big-dipper-backend/deploy/big-dipper-dev/pylons-big-dipper/Chart.yaml b/big-dipper-backend/deploy/big-dipper-dev/pylons-big-dipper/Chart.yaml deleted file mode 100644 index 014d58cd1b..0000000000 --- a/big-dipper-backend/deploy/big-dipper-dev/pylons-big-dipper/Chart.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v2 -name: big-dipper-v1 -description: Pylons Big Dipper -version: 0.0.1 -appVersion: 0.0.1 diff --git a/big-dipper-backend/deploy/big-dipper-dev/pylons-big-dipper/templates/_helpers.tpl b/big-dipper-backend/deploy/big-dipper-dev/pylons-big-dipper/templates/_helpers.tpl deleted file mode 100644 index 586045548b..0000000000 --- a/big-dipper-backend/deploy/big-dipper-dev/pylons-big-dipper/templates/_helpers.tpl +++ /dev/null @@ -1,86 +0,0 @@ -{{- define "ports.service" }} -{{- range $key, $value := .Values.ports }} -- port: {{ $v := $value | toString | splitList ":" }}{{$v | first}} - name: {{ $key }} - targetPort: {{ $v := $value | toString | splitList ":" }}{{$v | last}} -{{- end }} -{{- end }} - -{{- define "ports.pod" }} -{{- range $key, $value := .Values.ports }} - - containerPort: {{ $v := $value | toString | splitList ":" }}{{$v | last}} - name: {{ $key }} -{{- end }} -{{- end }} - -{{- define "chart.labels" }} -app.kubernetes.io/name: {{ .Chart.Name }} -helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/instance: {{ .Release.Name }} -app.kubernetes.io/version: {{ .Chart.AppVersion }} -{{- if .Values.labels }}{{ toYaml .Values.labels}}{{- end }} -{{- end }} - -{{/* -Expand the name of the chart. -*/}} -{{- define "big-dipper-v1.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "big-dipper-v1.fullname" -}} -{{- if .Values.fullnameOverride }} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- $name := default .Chart.Name .Values.nameOverride }} -{{- if contains $name .Release.Name }} -{{- .Release.Name | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "big-dipper-v1.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "big-dipper-v1.labels" -}} -helm.sh/chart: {{ include "big-dipper-v1.chart" . }} -{{ include "big-dipper-v1.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "big-dipper-v1.selectorLabels" -}} -app.kubernetes.io/name: {{ include "big-dipper-v1.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Create the name of the service account to use -*/}} -{{- define "big-dipper-v1.serviceAccountName" -}} -{{- if .Values.serviceAccount.create }} -{{- default (include "big-dipper-v1.fullname" .) .Values.serviceAccount.name }} -{{- else }} -{{- default "default" .Values.serviceAccount.name }} -{{- end }} -{{- end }} diff --git a/big-dipper-backend/deploy/big-dipper-dev/pylons-big-dipper/templates/configmap.yaml b/big-dipper-backend/deploy/big-dipper-dev/pylons-big-dipper/templates/configmap.yaml deleted file mode 100644 index 0a87591b4e..0000000000 --- a/big-dipper-backend/deploy/big-dipper-dev/pylons-big-dipper/templates/configmap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.settings }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-archive - namespace: {{ .Release.Namespace }} - labels: - {{- include "chart.labels" . | indent 4 }} -data: - settings.json: |- -{{ .Values.applicationSettingsJson | indent 4}} -{{- end }} diff --git a/big-dipper-backend/deploy/big-dipper-dev/pylons-big-dipper/templates/deployment.yaml b/big-dipper-backend/deploy/big-dipper-dev/pylons-big-dipper/templates/deployment.yaml deleted file mode 100644 index bcc6757155..0000000000 --- a/big-dipper-backend/deploy/big-dipper-dev/pylons-big-dipper/templates/deployment.yaml +++ /dev/null @@ -1,54 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ .Release.Name }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "chart.labels" . | indent 4 }} -spec: - selector: - matchLabels: - {{- include "chart.labels" . | indent 6 }} - replicas: {{ .Values.replicas }} - template: - metadata: - annotations: - rollme: {{ randAlphaNum 5 | quote }} - labels: - {{- include "chart.labels" . | indent 8 }} - spec: - # volumes: - # - configMap: - # name: {{ .Release.Name }} - # name: {{ .Release.Name }} - hostAliases: - - ip: "34.105.11.201" - hostnames: - - "mongodb-1-servers-vm-0" - nodeSelector: -{{ toYaml .Values.nodeSelector | indent 8 }} - containers: - - name: {{ .Release.Name }} - image: {{ .Values.image }} - # volumeMounts: - # - name: {{ .Release.Name }} - # mountPath: /settings.json - # readOnly: false - imagePullPolicy: {{ .Values.imagePullPolicy }} - ports: -{{- include "ports.pod" . | indent 8 }} - env: - - name: ROOT_URL - value: http://wallet.pylons.tech - - name: MONGO_URL - value: {{ .Values.mongoURL }} - - name: PORT - value: "80" - - name: METEOR_SETTINGS - valueFrom: - configMapKeyRef: - name: {{ .Release.Name }} - key: settings.json - resources: -{{ toYaml .Values.resources | indent 12 }} - terminationGracePeriodSeconds: 10 \ No newline at end of file diff --git a/big-dipper-backend/deploy/big-dipper-dev/pylons-big-dipper/templates/ingress.yaml b/big-dipper-backend/deploy/big-dipper-dev/pylons-big-dipper/templates/ingress.yaml deleted file mode 100644 index cdfe2d1007..0000000000 --- a/big-dipper-backend/deploy/big-dipper-dev/pylons-big-dipper/templates/ingress.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: {{ .Release.Name }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "chart.labels" . | indent 4 }} - annotations: -{{ toYaml .Values.ingress.annotations | indent 4 }} -spec: - defaultBackend: - service: - name: {{ .Release.Name}} - port: - number: 80 \ No newline at end of file diff --git a/big-dipper-backend/deploy/big-dipper-dev/pylons-big-dipper/templates/service.yaml b/big-dipper-backend/deploy/big-dipper-dev/pylons-big-dipper/templates/service.yaml deleted file mode 100644 index ce8d9a2806..0000000000 --- a/big-dipper-backend/deploy/big-dipper-dev/pylons-big-dipper/templates/service.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "big-dipper-v1.fullname" . }} - labels: - {{- include "big-dipper-v1.labels" . | nindent 4 }} -spec: - type: {{ .Values.service.type }} - ports: - - port: {{ .Values.service.port }} - targetPort: 80 - protocol: TCP - name: http - selector: - {{- include "big-dipper-v1.selectorLabels" . | nindent 4 }} \ No newline at end of file diff --git a/big-dipper-backend/deploy/big-dipper-dev/pylons-big-dipper/values.yaml b/big-dipper-backend/deploy/big-dipper-dev/pylons-big-dipper/values.yaml deleted file mode 100644 index f047d4a896..0000000000 --- a/big-dipper-backend/deploy/big-dipper-dev/pylons-big-dipper/values.yaml +++ /dev/null @@ -1,37 +0,0 @@ -image: gcr.io/zinc-interface-241613/big-dipper-v1 -imagePullPolicy: Always - -replicas: 1 - -nodeSelector: {} - -service: - type: NodePort - port: 80 - -ingress: - enabled: true - className: gce - annotations: - kubernetes.io/ingress.global-static-ip-name: big-dipper-v1 - networking.gke.io/managed-certificates: managed-cert - kubernetes.io/ingress.class: "gce" - cert-manager.io/cluster-issuer: letsencrypt-prod - kubernetes.io/tls-acme: "true" - hosts: - - host: wallet.pylons.tech - paths: - - path: / - pathType: ImplementationSpecific - # tls: - # - secretName: chart-example-tls - # hosts: - # - wallet.pylons.tech - - -resources: {} - - - -host: wallet.pylons.tech -mongoURL: mongodb://devops:nKH.%3DXdYp%23-ECw%2C%3DgW@34.105.11.201:27017/test?serverSelectionTimeoutMS=5000&connectTimeoutMS=10000&authSource=admin&authMechanism=SCRAM-SHA-256 \ No newline at end of file diff --git a/big-dipper-backend/deploy/big-dipper-prod/api-node/.helmignore b/big-dipper-backend/deploy/big-dipper-prod/api-node/.helmignore deleted file mode 100644 index 0e8a0eb36f..0000000000 --- a/big-dipper-backend/deploy/big-dipper-prod/api-node/.helmignore +++ /dev/null @@ -1,23 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/big-dipper-backend/deploy/big-dipper-prod/api-node/Chart.yaml b/big-dipper-backend/deploy/big-dipper-prod/api-node/Chart.yaml deleted file mode 100644 index 6954269927..0000000000 --- a/big-dipper-backend/deploy/big-dipper-prod/api-node/Chart.yaml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: v2 -name: api-node -description: A Helm chart for Kubernetes - -# A chart can be either an 'application' or a 'library' chart. -# -# Application charts are a collection of templates that can be packaged into versioned archives -# to be deployed. -# -# Library charts provide useful utilities or functions for the chart developer. They're included as -# a dependency of application charts to inject those utilities and functions into the rendering -# pipeline. Library charts do not define any templates and therefore cannot be deployed. -type: application - -# This is the chart version. This version number should be incremented each time you make changes -# to the chart and its templates, including the app version. -# Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.1.0 - -# This is the version number of the application being deployed. This version number should be -# incremented each time you make changes to the application. Versions are not expected to -# follow Semantic Versioning. They should reflect the version the application is using. -# It is recommended to use it with quotes. -appVersion: "1.16.0" diff --git a/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/NOTES.txt b/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/NOTES.txt deleted file mode 100644 index 4ad903be9f..0000000000 --- a/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/NOTES.txt +++ /dev/null @@ -1,22 +0,0 @@ -1. Get the application URL by running these commands: -{{- if .Values.ingress.enabled }} -{{- range $host := .Values.ingress.hosts }} - {{- range .paths }} - http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} - {{- end }} -{{- end }} -{{- else if contains "NodePort" .Values.service.type }} - export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "api-node.fullname" . }}) - export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") - echo http://$NODE_IP:$NODE_PORT -{{- else if contains "LoadBalancer" .Values.service.type }} - NOTE: It may take a few minutes for the LoadBalancer IP to be available. - You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "api-node.fullname" . }}' - export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "api-node.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") - echo http://$SERVICE_IP:{{ .Values.service.port }} -{{- else if contains "ClusterIP" .Values.service.type }} - export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "api-node.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") - export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") - echo "Visit http://127.0.0.1:8080 to use your application" - kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT -{{- end }} diff --git a/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/_helpers.tpl b/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/_helpers.tpl deleted file mode 100644 index c39151f0bc..0000000000 --- a/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/_helpers.tpl +++ /dev/null @@ -1,62 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "api-node.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "api-node.fullname" -}} -{{- if .Values.fullnameOverride }} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- $name := default .Chart.Name .Values.nameOverride }} -{{- if contains $name .Release.Name }} -{{- .Release.Name | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "api-node.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "api-node.labels" -}} -helm.sh/chart: {{ include "api-node.chart" . }} -{{ include "api-node.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "api-node.selectorLabels" -}} -app.kubernetes.io/name: {{ include "api-node.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Create the name of the service account to use -*/}} -{{- define "api-node.serviceAccountName" -}} -{{- if .Values.serviceAccount.create }} -{{- default (include "api-node.fullname" .) .Values.serviceAccount.name }} -{{- else }} -{{- default "default" .Values.serviceAccount.name }} -{{- end }} -{{- end }} diff --git a/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/deployment.yaml b/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/deployment.yaml deleted file mode 100644 index ce6f08167a..0000000000 --- a/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/deployment.yaml +++ /dev/null @@ -1,61 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "api-node.fullname" . }} - labels: - {{- include "api-node.labels" . | nindent 4 }} -spec: - {{- if not .Values.autoscaling.enabled }} - replicas: {{ .Values.replicaCount }} - {{- end }} - selector: - matchLabels: - {{- include "api-node.selectorLabels" . | nindent 6 }} - template: - metadata: - {{- with .Values.podAnnotations }} - annotations: - {{- toYaml . | nindent 8 }} - {{- end }} - labels: - {{- include "api-node.selectorLabels" . | nindent 8 }} - spec: - {{- with .Values.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ include "api-node.serviceAccountName" . }} - securityContext: - {{- toYaml .Values.podSecurityContext | nindent 8 }} - containers: - - name: {{ .Chart.Name }} - securityContext: - {{- toYaml .Values.securityContext | nindent 12 }} - image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - ports: - - name: http - containerPort: 80 - protocol: TCP - livenessProbe: - httpGet: - path: / - port: http - readinessProbe: - httpGet: - path: / - port: http - resources: - {{- toYaml .Values.resources | nindent 12 }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/hpa.yaml b/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/hpa.yaml deleted file mode 100644 index 6f3c860225..0000000000 --- a/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/hpa.yaml +++ /dev/null @@ -1,28 +0,0 @@ -{{- if .Values.autoscaling.enabled }} -apiVersion: autoscaling/v2beta1 -kind: HorizontalPodAutoscaler -metadata: - name: {{ include "api-node.fullname" . }} - labels: - {{- include "api-node.labels" . | nindent 4 }} -spec: - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: {{ include "api-node.fullname" . }} - minReplicas: {{ .Values.autoscaling.minReplicas }} - maxReplicas: {{ .Values.autoscaling.maxReplicas }} - metrics: - {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} - - type: Resource - resource: - name: cpu - targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} - {{- end }} - {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} - - type: Resource - resource: - name: memory - targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} - {{- end }} -{{- end }} diff --git a/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/ingress.yaml b/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/ingress.yaml deleted file mode 100644 index b5b7e93f6a..0000000000 --- a/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/ingress.yaml +++ /dev/null @@ -1,61 +0,0 @@ -{{- if .Values.ingress.enabled -}} -{{- $fullName := include "api-node.fullname" . -}} -{{- $svcPort := .Values.service.port -}} -{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} - {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} - {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} - {{- end }} -{{- end }} -{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} -apiVersion: networking.k8s.io/v1 -{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} -apiVersion: networking.k8s.io/v1beta1 -{{- else -}} -apiVersion: extensions/v1beta1 -{{- end }} -kind: Ingress -metadata: - name: {{ $fullName }} - labels: - {{- include "api-node.labels" . | nindent 4 }} - {{- with .Values.ingress.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} - ingressClassName: {{ .Values.ingress.className }} - {{- end }} - {{- if .Values.ingress.tls }} - tls: - {{- range .Values.ingress.tls }} - - hosts: - {{- range .hosts }} - - {{ . | quote }} - {{- end }} - secretName: {{ .secretName }} - {{- end }} - {{- end }} - rules: - {{- range .Values.ingress.hosts }} - - host: {{ .host | quote }} - http: - paths: - {{- range .paths }} - - path: {{ .path }} - {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} - pathType: {{ .pathType }} - {{- end }} - backend: - {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} - service: - name: {{ $fullName }} - port: - number: {{ $svcPort }} - {{- else }} - serviceName: {{ $fullName }} - servicePort: {{ $svcPort }} - {{- end }} - {{- end }} - {{- end }} -{{- end }} diff --git a/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/service.yaml b/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/service.yaml deleted file mode 100644 index 20c88d0758..0000000000 --- a/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/service.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "api-node.fullname" . }} - labels: - {{- include "api-node.labels" . | nindent 4 }} -spec: - type: {{ .Values.service.type }} - ports: - - port: {{ .Values.service.port }} - targetPort: http - protocol: TCP - name: http - selector: - {{- include "api-node.selectorLabels" . | nindent 4 }} diff --git a/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/serviceaccount.yaml b/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/serviceaccount.yaml deleted file mode 100644 index 72223148ff..0000000000 --- a/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/serviceaccount.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.serviceAccount.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "api-node.serviceAccountName" . }} - labels: - {{- include "api-node.labels" . | nindent 4 }} - {{- with .Values.serviceAccount.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end }} diff --git a/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/tests/test-connection.yaml b/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/tests/test-connection.yaml deleted file mode 100644 index cc01d732fc..0000000000 --- a/big-dipper-backend/deploy/big-dipper-prod/api-node/templates/tests/test-connection.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Pod -metadata: - name: "{{ include "api-node.fullname" . }}-test-connection" - labels: - {{- include "api-node.labels" . | nindent 4 }} - annotations: - "helm.sh/hook": test -spec: - containers: - - name: wget - image: busybox - command: ['wget'] - args: ['{{ include "api-node.fullname" . }}:{{ .Values.service.port }}'] - restartPolicy: Never diff --git a/big-dipper-backend/deploy/big-dipper-prod/api-node/values.yaml b/big-dipper-backend/deploy/big-dipper-prod/api-node/values.yaml deleted file mode 100644 index 2722fb14b9..0000000000 --- a/big-dipper-backend/deploy/big-dipper-prod/api-node/values.yaml +++ /dev/null @@ -1,82 +0,0 @@ -# Default values for api-node. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -replicaCount: 1 - -image: - repository: nginx - pullPolicy: IfNotPresent - # Overrides the image tag whose default is the chart appVersion. - tag: "" - -imagePullSecrets: [] -nameOverride: "" -fullnameOverride: "" - -serviceAccount: - # Specifies whether a service account should be created - create: true - # Annotations to add to the service account - annotations: {} - # The name of the service account to use. - # If not set and create is true, a name is generated using the fullname template - name: "" - -podAnnotations: {} - -podSecurityContext: {} - # fsGroup: 2000 - -securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 - -service: - type: LoadBalancer - port: 80 - -ingress: - enabled: false - className: "" - annotations: {} - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - hosts: - - host: chart-example.local - paths: - - path: / - pathType: ImplementationSpecific - tls: [] - # - secretName: chart-example-tls - # hosts: - # - chart-example.local - -resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -autoscaling: - enabled: false - minReplicas: 1 - maxReplicas: 100 - targetCPUUtilizationPercentage: 80 - # targetMemoryUtilizationPercentage: 80 - -nodeSelector: {} - -tolerations: [] - -affinity: {} diff --git a/big-dipper-backend/deploy/big-dipper-prod/network/managed-cert.yaml b/big-dipper-backend/deploy/big-dipper-prod/network/managed-cert.yaml deleted file mode 100644 index 8cfdb3211b..0000000000 --- a/big-dipper-backend/deploy/big-dipper-prod/network/managed-cert.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: networking.gke.io/v1 -kind: ManagedCertificate -metadata: - name: managed-cert -spec: - domains: - - wallet.pylons.tech \ No newline at end of file diff --git a/big-dipper-backend/deploy/big-dipper-prod/pylons-big-dipper/Chart.yaml b/big-dipper-backend/deploy/big-dipper-prod/pylons-big-dipper/Chart.yaml deleted file mode 100644 index 014d58cd1b..0000000000 --- a/big-dipper-backend/deploy/big-dipper-prod/pylons-big-dipper/Chart.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v2 -name: big-dipper-v1 -description: Pylons Big Dipper -version: 0.0.1 -appVersion: 0.0.1 diff --git a/big-dipper-backend/deploy/big-dipper-prod/pylons-big-dipper/templates/_helpers.tpl b/big-dipper-backend/deploy/big-dipper-prod/pylons-big-dipper/templates/_helpers.tpl deleted file mode 100644 index 586045548b..0000000000 --- a/big-dipper-backend/deploy/big-dipper-prod/pylons-big-dipper/templates/_helpers.tpl +++ /dev/null @@ -1,86 +0,0 @@ -{{- define "ports.service" }} -{{- range $key, $value := .Values.ports }} -- port: {{ $v := $value | toString | splitList ":" }}{{$v | first}} - name: {{ $key }} - targetPort: {{ $v := $value | toString | splitList ":" }}{{$v | last}} -{{- end }} -{{- end }} - -{{- define "ports.pod" }} -{{- range $key, $value := .Values.ports }} - - containerPort: {{ $v := $value | toString | splitList ":" }}{{$v | last}} - name: {{ $key }} -{{- end }} -{{- end }} - -{{- define "chart.labels" }} -app.kubernetes.io/name: {{ .Chart.Name }} -helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/instance: {{ .Release.Name }} -app.kubernetes.io/version: {{ .Chart.AppVersion }} -{{- if .Values.labels }}{{ toYaml .Values.labels}}{{- end }} -{{- end }} - -{{/* -Expand the name of the chart. -*/}} -{{- define "big-dipper-v1.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "big-dipper-v1.fullname" -}} -{{- if .Values.fullnameOverride }} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- $name := default .Chart.Name .Values.nameOverride }} -{{- if contains $name .Release.Name }} -{{- .Release.Name | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "big-dipper-v1.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "big-dipper-v1.labels" -}} -helm.sh/chart: {{ include "big-dipper-v1.chart" . }} -{{ include "big-dipper-v1.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "big-dipper-v1.selectorLabels" -}} -app.kubernetes.io/name: {{ include "big-dipper-v1.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Create the name of the service account to use -*/}} -{{- define "big-dipper-v1.serviceAccountName" -}} -{{- if .Values.serviceAccount.create }} -{{- default (include "big-dipper-v1.fullname" .) .Values.serviceAccount.name }} -{{- else }} -{{- default "default" .Values.serviceAccount.name }} -{{- end }} -{{- end }} diff --git a/big-dipper-backend/deploy/big-dipper-prod/pylons-big-dipper/templates/configmap.yaml b/big-dipper-backend/deploy/big-dipper-prod/pylons-big-dipper/templates/configmap.yaml deleted file mode 100644 index 0a87591b4e..0000000000 --- a/big-dipper-backend/deploy/big-dipper-prod/pylons-big-dipper/templates/configmap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.settings }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-archive - namespace: {{ .Release.Namespace }} - labels: - {{- include "chart.labels" . | indent 4 }} -data: - settings.json: |- -{{ .Values.applicationSettingsJson | indent 4}} -{{- end }} diff --git a/big-dipper-backend/deploy/big-dipper-prod/pylons-big-dipper/templates/deployment.yaml b/big-dipper-backend/deploy/big-dipper-prod/pylons-big-dipper/templates/deployment.yaml deleted file mode 100644 index 97150d5e78..0000000000 --- a/big-dipper-backend/deploy/big-dipper-prod/pylons-big-dipper/templates/deployment.yaml +++ /dev/null @@ -1,60 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ .Release.Name }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "chart.labels" . | indent 4 }} -spec: - selector: - matchLabels: - {{- include "chart.labels" . | indent 6 }} - replicas: {{ .Values.replicas }} - template: - metadata: - annotations: - rollme: {{ randAlphaNum 5 | quote }} - labels: - {{- include "chart.labels" . | indent 8 }} - spec: - # volumes: - # - configMap: - # name: {{ .Release.Name }} - # name: {{ .Release.Name }} - hostAliases: - - ip: "35.245.78.220" - hostnames: - - "mongodb-prod-servers-vm-0" - - ip: "34.94.131.148" - hostnames: - - "mongodb-2-servers-vm-0" - - ip: "35.236.51.89" - hostnames: - - "mongodb-2-servers-vm-1" - nodeSelector: -{{ toYaml .Values.nodeSelector | indent 8 }} - containers: - - name: {{ .Release.Name }} - image: {{ .Values.image }} - # volumeMounts: - # - name: {{ .Release.Name }} - # mountPath: /settings.json - # readOnly: false - imagePullPolicy: {{ .Values.imagePullPolicy }} - ports: -{{- include "ports.pod" . | indent 8 }} - env: - - name: ROOT_URL - value: http://wallet.pylons.tech - - name: MONGO_URL - value: {{ .Values.mongoURL }} - - name: PORT - value: "80" - - name: METEOR_SETTINGS - valueFrom: - configMapKeyRef: - name: {{ .Release.Name }} - key: settings.json - resources: -{{ toYaml .Values.resources | indent 12 }} - terminationGracePeriodSeconds: 10 \ No newline at end of file diff --git a/big-dipper-backend/deploy/big-dipper-prod/pylons-big-dipper/templates/ingress.yaml b/big-dipper-backend/deploy/big-dipper-prod/pylons-big-dipper/templates/ingress.yaml deleted file mode 100644 index cdfe2d1007..0000000000 --- a/big-dipper-backend/deploy/big-dipper-prod/pylons-big-dipper/templates/ingress.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: {{ .Release.Name }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "chart.labels" . | indent 4 }} - annotations: -{{ toYaml .Values.ingress.annotations | indent 4 }} -spec: - defaultBackend: - service: - name: {{ .Release.Name}} - port: - number: 80 \ No newline at end of file diff --git a/big-dipper-backend/deploy/big-dipper-prod/pylons-big-dipper/templates/service.yaml b/big-dipper-backend/deploy/big-dipper-prod/pylons-big-dipper/templates/service.yaml deleted file mode 100644 index ce8d9a2806..0000000000 --- a/big-dipper-backend/deploy/big-dipper-prod/pylons-big-dipper/templates/service.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "big-dipper-v1.fullname" . }} - labels: - {{- include "big-dipper-v1.labels" . | nindent 4 }} -spec: - type: {{ .Values.service.type }} - ports: - - port: {{ .Values.service.port }} - targetPort: 80 - protocol: TCP - name: http - selector: - {{- include "big-dipper-v1.selectorLabels" . | nindent 4 }} \ No newline at end of file diff --git a/big-dipper-backend/deploy/big-dipper-prod/pylons-big-dipper/values.yaml b/big-dipper-backend/deploy/big-dipper-prod/pylons-big-dipper/values.yaml deleted file mode 100644 index 80f3bbaf90..0000000000 --- a/big-dipper-backend/deploy/big-dipper-prod/pylons-big-dipper/values.yaml +++ /dev/null @@ -1,37 +0,0 @@ -image: gcr.io/zinc-interface-241613/big-dipper-v1 -imagePullPolicy: Always - -replicas: 1 - -nodeSelector: {} - -service: - type: LoadBalancer - port: 80 - -ingress: - enabled: false - className: gce - annotations: - kubernetes.io/ingress.global-static-ip-name: big-dipper-v1 - networking.gke.io/managed-certificates: managed-cert - kubernetes.io/ingress.class: "gce" - cert-manager.io/cluster-issuer: letsencrypt-prod - kubernetes.io/tls-acme: "true" - hosts: - - host: wallet.pylons.tech - paths: - - path: / - pathType: ImplementationSpecific - # tls: - # - secretName: chart-example-tls - # hosts: - # - wallet.pylons.tech - - -resources: {} - - - -host: wallet.pylons.tech -mongoURL: mongodb://104.156.226.17:27017/big-dipper-v1?serverSelectionTimeoutMS=5000&connectTimeoutMS=10000 \ No newline at end of file diff --git a/big-dipper-backend/deploy/network/managed-cert.yaml b/big-dipper-backend/deploy/network/managed-cert.yaml deleted file mode 100644 index 61f131f431..0000000000 --- a/big-dipper-backend/deploy/network/managed-cert.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: networking.gke.io/v1 -kind: ManagedCertificate -metadata: - name: managed-cert -spec: - domains: - - wallet.pylons.tech \ No newline at end of file diff --git a/big-dipper-backend/deploy/pylons-big-dipper/Chart.yaml b/big-dipper-backend/deploy/pylons-big-dipper/Chart.yaml deleted file mode 100644 index 014d58cd1b..0000000000 --- a/big-dipper-backend/deploy/pylons-big-dipper/Chart.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v2 -name: big-dipper-v1 -description: Pylons Big Dipper -version: 0.0.1 -appVersion: 0.0.1 diff --git a/big-dipper-backend/deploy/pylons-big-dipper/templates/_helpers.tpl b/big-dipper-backend/deploy/pylons-big-dipper/templates/_helpers.tpl deleted file mode 100644 index 586045548b..0000000000 --- a/big-dipper-backend/deploy/pylons-big-dipper/templates/_helpers.tpl +++ /dev/null @@ -1,86 +0,0 @@ -{{- define "ports.service" }} -{{- range $key, $value := .Values.ports }} -- port: {{ $v := $value | toString | splitList ":" }}{{$v | first}} - name: {{ $key }} - targetPort: {{ $v := $value | toString | splitList ":" }}{{$v | last}} -{{- end }} -{{- end }} - -{{- define "ports.pod" }} -{{- range $key, $value := .Values.ports }} - - containerPort: {{ $v := $value | toString | splitList ":" }}{{$v | last}} - name: {{ $key }} -{{- end }} -{{- end }} - -{{- define "chart.labels" }} -app.kubernetes.io/name: {{ .Chart.Name }} -helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/instance: {{ .Release.Name }} -app.kubernetes.io/version: {{ .Chart.AppVersion }} -{{- if .Values.labels }}{{ toYaml .Values.labels}}{{- end }} -{{- end }} - -{{/* -Expand the name of the chart. -*/}} -{{- define "big-dipper-v1.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "big-dipper-v1.fullname" -}} -{{- if .Values.fullnameOverride }} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- $name := default .Chart.Name .Values.nameOverride }} -{{- if contains $name .Release.Name }} -{{- .Release.Name | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "big-dipper-v1.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "big-dipper-v1.labels" -}} -helm.sh/chart: {{ include "big-dipper-v1.chart" . }} -{{ include "big-dipper-v1.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "big-dipper-v1.selectorLabels" -}} -app.kubernetes.io/name: {{ include "big-dipper-v1.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Create the name of the service account to use -*/}} -{{- define "big-dipper-v1.serviceAccountName" -}} -{{- if .Values.serviceAccount.create }} -{{- default (include "big-dipper-v1.fullname" .) .Values.serviceAccount.name }} -{{- else }} -{{- default "default" .Values.serviceAccount.name }} -{{- end }} -{{- end }} diff --git a/big-dipper-backend/deploy/pylons-big-dipper/templates/configmap.yaml b/big-dipper-backend/deploy/pylons-big-dipper/templates/configmap.yaml deleted file mode 100644 index 0a87591b4e..0000000000 --- a/big-dipper-backend/deploy/pylons-big-dipper/templates/configmap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.settings }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-archive - namespace: {{ .Release.Namespace }} - labels: - {{- include "chart.labels" . | indent 4 }} -data: - settings.json: |- -{{ .Values.applicationSettingsJson | indent 4}} -{{- end }} diff --git a/big-dipper-backend/deploy/pylons-big-dipper/templates/deployment.yaml b/big-dipper-backend/deploy/pylons-big-dipper/templates/deployment.yaml deleted file mode 100644 index bcc6757155..0000000000 --- a/big-dipper-backend/deploy/pylons-big-dipper/templates/deployment.yaml +++ /dev/null @@ -1,54 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ .Release.Name }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "chart.labels" . | indent 4 }} -spec: - selector: - matchLabels: - {{- include "chart.labels" . | indent 6 }} - replicas: {{ .Values.replicas }} - template: - metadata: - annotations: - rollme: {{ randAlphaNum 5 | quote }} - labels: - {{- include "chart.labels" . | indent 8 }} - spec: - # volumes: - # - configMap: - # name: {{ .Release.Name }} - # name: {{ .Release.Name }} - hostAliases: - - ip: "34.105.11.201" - hostnames: - - "mongodb-1-servers-vm-0" - nodeSelector: -{{ toYaml .Values.nodeSelector | indent 8 }} - containers: - - name: {{ .Release.Name }} - image: {{ .Values.image }} - # volumeMounts: - # - name: {{ .Release.Name }} - # mountPath: /settings.json - # readOnly: false - imagePullPolicy: {{ .Values.imagePullPolicy }} - ports: -{{- include "ports.pod" . | indent 8 }} - env: - - name: ROOT_URL - value: http://wallet.pylons.tech - - name: MONGO_URL - value: {{ .Values.mongoURL }} - - name: PORT - value: "80" - - name: METEOR_SETTINGS - valueFrom: - configMapKeyRef: - name: {{ .Release.Name }} - key: settings.json - resources: -{{ toYaml .Values.resources | indent 12 }} - terminationGracePeriodSeconds: 10 \ No newline at end of file diff --git a/big-dipper-backend/deploy/pylons-big-dipper/templates/ingress.yaml b/big-dipper-backend/deploy/pylons-big-dipper/templates/ingress.yaml deleted file mode 100644 index fbd43ff688..0000000000 --- a/big-dipper-backend/deploy/pylons-big-dipper/templates/ingress.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: {{ .Release.Name }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "chart.labels" . | indent 4 }} - annotations: -{{ toYaml .Values.ingress.annotations | indent 4 }} -spec: - defaultBackend: - service: - name: {{ .Release.Name}} - port: - number: 80 \ No newline at end of file diff --git a/big-dipper-backend/deploy/pylons-big-dipper/templates/service.yaml b/big-dipper-backend/deploy/pylons-big-dipper/templates/service.yaml deleted file mode 100644 index ce8d9a2806..0000000000 --- a/big-dipper-backend/deploy/pylons-big-dipper/templates/service.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "big-dipper-v1.fullname" . }} - labels: - {{- include "big-dipper-v1.labels" . | nindent 4 }} -spec: - type: {{ .Values.service.type }} - ports: - - port: {{ .Values.service.port }} - targetPort: 80 - protocol: TCP - name: http - selector: - {{- include "big-dipper-v1.selectorLabels" . | nindent 4 }} \ No newline at end of file diff --git a/big-dipper-backend/deploy/pylons-big-dipper/values.yaml b/big-dipper-backend/deploy/pylons-big-dipper/values.yaml deleted file mode 100644 index 41c3691cf3..0000000000 --- a/big-dipper-backend/deploy/pylons-big-dipper/values.yaml +++ /dev/null @@ -1,37 +0,0 @@ -image: gcr.io/zinc-interface-241613/big-dipper-v1 -imagePullPolicy: Always - -replicas: 1 - -nodeSelector: {} - -service: - type: NodePort - port: 80 - -ingress: - enabled: true - className: gce - annotations: - kubernetes.io/ingress.global-static-ip-name: big-dipper-v1 - networking.gke.io/managed-certificates: managed-cert - kubernetes.io/ingress.class: "gce" - cert-manager.io/cluster-issuer: letsencrypt-prod - kubernetes.io/tls-acme: "true" - hosts: - - host: wallet.pylons.tech - paths: - - path: / - pathType: ImplementationSpecific - # tls: - # - secretName: chart-example-tls - # hosts: - # - wallet.pylons.tech - - -resources: {} - - - -host: wallet.pylons.tech -mongoURL: mongoUrlVal \ No newline at end of file diff --git a/big-dipper-backend/docker-compose.yml b/big-dipper-backend/docker-compose.yml deleted file mode 100644 index 5db09f91ed..0000000000 --- a/big-dipper-backend/docker-compose.yml +++ /dev/null @@ -1,27 +0,0 @@ -version: '3' - -services: - app: - build: - context: . - dockerfile: Dockerfile - ports: - - '3080:3000' - depends_on: - - mongo - environment: - ROOT_URL: ${APP_ROOT_URL:-http://localhost} - MONGO_URL: mongodb://mongo:27017/meteor - PORT: 3000 - METEOR_SETTINGS: ${METEOR_SETTINGS} - FIREBASE_CONFIG: ${FIREBASE_CONFIG} - - mongo: - image: mongo:latest - command: - - --storageEngine=wiredTiger - volumes: - - data:/data/db - -volumes: - data: diff --git a/big-dipper-backend/i18n/en-us.i18n.yml b/big-dipper-backend/i18n/en-us.i18n.yml deleted file mode 100644 index e73d7eb36a..0000000000 --- a/big-dipper-backend/i18n/en-us.i18n.yml +++ /dev/null @@ -1,281 +0,0 @@ -_locale: 'en-US' -_namespace: '' - -common: - height: 'Height' - voter: 'Voter' - votingPower: 'Voting Power' - addresses: 'Addresses' - amounts: 'Amounts' - delegators: 'delegators' - block: 'block' - blocks: 'blocks' - precommit: 'precommit' - precommits: 'precommits' - last: 'last' - backToList: 'Back to List' - information: 'Information' - time: 'Time' - hash: 'Hash' - more: 'More' - fullStop: '.' - searchPlaceholder: 'Search with tx hash / block height / address' - cancel: 'Cancel' - retry: 'Retry' - rewards: 'Rewards' - bondedTokens: 'Bonded Tokens' - totalNumOfDelegations: 'Total Number of Delegations' - signIn: 'Sign In' - generatingAddresses: 'Generating addresses' - selectAddress: 'Select address to log in with from the list below:' - defaultAddressMessage: 'Your default address is account 0.' - back: 'Back' - next: 'Next' - txOutOfGasMessage: 'Unable to broadcast the transaction due to insufficient balance. Ensure you have enough funds available on your account to cover the transaction fees.' - estimatedGasPrice: 'Estimated gas price is {$gasPrice}.' -navbar: - siteName: 'BIG DIPPER' - version: '-' - validators: 'Validators' - blocks: 'Blocks' - transactions: 'Transactions' - activity_feed: 'Activity Feed' - art_sales: 'Art Sales' - proposals: 'Proposals' - votingPower: 'Voting Power' - lang: 'ENG' - english: 'English' - spanish: 'Español' - italian: 'Italiano' - polish: 'Polski' - russian: 'Русский' - chinese: '中文(繁)' - simChinese: '中文(简)' - portuguese: 'Português' - license: 'LICENSE' - forkMe: 'Fork me!' -consensus: - consensusState: 'Consensus State' - round: 'Round' - step: 'Step' -chainStates: - price: 'Price' - marketCap: 'Market Cap' - inflation: 'Inflation' - communityPool: 'Community Pool' -chainStatus: - startMessage: 'The chain is going to start in' - stopWarning: 'The chain appears to be stopped for {$time}! Feed me with new blocks 😭!' - latestHeight: 'Latest Block Height' - averageBlockTime: 'Average Block Time' - all: 'All' - now: 'Now' - allTime: 'All Time' - lastMinute: 'Last Minute' - lastHour: 'Last Hour' - lastDay: 'Last Day' - seconds: 'seconds' - activeValidators: 'Active Validators' - outOfValidators: 'out of {$totalValidators} validators' - onlineVotingPower: 'Online Voting Power' - fromTotalStakes: '{$percent} from {$totalStakes} {$denomPlural}' -analytics: - blockTimeHistory: 'Block Time History' - averageBlockTime: 'Average Block Time' - blockInterval: 'Block Interval' - noOfValidators: 'No. of Validators' -validators: - randomValidators: 'Random Validators' - moniker: 'Moniker' - uptime: 'Uptime' - selfPercentage: 'Self%' - commission: 'Commission' - lastSeen: 'Last Seen' - status: 'Status' - jailed: 'Jailed' - navActive: 'Active' - navInactive: 'Inactive' - active: 'Active Validators' - inactive: 'Inactive Validators' - listOfActive: 'Here is a list of active validators.' - listOfInactive: 'Here is a list of inactive validators.' - validatorDetails: 'Validator Details' - lastNumBlocks: 'Last {$numBlocks} blocks' - validatorInfo: 'Validator Info' - operatorAddress: 'Operator Address' - selfDelegationAddress: 'Self-Delegate Address' - deeplinks: 'Deeplinks' - commissionRate: 'Commission Rate' - maxRate: 'Max Rate' - maxChangeRate: 'Max Change Rate' - selfDelegationRatio: 'Self Delegation Ratio' - proposerPriority: 'Proposer Priority' - delegatorShares: 'Delegator Shares' - userDelegateShares: 'Shares Delegated by you' - tokens: 'Tokens' - unbondingHeight: 'Unbonding Height' - unbondingTime: 'Unbonding Time' - jailedUntil: 'Jailed Until' - powerChange: 'Power Change' - delegations: 'Delegations' - transactions: 'Transactions' - validatorNotExists: 'Validator does not exist.' - backToValidator: 'Back to Validator' - missedBlocks: 'Missed Blocks' - missedPrecommits: 'Missed Precommits' - missedBlocksTitle: 'Missed blocks of {$moniker}' - totalMissed: 'Total missed' - block: 'Block' - missedCount: 'Miss Count' - iDontMiss: 'I do not miss ' - lastSyncTime: 'Last sync time' - delegator: 'Delegator' - amount: 'Amount' -blocks: - block: 'Block' - proposer: 'Proposer' - latestBlocks: 'Latest blocks' - noBlock: 'No block.' - numOfTxs: 'No. of Txs' - numOfTransactions: 'No. of Transactions' - notFound: 'No such block found.' -transactions: - transaction: 'Transaction' - transactions: 'Transactions' - notFound: 'No transaction found.' - activities: 'Activities' - txHash: 'Tx Hash' - valid: 'Valid' - fee: 'Fee' - noFee: 'No fee' - gasUsedWanted: 'Gas (used / wanted)' - noTxFound: 'No such transaction found.' - noValidatorTxsFound: 'No transaction related to this validator was found.' - memo: 'Memo' - transfer: 'Transfer' - staking: 'Staking' - distribution: 'Distribution' - governance: 'Governance' - slashing: 'Slashing' -proposals: - notFound: 'No proposal found.' - listOfProposals: 'Here is a list of governance proposals.' - proposer: 'Proposer' - proposal: 'proposal' - proposals: 'Proposals' - proposalID: 'Proposal ID' - title: 'Title' - status: 'Status' - submitTime: 'Submit Time' - depositEndTime: 'Deposit End Time' - votingStartTime: 'Voting Start Time' - votingEndTime: 'End Voting Time' - totalDeposit: 'Total Deposit' - description: 'Description' - proposalType: 'Proposal Type' - proposalStatus: 'Proposal Status' - notStarted: 'not started' - final: 'final' - deposit: 'Deposit' - tallyResult: 'Tally Result' - yes: 'Yes' - abstain: 'Abstain' - no: 'No' - noWithVeto: 'No with Veto' - percentageVoted: '{$percent} of online voting power has been voted.' - validMessage: 'This proposal is {$tentative}valid.' - invalidMessage: 'Less than {$quorum} of voting power is voted. This proposal is invalid.' - moreVoteMessage: 'It will be a valid proposal once {$moreVotes} more votes are cast.' - key: 'Key' - value: 'Value' - amount: 'Amount' - recipient: 'Recipient' - changes: 'Changes' - subspace: 'Subspace' -recipes: - notFound: 'No Recipe data found.' - listOfRecipes: 'Here is a list of recipes.' - recipe: 'Recipe' - recipes: 'Recipes' - recipeID: 'Recipe ID' - name: 'Name' - blockInterval: 'BlockInterval' - title: 'Title' - status: 'Status' - submitTime: 'Submit Time' - depositEndTime: 'Deposit End Time' - votingStartTime: 'Voting Start Time' - votingEndTime: 'End Voting Time' - totalDeposit: 'Total Deposit' - cookbookID: 'Cookbook ID' - description: 'Description' - sender: 'Sender' - deeplinks: 'DeepLinks' - disabled: 'Disabled' - yes: 'Yes' - no: 'No' - key: 'Key' - value: 'Value' - amount: 'Amount' - recipient: 'Recipient' - changes: 'Changes' - subspace: 'Subspace' -votingPower: - distribution: 'Voting Power Distribution' - pareto: 'Pareto Principle (20/80 rule)' - minValidators34: 'Min no. of validators hold 34%+ power' -accounts: - accountDetails: 'Account Details' - available: 'Available' - delegated: 'Delegated' - unbonding: 'Unbonding' - rewards: 'Rewards' - total: 'Total' - notFound: 'This account does not exist. Are you looking for a wrong address?' - validators: 'Validators' - shares: 'Shares' - mature: 'Mature' - no: 'No ' - none: 'No ' - delegation: 'Delegation' - plural: 's' - signOut: 'Sign out' - signInText: 'You are signed in as ' - toLoginAs: 'To log in as' - signInWithLedger: 'Sign In With Ledger' - signInWarning: 'Please make sure your Ledger device is turned on and {$network} App {$version} or above is opened.' - pleaseAccept: 'please accept in your Ledger device.' - noRewards: 'No Rewards' - BLESupport: 'Bluetooth connection is currently only supported on Google Chrome Browser.' -activities: - single: 'A' - happened: 'happened.' - senders: 'The following sender(s)' - sent: 'sent' - receivers: 'to the following receipient(s)' - received: 'received' - failedTo: 'failed to ' - to: 'to' - from: 'from' - operatingAt: 'operating at' - withMoniker: 'with moniker' - withTitle: 'with title' - withA: 'with a' - withAmount: 'with {$amount}' -messageTypes: - send: 'Send' - multiSend: 'Multi Send' - createValidator: 'Create Validator' - editValidator: 'Edit Validator' - delegate: 'Delegate' - undelegate: 'Undelegate' - redelegate: 'Redelegate' - submitProposal: 'Submit Proposal' - deposit: 'Deposit' - vote: 'Vote' - withdrawComission: 'Withdraw Commission' - withdrawReward: 'Withdraw Reward' - modifyWithdrawAddress: 'Modify Withdraw Address' - unjail: 'Unjail' - IBCTransfer: 'IBC Transfer' - IBCReceive: 'IBC Receive' diff --git a/big-dipper-backend/i18n/es-es.i18n.yml b/big-dipper-backend/i18n/es-es.i18n.yml deleted file mode 100644 index 66ecd14d57..0000000000 --- a/big-dipper-backend/i18n/es-es.i18n.yml +++ /dev/null @@ -1,238 +0,0 @@ -_locale: "es-ES" -_namespace: "" - -common: - height: "Altura" - voter: "Votante" - votingPower: "Poder de votación" - addresses: "Direcciones" - amounts: "Cantidades" - delegators: "delegadores" - block: "bloque" - blocks: "bloques" - precommit: "precommit" - precommits: "precommits" - last: "último" - backToList: "Volver a la lista" - information: "Información" - time: "Tiempo" - hash: "Hash" - more: "Más" - fullStop: "." - searchPlaceholder: "Buscar con el tx hash / altura de bloque / dirección" - cancel: "Cancelar" - retry: "Reintentar" -navbar: - siteName: "BIG DIPPER" - validators: "Validadores" - blocks: "Bloques" - transactions: "Transacciones" - activity_feed: "Activity Feed" - art_sales: "Art Sales" - proposals: "Propuestas" - votingPower: "Poder de voto" - lang: "ES" - english: "English" - spanish: "Español" - italian: "Italiano" - polish: "Polski" - russian: "Русский" - chinese: "中文(繁)" - simChinese: "中文(简)" - portuguese: "Português" - license: "LICENCIA" - forkMe: "Fork me!" -consensus: - consensusState: "Estado de consenso" - round: "Ronda" - step: "Paso" -chainStates: - price: "Precio" - marketCap: "Capitalización de mercado" - inflation: "Inflación" - communityPool: "Community Pool" -chainStatus: - startMessage: "La cadena comenzará en" - stopWarning: "La cadena parece estar parada por {$time}! Dame de comer nuevos bloques 😭!" - latestHeight: "Última altura de bloque" - averageBlockTime: "Tiempo medio de bloque" - all: "Todo" - now: "Ahora" - allTime: "Todo el tiempo" - lastMinute: "Último minuto" - lastHour: "Última hora" - lastDay: "Último día" - seconds: "segundos" - activeValidators: "Validadores activos" - outOfValidators: "fuera de {$totalValidators} validadores" - onlineVotingPower: "Poder de voto en línea" - fromTotalStakes: "{$percent} de {$totalStakes} {$denomPlural}" -analytics: - blockTimeHistory: "Historial de tiempo de bloque" - averageBlockTime: "Tiempo medio de bloque" - blockInterval: "Intervalo de bloque" - noOfValidators: "No. de validadores" -validators: - randomValidators: "Validadores aleatorios" - moniker: "Moniker" - uptime: "Tiempo de funcionamiento" - selfPercentage: "Self%" - commission: "Comisión" - lastSeen: "Última vez visto" - status: "Estado" - jailed: "Encarcelado" - navActive: "Activo" - navInactive: "Inactivo" - active: "Validadores activos" - inactive: "Validadores inactivos" - listOfActive: "Esta es una lista de los validadores activos." - listOfInactive: "Esta es una lista de los validadores inactivos." - validatorDetails: "Detalles del validador" - lastNumBlocks: "Último {$numBlocks} bloques" - validatorInfo: "Información del validador" - operatorAddress: "Dirección de operador" - selfDelegationAddress: "Dirección de autodelegación" - deeplinks: "Deeplinks" - commissionRate: "Ratio de comisión" - maxRate: "Ratio máximo" - maxChangeRate: "Ratio máximo de cambio" - selfDelegationRatio: "Ratio de autodelegación" - proposerPriority: "" - delegatorShares: "Acciones del delegador" - userDelegateShares: "Acciones delegadas por ti" - tokens: "Tokens" - unbondingHeight: "Altura " - unbondingTime: "Tiempo para desvincularse" - powerChange: "Power Change" - delegations: "Delegaciones" - transactions: "Transacciones" - validatorNotExists: "El validador no existe." - backToValidator: "Volver al validador" - missedBlocks: "Bloques perdidos" - missedPrecommits: "Precommits perdidos" - missedBlocksTitle: "Bloques perdidos de {$moniker}" - totalMissed: "Total perdido" - block: "Bloque" - missedCount: "Perdidos" - iDontMiss: "No he perdido " - lastSyncTime: "Último tiempo de sincronización" - delegator: "Delegador" - amount: "Cantidad" -blocks: - block: "Bloque" - proposer: "Proposer" - latestBlocks: "Últimos bloques" - noBlock: "No bloque." - numOfTxs: "No. de txs" - numOfTransactions: "No. de transacciones" - notFound: "No se ha encontrado tal bloque." -transactions: - transaction: "Transacción" - transactions: "Transacciones" - notFound: "No se encuentra la transacción." - activities: "Movimientos" - txHash: "Tx Hash" - valid: "Validez" - fee: "Comisión" - noFee: "No fee" - gasUsedWanted: "Gas (usado / deseado)" - noTxFound: "No se encontró ninguna transacción de este tipo." - noValidatorTxsFound: "No se encontró ninguna transaccion relacionada con este validador." - memo: "Memo" - transfer: "Transferencia" - staking: "Participación" - distribution: "Distribución" - governance: "Gobernanza" - slashing: "Recorte" -proposals: - notFound: "No se ha encontrado el proposal." - listOfProposals: "Here is a list of governance proposals." - proposer: "Proposer" - proposal: "propuesta" - proposals: "Propuestas" - proposalID: "ID de la propuesta" - title: "Título" - status: "Estado" - submitTime: "Plazo de entrega" - depositEndTime: "Final del tiempo de depósito" - votingStartTime: "Hora de inicio de la votación" - votingEndTime: "Fin del tiempo de votación" - totalDeposit: "Depósito total" - description: "Descripción" - proposalType: "Tipo de propuesta" - proposalStatus: "Estado de la propuesta" - notStarted: "no iniciado" - final: "final" - deposit: "Depósito" - tallyResult: "Resultado del recuento" - yes: "Si" - abstain: "Abstención" - no: "No" - none: "None" - noWithVeto: "No con Veto" - percentageVoted: '{$percent} del poder de voto online ha votado.' - validMessage: "Este proposal es {$tentative}valido." - invalidMessage: "Menos del {$quorum} del poder de voto ha votado. Este proposal es invalido." - moreVoteMessage: 'Será una propuesta válida una vez que {$moreVotes} más votos se emitan.' - key: "Key" - value: "Value" - amount: "Amount" - recipient: "Recipient" - changes: "Changes" - subspace: "Subspace" -votingPower: - distribution: "Distribución del poder de Voto" - pareto: "Pareto Principle (20/80 rule)" - minValidators34: "Min no. of validators hold 34%+ power" -accounts: - accountDetails: "Detalles de la cuenta" - available: "Disponible" - delegated: "Delegado" - unbonding: "Unbonding" - rewards: "Rewards" - total: "Total" - notFound: "Esta cuenta no existe. ¿Estas buscando una dirección equivocada?" - validators: "Validadores" - shares: "Shares" - mature: "Mature" - no: "No " - delegation: "Delegación" - plural: "s" - signOut: "Cerrar sesión" - signInText: "Estas registrado como " - toLoginAs: "Para conectarse como" - signInWithLedger: "Registrarse con Ledger" - signInWarning: 'Por favor, asegúrese de que su dispositivo Ledger esté conectado y la App de Cosmos con la version 1.5.0 o superior esta abierta.' - pleaseAccept: "por favor, acepta en tu dispositivo Ledger." - noRewards: "No Rewards" -activities: - single: "A" - happened: "sucedió." - senders: "Los siguientes remitentes" - sent: "enviado a" - receivers: "al siguiente destinatario" - received: "recibido" - failedTo: "failed to " - to: "a" - from: "desde" - operatingAt: "operando en" - withMoniker: "con el moniker" - withTitle: "con el título" - withA: "con" -messageTypes: - send: "Enviar" - multiSend: "Multi Envío" - createValidator: "Crear validador" - editValidator: "Editar validador" - delegate: "Delegar" - undelegate: "Undelegar" - redelegate: "Redelegar" - submitProposal: "Enviar Proposal" - deposit: "Depositar" - vote: "Voto" - withdrawComission: "Enviar comisión" - withdrawReward: "Retirar recompensa" - modifyWithdrawAddress: "Modificar la dirección de envío" - unjail: "Unjail" - IBCTransfer: "IBC Transfer" - IBCReceive: "IBC Receive" diff --git a/big-dipper-backend/i18n/it-IT.i18n.yml b/big-dipper-backend/i18n/it-IT.i18n.yml deleted file mode 100644 index 1e57c837f6..0000000000 --- a/big-dipper-backend/i18n/it-IT.i18n.yml +++ /dev/null @@ -1,237 +0,0 @@ -_locale: 'it-IT' -_namespace: '' - -common: - height: 'Altezza' - voter: 'Votante' - votingPower: 'Potere di voto' - addresses: 'Indirizzi' - amounts: 'Importi' - delegators: 'delegatori' - block: 'blocco' - blocks: 'blocchi' - precommit: 'precommit' - precommits: 'precommit' - last: 'ultimo' - backToList: 'Torna alla Lista' - information: 'Informazioni' - time: 'Tempo' - hash: 'Hash' - more: 'Di più' - fullStop: '.' - searchPlaceholder: 'Cerca hash transazione / altezza blocco / indirizzo' - cancel: 'Annulla' - retry: 'Riprova' - rewards: 'Reward' -navbar: - siteName: 'BIG DIPPER' - validators: 'Validatori' - blocks: 'Blocchi' - transactions: 'Transazioni' - proposals: 'Proposte' - votingPower: 'Potere di Voto' - lang: "IT" - english: "English" - spanish: "Español" - italian: "Italiano" - polish: "Polski" - russian: "Русский" - chinese: "中文(繁)" - simChinese: "中文(简)" - portuguese: "Português" - license: 'LICENZA' - forkMe: 'Forkami!' -consensus: - consensusState: 'Stato del consenso' - round: 'Round' - step: 'Step' -chainStates: - price: 'Prezzo' - marketCap: 'Market Cap' - inflation: 'Inflazione' - communityPool: 'Community Pool' -chainStatus: - startMessage: 'The chain partirà tra' - stopWarning: 'La chain sembra essersi fermata per {$time}! Dammi nuovi blocchi 😭!' - latestHeight: 'Ultima Altezza di Blocco' - averageBlockTime: 'Tempo di Blocco Medio' - all: 'Tutti' - now: 'Ora' - allTime: 'Tutti i tempi' - lastMinute: 'Ultimo Minuto' - lastHour: 'Ultima ora' - lastDay: 'Ultimo giorno' - seconds: 'secondi' - activeValidators: 'Validatori Attivi' - outOfValidators: 'di {$totalValidators} validatori' - onlineVotingPower: 'Voting Power Attivo' - fromTotalStakes: '{$percent} di {$totalStakes} {$denomPlural}' -analytics: - blockTimeHistory: 'Storia Tempo di Blocco' - averageBlockTime: 'Tempo di Blocco Medio' - blockInterval: 'Intervallo di Blocco' - noOfValidators: 'N. Validatori' -validators: - randomValidators: 'Validatori random' - moniker: 'Moniker' - uptime: 'Uptime' - selfPercentage: '% autodelegata' - commission: 'Commissioni' - lastSeen: 'Visto per ultimo' - status: 'Stato' - jailed: 'Jailato' - navActive: 'Attivo' - navInactive: 'Inattivo' - active: 'Tutti i Validatori' - inactive: 'Validatori inattivi' - listOfActive: 'Ecco una lista di validatori attivi.' - listOfInactive: 'Ecco una lista di validatori inattivi.' - validatorDetails: 'Dettagli validatore' - lastNumBlocks: 'Utlimi {$numBlocks} blocchi' - validatorInfo: 'Info Validatore' - operatorAddress: 'Indirizzo Operatore' - selfDelegationAddress: 'Indirizzo di Auto-Delega' - deeplinks: 'Deeplinks' - commissionRate: 'Tasso di commissioni' - maxRate: 'Tasso massima' - maxChangeRate: 'Cambiamento del tasso massimo' - selfDelegationRatio: 'Tasso di Auto Delega' - proposerPriority: 'Priorità del proponente' - delegatorShares: 'Percentuale dei delegati' - userDelegateShares: 'Percentuale delega personale' - tokens: 'Token' - unbondingHeight: 'Altezza di unbond' - unbondingTime: 'Tempo di unbond' - powerChange: 'Modifica del potere' - delegations: 'Delegazioni' - transactions: 'Transazioni' - validatorNotExists: 'Validatore inesistente' - backToValidator: 'Torna al validatore' - missedBlocks: 'Blocchi mancanti' - missedPrecommits: 'Precommit mancati' - missedBlocksTitle: 'Manca il blocco: {$moniker}' - totalMissed: 'Totale perso' - block: 'Blocco' - missedCount: 'Mancato conteggio' - iDontMiss: 'Non mi manca' - lastSyncTime: 'Ultima sincronizzazione ora' - delegator: 'Delegante' - amount: 'Importo' -blocks: - block: 'Blocco' - proposer: 'Proponente' - latestBlocks: 'Ultimi blocchi' - noBlock: 'Nessun blocco' - numOfTxs: 'N. Txs' - numOfTransactions: 'N. di transazioni' - notFound: 'Nessun blocco trovato.' -transactions: - transaction: 'Transazione' - transactions: 'Transazioni' - notFound: 'Nessuna transazione trovata' - activities: 'Attività' - txHash: 'Hash Tx' - valid: 'Valido' - fee: 'Fee' - noFee: 'Nessuna fee' - gasUsedWanted: 'Gas (usato / voluto)' - noTxFound: 'Nessuna transazione trovata.' - noValidatorTxsFound: 'Nessuna transazione relativa a questo validatore trovata' - memo: 'Memo' - transfer: 'Trasferimento' - staking: 'Staking' - distribution: 'Distribuzione' - governance: 'Governance' - slashing: 'Slashing' -proposals: - notFound: 'Nessuna proposta trovata.' - listOfProposals: 'Questa è la lista delle proposte di governance' - proposer: 'Proponente' - proposal: 'Proposta' - proposals: 'Proposte' - proposalID: 'ID Proposta' - title: 'Titolo' - status: 'Stato' - submitTime: 'Ora invio' - depositEndTime: 'Ora di fine deposito' - votingStartTime: 'Ora di inizio votazione' - votingEndTime: 'Ora di fine votazione' - totalDeposit: 'Deposito totale' - description: 'Descrizione' - proposalType: 'Tipo di proposta' - proposalStatus: 'Stato della proposta' - notStarted: 'Non iniziato' - final: 'Finale' - deposit: 'Deposito' - tallyResult: 'Risultato conteggio' - yes: 'Sì' - abstain: 'Astenersi' - no: 'No' - noWithVeto: 'No con Veto' - percentageVoted: '{$percent} di voti raccolti tra i votanti attivi.' - validMessage: 'Questa proposta è {$tentative}valida.' - invalidMessage: 'Sono stati raccolti meno del {$quorum} di voti. Questa proposta è invalida.' - moreVoteMessage: 'Sarà una proposta valida quando {$moreVotes} più voti di ora saranno raccolti.' - key: 'Key' - value: 'Value' - amount: 'Amount' - recipient: 'Recipient' - changes: 'Changes' - subspace: 'Subspace' -votingPower: - distribution: 'Distribuzione del potere di voto' - pareto: 'Principio di Pareto (regola 20/80)' - minValidators34: 'Min n. di validatori che possiede il 34%+ di potere' -accounts: - accountDetails: 'Dettagli account' - available: 'Disponibile' - delegated: 'Delegati' - unbonding: 'Unbonding' - rewards: 'Rewards' - total: 'Totale' - notFound: "Questo account non esiste. Forse hai inserito l'indirizzo sbagliato?" - validators: 'Validatori' - shares: 'Share' - mature: 'Maturo' - no: 'No ' - none: 'Nessuno' - delegation: 'Delega' - plural: '' - signOut: 'Esci' - signInText: 'Registrati come' - toLoginAs: 'Accedi come' - signInWithLedger: 'Registrati con un Ledger' - signInWarning: 'Per favore assicurati che il tuo Ledger sia connesso e {$network} App {$version} or above che sia aperto.' - pleaseAccept: 'Per favore accetta nel tuo Ledger' - noRewards: 'Nessun reward' -activities: - single: 'Un (male), una (female)' - happened: 'è accaduto.' - senders: 'I seguenti mittenti' - sent: 'Inviato' - receivers: 'I seguenti destinatati' - received: 'Ricevuto' - failedTo: 'Ha fallito a ' - to: 'A' - from: 'Da' - operatingAt: 'che operano presso' - withMoniker: 'con moniker' - withTitle: 'con titolo' - withA: 'con un (male) / una (female)' -messageTypes: - send: 'Invia' - multiSend: 'Invio multipo' - createValidator: 'Crea un validatore' - editValidator: 'Modifica un validatore' - delegate: 'Delega' - undelegate: 'Rimuovi delega' - redelegate: 'Ridelega' - submitProposal: 'Invia proposta' - deposit: 'Deposita' - vote: 'Vota' - withdrawComission: 'Ritira una commissione' - withdrawReward: 'Ottieni un reward' - modifyWithdrawAddress: 'Modifica indirizzo di ritiro' - unjail: 'Unjail' - IBCTransfer: 'Trasferisci IBC' - IBCReceive: 'Ricevi IBC' diff --git a/big-dipper-backend/i18n/pl-PL.i18n.yml b/big-dipper-backend/i18n/pl-PL.i18n.yml deleted file mode 100644 index 86d344f869..0000000000 --- a/big-dipper-backend/i18n/pl-PL.i18n.yml +++ /dev/null @@ -1,237 +0,0 @@ -_locale: 'pl-PL' -_namespace: '' - -common: - height: 'Wysokość' - voter: 'Głosujący' - votingPower: 'Siła Głosu' - addresses: 'Adres' - amounts: 'Kwota' - delegators: 'Delegatorzy' - block: 'blok' - blocks: 'bloki' - precommit: 'precommit' - precommits: 'precommits' - last: 'ostatni' - backToList: 'Powrtót do Listy' - information: 'Informacje' - time: 'Czas' - hash: 'Hash' - more: 'Więcej' - fullStop: '.' - searchPlaceholder: 'Wyszukaj adres / transakcję / wysokość bloku' - cancel: 'Anuluj' - retry: 'Spróbuj ponownie' - rewards: 'Nagrody' -navbar: - siteName: 'Wielki Wóz' - validators: 'Walidatorzy' - blocks: 'Bloki' - transactions: 'Transakcje' - proposals: 'Propozycje' - votingPower: 'Siła Głosu' - lang: "PL" - english: "English" - spanish: "Español" - italian: "Italiano" - polish: "Polski" - russian: "Русский" - chinese: "中文(繁)" - simChinese: "中文(简)" - portuguese: "Português" - license: 'LICENCJA' - forkMe: 'Fork me!' -consensus: - consensusState: 'Status Konsensusu' - round: 'Runda' - step: 'Etap' -chainStates: - price: 'Cena' - marketCap: 'Kapitalizacja rynkowa' - inflation: 'Inflacja' - communityPool: 'Zasoby Społeczności' -chainStatus: - startMessage: 'Łańcuch bloków danych rozpocznie działanie za ' - topWarning: 'Wygląda na to że, łańcuch bloków danych zatrzymał się na {$time}! Odśwież stronę i nakarm mnie nowymi blokami 😭!' - latestHeight: 'Ostatnia wysokość bloku' - averageBlockTime: 'Średni Czas Bloku' - all: 'Całość' - now: 'Teraz' - allTime: 'Cały Czas' - lastMinute: 'Ostatnia Minuta' - lastHour: 'Ostatnia Godzina' - lastDay: 'Ostatni Dzień' - seconds: 'sekund' - activeValidators: 'Aktywni Walidatorzy' - outOfValidators: 'z grona {$totalValidators} walidatorów' - onlineVotingPower: 'Siła Głosu Online' - fromTotalStakes: '{$percent} spośród {$totalStakes} {$denomPlural}' -analytics: - blockTimeHistory: 'Czas Bloków' - averageBlockTime: 'Średni Czas Bloku' - blockInterval: 'Interwał Bloku' - noOfValidators: 'Liczba Walidatorów' -validators: - randomValidators: 'Losowo Wybrani Walidatorzy' - moniker: 'Moniker' - uptime: 'Dyspozycyjność' - selfPercentage: 'Self%' - commission: 'Prowizja' - lastSeen: 'Ostatnio widziany' - status: 'Status' - jailed: 'Jailed' - navActive: 'Aktywni' - navInactive: 'Nieaktywni' - active: 'Aktywni Walidatorzy' - inactive: 'Nieaktywni Walidatorzy' - listOfActive: 'Lista aktywnych Walidatorów' - listOfInactive: 'Lista nieaktywnych Walidatorów' - validatorDetails: 'Szczegóły Walidatora' - lastNumBlocks: 'Ostatnie {$numBlocks} bloków' - validatorInfo: 'Szczegóły Walidatora' - operatorAddress: 'Adres Operatora' - selfDelegationAddress: 'Adres Delegacji Self' - deeplinks: 'Deeplinks' - commissionRate: 'Wysokość prowizji' - maxRate: 'Maksymalna Stawka' - maxChangeRate: 'Maksymalna Stawka Zmiany Prowizji' - selfDelegationRatio: 'Proporcja Delegacji Self' - proposerPriority: 'Piorytet Propozycji' - delegatorShares: 'Akcje Delegującego' - userDelegateShares: 'Akcje Oddelegowane przez Ciebie' - tokens: 'Tokeny' - unbondingHeight: 'Wysokość Unbonding' - unbondingTime: 'Czas Unbonding' - powerChange: 'Zmiana Siły Głosu' - delegations: 'Delegacje' - transactions: 'Transakcje' - validatorNotExists: 'Walidator nie istnieje.' - backToValidator: 'Powrtót do Walidatora' - missedBlocks: 'Pominięte Bloki' - missedPrecommits: 'Pominięte Precommits' - missedBlocksTitle: ‘Pominięte Bloki od {$moniker}' - totalMissed: 'Łącznie pominięto' - block: 'Blok' - missedCount: 'Liczba pominiętych' - iDontMiss: 'Żadne bloki nie zostały pominięte' - lastSyncTime: 'Ostatni czas synch' - delegator: 'Delegujący' - amount: 'Kwota' -blocks: - block: 'Blok' - proposer: 'Autor Propozycji' - latestBlocks: 'Ostatnie Bloki' - noBlock: 'Ilość Bloków' - numOfTxs: 'Liczba Txs' - numOfTransactions: 'Liczba Transakcji' - notFound: 'Nie znaleziono bloku.' -transactions: - transaction: 'Transakcja' - transactions: 'Transakcje' - notFound: 'Nie znaleziono transakcji.' - activities: 'Aktywność' - txHash: 'Tx Hash' - valid: 'Ważna' - fee: 'Opłata' - noFee: 'Bezpłatnie' - gasUsedWanted: 'Gaz (użyty/ wymagany)' - noTxFound: 'Nie znaleziono podanej transakcji.' - noValidatorTxsFound: 'Nie znaleziono żadnej transakcji dla podanego Walidatora' - memo: 'Memo' - transfer: 'Wysłane' - staking: 'Udziały' - distribution: 'Dystrybucja' - governance: 'Administracja' - slashing: 'Cięcia' -proposals: - notFound: Nie znaleziono propozycji.' - listOfProposals: 'Poniżej znajduje się lista propozycji administracyjnych.' - proposer: 'Autor Propozycji' - proposal: 'propozycja' - proposals: 'Propozycje' - proposalID: 'ID Propozycji' - title: 'Tytuł' - status: 'Status' - submitTime: 'Czas Wysłania' - depositEndTime: 'Czas Końcowy dla Skladania Depozytu' - votingStartTime: 'Czas Rozpoczęcia Głosowania' - votingEndTime: 'Czas Końcowy Głosowania' - totalDeposit: 'Kwota Depozytu' - description: 'Szczegóły' - proposalType: 'Typ Propozycji' - proposalStatus: 'Status Propozycji' - notStarted: 'nie rozpoczęto' - final: 'końcowy' - deposit: 'Depozyt' - tallyResult: 'Wyniki Tally' - yes: 'Tak' - abstain: 'Wstrzymaj się od Głosu' - no: 'Nie' - noWithVeto: 'Nie z Veto' - percentageVoted: '{$percent} Głosów Online zostalo oddanych' - validMessage: 'Podana propozycja jest {$tentative}ważna.' - invalidMessage: 'Mniej niż {$quorum} głosów zostało oddanych. Podana propozycja jest nieważna.' - moreVoteMessage: 'Propozycja zostanie uznana za ważną jeśli {$moreVotes} lub więcej głosów zostanie oddanych.' - key: 'Key' - value: 'Value' - amount: 'Kwota' - recipient: 'Odbiorca' - changes: 'Zmiany' - subspace: 'Subspace' -votingPower: - distribution: 'Podział Siły Głosu' - pareto: 'Zasada Pareta (zasada 20/80)' - minValidators34: 'Co najmniej 34% Walidatorów ma prawo do głosowania.' -accounts: - accountDetails: 'Szczegóły Konta' - available: 'Dostępe' - delegated: 'Oddelegowane' - unbonding: 'Unbonding' - rewards: 'Nagrody' - total: 'Łącznie' - notFound: 'Konto nie istnieje. Sprawdź, czy adres odbiorcy został prawidłowo wpisany.' - validators: 'Walidatorzy' - shares: 'Akcje' - mature: 'Dojrzały' - no: 'Nie ' - none: 'Brak ' - delegation: 'Delegacja' - plural: '' - signOut: 'Wyloguj' - signInText: 'Zalogowany jako ' - toLoginAs: 'Aby zalogować się jako ' - signInWithLedger: 'Zaloguj się z Ledgerem' - signInWarning: 'Upewnij się, że Twój Ledger jest podłączony do komputera oraz aplikacja {$network} App {$version} lub nowsza jest uruchomiona.' - pleaseAccept: 'zaakceptuj połączenie na Twoim Ledgerze.' - noRewards: 'Brak Nagród' -activities: - single: ' ' - happened: 'został wykonany' - senders: 'Nadawca' - sent: 'wysłał' - receivers: 'do podanych odbiorców/cy' - received: 'otrzymał' - failedTo: 'Nie udało się' - to: 'do' - from: 'od' - operatingAt: 'operujący pod adresem' - withMoniker: 'z monikerem' - withTitle: 'pod tytułem' - withA: 'razem z' -messageTypes: - send: 'Wysłał' - multiSend: 'Wysłał Multi' - createValidator: 'Utwórz Walidatora' - editValidator: 'Edytuj Walidatora' - delegate: 'Oddelegował' - undelegate: 'Wycofał Oddelegowane Tokeny' - redelegate: 'Oddelegował Ponownie' - submitProposal: 'Wyśłał Propozycję' - deposit: 'Wpłacił Depozyt' - vote: 'Zagłosował' - withdrawComission: 'Wypłacił Prowizję' - withdrawReward: 'Wypłacił Nagrody' - modifyWithdrawAddress: 'Zmienił adres do wypłaty' - unjail: 'Unjail' - IBCTransfer: 'Wyślij IBC' - IBCReceive: 'Odbierz IBC' diff --git a/big-dipper-backend/i18n/pt-BR.i18n.yml b/big-dipper-backend/i18n/pt-BR.i18n.yml deleted file mode 100644 index 7f881f93ed..0000000000 --- a/big-dipper-backend/i18n/pt-BR.i18n.yml +++ /dev/null @@ -1,236 +0,0 @@ -_locale: 'pt-BR' -_namespace: '' - -common: - height: 'Altura' - voter: 'Eleitor' - votingPower: 'Poder de voto' - addresses: 'Endereços' - amounts: 'Quantidades' - delegators: 'delegadores' - block: 'bloco' - blocks: 'blocos' - precommit: 'precommit' - precommits: 'precommits' - last: 'último' - backToList: 'Voltar para lista' - information: 'Informação' - time: 'Data e hora' - hash: 'Hash' - more: 'Mais' - fullStop: '.' - searchPlaceholder: 'Pesquise por tx hash / altura do bloco / endereço' - cancel: 'Cancelar' - retry: 'Tentar novamente' - rewards: 'Recompensas' -navbar: - siteName: 'BIG DIPPER' - validators: 'Validadores' - blocks: 'Blocos' - transactions: 'Transações' - proposals: 'Propostas' - votingPower: 'Poder de voto' - lang: "pt-BR" - english: "English" - spanish: "Español" - italian: "Italiano" - polish: "Polski" - chinese: "中文(繁)" - simChinese: "中文(简)" - portuguese: "Português" - license: 'LICENÇA' - forkMe: 'Fork me!' -consensus: - consensusState: 'Estado de consenso' - round: 'Rodada' - step: 'Etapa' -chainStates: - price: 'Preço' - marketCap: 'Valor de mercado' - inflation: 'Inflação' - communityPool: 'Pool da comunidade' -chainStatus: - startMessage: 'A cadeia vai começar em' - stopWarning: 'A cadeia parece ter parado por {$time}! Alimente-me com novos blocos 😭!' - latestHeight: 'Última altura de bloco' - averageBlockTime: 'Tempo médio de bloco' - all: 'Tudo' - now: 'Agora' - allTime: 'Todo tempo' - lastMinute: 'Último minuto' - lastHour: 'Última hora' - lastDay: 'Último dia' - seconds: 'segundos' - activeValidators: 'Validadores ativos' - outOfValidators: 'de {$totalValidators} validadores' - onlineVotingPower: 'Poder de votação online' - fromTotalStakes: '{$percent} de {$totalStakes} {$denomPlural}' -analytics: - blockTimeHistory: 'Histórico de tempo de bloco' - averageBlockTime: 'Tempo médio de bloco' - blockInterval: 'Intervalo de bloco' - noOfValidators: 'Nº de validadores' -validators: - randomValidators: 'Validadores aleatórios' - moniker: 'Apelido' - uptime: 'Tempo de atividade' - selfPercentage: 'Self%' - commission: 'Comissão' - lastSeen: 'Visto pela última vez' - status: 'Status' - jailed: 'Engaiolado' - navActive: 'Ativo' - navInactive: 'Inativo' - active: 'Validadores Ativos' - inactive: 'Validadores Inativos' - listOfActive: 'Aqui está uma lista de validadores ativos.' - listOfInactive: 'Aqui está uma lista de validadores inativos.' - validatorDetails: 'Detalhes do validador' - lastNumBlocks: 'Últimos {$numBlocks} blocos' - validatorInfo: 'Informação do validador' - operatorAddress: 'Endereço do operador' - selfDelegationAddress: 'Endereço de auto-delegação' - deeplinks: 'Deeplinks' - commissionRate: 'Taxa de Comissão' - maxRate: 'Taxa máxima' - maxChangeRate: 'Taxa máxima de alteração' - selfDelegationRatio: 'Razão de auto-delegação' - proposerPriority: 'Prioridade do proponente' - delegatorShares: 'Ações do delegador' - userDelegateShares: 'Ações delegadas por você' - tokens: 'Tokens' - unbondingHeight: 'Altura de desvinculação' - unbondingTime: 'Tempo de desvinculação' - powerChange: 'Mudança de poder' - delegations: 'Delegações' - transactions: 'Transações' - validatorNotExists: 'O validador não existe.' - backToValidator: 'Voltar para validador' - missedBlocks: 'Blocos perdidos' - missedPrecommits: 'Precommits perdidos' - missedBlocksTitle: 'Blocos perdidos por {$moniker}' - totalMissed: 'Total perdido' - block: 'Bloco' - missedCount: 'Contagem de perdidos' - iDontMiss: 'Não há perdidos ' - lastSyncTime: 'Última sincronização' - delegator: 'Delegador' - amount: 'Quantidade' -blocks: - block: 'Bloco' - proposer: 'Proponente' - latestBlocks: 'Últimos Blocos' - noBlock: 'Sem bloco.' - numOfTxs: 'No. de Txs' - numOfTransactions: 'Nº de transações' - notFound: 'Nenhum bloco encontrado.' -transactions: - transaction: 'Transação' - transactions: 'Transações' - notFound: 'Nenhuma transação encontrada.' - activities: 'Atividades' - txHash: 'Tx Hash' - valid: 'Validade' - fee: 'Taxa' - noFee: 'Sem taxa' - gasUsedWanted: 'Gas (usado / desejado)' - noTxFound: 'Nenhuma transação encontrada.' - noValidatorTxsFound: 'Nenhuma transação relacionada a este validador foi encontrada.' - memo: 'Memo' - transfer: 'Transferência' - staking: 'Participação' - distribution: 'Distribuição' - governance: 'Governança' - slashing: 'Cortando' -proposals: - notFound: 'Nenhuma proposta encontrada.' - listOfProposals: 'Aqui está uma lista de propostas de governança.' - proposer: 'Proponente' - proposal: 'proposta' - proposals: 'Propostas' - proposalID: 'ID da proposta' - title: 'Título' - status: 'Status' - submitTime: 'Tempo de envio' - depositEndTime: 'Fim do tempo de depósito' - votingStartTime: 'Hora do início da votação' - votingEndTime: 'Fim do tempo de votação' - totalDeposit: 'Depósito Total' - description: 'Descrição' - proposalType: 'Tipo de proposta' - proposalStatus: 'Status da proposta' - notStarted: 'não iniciado' - final: 'final' - deposit: 'Depósito' - tallyResult: 'Resultado da contagem' - yes: 'Sim' - abstain: 'Abstenção' - no: 'Não' - noWithVeto: 'Não com Veto' - percentageVoted: '{$percent} do poder de voto já votou.' - validMessage: 'Esta proposta é {$tentative}válida.' - invalidMessage: 'Menos de {$ quorum} do poder de voto foi votado. Esta proposta é inválida..' - moreVoteMessage: 'Será uma proposta válida uma vez que {$moreVotes} mais votos sejam enviados.' - key: 'Chave' - value: 'Valor' - amount: 'Quantidade' - recipient: 'Recebedor' - changes: 'Alterações' - subspace: 'Subespaço' -votingPower: - distribution: 'Distribuição do poder de voto' - pareto: 'Princípio de Pareto (regra 20/80)' - minValidators34: 'Número mínimo de validadores que detem 34%+ de poder' -accounts: - accountDetails: 'Detalhes da conta' - available: 'disponível' - delegated: 'delegado' - unbonding: 'desvinculação' - rewards: 'Recompensas' - total: 'Total' - notFound: 'Essa conta não existe. Você está informando o endereço correto?' - validators: 'Validadores' - shares: 'Ações' - mature: 'Mature' - no: 'Não ' - none: 'Sem ' - delegation: 'delegação' - plural: 's' - signOut: 'Sair' - signInText: 'Você está conectado como ' - toLoginAs: 'Para entrar como' - signInWithLedger: 'Entrar com Ledger' - signInWarning: 'Certifique-se de que seu dispositivo Ledger esteja conectado e o {$network} App {$version} ou superior esteja aberto.' - pleaseAccept: 'por favor, aceite em seu dispositivo Ledger.' - noRewards: 'Sem recompensas' -activities: - single: 'A' - happened: 'aconteceu.' - senders: 'O(s) seguinte(s) remetente(s)' - sent: 'enviado' - receivers: 'para o(s) seguinte(s) destinatário(s)' - received: 'recebido' - failedTo: 'falhou em' - to: 'para' - from: 'de' - operatingAt: 'operado por' - withMoniker: 'com o apelido' - withTitle: 'com o título' - withA: 'com' -messageTypes: - send: 'Enviou' - multiSend: 'Envio múltiplo' - createValidator: 'Criar Validador' - editValidator: 'Editar Validador' - delegate: 'Delegar' - undelegate: 'Undelegar' - redelegate: 'Redelegar' - submitProposal: 'Enviar proposta' - deposit: 'Depósito' - vote: 'Vote' - withdrawComission: 'Retirar Comissão' - withdrawReward: 'Retirar Recompensa' - modifyWithdrawAddress: 'Modificar Endereço de Retirada' - unjail: 'Sair da jaula' - IBCTransfer: 'IBC transferido' - IBCReceive: 'IBC recebido' diff --git a/big-dipper-backend/i18n/ru-RU.i18n.yml b/big-dipper-backend/i18n/ru-RU.i18n.yml deleted file mode 100644 index 02b681ace2..0000000000 --- a/big-dipper-backend/i18n/ru-RU.i18n.yml +++ /dev/null @@ -1,252 +0,0 @@ -_locale: 'ru-RU' -_namespace: '' - -common: - height: 'Высота Блока' - voter: 'Избиратель' - votingPower: 'Право Голоса' - addresses: 'Адреса' - amounts: 'Суммы' - delegators: 'Делегаторы' - block: 'Блок' - blocks: 'Блоки' - precommit: 'Прекоммит' - precommits: 'Прекоммиты' - last: 'Последний' - backToList: 'Назад к списку' - information: 'Информация' - time: 'Время' - hash: 'Хэш' - more: 'Дальше' - fullStop: '.' - searchPlaceholder: 'Поиск по хэшу сделки / высоте блока / адресу' - cancel: 'Отмена' - retry: 'Повторить попытку' - rewards: 'Награды' - bondedTokens: 'Bonded Tokens' - totalNumOfDelegations: 'Всего Делегирований' - signIn: 'Войти' - generatingAddresses: 'Генерация адресов' - selectAddress: 'Выберите адрес, с которым хотите авторизоваться, из списка ниже:' - defaultAddressMessage: 'Ваш адрес по умолчанию это счет 0.' - back: 'Назад' - next: 'Вперед' - txOutOfGasMessage: 'Транзакция не осуществлена: недостаточный баланс. Убедитесь, что вашего баланса достаточно, чтобы покрыть комиссию.' - estimatedGasPrice: 'Примерная цена газа {$gasPrice}.' -navbar: - siteName: 'BIG DIPPER' - version: '-' - validators: 'Валидаторы' - blocks: 'Блоки' - transactions: 'Транзакции' - proposals: 'Предложения' - votingPower: 'Право голоса' - lang: "RU" - english: "English" - spanish: "Español" - italian: "Italiano" - polish: "Polski" - russian: "Русский" - chinese: "中文(繁)" - simChinese: "中文(简)" - portuguese: "Português" - license: 'ЛИЦЕНЗИЯ' - forkMe: Форк!' -consensus: - consensusState: 'Состояние консенсуса' - round: 'Раунд' - step: 'Этап' -chainStates: - price: 'Цена' - marketCap: 'Рыночная капитализация' - inflation: 'Инфляция' - communityPool: 'Коммьюнити пул' -chainStatus: - startMessage: 'Чейн будет запущен в' - stopWarning: 'Чейн не запущен уже {$time}! Накорми меня новыми блоками 😭!' - latestHeight: 'Последняя Высота Блока' - averageBlockTime: 'Среднее Время Блока' - all: 'Всё' - now: 'Сейчас' - allTime: 'За Все Время' - lastMinute: 'За Последнюю Минуту' - lastHour: 'За Последний Час' - lastDay: 'За Последний День' - seconds: 'секунды' - activeValidators: 'Активные валидаторы' - outOfValidators: 'из {$totalValidators} валидаторов' - onlineVotingPower: 'Онлайн Право Голоса' - fromTotalStakes: '{$percent} из {$totalStakes} {$denomPlural}' -analytics: - blockTimeHistory: 'История Времени Блока' - averageBlockTime: 'Среднее Время Блока' - blockInterval: 'Интервал Блока' - noOfValidators: 'Количество валидаторов' -validators: - randomValidators: 'Случайные Валидаторы' - moniker: 'Название' - uptime: 'Аптайм' - selfPercentage: '% самоделегирования' - commission: 'Комиссия' - lastSeen: 'Последний раз был онлайн' - status: 'Статус' - jailed: 'Jailed' - navActive: 'Активный' - navInactive: 'Неактивный' - active: 'Активные Валидаторы' - inactive: 'Неактивные Валидаторы' - listOfActive: 'Вот список активных валидаторов.' - listOfInactive: 'Вот список неактивных валидаторов.' - validatorDetails: 'Детали Валидатора' - lastNumBlocks: 'Последние {$numBlocks} блоков' - validatorInfo: 'Информация О Валидаторе' - operatorAddress: 'Адрес Оператора' - selfDelegationAddress: 'Адрес Самоделегирования' - deeplinks: 'Deeplinks' - commissionRate: 'Ставка Комиссии' - maxRate: 'Максимальная Ставка' - maxChangeRate: 'Максимальная Ставка Изменения' - selfDelegationRatio: 'Коэффициент Самоделегирования' - proposerPriority: 'Приоритет предложения' - delegatorShares: 'Доли делегатора' - userDelegateShares: 'Доли, делегированные вами' - tokens: 'Токены' - unbondingHeight: 'Высота Un-Бондинг' - unbondingTime: 'Время Un-Бондинг' - jailedUntil: 'Jailed До' - powerChange: 'Изменение власти' - delegations: 'Делегации' - transactions: 'Транзакции' - validatorNotExists: 'Валидатора не существует.' - backToValidator: 'Назад К Валидатору' - missedBlocks: 'Пропущенные Блоки' - missedPrecommits: 'Пропущенные Прекоммиты' - missedBlocksTitle: 'Пропущенные блоки {$moniker}' - totalMissed: 'Всего пропущено' - block: 'Блок' - missedCount: 'Пропущено' - iDontMiss: "Я не пропускаю" - lastSyncTime: 'Последнее время синхронизации' - delegator: 'Делегатор' - amount: 'Сумма' -blocks: - block: 'Блок' - proposer: 'Предложение' - latestBlocks: 'Последние блоки' - noBlock: 'Нет блока.' - numOfTxs: 'Количество транзакций' - numOfTransactions: 'Количество транзакций' - notFound: 'Такого блока не найдено.' -transactions: - transaction: 'Транзакция' - transactions: 'Транзакции' - notFound: 'Транзакция не найдена.' - activities: 'Активность' - txHash: 'Хэш транзакции' - valid: 'Действительна' - fee: 'Комиссия' - noFee: 'Без комиссии' - gasUsedWanted: 'Газ (использовано / хотелось)' - noTxFound: 'Транзакция не найдена' - noValidatorTxsFound: 'Транзакция, связанная с этом валидатором, не найдена.' - memo: 'Комментарий' - transfer: 'Передача' - staking: 'Стейкать' - distribution: 'Распределение' - governance: 'Управление' - slashing: 'Slashing' -proposals: - notFound: 'Предложение не найдено.' - listOfProposals: 'Список предложений по управлению' - proposer: 'Предлагающий' - proposal: 'Предложение' - proposals: 'Предложения' - proposalID: 'ID предложения' - title: 'Название' - status: 'Статус' - submitTime: 'Время Отправки' - depositEndTime: 'Время Окончания Депозита' - votingStartTime: 'Время Начала Голосования' - votingEndTime: 'Время Окончания Голосования' - totalDeposit: 'Общий депозит' - description: 'Описание' - proposalType: 'Тип Предложения' - proposalStatus: 'Статус Предложения' - notStarted: 'не начался' - final: 'окончено' - deposit: 'Депозит' - tallyResult: 'Итог Подсчета' - yes: 'За' - abstain: Воздержался - no: 'Против' - noWithVeto: 'Против с правом Вето' - percentageVoted: '{$percent} от всех голосов онлайн проголосовало.' - validMessage: 'Это предложение {$tentative}действительное.' - invalidMessage: 'Меньше чем {$quorum} голосующих проголосовало. Это предложение недействительное.' - moreVoteMessage: 'Предложение будет действительным, если еще {$moreVotes} голосующих отдадут свой голос.' - key: 'Ключ' - value: 'Значение' - amount: 'Сумма' - recipient: 'Получатель' - changes: 'Изменения' - subspace: 'Подмножество' -votingPower: - distribution: 'Распределение Количества Голосов' - pareto: 'Принцип Парето (правило 20/80)' - minValidators34: 'Минимальное количество валидаторов c 34%+ количеством голосов' -accounts: - accountDetails: 'Детали счета' - available: 'Доступно' - delegated: 'Заделегировано' - unbonding: 'Un-Бондинг' - rewards: 'Награды' - total: 'Всего' - notFound: 'Такого счета не существует. Вы ищете неправильный адрес?' - validators: 'Валидаторы' - shares: 'Доли' - mature: 'Зрелые' - no: 'Нет' - none: 'Нет' - delegation: 'Делегация' - plural: '' - signOut: 'Выйти' - signInText: 'Вы вошли как' - toLoginAs: 'Войти как' - signInWithLedger: 'Войти, используя Ledger' - signInWarning: 'Пожалуйста, убедитесь, что устройство Ledger подключено и {$network} App {$version} или выше открыто.' - pleaseAccept: 'пожалуйста, примите в своем Ledger устройстве.' - noRewards: 'Нет Наград' - BLESupport: 'Bluetooth-соединение пока что поддерживается только в браузере Google Chrome.' -activities: - single: ' ' - happened: 'произошло.' - senders: 'Этот отправитель(и)' - sent: 'отправил' - receivers: 'этому получателю(ям)' - received: 'получил' - failedTo: 'не удалось' - to: 'к' - from: из' - operatingAt: 'работающих на' - withMoniker: 'с названием' - withTitle: 'с названием' - withA: 'с' - withAmount: 'с {$amount}' -messageTypes: - send: 'Отправить' - multiSend: 'Отправить Нескольким' - createValidator: 'Создать Валидатора' - editValidator: 'Редактировать Валидатора' - delegate: 'Делегировать' - undelegate: 'Разделегировать' - redelegate: 'Ре-делегировать' - submitProposal: 'Отправить Предложение' - deposit: 'Депозит' - vote: 'Голосовать' - withdrawComission: 'Вывести Комиссии' - withdrawReward: 'Вывести Награду' - modifyWithdrawAddress: 'Изменить Адрес Вывода' - unjail: 'Un-Джейл' - IBCTransfer: 'IBC Трансфер' - IBCReceive: 'IBC Получение' - diff --git a/big-dipper-backend/i18n/zh-hans.i18n.yml b/big-dipper-backend/i18n/zh-hans.i18n.yml deleted file mode 100644 index 4fb1658303..0000000000 --- a/big-dipper-backend/i18n/zh-hans.i18n.yml +++ /dev/null @@ -1,238 +0,0 @@ -_locale: 'zh-Hans' -_namespace: '' - -common: - height: '高度' - voter: '投票人' - votingPower: '投票权' - addresses: '地址' - amounts: '数量' - delegators: '委托人' - block: '区块' - blocks: '区块' - precommit: '建块前保证' - precommits: '建块前保证' - last: '最后' - backToList: '回到列表' - information: '资讯' - time: '时间' - hash: '哈希' - more: '更多' - fullStop: '。' - searchPlaceholder: '搜寻交易哈希 / 区块高度 / 地址' - cancel: '取消' - retry: '重试' - bondedTokens: '受委托量' -navbar: - siteName: '北斗' - validators: '验证人' - blocks: '区块' - transactions: '交易' - proposals: '治理提案' - votingPower: '投票权分布' - lang: "中文(简)" - english: "English" - spanish: "Español" - italian: "Italiano" - polish: "Polski" - russian: "Русский" - chinese: "中文(繁)" - simChinese: "中文(简)" - portuguese: "Português" - license: 'LICENSE' - forkMe: 'Fork me!' -consensus: - consensusState: '共识状态' - round: '轮数' - step: '阶数' -chainStates: - price: '价格' - marketCap: '市值' - inflation: '通胀率' - communityPool: '社区储备' -chainStatus: - startMessage: '这链将还有以下时间便会开始' - stopWarning: '这链似乎已经停了 {$time}! 请继续喂我吃新的区块 😭!' - latestHeight: '最新区块高度' - averageBlockTime: '平均区块时间' - all: '全部' - now: '现在' - allTime: '全部' - lastMinute: '前一分钟' - lastHour: '前一小时' - lastDay: '前一天' - seconds: '秒' - activeValidators: '有效验证人' - outOfValidators: '来自总共 {$totalValidators} 个验证人' - onlineVotingPower: '在线投票权' - fromTotalStakes: '为 {$totalStakes} 颗 {$denom} 的 {$percent}' -analytics: - blockTimeHistory: '在线投票权' - averageBlockTime: 'Average Block Time' - blockInterval: 'Block Interval' - noOfValidators: 'No. of Validators' -validators: - randomValidators: '随机验证人' - moniker: '验证人代号' - uptime: '上线时间比重' - selfPercentage: '自我委托%' - commission: '佣金' - lastSeen: '最后投票时间' - status: '状态' - jailed: '被禁制' - navActive: '有效' - navInactive: '无效' - active: '有效验证人' - inactive: '无效验证人' - listOfActive: '这名单显示所有有效验证人' - listOfInactive: '这名单显示所有无效验证人' - validatorDetails: '验证人详情' - lastNumBlocks: '最后 {$numBlocks} 个区块' - validatorInfo: '验证人资讯' - operatorAddress: '操作地址' - selfDelegationAddress: '自我委托地址' - deeplinks: 'Deeplinks' - commissionRate: '佣金' - maxRate: '最大佣金限制' - maxChangeRate: '每天最大佣金变化限制' - selfDelegationRatio: '自我委托比例' - proposerPriority: '建块优先权' - delegatorShares: '委托股数' - userDelegateShares: '你委托的股数' - tokens: '代币数量' - unbondingHeight: '解绑高度' - unbondingTime: '解绑时间' - jailedUntil: '被禁制至' - powerChange: '投票权变更' - delegations: '委托' - transactions: '交易' - validatorNotExists: '验证人不存在。' - backToValidator: '回到验证人页面' - missedBlocks: '错过了的区块' - missedPrecommits: '遗留了的建块前保证' - missedBlocksTitle: '错过了 {$moniker} 的区块' - totalMissed: '一共错过了' - block: '区块' - missedCount: '错过数量' - iDontMiss: '我不会错过任何一个' - lastSyncTime: '上一次同步时间' - delegator: '委托人' - amount: '数量' -blocks: - proposer: '建块人' - block: '区块' - latestBlocks: '最近区块' - noBlock: '没有区块。' - numOfTxs: '交易数量' - numOfTransactions: '交易数量' - notFound: '没有这个区块。' -transactions: - transaction: '交易' - transactions: '交易' - notFound: '沒有交易。' - activities: '活动' - txHash: '交易哈希' - valid: '有效' - fee: '费用' - noFee: 'No fee' - gasUsedWanted: '瓦斯 (已用 / 要求)' - noTxFound: '没有这笔交易。' - noValidatorTxsFound: '没有跟这个验证人有关的交易' - memo: '备忘录' - transfer: '代币转移' - staking: '委托' - distribution: '收益分配' - governance: '链上治理' - slashing: '削减' -proposals: - notFound: '没有治理提案' - listOfProposals: '这名单显示所有治理提案' - proposer: '提案人' - proposal: '治理提案' - proposals: '治理提案' - proposalID: '提案编号' - title: '主题' - status: '状态' - submitTime: '提案时间' - depositEndTime: '存入押金' - votingStartTime: '投票开始时间' - votingEndTime: '投票结束时间' - totalDeposit: '押金总额' - description: '详细内容' - proposalType: '提案类型' - proposalStatus: '提案状态' - notStarted: '未开始' - final: '最后结果' - deposit: '押金' - tallyResult: '投票结果' - yes: '赞成' - abstain: '弃权' - no: '反对' - noWithVeto: '强烈反对' - percentageVoted: '现时在线投票权的投票率是 {$percent}。' - validMessage: '这个提案 {$tentative} 有效.' - invalidMessage: '已投票的在线投票权少于 {$quorum}。这个提案 無效。' - moreVoteMessage: '当再有多 {$moreVotes} 投票权投了票的话,这个提案将会有效。' - key: 'Key' - value: 'Value' - amount: 'Amount' - recipient: 'Recipient' - changes: 'Changes' - subspace: 'Subspace' -votingPower: - distribution: '投票权分布' - pareto: '帕累托原则 (20/80 定率)' - minValidators34: '最少合共有超过 34% 投票权的验证人' -accounts: - accountDetails: '帐户详情' - available: '可用的' - delegated: '委托中' - unbonding: '解绑中' - rewards: '未取回收益' - total: '总共' - notFound: '这个帐户不存在。你是否在查看一个错误的地址?' - validators: '验证人' - shares: '股数' - mature: '成熟日期' - no: '没有' - none: '没有' - delegation: '委托' - plural: '' - signOut: '登出' - signInText: '你已登录以下帐户' - toLoginAs: '登录以下帐户' - signInWithLedger: '透过 Ledger 登录' - signInWarning: '请确定你已经连接 Ledger 设备,并已开启 Cosmos App 版本 1.5.0 或以上。' - pleaseAccept: '请从你的 Ledger 设备确认。' - noRewards: 'No Rewards' -activities: - single: '一个' - happened: '发生了' - senders: '以下的帐户' - sent: '发了' - receivers: '到以下的帐户' - received: '收到' - failedTo: '未能' - to: '到' - from: '从' - operatingAt: '操作地址为' - withMoniker: '而验证人代号为' - withTitle: '治理提案主题为' - withA: '投了' -messageTypes: - send: '发送' - multiSend: '多重发送' - createValidator: '建立验证人' - editValidator: '编辑验证人资料' - delegate: '委托' - undelegate: '解委托' - redelegate: '转委托' - submitProposal: '提交议案' - deposit: '存入' - vote: '投票' - withdrawComission: '提取手续费' - withdrawReward: '提取收益' - modifyWithdrawAddress: '更改收益取回地址' - unjail: '赦免' - IBCTransfer: 'IBC Transfer' - IBCReceive: 'IBC Receive' diff --git a/big-dipper-backend/i18n/zh-hant.i18n.yml b/big-dipper-backend/i18n/zh-hant.i18n.yml deleted file mode 100644 index c1e9ff7d15..0000000000 --- a/big-dipper-backend/i18n/zh-hant.i18n.yml +++ /dev/null @@ -1,238 +0,0 @@ -_locale: 'zh-Hant' -_namespace: '' - -common: - height: '高度' - voter: '投票人' - votingPower: '投票權' - addresses: '地址' - amounts: '數量' - delegators: '委托人' - block: '區塊' - blocks: '區塊' - precommit: '建塊前保證' - precommits: '建塊前保證' - last: '最後' - backToList: '回到列表' - information: '資訊' - time: '時間' - hash: '哈希' - more: '更多' - fullStop: '。' - searchPlaceholder: '搜尋交易哈希 / 區塊高度 / 地址' - cancel: '取消' - retry: '重試' - bondedTokens: '受委托量' -navbar: - siteName: '北斗' - validators: '驗證人' - blocks: '區塊' - transactions: '交易' - proposals: '治理提案' - votingPower: '投票權分佈' - lang: "中文(繁)" - english: "English" - spanish: "Español" - italian: "Italiano" - polish: "Polski" - russian: "Русский" - chinese: "中文(繁)" - simChinese: "中文(简)" - portuguese: "Português" - license: 'LICENSE' - forkMe: 'Fork me!' -consensus: - consensusState: '共識狀態' - round: '輪數' - step: '階數' -chainStates: - price: '價格' - marketCap: '市值' - inflation: '通漲率' - communityPool: '社區儲備' -chainStatus: - startMessage: '這鏈將還有以下時間便會開始' - stopWarning: '這鏈似乎已經停了 {$time}! 請繼續餵我吃新的區塊 😭!' - latestHeight: '最新區塊高度' - averageBlockTime: '平均區塊時間' - all: '全部' - now: '現在' - allTime: '全部' - lastMinute: '前一分鐘' - lastHour: '前一小時' - lastDay: '前一天' - seconds: '秒' - activeValidators: '有效驗證人' - outOfValidators: '來自總共 {$totalValidators} 個驗證人' - onlineVotingPower: '在線投票權' - fromTotalStakes: '為 {$totalStakes} 顆 {$denom} 的 {$percent}' -analytics: - blockTimeHistory: '在線投票權' - averageBlockTime: 'Average Block Time' - blockInterval: 'Block Interval' - noOfValidators: 'No. of Validators' -validators: - randomValidators: '隨機驗證人' - moniker: '驗證人代號' - uptime: '上線時間比重' - selfPercentage: '自我委托%' - commission: '佣金' - lastSeen: '最後投票時間' - status: '狀態' - jailed: '被禁制' - navActive: '有效' - navInactive: '無效' - active: '有效驗證人' - inactive: '無效驗證人' - listOfActive: '這名單顯示所有有效驗證人' - listOfInactive: '這名單顯示所有無效驗證人' - validatorDetails: '驗證人詳情' - lastNumBlocks: '最後 {$numBlocks} 個區塊' - validatorInfo: '驗證人資訊' - operatorAddress: '操作地址' - selfDelegationAddress: '自我委托地址' - deeplinks: 'Deeplinks' - commissionRate: '佣金' - maxRate: '最大佣金限制' - maxChangeRate: '每天最大佣金變化限制' - selfDelegationRatio: '自我委托比列' - proposerPriority: '建塊優先權' - delegatorShares: '委托股數' - userDelegateShares: '你委托的股數' - tokens: '代幣數量' - unbondingHeight: '解綁高度' - unbondingTime: '解綁時間' - jailedUntil: '被禁制至' - powerChange: '投票權變更' - delegations: '委托' - transactions: '交易' - validatorNotExists: '驗證人不存在。' - backToValidator: '回到驗證人頁面' - missedBlocks: '錯過了的區塊' - missedPrecommits: '遺留了的建塊前保證' - missedBlocksTitle: '錯過了 {$moniker} 的區塊' - totalMissed: '一共錯過了' - block: '區塊' - missedCount: '錯過數量' - iDontMiss: '我不會錯過任何一個' - lastSyncTime: '上一次同步時間' - delegator: '委托人' - amount: '數量' -blocks: - proposer: '建塊人' - block: '區塊' - latestBlocks: '最近區塊' - noBlock: '沒有區塊。' - numOfTxs: '交易數量' - numOfTransactions: '交易數量' - notFound: '沒有這個區塊。' -transactions: - transaction: '交易' - transactions: '交易' - notFound: '沒有交易。' - activities: '活動' - txHash: '交易哈希' - valid: '有效' - fee: '費用' - noFee: 'No fee' - gasUsedWanted: '瓦斯 (已用 / 要求)' - noTxFound: '沒有這筆交易。' - noValidatorTxsFound: '沒有跟這個驗證人有關的交易' - memo: '備忘錄' - transfer: '代幣轉移' - staking: '委托' - distribution: '收益分配' - governance: '鏈上治理' - slashing: '削減' -proposals: - notFound: '沒有治理提案' - listOfProposals: '這名單顯示所有治理提案' - proposer: '提案人' - proposal: '治理提案' - proposals: '治理提案' - proposalID: '提案編號' - title: '主題' - status: '狀態' - submitTime: '提案時間' - depositEndTime: '存入押金' - votingStartTime: '投票開始時間' - votingEndTime: '投票結束時間' - totalDeposit: '押金總額' - description: '詳細內容' - proposalType: '提案類型' - proposalStatus: '提案狀態' - notStarted: '未開始' - final: '最後結果' - deposit: '押金' - tallyResult: '投票結果' - yes: '贊成' - abstain: '棄權' - no: '反對' - none: '反對' - noWithVeto: '強烈反對' - percentageVoted: '現時在線投票權的投票率是 {$percent}。' - validMessage: '這個提案 {$tentative} 有效.' - invalidMessage: '已投票的在線投票權少於 {$quorum}。這個 無效。' - moreVoteMessage: '當再有多 {$moreVotes} 投票權投了票的話,這個提案將會有效。' - key: 'Key' - value: 'Value' - amount: 'Amount' - recipient: 'Recipient' - changes: 'Changes' - subspace: 'Subspace' -votingPower: - distribution: '投票權分佈' - pareto: '帕累托原則 (20/80 定率)' - minValidators34: '最少合共有超過 34% 投票權的驗證人' -accounts: - accountDetails: '帳戶詳情' - available: '可用的' - delegated: '委托中' - unbonding: '解綁中' - rewards: '未取回收益' - total: '總共' - notFound: '這個帳戶不存在。你是否在查看一個錯誤的地址?' - validators: '驗證人' - shares: '股數' - mature: '成熟日期' - no: '沒有' - delegation: '委托' - plural: '' - signOut: '登出' - signInText: '你已登入以下帳戶' - toLoginAs: '登入以下帳戶' - signInWithLedger: '透過 Ledger 登入' - signInWarning: '請確定你已經連接 Ledger 設備,並已開啓 Cosmos App 版本 1.5.0 或以上。' - pleaseAccept: '請從你的 Ledger 設備確認。' - noRewards: 'No Rewards' -activities: - single: '一個' - happened: '發生了' - senders: '以下的帳戶' - sent: '發了' - receivers: '到以下的帳戶' - received: '收到' - failedTo: '未能' - to: '到' - from: '從' - operatingAt: '操作地止為' - withMoniker: '而驗證人代號為' - withTitle: '治理提案主題為' - withA: '投了' -messageTypes: - send: '發送' - multiSend: '多重發送' - createValidator: '建立驗證人' - editValidator: '編輯驗證人資料' - delegate: '委托' - undelegate: '解委托' - redelegate: '轉委托' - submitProposal: '提交議案' - deposit: '存入' - vote: '投票' - withdrawComission: '提取手續費' - withdrawReward: '提取收益' - modifyWithdrawAddress: '更改收益取回地址' - unjail: '赦免' - IBCTransfer: 'IBC Transfer' - IBCReceive: 'IBC Receive' diff --git a/big-dipper-backend/imports/api/accounts/server/methods.js b/big-dipper-backend/imports/api/accounts/server/methods.js deleted file mode 100644 index 8eac995f18..0000000000 --- a/big-dipper-backend/imports/api/accounts/server/methods.js +++ /dev/null @@ -1,236 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { HTTP } from 'meteor/http'; -import { Validators } from '/imports/api/validators/validators.js'; -import { sanitizeUrl } from '@braintree/sanitize-url'; -const fetchFromUrl = (url) => { - try { - var url = sanitizeUrl(API + url) - let res = HTTP.get(url); - if (res.statusCode == 200) { - return res - }; - } catch (e) { - console.log(url); - console.log(e); - } -} - -Meteor.methods({ - 'accounts.getAccountDetail': function(address) { - this.unblock(); - let url = sanitizeUrl(API + '/auth/accounts/' + address); - - try { - let available = HTTP.get(url); - if (available.statusCode == 200) { - // return JSON.parse(available.content).account - let response = JSON.parse(available.content).result; - let account; - if ((response.type === 'cosmos-sdk/Account') || (response.type === 'cosmos-sdk/BaseAccount')) - account = response.value; - else if (response.type === 'cosmos-sdk/DelayedVestingAccount' || response.type === 'cosmos-sdk/ContinuousVestingAccount') - account = response.value.BaseVestingAccount.BaseAccount - - try { - url = sanitizeUrl(API + '/bank/balances/' + address); - response = HTTP.get(url); - let balances = JSON.parse(response.content).result; - account.coins = balances; - - if (account && account.account_number != null) - return account - return null - } catch (e) { - return null; - } - } - } catch (e) { - console.log(url); - console.log(e) - } - }, - 'accounts.getBalance': function(address) { - this.unblock(); - let balance = {} - - // get available atoms - let url = sanitizeUrl(API + '/cosmos/bank/v1beta1/balances/' + address); - try { - let available = HTTP.get(url); - if (available.statusCode == 200) { - balance.available = JSON.parse(available.content).balances; - - } - } catch (e) { - console.log(url); - console.log(e) - } - - // get delegated amnounts - url = sanitizeUrl(API + '/cosmos/staking/v1beta1/delegations/' + address); - try { - let delegations = HTTP.get(url); - if (delegations.statusCode == 200) { - balance.delegations = JSON.parse(delegations.content).delegation_responses; - } - } catch (e) { - console.log(url); - console.log(e); - } - // get unbonding - url = API + sanitizeUrl('/cosmos/staking/v1beta1/delegators/' + address + '/unbonding_delegations'); - try { - let unbonding = HTTP.get(url); - if (unbonding.statusCode == 200) { - balance.unbonding = JSON.parse(unbonding.content).unbonding_responses; - } - } catch (e) { - console.log(url); - console.log(e); - } - - // get rewards - url = sanitizeUrl(API + '/cosmos/distribution/v1beta1/delegators/' + address + '/rewards'); - try { - let rewards = HTTP.get(url); - if (rewards.statusCode == 200) { - //get seperate rewards value - balance.rewards = JSON.parse(rewards.content).rewards; - //get total rewards value - balance.total_rewards = JSON.parse(rewards.content).total; - - } - } catch (e) { - console.log(url); - console.log(e); - } - - // get commission - let validator = Validators.findOne({ $or: [{ operator_address: address }, { delegator_address: address }, { address: address }] }) - if (validator) { - let url = sanitizeUrl(API + '/cosmos/distribution/v1beta1/validators/' + validator.operator_address + '/commission'); - balance.operatorAddress = validator.operator_address; - try { - let rewards = HTTP.get(url); - if (rewards.statusCode == 200) { - let content = JSON.parse(rewards.content).commission; - if (content.commission && content.commission.length > 0) - balance.commission = content.commission; - - } - - } catch (e) { - console.log(url); - console.log(e) - } - } - - return balance; - }, - 'accounts.getDelegation' (address, validator) { - this.unblock(); - let url = `/cosmos/staking/v1beta1/validators/${validator}/delegations/${address}`; - let delegations = fetchFromUrl(url); - console.log(delegations); - delegations = delegations && delegations.data.delegation_response; - if (delegations && delegations.delegation.shares) - delegations.delegation.shares = parseFloat(delegations.delegation.shares); - - url = `/cosmos/staking/v1beta1/delegators/${address}/redelegations?dst_validator_addr=${validator}`; - let relegations = fetchFromUrl(url); - relegations = relegations && relegations.data.redelegation_responses; - let completionTime; - if (relegations) { - relegations.forEach((relegation) => { - let entries = relegation.entries - let time = new Date(entries[entries.length - 1].completion_time) - if (!completionTime || time > completionTime) - completionTime = time - }) - delegations.redelegationCompletionTime = completionTime; - } - - url = `/cosmos/staking/v1beta1/validators/${validator}/delegations/${address}/unbonding_delegation`; - let undelegations = fetchFromUrl(url); - undelegations = undelegations && undelegations.data.result; - if (undelegations) { - delegations.unbonding = undelegations.entries.length; - delegations.unbondingCompletionTime = undelegations.entries[0].completion_time; - } - return delegations; - }, - 'accounts.getAllDelegations' (address) { - this.unblock(); - let url = sanitizeUrl(API + '/cosmos/staking/v1beta1/delegators/' + address + '/delegations'); - - try { - let delegations = HTTP.get(url); - if (delegations.statusCode == 200) { - delegations = JSON.parse(delegations.content).result; - if (delegations && delegations.length > 0) { - delegations.forEach((delegation, i) => { - if (delegations[i] && delegations[i].shares) - delegations[i].shares = parseFloat(delegations[i].shares); - }) - } - - return delegations; - }; - } catch (e) { - console.log(url); - console.log(e); - } - }, - 'accounts.getAllUnbondings' (address) { - this.unblock(); - let url = sanitizeUrl(API + '/cosmos/staking/v1beta1/delegators/' + address + '/unbonding_delegations'); - - try { - let unbondings = HTTP.get(url); - if (unbondings.statusCode == 200) { - unbondings = JSON.parse(unbondings.content).result; - return unbondings; - }; - } catch (e) { - console.log(url); - console.log(e); - } - }, - 'accounts.getAllRedelegations' (address, validator) { - this.unblock(); - let url = `/cosmos/staking/v1beta1/v1beta1/delegators/${address}/redelegations&src_validator_addr=${validator}`; - try { - let result = fetchFromUrl(url); - if (result && result.data) { - let redelegations = {} - result.data.forEach((redelegation) => { - let entries = redelegation.entries; - redelegations[redelegation.validator_dst_address] = { - count: entries.length, - completionTime: entries[0].completion_time - } - }) - return redelegations - } - } catch (e) { - console.log(url); - console.log(e); - } - }, - 'accounts.getRedelegations' (address) { - this.unblock(); - let url = sanitizeUrl(API + '/cosmos/staking/v1beta1/v1beta1/delegators/' + address + '/redelegations'); - - try { - let userRedelegations = HTTP.get(url); - if (userRedelegations.statusCode == 200) { - userRedelegations = JSON.parse(userRedelegations.content).result; - - return userRedelegations; - }; - } catch (e) { - console.log(url); - console.log(e.response.content); - } - }, -}) \ No newline at end of file diff --git a/big-dipper-backend/imports/api/actions/actions.js b/big-dipper-backend/imports/api/actions/actions.js deleted file mode 100644 index 2615551c39..0000000000 --- a/big-dipper-backend/imports/api/actions/actions.js +++ /dev/null @@ -1,3 +0,0 @@ -import { Mongo } from 'meteor/mongo'; - -export const Actions = new Mongo.Collection('actions'); \ No newline at end of file diff --git a/big-dipper-backend/imports/api/actions/server/methods.js b/big-dipper-backend/imports/api/actions/server/methods.js deleted file mode 100644 index 697bff1bef..0000000000 --- a/big-dipper-backend/imports/api/actions/server/methods.js +++ /dev/null @@ -1,357 +0,0 @@ -import {Meteor} from "meteor/meteor"; -import {Actions} from "../actions.js"; - -// Global API configuration -var Api = new Restivus({ - useDefaultAuth: true, - prettyJson: true -}) - -const StatusOk = 200 -const StatusInvalidInput = 400 -const Success = "Success" -const BadRequest = "Bad Request" -const ApiServerOkMessage = "Api server is up and running!" -const ActionTypeLike = "Like" -const ActionTypeView = "View" - -Api.addRoute('ping', {authRequired: false}, { - - get: function () { - - return { - Code: StatusOk, - Message: ApiServerOkMessage, - Data: "" - } - - }, - -}); - -Api.addRoute('actions/views/:cookbookId/:recipeId', {authRequired: false}, { - - //get the views on a specific nft - get: function () { - - if ( !Valid(this.urlParams.cookbookId) || !Valid(this.urlParams.recipeId) ){ - return { - Code: StatusInvalidInput, - Message: BadRequest, - Data: null - } - } - - var result = GetViews(this.urlParams.cookbookId, this.urlParams.recipeId) - - return { - Code: StatusOk, - Message: Success, - Data: {totalViews: result} - } - - }, - - //view a specific nft - post: function () { - - if ( !Valid(this.urlParams.cookbookId) || !Valid(this.urlParams.recipeId) || !Valid(this.bodyParams.userId) ){ - return { - Code: StatusInvalidInput, - Message: BadRequest, - Data: null - } - } - - var result = ViewNFT(this.urlParams.cookbookId, this.urlParams.recipeId, this.bodyParams.userId) - - return { - Code: StatusOk, - Message: Success, - Data: result - } - - } - -}); - -Api.addRoute('actions/likes/:cookbookId/:recipeId', {authRequired: false}, { - - //get the likes on a specific nft - get: function () { - - if ( !Valid(this.urlParams.cookbookId) || !Valid(this.urlParams.recipeId) ){ - return { - Code: StatusInvalidInput, - Message: BadRequest, - Data: null - } - } - - var result = GetLikes(this.urlParams.cookbookId, this.urlParams.recipeId) - - return { - Code: StatusOk, - Message: Success, - Data: {totalLikes: result} - } - - }, - - //like a specific nft - post: function () { - - if ( !Valid(this.urlParams.cookbookId) || !Valid(this.urlParams.recipeId) || !Valid(this.bodyParams.userId) ){ - return { - Code: StatusInvalidInput, - Message: BadRequest, - Data: null - } - } - - var result = ToggleLike(this.urlParams.cookbookId, this.urlParams.recipeId, this.bodyParams.userId) - - return { - Code: StatusOk, - Message: Success, - Data: result - } - - } - -}); - -Api.addRoute('actions/likes/:userId/:cookbookId/:recipeId', {authRequired: false}, { - - //check if the specified user has liked the specified nft or not - get: function () { - - if ( !Valid(this.urlParams.cookbookId) || !Valid(this.urlParams.recipeId) || !Valid(this.urlParams.userId) ){ - return { - Code: StatusInvalidInput, - Message: BadRequest, - Data: null - } - } - - var result = GetLikeStatus(this.urlParams.cookbookId, this.urlParams.recipeId, this.urlParams.userId) - - return { - Code: StatusOk, - Message: Success, - Data: result - } - - }, -}); - -Meteor.methods({ - - //to like a specific nft, by a specific user - "Actions.likeNft": function (cookbookId, recipeId, userId) { - this.unblock(); - - if ( !Valid(cookbookId) || !Valid(recipeId) || !Valid(userId) ){ - return { - Code: StatusInvalidInput, - Message: BadRequest, - Data: null - } - } - var result = ToggleLike(cookbookId, recipeId, userId) - return { - Code: StatusOk, - Message: Success, - Data: result - } - - }, - - //to view a specific nft, by a specific user - "Actions.viewNft": function (cookbookId, recipeId, userId) { - this.unblock(); - - if ( !Valid(cookbookId) || !Valid(recipeId) || !Valid(userId) ){ - return { - Code: StatusInvalidInput, - Message: BadRequest, - Data: null - } - } - var result = ViewNFT(cookbookId, recipeId, userId) - return { - Code: StatusOk, - Message: Success, - Data: result - } - }, - - //to get likes and view on an NFT - "Actions.getLikes": function (cookbookId, recipeId) { - this.unblock(); - - if ( !Valid(cookbookId) || !Valid(recipeId) ){ - return { - Code: StatusInvalidInput, - Message: BadRequest, - Data: null - } - } - //get likes on this nft - var likes = GetLikes(cookbookId, recipeId) - return { - Code: StatusOk, - Message: Success, - Data: { - totalLikes: likes - } - } - }, - "Actions.getViews": function (cookbookId, recipeId) { - this.unblock(); - - if ( !Valid(cookbookId) || !Valid(recipeId) ){ - return { - Code: StatusInvalidInput, - Message: BadRequest, - Data: null - } - } - //get views on this nft - var views = GetViews(cookbookId, recipeId) - return { - Code: StatusOk, - Message: Success, - Data: { - totalViews: views - } - } - }, - - //to check if a certain user has liked a specific nft or not - "Actions.getLikeStatus": function (cookbookId, recipeId, userId) { - this.unblock(); - - if ( !Valid(cookbookId) || !Valid(recipeId) || !Valid(userId) ){ - return { - Code: StatusInvalidInput, - Message: BadRequest, - Data: null - } - } - //get like status for this user - var result = GetLikeStatus(cookbookId, recipeId, userId) - return { - Code: StatusOk, - Message: Success, - Data: result - } - } - -}); - -function ToggleLike(cookbookId, recipeId, userId) { - - var action = { - cookbookId: cookbookId, - recipeId: recipeId, - actionType: ActionTypeLike, - from: userId - } - - //check if the specified user has liked the specified nft - var result = Actions.findOne(action) - var liked = false; - - // if user has not already liked the same nft - if (result == null) { - // add user's like - Actions.insert(action) - liked = true - } - else{ - //otherwise, remove the user's like - Actions.remove({ - _id: result._id - }); - } - - var newLikes = GetLikes(cookbookId, recipeId) - return { - liked: liked, - totalLikes: newLikes - } - -} - -function ViewNFT(cookbookId, recipeId, userId){ - var action = { - cookbookId: cookbookId, - recipeId: recipeId, - actionType: ActionTypeView, - from: userId - } - - /* - upsert a view action, so that the insertion of multiple - views on same nft and from same user is disallowed - */ - Actions.upsert(action, {$set: action}) - var views = GetViews(cookbookId, recipeId, userId) - - return { - viewed: true, - totalViews: views - } -} - -function GetLikes(cookbookId, recipeId) { - //get likes on the specified nft - return Actions.find({ - cookbookId: cookbookId, - recipeId: recipeId, - actionType: ActionTypeLike - }).count() -} - -function GetViews(cookbookId, recipeId) { - //get views on the specified nft - return Actions.find({ - cookbookId: cookbookId, - recipeId: recipeId, - actionType: ActionTypeView - }).count() -} - -function GetLikeStatus(cookbookId, recipeId, userId){ - - var likeStatus = false - //check if the specified user has liked the specified nft - var result = Actions.findOne({ - cookbookId: cookbookId, - recipeId: recipeId, - actionType: ActionTypeLike, - from: userId - }) - - //if a like is found, return true - if (result != null){ - likeStatus = true - } - - return { - liked: likeStatus - } - -} - -function Valid(parameter) { - if (typeof(parameter) != "string"){ - return false - } - if (parameter.length == 0){ - return false - } - return true -} - diff --git a/big-dipper-backend/imports/api/actions/server/publications.js b/big-dipper-backend/imports/api/actions/server/publications.js deleted file mode 100644 index d5ed5b8ca3..0000000000 --- a/big-dipper-backend/imports/api/actions/server/publications.js +++ /dev/null @@ -1,10 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { Actions } from '../actions.js'; - -Meteor.publish('Actions.list', function() { - return Actions.find({}, { sort: { ID: 1 } }); -}); - -Meteor.publish('Actions.one', function(id) { - return Actions.find({ ID: id }); -}) \ No newline at end of file diff --git a/big-dipper-backend/imports/api/admin.js b/big-dipper-backend/imports/api/admin.js deleted file mode 100644 index 0eb3ac6d82..0000000000 --- a/big-dipper-backend/imports/api/admin.js +++ /dev/null @@ -1,8 +0,0 @@ -const admin = require('firebase-admin') -//const serviceAccount = require('../../firebase.json') -let serviceAccount = process.env.FIREBASE_CONFIG -serviceAccount = JSON.parse(serviceAccount) -admin.initializeApp({ - credential: admin.credential.cert(serviceAccount) -}) -module.exports.admin = admin diff --git a/big-dipper-backend/imports/api/analytics/analytics.js b/big-dipper-backend/imports/api/analytics/analytics.js deleted file mode 100644 index c83b1906bb..0000000000 --- a/big-dipper-backend/imports/api/analytics/analytics.js +++ /dev/null @@ -1,10 +0,0 @@ -import { Mongo } from 'meteor/mongo'; -import { Blockscon } from '../blocks/blocks.js'; - -export const Analytics = new Mongo.Collection('nft-analytics'); - -Analytics.helpers({ - block(){ - return Blockscon.findOne({height:this.height}); - } -}) \ No newline at end of file diff --git a/big-dipper-backend/imports/api/analytics/server/methods.js b/big-dipper-backend/imports/api/analytics/server/methods.js deleted file mode 100644 index 04134bac1a..0000000000 --- a/big-dipper-backend/imports/api/analytics/server/methods.js +++ /dev/null @@ -1,482 +0,0 @@ -import { Meteor } from 'meteor/meteor' -import { Analytics } from '../analytics.js' -import { Recipes } from '../../recipes/recipes.js' -import { Transactions } from '../../transactions/transactions.js' -import { sanitizeUrl } from '@braintree/sanitize-url' -import { HTTP } from 'meteor/http' -import { Notifications } from '../../notifications/notifications.js' -import { isNil } from 'lodash' - -const SalesAnalyticsDenom = 'upylon' -if (Meteor.isServer) { - Meteor.methods({ - 'Analytics.upsertSales': async function () { - this.unblock() - try { - // finding the transactions of sales type - const txns = Transactions.find( - { - 'tx_response.raw_log': /ExecuteRecipe/, - 'tx_response.logs.events.type': { $ne: 'burn' } - }, - { - sort: { 'tx_response.timestamp': -1 } - } - ).fetch() - - // looping through these transactions and extracting the required fields - for (let i = 0; i < txns.length; i++) { - // extracting the required fields - const recipeID = txns[i]?.tx?.body?.messages[0]?.recipe_id - const cookBookId = txns[i]?.tx?.body?.messages[0]?.cookbook_id - const recipe = getRecipe(cookBookId, recipeID) - const nftName = getNftName(recipe) - const nftUrl = getNftProperty(recipe, 'NFT_URL') - const nftFormat = getNftProperty(recipe, 'NFT_Format') - const amountString = getAmountString(txns[i]) - const amountVal = getAmount(amountString) - const coinDenom = getCoin(amountString) - const receiver = getReceiver(txns[i]) - const spender = getSpender(txns[i]) - - // constructing the sale object - const sale = { - txhash: txns[i]?.txhash, - type: 'Sale', - item_name: nftName, - item_img: nftUrl, - item_format: nftFormat, - amount: amountVal, - coin: coinDenom, - from: receiver, - to: spender, - time: txns[i]?.tx_response?.timestamp, - amountMinted: recipe?.entries?.item_outputs[0]?.amount_minted, - quantity: recipe?.entries?.item_outputs[0]?.quantity - } - - // inserting the extracted information in nft-analytics collection - Analytics.upsert({ txhash: txns[i].txhash }, { $set: sale }) - - // additional properties for notifications - const res = Notifications.findOne({ txhash: txns[i].txhash }) - - sale.settled = false - sale.read = false - const timestamp = Math.floor(new Date() / 1000) // in seconds - sale.created_at = timestamp - - // preserved values - if (res && 1) { - sale.settled = res.settled - sale.read = res.read - sale.created_at = res.created_at - } - - // updated values - sale.time = null - sale.updated_at = timestamp // in seconds - - // upserting info into Notifcations collection - Notifications.upsert({ txhash: txns[i].txhash }, { $set: sale }) - } - } catch (e) { - console.log('upsertSales error: ', e) - } - }, - 'Analytics.getAllRecords': async function (limitVal, offsetVal) { - // all listings with limit and starting from offset - const recordsList = Analytics.find( - {}, - { - sort: { time: -1 }, - limit: limitVal, - skip: offsetVal - } - ).fetch() - - for (let i = 0; i < recordsList.length; i++) { - const from = getUserNameInfo(recordsList[i]?.from) - const to = getUserNameInfo(recordsList[i].to) - recordsList[i].from = from?.username?.value - recordsList[i].to = to?.username?.value - } - - const counts = Analytics.find({}).count() - - return { - records: recordsList, - count: counts - } - }, - 'Analytics.upsertListings': async function () { - this.unblock() - try { - // finding the transactions of sales type - const txns = Transactions.find( - { 'tx_response.raw_log': /EventCreateRecipe/ }, - { sort: { 'tx_response.timestamp': -1 } } - ).fetch() - - for (let i = 0; i < txns.length; i++) { - const cookBookId = txns[i]?.tx?.body?.messages[0]?.cookbook_id - const recipeID = txns[i]?.tx?.body?.messages[0]?.id - const recipe = getRecipe(cookBookId, recipeID) - const nftName = getNftName(recipe) - const nftUrl = getNftProperty(recipe, 'NFT_URL') - const nftFormat = getNftProperty(recipe, 'NFT_Format') - const coinInvolved = - txns[i]?.tx?.body?.messages[0]?.coin_inputs[0]?.coins[0] - const creator = txns[i]?.tx?.body?.messages[0]?.creator - - // constructing the listing object - const listing = { - txhash: txns[i]?.txhash, - itemImg: nftUrl, - itemName: nftName, - itemFormat: nftFormat, - amount: parseFloat(coinInvolved?.amount), - coin: coinInvolved?.denom, - type: 'Listing', - from: creator, - to: '-', - time: txns[i]?.tx_response?.timestamp, - R: recipe - } - - // inserting the extracted information in nft-analytics collection - - Analytics.upsert({ txhash: txns[i]?.txhash }, { $set: listing }) - } - } catch (e) { - console.log('upserListing error: ', e) - } - }, - 'Analytics.getListings': async function (limitVal, offsetVal) { - // all listings with limit and starting from offset - const listings = Analytics.find( - { - type: 'Listing' - }, - { - sort: { time: -1 }, - limit: limitVal, - skip: offsetVal - } - ).fetch() - - for (let i = 0; i < listings.length; i++) { - const creatorUsername = getUserNameInfo(listings[i]?.from) - - listings[i].from = creatorUsername?.username?.value - } - - return listings - }, - 'Analytics.getCreatorOfAllTime': async function () { - const mongoListing = Analytics.rawCollection() - - const creatorOfAllTime = await mongoListing - .aggregate([ - { - $match: { - type: 'Listing' - } - }, - { - $group: { - _id: '$from', // grouping on from field - count: { $sum: 1 } - } - }, - { - $sort: { count: -1 } // sorting on the basis of count in descending order - }, - { - $limit: 1 // fetching the top-most document - } - ]) - .toArray() - - if (creatorOfAllTime[0] !== null && creatorOfAllTime[0] !== undefined) { - const creatorUsername = getUserNameInfo(creatorOfAllTime[0]._id) - creatorOfAllTime[0].from = creatorUsername?.username?.value - return creatorOfAllTime[0] - } - - return null - }, - 'Analytics.getCreatorOfTheDay': async function () { - // start of today - const start = new Date() - start.setHours(0, 0, 0, 0) - const startDate = getFormattedDate(start) - - // end of today - const end = new Date() - end.setDate(end.getDate() + 1) - end.setHours(0, 0, 0, 0) - const endDate = getFormattedDate(end) - - const mongoListing = Analytics.rawCollection() - const creatorOfTheDay = await mongoListing - .aggregate([ - { - $match: { - type: 'Listing', - time: { - $gte: startDate, // documents with time greater than or equal to startDate - $lt: endDate // and documents with time less than endDate - } - } - }, - { - $group: { - _id: '$from', // group the matching documents on from field - count: { $sum: 1 } // count the documents in each group - } - }, - { - $sort: { count: -1 } // sort the groups on count field in descending order - }, - { - $limit: 1 // get the top-most document - } - ]) - .toArray() - - if (creatorOfTheDay[0] !== null && creatorOfTheDay[0] !== undefined) { - const creatorUsername = getUserNameInfo(creatorOfTheDay[0]._id) - creatorOfTheDay[0].from = creatorUsername?.username?.value - return creatorOfTheDay[0] - } - return null - }, - 'Analytics.getSales': async function (limitVal, offsetVal) { - // all sales with limit and starting from offset - const sales = Analytics.find( - { - type: 'Sale' - }, - { - sort: { time: -1 }, - limit: limitVal, - skip: offsetVal - } - ).fetch() - - for (let i = 0; i < sales.length; i++) { - const buyerUsername = getUserNameInfo(sales[i]?.to) - const sellerUsername = getUserNameInfo(sales[i].from) - - sales[i].to = buyerUsername?.username?.value - sales[i].from = sellerUsername?.username?.value - } - return sales - }, - 'Analytics.getSaleOfAllTime': async function () { - // sale of all time - const sale = Analytics.find( - { - type: 'Sale', - coin: SalesAnalyticsDenom - }, - { - sort: { amount: -1, time: -1 }, - limit: 1 - } - ).fetch() - - return extractSaleFromSales(sale) - }, - 'Analytics.getSaleOfTheDay': async function () { - const start = new Date() - start.setDate(start.getDate() - 1) - start.setHours(0, 0, 0, 0) - const startDate = getFormattedDate(start) - - const end = new Date() - end.setDate(end.getDate() + 1) - end.setHours(0, 0, 0, 0) - const endDate = getFormattedDate(end) - - // sale of today - const sale = Analytics.find( - { - type: 'Sale', - coin: SalesAnalyticsDenom, - time: { $gte: startDate, $lt: endDate } - }, - { - sort: { amount: -1 }, - limit: 1 - } - ).fetch() - - return extractSaleFromSales(sale) - }, - 'Analytics.getSalesGraph': async function () { - const start = new Date() - const end = new Date() - start.setDate(start.getDate() - 7) - end.setDate(end.getDate() - 6) - - const graphData = [] - - for (let i = 0; i < 7; i++) { - start.setDate(start.getDate() + 1) - start.setHours(0, 0, 0, 0) - const startDate = getFormattedDate(start) - - end.setDate(end.getDate() + 1) - end.setHours(0, 0, 0, 0) - const endDate = getFormattedDate(end) - - // sales - const sales = Analytics.find({ - type: 'Sale', - time: { $gte: startDate, $lt: endDate } - }).fetch() - - graphData.push({ - date: startDate, - sales: sales?.length - }) - } - - return graphData - } - }) -} - -// getFormattedDate to get date in format (2022-04-12) -function getFormattedDate(date) { - let monthString = date.getMonth() + 1 + '' - if (monthString.length === 1) { - monthString = '0' + (date.getMonth() + 1) - } - - let dateString = date.getDate() + '' - if (dateString.length === 1) { - dateString = '0' + date.getDate() - } - - const formattedDate = - date.getFullYear() + '-' + monthString + '-' + dateString - return formattedDate -} - -function getNftProperty(recipe, property) { - let nftUrl = '' - const itemOutputs = recipe?.entries?.item_outputs - if (itemOutputs !== null && itemOutputs !== undefined) { - if (!isNil(itemOutputs[0])) { - const properties = itemOutputs[0].strings - for (let i = 0; i < properties.length; i++) { - if (properties[i].key === property) { - nftUrl = properties[i].value - break - } - } - } - } - return nftUrl -} - -// getting the nft name out of the recipe object -function getNftName(recipe) { - return recipe?.name -} - -// fetching username info -function getUserNameInfo(address) { - let result - const url = sanitizeUrl( - `${Meteor.settings.remote.api}/pylons/account/address/${address}` - ) - try { - const response = HTTP.get(url) - result = JSON.parse(response.content) - } catch (e) { - console.log('error getting userNameInfo: ', e) - } - return result -} - -// getting amountString from the executed transaction -function getAmountString(txn) { - return getAttributeFromEvent(txn, 'create_item', 'amount') -} - -// getting the receiver out of the transaction object -function getReceiver(txn) { - return getAttributeFromEvent(txn, 'create_item', 'receiver') -} - -// getting the spender object out of the transaction object -function getSpender(txn) { - return getAttributeFromEvent(txn, 'create_item', 'sender') -} - -function getAttributeFromEvent(txn, event, attribute) { - let Val = '' - const events = txn?.tx_response?.logs[0]?.events - - if (events !== null && events !== undefined) { - for (let i = 0; i < events.length; i++) { - if (events[i].type === event) { - const attributes = events[i].attributes - for (let j = 0; j < attributes.length; j++) { - if (attributes[j].key === attribute) { - Val = attributes[j].value - break - } - } - } - } - } - - return Val -} - -// separating amount from the amountString which is like '100000upylon' -function getAmount(amountString) { - const quantity = parseFloat(amountString.replace(/\D/g, '')) - return quantity -} - -// separating the coin from the amountString -function getCoin(amountString) { - const quantity = parseFloat(amountString.replace(/\D/g, '')) - const coin = amountString.replace(quantity, '') - return coin -} - -function extractSaleFromSales(sales) { - if (!isNil(sales[0])) { - const buyerUsername = getUserNameInfo(sales[0].to) - const sellerUsername = getUserNameInfo(sales[0].from) - - sales[0].to = buyerUsername?.username?.value - sales[0].from = sellerUsername?.username?.value - - return sales[0] - } - - return null -} - -function getRecipe(cookBookID, recipeID) { - let result - const url = sanitizeUrl( - `${Meteor.settings.remote.api}/pylons/recipe/${cookBookID}/${recipeID}` - ) - try { - const response = HTTP.get(url) - result = JSON.parse(response.content)?.recipe - } catch (e) { - console.log('error getting recipe from api: ', cookBookID, recipeID, url) - // Recipes.insert(result) - } - return result -} diff --git a/big-dipper-backend/imports/api/analytics/server/publications.js b/big-dipper-backend/imports/api/analytics/server/publications.js deleted file mode 100644 index 0d4530ceeb..0000000000 --- a/big-dipper-backend/imports/api/analytics/server/publications.js +++ /dev/null @@ -1,9 +0,0 @@ -import { Analytics } from '../analytics.js'; - -publishComposite('Analytics.list', function(limit = 30){ - return { - find(){ - return Analytics.find({}, { sort: { ID: 1 } }); - } - } -}); diff --git a/big-dipper-backend/imports/api/api.js b/big-dipper-backend/imports/api/api.js deleted file mode 100644 index fc43be1194..0000000000 --- a/big-dipper-backend/imports/api/api.js +++ /dev/null @@ -1,4 +0,0 @@ -export const API = new Restivus({ - useDefaultAuth: true, - prettyJson: true - }) diff --git a/big-dipper-backend/imports/api/blocks/blocks.js b/big-dipper-backend/imports/api/blocks/blocks.js deleted file mode 100644 index 7d812d81ad..0000000000 --- a/big-dipper-backend/imports/api/blocks/blocks.js +++ /dev/null @@ -1,23 +0,0 @@ -import { Mongo } from 'meteor/mongo'; -import { Validators } from '../validators/validators.js'; - -export const Blockscon = new Mongo.Collection('blocks'); - -Blockscon.helpers({ - proposer(){ - return Validators.findOne({address:this.proposerAddress}); - } -}); - -// Blockscon.helpers({ -// sorted(limit) { -// return Blockscon.find({}, {sort: {height:-1}, limit: limit}); -// } -// }); - - -// Meteor.setInterval(function() { -// Meteor.call('blocksUpdate', (error, result) => { -// console.log(result); -// }) -// }, 30000000); \ No newline at end of file diff --git a/big-dipper-backend/imports/api/blocks/server/methods.js b/big-dipper-backend/imports/api/blocks/server/methods.js deleted file mode 100644 index 652c7f2a2c..0000000000 --- a/big-dipper-backend/imports/api/blocks/server/methods.js +++ /dev/null @@ -1,744 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { HTTP } from 'meteor/http'; -import { Blockscon } from '/imports/api/blocks/blocks.js'; -import { Chain } from '/imports/api/chain/chain.js'; -import { ValidatorSets } from '/imports/api/validator-sets/validator-sets.js'; -import { Validators } from '/imports/api/validators/validators.js'; -import { ValidatorRecords, Analytics, VPDistributions} from '/imports/api/records/records.js'; -import { VotingPowerHistory } from '/imports/api/voting-power/history.js'; -import { Transactions } from '../../transactions/transactions.js'; -import { Evidences } from '../../evidences/evidences.js'; -import { sha256 } from 'js-sha256'; -// import { getAddress } from 'tendermint/lib/pubkey'; -import * as cheerio from 'cheerio'; -import { sanitizeUrl } from '@braintree/sanitize-url'; - - -getRemovedValidators = (prevValidators, validators) => { - // let removeValidators = []; - for (p in prevValidators){ - for (v in validators){ - if (prevValidators[p].address == validators[v].address){ - prevValidators.splice(p,1); - } - } - } - - return prevValidators; -} - - -getValidatorFromConsensusKey = (validators, consensusKey) => { - for (v in validators){ - try { - let pubkeyType = Meteor.settings.public.secp256k1?'tendermint/PubKeySecp256k1':'tendermint/PubKeyEd25519'; - let pubkey = Meteor.call('bech32ToPubkey', consensusKey, pubkeyType); - if (validators[v].pub_key.value == pubkey){ - return validators[v] - } - } - catch (e){ - console.log("Error converting pubkey: %o\n%o", consensusKey, e) - } - } - return null; -} - - -export const getValidatorProfileUrl = (identity) => { - console.log("Get validator avatar.") - if (identity.length == 16){ - var url = sanitizeUrl(`https://keybase.io/_/api/1.0/user/lookup.json?key_suffix=${identity}&fields=pictures`) - let response = HTTP.get() - if (response.statusCode == 200) { - let them = response?.data?.them - return them && them.length && them[0]?.pictures && them[0]?.pictures?.primary && them[0]?.pictures?.primary?.url; - } else { - console.log(JSON.stringify(response)) - } - } else if (identity.indexOf("keybase.io/team/")>0){ - let teamPage = HTTP.get(identity); - if (teamPage.statusCode == 200){ - let page = cheerio.load(teamPage.content); - return page(".kb-main-card img").attr('src'); - } else { - console.log(JSON.stringify(teamPage)) - } - } -} - - -getValidatorUptime = async (validatorSet) => { - - // get validator uptime - - let url = sanitizeUrl(`${API}/cosmos/slashing/v1beta1/params`); - let response = HTTP.get(url); - let slashingParams = JSON.parse(response.content) - - Chain.upsert({chainId:Meteor.settings.public.chainId}, {$set:{"slashing":slashingParams}}); - - for(let key in validatorSet){ - // console.log("Getting uptime validator: %o", validatorSet[key]); - try { - // console.log("=== Signing Info ===: %o", signingInfo) - - url = sanitizeUrl(`${API}/cosmos/slashing/v1beta1/signing_infos/${validatorSet[key].bech32ValConsAddress}`) - let response = HTTP.get(url); - let signingInfo = JSON.parse(response.content).val_signing_info; - if (signingInfo){ - let valData = validatorSet[key] - valData.tombstoned = signingInfo.tombstoned; - valData.jailed_until = signingInfo.jailed_until; - valData.index_offset = parseInt(signingInfo.index_offset); - valData.start_height = parseInt(signingInfo.start_height); - valData.uptime = (slashingParams.params.signed_blocks_window - parseInt(signingInfo.missed_blocks_counter))/slashingParams.params.signed_blocks_window * 100; - Validators.upsert({bech32ValConsAddress:validatorSet[key].bech32ValConsAddress}, {$set:valData}) - } - } - catch(e){ - console.log(url); - console.log("Getting signing info of %o: %o", validatorSet[key].bech32ValConsAddress, e); - } - } -} - -calculateVPDist = async (analyticsData, blockData) => { - console.log("===== calculate voting power distribution ====="); - let activeValidators = Validators.find({status:'BOND_STATUS_BONDED',jailed:false},{sort:{voting_power:-1}}).fetch(); - let numTopTwenty = Math.ceil(activeValidators.length*0.2); - let numBottomEighty = activeValidators.length - numTopTwenty; - - let topTwentyPower = 0; - let bottomEightyPower = 0; - - let numTopThirtyFour = 0; - let numBottomSixtySix = 0; - let topThirtyFourPercent = 0; - let bottomSixtySixPercent = 0; - - - - for (v in activeValidators){ - if (v < numTopTwenty){ - topTwentyPower += activeValidators[v].voting_power; - } - else{ - bottomEightyPower += activeValidators[v].voting_power; - } - - - if (topThirtyFourPercent < 0.34){ - topThirtyFourPercent += activeValidators[v].voting_power / analyticsData.voting_power; - numTopThirtyFour++; - } - } - - bottomSixtySixPercent = 1 - topThirtyFourPercent; - numBottomSixtySix = activeValidators.length - numTopThirtyFour; - - let vpDist = { - height: blockData.height, - numTopTwenty: numTopTwenty, - topTwentyPower: topTwentyPower, - numBottomEighty: numBottomEighty, - bottomEightyPower: bottomEightyPower, - numTopThirtyFour: numTopThirtyFour, - topThirtyFourPercent: topThirtyFourPercent, - numBottomSixtySix: numBottomSixtySix, - bottomSixtySixPercent: bottomSixtySixPercent, - numValidators: activeValidators.length, - totalVotingPower: analyticsData.voting_power, - blockTime: blockData.time, - createAt: new Date() - } - - console.log(vpDist); - - VPDistributions.insert(vpDist); -} - -// var filtered = [1, 2, 3, 4, 5].filter(notContainedIn([1, 2, 3, 5])); -// console.log(filtered); // [4] - -Meteor.methods({ - 'blocks.averageBlockTime'(address){ - this.unblock(); - let blocks = Blockscon.find({proposerAddress:address}).fetch(); - let heights = blocks.map((block) => { - return block.height; - }); - let blocksStats = Analytics.find({height:{$in:heights}}).fetch(); - // console.log(blocksStats); - - let totalBlockDiff = 0; - for (b in blocksStats){ - totalBlockDiff += blocksStats[b].timeDiff; - } - return totalBlockDiff/heights.length; - }, - 'blocks.getLatestHeight': function() { - this.unblock(); - let url = sanitizeUrl(RPC+'/status'); - try{ - let response = HTTP.get(url); - let status = JSON.parse(response.content); - return (status.result.sync_info.latest_block_height); - } - catch (e){ - return 0; - } - }, - 'blocks.getCurrentHeight': function() { - this.unblock(); - let currHeight = Blockscon.find({},{sort:{height:-1},limit:1}).fetch(); - // console.log("currentHeight:"+currHeight); - let startHeight = Meteor.settings.params.startHeight; - if (currHeight && currHeight.length == 1) { - let height = currHeight[0].height; - if (height > startHeight) - return height - } - return startHeight - }, - 'blocks.blocksUpdate': async function() { - this.unblock(); - if (SYNCING) - return "Syncing..."; - else console.log("start to sync"); - // Meteor.clearInterval(Meteor.timerHandle); - // get the latest height - let until = Meteor.call('blocks.getLatestHeight'); - // console.log(until); - // get the current height in db - let curr = Meteor.call('blocks.getCurrentHeight'); - console.log(curr); - // loop if there's update in db - if (until > curr) { - SYNCING = true; - - let validatorSet = []; - // get latest validator candidate information - - let url = sanitizeUrl(API + '/cosmos/staking/v1beta1/validators?status=BOND_STATUS_BONDED&pagination.limit=200&pagination.count_total=true'); - - try{ - let response = HTTP.get(url); - let result = JSON.parse(response.content).validators; - result.forEach((validator) => validatorSet[validator.consensus_pubkey.key] = validator); - } - catch(e){ - console.log(url); - console.log(e); - } - - try{ - url = sanitizeUrl(API + '/cosmos/staking/v1beta1/validators?status=BOND_STATUS_UNBONDING&pagination.limit=200&pagination.count_total=true'); - let response = HTTP.get(url); - let result = JSON.parse(response.content).validators; - result.forEach((validator) => validatorSet[validator.consensus_pubkey.key] = validator); - } - catch(e){ - console.log(url); - console.log(e); - } - - try{ - url = sanitizeUrl(API + '/cosmos/staking/v1beta1/validators?status=BOND_STATUS_UNBONDED&pagination.limit=200&pagination.count_total=true'); - let response = HTTP.get(url); - let result = JSON.parse(response.content).validators; - result.forEach((validator) => validatorSet[validator.consensus_pubkey.key] = validator); - } - catch(e){ - console.log(url); - console.log(e); - } - - // console.log("validaotor set: %o", validatorSet); - let totalValidators = Object.keys(validatorSet).length; - console.log("all validators: "+ totalValidators); - Chain.update({chainId:Meteor.settings.public.chainId}, {$set:{totalValidators:totalValidators}}); - - for (let height = curr+1 ; height <= until ; height++) { - let startBlockTime = new Date(); - // add timeout here? and outside this loop (for catched up and keep fetching)? - this.unblock(); - - url = sanitizeUrl(`${API}/blocks?height=${height}`); - let analyticsData = {}; - - const bulkValidators = Validators.rawCollection().initializeUnorderedBulkOp(); - const bulkUpdateLastSeen = Validators.rawCollection().initializeUnorderedBulkOp(); - const bulkValidatorRecords = ValidatorRecords.rawCollection().initializeUnorderedBulkOp(); - const bulkVPHistory = VotingPowerHistory.rawCollection().initializeUnorderedBulkOp(); - const bulkTransactions = Transactions.rawCollection().initializeUnorderedBulkOp(); - - console.log("Getting block at height: %o", height); - try{ - let startGetHeightTime = new Date(); - - let response = HTTP.get(url); - - // store height, hash, numtransaction and time in db - let blockData = {}; - let block = JSON.parse(response.content); - blockData.height = height; - blockData.hash = block.block_id.hash; - blockData.transNum = block.block.data.txs?block.block.data.txs.length:0; - blockData.time = block.block.header.time; - blockData.lastBlockHash = block.block.header.last_block_id.hash; - blockData.proposerAddress = block.block.header.proposer_address; - blockData.validators = []; - - - // save txs in database - if (block.block.data.txs && block.block.data.txs.length > 0){ - for (t in block.block.data.txs){ - bulkTransactions.insert({ - // hash has to be in uppercase - txhash: sha256(Buffer.from(block.block.data.txs[t], 'base64')).toUpperCase(), - height: parseInt(height), - processed: false - }) - } - - if (bulkTransactions.length > 0){ - bulkTransactions.execute((err, result) => { - if (err){ - console.log(err); - } - if (result){ - // console.log(result); - } - }); - } - } - - // save double sign evidences - if (block.block.evidence.evidenceList){ - Evidences.insert({ - height: height, - evidence: block.block.evidence.evidenceList - }); - } - - // console.log("signatures: %o", block.block.lastCommit.signaturesList) - - blockData.precommitsCount = block.block.last_commit.signatures.length; - - analyticsData.height = height; - - let endGetHeightTime = new Date(); - console.log("Get height time: "+((endGetHeightTime-startGetHeightTime)/1000)+"seconds."); - - - let startGetValidatorsTime = new Date(); - // update chain status - - let validators = [] - let page = 0; - // let nextKey = 0; - try { - let result; - - do { - let url = sanitizeUrl(RPC+`/validators?height=${height}&page=${++page}&per_page=100`); - let response = HTTP.get(url); - result = JSON.parse(response.content).result; - // console.log("========= validator result ==========: %o", result) - validators = [...validators, ...result.validators]; - - // console.log(validators.length); - // console.log(parseInt(result.total)); - } - while (validators.length < parseInt(result.total)) - - } - catch(e){ - console.log("Getting validator set at height %o: %o", height, e) - } - - let genesisTime; - - try { - let genesisResult; - - do { - let url = sanitizeUrl(RPC+`/genesis`); - let response = HTTP.get(url); - genesisResult = JSON.parse(response.content).result; - - // GenesisTime time at start of chain - console.log("========= genesis time ==========: %v", genesisResult.genesis.genesis_time) - genesisTime = genesisResult.genesis.genesis_time; - - - - } - while (!genesisTime) - - } - catch(e){ - console.log("Error getting genesisResult") - } - - // console.log(validators) - - ValidatorSets.insert({ - block_height: height, - validators: validators - }) - - blockData.validatorsCount = validators.length; - - // temporarily add bech32 concensus keys to the validator set list - let tempValidators = []; - for (let v in validators){ - validators[v].valconsAddress = Meteor.call('hexToBech32', validators[v].address, Meteor.settings.public.bech32PrefixConsAddr); - tempValidators[validators[v].address] = validators[v]; - } - console.log("hexToBech32 post"); - validators = tempValidators; - - //console.log("before comparing precommits: %o", validators); - - // Tendermint v0.33 start using "signatures" in last block instead of "precommits" - let precommits = block.block.last_commit.signatures; - if (precommits != null){ - // console.log(precommits); - for (let i=0; i 1){ - // record precommits and calculate uptime - // only record from block 2 - for (i in validators){ - let address = validators[i].address; - let record = { - height: height, - address: address, - exists: false, - voting_power: parseInt(validators[i].voting_power) - } - - for (j in precommits){ - if (precommits[j] != null){ - let precommitAddress = precommits[j].validator_address; - if (address == precommitAddress){ - record.exists = true; - bulkUpdateLastSeen.find({address:precommitAddress}).upsert().updateOne({$set:{lastSeen:blockData.time}}); - precommits.splice(j,1); - break; - } - } - } - - bulkValidatorRecords.insert(record); - // ValidatorRecords.update({height:height,address:record.address},record); - } - } - - let startBlockInsertTime = new Date(); - Blockscon.insert(blockData); - let endBlockInsertTime = new Date(); - console.log("Block insert time: "+((endBlockInsertTime-startBlockInsertTime)/1000)+"seconds."); - - let chainStatus = Chain.findOne({chainId:block.block.header.chain_id}); - let lastSyncedTime = chainStatus?chainStatus.lastSyncedTime:0; - let timeDiff; - let blockTime = Meteor.settings.params.defaultBlockTime; - if (lastSyncedTime){ - let dateLatest = new Date(blockData.time); - let dateLast = new Date(lastSyncedTime); - - // calculating time to generate average block time - let genesisTimeStamp = new Date(genesisTime); - timeDiff = Math.abs(dateLatest.getTime() - dateLast.getTime()); - blockTime = (dateLatest.getTime() - genesisTimeStamp.getTime()) / blockData.height; - } - - let endGetValidatorsTime = new Date(); - console.log("Get height validators time: "+((endGetValidatorsTime-startGetValidatorsTime)/1000)+"seconds."); - - Chain.update({chainId:block.block.header.chainId}, {$set:{lastSyncedTime:blockData.time, blockTime:blockTime}}); - - analyticsData.averageBlockTime = blockTime; - analyticsData.timeDiff = timeDiff; - - analyticsData.time = blockData.time; - - // initialize validator data at first block - // if (height == 1){ - // Validators.remove({}); - // } - - analyticsData.voting_power = 0; - - let startFindValidatorsNameTime = new Date(); - for (v in validatorSet){ - let valData = validatorSet[v]; - - valData.tokens = parseInt(valData.tokens); - valData.unbonding_height = parseInt(valData.unbonding_height) - - let valExist = Validators.findOne({"consensus_pubkey.key":v}); - - // console.log(valData); - - // console.log("===== voting power ======: %o", valData) - analyticsData.voting_power += valData.voting_power - - // console.log(analyticsData.voting_power); - if (!valExist && valData.consensus_pubkey){ - - // let val = getValidatorFromConsensusKey(validators, v); - // get the validator hex address and other bech32 addresses. - - valData.delegator_address = Meteor.call('getDelegator', valData.operator_address); - - // console.log("get hex address") - // valData.address = getAddress(valData.consensusPubkey); - console.log("get bech32 consensus pubkey"); - valData.bech32ConsensusPubKey = Meteor.call('pubkeyToBech32', valData.consensus_pubkey, Meteor.settings.public.bech32PrefixConsPub); - - - valData.address = Meteor.call('getAddressFromPubkey', valData.consensus_pubkey); - valData.bech32ValConsAddress = Meteor.call('hexToBech32', valData.address, Meteor.settings.public.bech32PrefixConsAddr); - - // assign back to the validator set so that we can use it to find the uptime - - if (validatorSet[v]) - validatorSet[v].bech32ValConsAddress = valData.bech32ValConsAddress; - - - // First time adding validator to the database. - // Fetch profile picture from Keybase - - if (valData.description && valData.description.identity){ - try{ - valData.profile_url = getValidatorProfileUrl(valData.description.identity) - } - catch (error){ - console.log("Error fetching keybase: %o", error) - } - } - - - valData.accpub = Meteor.call('pubkeyToBech32', valData.consensus_pubkey, Meteor.settings.public.bech32PrefixAccPub); - valData.operator_pubkey = Meteor.call('pubkeyToBech32', valData.consensus_pubkey, Meteor.settings.public.bech32PrefixValPub); - - // insert first power change history - - // valData.voting_power = validators[valData.consensusPubkey.value]?parseInt(validators[valData.consensusPubkey.value].votingPower):0; - valData.voting_power = validators[valData.address]?parseInt(validators[valData.address].voting_power):0; - valData.proposer_priority = validators[valData.address]?parseInt(validators[valData.address].proposer_priority):0; - - console.log("Validator not found. Insert first VP change record.") - - // console.log("first voting power: %o", valData.voting_power); - bulkVPHistory.insert({ - address: valData.address, - prev_voting_power: 0, - voting_power: valData.voting_power, - type: 'add', - height: blockData.height, - block_time: blockData.time - }); - // } - } - else{ - // console.log(valData); - valData.address = valExist.address; - - // assign to valData for getting self delegation - valData.delegator_address = valExist.delegator_address; - valData.bech32ValConsAddress = valExist.bech32ValConsAddress; - - if (validatorSet[v]){ - validatorSet[v].bech32ValConsAddress = valExist.bech32ValConsAddress; - } - // console.log(valExist); - // console.log(validators[valExist.address]) - // if (validators[valData.consensusPubkey.value]){ - if (validators[valExist.address]){ - // Validator exists and is in validator set, update voitng power. - // If voting power is different from before, add voting power history - valData.voting_power = parseInt(validators[valExist.address].voting_power); - valData.proposer_priority = parseInt(validators[valExist.address].proposer_priority); - let prevVotingPower = VotingPowerHistory.findOne({address:valExist.address}, {height:-1, limit:1}); - - console.log("Validator already in DB. Check if VP changed."); - if (prevVotingPower){ - if (prevVotingPower.voting_power != valData.voting_power){ - let changeType = (prevVotingPower.voting_power > valData.voting_power)?'down':'up'; - let changeData = { - address: valExist.address, - prev_voting_power: prevVotingPower.voting_power, - voting_power: valData.voting_power, - type: changeType, - height: blockData.height, - block_time: blockData.time - }; - bulkVPHistory.insert(changeData); - } - } - } - else{ - // Validator is not in the set and it has been removed. - // Set voting power to zero and add voting power history. - - valData.address = valExist.address; - valData.voting_power = 0; - valData.proposer_priority = 0; - - let prevVotingPower = VotingPowerHistory.findOne({address:valExist.address}, {height:-1, limit:1}); - - if (prevVotingPower && (prevVotingPower.voting_power > 0)){ - console.log("Validator is in DB but not in validator set now. Add remove VP change."); - bulkVPHistory.insert({ - address: valExist.address, - prev_voting_power: prevVotingPower, - voting_power: 0, - type: 'remove', - height: blockData.height, - block_time: blockData.time - }); - } - } - } - - // only update validator infor during start of crawling, end of crawling or every validator update window - if ((height == curr+1) || (height == Meteor.settings.params.startHeight+1) || (height == until) || (height % Meteor.settings.params.validatorUpdateWindow == 0)){ - if ((height == Meteor.settings.params.startHeight+1) || (height % Meteor.settings.params.validatorUpdateWindow == 0)){ - if (valData.status == 'BOND_STATUS_BONDED'){ - url = sanitizeUrl(`${API}/cosmos/staking/v1beta1/validators/${valData.operator_address}/delegations/${valData.delegator_address}`) - try{ - console.log("Getting self delegation"); - - let response = HTTP.get(url); - let selfDelegation = JSON.parse(response.content).delegation_response; - - valData.self_delegation = (selfDelegation.delegation && selfDelegation.delegation.shares)?parseFloat(selfDelegation.delegation.shares)/parseFloat(valData.delegator_shares):0; - - } - catch(e){ - console.log(url); - console.log("Getting self delegation: %o", e); - valData.self_delegation = 0; - - } - } - } - - console.log("Add validator upsert to bulk operations.") - bulkValidators.find({"address": valData.address}).upsert().updateOne({$set:valData}); - } - } - - // store valdiators exist records - // let existingValidators = Validators.find({address:{$exists:true}}).fetch(); - - // update uptime by the end of the crawl or update window - if ((height % Meteor.settings.params.validatorUpdateWindow == 0) || (height == until)){ - console.log("Update validator uptime.") - getValidatorUptime(validatorSet) - } - - - - let endFindValidatorsNameTime = new Date(); - console.log("Get validators name time: "+((endFindValidatorsNameTime-startFindValidatorsNameTime)/1000)+"seconds."); - - // record for analytics - let startAnayticsInsertTime = new Date(); - Analytics.insert(analyticsData); - let endAnalyticsInsertTime = new Date(); - console.log("Analytics insert time: "+((endAnalyticsInsertTime-startAnayticsInsertTime)/1000)+"seconds."); - - // calculate voting power distribution every 60 blocks ~ 5mins - - if (height % 60 == 1){ - calculateVPDist(analyticsData, blockData) - } - - let startVUpTime = new Date(); - if (bulkValidators.length > 0){ - console.log("############ Update validators ############"); - bulkValidators.execute((err, result) => { - if (err){ - console.log("Error while bulk insert validators: %o",err); - } - if (result) { - if (bulkUpdateLastSeen.length > 0) { - bulkUpdateLastSeen.execute((err, result) => { - if (err) { - console.log("Error while bulk update validator last seen: %o", err); - } - if (result) { - } - }) - } - } - }); - } - - let endVUpTime = new Date(); - console.log("Validator update time: "+((endVUpTime-startVUpTime)/1000)+"seconds."); - - let startVRTime = new Date(); - if (bulkValidatorRecords.length > 0){ - bulkValidatorRecords.execute((err) => { - if (err){ - console.log(err); - } - }); - } - - let endVRTime = new Date(); - console.log("Validator records update time: "+((endVRTime-startVRTime)/1000)+"seconds."); - - if (bulkVPHistory.length > 0){ - bulkVPHistory.execute((err) => { - if (err){ - console.log(err); - } - }); - } - - - // } - } - catch (e){ - console.log("Block syncing stopped: %o", e); - SYNCING = false; - return "Stopped"; - } - let endBlockTime = new Date(); - console.log("This block used: "+((endBlockTime-startBlockTime)/1000)+"seconds."); - } - SYNCING = false; - Chain.update({chainId:Meteor.settings.public.chainId}, {$set:{lastBlocksSyncedTime:new Date()}}); - } - - return until; - }, - 'addLimit': function(limit) { - // console.log(limit+10) - return (limit+10); - }, - 'hasMore': function(limit) { - if (limit > Meteor.call('getCurrentHeight')) { - return (false); - } else { - return (true); - } - } -}); diff --git a/big-dipper-backend/imports/api/blocks/server/publications.js b/big-dipper-backend/imports/api/blocks/server/publications.js deleted file mode 100644 index b1f948a752..0000000000 --- a/big-dipper-backend/imports/api/blocks/server/publications.js +++ /dev/null @@ -1,47 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { Blockscon } from '../blocks.js'; -import { Validators } from '../../validators/validators.js'; -import { Transactions } from '../../transactions/transactions.js'; - -publishComposite('blocks.height', function(limit){ - return { - find(){ - return Blockscon.find({}, {limit: limit, sort: {height: -1}}) - }, - children: [ - { - find(block){ - return Validators.find( - {address:block.proposerAddress}, - {limit:1} - ) - } - } - ] - } -}); - -publishComposite('blocks.findOne', function(height){ - return { - find(){ - return Blockscon.find({height:height}) - }, - children: [ - { - find(block){ - return Transactions.find( - {height:block.height} - ) - } - }, - { - find(block){ - return Validators.find( - {address:block.proposerAddress}, - {limit:1} - ) - } - } - ] - } -}); diff --git a/big-dipper-backend/imports/api/chain/chain.js b/big-dipper-backend/imports/api/chain/chain.js deleted file mode 100644 index 382dab22be..0000000000 --- a/big-dipper-backend/imports/api/chain/chain.js +++ /dev/null @@ -1,11 +0,0 @@ -import { Mongo } from 'meteor/mongo'; -import { Validators } from '../validators/validators.js'; - -export const Chain = new Mongo.Collection('chain'); -export const ChainStates = new Mongo.Collection('chain_states') - -Chain.helpers({ - proposer(){ - return Validators.findOne({address:this.proposerAddress}); - } -}) \ No newline at end of file diff --git a/big-dipper-backend/imports/api/chain/server/methods.js b/big-dipper-backend/imports/api/chain/server/methods.js deleted file mode 100644 index d645d8a33d..0000000000 --- a/big-dipper-backend/imports/api/chain/server/methods.js +++ /dev/null @@ -1,239 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { HTTP } from 'meteor/http'; -import { Chain, ChainStates } from '../chain.js'; -import Coin from '../../../../both/utils/coins.js'; -import { sanitizeUrl } from '@braintree/sanitize-url'; - -findVotingPower = (validator, genValidators) => { - for (let v in genValidators){ - if (validator.pub_key.value == genValidators[v].pub_key.value){ - return parseInt(genValidators[v].power); - } - } -} - -Meteor.methods({ - 'chain.getConsensusState': function(){ - this.unblock(); - let url = sanitizeUrl(RPC+'/dump_consensus_state'); - try{ - let response = HTTP.get(url); - let consensus = JSON.parse(response.content); - consensus = consensus.result; - let height = consensus.round_state.height; - let round = consensus.round_state.round; - let step = consensus.round_state.step; - let votedPower = Math.round(parseFloat(consensus.round_state.votes[round].prevotes_bit_array.split(" ")[3])*100); - - Chain.update({chainId:Meteor.settings.public.chainId}, {$set:{ - votingHeight: height, - votingRound: round, - votingStep: step, - votedPower: votedPower, - proposerAddress: consensus.round_state.validators.proposer.address, - prevotes: consensus.round_state.votes[round].prevotes, - precommits: consensus.round_state.votes[round].precommits - }}); - } - catch(e){ - console.log(url); - console.log(e); - } - }, - 'chain.updateStatus': async function(){ - this.unblock(); - let url = ""; - try{ - url = sanitizeUrl(API + '/cosmos/base/tendermint/v1beta1/blocks/latest'); - let response = HTTP.get(url); - let latestBlock = JSON.parse(response.content); - - let chain = {}; - chain.chainId = latestBlock.block.header.chain_id; - chain.latestBlockHeight = parseInt(latestBlock.block.header.height); - chain.latestBlockTime = latestBlock.block.header.time; - let latestState = ChainStates.findOne({}, {sort: {height: -1}}) - if (latestState && latestState.height >= chain.latestBlockHeight) { - return `no updates (getting block ${chain.latestBlockHeight} at block ${latestState.height})` - } - - // Since Tendermint v0.33, validator page default set to return 30 validators. - // Query latest height with page 1 and 100 validators per page. - - // validators = validators.validatorsList; - // chain.validators = validators.length; - - let validators = [] - let page = 0; - - do { - url = sanitizeUrl(RPC+`/validators?page=${++page}&per_page=100`); - let response = HTTP.get(url); - result = JSON.parse(response.content).result; - validators = [...validators, ...result.validators]; - - } - while (validators.length < parseInt(result.total)) - - chain.validators = validators.length; - let activeVP = 0; - for (v in validators){ - activeVP += parseInt(validators[v].voting_power); - } - chain.activeVotingPower = activeVP; - - // update staking params - try { - url = sanitizeUrl(API + '/cosmos/staking/v1beta1/params'); - response = HTTP.get(url); - chain.staking = JSON.parse(response.content); - } - catch(e){ - console.log(e); - } - - // Get chain states - if (parseInt(chain.latestBlockHeight) > 0){ - let chainStates = {}; - chainStates.height = parseInt(chain.latestBlockHeight); - chainStates.time = new Date(chain.latestBlockTime); - - try{ - url = sanitizeUrl(API + '/cosmos/staking/v1beta1/pool'); - let response = HTTP.get(url); - let bonding = JSON.parse(response.content).pool; - chainStates.bondedTokens = parseInt(bonding.bonded_tokens); - chainStates.notBondedTokens = parseInt(bonding.not_bonded_tokens); - } - catch(e){ - console.log(e); - } - - if ( Coin.StakingCoin.denom ) { - if (Meteor.settings.public.modules.bank){ - try{ - url = sanitizeUrl(API + '/cosmos/bank/v1beta1/supply/by_denom?denom=' + Coin.StakingCoin.denom); - let response = HTTP.get(url); - let supply = JSON.parse(response.content); - chainStates.totalSupply = parseInt(supply.amount.amount); - } - catch(e){ - console.log(e); - } - - // update bank params - try { - url = sanitizeUrl(API + '/cosmos/bank/v1beta1/params'); - response = HTTP.get(url); - chain.bank = JSON.parse(response.content); - } - catch(e){ - console.log(e); - } - - } - - if (Meteor.settings.public.modules.distribution){ - try { - url = sanitizeUrl(API + '/cosmos/distribution/v1beta1/community_pool'); - let response = HTTP.get(url); - let pool = JSON.parse(response.content).pool; - if (pool && pool.length > 0){ - chainStates.communityPool = []; - pool.forEach((amount) => { - chainStates.communityPool.push({ - denom: amount.denom, - amount: parseFloat(amount.amount) - }) - }) - } - } - catch (e){ - console.log(e) - } - - // update distribution params - try { - url = sanitizeUrl(API + '/cosmos/distribution/v1beta1/params'); - response = HTTP.get(url); - chain.distribution = JSON.parse(response.content); - } - catch(e){ - console.log(e); - } - } - - if (Meteor.settings.public.modules.minting){ - try{ - url = sanitizeUrl(API + '/cosmos/mint/v1beta1/inflation'); - let response = HTTP.get(url); - let inflation = JSON.parse(response.content).inflation; - // response = HTTP.get(url); - // let inflation = JSON.parse(response.content).result; - if (inflation){ - chainStates.inflation = parseFloat(inflation) - } - } - catch(e){ - console.log(e); - } - - try{ - url = sanitizeUrl(API + '/cosmos/mint/v1beta1/annual_provisions'); - let response = HTTP.get(url); - let provisions = JSON.parse(response.content).annual_provisions; - console.log(provisions) - if (provisions){ - chainStates.annualProvisions = parseFloat(provisions) - } - } - catch(e){ - console.log(e); - } - - // update mint params - try { - url = sanitizeUrl(API + '/cosmos/mint/v1beta1/params'); - response = HTTP.get(url); - chain.mint = JSON.parse(response.content); - } - catch(e){ - console.log(e); - } - } - - if (Meteor.settings.public.modules.gov){ - // update gov params - try { - url = sanitizeUrl(API + '/cosmos/gov/v1beta1/params/tallying'); - response = HTTP.get(url); - chain.gov = JSON.parse(response.content); - } - catch(e){ - console.log(e); - } - } - } - - ChainStates.insert(chainStates); - } - - Chain.update({chainId:chain.chainId}, {$set:chain}, {upsert: true}); - - // chain.totalVotingPower = totalVP; - - // validators = Validators.find({}).fetch(); - // console.log(validators); - return chain.latestBlockHeight; - } - catch (e){ - console.log(url); - console.log(e); - return "Error getting chain status."; - } - }, - 'chain.getLatestStatus': function(){ - this.unblock(); - Chain.find().sort({created:-1}).limit(1); - }, -}) diff --git a/big-dipper-backend/imports/api/chain/server/publications.js b/big-dipper-backend/imports/api/chain/server/publications.js deleted file mode 100644 index 895139db0a..0000000000 --- a/big-dipper-backend/imports/api/chain/server/publications.js +++ /dev/null @@ -1,36 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { Chain, ChainStates } from '../chain.js'; -import { CoinStats } from '../../coin-stats/coin-stats.js'; -import { Validators } from '../../validators/validators.js'; - -Meteor.publish('chainStates.latest', function () { - return [ - ChainStates.find({},{sort:{height:-1},limit:1}), - CoinStats.find({},{sort:{last_updated_at:-1},limit:1}) - ]; -}); - -publishComposite('chain.status', function(){ - return { - find(){ - return Chain.find({chainId:Meteor.settings.public.chainId}); - }, - children: [ - { - find(chain){ - return Validators.find( - {}, - {fields:{ - address:1, - description:1, - operatorAddress:1, - status:-1, - jailed:1, - profile_url:1 - }} - ) - } - } - ] - } -}); \ No newline at end of file diff --git a/big-dipper-backend/imports/api/codec.js b/big-dipper-backend/imports/api/codec.js deleted file mode 100644 index bf1e25f468..0000000000 --- a/big-dipper-backend/imports/api/codec.js +++ /dev/null @@ -1,15 +0,0 @@ -const StatusOk = 200 -const StatusInvalidInput = 400 -const Success = 'Success' -const BadRequest = 'Bad Request' -const InvalidID = 'Invalid Notification ID' -const Failed = 'Failed' - -export const Codec = { - StatusOk, - StatusInvalidInput, - Success, - BadRequest, - InvalidID, - Failed -} \ No newline at end of file diff --git a/big-dipper-backend/imports/api/coin-stats/coin-stats.js b/big-dipper-backend/imports/api/coin-stats/coin-stats.js deleted file mode 100644 index 4f1f32112d..0000000000 --- a/big-dipper-backend/imports/api/coin-stats/coin-stats.js +++ /dev/null @@ -1,3 +0,0 @@ -import { Mongo } from 'meteor/mongo'; - -export const CoinStats = new Mongo.Collection('coin_stats'); diff --git a/big-dipper-backend/imports/api/coin-stats/server/methods.js b/big-dipper-backend/imports/api/coin-stats/server/methods.js deleted file mode 100644 index b9fa6411fc..0000000000 --- a/big-dipper-backend/imports/api/coin-stats/server/methods.js +++ /dev/null @@ -1,88 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { CoinStats } from '../coin-stats.js'; -import { HTTP } from 'meteor/http'; -import { Transactions } from '/imports/api/transactions/transactions.js'; -import { string } from 'prop-types'; - -Meteor.methods({ - 'coinStats.getCoinStats': function(){ - this.unblock(); - let transactionsHandle, transactions, transactionsExist; - let loading = true; - let coinId = Meteor.settings.public.coingeckoId; - if (coinId){ - try{ - let now = new Date(); - now.setMinutes(0); - - if (Meteor.isClient){ - transactionsHandle = Meteor.subscribe('transactions.validator', props.validator, props.delegator, props.limit); - loading = !transactionsHandle.ready(); - } - - if (Meteor.isServer || !loading){ - transactions = Transactions.find({}, {sort:{height:-1}}); - - if (Meteor.isServer){ - loading = false; - transactionsExist = !!transactions; - } - else{ - transactionsExist = !loading && !!transactions; - } - } - - if(!transactionsExist){ - return false; - } - let items = Transactions.find({ - $or: [ - {"tx.body.messages.@type":"/Pylonstech.pylons.pylons.QueryListItemByOwner"} - ] - }).fetch(); - - if (items.length > 0){ - let strings = items.Strings; - if(strings == null){ - return; - } - let price = 0.0, currency = "USD"; - for (i = 0; i < strings.length; i++) { - if(strings.Key == "Currency"){ - currency = strings.Value; - } - else if(strings.Key == "Price"){ - price = strings.Value; - } - } - if(currency == "pylon"){ - price = price * 100; - } - else{ - price = price / 100; - } - data = data[coinId]; - // console.log(coinStats); - return CoinStats.upsert({last_updated_at:data.last_updated_at}, {$set:data}); - } - } - catch(e){ - console.log(e); - } - } - else{ - return "No coingecko Id provided." - } - }, - 'coinStats.getStats': function(){ - this.unblock(); - let coinId = Meteor.settings.public.coingeckoId; - if (coinId){ - return (CoinStats.findOne({},{sort:{last_updated_at:-1}})); - } - else{ - return "No coingecko Id provided."; - } - - } -}) \ No newline at end of file diff --git a/big-dipper-backend/imports/api/cookbooks/cookbooks.js b/big-dipper-backend/imports/api/cookbooks/cookbooks.js deleted file mode 100644 index 439b390699..0000000000 --- a/big-dipper-backend/imports/api/cookbooks/cookbooks.js +++ /dev/null @@ -1,3 +0,0 @@ -import { Mongo } from 'meteor/mongo'; - -export const Cookbooks = new Mongo.Collection('cookbooks'); \ No newline at end of file diff --git a/big-dipper-backend/imports/api/cookbooks/server/methods.js b/big-dipper-backend/imports/api/cookbooks/server/methods.js deleted file mode 100644 index 2e20ae8083..0000000000 --- a/big-dipper-backend/imports/api/cookbooks/server/methods.js +++ /dev/null @@ -1,99 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { HTTP } from 'meteor/http'; -import { Cookbooks } from '../cookbooks.js'; -import { Transactions } from '/imports/api/transactions/transactions.js'; - -Meteor.methods({ - 'cookbooks.getCookbooks': function() { - this.unblock(); - let transactionsHandle, transactions, transactionsExist; - let loading = true; - try { - - if (Meteor.isClient){ - transactionsHandle = Meteor.subscribe('transactions.validator', props.validator, props.delegator, props.limit); - loading = !transactionsHandle.ready(); - } - - if (Meteor.isServer || !loading){ - transactions = Transactions.find({}, {sort:{height:-1}}); - - if (Meteor.isServer){ - loading = false; - transactionsExist = !!transactions; - } - else{ - transactionsExist = !loading && !!transactions; - } - } - - if(!transactionsExist){ - return false; - } - let cookbooks = Transactions.find({ - $or: [ - {"tx.body.messages.@type":"/Pylonstech.pylons.pylons.MsgCreateCookbook"} - ] - }).fetch().map((p) => p.tx.body.messages[0]); - - let finishedCookbookIds = new Set(Cookbooks.find({}).fetch().map((p) => p.ID)); - - let activeCookbooks = finishedCookbookIds; - let cookbookIds = []; - if (cookbooks.length > 0) { - - const bulkCookbooks = Cookbooks.rawCollection().initializeUnorderedBulkOp(); - for (let i in cookbooks) { - let cookbook = cookbooks[i]; - - cookbookIds.push(cookbook.ID); - if (cookbook.NO != -1 && !finishedCookbookIds.has(cookbook.ID)) { - try { - let date = new Date(); - cookbook.NO = date.getFullYear() * 1000 * 360 * 24 * 30 * 12 + date.getMonth() * 1000 * 360 * 24 * 30 + date.getDay() * 1000 * 360 * 24 + date.getHours() * 1000 * 360 + date.getMinutes() * 1000 * 60 + date.getSeconds() * 1000 + date.getMilliseconds(); - cookbook.cookbookId = cookbook.NO; - if (activeCookbooks.has(cookbook.ID)) { - let validators = [] - let page = 0; - - } - - bulkCookbooks.find({ ID: cookbook.ID }).upsert().updateOne({ $set: cookbook }); - - } catch (e) { - bulkCookbooks.find({ ID: cookbook.ID }).upsert().updateOne({ $set: cookbook }); - } - } - } - - bulkCookbooks.find({ ID: { $nin: cookbookIds } }) - .update({ $set: { Level: "0" } }); - bulkCookbooks.execute(); - } - return true - } catch (e) { - console.log(e); - } - }, - 'cookbooks.getCookbookResults': function() { - this.unblock(); - let cookbooks = Cookbooks.find({}).fetch(); - if (cookbooks && (cookbooks.length > 0)) { - for (let i in cookbooks) { - if (cookbooks[i].ID != -1) { - let url = ""; - try { - let cookbook = { ID: cookbooks[i].ID }; - - //recipe.updatedAt = new Date(); - Cookbooks.update({ ID: cookbooks[i].ID }, { $set: cookbook }); - } catch (e) { - console.log(url); - console.log(e); - } - } - } - } - return true - } -}) \ No newline at end of file diff --git a/big-dipper-backend/imports/api/cookbooks/server/publications.js b/big-dipper-backend/imports/api/cookbooks/server/publications.js deleted file mode 100644 index ac330d6f80..0000000000 --- a/big-dipper-backend/imports/api/cookbooks/server/publications.js +++ /dev/null @@ -1,12 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { Cookbooks } from '../cookbooks.js'; -import { check } from 'meteor/check' - -Meteor.publish('cookbooks.list', function() { - return Cookbooks.find({}, { sort: { ID: 1 } }); -}); - -Meteor.publish('cookbooks.one', function(cookbook_owner) { - //check(id, Number); - return Cookbooks.find({ Sender: cookbook_owner }); -}) \ No newline at end of file diff --git a/big-dipper-backend/imports/api/delegations/delegations.js b/big-dipper-backend/imports/api/delegations/delegations.js deleted file mode 100644 index 96fa3366af..0000000000 --- a/big-dipper-backend/imports/api/delegations/delegations.js +++ /dev/null @@ -1,3 +0,0 @@ -import { Mongo } from 'meteor/mongo'; - -export const Delegations = new Mongo.Collection('delegations'); diff --git a/big-dipper-backend/imports/api/delegations/server/methods.js b/big-dipper-backend/imports/api/delegations/server/methods.js deleted file mode 100644 index b323d58ac5..0000000000 --- a/big-dipper-backend/imports/api/delegations/server/methods.js +++ /dev/null @@ -1,40 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { Delegations } from '../delegations.js'; -import { Validators } from '../../validators/validators.js'; -import { sanitizeUrl } from '@braintree/sanitize-url'; - -Meteor.methods({ - 'delegations.getDelegations': async function(){ - this.unblock(); - let validators = Validators.find({}).fetch(); - let delegations = []; - console.log("=== Getting delegations ==="); - for (v in validators){ - if (validators[v].operator_address){ - let url = sanitizeUrl(API + '/cosmos/staking/v1beta1/validators/'+validators[v].operatorAddress+"/delegations"); - try{ - let response = HTTP.get(url); - if (response.statusCode == 200){ - let delegation = JSON.parse(response.content).result; - // console.log(delegation); - delegations = delegations.concat(delegation); - } - else{ - console.log(response.statusCode); - } - } - catch (e){ - // console.log(url); - console.log(e); - } - } - } - - let data = { - delegations: delegations, - createdAt: new Date(), - } - - return Delegations.insert(data); - } -}) \ No newline at end of file diff --git a/big-dipper-backend/imports/api/delegations/server/publications.js b/big-dipper-backend/imports/api/delegations/server/publications.js deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/big-dipper-backend/imports/api/evidences/evidences.js b/big-dipper-backend/imports/api/evidences/evidences.js deleted file mode 100644 index 5e1f04e43c..0000000000 --- a/big-dipper-backend/imports/api/evidences/evidences.js +++ /dev/null @@ -1,3 +0,0 @@ -import { Mongo } from 'meteor/mongo'; - -export const Evidences = new Mongo.Collection('evidences'); diff --git a/big-dipper-backend/imports/api/evidences/server/methods.js b/big-dipper-backend/imports/api/evidences/server/methods.js deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/big-dipper-backend/imports/api/evidences/server/publications.js b/big-dipper-backend/imports/api/evidences/server/publications.js deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/big-dipper-backend/imports/api/fcmtoken/fcmtoken.js b/big-dipper-backend/imports/api/fcmtoken/fcmtoken.js deleted file mode 100644 index 49567f2d2a..0000000000 --- a/big-dipper-backend/imports/api/fcmtoken/fcmtoken.js +++ /dev/null @@ -1,3 +0,0 @@ -import { Mongo } from 'meteor/mongo'; - -export const FCMToken = new Mongo.Collection('fcm-token'); diff --git a/big-dipper-backend/imports/api/fcmtoken/server/methods.js b/big-dipper-backend/imports/api/fcmtoken/server/methods.js deleted file mode 100644 index 0d6fb11189..0000000000 --- a/big-dipper-backend/imports/api/fcmtoken/server/methods.js +++ /dev/null @@ -1,138 +0,0 @@ -import { WebApp } from 'meteor/webapp' -import { FCMToken } from '../fcmtoken.js' -import { admin } from '../../admin.js' -import connectRoute from 'connect-route' -import { isString } from 'lodash' -// Global API configuration - -const StatusOk = 200 -const StatusInvalidInput = 400 -const Success = 'Success' -const Failed = 'Failed' -const BadRequest = 'Bad Request' -const AppCheckFailed = 'App Check Failed' - -WebApp.connectHandlers.use( - connectRoute(function (router) { - router.post('/fcmtoken/update/:address/:token', async function (req, res) { - // validate that params exist - if (!Valid(req.params.address) || !Valid(req.params.token)) { - res.writeHead(StatusOk, { - 'Content-Type': 'text/html' - }) - - res.end( - JSON.stringify({ - Code: StatusInvalidInput, - Message: BadRequest, - Data: null - }) - ) - } - - const h = req.headers - // app check header check - if (!h['x-firebase-appcheck']) { - res.writeHead(StatusOk, { - 'Content-Type': 'text/html' - }) - - res.end( - JSON.stringify({ - Code: StatusInvalidInput, - Message: AppCheckFailed, - Data: 'x-firebase-appcheck header missing' - }) - ) - } else { - // performing app check - const appCheckClaims = await verifyAppCheckToken( - h['x-firebase-appcheck'] - ) - - // app check failed - if (!appCheckClaims) { - res.writeHead(StatusOk, { - 'Content-Type': 'text/html' - }) - - res.end( - JSON.stringify({ - Code: StatusInvalidInput, - Message: AppCheckFailed, - Data: 'invalid x-firebase-appcheck header' - }) - ) - } - - const result = updateFCMToken(req.params.address, req.params.token) - - if (result === false) { - res.writeHead(400, { - 'Content-Type': 'text/html' - }) - - res.end( - JSON.stringify({ - Code: StatusInvalidInput, - Message: Failed, - Data: null - }) - ) - } - - res.writeHead(200, { - 'Content-Type': 'text/html' - }) - - res.end( - JSON.stringify({ - Code: StatusOk, - Message: Success, - Data: null - }) - ) - } - }) - }) -) - -function updateFCMToken (userAddress, fcmToken) { - try { - FCMToken.upsert( - { address: userAddress }, - { - $set: { - address: userAddress, - token: fcmToken - } - } - ) - } catch (error) { - console.log(error) - return false - } - return true -} - -function Valid (parameter) { - if (!isString(parameter)) { - return false - } - if (parameter.length === 0) { - return false - } - return true -} - -async function verifyAppCheckToken (appCheckToken) { - if (!appCheckToken) { - return null - } - try { - const res = await admin.appCheck().verifyToken(appCheckToken) - return res - } catch (err) { - return null - } -} diff --git a/big-dipper-backend/imports/api/ledger/server/methods.js b/big-dipper-backend/imports/api/ledger/server/methods.js deleted file mode 100644 index 2db90d7413..0000000000 --- a/big-dipper-backend/imports/api/ledger/server/methods.js +++ /dev/null @@ -1,65 +0,0 @@ -import { HTTP } from 'meteor/http'; -import { Validators } from '../../validators/validators'; - -Meteor.methods({ - 'transaction.submit': function(txInfo) { - this.unblock(); - const url = `${API}/txs`; - data = { - "tx": txInfo.value, - "mode": "sync" - } - const timestamp = new Date().getTime(); - console.log(`submitting transaction${timestamp} ${url} with data ${JSON.stringify(data)}`) - - let response = HTTP.post(url, {data}); - console.log(`response for transaction${timestamp} ${url}: ${JSON.stringify(response)}`) - if (response.statusCode == 200) { - let data = response.data - if (data.code) - throw new Meteor.Error(data.code, JSON.parse(data.raw_log).message) - return response.data.txhash; - } - }, - 'transaction.execute': function(body, path) { - this.unblock(); - const url = `${API}/${path}`; - data = { - "base_req": { - ...body, - "chain_id": Meteor.settings.public.chainId, - "simulate": false - } - }; - let response = HTTP.post(url, {data}); - if (response.statusCode == 200) { - return JSON.parse(response.content); - } - }, - 'transaction.simulate': function(txMsg, from, accountNumber, sequence, path, adjustment='1.2') { - this.unblock(); - const url = `${API}/${path}`; - console.log(txMsg); - data = {...txMsg, - "base_req": { - "from": from, - "chain_id": Meteor.settings.public.chainId, - "gas_adjustment": adjustment, - "account_number": accountNumber, - "sequence": sequence.toString(), - "simulate": true - } - }; - console.log(url); - console.log(data); - let response = HTTP.post(url, {data}); - if (response.statusCode == 200) { - return JSON.parse(response.content).gas_estimate; - } - }, - 'isValidator': function(address){ - this.unblock(); - let validator = Validators.findOne({delegator_address:address}) - return validator; - } -}) \ No newline at end of file diff --git a/big-dipper-backend/imports/api/nfts/nfts.js b/big-dipper-backend/imports/api/nfts/nfts.js deleted file mode 100644 index 8f0313e297..0000000000 --- a/big-dipper-backend/imports/api/nfts/nfts.js +++ /dev/null @@ -1,3 +0,0 @@ -import { Mongo } from 'meteor/mongo'; - -export const Nfts = new Mongo.Collection('nfts'); \ No newline at end of file diff --git a/big-dipper-backend/imports/api/nfts/server/methods.js b/big-dipper-backend/imports/api/nfts/server/methods.js deleted file mode 100644 index 9e20ea555e..0000000000 --- a/big-dipper-backend/imports/api/nfts/server/methods.js +++ /dev/null @@ -1,129 +0,0 @@ -import {Meteor} from "meteor/meteor"; -import {HTTP} from "meteor/http"; -import {Nfts} from "../nfts.js"; -import {Transactions} from "/imports/api/transactions/transactions.js"; -import {sanitizeUrl} from "@braintree/sanitize-url"; - -Meteor.methods({ - "nfts.getNfts": function () { - this.unblock(); - - let transactionsHandle, transactions, transactionsExist; - let loading = true; - try { - if (Meteor.isClient) { - transactionsHandle = Meteor.subscribe( - "transactions.validator", - props.validator, - props.delegator, - props.limit - ); - loading = !transactionsHandle.ready(); - } - - if (Meteor.isServer || !loading) { - transactions = Transactions.find({}, { sort: { height: -1 } }); - - if (Meteor.isServer) { - loading = false; - transactionsExist = !!transactions; - } else { - transactionsExist = !loading && !!transactions; - } - } - - if (!transactionsExist) { - return false; - } - let trades = Transactions.find({ - $or: [ - { - "tx.body.messages.@type": - "/Pylonstech.pylons.pylons.MsgCreateTrade", - }, - ], - }) - .fetch() - .map((p) => p.tx.body.messages[0]); - - if (trades == null || trades.length == 0) { - return false; - } - - let finishedNftIds = new Set( - Nfts.find({}) - .fetch() - .map((p) => p.ID) - ); - - let nftIds = []; - - if (trades.length > 0) { - const bulkNfts = Nfts.rawCollection().initializeUnorderedBulkOp(); - for (let i in trades) { - let trade = trades[i]; - nftIds.push(trade.itemOutputs[0].itemID); - - if ( - finishedNftIds.NO != -1 && - !finishedNftIds.has(trade.itemOutputs[0].itemID) - ) { - try { - let response = HTTP.get( - sanitizeUrl(`${Meteor.settings.remote.api}/pylons/executions/item/${trade.itemOutputs[0].cookbookID}/${trade.itemOutputs[0].itemID}`) - ); - let executions = JSON.parse(response.content); - let item = executions.CompletedExecutions[0]; - if (item == undefined || item == null || item.length == 0) { - continue; - } - let date = new Date(); - item.NO = - date.getFullYear() * 1000 * 360 * 24 * 30 * 12 + - date.getMonth() * 1000 * 360 * 24 * 30 + - date.getDay() * 1000 * 360 * 24 + - date.getHours() * 1000 * 360 + - date.getMinutes() * 1000 * 60 + - date.getSeconds() * 1000 + - date.getMilliseconds(); - item.tradeable = true; - - item.resalelink = sanitizeUrl(`${Meteor.settings.public.baseURL}?action=resell_nft&recipe_id=${item.recipeID}&cookbook_id=${nft.cookbookID}`); - - bulkNfts.find({ ID: item.ID }).upsert().updateOne({ $set: item }); - } catch (e) { - } - } - } - - bulkNfts - .find({ ID: { $nin: nftIds }, tradeable: { $nin: [true, false] } }) - .update({ $set: { tradeable: true } }); - bulkNfts.execute(); - } - return true; - } catch (e) { - console.log(e); - } - }, - "nfts.getNftResults": function () { - this.unblock(); - let nfts = Nfts.find({ tradeable: { $nin: [true, false] } }).fetch(); - if (nfts && nfts.length > 0) { - for (let i in nfts) { - if (nfts[i].ID != -1) { - let url = ""; - try { - let nft = { ID: nfts[i].ID }; - - Nfts.update({ ID: nfts[i].ID }, { $set: nft }); - } catch (e) { - console.log(url); - console.log(e); - } - } - } - } - return true; - }, -}); diff --git a/big-dipper-backend/imports/api/nfts/server/publications.js b/big-dipper-backend/imports/api/nfts/server/publications.js deleted file mode 100644 index ce32acec37..0000000000 --- a/big-dipper-backend/imports/api/nfts/server/publications.js +++ /dev/null @@ -1,12 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { Nfts } from '../nfts.js'; -import { check } from 'meteor/check' - -Meteor.publish('nfts.list', function() { - return Nfts.find({}, { sort: { ID: 1 } }); -}); - -Meteor.publish('nfts.one', function(id) { - //check(id, Number); - return Nfts.find({ ID: id }); -}) \ No newline at end of file diff --git a/big-dipper-backend/imports/api/notifications/notifications.js b/big-dipper-backend/imports/api/notifications/notifications.js deleted file mode 100644 index a6c5799e0c..0000000000 --- a/big-dipper-backend/imports/api/notifications/notifications.js +++ /dev/null @@ -1,4 +0,0 @@ -import { Mongo } from "meteor/mongo"; - - -export const Notifications = new Mongo.Collection("notifications"); diff --git a/big-dipper-backend/imports/api/notifications/server/methods.js b/big-dipper-backend/imports/api/notifications/server/methods.js deleted file mode 100644 index a478e81bab..0000000000 --- a/big-dipper-backend/imports/api/notifications/server/methods.js +++ /dev/null @@ -1,184 +0,0 @@ -import { Meteor } from 'meteor/meteor' -import { Notifications } from '../notifications.js' -import { FCMToken } from '../../fcmtoken/fcmtoken.js' -import { sanitizeUrl } from '@braintree/sanitize-url' -import { HTTP } from 'meteor/http' -import { admin } from '../../admin.js' - -import { Res } from '../../res.js' - -import { Utils } from '../../utils.js' - -import { Codec } from '../../codec.js' - -import { API } from '../../api.js' - -API.addRoute( - 'notifications/getAllNotifications/:address/:limit/:offset', - { - authRequired: false - }, - { - get: function () { - if ( - Utils.ValidateAddress(this.urlParams.address) && - this.urlParams.limit && - this.urlParams.offset - ) { - try { - const res = getNotifications( - this.urlParams.address, - this.urlParams.limit, - this.urlParams.offset - ) - - return Res.Success({ - results: res - }) - } catch (e) { - return Res.InValidInput(Codec.BadRequestMessage, null) - } - } - - return Res.InValidInput( - Codec.BadRequestMessage, - 'requires params /:address/:limit/:offset' - ) - } - } -) - -API.addRoute( - 'notifications/markread', - { - authRequired: false - }, - { - post: function () { - const notificationIDs = this.bodyParams.notificationIDs - if (notificationIDs && notificationIDs.length > 0) { - for (let index = 0; index < notificationIDs.length; index++) { - const id = notificationIDs[index] - // mark as Read - const result = markRead(id) - if (result !== 1) { - return Res.InValidInput( - Codec.InvalidIDMessage, - `notificationID ${id} is invalid` - ) - } - } - return Res.Success('notifications marked as Read') - } - return Res.InValidInput( - Codec.InvalidIDMessage, - 'notificationIDs list is missing or corrupt' - ) - } - } -) - -Meteor.methods({ - //send un settled notifications - 'Notifications.sendPushNotifications': function () { - this.unblock() - - const unSettled = Notifications.find({ settled: false }) - - unSettled.forEach((sale) => { - var sellerAddress = sale.from - var saleID = sale._id - var token - //get Firebase token for specified user address - try { - token = FCMToken.findOne({ address: sellerAddress }).token - } catch (e) { - return e - } - - const buyerUserName = getUserNameInfo(sale.to).username.value - const message = { - notification: { - title: 'NFT Sold', - body: `Your NFT ${sale.item_name} has been sold to ${buyerUserName}` - }, - data: { - type: 'NFT Sold' - } - } - quantity = parseInt(sale?.quantity, 10) - amountMinted = parseInt(sale?.amountMinted, 10) - totalSale = sale?.amount * amountMinted - let coins = Meteor.settings.public.coins - let totalProceeds = '0 USD' - coin = coins.find( - (coin) => coin?.denom?.toLowerCase() === sale?.coin?.toLowerCase() - ) - if (coin) { - totalProceeds = totalSale / coin?.fraction + ' ' + coin?.displayName - } - if (quantity > 0 && amountMinted === quantity) { - // All editions for [NFT Title] have been sold. Your total proceeds are [$XYZ USD] - message.notification.body = `All editions for ${sale.item_name} have been sold. Your total proceeds are ${totalProceeds}}` - } else if ( - quantity > 0 && - (amountMinted * 2 === quantity || amountMinted * 2 === quantity + 1) - ) { - message.notification.body = `Half of the editions for ${sale.item_name} have been sold. Your total proceeds are ${totalProceeds}}`; - } else { - message.notification.body = `Your NFT ${sale.item_name} have been sold. Your total proceeds are ${totalProceeds}}`; - } - const options = { - priority: 'high', - timeToLive: 86400 - } - - if (Meteor.settings.params.sendNotifications === 1) { - admin - .messaging() - .sendToDevice(token, message, options) - .then((n) => { - markSent(saleID) - console.log(n) - }) - .catch((e) => { - console.log('Notification not sent to ', token) - console.log(e) - }) - } - }) - } -}) - -function markRead(id) { - return Notifications.update({ _id: id }, { $set: { read: true } }) -} - -function markSent(id) { - Notifications.update({ _id: id }, { $set: { settled: true } }) - return Notifications.update({ _id: id }, { $set: { settled: true } }) -} -function getNotifications(address, limit, offset) { - return Notifications.find( - { from: address }, - { - sort: { created_at: -1 }, - limit: parseInt(limit), - skip: parseInt(offset) - } - ).fetch() -} - -function getUserNameInfo(address) { - let result - const url = sanitizeUrl( - `${Meteor.settings.remote.api}/pylons/account/address/${address}` - ) - try { - const response = HTTP.get(url) - result = JSON.parse(response.content) - } catch (e) { - console.log('error getting userNameInfo: ', e) - } - return result -} diff --git a/big-dipper-backend/imports/api/proposals/proposals.js b/big-dipper-backend/imports/api/proposals/proposals.js deleted file mode 100644 index bb14859ca8..0000000000 --- a/big-dipper-backend/imports/api/proposals/proposals.js +++ /dev/null @@ -1,3 +0,0 @@ -import { Mongo } from 'meteor/mongo'; - -export const Proposals = new Mongo.Collection('proposals'); diff --git a/big-dipper-backend/imports/api/proposals/server/methods.js b/big-dipper-backend/imports/api/proposals/server/methods.js deleted file mode 100644 index 799b41d061..0000000000 --- a/big-dipper-backend/imports/api/proposals/server/methods.js +++ /dev/null @@ -1,197 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { HTTP } from 'meteor/http'; -import { Proposals } from '../proposals.js'; -import { Chain } from '../../chain/chain.js'; -import { Validators } from '../../validators/validators.js'; -import { sanitizeUrl } from '@braintree/sanitize-url'; - -Meteor.methods({ - 'proposals.getProposals': function(){ - this.unblock(); - - // get gov tally prarams - let url = sanitizeUrl(API + '/cosmos/gov/v1beta1/params/tallying'); - try{ - let response = HTTP.get(url); - let params = JSON.parse(response.content); - - Chain.update({chainId: Meteor.settings.public.chainId}, {$set:{"gov.tally_params":params.tally_params}}); - - url = sanitizeUrl(API + '/cosmos/gov/v1beta1/proposals'); - response = HTTP.get(url); - let proposals = JSON.parse(response.content).proposals; - // console.log(proposals); - - let finishedProposalIds = new Set(Proposals.find( - {"status":{$in:["PROPOSAL_STATUS_PASSED", "PROPOSAL_STATUS_REJECTED", "PROPOSAL_STATUS_REMOVED"]}} - ).fetch().map((p)=> p.proposalId)); - - let activeProposals = new Set(Proposals.find( - { "status": { $in: ["PROPOSAL_STATUS_VOTING_PERIOD"] } } - ).fetch().map((p) => p.proposalId)); - let proposalIds = []; - if (proposals.length > 0){ - // Proposals.upsert() - const bulkProposals = Proposals.rawCollection().initializeUnorderedBulkOp(); - for (let i in proposals){ - let proposal = proposals[i]; - proposal.proposalId = parseInt(proposal.proposal_id); - proposalIds.push(proposal.proposalId); - if (proposal.proposalId > 0 && !finishedProposalIds.has(proposal.proposalId)) { - try{ - url = sanitizeUrl(API + '/gov/proposals/'+proposal.proposalId+'/proposer'); - let response = HTTP.get(url); - if (response.statusCode == 200){ - let proposer = JSON.parse(response?.content)?.result; - if (proposer.proposal_id && (parseInt(proposer.proposal_id) == proposal.proposalId)){ - proposal.proposer = proposer?.proposer; - } - } - if (activeProposals.has(proposal.proposalId)){ - let validators = [] - let page = 0; - - do { - url = sanitizeUrl(RPC + `/validators?page=${++page}&per_page=100`); - let response = HTTP.get(url); - result = JSON.parse(response.content).result; - validators = [...validators, ...result.validators]; - - } - while (validators.length < parseInt(result.total)) - - let activeVotingPower = 0; - for (v in validators) { - activeVotingPower += parseInt(validators[v].voting_power); - } - proposal.activeVotingPower = activeVotingPower; - } - bulkProposals.find({proposalId: proposal.proposalId}).upsert().updateOne({$set:proposal}); - } - catch (e) { - bulkProposals.find({proposalId:proposal.proposalId}).upsert().updateOne({ $set: proposal}); - console.log(url); - console.log(e.response.content); - } - } - } - bulkProposals.find({proposalId:{$nin:proposalIds}, status:{$nin:["PROPOSAL_STATUS_VOTING_PERIOD", "PROPOSAL_STATUS_PASSED", "PROPOSAL_STATUS_REJECTED", "PROPOSAL_STATUS_REMOVED"]}}) - .update({$set: {"status": "PROPOSAL_STATUS_REMOVED"}}); - bulkProposals.execute(); - } - return true - } - catch (e){ - console.log(url); - console.log(e); - } - }, - 'proposals.getProposalResults': function(){ - this.unblock(); - let proposals = Proposals.find({"status":{$nin:["PROPOSAL_STATUS_PASSED", "PROPOSAL_STATUS_REJECTED", "PROPOSAL_STATUS_REMOVED"]}}).fetch(); - - if (proposals && (proposals.length > 0)){ - for (let i in proposals){ - if (parseInt(proposals[i].proposalId) > 0){ - let url = ""; - try{ - // get proposal deposits - url = API + sanitizeUrl('/cosmos/gov/v1beta1/proposals/'+proposals[i].proposalId+'/deposits?pagination.limit=2000&pagination.count_total=true'); - let response = HTTP.get(url); - let proposal = {proposalId: proposals[i].proposalId}; - if (response.statusCode == 200){ - let deposits = JSON.parse(response.content).deposits; - proposal.deposits = deposits; - } - - url = sanitizeUrl(API + '/cosmos/gov/v1beta1/proposals/'+proposals[i].proposalId+'/votes?pagination.limit=2000&pagination.count_total=true'); - response = HTTP.get(url); - if (response.statusCode == 200){ - let votes = JSON.parse(response.content).votes; - proposal.votes = getVoteDetail(votes); - } - - url = sanitizeUrl(API + '/cosmos/gov/v1beta1/proposals/'+proposals[i].proposalId+'/tally'); - response = HTTP.get(url); - if (response.statusCode == 200){ - let tally = JSON.parse(response.content).tally; - proposal.tally = tally; - } - - proposal.updatedAt = new Date(); - Proposals.update({proposalId: proposals[i].proposalId}, {$set:proposal}); - } - catch(e){ - console.log(url); - console.log(e); - } - } - } - } - return true - } -}) - -const getVoteDetail = (votes) => { - if (!votes) { - return []; - } - - let voters = votes.map((vote) => vote.voter); - let votingPowerMap = {}; - let validatorAddressMap = {}; - Validators.find({delegator_address: {$in: voters}}).forEach((validator) => { - votingPowerMap[validator.delegator_address] = { - moniker: validator.description.moniker, - address: validator.address, - tokens: parseFloat(validator.tokens), - delegatorShares: parseFloat(validator.delegator_shares), - deductedShares: parseFloat(validator.delegator_shares) - } - validatorAddressMap[validator.operator_address] = validator.delegator_address; - }); - voters.forEach((voter) => { - if (!votingPowerMap[voter]) { - // voter is not a validator - let url = sanitizeUrl(`${API}/cosmos/staking/v1beta1/delegations/${voter}`); - let delegations; - let votingPower = 0; - try{ - let response = HTTP.get(url); - if (response.statusCode == 200){ - delegations = JSON.parse(response.content).delegation_responses; - if (delegations && delegations.length > 0) { - delegations.forEach((delegation) => { - let shares = parseFloat(delegation.delegation.shares); - if (validatorAddressMap[delegation.delegation.validator_address]) { - // deduct delegated shareds from validator if a delegator votes - let validator = votingPowerMap[validatorAddressMap[delegation.delegation.validator_address]]; - validator.deductedShares -= shares; - if (parseFloat(validator.delegatorShares) != 0){ // avoiding division by zero - votingPower += (shares / parseFloat(validator.delegatorShares)) * parseFloat(validator.tokens); - } - - } else { - votingPower += shares - } - }); - } - } - } - catch (e){ - console.log(url); - console.log(e); - } - votingPowerMap[voter] = {votingPower: votingPower}; - } - }); - return votes.map((vote) => { - let voter = votingPowerMap[vote.voter]; - let votingPower = voter.votingPower; - if (votingPower == undefined) { - // voter is a validator - votingPower = voter.delegatorShares?((parseFloat(voter.deductedShares) / parseFloat(voter.delegatorShares)) * parseFloat(voter.tokens)):0; - } - return {...vote, votingPower}; - }); -} diff --git a/big-dipper-backend/imports/api/proposals/server/publications.js b/big-dipper-backend/imports/api/proposals/server/publications.js deleted file mode 100644 index 9ba2114bed..0000000000 --- a/big-dipper-backend/imports/api/proposals/server/publications.js +++ /dev/null @@ -1,12 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { Proposals } from '../proposals.js'; -import { check } from 'meteor/check' - -Meteor.publish('proposals.list', function () { - return Proposals.find({}, {sort:{proposalId:-1}}); -}); - -Meteor.publish('proposals.one', function (id){ - check(id, Number); - return Proposals.find({proposalId:id}); -}) \ No newline at end of file diff --git a/big-dipper-backend/imports/api/recipes/publications.js b/big-dipper-backend/imports/api/recipes/publications.js deleted file mode 100644 index 7c235e0dec..0000000000 --- a/big-dipper-backend/imports/api/recipes/publications.js +++ /dev/null @@ -1,12 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { Recipes } from '../recipes.js'; -import { check } from 'meteor/check' - -Meteor.publish('recipes.list', function() { - return Recipes.find({}, { sort: { ID: 1 } }); -}); - -Meteor.publish('recipes.one', function(id) { - //check(id, Number); - return Recipes.find({ ID: id }); -}) \ No newline at end of file diff --git a/big-dipper-backend/imports/api/recipes/recipes.js b/big-dipper-backend/imports/api/recipes/recipes.js deleted file mode 100644 index c586c26e22..0000000000 --- a/big-dipper-backend/imports/api/recipes/recipes.js +++ /dev/null @@ -1,3 +0,0 @@ -import { Mongo } from 'meteor/mongo'; - -export const Recipes = new Mongo.Collection('recipes'); diff --git a/big-dipper-backend/imports/api/recipes/server/methods.js b/big-dipper-backend/imports/api/recipes/server/methods.js deleted file mode 100644 index 026c1c7ff8..0000000000 --- a/big-dipper-backend/imports/api/recipes/server/methods.js +++ /dev/null @@ -1,133 +0,0 @@ -import { Meteor } from "meteor/meteor"; -import { HTTP } from "meteor/http"; -import { Recipes } from "../recipes.js"; -import { Transactions } from "/imports/api/transactions/transactions.js"; -import { Cookbooks } from "/imports/api/cookbooks/cookbooks.js"; -import { sanitizeUrl } from "@braintree/sanitize-url"; - -Meteor.methods({ - "recipes.getRecipes": function () { - this.unblock(); - - let transactionsHandle, transactions, transactionsExist; - let loading = true; - - try { - if (Meteor.isClient) { - transactionsHandle = Meteor.subscribe( - "transactions.validator", - props.validator, - props.delegator, - props.limit - ); - loading = !transactionsHandle.ready(); - } - - if (Meteor.isServer || !loading) { - transactions = Transactions.find({}, { sort: { height: -1 } }); - - if (Meteor.isServer) { - loading = false; - transactionsExist = !!transactions; - } else { - transactionsExist = !loading && !!transactions; - } - } - - let url = sanitizeUrl(API + "/pylons/recipes/"); - let response = HTTP.get(url); - let recipes = JSON.parse(response.content).recipes; - - if (recipes == null || recipes.length == 0) { - return false; - } - - let finishedRecipeIds = new Set( - Recipes.find({ enabled: { $in: [true, false] } }) - .fetch() - .map((p) => p.ID) - ); - - let recipeIds = []; - if (recipes.length > 0) { - const bulkRecipes = Recipes.rawCollection().initializeUnorderedBulkOp(); - - for (let i in recipes) { - let recipe = recipes[i]; - let deeplink = sanitizeUrl( - Meteor.settings.public.baseURL + - "?recipe_id=" + - recipe.id + - "&cookbook_id=" + - recipe.cookbook_id); - recipe.deeplink = deeplink; - var cookbook_owner = "", - creator = ""; - try { - let cookbooks = Cookbooks.find({ ID: recipe.cookbook_id }).fetch(); - if (cookbooks.length > 0) { - cookbook_owner = recipe.id; - creator = cookbooks[0].creator; - } - } catch (e) { - console.log(e); - } - recipe.cookbook_owner = cookbook_owner; - recipe.creator = creator; - - recipeIds.push(recipe.id); - if (recipe.NO != -1 && !finishedRecipeIds.has(recipe.id)) { - try { - let date = new Date(); - recipe.NO = - date.getFullYear() * 1000 * 360 * 24 * 30 * 12 + - date.getMonth() * 1000 * 360 * 24 * 30 + - date.getDay() * 1000 * 360 * 24 + - date.getHours() * 1000 * 360 + - date.getMinutes() * 1000 * 60 + - date.getSeconds() * 1000 + - date.getMilliseconds(); - recipe.recipeId = recipe.NO; - bulkRecipes - .find({ ID: recipe.id }) - .upsert() - .updateOne({ $set: recipe }); - } catch (e) { - bulkRecipes - .find({ ID: recipe.id }) - .upsert() - .updateOne({ $set: recipe }); - } - } - } - - bulkRecipes - .find({ ID: { $nin: recipeIds }, enabled: { $nin: [true, false] } }) - .update({ $set: { enabled: true } }); - bulkRecipes.execute(); - } - return recipes; - } catch (e) { - console.log(e); - } - }, - "recipes.getRecipeResults": function () { - this.unblock(); - let recipes = Recipes.find({ enabled: { $nin: [true, false] } }).fetch(); - if (recipes && recipes.length > 0) { - for (let i in recipes) { - if (recipes[i].id != -1) { - let url = ""; - try { - let recipe = { ID: recipes[i].id }; - Recipes.update({ ID: recipes[i].id }, { $set: recipe }); - } catch (e) { - console.log(url); - console.log(e); - } - } - } - } - return true; - }, -}); \ No newline at end of file diff --git a/big-dipper-backend/imports/api/recipes/server/publications.js b/big-dipper-backend/imports/api/recipes/server/publications.js deleted file mode 100644 index 68a6ee943b..0000000000 --- a/big-dipper-backend/imports/api/recipes/server/publications.js +++ /dev/null @@ -1,16 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { Recipes } from '../recipes.js'; -import { check } from 'meteor/check' - -Meteor.publish('recipes.list', function() { - return Recipes.find({}, { sort: { ID: 1 } }); -}); - -Meteor.publish('recipes.one', function(id) { - //check(id, Number); - return Recipes.find({ ID: id }); -}) - -Meteor.publish('recipes', function() { - return Recipes.find(); -}); \ No newline at end of file diff --git a/big-dipper-backend/imports/api/records/records.js b/big-dipper-backend/imports/api/records/records.js deleted file mode 100644 index f638f2e0ed..0000000000 --- a/big-dipper-backend/imports/api/records/records.js +++ /dev/null @@ -1,21 +0,0 @@ -import { Mongo } from 'meteor/mongo'; -import { Validators } from '../validators/validators'; - -export const ValidatorRecords = new Mongo.Collection('validator_records'); -export const Analytics = new Mongo.Collection('analytics'); -export const MissedBlocksStats = new Mongo.Collection('missed_blocks_stats'); -export const MissedBlocks = new Mongo.Collection('missed_blocks'); -export const VPDistributions = new Mongo.Collection('voting_power_distributions'); -export const AverageData = new Mongo.Collection('average_data'); -export const AverageValidatorData = new Mongo.Collection('average_validator_data'); - -MissedBlocksStats.helpers({ - proposerMoniker(){ - let validator = Validators.findOne({address:this.proposer}); - return (validator.description)?validator.description.moniker:this.proposer; - }, - voterMoniker(){ - let validator = Validators.findOne({address:this.voter}); - return (validator.description)?validator.description.moniker:this.voter; - } -}) diff --git a/big-dipper-backend/imports/api/records/server/methods.js b/big-dipper-backend/imports/api/records/server/methods.js deleted file mode 100644 index b2a9e91d08..0000000000 --- a/big-dipper-backend/imports/api/records/server/methods.js +++ /dev/null @@ -1,368 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { Mongo } from 'meteor/mongo'; -import { ValidatorRecords, Analytics, AverageData, AverageValidatorData } from '../records.js'; -import { Validators } from '../../validators/validators.js'; -import { ValidatorSets } from '/imports/api/validator-sets/validator-sets.js'; -import { Status } from '../../status/status.js'; -import { MissedBlocksStats } from '../records.js'; -import { MissedBlocks } from '../records.js'; -import { Blockscon } from '../../blocks/blocks.js'; -import { Chain } from '../../chain/chain.js'; -import _ from 'lodash'; -const BULKUPDATEMAXSIZE = 1000; - -const getBlockStats = (startHeight, latestHeight) => { - let blockStats = {}; - const cond = {$and: [ - { height: { $gt: startHeight } }, - { height: { $lte: latestHeight } } ]}; - const options = {sort:{height: 1}}; - Blockscon.find(cond, options).forEach((block) => { - blockStats[block.height] = { - height: block.height, - proposerAddress: block.proposerAddress, - precommitsCount: block.precommitsCount, - validatorsCount: block.validatorsCount, - validators: block.validators, - time: block.time - } - }); - - Analytics.find(cond, options).forEach((block) => { - if (!blockStats[block.height]) { - blockStats[block.height] = { height: block.height }; - console.log(`block ${block.height} does not have an entry`); - } - _.assign(blockStats[block.height], { - precommits: block.precommits, - averageBlockTime: block.averageBlockTime, - timeDiff: block.timeDiff, - voting_power: block.voting_power - }); - }); - return blockStats; -} - -const getPreviousRecord = (voterAddress, proposerAddress) => { - let previousRecord = MissedBlocks.findOne( - {voter:voterAddress, proposer:proposerAddress, blockHeight: -1}); - let lastUpdatedHeight = Meteor.settings.params.startHeight; - let prevStats = {}; - if (previousRecord) { - prevStats = _.pick(previousRecord, ['missCount', 'totalCount']); - } else { - prevStats = { - missCount: 0, - totalCount: 0 - } - } - return prevStats; -} - -Meteor.methods({ - 'ValidatorRecords.calculateMissedBlocks': function(){ - this.unblock(); - if (!COUNTMISSEDBLOCKS){ - try { - let startTime = Date.now(); - COUNTMISSEDBLOCKS = true; - console.log('calulate missed blocks count'); - this.unblock(); - let validators = Validators.find({}).fetch(); - let latestHeight = Meteor.call('blocks.getCurrentHeight'); - let explorerStatus = Status.findOne({chainId: Meteor.settings.public.chainId}); - let startHeight = (explorerStatus&&explorerStatus.lastProcessedMissedBlockHeight)?explorerStatus.lastProcessedMissedBlockHeight:Meteor.settings.params.startHeight; - latestHeight = Math.min(startHeight + BULKUPDATEMAXSIZE, latestHeight); - const bulkMissedStats = MissedBlocks.rawCollection().initializeOrderedBulkOp(); - - let validatorsMap = {}; - validators.forEach((validator) => validatorsMap[validator.address] = validator); - - // a map of block height to block stats - let blockStats = getBlockStats(startHeight, latestHeight); - - // proposerVoterStats is a proposer-voter map counting numbers of proposed blocks of which voter is an active validator - let proposerVoterStats = {} - - _.forEach(blockStats, (block, blockHeight) => { - let proposerAddress = block.proposerAddress; - let votedValidators = new Set(block.validators); - let validatorSets = ValidatorSets.findOne({block_height:block.height}); - let votedVotingPower = 0; - - validatorSets.validators.forEach((activeValidator) => { - if (votedValidators.has(activeValidator.address)) - votedVotingPower += parseFloat(activeValidator.voting_power) - }) - - validatorSets.validators.forEach((activeValidator) => { - let currentValidator = activeValidator.address - if (!_.has(proposerVoterStats, [proposerAddress, currentValidator])) { - let prevStats = getPreviousRecord(currentValidator, proposerAddress); - _.set(proposerVoterStats, [proposerAddress, currentValidator], prevStats); - } - - _.update(proposerVoterStats, [proposerAddress, currentValidator, 'totalCount'], (n) => n+1); - if (!votedValidators.has(currentValidator)) { - _.update(proposerVoterStats, [proposerAddress, currentValidator, 'missCount'], (n) => n+1); - bulkMissedStats.insert({ - voter: currentValidator, - blockHeight: block.height, - proposer: proposerAddress, - precommitsCount: block.precommitsCount, - validatorsCount: block.validatorsCount, - time: block.time, - precommits: block.precommits, - averageBlockTime: block.averageBlockTime, - timeDiff: block.timeDiff, - votingPower: block.voting_power, - votedVotingPower, - updatedAt: latestHeight, - missCount: _.get(proposerVoterStats, [proposerAddress, currentValidator, 'missCount']), - totalCount: _.get(proposerVoterStats, [proposerAddress, currentValidator, 'totalCount']) - }); - } - }) - }); - - _.forEach(proposerVoterStats, (voters, proposerAddress) => { - _.forEach(voters, (stats, voterAddress) => { - bulkMissedStats.find({ - voter: voterAddress, - proposer: proposerAddress, - blockHeight: -1 - }).upsert().updateOne({$set: { - voter: voterAddress, - proposer: proposerAddress, - blockHeight: -1, - updatedAt: latestHeight, - missCount: _.get(stats, 'missCount'), - totalCount: _.get(stats, 'totalCount') - }}); - }); - }); - - let message = ''; - if (bulkMissedStats.length > 0){ - const client = MissedBlocks._driver.mongo.client; - // TODO: add transaction back after replica set(#146) is set up - // let session = client.startSession(); - // session.startTransaction(); - let bulkPromise = bulkMissedStats.execute(null/*, {session}*/).then( - Meteor.bindEnvironment((result, err) => { - if (err){ - COUNTMISSEDBLOCKS = false; - // Promise.await(session.abortTransaction()); - throw err; - } - if (result){ - // Promise.await(session.commitTransaction()); - message = `(${result.result.nInserted} inserted, ` + - `${result.result.nUpserted} upserted, ` + - `${result.result.nModified} modified)`; - } - })); - - Promise.await(bulkPromise); - } - - COUNTMISSEDBLOCKS = false; - Status.upsert({chainId: Meteor.settings.public.chainId}, {$set:{lastProcessedMissedBlockHeight:latestHeight, lastProcessedMissedBlockTime: new Date()}}); - return `done in ${Date.now() - startTime}ms ${message}`; - } catch (e) { - COUNTMISSEDBLOCKS = false; - throw e; - } - } - else{ - return "updating..."; - } - }, - 'ValidatorRecords.calculateMissedBlocksStats': function(){ - this.unblock(); - // TODO: deprecate this method and MissedBlocksStats collection - // console.log("ValidatorRecords.calculateMissedBlocks: "+COUNTMISSEDBLOCKS); - if (!COUNTMISSEDBLOCKSSTATS){ - COUNTMISSEDBLOCKSSTATS = true; - console.log('calulate missed blocks stats'); - this.unblock(); - let validators = Validators.find({}).fetch(); - let latestHeight = Meteor.call('blocks.getCurrentHeight'); - let explorerStatus = Status.findOne({chainId: Meteor.settings.public.chainId}); - let startHeight = (explorerStatus&&explorerStatus.lastMissedBlockHeight)?explorerStatus.lastMissedBlockHeight:Meteor.settings.params.startHeight; - // console.log(latestHeight); - // console.log(startHeight); - const bulkMissedStats = MissedBlocksStats.rawCollection().initializeUnorderedBulkOp(); - for (i in validators){ - // if ((validators[i].address == "B8552EAC0D123A6BF609123047A5181D45EE90B5") || (validators[i].address == "69D99B2C66043ACBEAA8447525C356AFC6408E0C") || (validators[i].address == "35AD7A2CD2FC71711A675830EC1158082273D457")){ - let voterAddress = validators[i].address; - let missedRecords = ValidatorRecords.find({ - address:voterAddress, - exists:false, - $and: [ { height: { $gt: startHeight } }, { height: { $lte: latestHeight } } ] - }).fetch(); - - let counts = {}; - - // console.log("missedRecords to process: "+missedRecords.length); - for (b in missedRecords){ - let block = Blockscon.findOne({height:missedRecords[b].height}); - let existingRecord = MissedBlocksStats.findOne({voter:voterAddress, proposer:block.proposerAddress}); - - if (typeof counts[block.proposerAddress] === 'undefined'){ - if (existingRecord){ - counts[block.proposerAddress] = existingRecord.count+1; - } - else{ - counts[block.proposerAddress] = 1; - } - } - else{ - counts[block.proposerAddress]++; - } - } - - for (address in counts){ - let data = { - voter: voterAddress, - proposer:address, - count: counts[address] - } - - bulkMissedStats.find({voter:voterAddress, proposer:address}).upsert().updateOne({$set:data}); - } - // } - - } - - if (bulkMissedStats.length > 0){ - bulkMissedStats.execute(Meteor.bindEnvironment((err, result) => { - if (err){ - COUNTMISSEDBLOCKSSTATS = false; - console.log(err); - } - if (result){ - Status.upsert({chainId: Meteor.settings.public.chainId}, {$set:{lastMissedBlockHeight:latestHeight, lastMissedBlockTime: new Date()}}); - COUNTMISSEDBLOCKSSTATS = false; - console.log("done"); - } - })); - } - else{ - COUNTMISSEDBLOCKSSTATS = false; - } - - return true; - } - else{ - return "updating..."; - } - }, - 'Analytics.aggregateBlockTimeAndVotingPower': function(time){ - this.unblock(); - let now = new Date(); - - if (time == 'm'){ - let averageBlockTime = 0; - let averageVotingPower = 0; - - let analytics = Analytics.find({ "time": { $gt: new Date(Date.now() - 60 * 1000) } }).fetch(); - if (analytics.length > 0){ - for (i in analytics){ - averageBlockTime += analytics[i].timeDiff; - averageVotingPower += analytics[i].voting_power; - } - averageBlockTime = averageBlockTime / analytics.length; - averageVotingPower = averageVotingPower / analytics.length; - - Chain.update({chainId:Meteor.settings.public.chainId},{$set:{lastMinuteVotingPower:averageVotingPower, lastMinuteBlockTime:averageBlockTime}}); - AverageData.insert({ - averageBlockTime: averageBlockTime, - averageVotingPower: averageVotingPower, - type: time, - createdAt: now - }) - } - } - if (time == 'h'){ - let averageBlockTime = 0; - let averageVotingPower = 0; - let analytics = Analytics.find({ "time": { $gt: new Date(Date.now() - 60*60 * 1000) } }).fetch(); - if (analytics.length > 0){ - for (i in analytics){ - averageBlockTime += analytics[i].timeDiff; - averageVotingPower += analytics[i].voting_power; - } - averageBlockTime = averageBlockTime / analytics.length; - averageVotingPower = averageVotingPower / analytics.length; - - Chain.update({chainId:Meteor.settings.public.chainId},{$set:{lastHourVotingPower:averageVotingPower, lastHourBlockTime:averageBlockTime}}); - AverageData.insert({ - averageBlockTime: averageBlockTime, - averageVotingPower: averageVotingPower, - type: time, - createdAt: now - }) - } - } - - if (time == 'd'){ - let averageBlockTime = 0; - let averageVotingPower = 0; - let analytics = Analytics.find({ "time": { $gt: new Date(Date.now() - 24*60*60 * 1000) } }).fetch(); - if (analytics.length > 0){ - for (i in analytics){ - averageBlockTime += analytics[i].timeDiff; - averageVotingPower += analytics[i].voting_power; - } - averageBlockTime = averageBlockTime / analytics.length; - averageVotingPower = averageVotingPower / analytics.length; - - Chain.update({chainId:Meteor.settings.public.chainId},{$set:{lastDayVotingPower:averageVotingPower, lastDayBlockTime:averageBlockTime}}); - AverageData.insert({ - averageBlockTime: averageBlockTime, - averageVotingPower: averageVotingPower, - type: time, - createdAt: now - }) - } - } - - // return analytics.length; - }, - 'Analytics.aggregateValidatorDailyBlockTime': function(){ - this.unblock(); - let validators = Validators.find({}).fetch(); - let now = new Date(); - for (i in validators){ - let averageBlockTime = 0; - - let blocks = Blockscon.find({proposerAddress:validators[i].address, "time": { $gt: new Date(Date.now() - 24*60*60 * 1000) }}, {fields:{height:1}}).fetch(); - - if (blocks.length > 0){ - let blockHeights = []; - for (b in blocks){ - blockHeights.push(blocks[b].height); - } - - let analytics = Analytics.find({height: {$in:blockHeights}}, {fields:{height:1,timeDiff:1}}).fetch(); - - - for (a in analytics){ - averageBlockTime += analytics[a].timeDiff; - } - - averageBlockTime = averageBlockTime / analytics.length; - } - - AverageValidatorData.insert({ - proposerAddress: validators[i].address, - averageBlockTime: averageBlockTime, - type: 'ValidatorDailyAverageBlockTime', - createdAt: now - }) - } - - return true; - } -}) diff --git a/big-dipper-backend/imports/api/records/server/publications.js b/big-dipper-backend/imports/api/records/server/publications.js deleted file mode 100644 index 27200580be..0000000000 --- a/big-dipper-backend/imports/api/records/server/publications.js +++ /dev/null @@ -1,69 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { ValidatorRecords, Analytics, MissedBlocks, MissedBlocksStats, VPDistributions } from '../records.js'; -import { Validators } from '../../validators/validators.js'; - -Meteor.publish('validator_records.all', function () { - return ValidatorRecords.find(); -}); - -Meteor.publish('validator_records.uptime', function(address, num){ - return ValidatorRecords.find({address:address},{limit:num, sort:{height:-1}}); -}); - -Meteor.publish('analytics.history', function(){ - return Analytics.find({},{sort:{height:-1},limit:50}); -}); - -Meteor.publish('vpDistribution.latest', function(){ - return VPDistributions.find({},{sort:{height:-1}, limit:1}); -}); - -publishComposite('missedblocks.validator', function(address, type){ - let conditions = {}; - if (type == 'voter'){ - conditions = { - voter: address - } - } - else{ - conditions = { - proposer: address - } - } - return { - find(){ - return MissedBlocksStats.find(conditions) - }, - children: [ - { - find(stats){ - return Validators.find( - {}, - {fields:{address:1, description:1, profile_url:1}} - ) - } - } - ] - } -}); - -publishComposite('missedrecords.validator', function(address, type){ - return { - find(){ - return MissedBlocks.find( - {[type]: address}, - {sort: {updatedAt: -1}} - ) - }, - children: [ - { - find(){ - return Validators.find( - {}, - {fields:{address:1, description:1, operatorAddress:1}} - ) - } - } - ] - } -}); diff --git a/big-dipper-backend/imports/api/res.js b/big-dipper-backend/imports/api/res.js deleted file mode 100644 index 98e0836667..0000000000 --- a/big-dipper-backend/imports/api/res.js +++ /dev/null @@ -1,36 +0,0 @@ -import { - Codec -} from './codec.js' - - - -function Success(data) { - return { - Code: Codec.StatusOk, - Message: Codec.SuccessMessage, - Data: data - } -} - - -function InValidInput(message, data) { - return { - Code: Codec.StatusInvalidInput, - Message: message, - Data: data - } -} - -function Failed(message, data) { - return { - Code: Codec.StatusInvalidInput, - Message: message, - Data: data - } -} - -export const Res = { - Success, - InValidInput, - Failed -} \ No newline at end of file diff --git a/big-dipper-backend/imports/api/status/server/publications.js b/big-dipper-backend/imports/api/status/server/publications.js deleted file mode 100644 index 70bc655989..0000000000 --- a/big-dipper-backend/imports/api/status/server/publications.js +++ /dev/null @@ -1,8 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { Status } from '../status.js'; -import { check } from 'meteor/check' - -Meteor.publish('status.status', function () { - return Status.find({chainId:Meteor.settings.public.chainId}); -}); - diff --git a/big-dipper-backend/imports/api/status/status.js b/big-dipper-backend/imports/api/status/status.js deleted file mode 100644 index d06166bebf..0000000000 --- a/big-dipper-backend/imports/api/status/status.js +++ /dev/null @@ -1,3 +0,0 @@ -import { Mongo } from 'meteor/mongo'; - -export const Status = new Mongo.Collection('status'); \ No newline at end of file diff --git a/big-dipper-backend/imports/api/transactions/server/methods.js b/big-dipper-backend/imports/api/transactions/server/methods.js deleted file mode 100644 index d7546fefff..0000000000 --- a/big-dipper-backend/imports/api/transactions/server/methods.js +++ /dev/null @@ -1,113 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { HTTP } from 'meteor/http'; -import { Transactions } from '../../transactions/transactions.js'; -import { Validators } from '../../validators/validators.js'; -import { sanitizeUrl } from '@braintree/sanitize-url'; - -const AddressLength = 40; - -Meteor.methods({ - 'Transactions.updateTransactions': async function(){ - this.unblock(); - if (TXSYNCING) - return "Syncing transactions..."; - - const transactions = Transactions.find({processed:false},{limit: 500}).fetch(); - try{ - TXSYNCING = true; - const bulkTransactions = Transactions.rawCollection().initializeUnorderedBulkOp(); - for (let i in transactions){ - let url = ""; - try { - url = sanitizeUrl(API+ '/cosmos/tx/v1beta1/txs/'+transactions[i].txhash); - let response = HTTP.get(url); - let tx = JSON.parse(response.content); - - tx.height = parseInt(tx.tx_response.height); - tx.processed = true; - - bulkTransactions.find({txhash:transactions[i].txhash}).updateOne({$set:tx}); - - } - catch(e) { - // console.log(url); - // console.log("tx not found: %o") - console.log("Getting transaction %o: %o", transactions[i].txhash, e); - bulkTransactions.find({txhash:transactions[i].txhash}).updateOne({$set:{processed:true, missing:true}}); - } - } - if (bulkTransactions.length > 0){ - console.log("aaa: %o",bulkTransactions.length) - bulkTransactions.execute((err, result) => { - if (err){ - console.log(err); - } - if (result){ - console.log(result); - } - }); - } - } - catch (e) { - TXSYNCING = false; - return e - } - TXSYNCING = false; - return transactions.length - }, - 'Transactions.findDelegation': function(address, height){ - this.unblock(); - // following cosmos-sdk/x/slashing/spec/06_events.md and cosmos-sdk/x/staking/spec/06_events.md - return Transactions.find({ - $or: [{$and: [ - {"tx_response.logs.events.type": "delegate"}, - {"tx_response.logs.events.attributes.key": "validator"}, - {"tx_response.logs.events.attributes.value": address} - ]}, {$and:[ - {"tx_response.logs.events.attributes.key": "action"}, - {"tx_response.logs.events.attributes.value": "unjail"}, - {"tx_response.logs.events.attributes.key": "sender"}, - {"tx_response.logs.events.attributes.value": address} - ]}, {$and:[ - {"tx_response.logs.events.type": "create_validator"}, - {"tx_response.logs.events.attributes.key": "validator"}, - {"tx_response.logs.events.attributes.value": address} - ]}, {$and:[ - {"tx_response.logs.events.type": "unbond"}, - {"tx_response.logs.events.attributes.key": "validator"}, - {"tx_response.logs.events.attributes.value": address} - ]}, {$and:[ - {"tx_response.logs.events.type": "redelegate"}, - {"tx_response.logs.events.attributes.key": "destination_validator"}, - {"tx_response.logs.events.attributes.value": address} - ]}], - "tx_response.code": 0, - height:{$lt:height}}, - {sort:{height:-1}, - limit: 1} - ).fetch(); - }, - 'Transactions.findUser': function(address, fields=null){ - this.unblock(); - // address is either delegator address or validator operator address - let validator; - if (!fields) - fields = {address:1, description:1, operator_address:1, delegator_address:1}; - if (address.includes(Meteor.settings.public.bech32PrefixValAddr)){ - // validator operator address - validator = Validators.findOne({operator_address:address}, {fields}); - } - else if (address.includes(Meteor.settings.public.bech32PrefixAccAddr)){ - // delegator address - validator = Validators.findOne({delegator_address:address}, {fields}); - } - else if (address.length === AddressLength) { - validator = Validators.findOne({address:address}, {fields}); - } - if (validator){ - return validator; - } - return false; - - } -}); diff --git a/big-dipper-backend/imports/api/transactions/server/publications.js b/big-dipper-backend/imports/api/transactions/server/publications.js deleted file mode 100644 index e13a20da08..0000000000 --- a/big-dipper-backend/imports/api/transactions/server/publications.js +++ /dev/null @@ -1,130 +0,0 @@ -import { Meteor } from "meteor/meteor"; -import { Transactions } from "../transactions.js"; -import { Blockscon } from "../../blocks/blocks.js"; - -publishComposite("transactions.list", function (limit = 30) { - return { - find() { - return Transactions.find( - { height: { $exists: true }, processed: { $ne: false } }, - { sort: { height: -1 }, limit: limit } - ); - }, - children: [ - { - find(tx) { - if (tx.height) - return Blockscon.find( - { height: tx.height }, - { fields: { time: 1, height: 1 } } - ); - }, - }, - ], - }; -}); - -publishComposite("transactions.validlist", function (limit = 30) { - console.log("hello welcome to transactions"); - var needTransactions = [ - { "tx.body.messages.@type": "/pylons.pylons.MsgCreateAccount" }, - { "tx.body.messages.@type": "/pylons.pylons.MsgCreateRecipe" }, - { "tx.body.messages.@type": "/pylons.pylons.MsgCreateCookbook" }, - { "tx.body.messages.@type": "/pylons.pylons.MsgUpdateCookbook" }, - { "tx.body.messages.@type": "/pylons.pylons.MsgCreateTrade" }, - { "tx.body.messages.@type": "/pylons.pylons.MsgExecuteRecipe" }, - { "tx.body.messages.@type": "/pylons.pylons.MsgFulfillTrade" }, - { "tx.body.messages.@type": "/pylons.pylons.MsgCancelTrade" }, - ]; - return { - find() { - return Transactions.find( - { $or: needTransactions }, - { height: { $exists: true }, processed: { $ne: false } }, - { sort: { height: -1 }, limit: limit } - ); - }, - children: [ - { - find(tx) { - if (tx.height) - return Blockscon.find( - { height: tx.height }, - { fields: { time: 1, height: 1 } } - ); - }, - }, - ], - }; -}); - -publishComposite( - "transactions.validator", - function (validatorAddress, delegatorAddress, limit = 100) { - let query = {}; - if (validatorAddress && delegatorAddress) { - query = { - $or: [ - { "tx_response.logs.events.attributes.value": validatorAddress }, - { "tx_response.logs.events.attributes.value": delegatorAddress }, - ], - }; - } - - if (!validatorAddress && delegatorAddress) { - query = { "tx_response.logs.events.attributes.value": delegatorAddress }; - } - - return { - find() { - return Transactions.find(query, { sort: { height: -1 }, limit: limit }); - }, - children: [ - { - find(tx) { - return Blockscon.find( - { height: tx.height }, - { fields: { time: 1, height: 1 } } - ); - }, - }, - ], - }; - } -); - -publishComposite("transactions.findOne", function (hash) { - return { - find() { - return Transactions.find({ txhash: hash }); - }, - children: [ - { - find(tx) { - return Blockscon.find( - { height: tx.height }, - { fields: { time: 1, height: 1 } } - ); - }, - }, - ], - }; -}); - -publishComposite("transactions.height", function (height) { - return { - find() { - return Transactions.find({ height: height }); - }, - children: [ - { - find(tx) { - return Blockscon.find( - { height: tx.height }, - { fields: { time: 1, height: 1 } } - ); - }, - }, - ], - }; -}); diff --git a/big-dipper-backend/imports/api/transactions/transactions.js b/big-dipper-backend/imports/api/transactions/transactions.js deleted file mode 100644 index f5ff3709cf..0000000000 --- a/big-dipper-backend/imports/api/transactions/transactions.js +++ /dev/null @@ -1,10 +0,0 @@ -import { Mongo } from 'meteor/mongo' -import { Blockscon } from '../blocks/blocks.js' - -export const Transactions = new Mongo.Collection('transactions') - -Transactions.helpers({ - block() { - return Blockscon.findOne({ height: this.height }) - } -}) diff --git a/big-dipper-backend/imports/api/utils.js b/big-dipper-backend/imports/api/utils.js deleted file mode 100644 index cae4888810..0000000000 --- a/big-dipper-backend/imports/api/utils.js +++ /dev/null @@ -1,29 +0,0 @@ -import { - isString -} from 'lodash' - - -function ValidateAddress(parameter) { - if (!isString(parameter)) { - return false - } - if (parameter.length === 0) { - return false - } - return true -} - -function ValidateToken(parameter) { - if (!isString(parameter)) { - return false - } - if (parameter.length === 0) { - return false - } - return true -} - -export const Utils = { - ValidateAddress, - ValidateToken -} \ No newline at end of file diff --git a/big-dipper-backend/imports/api/validator-sets/server/publications.js b/big-dipper-backend/imports/api/validator-sets/server/publications.js deleted file mode 100644 index 4259f013a8..0000000000 --- a/big-dipper-backend/imports/api/validator-sets/server/publications.js +++ /dev/null @@ -1,6 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { ValidatorSets } from '../validator-set.js'; - -Meteor.publish('validatorSets.all', function () { - return ValidatorSets.find(); -}); diff --git a/big-dipper-backend/imports/api/validator-sets/validator-sets.js b/big-dipper-backend/imports/api/validator-sets/validator-sets.js deleted file mode 100644 index 08c5158967..0000000000 --- a/big-dipper-backend/imports/api/validator-sets/validator-sets.js +++ /dev/null @@ -1,3 +0,0 @@ -import { Mongo } from 'meteor/mongo'; - -export const ValidatorSets = new Mongo.Collection('validator_sets'); diff --git a/big-dipper-backend/imports/api/validators/server/methods.js b/big-dipper-backend/imports/api/validators/server/methods.js deleted file mode 100644 index 704eb1036c..0000000000 --- a/big-dipper-backend/imports/api/validators/server/methods.js +++ /dev/null @@ -1,104 +0,0 @@ -/* eslint-disable camelcase */ - -import { Meteor } from 'meteor/meteor'; -import { Transactions } from '../../transactions/transactions.js'; -import { Blockscon } from '../../blocks/blocks.js'; -import { Validators } from '../../validators/validators.js'; -import { Chain } from '../../chain/chain.js'; -import { getValidatorProfileUrl } from '../../blocks/server/methods.js'; -import { sanitizeUrl } from '@braintree/sanitize-url'; - - -Meteor.methods({ - 'Validators.findCreateValidatorTime': function(address){ - this.unblock(); - // look up the create validator time to consider if the validator has never updated the commission - let tx = Transactions.findOne({$and:[ - {"tx.body.messages.delegator_address":address}, - {"tx.body.messages.@type":"/cosmos.staking.v1beta1.MsgCreateValidator"}, - {"tx_response.code":0} - ]}); - - if (tx){ - let block = Blockscon.findOne({height:tx.height}); - if (block){ - return block.time; - } - } - else{ - // no such create validator tx - return false; - } - }, - 'Validators.getAllDelegations'(address){ - this.unblock(); - let url = sanitizeUrl(`${API}/cosmos/staking/v1beta1/validators/${address}/delegations?pagination.limit=10&pagination.count_total=true`); - - try { - let delegations = HTTP.get(url); - if (delegations.statusCode == 200) { - let delegationsCount = JSON.parse(delegations.content)?.pagination?.total; - return delegationsCount; - }; - } - catch (e) { - console.log(url); - console.log("Getting error: %o when getting delegations count from %o", e, url); - } - }, - - 'Validators.fetchKeybase'(address) { - this.unblock(); - // fetching keybase every base on keybaseFetchingInterval settings - // default to every 5 hours - - let url = sanitizeUrl(RPC + '/status'); - let chainId; - try { - let response = HTTP.get(url); - let status = JSON.parse(response?.content); - chainId = (status?.result?.node_info?.network); - } - catch (e) { - console.log("Error getting chainId for keybase fetching") - } - let chainStatus = Chain.findOne({ chainId}); - const bulkValidators = Validators.rawCollection().initializeUnorderedBulkOp(); - - let lastKeybaseFetchTime = Date.parse(chainStatus?.lastKeybaseFetchTime) ?? 0 - console.log("Last fetch time: %o", lastKeybaseFetchTime) - - console.log('Fetching keybase...') - // eslint-disable-next-line no-loop-func - Validators.find({}).forEach(async (validator) => { - try { - if (validator?.description && validator?.description?.identity) { - let profileUrl = getValidatorProfileUrl(validator?.description?.identity) - if (profileUrl) { - bulkValidators.find({ address: validator?.address }).upsert().updateOne({ $set: { 'profile_url': profileUrl } }); - if (bulkValidators.length > 0) { - bulkValidators.execute((err, result) => { - if (err) { - console.log(`Error when updating validator profile_url ${err}`); - } - if (result) { - console.log('Validator profile_url has been updated!'); - } - }); - } - } - } - } catch (e) { - console.log("Error fetching Keybase for %o: %o", validator?.address, e) - } - }) - try{ - Chain.update({ chainId }, { $set: { lastKeybaseFetchTime: new Date().toUTCString() } }); - } - catch(e){ - console.log("Error when updating lastKeybaseFetchTime") - } - - } - -}); \ No newline at end of file diff --git a/big-dipper-backend/imports/api/validators/server/publications.js b/big-dipper-backend/imports/api/validators/server/publications.js deleted file mode 100644 index 8041d223eb..0000000000 --- a/big-dipper-backend/imports/api/validators/server/publications.js +++ /dev/null @@ -1,72 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { Validators } from '../validators.js'; -import { ValidatorRecords } from '../../records/records.js'; -import { VotingPowerHistory } from '../../voting-power/history.js'; - -Meteor.publish('validators.all', function (sort = "description.moniker", direction = -1, fields={}) { - return Validators.find({}, {sort: {[sort]: direction}, fields: fields}); -}); - -publishComposite('validators.firstSeen',{ - find() { - return Validators.find({}); - }, - children: [ - { - find(val) { - return ValidatorRecords.find( - { address: val.address }, - { sort: {height: 1}, limit: 1} - ); - } - } - ] -}); - -Meteor.publish('validators.voting_power', function(){ - return Validators.find({ - status: 'BOND_STATUS_BONDED', - jailed:false - },{ - sort:{ - voting_power:-1 - }, - fields:{ - address: 1, - description:1, - voting_power:1, - profile_url:1 - } - } - ); -}); - -publishComposite('validator.details', function(address){ - let options = {address:address}; - if (address.indexOf(Meteor.settings.public.bech32PrefixValAddr) != -1){ - options = {operator_address:address} - } - return { - find(){ - return Validators.find(options) - }, - children: [ - { - find(val){ - return VotingPowerHistory.find( - {address:val.address}, - {sort:{height:-1}, limit:50} - ) - } - }, - { - find(val) { - return ValidatorRecords.find( - { address: val.address }, - { sort: {height: -1}, limit: Meteor.settings.public.uptimeWindow} - ); - } - } - ] - } -}); diff --git a/big-dipper-backend/imports/api/validators/validators.js b/big-dipper-backend/imports/api/validators/validators.js deleted file mode 100644 index fc8dde0e4c..0000000000 --- a/big-dipper-backend/imports/api/validators/validators.js +++ /dev/null @@ -1,28 +0,0 @@ -import { Mongo } from 'meteor/mongo'; -import { ValidatorRecords } from '../records/records.js'; -import { VotingPowerHistory } from '../voting-power/history.js'; - -export const Validators = new Mongo.Collection('validators'); - -Validators.helpers({ - firstSeen(){ - return ValidatorRecords.findOne({address:this.address}); - }, - history(){ - return VotingPowerHistory.find({address:this.address}, {sort:{height:-1}, limit:50}).fetch(); - } -}) -// Validators.helpers({ -// uptime(){ -// // console.log(this.address); -// let lastHundred = ValidatorRecords.find({address:this.address}, {sort:{height:-1}, limit:100}).fetch(); -// console.log(lastHundred); -// let uptime = 0; -// for (i in lastHundred){ -// if (lastHundred[i].exists){ -// uptime+=1; -// } -// } -// return uptime; -// } -// }) \ No newline at end of file diff --git a/big-dipper-backend/imports/api/voting-power/history.js b/big-dipper-backend/imports/api/voting-power/history.js deleted file mode 100644 index d101a59758..0000000000 --- a/big-dipper-backend/imports/api/voting-power/history.js +++ /dev/null @@ -1,3 +0,0 @@ -import { Mongo } from 'meteor/mongo'; - -export const VotingPowerHistory = new Mongo.Collection('voting_power_history'); diff --git a/big-dipper-backend/imports/api/voting-power/server/publications.js b/big-dipper-backend/imports/api/voting-power/server/publications.js deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/big-dipper-backend/imports/startup/both/index.js b/big-dipper-backend/imports/startup/both/index.js deleted file mode 100644 index 7297b2916e..0000000000 --- a/big-dipper-backend/imports/startup/both/index.js +++ /dev/null @@ -1,2 +0,0 @@ -// Import modules used by both client and server through a single index entry point -// e.g. useraccounts configuration file. diff --git a/big-dipper-backend/imports/startup/client/index.js b/big-dipper-backend/imports/startup/client/index.js deleted file mode 100644 index ca812ee5ba..0000000000 --- a/big-dipper-backend/imports/startup/client/index.js +++ /dev/null @@ -1,3 +0,0 @@ -// Import client startup through a single index entry point - -// import './routes.js'; diff --git a/big-dipper-backend/imports/startup/client/routes.js b/big-dipper-backend/imports/startup/client/routes.js deleted file mode 100644 index 8c8c4895fb..0000000000 --- a/big-dipper-backend/imports/startup/client/routes.js +++ /dev/null @@ -1,5 +0,0 @@ -// Import needed templates -// import '../../ui/layouts/body/body.js'; -// import '../../ui/pages/home/home.js'; -// import '../../ui/pages/not-found/not-found.js'; - diff --git a/big-dipper-backend/imports/startup/server/create-indexes.js b/big-dipper-backend/imports/startup/server/create-indexes.js deleted file mode 100644 index 9dbd5cad68..0000000000 --- a/big-dipper-backend/imports/startup/server/create-indexes.js +++ /dev/null @@ -1,70 +0,0 @@ -import { Blockscon } from '../../api/blocks/blocks.js'; -import { Proposals } from '../../api/proposals/proposals.js'; -import { Recipes } from '../../api/recipes/recipes.js'; -import { Nfts } from '../../api/nfts/nfts.js'; -import { Cookbooks } from '../../api/cookbooks/cookbooks.js'; -import { ValidatorRecords, Analytics, MissedBlocksStats, MissedBlocks, AverageData, AverageValidatorData } from '../../api/records/records.js'; -// import { Status } from '../../api/status/status.js'; -import { Transactions } from '../../api/transactions/transactions.js'; -import { ValidatorSets } from '../../api/validator-sets/validator-sets.js'; -import { Validators } from '../../api/validators/validators.js'; -import { VotingPowerHistory } from '../../api/voting-power/history.js'; -import { Evidences } from '../../api/evidences/evidences.js'; -import { CoinStats } from '../../api/coin-stats/coin-stats.js'; -import { ChainStates } from '../../api/chain/chain.js'; - -ChainStates.rawCollection().createIndex({ height: -1 }, { unique: true }); - -Blockscon.rawCollection().createIndex({ height: -1 }, { unique: true }); -Blockscon.rawCollection().createIndex({ proposerAddress: 1 }); - -Evidences.rawCollection().createIndex({ height: -1 }); - -Proposals.rawCollection().createIndex({ proposalId: 1 }, { unique: true }); - -Recipes.rawCollection().createIndex({ ID: "1", NO: -1 }, { unique: true }); - -Nfts.rawCollection().createIndex({ ID: "1", NO: -1 }, { unique: true }); - -Cookbooks.rawCollection().createIndex({ ID: "1", NO: -1 }, { unique: true }); - -ValidatorRecords.rawCollection().createIndex({ address: 1, height: -1 }, { unique: 1 }); -ValidatorRecords.rawCollection().createIndex({ address: 1, exists: 1, height: -1 }); - -Analytics.rawCollection().createIndex({ height: -1 }, { unique: true }) - -MissedBlocks.rawCollection().createIndex({ proposer: 1, voter: 1, updatedAt: -1 }); -MissedBlocks.rawCollection().createIndex({ proposer: 1, blockHeight: -1 }); -MissedBlocks.rawCollection().createIndex({ voter: 1, blockHeight: -1 }); -MissedBlocks.rawCollection().createIndex({ voter: 1, proposer: 1, blockHeight: -1 }, { unique: true }); - -MissedBlocksStats.rawCollection().createIndex({ proposer: 1 }); -MissedBlocksStats.rawCollection().createIndex({ voter: 1 }); -MissedBlocksStats.rawCollection().createIndex({ proposer: 1, voter: 1 }, { unique: true }); - -AverageData.rawCollection().createIndex({ type: 1, createdAt: -1 }, { unique: true }); -AverageValidatorData.rawCollection().createIndex({ proposerAddress: 1, createdAt: -1 }, { unique: true }); -// Status.rawCollection.createIndex({}) - -Transactions.rawCollection().createIndex({ txhash: 1 }, { unique: true }); -Transactions.rawCollection().createIndex({ height: -1 }); -Transactions.rawCollection().createIndex({ processed: 1 }); -// Transactions.rawCollection().createIndex({action:1}); -Transactions.rawCollection().createIndex({ "tx_response.logs.events.attributes.key": 1 }); -Transactions.rawCollection().createIndex({ "tx_response.logs.events.attributes.value": 1 }); -Transactions.rawCollection().createIndex({ - "tx.body.messages.delegator_address": 1, - "tx.body.messages.@type": 1, - "tx_response.code": 1 -}, { partialFilterExpression: { "tx_response.code": { $exists: true } } }) - -ValidatorSets.rawCollection().createIndex({ block_height: -1 }); - -Validators.rawCollection().createIndex({ address: 1 }, { unique: true, partialFilterExpression: { address: { $exists: true } } }); -// Validators.rawCollection().createIndex({consensusPubkey:1},{unique:true}); -Validators.rawCollection().createIndex({ "consensusPubkey.value": 1 }, { unique: true, partialFilterExpression: { "consensusPubkey.value": { $exists: true } } }); - -VotingPowerHistory.rawCollection().createIndex({ address: 1, height: -1 }); -VotingPowerHistory.rawCollection().createIndex({ type: 1 }); - -CoinStats.rawCollection().createIndex({ last_updated_at: -1 }, { unique: true }); \ No newline at end of file diff --git a/big-dipper-backend/imports/startup/server/genesis.js b/big-dipper-backend/imports/startup/server/genesis.js deleted file mode 100644 index 849d1d5cca..0000000000 --- a/big-dipper-backend/imports/startup/server/genesis.js +++ /dev/null @@ -1,7 +0,0 @@ -import { Validators } from '../../api/validators/validators.js'; -let validatorsCount = Validators.find({}).count(); - -if (validatorsCount == 0){ - console.log("no validators"); - -} \ No newline at end of file diff --git a/big-dipper-backend/imports/startup/server/index.js b/big-dipper-backend/imports/startup/server/index.js deleted file mode 100644 index 7d93b87626..0000000000 --- a/big-dipper-backend/imports/startup/server/index.js +++ /dev/null @@ -1,371 +0,0 @@ -// Import server startup through a single index entry point - -import './util.js'; -import './register-api.js'; -import './create-indexes.js'; -import queryString from 'querystring'; -import { HTTP } from 'meteor/http'; -import { onPageLoad } from 'meteor/server-render'; -import { Meteor } from 'meteor/meteor'; -import { sanitizeUrl } from '@braintree/sanitize-url'; -import { Transactions } from '/imports/api/transactions/transactions.js'; - -// import { ServerStyleSheet } from "styled-components" -import { Helmet } from 'react-helmet'; -// import App from '../../ui/App.jsx'; - -const IMAGE_WIDTH = 1200; -const IMAGE_HEIGHT = 800; - -var siteName = 'Big Dipper | Built on Pylons'; -var description = "Blockchain Development Tools For Digital Items & NFTs"; -var price = "No Price" -var picWidth = IMAGE_WIDTH; -var picHeight = IMAGE_HEIGHT; -const defaultImage = '/img/buy_icon.png'; -const defaultMetaTags = ` - - - - -`; - -const BROWSER_BOT = 0; -const SLACK_BOT = 1; -const FACEBOOK_BOT = 2; -const TWITTER_BOT = 3; -const INSTAGRAM_BOT = 4; -const DISCORD_BOT = 5; - -var botType = BROWSER_BOT; - -async function getRecipeData(recipe_id){ - selectedRecipe = await Recipes.findOne({ ID: recipe_id }); - return selectedRecipe -} - -Meteor.startup(() => { - - onPageLoad(sink => { - var url = sink.request.url.search; - if(url == null){ - sink.appendToHead(defaultMetaTags); - return; - } - const querys = new URLSearchParams(url) - var img = ''; - var selectedRecipe = null; - var recipes = null; - - - if (querys.get('recipe_id') !== null && querys.get('cookbook_id') !== null && querys.get('address') !== null ) { - - const recipe_id = sanitizeUrl(querys.get('recipe_id')); - const cookbook_id = sanitizeUrl(querys.get('cookbook_id')); - let recipesUrl = sanitizeUrl(`${Meteor.settings.remote.api}/pylons/recipe/${cookbook_id}/${recipe_id}`); - - try { - - let response = HTTP.get(recipesUrl); - selectedRecipe = JSON.parse(response.content).recipe; - - - } catch (e) { - console.log("Error in get recipe",e); - } - - if (selectedRecipe != undefined && selectedRecipe != null && selectedRecipe.entries.item_outputs.length > 0) { - const strings = selectedRecipe.entries.item_outputs[0].strings; - var priceValue = ""; - var priceCurrency = ""; - - - if (selectedRecipe?.coin_inputs?.[0]?.coins?.[0]) { - priceValue = selectedRecipe?.coin_inputs?.[0]?.coins?.[0]?.amount || "" ; - priceCurrency = selectedRecipe?.coin_inputs?.[0]?.coins?.[0]?.denom || ""; - } - - - if (strings != undefined && strings != null && strings.length > 0) { - if(strings != null) - { - for (j = 0; j < strings.length; j++) { - let key = strings[j].key; - let value = strings[j].value; - if(key == "NFT_URL" && value.indexOf('http') >= 0){ - img = value; - } - else if(key == "Description"){ - description = value; - } - else if(key == "Name"){ - siteName = value; - } - - } - } - let longs = selectedRecipe.entries.item_outputs[0].longs; - - if(longs != null) - { - for (j = 0; j < longs.length; j++) { - let key = longs[j].key; - let value = longs[j].weightRanges[0]?.lower; - if(key == "Width"){ - picWidth = value; - } - else if(key == "Height"){ - picHeight = value - } - } - picHeight = IMAGE_WIDTH * picHeight / picWidth; - picWidth = IMAGE_WIDTH; - } - } - - if(description != undefined && description != ""){ - if (description.length > 150) { - description = description.substring(0, 150) + '...'; - } - } - - if(priceCurrency == "USD"){ - price = Math.floor(priceValue / 100) + '.' + (priceValue % 100) + ' ' + priceCurrency; - } - else if (priceValue !== ""){ - let coins = Meteor.settings.public.coins; - let coin = coins?.length ? coins.find(coin => coin.denom.toLowerCase() === priceCurrency.toLowerCase()) : null; - if (coin) { - price = priceValue / coin.fraction + " " + coin.displayName; - } else { - price = priceValue + ' ' + priceCurrency; - } - } - - - - //slackbot-linkexpanding - //discordbot - //facebookbot - //twitterbot - const { headers, browser } = sink.request; - if(browser && browser.name.includes("slackbot")){ - botType = SLACK_BOT; - } - else if(browser && browser.name.includes("facebookbot")){ - botType = FACEBOOK_BOT; - } - else if(browser && browser.name.includes("twitterbot")){ - botType = TWITTER_BOT; - } - else if(browser && browser.name.includes("discordbot")){ - botType = DISCORD_BOT; - } - else{ - botType = BROWSER_BOT; - } - - if(botType == TWITTER_BOT){ - description = description + "

" + price + "

"; - } - else if(botType == FACEBOOK_BOT){ - siteName = siteName + "

" + price + "

"; - } - else if(botType != SLACK_BOT){ - description = price !== "No Price" ? description + "\nPrice: " + price : description; - } - - if (selectedRecipe.entries != null) { - const itemoutputs = selectedRecipe.entries.item_outputs; - if (itemoutputs.length > 0) { - let longs = itemoutputs[0].Longs; - if(longs != null) - { - for (i = 0; i < longs.length; i++) { - let weightRanges = longs[i].weightRanges; - if(longs[i].Key == "Width"){ - if(weightRanges != null){ - picWidth = weightRanges[0].lower * weightRanges[0].weight; - } - } - else if(longs[i].Key == "Height"){ - if(weightRanges != null){ - picHeight = weightRanges[0].lower * weightRanges[0].weight; - } - } - } - picHeight = IMAGE_WIDTH * picHeight / picWidth; - picWidth = IMAGE_WIDTH; - } - - let strings = itemoutputs[0].strings; - for (i = 0; i < strings.length; i++) { - try { - var values = strings[i].value; - if (strings[i].key = "NFT_URL" && values.indexOf('http') >= 0) { - img = values; - break; - } - } catch (e) { - console.log('strings[i].Value', e) - break; - } - - } - } - } - - - const MetaTags = ` - - - - - - - - - - - - `; - - sink.appendToHead(MetaTags); - } - - - } - else if (querys.get('recipe_id') !== null) { - const recipe_id = sanitizeUrl(querys['recipe_id']); - const cookbook_id = sanitizeUrl(querys['cookbook_id']); - let recipesUrl = sanitizeUrl(`${Meteor.settings.remote.api}/pylons/recipe/${cookbook_id}/${recipe_id}`); - - try { - let response = HTTP.get(recipesUrl); - //selectedItem = JSON.parse(response.content).CompletedExecutions; - selectedRecipe = JSON.parse(response.content).Recipe; - - } catch (e) { - console.log(e); - } - - if (selectedRecipe != undefined && selectedRecipe != null && selectedRecipe.entries.item_outputs.length > 0) { - const strings = selectedRecipe.entries.item_outputs[0].strings; - var priceValue = ""; - var priceCurrency = ""; - if (selectedRecipe?.coin_inputs?.[0]?.coins?.[0]) { - priceValue = selectedRecipe?.coin_inputs?.[0]?.coins?.[0]?.amount || "" ; - priceCurrency = selectedRecipe?.coin_inputs?.[0]?.coins?.[0]?.denom || ""; - } - if (strings != undefined && strings != null && strings.length > 0) { - if(strings != null) - { - - for (j = 0; j < strings.length; j++) { - let key = strings[j].key; - let value = strings[j].value; - if(key == "NFT_URL" && value.indexOf('http') >= 0){ - img = value; - } - else if(key == "Description"){ - description = value; - } - else if(key == "Name"){ - siteName = value; - } - - } - } - let longs = selectedRecipe.entries.item_outputs[0].longs; - - if(longs != null) - { - for (j = 0; j < longs.length; j++) { - let key = longs[j].key; - let value = longs[j].weightRanges[0].lower; - if(key == "Width"){ - picWidth = value; - } - else if(key == "Height"){ - picHeight = value - } - } - picHeight = IMAGE_WIDTH * picHeight / picWidth; - picWidth = IMAGE_WIDTH; - } - } - - if(description != undefined && description != ""){ - if (description.length > 150) { - description = description.substring(0, 150) + '...'; - } - } - - if(priceCurrency == "USD"){ - price = Math.floor(priceValue / 100) + '.' + (priceValue % 100) + ' ' + priceCurrency; - } - else if (priceValue !== ""){ - let coins = Meteor.settings.public.coins; - let coin = coins?.length ? coins.find(coin => coin.denom.toLowerCase() === priceCurrency.toLowerCase()) : null; - if (coin) { - price = priceValue / coin.fraction + " " + coin.displayName; - } else { - price = priceValue + ' ' + priceCurrency; - } - } - //slackbot-linkexpanding - //discordbot - //facebookbot - //twitterbot - const { headers, browser } = sink.request; - if(browser && browser.name.includes("slackbot")){ - botType = SLACK_BOT; - } - else if(browser && browser.name.includes("facebookbot")){ - botType = FACEBOOK_BOT; - } - else if(browser && browser.name.includes("twitterbot")){ - botType = TWITTER_BOT; - } - else if(browser && browser.name.includes("discordbot")){ - botType = DISCORD_BOT; - } - else{ - botType = BROWSER_BOT; - } - - if(botType == TWITTER_BOT){ - description = description + "

" + price + "

"; - } - else if(botType == FACEBOOK_BOT){ - siteName = siteName + "

" + price + "

"; - } - else if(botType != SLACK_BOT){ - description = price !== "No Price" ? description + "\nPrice: " + price : description; - } - - - - const MetaTags = ` - - - - - - - - - - - - `; - - sink.appendToHead(MetaTags); - } - } - else - { - sink.appendToHead(defaultMetaTags); - } - }); -}); \ No newline at end of file diff --git a/big-dipper-backend/imports/startup/server/read-genesis.js b/big-dipper-backend/imports/startup/server/read-genesis.js deleted file mode 100644 index 83c63523d1..0000000000 --- a/big-dipper-backend/imports/startup/server/read-genesis.js +++ /dev/null @@ -1,4 +0,0 @@ -import { Blockscon } from '../../api/blocks/blocks.js'; - -let blocksCount = Blockscon.find({}).count(); -console.log(blocksCount); diff --git a/big-dipper-backend/imports/startup/server/register-api.js b/big-dipper-backend/imports/startup/server/register-api.js deleted file mode 100644 index ea84a2332c..0000000000 --- a/big-dipper-backend/imports/startup/server/register-api.js +++ /dev/null @@ -1,50 +0,0 @@ -// Register your apis here - -import "../../api/ledger/server/methods.js"; - -import "../../api/chain/server/methods.js"; -import "../../api/chain/server/publications.js"; - -import "../../api/blocks/server/methods.js"; -import "../../api/blocks/server/publications.js"; - -import "../../api/validators/server/methods.js"; -import "../../api/validators/server/publications.js"; - -import "../../api/records/server/methods.js"; -import "../../api/records/server/publications.js"; - -import "../../api/proposals/server/methods.js"; -import "../../api/proposals/server/publications.js"; - -import "../../api/recipes/server/methods.js"; -import "../../api/recipes/server/publications.js"; - -import "../../api/nfts/server/methods.js"; -import "../../api/nfts/server/publications.js"; - -import "../../api/cookbooks/server/methods.js"; -import "../../api/cookbooks/server/publications.js"; - -import "../../api/voting-power/server/publications.js"; - -import "../../api/transactions/server/methods.js"; -import "../../api/transactions/server/publications.js"; - -import "../../api/delegations/server/methods.js"; -import "../../api/delegations/server/publications.js"; - -import "../../api/status/server/publications.js"; - -import "../../api/accounts/server/methods.js"; - -import "../../api/coin-stats/server/methods.js"; - -import "../../api/analytics/server/methods.js"; -import "../../api/analytics/server/publications.js"; - -import "../../api/actions/server/methods.js"; -import "../../api/actions/server/publications.js"; - -import "../../api/fcmtoken/server/methods.js"; -import "../../api/notifications/server/methods"; diff --git a/big-dipper-backend/imports/startup/server/util.js b/big-dipper-backend/imports/startup/server/util.js deleted file mode 100644 index a71ce6db48..0000000000 --- a/big-dipper-backend/imports/startup/server/util.js +++ /dev/null @@ -1,125 +0,0 @@ -import {bech32} from 'bech32' -import { HTTP } from 'meteor/http'; -import * as cheerio from 'cheerio'; -import { tmhash } from 'tendermint/lib/hash' -import { sanitizeUrl } from '@braintree/sanitize-url'; - - -Meteor.methods({ - hexToBech32: function(address, prefix) { - let addressBuffer = Buffer.from(address, 'hex'); - // let buffer = Buffer.alloc(37) - // addressBuffer.copy(buffer); - return bech32.encode(prefix, bech32.toWords(addressBuffer)); - }, - pubkeyToBech32Old: function(pubkey, prefix) { - let buffer; - - try { - if (pubkey.type.indexOf("Ed25519") > 0){ - // '1624DE6420' is ed25519 pubkey prefix - let pubkeyAminoPrefix = Buffer.from('1624DE6420', 'hex'); - buffer = Buffer.alloc(37); - - pubkeyAminoPrefix.copy(buffer, 0) - Buffer.from(pubkey.value, 'base64').copy(buffer, pubkeyAminoPrefix.length) - } - else if (pubkey.type.indexOf("Secp256k1") > 0){ - // 'EB5AE98721' is secp256k1 pubkey prefix - let pubkeyAminoPrefix = Buffer.from('EB5AE98721', 'hex'); - buffer = Buffer.alloc(38); - - pubkeyAminoPrefix.copy(buffer, 0) - Buffer.from(pubkey.value, 'base64').copy(buffer, pubkeyAminoPrefix.length) - } - else { - console.log("Pubkey type not supported."); - return false; - } - - return bech32.encode(prefix, bech32.toWords(buffer)) - } - catch (e){ - console.log("Error converting from pubkey to bech32: %o\n %o", pubkey, e); - return false - } - }, - pubkeyToBech32: function(pubkey, prefix) { - let buffer; - - try { - if (pubkey["@type"].indexOf("ed25519") > 0){ - // '1624DE6420' is ed25519 pubkey prefix - let pubkeyAminoPrefix = Buffer.from('1624DE6420', 'hex'); - buffer = Buffer.alloc(37); - - pubkeyAminoPrefix.copy(buffer, 0) - Buffer.from(pubkey.key, 'base64').copy(buffer, pubkeyAminoPrefix.length) - } - else if (pubkey["@type"].indexOf("secp256k1") > 0){ - // 'EB5AE98721' is secp256k1 pubkey prefix - let pubkeyAminoPrefix = Buffer.from('EB5AE98721', 'hex'); - buffer = Buffer.alloc(38); - - pubkeyAminoPrefix.copy(buffer, 0) - Buffer.from(pubkey.key, 'base64').copy(buffer, pubkeyAminoPrefix.length) - } - else { - console.log("Pubkey type not supported."); - return false; - } - - return bech32.encode(prefix, bech32.toWords(buffer)) - } - catch (e){ - console.log("Error converting from pubkey to bech32: %o\n %o", pubkey, e); - return false - } - }, - bech32ToPubkey: function(pubkey, type) { - // type can only be either 'tendermint/PubKeySecp256k1' or 'tendermint/PubKeyEd25519' - let pubkeyAminoPrefix, buffer; - - try { - if (type.indexOf("ed25519") > 0){ - // '1624DE6420' is ed25519 pubkey prefix - pubkeyAminoPrefix = Buffer.from('1624DE6420', 'hex') - buffer = Buffer.from(bech32.fromWords(bech32.decode(pubkey).words)); - } - else if (type.indexOf("secp256k1") > 0){ - // 'EB5AE98721' is secp256k1 pubkey prefix - pubkeyAminoPrefix = Buffer.from('EB5AE98721', 'hex') - buffer = Buffer.from(bech32.fromWords(bech32.decode(pubkey).words)); - } - else { - console.log("Pubkey type not supported."); - return false; - } - - return buffer.slice(pubkeyAminoPrefix.length).toString('base64'); - } - catch (e){ - console.log("Error converting from bech32 to pubkey: %o\n %o", pubkey, e); - return false - } - }, - getAddressFromPubkey: function(pubkey){ - var bytes = Buffer.from(pubkey.key, 'base64'); - return tmhash(bytes).slice(0, 20).toString('hex').toUpperCase(); - }, - getDelegator: function(operatorAddr){ - let address = bech32.decode(operatorAddr); - return bech32.encode(Meteor.settings.public.bech32PrefixAccAddr, address.words); - }, - getKeybaseTeamPic: function(keybaseUrl){ - let teamPage = HTTP.get(sanitizeUrl(keybaseUrl)); - if (teamPage.statusCode == 200){ - let page = cheerio.load(teamPage.content); - return page(".kb-main-card img").attr('src'); - } - }, - getVersion: function(){ - const version = Assets.getText('version'); - return version ? version : 'beta' - } -}) diff --git a/big-dipper-backend/imports/startup/server/websocket.js b/big-dipper-backend/imports/startup/server/websocket.js deleted file mode 100644 index 2cd0197cec..0000000000 --- a/big-dipper-backend/imports/startup/server/websocket.js +++ /dev/null @@ -1,16 +0,0 @@ -// import WebSocket from 'ws'; - -// // var WebSocket = Npm.require("ws"); -// // console.log(WebSocket); -// WS = Meteor.settings.remote.ws; - -// let ws = new WebSocket(WS); - -// ws.on('open', () => { -// // console.log('connected'); -// // ws.send('{"jsonrpc": "2.0","method": "subscribe","id":"0","params":{"query":"tm.event=\'CompleteProposal\'"}}'); -// }); - -// ws.on('message', (data) => { -// console.log(data); -// }); \ No newline at end of file diff --git a/big-dipper-backend/package.json b/big-dipper-backend/package.json deleted file mode 100644 index ef5a80166f..0000000000 --- a/big-dipper-backend/package.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "name": "@forbole/big-dipper", - "private": true, - "engines": { - "node": ">=16.0.0" - }, - "scripts": { - "start": "meteor run", - "test": "meteor test --once --driver-package meteortesting:mocha", - "lint": "eslint --ext .jsx,.js --fix --ignore-pattern imports/ui/App.jsx imports/", - "lintdiff": "LIST=`git diff-index --name-only master | grep .*\\.js | grep -v json`; if [ \"$LIST\" ]; then eslint --ext .jsx,.js --ignore-pattern imports/ui/App.jsx $LIST; fi", - "pretest": "npm run lint --silent", - "genversion": "./scripts/genversion.sh" - }, - "dependencies": { - - "@babel/runtime": "^7.19.0", - "@braintree/sanitize-url": "^6.0.1", - "@babel/runtime": "^7.20.1", - "@braintree/sanitize-url": "^6.0.0", - "@google-cloud/storage": "^6.6.0", - "@google/model-viewer": "^2.0.2", - "@ledgerhq/hw-transport-web-ble": "^6.27.6", - "@ledgerhq/hw-transport-webusb": "^6.27.6", - "axios": "^1.1.3", - "babel-polyfill": "^6.26.0", - "bech32": "^2.0.0", - "bootstrap": "^5.2.2", - "bootstrap-less": "^3.3.8", - "bootswatch": "^5.2.2", - "chart.js": "^3.9.1", - "cheerio": "^1.0.0-rc.6", - "connect-route": "^0.1.5", - "crypto-js": "^4.1.1", - "d3": "^7.6.1", - "doc-head-extract": "^1.0.4", - "fibers": "^5.0.3", - "firebase-admin": "^11.2.0", - "jquery": "^3.6.1", - "js-sha256": "^0.9.0", - "ledger-cosmos-js": "^2.1.8", - "lodash": "^4.17.21", - "meteor-node-stubs": "^1.2.5", - "moment": "^2.29.4", - "moment-timezone": "^0.5.38", - "numbro": "^2.3.2", - "plottable": "^3.9.0", - "prop-types": "^15.7.2", - "react": "^16.14.0", - "react-3d-viewer": "^1.0.12", - "react-chartjs-2": "^4.0.1", - "react-dom": "^16.13.1", - "react-google-tag-manager": "^2.2.1", - "react-helmet": "^6.1.0", - "react-jazzicon": "^0.1.3", - "react-json-view": "^1.21.3", - "react-loadingg": "^1.7.2", - "react-pose": "^4.0.10", - "react-responsive-pagination": "^1.8.0", - "react-router-dom": "^6.4.3", - "react-showdown": "^2.3.1", - "react-sidebar": "^3.0.2", - "react-toastify": "^9.0.8", - "reactstrap": "^9.1.5", - "rollup": "^3.2.5", - "secp256k1": "^4.0.3", - "simpl-schema": "^3.0.1", - "styled-components": "^4.4.1", - "tendermint": "^5.0.2", - "tooltip.js": "^1.3.3", - "voca": "^1.4.0" - }, - "devDependencies": { - "babel-eslint": "^10.1.0", - "chai": "^4.3.7", - "eslint": "^5.16.0", - "eslint-config-airbnb": "^17.1.1", - "eslint-import-resolver-meteor": "^0.4.0", - "eslint-plugin-import": "^2.23.3", - "eslint-plugin-jsx-a11y": "^6.6.1", - "eslint-plugin-meteor": "^7.3.0", - "eslint-plugin-react": "^7.31.10" - } -} diff --git a/big-dipper-backend/private/README.md b/big-dipper-backend/private/README.md deleted file mode 100644 index 2071259f55..0000000000 --- a/big-dipper-backend/private/README.md +++ /dev/null @@ -1,3 +0,0 @@ -**private folder** - -All files inside a top-level directory called `private/` are only accessible from server code and can be loaded via the [`Assets`](http://docs.meteor.com/#/full/assets_getText) API. This can be used for private data files and any files that are in your project directory that you don't want to be accessible from the outside. diff --git a/big-dipper-backend/private/version b/big-dipper-backend/private/version deleted file mode 100644 index 4b9406e13b..0000000000 --- a/big-dipper-backend/private/version +++ /dev/null @@ -1 +0,0 @@ -v0.41.x-14.2 \ No newline at end of file diff --git a/big-dipper-backend/public/.well-known/apple-app-site-association b/big-dipper-backend/public/.well-known/apple-app-site-association deleted file mode 100644 index 43b3dc46a7..0000000000 --- a/big-dipper-backend/public/.well-known/apple-app-site-association +++ /dev/null @@ -1,14 +0,0 @@ -{ - "applinks": { - "details": [{ - "appIDs": ["QV67PMQ8H3.xyz.pylons.wallet"], - "components": [{ - "/": "*", - "comment": "" - }] - }] - }, - "webcredentials": { - "apps": ["QV67PMQ8H3.xyz.pylons.wallet"] - } -} \ No newline at end of file diff --git a/big-dipper-backend/public/.well-known/assetlinks.json b/big-dipper-backend/public/.well-known/assetlinks.json deleted file mode 100644 index bdad333952..0000000000 --- a/big-dipper-backend/public/.well-known/assetlinks.json +++ /dev/null @@ -1 +0,0 @@ -[{"relation":["delegate_permission/common.handle_all_urls"],"target":{"namespace":"android_app","package_name":"tech.pylons.wallet","sha256_cert_fingerprints":["8E:AA:A7:65:FE:DE:C2:65:DF:E5:A1:41:76:A4:BE:BC:F0:5C:9C:92:10:77:FA:8F:AD:BE:3F:7C:A2:C9:4B:6F","A9:F6:3A:9A:EA:6C:16:8D:C8:DE:51:2A:59:30:F4:3C:8B:2E:1E:F7:90:54:F4:D2:F4:C3:69:DC:B7:7E:2D:05"]}}] \ No newline at end of file diff --git a/big-dipper-backend/public/img/big-dipper-icon-light.svg b/big-dipper-backend/public/img/big-dipper-icon-light.svg deleted file mode 100644 index 42d675f3f9..0000000000 --- a/big-dipper-backend/public/img/big-dipper-icon-light.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/big-dipper-backend/public/img/big-dipper-logo-light.svg b/big-dipper-backend/public/img/big-dipper-logo-light.svg deleted file mode 100644 index 50a644fb0a..0000000000 --- a/big-dipper-backend/public/img/big-dipper-logo-light.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/big-dipper-backend/public/img/big-dipper.png b/big-dipper-backend/public/img/big-dipper.png deleted file mode 100644 index e8ee7dc978..0000000000 Binary files a/big-dipper-backend/public/img/big-dipper.png and /dev/null differ diff --git a/big-dipper-backend/public/img/bluetooth.svg b/big-dipper-backend/public/img/bluetooth.svg deleted file mode 100644 index 9540e1fc71..0000000000 --- a/big-dipper-backend/public/img/bluetooth.svg +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/big-dipper-backend/public/img/btc.svg b/big-dipper-backend/public/img/btc.svg deleted file mode 100644 index 0ef510187d..0000000000 --- a/big-dipper-backend/public/img/btc.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/big-dipper-backend/public/img/btnbg.png b/big-dipper-backend/public/img/btnbg.png deleted file mode 100644 index 311bbc0e9f..0000000000 Binary files a/big-dipper-backend/public/img/btnbg.png and /dev/null differ diff --git a/big-dipper-backend/public/img/buy_icon.png b/big-dipper-backend/public/img/buy_icon.png deleted file mode 100644 index ed93daa881..0000000000 Binary files a/big-dipper-backend/public/img/buy_icon.png and /dev/null differ diff --git a/big-dipper-backend/public/img/buybg.png b/big-dipper-backend/public/img/buybg.png deleted file mode 100644 index 1611605b98..0000000000 Binary files a/big-dipper-backend/public/img/buybg.png and /dev/null differ diff --git a/big-dipper-backend/public/img/check.svg b/big-dipper-backend/public/img/check.svg deleted file mode 100644 index 28bc6da1be..0000000000 --- a/big-dipper-backend/public/img/check.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/big-dipper-backend/public/img/detail.svg b/big-dipper-backend/public/img/detail.svg deleted file mode 100644 index d4d923019b..0000000000 --- a/big-dipper-backend/public/img/detail.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/big-dipper-backend/public/img/easel.png b/big-dipper-backend/public/img/easel.png deleted file mode 100644 index 40d73fdafb..0000000000 Binary files a/big-dipper-backend/public/img/easel.png and /dev/null differ diff --git a/big-dipper-backend/public/img/eeur.svg b/big-dipper-backend/public/img/eeur.svg deleted file mode 100644 index d2d5507794..0000000000 --- a/big-dipper-backend/public/img/eeur.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/big-dipper-backend/public/img/expand.svg b/big-dipper-backend/public/img/expand.svg deleted file mode 100644 index 8678427d0e..0000000000 --- a/big-dipper-backend/public/img/expand.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/big-dipper-backend/public/img/external.svg b/big-dipper-backend/public/img/external.svg deleted file mode 100644 index 3cd8632861..0000000000 --- a/big-dipper-backend/public/img/external.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/big-dipper-backend/public/img/eye.svg b/big-dipper-backend/public/img/eye.svg deleted file mode 100644 index dc1df3c36f..0000000000 --- a/big-dipper-backend/public/img/eye.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/big-dipper-backend/public/img/favicon.png b/big-dipper-backend/public/img/favicon.png deleted file mode 100644 index 40d73fdafb..0000000000 Binary files a/big-dipper-backend/public/img/favicon.png and /dev/null differ diff --git a/big-dipper-backend/public/img/frame.png b/big-dipper-backend/public/img/frame.png deleted file mode 100644 index d25a79d657..0000000000 Binary files a/big-dipper-backend/public/img/frame.png and /dev/null differ diff --git a/big-dipper-backend/public/img/googleapp.png b/big-dipper-backend/public/img/googleapp.png deleted file mode 100644 index 679cdbb34e..0000000000 Binary files a/big-dipper-backend/public/img/googleapp.png and /dev/null differ diff --git a/big-dipper-backend/public/img/history.svg b/big-dipper-backend/public/img/history.svg deleted file mode 100644 index 97fd774e9f..0000000000 --- a/big-dipper-backend/public/img/history.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/big-dipper-backend/public/img/ico_artwork.png b/big-dipper-backend/public/img/ico_artwork.png deleted file mode 100644 index d4936eeab4..0000000000 Binary files a/big-dipper-backend/public/img/ico_artwork.png and /dev/null differ diff --git a/big-dipper-backend/public/img/ico_battleresult.png b/big-dipper-backend/public/img/ico_battleresult.png deleted file mode 100644 index 3a0cc551e2..0000000000 Binary files a/big-dipper-backend/public/img/ico_battleresult.png and /dev/null differ diff --git a/big-dipper-backend/public/img/ico_constuction.png b/big-dipper-backend/public/img/ico_constuction.png deleted file mode 100644 index 88f2d7d8d7..0000000000 Binary files a/big-dipper-backend/public/img/ico_constuction.png and /dev/null differ diff --git a/big-dipper-backend/public/img/ico_quest.png b/big-dipper-backend/public/img/ico_quest.png deleted file mode 100644 index 6caf07c2cb..0000000000 Binary files a/big-dipper-backend/public/img/ico_quest.png and /dev/null differ diff --git a/big-dipper-backend/public/img/ico_sold.png b/big-dipper-backend/public/img/ico_sold.png deleted file mode 100644 index b51c523224..0000000000 Binary files a/big-dipper-backend/public/img/ico_sold.png and /dev/null differ diff --git a/big-dipper-backend/public/img/likes.svg b/big-dipper-backend/public/img/likes.svg deleted file mode 100644 index 5b7f830621..0000000000 --- a/big-dipper-backend/public/img/likes.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/big-dipper-backend/public/img/line.svg b/big-dipper-backend/public/img/line.svg deleted file mode 100644 index d082d59672..0000000000 --- a/big-dipper-backend/public/img/line.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/big-dipper-backend/public/img/minimize.svg b/big-dipper-backend/public/img/minimize.svg deleted file mode 100644 index 2fd327343a..0000000000 --- a/big-dipper-backend/public/img/minimize.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/big-dipper-backend/public/img/no-image.png b/big-dipper-backend/public/img/no-image.png deleted file mode 100644 index a180d5c59a..0000000000 Binary files a/big-dipper-backend/public/img/no-image.png and /dev/null differ diff --git a/big-dipper-backend/public/img/pylon_logo.svg b/big-dipper-backend/public/img/pylon_logo.svg deleted file mode 100644 index b11c0a14f7..0000000000 --- a/big-dipper-backend/public/img/pylon_logo.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/big-dipper-backend/public/img/pylons.svg b/big-dipper-backend/public/img/pylons.svg deleted file mode 100644 index 6e4e7733dd..0000000000 --- a/big-dipper-backend/public/img/pylons.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/big-dipper-backend/public/img/trophy.svg b/big-dipper-backend/public/img/trophy.svg deleted file mode 100644 index 972f223a3a..0000000000 --- a/big-dipper-backend/public/img/trophy.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/big-dipper-backend/public/img/uatom.svg b/big-dipper-backend/public/img/uatom.svg deleted file mode 100644 index 29c934ec3c..0000000000 --- a/big-dipper-backend/public/img/uatom.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/big-dipper-backend/public/img/urun.svg b/big-dipper-backend/public/img/urun.svg deleted file mode 100644 index ab6800ac71..0000000000 --- a/big-dipper-backend/public/img/urun.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/big-dipper-backend/public/img/usb.svg b/big-dipper-backend/public/img/usb.svg deleted file mode 100644 index 5363c5ec05..0000000000 --- a/big-dipper-backend/public/img/usb.svg +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/big-dipper-backend/public/img/ust.svg b/big-dipper-backend/public/img/ust.svg deleted file mode 100644 index ee6be05a50..0000000000 --- a/big-dipper-backend/public/img/ust.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/big-dipper-backend/public/img/ustripeusd.svg b/big-dipper-backend/public/img/ustripeusd.svg deleted file mode 100644 index 5a8e5a3bb6..0000000000 --- a/big-dipper-backend/public/img/ustripeusd.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/big-dipper-backend/public/img/wallet.png b/big-dipper-backend/public/img/wallet.png deleted file mode 100644 index e6c2f28000..0000000000 Binary files a/big-dipper-backend/public/img/wallet.png and /dev/null differ diff --git a/big-dipper-backend/scripts/build.sh b/big-dipper-backend/scripts/build.sh deleted file mode 100644 index c0ee4a7a91..0000000000 --- a/big-dipper-backend/scripts/build.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -pwd = $(pwd) -cd app -echo "Pre Builing node_modules production..." -meteor npm install --allow-superuser -echo "Builing for production..." -meteor build ../output/ --architecture os.linux.x86_64 --server-only --allow-superuser -cd ../output -tar -xf *.tar.gz -cd $pwd \ No newline at end of file diff --git a/big-dipper-backend/scripts/genversion.sh b/big-dipper-backend/scripts/genversion.sh deleted file mode 100644 index 6bf90b285f..0000000000 --- a/big-dipper-backend/scripts/genversion.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -echo "Generating version file" -export TAG=$(git describe --tag) -echo $TAG | tee private/version -git add private/version -git commit -am "add version $TAG" diff --git a/big-dipper-backend/scripts/post_build.sh b/big-dipper-backend/scripts/post_build.sh deleted file mode 100644 index af1aa34d9b..0000000000 --- a/big-dipper-backend/scripts/post_build.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -echo "Builing node_modules production..." -cd app/bundle/programs/server -npm install -cd ../.. diff --git a/big-dipper-backend/scss-config.json b/big-dipper-backend/scss-config.json deleted file mode 100644 index 00c4cd4f73..0000000000 --- a/big-dipper-backend/scss-config.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "includePaths": [ - "{}/node_modules/bootswatch/dist/", - "{}/node_modules/bootstrap/scss/" - ] -} \ No newline at end of file diff --git a/big-dipper-backend/server/main.js b/big-dipper-backend/server/main.js deleted file mode 100644 index c3e79aa589..0000000000 --- a/big-dipper-backend/server/main.js +++ /dev/null @@ -1,376 +0,0 @@ -// Server entry point, imports all server code - -import '/imports/startup/server'; -import '/imports/startup/both'; -// import moment from 'moment'; -// import '/imports/api/blocks/blocks.js'; - -SYNCING = false; -TXSYNCING = false; -COUNTMISSEDBLOCKS = false; -COUNTMISSEDBLOCKSSTATS = false; -RPC = Meteor.settings.remote.rpc; -API = Meteor.settings.remote.api; - -timerBlocks = 0; -timerTransactions = 0; -timerChain = 0; -timerConsensus = 0; -timerProposal = 0; -timerProposalsResults = 0; -timerRecipe = 0; -timerRecipesResults = 0; -timerCookbook = 0; -timerCookbooksResults = 0; -timerMissedBlock = 0; -timerDelegation = 0; -timerAggregate = 0; -timerFetchKeybase = 0; -timersendnunsettledotifications = 0 - -const DEFAULTSETTINGS = '/settings.json'; - -updateChainStatus = () => { - Meteor.call('chain.updateStatus', (error, result) => { - if (error) { - console.log("updateStatus: %o", error); - } else { - console.log("updateStatus: %o", result); - } - }) -} - -updateBlock = () => { - Meteor.call('blocks.blocksUpdate', (error, result) => { - if (error) { - console.log("updateBlocks: %o", error); - } else { - console.log("updateBlocks: %o", result); - } - }) -} - -updateTransactions = () => { - Meteor.call('Transactions.updateTransactions', (error, result) => { - if (error) { - console.log("updateTransactions: %o", error); - } else { - console.log("updateTransactions: %o", result); - } - }) -} - -upsertSales = () => { - Meteor.call('Analytics.upsertSales', (error, result) => { - if (error) { - console.log("Upsert Sales Failed: %o", error); - } else { - console.log("Upsert Sales Success"); - } - }) -} - -upsertListings = () => { - Meteor.call('Analytics.upsertListings', (error, result) => { - if (error) { - console.log("Upsert Listing Failed: %o", error); - } else { - console.log("Upsert Listing Success"); - } - }) -} - -getConsensusState = () => { - Meteor.call('chain.getConsensusState', (error, result) => { - if (error) { - console.log("get consensus: %o", error) - } - }) -} - -getRecipes = () => { - Meteor.call('recipes.getRecipes', (error, result) => { - if (error) { - console.log("get recipe: %o", error); - } - if (result) { - console.log("get recipe: true"); - } - }); -} - -getRecipesResults = () => { - Meteor.call('recipes.getRecipeResults', (error, result) => { - if (error) { - console.log("get recipes result: %o", error); - } - if (result) { - console.log("get recipes result: %o", result); - } - }); -} - -getNfts = () => { - Meteor.call('nfts.getNfts', (error, result) => { - if (error) { - console.log("get nft: %o", error); - } - if (result) { - console.log("get nft: %o", result); - } - }); -} - -getNftsResults = () => { - Meteor.call('nfts.getNftResults', (error, result) => { - if (error) { - console.log("get nfts result: %o", error); - } - if (result) { - console.log("get nfts result: %o", result); - } - }); -} - -getCookbooks = () => { - Meteor.call('cookbooks.getCookbooks', (error, result) => { - if (error) { - console.log("get cookbook: %o", error); - } - if (result) { - console.log("get cookbook: %o", result); - } - }); -} - -getCookbooksResults = () => { - Meteor.call('cookbooks.getCookbookResults', (error, result) => { - if (error) { - console.log("get getCookbookResults result: %o", error); - } - if (result) { - console.log("get getCookbookResults result: %o", result); - } - }); -} - -getProposals = () => { - Meteor.call('proposals.getProposals', (error, result) => { - if (error) { - console.log("get proposal: %o", error); - } - if (result) { - console.log("get proposal: %o", result); - } - }); -} - -getProposalsResults = () => { - Meteor.call('proposals.getProposalResults', (error, result) => { - if (error) { - console.log("get proposals result: %o", error); - } - if (result) { - console.log("get proposals result: %o", result); - } - }); -} - -updateMissedBlocks = () => { - Meteor.call('ValidatorRecords.calculateMissedBlocks', (error, result) => { - if (error) { - console.log("missed blocks error: %o", error) - } - if (result) { - console.log("missed blocks ok: %o", result); - } - }); -} - -fetchKeybase = () => { - Meteor.call('Validators.fetchKeybase', (error, result) => { - if (error) { - console.log("Error when fetching Keybase" + error) - } - if (result) { - console.log("Keybase profile_url updated ", result); - } - }); -} - -getDelegations = () => { - Meteor.call('delegations.getDelegations', (error, result) => { - if (error) { - console.log("get delegations error: %o", error) - } else { - console.log("get delegations ok: %o", result) - } - }); -} - -sendUnsettledNotifications = () => { - Meteor.call("Notifications.sendPushNotifications", (error, res) => { - if (error) { - console.log("Error Sending Notifications",error); - } else { - console.log("Notification have been sent ",res,error); - } - }); - }; - - -aggregateMinutely = () => { - // doing something every min - Meteor.call('Analytics.aggregateBlockTimeAndVotingPower', "m", (error, result) => { - if (error) { - console.log("aggregate minutely block time error: %o", error) - } else { - console.log("aggregate minutely block time ok: %o", result) - } - }); - - Meteor.call('coinStats.getCoinStats', (error, result) => { - if (error) { - console.log("get coin stats error: %o", error); - } else { - console.log("get coin stats ok: %o", result) - } - }); -} - -aggregateHourly = () => { - // doing something every hour - Meteor.call('Analytics.aggregateBlockTimeAndVotingPower', "h", (error, result) => { - if (error) { - console.log("aggregate hourly block time error: %o", error) - } else { - console.log("aggregate hourly block time ok: %o", result) - } - }); -} - -aggregateDaily = () => { - // doing somthing every day - Meteor.call('Analytics.aggregateBlockTimeAndVotingPower', "d", (error, result) => { - if (error) { - console.log("aggregate daily block time error: %o", error) - } else { - console.log("aggregate daily block time ok: %o", result) - } - }); - - Meteor.call('Analytics.aggregateValidatorDailyBlockTime', (error, result) => { - if (error) { - console.log("aggregate validators block time error: %o", error) - } else { - console.log("aggregate validators block time ok: %o", result); - } - }) -} - - - -Meteor.startup(async function() { - if (Meteor.isDevelopment) { - process.env.NODE_TLS_REJECT_UNAUTHORIZED = 1; - import DEFAULTSETTINGSJSON from '../settings.json' - Object.keys(DEFAULTSETTINGSJSON).forEach((key) => { - if(Meteor.settings[key] == undefined) { - console.warn(`CHECK SETTINGS JSON: ${key} is missing from settings`) - Meteor.settings[key] = {}; - } - Object.keys(DEFAULTSETTINGSJSON[key]).forEach((param) => { - if (Meteor.settings[key][param] == undefined) { - console.warn(`CHECK SETTINGS JSON: ${key}.${param} is missing from settings`) - Meteor.settings[key][param] = DEFAULTSETTINGSJSON[key][param] - } - }) - }) - } - - if (Meteor.settings.debug.startTimer) { - - timersendnunsettledotifications = Meteor.setInterval(function () { - sendUnsettledNotifications(); - }, Meteor.settings.params.collectNotificationsInterval); - - timerConsensus = Meteor.setInterval(function() { - getConsensusState(); - }, Meteor.settings.params.consensusInterval); - - timerBlocks = Meteor.setInterval(function() { - updateBlock(); - }, Meteor.settings.params.blockInterval); - - timerTransactions = Meteor.setInterval(function() { - updateTransactions(); - upsertSales(); - upsertListings(); - }, Meteor.settings.params.transactionsInterval); - - timerChain = Meteor.setInterval(function() { - updateChainStatus(); - }, Meteor.settings.params.statusInterval); - - if (Meteor.settings.public.modules.gov) { - timerProposal = Meteor.setInterval(function() { - getProposals(); - }, Meteor.settings.params.proposalInterval); - - timerProposalsResults = Meteor.setInterval(function() { - getProposalsResults(); - }, Meteor.settings.params.proposalInterval); - } - - timerRecipe = Meteor.setInterval(function() { - getRecipes(); - }, Meteor.settings.params.recipeInterval); - - // timerRecipesResults = Meteor.setInterval(function() { - // getRecipesResults(); - // }, Meteor.settings.params.recipeInterval); - - timerNft = Meteor.setInterval(function() { - getNfts(); - }, Meteor.settings.params.nftInterval); - - // timerNftsResults = Meteor.setInterval(function() { - // getNftsResults(); - // }, Meteor.settings.params.nftInterval); - - timerCookbook = Meteor.setInterval(function() { - getCookbooks(); - }, Meteor.settings.params.cookbookInterval); - - // timerCookbooksResults = Meteor.setInterval(function() { - // getCookbooksResults(); - // }, Meteor.settings.params.cookbookInterval); - - timerMissedBlock = Meteor.setInterval(function() { - updateMissedBlocks(); - }, Meteor.settings.params.missedBlocksInterval); - - timerFetchKeybase = Meteor.setInterval(function() { - fetchKeybase(); - }, Meteor.settings.params.keybaseFetchingInterval); - - // timerDelegation = Meteor.setInterval(function(){ - // getDelegations(); - // }, Meteor.settings.params.delegationInterval); - - timerAggregate = Meteor.setInterval(function() { - let now = new Date(); - if ((now.getUTCSeconds() == 0)) { - aggregateMinutely(); - } - - if ((now.getUTCMinutes() == 0) && (now.getUTCSeconds() == 0)) { - aggregateHourly(); - } - - if ((now.getUTCHours() == 0) && (now.getUTCMinutes() == 0) && (now.getUTCSeconds() == 0)) { - aggregateDaily(); - } - }, 1000) - } -}); \ No newline at end of file diff --git a/big-dipper-backend/settings.json b/big-dipper-backend/settings.json deleted file mode 100644 index b622d29702..0000000000 --- a/big-dipper-backend/settings.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "public": { - "chainName": "Pylons", - "chainId": "pylons-testnet-3", - "gtm": "{Add your Google Tag Manager ID here}", - "slashingWindow": 10000, - "uptimeWindow": 250, - "initialPageSize": 30, - "secp256k1": false, - "bech32PrefixAccAddr": "pylo", - "bech32PrefixAccPub": "pylopub", - "bech32PrefixValAddr": "pylovaloper", - "bech32PrefixValPub": "pylovaloperpub", - "bech32PrefixConsAddr": "pylovalcons", - "bech32PrefixConsPub": "pylovalconspub", - "bondDenom": "uatom", - "powerReduction": 1000000, - "dynamicLink": { - "apn": "tech.pylons.wallet", - "ibi": "xyz.pylons.wallet", - "isi": "1598732789", - "oflPlay": "https://play.google.com/store/apps/details?id=tech.pylons.wallet&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1", - "oflIOS": "https://apps.apple.com/us/app/pylons/id1598732789" - }, - "coins": [ - { - "denom": "uatom", - "displayName": "ATOM", - "fraction": 1000000 - }, - { - "denom": "ubedrock", - "displayName": "UBEDROCK", - "fraction": 1000000 - }, - { - "denom": "umuon", - "displayName": "MUON", - "fraction": 1000000 - }, - { - "denom": "ustripeusd", - "displayName": "STRIPEUSD", - "fraction": 1000000 - }, - { - "denom": "ujunox", - "displayName": "JUNO", - "fraction": 1000000 - }, - { - "denom": "upylon", - "displayName": "PYLON", - "fraction": 1000000 - }, - { - "denom": "uusd", - "displayName": "UST", - "fraction": 1000000 - }, - { - "denom": "urun", - "displayName": "RUN", - "fraction": 1000000 - }, - { - "denom": "ujunox", - "displayName": "JUNO", - "fraction": 1000000 - }, - { - "denom": "eeur", - "displayName": "EEUR", - "fraction": 1000000 - }, - { - "denom": "weth-wei", - "displayName": "WETH", - "fraction": 1000000 - } - ], - "ledger": { - "coinType": 118, - "appName": "Cosmos", - "appVersion": "2.16.0", - "gasPrice": 0.02 - }, - "modules": { - "bank": true, - "supply": true, - "minting": false, - "gov": true, - "distribution": false - }, - "banners": false, - "baseURL": "https://wallet.pylons.tech", - "cosmos_sdk": 43 - }, - "remote": { - "rpc": "https://rpc.pylons.tech", - "api": "https://lcd.pylons.tech" - }, - "debug": { - "startTimer": true - }, - "params": { - "startHeight": 0, - "defaultBlockTime": 10000, - "validatorUpdateWindow": 300, - "blockInterval": 10000, - "transactionsInterval": 1000, - "keybaseFetchingInterval": 1000000, - "consensusInterval": 1000, - "statusInterval": 7500, - "signingInfoInterval": 1800000, - "proposalInterval": 5000, - "recipeInterval": 5000, - "nftInterval": 5000, - "cookbookInterval": 5000, - "missedBlocksInterval": 60000, - "delegationInterval": 900000, - "sendNotifications": 0, - "collectNotificationsInterval": 10000 - } -} \ No newline at end of file diff --git a/big-dipper-backend/yarn.lock b/big-dipper-backend/yarn.lock deleted file mode 100644 index 16689dda27..0000000000 --- a/big-dipper-backend/yarn.lock +++ /dev/null @@ -1,5226 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/generator@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz" - dependencies: - "@babel/types" "^7.18.9" - "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.16.0": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-environment-visitor@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" - -"@babel/helper-function-name@^7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz" - dependencies: - "@babel/template" "^7.18.6" - "@babel/types" "^7.18.9" - -"@babel/helper-hoist-variables@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.0": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-split-export-declaration@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-validator-identifier@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz" - -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.18.6", "@babel/parser@^7.18.9", "@babel/parser@^7.7.0": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz" - -"@babel/parser@^7.9.4": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.0.tgz#b26133c888da4d79b0d3edcf42677bcadc783046" - -"@babel/runtime-corejs3@^7.10.2": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.9.tgz" - dependencies: - core-js-pure "^3.20.2" - regenerator-runtime "^0.13.4" - -"@babel/runtime@>=7.0.0-beta.56", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.9", "@babel/runtime@^7.20.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.1.tgz#1148bb33ab252b165a06698fde7576092a78b4a9" - dependencies: - regenerator-runtime "^0.13.10" - -"@babel/template@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz" - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.6" - "@babel/types" "^7.18.6" - -"@babel/traverse@^7.0.0", "@babel/traverse@^7.7.0": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz" - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.9" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.18.9" - "@babel/types" "^7.18.9" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.7.0": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz" - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - to-fast-properties "^2.0.0" - -"@braintree/sanitize-url@^6.0.0": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.1.tgz#45ff061b9ded1c6e4474b33b336ebb1b986b825a" - -"@emotion/is-prop-valid@^0.7.3": - version "0.7.3" - resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.7.3.tgz" - dependencies: - "@emotion/memoize" "0.7.1" - -"@emotion/is-prop-valid@^0.8.1": - version "0.8.8" - resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz" - dependencies: - "@emotion/memoize" "0.7.4" - -"@emotion/memoize@0.7.1": - version "0.7.1" - resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.1.tgz" - -"@emotion/memoize@0.7.4": - version "0.7.4" - resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz" - -"@emotion/unitless@^0.7.0": - version "0.7.5" - resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz" - -"@fastify/busboy@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@fastify/busboy/-/busboy-1.1.0.tgz" - dependencies: - text-decoding "^1.0.0" - -"@firebase/app-types@0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.8.0.tgz#50a539a0a20bef8c50494d0615592fe2a384851f" - -"@firebase/auth-interop-types@0.1.6": - version "0.1.6" - resolved "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.6.tgz" - -"@firebase/component@0.5.20": - version "0.5.20" - resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.5.20.tgz#52165b5f7d25c4ac9c679e4e48d6f7fa7bf722cf" - dependencies: - "@firebase/util" "1.7.2" - tslib "^2.1.0" - -"@firebase/database-compat@^0.2.6": - version "0.2.9" - resolved "https://registry.yarnpkg.com/@firebase/database-compat/-/database-compat-0.2.9.tgz#a1b4ecf94e11eadfc21aa48121b3ba7ea18a57ae" - dependencies: - "@firebase/component" "0.5.20" - "@firebase/database" "0.13.9" - "@firebase/database-types" "0.9.16" - "@firebase/logger" "0.3.3" - "@firebase/util" "1.7.2" - tslib "^2.1.0" - -"@firebase/database-types@0.9.16", "@firebase/database-types@^0.9.13": - version "0.9.16" - resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.9.16.tgz#4f7f612c00346641a641ac689005857190e91ebc" - dependencies: - "@firebase/app-types" "0.8.0" - "@firebase/util" "1.7.2" - -"@firebase/database@0.13.9": - version "0.13.9" - resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.13.9.tgz#8cf8c77fb837ed1a6fa85565ac8c28864b0957fb" - dependencies: - "@firebase/auth-interop-types" "0.1.6" - "@firebase/component" "0.5.20" - "@firebase/logger" "0.3.3" - "@firebase/util" "1.7.2" - faye-websocket "0.11.4" - tslib "^2.1.0" - -"@firebase/logger@0.3.3": - version "0.3.3" - resolved "https://registry.npmjs.org/@firebase/logger/-/logger-0.3.3.tgz" - dependencies: - tslib "^2.1.0" - -"@firebase/util@1.7.2": - version "1.7.2" - resolved "https://registry.yarnpkg.com/@firebase/util/-/util-1.7.2.tgz#dbdb259f141b5025a7faaaa38e2ea5df0be36ff5" - dependencies: - tslib "^2.1.0" - -"@google-cloud/firestore@^6.4.0": - version "6.4.1" - resolved "https://registry.yarnpkg.com/@google-cloud/firestore/-/firestore-6.4.1.tgz#3cd32ffb10a563a9c3c91236b51e49e4cd088393" - dependencies: - fast-deep-equal "^3.1.1" - functional-red-black-tree "^1.0.1" - google-gax "^3.5.1" - protobufjs "^7.0.0" - -"@google-cloud/paginator@^3.0.7": - version "3.0.7" - resolved "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.7.tgz" - dependencies: - arrify "^2.0.0" - extend "^3.0.2" - -"@google-cloud/projectify@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-3.0.0.tgz" - -"@google-cloud/promisify@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-3.0.0.tgz" - -"@google-cloud/storage@^6.5.2", "@google-cloud/storage@^6.6.0": - version "6.6.0" - resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-6.6.0.tgz#01f64bf706acc98dc2787e490afe878ad9f64250" - dependencies: - "@google-cloud/paginator" "^3.0.7" - "@google-cloud/projectify" "^3.0.0" - "@google-cloud/promisify" "^3.0.0" - abort-controller "^3.0.0" - async-retry "^1.3.3" - compressible "^2.0.12" - duplexify "^4.0.0" - ent "^2.2.0" - extend "^3.0.2" - gaxios "^5.0.0" - google-auth-library "^8.0.1" - mime "^3.0.0" - mime-types "^2.0.8" - p-limit "^3.0.1" - retry-request "^5.0.0" - teeny-request "^8.0.0" - uuid "^8.0.0" - -"@google/model-viewer@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@google/model-viewer/-/model-viewer-2.0.2.tgz#1d1c60240d3ea1e7853875a9110c8e73d6276314" - dependencies: - lit "^2.2.3" - three "^0.144.0" - -"@grpc/grpc-js@~1.7.0": - version "1.7.3" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.7.3.tgz#f2ea79f65e31622d7f86d4b4c9ae38f13ccab99a" - dependencies: - "@grpc/proto-loader" "^0.7.0" - "@types/node" ">=12.12.47" - -"@grpc/proto-loader@^0.7.0": - version "0.7.0" - resolved "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.0.tgz" - dependencies: - "@types/long" "^4.0.1" - lodash.camelcase "^4.3.0" - long "^4.0.0" - protobufjs "^7.0.0" - yargs "^16.2.0" - -"@jridgewell/gen-mapping@^0.3.2": - version "0.3.2" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@^3.0.3": - version "3.1.0" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" - -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" - -"@jridgewell/trace-mapping@^0.3.9": - version "0.3.14" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz" - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@ledgerhq/devices@^5.51.1": - version "5.51.1" - resolved "https://registry.npmjs.org/@ledgerhq/devices/-/devices-5.51.1.tgz" - dependencies: - "@ledgerhq/errors" "^5.50.0" - "@ledgerhq/logs" "^5.50.0" - rxjs "6" - semver "^7.3.5" - -"@ledgerhq/devices@^7.0.3": - version "7.0.3" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-7.0.3.tgz#bdd7e8ce078399fe644067a7e1ca9a9d2e249c02" - dependencies: - "@ledgerhq/errors" "^6.11.1" - "@ledgerhq/logs" "^6.10.1" - rxjs "6" - semver "^7.3.5" - -"@ledgerhq/errors@^5.50.0": - version "5.50.0" - resolved "https://registry.npmjs.org/@ledgerhq/errors/-/errors-5.50.0.tgz" - -"@ledgerhq/errors@^6.11.1": - version "6.11.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.11.1.tgz#a8a81bda6d28ac43c757e109b1ff079ddeec54a6" - -"@ledgerhq/hw-transport-web-ble@^6.27.6": - version "6.27.6" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-web-ble/-/hw-transport-web-ble-6.27.6.tgz#6daadd40cf97a440bb794b5e3bacb1e6716ddbd4" - dependencies: - "@ledgerhq/devices" "^7.0.3" - "@ledgerhq/errors" "^6.11.1" - "@ledgerhq/hw-transport" "^6.27.6" - "@ledgerhq/logs" "^6.10.1" - rxjs "6" - -"@ledgerhq/hw-transport-webusb@^6.27.6": - version "6.27.6" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-6.27.6.tgz#8c4b5f96419511e3d8159e01baefd52891a91ae1" - dependencies: - "@ledgerhq/devices" "^7.0.3" - "@ledgerhq/errors" "^6.11.1" - "@ledgerhq/hw-transport" "^6.27.6" - "@ledgerhq/logs" "^6.10.1" - -"@ledgerhq/hw-transport@^5.25.0": - version "5.51.1" - resolved "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-5.51.1.tgz" - dependencies: - "@ledgerhq/devices" "^5.51.1" - "@ledgerhq/errors" "^5.50.0" - events "^3.3.0" - -"@ledgerhq/hw-transport@^6.27.6": - version "6.27.6" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.27.6.tgz#87f886591bad047c18e76920519aceb9d844667b" - dependencies: - "@ledgerhq/devices" "^7.0.3" - "@ledgerhq/errors" "^6.11.1" - events "^3.3.0" - -"@ledgerhq/logs@^5.50.0": - version "5.50.0" - resolved "https://registry.npmjs.org/@ledgerhq/logs/-/logs-5.50.0.tgz" - -"@ledgerhq/logs@^6.10.1": - version "6.10.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-6.10.1.tgz#5bd16082261d7364eabb511c788f00937dac588d" - -"@lit/reactive-element@^1.3.0": - version "1.3.3" - resolved "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.3.3.tgz" - -"@panva/asn1.js@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@panva/asn1.js/-/asn1.js-1.0.0.tgz#dd55ae7b8129e02049f009408b97c61ccf9032f6" - -"@popmotion/easing@^1.0.1": - version "1.0.2" - resolved "https://registry.npmjs.org/@popmotion/easing/-/easing-1.0.2.tgz" - -"@popmotion/popcorn@^0.4.4": - version "0.4.4" - resolved "https://registry.npmjs.org/@popmotion/popcorn/-/popcorn-0.4.4.tgz" - dependencies: - "@popmotion/easing" "^1.0.1" - framesync "^4.0.1" - hey-listen "^1.0.8" - style-value-types "^3.1.7" - tslib "^1.10.0" - -"@popperjs/core@^2.6.0": - version "2.11.5" - resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz" - -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz" - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz" - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz" - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz" - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz" - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz" - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz" - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz" - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz" - -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz" - -"@remix-run/router@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.0.3.tgz#953b88c20ea00d0eddaffdc1b115c08474aa295d" - -"@tootallnate/once@2": - version "2.0.0" - resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" - -"@types/body-parser@*": - version "1.19.2" - resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz" - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/connect@*": - version "3.4.35" - resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" - dependencies: - "@types/node" "*" - -"@types/d3-array@^1": - version "1.2.9" - resolved "https://registry.npmjs.org/@types/d3-array/-/d3-array-1.2.9.tgz" - -"@types/d3-axis@^1": - version "1.0.16" - resolved "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-1.0.16.tgz" - dependencies: - "@types/d3-selection" "^1" - -"@types/d3-brush@^1": - version "1.1.5" - resolved "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-1.1.5.tgz" - dependencies: - "@types/d3-selection" "^1" - -"@types/d3-chord@^1": - version "1.0.11" - resolved "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-1.0.11.tgz" - -"@types/d3-collection@*": - version "1.0.10" - resolved "https://registry.npmjs.org/@types/d3-collection/-/d3-collection-1.0.10.tgz" - -"@types/d3-color@^1": - version "1.4.2" - resolved "https://registry.npmjs.org/@types/d3-color/-/d3-color-1.4.2.tgz" - -"@types/d3-dispatch@^1": - version "1.0.9" - resolved "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-1.0.9.tgz" - -"@types/d3-drag@^1": - version "1.2.5" - resolved "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-1.2.5.tgz" - dependencies: - "@types/d3-selection" "^1" - -"@types/d3-dsv@^1": - version "1.2.1" - resolved "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-1.2.1.tgz" - -"@types/d3-ease@^1": - version "1.0.11" - resolved "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-1.0.11.tgz" - -"@types/d3-force@^1": - version "1.2.4" - resolved "https://registry.npmjs.org/@types/d3-force/-/d3-force-1.2.4.tgz" - -"@types/d3-format@^1": - version "1.4.2" - resolved "https://registry.npmjs.org/@types/d3-format/-/d3-format-1.4.2.tgz" - -"@types/d3-geo@^1": - version "1.12.3" - resolved "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-1.12.3.tgz" - dependencies: - "@types/geojson" "*" - -"@types/d3-hierarchy@^1": - version "1.1.8" - resolved "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-1.1.8.tgz" - -"@types/d3-interpolate@^1": - version "1.4.2" - resolved "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-1.4.2.tgz" - dependencies: - "@types/d3-color" "^1" - -"@types/d3-path@^1": - version "1.0.9" - resolved "https://registry.npmjs.org/@types/d3-path/-/d3-path-1.0.9.tgz" - -"@types/d3-polygon@^1": - version "1.0.8" - resolved "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-1.0.8.tgz" - -"@types/d3-quadtree@^1": - version "1.0.9" - resolved "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-1.0.9.tgz" - -"@types/d3-queue@*": - version "3.0.8" - resolved "https://registry.npmjs.org/@types/d3-queue/-/d3-queue-3.0.8.tgz" - -"@types/d3-random@^1": - version "1.1.3" - resolved "https://registry.npmjs.org/@types/d3-random/-/d3-random-1.1.3.tgz" - -"@types/d3-request@*": - version "1.0.6" - resolved "https://registry.npmjs.org/@types/d3-request/-/d3-request-1.0.6.tgz" - dependencies: - "@types/d3-dsv" "^1" - -"@types/d3-scale@^1": - version "1.0.17" - resolved "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-1.0.17.tgz" - dependencies: - "@types/d3-time" "^1" - -"@types/d3-selection@^1": - version "1.4.3" - resolved "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-1.4.3.tgz" - -"@types/d3-shape@^1", "@types/d3-shape@^1.2.5": - version "1.3.8" - resolved "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-1.3.8.tgz" - dependencies: - "@types/d3-path" "^1" - -"@types/d3-time-format@^2": - version "2.3.1" - resolved "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-2.3.1.tgz" - -"@types/d3-time@^1": - version "1.1.1" - resolved "https://registry.npmjs.org/@types/d3-time/-/d3-time-1.1.1.tgz" - -"@types/d3-timer@^1": - version "1.0.10" - resolved "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-1.0.10.tgz" - -"@types/d3-transition@^1": - version "1.3.2" - resolved "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-1.3.2.tgz" - dependencies: - "@types/d3-selection" "^1" - -"@types/d3-voronoi@*": - version "1.1.9" - resolved "https://registry.npmjs.org/@types/d3-voronoi/-/d3-voronoi-1.1.9.tgz" - -"@types/d3-zoom@^1": - version "1.8.3" - resolved "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-1.8.3.tgz" - dependencies: - "@types/d3-interpolate" "^1" - "@types/d3-selection" "^1" - -"@types/d3@^4.13.0": - version "4.13.12" - resolved "https://registry.npmjs.org/@types/d3/-/d3-4.13.12.tgz" - dependencies: - "@types/d3-array" "^1" - "@types/d3-axis" "^1" - "@types/d3-brush" "^1" - "@types/d3-chord" "^1" - "@types/d3-collection" "*" - "@types/d3-color" "^1" - "@types/d3-dispatch" "^1" - "@types/d3-drag" "^1" - "@types/d3-dsv" "^1" - "@types/d3-ease" "^1" - "@types/d3-force" "^1" - "@types/d3-format" "^1" - "@types/d3-geo" "^1" - "@types/d3-hierarchy" "^1" - "@types/d3-interpolate" "^1" - "@types/d3-path" "^1" - "@types/d3-polygon" "^1" - "@types/d3-quadtree" "^1" - "@types/d3-queue" "*" - "@types/d3-random" "^1" - "@types/d3-request" "*" - "@types/d3-scale" "^1" - "@types/d3-selection" "^1" - "@types/d3-shape" "^1" - "@types/d3-time" "^1" - "@types/d3-time-format" "^2" - "@types/d3-timer" "^1" - "@types/d3-transition" "^1" - "@types/d3-voronoi" "*" - "@types/d3-zoom" "^1" - -"@types/express-serve-static-core@^4.17.18": - version "4.17.30" - resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz" - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/express@^4.17.14": - version "4.17.14" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.14.tgz#143ea0557249bc1b3b54f15db4c81c3d4eb3569c" - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.18" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/geojson@*": - version "7946.0.10" - resolved "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz" - -"@types/invariant@^2.2.29": - version "2.2.35" - resolved "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.35.tgz" - -"@types/is-plain-object@^0.0.2": - version "0.0.2" - resolved "https://registry.npmjs.org/@types/is-plain-object/-/is-plain-object-0.0.2.tgz" - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" - -"@types/jsonwebtoken@^8.5.9": - version "8.5.9" - resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz#2c064ecb0b3128d837d2764aa0b117b0ff6e4586" - dependencies: - "@types/node" "*" - -"@types/linkify-it@*": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.2.tgz#fd2cd2edbaa7eaac7e7f3c1748b52a19143846c9" - -"@types/long@^4.0.0", "@types/long@^4.0.1": - version "4.0.2" - resolved "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz" - -"@types/markdown-it@^12.2.3": - version "12.2.3" - resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-12.2.3.tgz#0d6f6e5e413f8daaa26522904597be3d6cd93b51" - dependencies: - "@types/linkify-it" "*" - "@types/mdurl" "*" - -"@types/mdurl@*": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9" - -"@types/mime@*": - version "3.0.0" - resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.0.tgz" - -"@types/node@*", "@types/node@>=12.12.47", "@types/node@>=13.7.0": - version "18.6.3" - resolved "https://registry.npmjs.org/@types/node/-/node-18.6.3.tgz" - -"@types/node@^10.0.5": - version "10.17.60" - resolved "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz" - -"@types/qs@*": - version "6.9.7" - resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" - -"@types/range-parser@*": - version "1.2.4" - resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" - -"@types/serve-static@*": - version "1.15.0" - resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz" - dependencies: - "@types/mime" "*" - "@types/node" "*" - -"@types/trusted-types@^2.0.2": - version "2.0.2" - resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz" - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" - dependencies: - event-target-shim "^5.0.0" - -acorn-jsx@^5.0.0, acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" - -acorn@^6.0.7: - version "6.4.2" - resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" - -acorn@^8.8.0: - version "8.8.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" - -agent-base@6: - version "6.0.2" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" - dependencies: - debug "4" - -ajv@^6.10.2, ajv@^6.9.1: - version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz" - -ansi-regex@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz" - -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - dependencies: - color-convert "^2.0.1" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - -aria-query@^4.2.2: - version "4.2.2" - resolved "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz" - dependencies: - "@babel/runtime" "^7.10.2" - "@babel/runtime-corejs3" "^7.10.2" - -array-includes@^3.1.4, array-includes@^3.1.5: - version "3.1.5" - resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz" - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - get-intrinsic "^1.1.1" - is-string "^1.0.7" - -array.prototype.flat@^1.2.5: - version "1.3.0" - resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz" - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz" - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" - es-shim-unscopables "^1.0.0" - -arrify@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz" - -asap@~2.0.3: - version "2.0.6" - resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" - -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -assert@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz" - dependencies: - es6-object-assign "^1.1.0" - is-nan "^1.2.1" - object-is "^1.0.1" - util "^0.12.0" - -assertion-error@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" - -ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz" - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz" - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" - -async-retry@^1.3.3: - version "1.3.3" - resolved "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz" - dependencies: - retry "0.13.1" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - -axe-core@^4.4.3: - version "4.4.3" - resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz" - -axios@^0.19.0: - version "0.19.2" - resolved "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz" - dependencies: - follow-redirects "1.5.10" - -axios@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.1.3.tgz#8274250dada2edf53814ed7db644b9c2866c1e35" - dependencies: - follow-redirects "^1.15.0" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - -axobject-query@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz" - -babel-eslint@^10.1.0: - version "10.1.0" - resolved "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz" - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" - eslint-visitor-keys "^1.0.0" - resolve "^1.12.0" - -"babel-plugin-styled-components@>= 1": - version "2.0.7" - resolved "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz" - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.0" - "@babel/helper-module-imports" "^7.16.0" - babel-plugin-syntax-jsx "^6.18.0" - lodash "^4.17.11" - picomatch "^2.3.0" - -babel-plugin-syntax-jsx@^6.18.0: - version "6.18.0" - resolved "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz" - -babel-polyfill@^6.26.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz" - dependencies: - babel-runtime "^6.26.0" - core-js "^2.5.0" - regenerator-runtime "^0.10.5" - -babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - -base16@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz" - -base64-js@^1.3.0, base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - -bech32@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz" - -bech32@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz" - -bignumber.js@^8.1.1: - version "8.1.1" - resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-8.1.1.tgz" - -bignumber.js@^9.0.0: - version "9.0.2" - resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz" - -bluebird@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" - -bn.js@^5.0.0, bn.js@^5.1.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" - -bootstrap-less@^3.3.8: - version "3.3.8" - resolved "https://registry.npmjs.org/bootstrap-less/-/bootstrap-less-3.3.8.tgz" - -bootstrap@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.2.2.tgz#834e053eed584a65e244d8aa112a6959f56e27a0" - -bootswatch@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/bootswatch/-/bootswatch-5.2.2.tgz#4d3d15dffd8de16112b64fa37c1164cca1543110" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - dependencies: - balanced-match "^1.0.0" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz" - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz" - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz" - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz" - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz" - dependencies: - pako "~1.0.5" - -buffer-equal-constant-time@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" - -buffer@^5.7.1: - version "5.7.1" - resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - -camelcase@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz" - -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" - -camelize@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz" - -catharsis@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.9.0.tgz#40382a168be0e6da308c277d3a2b3eb40c7d2121" - dependencies: - lodash "^4.17.15" - -chai@^4.3.7: - version "4.3.7" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.7.tgz#ec63f6df01829088e8bf55fca839bcd464a8ec51" - dependencies: - assertion-error "^1.1.0" - check-error "^1.0.2" - deep-eql "^4.1.2" - get-func-name "^2.0.0" - loupe "^2.3.1" - pathval "^1.1.1" - type-detect "^4.0.5" - -chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" - -chart.js@^3.9.1: - version "3.9.1" - resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-3.9.1.tgz#3abf2c775169c4c71217a107163ac708515924b8" - -check-error@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz" - -cheerio-select@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz" - dependencies: - boolbase "^1.0.0" - css-select "^5.1.0" - css-what "^6.1.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" - domutils "^3.0.1" - -cheerio@^1.0.0-rc.6: - version "1.0.0-rc.12" - resolved "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz" - dependencies: - cheerio-select "^2.1.0" - dom-serializer "^2.0.0" - domhandler "^5.0.3" - domutils "^3.0.1" - htmlparser2 "^8.0.1" - parse5 "^7.0.0" - parse5-htmlparser2-tree-adapter "^7.0.0" - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -classnames@^2.2.3: - version "2.3.1" - resolved "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz" - -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz" - dependencies: - restore-cursor "^2.0.0" - -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz" - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" - -clone@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz" - -clsx@^1.1.1: - version "1.2.1" - resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" - -color-convert@^1.3.0, color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - -color-string@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz" - dependencies: - color-name "^1.0.0" - -color@^0.11.0: - version "0.11.4" - resolved "https://registry.npmjs.org/color/-/color-0.11.4.tgz" - dependencies: - clone "^1.0.2" - color-convert "^1.3.0" - color-string "^0.3.0" - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" - dependencies: - delayed-stream "~1.0.0" - -commander@2: - version "2.20.3" - resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" - -commander@7: - version "7.2.0" - resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" - -compressible@^2.0.12: - version "2.0.18" - resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" - dependencies: - mime-db ">= 1.43.0 < 2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - -confusing-browser-globals@^1.0.5: - version "1.0.11" - resolved "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz" - -connect-route@^0.1.5: - version "0.1.5" - resolved "https://registry.npmjs.org/connect-route/-/connect-route-0.1.5.tgz" - -console-browserify@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz" - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" - -core-js-pure@^3.20.2: - version "3.24.1" - resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.24.1.tgz" - -core-js@^2.4.0, core-js@^2.5.0: - version "2.6.12" - resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz" - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz" - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.1.3, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -create-react-class@^15.5.1: - version "15.7.0" - resolved "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz" - dependencies: - loose-envify "^1.3.1" - object-assign "^4.1.1" - -cross-fetch@^3.1.5: - version "3.1.5" - resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz" - dependencies: - node-fetch "2.6.7" - -cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -crypto-browserify@^3.12.0: - version "3.12.0" - resolved "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz" - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -crypto-js@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz" - -css-color-keywords@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz" - -css-select@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" - dependencies: - boolbase "^1.0.0" - css-what "^6.1.0" - domhandler "^5.0.2" - domutils "^3.0.1" - nth-check "^2.0.1" - -css-to-react-native@^2.2.2: - version "2.3.2" - resolved "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-2.3.2.tgz" - dependencies: - camelize "^1.0.0" - css-color-keywords "^1.0.0" - postcss-value-parser "^3.3.0" - -css-what@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" - -csstype@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz" - -d3-array@1, d3-array@1.2.1, d3-array@^1.2.0: - version "1.2.1" - resolved "https://registry.npmjs.org/d3-array/-/d3-array-1.2.1.tgz" - -"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/d3-array/-/d3-array-3.2.0.tgz" - dependencies: - internmap "1 - 2" - -d3-axis@1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.8.tgz" - -d3-axis@3: - version "3.0.0" - resolved "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz" - -d3-brush@1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/d3-brush/-/d3-brush-1.0.4.tgz" - dependencies: - d3-dispatch "1" - d3-drag "1" - d3-interpolate "1" - d3-selection "1" - d3-transition "1" - -d3-brush@3: - version "3.0.0" - resolved "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz" - dependencies: - d3-dispatch "1 - 3" - d3-drag "2 - 3" - d3-interpolate "1 - 3" - d3-selection "3" - d3-transition "3" - -d3-chord@1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.4.tgz" - dependencies: - d3-array "1" - d3-path "1" - -d3-chord@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz" - dependencies: - d3-path "1 - 3" - -d3-collection@1: - version "1.0.7" - resolved "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz" - -d3-collection@1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.4.tgz" - -d3-color@1, d3-color@1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/d3-color/-/d3-color-1.0.3.tgz" - -"d3-color@1 - 3", d3-color@3: - version "3.1.0" - resolved "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz" - -d3-contour@4: - version "4.0.0" - resolved "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.0.tgz" - dependencies: - d3-array "^3.2.0" - -d3-delaunay@6: - version "6.0.2" - resolved "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz" - dependencies: - delaunator "5" - -d3-dispatch@1, "d3-dispatch@1 - 3": - version "1.0.6" - resolved "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz" - -d3-dispatch@1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.3.tgz" - -d3-dispatch@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz" - -d3-drag@1, d3-drag@1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.1.tgz" - dependencies: - d3-dispatch "1" - d3-selection "1" - -"d3-drag@2 - 3", d3-drag@3: - version "3.0.0" - resolved "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz" - dependencies: - d3-dispatch "1 - 3" - d3-selection "3" - -d3-dsv@1, "d3-dsv@1 - 3": - version "1.2.0" - resolved "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.2.0.tgz" - dependencies: - commander "2" - iconv-lite "0.4" - rw "1" - -d3-dsv@1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.0.8.tgz" - dependencies: - commander "2" - iconv-lite "0.4" - rw "1" - -d3-dsv@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz" - dependencies: - commander "7" - iconv-lite "0.6" - rw "1" - -d3-ease@1, "d3-ease@1 - 3", d3-ease@^1.0.0: - version "1.0.7" - resolved "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz" - -d3-ease@1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.3.tgz" - -d3-ease@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz" - -d3-fetch@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz" - dependencies: - d3-dsv "1 - 3" - -d3-force@1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/d3-force/-/d3-force-1.1.0.tgz" - dependencies: - d3-collection "1" - d3-dispatch "1" - d3-quadtree "1" - d3-timer "1" - -d3-force@3: - version "3.0.0" - resolved "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz" - dependencies: - d3-dispatch "1 - 3" - d3-quadtree "1 - 3" - d3-timer "1 - 3" - -d3-format@1, d3-format@1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/d3-format/-/d3-format-1.2.2.tgz" - -"d3-format@1 - 3", d3-format@3: - version "3.1.0" - resolved "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz" - -d3-geo@1.9.1: - version "1.9.1" - resolved "https://registry.npmjs.org/d3-geo/-/d3-geo-1.9.1.tgz" - dependencies: - d3-array "1" - -d3-geo@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz" - dependencies: - d3-array "2.5.0 - 3" - -d3-hierarchy@1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.5.tgz" - -d3-hierarchy@3: - version "3.1.2" - resolved "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz" - -d3-interpolate@1, d3-interpolate@1.1.6: - version "1.1.6" - resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.1.6.tgz" - dependencies: - d3-color "1" - -"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz" - dependencies: - d3-color "1 - 3" - -d3-path@1, "d3-path@1 - 3": - version "1.0.9" - resolved "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz" - -d3-path@1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/d3-path/-/d3-path-1.0.5.tgz" - -d3-path@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz" - -d3-polygon@1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.3.tgz" - -d3-polygon@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz" - -d3-quadtree@1, d3-quadtree@1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.3.tgz" - -"d3-quadtree@1 - 3", d3-quadtree@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz" - -d3-queue@3.0.7: - version "3.0.7" - resolved "https://registry.npmjs.org/d3-queue/-/d3-queue-3.0.7.tgz" - -d3-random@1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/d3-random/-/d3-random-1.1.0.tgz" - -d3-random@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz" - -d3-request@1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/d3-request/-/d3-request-1.0.6.tgz" - dependencies: - d3-collection "1" - d3-dispatch "1" - d3-dsv "1" - xmlhttprequest "1" - -d3-scale-chromatic@3: - version "3.0.0" - resolved "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz" - dependencies: - d3-color "1 - 3" - d3-interpolate "1 - 3" - -d3-scale@1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.7.tgz" - dependencies: - d3-array "^1.2.0" - d3-collection "1" - d3-color "1" - d3-format "1" - d3-interpolate "1" - d3-time "1" - d3-time-format "2" - -d3-scale@4: - version "4.0.2" - resolved "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz" - dependencies: - d3-array "2.10.0 - 3" - d3-format "1 - 3" - d3-interpolate "1.2.0 - 3" - d3-time "2.1.1 - 3" - d3-time-format "2 - 4" - -d3-selection@1, d3-selection@1.3.0, d3-selection@^1.1.0: - version "1.3.0" - resolved "https://registry.npmjs.org/d3-selection/-/d3-selection-1.3.0.tgz" - -"d3-selection@2 - 3", d3-selection@3: - version "3.0.0" - resolved "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz" - -d3-shape@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/d3-shape/-/d3-shape-1.2.0.tgz" - dependencies: - d3-path "1" - -d3-shape@3: - version "3.1.0" - resolved "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz" - dependencies: - d3-path "1 - 3" - -d3-shape@^1.0.0: - version "1.3.7" - resolved "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz" - dependencies: - d3-path "1" - -d3-time-format@2, d3-time-format@2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.1.1.tgz" - dependencies: - d3-time "1" - -"d3-time-format@2 - 4", d3-time-format@4: - version "4.1.0" - resolved "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz" - dependencies: - d3-time "1 - 3" - -d3-time@1, d3-time@1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/d3-time/-/d3-time-1.0.8.tgz" - -"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3: - version "3.0.0" - resolved "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz" - dependencies: - d3-array "2 - 3" - -d3-timer@1, d3-timer@1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.7.tgz" - -"d3-timer@1 - 3", d3-timer@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz" - -d3-transition@1, d3-transition@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/d3-transition/-/d3-transition-1.1.1.tgz" - dependencies: - d3-color "1" - d3-dispatch "1" - d3-ease "1" - d3-interpolate "1" - d3-selection "^1.1.0" - d3-timer "1" - -"d3-transition@2 - 3", d3-transition@3: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz" - dependencies: - d3-color "1 - 3" - d3-dispatch "1 - 3" - d3-ease "1 - 3" - d3-interpolate "1 - 3" - d3-timer "1 - 3" - -d3-voronoi@1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.2.tgz" - -d3-zoom@1.7.1: - version "1.7.1" - resolved "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.7.1.tgz" - dependencies: - d3-dispatch "1" - d3-drag "1" - d3-interpolate "1" - d3-selection "1" - d3-transition "1" - -d3-zoom@3: - version "3.0.0" - resolved "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz" - dependencies: - d3-dispatch "1 - 3" - d3-drag "2 - 3" - d3-interpolate "1 - 3" - d3-selection "2 - 3" - d3-transition "2 - 3" - -d3@^4.13.0: - version "4.13.0" - resolved "https://registry.npmjs.org/d3/-/d3-4.13.0.tgz" - dependencies: - d3-array "1.2.1" - d3-axis "1.0.8" - d3-brush "1.0.4" - d3-chord "1.0.4" - d3-collection "1.0.4" - d3-color "1.0.3" - d3-dispatch "1.0.3" - d3-drag "1.2.1" - d3-dsv "1.0.8" - d3-ease "1.0.3" - d3-force "1.1.0" - d3-format "1.2.2" - d3-geo "1.9.1" - d3-hierarchy "1.1.5" - d3-interpolate "1.1.6" - d3-path "1.0.5" - d3-polygon "1.0.3" - d3-quadtree "1.0.3" - d3-queue "3.0.7" - d3-random "1.1.0" - d3-request "1.0.6" - d3-scale "1.0.7" - d3-selection "1.3.0" - d3-shape "1.2.0" - d3-time "1.0.8" - d3-time-format "2.1.1" - d3-timer "1.0.7" - d3-transition "1.1.1" - d3-voronoi "1.1.2" - d3-zoom "1.7.1" - -d3@^7.6.1: - version "7.6.1" - resolved "https://registry.npmjs.org/d3/-/d3-7.6.1.tgz" - dependencies: - d3-array "3" - d3-axis "3" - d3-brush "3" - d3-chord "3" - d3-color "3" - d3-contour "4" - d3-delaunay "6" - d3-dispatch "3" - d3-drag "3" - d3-dsv "3" - d3-ease "3" - d3-fetch "3" - d3-force "3" - d3-format "3" - d3-geo "3" - d3-hierarchy "3" - d3-interpolate "3" - d3-path "3" - d3-polygon "3" - d3-quadtree "3" - d3-random "3" - d3-scale "4" - d3-scale-chromatic "3" - d3-selection "3" - d3-shape "3" - d3-time "3" - d3-time-format "4" - d3-timer "3" - d3-transition "3" - d3-zoom "3" - -damerau-levenshtein@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz" - -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - dependencies: - ms "2.1.2" - -debug@=3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz" - dependencies: - ms "2.0.0" - -debug@^2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - dependencies: - ms "2.0.0" - -debug@^3.1.0, debug@^3.2.7: - version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - dependencies: - ms "^2.1.1" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - -deep-eql@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.2.tgz#270ceb902f87724077e6f6449aed81463f42fc1c" - dependencies: - type-detect "^4.0.0" - -deep-is@~0.1.3: - version "0.1.4" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" - -define-properties@^1.1.3, define-properties@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" - dependencies: - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -delaunator@5: - version "5.0.0" - resolved "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz" - dependencies: - robust-predicates "^3.0.0" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz" - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -detect-it@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/detect-it/-/detect-it-4.0.1.tgz" - -detect-libc@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz" - -detect-passive-events@^2.0.2: - version "2.0.3" - resolved "https://registry.npmjs.org/detect-passive-events/-/detect-passive-events-2.0.3.tgz" - dependencies: - detect-it "^4.0.1" - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz" - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -doc-head-extract@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/doc-head-extract/-/doc-head-extract-1.0.4.tgz" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" - dependencies: - esutils "^2.0.2" - -dom-helpers@^5.0.1: - version "5.2.1" - resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz" - dependencies: - "@babel/runtime" "^7.8.7" - csstype "^3.0.2" - -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -dom-serializer@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.2" - entities "^4.2.0" - -domain-browser@^4.22.0: - version "4.22.0" - resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz" - -domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" - -domhandler@^4.0.0, domhandler@^4.2.0: - version "4.3.1" - resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" - dependencies: - domelementtype "^2.2.0" - -domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: - version "5.0.3" - resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" - dependencies: - domelementtype "^2.3.0" - -domutils@^2.5.2: - version "2.8.0" - resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -domutils@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz" - dependencies: - dom-serializer "^2.0.0" - domelementtype "^2.3.0" - domhandler "^5.0.1" - -duplexify@^3.5.1, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz" - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -duplexify@^4.0.0: - version "4.1.2" - resolved "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz" - dependencies: - end-of-stream "^1.4.1" - inherits "^2.0.3" - readable-stream "^3.1.1" - stream-shift "^1.0.0" - -ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11: - version "1.0.11" - resolved "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz" - dependencies: - safe-buffer "^5.0.1" - -elliptic@^6.5.3, elliptic@^6.5.4: - version "6.5.4" - resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" - -end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" - dependencies: - once "^1.4.0" - -ent@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz" - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" - -entities@^4.2.0, entities@^4.3.0: - version "4.3.1" - resolved "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz" - -entities@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" - -es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.0: - version "1.20.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.1.1" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-property-descriptors "^1.0.0" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-weakref "^1.0.2" - object-inspect "^1.12.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - regexp.prototype.flags "^1.4.3" - string.prototype.trimend "^1.0.5" - string.prototype.trimstart "^1.0.5" - unbox-primitive "^1.0.2" - -es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" - dependencies: - has "^1.0.3" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es6-object-assign@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - -escodegen@^1.13.0: - version "1.14.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-airbnb-base@^13.2.0: - version "13.2.0" - resolved "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.2.0.tgz" - dependencies: - confusing-browser-globals "^1.0.5" - object.assign "^4.1.0" - object.entries "^1.1.0" - -eslint-config-airbnb@^17.1.1: - version "17.1.1" - resolved "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-17.1.1.tgz" - dependencies: - eslint-config-airbnb-base "^13.2.0" - object.assign "^4.1.0" - object.entries "^1.1.0" - -eslint-import-resolver-meteor@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/eslint-import-resolver-meteor/-/eslint-import-resolver-meteor-0.4.0.tgz" - dependencies: - object-assign "^4.0.1" - resolve "^1.1.6" - -eslint-import-resolver-node@^0.3.6: - version "0.3.6" - resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz" - dependencies: - debug "^3.2.7" - resolve "^1.20.0" - -eslint-module-utils@^2.7.3: - version "2.7.3" - resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz" - dependencies: - debug "^3.2.7" - find-up "^2.1.0" - -eslint-plugin-import@^2.23.3: - version "2.26.0" - resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz" - dependencies: - array-includes "^3.1.4" - array.prototype.flat "^1.2.5" - debug "^2.6.9" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.3" - has "^1.0.3" - is-core-module "^2.8.1" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.values "^1.1.5" - resolve "^1.22.0" - tsconfig-paths "^3.14.1" - -eslint-plugin-jsx-a11y@^6.6.1: - version "6.6.1" - resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz" - dependencies: - "@babel/runtime" "^7.18.9" - aria-query "^4.2.2" - array-includes "^3.1.5" - ast-types-flow "^0.0.7" - axe-core "^4.4.3" - axobject-query "^2.2.0" - damerau-levenshtein "^1.0.8" - emoji-regex "^9.2.2" - has "^1.0.3" - jsx-ast-utils "^3.3.2" - language-tags "^1.0.5" - minimatch "^3.1.2" - semver "^6.3.0" - -eslint-plugin-meteor@^7.3.0: - version "7.3.0" - resolved "https://registry.npmjs.org/eslint-plugin-meteor/-/eslint-plugin-meteor-7.3.0.tgz" - dependencies: - invariant "2.2.4" - -eslint-plugin-react@^7.31.10: - version "7.31.10" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.10.tgz#6782c2c7fe91c09e715d536067644bbb9491419a" - dependencies: - array-includes "^3.1.5" - array.prototype.flatmap "^1.3.0" - doctrine "^2.1.0" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.5" - object.fromentries "^2.0.5" - object.hasown "^1.1.1" - object.values "^1.1.5" - prop-types "^15.8.1" - resolve "^2.0.0-next.3" - semver "^6.3.0" - string.prototype.matchall "^4.0.7" - -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz" - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-utils@^1.3.1: - version "1.4.3" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz" - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: - version "1.3.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" - -eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - -eslint@^5.16.0: - version "5.16.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz" - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.9.1" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^3.0.0" - eslint-scope "^4.0.3" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^5.0.1" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.7.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^6.2.2" - js-yaml "^3.13.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.11" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^5.5.1" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" - table "^5.2.3" - text-table "^0.2.0" - -espree@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz" - dependencies: - acorn "^6.0.7" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" - -espree@^9.0.0: - version "9.4.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.0.tgz#cd4bc3d6e9336c433265fc0aa016fc1aaf182f8a" - dependencies: - acorn "^8.8.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - -esquery@^1.0.1: - version "1.4.0" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.1.0: - version "4.3.0" - resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1, estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz" - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" - -events@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -extend@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" - -fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - -fast-text-encoding@^1.0.0, fast-text-encoding@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.4.tgz" - -faye-websocket@0.11.4: - version "0.11.4" - resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" - dependencies: - websocket-driver ">=0.5.1" - -fbemitter@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz" - dependencies: - fbjs "^3.0.0" - -fbjs-css-vars@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz" - -fbjs@^3.0.0, fbjs@^3.0.1: - version "3.0.4" - resolved "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz" - dependencies: - cross-fetch "^3.1.5" - fbjs-css-vars "^1.0.0" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^0.7.30" - -fibers@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/fibers/-/fibers-5.0.3.tgz#2fd03acb255db66fe693d15beafbf5ae92193fd7" - dependencies: - detect-libc "^1.0.3" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz" - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz" - dependencies: - flat-cache "^2.0.1" - -find-cache-dir@^3.0.0: - version "3.3.2" - resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" - dependencies: - locate-path "^3.0.0" - -find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -firebase-admin@^11.2.0: - version "11.2.0" - resolved "https://registry.yarnpkg.com/firebase-admin/-/firebase-admin-11.2.0.tgz#eeabeddcca03cb50cc04564e8d6f0db4d25878cf" - dependencies: - "@fastify/busboy" "^1.1.0" - "@firebase/database-compat" "^0.2.6" - "@firebase/database-types" "^0.9.13" - "@types/node" ">=12.12.47" - jsonwebtoken "^8.5.1" - jwks-rsa "^2.1.4" - node-forge "^1.3.1" - uuid "^9.0.0" - optionalDependencies: - "@google-cloud/firestore" "^6.4.0" - "@google-cloud/storage" "^6.5.2" - -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz" - dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz" - -flux@^4.0.1: - version "4.0.3" - resolved "https://registry.npmjs.org/flux/-/flux-4.0.3.tgz" - dependencies: - fbemitter "^3.0.0" - fbjs "^3.0.1" - -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz" - dependencies: - debug "=3.1.0" - -follow-redirects@^1.15.0: - version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - dependencies: - is-callable "^1.1.3" - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -framesync@^4.0.0, framesync@^4.0.1: - version "4.1.0" - resolved "https://registry.npmjs.org/framesync/-/framesync-4.1.0.tgz" - dependencies: - hey-listen "^1.0.5" - -fs-extra@8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" - -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" - -functions-have-names@^1.2.2: - version "1.2.3" - resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" - -gaxios@^4.0.0: - version "4.3.3" - resolved "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz" - dependencies: - abort-controller "^3.0.0" - extend "^3.0.2" - https-proxy-agent "^5.0.0" - is-stream "^2.0.0" - node-fetch "^2.6.7" - -gaxios@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/gaxios/-/gaxios-5.0.1.tgz" - dependencies: - extend "^3.0.2" - https-proxy-agent "^5.0.0" - is-stream "^2.0.0" - node-fetch "^2.6.7" - -gaxios@^5.0.1: - version "5.0.2" - resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-5.0.2.tgz#ca3a40e851c728d31d7001c2357062d46bf966d1" - dependencies: - extend "^3.0.2" - https-proxy-agent "^5.0.0" - is-stream "^2.0.0" - node-fetch "^2.6.7" - -gcp-metadata@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.0.0.tgz" - dependencies: - gaxios "^5.0.0" - json-bigint "^1.0.0" - -get-caller-file@^2.0.1, get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" - -get-func-name@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz" - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.2" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz" - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.3" - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -glob@^7.1.2, glob@^7.1.3: - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^8.0.0: - version "8.0.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -globals@^11.1.0, globals@^11.7.0: - version "11.12.0" - resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" - -google-auth-library@^8.0.1: - version "8.1.1" - resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.1.1.tgz" - dependencies: - arrify "^2.0.0" - base64-js "^1.3.0" - ecdsa-sig-formatter "^1.0.11" - fast-text-encoding "^1.0.0" - gaxios "^5.0.0" - gcp-metadata "^5.0.0" - gtoken "^6.0.0" - jws "^4.0.0" - lru-cache "^6.0.0" - -google-auth-library@^8.0.2: - version "8.6.0" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-8.6.0.tgz#79cc4c8bacffee26bac244f25f4968ac87218bb8" - dependencies: - arrify "^2.0.0" - base64-js "^1.3.0" - ecdsa-sig-formatter "^1.0.11" - fast-text-encoding "^1.0.0" - gaxios "^5.0.0" - gcp-metadata "^5.0.0" - gtoken "^6.1.0" - jws "^4.0.0" - lru-cache "^6.0.0" - -google-gax@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-3.5.2.tgz#7c3ad61dbf366a55527b803caead276668b160d8" - dependencies: - "@grpc/grpc-js" "~1.7.0" - "@grpc/proto-loader" "^0.7.0" - "@types/long" "^4.0.0" - abort-controller "^3.0.0" - duplexify "^4.0.0" - fast-text-encoding "^1.0.3" - google-auth-library "^8.0.2" - is-stream-ended "^0.1.4" - node-fetch "^2.6.1" - object-hash "^3.0.0" - proto3-json-serializer "^1.0.0" - protobufjs "7.1.2" - protobufjs-cli "1.0.2" - retry-request "^5.0.0" - -google-p12-pem@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.0.tgz" - dependencies: - node-forge "^1.3.1" - -graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: - version "4.2.10" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" - -gtoken@^6.0.0: - version "6.1.0" - resolved "https://registry.npmjs.org/gtoken/-/gtoken-6.1.0.tgz" - dependencies: - gaxios "^4.0.0" - google-p12-pem "^4.0.0" - jws "^4.0.0" - -gtoken@^6.1.0: - version "6.1.2" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-6.1.2.tgz#aeb7bdb019ff4c3ba3ac100bbe7b6e74dce0e8bc" - dependencies: - gaxios "^5.0.1" - google-p12-pem "^4.0.0" - jws "^4.0.0" - -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - -has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" - dependencies: - get-intrinsic "^1.1.1" - -has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" - dependencies: - has-symbols "^1.0.2" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hey-listen@^1.0.5, hey-listen@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz" - -history@^3.0.0: - version "3.3.0" - resolved "https://registry.npmjs.org/history/-/history-3.3.0.tgz" - dependencies: - invariant "^2.2.1" - loose-envify "^1.2.0" - query-string "^4.2.2" - warning "^3.0.0" - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoist-non-react-statics@^3.3.2: - version "3.3.2" - resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" - dependencies: - react-is "^16.7.0" - -htmlparser2@^6.0.1: - version "6.1.0" - resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" - dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" - -htmlparser2@^8.0.1: - version "8.0.1" - resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz" - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.2" - domutils "^3.0.1" - entities "^4.3.0" - -http-parser-js@>=0.5.1: - version "0.5.8" - resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" - -http-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" - dependencies: - "@tootallnate/once" "2" - agent-base "6" - debug "4" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" - -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" - dependencies: - agent-base "6" - debug "4" - -iconv-lite@0.4, iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@0.6: - version "0.6.3" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" - -import-fresh@^3.0.0: - version "3.3.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - -inquirer@^6.2.2: - version "6.5.2" - resolved "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz" - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - -int53@^0.2.4: - version "0.2.4" - resolved "https://registry.npmjs.org/int53/-/int53-0.2.4.tgz" - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -"internmap@1 - 2": - version "2.0.3" - resolved "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz" - -invariant@2.2.4, invariant@^2.2.1: - version "2.2.4" - resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" - dependencies: - loose-envify "^1.0.0" - -is-arguments@^1.0.4: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" - dependencies: - has-bigints "^1.0.1" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz" - -is-core-module@^2.8.1, is-core-module@^2.9.0: - version "2.9.0" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz" - dependencies: - has "^1.0.3" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" - dependencies: - has-tostringtag "^1.0.0" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" - -is-generator-function@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - dependencies: - has-tostringtag "^1.0.0" - -is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - dependencies: - is-extglob "^2.1.1" - -is-nan@^1.2.1: - version "1.3.2" - resolved "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz" - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" - dependencies: - has-tostringtag "^1.0.0" - -is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" - dependencies: - isobject "^3.0.1" - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" - dependencies: - call-bind "^1.0.2" - -is-stream-ended@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz" - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" - dependencies: - has-symbols "^1.0.2" - -is-typed-array@^1.1.3, is-typed-array@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.9.tgz#246d77d2871e7d9f5aeb1d54b9f52c71329ece67" - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - es-abstract "^1.20.0" - for-each "^0.3.3" - has-tostringtag "^1.0.0" - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" - dependencies: - call-bind "^1.0.2" - -is-what@^3.3.1: - version "3.14.1" - resolved "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz" - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" - -jose@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/jose/-/jose-2.0.6.tgz#894ba19169af339d3911be933f913dd02fc57c7c" - dependencies: - "@panva/asn1.js" "^1.0.0" - -jquery@^3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.1.tgz#fab0408f8b45fc19f956205773b62b292c147a16" - -js-sha256@^0.9.0: - version "0.9.0" - resolved "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz" - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - -js-yaml@^3.13.0: - version "3.14.1" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js2xmlparser@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-4.0.2.tgz#2a1fdf01e90585ef2ae872a01bc169c6a8d5e60a" - dependencies: - xmlcreate "^2.0.4" - -jsdoc@^3.6.3: - version "3.6.11" - resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-3.6.11.tgz#8bbb5747e6f579f141a5238cbad4e95e004458ce" - dependencies: - "@babel/parser" "^7.9.4" - "@types/markdown-it" "^12.2.3" - bluebird "^3.7.2" - catharsis "^0.9.0" - escape-string-regexp "^2.0.0" - js2xmlparser "^4.0.2" - klaw "^3.0.0" - markdown-it "^12.3.2" - markdown-it-anchor "^8.4.1" - marked "^4.0.10" - mkdirp "^1.0.4" - requizzle "^0.2.3" - strip-json-comments "^3.1.0" - taffydb "2.6.2" - underscore "~1.13.2" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" - -json-bigint@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz" - dependencies: - bignumber.js "^9.0.0" - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" - -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" - dependencies: - minimist "^1.2.0" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" - -jsonwebtoken@^8.5.1: - version "8.5.1" - resolved "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz" - dependencies: - jws "^3.2.2" - lodash.includes "^4.3.0" - lodash.isboolean "^3.0.3" - lodash.isinteger "^4.0.4" - lodash.isnumber "^3.0.3" - lodash.isplainobject "^4.0.6" - lodash.isstring "^4.0.1" - lodash.once "^4.0.0" - ms "^2.1.1" - semver "^5.6.0" - -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2: - version "3.3.2" - resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.2.tgz" - dependencies: - array-includes "^3.1.5" - object.assign "^4.1.2" - -jwa@^1.4.1: - version "1.4.1" - resolved "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz" - dependencies: - buffer-equal-constant-time "1.0.1" - ecdsa-sig-formatter "1.0.11" - safe-buffer "^5.0.1" - -jwa@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz" - dependencies: - buffer-equal-constant-time "1.0.1" - ecdsa-sig-formatter "1.0.11" - safe-buffer "^5.0.1" - -jwks-rsa@^2.1.4: - version "2.1.5" - resolved "https://registry.yarnpkg.com/jwks-rsa/-/jwks-rsa-2.1.5.tgz#bb7bf8c5767836bc273bf5b27870066aca39c1bb" - dependencies: - "@types/express" "^4.17.14" - "@types/jsonwebtoken" "^8.5.9" - debug "^4.3.4" - jose "^2.0.6" - limiter "^1.1.5" - lru-memoizer "^2.1.4" - -jws@^3.2.2: - version "3.2.2" - resolved "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz" - dependencies: - jwa "^1.4.1" - safe-buffer "^5.0.1" - -jws@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz" - dependencies: - jwa "^2.0.0" - safe-buffer "^5.0.1" - -klaw@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146" - dependencies: - graceful-fs "^4.1.9" - -language-subtag-registry@~0.3.2: - version "0.3.22" - resolved "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz" - -language-tags@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz" - dependencies: - language-subtag-registry "~0.3.2" - -ledger-cosmos-js@^2.1.8: - version "2.1.8" - resolved "https://registry.npmjs.org/ledger-cosmos-js/-/ledger-cosmos-js-2.1.8.tgz" - dependencies: - "@babel/runtime" "^7.11.2" - "@ledgerhq/hw-transport" "^5.25.0" - bech32 "^1.1.4" - ripemd160 "^2.0.2" - -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -limiter@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz" - -linkify-it@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" - dependencies: - uc.micro "^1.0.1" - -lit-element@^3.2.0: - version "3.2.1" - resolved "https://registry.npmjs.org/lit-element/-/lit-element-3.2.1.tgz" - dependencies: - "@lit/reactive-element" "^1.3.0" - lit-html "^2.2.0" - -lit-html@^2.2.0: - version "2.2.6" - resolved "https://registry.npmjs.org/lit-html/-/lit-html-2.2.6.tgz" - dependencies: - "@types/trusted-types" "^2.0.2" - -lit@^2.2.3: - version "2.2.7" - resolved "https://registry.npmjs.org/lit/-/lit-2.2.7.tgz" - dependencies: - "@lit/reactive-element" "^1.3.0" - lit-element "^3.2.0" - lit-html "^2.2.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" - dependencies: - p-locate "^4.1.0" - -lodash-es@^4.17.15: - version "4.17.21" - resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz" - -lodash.curry@^4.0.1: - version "4.1.1" - resolved "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz" - -lodash.flow@^3.3.0: - version "3.5.0" - resolved "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz" - -lodash.includes@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz" - -lodash.isboolean@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz" - -lodash.isinteger@^4.0.4: - version "4.0.4" - resolved "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz" - -lodash.isnumber@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz" - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" - -lodash.isstring@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz" - -lodash.once@^4.0.0: - version "4.1.1" - resolved "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz" - -lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/long/-/long-4.0.0.tgz" - -long@^5.0.0: - version "5.2.0" - resolved "https://registry.npmjs.org/long/-/long-5.2.0.tgz" - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -loupe@^2.3.1: - version "2.3.4" - resolved "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz" - dependencies: - get-func-name "^2.0.0" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" - dependencies: - yallist "^4.0.0" - -lru-cache@~4.0.0: - version "4.0.2" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz" - dependencies: - pseudomap "^1.0.1" - yallist "^2.0.0" - -lru-memoizer@^2.1.4: - version "2.1.4" - resolved "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.1.4.tgz" - dependencies: - lodash.clonedeep "^4.5.0" - lru-cache "~4.0.0" - -make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" - dependencies: - semver "^6.0.0" - -markdown-it-anchor@^8.4.1: - version "8.6.5" - resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-8.6.5.tgz#30c4bc5bbff327f15ce3c429010ec7ba75e7b5f8" - -markdown-it@^12.3.2: - version "12.3.2" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" - dependencies: - argparse "^2.0.1" - entities "~2.1.0" - linkify-it "^3.0.1" - mdurl "^1.0.1" - uc.micro "^1.0.5" - -marked@^0.5.1: - version "0.5.2" - resolved "https://registry.npmjs.org/marked/-/marked-0.5.2.tgz" - -marked@^4.0.10: - version "4.1.1" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.1.1.tgz#2f709a4462abf65a283f2453dc1c42ab177d302e" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -mdurl@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - -memoize-one@^5.0.0: - version "5.2.1" - resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" - -merge-anything@^2.2.4: - version "2.4.4" - resolved "https://registry.npmjs.org/merge-anything/-/merge-anything-2.4.4.tgz" - dependencies: - is-what "^3.3.1" - -mersenne-twister@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/mersenne-twister/-/mersenne-twister-1.1.0.tgz" - -meteor-node-stubs@^1.2.5: - version "1.2.5" - resolved "https://registry.npmjs.org/meteor-node-stubs/-/meteor-node-stubs-1.2.5.tgz" - dependencies: - assert "^2.0.0" - browserify-zlib "^0.2.0" - buffer "^5.7.1" - console-browserify "^1.2.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.12.0" - domain-browser "^4.22.0" - elliptic "^6.5.4" - events "^3.3.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "^1.0.0" - process "^0.11.10" - punycode "^1.4.1" - querystring-es3 "^0.2.1" - readable-stream "^3.6.0" - stream-browserify "^3.0.0" - stream-http "^3.2.0" - string_decoder "^1.3.0" - timers-browserify "^2.0.12" - tty-browserify "0.0.1" - url "^0.11.0" - util "^0.12.4" - vm-browserify "^1.1.2" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz" - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": - version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - -mime-types@^2.0.8, mime-types@^2.1.12: - version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - dependencies: - mime-db "1.52.0" - -mime@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz" - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz" - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" - -minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.0, minimist@^1.2.6: - version "1.2.6" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz" - -mkdirp@^0.5.1: - version "0.5.6" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" - dependencies: - minimist "^1.2.6" - -mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - -moment-timezone@^0.5.38: - version "0.5.38" - resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.38.tgz#9674a5397b8be7c13de820fd387d8afa0f725aad" - dependencies: - moment ">= 2.9.0" - -"moment@>= 2.9.0", moment@^2.29.4: - version "2.29.4" - resolved "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz" - -mongo-object@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mongo-object/-/mongo-object-3.0.0.tgz#7cb751ec77174e4d1894a1a0b165ab5deb762509" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - -ms@2.1.2, ms@^2.1.1: - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - -ndjson@^1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/ndjson/-/ndjson-1.5.0.tgz" - dependencies: - json-stringify-safe "^5.0.1" - minimist "^1.2.0" - split2 "^2.1.0" - through2 "^2.0.3" - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" - -node-addon-api@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz" - -node-fetch@2.6.7, node-fetch@^2.6.1, node-fetch@^2.6.7: - version "2.6.7" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" - dependencies: - whatwg-url "^5.0.0" - -node-forge@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" - -node-gyp-build@^4.2.0: - version "4.5.0" - resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz" - -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" - dependencies: - boolbase "^1.0.0" - -numbro@^2.3.2: - version "2.3.6" - resolved "https://registry.npmjs.org/numbro/-/numbro-2.3.6.tgz" - dependencies: - bignumber.js "^8.1.1" - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - -object-hash@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz" - -object-inspect@^1.12.0, object-inspect@^1.9.0: - version "1.12.2" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz" - -object-is@^1.0.1: - version "1.1.5" - resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" - -object.assign@^4.1.0, object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz" - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.entries@^1.1.0, object.entries@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz" - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.fromentries@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz" - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.hasown@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz" - dependencies: - define-properties "^1.1.4" - es-abstract "^1.19.5" - -object.values@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz" - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -old@^0.1.3: - version "0.1.3" - resolved "https://registry.npmjs.org/old/-/old-0.1.3.tgz" - dependencies: - object-assign "^4.1.0" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - dependencies: - wrappy "1" - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz" - dependencies: - mimic-fn "^1.0.0" - -optionator@^0.8.1, optionator@^0.8.2: - version "0.8.3" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.1: - version "3.1.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - dependencies: - yocto-queue "^0.1.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" - dependencies: - p-limit "^2.2.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" - -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz" - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse5-htmlparser2-tree-adapter@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz" - dependencies: - domhandler "^5.0.2" - parse5 "^7.0.0" - -parse5@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/parse5/-/parse5-7.0.0.tgz" - dependencies: - entities "^4.3.0" - -path-browserify@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" - -path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" - -path-parse@^1.0.6, path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - -pathval@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" - -pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -picomatch@^2.3.0: - version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - -pkg-dir@^4.1.0: - version "4.2.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" - dependencies: - find-up "^4.0.0" - -plottable@^3.9.0: - version "3.13.0" - resolved "https://registry.npmjs.org/plottable/-/plottable-3.13.0.tgz" - dependencies: - "@types/d3" "^4.13.0" - "@types/d3-shape" "^1.2.5" - "@types/is-plain-object" "^0.0.2" - d3 "^4.13.0" - d3-ease "^1.0.0" - d3-shape "^1.0.0" - is-plain-object "^2.0.4" - lodash-es "^4.17.15" - tslib "~2.3.1" - typesettable "4.1.0" - -popmotion-pose@^3.4.10: - version "3.4.11" - resolved "https://registry.npmjs.org/popmotion-pose/-/popmotion-pose-3.4.11.tgz" - dependencies: - "@popmotion/easing" "^1.0.1" - hey-listen "^1.0.5" - popmotion "^8.7.1" - pose-core "^2.1.1" - style-value-types "^3.0.6" - ts-essentials "^1.0.3" - tslib "^1.10.0" - -popmotion@^8.7.1: - version "8.7.6" - resolved "https://registry.npmjs.org/popmotion/-/popmotion-8.7.6.tgz" - dependencies: - "@popmotion/easing" "^1.0.1" - "@popmotion/popcorn" "^0.4.4" - framesync "^4.0.0" - hey-listen "^1.0.5" - style-value-types "^3.1.7" - stylefire "^7.0.1" - tslib "^1.10.0" - -popper.js@^1.0.2: - version "1.16.1" - resolved "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz" - -pose-core@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/pose-core/-/pose-core-2.1.1.tgz" - dependencies: - "@types/invariant" "^2.2.29" - "@types/node" "^10.0.5" - hey-listen "^1.0.5" - rollup-plugin-typescript2 "^0.25.2" - tslib "^1.10.0" - typescript "^3.7.2" - -postcss-value-parser@^3.3.0: - version "3.3.1" - resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" - -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz" - dependencies: - asap "~2.0.3" - -prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.8, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: - version "15.8.1" - resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - -proto3-json-serializer@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proto3-json-serializer/-/proto3-json-serializer-1.1.0.tgz#52d9c73b24d25ff925639e1e5a01ac883460149f" - dependencies: - protobufjs "^7.0.0" - -protobufjs-cli@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/protobufjs-cli/-/protobufjs-cli-1.0.2.tgz#905fc49007cf4aaf3c45d5f250eb294eedeea062" - dependencies: - chalk "^4.0.0" - escodegen "^1.13.0" - espree "^9.0.0" - estraverse "^5.1.0" - glob "^8.0.0" - jsdoc "^3.6.3" - minimist "^1.2.0" - semver "^7.1.2" - tmp "^0.2.1" - uglify-js "^3.7.7" - -protobufjs@7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.1.2.tgz#a0cf6aeaf82f5625bffcf5a38b7cd2a7de05890c" - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/node" ">=13.7.0" - long "^5.0.0" - -protobufjs@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-7.0.0.tgz" - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.1" - "@types/node" ">=13.7.0" - long "^5.0.0" - -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - -pseudomap@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz" - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz" - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.5: - version "1.5.1" - resolved "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz" - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" - -punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" - -pure-color@^1.2.0: - version "1.3.0" - resolved "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz" - -query-string@^4.2.2: - version "4.3.4" - resolved "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz" - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring-es3@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.1.0" - resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz" - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -raw-loader@^0.5.1: - version "0.5.1" - resolved "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz" - -react-3d-viewer@^1.0.12: - version "1.0.12" - resolved "https://registry.npmjs.org/react-3d-viewer/-/react-3d-viewer-1.0.12.tgz" - dependencies: - marked "^0.5.1" - raw-loader "^0.5.1" - react-router "^3.2.1" - react-scroll-up "^1.3.3" - three "^0.95.0" - -react-base16-styling@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz" - dependencies: - base16 "^1.0.0" - lodash.curry "^4.0.1" - lodash.flow "^3.3.0" - pure-color "^1.2.0" - -react-chartjs-2@^4.0.1: - version "4.3.1" - resolved "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-4.3.1.tgz" - -react-dom@^16.13.1: - version "16.14.0" - resolved "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz" - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - scheduler "^0.19.1" - -react-fast-compare@^3.0.1, react-fast-compare@^3.1.1: - version "3.2.0" - resolved "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz" - -react-google-tag-manager@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/react-google-tag-manager/-/react-google-tag-manager-2.2.1.tgz" - -react-helmet@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz" - dependencies: - object-assign "^4.1.1" - prop-types "^15.7.2" - react-fast-compare "^3.1.1" - react-side-effect "^2.1.0" - -react-is@^16.13.0, react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: - version "16.13.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" - -react-jazzicon@^0.1.3: - version "0.1.3" - resolved "https://registry.npmjs.org/react-jazzicon/-/react-jazzicon-0.1.3.tgz" - dependencies: - color "^0.11.0" - mersenne-twister "^1.1.0" - prop-types "^15.5.10" - -react-json-view@^1.21.3: - version "1.21.3" - resolved "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz" - dependencies: - flux "^4.0.1" - react-base16-styling "^0.6.0" - react-lifecycles-compat "^3.0.4" - react-textarea-autosize "^8.3.2" - -react-lifecycles-compat@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz" - -react-loadingg@^1.7.2: - version "1.7.2" - resolved "https://registry.npmjs.org/react-loadingg/-/react-loadingg-1.7.2.tgz" - dependencies: - styled-components "^4.3.2" - -react-popper@^2.2.4: - version "2.3.0" - resolved "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz" - dependencies: - react-fast-compare "^3.0.1" - warning "^4.0.2" - -react-pose@^4.0.10: - version "4.0.10" - resolved "https://registry.npmjs.org/react-pose/-/react-pose-4.0.10.tgz" - dependencies: - "@emotion/is-prop-valid" "^0.7.3" - hey-listen "^1.0.5" - popmotion-pose "^3.4.10" - tslib "^1.10.0" - -react-responsive-pagination@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/react-responsive-pagination/-/react-responsive-pagination-1.8.0.tgz#adb4f5536b24041767f5c7a8998c73a22edfa895" - dependencies: - prop-types "^15.8.1" - resize-observer-polyfill "^1.5.1" - -react-router-dom@^6.4.3: - version "6.4.3" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.4.3.tgz#70093b5f65f85f1df9e5d4182eb7ff3a08299275" - dependencies: - "@remix-run/router" "1.0.3" - react-router "6.4.3" - -react-router@6.4.3: - version "6.4.3" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.4.3.tgz#9ed3ee4d6e95889e9b075a5d63e29acc7def0d49" - dependencies: - "@remix-run/router" "1.0.3" - -react-router@^3.2.1: - version "3.2.6" - resolved "https://registry.npmjs.org/react-router/-/react-router-3.2.6.tgz" - dependencies: - create-react-class "^15.5.1" - history "^3.0.0" - hoist-non-react-statics "^3.3.2" - invariant "^2.2.1" - loose-envify "^1.2.0" - prop-types "^15.7.2" - react-is "^16.13.0" - warning "^3.0.0" - -react-scroll-up@^1.3.3: - version "1.3.7" - resolved "https://registry.npmjs.org/react-scroll-up/-/react-scroll-up-1.3.7.tgz" - dependencies: - detect-passive-events "^2.0.2" - object-assign "^4.0.1" - prop-types "^15.5.8" - tween-functions "^1.1.0" - -react-showdown@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/react-showdown/-/react-showdown-2.3.1.tgz" - dependencies: - domhandler "^4.0.0" - htmlparser2 "^6.0.1" - showdown "^1.9.1" - -react-side-effect@^2.1.0: - version "2.1.2" - resolved "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.2.tgz" - -react-sidebar@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/react-sidebar/-/react-sidebar-3.0.2.tgz" - dependencies: - "@babel/runtime" ">=7.0.0-beta.56" - prop-types "^15.6.2" - -react-textarea-autosize@^8.3.2: - version "8.3.4" - resolved "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz" - dependencies: - "@babel/runtime" "^7.10.2" - use-composed-ref "^1.3.0" - use-latest "^1.2.1" - -react-toastify@^9.0.8: - version "9.0.8" - resolved "https://registry.yarnpkg.com/react-toastify/-/react-toastify-9.0.8.tgz#3876c89fc6211a29027b3075010b5ec39ebe4f7e" - dependencies: - clsx "^1.1.1" - -react-transition-group@^4.4.2: - version "4.4.5" - resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz" - dependencies: - "@babel/runtime" "^7.5.5" - dom-helpers "^5.0.1" - loose-envify "^1.4.0" - prop-types "^15.6.2" - -react@^16.14.0: - version "16.14.0" - resolved "https://registry.npmjs.org/react/-/react-16.14.0.tgz" - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - -reactstrap@^9.1.5: - version "9.1.5" - resolved "https://registry.yarnpkg.com/reactstrap/-/reactstrap-9.1.5.tgz#d52343ebc244dd4bb82ce272c69640c8146952bf" - dependencies: - "@babel/runtime" "^7.12.5" - "@popperjs/core" "^2.6.0" - classnames "^2.2.3" - prop-types "^15.5.8" - react-popper "^2.2.4" - react-transition-group "^4.4.2" - -readable-stream@^2.0.0, readable-stream@^2.3.3, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.1.1, readable-stream@^3.5.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -regenerator-runtime@^0.10.5: - version "0.10.5" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz" - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz" - -regenerator-runtime@^0.13.10, regenerator-runtime@^0.13.4: - version "0.13.10" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee" - -regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: - version "1.4.3" - resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz" - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - functions-have-names "^1.2.2" - -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" - -requizzle@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.3.tgz#4675c90aacafb2c036bd39ba2daa4a1cb777fded" - dependencies: - lodash "^4.17.14" - -resize-observer-polyfill@^1.5.1: - version "1.5.1" - resolved "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" - -resolve@1.12.0: - version "1.12.0" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz" - dependencies: - path-parse "^1.0.6" - -resolve@^1.1.6, resolve@^1.12.0, resolve@^1.20.0, resolve@^1.22.0: - version "1.22.1" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^2.0.0-next.3: - version "2.0.0-next.4" - resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz" - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz" - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -retry-request@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/retry-request/-/retry-request-5.0.1.tgz" - dependencies: - debug "^4.1.1" - extend "^3.0.2" - -retry@0.13.1: - version "0.13.1" - resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" - -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" - dependencies: - glob "^7.1.3" - -rimraf@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -robust-predicates@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz" - -rollup-plugin-typescript2@^0.25.2: - version "0.25.3" - resolved "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.25.3.tgz" - dependencies: - find-cache-dir "^3.0.0" - fs-extra "8.1.0" - resolve "1.12.0" - rollup-pluginutils "2.8.1" - tslib "1.10.0" - -rollup-pluginutils@2.8.1: - version "2.8.1" - resolved "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz" - dependencies: - estree-walker "^0.6.1" - -rollup@^3.2.5: - version "3.2.5" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.2.5.tgz#9452168ac083218c8212bf53d2448bdc6b8b0de7" - optionalDependencies: - fsevents "~2.3.2" - -run-async@^2.2.0: - version "2.4.1" - resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" - -rw@1: - version "1.3.3" - resolved "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz" - -rxjs@6, rxjs@^6.4.0: - version "6.6.7" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" - dependencies: - tslib "^1.9.0" - -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.0: - version "2.1.2" - resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - -scheduler@^0.19.1: - version "0.19.1" - resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz" - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -secp256k1@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz" - dependencies: - elliptic "^6.5.4" - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - -semver@^6.0.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - -semver@^7.1.2: - version "7.3.8" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" - dependencies: - lru-cache "^6.0.0" - -semver@^7.3.5: - version "7.3.7" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz" - dependencies: - lru-cache "^6.0.0" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" - -setimmediate@^1.0.4, setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" - dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" - -showdown@^1.9.1: - version "1.9.1" - resolved "https://registry.npmjs.org/showdown/-/showdown-1.9.1.tgz" - dependencies: - yargs "^14.2" - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.2: - version "3.0.7" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" - -simpl-schema@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/simpl-schema/-/simpl-schema-3.0.1.tgz#c30a8bd69d5bf86c044915dc2ab00b0b1344c60f" - dependencies: - clone "^2.1.2" - mongo-object "^3.0.0" - -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz" - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - -source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - -split2@^2.1.0: - version "2.2.0" - resolved "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz" - dependencies: - through2 "^2.0.2" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - -stream-browserify@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz" - dependencies: - inherits "~2.0.4" - readable-stream "^3.5.0" - -stream-events@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz" - dependencies: - stubs "^3.0.0" - -stream-http@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz" - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.4" - readable-stream "^3.6.0" - xtend "^4.0.2" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz" - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz" - -string-width@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string.prototype.matchall@^4.0.7: - version "4.0.7" - resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz" - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.1" - side-channel "^1.0.4" - -string.prototype.trimend@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz" - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - -string.prototype.trimstart@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz" - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - -string_decoder@^1.1.1, string_decoder@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz" - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - dependencies: - ansi-regex "^5.0.1" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" - -strip-json-comments@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" - -strip-json-comments@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - -stubs@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz" - -style-value-types@^3.0.6, style-value-types@^3.1.7: - version "3.2.0" - resolved "https://registry.npmjs.org/style-value-types/-/style-value-types-3.2.0.tgz" - dependencies: - hey-listen "^1.0.8" - tslib "^1.10.0" - -styled-components@^4.3.2, styled-components@^4.4.1: - version "4.4.1" - resolved "https://registry.npmjs.org/styled-components/-/styled-components-4.4.1.tgz" - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@emotion/is-prop-valid" "^0.8.1" - "@emotion/unitless" "^0.7.0" - babel-plugin-styled-components ">= 1" - css-to-react-native "^2.2.2" - memoize-one "^5.0.0" - merge-anything "^2.2.4" - prop-types "^15.5.4" - react-is "^16.6.0" - stylis "^3.5.0" - stylis-rule-sheet "^0.0.10" - supports-color "^5.5.0" - -stylefire@^7.0.1: - version "7.0.3" - resolved "https://registry.npmjs.org/stylefire/-/stylefire-7.0.3.tgz" - dependencies: - "@popmotion/popcorn" "^0.4.4" - framesync "^4.0.0" - hey-listen "^1.0.8" - style-value-types "^3.1.7" - tslib "^1.10.0" - -stylis-rule-sheet@^0.0.10: - version "0.0.10" - resolved "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz" - -stylis@^3.5.0: - version "3.5.4" - resolved "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz" - -supercop.js@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/supercop.js/-/supercop.js-2.0.1.tgz" - -supports-color@^5.3.0, supports-color@^5.5.0: - version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" - -table@^5.2.3: - version "5.4.6" - resolved "https://registry.npmjs.org/table/-/table-5.4.6.tgz" - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" - -taffydb@2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268" - -teeny-request@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/teeny-request/-/teeny-request-8.0.0.tgz" - dependencies: - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - node-fetch "^2.6.1" - stream-events "^1.0.5" - uuid "^8.0.0" - -tendermint@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/tendermint/-/tendermint-5.0.2.tgz" - dependencies: - axios "^0.19.0" - camelcase "^4.0.0" - create-hash "^1.1.3" - debug "^3.1.0" - json-stable-stringify "^1.0.1" - ndjson "^1.5.0" - old "^0.1.3" - pumpify "^1.3.5" - supercop.js "^2.0.1" - varstruct "^6.1.1" - websocket-stream "^5.1.1" - -text-decoding@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/text-decoding/-/text-decoding-1.0.0.tgz" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - -three@^0.144.0: - version "0.144.0" - resolved "https://registry.yarnpkg.com/three/-/three-0.144.0.tgz#2818517169f8ff94eea5f664f6ff1fcdcd436cc8" - -three@^0.95.0: - version "0.95.0" - resolved "https://registry.npmjs.org/three/-/three-0.95.0.tgz" - -through2@^2.0.2, through2@^2.0.3: - version "2.0.5" - resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through@^2.3.6: - version "2.3.8" - resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - -timers-browserify@^2.0.12: - version "2.0.12" - resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz" - dependencies: - setimmediate "^1.0.4" - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" - dependencies: - os-tmpdir "~1.0.2" - -tmp@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" - dependencies: - rimraf "^3.0.0" - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" - -tooltip.js@^1.3.3: - version "1.3.3" - resolved "https://registry.npmjs.org/tooltip.js/-/tooltip.js-1.3.3.tgz" - dependencies: - popper.js "^1.0.2" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" - -ts-essentials@^1.0.3: - version "1.0.4" - resolved "https://registry.npmjs.org/ts-essentials/-/ts-essentials-1.0.4.tgz" - -tsconfig-paths@^3.14.1: - version "3.14.1" - resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz" - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@1.10.0: - version "1.10.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz" - -tslib@^1.10.0, tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - -tslib@^2.1.0: - version "2.4.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" - -tslib@~2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz" - -tty-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz" - -tween-functions@^1.1.0: - version "1.2.0" - resolved "https://registry.npmjs.org/tween-functions/-/tween-functions-1.2.0.tgz" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" - dependencies: - prelude-ls "~1.1.2" - -type-detect@^4.0.0, type-detect@^4.0.5: - version "4.0.8" - resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" - -typescript@^3.7.2: - version "3.9.10" - resolved "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz" - -typesettable@4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/typesettable/-/typesettable-4.1.0.tgz" - -ua-parser-js@^0.7.30: - version "0.7.31" - resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz" - -uc.micro@^1.0.1, uc.micro@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" - -uglify-js@^3.7.7: - version "3.17.4" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" - -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz" - -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - -underscore@~1.13.2: - version "1.13.6" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" - dependencies: - punycode "^2.1.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz" - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use-composed-ref@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz" - -use-isomorphic-layout-effect@^1.1.1: - version "1.1.2" - resolved "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz" - -use-latest@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz" - dependencies: - use-isomorphic-layout-effect "^1.1.1" - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - -util@^0.12.0, util@^0.12.4: - version "0.12.4" - resolved "https://registry.npmjs.org/util/-/util-0.12.4.tgz" - dependencies: - inherits "^2.0.3" - is-arguments "^1.0.4" - is-generator-function "^1.0.7" - is-typed-array "^1.1.3" - safe-buffer "^5.1.2" - which-typed-array "^1.1.2" - -uuid@^8.0.0: - version "8.3.2" - resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" - -uuid@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" - -varstruct@^6.1.1: - version "6.1.3" - resolved "https://registry.npmjs.org/varstruct/-/varstruct-6.1.3.tgz" - dependencies: - int53 "^0.2.4" - safe-buffer "^5.1.1" - -vm-browserify@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz" - -voca@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/voca/-/voca-1.4.0.tgz" - -warning@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz" - dependencies: - loose-envify "^1.0.0" - -warning@^4.0.2: - version "4.0.3" - resolved "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz" - dependencies: - loose-envify "^1.0.0" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" - -websocket-driver@>=0.5.1: - version "0.7.4" - resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" - -websocket-stream@^5.1.1: - version "5.5.2" - resolved "https://registry.npmjs.org/websocket-stream/-/websocket-stream-5.5.2.tgz" - dependencies: - duplexify "^3.5.1" - inherits "^2.0.1" - readable-stream "^2.3.3" - safe-buffer "^5.1.2" - ws "^3.2.0" - xtend "^4.0.0" - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" - -which-typed-array@^1.1.2: - version "1.1.8" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.8.tgz#0cfd53401a6f334d90ed1125754a42ed663eb01f" - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - es-abstract "^1.20.0" - for-each "^0.3.3" - has-tostringtag "^1.0.0" - is-typed-array "^1.1.9" - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - dependencies: - isexe "^2.0.0" - -word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz" - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - -write@1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/write/-/write-1.0.3.tgz" - dependencies: - mkdirp "^0.5.1" - -ws@^3.2.0: - version "3.3.3" - resolved "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz" - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" - -xmlcreate@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.4.tgz#0c5ab0f99cdd02a81065fa9cd8f8ae87624889be" - -xmlhttprequest@1: - version "1.8.0" - resolved "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz" - -xtend@^4.0.0, xtend@^4.0.2, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" - -yallist@^2.0.0: - version "2.1.2" - resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - -yargs-parser@^15.0.1: - version "15.0.3" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz" - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" - -yargs@^14.2: - version "14.2.3" - resolved "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz" - dependencies: - cliui "^5.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^15.0.1" - -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" diff --git a/easel/pubspec.yaml b/easel/pubspec.yaml index 2d541ad5e5..3a5e462c73 100644 --- a/easel/pubspec.yaml +++ b/easel/pubspec.yaml @@ -36,7 +36,7 @@ dependencies: collection: ^1.16.0 cupertino_icons: ^1.0.2 dartz: ^0.10.0 - detectable_text_field: ^2.0.4 + detectable_text_field: ^3.0.2 device_preview: 1.1.0 dio: ^5.0.1 easy_localization: diff --git a/easel/test/extensions/size_extensions.dart b/easel/test/extensions/size_extensions.dart index d643d3ab2d..32a1375beb 100644 --- a/easel/test/extensions/size_extensions.dart +++ b/easel/test/extensions/size_extensions.dart @@ -7,21 +7,30 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:shared_preferences/shared_preferences.dart'; extension SetScreenSize on WidgetTester { - Future setScreenSize({double width = 480, double height = 965, double pixelDensity = 1}) async { + Future setScreenSize( + {double width = 480, + double height = 965, + double pixelDensity = 1}) async { final size = Size(width, height); await binding.setSurfaceSize(size); view.physicalSize = size; view.devicePixelRatio = pixelDensity; } - Future testAppForWidgetTesting(Widget child, {Duration duration = Duration.zero}) async { + Future testAppForWidgetTesting(Widget child, + {Duration duration = Duration.zero}) async { SharedPreferences.setMockInitialValues({}); await EasyLocalization.ensureInitialized(); return pumpWidget(Builder(builder: (context) { return EasyLocalization( - supportedLocales: const [Locale('en', 'US'), Locale('ru', 'RU'), Locale('es'), Locale('de')], + supportedLocales: const [ + Locale('en', 'US'), + Locale('ru', 'RU'), + Locale('es'), + Locale('de') + ], path: 'i18n', fallbackLocale: const Locale('en'), useOnlyLangCode: true, @@ -36,7 +45,8 @@ extension SetScreenSize on WidgetTester { builder: (context, widget) { ScreenUtil.init(context); return MediaQuery( - data: MediaQuery.of(context).copyWith(textScaler: TextScaler.noScaling), + data: MediaQuery.of(context) + .copyWith(textScaler: TextScaler.noScaling), child: widget!, ); }, @@ -45,6 +55,6 @@ extension SetScreenSize on WidgetTester { }, ), ); - }), duration); + })); } } diff --git a/wallet/README.md b/wallet/README.md index 76871be19e..784552d8e6 100644 --- a/wallet/README.md +++ b/wallet/README.md @@ -6,6 +6,10 @@ Pylons Wallet This project is a starting point for a Flutter application. +1) Req .prod_env file and place it in /wallet/env/ dir. +2) Req GoogleService-Info.plist file and place it in /wallet/ios/runner dir. +3) Req Google-services.json file and place it in /wallet/android/app dir. +4) Req to add generated simulator Debug token to be added in firebase console>ios debug. diff --git a/wallet/ios/Flutter/AppFrameworkInfo.plist b/wallet/ios/Flutter/AppFrameworkInfo.plist index 9625e105df..7c56964006 100644 --- a/wallet/ios/Flutter/AppFrameworkInfo.plist +++ b/wallet/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 11.0 + 12.0 diff --git a/wallet/ios/Runner.xcodeproj/project.pbxproj b/wallet/ios/Runner.xcodeproj/project.pbxproj index b2f6f33c71..e9eaeb3bd3 100644 --- a/wallet/ios/Runner.xcodeproj/project.pbxproj +++ b/wallet/ios/Runner.xcodeproj/project.pbxproj @@ -189,7 +189,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { @@ -435,7 +435,7 @@ ENABLE_BITCODE = NO; GOOGLE_SERVICE_PATH = ""; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -574,7 +574,7 @@ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; GOOGLE_SERVICE_PATH = ""; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -606,7 +606,7 @@ ENABLE_BITCODE = NO; GOOGLE_SERVICE_PATH = ""; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -692,7 +692,7 @@ ENABLE_BITCODE = NO; GOOGLE_SERVICE_PATH = "${SRCROOT}/Runner/Firebase/prod/GoogleService-Info.plist"; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -776,7 +776,7 @@ ENABLE_BITCODE = NO; GOOGLE_SERVICE_PATH = "${SRCROOT}/Runner/Firebase/prod/GoogleService-Info.plist"; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -862,7 +862,7 @@ ENABLE_BITCODE = NO; GOOGLE_SERVICE_PATH = "${SRCROOT}/Runner/Firebase/development/GoogleService-Info.plist"; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -946,7 +946,7 @@ ENABLE_BITCODE = NO; GOOGLE_SERVICE_PATH = "${SRCROOT}/Runner/Firebase/development/GoogleService-Info.plist"; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/wallet/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/wallet/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 4ba725f4c3..498aa0d19e 100644 --- a/wallet/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/wallet/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ Bool { - // Uncomment while using ios simulator -// let providerFactory = AppCheckDebugProviderFactory() -// AppCheck.setAppCheckProviderFactory(providerFactory) + // Uncomment while using ios simulator + + #if DEBUG + let providerFactory = AppCheckDebugProviderFactory() + AppCheck.setAppCheckProviderFactory(providerFactory) + FirebaseApp.configure() + #endif + // Register Flutter plugins GeneratedPluginRegistrant.register(with: self) FlutterDownloaderPlugin.setPluginRegistrantCallback(registerPlugins) return super.application(application, didFinishLaunchingWithOptions: launchOptions) diff --git a/wallet/lib/main_prod.dart b/wallet/lib/main_prod.dart index 5fc79e3847..bc5c2d44ad 100644 --- a/wallet/lib/main_prod.dart +++ b/wallet/lib/main_prod.dart @@ -17,7 +17,8 @@ import 'package:pylons_wallet/components/loading.dart'; import 'package:pylons_wallet/pylons_app.dart'; import 'package:pylons_wallet/utils/base_env.dart'; import 'package:pylons_wallet/utils/constants.dart'; -import 'package:pylons_wallet/utils/dependency_injection/dependency_injection.dart' as di; +import 'package:pylons_wallet/utils/dependency_injection/dependency_injection.dart' + as di; import 'package:pylons_wallet/utils/extension.dart'; import 'package:pylons_wallet/utils/types.dart'; @@ -31,7 +32,10 @@ Future main() async { await FlutterDownloader.initialize(ignoreSsl: true); await EasyLocalization.ensureInitialized(); await Firebase.initializeApp(); - await FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(!kDebugMode); + await FirebaseAppCheck.instance.activate( + appleProvider: AppleProvider.debug,); + await FirebaseCrashlytics.instance + .setCrashlyticsCollectionEnabled(!kDebugMode); PlatformDispatcher.instance.onError = (error, stack) { FirebaseCrashlytics.instance.recordError(error, stack, fatal: true); @@ -53,7 +57,8 @@ Future main() async { FirebaseAnalytics.instance.logEvent(name: event.getEventName()); }, onLogError: (exception, {bool fatal = false, StackTrace? stack}) { - FirebaseCrashlytics.instance.recordError(exception, stack, fatal: fatal); + FirebaseCrashlytics.instance + .recordError(exception, stack, fatal: fatal); }, onLogMessage: logMessage, ); @@ -86,14 +91,17 @@ Future main() async { } Future initializeAppCheck() async { - await FirebaseAppCheck.instance.activate(webRecaptchaSiteKey: 'recaptcha-v3-site-key'); + await FirebaseAppCheck.instance.activate( + webProvider: ReCaptchaV3Provider('recaptcha-v3-site-key'), + ); // FirebaseAppCheck when enforced would block incoming requests from Android and iOS in debug mode. // This kDebugMode check gets a android debug token from FirebaseAppCheck which can then be added on the Firebase console // iOS debug token from FirebaseAppCheck automatically get without method channel when run on debug mode which can then be added on the Firebase console // So that the application can be allowed to access to Firebase AppCheck token in debug mode. - if (kDebugMode && Platform.isAndroid) { +if (kDebugMode && Platform.isAndroid) { try { - const MethodChannel methodChannel = MethodChannel(kGetFirebaseAppCheckTokenMethodChannelKey); + const MethodChannel methodChannel = + MethodChannel(kGetFirebaseAppCheckTokenMethodChannelKey); await methodChannel.invokeMethod(kGetFirebaseAppCheckDebugTokenKey); } catch (e) { e.toString().show(); @@ -105,6 +113,7 @@ class MyHttpOverrides extends HttpOverrides { @override HttpClient createHttpClient(SecurityContext? context) { return super.createHttpClient(context) - ..badCertificateCallback = (X509Certificate cert, String host, int port) => true; + ..badCertificateCallback = + (X509Certificate cert, String host, int port) => true; } } diff --git a/wallet/lib/pages/image_picker.dart b/wallet/lib/pages/image_picker.dart index bec03ce078..21ba318eb7 100644 --- a/wallet/lib/pages/image_picker.dart +++ b/wallet/lib/pages/image_picker.dart @@ -10,8 +10,14 @@ import 'package:pylons_wallet/pages/detailed_asset_view/widgets/create_trade_bot import 'package:pylons_wallet/services/repository/repository.dart'; import 'package:pylons_wallet/utils/constants.dart'; -Future pickImageFromGallery(double maxHeight, double maxWidth, int imageQuality, BuildContext context) async { - final pickImageEither = await GetIt.I.get().pickImageFromGallery(PickImageModel(maxHeight: maxHeight, maxWidth: maxWidth, imageQuality: imageQuality, imageSource: ImageSource.gallery)); +Future pickImageFromGallery(double maxHeight, double maxWidth, + int imageQuality, BuildContext context) async { + final pickImageEither = await GetIt.I.get().pickImageFromGallery( + PickImageModel( + maxHeight: maxHeight, + maxWidth: maxWidth, + imageQuality: imageQuality, + imageSource: ImageSource.gallery)); if (pickImageEither.isLeft()) { // ignore: use_build_context_synchronously @@ -36,7 +42,6 @@ Future pickImageFromGallery(double maxHeight, double maxWidth, int imageQ Future cropImage(String path) async { return ImageCropper().cropImage( sourcePath: path, - aspectRatioPresets: [CropAspectRatioPreset.square, CropAspectRatioPreset.ratio3x2, CropAspectRatioPreset.original, CropAspectRatioPreset.ratio4x3, CropAspectRatioPreset.ratio16x9], uiSettings: [ AndroidUiSettings( toolbarTitle: kStripeMerchantDisplayName, diff --git a/wallet/lib/pages/stripe_screen.dart b/wallet/lib/pages/stripe_screen.dart index b104e69f3f..e5d8e7426b 100644 --- a/wallet/lib/pages/stripe_screen.dart +++ b/wallet/lib/pages/stripe_screen.dart @@ -48,10 +48,12 @@ class _StripeScreenState extends State { Future loadLoginLink() async { final loading = Loading()..showLoading(); - final account_response = await GetIt.I.get().handleStripeAccountLink(); + final account_response = + await GetIt.I.get().handleStripeAccountLink(); loading.dismiss(); account_response.fold((fail) => {fail.message.show()}, (accountlink) { - _controller.loadUrl(urlRequest: URLRequest(url: Uri.parse(accountlink))); + _controller.loadUrl( + urlRequest: URLRequest(url: WebUri.uri(Uri.parse(accountlink)))); }); return true; @@ -73,7 +75,8 @@ class _StripeScreenState extends State { top: 40.h, bottom: 0, child: InAppWebView( - initialUrlRequest: URLRequest(url: Uri.parse(widget.url)), + initialUrlRequest: + URLRequest(url: WebUri.uri(Uri.parse(widget.url))), onWebViewCreated: (InAppWebViewController webViewController) { _controller = webViewController; }, @@ -88,7 +91,8 @@ class _StripeScreenState extends State { getAccountLinkAndRedirect(); return NavigationActionPolicy.CANCEL; } - if (urlInString.contains(baseEnv.baseStripeCallbackRefreshUrl)) { + if (urlInString + .contains(baseEnv.baseStripeCallbackRefreshUrl)) { getAccountLinkAndRedirect(); return NavigationActionPolicy.CANCEL; } @@ -103,9 +107,11 @@ class _StripeScreenState extends State { } return NavigationActionPolicy.ALLOW; }, - androidOnPermissionRequest: - (InAppWebViewController controller, String origin, List resources) async { - return PermissionRequestResponse(resources: resources, action: PermissionRequestResponseAction.GRANT); + androidOnPermissionRequest: (InAppWebViewController controller, + String origin, List resources) async { + return PermissionRequestResponse( + resources: resources, + action: PermissionRequestResponseAction.GRANT); }, initialOptions: InAppWebViewGroupOptions( crossPlatform: InAppWebViewOptions( @@ -148,10 +154,12 @@ class _StripeScreenState extends State { Future getAccountLinkAndRedirect() async { final loading = Loading()..showLoading(); - final account_response = await GetIt.I.get().handleStripeAccountLink(); + final account_response = + await GetIt.I.get().handleStripeAccountLink(); loading.dismiss(); account_response.fold((fail) => {fail.message.show()}, (accountlink) { - _controller.loadUrl(urlRequest: URLRequest(url: Uri.parse(accountlink))); + _controller.loadUrl( + urlRequest: URLRequest(url: WebUri.uri(Uri.parse(accountlink)))); }); } } diff --git a/wallet/pubspec.yaml b/wallet/pubspec.yaml index dbe049c6c7..fd1d85f7ca 100644 --- a/wallet/pubspec.yaml +++ b/wallet/pubspec.yaml @@ -11,41 +11,41 @@ dependencies: path: pkgs/pdf_viewer-master alan: path: pkgs/alan - audio_video_progress_bar: ^1.0.0 + audio_video_progress_bar: ^2.0.3 auto_size_text: ^3.0.0 backdrop: ^0.9.0 bottom_drawer: ^0.0.3 cached_network_image: - cloud_firestore: ^4.3.0 + cloud_firestore: ^5.0.2 cupertino_icons: ^1.0.3 dartz: ^0.10.1 decimal: ^2.3.0 - detectable_text_field: ^2.0.3 + detectable_text_field: ^3.0.2 dotted_border: ^2.0.0+2 easy_localization: ^3.0.1 equatable: ^2.0.5 expandable: ^5.0.1 firebase_analytics: - firebase_app_check: ^0.1.1+7 - firebase_core: ^2.4.0 - firebase_crashlytics: ^3.0.8 - firebase_dynamic_links: ^5.0.10 - firebase_messaging: ^14.2.0 - firebase_remote_config: ^3.0.8 + firebase_app_check: ^0.3.0+2 + firebase_core: ^3.1.1 + firebase_crashlytics: ^4.0.2 + firebase_dynamic_links: ^6.0.2 + firebase_messaging: ^15.0.2 + firebase_remote_config: ^5.0.2 fixnum: ^1.0.0 floor: ^1.3.0 flutter: sdk: flutter flutter_dotenv: ^5.0.2 flutter_downloader: ^1.9.1 - flutter_inappwebview: ^5.7.2+2 - flutter_local_notifications: ^13.0.0 + flutter_inappwebview: ^6.0.0 + flutter_local_notifications: ^17.2.1 flutter_localizations: sdk: flutter flutter_mobx: ^2.0.1 flutter_screenutil: ^5.5.4 flutter_secure_storage: ^8.0.0 - flutter_staggered_grid_view: ^0.6.2 + flutter_staggered_grid_view: ^0.7.0 flutter_sticky_header: ^0.6.0 flutter_stripe: flutter_svg: @@ -56,14 +56,14 @@ dependencies: focus_detector: ^2.0.1 get_it: ^7.2.0 google_sign_in: ^6.0.2 - googleapis: ^11.1.0 + googleapis: ^13.2.0 grpc: ^3.0.2 - home_widget: ^0.2.0+1 + home_widget: ^0.6.0 http: icloud_storage: ^2.0.0 image: ^4.0.12 image_cropper: - image_picker: ^0.8.5+3 + image_picker: ^1.1.2 in_app_purchase: ^3.0.7 internet_connection_checker: ^1.0.0+1 intl: @@ -72,11 +72,11 @@ dependencies: local_auth: ^2.1.2 mobile_scanner: ^5.1.1 mobx: ^2.0.3 - modal_bottom_sheet: ^2.0.0 + modal_bottom_sheet: ^3.0.0 model_viewer_plus: path: pkgs/model_viewer_plus.dart-master path_provider: ^2.0.11 - permission_handler: ^10.0.1 + permission_handler: ^11.3.1 provider: ^6.0.3 qr_flutter: ^4.0.0