├── .editorconfig ├── .gitignore ├── .prettierrc.json ├── .travis.yml ├── .vscode └── settings.json ├── LICENSE ├── README.md ├── config ├── contract.ts ├── distribution.ts └── packages.ts ├── index.ts ├── log ├── 2018-07-20-to-2018-08-19.json ├── 2018-08-20-to-2018-09-19.json ├── 2018-09-20-to-2018-10-19.json ├── 2018-10-20-to-2018-11-19.json ├── 2018-11-20-to-2018-12-19.json ├── 2018-12-20-to-2019-01-19.json ├── 2019-01-20-to-2019-02-19.json ├── 2019-02-20-to-2019-03-19.json ├── 2019-03-20-to-2019-04-19.json ├── 2019-04-20-to-2019-05-19.json ├── 2019-05-20-to-2019-06-19.json ├── 2019-06-20-to-2019-07-19.json ├── 2019-07-20-to-2019-08-19.json ├── 2019-08-20-to-2019-09-19.json ├── 2019-09-20-to-2019-10-19.json ├── 2019-10-20-to-2019-11-19.json ├── 2019-11-20-to-2019-12-19.json ├── 2019-12-20-to-2020-01-19.json └── empty ├── now.json ├── package-lock.json ├── package.json ├── serve ├── index.ts ├── serve.test.ts └── service.ts ├── src ├── index.test.ts ├── index.ts ├── libs.ts └── types.ts ├── tsconfig.json └── tslint.json /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = tab 5 | end_of_line = lf 6 | charset = utf-8 7 | trim_trailing_whitespace = true 8 | insert_final_newline = true 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (https://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # TypeScript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | 60 | # parcel-bundler cache (https://parceljs.org/) 61 | .cache 62 | 63 | # next.js build output 64 | .next 65 | 66 | # nuxt.js build output 67 | .nuxt 68 | 69 | # vuepress build output 70 | .vuepress/dist 71 | 72 | # Serverless directories 73 | .serverless 74 | 75 | # tsc build output 76 | *.js 77 | *.d.ts 78 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true, 4 | "useTabs": true 5 | } 6 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - node 4 | branches: 5 | only: 6 | - master 7 | before_install: 8 | - npm install -g now 9 | before_deploy: npm run build 10 | deploy: 11 | - provider: script 12 | script: now --public --token $NOW_TOKEN && now --prod --token $NOW_TOKEN 13 | skip_cleanup: true 14 | on: 15 | branch: master 16 | env: 17 | global: 18 | secure: eWw9qYz0+/0p2z+gfTopKO6ua/yJcDfOQ+u/9UVLxsGpk4Ew7ghBdJJTRJHC048gIDr+roDZWZY1Kg+xCHTrdZR7N2Y/4sGveUPUe+pWCXLwFOI+syRpGHdzJmzQ4297R7OpDWTopP6ismO+UM7RoDTvBAYBoTUPZOC+nhr2Epq/yUtJCM90vSotpjFnkgcwFMO6CjpKVOJSRKvQJm4VfZ3bg7CVemV5n59bwHE+kH+HhheoLQDUewCR0DwHY0Ist6RxlSq/8Ju4cZuQGHawjLVLERv6rBtNsPY3TbPGRKC1F6ZeQ8szlkZua4WuQv60gTi4h/cg3aPmjySkYb3G6BoDF2hXED7OiC2yfMuVjVyPz08Caf01okNaqbnoR/SYvvyvb2hENEdi4EFjPMclhtvTtgW9ufbaZRu1focFQ0s3pA6iWdaH0LvcLqMLAgSZu6oFCaWUHya1qXWD3UBXNhC/PnUGzYPJMnotKlfBSEY1gWOVVkrN+mmacq9KCS7ytoIIfmzDxkldD78sUs5zeZWILhp6eD/nWOgGD2p0t7WJr0MIoUriSZhzoBRCG6kFTUBoQbEA7r/eDxperxaFNrBeWB+qiiaepX4yka2xdx2EOJzdZg9ERa9tE006suJG7E3HeBCQegHeM072We/PopdOxniaw+D/emALZAq7Hts= 19 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "typescript.tsdk": "./node_modules/typescript/lib", 3 | "tslint.autoFixOnSave": true 4 | } 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 aggre 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This repository is logic that calculating rewards for [Dev](https://devtoken.rocks) beta. 2 | 3 | A new protocol called [Dev Protocol](https://github.com/dev-protocol/protocol) is under development. In the deployed, this repository is no longer needed. 4 | 5 | --- 6 | 7 | [![Build Status](https://travis-ci.org/frame00/dev-distribution.svg?branch=master)](https://travis-ci.org/frame00/dev-distribution) 8 | 9 | # Getting Started 10 | 11 | How to install: 12 | 13 | ```bash 14 | git clone git@github.com:frame00/dev-distribution.git 15 | cd dev-distribution 16 | npm i 17 | ``` 18 | 19 | # How to Calculate 20 | 21 | Distribution rate calculation: 22 | 23 | ```bash 24 | npm run calc 2018-07-20 2018-08-19 1000000 25 | ``` 26 | 27 | `npm run calc ` 28 | -------------------------------------------------------------------------------- /config/contract.ts: -------------------------------------------------------------------------------- 1 | export const contract = { 2 | decimals: 18 3 | } 4 | -------------------------------------------------------------------------------- /config/distribution.ts: -------------------------------------------------------------------------------- 1 | export const distribution = { 2 | threshold: { 3 | downloads: 1000000 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /index.ts: -------------------------------------------------------------------------------- 1 | import { packages } from './config/packages' 2 | import app from './src/index' 3 | import { writeFile } from 'fs' 4 | 5 | const [, , start, end, total] = process.argv 6 | const DIR = 'log' 7 | const write = (path: string, content: string) => { 8 | writeFile(path, content, 'utf-8', () => { 9 | console.log(content) 10 | }) 11 | } 12 | 13 | app(start, end, ~~total, packages) 14 | .then(res => { 15 | write(`${DIR}/${start}-to-${end}.json`, JSON.stringify(res)) 16 | }) 17 | .catch(err => { 18 | console.error(err) 19 | }) 20 | -------------------------------------------------------------------------------- /log/2018-07-20-to-2018-08-19.json: -------------------------------------------------------------------------------- 1 | { 2 | "distributions": 83333, 3 | "count": 303423.5, 4 | "points": 1.5, 5 | "downloads": 303422, 6 | "threshold": 1000000, 7 | "distributable": false, 8 | "term": { "from": "2018-07-20", "to": "2018-08-19" }, 9 | "timestamp": { 10 | "start": "2018-08-22T10:10:40.319Z", 11 | "apiCallEnd": "2018-08-22T10:10:40.902Z", 12 | "end": "2018-08-22T10:10:40.903Z" 13 | }, 14 | "details": [ 15 | { 16 | "value": 334.7892533043749, 17 | "count": 1219, 18 | "downloads": 1219, 19 | "balance": 0, 20 | "point": 0, 21 | "package": "zengin-code", 22 | "address": "0x623527a95416f2F451565976bB50e97050267e8D", 23 | "date": "2018-08-15" 24 | }, 25 | { 26 | "value": 68324.81523102199, 27 | "count": 248777.25, 28 | "downloads": 248777, 29 | "balance": 1, 30 | "point": 0.25, 31 | "package": "vue-i18n", 32 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 33 | "date": "2018-08-15" 34 | }, 35 | { 36 | "value": 2350.184854666827, 37 | "count": 8557.25, 38 | "downloads": 8557, 39 | "balance": 1, 40 | "point": 0.25, 41 | "package": "vue-i18n-extensions", 42 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 43 | "date": "2018-08-15" 44 | }, 45 | { 46 | "value": 10138.497935229143, 47 | "count": 36915.25, 48 | "downloads": 36915, 49 | "balance": 1, 50 | "point": 0.25, 51 | "package": "@kazupon/vue-i18n-loader", 52 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 53 | "date": "2018-08-15" 54 | }, 55 | { 56 | "value": 1592.7207360339592, 57 | "count": 5799.25, 58 | "downloads": 5799, 59 | "balance": 1, 60 | "point": 0.25, 61 | "package": "vue-cli-plugin-i18n", 62 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 63 | "date": "2018-08-15" 64 | }, 65 | { 66 | "value": 591.991989743708, 67 | "count": 2155.5, 68 | "downloads": 2155, 69 | "balance": 1, 70 | "point": 0.5, 71 | "package": "nuxt-device-detect", 72 | "address": "0x4eff38306428991e24a21530491ac4096e790603", 73 | "date": "2018-08-17" 74 | } 75 | ], 76 | "tokens": [ 77 | { 78 | "address": "0x623527a95416f2F451565976bB50e97050267e8D", 79 | "value": 334.7892533043749, 80 | "uint256": "334789253304374850000" 81 | }, 82 | { 83 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 84 | "value": 82406.21875695192, 85 | "uint256": "82406218756951920000000" 86 | }, 87 | { 88 | "address": "0x4eff38306428991e24a21530491ac4096e790603", 89 | "value": 591.991989743708, 90 | "uint256": "591991989743708000000" 91 | } 92 | ] 93 | } 94 | -------------------------------------------------------------------------------- /log/2018-08-20-to-2018-09-19.json: -------------------------------------------------------------------------------- 1 | { 2 | "distributions": 83333, 3 | "count": 489253958.3599779, 4 | "points": 0.3599779305661659, 5 | "downloads": 489253958, 6 | "threshold": 1000000, 7 | "distributable": true, 8 | "term": { "from": "2018-08-20", "to": "2018-09-19" }, 9 | "timestamp": { 10 | "start": "2018-09-20T07:17:23.515Z", 11 | "apiCallEnd": "2018-09-20T07:17:28.326Z", 12 | "end": "2018-09-20T07:17:28.331Z" 13 | }, 14 | "details": [ 15 | { 16 | "value": 0.18412313576770234, 17 | "count": 1081, 18 | "downloads": 1081, 19 | "balance": 0, 20 | "point": 0, 21 | "package": "zengin-code", 22 | "address": "0x623527a95416f2F451565976bB50e97050267e8D", 23 | "date": "2018-08-15" 24 | }, 25 | { 26 | "value": 50.61240604153377, 27 | "count": 297149.02857142856, 28 | "downloads": 297149, 29 | "balance": 1, 30 | "point": 0.02857142857142857, 31 | "package": "vue-i18n", 32 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 33 | "date": "2018-08-15" 34 | }, 35 | { 36 | "value": 2.2110154357646308, 37 | "count": 12981.028571428571, 38 | "downloads": 12981, 39 | "balance": 1, 40 | "point": 0.02857142857142857, 41 | "package": "vue-i18n-extensions", 42 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 43 | "date": "2018-08-15" 44 | }, 45 | { 46 | "value": 10.567242115471824, 47 | "count": 62041.02857142857, 48 | "downloads": 62041, 49 | "balance": 1, 50 | "point": 0.02857142857142857, 51 | "package": "@kazupon/vue-i18n-loader", 52 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 53 | "date": "2018-08-15" 54 | }, 55 | { 56 | "value": 1.2023408659067834, 57 | "count": 7059.028571428571, 58 | "downloads": 7059, 59 | "balance": 1, 60 | "point": 0.02857142857142857, 61 | "package": "vue-cli-plugin-i18n", 62 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 63 | "date": "2018-08-15" 64 | }, 65 | { 66 | "value": 0.5319353677072128, 67 | "count": 3123.030303030303, 68 | "downloads": 3123, 69 | "balance": 1, 70 | "point": 0.030303030303030304, 71 | "package": "nuxt-device-detect", 72 | "address": "0x4eff38306428991e24a21530491ac4096e790603", 73 | "date": "2018-08-17" 74 | }, 75 | { 76 | "value": 0.009544602200175889, 77 | "count": 56.03703703703704, 78 | "downloads": 56, 79 | "balance": 1, 80 | "point": 0.037037037037037035, 81 | "package": "@lacolaco/ngx-grid-layout", 82 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 83 | "date": "2018-08-23" 84 | }, 85 | { 86 | "value": 0.008522642149661351, 87 | "count": 50.03703703703704, 88 | "downloads": 50, 89 | "balance": 1, 90 | "point": 0.037037037037037035, 91 | "package": "@lacolaco/ngx-store", 92 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 93 | "date": "2018-08-23" 94 | }, 95 | { 96 | "value": 0.005456761998117742, 97 | "count": 32.03703703703704, 98 | "downloads": 32, 99 | "balance": 1, 100 | "point": 0.037037037037037035, 101 | "package": "@lacolaco/reactive-store", 102 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 103 | "date": "2018-08-23" 104 | }, 105 | { 106 | "value": 0.40453359545026557, 107 | "count": 2375.0454545454545, 108 | "downloads": 2375, 109 | "balance": 1, 110 | "point": 0.045454545454545456, 111 | "package": "gulp-riot", 112 | "address": "0x012fCFF42a7002E47FaeFF5A384d08673C622872", 113 | "date": "2018-08-28" 114 | }, 115 | { 116 | "value": 0.013976806573213514, 117 | "count": 82.05882352941177, 118 | "downloads": 82, 119 | "balance": 1, 120 | "point": 0.058823529411764705, 121 | "package": "@mediba/stylelint-config", 122 | "address": "0xa05338dad0a93f659ef4d82cdfa312b992c8e6e0", 123 | "date": "2018-09-02" 124 | }, 125 | { 126 | "value": 1.3900359953748556, 127 | "count": 8161, 128 | "downloads": 8161, 129 | "balance": 0, 130 | "point": 0, 131 | "package": "vue-template-loader", 132 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 133 | "date": "2018-09-02" 134 | }, 135 | { 136 | "value": 0.1306405597907749, 137 | "count": 767, 138 | "downloads": 767, 139 | "balance": 0, 140 | "point": 0, 141 | "package": "vuex-connect", 142 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 143 | "date": "2018-09-02" 144 | }, 145 | { 146 | "value": 0.8386885481222631, 147 | "count": 4924, 148 | "downloads": 4924, 149 | "balance": 0, 150 | "point": 0, 151 | "package": "vue-range-slider", 152 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 153 | "date": "2018-09-02" 154 | }, 155 | { 156 | "value": 0.2774621537146967, 157 | "count": 1629, 158 | "downloads": 1629, 159 | "balance": 0, 160 | "point": 0, 161 | "package": "vue-cli-plugin-auto-routing", 162 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 163 | "date": "2018-09-02" 164 | }, 165 | { 166 | "value": 0.09265771124665133, 167 | "count": 544, 168 | "downloads": 544, 169 | "balance": 0, 170 | "point": 0, 171 | "package": "vue-thin-modal", 172 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 173 | "date": "2018-09-02" 174 | }, 175 | { 176 | "value": 6.180473732161746, 177 | "count": 36286, 178 | "downloads": 36286, 179 | "balance": 0, 180 | "point": 0, 181 | "package": "vuex-class", 182 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 183 | "date": "2018-09-02" 184 | }, 185 | { 186 | "value": 0.0686416500595597, 187 | "count": 403, 188 | "downloads": 403, 189 | "balance": 0, 190 | "point": 0, 191 | "package": "sinai", 192 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 193 | "date": "2018-09-02" 194 | }, 195 | { 196 | "value": 0.02657096131337795, 197 | "count": 156, 198 | "downloads": 156, 199 | "balance": 0, 200 | "point": 0, 201 | "package": "@birdseye/app", 202 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 203 | "date": "2018-09-02" 204 | }, 205 | { 206 | "value": 2.5407630122542235, 207 | "count": 14917, 208 | "downloads": 14917, 209 | "balance": 0, 210 | "point": 0, 211 | "package": "svelte-jest", 212 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 213 | "date": "2018-09-02" 214 | }, 215 | { 216 | "value": 11247.984255884086, 217 | "count": 66037714, 218 | "downloads": 66037714, 219 | "balance": 0, 220 | "point": 0, 221 | "package": "chalk", 222 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 223 | "date": "2018-09-11" 224 | }, 225 | { 226 | "value": 15603.700796709778, 227 | "count": 91610435, 228 | "downloads": 91610435, 229 | "balance": 0, 230 | "point": 0, 231 | "package": "supports-color", 232 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 233 | "date": "2018-09-11" 234 | }, 235 | { 236 | "value": 10902.977355897383, 237 | "count": 64012154, 238 | "downloads": 64012154, 239 | "balance": 0, 240 | "point": 0, 241 | "package": "camelcase", 242 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 243 | "date": "2018-09-11" 244 | }, 245 | { 246 | "value": 8957.876874239539, 247 | "count": 52592331, 248 | "downloads": 52592331, 249 | "balance": 0, 250 | "point": 0, 251 | "package": "strip-ansi", 252 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 253 | "date": "2018-09-11" 254 | }, 255 | { 256 | "value": 9092.05494874517, 257 | "count": 53380100, 258 | "downloads": 53380100, 259 | "balance": 0, 260 | "point": 0, 261 | "package": "ansi-styles", 262 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 263 | "date": "2018-09-11" 264 | }, 265 | { 266 | "value": 8389.676113467236, 267 | "count": 49256384, 268 | "downloads": 49256384, 269 | "balance": 0, 270 | "point": 0, 271 | "package": "ansi-regex", 272 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 273 | "date": "2018-09-11" 274 | }, 275 | { 276 | "value": 6588.674724158741, 277 | "count": 38682577, 278 | "downloads": 38682577, 279 | "balance": 0, 280 | "point": 0, 281 | "package": "pify", 282 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 283 | "date": "2018-09-11" 284 | }, 285 | { 286 | "value": 6445.385705476098, 287 | "count": 37841317, 288 | "downloads": 37841317, 289 | "balance": 0, 290 | "point": 0, 291 | "package": "find-up", 292 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 293 | "date": "2018-09-11" 294 | }, 295 | { 296 | "value": 6027.290777576722, 297 | "count": 35386652, 298 | "downloads": 35386652, 299 | "balance": 0, 300 | "point": 0, 301 | "package": "globby", 302 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 303 | "date": "2018-09-11" 304 | }, 305 | { 306 | "value": 0.08141615069099142, 307 | "count": 478, 308 | "downloads": 478, 309 | "balance": 0, 310 | "point": 0, 311 | "package": "am-mocktimes", 312 | "address": "0xff47a035a34dDD18200e3850640E58A7400D83Fc", 313 | "date": "2018-09-12" 314 | } 315 | ], 316 | "tokens": [ 317 | { 318 | "address": "0x623527a95416f2F451565976bB50e97050267e8D", 319 | "value": 0.18412313576770234, 320 | "uint256": "184123135767702340" 321 | }, 322 | { 323 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 324 | "value": 64.593004458677, 325 | "uint256": "64593004458677000000" 326 | }, 327 | { 328 | "address": "0x4eff38306428991e24a21530491ac4096e790603", 329 | "value": 0.5319353677072128, 330 | "uint256": "531935367707212860" 331 | }, 332 | { 333 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 334 | "value": 0.02352400634795498, 335 | "uint256": "23524006347954980" 336 | }, 337 | { 338 | "address": "0x012fCFF42a7002E47FaeFF5A384d08673C622872", 339 | "value": 0.40453359545026557, 340 | "uint256": "404533595450265600" 341 | }, 342 | { 343 | "address": "0xa05338dad0a93f659ef4d82cdfa312b992c8e6e0", 344 | "value": 0.013976806573213514, 345 | "uint256": "13976806573213514" 346 | }, 347 | { 348 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 349 | "value": 11.54593432403815, 350 | "uint256": "11545934324038150000" 351 | }, 352 | { 353 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 354 | "value": 83255.62155215476, 355 | "uint256": "83255621552154750000000" 356 | }, 357 | { 358 | "address": "0xff47a035a34dDD18200e3850640E58A7400D83Fc", 359 | "value": 0.08141615069099142, 360 | "uint256": "81416150690991420" 361 | } 362 | ] 363 | } 364 | -------------------------------------------------------------------------------- /log/2018-09-20-to-2018-10-19.json: -------------------------------------------------------------------------------- 1 | { 2 | "distributions": 83333, 3 | "count": 544353968.8159031, 4 | "points": 19724.81590303625, 5 | "downloads": 544334244, 6 | "threshold": 1000000, 7 | "distributable": true, 8 | "term": { "from": "2018-09-20", "to": "2018-10-19" }, 9 | "timestamp": { 10 | "start": "2018-10-20T12:08:11.871Z", 11 | "apiCallEnd": "2018-10-20T12:08:22.659Z", 12 | "end": "2018-10-20T12:08:22.681Z" 13 | }, 14 | "details": [ 15 | { 16 | "value": 0.1980937849850168, 17 | "count": 1294.0028326636273, 18 | "downloads": 1294, 19 | "balance": 0.18412313576770234, 20 | "point": 0.0028326636271954206, 21 | "package": "zengin-code", 22 | "address": "0x623527a95416f2F451565976bB50e97050267e8D", 23 | "date": "2018-08-15" 24 | }, 25 | { 26 | "value": 47.988498474773905, 27 | "count": 313474.00912314554, 28 | "downloads": 313473, 29 | "balance": 65.593004458677, 30 | "point": 1.0091231455181078, 31 | "package": "vue-i18n", 32 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 33 | "date": "2018-08-15" 34 | }, 35 | { 36 | "value": 2.2978230377927265, 37 | "count": 15010.009123145519, 38 | "downloads": 15009, 39 | "balance": 65.593004458677, 40 | "point": 1.0091231455181078, 41 | "package": "vue-i18n-extensions", 42 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 43 | "date": "2018-08-15" 44 | }, 45 | { 46 | "value": 10.689081894481259, 47 | "count": 69824.00912314552, 48 | "downloads": 69823, 49 | "balance": 65.593004458677, 50 | "point": 1.0091231455181078, 51 | "package": "@kazupon/vue-i18n-loader", 52 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 53 | "date": "2018-08-15" 54 | }, 55 | { 56 | "value": 1.540506338335687, 57 | "count": 10063.009123145519, 58 | "downloads": 10062, 59 | "balance": 65.593004458677, 60 | "point": 1.0091231455181078, 61 | "package": "vue-cli-plugin-i18n", 62 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 63 | "date": "2018-08-15" 64 | }, 65 | { 66 | "value": 0.6884316985446041, 67 | "count": 4497.024316434408, 68 | "downloads": 4497, 69 | "balance": 1.5319353677072127, 70 | "point": 0.024316434408050997, 71 | "package": "nuxt-device-detect", 72 | "address": "0x4eff38306428991e24a21530491ac4096e790603", 73 | "date": "2018-08-17" 74 | }, 75 | { 76 | "value": 0.007657051501263803, 77 | "count": 50.01795656151488, 78 | "downloads": 50, 79 | "balance": 1.023524006347955, 80 | "point": 0.0179565615148764, 81 | "package": "@lacolaco/ngx-grid-layout", 82 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 83 | "date": "2018-08-23" 84 | }, 85 | { 86 | "value": 0.0009212652113689674, 87 | "count": 6.017956561514876, 88 | "downloads": 6, 89 | "balance": 1.023524006347955, 90 | "point": 0.0179565615148764, 91 | "package": "@lacolaco/ngx-store", 92 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 93 | "date": "2018-08-23" 94 | }, 95 | { 96 | "value": 0.0024521257317996112, 97 | "count": 16.017956561514875, 98 | "downloads": 16, 99 | "balance": 1.023524006347955, 100 | "point": 0.0179565615148764, 101 | "package": "@lacolaco/reactive-store", 102 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 103 | "date": "2018-08-23" 104 | }, 105 | { 106 | "value": 0.46079315154391404, 107 | "count": 3010.027010261451, 108 | "downloads": 3010, 109 | "balance": 1.4045335954502656, 110 | "point": 0.027010261450966647, 111 | "package": "gulp-riot", 112 | "address": "0x012fCFF42a7002E47FaeFF5A384d08673C622872", 113 | "date": "2018-08-28" 114 | }, 115 | { 116 | "value": 0.009188465797183472, 117 | "count": 60.02157397460794, 118 | "downloads": 60, 119 | "balance": 1.0139768065732135, 120 | "point": 0.021573974607940714, 121 | "package": "@mediba/stylelint-config", 122 | "address": "0xa05338dad0a93f659ef4d82cdfa312b992c8e6e0", 123 | "date": "2018-09-02" 124 | }, 125 | { 126 | "value": 1.1221583683161476, 127 | "count": 7330.2456581771075, 128 | "downloads": 7330, 129 | "balance": 11.54593432403815, 130 | "point": 0.24565817710719468, 131 | "package": "vue-template-loader", 132 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 133 | "date": "2018-09-02" 134 | }, 135 | { 136 | "value": 0.0905114635979365, 137 | "count": 591.2456581771072, 138 | "downloads": 591, 139 | "balance": 11.54593432403815, 140 | "point": 0.24565817710719468, 141 | "package": "vuex-connect", 142 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 143 | "date": "2018-09-02" 144 | }, 145 | { 146 | "value": 0.8207319318433538, 147 | "count": 5361.2456581771075, 148 | "downloads": 5361, 149 | "balance": 11.54593432403815, 150 | "point": 0.24565817710719468, 151 | "package": "vue-range-slider", 152 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 153 | "date": "2018-09-02" 154 | }, 155 | { 156 | "value": 0.22645187781217768, 157 | "count": 1479.245658177107, 158 | "downloads": 1479, 159 | "balance": 11.54593432403815, 160 | "point": 0.24565817710719468, 161 | "package": "vue-cli-plugin-auto-routing", 162 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 163 | "date": "2018-09-02" 164 | }, 165 | { 166 | "value": 0.12051632979837713, 167 | "count": 787.2456581771072, 168 | "downloads": 787, 169 | "balance": 11.54593432403815, 170 | "point": 0.24565817710719468, 171 | "package": "vue-thin-modal", 172 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 173 | "date": "2018-09-02" 174 | }, 175 | { 176 | "value": 5.652127734322466, 177 | "count": 36921.245658177104, 178 | "downloads": 36921, 179 | "balance": 11.54593432403815, 180 | "point": 0.24565817710719468, 181 | "package": "vuex-class", 182 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 183 | "date": "2018-09-02" 184 | }, 185 | { 186 | "value": 0.015652384148878005, 187 | "count": 102.24565817710719, 188 | "downloads": 102, 189 | "balance": 11.54593432403815, 190 | "point": 0.24565817710719468, 191 | "package": "sinai", 192 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 193 | "date": "2018-09-02" 194 | }, 195 | { 196 | "value": 0.0030993278813467246, 197 | "count": 20.245658177107195, 198 | "downloads": 20, 199 | "balance": 11.54593432403815, 200 | "point": 0.24565817710719468, 201 | "package": "@birdseye/app", 202 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 203 | "date": "2018-09-02" 204 | }, 205 | { 206 | "value": 3.732581727754482, 207 | "count": 24382.245658177108, 208 | "downloads": 24382, 209 | "balance": 11.54593432403815, 210 | "point": 0.24565817710719468, 211 | "package": "svelte-jest", 212 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 213 | "date": "2018-09-02" 214 | }, 215 | { 216 | "value": 10903.802812020065, 217 | "count": 71226624.93740927, 218 | "downloads": 71224434, 219 | "balance": 83255.62155215476, 220 | "point": 2190.9374092672306, 221 | "package": "chalk", 222 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 223 | "date": "2018-09-11" 224 | }, 225 | { 226 | "value": 15076.136676566783, 227 | "count": 98481451.93740927, 228 | "downloads": 98479261, 229 | "balance": 83255.62155215476, 230 | "point": 2190.9374092672306, 231 | "package": "supports-color", 232 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 233 | "date": "2018-09-11" 234 | }, 235 | { 236 | "value": 10287.147241364117, 237 | "count": 67198461.93740927, 238 | "downloads": 67196271, 239 | "balance": 83255.62155215476, 240 | "point": 2190.9374092672306, 241 | "package": "camelcase", 242 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 243 | "date": "2018-09-11" 244 | }, 245 | { 246 | "value": 9232.171553175065, 247 | "count": 60307071.93740927, 248 | "downloads": 60304881, 249 | "balance": 83255.62155215476, 250 | "point": 2190.9374092672306, 251 | "package": "strip-ansi", 252 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 253 | "date": "2018-09-11" 254 | }, 255 | { 256 | "value": 9095.429886564429, 257 | "count": 59413837.93740927, 258 | "downloads": 59411647, 259 | "balance": 83255.62155215476, 260 | "point": 2190.9374092672306, 261 | "package": "ansi-styles", 262 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 263 | "date": "2018-09-11" 264 | }, 265 | { 266 | "value": 8593.784192743187, 267 | "count": 56136950.93740927, 268 | "downloads": 56134760, 269 | "balance": 83255.62155215476, 270 | "point": 2190.9374092672306, 271 | "package": "ansi-regex", 272 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 273 | "date": "2018-09-11" 274 | }, 275 | { 276 | "value": 6777.508659108987, 277 | "count": 44272541.93740927, 278 | "downloads": 44270351, 279 | "balance": 83255.62155215476, 280 | "point": 2190.9374092672306, 281 | "package": "pify", 282 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 283 | "date": "2018-09-11" 284 | }, 285 | { 286 | "value": 7126.782447319945, 287 | "count": 46554093.93740927, 288 | "downloads": 46551903, 289 | "balance": 83255.62155215476, 290 | "point": 2190.9374092672306, 291 | "package": "find-up", 292 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 293 | "date": "2018-09-11" 294 | }, 295 | { 296 | "value": 6164.429790972974, 297 | "count": 40267742.93740927, 298 | "downloads": 40265552, 299 | "balance": 83255.62155215476, 300 | "point": 2190.9374092672306, 301 | "package": "globby", 302 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 303 | "date": "2018-09-11" 304 | }, 305 | { 306 | "value": 0.13946173026736902, 307 | "count": 911.0022004365052, 308 | "downloads": 911, 309 | "balance": 0.08141615069099142, 310 | "point": 0.0022004365051619306, 311 | "package": "am-mocktimes", 312 | "address": "0xff47a035a34dDD18200e3850640E58A7400D83Fc", 313 | "date": "2018-09-12" 314 | } 315 | ], 316 | "tokens": [ 317 | { 318 | "address": "0x623527a95416f2F451565976bB50e97050267e8D", 319 | "value": 0.1980937849850168, 320 | "uint256": "198093784985016800" 321 | }, 322 | { 323 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 324 | "value": 62.51590974538358, 325 | "uint256": "62515909745383580000" 326 | }, 327 | { 328 | "address": "0x4eff38306428991e24a21530491ac4096e790603", 329 | "value": 0.6884316985446041, 330 | "uint256": "688431698544604000" 331 | }, 332 | { 333 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 334 | "value": 0.011030442444432381, 335 | "uint256": "11030442444432382" 336 | }, 337 | { 338 | "address": "0x012fCFF42a7002E47FaeFF5A384d08673C622872", 339 | "value": 0.46079315154391404, 340 | "uint256": "460793151543914050" 341 | }, 342 | { 343 | "address": "0xa05338dad0a93f659ef4d82cdfa312b992c8e6e0", 344 | "value": 0.009188465797183472, 345 | "uint256": "9188465797183472" 346 | }, 347 | { 348 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 349 | "value": 11.783831145475165, 350 | "uint256": "11783831145475166000" 351 | }, 352 | { 353 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 354 | "value": 83257.19325983556, 355 | "uint256": "83257193259835560000000" 356 | }, 357 | { 358 | "address": "0xff47a035a34dDD18200e3850640E58A7400D83Fc", 359 | "value": 0.13946173026736902, 360 | "uint256": "139461730267369020" 361 | } 362 | ] 363 | } 364 | -------------------------------------------------------------------------------- /log/2018-10-20-to-2018-11-19.json: -------------------------------------------------------------------------------- 1 | { 2 | "distributions": 83333, 3 | "count": 434206832.1942798, 4 | "points": 21727.19427978285, 5 | "downloads": 434185105, 6 | "threshold": 1000000, 7 | "distributable": true, 8 | "term": { "from": "2018-10-20", "to": "2018-11-19" }, 9 | "timestamp": { 10 | "start": "2018-11-20T11:32:19.441Z", 11 | "apiCallEnd": "2018-11-20T11:32:23.196Z", 12 | "end": "2018-11-20T11:32:23.202Z" 13 | }, 14 | "details": [ 15 | { 16 | "value": 0.18386017875571803, 17 | "count": 958.0039814262578, 18 | "downloads": 958, 19 | "balance": 0.3822169207527192, 20 | "point": 0.003981426257840825, 21 | "package": "zengin-code", 22 | "address": "0x623527a95416f2F451565976bB50e97050267e8D", 23 | "date": "2018-08-15" 24 | }, 25 | { 26 | "value": 52.16623873406723, 27 | "count": 271812.3344678563, 28 | "downloads": 271811, 29 | "balance": 128.10891420406057, 30 | "point": 1.3344678562922976, 31 | "package": "vue-i18n", 32 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 33 | "date": "2018-08-15" 34 | }, 35 | { 36 | "value": 2.271438066107108, 37 | "count": 11835.334467856292, 38 | "downloads": 11834, 39 | "balance": 128.10891420406057, 40 | "point": 1.3344678562922976, 41 | "package": "vue-i18n-extensions", 42 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 43 | "date": "2018-08-15" 44 | }, 45 | { 46 | "value": 11.651914693839126, 47 | "count": 60712.33446785629, 48 | "downloads": 60711, 49 | "balance": 128.10891420406057, 50 | "point": 1.3344678562922976, 51 | "package": "@kazupon/vue-i18n-loader", 52 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 53 | "date": "2018-08-15" 54 | }, 55 | { 56 | "value": 1.6118088300755398, 57 | "count": 8398.334467856292, 58 | "downloads": 8397, 59 | "balance": 128.10891420406057, 60 | "point": 1.3344678562922976, 61 | "package": "vue-cli-plugin-i18n", 62 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 63 | "date": "2018-08-15" 64 | }, 65 | { 66 | "value": 0.9972211496868069, 67 | "count": 5196.023620926237, 68 | "downloads": 5196, 69 | "balance": 2.220367066251817, 70 | "point": 0.023620926236721455, 71 | "package": "nuxt-device-detect", 72 | "address": "0x4eff38306428991e24a21530491ac4096e790603", 73 | "date": "2018-08-17" 74 | }, 75 | { 76 | "value": 0.006143698095014102, 77 | "count": 32.01175630055446, 78 | "downloads": 32, 79 | "balance": 1.0345544487923872, 80 | "point": 0.011756300554458947, 81 | "package": "@lacolaco/ngx-grid-layout", 82 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 83 | "date": "2018-08-23" 84 | }, 85 | { 86 | "value": 0.004224497524657489, 87 | "count": 22.01175630055446, 88 | "downloads": 22, 89 | "balance": 1.0345544487923872, 90 | "point": 0.011756300554458947, 91 | "package": "@lacolaco/ngx-store", 92 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 93 | "date": "2018-08-23" 94 | }, 95 | { 96 | "value": 0.004608337638728812, 97 | "count": 24.01175630055446, 98 | "downloads": 24, 99 | "balance": 1.0345544487923872, 100 | "point": 0.011756300554458947, 101 | "package": "@lacolaco/reactive-store", 102 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 103 | "date": "2018-08-23" 104 | }, 105 | { 106 | "value": 0.7045428425540052, 107 | "count": 3671.0224738162287, 108 | "downloads": 3671, 109 | "balance": 1.8653267469941797, 110 | "point": 0.022473816228845537, 111 | "package": "gulp-riot", 112 | "address": "0x012fCFF42a7002E47FaeFF5A384d08673C622872", 113 | "date": "2018-08-28" 114 | }, 115 | { 116 | "value": 0.09365950534542106, 117 | "count": 488.0131175034919, 118 | "downloads": 488, 119 | "balance": 1.023165272370397, 120 | "point": 0.013117503491928167, 121 | "package": "@mediba/stylelint-config", 122 | "address": "0xa05338dad0a93f659ef4d82cdfa312b992c8e6e0", 123 | "date": "2018-09-02" 124 | }, 125 | { 126 | "value": 1.2569418567306427, 127 | "count": 6549.299099557302, 128 | "downloads": 6549, 129 | "balance": 23.329765469513315, 130 | "point": 0.29909955730145277, 131 | "package": "vue-template-loader", 132 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 133 | "date": "2018-09-02" 134 | }, 135 | { 136 | "value": 0.16856321328140728, 137 | "count": 878.2990995573015, 138 | "downloads": 878, 139 | "balance": 23.329765469513315, 140 | "point": 0.29909955730145277, 141 | "package": "vuex-connect", 142 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 143 | "date": "2018-09-02" 144 | }, 145 | { 146 | "value": 0.8038186020694463, 147 | "count": 4188.299099557302, 148 | "downloads": 4188, 149 | "balance": 23.329765469513315, 150 | "point": 0.29909955730145277, 151 | "package": "vue-range-slider", 152 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 153 | "date": "2018-09-02" 154 | }, 155 | { 156 | "value": 0.23266451233131813, 157 | "count": 1212.2990995573014, 158 | "downloads": 1212, 159 | "balance": 23.329765469513315, 160 | "point": 0.29909955730145277, 161 | "package": "vue-cli-plugin-auto-routing", 162 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 163 | "date": "2018-09-02" 164 | }, 165 | { 166 | "value": 0.2526241982630269, 167 | "count": 1316.2990995573014, 168 | "downloads": 1316, 169 | "balance": 23.329765469513315, 170 | "point": 0.29909955730145277, 171 | "package": "vue-thin-modal", 172 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 173 | "date": "2018-09-02" 174 | }, 175 | { 176 | "value": 8.843541711350333, 177 | "count": 46079.2990995573, 178 | "downloads": 46079, 179 | "balance": 23.329765469513315, 180 | "point": 0.29909955730145277, 181 | "package": "vuex-class", 182 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 183 | "date": "2018-09-02" 184 | }, 185 | { 186 | "value": 0.014259487424735573, 187 | "count": 74.29909955730145, 188 | "downloads": 74, 189 | "balance": 23.329765469513315, 190 | "point": 0.29909955730145277, 191 | "package": "sinai", 192 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 193 | "date": "2018-09-02" 194 | }, 195 | { 196 | "value": 0.0008250834322392813, 197 | "count": 4.299099557301453, 198 | "downloads": 4, 199 | "balance": 23.329765469513315, 200 | "point": 0.29909955730145277, 201 | "package": "@birdseye/app", 202 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 203 | "date": "2018-09-02" 204 | }, 205 | { 206 | "value": 3.6068110350752796, 207 | "count": 18793.2990995573, 208 | "downloads": 18793, 209 | "balance": 23.329765469513315, 210 | "point": 0.29909955730145277, 211 | "package": "svelte-jest", 212 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 213 | "date": "2018-09-02" 214 | }, 215 | { 216 | "value": 10739.952759415317, 217 | "count": 55960554.22920018, 218 | "downloads": 55958141, 219 | "balance": 166512.81481199033, 220 | "point": 2413.229200173773, 221 | "package": "chalk", 222 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 223 | "date": "2018-09-11" 224 | }, 225 | { 226 | "value": 14675.262781408357, 227 | "count": 76465498.22920017, 228 | "downloads": 76463085, 229 | "balance": 166512.81481199033, 230 | "point": 2413.229200173773, 231 | "package": "supports-color", 232 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 233 | "date": "2018-09-11" 234 | }, 235 | { 236 | "value": 10248.422846780257, 237 | "count": 53399436.22920018, 238 | "downloads": 53397023, 239 | "balance": 166512.81481199033, 240 | "point": 2413.229200173773, 241 | "package": "camelcase", 242 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 243 | "date": "2018-09-11" 244 | }, 245 | { 246 | "value": 9328.7605497109, 247 | "count": 48607533.22920018, 248 | "downloads": 48605120, 249 | "balance": 166512.81481199033, 250 | "point": 2413.229200173773, 251 | "package": "strip-ansi", 252 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 253 | "date": "2018-09-11" 254 | }, 255 | { 256 | "value": 8934.596671931515, 257 | "count": 46553741.22920018, 258 | "downloads": 46551328, 259 | "balance": 166512.81481199033, 260 | "point": 2413.229200173773, 261 | "package": "ansi-styles", 262 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 263 | "date": "2018-09-11" 264 | }, 265 | { 266 | "value": 8664.16768524422, 267 | "count": 45144670.22920018, 268 | "downloads": 45142257, 269 | "balance": 166512.81481199033, 270 | "point": 2413.229200173773, 271 | "package": "ansi-regex", 272 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 273 | "date": "2018-09-11" 274 | }, 275 | { 276 | "value": 7095.364967100408, 277 | "count": 36970419.22920018, 278 | "downloads": 36968006, 279 | "balance": 166512.81481199033, 280 | "point": 2413.229200173773, 281 | "package": "pify", 282 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 283 | "date": "2018-09-11" 284 | }, 285 | { 286 | "value": 7353.378453378011, 287 | "count": 38314799.22920018, 288 | "downloads": 38312386, 289 | "balance": 166512.81481199033, 290 | "point": 2413.229200173773, 291 | "package": "find-up", 292 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 293 | "date": "2018-09-11" 294 | }, 295 | { 296 | "value": 6208.213351932721, 297 | "count": 32347913.229200173, 298 | "downloads": 32345500, 299 | "balance": 166512.81481199033, 300 | "point": 2413.229200173773, 301 | "package": "globby", 302 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 303 | "date": "2018-09-11" 304 | }, 305 | { 306 | "value": 0.004222864650306776, 307 | "count": 22.00324820413174, 308 | "downloads": 22, 309 | "balance": 0.22087788095836045, 310 | "point": 0.0032482041317405948, 311 | "package": "am-mocktimes", 312 | "address": "0xff47a035a34dDD18200e3850640E58A7400D83Fc", 313 | "date": "2018-09-12" 314 | } 315 | ], 316 | "tokens": [ 317 | { 318 | "address": "0x623527a95416f2F451565976bB50e97050267e8D", 319 | "value": 0.18386017875571803, 320 | "uint256": "183860178755718000" 321 | }, 322 | { 323 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 324 | "value": 67.70140032408901, 325 | "uint256": "67701400324089000000" 326 | }, 327 | { 328 | "address": "0x4eff38306428991e24a21530491ac4096e790603", 329 | "value": 0.9972211496868069, 330 | "uint256": "997221149686806900" 331 | }, 332 | { 333 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 334 | "value": 0.014976533258400404, 335 | "uint256": "14976533258400404" 336 | }, 337 | { 338 | "address": "0x012fCFF42a7002E47FaeFF5A384d08673C622872", 339 | "value": 0.7045428425540052, 340 | "uint256": "704542842554005200" 341 | }, 342 | { 343 | "address": "0xa05338dad0a93f659ef4d82cdfa312b992c8e6e0", 344 | "value": 0.09365950534542106, 345 | "uint256": "93659505345421060" 346 | }, 347 | { 348 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 349 | "value": 15.180049699958431, 350 | "uint256": "15180049699958432000" 351 | }, 352 | { 353 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 354 | "value": 83248.12006690171, 355 | "uint256": "83248120066901720000000" 356 | }, 357 | { 358 | "address": "0xff47a035a34dDD18200e3850640E58A7400D83Fc", 359 | "value": 0.004222864650306776, 360 | "uint256": "4222864650306776" 361 | } 362 | ] 363 | } 364 | -------------------------------------------------------------------------------- /log/2018-11-20-to-2018-12-19.json: -------------------------------------------------------------------------------- 1 | { 2 | "distributions": 83333, 3 | "count": 675588579.0573902, 4 | "points": 22715.057390253896, 5 | "downloads": 675565864, 6 | "threshold": 1000000, 7 | "distributable": true, 8 | "term": { "from": "2018-11-20", "to": "2018-12-19" }, 9 | "timestamp": { 10 | "start": "2018-12-20T07:14:29.729Z", 11 | "apiCallEnd": "2018-12-20T07:14:31.654Z", 12 | "end": "2018-12-20T07:14:31.659Z" 13 | }, 14 | "details": [ 15 | { 16 | "value": 0.2339931139876324, 17 | "count": 1897.0044926753928, 18 | "downloads": 1897, 19 | "balance": 0.5660770995084371, 20 | "point": 0.004492675392924104, 21 | "package": "zengin-code", 22 | "address": "0x623527a95416f2F451565976bB50e97050267e8D", 23 | "date": "2018-08-15" 24 | }, 25 | { 26 | "value": 56.32813391362196, 27 | "count": 456657.5540501153, 28 | "downloads": 456656, 29 | "balance": 195.81031452814958, 30 | "point": 1.5540501153027744, 31 | "package": "vue-i18n", 32 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 33 | "date": "2018-08-15" 34 | }, 35 | { 36 | "value": 2.7543223573354507, 37 | "count": 22329.554050115305, 38 | "downloads": 22328, 39 | "balance": 195.81031452814958, 40 | "point": 1.5540501153027744, 41 | "package": "vue-i18n-extensions", 42 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 43 | "date": "2018-08-15" 44 | }, 45 | { 46 | "value": 13.64132884915951, 47 | "count": 110591.5540501153, 48 | "downloads": 110590, 49 | "balance": 195.81031452814958, 50 | "point": 1.5540501153027744, 51 | "package": "@kazupon/vue-i18n-loader", 52 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 53 | "date": "2018-08-15" 54 | }, 55 | { 56 | "value": 2.063569413212105, 57 | "count": 16729.554050115305, 58 | "downloads": 16728, 59 | "balance": 195.81031452814958, 60 | "point": 1.5540501153027744, 61 | "package": "vue-cli-plugin-i18n", 62 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 63 | "date": "2018-08-15" 64 | }, 65 | { 66 | "value": 1.053401440477234, 67 | "count": 8540.025948292065, 68 | "downloads": 8540, 69 | "balance": 3.2175882159386235, 70 | "point": 0.025948292064021158, 71 | "package": "nuxt-device-detect", 72 | "address": "0x4eff38306428991e24a21530491ac4096e790603", 73 | "date": "2018-08-17" 74 | }, 75 | { 76 | "value": 0.013322761026821608, 77 | "count": 108.00889433035637, 78 | "downloads": 108, 79 | "balance": 1.0495309820507877, 80 | "point": 0.008894330356362607, 81 | "package": "@lacolaco/ngx-grid-layout", 82 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 83 | "date": "2018-08-23" 84 | }, 85 | { 86 | "value": 0.012459319846667427, 87 | "count": 101.00889433035637, 88 | "downloads": 101, 89 | "balance": 1.0495309820507877, 90 | "point": 0.008894330356362607, 91 | "package": "@lacolaco/ngx-store", 92 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 93 | "date": "2018-08-23" 94 | }, 95 | { 96 | "value": 0.00703197528569828, 97 | "count": 57.00889433035636, 98 | "downloads": 57, 99 | "balance": 1.0495309820507877, 100 | "point": 0.008894330356362607, 101 | "package": "@lacolaco/reactive-store", 102 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 103 | "date": "2018-08-23" 104 | }, 105 | { 106 | "value": 0.42222554231819054, 107 | "count": 3423.022742208757, 108 | "downloads": 3423, 109 | "balance": 2.5698695895481847, 110 | "point": 0.022742208757063582, 111 | "package": "gulp-riot", 112 | "address": "0x012fCFF42a7002E47FaeFF5A384d08673C622872", 113 | "date": "2018-08-28" 114 | }, 115 | { 116 | "value": 0.33575654588559517, 117 | "count": 2722.010340970164, 118 | "downloads": 2722, 119 | "balance": 1.116824777715818, 120 | "point": 0.010340970164035353, 121 | "package": "@mediba/stylelint-config", 122 | "address": "0xa05338dad0a93f659ef4d82cdfa312b992c8e6e0", 123 | "date": "2018-09-02" 124 | }, 125 | { 126 | "value": 1.159275441478664, 127 | "count": 9398.35657236268, 128 | "downloads": 9398, 129 | "balance": 38.50981516947175, 130 | "point": 0.35657236268029396, 131 | "package": "vue-template-loader", 132 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 133 | "date": "2018-09-02" 134 | }, 135 | { 136 | "value": 0.18950764742549525, 137 | "count": 1536.3565723626803, 138 | "downloads": 1536, 139 | "balance": 38.50981516947175, 140 | "point": 0.35657236268029396, 141 | "package": "vuex-connect", 142 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 143 | "date": "2018-09-02" 144 | }, 145 | { 146 | "value": 0.737792796823401, 147 | "count": 5981.356572362681, 148 | "downloads": 5981, 149 | "balance": 38.50981516947175, 150 | "point": 0.35657236268029396, 151 | "package": "vue-range-slider", 152 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 153 | "date": "2018-09-02" 154 | }, 155 | { 156 | "value": 0.1996222441073014, 157 | "count": 1618.3565723626803, 158 | "downloads": 1618, 159 | "balance": 38.50981516947175, 160 | "point": 0.35657236268029396, 161 | "package": "vue-cli-plugin-auto-routing", 162 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 163 | "date": "2018-09-02" 164 | }, 165 | { 166 | "value": 0.5475890397094368, 167 | "count": 4439.356572362681, 168 | "downloads": 4439, 169 | "balance": 38.50981516947175, 170 | "point": 0.35657236268029396, 171 | "package": "vue-thin-modal", 172 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 173 | "date": "2018-09-02" 174 | }, 175 | { 176 | "value": 7.64297861199644, 177 | "count": 61962.35657236268, 178 | "downloads": 61962, 179 | "balance": 38.50981516947175, 180 | "point": 0.35657236268029396, 181 | "package": "vuex-class", 182 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 183 | "date": "2018-09-02" 184 | }, 185 | { 186 | "value": 0.01768285257481301, 187 | "count": 143.35657236268028, 188 | "downloads": 143, 189 | "balance": 38.50981516947175, 190 | "point": 0.35657236268029396, 191 | "package": "sinai", 192 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 193 | "date": "2018-09-02" 194 | }, 195 | { 196 | "value": 0.011515415573711711, 197 | "count": 93.3565723626803, 198 | "downloads": 93, 199 | "balance": 38.50981516947175, 200 | "point": 0.35657236268029396, 201 | "package": "@birdseye/app", 202 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 203 | "date": "2018-09-02" 204 | }, 205 | { 206 | "value": 3.3043100304616964, 207 | "count": 26788.35657236268, 208 | "downloads": 26788, 209 | "balance": 38.50981516947175, 210 | "point": 0.35657236268029396, 211 | "package": "svelte-jest", 212 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 213 | "date": "2018-09-02" 214 | }, 215 | { 216 | "value": 10667.286841391418, 217 | "count": 86480711.83772606, 218 | "downloads": 86478189, 219 | "balance": 249760.93487889203, 220 | "point": 2522.8377260494144, 221 | "package": "chalk", 222 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 223 | "date": "2018-09-11" 224 | }, 225 | { 226 | "value": 14451.1938479334, 227 | "count": 117157206.83772606, 228 | "downloads": 117154684, 229 | "balance": 249760.93487889203, 230 | "point": 2522.8377260494144, 231 | "package": "supports-color", 232 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 233 | "date": "2018-09-11" 234 | }, 235 | { 236 | "value": 10462.508073807714, 237 | "count": 84820550.83772606, 238 | "downloads": 84818028, 239 | "balance": 249760.93487889203, 240 | "point": 2522.8377260494144, 241 | "package": "camelcase", 242 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 243 | "date": "2018-09-11" 244 | }, 245 | { 246 | "value": 9625.335734723581, 247 | "count": 78033514.83772606, 248 | "downloads": 78030992, 249 | "balance": 249760.93487889203, 250 | "point": 2522.8377260494144, 251 | "package": "strip-ansi", 252 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 253 | "date": "2018-09-11" 254 | }, 255 | { 256 | "value": 8824.079835061584, 257 | "count": 71537656.83772606, 258 | "downloads": 71535134, 259 | "balance": 249760.93487889203, 260 | "point": 2522.8377260494144, 261 | "package": "ansi-styles", 262 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 263 | "date": "2018-09-11" 264 | }, 265 | { 266 | "value": 9044.085264508569, 267 | "count": 73321261.83772606, 268 | "downloads": 73318739, 269 | "balance": 249760.93487889203, 270 | "point": 2522.8377260494144, 271 | "package": "ansi-regex", 272 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 273 | "date": "2018-09-11" 274 | }, 275 | { 276 | "value": 7052.809567215113, 277 | "count": 57177799.83772605, 278 | "downloads": 57175277, 279 | "balance": 249760.93487889203, 280 | "point": 2522.8377260494144, 281 | "package": "pify", 282 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 283 | "date": "2018-09-11" 284 | }, 285 | { 286 | "value": 7443.810271236132, 287 | "count": 60347679.83772605, 288 | "downloads": 60345157, 289 | "balance": 249760.93487889203, 290 | "point": 2522.8377260494144, 291 | "package": "find-up", 292 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 293 | "date": "2018-09-11" 294 | }, 295 | { 296 | "value": 5667.564361914653, 297 | "count": 45947484.83772605, 298 | "downloads": 45944962, 299 | "balance": 249760.93487889203, 300 | "point": 2522.8377260494144, 301 | "package": "globby", 302 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 303 | "date": "2018-09-11" 304 | }, 305 | { 306 | "value": 0.15122583859244623, 307 | "count": 1226.0022969463837, 308 | "downloads": 1226, 309 | "balance": 0.2251007456086672, 310 | "point": 0.00229694638376191, 311 | "package": "am-mocktimes", 312 | "address": "0xff47a035a34dDD18200e3850640E58A7400D83Fc", 313 | "date": "2018-09-12" 314 | }, 315 | { 316 | "value": 3.4991570569448345, 317 | "count": 28368, 318 | "downloads": 28368, 319 | "balance": 0, 320 | "point": 0, 321 | "package": "serverless-step-functions", 322 | "address": "0x9bEfA9767444D5552534faA8A24B18d3347AC3F4", 323 | "date": "2018-12-11" 324 | } 325 | ], 326 | "tokens": [ 327 | { 328 | "address": "0x623527a95416f2F451565976bB50e97050267e8D", 329 | "value": 0.2339931139876324, 330 | "uint256": "233993113987632400" 331 | }, 332 | { 333 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 334 | "value": 74.78735453332904, 335 | "uint256": "74787354533329040000" 336 | }, 337 | { 338 | "address": "0x4eff38306428991e24a21530491ac4096e790603", 339 | "value": 1.053401440477234, 340 | "uint256": "1053401440477234000" 341 | }, 342 | { 343 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 344 | "value": 0.03281405615918732, 345 | "uint256": "32814056159187316" 346 | }, 347 | { 348 | "address": "0x012fCFF42a7002E47FaeFF5A384d08673C622872", 349 | "value": 0.42222554231819054, 350 | "uint256": "422225542318190500" 351 | }, 352 | { 353 | "address": "0xa05338dad0a93f659ef4d82cdfa312b992c8e6e0", 354 | "value": 0.33575654588559517, 355 | "uint256": "335756545885595200" 356 | }, 357 | { 358 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 359 | "value": 13.81027408015096, 360 | "uint256": "13810274080150960000" 361 | }, 362 | { 363 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 364 | "value": 83238.67379779216, 365 | "uint256": "83238673797792160000000" 366 | }, 367 | { 368 | "address": "0xff47a035a34dDD18200e3850640E58A7400D83Fc", 369 | "value": 0.15122583859244623, 370 | "uint256": "151225838592446240" 371 | }, 372 | { 373 | "address": "0x9bEfA9767444D5552534faA8A24B18d3347AC3F4", 374 | "value": 3.4991570569448345, 375 | "uint256": "3499157056944834600" 376 | } 377 | ] 378 | } 379 | -------------------------------------------------------------------------------- /log/2018-12-20-to-2019-01-19.json: -------------------------------------------------------------------------------- 1 | { 2 | "distributions": 83333, 3 | "count": 574560846.2792128, 4 | "points": 23064.27921288147, 5 | "downloads": 574537782, 6 | "threshold": 1000000, 7 | "distributable": true, 8 | "term": { "from": "2018-12-20", "to": "2019-01-19" }, 9 | "timestamp": { 10 | "start": "2019-01-20T00:47:43.973Z", 11 | "apiCallEnd": "2019-01-20T00:47:46.651Z", 12 | "end": "2019-01-20T00:47:46.655Z" 13 | }, 14 | "details": [ 15 | { 16 | "value": 0.2474351038443937, 17 | "count": 1706.005095988621, 18 | "downloads": 1706, 19 | "balance": 0.8000702134960695, 20 | "point": 0.005095988620994074, 21 | "package": "zengin-code", 22 | "address": "0x623527a95416f2F451565976bB50e97050267e8D", 23 | "date": "2018-08-15" 24 | }, 25 | { 26 | "value": 55.52272295849907, 27 | "count": 382815.72355203226, 28 | "downloads": 382814, 29 | "balance": 270.5976690614786, 30 | "point": 1.7235520322387172, 31 | "package": "vue-i18n", 32 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 33 | "date": "2018-08-15" 34 | }, 35 | { 36 | "value": 2.8453100613247417, 37 | "count": 19617.72355203224, 38 | "downloads": 19616, 39 | "balance": 270.5976690614786, 40 | "point": 1.7235520322387172, 41 | "package": "vue-i18n-extensions", 42 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 43 | "date": "2018-08-15" 44 | }, 45 | { 46 | "value": 13.688475677891049, 47 | "count": 94378.72355203224, 48 | "downloads": 94377, 49 | "balance": 270.5976690614786, 50 | "point": 1.7235520322387172, 51 | "package": "@kazupon/vue-i18n-loader", 52 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 53 | "date": "2018-08-15" 54 | }, 55 | { 56 | "value": 2.2851743540551883, 57 | "count": 15755.72355203224, 58 | "downloads": 15754, 59 | "balance": 270.5976690614786, 60 | "point": 1.7235520322387172, 61 | "package": "vue-cli-plugin-i18n", 62 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 63 | "date": "2018-08-15" 64 | }, 65 | { 66 | "value": 1.2699543467798808, 67 | "count": 8756.027554771978, 68 | "downloads": 8756, 69 | "balance": 4.270989656415858, 70 | "point": 0.027554771976876502, 71 | "package": "nuxt-device-detect", 72 | "address": "0x4eff38306428991e24a21530491ac4096e790603", 73 | "date": "2018-08-17" 74 | }, 75 | { 76 | "value": 0.003191883588732554, 77 | "count": 22.00726406065913, 78 | "downloads": 22, 79 | "balance": 1.082345038209975, 80 | "point": 0.007264060659127349, 81 | "package": "@lacolaco/ngx-grid-layout", 82 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 83 | "date": "2018-08-23" 84 | }, 85 | { 86 | "value": 0.006962864528403292, 87 | "count": 48.007264060659125, 88 | "downloads": 48, 89 | "balance": 1.082345038209975, 90 | "point": 0.007264060659127349, 91 | "package": "@lacolaco/ngx-store", 92 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 93 | "date": "2018-08-23" 94 | }, 95 | { 96 | "value": 0.004642260873221299, 97 | "count": 32.007264060659125, 98 | "downloads": 32, 99 | "balance": 1.082345038209975, 100 | "point": 0.007264060659127349, 101 | "package": "@lacolaco/reactive-store", 102 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 103 | "date": "2018-08-23" 104 | }, 105 | { 106 | "value": 0.3338798645468176, 107 | "count": 2302.0207784384156, 108 | "downloads": 2302, 109 | "balance": 2.992095131866375, 110 | "point": 0.020778438415738718, 111 | "package": "gulp-riot", 112 | "address": "0x012fCFF42a7002E47FaeFF5A384d08673C622872", 113 | "date": "2018-08-28" 114 | }, 115 | { 116 | "value": 0.07933715313848086, 117 | "count": 547.0104502253497, 118 | "downloads": 547, 119 | "balance": 1.4525813236014131, 120 | "point": 0.010450225349650455, 121 | "package": "@mediba/stylelint-config", 122 | "address": "0xa05338dad0a93f659ef4d82cdfa312b992c8e6e0", 123 | "date": "2018-09-02" 124 | }, 125 | { 126 | "value": 1.1071275739617485, 127 | "count": 7633.376403519782, 128 | "downloads": 7633, 129 | "balance": 52.320089249622704, 130 | "point": 0.3764035197814583, 131 | "package": "vue-template-loader", 132 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 133 | "date": "2018-09-02" 134 | }, 135 | { 136 | "value": 0.20774861985027757, 137 | "count": 1432.3764035197814, 138 | "downloads": 1432, 139 | "balance": 52.320089249622704, 140 | "point": 0.3764035197814583, 141 | "package": "vuex-connect", 142 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 143 | "date": "2018-09-02" 144 | }, 145 | { 146 | "value": 0.7246630840420664, 147 | "count": 4996.376403519782, 148 | "downloads": 4996, 149 | "balance": 52.320089249622704, 150 | "point": 0.3764035197814583, 151 | "package": "vue-range-slider", 152 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 153 | "date": "2018-09-02" 154 | }, 155 | { 156 | "value": 0.23733631645384795, 157 | "count": 1636.3764035197814, 158 | "downloads": 1636, 159 | "balance": 52.320089249622704, 160 | "point": 0.3764035197814583, 161 | "package": "vue-cli-plugin-auto-routing", 162 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 163 | "date": "2018-09-02" 164 | }, 165 | { 166 | "value": 0.34321385822152634, 167 | "count": 2366.3764035197814, 168 | "downloads": 2366, 169 | "balance": 52.320089249622704, 170 | "point": 0.3764035197814583, 171 | "package": "vue-thin-modal", 172 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 173 | "date": "2018-09-02" 174 | }, 175 | { 176 | "value": 7.625413165911066, 177 | "count": 52575.37640351978, 178 | "downloads": 52575, 179 | "balance": 52.320089249622704, 180 | "point": 0.3764035197814583, 181 | "package": "vuex-class", 182 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 183 | "date": "2018-09-02" 184 | }, 185 | { 186 | "value": 0.009046931875319483, 187 | "count": 62.376403519781455, 188 | "downloads": 62, 189 | "balance": 52.320089249622704, 190 | "point": 0.3764035197814583, 191 | "package": "sinai", 192 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 193 | "date": "2018-09-02" 194 | }, 195 | { 196 | "value": 0.002375196366671256, 197 | "count": 16.37640351978146, 198 | "downloads": 16, 199 | "balance": 52.320089249622704, 200 | "point": 0.3764035197814583, 201 | "package": "@birdseye/app", 202 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 203 | "date": "2018-09-02" 204 | }, 205 | { 206 | "value": 4.165103040577819, 207 | "count": 28717.376403519782, 208 | "downloads": 28717, 209 | "balance": 52.320089249622704, 210 | "point": 0.3764035197814583, 211 | "package": "svelte-jest", 212 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 213 | "date": "2018-09-02" 214 | }, 215 | { 216 | "value": 10665.619354361279, 217 | "count": 73536861.53545135, 218 | "downloads": 73534300, 219 | "balance": 332999.6086766842, 220 | "point": 2561.535451359109, 221 | "package": "chalk", 222 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 223 | "date": "2018-09-11" 224 | }, 225 | { 226 | "value": 14831.493792091125, 227 | "count": 102259556.53545135, 228 | "downloads": 102256995, 229 | "balance": 332999.6086766842, 230 | "point": 2561.535451359109, 231 | "package": "supports-color", 232 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 233 | "date": "2018-09-11" 234 | }, 235 | { 236 | "value": 10564.245524137394, 237 | "count": 72837913.53545135, 238 | "downloads": 72835352, 239 | "balance": 332999.6086766842, 240 | "point": 2561.535451359109, 241 | "package": "camelcase", 242 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 243 | "date": "2018-09-11" 244 | }, 245 | { 246 | "value": 9612.463568510975, 247 | "count": 66275607.53545136, 248 | "downloads": 66273046, 249 | "balance": 332999.6086766842, 250 | "point": 2561.535451359109, 251 | "package": "strip-ansi", 252 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 253 | "date": "2018-09-11" 254 | }, 255 | { 256 | "value": 8427.65021977439, 257 | "count": 58106606.53545136, 258 | "downloads": 58104045, 259 | "balance": 332999.6086766842, 260 | "point": 2561.535451359109, 261 | "package": "ansi-styles", 262 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 263 | "date": "2018-09-11" 264 | }, 265 | { 266 | "value": 9155.374701662964, 267 | "count": 63124090.53545136, 268 | "downloads": 63121529, 269 | "balance": 332999.6086766842, 270 | "point": 2561.535451359109, 271 | "package": "ansi-regex", 272 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 273 | "date": "2018-09-11" 274 | }, 275 | { 276 | "value": 7125.130922364209, 277 | "count": 49126051.53545136, 278 | "downloads": 49123490, 279 | "balance": 332999.6086766842, 280 | "point": 2561.535451359109, 281 | "package": "pify", 282 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 283 | "date": "2018-09-11" 284 | }, 285 | { 286 | "value": 7249.025340835264, 287 | "count": 49980273.53545136, 288 | "downloads": 49977712, 289 | "balance": 332999.6086766842, 290 | "point": 2561.535451359109, 291 | "package": "find-up", 292 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 293 | "date": "2018-09-11" 294 | }, 295 | { 296 | "value": 5607.662665600498, 297 | "count": 38663475.53545136, 298 | "downloads": 38660914, 299 | "balance": 332999.6086766842, 300 | "point": 2561.535451359109, 301 | "package": "globby", 302 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 303 | "date": "2018-09-11" 304 | }, 305 | { 306 | "value": 0.06555747637170467, 307 | "count": 452.00291726034266, 308 | "downloads": 452, 309 | "balance": 0.3763265842011135, 310 | "point": 0.0029172603426442906, 311 | "package": "am-mocktimes", 312 | "address": "0xff47a035a34dDD18200e3850640E58A7400D83Fc", 313 | "date": "2018-09-12" 314 | }, 315 | { 316 | "value": 3.559238869206945, 317 | "count": 24540.08972197582, 318 | "downloads": 24540, 319 | "balance": 3.4991570569448345, 320 | "point": 0.08972197581909833, 321 | "package": "serverless-step-functions", 322 | "address": "0x9bEfA9767444D5552534faA8A24B18d3347AC3F4", 323 | "date": "2018-12-11" 324 | } 325 | ], 326 | "tokens": [ 327 | { 328 | "address": "0x623527a95416f2F451565976bB50e97050267e8D", 329 | "value": 0.2474351038443937, 330 | "uint256": "247435103844393700" 331 | }, 332 | { 333 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 334 | "value": 74.34168305177005, 335 | "uint256": "74341683051770050000" 336 | }, 337 | { 338 | "address": "0x4eff38306428991e24a21530491ac4096e790603", 339 | "value": 1.2699543467798808, 340 | "uint256": "1269954346779881000" 341 | }, 342 | { 343 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 344 | "value": 0.014797008990357144, 345 | "uint256": "14797008990357144" 346 | }, 347 | { 348 | "address": "0x012fCFF42a7002E47FaeFF5A384d08673C622872", 349 | "value": 0.3338798645468176, 350 | "uint256": "333879864546817600" 351 | }, 352 | { 353 | "address": "0xa05338dad0a93f659ef4d82cdfa312b992c8e6e0", 354 | "value": 0.07933715313848086, 355 | "uint256": "79337153138480860" 356 | }, 357 | { 358 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 359 | "value": 14.422027787260342, 360 | "uint256": "14422027787260342000" 361 | }, 362 | { 363 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 364 | "value": 83238.66608933809, 365 | "uint256": "83238666089338080000000" 366 | }, 367 | { 368 | "address": "0xff47a035a34dDD18200e3850640E58A7400D83Fc", 369 | "value": 0.06555747637170467, 370 | "uint256": "65557476371704670" 371 | }, 372 | { 373 | "address": "0x9bEfA9767444D5552534faA8A24B18d3347AC3F4", 374 | "value": 3.559238869206945, 375 | "uint256": "3559238869206945300" 376 | } 377 | ] 378 | } 379 | -------------------------------------------------------------------------------- /log/2019-01-20-to-2019-02-19.json: -------------------------------------------------------------------------------- 1 | { 2 | "distributions": 83333, 3 | "count": 781596207.0358943, 4 | "points": 23279.035894276552, 5 | "downloads": 781572928, 6 | "threshold": 1000000, 7 | "distributable": true, 8 | "term": { "from": "2019-01-20", "to": "2019-02-19" }, 9 | "timestamp": { 10 | "start": "2019-02-20T08:59:15.898Z", 11 | "apiCallEnd": "2019-02-20T08:59:19.700Z", 12 | "end": "2019-02-20T08:59:19.714Z" 13 | }, 14 | "details": [ 15 | { 16 | "value": 0.20577524925282734, 17 | "count": 1930.0055718367944, 18 | "downloads": 1930, 19 | "balance": 1.0475053173404631, 20 | "point": 0.005571836794364166, 21 | "package": "zengin-code", 22 | "address": "0x623527a95416f2F451565976bB50e97050267e8D", 23 | "user": "rosylilly", 24 | "date": "2018-08-15" 25 | }, 26 | { 27 | "value": 52.27100956256452, 28 | "count": 490259.83478378784, 29 | "downloads": 490258, 30 | "balance": 344.9393521132487, 31 | "point": 1.834783787836429, 32 | "package": "vue-i18n", 33 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 34 | "user": "kazupon", 35 | "date": "2018-08-15" 36 | }, 37 | { 38 | "value": 2.747980293024573, 39 | "count": 25773.834783787835, 40 | "downloads": 25772, 41 | "balance": 344.9393521132487, 42 | "point": 1.834783787836429, 43 | "package": "vue-i18n-extensions", 44 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 45 | "user": "kazupon", 46 | "date": "2018-08-15" 47 | }, 48 | { 49 | "value": 14.301640777440525, 50 | "count": 134137.83478378784, 51 | "downloads": 134136, 52 | "balance": 344.9393521132487, 53 | "point": 1.834783787836429, 54 | "package": "@kazupon/vue-i18n-loader", 55 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 56 | "user": "kazupon", 57 | "date": "2018-08-15" 58 | }, 59 | { 60 | "value": 2.7115165976490774, 61 | "count": 25431.834783787835, 62 | "downloads": 25430, 63 | "balance": 344.9393521132487, 64 | "point": 1.834783787836429, 65 | "package": "vue-cli-plugin-i18n", 66 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 67 | "user": "kazupon", 68 | "date": "2018-08-15" 69 | }, 70 | { 71 | "value": 1.3284758205641842, 72 | "count": 12460.029790021523, 73 | "downloads": 12460, 74 | "balance": 5.540944003195739, 75 | "point": 0.02979002152255774, 76 | "package": "nuxt-device-detect", 77 | "address": "0x4eff38306428991e24a21530491ac4096e790603", 78 | "user": "devneko", 79 | "date": "2018-08-17" 80 | }, 81 | { 82 | "value": 0.005544837468616567, 83 | "count": 52.00609523359556, 84 | "downloads": 52, 85 | "balance": 1.0971420472003324, 86 | "point": 0.006095233595557402, 87 | "package": "@lacolaco/ngx-grid-layout", 88 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 89 | "user": "lacolaco", 90 | "date": "2018-08-23" 91 | }, 92 | { 93 | "value": 0.005331599483964544, 94 | "count": 50.00609523359556, 95 | "downloads": 50, 96 | "balance": 1.0971420472003324, 97 | "point": 0.006095233595557402, 98 | "package": "@lacolaco/ngx-store", 99 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 100 | "user": "lacolaco", 101 | "date": "2018-08-23" 102 | }, 103 | { 104 | "value": 0.0021330297141841873, 105 | "count": 20.00609523359556, 106 | "downloads": 20, 107 | "balance": 1.0971420472003324, 108 | "point": 0.006095233595557402, 109 | "package": "@lacolaco/reactive-store", 110 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 111 | "user": "lacolaco", 112 | "date": "2018-08-23" 113 | }, 114 | { 115 | "value": 0.32039209829453774, 116 | "count": 3005.019005571408, 117 | "downloads": 3005, 118 | "balance": 3.325974996413193, 119 | "point": 0.01900557140807539, 120 | "package": "gulp-riot", 121 | "address": "0x012fCFF42a7002E47FaeFF5A384d08673C622872", 122 | "user": "jigsaw", 123 | "date": "2018-08-28" 124 | }, 125 | { 126 | "value": 0.07036949570931086, 127 | "count": 660.0090112851573, 128 | "downloads": 660, 129 | "balance": 1.5319184767398941, 130 | "point": 0.009011285157293495, 131 | "package": "@mediba/stylelint-config", 132 | "address": "0xa05338dad0a93f659ef4d82cdfa312b992c8e6e0", 133 | "user": "uknmr", 134 | "date": "2018-09-02" 135 | }, 136 | { 137 | "value": 1.5096601710337914, 138 | "count": 14159.392600688452, 139 | "downloads": 14159, 140 | "balance": 66.74211703688304, 141 | "point": 0.3926006884522532, 142 | "package": "vue-template-loader", 143 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 144 | "user": "ktsn", 145 | "date": "2018-09-02" 146 | }, 147 | { 148 | "value": 0.1882243801452002, 149 | "count": 1765.3926006884521, 150 | "downloads": 1765, 151 | "balance": 66.74211703688304, 152 | "point": 0.3926006884522532, 153 | "package": "vuex-connect", 154 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 155 | "user": "ktsn", 156 | "date": "2018-09-02" 157 | }, 158 | { 159 | "value": 0.9168585737011654, 160 | "count": 8599.392600688452, 161 | "downloads": 8599, 162 | "balance": 66.74211703688304, 163 | "point": 0.3926006884522532, 164 | "package": "vue-range-slider", 165 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 166 | "user": "ktsn", 167 | "date": "2018-09-02" 168 | }, 169 | { 170 | "value": 0.12435960374191911, 171 | "count": 1166.3926006884521, 172 | "downloads": 1166, 173 | "balance": 66.74211703688304, 174 | "point": 0.3926006884522532, 175 | "package": "vue-cli-plugin-auto-routing", 176 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 177 | "user": "ktsn", 178 | "date": "2018-09-02" 179 | }, 180 | { 181 | "value": 0.21743798404252748, 182 | "count": 2039.3926006884521, 183 | "downloads": 2039, 184 | "balance": 66.74211703688304, 185 | "point": 0.3926006884522532, 186 | "package": "vue-thin-modal", 187 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 188 | "user": "ktsn", 189 | "date": "2018-09-02" 190 | }, 191 | { 192 | "value": 8.297345079484685, 193 | "count": 77822.39260068846, 194 | "downloads": 77822, 195 | "balance": 66.74211703688304, 196 | "point": 0.3926006884522532, 197 | "package": "vuex-class", 198 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 199 | "user": "ktsn", 200 | "date": "2018-09-02" 201 | }, 202 | { 203 | "value": 0.016887659477299154, 204 | "count": 158.39260068845226, 205 | "downloads": 158, 206 | "balance": 66.74211703688304, 207 | "point": 0.3926006884522532, 208 | "package": "sinai", 209 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 210 | "user": "ktsn", 211 | "date": "2018-09-02" 212 | }, 213 | { 214 | "value": 0.004199999390503742, 215 | "count": 39.392600688452255, 216 | "downloads": 39, 217 | "balance": 66.74211703688304, 218 | "point": 0.3926006884522532, 219 | "package": "@birdseye/app", 220 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 221 | "user": "ktsn", 222 | "date": "2018-09-02" 223 | }, 224 | { 225 | "value": 3.4719827247940405, 226 | "count": 32564.392600688454, 227 | "downloads": 32564, 228 | "balance": 66.74211703688304, 229 | "point": 0.3926006884522532, 230 | "package": "svelte-jest", 231 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 232 | "user": "ktsn", 233 | "date": "2018-09-02" 234 | }, 235 | { 236 | "value": 10481.440226230008, 237 | "count": 98307440.33089916, 238 | "downloads": 98304855, 239 | "balance": 416238.2747660223, 240 | "point": 2585.3308991678405, 241 | "package": "chalk", 242 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 243 | "user": "sindresorhus", 244 | "date": "2018-09-11" 245 | }, 246 | { 247 | "value": 14783.857107646078, 248 | "count": 138660634.33089918, 249 | "downloads": 138658049, 250 | "balance": 416238.2747660223, 251 | "point": 2585.3308991678405, 252 | "package": "supports-color", 253 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 254 | "user": "sindresorhus", 255 | "date": "2018-09-11" 256 | }, 257 | { 258 | "value": 11058.94839530339, 259 | "count": 103724000.33089916, 260 | "downloads": 103721415, 261 | "balance": 416238.2747660223, 262 | "point": 2585.3308991678405, 263 | "package": "camelcase", 264 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 265 | "user": "sindresorhus", 266 | "date": "2018-09-11" 267 | }, 268 | { 269 | "value": 9539.874897481934, 270 | "count": 89476318.33089916, 271 | "downloads": 89473733, 272 | "balance": 416238.2747660223, 273 | "point": 2585.3308991678405, 274 | "package": "strip-ansi", 275 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 276 | "user": "sindresorhus", 277 | "date": "2018-09-11" 278 | }, 279 | { 280 | "value": 7988.1923007145415, 281 | "count": 74922789.33089916, 282 | "downloads": 74920204, 283 | "balance": 416238.2747660223, 284 | "point": 2585.3308991678405, 285 | "package": "ansi-styles", 286 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 287 | "user": "sindresorhus", 288 | "date": "2018-09-11" 289 | }, 290 | { 291 | "value": 9209.672573059512, 292 | "count": 86379287.33089916, 293 | "downloads": 86376702, 294 | "balance": 416238.2747660223, 295 | "point": 2585.3308991678405, 296 | "package": "ansi-regex", 297 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 298 | "user": "sindresorhus", 299 | "date": "2018-09-11" 300 | }, 301 | { 302 | "value": 7140.307109859766, 303 | "count": 66970311.33089917, 304 | "downloads": 66967726, 305 | "balance": 416238.2747660223, 306 | "point": 2585.3308991678405, 307 | "package": "pify", 308 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 309 | "user": "sindresorhus", 310 | "date": "2018-09-11" 311 | }, 312 | { 313 | "value": 7107.079087663378, 314 | "count": 66658659.33089917, 315 | "downloads": 66656074, 316 | "balance": 416238.2747660223, 317 | "point": 2585.3308991678405, 318 | "package": "find-up", 319 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 320 | "user": "sindresorhus", 321 | "date": "2018-09-11" 322 | }, 323 | { 324 | "value": 5929.417515260521, 325 | "count": 55613145.33089917, 326 | "downloads": 55610560, 327 | "balance": 416238.2747660223, 328 | "point": 2585.3308991678405, 329 | "package": "globby", 330 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 331 | "user": "sindresorhus", 332 | "date": "2018-09-11" 333 | }, 334 | { 335 | "value": 0.023136615792452474, 336 | "count": 217.0027617753786, 337 | "downloads": 217, 338 | "balance": 0.4418840605728181, 339 | "point": 0.002761775378580113, 340 | "package": "am-mocktimes", 341 | "address": "0xff47a035a34dDD18200e3850640E58A7400D83Fc", 342 | "user": "ampcpmgp", 343 | "date": "2018-09-12" 344 | }, 345 | { 346 | "value": 5.301746763246997, 347 | "count": 49726.100834227516, 348 | "downloads": 49726, 349 | "balance": 7.05839592615178, 350 | "point": 0.100834227516454, 351 | "package": "serverless-step-functions", 352 | "address": "0x9bEfA9767444D5552534faA8A24B18d3347AC3F4", 353 | "user": "horike37", 354 | "date": "2018-12-11" 355 | }, 356 | { 357 | "value": 0.0188715616417041, 358 | "count": 177, 359 | "downloads": 177, 360 | "balance": 0, 361 | "point": 0, 362 | "package": "@sq-ui/ng-sq-ui", 363 | "address": "0x7129FD777858CDC8A27cb7627F7Cd81C60d4C194", 364 | "user": "samuil4", 365 | "date": "2019-02-08" 366 | }, 367 | { 368 | "value": 0.022603226373114516, 369 | "count": 212, 370 | "downloads": 212, 371 | "balance": 0, 372 | "point": 0, 373 | "package": "@sq-ui/ng-datetime-picker", 374 | "address": "0x7129FD777858CDC8A27cb7627F7Cd81C60d4C194", 375 | "user": "samuil4", 376 | "date": "2019-02-08" 377 | }, 378 | { 379 | "value": 0.001812522869542202, 380 | "count": 17, 381 | "downloads": 17, 382 | "balance": 0, 383 | "point": 0, 384 | "package": "ts-data-layer-model", 385 | "address": "0x7129FD777858CDC8A27cb7627F7Cd81C60d4C194", 386 | "user": "samuil4", 387 | "date": "2019-02-08" 388 | }, 389 | { 390 | "value": 0.010981756209579223, 391 | "count": 103, 392 | "downloads": 103, 393 | "balance": 0, 394 | "point": 0, 395 | "package": "react-semi-modal", 396 | "address": "0x1B0e6a1Ef10819Fe652E12b0760971da458a51B1", 397 | "user": "moriyuu", 398 | "date": "2019-02-12" 399 | }, 400 | { 401 | "value": 0.0034118077544323796, 402 | "count": 32, 403 | "downloads": 32, 404 | "balance": 0, 405 | "point": 0, 406 | "package": "npm-hello-world-by-narita", 407 | "address": "0x27ef834D4A530C8ba24006c88e67524A5d30eD27", 408 | "user": "narita1980", 409 | "date": "2019-02-13" 410 | }, 411 | { 412 | "value": 0.002345617831172261, 413 | "count": 22, 414 | "downloads": 22, 415 | "balance": 0, 416 | "point": 0, 417 | "package": "hyperpower-plus", 418 | "address": "0x75D06aEf44C47eD72D26cb1038727299653a2307", 419 | "user": "dongri", 420 | "date": "2019-02-15" 421 | }, 422 | { 423 | "value": 0.000746332946282083, 424 | "count": 7, 425 | "downloads": 7, 426 | "balance": 0, 427 | "point": 0, 428 | "package": "hubot-osaka", 429 | "address": "0x75D06aEf44C47eD72D26cb1038727299653a2307", 430 | "user": "dongri", 431 | "date": "2019-02-15" 432 | }, 433 | { 434 | "value": 0.0019191418618682136, 435 | "count": 18, 436 | "downloads": 18, 437 | "balance": 0, 438 | "point": 0, 439 | "package": "hubot-instagram", 440 | "address": "0x75D06aEf44C47eD72D26cb1038727299653a2307", 441 | "user": "dongri", 442 | "date": "2019-02-15" 443 | }, 444 | { 445 | "value": 0.035930600413866004, 446 | "count": 337, 447 | "downloads": 337, 448 | "balance": 0, 449 | "point": 0, 450 | "package": "facebook-node", 451 | "address": "0x75D06aEf44C47eD72D26cb1038727299653a2307", 452 | "user": "dongri", 453 | "date": "2019-02-15" 454 | }, 455 | { 456 | "value": 0.0009595709309341068, 457 | "count": 9, 458 | "downloads": 9, 459 | "balance": 0, 460 | "point": 0, 461 | "package": "dongri", 462 | "address": "0x75D06aEf44C47eD72D26cb1038727299653a2307", 463 | "user": "dongri", 464 | "date": "2019-02-15" 465 | }, 466 | { 467 | "value": 0.02004437055729023, 468 | "count": 188, 469 | "downloads": 188, 470 | "balance": 0, 471 | "point": 0, 472 | "package": "@sq-ui/ng-sq-common", 473 | "address": "0x7129FD777858CDC8A27cb7627F7Cd81C60d4C194", 474 | "user": "samuil4", 475 | "date": "2019-02-16" 476 | }, 477 | { 478 | "value": 0.0314526027361735, 479 | "count": 295, 480 | "downloads": 295, 481 | "balance": 0, 482 | "point": 0, 483 | "package": "@sq-ui/ng-modal", 484 | "address": "0x7129FD777858CDC8A27cb7627F7Cd81C60d4C194", 485 | "user": "samuil4", 486 | "date": "2019-02-16" 487 | }, 488 | { 489 | "value": 0.017698752726117973, 490 | "count": 166, 491 | "downloads": 166, 492 | "balance": 0, 493 | "point": 0, 494 | "package": "@sq-ui/ng-datatable", 495 | "address": "0x7129FD777858CDC8A27cb7627F7Cd81C60d4C194", 496 | "user": "samuil4", 497 | "date": "2019-02-16" 498 | } 499 | ], 500 | "tokens": [ 501 | { 502 | "address": "0x623527a95416f2F451565976bB50e97050267e8D", 503 | "value": 0.20577524925282734, 504 | "uint256": "205775249252827330" 505 | }, 506 | { 507 | "address": "0x69cc2c86aeb26f52f6645a2dfdec1051dd5584c0", 508 | "value": 72.0321472306787, 509 | "uint256": "72032147230678704000" 510 | }, 511 | { 512 | "address": "0x4eff38306428991e24a21530491ac4096e790603", 513 | "value": 1.3284758205641842, 514 | "uint256": "1328475820564184300" 515 | }, 516 | { 517 | "address": "0xf6D5ba3FC89216A9c63a3a3B48b6CE9f0cfD56F8", 518 | "value": 0.013009466666765298, 519 | "uint256": "13009466666765298" 520 | }, 521 | { 522 | "address": "0x012fCFF42a7002E47FaeFF5A384d08673C622872", 523 | "value": 0.32039209829453774, 524 | "uint256": "320392098294537700" 525 | }, 526 | { 527 | "address": "0xa05338dad0a93f659ef4d82cdfa312b992c8e6e0", 528 | "value": 0.07036949570931086, 529 | "uint256": "70369495709310860" 530 | }, 531 | { 532 | "address": "0xb686ea4823ba3da96113c1ab727b46f408bb9b48", 533 | "value": 14.746956175811134, 534 | "uint256": "14746956175811133000" 535 | }, 536 | { 537 | "address": "0xfb5c0e6400a95e4191d46196073d30a289abd15c", 538 | "value": 83238.78921321913, 539 | "uint256": "83238789213219130000000" 540 | }, 541 | { 542 | "address": "0xff47a035a34dDD18200e3850640E58A7400D83Fc", 543 | "value": 0.023136615792452474, 544 | "uint256": "23136615792452476" 545 | }, 546 | { 547 | "address": "0x9bEfA9767444D5552534faA8A24B18d3347AC3F4", 548 | "value": 5.301746763246997, 549 | "uint256": "5301746763246996000" 550 | }, 551 | { 552 | "address": "0x7129FD777858CDC8A27cb7627F7Cd81C60d4C194", 553 | "value": 0.11248303690394253, 554 | "uint256": "112483036903942530" 555 | }, 556 | { 557 | "address": "0x1B0e6a1Ef10819Fe652E12b0760971da458a51B1", 558 | "value": 0.010981756209579223, 559 | "uint256": "10981756209579222" 560 | }, 561 | { 562 | "address": "0x27ef834D4A530C8ba24006c88e67524A5d30eD27", 563 | "value": 0.0034118077544323796, 564 | "uint256": "3411807754432379.5" 565 | }, 566 | { 567 | "address": "0x75D06aEf44C47eD72D26cb1038727299653a2307", 568 | "value": 0.04190126398412267, 569 | "uint256": "41901263984122670" 570 | } 571 | ] 572 | } 573 | -------------------------------------------------------------------------------- /log/empty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frame00/dev-distribution/2a3f7239c76a5c6794095baf0f5ab81dcc2a1b7a/log/empty -------------------------------------------------------------------------------- /now.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 2, 3 | "alias": "dev-distribution", 4 | "builds": [{ "src": "serve/index.js", "use": "@now/node" }], 5 | "routes": [{ "src": ".*", "dest": "/serve/index.js" }] 6 | } 7 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dev-distribution", 3 | "version": "0.2.0", 4 | "files": [ 5 | "**/*.js", 6 | "**/*.d.ts" 7 | ], 8 | "scripts": { 9 | "start": "node ./serve", 10 | "calc": "node index.js", 11 | "precalc": "npm run build", 12 | "postcalc": "npm run format", 13 | "test": "ava", 14 | "pretest": "npm run build", 15 | "build": "tsc -p ./", 16 | "prebuild": "npm run lint", 17 | "lint": "tslint --fix -p ./", 18 | "format": "prettier --write '**/*.{json,md}'" 19 | }, 20 | "author": "aggre", 21 | "contributors": [ 22 | "aggre (https://github.com/aggre)" 23 | ], 24 | "license": "MIT", 25 | "dependencies": { 26 | "bignumber.js": "^9.0.0", 27 | "micro": "^9.3.4", 28 | "promise-parallel-throttle": "^3.3.0", 29 | "request": "^2.88.0", 30 | "typescript": "^3.7.3" 31 | }, 32 | "devDependencies": { 33 | "@types/bignumber.js": "^5.0.0", 34 | "@types/micro": "^7.3.3", 35 | "@types/mocha": "^5.2.7", 36 | "@types/node": "^12.12.21", 37 | "@types/request": "^2.48.4", 38 | "@types/test-listen": "^1.1.0", 39 | "ava": "^2.4.0", 40 | "mocha": "^6.2.2", 41 | "prettier": "^1.19.1", 42 | "test-listen": "^1.1.0", 43 | "tslint": "^5.20.1", 44 | "tslint-config-prettier": "^1.18.0", 45 | "tslint-plugin-prettier": "^2.0.1", 46 | "tslint-xo": "^0.16.0" 47 | }, 48 | "main": "index.js", 49 | "repository": { 50 | "type": "git", 51 | "url": "git+https://github.com/frame00/dev-distribution.git" 52 | }, 53 | "bugs": { 54 | "url": "https://github.com/frame00/dev-distribution/issues" 55 | }, 56 | "homepage": "https://github.com/frame00/dev-distribution#readme", 57 | "description": "", 58 | "ava": { 59 | "files": [ 60 | "**/*.test.js" 61 | ] 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /serve/index.ts: -------------------------------------------------------------------------------- 1 | import { service } from './service' 2 | 3 | export = service 4 | -------------------------------------------------------------------------------- /serve/serve.test.ts: -------------------------------------------------------------------------------- 1 | import test from 'ava' 2 | import micro from 'micro' 3 | // tslint:disable-next-line:no-require-imports 4 | import listen = require('test-listen') 5 | import { service } from './service' 6 | import { get } from '../src/libs' 7 | import { packages } from '../config/packages' 8 | import { contract } from '../config/contract' 9 | import { distribution } from '../config/distribution' 10 | 11 | let url: string 12 | const server = micro(service) 13 | 14 | test.before(async () => { 15 | url = await listen(server) 16 | }) 17 | 18 | test('Get packages', async t => { 19 | const body = await get(`${url}/config/packages`) 20 | t.deepEqual(body, packages) 21 | }) 22 | 23 | test('Get contract', async t => { 24 | const body = await get(`${url}/config/contract`) 25 | t.deepEqual(body, contract) 26 | }) 27 | 28 | test('Get distribution', async t => { 29 | const body = await get(`${url}/config/distribution`) 30 | t.deepEqual(body, distribution) 31 | }) 32 | 33 | test.after(() => { 34 | server.close() 35 | }) 36 | -------------------------------------------------------------------------------- /serve/service.ts: -------------------------------------------------------------------------------- 1 | import { createError, send as _send } from 'micro' 2 | import { parse } from 'url' 3 | import { packages } from '../config/packages' 4 | import { contract } from '../config/contract' 5 | import { distribution } from '../config/distribution' 6 | import { IncomingMessage, ServerResponse } from 'http' 7 | 8 | const error = createError 9 | const sendCreator = (res: ServerResponse) => async (body: T) => 10 | _send(res, 200, body) 11 | 12 | export const service = async (req: IncomingMessage, res: ServerResponse) => { 13 | const send = sendCreator(res) 14 | const { url } = req 15 | if (!url) { 16 | throw error(404, 'not found') 17 | } 18 | const parsed = parse(url) 19 | const { pathname } = parsed 20 | if (!pathname) { 21 | throw error(404, 'not found') 22 | } 23 | switch (pathname) { 24 | case '/config/packages': 25 | return send(packages) 26 | case '/config/contract': 27 | return send(contract) 28 | case '/config/distribution': 29 | return send(distribution) 30 | default: 31 | throw error(404, 'not found') 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/index.test.ts: -------------------------------------------------------------------------------- 1 | import test from 'ava' 2 | import app from './index' 3 | import { Distributions, DistributionTarget } from './types' 4 | import { distribution } from '../config/distribution' 5 | import { getBalanceDev, getDownloadsCountNPM, toPositiveNumber } from './libs' 6 | import { contract } from '../config/contract' 7 | 8 | const MOCK_START = '2018-01-20' 9 | const MOCK_END = '2018-02-20' 10 | const MOCK_TOTAL_DISTRIBUTION = 10000 11 | const MOCK_PACKAGES = [ 12 | { 13 | package: 'npm', 14 | address: '0xE23fe51187A807d56189212591F5525127003bdf', 15 | user: 'user1', 16 | date: '2018-01-01' 17 | }, 18 | { 19 | package: 'n', 20 | address: '0xE23fe51187A807d56189212591F5525127003bdf', 21 | user: 'user1', 22 | date: '2018-02-01' 23 | }, 24 | { 25 | package: 'express', 26 | address: '0xddbd2b932c763ba5b1b7ae3b362eac3e8d40121a', 27 | user: 'user2', 28 | date: '2018-03-01' 29 | }, 30 | { 31 | package: 'react', 32 | address: '0x4e83362442b8d1bec281594cea3050c8eb01311c', 33 | user: 'user3', 34 | date: '2018-04-01' 35 | }, 36 | { 37 | package: 'not_exist_package', 38 | address: '0x4e83362442b8d1bec281594cea3050c8eb01311c', 39 | user: 'user4', 40 | date: '2018-04-01' 41 | } 42 | ] 43 | 44 | let results: Distributions 45 | test.before(async () => { 46 | results = await app( 47 | MOCK_START, 48 | MOCK_END, 49 | MOCK_TOTAL_DISTRIBUTION, 50 | MOCK_PACKAGES 51 | ) 52 | }) 53 | 54 | test('Value of "distributions" is 3rd arguments', t => { 55 | t.is(MOCK_TOTAL_DISTRIBUTION, results.distributions) 56 | }) 57 | 58 | test('Value of "distributions" and the sum of "value" value of each item in "details" almost match(99.9999999999999%)', t => { 59 | const sum = results.details 60 | .map(dist => dist.value) 61 | .reduce((prev, current) => { 62 | return prev + current 63 | }) 64 | const l = sum > MOCK_TOTAL_DISTRIBUTION ? sum : MOCK_TOTAL_DISTRIBUTION 65 | const s = sum < MOCK_TOTAL_DISTRIBUTION ? sum : MOCK_TOTAL_DISTRIBUTION 66 | t.true(s / l >= 0.999999999999999) 67 | }) 68 | 69 | test('Value of "count" is sum of points and downloads', t => { 70 | const sum = results.points + results.downloads 71 | t.is(sum, results.count) 72 | }) 73 | 74 | test('Value of "count" and the sum of "count" value of each item in "details" almost match(99.9999999999999%)', t => { 75 | const sum = results.details 76 | .map(detail => detail.count) 77 | .reduce((prev, current) => prev + current) 78 | const { count } = results 79 | const l = sum > count ? sum : count 80 | const s = sum < count ? sum : count 81 | t.true(s / l >= 0.999999999999999) 82 | }) 83 | 84 | test('Value of "points" and the sum of "point" value of each item in "details" match', t => { 85 | const sum = results.details 86 | .map(detail => detail.point) 87 | .reduce((prev, current) => prev + current) 88 | t.is(sum, results.points) 89 | }) 90 | 91 | test('Value of "downloads" and the sum of "downloads" value of each item in "details" match', t => { 92 | const sum = results.details 93 | .map(detail => detail.downloads) 94 | .reduce((prev, current) => prev + current) 95 | t.is(sum, results.downloads) 96 | }) 97 | 98 | test('Value of "threshold" defined by the config file', t => { 99 | const threshold = distribution.threshold.downloads 100 | t.is(threshold, results.threshold) 101 | }) 102 | 103 | test('When the "downloads" is greater than or equal to the "threshold", the value of "distributable" is true', t => { 104 | t.is(results.downloads >= results.threshold, results.distributable) 105 | }) 106 | 107 | test('Value of "term.from" is 1st arguments', t => { 108 | t.is(MOCK_START, results.term.from) 109 | }) 110 | 111 | test('Value of "term.to" is 2nd arguments', t => { 112 | t.is(MOCK_END, results.term.to) 113 | }) 114 | 115 | test('Values of "timestamp.start", "timestamp.apiCallEnd" and "timestamp.end" are Date objects', t => { 116 | const { start, apiCallEnd, end } = results.timestamp 117 | t.true(start instanceof Date) 118 | t.true(apiCallEnd instanceof Date) 119 | t.true(end instanceof Date) 120 | }) 121 | 122 | test('Value of "timestamp.apiCallEnd" is larger than the value of "timestamp.start", and the value of "timestamp.end" is larger than the value of "timestamp.apiCallEnd"', t => { 123 | const { start, apiCallEnd, end } = results.timestamp 124 | t.true(start < apiCallEnd) 125 | t.true(apiCallEnd <= end) 126 | }) 127 | 128 | test('"details[i].value" multiples "distributions" by the ratio of "count" for all items.', t => { 129 | const { distributions, count: allCount } = results 130 | for (const iterator of results.details) { 131 | const { value, count } = iterator 132 | t.is(value, distributions * (count / allCount)) 133 | } 134 | }) 135 | 136 | test('Value of "details[i].count" is sum of point and downloads', t => { 137 | for (const iterator of results.details) { 138 | const { point, downloads, count } = iterator 139 | t.is(count, point + downloads) 140 | } 141 | }) 142 | 143 | test('Value of "details[i].downloads" is the total number of package downloads for "term" period.', async t => { 144 | let c = 0 145 | await Promise.all( 146 | results.details.map(async detail => { 147 | const { downloads, package: pkg } = detail 148 | const res = await getDownloadsCountNPM(MOCK_START, MOCK_END, pkg) 149 | c += 1 150 | t.is(downloads, res.downloads) 151 | }) 152 | ) 153 | t.is(c, results.details.length) 154 | }) 155 | 156 | test('"details[i].balance" is the current holding tokens', async t => { 157 | let c = 0 158 | await Promise.all( 159 | results.details.map(async detail => { 160 | const { balance, address } = detail 161 | const tokens = await getBalanceDev(address) 162 | c += 1 163 | t.is(balance, tokens.balance) 164 | }) 165 | ) 166 | t.is(c, results.details.length) 167 | }) 168 | 169 | test('"details[i].point" divides the value of "balance" by the number of days elapsed since the date of "date"', t => { 170 | for (const iterator of results.details) { 171 | const { point, balance, date } = iterator 172 | const days = 173 | (new Date(MOCK_END).getTime() - new Date(date).getTime()) / 86400000 174 | t.is(point, toPositiveNumber(balance / days)) 175 | } 176 | }) 177 | 178 | test('"details[i].user" is the user name in specified on config json', t => { 179 | for (const iterator of results.details) { 180 | const { package: pkg, user } = iterator 181 | const specifiedPackage = MOCK_PACKAGES.find(i => i.package === pkg) 182 | const expected = (specifiedPackage as DistributionTarget).user 183 | t.is(user, expected) 184 | } 185 | }) 186 | 187 | test('Value of "tokens[i].value" is the sum of the "value" of the package of the same "address"', t => { 188 | for (const iterator of results.tokens) { 189 | let sum = 0 190 | const { address } = iterator 191 | for (const pkg of results.details) { 192 | if (pkg.address === address) { 193 | sum += pkg.value 194 | } 195 | } 196 | t.is(sum, iterator.value) 197 | } 198 | }) 199 | 200 | test('Value of "tokens[i].uint256" is "value" converted to uint256.', t => { 201 | for (const iterator of results.tokens) { 202 | const { uint256, value } = iterator 203 | t.is(Number(uint256), value * Number(`1e+${contract.decimals}`)) 204 | } 205 | }) 206 | 207 | test('When the download count of the npm package cannot be fetched, the point and the downloads is regarded as 0.', t => { 208 | const notExistPkg = results.details.find( 209 | d => d.package === 'not_exist_package' 210 | ) 211 | if (!notExistPkg) { 212 | t.fail() 213 | return 214 | } 215 | t.is(notExistPkg.point, 0) 216 | t.is(notExistPkg.downloads, 0) 217 | }) 218 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | getAllDownloadsCountNPM, 3 | calcAllDownloadsCount, 4 | createDistributions, 5 | mergePackageData, 6 | getAllBalancePointDev, 7 | calcAllPointCount, 8 | createTokens 9 | } from './libs' 10 | import { Distributions, DistributionTarget } from './types' 11 | import { distribution } from '../config/distribution' 12 | 13 | export default async ( 14 | from: string, 15 | to: string, 16 | distributions: number, 17 | packages: DistributionTarget[] 18 | ): Promise => { 19 | const start = new Date() 20 | const [downloadsRes, pointsRes] = await Promise.all([ 21 | getAllDownloadsCountNPM( 22 | from, 23 | to, 24 | packages.map(pkg => pkg.package) 25 | ), 26 | getAllBalancePointDev(to, packages) 27 | ]) 28 | const apiCallEnd = new Date() 29 | const marged = mergePackageData(downloadsRes, pointsRes, packages) 30 | const points = calcAllPointCount(marged) 31 | const downloads = calcAllDownloadsCount(downloadsRes) 32 | const count = downloads + points 33 | const threshold = distribution.threshold.downloads 34 | const distributable = threshold <= downloads 35 | const details = createDistributions(packages, marged, count, distributions) 36 | const tokens = createTokens(details) 37 | const end = new Date() 38 | 39 | return { 40 | distributions, 41 | count, 42 | points, 43 | downloads, 44 | threshold, 45 | distributable, 46 | term: { 47 | from, 48 | to 49 | }, 50 | timestamp: { 51 | start, 52 | apiCallEnd, 53 | end 54 | }, 55 | details, 56 | tokens 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/libs.ts: -------------------------------------------------------------------------------- 1 | import { get as _get } from 'request' 2 | import BigNumber from 'bignumber.js' 3 | import { 4 | NPMCountResponseBody, 5 | Packages, 6 | DistributionTarget, 7 | EtherscanResponseBody, 8 | PackagesAllData, 9 | AddressBalance, 10 | AddressBalanceExtended, 11 | DistributionRate, 12 | DistributionTokens 13 | } from './types' 14 | import { all as ThrottleAll } from 'promise-parallel-throttle' 15 | import { contract } from '../config/contract' 16 | 17 | export const get = async (url: string) => 18 | new Promise((resolve, reject) => { 19 | _get( 20 | { 21 | url, 22 | json: true 23 | }, 24 | (err, res) => { 25 | if (err) { 26 | reject(err) 27 | return 28 | } 29 | resolve(res.body as T) 30 | } 31 | ) 32 | }) 33 | 34 | export const integerToDecimals = (int: number) => 35 | int / Number(`1e+${contract.decimals}`) 36 | 37 | export const decimalsToInteger = (int: number) => 38 | int * Number(`1e+${contract.decimals}`) 39 | 40 | export const toPositiveNumber = (num: number) => (num > 0 ? num : 0) 41 | 42 | export const getDownloadsCountNPM = async ( 43 | start: string, 44 | end: string, 45 | packageName: string 46 | ) => 47 | get( 48 | `https://api.npmjs.org/downloads/point/${start}:${end}/${packageName}` 49 | ).then(res => 50 | res.package 51 | ? res 52 | : { 53 | ...res, 54 | downloads: 0, 55 | start, 56 | end, 57 | package: packageName 58 | } 59 | ) 60 | 61 | export const getAllDownloadsCountNPM = async ( 62 | start: string, 63 | end: string, 64 | packages: Packages 65 | ) => 66 | ThrottleAll( 67 | packages.map(pkg => async () => getDownloadsCountNPM(start, end, pkg)), 68 | { maxInProgress: 20 } 69 | ) 70 | 71 | export const getBalanceDev = async ( 72 | address: string 73 | ): Promise => { 74 | const res = await get( 75 | // Source Code of The API: https://gist.github.com/aggre/5b83279ff99b6cecac557810eab73b89 76 | `https://welg1mzug8.execute-api.us-east-1.amazonaws.com/prototype/?address=${address}` 77 | ) 78 | const balance = integerToDecimals(parseFloat(`${res.result}`)) || 0 79 | return { address, balance } 80 | } 81 | 82 | export const getAllBalanceDev = async (addresses: string[]) => 83 | ThrottleAll( 84 | addresses.map(address => async () => getBalanceDev(address)), 85 | { 86 | maxInProgress: 5 87 | } 88 | ) 89 | 90 | export const calcBalancePoint = ( 91 | balance: number, 92 | endDate: string, 93 | registerDate: string 94 | ) => 95 | toPositiveNumber( 96 | balance / 97 | ((new Date(endDate).getTime() - new Date(registerDate).getTime()) / 98 | 86400000) 99 | ) 100 | 101 | export const arrayWithoutDuplication = (arr: T[]) => Array.from(new Set(arr)) 102 | 103 | export const getAllBalancePointDev = async ( 104 | end: string, 105 | targets: DistributionTarget[] 106 | ) => { 107 | const results = await getAllBalanceDev( 108 | arrayWithoutDuplication(targets.map(tgt => tgt.address)) 109 | ) 110 | const find = (address: string) => 111 | results.find(res => res.address === address) || { balance: 0 } 112 | return targets.map(pkg => { 113 | const { balance } = find(pkg.address) 114 | return { 115 | ...pkg, 116 | ...{ 117 | balance, 118 | point: calcBalancePoint(balance, end, pkg.date) 119 | } 120 | } 121 | }) 122 | } 123 | 124 | export const mergePackageData = ( 125 | npms: NPMCountResponseBody[], 126 | points: AddressBalanceExtended[], 127 | packages: DistributionTarget[] 128 | ): PackagesAllData[] => 129 | npms.map(npm => { 130 | const pkg = packages.find(pk => pk.package === npm.package) 131 | if (!pkg) { 132 | console.log(npm) 133 | throw new Error(`Package not found: ${npm.package}`) 134 | } 135 | const data = points.find(p => p.package === pkg.package) 136 | if (!data) { 137 | throw new Error(`Point not found: ${npm.package}`) 138 | } 139 | if (npm.error) { 140 | // When the download count of the npm package cannot be fetched, the point is regarded as 0. 141 | return { 142 | ...npm, 143 | ...data, 144 | point: 0 145 | } 146 | } 147 | return { ...npm, ...data } 148 | }) 149 | 150 | export const calcAllDownloadsCount = (items: NPMCountResponseBody[]) => 151 | items.map(item => item.downloads).reduce((prev, current) => prev + current) 152 | 153 | export const calcAllPointCount = (items: PackagesAllData[]) => 154 | items.map(item => item.point).reduce((prev, current) => prev + current) 155 | 156 | export const calcDistributionRate = (itemCount: number, totalCount: number) => 157 | itemCount / totalCount 158 | 159 | export const calcDistributionValue = ( 160 | itemCount: number, 161 | totalCount: number, 162 | totalDistribution: number 163 | ) => totalDistribution * calcDistributionRate(itemCount, totalCount) 164 | 165 | export const calcDistributionCount = ( 166 | downloadsCount: number, 167 | pointCount: number 168 | ) => downloadsCount + pointCount 169 | 170 | export const findPackageDistoributionDetails = ( 171 | name: string, 172 | allData: PackagesAllData[] 173 | ) => allData.find(data => data.package === name) 174 | 175 | export const createDistributions = ( 176 | targets: DistributionTarget[], 177 | allData: PackagesAllData[], 178 | totalCount: number, 179 | totalDistribution: number 180 | ) => 181 | targets.map(item => { 182 | const { 183 | downloads, 184 | balance, 185 | point, 186 | error 187 | } = findPackageDistoributionDetails( 188 | item.package, 189 | allData 190 | ) as PackagesAllData 191 | const count = calcDistributionCount(downloads, point) 192 | const val = { 193 | value: calcDistributionValue(count, totalCount, totalDistribution), 194 | count, 195 | downloads, 196 | balance, 197 | point, 198 | error 199 | } 200 | return { ...val, ...item } 201 | }) 202 | 203 | export const createTokens = ( 204 | distributionRates: DistributionRate[] 205 | ): DistributionTokens[] => { 206 | const list = arrayWithoutDuplication( 207 | distributionRates.map(dist => dist.address) 208 | ) 209 | const sumValues = (address: string) => { 210 | let value = 0 211 | for (const dist of distributionRates) { 212 | if (dist.address === address) { 213 | value += dist.value 214 | } 215 | } 216 | return value 217 | } 218 | return list.map(address => { 219 | const value = sumValues(address) 220 | const uint256 = new BigNumber(decimalsToInteger(value)).toString(10) 221 | return { 222 | address, 223 | value, 224 | uint256 225 | } 226 | }) 227 | } 228 | -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- 1 | export interface NPMCountResponseBody { 2 | downloads: number 3 | start: string 4 | end: string 5 | package: string 6 | error?: string 7 | } 8 | 9 | export interface EtherscanResponseBody { 10 | status: number 11 | message: string 12 | result: number 13 | } 14 | 15 | export interface AddressBalance { 16 | address: string 17 | balance: number 18 | } 19 | 20 | export interface DistributionTarget { 21 | package: string 22 | address: string 23 | date: string 24 | user: string 25 | } 26 | 27 | export interface AddressBalanceExtended 28 | extends AddressBalance, 29 | DistributionTarget { 30 | point: number 31 | } 32 | 33 | export interface PackagesAllData 34 | extends NPMCountResponseBody, 35 | AddressBalanceExtended {} 36 | 37 | export interface DistributionRate extends DistributionTarget { 38 | value: number 39 | balance: number 40 | count: number 41 | point: number 42 | downloads: number 43 | error?: string 44 | } 45 | 46 | export interface DistributionTokens { 47 | value: number 48 | address: string 49 | uint256: string 50 | } 51 | 52 | export interface Distributions { 53 | distributions: number 54 | count: number 55 | points: number 56 | downloads: number 57 | threshold: number 58 | distributable: boolean 59 | term: { 60 | // tslint:disable-next-line:type-literal-delimiter 61 | from: string 62 | // tslint:disable-next-line:type-literal-delimiter 63 | to: string 64 | } 65 | timestamp: { 66 | // tslint:disable-next-line:type-literal-delimiter 67 | start: Date 68 | // tslint:disable-next-line:type-literal-delimiter 69 | apiCallEnd: Date 70 | // tslint:disable-next-line:type-literal-delimiter 71 | end: Date 72 | } 73 | details: DistributionRate[] 74 | tokens: DistributionTokens[] 75 | } 76 | 77 | export type Packages = string[] 78 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2015", 4 | "lib": ["es2015", "es2016", "es2017"], 5 | "moduleResolution": "node", 6 | "strictNullChecks": true, 7 | "module": "commonjs", 8 | "declaration": true 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultSeverity": "error", 3 | "extends": ["tslint-xo", "tslint-config-prettier"], 4 | "rulesDirectory": ["tslint-plugin-prettier"], 5 | "rules": { 6 | "prettier": true, 7 | "typedef": [true, "call-signature", "parameter", "property-declaration"] 8 | } 9 | } 10 | --------------------------------------------------------------------------------