wok-server 0.4.13 → 0.6.0
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/README.en.md +61 -0
- package/README.md +44 -29
- package/dist/cache/cache.js +98 -98
- package/dist/cache/config.js +19 -19
- package/dist/cache/index.js +27 -27
- package/dist/cache/purge-task.js +46 -46
- package/dist/cache/stat.js +47 -47
- package/dist/config/convert.js +36 -36
- package/dist/config/exception.js +14 -14
- package/dist/config/index.js +81 -81
- package/dist/http-client/index.js +136 -136
- package/dist/i18n/ar.js +17 -17
- package/dist/i18n/de.js +17 -17
- package/dist/i18n/en-us.js +17 -17
- package/dist/i18n/es.js +17 -17
- package/dist/i18n/fr.js +17 -17
- package/dist/i18n/i18n.js +231 -231
- package/dist/i18n/index.js +52 -52
- package/dist/i18n/ja.js +17 -17
- package/dist/i18n/ko.js +17 -17
- package/dist/i18n/msg.js +2 -2
- package/dist/i18n/pt.js +17 -17
- package/dist/i18n/ru.js +17 -17
- package/dist/i18n/tag.js +18 -18
- package/dist/i18n/zh-HK.js +17 -17
- package/dist/i18n/zh-TW.js +17 -17
- package/dist/i18n/zh-cn.js +17 -17
- package/dist/index.js +14 -14
- package/dist/lock/index.js +114 -114
- package/dist/log/config.js +35 -29
- package/dist/log/date.js +21 -21
- package/dist/log/file.js +198 -72
- package/dist/log/index.js +135 -105
- package/dist/log/level.js +33 -33
- package/dist/log/log.js +56 -0
- package/dist/log/store.js +19 -16
- package/dist/mongodb/collection.js +2 -2
- package/dist/mongodb/config.js +34 -34
- package/dist/mongodb/doc.js +2 -2
- package/dist/mongodb/exception.js +14 -14
- package/dist/mongodb/index.js +58 -58
- package/dist/mongodb/manager/base.js +563 -563
- package/dist/mongodb/manager/index.js +63 -63
- package/dist/mongodb/manager/tx-strict.js +84 -84
- package/dist/mongodb/manager/tx.js +30 -30
- package/dist/mongodb/migration.js +52 -52
- package/dist/mvc/access-log.js +33 -33
- package/dist/mvc/config.js +27 -27
- package/dist/mvc/exchange.js +113 -113
- package/dist/mvc/handler/index.js +7 -6
- package/dist/mvc/handler/json.js +65 -65
- package/dist/mvc/handler/restful.js +35 -35
- package/dist/mvc/handler/sse.js +65 -0
- package/dist/mvc/handler/upload.js +31 -31
- package/dist/mvc/index.js +50 -50
- package/dist/mvc/interceptor.js +2 -2
- package/dist/mvc/query.js +43 -43
- package/dist/mvc/render/file.js +132 -132
- package/dist/mvc/render/html/html.js +90 -90
- package/dist/mvc/render/html/index.js +18 -18
- package/dist/mvc/render/html/style.js +2 -2
- package/dist/mvc/render/index.js +7 -7
- package/dist/mvc/render/json.js +26 -26
- package/dist/mvc/render/text.js +16 -16
- package/dist/mvc/router.js +2 -2
- package/dist/mvc/server.js +272 -272
- package/dist/mvc/static/header.js +67 -67
- package/dist/mvc/static/index.js +6 -6
- package/dist/mvc/static/mime-type.js +84 -84
- package/dist/mvc/static/server-cache-config.js +66 -66
- package/dist/mvc/static/server-cache.js +133 -133
- package/dist/mvc/static/static-handler.js +372 -372
- package/dist/mysql/config.js +51 -51
- package/dist/mysql/exception.js +14 -14
- package/dist/mysql/index.js +87 -87
- package/dist/mysql/manager/base.js +239 -231
- package/dist/mysql/manager/index.js +107 -107
- package/dist/mysql/manager/ops/count.js +20 -20
- package/dist/mysql/manager/ops/criteria.js +356 -356
- package/dist/mysql/manager/ops/delete.js +65 -65
- package/dist/mysql/manager/ops/exist.js +26 -26
- package/dist/mysql/manager/ops/find.js +169 -130
- package/dist/mysql/manager/ops/index.js +14 -14
- package/dist/mysql/manager/ops/insert.js +106 -106
- package/dist/mysql/manager/ops/modify.js +10 -10
- package/dist/mysql/manager/ops/paginate.js +23 -23
- package/dist/mysql/manager/ops/query.js +9 -9
- package/dist/mysql/manager/ops/update.js +216 -216
- package/dist/mysql/manager/ops/utils.js +24 -24
- package/dist/mysql/manager/tx-strict.js +103 -100
- package/dist/mysql/manager/tx.js +30 -30
- package/dist/mysql/manager/utils.js +56 -56
- package/dist/mysql/migration.js +136 -136
- package/dist/mysql/table-info.js +8 -8
- package/dist/task/daily.js +59 -59
- package/dist/task/fixed-delay.js +38 -38
- package/dist/task/fixed-rate.js +42 -42
- package/dist/task/index.js +9 -9
- package/dist/task/task.js +56 -56
- package/dist/validation/exception.js +36 -36
- package/dist/validation/index.js +40 -40
- package/dist/validation/validator/array.js +34 -34
- package/dist/validation/validator/enum.js +28 -28
- package/dist/validation/validator/index.js +14 -14
- package/dist/validation/validator/length.js +40 -40
- package/dist/validation/validator/max-length.js +35 -35
- package/dist/validation/validator/max.js +29 -29
- package/dist/validation/validator/min-length.js +33 -33
- package/dist/validation/validator/min.js +29 -29
- package/dist/validation/validator/not-blank.js +33 -33
- package/dist/validation/validator/not-null.js +21 -21
- package/dist/validation/validator/plain-obj.js +32 -32
- package/dist/validation/validator/regexp.js +34 -34
- package/documentation/en/cache.md +56 -0
- package/documentation/en/config.md +96 -0
- package/documentation/en/engineering.md +256 -0
- package/documentation/en/http-client.md +32 -0
- package/documentation/en/i18n.md +143 -0
- package/documentation/en/index.md +24 -0
- package/documentation/en/lock.md +51 -0
- package/documentation/en/log.md +109 -0
- package/documentation/en/mongodb.md +256 -0
- package/documentation/en/mvc.md +688 -0
- package/documentation/en/mysql.md +552 -0
- package/documentation/en/task.md +45 -0
- package/documentation/en/test.md +56 -0
- package/documentation/en/validate.md +130 -0
- package/documentation/zh-cn/engineering.md +1 -1
- package/documentation/zh-cn/log.md +81 -8
- package/documentation/zh-cn/mvc.md +66 -24
- package/documentation/zh-cn/mysql.md +24 -23
- package/documentation/zh-cn/validate.md +2 -2
- package/package.json +3 -1
- package/skills/wok-server-api-rules/SKILL.md +350 -0
- package/skills/wok-server-cache/SKILL.md +216 -0
- package/skills/wok-server-config/SKILL.md +200 -0
- package/skills/wok-server-getting-started/SKILL.md +123 -0
- package/skills/wok-server-getting-started/references/engineering.md +169 -0
- package/skills/wok-server-http-client/SKILL.md +164 -0
- package/skills/wok-server-i18n/SKILL.md +214 -0
- package/skills/wok-server-lock/SKILL.md +144 -0
- package/skills/wok-server-log/SKILL.md +218 -0
- package/skills/wok-server-mongodb/SKILL.md +235 -0
- package/skills/wok-server-mvc/SKILL.md +251 -0
- package/skills/wok-server-mvc/references/respond-html.md +157 -0
- package/skills/wok-server-mvc/references/sse.md +121 -0
- package/skills/wok-server-mvc/references/static-files.md +47 -0
- package/skills/wok-server-mvc/references/upload.md +62 -0
- package/skills/wok-server-mvc/references/websocket.md +30 -0
- package/skills/wok-server-mysql/SKILL.md +315 -0
- package/skills/wok-server-mysql/references/multi-datasource.md +76 -0
- package/skills/wok-server-mysql/references/version-control.md +22 -0
- package/skills/wok-server-task/SKILL.md +158 -0
- package/skills/wok-server-validate/SKILL.md +167 -0
- package/src/cache/cache.ts +118 -0
- package/src/cache/config.ts +53 -0
- package/src/cache/index.ts +27 -0
- package/src/cache/purge-task.ts +53 -0
- package/src/cache/stat.ts +47 -0
- package/src/config/convert.ts +27 -0
- package/src/config/exception.ts +8 -0
- package/src/config/index.ts +92 -0
- package/src/http-client/index.ts +202 -0
- package/src/i18n/ar.ts +16 -0
- package/src/i18n/de.ts +16 -0
- package/src/i18n/en-us.ts +16 -0
- package/src/i18n/es.ts +16 -0
- package/src/i18n/fr.ts +16 -0
- package/src/i18n/i18n.ts +230 -0
- package/src/i18n/index.ts +50 -0
- package/src/i18n/ja.ts +16 -0
- package/src/i18n/ko.ts +16 -0
- package/src/i18n/msg.ts +50 -0
- package/src/i18n/pt.ts +16 -0
- package/src/i18n/ru.ts +16 -0
- package/src/i18n/tag.ts +18 -0
- package/src/i18n/zh-HK.ts +16 -0
- package/src/i18n/zh-TW.ts +16 -0
- package/src/i18n/zh-cn.ts +16 -0
- package/src/index.ts +11 -0
- package/src/lock/index.ts +164 -0
- package/src/log/config.ts +71 -0
- package/src/log/date.ts +19 -0
- package/src/log/file.ts +215 -0
- package/src/log/index.ts +136 -0
- package/src/log/level.ts +29 -0
- package/src/log/log.ts +77 -0
- package/src/log/store.ts +31 -0
- package/src/mongodb/collection.ts +25 -0
- package/src/mongodb/config.ts +69 -0
- package/src/mongodb/doc.ts +12 -0
- package/src/mongodb/exception.ts +8 -0
- package/src/mongodb/index.ts +71 -0
- package/src/mongodb/manager/base.ts +674 -0
- package/src/mongodb/manager/index.ts +80 -0
- package/src/mongodb/manager/tx-strict.ts +153 -0
- package/src/mongodb/manager/tx.ts +34 -0
- package/src/mongodb/migration.ts +66 -0
- package/src/mvc/access-log.ts +33 -0
- package/src/mvc/config.ts +70 -0
- package/src/mvc/exchange.ts +126 -0
- package/src/mvc/handler/index.ts +4 -0
- package/src/mvc/handler/json.ts +96 -0
- package/src/mvc/handler/restful.ts +39 -0
- package/src/mvc/handler/sse.ts +90 -0
- package/src/mvc/handler/upload.ts +54 -0
- package/src/mvc/index.ts +48 -0
- package/src/mvc/interceptor.ts +12 -0
- package/src/mvc/query.ts +36 -0
- package/src/mvc/render/file.ts +148 -0
- package/src/mvc/render/html/html.ts +187 -0
- package/src/mvc/render/html/index.ts +16 -0
- package/src/mvc/render/html/style.ts +1201 -0
- package/src/mvc/render/index.ts +4 -0
- package/src/mvc/render/json.ts +24 -0
- package/src/mvc/render/text.ts +14 -0
- package/src/mvc/router.ts +13 -0
- package/src/mvc/server.ts +315 -0
- package/src/mvc/static/header.ts +86 -0
- package/src/mvc/static/index.ts +3 -0
- package/src/mvc/static/mime-type.ts +81 -0
- package/src/mvc/static/server-cache-config.ts +92 -0
- package/src/mvc/static/server-cache.ts +171 -0
- package/src/mvc/static/static-handler.ts +445 -0
- package/src/mysql/config.ts +130 -0
- package/src/mysql/exception.ts +8 -0
- package/src/mysql/index.ts +88 -0
- package/src/mysql/manager/base.ts +285 -0
- package/src/mysql/manager/index.ts +112 -0
- package/src/mysql/manager/ops/count.ts +30 -0
- package/src/mysql/manager/ops/criteria.ts +412 -0
- package/src/mysql/manager/ops/delete.ts +96 -0
- package/src/mysql/manager/ops/exist.ts +41 -0
- package/src/mysql/manager/ops/find.ts +226 -0
- package/src/mysql/manager/ops/index.ts +11 -0
- package/src/mysql/manager/ops/insert.ts +120 -0
- package/src/mysql/manager/ops/modify.ts +14 -0
- package/src/mysql/manager/ops/paginate.ts +60 -0
- package/src/mysql/manager/ops/query.ts +13 -0
- package/src/mysql/manager/ops/update.ts +294 -0
- package/src/mysql/manager/ops/utils.ts +20 -0
- package/src/mysql/manager/tx-strict.ts +138 -0
- package/src/mysql/manager/tx.ts +31 -0
- package/src/mysql/manager/utils.ts +75 -0
- package/src/mysql/migration.ts +149 -0
- package/src/mysql/table-info.ts +41 -0
- package/src/task/daily.ts +70 -0
- package/src/task/fixed-delay.ts +45 -0
- package/src/task/fixed-rate.ts +49 -0
- package/src/task/index.ts +4 -0
- package/src/task/task.ts +70 -0
- package/src/validation/exception.ts +27 -0
- package/src/validation/index.ts +61 -0
- package/src/validation/validator/array.ts +32 -0
- package/src/validation/validator/enum.ts +25 -0
- package/src/validation/validator/index.ts +11 -0
- package/src/validation/validator/length.ts +42 -0
- package/src/validation/validator/max-length.ts +33 -0
- package/src/validation/validator/max.ts +26 -0
- package/src/validation/validator/min-length.ts +31 -0
- package/src/validation/validator/min.ts +26 -0
- package/src/validation/validator/not-blank.ts +31 -0
- package/src/validation/validator/not-null.ts +19 -0
- package/src/validation/validator/plain-obj.ts +30 -0
- package/src/validation/validator/regexp.ts +32 -0
- package/types/cache/cache.d.ts +52 -52
- package/types/cache/config.d.ts +32 -32
- package/types/cache/index.d.ts +2 -2
- package/types/cache/purge-task.d.ts +11 -11
- package/types/cache/stat.d.ts +26 -26
- package/types/config/convert.d.ts +6 -6
- package/types/config/exception.d.ts +7 -7
- package/types/config/index.d.ts +25 -25
- package/types/http-client/index.d.ts +71 -71
- package/types/i18n/ar.d.ts +2 -2
- package/types/i18n/de.d.ts +2 -2
- package/types/i18n/en-us.d.ts +2 -2
- package/types/i18n/es.d.ts +2 -2
- package/types/i18n/fr.d.ts +2 -2
- package/types/i18n/i18n.d.ts +102 -102
- package/types/i18n/index.d.ts +9 -9
- package/types/i18n/ja.d.ts +2 -2
- package/types/i18n/ko.d.ts +2 -2
- package/types/i18n/msg.d.ts +50 -50
- package/types/i18n/pt.d.ts +2 -2
- package/types/i18n/ru.d.ts +2 -2
- package/types/i18n/tag.d.ts +11 -11
- package/types/i18n/zh-HK.d.ts +2 -2
- package/types/i18n/zh-TW.d.ts +2 -2
- package/types/i18n/zh-cn.d.ts +2 -2
- package/types/index.d.ts +11 -11
- package/types/lock/index.d.ts +64 -64
- package/types/log/config.d.ts +35 -27
- package/types/log/date.d.ts +2 -2
- package/types/log/file.d.ts +13 -5
- package/types/log/index.d.ts +53 -34
- package/types/log/level.d.ts +14 -14
- package/types/log/log.d.ts +40 -0
- package/types/log/store.d.ts +19 -12
- package/types/mongodb/collection.d.ts +25 -25
- package/types/mongodb/config.d.ts +45 -45
- package/types/mongodb/doc.d.ts +11 -11
- package/types/mongodb/exception.d.ts +7 -7
- package/types/mongodb/index.d.ts +29 -29
- package/types/mongodb/manager/base.d.ts +188 -188
- package/types/mongodb/manager/index.d.ts +38 -38
- package/types/mongodb/manager/tx-strict.d.ts +41 -41
- package/types/mongodb/manager/tx.d.ts +21 -21
- package/types/mongodb/migration.d.ts +12 -12
- package/types/mvc/access-log.d.ts +7 -7
- package/types/mvc/config.d.ts +42 -42
- package/types/mvc/exchange.d.ts +72 -72
- package/types/mvc/handler/index.d.ts +4 -3
- package/types/mvc/handler/json.d.ts +44 -44
- package/types/mvc/handler/restful.d.ts +11 -11
- package/types/mvc/handler/sse.d.ts +34 -0
- package/types/mvc/handler/upload.d.ts +36 -36
- package/types/mvc/index.d.ts +22 -22
- package/types/mvc/interceptor.d.ts +11 -11
- package/types/mvc/query.d.ts +13 -13
- package/types/mvc/render/file.d.ts +10 -10
- package/types/mvc/render/html/html.d.ts +98 -98
- package/types/mvc/render/html/index.d.ts +11 -11
- package/types/mvc/render/html/style.d.ts +1201 -1201
- package/types/mvc/render/index.d.ts +4 -4
- package/types/mvc/render/json.d.ts +17 -17
- package/types/mvc/render/text.d.ts +10 -10
- package/types/mvc/router.d.ts +11 -11
- package/types/mvc/server.d.ts +90 -90
- package/types/mvc/static/header.d.ts +27 -27
- package/types/mvc/static/index.d.ts +3 -3
- package/types/mvc/static/mime-type.d.ts +2 -2
- package/types/mvc/static/server-cache-config.d.ts +30 -30
- package/types/mvc/static/server-cache.d.ts +76 -76
- package/types/mvc/static/static-handler.d.ts +77 -77
- package/types/mysql/config.d.ts +90 -90
- package/types/mysql/exception.d.ts +7 -7
- package/types/mysql/index.d.ts +16 -16
- package/types/mysql/manager/base.d.ts +165 -159
- package/types/mysql/manager/index.d.ts +36 -36
- package/types/mysql/manager/ops/count.d.ts +13 -13
- package/types/mysql/manager/ops/criteria.d.ts +134 -134
- package/types/mysql/manager/ops/delete.d.ts +46 -46
- package/types/mysql/manager/ops/exist.d.ts +6 -6
- package/types/mysql/manager/ops/find.d.ts +86 -70
- package/types/mysql/manager/ops/index.d.ts +10 -10
- package/types/mysql/manager/ops/insert.d.ts +18 -18
- package/types/mysql/manager/ops/modify.d.ts +3 -3
- package/types/mysql/manager/ops/paginate.d.ts +36 -36
- package/types/mysql/manager/ops/query.d.ts +3 -3
- package/types/mysql/manager/ops/update.d.ts +76 -76
- package/types/mysql/manager/ops/utils.d.ts +5 -5
- package/types/mysql/manager/tx-strict.d.ts +36 -35
- package/types/mysql/manager/tx.d.ts +15 -15
- package/types/mysql/manager/utils.d.ts +17 -17
- package/types/mysql/migration.d.ts +8 -8
- package/types/mysql/table-info.d.ts +36 -36
- package/types/task/daily.d.ts +16 -16
- package/types/task/fixed-delay.d.ts +9 -9
- package/types/task/fixed-rate.d.ts +9 -9
- package/types/task/index.d.ts +4 -4
- package/types/task/task.d.ts +34 -34
- package/types/validation/exception.d.ts +38 -38
- package/types/validation/index.d.ts +32 -32
- package/types/validation/validator/array.d.ts +5 -5
- package/types/validation/validator/enum.d.ts +8 -8
- package/types/validation/validator/index.d.ts +11 -11
- package/types/validation/validator/length.d.ts +10 -10
- package/types/validation/validator/max-length.d.ts +8 -8
- package/types/validation/validator/max.d.ts +7 -7
- package/types/validation/validator/min-length.d.ts +6 -6
- package/types/validation/validator/min.d.ts +7 -7
- package/types/validation/validator/not-blank.d.ts +7 -7
- package/types/validation/validator/not-null.d.ts +6 -6
- package/types/validation/validator/plain-obj.d.ts +7 -7
- package/types/validation/validator/regexp.d.ts +8 -8
package/dist/i18n/ja.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ja = void 0;
|
|
4
|
-
exports.ja = {
|
|
5
|
-
'validate-err-array': '値が配列ではありません',
|
|
6
|
-
'validate-err-enum': '値は {} の中のいずれかでなければなりません',
|
|
7
|
-
'validate-err-numer': '値が数字ではありません',
|
|
8
|
-
'validate-err-max': '{} 以下である必要があります',
|
|
9
|
-
'validate-err-min': '{} 以上である必要があります',
|
|
10
|
-
'validate-err-empty': '空であってはいけません',
|
|
11
|
-
'validate-err-string': '値が文字列のタイプではありません',
|
|
12
|
-
'validate-err-incorrect-format': '形式が正しくありません',
|
|
13
|
-
'validate-err-no-length': 'length属性が見当たりません',
|
|
14
|
-
'validate-err-length-not-number': 'lengthプロパティは数値ではありません',
|
|
15
|
-
'validate-err-min-length': '長さは {} 以上でなければりません',
|
|
16
|
-
'validate-err-max-length': '長さは {} 以下でなければなりません'
|
|
17
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ja = void 0;
|
|
4
|
+
exports.ja = {
|
|
5
|
+
'validate-err-array': '値が配列ではありません',
|
|
6
|
+
'validate-err-enum': '値は {} の中のいずれかでなければなりません',
|
|
7
|
+
'validate-err-numer': '値が数字ではありません',
|
|
8
|
+
'validate-err-max': '{} 以下である必要があります',
|
|
9
|
+
'validate-err-min': '{} 以上である必要があります',
|
|
10
|
+
'validate-err-empty': '空であってはいけません',
|
|
11
|
+
'validate-err-string': '値が文字列のタイプではありません',
|
|
12
|
+
'validate-err-incorrect-format': '形式が正しくありません',
|
|
13
|
+
'validate-err-no-length': 'length属性が見当たりません',
|
|
14
|
+
'validate-err-length-not-number': 'lengthプロパティは数値ではありません',
|
|
15
|
+
'validate-err-min-length': '長さは {} 以上でなければりません',
|
|
16
|
+
'validate-err-max-length': '長さは {} 以下でなければなりません'
|
|
17
|
+
};
|
package/dist/i18n/ko.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ko = void 0;
|
|
4
|
-
exports.ko = {
|
|
5
|
-
'validate-err-array': '값은 배열이 아닙니다',
|
|
6
|
-
'validate-err-enum': '값은 {} 중 하나여야 합니다',
|
|
7
|
-
'validate-err-numer': '값은 숫자가 아닙니다',
|
|
8
|
-
'validate-err-max': '{}보 크면 안 됩니다',
|
|
9
|
-
'validate-err-min': '{}보다 작으면 안 됩니다',
|
|
10
|
-
'validate-err-empty': '비워둘 수 없습니다',
|
|
11
|
-
'validate-err-string': '값이 문자열 유형이 아닙니다',
|
|
12
|
-
'validate-err-incorrect-format': '형식이 올바르지 않습니다',
|
|
13
|
-
'validate-err-no-length': 'length 속성을 찾을 수 없습니다',
|
|
14
|
-
'validate-err-length-not-number': 'length 속성이 숫자가 아닙니다',
|
|
15
|
-
'validate-err-min-length': '길이는 {}보다 작을 수 없습니다',
|
|
16
|
-
'validate-err-max-length': '길이는 {}보다 클 수 없습니다'
|
|
17
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ko = void 0;
|
|
4
|
+
exports.ko = {
|
|
5
|
+
'validate-err-array': '값은 배열이 아닙니다',
|
|
6
|
+
'validate-err-enum': '값은 {} 중 하나여야 합니다',
|
|
7
|
+
'validate-err-numer': '값은 숫자가 아닙니다',
|
|
8
|
+
'validate-err-max': '{}보 크면 안 됩니다',
|
|
9
|
+
'validate-err-min': '{}보다 작으면 안 됩니다',
|
|
10
|
+
'validate-err-empty': '비워둘 수 없습니다',
|
|
11
|
+
'validate-err-string': '값이 문자열 유형이 아닙니다',
|
|
12
|
+
'validate-err-incorrect-format': '형식이 올바르지 않습니다',
|
|
13
|
+
'validate-err-no-length': 'length 속성을 찾을 수 없습니다',
|
|
14
|
+
'validate-err-length-not-number': 'length 속성이 숫자가 아닙니다',
|
|
15
|
+
'validate-err-min-length': '길이는 {}보다 작을 수 없습니다',
|
|
16
|
+
'validate-err-max-length': '길이는 {}보다 클 수 없습니다'
|
|
17
|
+
};
|
package/dist/i18n/msg.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/dist/i18n/pt.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.pt = void 0;
|
|
4
|
-
exports.pt = {
|
|
5
|
-
'validate-err-array': 'O valor não é um array',
|
|
6
|
-
'validate-err-enum': 'O valor deve ser um dos {}',
|
|
7
|
-
'validate-err-numer': 'O valor não é um número',
|
|
8
|
-
'validate-err-max': 'Não pode ser maior que {}',
|
|
9
|
-
'validate-err-min': 'Não pode ser menor que {}',
|
|
10
|
-
'validate-err-empty': 'Não pode ser vazio',
|
|
11
|
-
'validate-err-string': 'O valor não é do tipo string',
|
|
12
|
-
'validate-err-incorrect-format': 'Formato incorreto',
|
|
13
|
-
'validate-err-no-length': 'Não foi possível encontrar a propriedade "length"',
|
|
14
|
-
'validate-err-length-not-number': 'A propriedade "length" não é um número',
|
|
15
|
-
'validate-err-min-length': 'O comprimento não pode ser menor que {}',
|
|
16
|
-
'validate-err-max-length': 'O comprimento não pode ser maior que {}'
|
|
17
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pt = void 0;
|
|
4
|
+
exports.pt = {
|
|
5
|
+
'validate-err-array': 'O valor não é um array',
|
|
6
|
+
'validate-err-enum': 'O valor deve ser um dos {}',
|
|
7
|
+
'validate-err-numer': 'O valor não é um número',
|
|
8
|
+
'validate-err-max': 'Não pode ser maior que {}',
|
|
9
|
+
'validate-err-min': 'Não pode ser menor que {}',
|
|
10
|
+
'validate-err-empty': 'Não pode ser vazio',
|
|
11
|
+
'validate-err-string': 'O valor não é do tipo string',
|
|
12
|
+
'validate-err-incorrect-format': 'Formato incorreto',
|
|
13
|
+
'validate-err-no-length': 'Não foi possível encontrar a propriedade "length"',
|
|
14
|
+
'validate-err-length-not-number': 'A propriedade "length" não é um número',
|
|
15
|
+
'validate-err-min-length': 'O comprimento não pode ser menor que {}',
|
|
16
|
+
'validate-err-max-length': 'O comprimento não pode ser maior que {}'
|
|
17
|
+
};
|
package/dist/i18n/ru.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ru = void 0;
|
|
4
|
-
exports.ru = {
|
|
5
|
-
'validate-err-array': 'Значение не является массивом',
|
|
6
|
-
'validate-err-enum': 'Значение должно быть одним из {}',
|
|
7
|
-
'validate-err-numer': 'Значение не является числом',
|
|
8
|
-
'validate-err-max': 'Не должно быть больше {}',
|
|
9
|
-
'validate-err-min': 'Не должно быть меньше {}',
|
|
10
|
-
'validate-err-empty': 'не может быть пустым',
|
|
11
|
-
'validate-err-string': 'Значение не является строковым типом',
|
|
12
|
-
'validate-err-incorrect-format': 'Неправильный формат',
|
|
13
|
-
'validate-err-no-length': 'Никаких признаков length',
|
|
14
|
-
'validate-err-length-not-number': 'Атрибут длины не является числом',
|
|
15
|
-
'validate-err-min-length': 'Длина не должна быть меньше {}',
|
|
16
|
-
'validate-err-max-length': 'Длина не должна быть больше {}'
|
|
17
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ru = void 0;
|
|
4
|
+
exports.ru = {
|
|
5
|
+
'validate-err-array': 'Значение не является массивом',
|
|
6
|
+
'validate-err-enum': 'Значение должно быть одним из {}',
|
|
7
|
+
'validate-err-numer': 'Значение не является числом',
|
|
8
|
+
'validate-err-max': 'Не должно быть больше {}',
|
|
9
|
+
'validate-err-min': 'Не должно быть меньше {}',
|
|
10
|
+
'validate-err-empty': 'не может быть пустым',
|
|
11
|
+
'validate-err-string': 'Значение не является строковым типом',
|
|
12
|
+
'validate-err-incorrect-format': 'Неправильный формат',
|
|
13
|
+
'validate-err-no-length': 'Никаких признаков length',
|
|
14
|
+
'validate-err-length-not-number': 'Атрибут длины не является числом',
|
|
15
|
+
'validate-err-min-length': 'Длина не должна быть меньше {}',
|
|
16
|
+
'validate-err-max-length': 'Длина не должна быть больше {}'
|
|
17
|
+
};
|
package/dist/i18n/tag.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseLangTag = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* 解析语言标签,语言标签格式非常多,这里仅支持语言加地区的形式,如 zh-CN。
|
|
6
|
-
* 更多信息可以查看 https://www.rfc-editor.org/rfc/bcp/bcp47.txt 。
|
|
7
|
-
* @param tag
|
|
8
|
-
* @returns 语言和地区信息,为了方便匹配,全转小写
|
|
9
|
-
*/
|
|
10
|
-
function parseLangTag(tag) {
|
|
11
|
-
const [lang, region] = tag.split('-');
|
|
12
|
-
// 解析失败,抛出错误
|
|
13
|
-
if (!lang) {
|
|
14
|
-
throw new Error(`Unable to parse lang tag:${tag}`);
|
|
15
|
-
}
|
|
16
|
-
return { lang: lang.toLowerCase(), region: region ? region.toLowerCase() : undefined };
|
|
17
|
-
}
|
|
18
|
-
exports.parseLangTag = parseLangTag;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseLangTag = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* 解析语言标签,语言标签格式非常多,这里仅支持语言加地区的形式,如 zh-CN。
|
|
6
|
+
* 更多信息可以查看 https://www.rfc-editor.org/rfc/bcp/bcp47.txt 。
|
|
7
|
+
* @param tag
|
|
8
|
+
* @returns 语言和地区信息,为了方便匹配,全转小写
|
|
9
|
+
*/
|
|
10
|
+
function parseLangTag(tag) {
|
|
11
|
+
const [lang, region] = tag.split('-');
|
|
12
|
+
// 解析失败,抛出错误
|
|
13
|
+
if (!lang) {
|
|
14
|
+
throw new Error(`Unable to parse lang tag:${tag}`);
|
|
15
|
+
}
|
|
16
|
+
return { lang: lang.toLowerCase(), region: region ? region.toLowerCase() : undefined };
|
|
17
|
+
}
|
|
18
|
+
exports.parseLangTag = parseLangTag;
|
package/dist/i18n/zh-HK.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.zhHK = void 0;
|
|
4
|
-
exports.zhHK = {
|
|
5
|
-
'validate-err-array': '值不是陣列',
|
|
6
|
-
'validate-err-enum': '值必須是 {} 其中一個',
|
|
7
|
-
'validate-err-numer': '值不是數字',
|
|
8
|
-
'validate-err-max': '不得大於 {}',
|
|
9
|
-
'validate-err-min': '不得小於 {}',
|
|
10
|
-
'validate-err-empty': '不能為空',
|
|
11
|
-
'validate-err-string': '值不是字串型別',
|
|
12
|
-
'validate-err-incorrect-format': '格式不正確',
|
|
13
|
-
'validate-err-no-length': '找不到 length 屬性',
|
|
14
|
-
'validate-err-length-not-number': 'length 屬性不是數字',
|
|
15
|
-
'validate-err-min-length': '長度不得小於 {}',
|
|
16
|
-
'validate-err-max-length': '長度不得大於 {}'
|
|
17
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.zhHK = void 0;
|
|
4
|
+
exports.zhHK = {
|
|
5
|
+
'validate-err-array': '值不是陣列',
|
|
6
|
+
'validate-err-enum': '值必須是 {} 其中一個',
|
|
7
|
+
'validate-err-numer': '值不是數字',
|
|
8
|
+
'validate-err-max': '不得大於 {}',
|
|
9
|
+
'validate-err-min': '不得小於 {}',
|
|
10
|
+
'validate-err-empty': '不能為空',
|
|
11
|
+
'validate-err-string': '值不是字串型別',
|
|
12
|
+
'validate-err-incorrect-format': '格式不正確',
|
|
13
|
+
'validate-err-no-length': '找不到 length 屬性',
|
|
14
|
+
'validate-err-length-not-number': 'length 屬性不是數字',
|
|
15
|
+
'validate-err-min-length': '長度不得小於 {}',
|
|
16
|
+
'validate-err-max-length': '長度不得大於 {}'
|
|
17
|
+
};
|
package/dist/i18n/zh-TW.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.zhTW = void 0;
|
|
4
|
-
exports.zhTW = {
|
|
5
|
-
'validate-err-array': '值不是陣列',
|
|
6
|
-
'validate-err-enum': '值必須是 {} 其中一個',
|
|
7
|
-
'validate-err-numer': '值不是數字',
|
|
8
|
-
'validate-err-max': '不得大於 {}',
|
|
9
|
-
'validate-err-min': '不得小於 {}',
|
|
10
|
-
'validate-err-empty': '不能為空',
|
|
11
|
-
'validate-err-string': '值不是字串型別',
|
|
12
|
-
'validate-err-incorrect-format': '格式不正確',
|
|
13
|
-
'validate-err-no-length': '找不到 length 屬性',
|
|
14
|
-
'validate-err-length-not-number': 'length 屬性不是數字',
|
|
15
|
-
'validate-err-min-length': '長度不得小於 {}',
|
|
16
|
-
'validate-err-max-length': '長度不得大於 {}'
|
|
17
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.zhTW = void 0;
|
|
4
|
+
exports.zhTW = {
|
|
5
|
+
'validate-err-array': '值不是陣列',
|
|
6
|
+
'validate-err-enum': '值必須是 {} 其中一個',
|
|
7
|
+
'validate-err-numer': '值不是數字',
|
|
8
|
+
'validate-err-max': '不得大於 {}',
|
|
9
|
+
'validate-err-min': '不得小於 {}',
|
|
10
|
+
'validate-err-empty': '不能為空',
|
|
11
|
+
'validate-err-string': '值不是字串型別',
|
|
12
|
+
'validate-err-incorrect-format': '格式不正確',
|
|
13
|
+
'validate-err-no-length': '找不到 length 屬性',
|
|
14
|
+
'validate-err-length-not-number': 'length 屬性不是數字',
|
|
15
|
+
'validate-err-min-length': '長度不得小於 {}',
|
|
16
|
+
'validate-err-max-length': '長度不得大於 {}'
|
|
17
|
+
};
|
package/dist/i18n/zh-cn.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.zhCN = void 0;
|
|
4
|
-
exports.zhCN = {
|
|
5
|
-
'validate-err-array': '值不是数组',
|
|
6
|
-
'validate-err-enum': '值必须是 {} 其中一个',
|
|
7
|
-
'validate-err-numer': '值不是数字',
|
|
8
|
-
'validate-err-max': '不得大于 {}',
|
|
9
|
-
'validate-err-min': '不得小于 {}',
|
|
10
|
-
'validate-err-empty': '不能为空',
|
|
11
|
-
'validate-err-string': '值不是字符串类型',
|
|
12
|
-
'validate-err-incorrect-format': '格式不正确',
|
|
13
|
-
'validate-err-no-length': '找不到 length 属性',
|
|
14
|
-
'validate-err-length-not-number': 'length 属性不是数字',
|
|
15
|
-
'validate-err-min-length': '长度不得小于 {}',
|
|
16
|
-
'validate-err-max-length': '长度不得大于 {}'
|
|
17
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.zhCN = void 0;
|
|
4
|
+
exports.zhCN = {
|
|
5
|
+
'validate-err-array': '值不是数组',
|
|
6
|
+
'validate-err-enum': '值必须是 {} 其中一个',
|
|
7
|
+
'validate-err-numer': '值不是数字',
|
|
8
|
+
'validate-err-max': '不得大于 {}',
|
|
9
|
+
'validate-err-min': '不得小于 {}',
|
|
10
|
+
'validate-err-empty': '不能为空',
|
|
11
|
+
'validate-err-string': '值不是字符串类型',
|
|
12
|
+
'validate-err-incorrect-format': '格式不正确',
|
|
13
|
+
'validate-err-no-length': '找不到 length 属性',
|
|
14
|
+
'validate-err-length-not-number': 'length 属性不是数字',
|
|
15
|
+
'validate-err-min-length': '长度不得小于 {}',
|
|
16
|
+
'validate-err-max-length': '长度不得大于 {}'
|
|
17
|
+
};
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
tslib_1.__exportStar(require("./log"), exports);
|
|
5
|
-
tslib_1.__exportStar(require("./i18n"), exports);
|
|
6
|
-
tslib_1.__exportStar(require("./validation"), exports);
|
|
7
|
-
tslib_1.__exportStar(require("./config"), exports);
|
|
8
|
-
tslib_1.__exportStar(require("./cache"), exports);
|
|
9
|
-
tslib_1.__exportStar(require("./task"), exports);
|
|
10
|
-
tslib_1.__exportStar(require("./mvc"), exports);
|
|
11
|
-
tslib_1.__exportStar(require("./mysql"), exports);
|
|
12
|
-
tslib_1.__exportStar(require("./http-client"), exports);
|
|
13
|
-
tslib_1.__exportStar(require("./mongodb"), exports);
|
|
14
|
-
tslib_1.__exportStar(require("./lock"), exports);
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./log"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./i18n"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./validation"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./config"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./cache"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./task"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./mvc"), exports);
|
|
11
|
+
tslib_1.__exportStar(require("./mysql"), exports);
|
|
12
|
+
tslib_1.__exportStar(require("./http-client"), exports);
|
|
13
|
+
tslib_1.__exportStar(require("./mongodb"), exports);
|
|
14
|
+
tslib_1.__exportStar(require("./lock"), exports);
|
package/dist/lock/index.js
CHANGED
|
@@ -1,114 +1,114 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getLockManager = void 0;
|
|
4
|
-
const crypto_1 = require("crypto");
|
|
5
|
-
/**
|
|
6
|
-
* 锁管理器,主要用于将不确定的顺序且有冲突的异步操作顺序执行,
|
|
7
|
-
* 防止异步流程庞大穿插执行造成的数据混乱和错误,常见于请求的处理。
|
|
8
|
-
*/
|
|
9
|
-
class ServerLockManager {
|
|
10
|
-
/**
|
|
11
|
-
* 存储锁信息的表,值是一个随机值,用于验证锁是否为当前程序所拥有
|
|
12
|
-
*/
|
|
13
|
-
lockMap = new Map();
|
|
14
|
-
constructor() {
|
|
15
|
-
// 定期清理,将过期的信息移除,防止内存泄漏
|
|
16
|
-
setTimeout(() => {
|
|
17
|
-
const keysToBeDeleted = [];
|
|
18
|
-
const now = Date.now();
|
|
19
|
-
for (const entry of this.lockMap.entries()) {
|
|
20
|
-
const [key, info] = entry;
|
|
21
|
-
if (info.expiresAt < now) {
|
|
22
|
-
keysToBeDeleted.push(key);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
if (keysToBeDeleted.length) {
|
|
26
|
-
for (const key of keysToBeDeleted) {
|
|
27
|
-
this.lockMap.delete(key);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}, 10000);
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* 尝试竞争锁,如果成功获取到锁,则执行 run 函数
|
|
34
|
-
* @param opts
|
|
35
|
-
* @returns 是否获取到锁
|
|
36
|
-
*/
|
|
37
|
-
async tryLock(opts) {
|
|
38
|
-
const value = (0, crypto_1.randomUUID)().toString();
|
|
39
|
-
const expiresInSeconds = typeof opts.expiresInSeconds === 'number' && opts.expiresInSeconds > 0
|
|
40
|
-
? opts.expiresInSeconds
|
|
41
|
-
: 60;
|
|
42
|
-
const expiresAt = Date.now() + expiresInSeconds * 1000;
|
|
43
|
-
const waitSeconds = typeof opts.waitSeconds === 'number' && opts.waitSeconds > 0 ? opts.waitSeconds : 0;
|
|
44
|
-
const res = await this.waitLock({
|
|
45
|
-
key: opts.key,
|
|
46
|
-
value,
|
|
47
|
-
expiresAt,
|
|
48
|
-
waitSeconds
|
|
49
|
-
});
|
|
50
|
-
if (!res) {
|
|
51
|
-
return false;
|
|
52
|
-
}
|
|
53
|
-
try {
|
|
54
|
-
await opts.run();
|
|
55
|
-
}
|
|
56
|
-
finally {
|
|
57
|
-
// 解锁
|
|
58
|
-
const info = this.lockMap.get(opts.key);
|
|
59
|
-
if (info && info.value === value) {
|
|
60
|
-
this.lockMap.delete(opts.key);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
return true;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* 等待锁
|
|
67
|
-
* @param opts
|
|
68
|
-
*/
|
|
69
|
-
async waitLock(opts) {
|
|
70
|
-
let start = Date.now();
|
|
71
|
-
while (true) {
|
|
72
|
-
const info = this.lockMap.get(opts.key);
|
|
73
|
-
// 锁不存在或已经过期
|
|
74
|
-
if (!info || info.expiresAt < Date.now()) {
|
|
75
|
-
// 成功获取到锁
|
|
76
|
-
this.lockMap.set(opts.key, {
|
|
77
|
-
value: opts.value,
|
|
78
|
-
expiresAt: opts.expiresAt
|
|
79
|
-
});
|
|
80
|
-
return true;
|
|
81
|
-
}
|
|
82
|
-
if (info.value === opts.value) {
|
|
83
|
-
return true;
|
|
84
|
-
}
|
|
85
|
-
if (Date.now() - start > opts.waitSeconds * 1000) {
|
|
86
|
-
break;
|
|
87
|
-
}
|
|
88
|
-
await this.sleep();
|
|
89
|
-
}
|
|
90
|
-
return false;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* 沉睡
|
|
94
|
-
* @returns
|
|
95
|
-
*/
|
|
96
|
-
sleep() {
|
|
97
|
-
return new Promise((resolve, reject) => {
|
|
98
|
-
setTimeout(resolve, 0);
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
let lockManager;
|
|
103
|
-
/**
|
|
104
|
-
* 获取锁管理器。锁管理器提供一个简单的异步并发控制,用于将不确定的顺序的有冲突的异步操作顺序执行,
|
|
105
|
-
* 防止异步流程庞大穿插执行造成的数据混乱和错误,常见于请求的处理。
|
|
106
|
-
* @returns
|
|
107
|
-
*/
|
|
108
|
-
function getLockManager() {
|
|
109
|
-
if (!lockManager) {
|
|
110
|
-
lockManager = new ServerLockManager();
|
|
111
|
-
}
|
|
112
|
-
return lockManager;
|
|
113
|
-
}
|
|
114
|
-
exports.getLockManager = getLockManager;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getLockManager = void 0;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
5
|
+
/**
|
|
6
|
+
* 锁管理器,主要用于将不确定的顺序且有冲突的异步操作顺序执行,
|
|
7
|
+
* 防止异步流程庞大穿插执行造成的数据混乱和错误,常见于请求的处理。
|
|
8
|
+
*/
|
|
9
|
+
class ServerLockManager {
|
|
10
|
+
/**
|
|
11
|
+
* 存储锁信息的表,值是一个随机值,用于验证锁是否为当前程序所拥有
|
|
12
|
+
*/
|
|
13
|
+
lockMap = new Map();
|
|
14
|
+
constructor() {
|
|
15
|
+
// 定期清理,将过期的信息移除,防止内存泄漏
|
|
16
|
+
setTimeout(() => {
|
|
17
|
+
const keysToBeDeleted = [];
|
|
18
|
+
const now = Date.now();
|
|
19
|
+
for (const entry of this.lockMap.entries()) {
|
|
20
|
+
const [key, info] = entry;
|
|
21
|
+
if (info.expiresAt < now) {
|
|
22
|
+
keysToBeDeleted.push(key);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (keysToBeDeleted.length) {
|
|
26
|
+
for (const key of keysToBeDeleted) {
|
|
27
|
+
this.lockMap.delete(key);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}, 10000);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 尝试竞争锁,如果成功获取到锁,则执行 run 函数
|
|
34
|
+
* @param opts
|
|
35
|
+
* @returns 是否获取到锁
|
|
36
|
+
*/
|
|
37
|
+
async tryLock(opts) {
|
|
38
|
+
const value = (0, crypto_1.randomUUID)().toString();
|
|
39
|
+
const expiresInSeconds = typeof opts.expiresInSeconds === 'number' && opts.expiresInSeconds > 0
|
|
40
|
+
? opts.expiresInSeconds
|
|
41
|
+
: 60;
|
|
42
|
+
const expiresAt = Date.now() + expiresInSeconds * 1000;
|
|
43
|
+
const waitSeconds = typeof opts.waitSeconds === 'number' && opts.waitSeconds > 0 ? opts.waitSeconds : 0;
|
|
44
|
+
const res = await this.waitLock({
|
|
45
|
+
key: opts.key,
|
|
46
|
+
value,
|
|
47
|
+
expiresAt,
|
|
48
|
+
waitSeconds
|
|
49
|
+
});
|
|
50
|
+
if (!res) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
await opts.run();
|
|
55
|
+
}
|
|
56
|
+
finally {
|
|
57
|
+
// 解锁
|
|
58
|
+
const info = this.lockMap.get(opts.key);
|
|
59
|
+
if (info && info.value === value) {
|
|
60
|
+
this.lockMap.delete(opts.key);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* 等待锁
|
|
67
|
+
* @param opts
|
|
68
|
+
*/
|
|
69
|
+
async waitLock(opts) {
|
|
70
|
+
let start = Date.now();
|
|
71
|
+
while (true) {
|
|
72
|
+
const info = this.lockMap.get(opts.key);
|
|
73
|
+
// 锁不存在或已经过期
|
|
74
|
+
if (!info || info.expiresAt < Date.now()) {
|
|
75
|
+
// 成功获取到锁
|
|
76
|
+
this.lockMap.set(opts.key, {
|
|
77
|
+
value: opts.value,
|
|
78
|
+
expiresAt: opts.expiresAt
|
|
79
|
+
});
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
if (info.value === opts.value) {
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
if (Date.now() - start > opts.waitSeconds * 1000) {
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
await this.sleep();
|
|
89
|
+
}
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* 沉睡
|
|
94
|
+
* @returns
|
|
95
|
+
*/
|
|
96
|
+
sleep() {
|
|
97
|
+
return new Promise((resolve, reject) => {
|
|
98
|
+
setTimeout(resolve, 0);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
let lockManager;
|
|
103
|
+
/**
|
|
104
|
+
* 获取锁管理器。锁管理器提供一个简单的异步并发控制,用于将不确定的顺序的有冲突的异步操作顺序执行,
|
|
105
|
+
* 防止异步流程庞大穿插执行造成的数据混乱和错误,常见于请求的处理。
|
|
106
|
+
* @returns
|
|
107
|
+
*/
|
|
108
|
+
function getLockManager() {
|
|
109
|
+
if (!lockManager) {
|
|
110
|
+
lockManager = new ServerLockManager();
|
|
111
|
+
}
|
|
112
|
+
return lockManager;
|
|
113
|
+
}
|
|
114
|
+
exports.getLockManager = getLockManager;
|
package/dist/log/config.js
CHANGED
|
@@ -1,29 +1,35 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.config = void 0;
|
|
4
|
-
const path_1 = require("path");
|
|
5
|
-
const config_1 = require("../config");
|
|
6
|
-
const validation_1 = require("../validation");
|
|
7
|
-
const level_1 = require("./level");
|
|
8
|
-
const envConfig = (0, config_1.registerConfig)({
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
fileDir,
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.config = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
const config_1 = require("../config");
|
|
6
|
+
const validation_1 = require("../validation");
|
|
7
|
+
const level_1 = require("./level");
|
|
8
|
+
const envConfig = (0, config_1.registerConfig)({
|
|
9
|
+
console: true,
|
|
10
|
+
format: 'text',
|
|
11
|
+
file: false,
|
|
12
|
+
fileDir: 'logs',
|
|
13
|
+
fileMaxDays: 30,
|
|
14
|
+
level: 'INFO'
|
|
15
|
+
}, 'LOG', {
|
|
16
|
+
console: [(0, validation_1.notNull)()],
|
|
17
|
+
format: [(0, validation_1.notNull)()],
|
|
18
|
+
file: [(0, validation_1.notNull)()],
|
|
19
|
+
fileDir: [(0, validation_1.notBlank)()],
|
|
20
|
+
fileMaxDays: [(0, validation_1.min)(1)],
|
|
21
|
+
level: [(0, validation_1.notBlank)()]
|
|
22
|
+
});
|
|
23
|
+
let { fileDir, level } = envConfig;
|
|
24
|
+
// 目录处理
|
|
25
|
+
if (!(0, path_1.isAbsolute)(fileDir)) {
|
|
26
|
+
fileDir = (0, path_1.resolve)(process.cwd(), fileDir);
|
|
27
|
+
}
|
|
28
|
+
exports.config = Object.freeze({
|
|
29
|
+
file: envConfig.file,
|
|
30
|
+
fileDir,
|
|
31
|
+
fileMaxDays: envConfig.fileMaxDays,
|
|
32
|
+
level: (0, level_1.parseLogLevel)(level),
|
|
33
|
+
console: envConfig.console,
|
|
34
|
+
format: envConfig.format
|
|
35
|
+
});
|