skybase 0.1.84 → 0.1.87
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/.eslintignore +35 -35
- package/.eslintrc +41 -41
- package/CHANGELOG.md +30 -491
- package/README.md +214 -214
- package/demo/1-simple/README.md +1 -1
- package/demo/1-simple/index.js +7 -7
- package/demo/1-simple/model/api/demo.js +26 -26
- 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
- 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
- package/demo/1-simple/package.json +11 -11
- package/demo/1-simple/router/demo.js +8 -8
- package/demo/1-simple/ws_router/echo.js +9 -9
- package/demo/2-api-register/README.md +1 -1
- package/demo/2-api-register/config/config.default.js +25 -25
- package/demo/2-api-register/config/config.dev.js +15 -15
- package/demo/2-api-register/config/config.prod.js +15 -15
- package/demo/2-api-register/config/config.test.js +15 -15
- package/demo/2-api-register/config/index.js +32 -32
- package/demo/2-api-register/model/api/demo.js +26 -26
- package/demo/2-api-register/model/api/dir/demo.js +27 -27
- package/demo/2-api-register/model/api/redirect.js +30 -30
- package/demo/2-api-register/model/api/use-limit.js +45 -45
- package/demo/2-api-register/package.json +11 -11
- package/demo/2-api-register/router/demo.js +9 -9
- package/demo/2-api-register/router/dir/demo.js +9 -9
- package/demo/2-api-register/router/redirect.js +8 -8
- package/demo/2-api-register/router/use-limit.js +9 -9
- package/demo/3-full-module/README.md +1 -1
- package/demo/3-full-module/config/config.default.js +33 -33
- package/demo/3-full-module/config/config.dev.js +15 -15
- package/demo/3-full-module/config/config.prod.js +15 -15
- package/demo/3-full-module/config/config.test.js +15 -15
- package/demo/3-full-module/config/index.js +32 -32
- package/demo/3-full-module/index.js +36 -36
- package/demo/3-full-module/model/api/demo.js +26 -26
- package/demo/3-full-module/model/api/dir/demo.js +26 -26
- package/demo/3-full-module/model/api/use-rabbitmq.js +26 -26
- package/demo/3-full-module/model/api/use-redis.js +33 -33
- package/demo/3-full-module/package.json +17 -17
- package/demo/3-full-module/rabbit-consumer.js +45 -45
- package/demo/3-full-module/router/demo.js +9 -9
- package/demo/3-full-module/router/dir/demo.js +9 -9
- package/demo/3-full-module/router/use-redis.js +14 -14
- package/demo/4-api-to-file/README.md +8 -8
- package/demo/4-api-to-file/config/config.default.js +8 -8
- package/demo/4-api-to-file/config/index.js +32 -32
- package/demo/4-api-to-file/index.js +6 -6
- package/demo/4-api-to-file/model/api/api.js +142 -142
- package/demo/4-api-to-file/package.json +14 -14
- package/demo/4-api-to-file/router/api.js +37 -37
- package/demo/5-mock-api/README.md +2 -2
- package/demo/5-mock-api/config/config.default.js +8 -8
- package/demo/5-mock-api/config/index.js +32 -32
- package/demo/5-mock-api/index.js +24 -24
- package/demo/5-mock-api/model/api/mock.js +213 -213
- package/demo/5-mock-api/model/mock.js +27 -27
- package/demo/5-mock-api/package.json +15 -15
- package/demo/5-mock-api/router/mock.js +20 -20
- package/demo/6-sql-test/README.md +1 -1
- package/demo/6-sql-test/config/config.default.js +61 -61
- package/demo/6-sql-test/config/config.dev.js +15 -15
- package/demo/6-sql-test/config/config.prod.js +15 -15
- package/demo/6-sql-test/config/config.test.js +15 -15
- package/demo/6-sql-test/config/index.js +32 -32
- package/demo/6-sql-test/index.js +48 -48
- package/demo/6-sql-test/model/api/dir/dir/dir/four.js +18 -18
- package/demo/6-sql-test/model/api/dir/dir/three.js +26 -26
- package/demo/6-sql-test/model/api/dir/two.js +26 -26
- package/demo/6-sql-test/model/api/one.js +18 -18
- package/demo/6-sql-test/package.json +18 -18
- package/demo/6-sql-test/router/test.js +38 -38
- package/demo/6-sql-test/service/test.js +96 -96
- package/demo/7-token/README.md +1 -1
- package/demo/7-token/config/config.default.js +35 -35
- package/demo/7-token/config/config.dev.js +15 -15
- package/demo/7-token/config/config.prod.js +15 -15
- package/demo/7-token/config/config.test.js +15 -15
- package/demo/7-token/config/index.js +32 -32
- package/demo/7-token/model/api/demo.js +43 -43
- package/demo/7-token/package.json +17 -17
- package/demo/8-test/README.md +1 -1
- package/demo/8-test/config/config.default.js +35 -35
- package/demo/8-test/config/config.dev.js +15 -15
- package/demo/8-test/config/config.prod.js +15 -15
- package/demo/8-test/config/config.test.js +15 -15
- package/demo/8-test/config/index.js +32 -32
- package/demo/8-test/index.js +30 -30
- package/demo/8-test/model/api/demo.js +43 -43
- package/demo/8-test/model/api/dir/two.js +26 -26
- package/demo/8-test/model/api/mock.js +157 -157
- package/demo/8-test/model/api/one.js +150 -150
- package/demo/8-test/model/mock.js +35 -35
- package/demo/8-test/package.json +17 -17
- package/demo/8-test/router/demo.js +45 -45
- package/demo/8-test/router/mock.js +20 -20
- package/demo/8-test/router/test.js +43 -43
- package/demo/8-test/service/test.js +35 -35
- package/demo/9-mysql-chart/config/config.dev.js +15 -15
- package/demo/9-mysql-chart/config/config.prod.js +15 -15
- package/demo/9-mysql-chart/config/config.test.js +15 -15
- package/demo/9-mysql-chart/index.js +36 -36
- package/demo/9-mysql-chart/package.json +18 -18
- package/lib/middleware/sky-api-register.js +348 -348
- package/lib/middleware/sky-cors.js +8 -8
- package/lib/middleware/sky-output.js +83 -83
- package/lib/middleware/sky-static-server.js +16 -16
- package/outFiles.js +325 -325
- package/package.json +50 -67
- package/sky-module/create_amqplib.js +69 -69
- package/sky-module/create_ioredis.js +47 -47
- package/sky-module/create_kafka.js +24 -24
- package/tests/test.js +173 -173
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 跨域
|
|
1
|
+
/**
|
|
2
|
+
* 跨域
|
|
3
3
|
* */
|
|
4
|
-
|
|
5
|
-
const cors = require('koa2-cors')
|
|
6
|
-
|
|
7
|
-
module.exports = cors({
|
|
8
|
-
maxAge: 600
|
|
9
|
-
})
|
|
4
|
+
|
|
5
|
+
const cors = require('koa2-cors')
|
|
6
|
+
|
|
7
|
+
module.exports = cors({
|
|
8
|
+
maxAge: 600
|
|
9
|
+
})
|
|
@@ -1,85 +1,85 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 记录api运行前后的状态,并封装到response中
|
|
1
|
+
/**
|
|
2
|
+
* 记录api运行前后的状态,并封装到response中
|
|
3
3
|
* */
|
|
4
|
-
|
|
5
|
-
const $G = global.$G = global.$G || {}
|
|
6
|
-
const $ = require('meeko')
|
|
7
|
-
|
|
8
|
-
// 是否停止接收新的网络请求。如果设为 true ,来了新请求,还是会先判断参数是否正确,是否登录,然后返回 503
|
|
9
|
-
$G.stopNewRequest = false
|
|
10
|
-
|
|
11
|
-
// 拦截最后的返回
|
|
12
|
-
const interceptLastReturn = (ctx) => {
|
|
13
|
-
switch (ctx.status) {
|
|
14
|
-
case 200:
|
|
15
|
-
break
|
|
16
|
-
case 204:
|
|
17
|
-
ctx.throwCode(204, 'sys:无内容返回')
|
|
18
|
-
break
|
|
19
|
-
case 405:
|
|
20
|
-
ctx.throwCode(405, 'sys:无访问api权限')
|
|
21
|
-
break
|
|
22
|
-
case 404:
|
|
23
|
-
// ctx.throwCode.call(ctx, 404, 'sys:无此api或api发生错误', '', ctx)
|
|
24
|
-
ctx.throwCode(404, 'sys:无此api或api发生错误')
|
|
25
|
-
break
|
|
26
|
-
case 401:
|
|
27
|
-
ctx.throwCode(401, 'sys:无权限')
|
|
28
|
-
break
|
|
29
|
-
default:
|
|
30
|
-
ctx.throwCode(ctx.status, 'sys:服务端未知错误')
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
module.exports = async (ctx, next) => {
|
|
35
|
-
// (1) 进入路由
|
|
36
|
-
const start = Date.now()
|
|
37
|
-
try {
|
|
38
|
-
if ($G.stopNewRequest) {
|
|
39
|
-
ctx.throwCode(503, '服务端暂时停止服务,请稍后再试')
|
|
40
|
-
} else {
|
|
41
|
-
await next()
|
|
42
|
-
}
|
|
43
|
-
} catch (e) {
|
|
44
|
-
$.err(e.stack)
|
|
45
|
-
switch (true) {
|
|
46
|
-
case e.message.indexOf('ETIMEDOUT') > -1:
|
|
47
|
-
ctx.throwCode(599, '服务端超时')
|
|
48
|
-
break
|
|
49
|
-
case e.message.indexOf('ENOENT') > -1:
|
|
50
|
-
ctx.throwCode(598, '服务端找不到路径')
|
|
51
|
-
break
|
|
52
|
-
case e.message === 'request entity too large':
|
|
53
|
-
ctx.throwCode(413, `请求体过大:${e.length} / ${e.limit} 字节`)
|
|
54
|
-
break
|
|
55
|
-
default:
|
|
56
|
-
ctx.throwCode(500, e.message, e)
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// (5) 再次进入 x-response-time 中间件,记录2次通过此中间件「穿越」的时间
|
|
61
|
-
let ms = Date.now() - start
|
|
62
|
-
// this.response.type = 'html' //总体控制mime
|
|
63
|
-
ctx.set('X-Response-Time', ms + 'ms')
|
|
64
|
-
|
|
65
|
-
// 这个功能很久没用了,注释掉
|
|
66
|
-
// if (aModule.includes('track')) {
|
|
67
|
-
// let url = ctx.request.url
|
|
68
|
-
// let _url = url.split('?')[0].split('/')
|
|
69
|
-
// if (api[_url[1]] && Pro.track.apiTrack) {
|
|
70
|
-
// req.post({
|
|
71
|
-
// url: `${Pro.track.host}/chart/apirecord`,
|
|
72
|
-
// form: { k: _url.join('_'), v: ms },
|
|
73
|
-
// json: true
|
|
74
|
-
// },
|
|
75
|
-
// function (e, d) {
|
|
76
|
-
// // $.dir(d.body)
|
|
77
|
-
// })
|
|
78
|
-
// }
|
|
79
|
-
// }
|
|
80
|
-
interceptLastReturn(ctx)
|
|
81
4
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
5
|
+
const $G = global.$G = global.$G || {}
|
|
6
|
+
const $ = require('meeko')
|
|
7
|
+
|
|
8
|
+
// 是否停止接收新的网络请求。如果设为 true ,来了新请求,还是会先判断参数是否正确,是否登录,然后返回 503
|
|
9
|
+
$G.stopNewRequest = false
|
|
10
|
+
|
|
11
|
+
// 拦截最后的返回
|
|
12
|
+
const interceptLastReturn = (ctx) => {
|
|
13
|
+
switch (ctx.status) {
|
|
14
|
+
case 200:
|
|
15
|
+
break
|
|
16
|
+
case 204:
|
|
17
|
+
ctx.throwCode(204, 'sys:无内容返回')
|
|
18
|
+
break
|
|
19
|
+
case 405:
|
|
20
|
+
ctx.throwCode(405, 'sys:无访问api权限')
|
|
21
|
+
break
|
|
22
|
+
case 404:
|
|
23
|
+
// ctx.throwCode.call(ctx, 404, 'sys:无此api或api发生错误', '', ctx)
|
|
24
|
+
ctx.throwCode(404, 'sys:无此api或api发生错误')
|
|
25
|
+
break
|
|
26
|
+
case 401:
|
|
27
|
+
ctx.throwCode(401, 'sys:无权限')
|
|
28
|
+
break
|
|
29
|
+
default:
|
|
30
|
+
ctx.throwCode(ctx.status, 'sys:服务端未知错误')
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
module.exports = async (ctx, next) => {
|
|
35
|
+
// (1) 进入路由
|
|
36
|
+
const start = Date.now()
|
|
37
|
+
try {
|
|
38
|
+
if ($G.stopNewRequest) {
|
|
39
|
+
ctx.throwCode(503, '服务端暂时停止服务,请稍后再试')
|
|
40
|
+
} else {
|
|
41
|
+
await next()
|
|
42
|
+
}
|
|
43
|
+
} catch (e) {
|
|
44
|
+
$.err(e.stack)
|
|
45
|
+
switch (true) {
|
|
46
|
+
case e.message.indexOf('ETIMEDOUT') > -1:
|
|
47
|
+
ctx.throwCode(599, '服务端超时')
|
|
48
|
+
break
|
|
49
|
+
case e.message.indexOf('ENOENT') > -1:
|
|
50
|
+
ctx.throwCode(598, '服务端找不到路径')
|
|
51
|
+
break
|
|
52
|
+
case e.message === 'request entity too large':
|
|
53
|
+
ctx.throwCode(413, `请求体过大:${e.length} / ${e.limit} 字节`)
|
|
54
|
+
break
|
|
55
|
+
default:
|
|
56
|
+
ctx.throwCode(500, e.message, e)
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// (5) 再次进入 x-response-time 中间件,记录2次通过此中间件「穿越」的时间
|
|
61
|
+
let ms = Date.now() - start
|
|
62
|
+
// this.response.type = 'html' //总体控制mime
|
|
63
|
+
ctx.set('X-Response-Time', ms + 'ms')
|
|
64
|
+
|
|
65
|
+
// 这个功能很久没用了,注释掉
|
|
66
|
+
// if (aModule.includes('track')) {
|
|
67
|
+
// let url = ctx.request.url
|
|
68
|
+
// let _url = url.split('?')[0].split('/')
|
|
69
|
+
// if (api[_url[1]] && Pro.track.apiTrack) {
|
|
70
|
+
// req.post({
|
|
71
|
+
// url: `${Pro.track.host}/chart/apirecord`,
|
|
72
|
+
// form: { k: _url.join('_'), v: ms },
|
|
73
|
+
// json: true
|
|
74
|
+
// },
|
|
75
|
+
// function (e, d) {
|
|
76
|
+
// // $.dir(d.body)
|
|
77
|
+
// })
|
|
78
|
+
// }
|
|
79
|
+
// }
|
|
80
|
+
interceptLastReturn(ctx)
|
|
81
|
+
|
|
82
|
+
/* this.set('token','kongxiangfeng');
|
|
83
|
+
this.type = 'json'; */
|
|
84
|
+
// (6) 返回 this.body
|
|
85
|
+
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
// NOTICE: 优先进入web容器
|
|
2
|
-
const $ = require('meeko')
|
|
3
|
-
const { rootDir, staticDir } = require('../../skyconfig')
|
|
4
|
-
const path = require('path')
|
|
5
|
-
const fs = require('fs')
|
|
6
|
-
const skyStaticServer = require('koa-static')
|
|
7
|
-
let wwwPath
|
|
8
|
-
if (staticDir) {
|
|
9
|
-
wwwPath = path.join(rootDir, staticDir)
|
|
10
|
-
let isWwwExist = fs.existsSync(wwwPath)
|
|
11
|
-
if (!isWwwExist) { console.log($.c.y(`😵 ${wwwPath} 静态文件服务配置但目录不存在`)) }
|
|
12
|
-
} else {
|
|
13
|
-
wwwPath = path.join(rootDir, './www')
|
|
14
|
-
console.log($.c.y('😵 静态文件服务目录未配置 默认./www'))
|
|
15
|
-
}
|
|
16
|
-
module.exports = skyStaticServer(wwwPath)
|
|
1
|
+
// NOTICE: 优先进入web容器
|
|
2
|
+
const $ = require('meeko')
|
|
3
|
+
const { rootDir, staticDir } = require('../../skyconfig')
|
|
4
|
+
const path = require('path')
|
|
5
|
+
const fs = require('fs')
|
|
6
|
+
const skyStaticServer = require('koa-static')
|
|
7
|
+
let wwwPath
|
|
8
|
+
if (staticDir) {
|
|
9
|
+
wwwPath = path.join(rootDir, staticDir)
|
|
10
|
+
let isWwwExist = fs.existsSync(wwwPath)
|
|
11
|
+
if (!isWwwExist) { console.log($.c.y(`😵 ${wwwPath} 静态文件服务配置但目录不存在`)) }
|
|
12
|
+
} else {
|
|
13
|
+
wwwPath = path.join(rootDir, './www')
|
|
14
|
+
console.log($.c.y('😵 静态文件服务目录未配置 默认./www'))
|
|
15
|
+
}
|
|
16
|
+
module.exports = skyStaticServer(wwwPath)
|