Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 1x 1x 1x 1x 2x 1x 2x 103x 1x 9x 6x 6x 5x 4x 5x 3x 6x 3x 1x 6x 6x 6x | const request = require('NeteaseCloudMusicApi/util/request');
const { join } = require('path');
const { existsSync, readdirSync } = require('fs');
// eslint-disable-next-line import/no-extraneous-dependencies
require('request').debug = false;
// 可用模块分析
const j = path => join(__dirname, `../${path}/NeteaseCloudMusicApi/module`);
const [modulePath = ''] = [
j('..'),
j('node_modules')
].filter(p => existsSync(p));
const modules = readdirSync(modulePath).filter(p => p.endsWith('.js')).map(p => p.replace(/.js$/, ''));
// 加载模块方法
const makeFn = (module) => {
if (modules.includes(module)) {
// eslint-disable-next-line global-require, import/no-dynamic-require
const mod = require(join(modulePath, module));
return (data = {}) => {
if (!data.cookie) {
Object.assign(data, { cookie: {} });
}
return mod(data, request);
};
}
return () => undefined;
};
const makeProxy = module => new Proxy({}, {
get: (_, subModule) => makeFn(`${module}_${subModule}`)
});
module.exports = new Proxy({}, {
get: (_, property) => {
const fn = makeFn(property);
Object.setPrototypeOf(fn, makeProxy(property));
return fn;
}
});
|