├── .github └── workflows │ └── run.yml ├── .gitignore ├── .husky └── pre-commit ├── .nvmrc ├── LICENSE ├── README.md ├── fetch.js ├── index.js ├── package-lock.json ├── package.json └── sample.env /.github/workflows/run.yml: -------------------------------------------------------------------------------- 1 | name: Update GitHub Stats Gist 2 | on: 3 | workflow_dispatch: 4 | schedule: 5 | - cron: '0 */12 * * *' 6 | push: 7 | branches: master 8 | jobs: 9 | run: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/setup-node@master 13 | with: 14 | node-version: 16 15 | # If you edit the .js files and want to run them in your GitHub Action, you need to: 16 | # - uncomment the 2 following lines 17 | # - replace "npx github-stats-box@1" with "npm start" 18 | # N.B: Your action will not receive future updates if you do so 19 | 20 | # - uses: actions/checkout@master 21 | # - run: npm ci 22 | - run: npx github-stats-box@1 23 | env: 24 | GH_TOKEN: ${{ secrets.GH_TOKEN }} # Do not edit, defined in secrets 25 | 26 | # Edit the following environment variables 27 | GIST_ID: 1cc900d92b9acc15786d7553b46a2cdf # The ID portion from your gist url 28 | ALL_COMMITS: true # If `true` it will count all commits, if `false` it will count your last year commits 29 | K_FORMAT: false # If `true`, large numbers will be formatted with a "k", for example "1.5k" 30 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .idea 3 | .env -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | npx pretty-quick --staged 5 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | v16.19.0 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Boris K 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 |

2 | 3 | 4 | 5 |

github-stats-box

6 |

⚡️📌 Update a pinned gist to contain your GitHub stats

7 |

8 | 9 | --- 10 | 11 | ## Prep work 12 | 13 | 1. Create a new public GitHub Gist (https://gist.github.com/new) 14 | 2. Create a token with the `gist` and `repo` scopes and copy it (https://github.com/settings/tokens/new) 15 | 16 | ## Project setup 17 | 18 | 1. Fork this repository 19 | 2. From your new fork, go to **Settings > Secrets** 20 | 3. Add the following secret using the **New secret** button: 21 | 22 | - **GH_TOKEN:** The GitHub token generated above. 23 | 24 | 4. Go to the **Actions** tab of your fork and click the "enable" button 25 | 5. Edit the environment variables at the end of the file `.github/workflows/run.yml` 26 | 27 | - **GIST_ID:** The ID portion from your gist url: `https://gist.github.com/bokub/`**`1cc900d92b9acc15786d7553b46a2cdf`**. 28 | - **ALL_COMMITS:** Boolean value, If `true` it will count all commits instead of last year commits 29 | - **K_FORMAT:** Boolean value, If `true`, large numbers values will be formatted with a "k", for example `1.5k` 30 | 31 | That's it! You gist will be updated immediately, and every 12 hours after that 32 | -------------------------------------------------------------------------------- /fetch.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios'); 2 | 3 | const userInfoFetcher = (token) => { 4 | return axios({ 5 | url: 'https://api.github.com/graphql', 6 | method: 'post', 7 | headers: { 8 | Authorization: `bearer ${token}`, 9 | }, 10 | data: { 11 | query: ` 12 | query userInfo { 13 | viewer { 14 | name 15 | login 16 | contributionsCollection { 17 | totalCommitContributions 18 | } 19 | repositoriesContributedTo(first: 1, contributionTypes: [COMMIT, ISSUE, PULL_REQUEST, REPOSITORY]) { 20 | totalCount 21 | } 22 | pullRequests(first: 1) { 23 | totalCount 24 | } 25 | issues(first: 1) { 26 | totalCount 27 | } 28 | repositories(first: 100, ownerAffiliations: OWNER, isFork: false, orderBy: {direction: DESC, field: STARGAZERS}) { 29 | totalCount 30 | nodes { 31 | stargazers { 32 | totalCount 33 | } 34 | } 35 | } 36 | } 37 | }`, 38 | }, 39 | }); 40 | }; 41 | 42 | // Experimental API 43 | const totalCommitsFetcher = async (login, token) => { 44 | return axios({ 45 | method: 'get', 46 | url: `https://api.github.com/search/commits?q=author:${login}`, 47 | headers: { 48 | 'Content-Type': 'application/json', 49 | Accept: 'application/vnd.github.cloak-preview', 50 | Authorization: `bearer ${token}`, 51 | }, 52 | }).then((res) => res.data.total_count); 53 | }; 54 | 55 | module.exports = { 56 | userInfoFetcher, 57 | totalCommitsFetcher, 58 | }; 59 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 'use strict'; 3 | 4 | require('dotenv').config(); 5 | const { request } = require('@octokit/request'); 6 | const { userInfoFetcher, totalCommitsFetcher } = require('./fetch'); 7 | const numeral = require('numeral'); 8 | 9 | const gistId = process.env.GIST_ID; 10 | const githubToken = process.env.GH_TOKEN; 11 | const countAllCommits = process.env.ALL_COMMITS.toString() === 'true'; 12 | const kFormat = process.env.K_FORMAT.toString() === 'true'; 13 | 14 | async function main() { 15 | if (!githubToken) { 16 | throw new Error('GH_TOKEN is not defined'); 17 | } 18 | let stats; 19 | try { 20 | stats = await getStats(); 21 | console.info('Successfully fetched statistics from GitHub'); 22 | console.info(JSON.stringify(stats, null, 2)); 23 | } catch (e) { 24 | throw new Error(`cannot retrieve statistics: ${e.message}`); 25 | } 26 | try { 27 | await updateGist(stats); 28 | } catch (e) { 29 | throw new Error(`cannot update gist: ${e.message}`); 30 | } 31 | } 32 | 33 | async function getStats() { 34 | const stats = { 35 | name: '', 36 | totalPRs: 0, 37 | totalCommits: 0, 38 | totalIssues: 0, 39 | totalStars: 0, 40 | contributedTo: 0, 41 | }; 42 | 43 | const user = await userInfoFetcher(githubToken).then((res) => res.data.data.viewer); 44 | 45 | stats.name = user.name || user.login; 46 | stats.totalPRs = user.pullRequests.totalCount; 47 | stats.totalIssues = user.issues.totalCount; 48 | stats.contributedTo = user.repositoriesContributedTo.totalCount; 49 | stats.totalStars = user.repositories.nodes.reduce((prev, curr) => { 50 | return prev + curr.stargazers.totalCount; 51 | }, 0); 52 | 53 | stats.totalCommits = user.contributionsCollection.totalCommitContributions; 54 | if (countAllCommits) { 55 | stats.totalCommits = await totalCommitsFetcher(user.login, githubToken); 56 | } 57 | 58 | return stats; 59 | } 60 | 61 | async function updateGist(stats) { 62 | const humanize = (n) => (n >= 1000 ? numeral(n).format(kFormat ? '0.0a' : '0,0') : n); 63 | 64 | const gistContent = 65 | [ 66 | ['⭐', `Total Stars`, humanize(stats.totalStars)], 67 | ['➕', countAllCommits ? 'Total Commits' : 'Past Year Commits', humanize(stats.totalCommits)], 68 | ['🔀', `Total PRs`, humanize(stats.totalPRs)], 69 | ['🚩', `Total Issues`, humanize(stats.totalIssues)], 70 | ['📦', `Contributed to`, humanize(stats.contributedTo)], 71 | ] 72 | .map((content) => { 73 | let line = `${content[1]}:${content[2]}`; 74 | line = line.replace(':', ':' + ' '.repeat(45 - line.length)); 75 | line = `${content[0]} ${line}`; 76 | return line; 77 | }) 78 | .join('\n') + '\n'; 79 | 80 | const gist = await request('GET /gists/:gist_id', { 81 | gist_id: gistId, 82 | headers: { authorization: `token ${githubToken}` }, 83 | }); 84 | const filename = Object.keys(gist.data.files)[0]; 85 | 86 | if (gist.data.files[filename].content === gistContent) { 87 | console.info('Nothing to update'); 88 | return; 89 | } 90 | 91 | return request('PATCH /gists/:gist_id', { 92 | files: { 93 | [filename]: { 94 | filename: `${stats.name}'s GitHub Stats`, 95 | content: gistContent, 96 | }, 97 | }, 98 | gist_id: gistId, 99 | headers: { authorization: `token ${githubToken}` }, 100 | }).then(() => { 101 | console.info(`Updated Gist ${gistId} with the following content:\n${gistContent}`); 102 | }); 103 | } 104 | 105 | main().catch((err) => { 106 | console.error(err.message); 107 | process.exit(1); 108 | }); 109 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "github-stats-box", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "github-stats-box", 9 | "version": "1.0.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "@octokit/request": "^6.2.2", 13 | "axios": "^0.27.2", 14 | "dotenv": "^16.0.3", 15 | "numeral": "^2.0.6" 16 | }, 17 | "bin": { 18 | "github-stats-box": "index.js" 19 | }, 20 | "devDependencies": { 21 | "@bokub/prettier-config": "^1.1.0", 22 | "husky": "^8.0.0", 23 | "prettier": "^2.8.1", 24 | "pretty-quick": "^3.1.3" 25 | } 26 | }, 27 | "node_modules/@bokub/prettier-config": { 28 | "version": "1.1.0", 29 | "resolved": "https://registry.npmjs.org/@bokub/prettier-config/-/prettier-config-1.1.0.tgz", 30 | "integrity": "sha512-VhG1i64Xo3jKSg0xV69BnRsVZorjY2kBO4Gzviovlkx0iRmgyD+ZwS7v1WPn49ggGy3ocwQ2mvgQ7OMYIqUstg==", 31 | "dev": true 32 | }, 33 | "node_modules/@octokit/endpoint": { 34 | "version": "7.0.3", 35 | "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.3.tgz", 36 | "integrity": "sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw==", 37 | "dependencies": { 38 | "@octokit/types": "^8.0.0", 39 | "is-plain-object": "^5.0.0", 40 | "universal-user-agent": "^6.0.0" 41 | }, 42 | "engines": { 43 | "node": ">= 14" 44 | } 45 | }, 46 | "node_modules/@octokit/openapi-types": { 47 | "version": "14.0.0", 48 | "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", 49 | "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==" 50 | }, 51 | "node_modules/@octokit/request": { 52 | "version": "6.2.2", 53 | "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.2.tgz", 54 | "integrity": "sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw==", 55 | "dependencies": { 56 | "@octokit/endpoint": "^7.0.0", 57 | "@octokit/request-error": "^3.0.0", 58 | "@octokit/types": "^8.0.0", 59 | "is-plain-object": "^5.0.0", 60 | "node-fetch": "^2.6.7", 61 | "universal-user-agent": "^6.0.0" 62 | }, 63 | "engines": { 64 | "node": ">= 14" 65 | } 66 | }, 67 | "node_modules/@octokit/request-error": { 68 | "version": "3.0.2", 69 | "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.2.tgz", 70 | "integrity": "sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg==", 71 | "dependencies": { 72 | "@octokit/types": "^8.0.0", 73 | "deprecation": "^2.0.0", 74 | "once": "^1.4.0" 75 | }, 76 | "engines": { 77 | "node": ">= 14" 78 | } 79 | }, 80 | "node_modules/@octokit/types": { 81 | "version": "8.0.0", 82 | "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.0.0.tgz", 83 | "integrity": "sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg==", 84 | "dependencies": { 85 | "@octokit/openapi-types": "^14.0.0" 86 | } 87 | }, 88 | "node_modules/@types/minimatch": { 89 | "version": "3.0.5", 90 | "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", 91 | "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", 92 | "dev": true 93 | }, 94 | "node_modules/ansi-styles": { 95 | "version": "4.3.0", 96 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 97 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 98 | "dev": true, 99 | "dependencies": { 100 | "color-convert": "^2.0.1" 101 | }, 102 | "engines": { 103 | "node": ">=8" 104 | }, 105 | "funding": { 106 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 107 | } 108 | }, 109 | "node_modules/array-differ": { 110 | "version": "3.0.0", 111 | "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", 112 | "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", 113 | "dev": true, 114 | "engines": { 115 | "node": ">=8" 116 | } 117 | }, 118 | "node_modules/array-union": { 119 | "version": "2.1.0", 120 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 121 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 122 | "dev": true, 123 | "engines": { 124 | "node": ">=8" 125 | } 126 | }, 127 | "node_modules/arrify": { 128 | "version": "2.0.1", 129 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", 130 | "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", 131 | "dev": true, 132 | "engines": { 133 | "node": ">=8" 134 | } 135 | }, 136 | "node_modules/asynckit": { 137 | "version": "0.4.0", 138 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 139 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 140 | }, 141 | "node_modules/axios": { 142 | "version": "0.27.2", 143 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", 144 | "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", 145 | "dependencies": { 146 | "follow-redirects": "^1.14.9", 147 | "form-data": "^4.0.0" 148 | } 149 | }, 150 | "node_modules/balanced-match": { 151 | "version": "1.0.2", 152 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 153 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 154 | "dev": true 155 | }, 156 | "node_modules/brace-expansion": { 157 | "version": "1.1.11", 158 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 159 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 160 | "dev": true, 161 | "dependencies": { 162 | "balanced-match": "^1.0.0", 163 | "concat-map": "0.0.1" 164 | } 165 | }, 166 | "node_modules/chalk": { 167 | "version": "3.0.0", 168 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", 169 | "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", 170 | "dev": true, 171 | "dependencies": { 172 | "ansi-styles": "^4.1.0", 173 | "supports-color": "^7.1.0" 174 | }, 175 | "engines": { 176 | "node": ">=8" 177 | } 178 | }, 179 | "node_modules/color-convert": { 180 | "version": "2.0.1", 181 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 182 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 183 | "dev": true, 184 | "dependencies": { 185 | "color-name": "~1.1.4" 186 | }, 187 | "engines": { 188 | "node": ">=7.0.0" 189 | } 190 | }, 191 | "node_modules/color-name": { 192 | "version": "1.1.4", 193 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 194 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 195 | "dev": true 196 | }, 197 | "node_modules/combined-stream": { 198 | "version": "1.0.8", 199 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 200 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 201 | "dependencies": { 202 | "delayed-stream": "~1.0.0" 203 | }, 204 | "engines": { 205 | "node": ">= 0.8" 206 | } 207 | }, 208 | "node_modules/concat-map": { 209 | "version": "0.0.1", 210 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 211 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 212 | "dev": true 213 | }, 214 | "node_modules/cross-spawn": { 215 | "version": "7.0.3", 216 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 217 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 218 | "dev": true, 219 | "dependencies": { 220 | "path-key": "^3.1.0", 221 | "shebang-command": "^2.0.0", 222 | "which": "^2.0.1" 223 | }, 224 | "engines": { 225 | "node": ">= 8" 226 | } 227 | }, 228 | "node_modules/delayed-stream": { 229 | "version": "1.0.0", 230 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 231 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 232 | "engines": { 233 | "node": ">=0.4.0" 234 | } 235 | }, 236 | "node_modules/deprecation": { 237 | "version": "2.3.1", 238 | "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", 239 | "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" 240 | }, 241 | "node_modules/dotenv": { 242 | "version": "16.0.3", 243 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", 244 | "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", 245 | "engines": { 246 | "node": ">=12" 247 | } 248 | }, 249 | "node_modules/end-of-stream": { 250 | "version": "1.4.4", 251 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 252 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 253 | "dev": true, 254 | "dependencies": { 255 | "once": "^1.4.0" 256 | } 257 | }, 258 | "node_modules/execa": { 259 | "version": "4.1.0", 260 | "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", 261 | "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", 262 | "dev": true, 263 | "dependencies": { 264 | "cross-spawn": "^7.0.0", 265 | "get-stream": "^5.0.0", 266 | "human-signals": "^1.1.1", 267 | "is-stream": "^2.0.0", 268 | "merge-stream": "^2.0.0", 269 | "npm-run-path": "^4.0.0", 270 | "onetime": "^5.1.0", 271 | "signal-exit": "^3.0.2", 272 | "strip-final-newline": "^2.0.0" 273 | }, 274 | "engines": { 275 | "node": ">=10" 276 | }, 277 | "funding": { 278 | "url": "https://github.com/sindresorhus/execa?sponsor=1" 279 | } 280 | }, 281 | "node_modules/find-up": { 282 | "version": "4.1.0", 283 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 284 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 285 | "dev": true, 286 | "dependencies": { 287 | "locate-path": "^5.0.0", 288 | "path-exists": "^4.0.0" 289 | }, 290 | "engines": { 291 | "node": ">=8" 292 | } 293 | }, 294 | "node_modules/follow-redirects": { 295 | "version": "1.15.2", 296 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 297 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", 298 | "funding": [ 299 | { 300 | "type": "individual", 301 | "url": "https://github.com/sponsors/RubenVerborgh" 302 | } 303 | ], 304 | "engines": { 305 | "node": ">=4.0" 306 | }, 307 | "peerDependenciesMeta": { 308 | "debug": { 309 | "optional": true 310 | } 311 | } 312 | }, 313 | "node_modules/form-data": { 314 | "version": "4.0.0", 315 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 316 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 317 | "dependencies": { 318 | "asynckit": "^0.4.0", 319 | "combined-stream": "^1.0.8", 320 | "mime-types": "^2.1.12" 321 | }, 322 | "engines": { 323 | "node": ">= 6" 324 | } 325 | }, 326 | "node_modules/get-stream": { 327 | "version": "5.2.0", 328 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 329 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 330 | "dev": true, 331 | "dependencies": { 332 | "pump": "^3.0.0" 333 | }, 334 | "engines": { 335 | "node": ">=8" 336 | }, 337 | "funding": { 338 | "url": "https://github.com/sponsors/sindresorhus" 339 | } 340 | }, 341 | "node_modules/has-flag": { 342 | "version": "4.0.0", 343 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 344 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 345 | "dev": true, 346 | "engines": { 347 | "node": ">=8" 348 | } 349 | }, 350 | "node_modules/human-signals": { 351 | "version": "1.1.1", 352 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", 353 | "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", 354 | "dev": true, 355 | "engines": { 356 | "node": ">=8.12.0" 357 | } 358 | }, 359 | "node_modules/husky": { 360 | "version": "8.0.2", 361 | "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.2.tgz", 362 | "integrity": "sha512-Tkv80jtvbnkK3mYWxPZePGFpQ/tT3HNSs/sasF9P2YfkMezDl3ON37YN6jUUI4eTg5LcyVynlb6r4eyvOmspvg==", 363 | "dev": true, 364 | "bin": { 365 | "husky": "lib/bin.js" 366 | }, 367 | "engines": { 368 | "node": ">=14" 369 | }, 370 | "funding": { 371 | "url": "https://github.com/sponsors/typicode" 372 | } 373 | }, 374 | "node_modules/ignore": { 375 | "version": "5.2.1", 376 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", 377 | "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", 378 | "dev": true, 379 | "engines": { 380 | "node": ">= 4" 381 | } 382 | }, 383 | "node_modules/is-plain-object": { 384 | "version": "5.0.0", 385 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", 386 | "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", 387 | "engines": { 388 | "node": ">=0.10.0" 389 | } 390 | }, 391 | "node_modules/is-stream": { 392 | "version": "2.0.1", 393 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 394 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", 395 | "dev": true, 396 | "engines": { 397 | "node": ">=8" 398 | }, 399 | "funding": { 400 | "url": "https://github.com/sponsors/sindresorhus" 401 | } 402 | }, 403 | "node_modules/isexe": { 404 | "version": "2.0.0", 405 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 406 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 407 | "dev": true 408 | }, 409 | "node_modules/locate-path": { 410 | "version": "5.0.0", 411 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 412 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 413 | "dev": true, 414 | "dependencies": { 415 | "p-locate": "^4.1.0" 416 | }, 417 | "engines": { 418 | "node": ">=8" 419 | } 420 | }, 421 | "node_modules/merge-stream": { 422 | "version": "2.0.0", 423 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 424 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 425 | "dev": true 426 | }, 427 | "node_modules/mime-db": { 428 | "version": "1.52.0", 429 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 430 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 431 | "engines": { 432 | "node": ">= 0.6" 433 | } 434 | }, 435 | "node_modules/mime-types": { 436 | "version": "2.1.35", 437 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 438 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 439 | "dependencies": { 440 | "mime-db": "1.52.0" 441 | }, 442 | "engines": { 443 | "node": ">= 0.6" 444 | } 445 | }, 446 | "node_modules/mimic-fn": { 447 | "version": "2.1.0", 448 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 449 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 450 | "dev": true, 451 | "engines": { 452 | "node": ">=6" 453 | } 454 | }, 455 | "node_modules/minimatch": { 456 | "version": "3.1.2", 457 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 458 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 459 | "dev": true, 460 | "dependencies": { 461 | "brace-expansion": "^1.1.7" 462 | }, 463 | "engines": { 464 | "node": "*" 465 | } 466 | }, 467 | "node_modules/mri": { 468 | "version": "1.2.0", 469 | "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", 470 | "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", 471 | "dev": true, 472 | "engines": { 473 | "node": ">=4" 474 | } 475 | }, 476 | "node_modules/multimatch": { 477 | "version": "4.0.0", 478 | "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", 479 | "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", 480 | "dev": true, 481 | "dependencies": { 482 | "@types/minimatch": "^3.0.3", 483 | "array-differ": "^3.0.0", 484 | "array-union": "^2.1.0", 485 | "arrify": "^2.0.1", 486 | "minimatch": "^3.0.4" 487 | }, 488 | "engines": { 489 | "node": ">=8" 490 | } 491 | }, 492 | "node_modules/node-fetch": { 493 | "version": "2.6.7", 494 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 495 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 496 | "dependencies": { 497 | "whatwg-url": "^5.0.0" 498 | }, 499 | "engines": { 500 | "node": "4.x || >=6.0.0" 501 | }, 502 | "peerDependencies": { 503 | "encoding": "^0.1.0" 504 | }, 505 | "peerDependenciesMeta": { 506 | "encoding": { 507 | "optional": true 508 | } 509 | } 510 | }, 511 | "node_modules/npm-run-path": { 512 | "version": "4.0.1", 513 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", 514 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", 515 | "dev": true, 516 | "dependencies": { 517 | "path-key": "^3.0.0" 518 | }, 519 | "engines": { 520 | "node": ">=8" 521 | } 522 | }, 523 | "node_modules/numeral": { 524 | "version": "2.0.6", 525 | "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz", 526 | "integrity": "sha1-StCAk21EPCVhrtnyGX7//iX05QY=", 527 | "engines": { 528 | "node": "*" 529 | } 530 | }, 531 | "node_modules/once": { 532 | "version": "1.4.0", 533 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 534 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 535 | "dependencies": { 536 | "wrappy": "1" 537 | } 538 | }, 539 | "node_modules/onetime": { 540 | "version": "5.1.2", 541 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 542 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 543 | "dev": true, 544 | "dependencies": { 545 | "mimic-fn": "^2.1.0" 546 | }, 547 | "engines": { 548 | "node": ">=6" 549 | }, 550 | "funding": { 551 | "url": "https://github.com/sponsors/sindresorhus" 552 | } 553 | }, 554 | "node_modules/p-limit": { 555 | "version": "2.3.0", 556 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 557 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 558 | "dev": true, 559 | "dependencies": { 560 | "p-try": "^2.0.0" 561 | }, 562 | "engines": { 563 | "node": ">=6" 564 | }, 565 | "funding": { 566 | "url": "https://github.com/sponsors/sindresorhus" 567 | } 568 | }, 569 | "node_modules/p-locate": { 570 | "version": "4.1.0", 571 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 572 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 573 | "dev": true, 574 | "dependencies": { 575 | "p-limit": "^2.2.0" 576 | }, 577 | "engines": { 578 | "node": ">=8" 579 | } 580 | }, 581 | "node_modules/p-try": { 582 | "version": "2.2.0", 583 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 584 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 585 | "dev": true, 586 | "engines": { 587 | "node": ">=6" 588 | } 589 | }, 590 | "node_modules/path-exists": { 591 | "version": "4.0.0", 592 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 593 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 594 | "dev": true, 595 | "engines": { 596 | "node": ">=8" 597 | } 598 | }, 599 | "node_modules/path-key": { 600 | "version": "3.1.1", 601 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 602 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 603 | "dev": true, 604 | "engines": { 605 | "node": ">=8" 606 | } 607 | }, 608 | "node_modules/prettier": { 609 | "version": "2.8.1", 610 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz", 611 | "integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==", 612 | "dev": true, 613 | "bin": { 614 | "prettier": "bin-prettier.js" 615 | }, 616 | "engines": { 617 | "node": ">=10.13.0" 618 | }, 619 | "funding": { 620 | "url": "https://github.com/prettier/prettier?sponsor=1" 621 | } 622 | }, 623 | "node_modules/pretty-quick": { 624 | "version": "3.1.3", 625 | "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.1.3.tgz", 626 | "integrity": "sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==", 627 | "dev": true, 628 | "dependencies": { 629 | "chalk": "^3.0.0", 630 | "execa": "^4.0.0", 631 | "find-up": "^4.1.0", 632 | "ignore": "^5.1.4", 633 | "mri": "^1.1.5", 634 | "multimatch": "^4.0.0" 635 | }, 636 | "bin": { 637 | "pretty-quick": "bin/pretty-quick.js" 638 | }, 639 | "engines": { 640 | "node": ">=10.13" 641 | }, 642 | "peerDependencies": { 643 | "prettier": ">=2.0.0" 644 | } 645 | }, 646 | "node_modules/pump": { 647 | "version": "3.0.0", 648 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 649 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 650 | "dev": true, 651 | "dependencies": { 652 | "end-of-stream": "^1.1.0", 653 | "once": "^1.3.1" 654 | } 655 | }, 656 | "node_modules/shebang-command": { 657 | "version": "2.0.0", 658 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 659 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 660 | "dev": true, 661 | "dependencies": { 662 | "shebang-regex": "^3.0.0" 663 | }, 664 | "engines": { 665 | "node": ">=8" 666 | } 667 | }, 668 | "node_modules/shebang-regex": { 669 | "version": "3.0.0", 670 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 671 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 672 | "dev": true, 673 | "engines": { 674 | "node": ">=8" 675 | } 676 | }, 677 | "node_modules/signal-exit": { 678 | "version": "3.0.7", 679 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 680 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 681 | "dev": true 682 | }, 683 | "node_modules/strip-final-newline": { 684 | "version": "2.0.0", 685 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", 686 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", 687 | "dev": true, 688 | "engines": { 689 | "node": ">=6" 690 | } 691 | }, 692 | "node_modules/supports-color": { 693 | "version": "7.2.0", 694 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 695 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 696 | "dev": true, 697 | "dependencies": { 698 | "has-flag": "^4.0.0" 699 | }, 700 | "engines": { 701 | "node": ">=8" 702 | } 703 | }, 704 | "node_modules/tr46": { 705 | "version": "0.0.3", 706 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 707 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 708 | }, 709 | "node_modules/universal-user-agent": { 710 | "version": "6.0.0", 711 | "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", 712 | "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" 713 | }, 714 | "node_modules/webidl-conversions": { 715 | "version": "3.0.1", 716 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 717 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 718 | }, 719 | "node_modules/whatwg-url": { 720 | "version": "5.0.0", 721 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 722 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 723 | "dependencies": { 724 | "tr46": "~0.0.3", 725 | "webidl-conversions": "^3.0.0" 726 | } 727 | }, 728 | "node_modules/which": { 729 | "version": "2.0.2", 730 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 731 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 732 | "dev": true, 733 | "dependencies": { 734 | "isexe": "^2.0.0" 735 | }, 736 | "bin": { 737 | "node-which": "bin/node-which" 738 | }, 739 | "engines": { 740 | "node": ">= 8" 741 | } 742 | }, 743 | "node_modules/wrappy": { 744 | "version": "1.0.2", 745 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 746 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 747 | } 748 | }, 749 | "dependencies": { 750 | "@bokub/prettier-config": { 751 | "version": "1.1.0", 752 | "resolved": "https://registry.npmjs.org/@bokub/prettier-config/-/prettier-config-1.1.0.tgz", 753 | "integrity": "sha512-VhG1i64Xo3jKSg0xV69BnRsVZorjY2kBO4Gzviovlkx0iRmgyD+ZwS7v1WPn49ggGy3ocwQ2mvgQ7OMYIqUstg==", 754 | "dev": true 755 | }, 756 | "@octokit/endpoint": { 757 | "version": "7.0.3", 758 | "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.3.tgz", 759 | "integrity": "sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw==", 760 | "requires": { 761 | "@octokit/types": "^8.0.0", 762 | "is-plain-object": "^5.0.0", 763 | "universal-user-agent": "^6.0.0" 764 | } 765 | }, 766 | "@octokit/openapi-types": { 767 | "version": "14.0.0", 768 | "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", 769 | "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==" 770 | }, 771 | "@octokit/request": { 772 | "version": "6.2.2", 773 | "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.2.tgz", 774 | "integrity": "sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw==", 775 | "requires": { 776 | "@octokit/endpoint": "^7.0.0", 777 | "@octokit/request-error": "^3.0.0", 778 | "@octokit/types": "^8.0.0", 779 | "is-plain-object": "^5.0.0", 780 | "node-fetch": "^2.6.7", 781 | "universal-user-agent": "^6.0.0" 782 | } 783 | }, 784 | "@octokit/request-error": { 785 | "version": "3.0.2", 786 | "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.2.tgz", 787 | "integrity": "sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg==", 788 | "requires": { 789 | "@octokit/types": "^8.0.0", 790 | "deprecation": "^2.0.0", 791 | "once": "^1.4.0" 792 | } 793 | }, 794 | "@octokit/types": { 795 | "version": "8.0.0", 796 | "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.0.0.tgz", 797 | "integrity": "sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg==", 798 | "requires": { 799 | "@octokit/openapi-types": "^14.0.0" 800 | } 801 | }, 802 | "@types/minimatch": { 803 | "version": "3.0.5", 804 | "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", 805 | "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", 806 | "dev": true 807 | }, 808 | "ansi-styles": { 809 | "version": "4.3.0", 810 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 811 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 812 | "dev": true, 813 | "requires": { 814 | "color-convert": "^2.0.1" 815 | } 816 | }, 817 | "array-differ": { 818 | "version": "3.0.0", 819 | "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", 820 | "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", 821 | "dev": true 822 | }, 823 | "array-union": { 824 | "version": "2.1.0", 825 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 826 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 827 | "dev": true 828 | }, 829 | "arrify": { 830 | "version": "2.0.1", 831 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", 832 | "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", 833 | "dev": true 834 | }, 835 | "asynckit": { 836 | "version": "0.4.0", 837 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 838 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 839 | }, 840 | "axios": { 841 | "version": "0.27.2", 842 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", 843 | "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", 844 | "requires": { 845 | "follow-redirects": "^1.14.9", 846 | "form-data": "^4.0.0" 847 | } 848 | }, 849 | "balanced-match": { 850 | "version": "1.0.2", 851 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 852 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 853 | "dev": true 854 | }, 855 | "brace-expansion": { 856 | "version": "1.1.11", 857 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 858 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 859 | "dev": true, 860 | "requires": { 861 | "balanced-match": "^1.0.0", 862 | "concat-map": "0.0.1" 863 | } 864 | }, 865 | "chalk": { 866 | "version": "3.0.0", 867 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", 868 | "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", 869 | "dev": true, 870 | "requires": { 871 | "ansi-styles": "^4.1.0", 872 | "supports-color": "^7.1.0" 873 | } 874 | }, 875 | "color-convert": { 876 | "version": "2.0.1", 877 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 878 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 879 | "dev": true, 880 | "requires": { 881 | "color-name": "~1.1.4" 882 | } 883 | }, 884 | "color-name": { 885 | "version": "1.1.4", 886 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 887 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 888 | "dev": true 889 | }, 890 | "combined-stream": { 891 | "version": "1.0.8", 892 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 893 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 894 | "requires": { 895 | "delayed-stream": "~1.0.0" 896 | } 897 | }, 898 | "concat-map": { 899 | "version": "0.0.1", 900 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 901 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 902 | "dev": true 903 | }, 904 | "cross-spawn": { 905 | "version": "7.0.3", 906 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 907 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 908 | "dev": true, 909 | "requires": { 910 | "path-key": "^3.1.0", 911 | "shebang-command": "^2.0.0", 912 | "which": "^2.0.1" 913 | } 914 | }, 915 | "delayed-stream": { 916 | "version": "1.0.0", 917 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 918 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" 919 | }, 920 | "deprecation": { 921 | "version": "2.3.1", 922 | "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", 923 | "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" 924 | }, 925 | "dotenv": { 926 | "version": "16.0.3", 927 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", 928 | "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" 929 | }, 930 | "end-of-stream": { 931 | "version": "1.4.4", 932 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 933 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 934 | "dev": true, 935 | "requires": { 936 | "once": "^1.4.0" 937 | } 938 | }, 939 | "execa": { 940 | "version": "4.1.0", 941 | "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", 942 | "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", 943 | "dev": true, 944 | "requires": { 945 | "cross-spawn": "^7.0.0", 946 | "get-stream": "^5.0.0", 947 | "human-signals": "^1.1.1", 948 | "is-stream": "^2.0.0", 949 | "merge-stream": "^2.0.0", 950 | "npm-run-path": "^4.0.0", 951 | "onetime": "^5.1.0", 952 | "signal-exit": "^3.0.2", 953 | "strip-final-newline": "^2.0.0" 954 | } 955 | }, 956 | "find-up": { 957 | "version": "4.1.0", 958 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 959 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 960 | "dev": true, 961 | "requires": { 962 | "locate-path": "^5.0.0", 963 | "path-exists": "^4.0.0" 964 | } 965 | }, 966 | "follow-redirects": { 967 | "version": "1.15.2", 968 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 969 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" 970 | }, 971 | "form-data": { 972 | "version": "4.0.0", 973 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 974 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 975 | "requires": { 976 | "asynckit": "^0.4.0", 977 | "combined-stream": "^1.0.8", 978 | "mime-types": "^2.1.12" 979 | } 980 | }, 981 | "get-stream": { 982 | "version": "5.2.0", 983 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 984 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 985 | "dev": true, 986 | "requires": { 987 | "pump": "^3.0.0" 988 | } 989 | }, 990 | "has-flag": { 991 | "version": "4.0.0", 992 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 993 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 994 | "dev": true 995 | }, 996 | "human-signals": { 997 | "version": "1.1.1", 998 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", 999 | "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", 1000 | "dev": true 1001 | }, 1002 | "husky": { 1003 | "version": "8.0.2", 1004 | "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.2.tgz", 1005 | "integrity": "sha512-Tkv80jtvbnkK3mYWxPZePGFpQ/tT3HNSs/sasF9P2YfkMezDl3ON37YN6jUUI4eTg5LcyVynlb6r4eyvOmspvg==", 1006 | "dev": true 1007 | }, 1008 | "ignore": { 1009 | "version": "5.2.1", 1010 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", 1011 | "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", 1012 | "dev": true 1013 | }, 1014 | "is-plain-object": { 1015 | "version": "5.0.0", 1016 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", 1017 | "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" 1018 | }, 1019 | "is-stream": { 1020 | "version": "2.0.1", 1021 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 1022 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", 1023 | "dev": true 1024 | }, 1025 | "isexe": { 1026 | "version": "2.0.0", 1027 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1028 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1029 | "dev": true 1030 | }, 1031 | "locate-path": { 1032 | "version": "5.0.0", 1033 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 1034 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 1035 | "dev": true, 1036 | "requires": { 1037 | "p-locate": "^4.1.0" 1038 | } 1039 | }, 1040 | "merge-stream": { 1041 | "version": "2.0.0", 1042 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 1043 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 1044 | "dev": true 1045 | }, 1046 | "mime-db": { 1047 | "version": "1.52.0", 1048 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1049 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 1050 | }, 1051 | "mime-types": { 1052 | "version": "2.1.35", 1053 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1054 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1055 | "requires": { 1056 | "mime-db": "1.52.0" 1057 | } 1058 | }, 1059 | "mimic-fn": { 1060 | "version": "2.1.0", 1061 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 1062 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 1063 | "dev": true 1064 | }, 1065 | "minimatch": { 1066 | "version": "3.1.2", 1067 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1068 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1069 | "dev": true, 1070 | "requires": { 1071 | "brace-expansion": "^1.1.7" 1072 | } 1073 | }, 1074 | "mri": { 1075 | "version": "1.2.0", 1076 | "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", 1077 | "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", 1078 | "dev": true 1079 | }, 1080 | "multimatch": { 1081 | "version": "4.0.0", 1082 | "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", 1083 | "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", 1084 | "dev": true, 1085 | "requires": { 1086 | "@types/minimatch": "^3.0.3", 1087 | "array-differ": "^3.0.0", 1088 | "array-union": "^2.1.0", 1089 | "arrify": "^2.0.1", 1090 | "minimatch": "^3.0.4" 1091 | } 1092 | }, 1093 | "node-fetch": { 1094 | "version": "2.6.7", 1095 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 1096 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 1097 | "requires": { 1098 | "whatwg-url": "^5.0.0" 1099 | } 1100 | }, 1101 | "npm-run-path": { 1102 | "version": "4.0.1", 1103 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", 1104 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", 1105 | "dev": true, 1106 | "requires": { 1107 | "path-key": "^3.0.0" 1108 | } 1109 | }, 1110 | "numeral": { 1111 | "version": "2.0.6", 1112 | "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz", 1113 | "integrity": "sha1-StCAk21EPCVhrtnyGX7//iX05QY=" 1114 | }, 1115 | "once": { 1116 | "version": "1.4.0", 1117 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1118 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1119 | "requires": { 1120 | "wrappy": "1" 1121 | } 1122 | }, 1123 | "onetime": { 1124 | "version": "5.1.2", 1125 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 1126 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 1127 | "dev": true, 1128 | "requires": { 1129 | "mimic-fn": "^2.1.0" 1130 | } 1131 | }, 1132 | "p-limit": { 1133 | "version": "2.3.0", 1134 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 1135 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 1136 | "dev": true, 1137 | "requires": { 1138 | "p-try": "^2.0.0" 1139 | } 1140 | }, 1141 | "p-locate": { 1142 | "version": "4.1.0", 1143 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 1144 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 1145 | "dev": true, 1146 | "requires": { 1147 | "p-limit": "^2.2.0" 1148 | } 1149 | }, 1150 | "p-try": { 1151 | "version": "2.2.0", 1152 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 1153 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 1154 | "dev": true 1155 | }, 1156 | "path-exists": { 1157 | "version": "4.0.0", 1158 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1159 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1160 | "dev": true 1161 | }, 1162 | "path-key": { 1163 | "version": "3.1.1", 1164 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1165 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1166 | "dev": true 1167 | }, 1168 | "prettier": { 1169 | "version": "2.8.1", 1170 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz", 1171 | "integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==", 1172 | "dev": true 1173 | }, 1174 | "pretty-quick": { 1175 | "version": "3.1.3", 1176 | "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.1.3.tgz", 1177 | "integrity": "sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==", 1178 | "dev": true, 1179 | "requires": { 1180 | "chalk": "^3.0.0", 1181 | "execa": "^4.0.0", 1182 | "find-up": "^4.1.0", 1183 | "ignore": "^5.1.4", 1184 | "mri": "^1.1.5", 1185 | "multimatch": "^4.0.0" 1186 | } 1187 | }, 1188 | "pump": { 1189 | "version": "3.0.0", 1190 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 1191 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 1192 | "dev": true, 1193 | "requires": { 1194 | "end-of-stream": "^1.1.0", 1195 | "once": "^1.3.1" 1196 | } 1197 | }, 1198 | "shebang-command": { 1199 | "version": "2.0.0", 1200 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1201 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1202 | "dev": true, 1203 | "requires": { 1204 | "shebang-regex": "^3.0.0" 1205 | } 1206 | }, 1207 | "shebang-regex": { 1208 | "version": "3.0.0", 1209 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1210 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1211 | "dev": true 1212 | }, 1213 | "signal-exit": { 1214 | "version": "3.0.7", 1215 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 1216 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 1217 | "dev": true 1218 | }, 1219 | "strip-final-newline": { 1220 | "version": "2.0.0", 1221 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", 1222 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", 1223 | "dev": true 1224 | }, 1225 | "supports-color": { 1226 | "version": "7.2.0", 1227 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1228 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1229 | "dev": true, 1230 | "requires": { 1231 | "has-flag": "^4.0.0" 1232 | } 1233 | }, 1234 | "tr46": { 1235 | "version": "0.0.3", 1236 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 1237 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 1238 | }, 1239 | "universal-user-agent": { 1240 | "version": "6.0.0", 1241 | "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", 1242 | "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" 1243 | }, 1244 | "webidl-conversions": { 1245 | "version": "3.0.1", 1246 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1247 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 1248 | }, 1249 | "whatwg-url": { 1250 | "version": "5.0.0", 1251 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 1252 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 1253 | "requires": { 1254 | "tr46": "~0.0.3", 1255 | "webidl-conversions": "^3.0.0" 1256 | } 1257 | }, 1258 | "which": { 1259 | "version": "2.0.2", 1260 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1261 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1262 | "dev": true, 1263 | "requires": { 1264 | "isexe": "^2.0.0" 1265 | } 1266 | }, 1267 | "wrappy": { 1268 | "version": "1.0.2", 1269 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1270 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 1271 | } 1272 | } 1273 | } 1274 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "github-stats-box", 3 | "version": "1.0.0", 4 | "description": "Update a gist to contain your GitHub stats", 5 | "author": "bokub", 6 | "license": "MIT", 7 | "repository": "bokub/github-stats-box", 8 | "main": "index.js", 9 | "scripts": { 10 | "start": "node index.js", 11 | "prettier": "prettier --write **/*.{js,md,json,yml}", 12 | "prepare": "husky install" 13 | }, 14 | "bin": { 15 | "github-stats-box": "index.js" 16 | }, 17 | "keywords": [ 18 | "gist", 19 | "pinned", 20 | "action", 21 | "github", 22 | "stats", 23 | "box" 24 | ], 25 | "dependencies": { 26 | "@octokit/request": "^6.2.2", 27 | "axios": "^0.27.2", 28 | "dotenv": "^16.0.3", 29 | "numeral": "^2.0.6" 30 | }, 31 | "devDependencies": { 32 | "@bokub/prettier-config": "^1.1.0", 33 | "husky": "^8.0.0", 34 | "prettier": "^2.8.1", 35 | "pretty-quick": "^3.1.3" 36 | }, 37 | "prettier": "@bokub/prettier-config" 38 | } 39 | -------------------------------------------------------------------------------- /sample.env: -------------------------------------------------------------------------------- 1 | GIST_ID= 2 | GH_TOKEN= 3 | ALL_COMMITS= 4 | --------------------------------------------------------------------------------