@waline/vercel 1.26.3 → 1.26.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/404.html +39 -0
- package/dist/500.html +275 -0
- package/dist/index.js +58501 -0
- package/dist/package.json +54 -0
- package/dist/src/config/adapter.js +170 -0
- package/dist/src/config/config.js +134 -0
- package/dist/src/config/extend.js +38 -0
- package/dist/src/config/middleware.js +66 -0
- package/dist/src/config/router.js +1 -0
- package/dist/src/controller/article.js +91 -0
- package/dist/src/controller/comment.js +758 -0
- package/dist/src/controller/db.js +71 -0
- package/dist/src/controller/index.js +36 -0
- package/dist/src/controller/oauth.js +136 -0
- package/dist/src/controller/rest.js +60 -0
- package/dist/src/controller/token/2fa.js +66 -0
- package/dist/src/controller/token.js +75 -0
- package/dist/src/controller/user/password.js +52 -0
- package/dist/src/controller/user.js +289 -0
- package/dist/src/controller/verification.js +35 -0
- package/dist/src/extend/controller.js +25 -0
- package/dist/src/extend/think.js +84 -0
- package/dist/src/locales/en.json +19 -0
- package/dist/src/locales/index.js +12 -0
- package/dist/src/locales/zh-CN.json +19 -0
- package/dist/src/locales/zh-TW.json +19 -0
- package/dist/src/logic/article.js +27 -0
- package/dist/src/logic/base.js +164 -0
- package/dist/src/logic/comment.js +317 -0
- package/dist/src/logic/db.js +81 -0
- package/dist/src/logic/oauth.js +10 -0
- package/dist/src/logic/token/2fa.js +28 -0
- package/dist/src/logic/token.js +53 -0
- package/dist/src/logic/user/password.js +11 -0
- package/dist/src/logic/user.js +117 -0
- package/dist/src/middleware/dashboard.js +23 -0
- package/dist/src/middleware/version.js +6 -0
- package/dist/src/service/akismet.js +41 -0
- package/dist/src/service/avatar.js +35 -0
- package/dist/src/service/markdown/highlight.js +32 -0
- package/dist/src/service/markdown/index.js +63 -0
- package/dist/src/service/markdown/katex.js +49 -0
- package/dist/src/service/markdown/mathCommon.js +156 -0
- package/dist/src/service/markdown/mathjax.js +78 -0
- package/dist/src/service/markdown/utils.js +11 -0
- package/dist/src/service/markdown/xss.js +44 -0
- package/dist/src/service/notify.js +537 -0
- package/dist/src/service/storage/base.js +31 -0
- package/dist/src/service/storage/cloudbase.js +221 -0
- package/dist/src/service/storage/deta.js +307 -0
- package/dist/src/service/storage/github.js +377 -0
- package/dist/src/service/storage/leancloud.js +430 -0
- package/dist/src/service/storage/mongodb.js +179 -0
- package/dist/src/service/storage/mysql.js +123 -0
- package/dist/src/service/storage/postgresql.js +84 -0
- package/dist/src/service/storage/sqlite.js +11 -0
- package/dist/src/service/storage/tidb.js +3 -0
- package/package.json +1 -1
- package/src/controller/comment.js +1 -2
- package/src/extend/think.js +19 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
const MySQL = require('./mysql');
|
|
2
|
+
|
|
3
|
+
module.exports = class extends MySQL {
|
|
4
|
+
model(tableName) {
|
|
5
|
+
return super.model(tableName.toLowerCase());
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
async select(where, options = {}) {
|
|
9
|
+
const lowerWhere = {};
|
|
10
|
+
|
|
11
|
+
for (const i in where) {
|
|
12
|
+
lowerWhere[i.toLowerCase()] = where[i];
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
if (options && options.desc) {
|
|
16
|
+
options.desc = options.desc.toLowerCase();
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
if (Array.isArray(options.field)) {
|
|
20
|
+
options.field = options.field.map((field) => field.toLowerCase());
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const data = await super.select(lowerWhere, options);
|
|
24
|
+
|
|
25
|
+
return data.map(({ insertedat, createdat, updatedat, ...item }) => {
|
|
26
|
+
const mapFields = {
|
|
27
|
+
insertedAt: insertedat,
|
|
28
|
+
createdAt: createdat,
|
|
29
|
+
updatedAt: updatedat,
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
for (const field in mapFields) {
|
|
33
|
+
if (!mapFields[field]) {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
item[field] = mapFields[field];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return item;
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
async add(data) {
|
|
44
|
+
['insertedAt', 'createdAt', 'updatedAt']
|
|
45
|
+
.filter((key) => data[key])
|
|
46
|
+
.forEach((key) => {
|
|
47
|
+
const val = data[key];
|
|
48
|
+
|
|
49
|
+
data[key.toLowerCase()] =
|
|
50
|
+
val instanceof Date
|
|
51
|
+
? think.datetime(val, 'YYYY-MM-DD HH:mm:ss')
|
|
52
|
+
: val;
|
|
53
|
+
delete data[key];
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
return super.add(data);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
async count(...args) {
|
|
60
|
+
let result = await super.count(...args);
|
|
61
|
+
|
|
62
|
+
try {
|
|
63
|
+
if (Array.isArray(result)) {
|
|
64
|
+
result.forEach((r) => {
|
|
65
|
+
r.count = parseInt(r.count);
|
|
66
|
+
});
|
|
67
|
+
} else {
|
|
68
|
+
result = parseInt(result);
|
|
69
|
+
}
|
|
70
|
+
} catch (e) {
|
|
71
|
+
console.log(e);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return result;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
async setSeqId(id) {
|
|
78
|
+
const instance = this.model(this.tableName);
|
|
79
|
+
|
|
80
|
+
return instance.query(
|
|
81
|
+
`ALTER SEQUENCE ${instance.tableName}_seq RESTART WITH ${id};`
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const MySQL = require('./mysql');
|
|
2
|
+
|
|
3
|
+
module.exports = class extends MySQL {
|
|
4
|
+
async setSeqId(id) {
|
|
5
|
+
const instance = this.model(this.tableName);
|
|
6
|
+
|
|
7
|
+
return instance.query(
|
|
8
|
+
`UPDATE SQLITE_SEQUENCE SET SEQ=${id} WHERE NAME='${instance.tableName}';`
|
|
9
|
+
);
|
|
10
|
+
}
|
|
11
|
+
};
|
package/package.json
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
const parser = require('ua-parser-js');
|
|
2
1
|
const BaseRest = require('./rest');
|
|
3
2
|
const akismet = require('../service/akismet');
|
|
4
3
|
const { getMarkdownParser } = require('../service/markdown');
|
|
@@ -11,7 +10,7 @@ async function formatCmt(
|
|
|
11
10
|
{ avatarProxy },
|
|
12
11
|
loginUser
|
|
13
12
|
) {
|
|
14
|
-
ua =
|
|
13
|
+
ua = think.uaParser(ua);
|
|
15
14
|
if (!think.config('disableUserAgent')) {
|
|
16
15
|
comment.browser = `${ua.browser.name || ''}${(ua.browser.version || '')
|
|
17
16
|
.split('.')
|
package/src/extend/think.js
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
|
+
const parser = require('ua-parser-js');
|
|
1
2
|
const ip2region = require('dy-node-ip2region');
|
|
2
3
|
const helper = require('think-helper');
|
|
3
4
|
const preventMessage = 'PREVENT_NEXT_PROCESS';
|
|
4
5
|
|
|
5
6
|
const regionSearch = ip2region.create(process.env.IP2REGION_DB);
|
|
6
7
|
|
|
8
|
+
const OS_VERSION_MAP = {
|
|
9
|
+
'Windows': {
|
|
10
|
+
'NT 11.0': '11',
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
|
|
7
14
|
module.exports = {
|
|
8
15
|
prevent() {
|
|
9
16
|
throw new Error(preventMessage);
|
|
@@ -81,4 +88,16 @@ module.exports = {
|
|
|
81
88
|
return '';
|
|
82
89
|
}
|
|
83
90
|
},
|
|
91
|
+
uaParser(uaText) {
|
|
92
|
+
const ua = parser(uaText);
|
|
93
|
+
|
|
94
|
+
if (
|
|
95
|
+
OS_VERSION_MAP[ua.os.name] &&
|
|
96
|
+
OS_VERSION_MAP[ua.os.name][ua.os.version]
|
|
97
|
+
) {
|
|
98
|
+
ua.os.version = OS_VERSION_MAP[ua.os.name][ua.os.version];
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return ua;
|
|
102
|
+
},
|
|
84
103
|
};
|