skybase 0.1.82 → 0.1.85

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 (114) hide show
  1. package/.eslintignore +35 -35
  2. package/.eslintrc +41 -41
  3. package/CHANGELOG.md +28 -472
  4. package/README.md +214 -214
  5. package/demo/1-simple/README.md +1 -1
  6. package/demo/1-simple/index.js +7 -7
  7. package/demo/1-simple/model/api/demo.js +26 -26
  8. package/demo/1-simple/model/api/frontApiFiles//347/224/250/344/272/216/345/261/225/347/244/272/345/246/202/344/275/225/345/256/232/344/271/211/344/270/200/344/270/252/346/216/245/345/217/243.js +32 -32
  9. package/demo/1-simple/model//347/224/250/344/272/216/345/261/225/347/244/272/345/246/202/344/275/225/345/256/232/344/271/211/344/270/200/344/270/252/346/216/245/345/217/243.js +29 -29
  10. package/demo/1-simple/package.json +11 -11
  11. package/demo/1-simple/router/demo.js +8 -8
  12. package/demo/1-simple/ws_router/echo.js +9 -9
  13. package/demo/2-api-register/README.md +1 -1
  14. package/demo/2-api-register/config/config.default.js +25 -25
  15. package/demo/2-api-register/config/config.dev.js +15 -15
  16. package/demo/2-api-register/config/config.prod.js +15 -15
  17. package/demo/2-api-register/config/config.test.js +15 -15
  18. package/demo/2-api-register/config/index.js +32 -32
  19. package/demo/2-api-register/model/api/demo.js +26 -26
  20. package/demo/2-api-register/model/api/dir/demo.js +27 -27
  21. package/demo/2-api-register/model/api/redirect.js +30 -30
  22. package/demo/2-api-register/model/api/use-limit.js +45 -45
  23. package/demo/2-api-register/package.json +11 -11
  24. package/demo/2-api-register/router/demo.js +9 -9
  25. package/demo/2-api-register/router/dir/demo.js +9 -9
  26. package/demo/2-api-register/router/redirect.js +8 -8
  27. package/demo/2-api-register/router/use-limit.js +9 -9
  28. package/demo/3-full-module/README.md +1 -1
  29. package/demo/3-full-module/config/config.default.js +33 -33
  30. package/demo/3-full-module/config/config.dev.js +15 -15
  31. package/demo/3-full-module/config/config.prod.js +15 -15
  32. package/demo/3-full-module/config/config.test.js +15 -15
  33. package/demo/3-full-module/config/index.js +32 -32
  34. package/demo/3-full-module/index.js +36 -36
  35. package/demo/3-full-module/model/api/demo.js +26 -26
  36. package/demo/3-full-module/model/api/dir/demo.js +26 -26
  37. package/demo/3-full-module/model/api/use-rabbitmq.js +26 -26
  38. package/demo/3-full-module/model/api/use-redis.js +33 -33
  39. package/demo/3-full-module/package.json +17 -17
  40. package/demo/3-full-module/rabbit-consumer.js +45 -45
  41. package/demo/3-full-module/router/demo.js +9 -9
  42. package/demo/3-full-module/router/dir/demo.js +9 -9
  43. package/demo/3-full-module/router/use-redis.js +14 -14
  44. package/demo/4-api-to-file/README.md +8 -8
  45. package/demo/4-api-to-file/config/config.default.js +8 -8
  46. package/demo/4-api-to-file/config/index.js +32 -32
  47. package/demo/4-api-to-file/index.js +6 -6
  48. package/demo/4-api-to-file/model/api/api.js +142 -142
  49. package/demo/4-api-to-file/package.json +14 -14
  50. package/demo/4-api-to-file/router/api.js +37 -37
  51. package/demo/5-mock-api/README.md +2 -2
  52. package/demo/5-mock-api/config/config.default.js +8 -8
  53. package/demo/5-mock-api/config/index.js +32 -32
  54. package/demo/5-mock-api/index.js +24 -24
  55. package/demo/5-mock-api/model/api/mock.js +213 -213
  56. package/demo/5-mock-api/model/mock.js +27 -27
  57. package/demo/5-mock-api/package.json +15 -15
  58. package/demo/5-mock-api/router/mock.js +20 -20
  59. package/demo/6-sql-test/README.md +1 -1
  60. package/demo/6-sql-test/config/config.default.js +61 -61
  61. package/demo/6-sql-test/config/config.dev.js +15 -15
  62. package/demo/6-sql-test/config/config.prod.js +15 -15
  63. package/demo/6-sql-test/config/config.test.js +15 -15
  64. package/demo/6-sql-test/config/index.js +32 -32
  65. package/demo/6-sql-test/index.js +48 -48
  66. package/demo/6-sql-test/model/api/dir/dir/dir/four.js +18 -18
  67. package/demo/6-sql-test/model/api/dir/dir/three.js +26 -26
  68. package/demo/6-sql-test/model/api/dir/two.js +26 -26
  69. package/demo/6-sql-test/model/api/one.js +18 -18
  70. package/demo/6-sql-test/package.json +18 -18
  71. package/demo/6-sql-test/router/test.js +38 -38
  72. package/demo/6-sql-test/service/test.js +96 -96
  73. package/demo/7-token/README.md +1 -1
  74. package/demo/7-token/config/config.default.js +35 -35
  75. package/demo/7-token/config/config.dev.js +15 -15
  76. package/demo/7-token/config/config.prod.js +15 -15
  77. package/demo/7-token/config/config.test.js +15 -15
  78. package/demo/7-token/config/index.js +32 -32
  79. package/demo/7-token/model/api/demo.js +43 -43
  80. package/demo/7-token/package.json +17 -17
  81. package/demo/8-test/README.md +1 -1
  82. package/demo/8-test/config/config.default.js +35 -35
  83. package/demo/8-test/config/config.dev.js +15 -15
  84. package/demo/8-test/config/config.prod.js +15 -15
  85. package/demo/8-test/config/config.test.js +15 -15
  86. package/demo/8-test/config/index.js +32 -32
  87. package/demo/8-test/index.js +30 -30
  88. package/demo/8-test/model/api/demo.js +43 -43
  89. package/demo/8-test/model/api/dir/two.js +26 -26
  90. package/demo/8-test/model/api/mock.js +157 -157
  91. package/demo/8-test/model/api/one.js +150 -150
  92. package/demo/8-test/model/mock.js +35 -35
  93. package/demo/8-test/package.json +17 -17
  94. package/demo/8-test/router/demo.js +45 -45
  95. package/demo/8-test/router/mock.js +20 -20
  96. package/demo/8-test/router/test.js +43 -43
  97. package/demo/8-test/service/test.js +35 -35
  98. package/demo/9-mysql-chart/config/config.dev.js +15 -15
  99. package/demo/9-mysql-chart/config/config.prod.js +15 -15
  100. package/demo/9-mysql-chart/config/config.test.js +15 -15
  101. package/demo/9-mysql-chart/index.js +36 -36
  102. package/demo/9-mysql-chart/package.json +18 -18
  103. package/lib/middleware/sky-api-register.js +348 -348
  104. package/lib/middleware/sky-check-param.js +6 -1
  105. package/lib/middleware/sky-cors.js +8 -8
  106. package/lib/middleware/sky-output.js +83 -83
  107. package/lib/middleware/sky-static-server.js +16 -16
  108. package/outFiles.js +325 -325
  109. package/package.json +50 -67
  110. package/sky-module/create_amqplib.js +69 -69
  111. package/sky-module/create_ioredis.js +47 -47
  112. package/sky-module/create_kafka.js +24 -24
  113. package/skyconfig.js +2 -1
  114. package/tests/test.js +173 -173
package/package.json CHANGED
@@ -1,67 +1,50 @@
1
- {
2
- "name": "skybase",
3
- "version": "0.1.82",
4
- "description": "sky框架",
5
- "main": "index.js",
6
- "directories": {
7
- "test": "tests"
8
- },
9
- "repository": {
10
- "type": "git",
11
- "url": "https://github.com/kongnet/skybase.git"
12
- },
13
- "scripts": {
14
- "cz": "conventional-changelog -p atom -i CHANGELOG.md -s -r 0 && git add . && git status && git cz",
15
- "push": "npm version patch && npm publish . && git push",
16
- "test": "nyc --reporter=html mocha ./tests/*.js",
17
- "demo1": "nodemon demo/1-simple/index.js",
18
- "demo2": "nodemon demo/2-api-register/index.js",
19
- "demo3": "nodemon demo/3-full-module/index.js",
20
- "demo4": "nodemon demo/4-api-to-file/index.js",
21
- "demo5": "nodemon demo/5-mock-api/index.js",
22
- "demo6": "nodemon demo/6-sql-test/index.js",
23
- "demo7": "nodemon demo/7-token/index.js",
24
- "demo8": "nodemon demo/8-test/index.js",
25
- "demo9": "nodemon demo/9-mysql-chart/index.js"
26
- },
27
- "author": "",
28
- "license": "MIT",
29
- "dependencies": {
30
- "amqplib": "^0.5.3",
31
- "figlet": "^1.2.1",
32
- "ioredis": "^4.10.0",
33
- "j2sql": "^1.9.25",
34
- "kafka-node": "^4.1.3",
35
- "koa": "^2.7.0",
36
- "koa-better-body": "^3.0.4",
37
- "koa-convert": "^1.2.0",
38
- "koa-router": "^7.4.0",
39
- "koa-static": "^5.0.0",
40
- "koa2-cors": "^2.0.6",
41
- "meeko": "*",
42
- "mockjs": "^1.0.1-beta3",
43
- "request": "^2.88.0",
44
- "request-promise-native": "^1.0.7"
45
- },
46
- "devDependencies": {
47
- "amqplib": "^0.5.3",
48
- "babel-eslint": "^10.0.2",
49
- "cc-jt": "^0.1.21",
50
- "co-mocha": "^1.2.2",
51
- "conventional-changelog": "^3.1.10",
52
- "cz-jt": "^0.1.11",
53
- "eslint": "^6.1.0",
54
- "eslint-plugin-html": "^6.0.0",
55
- "eslint-plugin-vue": "^5.2.3",
56
- "mocha": "^6.1.4",
57
- "nodemon": "^2.0.4",
58
- "nyc": "^14.1.1",
59
- "socket.io": "^2.3.0",
60
- "standard": "^12.0.1"
61
- },
62
- "config": {
63
- "commitizen": {
64
- "path": "./node_modules/cz-jt"
65
- }
66
- }
67
- }
1
+ {
2
+ "name": "skybase",
3
+ "version": "0.1.85",
4
+ "description": "sky框架",
5
+ "main": "index.js",
6
+ "directories": {
7
+ "test": "tests"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/kongnet/skybase.git"
12
+ },
13
+ "scripts": {
14
+ "cz": "conventional-changelog -p atom -i CHANGELOG.md -s -r 0 && git add . && git status && git cz",
15
+ "push": "npm version patch && npm publish . && git push",
16
+ "test": "nyc --reporter=html mocha ./tests/*.js",
17
+ "demo1": "nodemon demo/1-simple/index.js",
18
+ "demo2": "nodemon demo/2-api-register/index.js",
19
+ "demo3": "nodemon demo/3-full-module/index.js",
20
+ "demo4": "nodemon demo/4-api-to-file/index.js",
21
+ "demo5": "nodemon demo/5-mock-api/index.js",
22
+ "demo6": "nodemon demo/6-sql-test/index.js",
23
+ "demo7": "nodemon demo/7-token/index.js",
24
+ "demo8": "nodemon demo/8-test/index.js",
25
+ "demo9": "nodemon demo/9-mysql-chart/index.js"
26
+ },
27
+ "author": "9601698@qq.com",
28
+ "license": "MIT",
29
+ "dependencies": {
30
+ "amqplib": "*",
31
+ "figlet": "^1.5.2",
32
+ "kafka-node": "*",
33
+ "koa": "^2.13.4",
34
+ "koa-better-body": "^3.3.9",
35
+ "koa-convert": "^2.0.0",
36
+ "koa-router": "^10.1.1",
37
+ "koa-static": "^5.0.0",
38
+ "koa2-cors": "^2.0.6",
39
+ "meeko": "*"
40
+ },
41
+ "devDependencies": {
42
+ "conventional-changelog": "^3.1.10",
43
+ "cz-jt": "^0.1.11"
44
+ },
45
+ "config": {
46
+ "commitizen": {
47
+ "path": "./node_modules/cz-jt"
48
+ }
49
+ }
50
+ }
@@ -1,71 +1,71 @@
1
- /**
2
- * rabbit_mq 连接器,带断开自动重连功能
3
- * */
4
-
5
- const $ = require('meeko')
6
- const amqp = require('amqplib')
7
- $.option.logTime = false
8
-
9
- /**
10
- * 给MQ加一些必须的监听器,包括处理重新连接的逻辑
1
+ /**
2
+ * rabbit_mq 连接器,带断开自动重连功能
11
3
  * */
12
-
13
- const addListener = (mq, conf, onReconnected) => {
14
- mq.on('close', async (e) => {
15
- // 启动后,断开了连接
16
- $.err($.c.r('✘'), `-x- rabbitMQ [${$.c.y(`${conf.hostname} : ${conf.port}`)}] close...`)
17
- $.err(e.message)
18
-
19
- if (onReconnected) {
20
- const MQ = await createAmqp(conf, onReconnected)
21
- $.log($.c.g('✔'), `rabbitMQ [${$.c.y(`${conf.hostname} : ${conf.port}`)}]`)
22
- onReconnected && onReconnected(MQ)
23
- }
24
- })
25
-
26
- mq.on('error', function (e) {
27
- $.err($.c.r('✘'), `-x- rabbitMQ [${$.c.y(`${conf.hostname} : ${conf.port}`)}] disconnect...`)
28
- $.err(e.message)
29
- })
30
- }
31
-
32
- /**
33
- * 创建并连接队列
34
- * @param conf 配置
35
- * @param {function(ChannelModel)} onReconnected 重连成功之后执行的方法
36
- * 重连之后,整个MQ实例都会换掉(amqplib就有这个坑),如果是消费者,重连之后必须重新注册,否则即使重连了,也接收不到数据了
37
- *
38
- * @return {Promise<ChannelModel>}
4
+
5
+ const $ = require('meeko')
6
+ const amqp = require('amqplib')
7
+ $.option.logTime = false
8
+
9
+ /**
10
+ * 给MQ加一些必须的监听器,包括处理重新连接的逻辑
39
11
  * */
40
-
41
- const createAmqp = async (conf, onReconnected) => {
42
- const option = {
43
- protocol: conf.protocol,
44
- hostname: conf.host,
45
- port: conf.port,
46
- username: conf.login,
47
- password: conf.password,
48
- locale: 'en_US',
49
- frameMax: 0,
50
- heartbeat: 7,
51
- vhost: conf.vhost,
52
- }
53
-
54
- let err = false
55
- do {
56
- try {
57
- const MQ = await amqp.connect(option)
58
- addListener(MQ, option, onReconnected)
59
- $.log($.c.g('✔'), `rabbitMQ [${$.c.y(`${option.hostname} : ${option.port}`)}]`)
60
- return MQ
61
- } catch (e) {
62
- $.err($.c.r('✘'), `-x- rabbitMQ [${$.c.y(`${option.hostname} : ${option.port}`)}] connected fail...`)
63
- $.err(e.stack)
64
- err = true
65
- await $.wait(2000)
66
- }
67
- } while (err)
68
- return false
69
- }
70
-
71
- module.exports = createAmqp
12
+
13
+ const addListener = (mq, conf, onReconnected) => {
14
+ mq.on('close', async (e) => {
15
+ // 启动后,断开了连接
16
+ $.err($.c.r('✘'), `-x- rabbitMQ [${$.c.y(`${conf.hostname} : ${conf.port}`)}] close...`)
17
+ $.err(e.message)
18
+
19
+ if (onReconnected) {
20
+ const MQ = await createAmqp(conf, onReconnected)
21
+ $.log($.c.g('✔'), `rabbitMQ [${$.c.y(`${conf.hostname} : ${conf.port}`)}]`)
22
+ onReconnected && onReconnected(MQ)
23
+ }
24
+ })
25
+
26
+ mq.on('error', function (e) {
27
+ $.err($.c.r('✘'), `-x- rabbitMQ [${$.c.y(`${conf.hostname} : ${conf.port}`)}] disconnect...`)
28
+ $.err(e.message)
29
+ })
30
+ }
31
+
32
+ /**
33
+ * 创建并连接队列
34
+ * @param conf 配置
35
+ * @param {function(ChannelModel)} onReconnected 重连成功之后执行的方法
36
+ * 重连之后,整个MQ实例都会换掉(amqplib就有这个坑),如果是消费者,重连之后必须重新注册,否则即使重连了,也接收不到数据了
37
+ *
38
+ * @return {Promise<ChannelModel>}
39
+ * */
40
+
41
+ const createAmqp = async (conf, onReconnected) => {
42
+ const option = {
43
+ protocol: conf.protocol,
44
+ hostname: conf.host,
45
+ port: conf.port,
46
+ username: conf.login,
47
+ password: conf.password,
48
+ locale: 'en_US',
49
+ frameMax: 0,
50
+ heartbeat: 7,
51
+ vhost: conf.vhost,
52
+ }
53
+
54
+ let err = false
55
+ do {
56
+ try {
57
+ const MQ = await amqp.connect(option)
58
+ addListener(MQ, option, onReconnected)
59
+ $.log($.c.g('✔'), `rabbitMQ [${$.c.y(`${option.hostname} : ${option.port}`)}]`)
60
+ return MQ
61
+ } catch (e) {
62
+ $.err($.c.r('✘'), `-x- rabbitMQ [${$.c.y(`${option.hostname} : ${option.port}`)}] connected fail...`)
63
+ $.err(e.stack)
64
+ err = true
65
+ await $.wait(2000)
66
+ }
67
+ } while (err)
68
+ return false
69
+ }
70
+
71
+ module.exports = createAmqp
@@ -1,47 +1,47 @@
1
- /* global $ */
2
- const Redis = require('ioredis')
3
- $.option.logTime = false
4
- const connect = function (rd) {
5
- let hadConnected = false
6
- let connected
7
-
8
- // ioredis 的 auth 叫 password
9
- rd.password = rd.auth
10
-
11
- const redis = new Redis(rd)
12
-
13
- // ioredis 自动重连出错时:
14
- redis.reconnectOnError = function (err) {
15
- redis.connStatus = { stat: 0 }
16
- $.err($.c.r('✘'), `-x- Redis [${$.c.y(`${rd.host} : ${rd.port}`)}] disconnect...`)
17
- $.err('redis连接失败原因:', err.code, err.message)
18
- return false // 返回true或1才会重新启动
19
- }
20
- redis.on('connect', function () {
21
- redis.connStatus = { stat: 1 }
22
- redis.dbsize().then(function (_r) {
23
- _r = _r || 0
24
- $.log($.c.g('✔'), `Redis [${$.c.y(`${rd.host} : ${rd.port}`)}] db ${$.c.y(rd.db)} [${$.c.y(_r)}] Objects`)
25
-
26
- hadConnected = true
27
- connected && connected()
28
- })
29
- })
30
- redis.on('error', function (e) {
31
- $.err($.c.r('✘'), `-x- Redis [${$.c.y(`${rd.host} : ${rd.port}`)}] ${e.toString()}`)
32
- })
33
-
34
- redis.waitForConnected = () => new class {
35
- then (fn) {
36
- if (hadConnected) {
37
- fn()
38
- } else {
39
- connected = fn
40
- }
41
- }
42
- }()
43
-
44
- return redis
45
- }
46
-
47
- module.exports = connect
1
+ /* global $ */
2
+ const Redis = require('ioredis')
3
+ $.option.logTime = false
4
+ const connect = function (rd) {
5
+ let hadConnected = false
6
+ let connected
7
+
8
+ // ioredis 的 auth 叫 password
9
+ rd.password = rd.auth
10
+
11
+ const redis = new Redis(rd)
12
+
13
+ // ioredis 自动重连出错时:
14
+ redis.reconnectOnError = function (err) {
15
+ redis.connStatus = { stat: 0 }
16
+ $.err($.c.r('✘'), `-x- Redis [${$.c.y(`${rd.host} : ${rd.port}`)}] disconnect...`)
17
+ $.err('redis连接失败原因:', err.code, err.message)
18
+ return false // 返回true或1才会重新启动
19
+ }
20
+ redis.on('connect', function () {
21
+ redis.connStatus = { stat: 1 }
22
+ redis.dbsize().then(function (_r) {
23
+ _r = _r || 0
24
+ $.log($.c.g('✔'), `Redis [${$.c.y(`${rd.host} : ${rd.port}`)}] db ${$.c.y(rd.db)} [${$.c.y(_r)}] Objects`)
25
+
26
+ hadConnected = true
27
+ connected && connected()
28
+ })
29
+ })
30
+ redis.on('error', function (e) {
31
+ $.err($.c.r('✘'), `-x- Redis [${$.c.y(`${rd.host} : ${rd.port}`)}] ${e.toString()}`)
32
+ })
33
+
34
+ redis.waitForConnected = () => new class {
35
+ then (fn) {
36
+ if (hadConnected) {
37
+ fn()
38
+ } else {
39
+ connected = fn
40
+ }
41
+ }
42
+ }()
43
+
44
+ return redis
45
+ }
46
+
47
+ module.exports = connect
@@ -1,24 +1,24 @@
1
- const $ = require('meeko')
2
- const kafka = require('kafka-node')
3
- const HighLevelProducer = kafka.HighLevelProducer
4
- const Client = kafka.KafkaClient
5
- $.option.logTime = false
6
- module.exports = async (kafkaConfig) => {
7
- try {
8
- let client = new Client({ kafkaHost: kafkaConfig.host })
9
- const producer = new HighLevelProducer(client)
10
-
11
- producer.on('ready', function () {
12
- $.log($.c.g('✔'), `Kafka [${$.c.y(kafkaConfig.host)}]`)
13
- })
14
-
15
- producer.on('error', function (e) {
16
- $.err($.c.r('✘'), `-x- Kafka [${$.c.y(kafkaConfig.host)}] disconnect...`)
17
- })
18
- return producer
19
- } catch (e) {
20
- $.err($.c.r('✘'), `-x- Kafka [${$.c.y(kafkaConfig.host)}] disconnect...`)
21
- console.error(e.stack)
22
- }
23
- return null
24
- }
1
+ const $ = require('meeko')
2
+ const kafka = require('kafka-node')
3
+ const HighLevelProducer = kafka.HighLevelProducer
4
+ const Client = kafka.KafkaClient
5
+ $.option.logTime = false
6
+ module.exports = async (kafkaConfig) => {
7
+ try {
8
+ let client = new Client({ kafkaHost: kafkaConfig.host })
9
+ const producer = new HighLevelProducer(client)
10
+
11
+ producer.on('ready', function () {
12
+ $.log($.c.g('✔'), `Kafka [${$.c.y(kafkaConfig.host)}]`)
13
+ })
14
+
15
+ producer.on('error', function (e) {
16
+ $.err($.c.r('✘'), `-x- Kafka [${$.c.y(kafkaConfig.host)}] disconnect...`)
17
+ })
18
+ return producer
19
+ } catch (e) {
20
+ $.err($.c.r('✘'), `-x- Kafka [${$.c.y(kafkaConfig.host)}] disconnect...`)
21
+ console.error(e.stack)
22
+ }
23
+ return null
24
+ }
package/skyconfig.js CHANGED
@@ -118,7 +118,8 @@ module.exports = {
118
118
 
119
119
  bodyParse: {
120
120
  multipart: !0,
121
- formLimit: '100mb', // 100M 文件上传限制
121
+ maxFileSize: 1024 * 1024 * 1024, // 1000M 文件上传限制 和下面的formLimit需要一起改
122
+ formLimit: '1000mb', // 1000M 文件上传限制
122
123
  jsonLimit: '2mb', // body中json格式大小限制
123
124
  textLimit: '2mb', //
124
125
  extendTypes: {