@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.
Files changed (60) hide show
  1. package/dist/404.html +39 -0
  2. package/dist/500.html +275 -0
  3. package/dist/index.js +58501 -0
  4. package/dist/package.json +54 -0
  5. package/dist/src/config/adapter.js +170 -0
  6. package/dist/src/config/config.js +134 -0
  7. package/dist/src/config/extend.js +38 -0
  8. package/dist/src/config/middleware.js +66 -0
  9. package/dist/src/config/router.js +1 -0
  10. package/dist/src/controller/article.js +91 -0
  11. package/dist/src/controller/comment.js +758 -0
  12. package/dist/src/controller/db.js +71 -0
  13. package/dist/src/controller/index.js +36 -0
  14. package/dist/src/controller/oauth.js +136 -0
  15. package/dist/src/controller/rest.js +60 -0
  16. package/dist/src/controller/token/2fa.js +66 -0
  17. package/dist/src/controller/token.js +75 -0
  18. package/dist/src/controller/user/password.js +52 -0
  19. package/dist/src/controller/user.js +289 -0
  20. package/dist/src/controller/verification.js +35 -0
  21. package/dist/src/extend/controller.js +25 -0
  22. package/dist/src/extend/think.js +84 -0
  23. package/dist/src/locales/en.json +19 -0
  24. package/dist/src/locales/index.js +12 -0
  25. package/dist/src/locales/zh-CN.json +19 -0
  26. package/dist/src/locales/zh-TW.json +19 -0
  27. package/dist/src/logic/article.js +27 -0
  28. package/dist/src/logic/base.js +164 -0
  29. package/dist/src/logic/comment.js +317 -0
  30. package/dist/src/logic/db.js +81 -0
  31. package/dist/src/logic/oauth.js +10 -0
  32. package/dist/src/logic/token/2fa.js +28 -0
  33. package/dist/src/logic/token.js +53 -0
  34. package/dist/src/logic/user/password.js +11 -0
  35. package/dist/src/logic/user.js +117 -0
  36. package/dist/src/middleware/dashboard.js +23 -0
  37. package/dist/src/middleware/version.js +6 -0
  38. package/dist/src/service/akismet.js +41 -0
  39. package/dist/src/service/avatar.js +35 -0
  40. package/dist/src/service/markdown/highlight.js +32 -0
  41. package/dist/src/service/markdown/index.js +63 -0
  42. package/dist/src/service/markdown/katex.js +49 -0
  43. package/dist/src/service/markdown/mathCommon.js +156 -0
  44. package/dist/src/service/markdown/mathjax.js +78 -0
  45. package/dist/src/service/markdown/utils.js +11 -0
  46. package/dist/src/service/markdown/xss.js +44 -0
  47. package/dist/src/service/notify.js +537 -0
  48. package/dist/src/service/storage/base.js +31 -0
  49. package/dist/src/service/storage/cloudbase.js +221 -0
  50. package/dist/src/service/storage/deta.js +307 -0
  51. package/dist/src/service/storage/github.js +377 -0
  52. package/dist/src/service/storage/leancloud.js +430 -0
  53. package/dist/src/service/storage/mongodb.js +179 -0
  54. package/dist/src/service/storage/mysql.js +123 -0
  55. package/dist/src/service/storage/postgresql.js +84 -0
  56. package/dist/src/service/storage/sqlite.js +11 -0
  57. package/dist/src/service/storage/tidb.js +3 -0
  58. package/package.json +1 -1
  59. package/src/controller/comment.js +1 -2
  60. 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
+ };
@@ -0,0 +1,3 @@
1
+ const MySQL = require('./mysql');
2
+
3
+ module.exports = class extends MySQL {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@waline/vercel",
3
- "version": "1.26.3",
3
+ "version": "1.26.4",
4
4
  "description": "vercel server for waline comment system",
5
5
  "keywords": [
6
6
  "waline",
@@ -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 = parser(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('.')
@@ -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
  };