├── .gitignore ├── .tool-versions ├── LICENSE ├── README.md ├── index.js ├── package.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | ### https://raw.github.com/github/gitignore/300be202df4d2bc4824249407fb617df64750627/Node.gitignore 2 | 3 | # Logs 4 | logs 5 | *.log 6 | npm-debug.log* 7 | yarn-debug.log* 8 | yarn-error.log* 9 | 10 | # Runtime data 11 | pids 12 | *.pid 13 | *.seed 14 | *.pid.lock 15 | 16 | # Directory for instrumented libs generated by jscoverage/JSCover 17 | lib-cov 18 | 19 | # Coverage directory used by tools like istanbul 20 | coverage 21 | 22 | # nyc test coverage 23 | .nyc_output 24 | 25 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 26 | .grunt 27 | 28 | # Bower dependency directory (https://bower.io/) 29 | bower_components 30 | 31 | # node-waf configuration 32 | .lock-wscript 33 | 34 | # Compiled binary addons (https://nodejs.org/api/addons.html) 35 | build/Release 36 | 37 | # Dependency directories 38 | node_modules/ 39 | jspm_packages/ 40 | 41 | # TypeScript v1 declaration files 42 | typings/ 43 | 44 | # Optional npm cache directory 45 | .npm 46 | 47 | # Optional eslint cache 48 | .eslintcache 49 | 50 | # Optional REPL history 51 | .node_repl_history 52 | 53 | # Output of 'npm pack' 54 | *.tgz 55 | 56 | # Yarn Integrity file 57 | .yarn-integrity 58 | 59 | # dotenv environment variables file 60 | .env 61 | 62 | # parcel-bundler cache (https://parceljs.org/) 63 | .cache 64 | 65 | # next.js build output 66 | .next 67 | 68 | # nuxt.js build output 69 | .nuxt 70 | 71 | # vuepress build output 72 | .vuepress/dist 73 | 74 | # Serverless directories 75 | .serverless 76 | 77 | 78 | data/ 79 | .idea/ 80 | -------------------------------------------------------------------------------- /.tool-versions: -------------------------------------------------------------------------------- 1 | nodejs 20.10.0 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 laiso 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 | > [!CAUTION] 2 | > 現在は自分の記事はエクスポート可能です 3 | > 4 | > [エクスポート機能の使い方 – noteヘルプセンター](https://www.help-note.com/hc/ja/articles/16143464838681-%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88%E6%A9%9F%E8%83%BD%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9) 5 | 6 | # unnote 7 | 8 | ![](https://i.imgur.com/hYgfrYH.png) 9 | 10 | note.comの記事データをダウンロードするツールです。 11 | 12 | ```bash 13 | npx unnote export $USERNAME 14 | ``` 15 | 16 | ブラウザ向けエンドポイントを利用し、`data/` ディレクトリ以下に独自形式のJSONデータを書き出します。 17 | 18 | ![](https://i.imgur.com/29jVcXu.png) 19 | 20 | 使用の前にnote.comの[利用規約](https://note.com/terms)を確認してください。 21 | 22 | ![](https://i.imgur.com/gkcaNhC.png) 23 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import yargs from "yargs/yargs"; 4 | import { hideBin } from "yargs/helpers"; 5 | import got from "got"; 6 | import fs from "fs"; 7 | import { fileURLToPath } from "url"; 8 | 9 | async function unnote(username, page = 1, counter = 0) { 10 | try { 11 | 12 | const response = await got( 13 | `https://note.com/api/v2/creators/${username}/contents?kind=note&page=${page}`, 14 | { responseType: "json" } 15 | ); 16 | fs.writeFile( 17 | `data/contents-${page}.json`, 18 | JSON.stringify(response.body.data), 19 | (err) => { 20 | if (err) console.error(err); 21 | } 22 | ); 23 | 24 | const keys = response.body.data.contents.map((c) => c.key); 25 | for (const key of keys) { 26 | const note = await getNote(key); 27 | fs.writeFile(`data/note/${key}.json`, JSON.stringify(note), (err) => { 28 | if (err) console.error(err); 29 | }); 30 | console.info(`${note.publish_at} / ${note.tweet_text}`); 31 | counter += 1; 32 | await sleep(1000); 33 | } 34 | 35 | if (response.body.data.isLastPage) { 36 | console.info(`written out about ${counter} notes`); 37 | } else { 38 | await sleep(1000); 39 | unnote(username, page + 1); 40 | } 41 | } catch (error) { 42 | console.error(error); 43 | console.error(error?.response); 44 | console.error(error?.response?.body); 45 | process.exit(-1); 46 | } 47 | } 48 | 49 | async function getNote(key) { 50 | const response = await got(`https://note.com/api/v3/notes/${key}`, { 51 | responseType: "json", 52 | }); 53 | return response.body.data; 54 | } 55 | 56 | // https://qiita.com/asa-taka/items/888bc5a1d7f30ee7eda2 57 | const sleep = (msec) => new Promise((resolve) => setTimeout(resolve, msec)); 58 | 59 | const __filename = fileURLToPath(import.meta.url); 60 | if (process.argv[1] === __filename) { 61 | fs.mkdirSync("data/note", { recursive: true }); 62 | 63 | yargs(hideBin(process.argv)) 64 | .command( 65 | "export [username] [page]", 66 | "start the program", 67 | (yargs) => { 68 | return yargs 69 | .positional("username", { 70 | describe: "user name", 71 | }) 72 | .positional("page", { 73 | describe: "page to start", 74 | default: 1, 75 | }); 76 | }, 77 | (argv) => { 78 | if (!argv.username) { 79 | console.error(`invalid opts: run it as 'export [username]'`); 80 | process.exit(-1); 81 | } 82 | unnote(argv.username, argv.page); 83 | } 84 | ) 85 | .parse(); 86 | } 87 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "unnote", 3 | "version": "2.0.0", 4 | "type": "module", 5 | "main": "index.js", 6 | "bin": { 7 | "unnote": "index.js" 8 | }, 9 | "author": "laiso", 10 | "license": "MIT", 11 | "dependencies": { 12 | "got": "14.0.0", 13 | "yargs": "^17.6.2" 14 | }, 15 | "scripts": { 16 | "e2e-test": "node index.js export laiso" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@sindresorhus/is@^6.1.0": 6 | version "6.1.0" 7 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-6.1.0.tgz#71a4ca5171888fb7fc36c6d1ff3604b0a5e43555" 8 | integrity sha512-BuvU07zq3tQ/2SIgBsEuxKYDyDjC0n7Zir52bpHy2xnBbW81+po43aLFPLbeV3HRAheFbGud1qgcqSYfhtHMAg== 9 | 10 | "@szmarczak/http-timer@^5.0.1": 11 | version "5.0.1" 12 | resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" 13 | integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== 14 | dependencies: 15 | defer-to-connect "^2.0.1" 16 | 17 | "@types/http-cache-semantics@^4.0.2": 18 | version "4.0.4" 19 | resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" 20 | integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== 21 | 22 | ansi-regex@^5.0.1: 23 | version "5.0.1" 24 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 25 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 26 | 27 | ansi-styles@^4.0.0: 28 | version "4.3.0" 29 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 30 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 31 | dependencies: 32 | color-convert "^2.0.1" 33 | 34 | argparse@^1.0.7: 35 | version "1.0.10" 36 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 37 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 38 | dependencies: 39 | sprintf-js "~1.0.2" 40 | 41 | cacheable-lookup@^7.0.0: 42 | version "7.0.0" 43 | resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz#3476a8215d046e5a3202a9209dd13fec1f933a27" 44 | integrity sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w== 45 | 46 | cacheable-request@^10.2.14: 47 | version "10.2.14" 48 | resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-10.2.14.tgz#eb915b665fda41b79652782df3f553449c406b9d" 49 | integrity sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ== 50 | dependencies: 51 | "@types/http-cache-semantics" "^4.0.2" 52 | get-stream "^6.0.1" 53 | http-cache-semantics "^4.1.1" 54 | keyv "^4.5.3" 55 | mimic-response "^4.0.0" 56 | normalize-url "^8.0.0" 57 | responselike "^3.0.0" 58 | 59 | cliui@^8.0.1: 60 | version "8.0.1" 61 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" 62 | integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== 63 | dependencies: 64 | string-width "^4.2.0" 65 | strip-ansi "^6.0.1" 66 | wrap-ansi "^7.0.0" 67 | 68 | color-convert@^2.0.1: 69 | version "2.0.1" 70 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 71 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 72 | dependencies: 73 | color-name "~1.1.4" 74 | 75 | color-name@~1.1.4: 76 | version "1.1.4" 77 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 78 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 79 | 80 | core-util-is@~1.0.0: 81 | version "1.0.3" 82 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" 83 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== 84 | 85 | csv-write-stream@^2.0.0: 86 | version "2.0.0" 87 | resolved "https://registry.yarnpkg.com/csv-write-stream/-/csv-write-stream-2.0.0.tgz#fc2da21a48d6ea5f8c17fde39cfb911e4f0292b0" 88 | integrity sha512-QTraH6FOYfM5f+YGwx71hW1nR9ZjlWri67/D4CWtiBkdce0UAa91Vc0yyHg0CjC0NeEGnvO/tBSJkA1XF9D9GQ== 89 | dependencies: 90 | argparse "^1.0.7" 91 | generate-object-property "^1.0.0" 92 | ndjson "^1.3.0" 93 | 94 | decompress-response@^6.0.0: 95 | version "6.0.0" 96 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" 97 | integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== 98 | dependencies: 99 | mimic-response "^3.1.0" 100 | 101 | defer-to-connect@^2.0.1: 102 | version "2.0.1" 103 | resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" 104 | integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== 105 | 106 | emoji-regex@^8.0.0: 107 | version "8.0.0" 108 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 109 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 110 | 111 | escalade@^3.1.1: 112 | version "3.1.1" 113 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 114 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 115 | 116 | form-data-encoder@^4.0.2: 117 | version "4.0.2" 118 | resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-4.0.2.tgz#dd286fd5f9049e8ded1d44ce427f5e29185c7c12" 119 | integrity sha512-KQVhvhK8ZkWzxKxOr56CPulAhH3dobtuQ4+hNQ+HekH/Wp5gSOafqRAeTphQUJAIk0GBvHZgJ2ZGRWd5kphMuw== 120 | 121 | generate-object-property@^1.0.0: 122 | version "1.2.0" 123 | resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" 124 | integrity sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ== 125 | dependencies: 126 | is-property "^1.0.0" 127 | 128 | get-caller-file@^2.0.5: 129 | version "2.0.5" 130 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 131 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 132 | 133 | get-stream@^6.0.1: 134 | version "6.0.1" 135 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" 136 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== 137 | 138 | get-stream@^8.0.1: 139 | version "8.0.1" 140 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" 141 | integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== 142 | 143 | got@14.0.0: 144 | version "14.0.0" 145 | resolved "https://registry.yarnpkg.com/got/-/got-14.0.0.tgz#c95023942e4149cea46701adc7ed591eb9104d37" 146 | integrity sha512-X01vTgaX9SwaMq5DfImvS+3GMQFFs5HtrrlS9CuzUSzkxAf/tWGEyynuI+Qy7BjciMczZGjyVSmawYbP4eYhYA== 147 | dependencies: 148 | "@sindresorhus/is" "^6.1.0" 149 | "@szmarczak/http-timer" "^5.0.1" 150 | cacheable-lookup "^7.0.0" 151 | cacheable-request "^10.2.14" 152 | decompress-response "^6.0.0" 153 | form-data-encoder "^4.0.2" 154 | get-stream "^8.0.1" 155 | http2-wrapper "^2.2.1" 156 | lowercase-keys "^3.0.0" 157 | p-cancelable "^4.0.1" 158 | responselike "^3.0.0" 159 | 160 | http-cache-semantics@^4.1.1: 161 | version "4.1.1" 162 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" 163 | integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== 164 | 165 | http2-wrapper@^2.2.1: 166 | version "2.2.1" 167 | resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.1.tgz#310968153dcdedb160d8b72114363ef5fce1f64a" 168 | integrity sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ== 169 | dependencies: 170 | quick-lru "^5.1.1" 171 | resolve-alpn "^1.2.0" 172 | 173 | inherits@~2.0.3: 174 | version "2.0.4" 175 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 176 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 177 | 178 | is-fullwidth-code-point@^3.0.0: 179 | version "3.0.0" 180 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 181 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 182 | 183 | is-property@^1.0.0: 184 | version "1.0.2" 185 | resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" 186 | integrity sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g== 187 | 188 | isarray@~1.0.0: 189 | version "1.0.0" 190 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 191 | integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== 192 | 193 | json-buffer@3.0.1: 194 | version "3.0.1" 195 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" 196 | integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== 197 | 198 | json-stringify-safe@^5.0.1: 199 | version "5.0.1" 200 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 201 | integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== 202 | 203 | keyv@^4.5.3: 204 | version "4.5.4" 205 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" 206 | integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== 207 | dependencies: 208 | json-buffer "3.0.1" 209 | 210 | lowercase-keys@^3.0.0: 211 | version "3.0.0" 212 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" 213 | integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== 214 | 215 | mimic-response@^3.1.0: 216 | version "3.1.0" 217 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" 218 | integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== 219 | 220 | mimic-response@^4.0.0: 221 | version "4.0.0" 222 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-4.0.0.tgz#35468b19e7c75d10f5165ea25e75a5ceea7cf70f" 223 | integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg== 224 | 225 | minimist@^1.2.0: 226 | version "1.2.8" 227 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" 228 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 229 | 230 | ndjson@^1.3.0: 231 | version "1.5.0" 232 | resolved "https://registry.yarnpkg.com/ndjson/-/ndjson-1.5.0.tgz#ae603b36b134bcec347b452422b0bf98d5832ec8" 233 | integrity sha512-hUPLuaziboGjNF7wHngkgVc0FOclR8dDk/HfEvTtDr/iUrqBWiRcRSTK3/nLOqKH33th714BrMmTPtObI9gZxQ== 234 | dependencies: 235 | json-stringify-safe "^5.0.1" 236 | minimist "^1.2.0" 237 | split2 "^2.1.0" 238 | through2 "^2.0.3" 239 | 240 | normalize-url@^8.0.0: 241 | version "8.0.0" 242 | resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.0.0.tgz#593dbd284f743e8dcf6a5ddf8fadff149c82701a" 243 | integrity sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw== 244 | 245 | p-cancelable@^4.0.1: 246 | version "4.0.1" 247 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-4.0.1.tgz#2d1edf1ab8616b72c73db41c4bc9ecdd10af640e" 248 | integrity sha512-wBowNApzd45EIKdO1LaU+LrMBwAcjfPaYtVzV3lmfM3gf8Z4CHZsiIqlM8TZZ8okYvh5A1cP6gTfCRQtwUpaUg== 249 | 250 | process-nextick-args@~2.0.0: 251 | version "2.0.1" 252 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 253 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 254 | 255 | quick-lru@^5.1.1: 256 | version "5.1.1" 257 | resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" 258 | integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== 259 | 260 | readable-stream@~2.3.6: 261 | version "2.3.8" 262 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" 263 | integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== 264 | dependencies: 265 | core-util-is "~1.0.0" 266 | inherits "~2.0.3" 267 | isarray "~1.0.0" 268 | process-nextick-args "~2.0.0" 269 | safe-buffer "~5.1.1" 270 | string_decoder "~1.1.1" 271 | util-deprecate "~1.0.1" 272 | 273 | require-directory@^2.1.1: 274 | version "2.1.1" 275 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 276 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 277 | 278 | resolve-alpn@^1.2.0: 279 | version "1.2.1" 280 | resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" 281 | integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== 282 | 283 | responselike@^3.0.0: 284 | version "3.0.0" 285 | resolved "https://registry.yarnpkg.com/responselike/-/responselike-3.0.0.tgz#20decb6c298aff0dbee1c355ca95461d42823626" 286 | integrity sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg== 287 | dependencies: 288 | lowercase-keys "^3.0.0" 289 | 290 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 291 | version "5.1.2" 292 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 293 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 294 | 295 | split2@^2.1.0: 296 | version "2.2.0" 297 | resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" 298 | integrity sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw== 299 | dependencies: 300 | through2 "^2.0.2" 301 | 302 | sprintf-js@~1.0.2: 303 | version "1.0.3" 304 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 305 | integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== 306 | 307 | string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: 308 | version "4.2.3" 309 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 310 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 311 | dependencies: 312 | emoji-regex "^8.0.0" 313 | is-fullwidth-code-point "^3.0.0" 314 | strip-ansi "^6.0.1" 315 | 316 | string_decoder@~1.1.1: 317 | version "1.1.1" 318 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 319 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 320 | dependencies: 321 | safe-buffer "~5.1.0" 322 | 323 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 324 | version "6.0.1" 325 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 326 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 327 | dependencies: 328 | ansi-regex "^5.0.1" 329 | 330 | through2@^2.0.2, through2@^2.0.3: 331 | version "2.0.5" 332 | resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" 333 | integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== 334 | dependencies: 335 | readable-stream "~2.3.6" 336 | xtend "~4.0.1" 337 | 338 | util-deprecate@~1.0.1: 339 | version "1.0.2" 340 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 341 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 342 | 343 | wrap-ansi@^7.0.0: 344 | version "7.0.0" 345 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 346 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 347 | dependencies: 348 | ansi-styles "^4.0.0" 349 | string-width "^4.1.0" 350 | strip-ansi "^6.0.0" 351 | 352 | xtend@~4.0.1: 353 | version "4.0.2" 354 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" 355 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 356 | 357 | y18n@^5.0.5: 358 | version "5.0.8" 359 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 360 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 361 | 362 | yargs-parser@^21.1.1: 363 | version "21.1.1" 364 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" 365 | integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== 366 | 367 | yargs@^17.6.2: 368 | version "17.7.2" 369 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" 370 | integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== 371 | dependencies: 372 | cliui "^8.0.1" 373 | escalade "^3.1.1" 374 | get-caller-file "^2.0.5" 375 | require-directory "^2.1.1" 376 | string-width "^4.2.3" 377 | y18n "^5.0.5" 378 | yargs-parser "^21.1.1" 379 | --------------------------------------------------------------------------------