sumor 1.3.0 → 2.0.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.
Files changed (179) hide show
  1. package/.eslintignore +6 -0
  2. package/.eslintrc.yml +4 -0
  3. package/.gitattributes +1 -0
  4. package/.github/workflows/audit.yml +22 -0
  5. package/.github/workflows/available.yml +22 -0
  6. package/.github/workflows/ci.yml +45 -0
  7. package/.github/workflows/coverage.yml +23 -0
  8. package/.github/workflows/publish.yml +31 -0
  9. package/.github/workflows/ut.yml +24 -0
  10. package/.husky/pre-commit +10 -0
  11. package/.husky/pre-push +10 -0
  12. package/.prettierrc.yml +7 -0
  13. package/LICENSE +21 -0
  14. package/demo/api/error.js +3 -0
  15. package/demo/api/file.js +4 -0
  16. package/demo/api/file.yaml +11 -0
  17. package/demo/api/hello.js +4 -0
  18. package/demo/api/hello.yaml +13 -0
  19. package/demo/api/login.js +4 -0
  20. package/demo/api/logout.js +4 -0
  21. package/demo/api/long.js +9 -0
  22. package/demo/api/long.yaml +2 -0
  23. package/demo/api/user/admin.js +12 -0
  24. package/demo/api/user/info.js +8 -0
  25. package/demo/config/config.yaml +2 -0
  26. package/demo/i18n/demo.yaml +1 -0
  27. package/demo/package.json +6 -0
  28. package/i18n/README.md +32 -0
  29. package/i18n/sumor_api.yaml +16 -0
  30. package/i18n/sumor_app.yaml +3 -0
  31. package/i18n/sumor_internal.yaml +1 -0
  32. package/i18n/sumor_token.yaml +2 -0
  33. package/i18nExt/sumor_api.de.yaml +3 -0
  34. package/i18nExt/sumor_api.en.yaml +3 -0
  35. package/i18nExt/sumor_api.es.yaml +3 -0
  36. package/i18nExt/sumor_api.fr.yaml +3 -0
  37. package/i18nExt/sumor_api.it.yaml +3 -0
  38. package/i18nExt/sumor_api.ja.yaml +3 -0
  39. package/i18nExt/sumor_api.ko.yaml +3 -0
  40. package/i18nExt/sumor_api.pt.yaml +3 -0
  41. package/i18nExt/sumor_api.zh-TW.yaml +3 -0
  42. package/i18nExt/sumor_api.zh.yaml +3 -0
  43. package/i18nExt/sumor_app.de.yaml +3 -0
  44. package/i18nExt/sumor_app.en.yaml +3 -0
  45. package/i18nExt/sumor_app.es.yaml +3 -0
  46. package/i18nExt/sumor_app.zh-TW.yaml +3 -0
  47. package/i18nExt/sumor_app.zh.yaml +3 -0
  48. package/i18nExt/sumor_internal.de.yaml +1 -0
  49. package/i18nExt/sumor_internal.en.yaml +1 -0
  50. package/i18nExt/sumor_internal.es.yaml +1 -0
  51. package/i18nExt/sumor_internal.zh-TW.yaml +1 -0
  52. package/i18nExt/sumor_internal.zh.yaml +1 -0
  53. package/i18nExt/sumor_token.de.yaml +2 -0
  54. package/i18nExt/sumor_token.es.yaml +2 -0
  55. package/i18nExt/sumor_token.fr.yaml +2 -0
  56. package/i18nExt/sumor_token.it.yaml +2 -0
  57. package/i18nExt/sumor_token.ja.yaml +2 -0
  58. package/i18nExt/sumor_token.ko.yaml +2 -0
  59. package/i18nExt/sumor_token.pt.yaml +2 -0
  60. package/i18nExt/sumor_token.ru.yaml +2 -0
  61. package/i18nExt/sumor_token.tr.yaml +2 -0
  62. package/i18nExt/sumor_token.zh-TW.yaml +2 -0
  63. package/i18nExt/sumor_token.zh.yaml +2 -0
  64. package/jest.config.json +26 -0
  65. package/modules/alertPage/html/template.html +162 -0
  66. package/modules/alertPage/html/undraw_access-denied.svg +52 -0
  67. package/modules/alertPage/html/undraw_alert.svg +1 -0
  68. package/modules/alertPage/html/undraw_celebration.svg +78 -0
  69. package/modules/alertPage/html/undraw_complete-form.svg +1 -0
  70. package/modules/alertPage/html/undraw_login.svg +1 -0
  71. package/modules/alertPage/index.js +46 -0
  72. package/modules/alertPage/index.test.js +12 -0
  73. package/modules/i18n/README.md +90 -0
  74. package/modules/i18n/convertI18nValue/README.md +31 -0
  75. package/modules/i18n/convertI18nValue/getI18nTemplate.js +26 -0
  76. package/modules/i18n/convertI18nValue/getI18nTemplate.test.js +40 -0
  77. package/modules/i18n/convertI18nValue/index.js +14 -0
  78. package/modules/i18n/convertI18nValue/index.test.js +55 -0
  79. package/modules/i18n/convertI18nValue/stringVariableReplace.js +13 -0
  80. package/modules/i18n/convertI18nValue/stringVariableReplace.test.js +39 -0
  81. package/modules/i18n/index.js +26 -0
  82. package/modules/i18n/index.test.js +13 -0
  83. package/modules/i18n/load/README.md +28 -0
  84. package/modules/i18n/load/load.js +31 -0
  85. package/modules/i18n/load/load.test.js +30 -0
  86. package/modules/i18n/registry.js +48 -0
  87. package/modules/i18n/registry.test.js +84 -0
  88. package/modules/logger/convert/parseFile.js +14 -0
  89. package/modules/logger/convert/parseFile.test.js +28 -0
  90. package/modules/logger/convert/stringifyCMD.js +48 -0
  91. package/modules/logger/convert/stringifyCMD.test.js +37 -0
  92. package/modules/logger/convert/stringifyFile.js +24 -0
  93. package/modules/logger/convert/stringifyFile.test.js +79 -0
  94. package/modules/logger/index.js +82 -0
  95. package/modules/logger/index.test.js +124 -0
  96. package/modules/logger/logFileOperator.js +50 -0
  97. package/modules/logger/logFileOperator.test.js +69 -0
  98. package/modules/middlewares/apiMiddleware/errorCatcher.js +9 -0
  99. package/modules/middlewares/apiMiddleware/exposeApis/index.js +82 -0
  100. package/modules/middlewares/apiMiddleware/index.js +111 -0
  101. package/modules/middlewares/apiMiddleware/index.test.js +145 -0
  102. package/modules/middlewares/apiMiddleware/load/index.js +35 -0
  103. package/modules/middlewares/apiMiddleware/load/index.test.js +30 -0
  104. package/modules/middlewares/apiMiddleware/metadataToSwagger.js +139 -0
  105. package/modules/middlewares/apiMiddleware/prepareData/format/caseSensitive.js +26 -0
  106. package/modules/middlewares/apiMiddleware/prepareData/format/caseSensitive.test.js +36 -0
  107. package/modules/middlewares/apiMiddleware/prepareData/format/convertType.js +48 -0
  108. package/modules/middlewares/apiMiddleware/prepareData/format/convertType.test.js +53 -0
  109. package/modules/middlewares/apiMiddleware/prepareData/format/defaultValue.js +31 -0
  110. package/modules/middlewares/apiMiddleware/prepareData/format/defaultValue.test.js +31 -0
  111. package/modules/middlewares/apiMiddleware/prepareData/format/index.js +18 -0
  112. package/modules/middlewares/apiMiddleware/prepareData/format/index.test.js +40 -0
  113. package/modules/middlewares/apiMiddleware/prepareData/format/precision.js +12 -0
  114. package/modules/middlewares/apiMiddleware/prepareData/format/precision.test.js +33 -0
  115. package/modules/middlewares/apiMiddleware/prepareData/format/trim.js +15 -0
  116. package/modules/middlewares/apiMiddleware/prepareData/format/trim.test.js +24 -0
  117. package/modules/middlewares/apiMiddleware/prepareData/index.js +29 -0
  118. package/modules/middlewares/apiMiddleware/prepareData/index.test.js +121 -0
  119. package/modules/middlewares/apiMiddleware/prepareData/validate/checkLength.js +26 -0
  120. package/modules/middlewares/apiMiddleware/prepareData/validate/checkLength.test.js +52 -0
  121. package/modules/middlewares/apiMiddleware/prepareData/validate/index.js +30 -0
  122. package/modules/middlewares/apiMiddleware/public/favicon.ico +0 -0
  123. package/modules/middlewares/apiMiddleware/response/sendError.js +57 -0
  124. package/modules/middlewares/apiMiddleware/response/sendError.test.js +251 -0
  125. package/modules/middlewares/apiMiddleware/response/sendNotFound.js +26 -0
  126. package/modules/middlewares/apiMiddleware/response/sendResponse.js +25 -0
  127. package/modules/middlewares/apiMiddleware/response/sendSuccess.js +30 -0
  128. package/modules/middlewares/bodyMiddleware/cleanupFiles.js +14 -0
  129. package/modules/middlewares/bodyMiddleware/cleanupFiles.test.js +54 -0
  130. package/modules/middlewares/bodyMiddleware/fileParser.js +69 -0
  131. package/modules/middlewares/bodyMiddleware/fileParser.test.js +163 -0
  132. package/modules/middlewares/bodyMiddleware/index.js +12 -0
  133. package/modules/middlewares/bodyMiddleware/index.test.js +64 -0
  134. package/modules/middlewares/bodyMiddleware/mergeData.js +4 -0
  135. package/modules/middlewares/bodyMiddleware/mergeData.test.js +38 -0
  136. package/modules/middlewares/i18nMiddleware/index.js +82 -0
  137. package/modules/middlewares/i18nMiddleware/index.test.js +75 -0
  138. package/modules/middlewares/tokenMiddleware/Token.js +115 -0
  139. package/modules/middlewares/tokenMiddleware/Token.test.js +67 -0
  140. package/modules/middlewares/tokenMiddleware/index.js +32 -0
  141. package/modules/middlewares/tokenMiddleware/index.test.js +115 -0
  142. package/modules/middlewares/tokenMiddleware/parseCookie.js +24 -0
  143. package/modules/middlewares/tokenMiddleware/parseCookie.test.js +49 -0
  144. package/modules/serve/formatConfig.js +7 -0
  145. package/modules/serve/formatConfig.test.js +28 -0
  146. package/modules/serve/index.js +30 -0
  147. package/modules/serve/index.test.js +69 -0
  148. package/modules/serve/listenApp.js +11 -0
  149. package/modules/system/getSystemLanguage.js +9 -0
  150. package/modules/system/getSystemLanguage.test.js +19 -0
  151. package/modules/utils/getError.js +56 -0
  152. package/modules/utils/getError.test.js +97 -0
  153. package/modules/utils/loadConfig.js +73 -0
  154. package/modules/utils/loadConfig.test.js +129 -0
  155. package/modules/utils/pathUtils.js +43 -0
  156. package/modules/utils/pathUtils.test.js +52 -0
  157. package/modules/utils/type.js +14 -0
  158. package/modules/utils/type.test.js +40 -0
  159. package/package.json +61 -1
  160. package/src/app.js +40 -0
  161. package/src/cli.js +28 -0
  162. package/src/index.js +3 -0
  163. package/test-utils/codeTest/README.md +4 -0
  164. package/test-utils/codeTest/custom.css +47 -0
  165. package/test-utils/codeTest/index.js +80 -0
  166. package/test-utils/codeTest/utils/calculateCoverage.js +55 -0
  167. package/test-utils/codeTest/utils/getTestFiles.js +20 -0
  168. package/test-utils/codeTest/utils/runTests.js +38 -0
  169. package/test-utils/codeTest/utils/startServer.js +23 -0
  170. package/test-utils/tmp.js +15 -0
  171. package/cli.js +0 -3
  172. package/index.es.js +0 -578
  173. package/template/web/AppWithFrame.vue +0 -20
  174. package/template/web/index.html +0 -19
  175. package/template/web/src/App.vue +0 -15
  176. package/template/web/src/entry-client.js +0 -9
  177. package/template/web/src/entry-server.js +0 -69
  178. package/template/web/src/main.js +0 -41
  179. package/template/web/src/style.scss +0 -389
package/.eslintignore ADDED
@@ -0,0 +1,6 @@
1
+ coverage
2
+ node_modules
3
+ web/public
4
+ static
5
+ tmp
6
+ apiExplorer
package/.eslintrc.yml ADDED
@@ -0,0 +1,4 @@
1
+ root: true
2
+ extends:
3
+ - standard
4
+ - plugin:prettier/recommended
package/.gitattributes ADDED
@@ -0,0 +1 @@
1
+ * text=auto eol=lf
@@ -0,0 +1,22 @@
1
+ name: Audit
2
+ on:
3
+ schedule:
4
+ - cron: '0 * * * *'
5
+ jobs:
6
+ audit:
7
+ name: Audit
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - name: Checkout code
11
+ uses: actions/checkout@v4
12
+ - name: Use Node.js
13
+ uses: actions/setup-node@v4
14
+ with:
15
+ node-version: '20.x'
16
+ registry-url: 'https://registry.npmjs.org'
17
+ - name: Install NPM dependencies
18
+ run: npm ci
19
+ - name: Check dependencies size
20
+ run: du -sh node_modules
21
+ - name: Run NPM audit
22
+ run: npm audit
@@ -0,0 +1,22 @@
1
+ name: Available
2
+ on:
3
+ schedule:
4
+ - cron: '*/1 * * * *'
5
+ jobs:
6
+ install:
7
+ name: NPM Installation Test
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - name: Use Node.js
11
+ uses: actions/setup-node@v4
12
+ with:
13
+ node-version: '20.x'
14
+ registry-url: 'https://registry.npmjs.org'
15
+ - name: Install NPM dependencies
16
+ run: npm i sumor
17
+ - name: Check dependencies size
18
+ run: du -sh node_modules
19
+ - name: Dependency Check
20
+ run: npm ls
21
+ - name: Audit
22
+ run: npm audit
@@ -0,0 +1,45 @@
1
+ name: CI
2
+ on:
3
+ push:
4
+ branches:
5
+ - main
6
+ jobs:
7
+ check:
8
+ name: Code Quality Check
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - name: Checkout code
12
+ uses: actions/checkout@v4
13
+ - name: Use Node.js
14
+ uses: actions/setup-node@v4
15
+ with:
16
+ node-version: '20.x'
17
+ registry-url: 'https://registry.npmjs.org'
18
+ - name: Install NPM dependencies
19
+ run: npm ci
20
+ - name: Check dependencies size
21
+ run: du -sh node_modules
22
+ - name: Syntax specification checking using ESLint
23
+ run: npm run lint
24
+ - name: Run NPM audit
25
+ run: npm audit
26
+ test:
27
+ name: Unit Test
28
+ needs: check
29
+ runs-on: ubuntu-latest
30
+ strategy:
31
+ matrix:
32
+ node-version: [18.x, 20.x, 22.x]
33
+ steps:
34
+ - name: Checkout code
35
+ uses: actions/checkout@v4
36
+ - name: Use Node.js ${{ matrix.node-version }}
37
+ uses: actions/setup-node@v4
38
+ with:
39
+ node-version: ${{ matrix.node-version }}
40
+ - name: Install NPM dependencies
41
+ run: npm ci
42
+ - name: Check dependencies size
43
+ run: du -sh node_modules
44
+ - name: Unit test using Jest
45
+ run: npm test
@@ -0,0 +1,23 @@
1
+ name: Coverage
2
+ on:
3
+ push:
4
+ branches:
5
+ - main
6
+ jobs:
7
+ test:
8
+ name: Unit Test
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - name: Checkout code
12
+ uses: actions/checkout@v4
13
+ - name: Use Node.js
14
+ uses: actions/setup-node@v4
15
+ with:
16
+ node-version: '20.x'
17
+ registry-url: 'https://registry.npmjs.org'
18
+ - name: Install NPM dependencies
19
+ run: npm ci
20
+ - name: Check dependencies size
21
+ run: du -sh node_modules
22
+ - name: Unit test with coverage using Jest
23
+ run: npm run coverage
@@ -0,0 +1,31 @@
1
+ name: Publish
2
+ on:
3
+ push:
4
+ tags:
5
+ - '*'
6
+ jobs:
7
+ publish:
8
+ name: Publish to NPM
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - name: Checkout code
12
+ uses: actions/checkout@v4
13
+ - name: Use Node.js
14
+ uses: actions/setup-node@v4
15
+ with:
16
+ node-version: '20.x'
17
+ registry-url: 'https://registry.npmjs.org'
18
+ - name: Install NPM dependencies
19
+ run: npm ci
20
+ - name: Check dependencies size
21
+ run: du -sh node_modules
22
+ - name: Syntax specification checking using ESLint
23
+ run: npm run lint
24
+ - name: Run NPM audit
25
+ run: npm audit
26
+ - name: Unit test with coverage using Jest
27
+ run: npm test
28
+ - name: Publish to NPM
29
+ run: npm publish --access public
30
+ env:
31
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
@@ -0,0 +1,24 @@
1
+ name: Test
2
+ on:
3
+ schedule:
4
+ - cron: '0 * * * *'
5
+ jobs:
6
+ test:
7
+ name: Unit test for latest dependencies
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - name: Checkout code
11
+ uses: actions/checkout@v4
12
+ - name: Use Node.js
13
+ uses: actions/setup-node@v4
14
+ with:
15
+ node-version: '20.x'
16
+ registry-url: 'https://registry.npmjs.org'
17
+ - name: Remove package-lock.json
18
+ run: rm -f package-lock.json
19
+ - name: Install NPM dependencies
20
+ run: npm i
21
+ - name: Check dependencies size
22
+ run: du -sh node_modules
23
+ - name: Unit test using Jest
24
+ run: npm run test
@@ -0,0 +1,10 @@
1
+ #!/bin/sh
2
+ #
3
+ # 在运行 pre-commit 脚本之前打印消息
4
+ echo "正在运行 pre-commit 脚本..."
5
+
6
+ # 运行 pre-commit 命令
7
+ npm run pre-commit
8
+
9
+ # 在运行 pre-commit 脚本之后打印消息
10
+ echo "pre-commit 脚本运行完成。"
@@ -0,0 +1,10 @@
1
+ #!/bin/sh
2
+
3
+ # 在运行 pre-push 脚本之前打印消息
4
+ echo "正在运行 pre-push 脚本..."
5
+
6
+ # 运行 pre-push 命令
7
+ npm run pre-push
8
+
9
+ # 在运行 pre-push 脚本之后打印消息
10
+ echo "pre-push 脚本运行完成。"
@@ -0,0 +1,7 @@
1
+ singleQuote: true
2
+ semi: false
3
+ tabWidth: 2
4
+ printWidth: 100
5
+ trailingComma: none
6
+ arrowParens: avoid
7
+ endOfLine: lf
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Sumor Cloud
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,3 @@
1
+ export default (req, res) => {
2
+ throw new Error('This is an error')
3
+ }
@@ -0,0 +1,4 @@
1
+ export default (req, res) => {
2
+ // const file = req.data.file
3
+ return req.data
4
+ }
@@ -0,0 +1,11 @@
1
+ name: File
2
+ methods:
3
+ - POST
4
+ - GET
5
+ parameters:
6
+ file:
7
+ name: 文件
8
+ type: file
9
+ required: true
10
+ id:
11
+ name: 上传请求号
@@ -0,0 +1,4 @@
1
+ export default (req, res) => {
2
+ const name = req.data.name
3
+ return `Hello ${name}!`
4
+ }
@@ -0,0 +1,13 @@
1
+ name: Hello
2
+ path:
3
+ - /hello
4
+ - /hello/:name
5
+ parameters:
6
+ name:
7
+ name: 姓名
8
+ type: string
9
+ required: true
10
+ rules:
11
+ CHARACTER_LIMIT:
12
+ expression: '^[a-zA-Z][a-zA-Z0-9_]{0,19}$'
13
+ message: '姓名只能包含字母、数字和下划线,且不能以数字开头,长度在1-20个字符之间'
@@ -0,0 +1,4 @@
1
+ export default (req, res, next) => {
2
+ req.token.id = 'DEMO_TOKEN'
3
+ req.token.user = 'DEMO_USER'
4
+ }
@@ -0,0 +1,4 @@
1
+ export default (req, res, next) => {
2
+ req.token.id = 'DEMO_TOKEN'
3
+ req.token.user = 'DEMO_USER'
4
+ }
@@ -0,0 +1,9 @@
1
+ export default (req, res) => {
2
+ const times = 100
3
+ let result = ''
4
+ for (let i = 0; i < times; i++) {
5
+ result += 'Hello!'
6
+ }
7
+
8
+ return result
9
+ }
@@ -0,0 +1,2 @@
1
+ methods:
2
+ - GET
@@ -0,0 +1,12 @@
1
+ export default async (req, res) => {
2
+ const { token } = req
3
+
4
+ token.id = 'DEMO_TOKEN'
5
+ token.user = 'DEMO_USER'
6
+
7
+ token.check('ADMIN')
8
+
9
+ return {
10
+ name: 'John Doe'
11
+ }
12
+ }
@@ -0,0 +1,8 @@
1
+ export default async (req, res) => {
2
+ const { token } = req
3
+ token.check()
4
+
5
+ return {
6
+ name: 'John Doe'
7
+ }
8
+ }
@@ -0,0 +1,2 @@
1
+ name: demo
2
+ desc: 示例应用,用于测试和演示
@@ -0,0 +1 @@
1
+ name: 测试
@@ -0,0 +1,6 @@
1
+ {
2
+ "type": "module",
3
+ "scripts": {
4
+ "start": "../src/cli.js start"
5
+ }
6
+ }
package/i18n/README.md ADDED
@@ -0,0 +1,32 @@
1
+ # 国际化配置
2
+
3
+ ## 原始配置
4
+
5
+ 以 `<命名空间>.yaml` 的形式创建配置文件
6
+ 文件内容示例:
7
+
8
+ ```yaml
9
+ NAME: Demo
10
+ ```
11
+
12
+ ## 国际化
13
+
14
+ 在i18nExt目录,以 `<命名空间>.<语言代码>.yaml` 的形式创建配置文件。
15
+ 根据原始配置,创建对应翻译后的国际化配置
16
+
17
+ 建议支持语言代码如下
18
+
19
+ ```yaml
20
+ - zh // 简体中文
21
+ zh-TW // 繁体中文
22
+ en // 通用英语
23
+ de // 德语
24
+ es
25
+ fr
26
+ it
27
+ ja
28
+ ko
29
+ pt
30
+ ru
31
+ tr
32
+ ```
@@ -0,0 +1,16 @@
1
+ API_ERROR_SHOW_MORE: '显示更多技术细节'
2
+ API_CALL_SHOW_MORE: '显示调用详细结果'
3
+ API_CALL_DEFAULT_TITLE: '接口调用成功'
4
+ API_ERROR_UNKNOWN_ERROR: '接口异常,请稍后重试'
5
+ API_ERROR_UNKNOWN_MESSAGE: '接口异常,详细错误信息请查看如下。 路径为:{path}'
6
+ API_METHOD_NOT_ALLOWED: '接口监听路径 {path} 请求方法 {methods} 不允许,已被忽略'
7
+ API_REGISTERED: '接口监听路径 {path}{name} 成功'
8
+ API_REGISTERED_FAILED: '接口监听路径 {path} 失败,程序加载异常'
9
+ API_PROGRAM_WRONG: '程序加载异常'
10
+ API_NOT_FOUND: '接口未找到'
11
+ API_NOT_FOUND_DETAIL: '接口未找到,请检查路径是否正确'
12
+ API_PARAMETERS_NOT_VALID: '数据不符合要求,请检查调用接口传入参数'
13
+ API_PARAMETER_NOT_VALID: '参数{key}的数据不符合要求'
14
+ API_PARAMETER_REQUIRED: '必填项'
15
+ API_PARAMETER_TOO_LONG: '长度不能超过{length}个字符'
16
+ API_CALLED: '接口{path}被调用,数据为{data}'
@@ -0,0 +1,3 @@
1
+ APP_STARTING: '轻呈云应用正在启动...'
2
+ APP_STARTED: '轻呈云应用已启动,运行在 http://localhost:{port}'
3
+ I18N_REGISTERED: 'i18n 已为命名空间 {namespace} 注册'
@@ -0,0 +1 @@
1
+ TEST: 'Test {value}'
@@ -0,0 +1,2 @@
1
+ LOGIN_EXPIRED: '登陆已过期,请重新登录'
2
+ PERMISSION_DENIED: '权限不足,缺少{permission}权限'
@@ -0,0 +1,3 @@
1
+ API_ERROR_SHOW_MORE: 'Mehr technische Details anzeigen'
2
+ API_ERROR_UNKNOWN_ERROR: 'Schnittstellenfehler, bitte versuchen Sie es später erneut'
3
+ API_ERROR_UNKNOWN_MESSAGE: 'Schnittstellenfehler, detaillierte Fehlerinformationen finden Sie unten. Pfad: {path}'
@@ -0,0 +1,3 @@
1
+ API_ERROR_SHOW_MORE: 'Show more technical details'
2
+ API_ERROR_UNKNOWN_ERROR: 'Interface error, please try again later'
3
+ API_ERROR_UNKNOWN_MESSAGE: 'Interface error, detailed error information can be found below. Path: {path}'
@@ -0,0 +1,3 @@
1
+ API_ERROR_SHOW_MORE: 'Mostrar más detalles técnicos'
2
+ API_ERROR_UNKNOWN_ERROR: 'Error de interfaz, inténtelo de nuevo más tarde'
3
+ API_ERROR_UNKNOWN_MESSAGE: 'Error de interfaz, la información detallada del error se puede ver a continuación. Ruta: {path}'
@@ -0,0 +1,3 @@
1
+ API_ERROR_SHOW_MORE: 'Afficher plus de détails techniques'
2
+ API_ERROR_UNKNOWN_ERROR: "Erreur d'interface, veuillez réessayer plus tard"
3
+ API_ERROR_UNKNOWN_MESSAGE: "Erreur d'interface, les informations détaillées sur l'erreur sont disponibles ci-dessous. Chemin : {path}"
@@ -0,0 +1,3 @@
1
+ API_ERROR_SHOW_MORE: 'Mostra più dettagli tecnici'
2
+ API_ERROR_UNKNOWN_ERROR: 'Errore di interfaccia, riprova più tardi'
3
+ API_ERROR_UNKNOWN_MESSAGE: "Errore di interfaccia, le informazioni dettagliate sull'errore sono disponibili di seguito. Percorso: {path}"
@@ -0,0 +1,3 @@
1
+ API_ERROR_SHOW_MORE: '詳細な技術情報を表示'
2
+ API_ERROR_UNKNOWN_ERROR: 'インターフェースエラー、後でもう一度お試しください'
3
+ API_ERROR_UNKNOWN_MESSAGE: 'インターフェースエラー、詳細なエラー情報は以下をご覧ください。 パス:{path}'
@@ -0,0 +1,3 @@
1
+ API_ERROR_SHOW_MORE: '기술 세부정보 더 보기'
2
+ API_ERROR_UNKNOWN_ERROR: '인터페이스 오류, 나중에 다시 시도하세요'
3
+ API_ERROR_UNKNOWN_MESSAGE: '인터페이스 오류, 자세한 오류 정보는 아래를 참조하세요. 경로: {path}'
@@ -0,0 +1,3 @@
1
+ API_ERROR_SHOW_MORE: 'Mostrar mais detalhes técnicos'
2
+ API_ERROR_UNKNOWN_ERROR: 'Erro de interface, tente novamente mais tarde'
3
+ API_ERROR_UNKNOWN_MESSAGE: 'Erro de interface, informações detalhadas do erro podem ser vistas abaixo. Caminho: {path}'
@@ -0,0 +1,3 @@
1
+ API_ERROR_SHOW_MORE: '顯示更多技術細節'
2
+ API_ERROR_UNKNOWN_ERROR: '介面異常,請稍後重試'
3
+ API_ERROR_UNKNOWN_MESSAGE: '介面異常,詳細錯誤資訊請參考如下。 路徑為:{path}'
@@ -0,0 +1,3 @@
1
+ API_ERROR_SHOW_MORE: '显示更多技术细节'
2
+ API_ERROR_UNKNOWN_ERROR: '接口异常,请稍后重试'
3
+ API_ERROR_UNKNOWN_MESSAGE: '接口异常,详细错误信息请查看如下。 路径为:{path}'
@@ -0,0 +1,3 @@
1
+ APP_STARTING: 'Sumor App startet...'
2
+ APP_STARTED: 'Sumor App gestartet, läuft auf http://localhost:{port}'
3
+ I18N_REGISTERED: 'i18n für Namespace {namespace} registriert'
@@ -0,0 +1,3 @@
1
+ APP_STARTING: 'Sumor App starting...'
2
+ APP_STARTED: 'Sumor App started, running on http://localhost:{port}'
3
+ I18N_REGISTERED: 'i18n registered for namespace {namespace}'
@@ -0,0 +1,3 @@
1
+ APP_STARTING: 'Sumor App iniciando...'
2
+ APP_STARTED: 'Sumor App iniciado, ejecutándose en http://localhost:{port}'
3
+ I18N_REGISTERED: 'i18n registrado para el espacio de nombres {namespace}'
@@ -0,0 +1,3 @@
1
+ APP_STARTING: 'Sumor 應用啟動中...'
2
+ APP_STARTED: 'Sumor 應用已啟動,運行在 http://localhost:{port}'
3
+ I18N_REGISTERED: 'i18n 已為命名空間 {namespace} 註冊'
@@ -0,0 +1,3 @@
1
+ APP_STARTING: 'Sumor 应用启动中...'
2
+ APP_STARTED: 'Sumor 应用已启动,运行在 http://localhost:{port}'
3
+ I18N_REGISTERED: 'i18n 已为命名空间 {namespace} 注册'
@@ -0,0 +1 @@
1
+ TEST: 'Test {value}'
@@ -0,0 +1 @@
1
+ TEST: 'Test {value}'
@@ -0,0 +1 @@
1
+ TEST: 'Prueba {value}'
@@ -0,0 +1 @@
1
+ TEST: '測試 {value}'
@@ -0,0 +1 @@
1
+ TEST: '测试 {value}'
@@ -0,0 +1,2 @@
1
+ LOGIN_EXPIRED: 'Anmeldung abgelaufen'
2
+ PERMISSION_DENIED: 'Zugriff verweigert: {permission}'
@@ -0,0 +1,2 @@
1
+ LOGIN_EXPIRED: 'La sesión ha expirado'
2
+ PERMISSION_DENIED: 'Permiso denegado: {permission}'
@@ -0,0 +1,2 @@
1
+ LOGIN_EXPIRED: 'La session a expiré'
2
+ PERMISSION_DENIED: 'Autorisation refusée : {permission}'
@@ -0,0 +1,2 @@
1
+ LOGIN_EXPIRED: 'La sessione è scaduta'
2
+ PERMISSION_DENIED: 'Permesso negato: {permission}'
@@ -0,0 +1,2 @@
1
+ LOGIN_EXPIRED: 'ログインの有効期限が切れました'
2
+ PERMISSION_DENIED: '権限がありません: {permission}'
@@ -0,0 +1,2 @@
1
+ LOGIN_EXPIRED: '로그인 만료'
2
+ PERMISSION_DENIED: '권한이 없습니다: {permission}'
@@ -0,0 +1,2 @@
1
+ LOGIN_EXPIRED: 'Sessão expirada'
2
+ PERMISSION_DENIED: 'Permissão negada: {permission}'
@@ -0,0 +1,2 @@
1
+ LOGIN_EXPIRED: 'Время сеанса истекло'
2
+ PERMISSION_DENIED: 'Доступ запрещен: {permission}'
@@ -0,0 +1,2 @@
1
+ LOGIN_EXPIRED: 'Oturum süresi doldu'
2
+ PERMISSION_DENIED: 'İzin reddedildi: {permission}'
@@ -0,0 +1,2 @@
1
+ LOGIN_EXPIRED: '登入已過期'
2
+ PERMISSION_DENIED: '權限不足: {permission}'
@@ -0,0 +1,2 @@
1
+ LOGIN_EXPIRED: '登陆已过期,请重新登录'
2
+ PERMISSION_DENIED: '权限不足,缺少{permission}权限'
@@ -0,0 +1,26 @@
1
+ {
2
+ "maxWorkers": 10,
3
+ "reporters": [
4
+ "default",
5
+ [
6
+ "jest-html-reporter",
7
+ {
8
+ "pageTitle": "Test Report",
9
+ "outputPath": "./output/unit/index.html"
10
+ }
11
+ ]
12
+ ],
13
+ "coverageThreshold": {
14
+ "global": {
15
+ "branches": 80,
16
+ "functions": 80,
17
+ "lines": 80,
18
+ "statements": 80
19
+ }
20
+ },
21
+ "coverageDirectory": "output/test/all/coverage",
22
+ "coverageReporters": ["json", "lcov", "text", "clover"],
23
+ "collectCoverageFrom": ["modules/**/*.js"],
24
+ "testPathIgnorePatterns": ["node_modules", "output", "static", "dist", "tmp"],
25
+ "coveragePathIgnorePatterns": ["node_modules", "output", "static", "dist", "tmp"]
26
+ }