├── .gitignore ├── .prettierrc ├── LICENSE ├── README.md ├── package.json ├── src ├── constant.ts ├── hooks.ts ├── index.ts ├── ipfsApi.ts ├── query.ts └── utils.ts ├── tsconfig.json ├── tslint.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env.test 73 | 74 | # parcel-bundler cache (https://parceljs.org/) 75 | .cache 76 | 77 | # Next.js build output 78 | .next 79 | 80 | # Nuxt.js build / generate output 81 | .nuxt 82 | dist 83 | 84 | # Gatsby files 85 | .cache/ 86 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 87 | # https://nextjs.org/blog/next-9-1#public-directory-support 88 | # public 89 | 90 | # vuepress build output 91 | .vuepress/dist 92 | 93 | build/ 94 | 95 | # Serverless directories 96 | .serverless/ 97 | 98 | # FuseBox cache 99 | .fusebox/ 100 | 101 | # DynamoDB Local files 102 | .dynamodb/ 103 | 104 | # TernJS port file 105 | .tern-port 106 | 107 | .idea/ 108 | 109 | .DS_Store 110 | 111 | /lib 112 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 80, 3 | "parser": "typescript", 4 | "singleQuote": true, 5 | "useTabs": true, 6 | "tabWidth": 2, 7 | "trailingComma": "none", 8 | "arrowParens": "avoid" 9 | } 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Litentry SDK 2 | 3 | This library provides useful functions to interact with the state on Litentry and user identity data related IPFS Storage. 4 | 5 | It helps developer to build client side decentralized applications 6 | 7 | ## Getting Start 8 | 9 | ``` 10 | yarn add litentry-sdk 11 | 12 | import {hooks, query, ipfsApi} from 'litentry-sdk'; 13 | 14 | ``` 15 | 16 | ## React Hooks for Litentry 17 | 18 | ```typescript 19 | //Api loading State 20 | hooks.useApi(): boolean 21 | 22 | //Get Identities, use updatedIndex to force refresh 23 | hooks.useIdentities(account: string, updateIndex: number): string[] 24 | 25 | //Get Identity current owned tokens 26 | hooks.useTokens(identityHash: string): string[] 27 | 28 | //Get the owner of the token 29 | hooks.useTokenOwner(tokenHash: string): string 30 | 31 | //Get account balance of LTT 32 | hooks.useBalance(account: string): string 33 | 34 | //Help async function for query issuer Identity of the token 35 | hooks.getTokenIdentity(tokenHash: string): Promise] 36 | 37 | //Help async function for getting the last issued identity 38 | hooks.getLastIdentity(account: string): Promise 39 | 40 | // react hooks for using native extrinsics on Litentry 41 | hooks.useExtrinsics(): { 42 | registerIdentity: SubmittableExtrinsicFunction<'promise'>; 43 | issueToken: SubmittableExtrinsicFunction<'promise'>; 44 | } 45 | 46 | ``` 47 | 48 | ## Identity Data Query 49 | 50 | Identity data are stored in the IPFS network and cached in Litentry GraphQL data server. 51 | 52 | functions to query the latest data on IPFS: 53 | 54 | ```typescript 55 | ipfsApi.getAddress(identity: string): Promise 56 | 57 | ipfsApi.getData(identityId: string): Promise 58 | 59 | ipfsApi.registerIdentity(identity: string): void 60 | ``` 61 | 62 | functions to construct query http request from GraphQL: 63 | 64 | ```typescript 65 | query.getData(identity: string): string 66 | 67 | query.setData(identity: string, data: string): string 68 | 69 | query.method(methodName: string, identity: string): string 70 | ``` 71 | 72 | ## Develop 73 | 74 | ``` 75 | yarn lint:fix 76 | yarn build 77 | ``` 78 | 79 | ## LICENSE 80 | Apache 2.0 81 | 82 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "litentry-sdk", 3 | "version": "1.0.0", 4 | "description": "JS SDK for Building Dapps on Litentry and Substrate", 5 | "main": "index.js", 6 | "files": [ 7 | "lib/**/*", 8 | "lib/*" 9 | ], 10 | "scripts": { 11 | "build": "tsc", 12 | "lint:fix": "prettier --write \"src/*.ts\" \"src/**/*.ts\"", 13 | "lint": "tslint -p tsconfig.json", 14 | "test": "echo \"Error: no test specified\" && exit 1" 15 | }, 16 | "repository": { 17 | "type": "git", 18 | "url": "git+https://github.com/litentry/litentry-sdk.git" 19 | }, 20 | "keywords": [ 21 | "litentry" 22 | ], 23 | "author": "Hanwen Cheng", 24 | "license": "Apache-2.0", 25 | "bugs": { 26 | "url": "https://github.com/litentry/litentry-sdk/issues" 27 | }, 28 | "homepage": "https://github.com/litentry/litentry-sdk#readme", 29 | "dependencies": { 30 | "@polkadot/api": "^1.30.1", 31 | "react": "^16.13.1" 32 | }, 33 | "devDependencies": { 34 | "prettier": "^2.1.1", 35 | "tslint": "^6.1.3", 36 | "tslint-config-prettier": "^1.18.0", 37 | "typescript": "^4.0.2" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/constant.ts: -------------------------------------------------------------------------------- 1 | export const graphqlServer = 'graphql.litentry.com'; 2 | export const litentryTypes = { 3 | Address: 'AccountId', 4 | LookupSource: 'AccountId', 5 | IdentityOf: { 6 | id: 'Hash' 7 | }, 8 | AuthorizedTokenOf: { 9 | id: 'Hash', 10 | cost: 'Balance', 11 | data: 'u64', 12 | datatype: 'u64', 13 | expired: 'u64' 14 | } 15 | }; 16 | 17 | export const networkSpecs = { 18 | decimals: 15, 19 | genesisHash: '0x004db9e47072af71639ed82c43fef1972d324178cb23330a04eac5c3a19b74f8', 20 | pathId: 'litentry', 21 | prefix: 0, 22 | unit: 'LTT' 23 | } 24 | -------------------------------------------------------------------------------- /src/hooks.ts: -------------------------------------------------------------------------------- 1 | import { ApiPromise, WsProvider } from '@polkadot/api'; 2 | import { SubmittableExtrinsicFunction } from '@polkadot/api/types'; 3 | import { useEffect, useState } from 'react'; 4 | import { u64 } from '@polkadot/types'; 5 | import { cryptoWaitReady } from '@polkadot/util-crypto'; 6 | import { litentryTypes } from './constant'; 7 | import { parseBalance } from './utils'; 8 | 9 | const wsProvider = new WsProvider('wss://ws.litentry.com/'); 10 | let hooks: ApiPromise; 11 | const encoder = new TextEncoder(); 12 | 13 | export function useApi(): boolean { 14 | const [isApiReady, setApiReady] = useState(false); 15 | useEffect(() => { 16 | async function init() { 17 | try { 18 | console.log('start connection'); 19 | hooks = await ApiPromise.create({ 20 | provider: wsProvider, 21 | types: litentryTypes 22 | }); 23 | await cryptoWaitReady(); 24 | setApiReady(true); 25 | } catch (error) { 26 | console.log('ws connect error: ', error); 27 | } 28 | } 29 | init(); 30 | }, []); 31 | return isApiReady; 32 | } 33 | 34 | export async function getLastIdentity(account: string): Promise { 35 | if (account === null || account === '') return; 36 | const totalNumbersRaw: u64 = await hooks.query.litentry.ownedIdentitiesCount< 37 | u64 38 | >(account); 39 | const totalNumbers = totalNumbersRaw.toNumber(); 40 | const lastIdentityRaw = await hooks.query.litentry.ownedIdentitiesArray([ 41 | account, 42 | totalNumbers - 1 43 | ]); 44 | return lastIdentityRaw.toString(); 45 | } 46 | 47 | export function useIdentities(account: string, updateIndex: number): string[] { 48 | const [identities, setIdentities] = useState([]); 49 | useEffect(() => { 50 | async function queryTokenIdentity() { 51 | if (account === null || account === '') return; 52 | const totalNumbersRaw: u64 = await hooks.query.litentry.ownedIdentitiesCount< 53 | u64 54 | >(account); 55 | const totalNumbers = totalNumbersRaw.toNumber(); 56 | const a = new Array(totalNumbers).fill(null); 57 | const promises = a.map((_, i) => { 58 | return hooks.query.litentry.ownedIdentitiesArray([account, i]); 59 | }); 60 | console.log('promises are', promises); 61 | const results = await Promise.all(promises); 62 | const unwrappedResult: string[] = results.map(wrappedItem => 63 | wrappedItem.toString() 64 | ); 65 | setIdentities(unwrappedResult); 66 | } 67 | console.log('start fetch identities'); 68 | queryTokenIdentity(); 69 | }, [account, updateIndex]); 70 | return identities; 71 | } 72 | 73 | export function useReceivedTokens(account: string): string[] { 74 | const [tokens, setTokens] = useState([]); 75 | useEffect(() => { 76 | async function fetchTokens() { 77 | if (account === null || account === '') return; 78 | const totalNumbersRaw = await hooks.query.litentry.ownedAuthorizedTokensCount< 79 | u64 80 | >(account); 81 | const totalNumbers = totalNumbersRaw.toNumber(); 82 | const a = new Array(totalNumbers).fill(null); 83 | const promises = a.map((_, i) => { 84 | return hooks.query.litentry.ownedAuthorizedTokensArray([account, i]); 85 | }); 86 | console.log('promises are', promises); 87 | const results = await Promise.all(promises); 88 | const unwrappedResult = results.map(wrappedItem => 89 | wrappedItem.toString() 90 | ); 91 | setTokens(unwrappedResult); 92 | } 93 | fetchTokens(); 94 | }, [account]); 95 | return tokens; 96 | } 97 | 98 | export function useTokens(identityId: string): string[] { 99 | const [tokens, setTokens] = useState([]); 100 | useEffect(() => { 101 | async function fetchTokens() { 102 | if (identityId === null || identityId === '') return; 103 | const totalNumbersRaw = await hooks.query.litentry.ownedAuthorizedTokensCount< 104 | u64 105 | >(identityId); 106 | const totalNumbers = totalNumbersRaw.toNumber(); 107 | const a = new Array(totalNumbers).fill(null); 108 | const promises = a.map((_, i) => { 109 | return hooks.query.litentry.ownedAuthorizedTokensArray([identityId, i]); 110 | }); 111 | console.log('promises are', promises); 112 | const results = await Promise.all(promises); 113 | const unwrappedResult = results.map(wrappedItem => 114 | wrappedItem.toString() 115 | ); 116 | setTokens(unwrappedResult); 117 | } 118 | fetchTokens(); 119 | }, [identityId]); 120 | return tokens; 121 | } 122 | 123 | export function useTokenOwner(tokenId: string): string { 124 | const [owner, setOwner] = useState(''); 125 | useEffect(() => { 126 | async function queryTokenIdentity(token: string) { 127 | const result = await hooks.query.litentry.authorizedTokenIdentity(token); 128 | console.log('get result', result); 129 | if (result.toString() !== '') { 130 | setOwner(result.toString()); 131 | } 132 | } 133 | queryTokenIdentity(tokenId); 134 | }, [tokenId]); 135 | return owner; 136 | } 137 | 138 | export function useBalance(account: string): string { 139 | const [balance, setBalance] = useState('-'); 140 | useEffect(() => { 141 | async function queryAccountBalance() { 142 | const { data } = await hooks.query.system.account(account); 143 | setBalance(parseBalance(data.free.toString())); 144 | } 145 | queryAccountBalance(); 146 | }, [account]); 147 | return balance; 148 | } 149 | 150 | export async function getTokenIdentity(token: string) { 151 | return await hooks.query.litentry.authorizedTokenIdentity(token); 152 | } 153 | 154 | type LitentryExtrinsics = { 155 | registerIdentity: SubmittableExtrinsicFunction<'promise'>; 156 | issueToken: SubmittableExtrinsicFunction<'promise'>; 157 | }; 158 | 159 | export function useExtrinsics(): LitentryExtrinsics { 160 | return { 161 | registerIdentity: hooks.tx.litentry.registerIdentity, 162 | issueToken: hooks.tx.litentry.issueToken 163 | }; 164 | } 165 | 166 | export default { 167 | useApi, 168 | useIdentities, 169 | useTokens, 170 | useTokenOwner, 171 | useBalance, 172 | useExtrinsics, 173 | useReceivedTokens, 174 | getTokenIdentity, 175 | getLastIdentity 176 | } 177 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export { default as query } from './query'; 2 | export { default as ipfsApi } from './ipfsApi'; 3 | export { default as hooks} from './hooks'; 4 | -------------------------------------------------------------------------------- /src/ipfsApi.ts: -------------------------------------------------------------------------------- 1 | import { constructGetData, constructQuery } from './query'; 2 | 3 | export async function getAddress(identity: string): Promise { 4 | const maximalQuery = 5; 5 | let query = 0; 6 | let result = null; 7 | const queryUrl = constructQuery('determineAddress', identity); 8 | while (query < maximalQuery) { 9 | try { 10 | const response = await fetch(queryUrl); 11 | const json = await response.json(); 12 | const fetchedData = json.data.determineAddress; 13 | if (fetchedData.indexOf('/orbitdb') !== -1) { 14 | result = fetchedData; 15 | break; 16 | } else { 17 | query++; 18 | } 19 | } catch (error) { 20 | return null; 21 | } 22 | } 23 | return result; 24 | } 25 | 26 | export function registerIdentity(identity: string): void { 27 | const queryUrl = constructQuery('registerIdentity', identity); 28 | fetch(queryUrl); 29 | } 30 | 31 | export async function getData(identityId: string): Promise { 32 | const queryUrl = constructGetData(identityId); 33 | try { 34 | const response = await fetch(queryUrl); 35 | const json = await response.json(); 36 | return json.data.getData; 37 | } catch (e) { 38 | return []; 39 | } 40 | } 41 | 42 | export default { 43 | registerIdentity, 44 | getData, 45 | getAddress 46 | }; 47 | -------------------------------------------------------------------------------- /src/query.ts: -------------------------------------------------------------------------------- 1 | import { graphqlServer } from './constant'; 2 | 3 | const recordKey = 'playgroundRecord'; 4 | 5 | export function constructDataInsertion(identity: string, data: string): string { 6 | return `https://${graphqlServer}:4000/graphql?query={addData(identityId:%22${identity}%22,data:"${data}")}`; 7 | } 8 | 9 | export function constructGetData(identity: string): string { 10 | return `https://${graphqlServer}:4000/graphql?query={getData(identityId:%22${identity}%22){${recordKey}}}`; 11 | } 12 | 13 | export function constructQuery(methodName: string, identity: string): string { 14 | return `https://${graphqlServer}:4000/graphql?query={${methodName}(identityId:%22${identity}%22)}`; 15 | } 16 | 17 | export default { 18 | setData: constructDataInsertion, 19 | getData: constructGetData, 20 | method: constructQuery 21 | }; 22 | -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | import {networkSpecs} from './constant'; 2 | 3 | export function parseBalance(rawBalance: string): string { 4 | const networkDecimals = networkSpecs.decimals; 5 | const integer = rawBalance.slice(0, -networkDecimals); 6 | const decimal = rawBalance.slice(-networkDecimals, rawBalance.length); 7 | return `${integer}.${decimal}`; 8 | } 9 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "module": "commonjs", 5 | "declaration": true, 6 | "outDir": "./lib", 7 | "strict": true 8 | }, 9 | "include": ["src"], 10 | "exclude": ["node_modules", "**/__tests__/*"] 11 | } 12 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["tslint:latest", "tslint-config-prettier"] 3 | } 4 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.10.4" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" 8 | integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== 9 | dependencies: 10 | "@babel/highlight" "^7.10.4" 11 | 12 | "@babel/helper-validator-identifier@^7.10.4": 13 | version "7.10.4" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" 15 | integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== 16 | 17 | "@babel/highlight@^7.10.4": 18 | version "7.10.4" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" 20 | integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.10.4" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@babel/runtime@^7.11.2": 27 | version "7.11.2" 28 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" 29 | integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== 30 | dependencies: 31 | regenerator-runtime "^0.13.4" 32 | 33 | "@polkadot/api-derive@1.30.1": 34 | version "1.30.1" 35 | resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-1.30.1.tgz#4ff40135b058f947ca00e615ed0ce49bb9629172" 36 | integrity sha512-qjr2rdMYkEerEvjPNfxa7VOROOt5sPmo3lQCuIH5emjr4bRI79M6sCY/XZR1ISxmdNr5/muqGQyCPmKp/Iav4A== 37 | dependencies: 38 | "@babel/runtime" "^7.11.2" 39 | "@polkadot/api" "1.30.1" 40 | "@polkadot/rpc-core" "1.30.1" 41 | "@polkadot/rpc-provider" "1.30.1" 42 | "@polkadot/types" "1.30.1" 43 | "@polkadot/util" "^3.3.1" 44 | "@polkadot/util-crypto" "^3.3.1" 45 | bn.js "^5.1.3" 46 | memoizee "^0.4.14" 47 | rxjs "^6.6.2" 48 | 49 | "@polkadot/api@1.30.1", "@polkadot/api@^1.30.1": 50 | version "1.30.1" 51 | resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-1.30.1.tgz#19aed18f3bf7cd6beec12690c5cb866673bbd8dd" 52 | integrity sha512-fbybLuI+T1Ow14sHJwyO4eQBF7+oMpjmRXfmIOrFjAm11YJxeQQd+W9i5FNdB9LugdxDG4nQZDYZ+7VaFWUsGQ== 53 | dependencies: 54 | "@babel/runtime" "^7.11.2" 55 | "@polkadot/api-derive" "1.30.1" 56 | "@polkadot/keyring" "^3.3.1" 57 | "@polkadot/metadata" "1.30.1" 58 | "@polkadot/rpc-core" "1.30.1" 59 | "@polkadot/rpc-provider" "1.30.1" 60 | "@polkadot/types" "1.30.1" 61 | "@polkadot/types-known" "1.30.1" 62 | "@polkadot/util" "^3.3.1" 63 | "@polkadot/util-crypto" "^3.3.1" 64 | bn.js "^5.1.3" 65 | eventemitter3 "^4.0.5" 66 | rxjs "^6.6.2" 67 | 68 | "@polkadot/keyring@^3.3.1": 69 | version "3.3.1" 70 | resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-3.3.1.tgz#7e37f86804c75043bc800db1fb3149421b571c47" 71 | integrity sha512-k0FwkvNNE3cgeDaWjfgxhXGPkiPsXpObyrjA2jod/tkh4PMsHxs5c0J9z/eMjby1+cn1ZqmOa4NROD2wFEnU+Q== 72 | dependencies: 73 | "@babel/runtime" "^7.11.2" 74 | "@polkadot/util" "3.3.1" 75 | "@polkadot/util-crypto" "3.3.1" 76 | 77 | "@polkadot/metadata@1.30.1": 78 | version "1.30.1" 79 | resolved "https://registry.yarnpkg.com/@polkadot/metadata/-/metadata-1.30.1.tgz#12de91c535d322d0b049ab2d20de35b5e46ffa00" 80 | integrity sha512-Z6/Sw7+sZ6sbhC5BlG22ilWcrb9pTTbBTl2llbzjenPkbymFycon7JaDpPMkfq+WwfHtFb/0jsvDZBDgEY7cWg== 81 | dependencies: 82 | "@babel/runtime" "^7.11.2" 83 | "@polkadot/types" "1.30.1" 84 | "@polkadot/types-known" "1.30.1" 85 | "@polkadot/util" "^3.3.1" 86 | "@polkadot/util-crypto" "^3.3.1" 87 | bn.js "^5.1.3" 88 | 89 | "@polkadot/rpc-core@1.30.1": 90 | version "1.30.1" 91 | resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-1.30.1.tgz#2d2458f65388230dce76174484c6ce8d086c20e3" 92 | integrity sha512-XW1sNBPKALpK5RbyDozOeno5L9nvKguJRqbF81HlcvJA7sNBX/TZENqlJyCGQabHiSmswrfksh0q8dlv6xs8oA== 93 | dependencies: 94 | "@babel/runtime" "^7.11.2" 95 | "@polkadot/metadata" "1.30.1" 96 | "@polkadot/rpc-provider" "1.30.1" 97 | "@polkadot/types" "1.30.1" 98 | "@polkadot/util" "^3.3.1" 99 | memoizee "^0.4.14" 100 | rxjs "^6.6.2" 101 | 102 | "@polkadot/rpc-provider@1.30.1": 103 | version "1.30.1" 104 | resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-1.30.1.tgz#51a532edcf80545d3a0c4bd29876a5893f76fc9d" 105 | integrity sha512-lL5hhbIFgqeECUl6JcYTasAfGaraPVcmZatmTkO5+4URtJMI1CKK5alcbpOEDH8zgO8seaNQUTRCf4jRQUUTXQ== 106 | dependencies: 107 | "@babel/runtime" "^7.11.2" 108 | "@polkadot/metadata" "1.30.1" 109 | "@polkadot/types" "1.30.1" 110 | "@polkadot/util" "^3.3.1" 111 | "@polkadot/util-crypto" "^3.3.1" 112 | bn.js "^5.1.3" 113 | eventemitter3 "^4.0.5" 114 | isomorphic-fetch "^2.2.1" 115 | websocket "^1.0.31" 116 | 117 | "@polkadot/types-known@1.30.1": 118 | version "1.30.1" 119 | resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-1.30.1.tgz#f399a48d4eac818bb6a81f98d36d9f9b5d862a0a" 120 | integrity sha512-SFbflleTZgfnkf4kJ2ka4FbqlERKKIabC6fJVgCXiGiFFcscO4xfGTVNalRnfKzfr/JS99M8I14H5IcbDeaq8A== 121 | dependencies: 122 | "@babel/runtime" "^7.11.2" 123 | "@polkadot/types" "1.30.1" 124 | "@polkadot/util" "^3.3.1" 125 | bn.js "^5.1.3" 126 | 127 | "@polkadot/types@1.30.1": 128 | version "1.30.1" 129 | resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-1.30.1.tgz#3ba4f9af8a786817db6f78dcd7718f950a43b776" 130 | integrity sha512-0HAsedW35HICz5t5HW9RT/bPYHdp0SWInHG2/D0DT4mnjnnmJ0KsZEPQ803Pg2srzgGfnqlDRgN6NoPYR/wjAw== 131 | dependencies: 132 | "@babel/runtime" "^7.11.2" 133 | "@polkadot/metadata" "1.30.1" 134 | "@polkadot/util" "^3.3.1" 135 | "@polkadot/util-crypto" "^3.3.1" 136 | "@types/bn.js" "^4.11.6" 137 | bn.js "^5.1.3" 138 | memoizee "^0.4.14" 139 | rxjs "^6.6.2" 140 | 141 | "@polkadot/util-crypto@3.3.1", "@polkadot/util-crypto@^3.3.1": 142 | version "3.3.1" 143 | resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-3.3.1.tgz#5d2d4a373fa864a86d1294cdf55f4a73d5854272" 144 | integrity sha512-UPqG4a8OPCdwLxDqgsFFci4dm/RlvxKNS3pYiLxqMN6VL0MzIFA1XD1NAaLBMsQUzgN38fz+93ldY1MJ7vFbZQ== 145 | dependencies: 146 | "@babel/runtime" "^7.11.2" 147 | "@polkadot/util" "3.3.1" 148 | "@polkadot/wasm-crypto" "^1.3.1" 149 | base-x "^3.0.8" 150 | bip39 "^3.0.2" 151 | blakejs "^1.1.0" 152 | bn.js "^5.1.3" 153 | elliptic "^6.5.3" 154 | js-sha3 "^0.8.0" 155 | pbkdf2 "^3.1.1" 156 | scryptsy "^2.1.0" 157 | tweetnacl "^1.0.3" 158 | xxhashjs "^0.2.2" 159 | 160 | "@polkadot/util@3.3.1", "@polkadot/util@^3.3.1": 161 | version "3.3.1" 162 | resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-3.3.1.tgz#d5c2da98c4ade77948a32355477f564c8c2610a4" 163 | integrity sha512-rH1TbDyZHEmT9nH9dC9Y5d/WTDrKQ9nDoUihZsu9vJNe7kII6tfAzwqZcncbVUMKAj9o72VRcl4RmN5Kj456AA== 164 | dependencies: 165 | "@babel/runtime" "^7.11.2" 166 | "@types/bn.js" "^4.11.6" 167 | bn.js "^5.1.3" 168 | camelcase "^5.3.1" 169 | chalk "^4.1.0" 170 | ip-regex "^4.1.0" 171 | 172 | "@polkadot/wasm-crypto@^1.3.1": 173 | version "1.4.1" 174 | resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto/-/wasm-crypto-1.4.1.tgz#0a053d0c2587da30fb5313cef81f8d9a52029c68" 175 | integrity sha512-GPBCh8YvQmA5bobI4rqRkUhrEHkEWU1+lcJVPbZYsa7jiHFaZpzCLrGQfiqW/vtbU1aBS2wmJ0x1nlt33B9QqQ== 176 | 177 | "@types/bn.js@^4.11.6": 178 | version "4.11.6" 179 | resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" 180 | integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== 181 | dependencies: 182 | "@types/node" "*" 183 | 184 | "@types/color-name@^1.1.1": 185 | version "1.1.1" 186 | resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" 187 | integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== 188 | 189 | "@types/node@*": 190 | version "14.6.2" 191 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.2.tgz#264b44c5a28dfa80198fc2f7b6d3c8a054b9491f" 192 | integrity sha512-onlIwbaeqvZyniGPfdw/TEhKIh79pz66L1q06WUQqJLnAb6wbjvOtepLYTGHTqzdXgBYIE3ZdmqHDGsRsbBz7A== 193 | 194 | "@types/node@11.11.6": 195 | version "11.11.6" 196 | resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a" 197 | integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ== 198 | 199 | ansi-styles@^3.2.1: 200 | version "3.2.1" 201 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 202 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 203 | dependencies: 204 | color-convert "^1.9.0" 205 | 206 | ansi-styles@^4.1.0: 207 | version "4.2.1" 208 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" 209 | integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== 210 | dependencies: 211 | "@types/color-name" "^1.1.1" 212 | color-convert "^2.0.1" 213 | 214 | argparse@^1.0.7: 215 | version "1.0.10" 216 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 217 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 218 | dependencies: 219 | sprintf-js "~1.0.2" 220 | 221 | balanced-match@^1.0.0: 222 | version "1.0.0" 223 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 224 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 225 | 226 | base-x@^3.0.8: 227 | version "3.0.8" 228 | resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.8.tgz#1e1106c2537f0162e8b52474a557ebb09000018d" 229 | integrity sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA== 230 | dependencies: 231 | safe-buffer "^5.0.1" 232 | 233 | bip39@^3.0.2: 234 | version "3.0.2" 235 | resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.2.tgz#2baf42ff3071fc9ddd5103de92e8f80d9257ee32" 236 | integrity sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ== 237 | dependencies: 238 | "@types/node" "11.11.6" 239 | create-hash "^1.1.0" 240 | pbkdf2 "^3.0.9" 241 | randombytes "^2.0.1" 242 | 243 | blakejs@^1.1.0: 244 | version "1.1.0" 245 | resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" 246 | integrity sha1-ad+S75U6qIylGjLfarHFShVfx6U= 247 | 248 | bn.js@^4.4.0: 249 | version "4.11.9" 250 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" 251 | integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== 252 | 253 | bn.js@^5.1.3: 254 | version "5.1.3" 255 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" 256 | integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== 257 | 258 | brace-expansion@^1.1.7: 259 | version "1.1.11" 260 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 261 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 262 | dependencies: 263 | balanced-match "^1.0.0" 264 | concat-map "0.0.1" 265 | 266 | brorand@^1.0.1: 267 | version "1.1.0" 268 | resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" 269 | integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= 270 | 271 | bufferutil@^4.0.1: 272 | version "4.0.1" 273 | resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.1.tgz#3a177e8e5819a1243fe16b63a199951a7ad8d4a7" 274 | integrity sha512-xowrxvpxojqkagPcWRQVXZl0YXhRhAtBEIq3VoER1NH5Mw1n1o0ojdspp+GS2J//2gCVyrzQDApQ4unGF+QOoA== 275 | dependencies: 276 | node-gyp-build "~3.7.0" 277 | 278 | builtin-modules@^1.1.1: 279 | version "1.1.1" 280 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 281 | integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= 282 | 283 | camelcase@^5.3.1: 284 | version "5.3.1" 285 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 286 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 287 | 288 | chalk@^2.0.0, chalk@^2.3.0: 289 | version "2.4.2" 290 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 291 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 292 | dependencies: 293 | ansi-styles "^3.2.1" 294 | escape-string-regexp "^1.0.5" 295 | supports-color "^5.3.0" 296 | 297 | chalk@^4.1.0: 298 | version "4.1.0" 299 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" 300 | integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== 301 | dependencies: 302 | ansi-styles "^4.1.0" 303 | supports-color "^7.1.0" 304 | 305 | cipher-base@^1.0.1, cipher-base@^1.0.3: 306 | version "1.0.4" 307 | resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" 308 | integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== 309 | dependencies: 310 | inherits "^2.0.1" 311 | safe-buffer "^5.0.1" 312 | 313 | color-convert@^1.9.0: 314 | version "1.9.3" 315 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 316 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 317 | dependencies: 318 | color-name "1.1.3" 319 | 320 | color-convert@^2.0.1: 321 | version "2.0.1" 322 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 323 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 324 | dependencies: 325 | color-name "~1.1.4" 326 | 327 | color-name@1.1.3: 328 | version "1.1.3" 329 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 330 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 331 | 332 | color-name@~1.1.4: 333 | version "1.1.4" 334 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 335 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 336 | 337 | commander@^2.12.1: 338 | version "2.20.3" 339 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 340 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 341 | 342 | concat-map@0.0.1: 343 | version "0.0.1" 344 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 345 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 346 | 347 | create-hash@^1.1.0, create-hash@^1.1.2: 348 | version "1.2.0" 349 | resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" 350 | integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== 351 | dependencies: 352 | cipher-base "^1.0.1" 353 | inherits "^2.0.1" 354 | md5.js "^1.3.4" 355 | ripemd160 "^2.0.1" 356 | sha.js "^2.4.0" 357 | 358 | create-hmac@^1.1.4: 359 | version "1.1.7" 360 | resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" 361 | integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== 362 | dependencies: 363 | cipher-base "^1.0.3" 364 | create-hash "^1.1.0" 365 | inherits "^2.0.1" 366 | ripemd160 "^2.0.0" 367 | safe-buffer "^5.0.1" 368 | sha.js "^2.4.8" 369 | 370 | cuint@^0.2.2: 371 | version "0.2.2" 372 | resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" 373 | integrity sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs= 374 | 375 | d@1, d@^1.0.1: 376 | version "1.0.1" 377 | resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" 378 | integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== 379 | dependencies: 380 | es5-ext "^0.10.50" 381 | type "^1.0.1" 382 | 383 | debug@^2.2.0: 384 | version "2.6.9" 385 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 386 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 387 | dependencies: 388 | ms "2.0.0" 389 | 390 | diff@^4.0.1: 391 | version "4.0.2" 392 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 393 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 394 | 395 | elliptic@^6.5.3: 396 | version "6.5.3" 397 | resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" 398 | integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== 399 | dependencies: 400 | bn.js "^4.4.0" 401 | brorand "^1.0.1" 402 | hash.js "^1.0.0" 403 | hmac-drbg "^1.0.0" 404 | inherits "^2.0.1" 405 | minimalistic-assert "^1.0.0" 406 | minimalistic-crypto-utils "^1.0.0" 407 | 408 | encoding@^0.1.11: 409 | version "0.1.13" 410 | resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" 411 | integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== 412 | dependencies: 413 | iconv-lite "^0.6.2" 414 | 415 | es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: 416 | version "0.10.53" 417 | resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" 418 | integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== 419 | dependencies: 420 | es6-iterator "~2.0.3" 421 | es6-symbol "~3.1.3" 422 | next-tick "~1.0.0" 423 | 424 | es6-iterator@^2.0.3, es6-iterator@~2.0.3: 425 | version "2.0.3" 426 | resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" 427 | integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= 428 | dependencies: 429 | d "1" 430 | es5-ext "^0.10.35" 431 | es6-symbol "^3.1.1" 432 | 433 | es6-symbol@^3.1.1, es6-symbol@~3.1.3: 434 | version "3.1.3" 435 | resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" 436 | integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== 437 | dependencies: 438 | d "^1.0.1" 439 | ext "^1.1.2" 440 | 441 | es6-weak-map@^2.0.2: 442 | version "2.0.3" 443 | resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" 444 | integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== 445 | dependencies: 446 | d "1" 447 | es5-ext "^0.10.46" 448 | es6-iterator "^2.0.3" 449 | es6-symbol "^3.1.1" 450 | 451 | escape-string-regexp@^1.0.5: 452 | version "1.0.5" 453 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 454 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 455 | 456 | esprima@^4.0.0: 457 | version "4.0.1" 458 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 459 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 460 | 461 | event-emitter@^0.3.5: 462 | version "0.3.5" 463 | resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" 464 | integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= 465 | dependencies: 466 | d "1" 467 | es5-ext "~0.10.14" 468 | 469 | eventemitter3@^4.0.5: 470 | version "4.0.7" 471 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" 472 | integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== 473 | 474 | ext@^1.1.2: 475 | version "1.4.0" 476 | resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" 477 | integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== 478 | dependencies: 479 | type "^2.0.0" 480 | 481 | fs.realpath@^1.0.0: 482 | version "1.0.0" 483 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 484 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 485 | 486 | glob@^7.1.1: 487 | version "7.1.6" 488 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 489 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 490 | dependencies: 491 | fs.realpath "^1.0.0" 492 | inflight "^1.0.4" 493 | inherits "2" 494 | minimatch "^3.0.4" 495 | once "^1.3.0" 496 | path-is-absolute "^1.0.0" 497 | 498 | has-flag@^3.0.0: 499 | version "3.0.0" 500 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 501 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 502 | 503 | has-flag@^4.0.0: 504 | version "4.0.0" 505 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 506 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 507 | 508 | hash-base@^3.0.0: 509 | version "3.1.0" 510 | resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" 511 | integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== 512 | dependencies: 513 | inherits "^2.0.4" 514 | readable-stream "^3.6.0" 515 | safe-buffer "^5.2.0" 516 | 517 | hash.js@^1.0.0, hash.js@^1.0.3: 518 | version "1.1.7" 519 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" 520 | integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== 521 | dependencies: 522 | inherits "^2.0.3" 523 | minimalistic-assert "^1.0.1" 524 | 525 | hmac-drbg@^1.0.0: 526 | version "1.0.1" 527 | resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" 528 | integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= 529 | dependencies: 530 | hash.js "^1.0.3" 531 | minimalistic-assert "^1.0.0" 532 | minimalistic-crypto-utils "^1.0.1" 533 | 534 | iconv-lite@^0.6.2: 535 | version "0.6.2" 536 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01" 537 | integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ== 538 | dependencies: 539 | safer-buffer ">= 2.1.2 < 3.0.0" 540 | 541 | inflight@^1.0.4: 542 | version "1.0.6" 543 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 544 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 545 | dependencies: 546 | once "^1.3.0" 547 | wrappy "1" 548 | 549 | inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: 550 | version "2.0.4" 551 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 552 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 553 | 554 | ip-regex@^4.1.0: 555 | version "4.1.0" 556 | resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.1.0.tgz#5ad62f685a14edb421abebc2fff8db94df67b455" 557 | integrity sha512-pKnZpbgCTfH/1NLIlOduP/V+WRXzC2MOz3Qo8xmxk8C5GudJLgK5QyLVXOSWy3ParAH7Eemurl3xjv/WXYFvMA== 558 | 559 | is-promise@^2.1: 560 | version "2.2.2" 561 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" 562 | integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== 563 | 564 | is-stream@^1.0.1: 565 | version "1.1.0" 566 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 567 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= 568 | 569 | is-typedarray@^1.0.0: 570 | version "1.0.0" 571 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 572 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 573 | 574 | isomorphic-fetch@^2.2.1: 575 | version "2.2.1" 576 | resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" 577 | integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= 578 | dependencies: 579 | node-fetch "^1.0.1" 580 | whatwg-fetch ">=0.10.0" 581 | 582 | js-sha3@^0.8.0: 583 | version "0.8.0" 584 | resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" 585 | integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== 586 | 587 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: 588 | version "4.0.0" 589 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 590 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 591 | 592 | js-yaml@^3.13.1: 593 | version "3.14.0" 594 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" 595 | integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== 596 | dependencies: 597 | argparse "^1.0.7" 598 | esprima "^4.0.0" 599 | 600 | loose-envify@^1.1.0, loose-envify@^1.4.0: 601 | version "1.4.0" 602 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 603 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 604 | dependencies: 605 | js-tokens "^3.0.0 || ^4.0.0" 606 | 607 | lru-queue@0.1: 608 | version "0.1.0" 609 | resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" 610 | integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= 611 | dependencies: 612 | es5-ext "~0.10.2" 613 | 614 | md5.js@^1.3.4: 615 | version "1.3.5" 616 | resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" 617 | integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== 618 | dependencies: 619 | hash-base "^3.0.0" 620 | inherits "^2.0.1" 621 | safe-buffer "^5.1.2" 622 | 623 | memoizee@^0.4.14: 624 | version "0.4.14" 625 | resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57" 626 | integrity sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg== 627 | dependencies: 628 | d "1" 629 | es5-ext "^0.10.45" 630 | es6-weak-map "^2.0.2" 631 | event-emitter "^0.3.5" 632 | is-promise "^2.1" 633 | lru-queue "0.1" 634 | next-tick "1" 635 | timers-ext "^0.1.5" 636 | 637 | minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: 638 | version "1.0.1" 639 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" 640 | integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== 641 | 642 | minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: 643 | version "1.0.1" 644 | resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" 645 | integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= 646 | 647 | minimatch@^3.0.4: 648 | version "3.0.4" 649 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 650 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 651 | dependencies: 652 | brace-expansion "^1.1.7" 653 | 654 | minimist@^1.2.5: 655 | version "1.2.5" 656 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 657 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 658 | 659 | mkdirp@^0.5.3: 660 | version "0.5.5" 661 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" 662 | integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== 663 | dependencies: 664 | minimist "^1.2.5" 665 | 666 | ms@2.0.0: 667 | version "2.0.0" 668 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 669 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 670 | 671 | next-tick@1: 672 | version "1.1.0" 673 | resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" 674 | integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== 675 | 676 | next-tick@~1.0.0: 677 | version "1.0.0" 678 | resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" 679 | integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= 680 | 681 | node-fetch@^1.0.1: 682 | version "1.7.3" 683 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" 684 | integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== 685 | dependencies: 686 | encoding "^0.1.11" 687 | is-stream "^1.0.1" 688 | 689 | node-gyp-build@~3.7.0: 690 | version "3.7.0" 691 | resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-3.7.0.tgz#daa77a4f547b9aed3e2aac779eaf151afd60ec8d" 692 | integrity sha512-L/Eg02Epx6Si2NXmedx+Okg+4UHqmaf3TNcxd50SF9NQGcJaON3AtU++kax69XV7YWz4tUspqZSAsVofhFKG2w== 693 | 694 | object-assign@^4.1.1: 695 | version "4.1.1" 696 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 697 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 698 | 699 | once@^1.3.0: 700 | version "1.4.0" 701 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 702 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 703 | dependencies: 704 | wrappy "1" 705 | 706 | path-is-absolute@^1.0.0: 707 | version "1.0.1" 708 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 709 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 710 | 711 | path-parse@^1.0.6: 712 | version "1.0.6" 713 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 714 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 715 | 716 | pbkdf2@^3.0.9, pbkdf2@^3.1.1: 717 | version "3.1.1" 718 | resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" 719 | integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== 720 | dependencies: 721 | create-hash "^1.1.2" 722 | create-hmac "^1.1.4" 723 | ripemd160 "^2.0.1" 724 | safe-buffer "^5.0.1" 725 | sha.js "^2.4.8" 726 | 727 | prettier@^2.1.1: 728 | version "2.1.1" 729 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.1.tgz#d9485dd5e499daa6cb547023b87a6cf51bee37d6" 730 | integrity sha512-9bY+5ZWCfqj3ghYBLxApy2zf6m+NJo5GzmLTpr9FsApsfjriNnS2dahWReHMi7qNPhhHl9SYHJs2cHZLgexNIw== 731 | 732 | prop-types@^15.6.2: 733 | version "15.7.2" 734 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" 735 | integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== 736 | dependencies: 737 | loose-envify "^1.4.0" 738 | object-assign "^4.1.1" 739 | react-is "^16.8.1" 740 | 741 | randombytes@^2.0.1: 742 | version "2.1.0" 743 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 744 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 745 | dependencies: 746 | safe-buffer "^5.1.0" 747 | 748 | react-is@^16.8.1: 749 | version "16.13.1" 750 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" 751 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== 752 | 753 | react@^16.13.1: 754 | version "16.13.1" 755 | resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" 756 | integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== 757 | dependencies: 758 | loose-envify "^1.1.0" 759 | object-assign "^4.1.1" 760 | prop-types "^15.6.2" 761 | 762 | readable-stream@^3.6.0: 763 | version "3.6.0" 764 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 765 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 766 | dependencies: 767 | inherits "^2.0.3" 768 | string_decoder "^1.1.1" 769 | util-deprecate "^1.0.1" 770 | 771 | regenerator-runtime@^0.13.4: 772 | version "0.13.7" 773 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" 774 | integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== 775 | 776 | resolve@^1.3.2: 777 | version "1.17.0" 778 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" 779 | integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== 780 | dependencies: 781 | path-parse "^1.0.6" 782 | 783 | ripemd160@^2.0.0, ripemd160@^2.0.1: 784 | version "2.0.2" 785 | resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" 786 | integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== 787 | dependencies: 788 | hash-base "^3.0.0" 789 | inherits "^2.0.1" 790 | 791 | rxjs@^6.6.2: 792 | version "6.6.2" 793 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.2.tgz#8096a7ac03f2cc4fe5860ef6e572810d9e01c0d2" 794 | integrity sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg== 795 | dependencies: 796 | tslib "^1.9.0" 797 | 798 | safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: 799 | version "5.2.1" 800 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 801 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 802 | 803 | "safer-buffer@>= 2.1.2 < 3.0.0": 804 | version "2.1.2" 805 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 806 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 807 | 808 | scryptsy@^2.1.0: 809 | version "2.1.0" 810 | resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-2.1.0.tgz#8d1e8d0c025b58fdd25b6fa9a0dc905ee8faa790" 811 | integrity sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w== 812 | 813 | semver@^5.3.0: 814 | version "5.7.1" 815 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 816 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 817 | 818 | sha.js@^2.4.0, sha.js@^2.4.8: 819 | version "2.4.11" 820 | resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" 821 | integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== 822 | dependencies: 823 | inherits "^2.0.1" 824 | safe-buffer "^5.0.1" 825 | 826 | sprintf-js@~1.0.2: 827 | version "1.0.3" 828 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 829 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 830 | 831 | string_decoder@^1.1.1: 832 | version "1.3.0" 833 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 834 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 835 | dependencies: 836 | safe-buffer "~5.2.0" 837 | 838 | supports-color@^5.3.0: 839 | version "5.5.0" 840 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 841 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 842 | dependencies: 843 | has-flag "^3.0.0" 844 | 845 | supports-color@^7.1.0: 846 | version "7.2.0" 847 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 848 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 849 | dependencies: 850 | has-flag "^4.0.0" 851 | 852 | timers-ext@^0.1.5: 853 | version "0.1.7" 854 | resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" 855 | integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== 856 | dependencies: 857 | es5-ext "~0.10.46" 858 | next-tick "1" 859 | 860 | tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0: 861 | version "1.13.0" 862 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" 863 | integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== 864 | 865 | tslint-config-prettier@^1.18.0: 866 | version "1.18.0" 867 | resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz#75f140bde947d35d8f0d238e0ebf809d64592c37" 868 | integrity sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg== 869 | 870 | tslint@^6.1.3: 871 | version "6.1.3" 872 | resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.1.3.tgz#5c23b2eccc32487d5523bd3a470e9aa31789d904" 873 | integrity sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg== 874 | dependencies: 875 | "@babel/code-frame" "^7.0.0" 876 | builtin-modules "^1.1.1" 877 | chalk "^2.3.0" 878 | commander "^2.12.1" 879 | diff "^4.0.1" 880 | glob "^7.1.1" 881 | js-yaml "^3.13.1" 882 | minimatch "^3.0.4" 883 | mkdirp "^0.5.3" 884 | resolve "^1.3.2" 885 | semver "^5.3.0" 886 | tslib "^1.13.0" 887 | tsutils "^2.29.0" 888 | 889 | tsutils@^2.29.0: 890 | version "2.29.0" 891 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" 892 | integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== 893 | dependencies: 894 | tslib "^1.8.1" 895 | 896 | tweetnacl@^1.0.3: 897 | version "1.0.3" 898 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" 899 | integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== 900 | 901 | type@^1.0.1: 902 | version "1.2.0" 903 | resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" 904 | integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== 905 | 906 | type@^2.0.0: 907 | version "2.1.0" 908 | resolved "https://registry.yarnpkg.com/type/-/type-2.1.0.tgz#9bdc22c648cf8cf86dd23d32336a41cfb6475e3f" 909 | integrity sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA== 910 | 911 | typedarray-to-buffer@^3.1.5: 912 | version "3.1.5" 913 | resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" 914 | integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== 915 | dependencies: 916 | is-typedarray "^1.0.0" 917 | 918 | typescript@^4.0.2: 919 | version "4.0.2" 920 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.2.tgz#7ea7c88777c723c681e33bf7988be5d008d05ac2" 921 | integrity sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ== 922 | 923 | utf-8-validate@^5.0.2: 924 | version "5.0.2" 925 | resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.2.tgz#63cfbccd85dc1f2b66cf7a1d0eebc08ed056bfb3" 926 | integrity sha512-SwV++i2gTD5qh2XqaPzBnNX88N6HdyhQrNNRykvcS0QKvItV9u3vPEJr+X5Hhfb1JC0r0e1alL0iB09rY8+nmw== 927 | dependencies: 928 | node-gyp-build "~3.7.0" 929 | 930 | util-deprecate@^1.0.1: 931 | version "1.0.2" 932 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 933 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 934 | 935 | websocket@^1.0.31: 936 | version "1.0.32" 937 | resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.32.tgz#1f16ddab3a21a2d929dec1687ab21cfdc6d3dbb1" 938 | integrity sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q== 939 | dependencies: 940 | bufferutil "^4.0.1" 941 | debug "^2.2.0" 942 | es5-ext "^0.10.50" 943 | typedarray-to-buffer "^3.1.5" 944 | utf-8-validate "^5.0.2" 945 | yaeti "^0.0.6" 946 | 947 | whatwg-fetch@>=0.10.0: 948 | version "3.4.0" 949 | resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.4.0.tgz#e11de14f4878f773fbebcde8871b2c0699af8b30" 950 | integrity sha512-rsum2ulz2iuZH08mJkT0Yi6JnKhwdw4oeyMjokgxd+mmqYSd9cPpOQf01TIWgjxG/U4+QR+AwKq6lSbXVxkyoQ== 951 | 952 | wrappy@1: 953 | version "1.0.2" 954 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 955 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 956 | 957 | xxhashjs@^0.2.2: 958 | version "0.2.2" 959 | resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8" 960 | integrity sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw== 961 | dependencies: 962 | cuint "^0.2.2" 963 | 964 | yaeti@^0.0.6: 965 | version "0.0.6" 966 | resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" 967 | integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= 968 | --------------------------------------------------------------------------------