profoundjs-swagger-stats 1.1.4 → 2.0.1
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/CHANGELOG.md +64 -0
- package/dashboards/prometheus/swagger-stats dashboard v3.json +1269 -0
- package/examples/authtest/authtest.js +5 -10
- package/examples/fastify/fasifytest.js +24 -5
- package/examples/hapijstest/hapijstest.js +17 -2
- package/examples/restify/restifytest.js +16 -1
- package/examples/spectest/spectest.js +7 -9
- package/examples/testapp/petstore.json +1699 -0
- package/examples/testapp/testapp.js +6 -62
- package/lib/sws-api-swagger.yaml +1 -1
- package/lib/swsAPIStats.js +6 -1
- package/lib/swsAuth.js +140 -0
- package/lib/swsElasticEmitter.js +103 -45
- package/lib/swsHapi.js +29 -34
- package/lib/swsInterface.js +40 -189
- package/lib/swsProcessor.js +6 -1
- package/lib/swsReqResStats.js +1 -1
- package/lib/swsUtil.js +7 -21
- package/lib/swssettings.js +8 -2
- package/package.json +90 -91
- package/schema/elasticsearch/api_index_template.json +1 -1
- package/schema/elasticsearch/api_index_template_7x.json +185 -0
- package/scripts/elasticsearch/elastic7/docker-compose.yml +6 -17
- package/scripts/elasticsearch/elastic8/docker-compose.yml +34 -0
- package/ux/css/app.dc22c4da.css +7 -0
- package/ux/css/chunk-vendors.a6da6d7a.css +10 -0
- package/ux/fonts/KFOkCnqEu92Fr1MmgVxIIzQ.4aa2e698.woff +0 -0
- package/ux/fonts/KFOlCnqEu92Fr1MmEU9fBBc-.40bcb2b8.woff +0 -0
- package/ux/fonts/KFOlCnqEu92Fr1MmSU5fBBc-.ea60988b.woff +0 -0
- package/ux/fonts/KFOlCnqEu92Fr1MmWUlfBBc-.0774a8b7.woff +0 -0
- package/ux/fonts/KFOlCnqEu92Fr1MmYUtfBBc-.bcb7c7e2.woff +0 -0
- package/ux/fonts/KFOmCnqEu92Fr1Mu4mxM.d3907d0c.woff +0 -0
- package/ux/fonts/fa-brands-400.1a575a41.woff +0 -0
- package/ux/fonts/fa-brands-400.ed311c7a.woff2 +0 -0
- package/ux/fonts/fa-regular-400.b91d376b.woff2 +0 -0
- package/ux/fonts/fa-regular-400.d1d7e3b4.woff +0 -0
- package/ux/fonts/fa-solid-900.d745348d.woff +0 -0
- package/ux/fonts/fa-solid-900.d824df7e.woff2 +0 -0
- package/ux/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.3e1afe59.woff +0 -0
- package/ux/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.a4160421.woff2 +0 -0
- package/ux/index.html +1 -1
- package/ux/js/app.d095d0d6.js +1 -0
- package/ux/js/chunk-2d0b90b4.afe783bc.js +8 -0
- package/ux/js/chunk-2d0daf1e.a05fda31.js +11 -0
- package/ux/js/chunk-461883cd.a2aa4876.js +82 -0
- package/ux/js/chunk-vendors.4f167dc9.js +39 -0
- package/ux/logo.png +0 -0
- package/.editorconfig +0 -21
- package/.travis.yml +0 -23
- package/dashboards/prometheus/swagger-stats dashboard.json +0 -1118
- package/dist/css/sws.min.css +0 -18
- package/dist/fonts/FontAwesome.otf +0 -0
- package/dist/fonts/fontawesome-webfont.eot +0 -0
- package/dist/fonts/fontawesome-webfont.svg +0 -2671
- package/dist/fonts/fontawesome-webfont.ttf +0 -0
- package/dist/fonts/fontawesome-webfont.woff +0 -0
- package/dist/fonts/fontawesome-webfont.woff2 +0 -0
- package/dist/fonts/glyphicons-halflings-regular.eot +0 -0
- package/dist/fonts/glyphicons-halflings-regular.svg +0 -288
- package/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
- package/dist/fonts/glyphicons-halflings-regular.woff +0 -0
- package/dist/fonts/glyphicons-halflings-regular.woff2 +0 -0
- package/dist/images/favicon.png +0 -0
- package/dist/js/sws.min.js +0 -1
- package/gulpfile.js +0 -103
- package/karma.conf.js +0 -153
- package/ux/css/app.71245b0e.css +0 -7
- package/ux/css/chunk-vendors.809c52d1.css +0 -10
- package/ux/fonts/KFOkCnqEu92Fr1MmgVxIIzQ.5cb7edfc.woff +0 -0
- package/ux/fonts/KFOlCnqEu92Fr1MmEU9fBBc-.87284894.woff +0 -0
- package/ux/fonts/KFOlCnqEu92Fr1MmSU5fBBc-.b00849e0.woff +0 -0
- package/ux/fonts/KFOlCnqEu92Fr1MmWUlfBBc-.adcde98f.woff +0 -0
- package/ux/fonts/KFOlCnqEu92Fr1MmYUtfBBc-.bb1e4dc6.woff +0 -0
- package/ux/fonts/KFOmCnqEu92Fr1Mu4mxM.60fa3c06.woff +0 -0
- package/ux/fonts/fa-brands-400.c5e0f14f.woff +0 -0
- package/ux/fonts/fa-brands-400.cccc9d29.woff2 +0 -0
- package/ux/fonts/fa-regular-400.c4f508e7.woff +0 -0
- package/ux/fonts/fa-regular-400.f5f2566b.woff2 +0 -0
- package/ux/fonts/fa-solid-900.333bae20.woff +0 -0
- package/ux/fonts/fa-solid-900.44d537ab.woff2 +0 -0
- package/ux/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.29b882f0.woff +0 -0
- package/ux/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.0509ab09.woff2 +0 -0
- package/ux/js/app.0159ef6a.js +0 -1
- package/ux/js/chunk-2d0b90b4.92f1ea49.js +0 -8
- package/ux/js/chunk-461883cd.442efb25.js +0 -76
- package/ux/js/chunk-vendors.31d3ce30.js +0 -33
- /package/ux/js/{chunk-2d0de2f2.553bf976.js → chunk-2d0de2f2.2848649c.js} +0 -0
|
@@ -16,17 +16,10 @@ var server = null;
|
|
|
16
16
|
// Express and middlewares
|
|
17
17
|
var express = require('express');
|
|
18
18
|
var expressBodyParser = require('body-parser');
|
|
19
|
-
var expressFavicon = require('serve-favicon');
|
|
20
|
-
var expressStatic = require('serve-static');
|
|
21
|
-
|
|
22
|
-
var swaggerParser = require('swagger-parser');
|
|
23
19
|
|
|
24
20
|
var swStats = require('../../lib'); // require('swagger-stats');
|
|
25
21
|
|
|
26
22
|
var app = module.exports = express();
|
|
27
|
-
app.use(expressFavicon(path.join(__dirname, '../../ui/favicon.png')));
|
|
28
|
-
app.use('/ui',expressStatic(path.join(__dirname, '../../ui')));
|
|
29
|
-
app.use('/node_modules',expressStatic(path.join(__dirname, '../../node_modules')));
|
|
30
23
|
app.use(expressBodyParser.json());
|
|
31
24
|
app.use(expressBodyParser.urlencoded({ extended: true }));
|
|
32
25
|
|
|
@@ -41,13 +34,15 @@ app.set('port', process.env.PORT || 3050);
|
|
|
41
34
|
app.disable('etag');
|
|
42
35
|
|
|
43
36
|
app.get('/', function(req,res) {
|
|
44
|
-
res.redirect('/swagger-stats/
|
|
37
|
+
res.redirect('/swagger-stats/');
|
|
45
38
|
});
|
|
46
39
|
|
|
47
40
|
// Return Prometheus metrics from prom-client
|
|
48
41
|
app.get('/metrics', function(req,res) {
|
|
49
42
|
res.status(200).set('Content-Type', 'text/plain');
|
|
50
|
-
|
|
43
|
+
Promise.resolve(promClient.register.metrics()).then( (x) => {
|
|
44
|
+
res.end(x);
|
|
45
|
+
});
|
|
51
46
|
});
|
|
52
47
|
|
|
53
48
|
var specLocation = path.join(__dirname, 'petstore.json');
|
|
@@ -64,7 +59,7 @@ var swaggerSpec = require( specLocation );
|
|
|
64
59
|
// Use swagger-stats middleware with authentication enabled
|
|
65
60
|
app.use(swStats.getMiddleware({
|
|
66
61
|
name: 'swagger-stats-authtest',
|
|
67
|
-
version: '0.
|
|
62
|
+
version: '0.99.7',
|
|
68
63
|
hostname: "hostname",
|
|
69
64
|
ip: "127.0.0.1",
|
|
70
65
|
swaggerSpec:swaggerSpec,
|
|
@@ -12,7 +12,8 @@ const swaggerSpec = require('../spectest/petstore3.json');
|
|
|
12
12
|
let server = null;
|
|
13
13
|
|
|
14
14
|
fastify.get('/', function (request, reply) {
|
|
15
|
-
reply.send({ hello: 'world' })
|
|
15
|
+
//reply.send({ hello: 'world' })
|
|
16
|
+
reply.redirect('/swagger-stats/');
|
|
16
17
|
});
|
|
17
18
|
|
|
18
19
|
fastify.get('/v2/paramstest/:code/and/:value', function (request, reply) {
|
|
@@ -46,15 +47,33 @@ fastify.route({
|
|
|
46
47
|
|
|
47
48
|
let swsOptions = {
|
|
48
49
|
name: 'swagger-stats-fastify',
|
|
49
|
-
version: '0.
|
|
50
|
+
version: '0.99.7',
|
|
50
51
|
timelineBucketDuration: 1000,
|
|
51
52
|
swaggerSpec:swaggerSpec,
|
|
52
|
-
|
|
53
|
-
|
|
53
|
+
authentication: true,
|
|
54
|
+
sessionMaxAge: process.env.SWS_AUTHTEST_MAXAGE || 900,
|
|
55
|
+
onAuthenticate: function(req,username,password){
|
|
56
|
+
// simple check for username and password
|
|
57
|
+
if(username==='swagger-stats') {
|
|
58
|
+
return ((username === 'swagger-stats') && (password === 'swagger-stats'));
|
|
59
|
+
} else if(username==='swagger-promise'){
|
|
60
|
+
return new Promise(function(resolve) {
|
|
61
|
+
setTimeout(function(){
|
|
62
|
+
resolve((username === 'swagger-promise') && (password === 'swagger-promise'));
|
|
63
|
+
}, 1000);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
//elasticsearch: 'http://127.0.0.1:9200',
|
|
69
|
+
//elasticsearchIndexPrefix: 'swaggerstats-'
|
|
54
70
|
};
|
|
55
71
|
|
|
56
72
|
// Enable swagger-stats
|
|
57
|
-
fastify.register(
|
|
73
|
+
fastify.register(require('fastify-express')).then(()=>{
|
|
74
|
+
fastify.register(swStats.getFastifyPlugin, swsOptions);
|
|
75
|
+
});
|
|
76
|
+
|
|
58
77
|
|
|
59
78
|
// Run the server!
|
|
60
79
|
fastify.listen(3040, function (err, address) {
|
|
@@ -67,7 +67,7 @@ const init = async () => {
|
|
|
67
67
|
|
|
68
68
|
let swsOptions = {
|
|
69
69
|
name: 'swagger-stats-hapitest',
|
|
70
|
-
version: '0.
|
|
70
|
+
version: '0.99.7',
|
|
71
71
|
hostname: "hostname",
|
|
72
72
|
ip: "127.0.0.1",
|
|
73
73
|
uriPath: '/swagger-stats',
|
|
@@ -76,7 +76,22 @@ const init = async () => {
|
|
|
76
76
|
durationBuckets: [10,100,1000],
|
|
77
77
|
metricsPrefix: 'hapitest_',
|
|
78
78
|
elasticsearch: 'http://127.0.0.1:9200',
|
|
79
|
-
elasticsearchIndexPrefix: 'swaggerstats-'
|
|
79
|
+
elasticsearchIndexPrefix: 'swaggerstats-',
|
|
80
|
+
authentication: true,
|
|
81
|
+
sessionMaxAge: process.env.SWS_AUTHTEST_MAXAGE || 900,
|
|
82
|
+
onAuthenticate: function(req,username,password){
|
|
83
|
+
// simple check for username and password
|
|
84
|
+
if(username==='swagger-stats') {
|
|
85
|
+
return ((username === 'swagger-stats') && (password === 'swagger-stats'));
|
|
86
|
+
} else if(username==='swagger-promise'){
|
|
87
|
+
return new Promise(function(resolve) {
|
|
88
|
+
setTimeout(function(){
|
|
89
|
+
resolve((username === 'swagger-promise') && (password === 'swagger-promise'));
|
|
90
|
+
}, 1000);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
80
95
|
};
|
|
81
96
|
|
|
82
97
|
// Enable Elasticsearch if specified
|
|
@@ -15,7 +15,7 @@ server.use(restify.plugins.queryParser());
|
|
|
15
15
|
// Use swagger-stats middleware
|
|
16
16
|
server.pre(swStats.getMiddleware({
|
|
17
17
|
name: 'restifytest',
|
|
18
|
-
version: '0.
|
|
18
|
+
version: '0.99.7',
|
|
19
19
|
hostname: "hostname",
|
|
20
20
|
ip: "127.0.0.1",
|
|
21
21
|
timelineBucketDuration:1000,
|
|
@@ -30,6 +30,21 @@ server.pre(swStats.getMiddleware({
|
|
|
30
30
|
elasticsearchIndexPrefix: 'swaggerstats-',
|
|
31
31
|
onResponseFinish: function(req,res,rrr){
|
|
32
32
|
debug('onResponseFinish: %s', JSON.stringify(rrr));
|
|
33
|
+
},
|
|
34
|
+
authentication: true,
|
|
35
|
+
sessionMaxAge: process.env.SWS_AUTHTEST_MAXAGE || 900,
|
|
36
|
+
onAuthenticate: function(req,username,password){
|
|
37
|
+
// simple check for username and password
|
|
38
|
+
if(username==='swagger-stats') {
|
|
39
|
+
return ((username === 'swagger-stats') && (password === 'swagger-stats'));
|
|
40
|
+
} else if(username==='swagger-promise'){
|
|
41
|
+
return new Promise(function(resolve) {
|
|
42
|
+
setTimeout(function(){
|
|
43
|
+
resolve((username === 'swagger-promise') && (password === 'swagger-promise'));
|
|
44
|
+
}, 1000);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
return false;
|
|
33
48
|
}
|
|
34
49
|
}));
|
|
35
50
|
|
|
@@ -18,17 +18,12 @@ var server = null;
|
|
|
18
18
|
// Express and middlewares
|
|
19
19
|
var express = require('express');
|
|
20
20
|
var expressBodyParser = require('body-parser');
|
|
21
|
-
var expressFavicon = require('serve-favicon');
|
|
22
|
-
var expressStatic = require('serve-static');
|
|
23
21
|
|
|
24
22
|
var swaggerParser = require('swagger-parser');
|
|
25
23
|
|
|
26
24
|
var swStats = require('../../lib'); // require('swagger-stats');
|
|
27
25
|
|
|
28
26
|
var app = module.exports = express();
|
|
29
|
-
app.use(expressFavicon(path.join(__dirname, '../../ui/favicon.png')));
|
|
30
|
-
app.use('/ui',expressStatic(path.join(__dirname, '../../ui')));
|
|
31
|
-
app.use('/node_modules',expressStatic(path.join(__dirname, '../../node_modules')));
|
|
32
27
|
app.use(expressBodyParser.json());
|
|
33
28
|
app.use(expressBodyParser.urlencoded({ extended: true }));
|
|
34
29
|
|
|
@@ -43,13 +38,15 @@ app.set('port', process.env.PORT || 3040);
|
|
|
43
38
|
app.disable('etag');
|
|
44
39
|
|
|
45
40
|
app.get('/', function(req,res) {
|
|
46
|
-
res.redirect('/swagger-stats/
|
|
41
|
+
res.redirect('/swagger-stats/');
|
|
47
42
|
});
|
|
48
43
|
|
|
49
44
|
// Return Prometheus metrics from prom-client
|
|
50
45
|
app.get('/metrics', function(req,res) {
|
|
51
46
|
res.status(200).set('Content-Type', 'text/plain');
|
|
52
|
-
|
|
47
|
+
Promise.resolve(promClient.register.metrics()).then( (x) => {
|
|
48
|
+
res.end(x);
|
|
49
|
+
});
|
|
53
50
|
});
|
|
54
51
|
|
|
55
52
|
|
|
@@ -57,7 +54,8 @@ app.get('/metrics', function(req,res) {
|
|
|
57
54
|
var swaggerSpec = null;
|
|
58
55
|
var parser = new swaggerParser();
|
|
59
56
|
|
|
60
|
-
var specLocation = 'petstore3.yaml';
|
|
57
|
+
//var specLocation = 'petstore3.yaml';
|
|
58
|
+
var specLocation = 'petstore.yaml';
|
|
61
59
|
|
|
62
60
|
if( process.env.SWS_SPECTEST_URL ){
|
|
63
61
|
specLocation = process.env.SWS_SPECTEST_URL;
|
|
@@ -78,7 +76,7 @@ parser.validate(specLocation,function(err, api) {
|
|
|
78
76
|
|
|
79
77
|
var swsOptions = {
|
|
80
78
|
name: 'swagger-stats-spectest',
|
|
81
|
-
version: '0.
|
|
79
|
+
version: '0.99.7',
|
|
82
80
|
hostname: "hostname",
|
|
83
81
|
ip: "127.0.0.1",
|
|
84
82
|
timelineBucketDuration: tlBucket,
|