Skip to content
This repository has been archived by the owner on Apr 16, 2024. It is now read-only.

Commit

Permalink
refactor: allow using server statically
Browse files Browse the repository at this point in the history
將原本 "NeteaseCloudMusicApi/server"
掃描 modules 目錄的部分抽出 server.js,
改移到 main.js。這樣使用者就有辦法只載入
靜態的伺服器部分(不動態載入模組)。

這個 patch 的 breaking changes 不易發生。
可作為 patch version 發佈。
  • Loading branch information
pan93412 committed Jan 28, 2022
1 parent 91a3ba7 commit b02d4d5
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 24 deletions.
34 changes: 34 additions & 0 deletions main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
const fs = require('fs')
const path = require('path')
const { cookieToJson } = require('./util')
const request = require('./util/request')

/** @type {Record<string, any>} */
let obj = {}
fs.readdirSync(path.join(__dirname, 'module'))
.reverse()
.forEach((file) => {
if (!file.endsWith('.js')) return
let fileModule = require(path.join(__dirname, 'module', file))
let fn = file.split('.').shift() || ''
obj[fn] = function (data) {
if (typeof data.cookie === 'string') {
data.cookie = cookieToJson(data.cookie)
}
return fileModule(
{
...data,
cookie: data.cookie ? data.cookie : {},
},
request,
)
}
})

/**
* @type {Record<string, any> & import("./server")}
*/
module.exports = {
...require('./server'),
...obj,
}
18 changes: 18 additions & 0 deletions main.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
const assert = require('assert')
const main = require('./main')

describe('methods in server.js', () => {
it('has serveNcmApi', () => {
assert.strictEqual(typeof main.serveNcmApi, 'function')
})

it('has getModulesDefinitions', () => {
assert.strictEqual(typeof main.getModulesDefinitions, 'function')
})
})

describe('methods in module', () => {
it('has activate_init_profile', () => {
assert.strictEqual(typeof main.activate_init_profile, 'function')
})
})
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"description": "网易云音乐 NodeJS 版 API",
"scripts": {
"start": "node app.js",
"test": "mocha -r intelli-espower-loader -t 20000 server.test.js --exit",
"test": "mocha -r intelli-espower-loader -t 20000 server.test.js main.test.js --exit",
"lint": "eslint \"**/*.{js,ts}\"",
"lint-fix": "eslint --fix \"**/*.{js,ts}\"",
"prepare": "husky install",
Expand All @@ -26,7 +26,7 @@
"音乐",
"网易云音乐nodejs"
],
"main": "server.js",
"main": "main.js",
"types": "./interface.d.ts",
"engines": {
"node": ">=12"
Expand Down Expand Up @@ -78,4 +78,4 @@
"prettier": "2.5.1",
"typescript": "4.5.2"
}
}
}
21 changes: 0 additions & 21 deletions server.js
Original file line number Diff line number Diff line change
Expand Up @@ -294,28 +294,7 @@ async function serveNcmApi(options) {
return appExt
}

let obj = {}
fs.readdirSync(path.join(__dirname, 'module'))
.reverse()
.forEach((file) => {
if (!file.endsWith('.js')) return
let fileModule = require(path.join(__dirname, 'module', file))
obj[file.split('.').shift()] = function (data) {
if (typeof data.cookie === 'string') {
data.cookie = cookieToJson(data.cookie)
}
return fileModule(
{
...data,
cookie: data.cookie ? data.cookie : {},
},
request,
)
}
})

module.exports = {
serveNcmApi,
getModulesDefinitions,
...obj,
}

0 comments on commit b02d4d5

Please sign in to comment.