├── .editorconfig
├── .github
└── workflows
│ └── main.yml
├── .gitignore
├── .idea
├── .gitignore
├── misc.xml
├── modules.xml
├── netease-sync.iml
└── vcs.xml
├── .pnp.cjs
├── .pnp.loader.mjs
├── .vscode
├── extensions.json
└── settings.json
├── .yarn
├── cache
│ ├── @cspotcode-source-map-consumer-npm-0.8.0-1f37e9e72b-c0c16ca3d2.zip
│ ├── @cspotcode-source-map-support-npm-0.7.0-456c3ea2ce-9faddda775.zip
│ ├── @gar-promisify-npm-1.1.3-ac1a325862-4059f790e2.zip
│ ├── @npmcli-fs-npm-2.1.2-08d434e77b-405074965e.zip
│ ├── @npmcli-move-file-npm-2.0.1-b593d8f741-52dc02259d.zip
│ ├── @tokenizer-token-npm-0.3.0-4441352cc5-1d575d02d2.zip
│ ├── @tootallnate-once-npm-2.0.0-e36cf4f140-ad87447820.zip
│ ├── @tootallnate-quickjs-emscripten-npm-0.23.0-a889ea7aeb-c350a2947f.zip
│ ├── @tsconfig-node10-npm-1.0.8-90a8cce25d-b8d5fffbc6.zip
│ ├── @tsconfig-node12-npm-1.0.9-780563856d-a01b2400ab.zip
│ ├── @tsconfig-node14-npm-1.0.1-3ecac58e68-976345e896.zip
│ ├── @tsconfig-node16-npm-1.0.2-1f43ab567a-ca94d36397.zip
│ ├── @types-caseless-npm-0.12.2-fc711e5d73-430d159111.zip
│ ├── @types-node-npm-17.0.31-d8d26aa013-704618350f.zip
│ ├── @types-node-npm-18.15.3-d092b0c75c-31b1d92475.zip
│ ├── @types-node-telegram-bot-api-npm-0.61.3-ab48ead340-316bc6d0c9.zip
│ ├── @types-prompts-npm-2.4.0-5b5caba459-ec75655f07.zip
│ ├── @types-request-npm-2.48.8-fcce514e82-0b7754941e.zip
│ ├── @types-tough-cookie-npm-4.0.2-9e61f877e6-e055556ffd.zip
│ ├── NeteaseCloudMusicApi-npm-4.9.0-e61a671d03-60427b0a5b.zip
│ ├── abbrev-npm-1.1.1-3659247eab-a4a97ec07d.zip
│ ├── abstract-level-npm-1.0.3-7a868db447-70d61a3924.zip
│ ├── accepts-npm-1.3.8-9a812371c9-50c43d32e7.zip
│ ├── acorn-npm-8.7.1-7c7a019990-aca0aabf98.zip
│ ├── acorn-walk-npm-8.2.0-2f2cac3177-1715e76c01.zip
│ ├── agent-base-npm-6.0.2-428f325a93-f52b6872cc.zip
│ ├── agent-base-npm-7.1.0-4b12ba5111-f7828f9914.zip
│ ├── agentkeepalive-npm-4.3.0-ac3d8e6807-982453aa44.zip
│ ├── aggregate-error-npm-3.1.0-415a406f4e-1101a33f21.zip
│ ├── ajv-npm-6.12.6-4b5105e2b2-874972efe5.zip
│ ├── ansi-regex-npm-5.0.1-c963a48615-2aa4bb54ca.zip
│ ├── ansi-styles-npm-4.3.0-245c7d42c7-513b44c3b2.zip
│ ├── aproba-npm-2.0.0-8716bcfde6-5615cadcfb.zip
│ ├── are-we-there-yet-npm-3.0.1-3395b1512f-52590c2486.zip
│ ├── arg-npm-4.1.3-1748b966a8-544af8dd3f.zip
│ ├── array-buffer-byte-length-npm-1.0.0-331671f28a-044e101ce1.zip
│ ├── array-flatten-npm-1.1.1-9d94ad5f1d-a9925bf351.zip
│ ├── array.prototype.findindex-npm-2.2.1-6b54cc8266-62ad1bd722.zip
│ ├── asn1-npm-0.2.6-bdd07356c4-39f2ae343b.zip
│ ├── assert-plus-npm-1.0.0-cac95ef098-19b4340cb8.zip
│ ├── ast-types-npm-0.13.4-69f7e68df8-5a51f7b705.zip
│ ├── asynckit-npm-0.4.0-c718858525-7b78c451df.zip
│ ├── available-typed-arrays-npm-1.0.5-88f321e4d3-20eb47b3ce.zip
│ ├── aws-sign2-npm-0.7.0-656c6cb84d-b148b0bb07.zip
│ ├── aws4-npm-1.12.0-af8e48a2ab-68f79708ac.zip
│ ├── axios-npm-1.4.0-4d7ce8ca3e-7fb6a4313b.zip
│ ├── balanced-match-npm-1.0.2-a53c126459-9706c088a2.zip
│ ├── base64-js-npm-1.5.1-b2f7275641-669632eb37.zip
│ ├── basic-ftp-npm-5.0.3-95a5b33162-8b04e88eb8.zip
│ ├── bcrypt-pbkdf-npm-1.0.2-80db8b16ed-4edfc9fe7d.zip
│ ├── bl-npm-1.2.3-49c4213ca5-123f097989.zip
│ ├── bluebird-npm-3.7.2-6a54136ee3-869417503c.zip
│ ├── body-parser-npm-1.20.0-1820eff49a-12fffdeac8.zip
│ ├── brace-expansion-npm-1.1.11-fb95eb05ad-faf34a7bb0.zip
│ ├── brace-expansion-npm-2.0.1-17aa2616f9-a61e7cd2e8.zip
│ ├── browser-level-npm-1.0.1-f0600225ae-67fbc77ce8.zip
│ ├── buffer-npm-6.0.3-cd90dfedfe-5ad23293d9.zip
│ ├── busboy-npm-0.3.1-87ec0dae5a-d2bcb788c4.zip
│ ├── bytes-npm-3.1.2-28b8643004-e4bcd3948d.zip
│ ├── cacache-npm-16.1.3-4e2088ed0d-d91409e6e5.zip
│ ├── call-bind-npm-1.0.2-c957124861-f8e31de9d1.zip
│ ├── camelcase-npm-5.3.1-5db8af62c5-e6effce26b.zip
│ ├── caseless-npm-0.12.0-e83bc5df83-b43bd4c440.zip
│ ├── catering-npm-2.1.1-b116dcdfef-205daefa69.zip
│ ├── charenc-npm-0.0.2-aca0c2f207-81dcadbe57.zip
│ ├── chownr-npm-2.0.0-638f1c9c61-c57cf9dd07.zip
│ ├── classic-level-npm-1.2.0-399f00877c-88ddd12f21.zip
│ ├── clean-stack-npm-2.2.0-a8ce435a5c-2ac8cd2b2f.zip
│ ├── cliui-npm-6.0.0-488b2414c6-4fcfd26d29.zip
│ ├── cliui-npm-7.0.4-d6b8a9edb6-ce2e8f578a.zip
│ ├── color-convert-npm-2.0.1-79730e935b-79e6bdb9fd.zip
│ ├── color-name-npm-1.1.4-025792b0ea-b044585952.zip
│ ├── color-support-npm-1.1.3-3be5c53455-9b73568176.zip
│ ├── combined-stream-npm-1.0.8-dc14d4a63a-49fa4aeb49.zip
│ ├── commander-npm-8.3.0-c0d18c66d5-0f82321821.zip
│ ├── concat-map-npm-0.0.1-85a921b7ee-902a9f5d89.zip
│ ├── console-control-strings-npm-1.1.0-e3160e5275-8755d76787.zip
│ ├── content-disposition-npm-0.5.4-2d93678616-afb9d545e2.zip
│ ├── content-type-npm-1.0.4-3b1a5ca16b-3d93585fda.zip
│ ├── cookie-npm-0.5.0-e2d58a161a-1f4bd2ca57.zip
│ ├── cookie-signature-npm-1.0.6-93f325f7f0-f4e1b0a98a.zip
│ ├── core-util-is-npm-1.0.2-9fc2b94dc3-7a4c925b49.zip
│ ├── core-util-is-npm-1.0.3-ca74b76c90-9de8597363.zip
│ ├── create-require-npm-1.1.1-839884ca2e-a9a1503d43.zip
│ ├── crypt-npm-0.0.2-033627d94f-baf4c7bbe0.zip
│ ├── dashdash-npm-1.14.1-be8f10a286-3634c24957.zip
│ ├── data-uri-to-buffer-npm-5.0.1-a40e5ac026-10958f89c0.zip
│ ├── debug-npm-2.6.9-7d4cb597dc-d2f51589ca.zip
│ ├── debug-npm-3.2.7-754e818c7a-b3d8c59407.zip
│ ├── debug-npm-4.3.4-4513954577-3dbad3f94e.zip
│ ├── decamelize-npm-1.2.0-c5a2fdc622-ad8c51a7e7.zip
│ ├── define-properties-npm-1.2.0-3547cd0fd2-e60aee6a19.zip
│ ├── degenerator-npm-5.0.1-97c678cdaf-a64fa39cdf.zip
│ ├── delayed-stream-npm-1.0.0-c5a4c4cc02-46fe6e83e2.zip
│ ├── delegates-npm-1.0.0-9b1942d75f-a51744d9b5.zip
│ ├── depd-npm-2.0.0-b6c51a4b43-abbe19c768.zip
│ ├── destroy-npm-1.2.0-6a511802e2-0acb300b74.zip
│ ├── dicer-npm-0.3.0-ef4dcd1bb9-9f61aea61f.zip
│ ├── diff-npm-4.0.2-73133c7102-f2c09b0ce4.zip
│ ├── dijkstrajs-npm-1.0.2-c58f4835d6-8cd822441a.zip
│ ├── dotenv-npm-16.0.0-ef4a5ccded-664cebb51f.zip
│ ├── ecc-jsbn-npm-0.1.2-85b7a7be89-22fef4b620.zip
│ ├── ee-first-npm-1.1.1-33f8535b39-1b4cac778d.zip
│ ├── emoji-regex-npm-8.0.0-213764015c-d4c5c39d5a.zip
│ ├── encode-utf8-npm-1.0.3-8f92a23782-550224bf2a.zip
│ ├── encodeurl-npm-1.0.2-f8c8454c41-e50e3d508c.zip
│ ├── encoding-npm-0.1.13-82a1837d30-bb98632f8f.zip
│ ├── end-of-stream-npm-1.4.4-497fc6dee1-530a5a5a1e.zip
│ ├── env-paths-npm-2.2.1-7c7577428c-65b5df55a8.zip
│ ├── err-code-npm-2.0.3-082e0ff9a7-8b7b1be20d.zip
│ ├── es-abstract-npm-1.21.2-f4ebace1ab-037f55ee5e.zip
│ ├── es-set-tostringtag-npm-2.0.1-c87b5de872-ec416a1294.zip
│ ├── es-shim-unscopables-npm-1.0.0-06186593f1-83e95cadbb.zip
│ ├── es-to-primitive-npm-1.2.1-b7a7eac6c5-4ead6671a2.zip
│ ├── escalade-npm-3.1.1-e02da076aa-a3e2a99f07.zip
│ ├── escape-html-npm-1.0.3-376c22ee74-6213ca9ae0.zip
│ ├── escodegen-npm-2.1.0-e0bf940745-096696407e.zip
│ ├── esprima-npm-4.0.1-1084e98778-b45bc805a6.zip
│ ├── estraverse-npm-5.3.0-03284f8f63-072780882d.zip
│ ├── esutils-npm-2.0.3-f865beafd5-22b5b08f74.zip
│ ├── etag-npm-1.8.1-54a3b989d9-571aeb3dbe.zip
│ ├── eventemitter3-npm-3.1.2-a68b03e1ea-81e4e82b84.zip
│ ├── express-fileupload-npm-1.3.1-5fb95eb44c-ebe810b4b1.zip
│ ├── express-npm-4.18.1-842e583ae1-c3d44c92e4.zip
│ ├── extend-npm-3.0.2-e1ca07ac54-a50a8309ca.zip
│ ├── extsprintf-npm-1.3.0-61a92b324c-cee7a4a1e3.zip
│ ├── extsprintf-npm-1.4.1-140b2f27ab-a2f29b2419.zip
│ ├── fast-deep-equal-npm-3.1.3-790edcfcf5-e21a9d8d84.zip
│ ├── fast-json-stable-stringify-npm-2.1.0-02e8905fda-b191531e36.zip
│ ├── file-type-npm-16.5.3-9e176829d5-38a4443d0f.zip
│ ├── file-type-npm-3.9.0-fec2c20533-1db70b2485.zip
│ ├── finalhandler-npm-1.2.0-593d001463-92effbfd32.zip
│ ├── find-up-npm-4.1.0-c3ccf8d855-4c172680e8.zip
│ ├── follow-redirects-npm-1.15.2-1ec1dd82be-faa66059b6.zip
│ ├── for-each-npm-0.3.3-0010ca8cdd-6c48ff2bc6.zip
│ ├── forever-agent-npm-0.6.1-01dae53bf9-766ae6e220.zip
│ ├── form-data-npm-2.3.3-c016cc11c0-10c1780fa1.zip
│ ├── form-data-npm-2.5.1-47256351b5-5134ada56c.zip
│ ├── form-data-npm-4.0.0-916facec2d-01135bf867.zip
│ ├── forwarded-npm-0.2.0-6473dabe35-fd27e2394d.zip
│ ├── fresh-npm-0.5.2-ad2bb4c0a2-13ea8b08f9.zip
│ ├── fs-extra-npm-8.1.0-197473387f-bf44f0e6ce.zip
│ ├── fs-minipass-npm-2.1.0-501ef87306-1b8d128dae.zip
│ ├── fs.realpath-npm-1.0.0-c8f05d8126-99ddea01a7.zip
│ ├── function-bind-npm-1.1.1-b56b322ae9-b32fbaebb3.zip
│ ├── function.prototype.name-npm-1.1.5-e776a642bb-acd21d733a.zip
│ ├── functions-have-names-npm-1.2.3-e5cf1e2208-c3f1f5ba20.zip
│ ├── gauge-npm-4.0.4-8f878385e9-788b6bfe52.zip
│ ├── get-caller-file-npm-2.0.5-80e8a86305-b9769a836d.zip
│ ├── get-intrinsic-npm-1.1.1-7e868745da-a9fe2ca8fa.zip
│ ├── get-intrinsic-npm-1.2.0-eb08ea9b1d-78fc0487b7.zip
│ ├── get-symbol-description-npm-1.0.0-9c95a4bc1f-9ceff8fe96.zip
│ ├── get-uri-npm-6.0.1-d4f0bb7365-a8aec70e1c.zip
│ ├── getpass-npm-0.1.7-519164a3be-ab18d55661.zip
│ ├── glob-npm-7.2.3-2d866d17a5-29452e97b3.zip
│ ├── glob-npm-8.1.0-65f64af8b1-92fbea3221.zip
│ ├── globalthis-npm-1.0.3-96cd56020d-fbd7d760dc.zip
│ ├── gopd-npm-1.0.1-10c1d0b534-a5ccfb8806.zip
│ ├── graceful-fs-npm-4.2.10-79c70989ca-3f109d70ae.zip
│ ├── graceful-fs-npm-4.2.11-24bb648a68-ac85f94da9.zip
│ ├── har-schema-npm-2.0.0-3a318c0ca5-d8946348f3.zip
│ ├── har-validator-npm-5.1.5-bd9ac162f5-b998a7269c.zip
│ ├── has-bigints-npm-1.0.2-52732e614d-390e31e7be.zip
│ ├── has-npm-1.0.3-b7f00631c1-b9ad53d53b.zip
│ ├── has-property-descriptors-npm-1.0.0-56289b918d-a6d3f0a266.zip
│ ├── has-proto-npm-1.0.1-631ea9d820-febc5b5b53.zip
│ ├── has-symbols-npm-1.0.3-1986bff2c4-a054c40c63.zip
│ ├── has-tostringtag-npm-1.0.0-b1fcf3ab55-cc12eb28cb.zip
│ ├── has-unicode-npm-2.0.1-893adb4747-1eab07a743.zip
│ ├── http-cache-semantics-npm-4.1.1-1120131375-83ac0bc60b.zip
│ ├── http-errors-npm-2.0.0-3f1c503428-9b0a378266.zip
│ ├── http-proxy-agent-npm-5.0.0-7f1f121b83-e2ee1ff165.zip
│ ├── http-proxy-agent-npm-7.0.0-106a57cc8c-48d4fac997.zip
│ ├── http-signature-npm-1.2.0-ee92426f34-3324598712.zip
│ ├── https-proxy-agent-npm-5.0.1-42d65f358e-571fccdf38.zip
│ ├── https-proxy-agent-npm-7.0.1-a2d5d93ee0-2d765c3186.zip
│ ├── humanize-ms-npm-1.2.1-e942bd7329-9c7a74a282.zip
│ ├── iconv-lite-npm-0.4.24-c5c4ac6695-bd9f120f5a.zip
│ ├── iconv-lite-npm-0.6.2-13e85ec7dc-03e03eb9fc.zip
│ ├── iconv-lite-npm-0.6.3-24b8aae27e-3f60d47a5c.zip
│ ├── ieee754-npm-1.2.1-fb63b3caeb-5144c0c981.zip
│ ├── imurmurhash-npm-0.1.4-610c5068a0-7cae75c8cd.zip
│ ├── indent-string-npm-4.0.0-7b717435b2-824cfb9929.zip
│ ├── infer-owner-npm-1.0.4-685ac3d2af-181e732764.zip
│ ├── inflight-npm-1.0.6-ccedb4b908-f4f76aa072.zip
│ ├── inherits-npm-2.0.4-c66b3957a0-4a48a73384.zip
│ ├── internal-slot-npm-1.0.5-a2241f3e66-97e84046bf.zip
│ ├── ip-npm-1.1.8-abea558b72-a2ade53eb3.zip
│ ├── ip-npm-2.0.0-204facb3cc-cfcfac6b87.zip
│ ├── ipaddr.js-npm-1.9.1-19ae7878b4-f88d382598.zip
│ ├── is-array-buffer-npm-3.0.2-0dec897785-dcac9dda66.zip
│ ├── is-bigint-npm-1.0.4-31c2eecbc9-c56edfe09b.zip
│ ├── is-boolean-object-npm-1.1.2-ecbd575e6a-c03b23dbaa.zip
│ ├── is-buffer-npm-1.1.6-08199d9ccc-4a186d995d.zip
│ ├── is-buffer-npm-2.0.5-17e563f277-764c9ad8b5.zip
│ ├── is-callable-npm-1.2.7-808a303e61-61fd57d03b.zip
│ ├── is-date-object-npm-1.0.5-88f3d08b5e-baa9077cdf.zip
│ ├── is-fullwidth-code-point-npm-3.0.0-1ecf4ebee5-44a30c2945.zip
│ ├── is-lambda-npm-1.0.1-7ab55bc8a8-93a32f0194.zip
│ ├── is-negative-zero-npm-2.0.2-0adac91f15-f3232194c4.zip
│ ├── is-number-object-npm-1.0.7-539d0e274d-d1e8d01bb0.zip
│ ├── is-regex-npm-1.1.4-cca193ef11-362399b335.zip
│ ├── is-shared-array-buffer-npm-1.0.2-32e4181fcd-9508929cf1.zip
│ ├── is-string-npm-1.0.7-9f7066daed-323b3d0462.zip
│ ├── is-symbol-npm-1.0.4-eb9baac703-92805812ef.zip
│ ├── is-typed-array-npm-1.1.10-fe4ef83cdc-aac6ecb59d.zip
│ ├── is-typedarray-npm-1.0.0-bbd99de5b6-3508c6cd0a.zip
│ ├── is-weakref-npm-1.0.2-ff80e8c314-95bd9a57cd.zip
│ ├── isarray-npm-1.0.0-db4f547720-f032df8e02.zip
│ ├── isexe-npm-2.0.0-b58870bd2e-26bf6c5480.zip
│ ├── isstream-npm-0.1.2-8581c75385-1eb2fe63a7.zip
│ ├── jsbn-npm-0.1.1-0eb7132404-e5ff29c1b8.zip
│ ├── json-schema-npm-0.4.0-e776313070-66389434c3.zip
│ ├── json-schema-traverse-npm-0.4.1-4759091693-7486074d3b.zip
│ ├── json-stringify-safe-npm-5.0.1-064ddd6ab4-48ec0adad5.zip
│ ├── jsonfile-npm-4.0.0-10ce3aea15-6447d6224f.zip
│ ├── jsprim-npm-1.4.2-1ae6cade9a-2ad1b9fdcc.zip
│ ├── kleur-npm-3.0.3-f6f53649a4-df82cd1e17.zip
│ ├── level-npm-8.0.0-c35f5fe17a-13eb25bd71.zip
│ ├── level-supports-npm-4.0.1-78eaf0b919-d4552b42bb.zip
│ ├── level-transcoder-npm-1.0.1-8821d7bed1-304f08d802.zip
│ ├── locate-path-npm-5.0.0-46580c43e4-83e51725e6.zip
│ ├── lodash-npm-4.17.21-6382451519-eb835a2e51.zip
│ ├── lodash.merge-npm-4.6.2-77cb4416bf-ad580b4bdb.zip
│ ├── lru-cache-npm-6.0.0-b4c8668fe1-f97f499f89.zip
│ ├── lru-cache-npm-7.18.3-e68be5b11c-e550d77238.zip
│ ├── make-error-npm-1.3.6-ccb85d9458-b86e5e0e25.zip
│ ├── make-fetch-happen-npm-10.2.1-f1cc7cd2df-2332eb9a8e.zip
│ ├── md5-npm-2.3.0-86c49d3915-a63cacf401.zip
│ ├── media-typer-npm-0.3.0-8674f8f0f5-af1b38516c.zip
│ ├── media-typer-npm-1.1.0-eccc8b846d-a58dd60804.zip
│ ├── merge-descriptors-npm-1.0.1-615287aaa8-5abc259d2a.zip
│ ├── metaflac-js2-npm-1.0.8-4f08399053-3aafe4490c.zip
│ ├── methods-npm-1.1.2-92f6fdb39b-0917ff4041.zip
│ ├── mime-db-npm-1.52.0-b5371d6fd2-0d99a03585.zip
│ ├── mime-npm-1.6.0-60ae95038a-fef25e3926.zip
│ ├── mime-types-npm-2.1.35-dd9ea9f3e2-89a5b7f1de.zip
│ ├── minimatch-npm-3.1.2-9405269906-c154e56640.zip
│ ├── minimatch-npm-5.1.6-1e71429f4c-7564208ef8.zip
│ ├── minipass-collect-npm-1.0.2-3b4676eab5-14df761028.zip
│ ├── minipass-fetch-npm-2.1.2-9b21a5c930-3f216be791.zip
│ ├── minipass-flush-npm-1.0.5-efe79d9826-56269a0b22.zip
│ ├── minipass-npm-3.3.6-b8d93a945b-a30d083c80.zip
│ ├── minipass-npm-4.2.5-25860eb433-4f9c19af23.zip
│ ├── minipass-pipeline-npm-1.2.4-5924cb077f-b14240dac0.zip
│ ├── minipass-sized-npm-1.0.3-306d86f432-79076749fc.zip
│ ├── minizlib-npm-2.1.2-ea89cd0cfb-f1fdeac0b0.zip
│ ├── mkdirp-npm-1.0.4-37f6ef56b9-a96865108c.zip
│ ├── module-error-npm-1.0.2-4f8221ee3c-5d653e35bd.zip
│ ├── ms-npm-2.0.0-9e1101a471-0e6a22b8b7.zip
│ ├── ms-npm-2.1.2-ec0c1512ff-673cdb2c31.zip
│ ├── ms-npm-2.1.3-81ff3cfac1-aa92de6080.zip
│ ├── music-metadata-npm-7.12.3-6f16defdb6-027667791a.zip
│ ├── napi-macros-npm-2.0.0-f996ef3cad-3038481938.zip
│ ├── needle-npm-2.9.1-f40e591726-746ae3a378.zip
│ ├── negotiator-npm-0.6.3-9d50e36171-b8ffeb1e26.zip
│ ├── netmask-npm-2.0.2-2299510a4d-c65cb8d3f7.zip
│ ├── node-gyp-build-npm-4.6.0-5434aac3e5-25d78c5ef1.zip
│ ├── node-gyp-npm-9.3.1-43540bab9c-b860e9976f.zip
│ ├── node-id3-npm-0.2.3-a83fba2d11-457e5daf11.zip
│ ├── node-telegram-bot-api-npm-0.61.0-57fe1be059-f3939a3411.zip
│ ├── nopt-npm-6.0.0-5ea8050815-82149371f8.zip
│ ├── npmlog-npm-6.0.2-e0e69455c7-ae238cd264.zip
│ ├── oauth-sign-npm-0.9.0-7aa9422221-8f5497a127.zip
│ ├── object-inspect-npm-1.12.0-d064fa559a-2b36d4001a.zip
│ ├── object-inspect-npm-1.12.3-1e7d20f5ff-dabfd824d9.zip
│ ├── object-keys-npm-1.1.1-1bf2f1be93-b363c5e764.zip
│ ├── object.assign-npm-4.1.4-fb3deb1c3a-76cab513a5.zip
│ ├── on-finished-npm-2.4.1-907af70f88-d20929a25e.zip
│ ├── once-npm-1.4.0-ccf03ef07a-cd0a885013.zip
│ ├── p-limit-npm-2.3.0-94a0310039-84ff17f1a3.zip
│ ├── p-locate-npm-4.1.0-eec6872537-513bd14a45.zip
│ ├── p-map-npm-4.0.0-4677ae07c7-cb0ab21ec0.zip
│ ├── p-try-npm-2.2.0-e0390dbaf8-f8a8e9a769.zip
│ ├── pac-proxy-agent-npm-7.0.0-da163d166e-45fe10ae58.zip
│ ├── pac-resolver-npm-7.0.0-904b294260-fa3a898c09.zip
│ ├── parseurl-npm-1.3.3-1542397e00-407cee8e0a.zip
│ ├── path-exists-npm-4.0.0-e9e4f63eb0-505807199d.zip
│ ├── path-is-absolute-npm-1.0.1-31bc695ffd-060840f92c.zip
│ ├── path-to-regexp-npm-0.1.7-2605347373-69a14ea24d.zip
│ ├── peek-readable-npm-4.1.0-26439d9ff8-02c673f9bc.zip
│ ├── performance-now-npm-2.1.0-45e3ce7e49-534e641aa8.zip
│ ├── pngjs-npm-5.0.0-e8ba79f838-04e912cc45.zip
│ ├── probe-image-size-npm-7.2.3-2b6ee36e6f-1a5eeb8f5c.zip
│ ├── process-nextick-args-npm-2.0.1-b8d7971609-1d38588e52.zip
│ ├── promise-inflight-npm-1.0.1-5bb925afac-2274948309.zip
│ ├── promise-retry-npm-2.0.1-871f0b01b7-f96a3f6d90.zip
│ ├── prompts-npm-2.4.2-f5d25d5eea-d8fd1fe638.zip
│ ├── proxy-addr-npm-2.0.7-dae6552872-29c6990ce9.zip
│ ├── proxy-from-env-npm-1.1.0-c13d07f26b-ed7fcc2ba0.zip
│ ├── psl-npm-1.9.0-a546edad1a-20c4277f64.zip
│ ├── pump-npm-2.0.1-05afac7fc4-e9f26a17be.zip
│ ├── punycode-npm-2.3.0-df4bdce06b-39f760e09a.zip
│ ├── qrcode-npm-1.5.0-0f02dca802-a0857713d4.zip
│ ├── qs-npm-6.10.3-172e1a3fb7-0fac5e6c71.zip
│ ├── qs-npm-6.5.3-90b2635484-6f20bf08ca.zip
│ ├── queue-microtask-npm-1.2.3-fcc98e4e2d-b676f8c040.zip
│ ├── range-parser-npm-1.2.1-1a470fa390-0a268d4fea.zip
│ ├── raw-body-npm-2.5.1-9dd1d9fff9-5362adff15.zip
│ ├── readable-stream-npm-2.3.8-67a94c2cb1-6564546703.zip
│ ├── readable-stream-npm-3.6.0-23a4a5eb56-d4ea81502d.zip
│ ├── readable-web-to-node-stream-npm-3.0.2-682f5de297-8c56cc62c6.zip
│ ├── regexp.prototype.flags-npm-1.4.3-df1c08b65d-51228bae73.zip
│ ├── request-npm-2.88.2-f4a57c72c4-4e112c087f.zip
│ ├── request-promise-core-npm-1.1.4-cb9fff6c90-c798bafd55.zip
│ ├── request-promise-npm-4.2.6-37010e90c3-1856c718cb.zip
│ ├── require-directory-npm-2.1.1-8608aee50b-fb47e70bf0.zip
│ ├── require-main-filename-npm-2.0.0-03eef65c84-e9e294695f.zip
│ ├── retry-npm-0.12.0-72ac7fb4cc-623bd7d2e5.zip
│ ├── rimraf-npm-3.0.2-2cb7dac69a-87f4164e39.zip
│ ├── run-parallel-limit-npm-1.1.0-ac1dfd4d1f-672c3b87e7.zip
│ ├── safe-buffer-npm-5.1.2-c27fedf6c4-f2f1f7943c.zip
│ ├── safe-buffer-npm-5.2.1-3481c8aa9b-b99c4b41fd.zip
│ ├── safe-decode-uri-component-npm-1.2.1-3363fa1a8b-60e8d780a3.zip
│ ├── safe-regex-test-npm-1.0.0-e94a09b84e-bc566d8beb.zip
│ ├── safer-buffer-npm-2.1.2-8d5c0b705e-cab8f25ae6.zip
│ ├── sax-npm-1.2.4-178f05f12f-d3df7d32b8.zip
│ ├── semver-npm-7.3.8-25a996cb4f-ba9c7cbbf2.zip
│ ├── send-npm-0.18.0-faadf6353f-74fc07ebb5.zip
│ ├── serve-static-npm-1.15.0-86c81879f5-af57fc13be.zip
│ ├── set-blocking-npm-2.0.0-49e2cffa24-6e65a05f7c.zip
│ ├── setprototypeof-npm-1.2.0-0fedbdcd3a-be18cbbf70.zip
│ ├── side-channel-npm-1.0.4-e1f38b9e06-351e41b947.zip
│ ├── signal-exit-npm-3.0.7-bd270458a3-a2f098f247.zip
│ ├── sisteransi-npm-1.0.5-af60cc0cfa-aba6438f46.zip
│ ├── sleep-promise-npm-9.1.0-d83e95aee1-a93359c18d.zip
│ ├── smart-buffer-npm-4.2.0-5ac3f668bb-b5167a7142.zip
│ ├── socks-npm-2.7.1-17f2b53052-259d9e3e8e.zip
│ ├── socks-proxy-agent-npm-7.0.0-7aacf32ea0-7205543701.zip
│ ├── socks-proxy-agent-npm-8.0.1-646f00d0a1-f6538fd16c.zip
│ ├── source-map-npm-0.6.1-1a3621db16-59ce8640cf.zip
│ ├── sshpk-npm-1.17.0-95f17f597f-ba109f65c8.zip
│ ├── ssri-npm-9.0.1-33ce27f4f8-fb58f5e46b.zip
│ ├── statuses-npm-2.0.1-81d2b97fee-18c7623fdb.zip
│ ├── stealthy-require-npm-1.1.1-0105ec8207-6805b857a9.zip
│ ├── stream-parser-npm-0.3.1-0b70187c85-4d86ff8cff.zip
│ ├── streamsearch-npm-0.1.2-813180eb1c-d2db57cbfb.zip
│ ├── string-width-npm-4.2.3-2c27177bae-e52c10dc3f.zip
│ ├── string.prototype.trim-npm-1.2.7-3fbaf3b9d2-05b7b2d6af.zip
│ ├── string.prototype.trimend-npm-1.0.6-304246ecc1-0fdc34645a.zip
│ ├── string.prototype.trimstart-npm-1.0.6-0926caea6c-89080feef4.zip
│ ├── string_decoder-npm-1.1.1-e46a6c1353-9ab7e56f9d.zip
│ ├── string_decoder-npm-1.3.0-2422117fd0-8417646695.zip
│ ├── strip-ansi-npm-6.0.1-caddc7cb40-f3cd25890a.zip
│ ├── strtok3-npm-6.3.0-73598951ca-90732cff3f.zip
│ ├── tar-npm-6.1.13-3234e72781-8a278bed12.zip
│ ├── toidentifier-npm-1.0.1-f759712599-952c29e2a8.zip
│ ├── token-types-npm-4.2.0-b58a529493-7163e3bfab.zip
│ ├── tough-cookie-npm-2.5.0-79a2fe43fe-16a8cd0902.zip
│ ├── ts-node-npm-10.7.0-ef39b1d45e-2a379e43f7.zip
│ ├── tsc-npm-2.0.4-e331b066cb-50b1024088.zip
│ ├── tslib-npm-2.4.0-9cb6dc5030-8c4aa6a3c5.zip
│ ├── tunnel-agent-npm-0.6.0-64345ab7eb-05f6510358.zip
│ ├── tunnel-npm-0.0.6-b1c0830ea4-c362948df9.zip
│ ├── tweetnacl-npm-0.14.5-a3f766c0d1-6061daba17.zip
│ ├── type-is-npm-1.6.18-6dee4d4961-2c8e47675d.zip
│ ├── typed-array-length-npm-1.0.4-92771b81fc-2228febc93.zip
│ ├── typescript-npm-4.6.4-114dfa5f7e-e7bfcc39cd.zip
│ ├── typescript-patch-9d18892098-1cb434fbc6.zip
│ ├── unbox-primitive-npm-1.0.2-cb56a05066-b7a1cf5862.zip
│ ├── unique-filename-npm-2.0.1-183c6c7c2b-807acf3381.zip
│ ├── unique-slug-npm-3.0.0-0b82e51577-49f8d915ba.zip
│ ├── universalify-npm-0.1.2-9b22d31d2d-40cdc60f6e.zip
│ ├── unpipe-npm-1.0.0-2ed2a3c2bf-4fa18d8d8d.zip
│ ├── uri-js-npm-4.4.1-66d11cbcaf-7167432de6.zip
│ ├── util-deprecate-npm-1.0.2-e3fe1a219c-474acf1146.zip
│ ├── utils-merge-npm-1.0.1-363bbdfbca-c810954932.zip
│ ├── uuid-npm-3.4.0-4fd8ef88ad-58de2feed6.zip
│ ├── v8-compile-cache-lib-npm-3.0.1-4886071ece-78089ad549.zip
│ ├── vary-npm-1.1.2-b49f70ae63-ae0123222c.zip
│ ├── verror-npm-1.10.0-c3f839c579-c431df0bed.zip
│ ├── which-boxed-primitive-npm-1.0.2-e214f9ae5a-53ce774c73.zip
│ ├── which-module-npm-2.0.0-daf3daa08d-809f7fd3df.zip
│ ├── which-npm-2.0.2-320ddf72f7-1a5c563d3c.zip
│ ├── which-typed-array-npm-1.1.9-9559c95dfc-fe0178ca44.zip
│ ├── wide-align-npm-1.1.5-889d77e592-d5fc37cd56.zip
│ ├── wrap-ansi-npm-6.2.0-439a7246d8-6cd96a4101.zip
│ ├── wrap-ansi-npm-7.0.0-ad6e1a0554-a790b846fd.zip
│ ├── wrappy-npm-1.0.2-916de4d4b3-159da4805f.zip
│ ├── y18n-npm-4.0.3-ced95acdbc-014dfcd9b5.zip
│ ├── y18n-npm-5.0.8-5f3a0a7e62-54f0fb9562.zip
│ ├── yallist-npm-4.0.0-b493d9e907-343617202a.zip
│ ├── yargs-npm-15.4.1-ca1c444de1-40b974f508.zip
│ ├── yargs-npm-17.4.1-f5d309f85f-e901232287.zip
│ ├── yargs-parser-npm-18.1.3-0ba9c4f088-60e8c7d1b8.zip
│ ├── yargs-parser-npm-21.0.1-b778fd3462-c3ea2ed12c.zip
│ └── yn-npm-3.1.1-8ad4259784-2c487b0e14.zip
├── plugins
│ ├── @yarnpkg
│ │ ├── plugin-typescript.cjs
│ │ └── plugin-workspace-tools.cjs
│ └── yarn-plugin-nixify.cjs
├── releases
│ └── yarn-3.3.0.cjs
└── sdks
│ ├── integrations.yml
│ └── typescript
│ ├── lib
│ ├── tsc.js
│ ├── tsserver.js
│ ├── tsserverlibrary.js
│ └── typescript.js
│ └── package.json
├── .yarnrc.yml
├── Dockerfile
├── README.md
├── archpkg
├── PKGBUILD
├── netease-login
├── netease-music-sync.conf
└── netease-music-sync.service
├── default.nix
├── flake.nix
├── nixos
├── module.nix
└── service.nix
├── package.json
├── shell.nix
├── src
├── index.ts
├── login.ts
├── models
│ ├── PlayList.ts
│ └── Pool.ts
└── providers
│ └── bot.ts
├── tsconfig.json
├── yarn-project.nix
└── yarn.lock
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | name: Build and publish docker container
2 |
3 | on:
4 | push:
5 |
6 | jobs:
7 | publish:
8 | name: Publish container image
9 | runs-on: ubuntu-latest
10 |
11 | steps:
12 | - name: Checkout
13 | uses: actions/checkout@v2
14 |
15 | - name: OCI meta
16 | id: meta
17 | uses: docker/metadata-action@v3
18 | with:
19 | images: ghcr.io/${{ github.repository }}
20 | tags: |
21 | type=edge,branch=main
22 | type=ref,event=branch
23 | type=semver,pattern={{version}}
24 | type=semver,pattern={{major}}.{{minor}}
25 | type=semver,pattern={{major}}
26 | type=sha
27 | type=raw,value=latest
28 |
29 | - name: Set up Docker Buildx
30 | uses: docker/setup-buildx-action@v1
31 |
32 | - name: Set up QEMU
33 | uses: docker/setup-qemu-action@v2
34 |
35 | - name: Login to GHCR
36 | uses: docker/login-action@v1
37 | with:
38 | registry: ghcr.io
39 | username: ${{ github.repository_owner }}
40 | password: ${{ secrets.GITHUB_TOKEN }}
41 |
42 | - name: Build and push
43 | uses: docker/build-push-action@v4
44 | with:
45 | context: .
46 | push: true
47 | tags: ${{ steps.meta.outputs.tags }}
48 | labels: ${{ steps.meta.outputs.labels }}
49 | platforms: linux/amd64,linux/arm64/v8,linux/arm/v7,linux/arm/v6
50 | cache-from: type=gha
51 | cache-to: type=gha,mode=max
52 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ### Vue template
2 | # gitignore template for Vue.js projects
3 | #
4 | # Recommended template: Node.gitignore
5 |
6 | docs/_book
7 |
8 | test/
9 |
10 | ### ArchLinuxPackages template
11 | *.tar
12 | *.tar.*
13 | *.jar
14 | *.exe
15 | *.msi
16 | *.tgz
17 | *.log
18 | *.log.*
19 | *.sig
20 |
21 | ### VisualStudio template
22 | ## Ignore Visual Studio temporary files, build results, and
23 | ## files generated by popular Visual Studio add-ons.
24 | ##
25 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
26 |
27 | # User-specific files
28 | *.rsuser
29 | *.suo
30 | *.user
31 | *.userosscache
32 | *.sln.docstates
33 |
34 | # User-specific files (MonoDevelop/Xamarin Studio)
35 | *.userprefs
36 |
37 | # Mono auto generated files
38 | mono_crash.*
39 |
40 | # Build results
41 | [Dd]ebug/
42 | [Dd]ebugPublic/
43 | [Rr]elease/
44 | [Rr]eleases/
45 | x64/
46 | x86/
47 | [Ww][Ii][Nn]32/
48 | [Aa][Rr][Mm]/
49 | [Aa][Rr][Mm]64/
50 | bld/
51 | [Bb]in/
52 | [Oo]bj/
53 | [Ll]og/
54 | [Ll]ogs/
55 |
56 | # Visual Studio 2015/2017 cache/options directory
57 | .vs/
58 | # Uncomment if you have tasks that create the project's static files in wwwroot
59 | #wwwroot/
60 |
61 | # Visual Studio 2017 auto generated files
62 | Generated\ Files/
63 |
64 | # MSTest test Results
65 | [Tt]est[Rr]esult*/
66 | [Bb]uild[Ll]og.*
67 |
68 | # NUnit
69 | *.VisualState.xml
70 | TestResult.xml
71 | nunit-*.xml
72 |
73 | # Build Results of an ATL Project
74 | [Dd]ebugPS/
75 | [Rr]eleasePS/
76 | dlldata.c
77 |
78 | # Benchmark Results
79 | BenchmarkDotNet.Artifacts/
80 |
81 | # .NET Core
82 | project.lock.json
83 | project.fragment.lock.json
84 | artifacts/
85 |
86 | # ASP.NET Scaffolding
87 | ScaffoldingReadMe.txt
88 |
89 | # StyleCop
90 | StyleCopReport.xml
91 |
92 | # Files built by Visual Studio
93 | *_i.c
94 | *_p.c
95 | *_h.h
96 | *.ilk
97 | *.meta
98 | *.obj
99 | *.iobj
100 | *.pch
101 | *.pdb
102 | *.ipdb
103 | *.pgc
104 | *.pgd
105 | *.rsp
106 | *.sbr
107 | *.tlb
108 | *.tli
109 | *.tlh
110 | *.tmp
111 | *.tmp_proj
112 | *_wpftmp.csproj
113 | *.log
114 | *.vspscc
115 | *.vssscc
116 | .builds
117 | *.pidb
118 | *.svclog
119 | *.scc
120 |
121 | # Chutzpah Test files
122 | _Chutzpah*
123 |
124 | # Visual C++ cache files
125 | ipch/
126 | *.aps
127 | *.ncb
128 | *.opendb
129 | *.opensdf
130 | *.sdf
131 | *.cachefile
132 | *.VC.db
133 | *.VC.VC.opendb
134 |
135 | # Visual Studio profiler
136 | *.psess
137 | *.vsp
138 | *.vspx
139 | *.sap
140 |
141 | # Visual Studio Trace Files
142 | *.e2e
143 |
144 | # TFS 2012 Local Workspace
145 | $tf/
146 |
147 | # Guidance Automation Toolkit
148 | *.gpState
149 |
150 | # ReSharper is a .NET coding add-in
151 | _ReSharper*/
152 | *.[Rr]e[Ss]harper
153 | *.DotSettings.user
154 |
155 | # TeamCity is a build add-in
156 | _TeamCity*
157 |
158 | # DotCover is a Code Coverage Tool
159 | *.dotCover
160 |
161 | # AxoCover is a Code Coverage Tool
162 | .axoCover/*
163 | !.axoCover/settings.json
164 |
165 | # Coverlet is a free, cross platform Code Coverage Tool
166 | coverage*.json
167 | coverage*.xml
168 | coverage*.info
169 |
170 | # Visual Studio code coverage results
171 | *.coverage
172 | *.coveragexml
173 |
174 | # NCrunch
175 | _NCrunch_*
176 | .*crunch*.local.xml
177 | nCrunchTemp_*
178 |
179 | # MightyMoose
180 | *.mm.*
181 | AutoTest.Net/
182 |
183 | # Web workbench (sass)
184 | .sass-cache/
185 |
186 | # Installshield output folder
187 | [Ee]xpress/
188 |
189 | # DocProject is a documentation generator add-in
190 | DocProject/buildhelp/
191 | DocProject/Help/*.HxT
192 | DocProject/Help/*.HxC
193 | DocProject/Help/*.hhc
194 | DocProject/Help/*.hhk
195 | DocProject/Help/*.hhp
196 | DocProject/Help/Html2
197 | DocProject/Help/html
198 |
199 | # Click-Once directory
200 | publish/
201 |
202 | # Publish Web Output
203 | *.[Pp]ublish.xml
204 | *.azurePubxml
205 | # Note: Comment the next line if you want to checkin your web deploy settings,
206 | # but database connection strings (with potential passwords) will be unencrypted
207 | *.pubxml
208 | *.publishproj
209 |
210 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
211 | # checkin your Azure Web App publish settings, but sensitive information contained
212 | # in these scripts will be unencrypted
213 | PublishScripts/
214 |
215 | # NuGet Packages
216 | *.nupkg
217 | # NuGet Symbol Packages
218 | *.snupkg
219 | # The packages folder can be ignored because of Package Restore
220 | **/[Pp]ackages/*
221 | # except build/, which is used as an MSBuild target.
222 | !**/[Pp]ackages/build/
223 | # Uncomment if necessary however generally it will be regenerated when needed
224 | #!**/[Pp]ackages/repositories.config
225 | # NuGet v3's project.json files produces more ignorable files
226 | *.nuget.props
227 | *.nuget.targets
228 |
229 | # Microsoft Azure Build Output
230 | csx/
231 | *.build.csdef
232 |
233 | # Microsoft Azure Emulator
234 | ecf/
235 | rcf/
236 |
237 | # Windows Store app package directories and files
238 | AppPackages/
239 | BundleArtifacts/
240 | Package.StoreAssociation.xml
241 | _pkginfo.txt
242 | *.appx
243 | *.appxbundle
244 | *.appxupload
245 |
246 | # Others
247 | ClientBin/
248 | ~$*
249 | *~
250 | *.dbmdl
251 | *.dbproj.schemaview
252 | *.jfm
253 | *.pfx
254 | *.publishsettings
255 | orleans.codegen.cs
256 |
257 | # Including strong name files can present a security risk
258 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
259 | #*.snk
260 |
261 | # Since there are multiple workflows, uncomment next line to ignore bower_components
262 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
263 | #bower_components/
264 |
265 | # RIA/Silverlight projects
266 | Generated_Code/
267 |
268 | # Backup & report files from converting an old project file
269 | # to a newer Visual Studio version. Backup files are not needed,
270 | # because we have git ;-)
271 | _UpgradeReport_Files/
272 | Backup*/
273 | UpgradeLog*.XML
274 | UpgradeLog*.htm
275 | ServiceFabricBackup/
276 | *.rptproj.bak
277 |
278 | # SQL Server files
279 | *.mdf
280 | *.ldf
281 | *.ndf
282 |
283 | # Business Intelligence projects
284 | *.rdl.data
285 | *.bim.layout
286 | *.bim_*.settings
287 | *.rptproj.rsuser
288 | *- [Bb]ackup.rdl
289 | *- [Bb]ackup ([0-9]).rdl
290 | *- [Bb]ackup ([0-9][0-9]).rdl
291 |
292 | # Microsoft Fakes
293 | FakesAssemblies/
294 |
295 | # GhostDoc plugin setting file
296 | *.GhostDoc.xml
297 |
298 | # Node.js Tools for Visual Studio
299 | .ntvs_analysis.dat
300 | node_modules/
301 |
302 | # Visual Studio 6 build log
303 | *.plg
304 |
305 | # Visual Studio 6 workspace options file
306 | *.opt
307 |
308 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
309 | *.vbw
310 |
311 | # Visual Studio LightSwitch build output
312 | **/*.HTMLClient/GeneratedArtifacts
313 | **/*.DesktopClient/GeneratedArtifacts
314 | **/*.DesktopClient/ModelManifest.xml
315 | **/*.Server/GeneratedArtifacts
316 | **/*.Server/ModelManifest.xml
317 | _Pvt_Extensions
318 |
319 | # Paket dependency manager
320 | .paket/paket.exe
321 | paket-files/
322 |
323 | # FAKE - F# Make
324 | .fake/
325 |
326 | # CodeRush personal settings
327 | .cr/personal
328 |
329 | # Python Tools for Visual Studio (PTVS)
330 | __pycache__/
331 | *.pyc
332 |
333 | # Cake - Uncomment if you are using it
334 | # tools/**
335 | # !tools/packages.config
336 |
337 | # Tabs Studio
338 | *.tss
339 |
340 | # Telerik's JustMock configuration file
341 | *.jmconfig
342 |
343 | # BizTalk build output
344 | *.btp.cs
345 | *.btm.cs
346 | *.odx.cs
347 | *.xsd.cs
348 |
349 | # OpenCover UI analysis results
350 | OpenCover/
351 |
352 | # Azure Stream Analytics local run output
353 | ASALocalRun/
354 |
355 | # MSBuild Binary and Structured Log
356 | *.binlog
357 |
358 | # NVidia Nsight GPU debugger configuration file
359 | *.nvuser
360 |
361 | # MFractors (Xamarin productivity tool) working folder
362 | .mfractor/
363 |
364 | # Local History for Visual Studio
365 | .localhistory/
366 |
367 | # BeatPulse healthcheck temp database
368 | healthchecksdb
369 |
370 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
371 | MigrationBackup/
372 |
373 | # Ionide (cross platform F# VS Code tools) working folder
374 | .ionide/
375 |
376 | # Fody - auto-generated XML schema
377 | FodyWeavers.xsd
378 |
379 | ### Vim template
380 | # Swap
381 | [._]*.s[a-v][a-z]
382 | !*.svg # comment out if you don't need vector files
383 | [._]*.sw[a-p]
384 | [._]s[a-rt-v][a-z]
385 | [._]ss[a-gi-z]
386 | [._]sw[a-p]
387 |
388 | # Session
389 | Session.vim
390 | Sessionx.vim
391 |
392 | # Temporary
393 | .netrwhist
394 | *~
395 | # Auto-generated tag files
396 | tags
397 | # Persistent undo
398 | [._]*.un~
399 |
400 | ### VisualStudioCode template
401 | .vscode/*
402 | !.vscode/settings.json
403 | !.vscode/tasks.json
404 | !.vscode/launch.json
405 | !.vscode/extensions.json
406 | *.code-workspace
407 |
408 | # Local History for Visual Studio Code
409 | .history/
410 |
411 | ### Windows template
412 | # Windows thumbnail cache files
413 | Thumbs.db
414 | Thumbs.db:encryptable
415 | ehthumbs.db
416 | ehthumbs_vista.db
417 |
418 | # Dump file
419 | *.stackdump
420 |
421 | # Folder config file
422 | [Dd]esktop.ini
423 |
424 | # Recycle Bin used on file shares
425 | $RECYCLE.BIN/
426 |
427 | # Windows Installer files
428 | *.cab
429 | *.msi
430 | *.msix
431 | *.msm
432 | *.msp
433 |
434 | # Windows shortcuts
435 | *.lnk
436 |
437 | ### LibreOffice template
438 | # LibreOffice locks
439 | .~lock.*#
440 |
441 | ### SublimeText template
442 | # Cache files for Sublime Text
443 | *.tmlanguage.cache
444 | *.tmPreferences.cache
445 | *.stTheme.cache
446 |
447 | # Workspace files are user-specific
448 | *.sublime-workspace
449 |
450 | # Project files should be checked into the repository, unless a significant
451 | # proportion of contributors will probably not be using Sublime Text
452 | # *.sublime-project
453 |
454 | # SFTP configuration file
455 | sftp-config.json
456 | sftp-config-alt*.json
457 |
458 | # Package control specific files
459 | Package Control.last-run
460 | Package Control.ca-list
461 | Package Control.ca-bundle
462 | Package Control.system-ca-bundle
463 | Package Control.cache/
464 | Package Control.ca-certs/
465 | Package Control.merged-ca-bundle
466 | Package Control.user-ca-bundle
467 | oscrypto-ca-bundle.crt
468 | bh_unicode_properties.cache
469 |
470 | # Sublime-github package stores a github token in this file
471 | # https://packagecontrol.io/packages/sublime-github
472 | GitHub.sublime-settings
473 |
474 | ### JetBrains template
475 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
476 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
477 |
478 | # User-specific stuff
479 | .idea/**/workspace.xml
480 | .idea/**/tasks.xml
481 | .idea/**/usage.statistics.xml
482 | .idea/**/dictionaries
483 | .idea/**/shelf
484 |
485 | # Generated files
486 | .idea/**/contentModel.xml
487 |
488 | # Sensitive or high-churn files
489 | .idea/**/dataSources/
490 | .idea/**/dataSources.ids
491 | .idea/**/dataSources.local.xml
492 | .idea/**/sqlDataSources.xml
493 | .idea/**/dynamic.xml
494 | .idea/**/uiDesigner.xml
495 | .idea/**/dbnavigator.xml
496 |
497 | # Gradle
498 | .idea/**/gradle.xml
499 | .idea/**/libraries
500 |
501 | # Gradle and Maven with auto-import
502 | # When using Gradle or Maven with auto-import, you should exclude module files,
503 | # since they will be recreated, and may cause churn. Uncomment if using
504 | # auto-import.
505 | # .idea/artifacts
506 | # .idea/compiler.xml
507 | # .idea/jarRepositories.xml
508 | # .idea/modules.xml
509 | # .idea/*.iml
510 | # .idea/modules
511 | # *.iml
512 | # *.ipr
513 |
514 | # CMake
515 | cmake-build-*/
516 |
517 | # Mongo Explorer plugin
518 | .idea/**/mongoSettings.xml
519 |
520 | # File-based project format
521 | *.iws
522 |
523 | # IntelliJ
524 | out/
525 |
526 | # mpeltonen/sbt-idea plugin
527 | .idea_modules/
528 |
529 | # JIRA plugin
530 | atlassian-ide-plugin.xml
531 |
532 | # Cursive Clojure plugin
533 | .idea/replstate.xml
534 |
535 | # Crashlytics plugin (for Android Studio and IntelliJ)
536 | com_crashlytics_export_strings.xml
537 | crashlytics.properties
538 | crashlytics-build.properties
539 | fabric.properties
540 |
541 | # Editor-based Rest Client
542 | .idea/httpRequests
543 |
544 | # Android studio 3.1+ serialized cache file
545 | .idea/caches/build_file_checksums.ser
546 |
547 | ### Kate template
548 | # Swap Files #
549 | .*.kate-swp
550 | .swp.*
551 |
552 | ### Backup template
553 | *.bak
554 | *.gho
555 | *.ori
556 | *.orig
557 | *.tmp
558 |
559 | ### Node template
560 | # Logs
561 | logs
562 | *.log
563 | npm-debug.log*
564 | yarn-debug.log*
565 | yarn-error.log*
566 | lerna-debug.log*
567 |
568 | # Diagnostic reports (https://nodejs.org/api/report.html)
569 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
570 |
571 | # Runtime data
572 | pids
573 | *.pid
574 | *.seed
575 | *.pid.lock
576 |
577 | # Directory for instrumented libs generated by jscoverage/JSCover
578 | lib-cov
579 |
580 | # Coverage directory used by tools like istanbul
581 | coverage
582 | *.lcov
583 |
584 | # nyc test coverage
585 | .nyc_output
586 |
587 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
588 | .grunt
589 |
590 | # Bower dependency directory (https://bower.io/)
591 | bower_components
592 |
593 | # node-waf configuration
594 | .lock-wscript
595 |
596 | # Compiled binary addons (https://nodejs.org/api/addons.html)
597 | build/Release
598 |
599 | # Dependency directories
600 | node_modules/
601 | jspm_packages/
602 |
603 | # Snowpack dependency directory (https://snowpack.dev/)
604 | web_modules/
605 |
606 | # TypeScript cache
607 | *.tsbuildinfo
608 |
609 | # Optional npm cache directory
610 | .npm
611 |
612 | # Optional eslint cache
613 | .eslintcache
614 |
615 | # Microbundle cache
616 | .rpt2_cache/
617 | .rts2_cache_cjs/
618 | .rts2_cache_es/
619 | .rts2_cache_umd/
620 |
621 | # Optional REPL history
622 | .node_repl_history
623 |
624 | # Output of 'npm pack'
625 | *.tgz
626 |
627 | # Yarn Integrity file
628 | .yarn-integrity
629 |
630 | # dotenv environment variables file
631 | .env
632 | .env.test
633 |
634 | # parcel-bundler cache (https://parceljs.org/)
635 | .cache
636 | .parcel-cache
637 |
638 | # Next.js build output
639 | .next
640 | out
641 |
642 | # Nuxt.js build / generate output
643 | .nuxt
644 | dist
645 |
646 | # Gatsby files
647 | .cache/
648 | # Comment in the public line in if your project uses Gatsby and not Next.js
649 | # https://nextjs.org/blog/next-9-1#public-directory-support
650 | # public
651 |
652 | # vuepress build output
653 | .vuepress/dist
654 |
655 | # Serverless directories
656 | .serverless/
657 |
658 | # FuseBox cache
659 | .fusebox/
660 |
661 | # DynamoDB Local files
662 | .dynamodb/
663 |
664 | # TernJS port file
665 | .tern-port
666 |
667 | # Stores VSCode versions used for testing VSCode extensions
668 | .vscode-test
669 |
670 |
671 | ### KDevelop4 template
672 | *.kdev4
673 | .kdev4/
674 |
675 | ### Linux template
676 | *~
677 |
678 | # temporary files which can be created if a process still has a handle open of a deleted file
679 | .fuse_hidden*
680 |
681 | # KDE directory preferences
682 | .directory
683 |
684 | # Linux trash folder which might appear on any partition or disk
685 | .Trash-*
686 |
687 | # .nfs files are created when an open file is removed but is still being accessed
688 | .nfs*
689 |
690 | ### macOS template
691 | # General
692 | .DS_Store
693 | .AppleDouble
694 | .LSOverride
695 |
696 | # Icon must end with two \r
697 | Icon
698 |
699 | # Thumbnails
700 | ._*
701 |
702 | # Files that might appear in the root of a volume
703 | .DocumentRevisions-V100
704 | .fseventsd
705 | .Spotlight-V100
706 | .TemporaryItems
707 | .Trashes
708 | .VolumeIcon.icns
709 | .com.apple.timemachine.donotpresent
710 |
711 | # Directories potentially created on remote AFP share
712 | .AppleDB
713 | .AppleDesktop
714 | Network Trash Folder
715 | Temporary Items
716 | .apdisk
717 |
718 | config.yaml
719 | build
720 | .yarn/*
721 | !.yarn/cache
722 | !.yarn/patches
723 | !.yarn/plugins
724 | !.yarn/releases
725 | !.yarn/sdks
726 | !.yarn/versions
727 |
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # 默认忽略的文件
2 | /shelf/
3 | /workspace.xml
4 | # 基于编辑器的 HTTP 客户端请求
5 | /httpRequests/
6 | # Datasource local storage ignored files
7 | /dataSources/
8 | /dataSources.local.xml
9 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/netease-sync.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "arcanis.vscode-zipfs"
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "search.exclude": {
3 | "**/.yarn": true,
4 | "**/.pnp.*": true
5 | },
6 | "typescript.tsdk": ".yarn/sdks/typescript/lib",
7 | "typescript.enablePromptUseWorkspaceTsdk": true
8 | }
9 |
--------------------------------------------------------------------------------
/.yarn/cache/@cspotcode-source-map-consumer-npm-0.8.0-1f37e9e72b-c0c16ca3d2.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/@cspotcode-source-map-consumer-npm-0.8.0-1f37e9e72b-c0c16ca3d2.zip
--------------------------------------------------------------------------------
/.yarn/cache/@cspotcode-source-map-support-npm-0.7.0-456c3ea2ce-9faddda775.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/@cspotcode-source-map-support-npm-0.7.0-456c3ea2ce-9faddda775.zip
--------------------------------------------------------------------------------
/.yarn/cache/@gar-promisify-npm-1.1.3-ac1a325862-4059f790e2.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/@gar-promisify-npm-1.1.3-ac1a325862-4059f790e2.zip
--------------------------------------------------------------------------------
/.yarn/cache/@npmcli-fs-npm-2.1.2-08d434e77b-405074965e.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/@npmcli-fs-npm-2.1.2-08d434e77b-405074965e.zip
--------------------------------------------------------------------------------
/.yarn/cache/@npmcli-move-file-npm-2.0.1-b593d8f741-52dc02259d.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/@npmcli-move-file-npm-2.0.1-b593d8f741-52dc02259d.zip
--------------------------------------------------------------------------------
/.yarn/cache/@tokenizer-token-npm-0.3.0-4441352cc5-1d575d02d2.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/@tokenizer-token-npm-0.3.0-4441352cc5-1d575d02d2.zip
--------------------------------------------------------------------------------
/.yarn/cache/@tootallnate-once-npm-2.0.0-e36cf4f140-ad87447820.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/@tootallnate-once-npm-2.0.0-e36cf4f140-ad87447820.zip
--------------------------------------------------------------------------------
/.yarn/cache/@tootallnate-quickjs-emscripten-npm-0.23.0-a889ea7aeb-c350a2947f.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/@tootallnate-quickjs-emscripten-npm-0.23.0-a889ea7aeb-c350a2947f.zip
--------------------------------------------------------------------------------
/.yarn/cache/@tsconfig-node10-npm-1.0.8-90a8cce25d-b8d5fffbc6.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/@tsconfig-node10-npm-1.0.8-90a8cce25d-b8d5fffbc6.zip
--------------------------------------------------------------------------------
/.yarn/cache/@tsconfig-node12-npm-1.0.9-780563856d-a01b2400ab.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/@tsconfig-node12-npm-1.0.9-780563856d-a01b2400ab.zip
--------------------------------------------------------------------------------
/.yarn/cache/@tsconfig-node14-npm-1.0.1-3ecac58e68-976345e896.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/@tsconfig-node14-npm-1.0.1-3ecac58e68-976345e896.zip
--------------------------------------------------------------------------------
/.yarn/cache/@tsconfig-node16-npm-1.0.2-1f43ab567a-ca94d36397.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/@tsconfig-node16-npm-1.0.2-1f43ab567a-ca94d36397.zip
--------------------------------------------------------------------------------
/.yarn/cache/@types-caseless-npm-0.12.2-fc711e5d73-430d159111.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/@types-caseless-npm-0.12.2-fc711e5d73-430d159111.zip
--------------------------------------------------------------------------------
/.yarn/cache/@types-node-npm-17.0.31-d8d26aa013-704618350f.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/@types-node-npm-17.0.31-d8d26aa013-704618350f.zip
--------------------------------------------------------------------------------
/.yarn/cache/@types-node-npm-18.15.3-d092b0c75c-31b1d92475.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/@types-node-npm-18.15.3-d092b0c75c-31b1d92475.zip
--------------------------------------------------------------------------------
/.yarn/cache/@types-node-telegram-bot-api-npm-0.61.3-ab48ead340-316bc6d0c9.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/@types-node-telegram-bot-api-npm-0.61.3-ab48ead340-316bc6d0c9.zip
--------------------------------------------------------------------------------
/.yarn/cache/@types-prompts-npm-2.4.0-5b5caba459-ec75655f07.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/@types-prompts-npm-2.4.0-5b5caba459-ec75655f07.zip
--------------------------------------------------------------------------------
/.yarn/cache/@types-request-npm-2.48.8-fcce514e82-0b7754941e.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/@types-request-npm-2.48.8-fcce514e82-0b7754941e.zip
--------------------------------------------------------------------------------
/.yarn/cache/@types-tough-cookie-npm-4.0.2-9e61f877e6-e055556ffd.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/@types-tough-cookie-npm-4.0.2-9e61f877e6-e055556ffd.zip
--------------------------------------------------------------------------------
/.yarn/cache/NeteaseCloudMusicApi-npm-4.9.0-e61a671d03-60427b0a5b.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/NeteaseCloudMusicApi-npm-4.9.0-e61a671d03-60427b0a5b.zip
--------------------------------------------------------------------------------
/.yarn/cache/abbrev-npm-1.1.1-3659247eab-a4a97ec07d.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/abbrev-npm-1.1.1-3659247eab-a4a97ec07d.zip
--------------------------------------------------------------------------------
/.yarn/cache/abstract-level-npm-1.0.3-7a868db447-70d61a3924.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/abstract-level-npm-1.0.3-7a868db447-70d61a3924.zip
--------------------------------------------------------------------------------
/.yarn/cache/accepts-npm-1.3.8-9a812371c9-50c43d32e7.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/accepts-npm-1.3.8-9a812371c9-50c43d32e7.zip
--------------------------------------------------------------------------------
/.yarn/cache/acorn-npm-8.7.1-7c7a019990-aca0aabf98.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/acorn-npm-8.7.1-7c7a019990-aca0aabf98.zip
--------------------------------------------------------------------------------
/.yarn/cache/acorn-walk-npm-8.2.0-2f2cac3177-1715e76c01.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/acorn-walk-npm-8.2.0-2f2cac3177-1715e76c01.zip
--------------------------------------------------------------------------------
/.yarn/cache/agent-base-npm-6.0.2-428f325a93-f52b6872cc.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/agent-base-npm-6.0.2-428f325a93-f52b6872cc.zip
--------------------------------------------------------------------------------
/.yarn/cache/agent-base-npm-7.1.0-4b12ba5111-f7828f9914.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/agent-base-npm-7.1.0-4b12ba5111-f7828f9914.zip
--------------------------------------------------------------------------------
/.yarn/cache/agentkeepalive-npm-4.3.0-ac3d8e6807-982453aa44.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/agentkeepalive-npm-4.3.0-ac3d8e6807-982453aa44.zip
--------------------------------------------------------------------------------
/.yarn/cache/aggregate-error-npm-3.1.0-415a406f4e-1101a33f21.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/aggregate-error-npm-3.1.0-415a406f4e-1101a33f21.zip
--------------------------------------------------------------------------------
/.yarn/cache/ajv-npm-6.12.6-4b5105e2b2-874972efe5.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/ajv-npm-6.12.6-4b5105e2b2-874972efe5.zip
--------------------------------------------------------------------------------
/.yarn/cache/ansi-regex-npm-5.0.1-c963a48615-2aa4bb54ca.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/ansi-regex-npm-5.0.1-c963a48615-2aa4bb54ca.zip
--------------------------------------------------------------------------------
/.yarn/cache/ansi-styles-npm-4.3.0-245c7d42c7-513b44c3b2.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/ansi-styles-npm-4.3.0-245c7d42c7-513b44c3b2.zip
--------------------------------------------------------------------------------
/.yarn/cache/aproba-npm-2.0.0-8716bcfde6-5615cadcfb.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/aproba-npm-2.0.0-8716bcfde6-5615cadcfb.zip
--------------------------------------------------------------------------------
/.yarn/cache/are-we-there-yet-npm-3.0.1-3395b1512f-52590c2486.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/are-we-there-yet-npm-3.0.1-3395b1512f-52590c2486.zip
--------------------------------------------------------------------------------
/.yarn/cache/arg-npm-4.1.3-1748b966a8-544af8dd3f.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/arg-npm-4.1.3-1748b966a8-544af8dd3f.zip
--------------------------------------------------------------------------------
/.yarn/cache/array-buffer-byte-length-npm-1.0.0-331671f28a-044e101ce1.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/array-buffer-byte-length-npm-1.0.0-331671f28a-044e101ce1.zip
--------------------------------------------------------------------------------
/.yarn/cache/array-flatten-npm-1.1.1-9d94ad5f1d-a9925bf351.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/array-flatten-npm-1.1.1-9d94ad5f1d-a9925bf351.zip
--------------------------------------------------------------------------------
/.yarn/cache/array.prototype.findindex-npm-2.2.1-6b54cc8266-62ad1bd722.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/array.prototype.findindex-npm-2.2.1-6b54cc8266-62ad1bd722.zip
--------------------------------------------------------------------------------
/.yarn/cache/asn1-npm-0.2.6-bdd07356c4-39f2ae343b.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/asn1-npm-0.2.6-bdd07356c4-39f2ae343b.zip
--------------------------------------------------------------------------------
/.yarn/cache/assert-plus-npm-1.0.0-cac95ef098-19b4340cb8.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/assert-plus-npm-1.0.0-cac95ef098-19b4340cb8.zip
--------------------------------------------------------------------------------
/.yarn/cache/ast-types-npm-0.13.4-69f7e68df8-5a51f7b705.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/ast-types-npm-0.13.4-69f7e68df8-5a51f7b705.zip
--------------------------------------------------------------------------------
/.yarn/cache/asynckit-npm-0.4.0-c718858525-7b78c451df.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/asynckit-npm-0.4.0-c718858525-7b78c451df.zip
--------------------------------------------------------------------------------
/.yarn/cache/available-typed-arrays-npm-1.0.5-88f321e4d3-20eb47b3ce.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/available-typed-arrays-npm-1.0.5-88f321e4d3-20eb47b3ce.zip
--------------------------------------------------------------------------------
/.yarn/cache/aws-sign2-npm-0.7.0-656c6cb84d-b148b0bb07.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/aws-sign2-npm-0.7.0-656c6cb84d-b148b0bb07.zip
--------------------------------------------------------------------------------
/.yarn/cache/aws4-npm-1.12.0-af8e48a2ab-68f79708ac.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/aws4-npm-1.12.0-af8e48a2ab-68f79708ac.zip
--------------------------------------------------------------------------------
/.yarn/cache/axios-npm-1.4.0-4d7ce8ca3e-7fb6a4313b.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/axios-npm-1.4.0-4d7ce8ca3e-7fb6a4313b.zip
--------------------------------------------------------------------------------
/.yarn/cache/balanced-match-npm-1.0.2-a53c126459-9706c088a2.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/balanced-match-npm-1.0.2-a53c126459-9706c088a2.zip
--------------------------------------------------------------------------------
/.yarn/cache/base64-js-npm-1.5.1-b2f7275641-669632eb37.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/base64-js-npm-1.5.1-b2f7275641-669632eb37.zip
--------------------------------------------------------------------------------
/.yarn/cache/basic-ftp-npm-5.0.3-95a5b33162-8b04e88eb8.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/basic-ftp-npm-5.0.3-95a5b33162-8b04e88eb8.zip
--------------------------------------------------------------------------------
/.yarn/cache/bcrypt-pbkdf-npm-1.0.2-80db8b16ed-4edfc9fe7d.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/bcrypt-pbkdf-npm-1.0.2-80db8b16ed-4edfc9fe7d.zip
--------------------------------------------------------------------------------
/.yarn/cache/bl-npm-1.2.3-49c4213ca5-123f097989.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/bl-npm-1.2.3-49c4213ca5-123f097989.zip
--------------------------------------------------------------------------------
/.yarn/cache/bluebird-npm-3.7.2-6a54136ee3-869417503c.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/bluebird-npm-3.7.2-6a54136ee3-869417503c.zip
--------------------------------------------------------------------------------
/.yarn/cache/body-parser-npm-1.20.0-1820eff49a-12fffdeac8.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/body-parser-npm-1.20.0-1820eff49a-12fffdeac8.zip
--------------------------------------------------------------------------------
/.yarn/cache/brace-expansion-npm-1.1.11-fb95eb05ad-faf34a7bb0.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/brace-expansion-npm-1.1.11-fb95eb05ad-faf34a7bb0.zip
--------------------------------------------------------------------------------
/.yarn/cache/brace-expansion-npm-2.0.1-17aa2616f9-a61e7cd2e8.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/brace-expansion-npm-2.0.1-17aa2616f9-a61e7cd2e8.zip
--------------------------------------------------------------------------------
/.yarn/cache/browser-level-npm-1.0.1-f0600225ae-67fbc77ce8.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/browser-level-npm-1.0.1-f0600225ae-67fbc77ce8.zip
--------------------------------------------------------------------------------
/.yarn/cache/buffer-npm-6.0.3-cd90dfedfe-5ad23293d9.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/buffer-npm-6.0.3-cd90dfedfe-5ad23293d9.zip
--------------------------------------------------------------------------------
/.yarn/cache/busboy-npm-0.3.1-87ec0dae5a-d2bcb788c4.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/busboy-npm-0.3.1-87ec0dae5a-d2bcb788c4.zip
--------------------------------------------------------------------------------
/.yarn/cache/bytes-npm-3.1.2-28b8643004-e4bcd3948d.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/bytes-npm-3.1.2-28b8643004-e4bcd3948d.zip
--------------------------------------------------------------------------------
/.yarn/cache/cacache-npm-16.1.3-4e2088ed0d-d91409e6e5.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/cacache-npm-16.1.3-4e2088ed0d-d91409e6e5.zip
--------------------------------------------------------------------------------
/.yarn/cache/call-bind-npm-1.0.2-c957124861-f8e31de9d1.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/call-bind-npm-1.0.2-c957124861-f8e31de9d1.zip
--------------------------------------------------------------------------------
/.yarn/cache/camelcase-npm-5.3.1-5db8af62c5-e6effce26b.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/camelcase-npm-5.3.1-5db8af62c5-e6effce26b.zip
--------------------------------------------------------------------------------
/.yarn/cache/caseless-npm-0.12.0-e83bc5df83-b43bd4c440.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/caseless-npm-0.12.0-e83bc5df83-b43bd4c440.zip
--------------------------------------------------------------------------------
/.yarn/cache/catering-npm-2.1.1-b116dcdfef-205daefa69.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/catering-npm-2.1.1-b116dcdfef-205daefa69.zip
--------------------------------------------------------------------------------
/.yarn/cache/charenc-npm-0.0.2-aca0c2f207-81dcadbe57.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/charenc-npm-0.0.2-aca0c2f207-81dcadbe57.zip
--------------------------------------------------------------------------------
/.yarn/cache/chownr-npm-2.0.0-638f1c9c61-c57cf9dd07.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/chownr-npm-2.0.0-638f1c9c61-c57cf9dd07.zip
--------------------------------------------------------------------------------
/.yarn/cache/classic-level-npm-1.2.0-399f00877c-88ddd12f21.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/classic-level-npm-1.2.0-399f00877c-88ddd12f21.zip
--------------------------------------------------------------------------------
/.yarn/cache/clean-stack-npm-2.2.0-a8ce435a5c-2ac8cd2b2f.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/clean-stack-npm-2.2.0-a8ce435a5c-2ac8cd2b2f.zip
--------------------------------------------------------------------------------
/.yarn/cache/cliui-npm-6.0.0-488b2414c6-4fcfd26d29.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/cliui-npm-6.0.0-488b2414c6-4fcfd26d29.zip
--------------------------------------------------------------------------------
/.yarn/cache/cliui-npm-7.0.4-d6b8a9edb6-ce2e8f578a.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/cliui-npm-7.0.4-d6b8a9edb6-ce2e8f578a.zip
--------------------------------------------------------------------------------
/.yarn/cache/color-convert-npm-2.0.1-79730e935b-79e6bdb9fd.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/color-convert-npm-2.0.1-79730e935b-79e6bdb9fd.zip
--------------------------------------------------------------------------------
/.yarn/cache/color-name-npm-1.1.4-025792b0ea-b044585952.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/color-name-npm-1.1.4-025792b0ea-b044585952.zip
--------------------------------------------------------------------------------
/.yarn/cache/color-support-npm-1.1.3-3be5c53455-9b73568176.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/color-support-npm-1.1.3-3be5c53455-9b73568176.zip
--------------------------------------------------------------------------------
/.yarn/cache/combined-stream-npm-1.0.8-dc14d4a63a-49fa4aeb49.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/combined-stream-npm-1.0.8-dc14d4a63a-49fa4aeb49.zip
--------------------------------------------------------------------------------
/.yarn/cache/commander-npm-8.3.0-c0d18c66d5-0f82321821.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/commander-npm-8.3.0-c0d18c66d5-0f82321821.zip
--------------------------------------------------------------------------------
/.yarn/cache/concat-map-npm-0.0.1-85a921b7ee-902a9f5d89.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/concat-map-npm-0.0.1-85a921b7ee-902a9f5d89.zip
--------------------------------------------------------------------------------
/.yarn/cache/console-control-strings-npm-1.1.0-e3160e5275-8755d76787.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/console-control-strings-npm-1.1.0-e3160e5275-8755d76787.zip
--------------------------------------------------------------------------------
/.yarn/cache/content-disposition-npm-0.5.4-2d93678616-afb9d545e2.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/content-disposition-npm-0.5.4-2d93678616-afb9d545e2.zip
--------------------------------------------------------------------------------
/.yarn/cache/content-type-npm-1.0.4-3b1a5ca16b-3d93585fda.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/content-type-npm-1.0.4-3b1a5ca16b-3d93585fda.zip
--------------------------------------------------------------------------------
/.yarn/cache/cookie-npm-0.5.0-e2d58a161a-1f4bd2ca57.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/cookie-npm-0.5.0-e2d58a161a-1f4bd2ca57.zip
--------------------------------------------------------------------------------
/.yarn/cache/cookie-signature-npm-1.0.6-93f325f7f0-f4e1b0a98a.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/cookie-signature-npm-1.0.6-93f325f7f0-f4e1b0a98a.zip
--------------------------------------------------------------------------------
/.yarn/cache/core-util-is-npm-1.0.2-9fc2b94dc3-7a4c925b49.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/core-util-is-npm-1.0.2-9fc2b94dc3-7a4c925b49.zip
--------------------------------------------------------------------------------
/.yarn/cache/core-util-is-npm-1.0.3-ca74b76c90-9de8597363.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/core-util-is-npm-1.0.3-ca74b76c90-9de8597363.zip
--------------------------------------------------------------------------------
/.yarn/cache/create-require-npm-1.1.1-839884ca2e-a9a1503d43.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/create-require-npm-1.1.1-839884ca2e-a9a1503d43.zip
--------------------------------------------------------------------------------
/.yarn/cache/crypt-npm-0.0.2-033627d94f-baf4c7bbe0.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/crypt-npm-0.0.2-033627d94f-baf4c7bbe0.zip
--------------------------------------------------------------------------------
/.yarn/cache/dashdash-npm-1.14.1-be8f10a286-3634c24957.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/dashdash-npm-1.14.1-be8f10a286-3634c24957.zip
--------------------------------------------------------------------------------
/.yarn/cache/data-uri-to-buffer-npm-5.0.1-a40e5ac026-10958f89c0.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/data-uri-to-buffer-npm-5.0.1-a40e5ac026-10958f89c0.zip
--------------------------------------------------------------------------------
/.yarn/cache/debug-npm-2.6.9-7d4cb597dc-d2f51589ca.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/debug-npm-2.6.9-7d4cb597dc-d2f51589ca.zip
--------------------------------------------------------------------------------
/.yarn/cache/debug-npm-3.2.7-754e818c7a-b3d8c59407.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/debug-npm-3.2.7-754e818c7a-b3d8c59407.zip
--------------------------------------------------------------------------------
/.yarn/cache/debug-npm-4.3.4-4513954577-3dbad3f94e.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/debug-npm-4.3.4-4513954577-3dbad3f94e.zip
--------------------------------------------------------------------------------
/.yarn/cache/decamelize-npm-1.2.0-c5a2fdc622-ad8c51a7e7.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/decamelize-npm-1.2.0-c5a2fdc622-ad8c51a7e7.zip
--------------------------------------------------------------------------------
/.yarn/cache/define-properties-npm-1.2.0-3547cd0fd2-e60aee6a19.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/define-properties-npm-1.2.0-3547cd0fd2-e60aee6a19.zip
--------------------------------------------------------------------------------
/.yarn/cache/degenerator-npm-5.0.1-97c678cdaf-a64fa39cdf.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/degenerator-npm-5.0.1-97c678cdaf-a64fa39cdf.zip
--------------------------------------------------------------------------------
/.yarn/cache/delayed-stream-npm-1.0.0-c5a4c4cc02-46fe6e83e2.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/delayed-stream-npm-1.0.0-c5a4c4cc02-46fe6e83e2.zip
--------------------------------------------------------------------------------
/.yarn/cache/delegates-npm-1.0.0-9b1942d75f-a51744d9b5.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/delegates-npm-1.0.0-9b1942d75f-a51744d9b5.zip
--------------------------------------------------------------------------------
/.yarn/cache/depd-npm-2.0.0-b6c51a4b43-abbe19c768.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/depd-npm-2.0.0-b6c51a4b43-abbe19c768.zip
--------------------------------------------------------------------------------
/.yarn/cache/destroy-npm-1.2.0-6a511802e2-0acb300b74.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/destroy-npm-1.2.0-6a511802e2-0acb300b74.zip
--------------------------------------------------------------------------------
/.yarn/cache/dicer-npm-0.3.0-ef4dcd1bb9-9f61aea61f.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/dicer-npm-0.3.0-ef4dcd1bb9-9f61aea61f.zip
--------------------------------------------------------------------------------
/.yarn/cache/diff-npm-4.0.2-73133c7102-f2c09b0ce4.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/diff-npm-4.0.2-73133c7102-f2c09b0ce4.zip
--------------------------------------------------------------------------------
/.yarn/cache/dijkstrajs-npm-1.0.2-c58f4835d6-8cd822441a.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/dijkstrajs-npm-1.0.2-c58f4835d6-8cd822441a.zip
--------------------------------------------------------------------------------
/.yarn/cache/dotenv-npm-16.0.0-ef4a5ccded-664cebb51f.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/dotenv-npm-16.0.0-ef4a5ccded-664cebb51f.zip
--------------------------------------------------------------------------------
/.yarn/cache/ecc-jsbn-npm-0.1.2-85b7a7be89-22fef4b620.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/ecc-jsbn-npm-0.1.2-85b7a7be89-22fef4b620.zip
--------------------------------------------------------------------------------
/.yarn/cache/ee-first-npm-1.1.1-33f8535b39-1b4cac778d.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/ee-first-npm-1.1.1-33f8535b39-1b4cac778d.zip
--------------------------------------------------------------------------------
/.yarn/cache/emoji-regex-npm-8.0.0-213764015c-d4c5c39d5a.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/emoji-regex-npm-8.0.0-213764015c-d4c5c39d5a.zip
--------------------------------------------------------------------------------
/.yarn/cache/encode-utf8-npm-1.0.3-8f92a23782-550224bf2a.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/encode-utf8-npm-1.0.3-8f92a23782-550224bf2a.zip
--------------------------------------------------------------------------------
/.yarn/cache/encodeurl-npm-1.0.2-f8c8454c41-e50e3d508c.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/encodeurl-npm-1.0.2-f8c8454c41-e50e3d508c.zip
--------------------------------------------------------------------------------
/.yarn/cache/encoding-npm-0.1.13-82a1837d30-bb98632f8f.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/encoding-npm-0.1.13-82a1837d30-bb98632f8f.zip
--------------------------------------------------------------------------------
/.yarn/cache/end-of-stream-npm-1.4.4-497fc6dee1-530a5a5a1e.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/end-of-stream-npm-1.4.4-497fc6dee1-530a5a5a1e.zip
--------------------------------------------------------------------------------
/.yarn/cache/env-paths-npm-2.2.1-7c7577428c-65b5df55a8.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/env-paths-npm-2.2.1-7c7577428c-65b5df55a8.zip
--------------------------------------------------------------------------------
/.yarn/cache/err-code-npm-2.0.3-082e0ff9a7-8b7b1be20d.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/err-code-npm-2.0.3-082e0ff9a7-8b7b1be20d.zip
--------------------------------------------------------------------------------
/.yarn/cache/es-abstract-npm-1.21.2-f4ebace1ab-037f55ee5e.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/es-abstract-npm-1.21.2-f4ebace1ab-037f55ee5e.zip
--------------------------------------------------------------------------------
/.yarn/cache/es-set-tostringtag-npm-2.0.1-c87b5de872-ec416a1294.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/es-set-tostringtag-npm-2.0.1-c87b5de872-ec416a1294.zip
--------------------------------------------------------------------------------
/.yarn/cache/es-shim-unscopables-npm-1.0.0-06186593f1-83e95cadbb.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/es-shim-unscopables-npm-1.0.0-06186593f1-83e95cadbb.zip
--------------------------------------------------------------------------------
/.yarn/cache/es-to-primitive-npm-1.2.1-b7a7eac6c5-4ead6671a2.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/es-to-primitive-npm-1.2.1-b7a7eac6c5-4ead6671a2.zip
--------------------------------------------------------------------------------
/.yarn/cache/escalade-npm-3.1.1-e02da076aa-a3e2a99f07.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/escalade-npm-3.1.1-e02da076aa-a3e2a99f07.zip
--------------------------------------------------------------------------------
/.yarn/cache/escape-html-npm-1.0.3-376c22ee74-6213ca9ae0.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/escape-html-npm-1.0.3-376c22ee74-6213ca9ae0.zip
--------------------------------------------------------------------------------
/.yarn/cache/escodegen-npm-2.1.0-e0bf940745-096696407e.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/escodegen-npm-2.1.0-e0bf940745-096696407e.zip
--------------------------------------------------------------------------------
/.yarn/cache/esprima-npm-4.0.1-1084e98778-b45bc805a6.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/esprima-npm-4.0.1-1084e98778-b45bc805a6.zip
--------------------------------------------------------------------------------
/.yarn/cache/estraverse-npm-5.3.0-03284f8f63-072780882d.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/estraverse-npm-5.3.0-03284f8f63-072780882d.zip
--------------------------------------------------------------------------------
/.yarn/cache/esutils-npm-2.0.3-f865beafd5-22b5b08f74.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/esutils-npm-2.0.3-f865beafd5-22b5b08f74.zip
--------------------------------------------------------------------------------
/.yarn/cache/etag-npm-1.8.1-54a3b989d9-571aeb3dbe.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/etag-npm-1.8.1-54a3b989d9-571aeb3dbe.zip
--------------------------------------------------------------------------------
/.yarn/cache/eventemitter3-npm-3.1.2-a68b03e1ea-81e4e82b84.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/eventemitter3-npm-3.1.2-a68b03e1ea-81e4e82b84.zip
--------------------------------------------------------------------------------
/.yarn/cache/express-fileupload-npm-1.3.1-5fb95eb44c-ebe810b4b1.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/express-fileupload-npm-1.3.1-5fb95eb44c-ebe810b4b1.zip
--------------------------------------------------------------------------------
/.yarn/cache/express-npm-4.18.1-842e583ae1-c3d44c92e4.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/express-npm-4.18.1-842e583ae1-c3d44c92e4.zip
--------------------------------------------------------------------------------
/.yarn/cache/extend-npm-3.0.2-e1ca07ac54-a50a8309ca.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/extend-npm-3.0.2-e1ca07ac54-a50a8309ca.zip
--------------------------------------------------------------------------------
/.yarn/cache/extsprintf-npm-1.3.0-61a92b324c-cee7a4a1e3.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/extsprintf-npm-1.3.0-61a92b324c-cee7a4a1e3.zip
--------------------------------------------------------------------------------
/.yarn/cache/extsprintf-npm-1.4.1-140b2f27ab-a2f29b2419.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/extsprintf-npm-1.4.1-140b2f27ab-a2f29b2419.zip
--------------------------------------------------------------------------------
/.yarn/cache/fast-deep-equal-npm-3.1.3-790edcfcf5-e21a9d8d84.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/fast-deep-equal-npm-3.1.3-790edcfcf5-e21a9d8d84.zip
--------------------------------------------------------------------------------
/.yarn/cache/fast-json-stable-stringify-npm-2.1.0-02e8905fda-b191531e36.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/fast-json-stable-stringify-npm-2.1.0-02e8905fda-b191531e36.zip
--------------------------------------------------------------------------------
/.yarn/cache/file-type-npm-16.5.3-9e176829d5-38a4443d0f.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/file-type-npm-16.5.3-9e176829d5-38a4443d0f.zip
--------------------------------------------------------------------------------
/.yarn/cache/file-type-npm-3.9.0-fec2c20533-1db70b2485.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/file-type-npm-3.9.0-fec2c20533-1db70b2485.zip
--------------------------------------------------------------------------------
/.yarn/cache/finalhandler-npm-1.2.0-593d001463-92effbfd32.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/finalhandler-npm-1.2.0-593d001463-92effbfd32.zip
--------------------------------------------------------------------------------
/.yarn/cache/find-up-npm-4.1.0-c3ccf8d855-4c172680e8.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/find-up-npm-4.1.0-c3ccf8d855-4c172680e8.zip
--------------------------------------------------------------------------------
/.yarn/cache/follow-redirects-npm-1.15.2-1ec1dd82be-faa66059b6.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/follow-redirects-npm-1.15.2-1ec1dd82be-faa66059b6.zip
--------------------------------------------------------------------------------
/.yarn/cache/for-each-npm-0.3.3-0010ca8cdd-6c48ff2bc6.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/for-each-npm-0.3.3-0010ca8cdd-6c48ff2bc6.zip
--------------------------------------------------------------------------------
/.yarn/cache/forever-agent-npm-0.6.1-01dae53bf9-766ae6e220.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/forever-agent-npm-0.6.1-01dae53bf9-766ae6e220.zip
--------------------------------------------------------------------------------
/.yarn/cache/form-data-npm-2.3.3-c016cc11c0-10c1780fa1.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/form-data-npm-2.3.3-c016cc11c0-10c1780fa1.zip
--------------------------------------------------------------------------------
/.yarn/cache/form-data-npm-2.5.1-47256351b5-5134ada56c.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/form-data-npm-2.5.1-47256351b5-5134ada56c.zip
--------------------------------------------------------------------------------
/.yarn/cache/form-data-npm-4.0.0-916facec2d-01135bf867.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/form-data-npm-4.0.0-916facec2d-01135bf867.zip
--------------------------------------------------------------------------------
/.yarn/cache/forwarded-npm-0.2.0-6473dabe35-fd27e2394d.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/forwarded-npm-0.2.0-6473dabe35-fd27e2394d.zip
--------------------------------------------------------------------------------
/.yarn/cache/fresh-npm-0.5.2-ad2bb4c0a2-13ea8b08f9.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/fresh-npm-0.5.2-ad2bb4c0a2-13ea8b08f9.zip
--------------------------------------------------------------------------------
/.yarn/cache/fs-extra-npm-8.1.0-197473387f-bf44f0e6ce.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/fs-extra-npm-8.1.0-197473387f-bf44f0e6ce.zip
--------------------------------------------------------------------------------
/.yarn/cache/fs-minipass-npm-2.1.0-501ef87306-1b8d128dae.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/fs-minipass-npm-2.1.0-501ef87306-1b8d128dae.zip
--------------------------------------------------------------------------------
/.yarn/cache/fs.realpath-npm-1.0.0-c8f05d8126-99ddea01a7.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/fs.realpath-npm-1.0.0-c8f05d8126-99ddea01a7.zip
--------------------------------------------------------------------------------
/.yarn/cache/function-bind-npm-1.1.1-b56b322ae9-b32fbaebb3.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/function-bind-npm-1.1.1-b56b322ae9-b32fbaebb3.zip
--------------------------------------------------------------------------------
/.yarn/cache/function.prototype.name-npm-1.1.5-e776a642bb-acd21d733a.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/function.prototype.name-npm-1.1.5-e776a642bb-acd21d733a.zip
--------------------------------------------------------------------------------
/.yarn/cache/functions-have-names-npm-1.2.3-e5cf1e2208-c3f1f5ba20.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/functions-have-names-npm-1.2.3-e5cf1e2208-c3f1f5ba20.zip
--------------------------------------------------------------------------------
/.yarn/cache/gauge-npm-4.0.4-8f878385e9-788b6bfe52.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/gauge-npm-4.0.4-8f878385e9-788b6bfe52.zip
--------------------------------------------------------------------------------
/.yarn/cache/get-caller-file-npm-2.0.5-80e8a86305-b9769a836d.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/get-caller-file-npm-2.0.5-80e8a86305-b9769a836d.zip
--------------------------------------------------------------------------------
/.yarn/cache/get-intrinsic-npm-1.1.1-7e868745da-a9fe2ca8fa.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/get-intrinsic-npm-1.1.1-7e868745da-a9fe2ca8fa.zip
--------------------------------------------------------------------------------
/.yarn/cache/get-intrinsic-npm-1.2.0-eb08ea9b1d-78fc0487b7.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/get-intrinsic-npm-1.2.0-eb08ea9b1d-78fc0487b7.zip
--------------------------------------------------------------------------------
/.yarn/cache/get-symbol-description-npm-1.0.0-9c95a4bc1f-9ceff8fe96.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/get-symbol-description-npm-1.0.0-9c95a4bc1f-9ceff8fe96.zip
--------------------------------------------------------------------------------
/.yarn/cache/get-uri-npm-6.0.1-d4f0bb7365-a8aec70e1c.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/get-uri-npm-6.0.1-d4f0bb7365-a8aec70e1c.zip
--------------------------------------------------------------------------------
/.yarn/cache/getpass-npm-0.1.7-519164a3be-ab18d55661.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/getpass-npm-0.1.7-519164a3be-ab18d55661.zip
--------------------------------------------------------------------------------
/.yarn/cache/glob-npm-7.2.3-2d866d17a5-29452e97b3.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/glob-npm-7.2.3-2d866d17a5-29452e97b3.zip
--------------------------------------------------------------------------------
/.yarn/cache/glob-npm-8.1.0-65f64af8b1-92fbea3221.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/glob-npm-8.1.0-65f64af8b1-92fbea3221.zip
--------------------------------------------------------------------------------
/.yarn/cache/globalthis-npm-1.0.3-96cd56020d-fbd7d760dc.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/globalthis-npm-1.0.3-96cd56020d-fbd7d760dc.zip
--------------------------------------------------------------------------------
/.yarn/cache/gopd-npm-1.0.1-10c1d0b534-a5ccfb8806.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/gopd-npm-1.0.1-10c1d0b534-a5ccfb8806.zip
--------------------------------------------------------------------------------
/.yarn/cache/graceful-fs-npm-4.2.10-79c70989ca-3f109d70ae.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/graceful-fs-npm-4.2.10-79c70989ca-3f109d70ae.zip
--------------------------------------------------------------------------------
/.yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-ac85f94da9.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-ac85f94da9.zip
--------------------------------------------------------------------------------
/.yarn/cache/har-schema-npm-2.0.0-3a318c0ca5-d8946348f3.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/har-schema-npm-2.0.0-3a318c0ca5-d8946348f3.zip
--------------------------------------------------------------------------------
/.yarn/cache/har-validator-npm-5.1.5-bd9ac162f5-b998a7269c.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/har-validator-npm-5.1.5-bd9ac162f5-b998a7269c.zip
--------------------------------------------------------------------------------
/.yarn/cache/has-bigints-npm-1.0.2-52732e614d-390e31e7be.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/has-bigints-npm-1.0.2-52732e614d-390e31e7be.zip
--------------------------------------------------------------------------------
/.yarn/cache/has-npm-1.0.3-b7f00631c1-b9ad53d53b.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/has-npm-1.0.3-b7f00631c1-b9ad53d53b.zip
--------------------------------------------------------------------------------
/.yarn/cache/has-property-descriptors-npm-1.0.0-56289b918d-a6d3f0a266.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/has-property-descriptors-npm-1.0.0-56289b918d-a6d3f0a266.zip
--------------------------------------------------------------------------------
/.yarn/cache/has-proto-npm-1.0.1-631ea9d820-febc5b5b53.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/has-proto-npm-1.0.1-631ea9d820-febc5b5b53.zip
--------------------------------------------------------------------------------
/.yarn/cache/has-symbols-npm-1.0.3-1986bff2c4-a054c40c63.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/has-symbols-npm-1.0.3-1986bff2c4-a054c40c63.zip
--------------------------------------------------------------------------------
/.yarn/cache/has-tostringtag-npm-1.0.0-b1fcf3ab55-cc12eb28cb.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/has-tostringtag-npm-1.0.0-b1fcf3ab55-cc12eb28cb.zip
--------------------------------------------------------------------------------
/.yarn/cache/has-unicode-npm-2.0.1-893adb4747-1eab07a743.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/has-unicode-npm-2.0.1-893adb4747-1eab07a743.zip
--------------------------------------------------------------------------------
/.yarn/cache/http-cache-semantics-npm-4.1.1-1120131375-83ac0bc60b.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/http-cache-semantics-npm-4.1.1-1120131375-83ac0bc60b.zip
--------------------------------------------------------------------------------
/.yarn/cache/http-errors-npm-2.0.0-3f1c503428-9b0a378266.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/http-errors-npm-2.0.0-3f1c503428-9b0a378266.zip
--------------------------------------------------------------------------------
/.yarn/cache/http-proxy-agent-npm-5.0.0-7f1f121b83-e2ee1ff165.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/http-proxy-agent-npm-5.0.0-7f1f121b83-e2ee1ff165.zip
--------------------------------------------------------------------------------
/.yarn/cache/http-proxy-agent-npm-7.0.0-106a57cc8c-48d4fac997.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/http-proxy-agent-npm-7.0.0-106a57cc8c-48d4fac997.zip
--------------------------------------------------------------------------------
/.yarn/cache/http-signature-npm-1.2.0-ee92426f34-3324598712.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/http-signature-npm-1.2.0-ee92426f34-3324598712.zip
--------------------------------------------------------------------------------
/.yarn/cache/https-proxy-agent-npm-5.0.1-42d65f358e-571fccdf38.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/https-proxy-agent-npm-5.0.1-42d65f358e-571fccdf38.zip
--------------------------------------------------------------------------------
/.yarn/cache/https-proxy-agent-npm-7.0.1-a2d5d93ee0-2d765c3186.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/https-proxy-agent-npm-7.0.1-a2d5d93ee0-2d765c3186.zip
--------------------------------------------------------------------------------
/.yarn/cache/humanize-ms-npm-1.2.1-e942bd7329-9c7a74a282.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/humanize-ms-npm-1.2.1-e942bd7329-9c7a74a282.zip
--------------------------------------------------------------------------------
/.yarn/cache/iconv-lite-npm-0.4.24-c5c4ac6695-bd9f120f5a.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/iconv-lite-npm-0.4.24-c5c4ac6695-bd9f120f5a.zip
--------------------------------------------------------------------------------
/.yarn/cache/iconv-lite-npm-0.6.2-13e85ec7dc-03e03eb9fc.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/iconv-lite-npm-0.6.2-13e85ec7dc-03e03eb9fc.zip
--------------------------------------------------------------------------------
/.yarn/cache/iconv-lite-npm-0.6.3-24b8aae27e-3f60d47a5c.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/iconv-lite-npm-0.6.3-24b8aae27e-3f60d47a5c.zip
--------------------------------------------------------------------------------
/.yarn/cache/ieee754-npm-1.2.1-fb63b3caeb-5144c0c981.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/ieee754-npm-1.2.1-fb63b3caeb-5144c0c981.zip
--------------------------------------------------------------------------------
/.yarn/cache/imurmurhash-npm-0.1.4-610c5068a0-7cae75c8cd.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/imurmurhash-npm-0.1.4-610c5068a0-7cae75c8cd.zip
--------------------------------------------------------------------------------
/.yarn/cache/indent-string-npm-4.0.0-7b717435b2-824cfb9929.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/indent-string-npm-4.0.0-7b717435b2-824cfb9929.zip
--------------------------------------------------------------------------------
/.yarn/cache/infer-owner-npm-1.0.4-685ac3d2af-181e732764.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/infer-owner-npm-1.0.4-685ac3d2af-181e732764.zip
--------------------------------------------------------------------------------
/.yarn/cache/inflight-npm-1.0.6-ccedb4b908-f4f76aa072.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/inflight-npm-1.0.6-ccedb4b908-f4f76aa072.zip
--------------------------------------------------------------------------------
/.yarn/cache/inherits-npm-2.0.4-c66b3957a0-4a48a73384.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/inherits-npm-2.0.4-c66b3957a0-4a48a73384.zip
--------------------------------------------------------------------------------
/.yarn/cache/internal-slot-npm-1.0.5-a2241f3e66-97e84046bf.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/internal-slot-npm-1.0.5-a2241f3e66-97e84046bf.zip
--------------------------------------------------------------------------------
/.yarn/cache/ip-npm-1.1.8-abea558b72-a2ade53eb3.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/ip-npm-1.1.8-abea558b72-a2ade53eb3.zip
--------------------------------------------------------------------------------
/.yarn/cache/ip-npm-2.0.0-204facb3cc-cfcfac6b87.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/ip-npm-2.0.0-204facb3cc-cfcfac6b87.zip
--------------------------------------------------------------------------------
/.yarn/cache/ipaddr.js-npm-1.9.1-19ae7878b4-f88d382598.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/ipaddr.js-npm-1.9.1-19ae7878b4-f88d382598.zip
--------------------------------------------------------------------------------
/.yarn/cache/is-array-buffer-npm-3.0.2-0dec897785-dcac9dda66.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/is-array-buffer-npm-3.0.2-0dec897785-dcac9dda66.zip
--------------------------------------------------------------------------------
/.yarn/cache/is-bigint-npm-1.0.4-31c2eecbc9-c56edfe09b.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/is-bigint-npm-1.0.4-31c2eecbc9-c56edfe09b.zip
--------------------------------------------------------------------------------
/.yarn/cache/is-boolean-object-npm-1.1.2-ecbd575e6a-c03b23dbaa.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/is-boolean-object-npm-1.1.2-ecbd575e6a-c03b23dbaa.zip
--------------------------------------------------------------------------------
/.yarn/cache/is-buffer-npm-1.1.6-08199d9ccc-4a186d995d.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/is-buffer-npm-1.1.6-08199d9ccc-4a186d995d.zip
--------------------------------------------------------------------------------
/.yarn/cache/is-buffer-npm-2.0.5-17e563f277-764c9ad8b5.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/is-buffer-npm-2.0.5-17e563f277-764c9ad8b5.zip
--------------------------------------------------------------------------------
/.yarn/cache/is-callable-npm-1.2.7-808a303e61-61fd57d03b.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/is-callable-npm-1.2.7-808a303e61-61fd57d03b.zip
--------------------------------------------------------------------------------
/.yarn/cache/is-date-object-npm-1.0.5-88f3d08b5e-baa9077cdf.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/is-date-object-npm-1.0.5-88f3d08b5e-baa9077cdf.zip
--------------------------------------------------------------------------------
/.yarn/cache/is-fullwidth-code-point-npm-3.0.0-1ecf4ebee5-44a30c2945.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/is-fullwidth-code-point-npm-3.0.0-1ecf4ebee5-44a30c2945.zip
--------------------------------------------------------------------------------
/.yarn/cache/is-lambda-npm-1.0.1-7ab55bc8a8-93a32f0194.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/is-lambda-npm-1.0.1-7ab55bc8a8-93a32f0194.zip
--------------------------------------------------------------------------------
/.yarn/cache/is-negative-zero-npm-2.0.2-0adac91f15-f3232194c4.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/is-negative-zero-npm-2.0.2-0adac91f15-f3232194c4.zip
--------------------------------------------------------------------------------
/.yarn/cache/is-number-object-npm-1.0.7-539d0e274d-d1e8d01bb0.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/is-number-object-npm-1.0.7-539d0e274d-d1e8d01bb0.zip
--------------------------------------------------------------------------------
/.yarn/cache/is-regex-npm-1.1.4-cca193ef11-362399b335.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/is-regex-npm-1.1.4-cca193ef11-362399b335.zip
--------------------------------------------------------------------------------
/.yarn/cache/is-shared-array-buffer-npm-1.0.2-32e4181fcd-9508929cf1.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/is-shared-array-buffer-npm-1.0.2-32e4181fcd-9508929cf1.zip
--------------------------------------------------------------------------------
/.yarn/cache/is-string-npm-1.0.7-9f7066daed-323b3d0462.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/is-string-npm-1.0.7-9f7066daed-323b3d0462.zip
--------------------------------------------------------------------------------
/.yarn/cache/is-symbol-npm-1.0.4-eb9baac703-92805812ef.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/is-symbol-npm-1.0.4-eb9baac703-92805812ef.zip
--------------------------------------------------------------------------------
/.yarn/cache/is-typed-array-npm-1.1.10-fe4ef83cdc-aac6ecb59d.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/is-typed-array-npm-1.1.10-fe4ef83cdc-aac6ecb59d.zip
--------------------------------------------------------------------------------
/.yarn/cache/is-typedarray-npm-1.0.0-bbd99de5b6-3508c6cd0a.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/is-typedarray-npm-1.0.0-bbd99de5b6-3508c6cd0a.zip
--------------------------------------------------------------------------------
/.yarn/cache/is-weakref-npm-1.0.2-ff80e8c314-95bd9a57cd.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/is-weakref-npm-1.0.2-ff80e8c314-95bd9a57cd.zip
--------------------------------------------------------------------------------
/.yarn/cache/isarray-npm-1.0.0-db4f547720-f032df8e02.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/isarray-npm-1.0.0-db4f547720-f032df8e02.zip
--------------------------------------------------------------------------------
/.yarn/cache/isexe-npm-2.0.0-b58870bd2e-26bf6c5480.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/isexe-npm-2.0.0-b58870bd2e-26bf6c5480.zip
--------------------------------------------------------------------------------
/.yarn/cache/isstream-npm-0.1.2-8581c75385-1eb2fe63a7.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/isstream-npm-0.1.2-8581c75385-1eb2fe63a7.zip
--------------------------------------------------------------------------------
/.yarn/cache/jsbn-npm-0.1.1-0eb7132404-e5ff29c1b8.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/jsbn-npm-0.1.1-0eb7132404-e5ff29c1b8.zip
--------------------------------------------------------------------------------
/.yarn/cache/json-schema-npm-0.4.0-e776313070-66389434c3.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/json-schema-npm-0.4.0-e776313070-66389434c3.zip
--------------------------------------------------------------------------------
/.yarn/cache/json-schema-traverse-npm-0.4.1-4759091693-7486074d3b.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/json-schema-traverse-npm-0.4.1-4759091693-7486074d3b.zip
--------------------------------------------------------------------------------
/.yarn/cache/json-stringify-safe-npm-5.0.1-064ddd6ab4-48ec0adad5.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/json-stringify-safe-npm-5.0.1-064ddd6ab4-48ec0adad5.zip
--------------------------------------------------------------------------------
/.yarn/cache/jsonfile-npm-4.0.0-10ce3aea15-6447d6224f.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/jsonfile-npm-4.0.0-10ce3aea15-6447d6224f.zip
--------------------------------------------------------------------------------
/.yarn/cache/jsprim-npm-1.4.2-1ae6cade9a-2ad1b9fdcc.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/jsprim-npm-1.4.2-1ae6cade9a-2ad1b9fdcc.zip
--------------------------------------------------------------------------------
/.yarn/cache/kleur-npm-3.0.3-f6f53649a4-df82cd1e17.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/kleur-npm-3.0.3-f6f53649a4-df82cd1e17.zip
--------------------------------------------------------------------------------
/.yarn/cache/level-npm-8.0.0-c35f5fe17a-13eb25bd71.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/level-npm-8.0.0-c35f5fe17a-13eb25bd71.zip
--------------------------------------------------------------------------------
/.yarn/cache/level-supports-npm-4.0.1-78eaf0b919-d4552b42bb.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/level-supports-npm-4.0.1-78eaf0b919-d4552b42bb.zip
--------------------------------------------------------------------------------
/.yarn/cache/level-transcoder-npm-1.0.1-8821d7bed1-304f08d802.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/level-transcoder-npm-1.0.1-8821d7bed1-304f08d802.zip
--------------------------------------------------------------------------------
/.yarn/cache/locate-path-npm-5.0.0-46580c43e4-83e51725e6.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/locate-path-npm-5.0.0-46580c43e4-83e51725e6.zip
--------------------------------------------------------------------------------
/.yarn/cache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip
--------------------------------------------------------------------------------
/.yarn/cache/lodash.merge-npm-4.6.2-77cb4416bf-ad580b4bdb.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/lodash.merge-npm-4.6.2-77cb4416bf-ad580b4bdb.zip
--------------------------------------------------------------------------------
/.yarn/cache/lru-cache-npm-6.0.0-b4c8668fe1-f97f499f89.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/lru-cache-npm-6.0.0-b4c8668fe1-f97f499f89.zip
--------------------------------------------------------------------------------
/.yarn/cache/lru-cache-npm-7.18.3-e68be5b11c-e550d77238.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/lru-cache-npm-7.18.3-e68be5b11c-e550d77238.zip
--------------------------------------------------------------------------------
/.yarn/cache/make-error-npm-1.3.6-ccb85d9458-b86e5e0e25.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/make-error-npm-1.3.6-ccb85d9458-b86e5e0e25.zip
--------------------------------------------------------------------------------
/.yarn/cache/make-fetch-happen-npm-10.2.1-f1cc7cd2df-2332eb9a8e.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/make-fetch-happen-npm-10.2.1-f1cc7cd2df-2332eb9a8e.zip
--------------------------------------------------------------------------------
/.yarn/cache/md5-npm-2.3.0-86c49d3915-a63cacf401.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/md5-npm-2.3.0-86c49d3915-a63cacf401.zip
--------------------------------------------------------------------------------
/.yarn/cache/media-typer-npm-0.3.0-8674f8f0f5-af1b38516c.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/media-typer-npm-0.3.0-8674f8f0f5-af1b38516c.zip
--------------------------------------------------------------------------------
/.yarn/cache/media-typer-npm-1.1.0-eccc8b846d-a58dd60804.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/media-typer-npm-1.1.0-eccc8b846d-a58dd60804.zip
--------------------------------------------------------------------------------
/.yarn/cache/merge-descriptors-npm-1.0.1-615287aaa8-5abc259d2a.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/merge-descriptors-npm-1.0.1-615287aaa8-5abc259d2a.zip
--------------------------------------------------------------------------------
/.yarn/cache/metaflac-js2-npm-1.0.8-4f08399053-3aafe4490c.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/metaflac-js2-npm-1.0.8-4f08399053-3aafe4490c.zip
--------------------------------------------------------------------------------
/.yarn/cache/methods-npm-1.1.2-92f6fdb39b-0917ff4041.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/methods-npm-1.1.2-92f6fdb39b-0917ff4041.zip
--------------------------------------------------------------------------------
/.yarn/cache/mime-db-npm-1.52.0-b5371d6fd2-0d99a03585.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/mime-db-npm-1.52.0-b5371d6fd2-0d99a03585.zip
--------------------------------------------------------------------------------
/.yarn/cache/mime-npm-1.6.0-60ae95038a-fef25e3926.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/mime-npm-1.6.0-60ae95038a-fef25e3926.zip
--------------------------------------------------------------------------------
/.yarn/cache/mime-types-npm-2.1.35-dd9ea9f3e2-89a5b7f1de.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/mime-types-npm-2.1.35-dd9ea9f3e2-89a5b7f1de.zip
--------------------------------------------------------------------------------
/.yarn/cache/minimatch-npm-3.1.2-9405269906-c154e56640.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/minimatch-npm-3.1.2-9405269906-c154e56640.zip
--------------------------------------------------------------------------------
/.yarn/cache/minimatch-npm-5.1.6-1e71429f4c-7564208ef8.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/minimatch-npm-5.1.6-1e71429f4c-7564208ef8.zip
--------------------------------------------------------------------------------
/.yarn/cache/minipass-collect-npm-1.0.2-3b4676eab5-14df761028.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/minipass-collect-npm-1.0.2-3b4676eab5-14df761028.zip
--------------------------------------------------------------------------------
/.yarn/cache/minipass-fetch-npm-2.1.2-9b21a5c930-3f216be791.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/minipass-fetch-npm-2.1.2-9b21a5c930-3f216be791.zip
--------------------------------------------------------------------------------
/.yarn/cache/minipass-flush-npm-1.0.5-efe79d9826-56269a0b22.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/minipass-flush-npm-1.0.5-efe79d9826-56269a0b22.zip
--------------------------------------------------------------------------------
/.yarn/cache/minipass-npm-3.3.6-b8d93a945b-a30d083c80.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/minipass-npm-3.3.6-b8d93a945b-a30d083c80.zip
--------------------------------------------------------------------------------
/.yarn/cache/minipass-npm-4.2.5-25860eb433-4f9c19af23.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/minipass-npm-4.2.5-25860eb433-4f9c19af23.zip
--------------------------------------------------------------------------------
/.yarn/cache/minipass-pipeline-npm-1.2.4-5924cb077f-b14240dac0.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/minipass-pipeline-npm-1.2.4-5924cb077f-b14240dac0.zip
--------------------------------------------------------------------------------
/.yarn/cache/minipass-sized-npm-1.0.3-306d86f432-79076749fc.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/minipass-sized-npm-1.0.3-306d86f432-79076749fc.zip
--------------------------------------------------------------------------------
/.yarn/cache/minizlib-npm-2.1.2-ea89cd0cfb-f1fdeac0b0.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/minizlib-npm-2.1.2-ea89cd0cfb-f1fdeac0b0.zip
--------------------------------------------------------------------------------
/.yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-a96865108c.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-a96865108c.zip
--------------------------------------------------------------------------------
/.yarn/cache/module-error-npm-1.0.2-4f8221ee3c-5d653e35bd.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/module-error-npm-1.0.2-4f8221ee3c-5d653e35bd.zip
--------------------------------------------------------------------------------
/.yarn/cache/ms-npm-2.0.0-9e1101a471-0e6a22b8b7.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/ms-npm-2.0.0-9e1101a471-0e6a22b8b7.zip
--------------------------------------------------------------------------------
/.yarn/cache/ms-npm-2.1.2-ec0c1512ff-673cdb2c31.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/ms-npm-2.1.2-ec0c1512ff-673cdb2c31.zip
--------------------------------------------------------------------------------
/.yarn/cache/ms-npm-2.1.3-81ff3cfac1-aa92de6080.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/ms-npm-2.1.3-81ff3cfac1-aa92de6080.zip
--------------------------------------------------------------------------------
/.yarn/cache/music-metadata-npm-7.12.3-6f16defdb6-027667791a.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/music-metadata-npm-7.12.3-6f16defdb6-027667791a.zip
--------------------------------------------------------------------------------
/.yarn/cache/napi-macros-npm-2.0.0-f996ef3cad-3038481938.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/napi-macros-npm-2.0.0-f996ef3cad-3038481938.zip
--------------------------------------------------------------------------------
/.yarn/cache/needle-npm-2.9.1-f40e591726-746ae3a378.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/needle-npm-2.9.1-f40e591726-746ae3a378.zip
--------------------------------------------------------------------------------
/.yarn/cache/negotiator-npm-0.6.3-9d50e36171-b8ffeb1e26.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/negotiator-npm-0.6.3-9d50e36171-b8ffeb1e26.zip
--------------------------------------------------------------------------------
/.yarn/cache/netmask-npm-2.0.2-2299510a4d-c65cb8d3f7.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/netmask-npm-2.0.2-2299510a4d-c65cb8d3f7.zip
--------------------------------------------------------------------------------
/.yarn/cache/node-gyp-build-npm-4.6.0-5434aac3e5-25d78c5ef1.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/node-gyp-build-npm-4.6.0-5434aac3e5-25d78c5ef1.zip
--------------------------------------------------------------------------------
/.yarn/cache/node-gyp-npm-9.3.1-43540bab9c-b860e9976f.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/node-gyp-npm-9.3.1-43540bab9c-b860e9976f.zip
--------------------------------------------------------------------------------
/.yarn/cache/node-id3-npm-0.2.3-a83fba2d11-457e5daf11.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/node-id3-npm-0.2.3-a83fba2d11-457e5daf11.zip
--------------------------------------------------------------------------------
/.yarn/cache/node-telegram-bot-api-npm-0.61.0-57fe1be059-f3939a3411.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/node-telegram-bot-api-npm-0.61.0-57fe1be059-f3939a3411.zip
--------------------------------------------------------------------------------
/.yarn/cache/nopt-npm-6.0.0-5ea8050815-82149371f8.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/nopt-npm-6.0.0-5ea8050815-82149371f8.zip
--------------------------------------------------------------------------------
/.yarn/cache/npmlog-npm-6.0.2-e0e69455c7-ae238cd264.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/npmlog-npm-6.0.2-e0e69455c7-ae238cd264.zip
--------------------------------------------------------------------------------
/.yarn/cache/oauth-sign-npm-0.9.0-7aa9422221-8f5497a127.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/oauth-sign-npm-0.9.0-7aa9422221-8f5497a127.zip
--------------------------------------------------------------------------------
/.yarn/cache/object-inspect-npm-1.12.0-d064fa559a-2b36d4001a.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/object-inspect-npm-1.12.0-d064fa559a-2b36d4001a.zip
--------------------------------------------------------------------------------
/.yarn/cache/object-inspect-npm-1.12.3-1e7d20f5ff-dabfd824d9.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/object-inspect-npm-1.12.3-1e7d20f5ff-dabfd824d9.zip
--------------------------------------------------------------------------------
/.yarn/cache/object-keys-npm-1.1.1-1bf2f1be93-b363c5e764.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/object-keys-npm-1.1.1-1bf2f1be93-b363c5e764.zip
--------------------------------------------------------------------------------
/.yarn/cache/object.assign-npm-4.1.4-fb3deb1c3a-76cab513a5.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/object.assign-npm-4.1.4-fb3deb1c3a-76cab513a5.zip
--------------------------------------------------------------------------------
/.yarn/cache/on-finished-npm-2.4.1-907af70f88-d20929a25e.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/on-finished-npm-2.4.1-907af70f88-d20929a25e.zip
--------------------------------------------------------------------------------
/.yarn/cache/once-npm-1.4.0-ccf03ef07a-cd0a885013.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/once-npm-1.4.0-ccf03ef07a-cd0a885013.zip
--------------------------------------------------------------------------------
/.yarn/cache/p-limit-npm-2.3.0-94a0310039-84ff17f1a3.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/p-limit-npm-2.3.0-94a0310039-84ff17f1a3.zip
--------------------------------------------------------------------------------
/.yarn/cache/p-locate-npm-4.1.0-eec6872537-513bd14a45.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/p-locate-npm-4.1.0-eec6872537-513bd14a45.zip
--------------------------------------------------------------------------------
/.yarn/cache/p-map-npm-4.0.0-4677ae07c7-cb0ab21ec0.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/p-map-npm-4.0.0-4677ae07c7-cb0ab21ec0.zip
--------------------------------------------------------------------------------
/.yarn/cache/p-try-npm-2.2.0-e0390dbaf8-f8a8e9a769.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/p-try-npm-2.2.0-e0390dbaf8-f8a8e9a769.zip
--------------------------------------------------------------------------------
/.yarn/cache/pac-proxy-agent-npm-7.0.0-da163d166e-45fe10ae58.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/pac-proxy-agent-npm-7.0.0-da163d166e-45fe10ae58.zip
--------------------------------------------------------------------------------
/.yarn/cache/pac-resolver-npm-7.0.0-904b294260-fa3a898c09.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/pac-resolver-npm-7.0.0-904b294260-fa3a898c09.zip
--------------------------------------------------------------------------------
/.yarn/cache/parseurl-npm-1.3.3-1542397e00-407cee8e0a.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/parseurl-npm-1.3.3-1542397e00-407cee8e0a.zip
--------------------------------------------------------------------------------
/.yarn/cache/path-exists-npm-4.0.0-e9e4f63eb0-505807199d.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/path-exists-npm-4.0.0-e9e4f63eb0-505807199d.zip
--------------------------------------------------------------------------------
/.yarn/cache/path-is-absolute-npm-1.0.1-31bc695ffd-060840f92c.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/path-is-absolute-npm-1.0.1-31bc695ffd-060840f92c.zip
--------------------------------------------------------------------------------
/.yarn/cache/path-to-regexp-npm-0.1.7-2605347373-69a14ea24d.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/path-to-regexp-npm-0.1.7-2605347373-69a14ea24d.zip
--------------------------------------------------------------------------------
/.yarn/cache/peek-readable-npm-4.1.0-26439d9ff8-02c673f9bc.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/peek-readable-npm-4.1.0-26439d9ff8-02c673f9bc.zip
--------------------------------------------------------------------------------
/.yarn/cache/performance-now-npm-2.1.0-45e3ce7e49-534e641aa8.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/performance-now-npm-2.1.0-45e3ce7e49-534e641aa8.zip
--------------------------------------------------------------------------------
/.yarn/cache/pngjs-npm-5.0.0-e8ba79f838-04e912cc45.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/pngjs-npm-5.0.0-e8ba79f838-04e912cc45.zip
--------------------------------------------------------------------------------
/.yarn/cache/probe-image-size-npm-7.2.3-2b6ee36e6f-1a5eeb8f5c.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/probe-image-size-npm-7.2.3-2b6ee36e6f-1a5eeb8f5c.zip
--------------------------------------------------------------------------------
/.yarn/cache/process-nextick-args-npm-2.0.1-b8d7971609-1d38588e52.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/process-nextick-args-npm-2.0.1-b8d7971609-1d38588e52.zip
--------------------------------------------------------------------------------
/.yarn/cache/promise-inflight-npm-1.0.1-5bb925afac-2274948309.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/promise-inflight-npm-1.0.1-5bb925afac-2274948309.zip
--------------------------------------------------------------------------------
/.yarn/cache/promise-retry-npm-2.0.1-871f0b01b7-f96a3f6d90.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/promise-retry-npm-2.0.1-871f0b01b7-f96a3f6d90.zip
--------------------------------------------------------------------------------
/.yarn/cache/prompts-npm-2.4.2-f5d25d5eea-d8fd1fe638.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/prompts-npm-2.4.2-f5d25d5eea-d8fd1fe638.zip
--------------------------------------------------------------------------------
/.yarn/cache/proxy-addr-npm-2.0.7-dae6552872-29c6990ce9.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/proxy-addr-npm-2.0.7-dae6552872-29c6990ce9.zip
--------------------------------------------------------------------------------
/.yarn/cache/proxy-from-env-npm-1.1.0-c13d07f26b-ed7fcc2ba0.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/proxy-from-env-npm-1.1.0-c13d07f26b-ed7fcc2ba0.zip
--------------------------------------------------------------------------------
/.yarn/cache/psl-npm-1.9.0-a546edad1a-20c4277f64.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/psl-npm-1.9.0-a546edad1a-20c4277f64.zip
--------------------------------------------------------------------------------
/.yarn/cache/pump-npm-2.0.1-05afac7fc4-e9f26a17be.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/pump-npm-2.0.1-05afac7fc4-e9f26a17be.zip
--------------------------------------------------------------------------------
/.yarn/cache/punycode-npm-2.3.0-df4bdce06b-39f760e09a.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/punycode-npm-2.3.0-df4bdce06b-39f760e09a.zip
--------------------------------------------------------------------------------
/.yarn/cache/qrcode-npm-1.5.0-0f02dca802-a0857713d4.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/qrcode-npm-1.5.0-0f02dca802-a0857713d4.zip
--------------------------------------------------------------------------------
/.yarn/cache/qs-npm-6.10.3-172e1a3fb7-0fac5e6c71.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/qs-npm-6.10.3-172e1a3fb7-0fac5e6c71.zip
--------------------------------------------------------------------------------
/.yarn/cache/qs-npm-6.5.3-90b2635484-6f20bf08ca.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/qs-npm-6.5.3-90b2635484-6f20bf08ca.zip
--------------------------------------------------------------------------------
/.yarn/cache/queue-microtask-npm-1.2.3-fcc98e4e2d-b676f8c040.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/queue-microtask-npm-1.2.3-fcc98e4e2d-b676f8c040.zip
--------------------------------------------------------------------------------
/.yarn/cache/range-parser-npm-1.2.1-1a470fa390-0a268d4fea.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/range-parser-npm-1.2.1-1a470fa390-0a268d4fea.zip
--------------------------------------------------------------------------------
/.yarn/cache/raw-body-npm-2.5.1-9dd1d9fff9-5362adff15.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/raw-body-npm-2.5.1-9dd1d9fff9-5362adff15.zip
--------------------------------------------------------------------------------
/.yarn/cache/readable-stream-npm-2.3.8-67a94c2cb1-6564546703.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/readable-stream-npm-2.3.8-67a94c2cb1-6564546703.zip
--------------------------------------------------------------------------------
/.yarn/cache/readable-stream-npm-3.6.0-23a4a5eb56-d4ea81502d.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/readable-stream-npm-3.6.0-23a4a5eb56-d4ea81502d.zip
--------------------------------------------------------------------------------
/.yarn/cache/readable-web-to-node-stream-npm-3.0.2-682f5de297-8c56cc62c6.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/readable-web-to-node-stream-npm-3.0.2-682f5de297-8c56cc62c6.zip
--------------------------------------------------------------------------------
/.yarn/cache/regexp.prototype.flags-npm-1.4.3-df1c08b65d-51228bae73.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/regexp.prototype.flags-npm-1.4.3-df1c08b65d-51228bae73.zip
--------------------------------------------------------------------------------
/.yarn/cache/request-npm-2.88.2-f4a57c72c4-4e112c087f.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/request-npm-2.88.2-f4a57c72c4-4e112c087f.zip
--------------------------------------------------------------------------------
/.yarn/cache/request-promise-core-npm-1.1.4-cb9fff6c90-c798bafd55.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/request-promise-core-npm-1.1.4-cb9fff6c90-c798bafd55.zip
--------------------------------------------------------------------------------
/.yarn/cache/request-promise-npm-4.2.6-37010e90c3-1856c718cb.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/request-promise-npm-4.2.6-37010e90c3-1856c718cb.zip
--------------------------------------------------------------------------------
/.yarn/cache/require-directory-npm-2.1.1-8608aee50b-fb47e70bf0.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/require-directory-npm-2.1.1-8608aee50b-fb47e70bf0.zip
--------------------------------------------------------------------------------
/.yarn/cache/require-main-filename-npm-2.0.0-03eef65c84-e9e294695f.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/require-main-filename-npm-2.0.0-03eef65c84-e9e294695f.zip
--------------------------------------------------------------------------------
/.yarn/cache/retry-npm-0.12.0-72ac7fb4cc-623bd7d2e5.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/retry-npm-0.12.0-72ac7fb4cc-623bd7d2e5.zip
--------------------------------------------------------------------------------
/.yarn/cache/rimraf-npm-3.0.2-2cb7dac69a-87f4164e39.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/rimraf-npm-3.0.2-2cb7dac69a-87f4164e39.zip
--------------------------------------------------------------------------------
/.yarn/cache/run-parallel-limit-npm-1.1.0-ac1dfd4d1f-672c3b87e7.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/run-parallel-limit-npm-1.1.0-ac1dfd4d1f-672c3b87e7.zip
--------------------------------------------------------------------------------
/.yarn/cache/safe-buffer-npm-5.1.2-c27fedf6c4-f2f1f7943c.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/safe-buffer-npm-5.1.2-c27fedf6c4-f2f1f7943c.zip
--------------------------------------------------------------------------------
/.yarn/cache/safe-buffer-npm-5.2.1-3481c8aa9b-b99c4b41fd.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/safe-buffer-npm-5.2.1-3481c8aa9b-b99c4b41fd.zip
--------------------------------------------------------------------------------
/.yarn/cache/safe-decode-uri-component-npm-1.2.1-3363fa1a8b-60e8d780a3.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/safe-decode-uri-component-npm-1.2.1-3363fa1a8b-60e8d780a3.zip
--------------------------------------------------------------------------------
/.yarn/cache/safe-regex-test-npm-1.0.0-e94a09b84e-bc566d8beb.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/safe-regex-test-npm-1.0.0-e94a09b84e-bc566d8beb.zip
--------------------------------------------------------------------------------
/.yarn/cache/safer-buffer-npm-2.1.2-8d5c0b705e-cab8f25ae6.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/safer-buffer-npm-2.1.2-8d5c0b705e-cab8f25ae6.zip
--------------------------------------------------------------------------------
/.yarn/cache/sax-npm-1.2.4-178f05f12f-d3df7d32b8.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/sax-npm-1.2.4-178f05f12f-d3df7d32b8.zip
--------------------------------------------------------------------------------
/.yarn/cache/semver-npm-7.3.8-25a996cb4f-ba9c7cbbf2.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/semver-npm-7.3.8-25a996cb4f-ba9c7cbbf2.zip
--------------------------------------------------------------------------------
/.yarn/cache/send-npm-0.18.0-faadf6353f-74fc07ebb5.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/send-npm-0.18.0-faadf6353f-74fc07ebb5.zip
--------------------------------------------------------------------------------
/.yarn/cache/serve-static-npm-1.15.0-86c81879f5-af57fc13be.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/serve-static-npm-1.15.0-86c81879f5-af57fc13be.zip
--------------------------------------------------------------------------------
/.yarn/cache/set-blocking-npm-2.0.0-49e2cffa24-6e65a05f7c.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/set-blocking-npm-2.0.0-49e2cffa24-6e65a05f7c.zip
--------------------------------------------------------------------------------
/.yarn/cache/setprototypeof-npm-1.2.0-0fedbdcd3a-be18cbbf70.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/setprototypeof-npm-1.2.0-0fedbdcd3a-be18cbbf70.zip
--------------------------------------------------------------------------------
/.yarn/cache/side-channel-npm-1.0.4-e1f38b9e06-351e41b947.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/side-channel-npm-1.0.4-e1f38b9e06-351e41b947.zip
--------------------------------------------------------------------------------
/.yarn/cache/signal-exit-npm-3.0.7-bd270458a3-a2f098f247.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/signal-exit-npm-3.0.7-bd270458a3-a2f098f247.zip
--------------------------------------------------------------------------------
/.yarn/cache/sisteransi-npm-1.0.5-af60cc0cfa-aba6438f46.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/sisteransi-npm-1.0.5-af60cc0cfa-aba6438f46.zip
--------------------------------------------------------------------------------
/.yarn/cache/sleep-promise-npm-9.1.0-d83e95aee1-a93359c18d.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/sleep-promise-npm-9.1.0-d83e95aee1-a93359c18d.zip
--------------------------------------------------------------------------------
/.yarn/cache/smart-buffer-npm-4.2.0-5ac3f668bb-b5167a7142.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/smart-buffer-npm-4.2.0-5ac3f668bb-b5167a7142.zip
--------------------------------------------------------------------------------
/.yarn/cache/socks-npm-2.7.1-17f2b53052-259d9e3e8e.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/socks-npm-2.7.1-17f2b53052-259d9e3e8e.zip
--------------------------------------------------------------------------------
/.yarn/cache/socks-proxy-agent-npm-7.0.0-7aacf32ea0-7205543701.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/socks-proxy-agent-npm-7.0.0-7aacf32ea0-7205543701.zip
--------------------------------------------------------------------------------
/.yarn/cache/socks-proxy-agent-npm-8.0.1-646f00d0a1-f6538fd16c.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/socks-proxy-agent-npm-8.0.1-646f00d0a1-f6538fd16c.zip
--------------------------------------------------------------------------------
/.yarn/cache/source-map-npm-0.6.1-1a3621db16-59ce8640cf.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/source-map-npm-0.6.1-1a3621db16-59ce8640cf.zip
--------------------------------------------------------------------------------
/.yarn/cache/sshpk-npm-1.17.0-95f17f597f-ba109f65c8.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/sshpk-npm-1.17.0-95f17f597f-ba109f65c8.zip
--------------------------------------------------------------------------------
/.yarn/cache/ssri-npm-9.0.1-33ce27f4f8-fb58f5e46b.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/ssri-npm-9.0.1-33ce27f4f8-fb58f5e46b.zip
--------------------------------------------------------------------------------
/.yarn/cache/statuses-npm-2.0.1-81d2b97fee-18c7623fdb.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/statuses-npm-2.0.1-81d2b97fee-18c7623fdb.zip
--------------------------------------------------------------------------------
/.yarn/cache/stealthy-require-npm-1.1.1-0105ec8207-6805b857a9.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/stealthy-require-npm-1.1.1-0105ec8207-6805b857a9.zip
--------------------------------------------------------------------------------
/.yarn/cache/stream-parser-npm-0.3.1-0b70187c85-4d86ff8cff.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/stream-parser-npm-0.3.1-0b70187c85-4d86ff8cff.zip
--------------------------------------------------------------------------------
/.yarn/cache/streamsearch-npm-0.1.2-813180eb1c-d2db57cbfb.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/streamsearch-npm-0.1.2-813180eb1c-d2db57cbfb.zip
--------------------------------------------------------------------------------
/.yarn/cache/string-width-npm-4.2.3-2c27177bae-e52c10dc3f.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/string-width-npm-4.2.3-2c27177bae-e52c10dc3f.zip
--------------------------------------------------------------------------------
/.yarn/cache/string.prototype.trim-npm-1.2.7-3fbaf3b9d2-05b7b2d6af.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/string.prototype.trim-npm-1.2.7-3fbaf3b9d2-05b7b2d6af.zip
--------------------------------------------------------------------------------
/.yarn/cache/string.prototype.trimend-npm-1.0.6-304246ecc1-0fdc34645a.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/string.prototype.trimend-npm-1.0.6-304246ecc1-0fdc34645a.zip
--------------------------------------------------------------------------------
/.yarn/cache/string.prototype.trimstart-npm-1.0.6-0926caea6c-89080feef4.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/string.prototype.trimstart-npm-1.0.6-0926caea6c-89080feef4.zip
--------------------------------------------------------------------------------
/.yarn/cache/string_decoder-npm-1.1.1-e46a6c1353-9ab7e56f9d.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/string_decoder-npm-1.1.1-e46a6c1353-9ab7e56f9d.zip
--------------------------------------------------------------------------------
/.yarn/cache/string_decoder-npm-1.3.0-2422117fd0-8417646695.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/string_decoder-npm-1.3.0-2422117fd0-8417646695.zip
--------------------------------------------------------------------------------
/.yarn/cache/strip-ansi-npm-6.0.1-caddc7cb40-f3cd25890a.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/strip-ansi-npm-6.0.1-caddc7cb40-f3cd25890a.zip
--------------------------------------------------------------------------------
/.yarn/cache/strtok3-npm-6.3.0-73598951ca-90732cff3f.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/strtok3-npm-6.3.0-73598951ca-90732cff3f.zip
--------------------------------------------------------------------------------
/.yarn/cache/tar-npm-6.1.13-3234e72781-8a278bed12.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/tar-npm-6.1.13-3234e72781-8a278bed12.zip
--------------------------------------------------------------------------------
/.yarn/cache/toidentifier-npm-1.0.1-f759712599-952c29e2a8.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/toidentifier-npm-1.0.1-f759712599-952c29e2a8.zip
--------------------------------------------------------------------------------
/.yarn/cache/token-types-npm-4.2.0-b58a529493-7163e3bfab.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/token-types-npm-4.2.0-b58a529493-7163e3bfab.zip
--------------------------------------------------------------------------------
/.yarn/cache/tough-cookie-npm-2.5.0-79a2fe43fe-16a8cd0902.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/tough-cookie-npm-2.5.0-79a2fe43fe-16a8cd0902.zip
--------------------------------------------------------------------------------
/.yarn/cache/ts-node-npm-10.7.0-ef39b1d45e-2a379e43f7.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/ts-node-npm-10.7.0-ef39b1d45e-2a379e43f7.zip
--------------------------------------------------------------------------------
/.yarn/cache/tsc-npm-2.0.4-e331b066cb-50b1024088.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/tsc-npm-2.0.4-e331b066cb-50b1024088.zip
--------------------------------------------------------------------------------
/.yarn/cache/tslib-npm-2.4.0-9cb6dc5030-8c4aa6a3c5.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/tslib-npm-2.4.0-9cb6dc5030-8c4aa6a3c5.zip
--------------------------------------------------------------------------------
/.yarn/cache/tunnel-agent-npm-0.6.0-64345ab7eb-05f6510358.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/tunnel-agent-npm-0.6.0-64345ab7eb-05f6510358.zip
--------------------------------------------------------------------------------
/.yarn/cache/tunnel-npm-0.0.6-b1c0830ea4-c362948df9.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/tunnel-npm-0.0.6-b1c0830ea4-c362948df9.zip
--------------------------------------------------------------------------------
/.yarn/cache/tweetnacl-npm-0.14.5-a3f766c0d1-6061daba17.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/tweetnacl-npm-0.14.5-a3f766c0d1-6061daba17.zip
--------------------------------------------------------------------------------
/.yarn/cache/type-is-npm-1.6.18-6dee4d4961-2c8e47675d.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/type-is-npm-1.6.18-6dee4d4961-2c8e47675d.zip
--------------------------------------------------------------------------------
/.yarn/cache/typed-array-length-npm-1.0.4-92771b81fc-2228febc93.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/typed-array-length-npm-1.0.4-92771b81fc-2228febc93.zip
--------------------------------------------------------------------------------
/.yarn/cache/typescript-npm-4.6.4-114dfa5f7e-e7bfcc39cd.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/typescript-npm-4.6.4-114dfa5f7e-e7bfcc39cd.zip
--------------------------------------------------------------------------------
/.yarn/cache/typescript-patch-9d18892098-1cb434fbc6.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/typescript-patch-9d18892098-1cb434fbc6.zip
--------------------------------------------------------------------------------
/.yarn/cache/unbox-primitive-npm-1.0.2-cb56a05066-b7a1cf5862.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/unbox-primitive-npm-1.0.2-cb56a05066-b7a1cf5862.zip
--------------------------------------------------------------------------------
/.yarn/cache/unique-filename-npm-2.0.1-183c6c7c2b-807acf3381.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/unique-filename-npm-2.0.1-183c6c7c2b-807acf3381.zip
--------------------------------------------------------------------------------
/.yarn/cache/unique-slug-npm-3.0.0-0b82e51577-49f8d915ba.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/unique-slug-npm-3.0.0-0b82e51577-49f8d915ba.zip
--------------------------------------------------------------------------------
/.yarn/cache/universalify-npm-0.1.2-9b22d31d2d-40cdc60f6e.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/universalify-npm-0.1.2-9b22d31d2d-40cdc60f6e.zip
--------------------------------------------------------------------------------
/.yarn/cache/unpipe-npm-1.0.0-2ed2a3c2bf-4fa18d8d8d.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/unpipe-npm-1.0.0-2ed2a3c2bf-4fa18d8d8d.zip
--------------------------------------------------------------------------------
/.yarn/cache/uri-js-npm-4.4.1-66d11cbcaf-7167432de6.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/uri-js-npm-4.4.1-66d11cbcaf-7167432de6.zip
--------------------------------------------------------------------------------
/.yarn/cache/util-deprecate-npm-1.0.2-e3fe1a219c-474acf1146.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/util-deprecate-npm-1.0.2-e3fe1a219c-474acf1146.zip
--------------------------------------------------------------------------------
/.yarn/cache/utils-merge-npm-1.0.1-363bbdfbca-c810954932.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/utils-merge-npm-1.0.1-363bbdfbca-c810954932.zip
--------------------------------------------------------------------------------
/.yarn/cache/uuid-npm-3.4.0-4fd8ef88ad-58de2feed6.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/uuid-npm-3.4.0-4fd8ef88ad-58de2feed6.zip
--------------------------------------------------------------------------------
/.yarn/cache/v8-compile-cache-lib-npm-3.0.1-4886071ece-78089ad549.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/v8-compile-cache-lib-npm-3.0.1-4886071ece-78089ad549.zip
--------------------------------------------------------------------------------
/.yarn/cache/vary-npm-1.1.2-b49f70ae63-ae0123222c.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/vary-npm-1.1.2-b49f70ae63-ae0123222c.zip
--------------------------------------------------------------------------------
/.yarn/cache/verror-npm-1.10.0-c3f839c579-c431df0bed.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/verror-npm-1.10.0-c3f839c579-c431df0bed.zip
--------------------------------------------------------------------------------
/.yarn/cache/which-boxed-primitive-npm-1.0.2-e214f9ae5a-53ce774c73.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/which-boxed-primitive-npm-1.0.2-e214f9ae5a-53ce774c73.zip
--------------------------------------------------------------------------------
/.yarn/cache/which-module-npm-2.0.0-daf3daa08d-809f7fd3df.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/which-module-npm-2.0.0-daf3daa08d-809f7fd3df.zip
--------------------------------------------------------------------------------
/.yarn/cache/which-npm-2.0.2-320ddf72f7-1a5c563d3c.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/which-npm-2.0.2-320ddf72f7-1a5c563d3c.zip
--------------------------------------------------------------------------------
/.yarn/cache/which-typed-array-npm-1.1.9-9559c95dfc-fe0178ca44.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/which-typed-array-npm-1.1.9-9559c95dfc-fe0178ca44.zip
--------------------------------------------------------------------------------
/.yarn/cache/wide-align-npm-1.1.5-889d77e592-d5fc37cd56.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/wide-align-npm-1.1.5-889d77e592-d5fc37cd56.zip
--------------------------------------------------------------------------------
/.yarn/cache/wrap-ansi-npm-6.2.0-439a7246d8-6cd96a4101.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/wrap-ansi-npm-6.2.0-439a7246d8-6cd96a4101.zip
--------------------------------------------------------------------------------
/.yarn/cache/wrap-ansi-npm-7.0.0-ad6e1a0554-a790b846fd.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/wrap-ansi-npm-7.0.0-ad6e1a0554-a790b846fd.zip
--------------------------------------------------------------------------------
/.yarn/cache/wrappy-npm-1.0.2-916de4d4b3-159da4805f.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/wrappy-npm-1.0.2-916de4d4b3-159da4805f.zip
--------------------------------------------------------------------------------
/.yarn/cache/y18n-npm-4.0.3-ced95acdbc-014dfcd9b5.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/y18n-npm-4.0.3-ced95acdbc-014dfcd9b5.zip
--------------------------------------------------------------------------------
/.yarn/cache/y18n-npm-5.0.8-5f3a0a7e62-54f0fb9562.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/y18n-npm-5.0.8-5f3a0a7e62-54f0fb9562.zip
--------------------------------------------------------------------------------
/.yarn/cache/yallist-npm-4.0.0-b493d9e907-343617202a.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/yallist-npm-4.0.0-b493d9e907-343617202a.zip
--------------------------------------------------------------------------------
/.yarn/cache/yargs-npm-15.4.1-ca1c444de1-40b974f508.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/yargs-npm-15.4.1-ca1c444de1-40b974f508.zip
--------------------------------------------------------------------------------
/.yarn/cache/yargs-npm-17.4.1-f5d309f85f-e901232287.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/yargs-npm-17.4.1-f5d309f85f-e901232287.zip
--------------------------------------------------------------------------------
/.yarn/cache/yargs-parser-npm-18.1.3-0ba9c4f088-60e8c7d1b8.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/yargs-parser-npm-18.1.3-0ba9c4f088-60e8c7d1b8.zip
--------------------------------------------------------------------------------
/.yarn/cache/yargs-parser-npm-21.0.1-b778fd3462-c3ea2ed12c.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/yargs-parser-npm-21.0.1-b778fd3462-c3ea2ed12c.zip
--------------------------------------------------------------------------------
/.yarn/cache/yn-npm-3.1.1-8ad4259784-2c487b0e14.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clansty/netease-music-sync/5911a238404433edbb18aa7070284a28c4a788a8/.yarn/cache/yn-npm-3.1.1-8ad4259784-2c487b0e14.zip
--------------------------------------------------------------------------------
/.yarn/plugins/yarn-plugin-nixify.cjs:
--------------------------------------------------------------------------------
1 | module.exports={name:"yarn-plugin-nixify",factory:function(e){var t;return(()=>{"use strict";var n={d:(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},o={};n.r(o),n.d(o,{default:()=>P});const r=e("@yarnpkg/core"),i=e("clipanion");class a extends i.Command{constructor(...e){super(...e),this.locator=i.Option.String()}async execute(){const e=await r.Configuration.find(this.context.cwd,this.context.plugins),{project:t}=await r.Project.find(e,this.context.cwd),n=await r.Cache.find(e),o=e.makeFetcher();return(await r.StreamReport.start({configuration:e,stdout:this.context.stdout},(async e=>{const{locatorHash:i}=r.structUtils.parseLocator(this.locator,!0),a=t.originalPackages.get(i);a?await o.fetch(a,{checksums:t.storedChecksums,project:t,cache:n,fetcher:o,report:e}):e.reportError(0,"Invalid locator")}))).exitCode()}}a.paths=[["nixify","fetch-one"]];const s=e("@yarnpkg/fslib"),c=e("crypto");class l extends i.Command{constructor(...e){super(...e),this.locator=i.Option.String(),this.source=i.Option.String(),this.installLocation=i.Option.String()}async execute(){const e=await r.Configuration.find(this.context.cwd,this.context.plugins),{project:t}=await r.Project.find(e,this.context.cwd);return await t.restoreInstallState({restoreResolutions:!1}),(await r.StreamReport.start({configuration:e,stdout:this.context.stdout},(async n=>{await t.resolveEverything({report:n,lockfileOnly:!0});const o=r.structUtils.parseLocator(this.locator,!0),i=t.storedPackages.get(o.locatorHash);if(!i)return void n.reportError(0,"Invalid locator");const a=s.ppath.join(t.cwd,this.installLocation);await s.xfs.mkdirpPromise(s.ppath.dirname(a)),await r.execUtils.execvp("cp",["-R",this.source,a],{cwd:t.cwd,strict:!0}),await r.execUtils.execvp("chmod",["-R","u+w",a],{cwd:t.cwd,strict:!0});const l=(0,c.createHash)("sha512");l.update(process.versions.node),e.triggerHook((e=>e.globalHashGeneration),t,(e=>{l.update("\0"),l.update(e)}));const d=l.digest("hex"),p=new Map,h=e=>{let n=p.get(e.locatorHash);if(void 0!==n)return n;const o=t.storedPackages.get(e.locatorHash);if(void 0===o)throw new Error("Assertion failed: The package should have been registered");const i=(0,c.createHash)("sha512");i.update(e.locatorHash),p.set(e.locatorHash,"");for(const e of o.dependencies.values()){const n=t.storedResolutions.get(e.descriptorHash);if(void 0===n)throw new Error(`Assertion failed: The resolution (${r.structUtils.prettyDescriptor(t.configuration,e)}) should have been registered`);const o=t.storedPackages.get(n);if(void 0===o)throw new Error("Assertion failed: The package should have been registered");i.update(h(o))}return n=i.digest("hex"),p.set(e.locatorHash,n),n},u=(0,c.createHash)("sha512").update(d).update(h(i)).update(a).digest("hex");t.storedBuildState.set(i.locatorHash,u),await t.persistInstallStateFile()}))).exitCode()}}l.paths=[["nixify","inject-build"]];const d=e("@yarnpkg/plugin-pnp"),p=JSON.stringify,h=(e,t,n=!1)=>t.split("\n").map((t=>t||n?e+t:t)).join("\n"),u=(e,t)=>{let n=e;for(const[e,o]of Object.entries(t))if("string"==typeof o&&(n=n.replace(new RegExp(`@@${e}@@`,"g"),o)),"boolean"==typeof o)for(;;){const t=n.split("\n"),r=t.indexOf(`#@@ IF ${e}`),i=t.indexOf(`#@@ ENDIF ${e}`);if(-1===r||i{if(!n)return;const i=s.npath.toPortablePath(this.binDir);for(const[o,r]of n.manifest.bin){const n=s.ppath.join(i,o),a=s.ppath.join(t.cwd,s.npath.toPortablePath(r));await this.writeWrapper(n,a,{configuration:e,project:t})}if(e.get("installNixBinariesForDependencies")){await t.resolveEverything({report:o,lockfileOnly:!0});const n=await r.scriptUtils.getPackageAccessibleBinaries(t.topLevelWorkspace.anchoredLocator,{project:t});for(const[o,[r,a]]of n.entries()){const n=s.ppath.join(i,o);await this.writeWrapper(n,s.npath.toPortablePath(a),{configuration:e,project:t})}}}))).exitCode()}async writeWrapper(e,t,{configuration:n,project:o}){let r;switch(n.get("nodeLinker")){case"pnp":{const e=(0,d.getPnpPath)(o),n=[];await s.xfs.existsPromise(e.cjs)&&n.push(`--require "${s.npath.fromPortablePath(e.cjs)}"`),await s.xfs.existsPromise(e.esmLoader)&&n.push(`--experimental-loader "${(0,f.pathToFileURL)(s.npath.fromPortablePath(e.esmLoader)).href}"`),r=u("#!/bin/sh\nexport NODE_OPTIONS='@@NODE_OPTIONS@@'\nexec '@@NODE_PATH@@' '@@BINARY_PATH@@' \"$@\"\n",{NODE_PATH:process.execPath,NODE_OPTIONS:n.join(" "),BINARY_PATH:t});break}case"node-modules":r=u("#!/bin/sh\nexec '@@NODE_PATH@@' '@@BINARY_PATH@@' \"$@\"\n",{NODE_PATH:process.execPath,BINARY_PATH:t});break;default:throw Error("Assertion failed: Invalid nodeLinker")}await s.xfs.writeFilePromise(e,r),await s.xfs.chmodPromise(e,493)}}g.paths=[["nixify","install-bin"]];const m=e("@yarnpkg/plugin-patch"),y=(e,t)=>(0,c.createHash)(e).update(t).digest(),x=(e,t,n,o="/nix/store")=>{const r=n.toString("hex"),i=y("sha256",`fixed:out:${t}:${r}:`).toString("hex"),a=(e=>{let t="",n=[...e].reverse().map((e=>e.toString(2).padStart(8,"0"))).join("");for(;n;)t+="0123456789abcdfghijklmnpqrsvwxyz"[parseInt(n.slice(0,5),2)],n=n.slice(5);return t})(((e,t)=>{const n=Buffer.alloc(20);for(let t=0;te.replace(/^\.+/,"").replace(/[^a-zA-Z0-9+._?=-]+/g,"-").slice(0,207)||"unknown",v=e("os"),w={commands:[a,l,g],hooks:{afterAllInstalled:async(e,t)=>{!1!==t.persistProject&&e.configuration.get("enableNixify")&&await(async(e,t)=>{const{configuration:n,cwd:o}=e,{cache:i,report:a}=t,c=await s.xfs.realpathPromise(s.npath.toPortablePath((0,v.tmpdir)()));if(e.cwd.startsWith(c))return void a.reportInfo(0,`Skipping Nixify, because ${e.cwd} appears to be a temporary directory`);const l=n.get("yarnPath");let d=s.ppath.relative(o,l);d.startsWith("../")&&(d=l,a.reportWarning(0,`The Yarn path ${l} is outside the project - it may not be reachable by the Nix build`));const f=n.get("cacheFolder");let g=s.ppath.relative(o,f);g.startsWith("../")&&(g=f,a.reportWarning(0,`The cache folder ${f} is outside the project - it may not be reachable by the Nix build`));for(const e of n.sources.values())e.startsWith("<")||s.ppath.relative(o,e).startsWith("../")&&a.reportWarning(0,`The config file ${e} is outside the project - it may not be reachable by the Nix build`);n.get("nixExprPath");const y=n.get("lockfileFilename"),w=new Map,P=new Set(await s.xfs.readdirPromise(i.cwd)),$={unstablePackages:e.conditionalLocators};for(const t of e.storedPackages.values()){const{locatorHash:n}=t,o=e.storedChecksums.get(n),a=i.getLocatorPath(t,o||null,$);if(!a)continue;const c=s.ppath.basename(a);if(!P.has(c))continue;const l=r.structUtils.stringifyLocator(t),d=o?o.split("/").pop():await r.hashUtils.checksumFile(a);w.set(l,{filename:c,sha512:d})}let k="cacheEntries = {\n";for(const e of[...w.keys()].sort()){const t=w.get(e);k+=`${p(e)} = { ${[`filename = ${p(t.filename)};`,`sha512 = ${p(t.sha512)};`].join(" ")} };\n`}k+="};";const E=n.get("isolatedNixBuilds");let S=new Set,T=[],N=[];const O=n.get("nodeLinker"),j=n.get("pnpUnpluggedFolder"),A=(t,n=new Set)=>{const o=r.structUtils.stringifyLocator(t);if(w.has(o)&&n.add(o),r.structUtils.isVirtualLocator(t)){const o=e.storedPackages.get(r.structUtils.devirtualizeLocator(t).locatorHash);if(!o)throw Error("Assertion failed: The locator should have been registered");A(o,n)}if(t.reference.startsWith("patch:")){const o=e.storedPackages.get(m.patchUtils.parseLocator(t).sourceLocator.locatorHash);if(!o)throw Error("Assertion failed: The locator should have been registered");A(o,n)}for(const o of t.dependencies.values()){const t=e.storedResolutions.get(o.descriptorHash);if(!t)throw Error("Assertion failed: The descriptor should have been registered");const r=e.storedPackages.get(t);if(!r)throw Error("Assertion failed: The locator should have been registered");A(r,n)}return n};for(const t of e.storedBuildState.keys()){const n=e.storedPackages.get(t);if(!n)throw Error("Assertion failed: The locator should have been registered");if(!E.includes(n.name))continue;let o;if("pnp"!==O)throw Error(`The nodeLinker ${O} is not supported for isolated Nix builds`);o=s.ppath.relative(e.cwd,s.ppath.join(j,r.structUtils.slugifyLocator(n),r.structUtils.getIdentVendorPath(n)));let i=n;if(r.structUtils.isVirtualLocator(i)){const{locatorHash:t}=r.structUtils.devirtualizeLocator(i),n=e.storedPackages.get(t);if(!n)throw Error("Assertion failed: The locator should have been registered");i=n}const a=r.structUtils.stringifyLocator(i),c=r.structUtils.stringifyLocator(n),l=`isolated.${p(a)}`;if(!S.has(i)){S.add(i);const e=[...A(n)].sort().map((e=>`${p(e)}\n`)).join(""),t=`override${I=n.name,I.split(/[^a-zA-Z0-9]+/g).filter((e=>e)).map((e=>{return(t=e).slice(0,1).toUpperCase()+t.slice(1);var t})).join("")}Attrs`;N.push(`${l} = optionalOverride (args.${t} or null) (mkIsolatedBuild { ${[`pname = ${p(n.name)};`,`version = ${p(n.version)};`,`reference = ${p(i.reference)};`,`locators = [\n${e}];`].join(" ")} });`)}0===T.length&&T.push("# Copy in isolated builds."),T.push(`echo 'injecting build for ${n.name}'`,"yarn nixify inject-build \\",` ${p(c)} \\`,` \${${l}} \\`,` ${p(o)}`)}var I;if(T.length>0&&T.push("echo 'running yarn install'"),null==t.mode||0===E.length){const t=e.topLevelWorkspace.manifest.name,i=t?r.structUtils.stringifyIdent(t):"workspace",c=u("# This file is generated by running \"yarn install\" inside your project.\n# Manual changes might be lost - proceed with caution!\n\n{ lib, stdenv, nodejs, git, cacert, fetchurl, writeShellScript, writeShellScriptBin }:\n{ src, overrideAttrs ? null, ... } @ args:\n\nlet\n\n cacheFolder = @@CACHE_FOLDER@@;\n#@@ IF NEED_ISOLATED_BUILD_SUPPRORT\n lockfile = ./@@LOCKFILE@@;\n#@@ ENDIF NEED_ISOLATED_BUILD_SUPPRORT\n\n # Call overrideAttrs on a derivation if a function is provided.\n optionalOverride = fn: drv:\n if fn == null then drv else drv.overrideAttrs fn;\n\n # Simple stub that provides the global yarn command.\n yarn = writeShellScriptBin \"yarn\" ''\n exec '${nodejs}/bin/node' '${./@@YARN_PATH@@}' \"$@\"\n '';\n\n # Common attributes between Yarn derivations.\n drvCommon = {\n # Make sure the build uses the right Node.js version everywhere.\n buildInputs = [ nodejs yarn ];\n # Tell node-gyp to use the provided Node.js headers for native code builds.\n npm_config_nodedir = nodejs;\n };\n\n # Comman variables that we set in a Nix build, but not in a Nix shell.\n buildVars = ''\n # Make Yarn produce friendlier logging for automated builds.\n export CI=1\n # Tell node-pre-gyp to never fetch binaries / always build from source.\n export npm_config_build_from_source=true\n # Disable Nixify plugin to save on some unnecessary processing.\n export yarn_enable_nixify=false\n '';\n\n # Create derivations for fetching dependencies.\n cacheDrvs = let\n builder = writeShellScript \"yarn-cache-builder\" ''\n source $stdenv/setup\n cd \"$src\"\n ${buildVars}\n HOME=\"$TMP\" yarn_cache_folder=\"$TMP\" \\\n yarn nixify fetch-one $locator\n # Because we change the cache dir, Yarn may generate a different name.\n mv \"$TMP/$(sed 's/-[^-]*\\.[^-]*$//' <<< \"$outputFilename\")\"-* $out\n '';\n in lib.mapAttrs (locator: { filename, sha512 }: stdenv.mkDerivation {\n inherit src builder locator;\n name = lib.strings.sanitizeDerivationName locator;\n buildInputs = [ yarn git cacert ];\n outputFilename = filename;\n outputHashMode = \"flat\";\n outputHashAlgo = \"sha512\";\n outputHash = sha512;\n }) cacheEntries;\n\n # Create a shell snippet to copy dependencies from a list of derivations.\n mkCacheBuilderForDrvs = drvs:\n writeShellScript \"collect-yarn-cache\" (lib.concatMapStrings (drv: ''\n cp ${drv} '${drv.outputFilename}'\n '') drvs);\n\n#@@ IF NEED_ISOLATED_BUILD_SUPPRORT\n # Create a shell snippet to copy dependencies from a list of locators.\n mkCacheBuilderForLocators = let\n pickCacheDrvs = map (locator: cacheDrvs.${locator});\n in locators:\n mkCacheBuilderForDrvs (pickCacheDrvs locators);\n\n # Create a derivation that builds a node-pre-gyp module in isolation.\n mkIsolatedBuild = { pname, version, reference, locators }: stdenv.mkDerivation (drvCommon // {\n inherit pname version;\n dontUnpack = true;\n\n configurePhase = ''\n ${buildVars}\n unset yarn_enable_nixify # plugin is not present\n '';\n\n buildPhase = ''\n mkdir -p .yarn/cache\n pushd .yarn/cache > /dev/null\n source ${mkCacheBuilderForLocators locators}\n popd > /dev/null\n\n echo '{ \"dependencies\": { \"${pname}\": \"${reference}\" } }' > package.json\n install -m 0600 ${lockfile} ./yarn.lock\n export yarn_global_folder=\"$TMP\"\n export YARN_ENABLE_IMMUTABLE_INSTALLS=false\n yarn --immutable-cache\n '';\n\n installPhase = ''\n unplugged=( .yarn/unplugged/${pname}-*/node_modules/* )\n if [[ ! -e \"''${unplugged[@]}\" ]]; then\n echo >&2 \"Could not find the unplugged path for ${pname}\"\n exit 1\n fi\n\n mv \"$unplugged\" $out\n '';\n });\n#@@ ENDIF NEED_ISOLATED_BUILD_SUPPRORT\n\n # Main project derivation.\n project = stdenv.mkDerivation (drvCommon // {\n inherit src;\n name = @@PROJECT_NAME@@;\n\n configurePhase = ''\n ${buildVars}\n\n # Copy over the Yarn cache.\n rm -fr '${cacheFolder}'\n mkdir -p '${cacheFolder}'\n pushd '${cacheFolder}' > /dev/null\n source ${mkCacheBuilderForDrvs (lib.attrValues cacheDrvs)}\n popd > /dev/null\n\n # Yarn may need a writable home directory.\n export yarn_global_folder=\"$TMP\"\n\n # Some node-gyp calls may call out to npm, which could fail due to an\n # read-only home dir.\n export HOME=\"$TMP\"\n\n # running preConfigure after the cache is populated allows for\n # preConfigure to contain substituteInPlace for dependencies as well as the\n # main project. This is necessary for native bindings that maybe have\n # hardcoded values.\n runHook preConfigure\n\n@@ISOLATED_INTEGRATION@@\n\n # Run normal Yarn install to complete dependency installation.\n yarn install --immutable --immutable-cache\n\n runHook postConfigure\n '';\n\n buildPhase = ''\n runHook preBuild\n runHook postBuild\n '';\n\n installPhase = ''\n runHook preInstall\n\n mkdir -p \"$out/libexec/$name\" \"$out/bin\"\n\n # Move the package contents to the output directory.\n # - If the package.json has a `files` field, only files matching those patterns are copied\n # - Otherwise all files are copied\n yarn pack --out package.tgz\n tar xzvf package.tgz --directory \"$out/libexec/$name\" --strip-components=1\n\n cp .yarnrc* '@@LOCKFILE@@' \"$out/libexec/$name\"\n cp --recursive .yarn \"$out/libexec/$name\"\n\n # If the project uses the node-modules linker, then\n # include the node_modules folder in the package.\n if [ -d node_modules ]; then\n cp --recursive node_modules \"$out/libexec/$name\"\n else\n # Otherwise, assume PnP. Copy the loader into the package.\n cp .pnp.* \"$out/libexec/$name\"\n fi\n\n cd \"$out/libexec/$name\"\n\n # Invoke a plugin internal command to setup binaries.\n yarn nixify install-bin $out/bin\n\n # A package with node_modules doesn't need the cache\n if [ -d node_modules ]; then\n yarn cache clean\n fi\n\n runHook postInstall\n '';\n\n passthru = {\n inherit nodejs;\n yarn-freestanding = yarn;\n yarn = writeShellScriptBin \"yarn\" ''\n exec '${yarn}/bin/yarn' --cwd '${project}/libexec/${project.name}' \"$@\"\n '';\n };\n });\n\n@@CACHE_ENTRIES@@\n@@ISOLATED@@\nin optionalOverride overrideAttrs project\n",{PROJECT_NAME:p(i),YARN_PATH:d,LOCKFILE:y,CACHE_FOLDER:p(g),CACHE_ENTRIES:k,ISOLATED:N.join("\n"),ISOLATED_INTEGRATION:h(" ",T.join("\n")),NEED_ISOLATED_BUILD_SUPPRORT:T.length>0});if(await s.xfs.writeFilePromise(n.get("nixExprPath"),c),n.get("generateDefaultNix")){const e=s.ppath.join(o,"default.nix"),t=s.ppath.join(o,"flake.nix");s.xfs.existsSync(e)||s.xfs.existsSync(t)||(await s.xfs.writeFilePromise(e,"# This is a minimal `default.nix` by yarn-plugin-nixify. You can customize it\n# as needed, it will not be overwritten by the plugin.\n\n{ pkgs ? import { } }:\n\npkgs.callPackage ./yarn-project.nix { } { src = ./.; }\n"),a.reportInfo(0,"A minimal default.nix was created. You may want to customize it."))}}n.get("enableNixPreload")&&s.xfs.existsSync(s.npath.toPortablePath("/nix/store"))&&await s.xfs.mktempPromise((async t=>{const n=[];for(const[e,{filename:o,sha512:r}]of w.entries()){const a=b(e),c=Buffer.from(r,"hex"),l=x(a,"sha512",c);if(!s.xfs.existsSync(l)){const e=s.ppath.join(t,r.slice(0,7));await s.xfs.mkdirPromise(e);const c=s.ppath.join(i.cwd,o),l=s.ppath.join(e,a);await s.xfs.copyFilePromise(c,l),n.push(l)}}try{const t=n.length;for(;0!==n.length;){const t=n.splice(0,100);await r.execUtils.execvp("nix-store",["--add-fixed","sha512",...t],{cwd:e.cwd,strict:!0})}0!==t&&a.reportInfo(0,`Preloaded ${t} packages into the Nix store`)}catch(e){if("ENOENT"!==e.code)throw e}}))})(e,t)}},configuration:{enableNixify:{description:"If false, disables the Nixify plugin hook that generates Nix expressions",type:r.SettingsType.BOOLEAN,default:!0},nixExprPath:{description:"Path of the file where the project Nix expression will be written to",type:r.SettingsType.ABSOLUTE_PATH,default:"./yarn-project.nix"},generateDefaultNix:{description:"If true, a default.nix will be generated if it does not exist",type:r.SettingsType.BOOLEAN,default:!0},enableNixPreload:{description:"If true, cached packages will be preloaded into the Nix store",type:r.SettingsType.BOOLEAN,default:!0},isolatedNixBuilds:{description:"Dependencies with a build step that can be built in an isolated derivation",type:r.SettingsType.STRING,default:[],isArray:!0},installNixBinariesForDependencies:{description:"If true, the Nix output 'bin' directory will also contain executables for binaries defined by dependencies",type:r.SettingsType.BOOLEAN,default:!1}}},P=w;t=o})(),t}};
--------------------------------------------------------------------------------
/.yarn/sdks/integrations.yml:
--------------------------------------------------------------------------------
1 | # This file is automatically generated by @yarnpkg/sdks.
2 | # Manual changes might be lost!
3 |
4 | integrations:
5 | - vscode
6 |
--------------------------------------------------------------------------------
/.yarn/sdks/typescript/lib/tsc.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | const {existsSync} = require(`fs`);
4 | const {createRequire} = require(`module`);
5 | const {resolve} = require(`path`);
6 |
7 | const relPnpApiPath = "../../../../.pnp.cjs";
8 |
9 | const absPnpApiPath = resolve(__dirname, relPnpApiPath);
10 | const absRequire = createRequire(absPnpApiPath);
11 |
12 | if (existsSync(absPnpApiPath)) {
13 | if (!process.versions.pnp) {
14 | // Setup the environment to be able to require typescript/lib/tsc.js
15 | require(absPnpApiPath).setup();
16 | }
17 | }
18 |
19 | // Defer to the real typescript/lib/tsc.js your application uses
20 | module.exports = absRequire(`typescript/lib/tsc.js`);
21 |
--------------------------------------------------------------------------------
/.yarn/sdks/typescript/lib/tsserver.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | const {existsSync} = require(`fs`);
4 | const {createRequire} = require(`module`);
5 | const {resolve} = require(`path`);
6 |
7 | const relPnpApiPath = "../../../../.pnp.cjs";
8 |
9 | const absPnpApiPath = resolve(__dirname, relPnpApiPath);
10 | const absRequire = createRequire(absPnpApiPath);
11 |
12 | const moduleWrapper = tsserver => {
13 | if (!process.versions.pnp) {
14 | return tsserver;
15 | }
16 |
17 | const {isAbsolute} = require(`path`);
18 | const pnpApi = require(`pnpapi`);
19 |
20 | const isVirtual = str => str.match(/\/(\$\$virtual|__virtual__)\//);
21 | const isPortal = str => str.startsWith("portal:/");
22 | const normalize = str => str.replace(/\\/g, `/`).replace(/^\/?/, `/`);
23 |
24 | const dependencyTreeRoots = new Set(pnpApi.getDependencyTreeRoots().map(locator => {
25 | return `${locator.name}@${locator.reference}`;
26 | }));
27 |
28 | // VSCode sends the zip paths to TS using the "zip://" prefix, that TS
29 | // doesn't understand. This layer makes sure to remove the protocol
30 | // before forwarding it to TS, and to add it back on all returned paths.
31 |
32 | function toEditorPath(str) {
33 | // We add the `zip:` prefix to both `.zip/` paths and virtual paths
34 | if (isAbsolute(str) && !str.match(/^\^?(zip:|\/zip\/)/) && (str.match(/\.zip\//) || isVirtual(str))) {
35 | // We also take the opportunity to turn virtual paths into physical ones;
36 | // this makes it much easier to work with workspaces that list peer
37 | // dependencies, since otherwise Ctrl+Click would bring us to the virtual
38 | // file instances instead of the real ones.
39 | //
40 | // We only do this to modules owned by the the dependency tree roots.
41 | // This avoids breaking the resolution when jumping inside a vendor
42 | // with peer dep (otherwise jumping into react-dom would show resolution
43 | // errors on react).
44 | //
45 | const resolved = isVirtual(str) ? pnpApi.resolveVirtual(str) : str;
46 | if (resolved) {
47 | const locator = pnpApi.findPackageLocator(resolved);
48 | if (locator && (dependencyTreeRoots.has(`${locator.name}@${locator.reference}`) || isPortal(locator.reference))) {
49 | str = resolved;
50 | }
51 | }
52 |
53 | str = normalize(str);
54 |
55 | if (str.match(/\.zip\//)) {
56 | switch (hostInfo) {
57 | // Absolute VSCode `Uri.fsPath`s need to start with a slash.
58 | // VSCode only adds it automatically for supported schemes,
59 | // so we have to do it manually for the `zip` scheme.
60 | // The path needs to start with a caret otherwise VSCode doesn't handle the protocol
61 | //
62 | // Ref: https://github.com/microsoft/vscode/issues/105014#issuecomment-686760910
63 | //
64 | // 2021-10-08: VSCode changed the format in 1.61.
65 | // Before | ^zip:/c:/foo/bar.zip/package.json
66 | // After | ^/zip//c:/foo/bar.zip/package.json
67 | //
68 | // 2022-04-06: VSCode changed the format in 1.66.
69 | // Before | ^/zip//c:/foo/bar.zip/package.json
70 | // After | ^/zip/c:/foo/bar.zip/package.json
71 | //
72 | // 2022-05-06: VSCode changed the format in 1.68
73 | // Before | ^/zip/c:/foo/bar.zip/package.json
74 | // After | ^/zip//c:/foo/bar.zip/package.json
75 | //
76 | case `vscode <1.61`: {
77 | str = `^zip:${str}`;
78 | } break;
79 |
80 | case `vscode <1.66`: {
81 | str = `^/zip/${str}`;
82 | } break;
83 |
84 | case `vscode <1.68`: {
85 | str = `^/zip${str}`;
86 | } break;
87 |
88 | case `vscode`: {
89 | str = `^/zip/${str}`;
90 | } break;
91 |
92 | // To make "go to definition" work,
93 | // We have to resolve the actual file system path from virtual path
94 | // and convert scheme to supported by [vim-rzip](https://github.com/lbrayner/vim-rzip)
95 | case `coc-nvim`: {
96 | str = normalize(resolved).replace(/\.zip\//, `.zip::`);
97 | str = resolve(`zipfile:${str}`);
98 | } break;
99 |
100 | // Support neovim native LSP and [typescript-language-server](https://github.com/theia-ide/typescript-language-server)
101 | // We have to resolve the actual file system path from virtual path,
102 | // everything else is up to neovim
103 | case `neovim`: {
104 | str = normalize(resolved).replace(/\.zip\//, `.zip::`);
105 | str = `zipfile://${str}`;
106 | } break;
107 |
108 | default: {
109 | str = `zip:${str}`;
110 | } break;
111 | }
112 | }
113 | }
114 |
115 | return str;
116 | }
117 |
118 | function fromEditorPath(str) {
119 | switch (hostInfo) {
120 | case `coc-nvim`: {
121 | str = str.replace(/\.zip::/, `.zip/`);
122 | // The path for coc-nvim is in format of //zipfile://.yarn/...
123 | // So in order to convert it back, we use .* to match all the thing
124 | // before `zipfile:`
125 | return process.platform === `win32`
126 | ? str.replace(/^.*zipfile:\//, ``)
127 | : str.replace(/^.*zipfile:/, ``);
128 | } break;
129 |
130 | case `neovim`: {
131 | str = str.replace(/\.zip::/, `.zip/`);
132 | // The path for neovim is in format of zipfile:////.yarn/...
133 | return str.replace(/^zipfile:\/\//, ``);
134 | } break;
135 |
136 | case `vscode`:
137 | default: {
138 | return str.replace(/^\^?(zip:|\/zip(\/ts-nul-authority)?)\/+/, process.platform === `win32` ? `` : `/`)
139 | } break;
140 | }
141 | }
142 |
143 | // Force enable 'allowLocalPluginLoads'
144 | // TypeScript tries to resolve plugins using a path relative to itself
145 | // which doesn't work when using the global cache
146 | // https://github.com/microsoft/TypeScript/blob/1b57a0395e0bff191581c9606aab92832001de62/src/server/project.ts#L2238
147 | // VSCode doesn't want to enable 'allowLocalPluginLoads' due to security concerns but
148 | // TypeScript already does local loads and if this code is running the user trusts the workspace
149 | // https://github.com/microsoft/vscode/issues/45856
150 | const ConfiguredProject = tsserver.server.ConfiguredProject;
151 | const {enablePluginsWithOptions: originalEnablePluginsWithOptions} = ConfiguredProject.prototype;
152 | ConfiguredProject.prototype.enablePluginsWithOptions = function() {
153 | this.projectService.allowLocalPluginLoads = true;
154 | return originalEnablePluginsWithOptions.apply(this, arguments);
155 | };
156 |
157 | // And here is the point where we hijack the VSCode <-> TS communications
158 | // by adding ourselves in the middle. We locate everything that looks
159 | // like an absolute path of ours and normalize it.
160 |
161 | const Session = tsserver.server.Session;
162 | const {onMessage: originalOnMessage, send: originalSend} = Session.prototype;
163 | let hostInfo = `unknown`;
164 |
165 | Object.assign(Session.prototype, {
166 | onMessage(/** @type {string | object} */ message) {
167 | const isStringMessage = typeof message === 'string';
168 | const parsedMessage = isStringMessage ? JSON.parse(message) : message;
169 |
170 | if (
171 | parsedMessage != null &&
172 | typeof parsedMessage === `object` &&
173 | parsedMessage.arguments &&
174 | typeof parsedMessage.arguments.hostInfo === `string`
175 | ) {
176 | hostInfo = parsedMessage.arguments.hostInfo;
177 | if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK) {
178 | const [, major, minor] = (process.env.VSCODE_IPC_HOOK.match(
179 | // The RegExp from https://semver.org/ but without the caret at the start
180 | /(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/
181 | ) ?? []).map(Number)
182 |
183 | if (major === 1) {
184 | if (minor < 61) {
185 | hostInfo += ` <1.61`;
186 | } else if (minor < 66) {
187 | hostInfo += ` <1.66`;
188 | } else if (minor < 68) {
189 | hostInfo += ` <1.68`;
190 | }
191 | }
192 | }
193 | }
194 |
195 | const processedMessageJSON = JSON.stringify(parsedMessage, (key, value) => {
196 | return typeof value === 'string' ? fromEditorPath(value) : value;
197 | });
198 |
199 | return originalOnMessage.call(
200 | this,
201 | isStringMessage ? processedMessageJSON : JSON.parse(processedMessageJSON)
202 | );
203 | },
204 |
205 | send(/** @type {any} */ msg) {
206 | return originalSend.call(this, JSON.parse(JSON.stringify(msg, (key, value) => {
207 | return typeof value === `string` ? toEditorPath(value) : value;
208 | })));
209 | }
210 | });
211 |
212 | return tsserver;
213 | };
214 |
215 | if (existsSync(absPnpApiPath)) {
216 | if (!process.versions.pnp) {
217 | // Setup the environment to be able to require typescript/lib/tsserver.js
218 | require(absPnpApiPath).setup();
219 | }
220 | }
221 |
222 | // Defer to the real typescript/lib/tsserver.js your application uses
223 | module.exports = moduleWrapper(absRequire(`typescript/lib/tsserver.js`));
224 |
--------------------------------------------------------------------------------
/.yarn/sdks/typescript/lib/tsserverlibrary.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | const {existsSync} = require(`fs`);
4 | const {createRequire} = require(`module`);
5 | const {resolve} = require(`path`);
6 |
7 | const relPnpApiPath = "../../../../.pnp.cjs";
8 |
9 | const absPnpApiPath = resolve(__dirname, relPnpApiPath);
10 | const absRequire = createRequire(absPnpApiPath);
11 |
12 | const moduleWrapper = tsserver => {
13 | if (!process.versions.pnp) {
14 | return tsserver;
15 | }
16 |
17 | const {isAbsolute} = require(`path`);
18 | const pnpApi = require(`pnpapi`);
19 |
20 | const isVirtual = str => str.match(/\/(\$\$virtual|__virtual__)\//);
21 | const isPortal = str => str.startsWith("portal:/");
22 | const normalize = str => str.replace(/\\/g, `/`).replace(/^\/?/, `/`);
23 |
24 | const dependencyTreeRoots = new Set(pnpApi.getDependencyTreeRoots().map(locator => {
25 | return `${locator.name}@${locator.reference}`;
26 | }));
27 |
28 | // VSCode sends the zip paths to TS using the "zip://" prefix, that TS
29 | // doesn't understand. This layer makes sure to remove the protocol
30 | // before forwarding it to TS, and to add it back on all returned paths.
31 |
32 | function toEditorPath(str) {
33 | // We add the `zip:` prefix to both `.zip/` paths and virtual paths
34 | if (isAbsolute(str) && !str.match(/^\^?(zip:|\/zip\/)/) && (str.match(/\.zip\//) || isVirtual(str))) {
35 | // We also take the opportunity to turn virtual paths into physical ones;
36 | // this makes it much easier to work with workspaces that list peer
37 | // dependencies, since otherwise Ctrl+Click would bring us to the virtual
38 | // file instances instead of the real ones.
39 | //
40 | // We only do this to modules owned by the the dependency tree roots.
41 | // This avoids breaking the resolution when jumping inside a vendor
42 | // with peer dep (otherwise jumping into react-dom would show resolution
43 | // errors on react).
44 | //
45 | const resolved = isVirtual(str) ? pnpApi.resolveVirtual(str) : str;
46 | if (resolved) {
47 | const locator = pnpApi.findPackageLocator(resolved);
48 | if (locator && (dependencyTreeRoots.has(`${locator.name}@${locator.reference}`) || isPortal(locator.reference))) {
49 | str = resolved;
50 | }
51 | }
52 |
53 | str = normalize(str);
54 |
55 | if (str.match(/\.zip\//)) {
56 | switch (hostInfo) {
57 | // Absolute VSCode `Uri.fsPath`s need to start with a slash.
58 | // VSCode only adds it automatically for supported schemes,
59 | // so we have to do it manually for the `zip` scheme.
60 | // The path needs to start with a caret otherwise VSCode doesn't handle the protocol
61 | //
62 | // Ref: https://github.com/microsoft/vscode/issues/105014#issuecomment-686760910
63 | //
64 | // 2021-10-08: VSCode changed the format in 1.61.
65 | // Before | ^zip:/c:/foo/bar.zip/package.json
66 | // After | ^/zip//c:/foo/bar.zip/package.json
67 | //
68 | // 2022-04-06: VSCode changed the format in 1.66.
69 | // Before | ^/zip//c:/foo/bar.zip/package.json
70 | // After | ^/zip/c:/foo/bar.zip/package.json
71 | //
72 | // 2022-05-06: VSCode changed the format in 1.68
73 | // Before | ^/zip/c:/foo/bar.zip/package.json
74 | // After | ^/zip//c:/foo/bar.zip/package.json
75 | //
76 | case `vscode <1.61`: {
77 | str = `^zip:${str}`;
78 | } break;
79 |
80 | case `vscode <1.66`: {
81 | str = `^/zip/${str}`;
82 | } break;
83 |
84 | case `vscode <1.68`: {
85 | str = `^/zip${str}`;
86 | } break;
87 |
88 | case `vscode`: {
89 | str = `^/zip/${str}`;
90 | } break;
91 |
92 | // To make "go to definition" work,
93 | // We have to resolve the actual file system path from virtual path
94 | // and convert scheme to supported by [vim-rzip](https://github.com/lbrayner/vim-rzip)
95 | case `coc-nvim`: {
96 | str = normalize(resolved).replace(/\.zip\//, `.zip::`);
97 | str = resolve(`zipfile:${str}`);
98 | } break;
99 |
100 | // Support neovim native LSP and [typescript-language-server](https://github.com/theia-ide/typescript-language-server)
101 | // We have to resolve the actual file system path from virtual path,
102 | // everything else is up to neovim
103 | case `neovim`: {
104 | str = normalize(resolved).replace(/\.zip\//, `.zip::`);
105 | str = `zipfile://${str}`;
106 | } break;
107 |
108 | default: {
109 | str = `zip:${str}`;
110 | } break;
111 | }
112 | }
113 | }
114 |
115 | return str;
116 | }
117 |
118 | function fromEditorPath(str) {
119 | switch (hostInfo) {
120 | case `coc-nvim`: {
121 | str = str.replace(/\.zip::/, `.zip/`);
122 | // The path for coc-nvim is in format of //zipfile://.yarn/...
123 | // So in order to convert it back, we use .* to match all the thing
124 | // before `zipfile:`
125 | return process.platform === `win32`
126 | ? str.replace(/^.*zipfile:\//, ``)
127 | : str.replace(/^.*zipfile:/, ``);
128 | } break;
129 |
130 | case `neovim`: {
131 | str = str.replace(/\.zip::/, `.zip/`);
132 | // The path for neovim is in format of zipfile:////.yarn/...
133 | return str.replace(/^zipfile:\/\//, ``);
134 | } break;
135 |
136 | case `vscode`:
137 | default: {
138 | return str.replace(/^\^?(zip:|\/zip(\/ts-nul-authority)?)\/+/, process.platform === `win32` ? `` : `/`)
139 | } break;
140 | }
141 | }
142 |
143 | // Force enable 'allowLocalPluginLoads'
144 | // TypeScript tries to resolve plugins using a path relative to itself
145 | // which doesn't work when using the global cache
146 | // https://github.com/microsoft/TypeScript/blob/1b57a0395e0bff191581c9606aab92832001de62/src/server/project.ts#L2238
147 | // VSCode doesn't want to enable 'allowLocalPluginLoads' due to security concerns but
148 | // TypeScript already does local loads and if this code is running the user trusts the workspace
149 | // https://github.com/microsoft/vscode/issues/45856
150 | const ConfiguredProject = tsserver.server.ConfiguredProject;
151 | const {enablePluginsWithOptions: originalEnablePluginsWithOptions} = ConfiguredProject.prototype;
152 | ConfiguredProject.prototype.enablePluginsWithOptions = function() {
153 | this.projectService.allowLocalPluginLoads = true;
154 | return originalEnablePluginsWithOptions.apply(this, arguments);
155 | };
156 |
157 | // And here is the point where we hijack the VSCode <-> TS communications
158 | // by adding ourselves in the middle. We locate everything that looks
159 | // like an absolute path of ours and normalize it.
160 |
161 | const Session = tsserver.server.Session;
162 | const {onMessage: originalOnMessage, send: originalSend} = Session.prototype;
163 | let hostInfo = `unknown`;
164 |
165 | Object.assign(Session.prototype, {
166 | onMessage(/** @type {string | object} */ message) {
167 | const isStringMessage = typeof message === 'string';
168 | const parsedMessage = isStringMessage ? JSON.parse(message) : message;
169 |
170 | if (
171 | parsedMessage != null &&
172 | typeof parsedMessage === `object` &&
173 | parsedMessage.arguments &&
174 | typeof parsedMessage.arguments.hostInfo === `string`
175 | ) {
176 | hostInfo = parsedMessage.arguments.hostInfo;
177 | if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK) {
178 | const [, major, minor] = (process.env.VSCODE_IPC_HOOK.match(
179 | // The RegExp from https://semver.org/ but without the caret at the start
180 | /(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/
181 | ) ?? []).map(Number)
182 |
183 | if (major === 1) {
184 | if (minor < 61) {
185 | hostInfo += ` <1.61`;
186 | } else if (minor < 66) {
187 | hostInfo += ` <1.66`;
188 | } else if (minor < 68) {
189 | hostInfo += ` <1.68`;
190 | }
191 | }
192 | }
193 | }
194 |
195 | const processedMessageJSON = JSON.stringify(parsedMessage, (key, value) => {
196 | return typeof value === 'string' ? fromEditorPath(value) : value;
197 | });
198 |
199 | return originalOnMessage.call(
200 | this,
201 | isStringMessage ? processedMessageJSON : JSON.parse(processedMessageJSON)
202 | );
203 | },
204 |
205 | send(/** @type {any} */ msg) {
206 | return originalSend.call(this, JSON.parse(JSON.stringify(msg, (key, value) => {
207 | return typeof value === `string` ? toEditorPath(value) : value;
208 | })));
209 | }
210 | });
211 |
212 | return tsserver;
213 | };
214 |
215 | if (existsSync(absPnpApiPath)) {
216 | if (!process.versions.pnp) {
217 | // Setup the environment to be able to require typescript/lib/tsserverlibrary.js
218 | require(absPnpApiPath).setup();
219 | }
220 | }
221 |
222 | // Defer to the real typescript/lib/tsserverlibrary.js your application uses
223 | module.exports = moduleWrapper(absRequire(`typescript/lib/tsserverlibrary.js`));
224 |
--------------------------------------------------------------------------------
/.yarn/sdks/typescript/lib/typescript.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | const {existsSync} = require(`fs`);
4 | const {createRequire} = require(`module`);
5 | const {resolve} = require(`path`);
6 |
7 | const relPnpApiPath = "../../../../.pnp.cjs";
8 |
9 | const absPnpApiPath = resolve(__dirname, relPnpApiPath);
10 | const absRequire = createRequire(absPnpApiPath);
11 |
12 | if (existsSync(absPnpApiPath)) {
13 | if (!process.versions.pnp) {
14 | // Setup the environment to be able to require typescript/lib/typescript.js
15 | require(absPnpApiPath).setup();
16 | }
17 | }
18 |
19 | // Defer to the real typescript/lib/typescript.js your application uses
20 | module.exports = absRequire(`typescript/lib/typescript.js`);
21 |
--------------------------------------------------------------------------------
/.yarn/sdks/typescript/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "typescript",
3 | "version": "4.6.4-sdk",
4 | "main": "./lib/typescript.js",
5 | "type": "commonjs"
6 | }
7 |
--------------------------------------------------------------------------------
/.yarnrc.yml:
--------------------------------------------------------------------------------
1 | plugins:
2 | - path: .yarn/plugins/@yarnpkg/plugin-typescript.cjs
3 | spec: "@yarnpkg/plugin-typescript"
4 | - path: .yarn/plugins/@yarnpkg/plugin-workspace-tools.cjs
5 | spec: "@yarnpkg/plugin-workspace-tools"
6 | - path: .yarn/plugins/yarn-plugin-nixify.cjs
7 | spec: "https://raw.githubusercontent.com/stephank/yarn-plugin-nixify/main/dist/yarn-plugin-nixify.js"
8 |
9 | yarnPath: .yarn/releases/yarn-3.3.0.cjs
10 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:20-alpine as build
2 | RUN corepack enable
3 |
4 | RUN apk add alpine-sdk python3
5 |
6 | WORKDIR /app
7 | COPY .yarn .yarn
8 | COPY .yarnrc.yml .
9 | COPY package.json .
10 | COPY yarn.lock .
11 | RUN yarn install --inline-builds
12 |
13 | COPY tsconfig.json .
14 | COPY src src
15 | RUN yarn build
16 |
17 | FROM node:20-alpine
18 | RUN corepack enable
19 |
20 | WORKDIR /app
21 | COPY --from=build /app/package.json ./
22 | COPY --from=build /app/.pnp.cjs ./
23 | COPY --from=build /app/.pnp.loader.mjs ./
24 | COPY --from=build /app/.yarn ./.yarn
25 | COPY --from=build /app/build ./build
26 |
27 | ENV DIR=/music
28 | ENV STORE=/store
29 | ENV TELEGRAM_API_BASE=https://api.telegram.org
30 |
31 | CMD node -r ./.pnp.cjs build/index.js
32 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Netease Sync
2 |
3 | 自动将网易云的歌单同步到本地
4 |
5 | ## 存储方式
6 |
7 | 所有本地有的音乐以 ID 为名称保存在 `pool` 文件夹中,并在歌单文件夹中维护以 `歌手 - 歌名.{mp3,flac}` 为名,到 `pool` 中文件的软链接
8 |
9 | ## 咕咕
10 |
11 | - [x] 下载新增音乐
12 | - [x] 删除已删除的音乐
13 | - [x] 支持多个歌单
14 | - [ ] 歌灰了自动将本地有的文件(如果有)上传到音乐云盘
15 | - [x] Arch Linux 包部署
16 | - [x] NixOS Flake 部署
17 | - [X] Docker 部署
18 | - [ ] 自带一个 [NeteaseCloudMusicApi](https://github.com/Binaryify/NeteaseCloudMusicApi) 或者 [YesPlayMusic](https://github.com/qier222/YesPlayMusic),用本地文件作为缓存
19 | - [ ] 内置 [UnblockNeteaseMusic](https://github.com/UnblockNeteaseMusic/server) 下载灰掉的音乐
20 | - [x] 支持使用另一个 Cookie 来下载音乐
21 | - [x] 自动将音乐上传到 Telegram Channel
22 |
23 | ## 使用方法
24 |
25 | ### Arch Linux
26 |
27 | 1. 首先安装 `netease-music-sync` [AUR](https://aur.archlinux.org/packages/netease-music-sync) [凌莞源](https://pacman.ltd/x86_64/netease-music-sync)
28 |
29 | ```bash
30 | yay -S netease-music-sync
31 | ```
32 |
33 | 2. 运行 `netease-login` 获取 cookies
34 |
35 | 3. 编辑 `/etc/netease-music-sync.conf`,填入相关信息
36 |
37 | ```bash
38 | sudo vi /etc/netease-music-sync.conf
39 | ```
40 |
41 | 歌单 ID 获取方法:在手机上分享歌单,URL 里就有 ID。或者在网页上打开,地址栏也有
42 |
43 | 4. 启用服务
44 |
45 | ```bash
46 | sudo systemctl enable --now netease-music-sync.service
47 | ```
48 |
49 | #### 以指定用户身份运行
50 |
51 | 如果你想要以指定用户身份运行同步程序,比如说写入文件要以特定的用户/组身份,可以在启用服务之前这样操作
52 |
53 | ```bash
54 | sudo systemctl edit netease-music-sync.service
55 | ```
56 |
57 | 在编辑区域增加以下内容
58 |
59 | ```ini
60 | [Service]
61 | User=你需要的用户名
62 | ```
63 |
--------------------------------------------------------------------------------
/archpkg/PKGBUILD:
--------------------------------------------------------------------------------
1 | pkgname='netease-music-sync'
2 | pkgver=1.0.1.r0.0000000
3 | pkgrel=1
4 | pkgdesc='自动将网易云的歌单同步到本地'
5 | license=('MIT')
6 | depends=('nodejs>=17.5')
7 | makedepends=('yarn' 'git')
8 | arch=('any')
9 | url="https://github.com/Clansty/${pkgname}"
10 | source=("${pkgname}::git+${url}"
11 | netease-login
12 | ${pkgname}.{conf,service})
13 | sha256sums=('SKIP' 'SKIP' 'SKIP' 'SKIP')
14 | backup=("etc/${pkgname}.conf")
15 |
16 | pkgver(){
17 | cd "${srcdir}/${pkgname}"
18 | git describe --long --tags | sed 's/^v//;s/-/.r/;s/-/./g'
19 | }
20 |
21 | prepare(){
22 | cd "${srcdir}/${pkgname}"
23 | yarn install
24 | }
25 |
26 | build(){
27 | cd "${srcdir}/${pkgname}"
28 | yarn run build
29 | }
30 |
31 | package(){
32 | install -d "${pkgdir}/usr/share/${pkgname}"
33 | install -Dm755 netease-login "${pkgdir}/usr/bin/netease-login"
34 | install -Dm644 "${pkgname}.service" "${pkgdir}/usr/lib/systemd/system/${pkgname}.service"
35 | install -Dm644 "${pkgname}.conf" "${pkgdir}/etc/${pkgname}.conf"
36 | cd "${srcdir}/${pkgname}"
37 | cp -a build .yarn .yarnrc.yml yarn.lock package.json "${pkgdir}/usr/share/${pkgname}"
38 | rm -rf "${pkgdir}/usr/share/${pkgname}/.yarn/cache"
39 | cd "${pkgdir}/usr/share/${pkgname}"
40 | yarn workspaces focus --production
41 | }
42 |
--------------------------------------------------------------------------------
/archpkg/netease-login:
--------------------------------------------------------------------------------
1 | #!/usr/bin/bash
2 |
3 | cd /usr/share/netease-music-sync
4 | /usr/bin/node -r ./.pnp.cjs build/login.js
5 |
--------------------------------------------------------------------------------
/archpkg/netease-music-sync.conf:
--------------------------------------------------------------------------------
1 | COOKIE="通过 netease-login 获取到 cookie"
2 | DOWNLOAD_COOKIE="" # 如果填了这个,将使用这个 Cookie 来下载除了音乐云盘以外的音乐
3 | DIR="/mnt/music"
4 | PLAYLISTS="逗号风格的歌单 ID"
5 | TELEGRAM_CHANNELS="歌单 ID:Channel ID"
6 | TELEGRAM_TOKEN=""
7 | TELEGRAM_API_BASE="https://api.telegram.org"
8 |
--------------------------------------------------------------------------------
/archpkg/netease-music-sync.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=自动将网易云的歌单同步到本地
3 | Documentation=https://github.com/Clansty/netease-music-sync
4 | After=network-online.target
5 |
6 | [Service]
7 | Type=simple
8 | EnvironmentFile=/etc/netease-music-sync.conf
9 | WorkingDirectory=/usr/share/netease-music-sync
10 | ExecStart=/usr/bin/node --experimental-fetch -r ./.pnp.cjs build/index.js
11 | Restart=on-failure
12 | RestartSec=120
13 |
14 | [Install]
15 | WantedBy=multi-user.target
16 |
--------------------------------------------------------------------------------
/default.nix:
--------------------------------------------------------------------------------
1 | # This is a minimal `default.nix` by yarn-plugin-nixify. You can customize it
2 | # as needed, it will not be overwritten by the plugin.
3 |
4 | { pkgs ? import { } }:
5 |
6 | (pkgs.callPackage ./yarn-project.nix { } { src = ./.; }).overrideAttrs (attrs: {
7 | buildPhase = with pkgs; ''
8 | yarn build
9 | '';
10 |
11 | nativeBuildInputs = attrs.buildInputs ++ (with pkgs; [
12 | python3
13 | ]);
14 | })
15 |
--------------------------------------------------------------------------------
/flake.nix:
--------------------------------------------------------------------------------
1 | {
2 | description = "Flake that configures Netease Music Sync";
3 |
4 | inputs = {
5 | nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.11";
6 | flake-utils.url = "github:numtide/flake-utils";
7 | };
8 | outputs = { self, nixpkgs, flake-utils }:
9 | {
10 | packages = nixpkgs.lib.mapAttrs
11 | (system: pkgs: {
12 | default = import ./default.nix { inherit pkgs; };
13 | })
14 | nixpkgs.legacyPackages;
15 | nixosModules.default = import ./nixos/module.nix { inherit self; };
16 | } // flake-utils.lib.eachDefaultSystem
17 | (system:
18 | let
19 | pkgs = nixpkgs.legacyPackages.${system};
20 | flakePkgs = self.packages.${system};
21 | in
22 | {
23 | devShells.default = import ./shell.nix { inherit pkgs flakePkgs; };
24 | }
25 | );
26 | }
27 |
--------------------------------------------------------------------------------
/nixos/module.nix:
--------------------------------------------------------------------------------
1 | { self }:
2 | { pkgs, config, ... }:
3 |
4 | with pkgs.lib;
5 | {
6 | imports = [
7 | ./service.nix
8 | ];
9 | options.services.netease-music-sync = {
10 | enable = mkEnableOption "Enables Netease Music Sync service";
11 | package = mkOption {
12 | type = types.package;
13 | default = self.packages.${pkgs.system}.default;
14 | };
15 | cookie = mkOption {
16 | type = types.str;
17 | };
18 | download-cookie = mkOption {
19 | type = types.str;
20 | default = "";
21 | };
22 | download-dir = mkOption {
23 | type = types.str;
24 | };
25 | playlists = mkOption {
26 | type = types.str;
27 | };
28 | telegram-token = mkOption {
29 | type = types.str;
30 | };
31 | telegram-channels = mkOption {
32 | type = types.str;
33 | };
34 | telegram-api-base = mkOption {
35 | type = types.str;
36 | default = "https://api.telegram.org";
37 | };
38 | };
39 | }
40 |
--------------------------------------------------------------------------------
/nixos/service.nix:
--------------------------------------------------------------------------------
1 | { pkgs, lib, config, ... }:
2 |
3 | let
4 | cfg = config.services.netease-music-sync;
5 | in
6 | {
7 | config = lib.mkIf cfg.enable {
8 | users = {
9 | users.netease-music-sync = {
10 | isSystemUser = true;
11 | createHome = true;
12 | home = "/var/lib/netease-music-sync";
13 | group = "netease-music-sync";
14 | description = "netease-music-sync service";
15 | };
16 |
17 | groups.netease-music-sync = { };
18 | };
19 |
20 | systemd.services.netease-music-sync = {
21 | description = "自动将网易云的歌单同步到本地";
22 | path = [ cfg.package ];
23 | wantedBy = [ "multi-user.target" ];
24 | after = [ "network-online.target" ];
25 | environment = {
26 | COOKIE = cfg.cookie;
27 | DOWNLOAD_COOKIE = cfg.download-cookie;
28 | DIR = cfg.download-dir;
29 | PLAYLISTS = cfg.playlists;
30 | TELEGRAM_CHANNELS = cfg.telegram-channels;
31 | TELEGRAM_TOKEN = cfg.telegram-token;
32 | TELEGRAM_API_BASE = cfg.telegram-api-base;
33 | };
34 | serviceConfig = {
35 | User = "netease-music-sync";
36 | Group = "netease-music-sync";
37 | Restart = "on-failure";
38 | ExecStart = "${cfg.package}/bin/netease-music-sync --experimental-fetch";
39 | WorkingDirectory = "${cfg.package}/libexec/netease-music-sync";
40 | };
41 | };
42 | };
43 | }
44 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "netease-music-sync",
3 | "version": "1.1.0",
4 | "private": true,
5 | "keywords": [],
6 | "bin": "build/index.js",
7 | "files": [
8 | "build"
9 | ],
10 | "scripts": {
11 | "build": "tsc",
12 | "dev": "ts-node src/index.ts",
13 | "login": "ts-node src/login.ts"
14 | },
15 | "engines": {
16 | "node": ">=17.5"
17 | },
18 | "devDependencies": {
19 | "@types/node": "^17.0.31",
20 | "@types/node-telegram-bot-api": "^0",
21 | "@types/prompts": "^2",
22 | "ts-node": "^10.7.0",
23 | "tsc": "^2.0.4",
24 | "typescript": "^4.6.4"
25 | },
26 | "packageManager": "yarn@3.3.0",
27 | "dependencies": {
28 | "NeteaseCloudMusicApi": "^4.9.0",
29 | "abstract-level": "^1.0.3",
30 | "dotenv": "^16.0.0",
31 | "level": "^8.0.0",
32 | "metaflac-js2": "^1.0.8",
33 | "node-id3": "^0.2.3",
34 | "node-telegram-bot-api": "^0.61.0",
35 | "prompts": "^2.4.2",
36 | "sleep-promise": "^9.1.0"
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/shell.nix:
--------------------------------------------------------------------------------
1 | { pkgs, flakePkgs }:
2 | pkgs.mkShell {
3 | buildInputs = with pkgs; with flakePkgs; [
4 | yarn
5 | nodejs-18_x
6 | ];
7 | }
8 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | import 'dotenv/config';
2 | import nease from 'NeteaseCloudMusicApi';
3 | import Pool from './models/Pool';
4 | import path from 'path';
5 | import PlayList from './models/PlayList';
6 | import sleep from 'sleep-promise';
7 |
8 | const cookie = process.env.COOKIE;
9 | const baseDir = process.env.DIR;
10 | const playlistIds = process.env.PLAYLISTS.split(',');
11 |
12 | (async () => {
13 | // 坏诶,是 anyScript
14 | const pool = new Pool(path.join(baseDir, 'pool'));
15 | const playlists: PlayList[] = [];
16 | for (const playlistId of playlistIds) {
17 | const playlist = new PlayList(
18 | (await nease.playlist_detail({ id: playlistId, cookie })).body.playlist, baseDir, pool);
19 | playlists.push(playlist);
20 | }
21 | console.log('初始化成功');
22 | while (true) {
23 | for (const playlist of playlists) {
24 | await playlist.syncSongs();
25 | }
26 | await sleep(1000 * 60 * 60);
27 | }
28 | })();
29 |
--------------------------------------------------------------------------------
/src/login.ts:
--------------------------------------------------------------------------------
1 | import nease from 'NeteaseCloudMusicApi';
2 | import prompts from 'prompts';
3 |
4 | (async () => {
5 | const { loginMethod } = await prompts({
6 | type: 'select', name: 'loginMethod', message: '选择登录方式',
7 | choices: [
8 | { title: '手机号密码', value: 'phone' },
9 | { title: '手机验证码', value: 'code' },
10 | { title: '邮箱', value: 'mail' },
11 | ],
12 | });
13 | let cookie: string;
14 | switch (loginMethod) {
15 | case 'phone': {
16 | const phonePassword = await prompts([
17 | { type: 'text', name: 'phone', message: '手机号' },
18 | { type: 'text', name: 'password', message: '密码' },
19 | ]);
20 | const result = await nease.login_cellphone(phonePassword);
21 | cookie = result.body.cookie;
22 | break;
23 | }
24 | case 'code': {
25 | const { phone } = await prompts([
26 | { type: 'text', name: 'phone', message: '手机号' },
27 | ]);
28 | await nease.captcha_sent({ cellphone: phone });
29 | const { captcha } = await prompts([
30 | { type: 'text', name: 'captcha', message: '短信验证码' },
31 | ]);
32 | const result = await nease.login_cellphone({ phone, captcha });
33 | cookie = result.body.cookie;
34 | break;
35 | }
36 | case 'mail': {
37 | const emailPassword = await prompts([
38 | { type: 'text', name: 'email', message: '网易邮箱' },
39 | { type: 'text', name: 'password', message: '密码' },
40 | ]);
41 | const result = await nease.login(emailPassword);
42 | cookie = result.body.cookie;
43 | break;
44 | }
45 | }
46 | console.log('你的 Cookie:\n' + cookie);
47 | })();
48 |
--------------------------------------------------------------------------------
/src/models/PlayList.ts:
--------------------------------------------------------------------------------
1 | import path from "path";
2 | import fs from "fs";
3 | import nease from "NeteaseCloudMusicApi";
4 | import Pool from "./Pool";
5 | import { Level } from "level";
6 | import bot from "../providers/bot";
7 |
8 | const cookie = process.env.COOKIE;
9 | const downloadCookie = process.env.DOWNLOAD_COOKIE || cookie;
10 | const storePath = process.env.STORE || path.join(process.env.HOME, ".netease-music-sync");
11 |
12 | export default class PlayList {
13 | public readonly id: number;
14 | public readonly name: string;
15 | public readonly dir: string;
16 | private readonly telegramMessageIdMap: Level;
17 | private readonly telegramChannelId: number;
18 |
19 | constructor(info: any, baseDir: string, private readonly pool: Pool) {
20 | this.name = info.name;
21 | this.id = info.id;
22 | this.dir = path.join(baseDir, this.name);
23 | if (!fs.existsSync(this.dir)) {
24 | fs.mkdirSync(this.dir, { recursive: true });
25 | }
26 | if (!fs.existsSync(storePath)) {
27 | fs.mkdirSync(storePath, { recursive: true });
28 | }
29 | this.telegramMessageIdMap = new Level(path.join(storePath, this.id.toString()));
30 | if (process.env.TELEGRAM_CHANNELS) {
31 | const configs = process.env.TELEGRAM_CHANNELS.split(",");
32 | const configForThisPlayList = configs.find((it) => it.startsWith(`${this.id}:`));
33 | if (configForThisPlayList) {
34 | this.telegramChannelId = Number(configForThisPlayList.split(":")[1]);
35 | }
36 | }
37 | }
38 |
39 | private async getAllSongs() {
40 | const res = await nease.playlist_track_all({ id: this.id, cookie });
41 | return res.body.songs as any[];
42 | }
43 |
44 | private linkSong(fileName: string, poolFile: string) {
45 | return fs.symlinkSync(`../pool/${poolFile}`, path.join(this.dir, fileName));
46 | }
47 |
48 | private unlinkSong(fileName: string) {
49 | return fs.unlinkSync(path.join(this.dir, fileName));
50 | }
51 |
52 | private localExists(fileName: string) {
53 | return fs.existsSync(path.join(this.dir, fileName));
54 | }
55 |
56 | private async uploadToChannel(fileName: string, title: string, performer: string, thumb: string, duration: number) {
57 | try {
58 | await this.telegramMessageIdMap.get(fileName);
59 | return;
60 | } catch { }
61 | try {
62 | console.log("上传到 Telegram:", fileName);
63 | const result = await bot.sendAudio(this.telegramChannelId, path.join(this.dir, fileName), {
64 | title,
65 | performer,
66 | // @ts-ignore
67 | thumb,
68 | duration,
69 | });
70 | await this.telegramMessageIdMap.put(fileName, result.message_id);
71 | } catch (error) {
72 | console.error("无法上传:", fileName, error.message);
73 | }
74 | }
75 |
76 | private async deleteFromChannel(fileName: string) {
77 | let messageId: number;
78 | try {
79 | messageId = await this.telegramMessageIdMap.get(fileName);
80 | } catch { }
81 | try {
82 | await bot.deleteMessage(this.telegramChannelId, messageId);
83 | await this.telegramMessageIdMap.del(fileName);
84 | } catch (error) {
85 | console.error("无法从 Telegram 删除:", fileName, error.message);
86 | }
87 | }
88 |
89 | public async syncSongs() {
90 | console.log("同步歌单:", this.name);
91 | await this.telegramMessageIdMap.open();
92 | const songs = await this.getAllSongs();
93 | // 这个用来在最后对比删除已经删除了的歌的链接
94 | const fileNamesInPlaylist: string[] = [];
95 | for (const song of songs) {
96 | const title = song.name;
97 | const id = song.id;
98 | // pc 那个适配云盘项目
99 | const artists: string[] = song.pc?.ar ? [song.pc.ar] : song.ar.map((ar) => ar.name);
100 | const album = song.pc?.alb || song.al.name;
101 | const picUrl = song.al.picUrl;
102 | const durationMs = song.dt;
103 | let fileNameBeforeExt = `${artists.join(" ")} - ${title}`.replace(/[\/\\]/g, "_");
104 | if (fileNameBeforeExt.length > 100) {
105 | fileNameBeforeExt = `${artists[0]} 等${artists.length}只 - ${title}`.replace(/[\/\\]/g, "_");
106 | }
107 |
108 | try {
109 | const type = this.pool.exists(id);
110 | let fileName: string;
111 | if (type) {
112 | fileName = `${fileNameBeforeExt}.${type}`;
113 | fileNamesInPlaylist.push(fileName);
114 | if (!this.localExists(fileName)) {
115 | console.log("链接:", fileName);
116 | this.linkSong(fileName, `${id}.${type}`);
117 | }
118 | } else {
119 | const download = (
120 | await nease.song_download_url({
121 | cookie: song.pc ? cookie : downloadCookie,
122 | id: song.id,
123 | })
124 | ).body.data as any;
125 | if (!download.type) {
126 | console.log("灰了或者需要会员,无法下载:", fileNameBeforeExt);
127 | continue;
128 | }
129 | const url = download.url;
130 | const type = download.type.toLowerCase();
131 | fileName = `${fileNameBeforeExt}.${type}`;
132 | fileNamesInPlaylist.push(fileName);
133 | console.log("下载:", fileName);
134 | await this.pool.download(id, url, type, title, artists, album, picUrl);
135 | this.linkSong(fileName, `${id}.${type}`);
136 | }
137 | if (this.telegramChannelId) {
138 | await this.uploadToChannel(fileName, title, artists.join(" "), picUrl, Math.floor(durationMs / 1000));
139 | }
140 | } catch (e) {
141 | console.log("处理失败", fileNameBeforeExt, e.message);
142 | }
143 | }
144 | const filesInDir = fs.readdirSync(this.dir);
145 | for (const i of filesInDir) {
146 | if (i === '@eaDir') continue;
147 | if (fileNamesInPlaylist.includes(i)) continue;
148 | console.log("删除:", i);
149 | this.unlinkSong(i);
150 | if (this.telegramChannelId) {
151 | await this.deleteFromChannel(i);
152 | }
153 | }
154 | console.log("同步完成:", this.name);
155 | }
156 | }
157 |
--------------------------------------------------------------------------------
/src/models/Pool.ts:
--------------------------------------------------------------------------------
1 | // 所有的歌曲本地文件放在 pool 里面,文件名为 id。然后从 pool 软链接到歌单文件夹
2 | import fs from 'fs';
3 | import path from 'path';
4 | import { Writable } from 'stream';
5 | import id3 from 'node-id3';
6 | import MetaFlac from 'metaflac-js2';
7 |
8 | export default class Pool {
9 | public constructor(public readonly dir: string) {
10 | if (!fs.existsSync(dir)) {
11 | fs.mkdirSync(dir, { recursive: true });
12 | }
13 | }
14 |
15 | public exists(id: string | number, type?: string) {
16 | if (!type) {
17 | const TYPES = ['flac', 'mp3', 'wav', 'wma', 'm4a', 'aac', 'ogg', 'ape', 'opus', 'aiff'];
18 | for (const possibleType of TYPES) {
19 | if (!fs.existsSync(path.join(this.dir, `${id}.${possibleType}`))) continue;
20 | type = possibleType;
21 | break;
22 | }
23 | }
24 | if (!type) return null;
25 | const fileAbsPath = path.join(this.dir, `${id}.${type.toLowerCase()}`);
26 | if (!fs.existsSync(fileAbsPath)) return null;
27 | if (!fs.statSync(fileAbsPath).size) {
28 | console.log('删除空文件', fileAbsPath);
29 | fs.unlinkSync(fileAbsPath);
30 | return null;
31 | }
32 | return type;
33 | }
34 |
35 | public async download(id: string | number, url: string, type: string,
36 | title: string, artists: string[], album: string, picUrl: string) {
37 | const fileAbsPath = path.join(this.dir, `${id}.${type.toLowerCase()}`);
38 | if (this.exists(id, type))
39 | return;
40 | try {
41 | const fileStream = fs.createWriteStream(fileAbsPath);
42 | const file = await fetch(url);
43 | // @ts-ignore @types/node 该 18 了
44 | await file.body.pipeTo(Writable.toWeb(fileStream));
45 | }
46 | catch (e) {
47 | console.error('下载失败', e.message);
48 | // 删除下载失败的文件
49 | fs.unlinkSync(fileAbsPath);
50 | // 同步的模块还需要处理下载失败,跳过链接
51 | throw e;
52 | }
53 |
54 | // 写入元数据
55 | try {
56 | switch (type.toLowerCase()) {
57 | case 'mp3': {
58 | const orig = id3.read(fileAbsPath);
59 | const tags: id3.Tags = {};
60 | // 优先使用原先的
61 | if (!orig.title) {
62 | tags.title = title;
63 | }
64 | if (!orig.artist) {
65 | tags.artist = artists.join('/');
66 | }
67 | if (!orig.album) {
68 | tags.album = album;
69 | }
70 | if (!orig.image) {
71 | const image = await fetch(picUrl);
72 | tags.image = {
73 | mime: image.headers.get('content-type'),
74 | type: { id: 3, name: 'front cover' },
75 | description: undefined,
76 | imageBuffer: Buffer.from(await image.arrayBuffer()),
77 | };
78 | }
79 | id3.update(tags, fileAbsPath);
80 | break;
81 | }
82 | case 'flac': {
83 | // AnyScript 坏,没别的库好用了😭
84 | const flac = new MetaFlac(fileAbsPath);
85 | if (!flac.getTag('TITLE')) {
86 | flac.setTag('TITLE=' + title);
87 | }
88 | if (!flac.getTag('ARTIST')) {
89 | flac.setTag('ARTIST=' + artists.join('/'));
90 | }
91 | if (!flac.getTag('ALBUM')) {
92 | flac.setTag('ALBUM=' + album);
93 | }
94 | const image = await fetch(picUrl);
95 | // macOS 显示不了 flac 的封面,是 macOS 的问题
96 | flac.importPicture(Buffer.from(await image.arrayBuffer()));
97 | flac.save();
98 | break;
99 | }
100 | }
101 | }
102 | catch (e) {
103 | console.error('写入元数据失败', e.message);
104 | }
105 | }
106 | }
107 |
--------------------------------------------------------------------------------
/src/providers/bot.ts:
--------------------------------------------------------------------------------
1 | import TelegramBot from "node-telegram-bot-api";
2 |
3 | export default new TelegramBot(process.env.TELEGRAM_TOKEN!, {
4 | polling: false,
5 | baseApiUrl: process.env.TELEGRAM_API_BASE,
6 | });
7 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "incremental": true,
4 | "target": "ESNext",
5 | "outDir": "build",
6 | "rootDir": "src",
7 | "moduleResolution": "node",
8 | "module": "CommonJS",
9 | "esModuleInterop": true,
10 | "resolveJsonModule": true
11 | },
12 | "exclude": [
13 | "node_modules"
14 | ]
15 | }
16 |
--------------------------------------------------------------------------------