mock-config-server 3.6.0 → 3.7.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.md +291 -90
- package/dist/bin/templates/ts/full/mock-requests/graphql/index.ts +2 -2
- package/dist/bin/templates/ts/full/mock-requests/graphql/user.ts +37 -37
- package/dist/bin/templates/ts/full/mock-requests/graphql/users.ts +14 -14
- package/dist/bin/templates/ts/full/mock-requests/rest/index.ts +2 -2
- package/dist/bin/templates/ts/full/mock-requests/rest/user.ts +37 -37
- package/dist/bin/templates/ts/full/mock-requests/rest/users.ts +14 -14
- package/dist/bin/templates/ts/graphql/mock-requests/index.ts +2 -2
- package/dist/bin/templates/ts/graphql/mock-requests/user.ts +37 -37
- package/dist/bin/templates/ts/graphql/mock-requests/users.ts +14 -14
- package/dist/bin/templates/ts/rest/mock-requests/index.ts +2 -2
- package/dist/bin/templates/ts/rest/mock-requests/user.ts +37 -37
- package/dist/bin/templates/ts/rest/mock-requests/users.ts +14 -14
- package/dist/bin/validateMockServerConfig/graphqlConfigSchema/graphqlConfigSchema.d.ts +6 -6
- package/dist/bin/validateMockServerConfig/restConfigSchema/restConfigSchema.d.ts +14 -14
- package/dist/src/core/graphql/createGraphQLRoutes/createGraphQLRoutes.d.ts +1 -1
- package/dist/src/core/graphql/createGraphQLRoutes/createGraphQLRoutes.js +1 -3
- package/dist/src/core/middlewares/contextMiddleware/contextMiddleware.d.ts +17 -0
- package/dist/src/core/middlewares/contextMiddleware/contextMiddleware.js +33 -0
- package/dist/src/core/middlewares/cookieParseMiddleware/helpers/parseCookie/parseCookie.d.ts +1 -2
- package/dist/src/core/middlewares/index.d.ts +1 -0
- package/dist/src/core/middlewares/index.js +1 -0
- package/dist/src/core/middlewares/notFoundMiddleware/notFoundMiddleware.js +3 -2
- package/dist/src/core/rest/createRestRoutes/createRestRoutes.d.ts +1 -1
- package/dist/src/core/rest/createRestRoutes/createRestRoutes.js +1 -3
- package/dist/src/core/rest/createRestRoutes/helpers/prepareRestRequestConfigs/prepareRestRequestConfigs.js +25 -1
- package/dist/src/server/createDatabaseMockServer/createDatabaseMockServer.js +1 -0
- package/dist/src/server/createGraphQLMockServer/createGraphQLMockServer.js +1 -0
- package/dist/src/server/createMockServer/createMockServer.js +1 -0
- package/dist/src/server/createRestMockServer/createRestMockServer.js +1 -0
- package/dist/src/server/startDatabaseMockServer/startDatabaseMockServer.js +1 -1
- package/dist/src/server/startGraphQLMockServer/startGraphQLMockServer.js +1 -1
- package/dist/src/server/startMockServer/startMockServer.js +1 -1
- package/dist/src/server/startRestMockServer/startRestMockServer.js +1 -1
- package/dist/src/static/views/pages/404/index.ejs +66 -69
- package/dist/src/utils/helpers/date/formatTimestamp/formatTimestamp.d.ts +1 -0
- package/dist/src/utils/helpers/date/formatTimestamp/formatTimestamp.js +18 -0
- package/dist/src/utils/helpers/date/index.d.ts +1 -0
- package/dist/src/utils/helpers/date/index.js +18 -0
- package/dist/src/utils/helpers/index.d.ts +2 -0
- package/dist/src/utils/helpers/index.js +2 -0
- package/dist/src/utils/helpers/interceptors/callRequestInterceptor/callRequestInterceptor.js +7 -1
- package/dist/src/utils/helpers/interceptors/callResponseInterceptors/callResponseInterceptors.js +9 -1
- package/dist/src/utils/helpers/logger/callRequestLogger/callRequestLogger.d.ts +8 -0
- package/dist/src/utils/helpers/logger/callRequestLogger/callRequestLogger.js +50 -0
- package/dist/src/utils/helpers/logger/callResponseLogger/callResponseLogger.d.ts +10 -0
- package/dist/src/utils/helpers/logger/callResponseLogger/callResponseLogger.js +54 -0
- package/dist/src/utils/helpers/logger/helpers/filterTokens/filterTokens.d.ts +5 -0
- package/dist/src/utils/helpers/logger/helpers/filterTokens/filterTokens.js +44 -0
- package/dist/src/utils/helpers/logger/helpers/formatTokens/formatTokens.d.ts +2 -0
- package/dist/src/utils/helpers/logger/helpers/formatTokens/formatTokens.js +23 -0
- package/dist/src/utils/helpers/logger/helpers/index.d.ts +2 -0
- package/dist/src/utils/helpers/logger/helpers/index.js +19 -0
- package/dist/src/utils/helpers/logger/index.d.ts +2 -0
- package/dist/src/utils/helpers/logger/index.js +19 -0
- package/dist/src/utils/types/checkModes.d.ts +0 -1
- package/dist/src/utils/types/graphql.d.ts +2 -5
- package/dist/src/utils/types/index.d.ts +2 -0
- package/dist/src/utils/types/index.js +2 -0
- package/dist/src/utils/types/interceptors.d.ts +11 -7
- package/dist/src/utils/types/logger.d.ts +43 -0
- package/dist/src/utils/types/logger.js +4 -0
- package/dist/src/utils/types/rest.d.ts +2 -2
- package/dist/src/utils/types/server.d.ts +2 -2
- package/dist/src/utils/types/shared.d.ts +1 -0
- package/dist/src/utils/types/shared.js +4 -0
- package/dist/src/utils/types/values.d.ts +7 -0
- package/package.json +1 -1
|
@@ -22,7 +22,7 @@ const startRestMockServer = (restMockServerConfig)=>{
|
|
|
22
22
|
var _restMockServerConfig_port;
|
|
23
23
|
const port = (_restMockServerConfig_port = restMockServerConfig.port) !== null && _restMockServerConfig_port !== void 0 ? _restMockServerConfig_port : _constants.DEFAULT.PORT;
|
|
24
24
|
const server = mockServer.listen(port, ()=>{
|
|
25
|
-
console.
|
|
25
|
+
console.info(_ansicolors.default.green(`🎉 Rest Mock Server is running at http://localhost:${port}`));
|
|
26
26
|
});
|
|
27
27
|
// ✅ important: add destroy method for closing keep-alive connections after server shutdown
|
|
28
28
|
return (0, _middlewares.destroyerMiddleware)(server);
|
|
@@ -1,85 +1,82 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
3
6
|
|
|
4
|
-
<
|
|
5
|
-
<meta charset="UTF-8" />
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
<title>404 - 🎉 Mock Config Server</title>
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
<link rel="stylesheet" href="/assets/styles/global.css" />
|
|
10
|
+
<link rel="stylesheet" href="/pages/404/index.css" />
|
|
9
11
|
|
|
10
|
-
|
|
11
|
-
<link rel="stylesheet" href="/pages/404/index.css" />
|
|
12
|
+
<% const api = { rest: "REST", graphql: "GraphQL" } %>
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
<% const rootPath = (path) => `../../${path}` %>
|
|
15
|
+
<%- include(rootPath('features/scheme/index')) -%>
|
|
16
|
+
<%- include(rootPath('features/tab/index')) -%>
|
|
17
|
+
</head>
|
|
14
18
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
<
|
|
21
|
-
|
|
22
|
-
<div class="margin_container">
|
|
23
|
-
<div class="hero">
|
|
24
|
-
<div class="title">
|
|
25
|
-
<img src="/assets/images/404.png" />
|
|
26
|
-
404
|
|
27
|
-
</div>
|
|
28
|
-
<div class="description">
|
|
29
|
-
Such request or page not found ☹️
|
|
30
|
-
<a class="link" href="/">
|
|
31
|
-
Return on main page
|
|
32
|
-
</a>
|
|
33
|
-
</div>
|
|
34
|
-
</div>
|
|
35
|
-
</div>
|
|
36
|
-
<div class="margin_container">
|
|
37
|
-
<div class="content">
|
|
38
|
-
<div class="content_head">
|
|
39
|
-
<div class="tab_items">
|
|
40
|
-
<% Object.values(api).forEach((variant)=> { %>
|
|
41
|
-
<div id="tab_item-<%=variant%>" class="tab_item">
|
|
42
|
-
<%=variant%>
|
|
43
|
-
</div>
|
|
44
|
-
<% }) %>
|
|
19
|
+
<body class="tab_item-<%= graphqlRequestSuggestions.length ? api.graphql : api.rest %>">
|
|
20
|
+
<%- include(rootPath('components/header/index')) -%>
|
|
21
|
+
<div class="margin_container">
|
|
22
|
+
<div class="hero">
|
|
23
|
+
<div class="title">
|
|
24
|
+
<img src="/assets/images/404.png" />
|
|
25
|
+
404
|
|
45
26
|
</div>
|
|
46
|
-
</div>
|
|
47
|
-
<div id="tab_content-<%=api.rest%>" class="tab_content">
|
|
48
27
|
<div class="description">
|
|
49
|
-
|
|
50
|
-
<
|
|
51
|
-
|
|
52
|
-
<span><%= requestSuggestion.method.toUpperCase() %> <%=
|
|
53
|
-
requestSuggestion.path %></span>
|
|
54
|
-
<% })} else { %>
|
|
55
|
-
<span>We searched, but found nothing.</span>
|
|
56
|
-
<span>Maybe you don't have <%=api.rest%> configs? 👀</span>
|
|
57
|
-
<a class="link" href="https://github.com/siberiacancode/mock-config-server#configs" rel="noopener noreferrer" target="_blank">
|
|
58
|
-
Read documentation 📘 for more information
|
|
28
|
+
Such request or page not found ☹️
|
|
29
|
+
<a class="link" href="/">
|
|
30
|
+
Return on main page
|
|
59
31
|
</a>
|
|
60
|
-
<% } %>
|
|
61
32
|
</div>
|
|
62
33
|
</div>
|
|
34
|
+
</div>
|
|
35
|
+
<div class="margin_container">
|
|
36
|
+
<div class="content">
|
|
37
|
+
<div class="content_head">
|
|
38
|
+
<div class="tab_items">
|
|
39
|
+
<% Object.values(api).forEach((variant)=> { %>
|
|
40
|
+
<div id="tab_item-<%=variant%>" class="tab_item">
|
|
41
|
+
<%=variant%>
|
|
42
|
+
</div>
|
|
43
|
+
<% }) %>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
<div id="tab_content-<%=api.rest%>" class="tab_content">
|
|
47
|
+
<div class="description">
|
|
48
|
+
<% if (restRequestSuggestions.length) { %>
|
|
49
|
+
<span>We searched a bit, maybe this will help you:</span>
|
|
50
|
+
<% restRequestSuggestions.forEach((requestSuggestion) => { %>
|
|
51
|
+
<span><%= requestSuggestion.method.toUpperCase() %> <%=
|
|
52
|
+
requestSuggestion.path %></span>
|
|
53
|
+
<% })} else { %>
|
|
54
|
+
<span>We searched, but found nothing.</span>
|
|
55
|
+
<span>Maybe you don't have <%=api.rest%> configs? 👀</span>
|
|
56
|
+
<a class="link" href="https://github.com/siberiacancode/mock-config-server#configs" rel="noopener noreferrer" target="_blank">
|
|
57
|
+
Read documentation 📘 for more information
|
|
58
|
+
</a>
|
|
59
|
+
<% } %>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
63
62
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
63
|
+
<div id="tab_content-<%=api.graphql%>" class="tab_content">
|
|
64
|
+
<div class="description">
|
|
65
|
+
<% if (graphqlRequestSuggestions.length) { %>
|
|
66
|
+
<span>We searched a bit, maybe this will help you:</span>
|
|
67
|
+
<% graphqlRequestSuggestions.forEach((requestSuggestion) => { %>
|
|
68
|
+
<span><%= requestSuggestion.operationType %> <%=
|
|
69
|
+
requestSuggestion.operationName %></span>
|
|
70
|
+
<% })} else { %>
|
|
71
|
+
<span>We searched, but found nothing.</span>
|
|
72
|
+
<span>Maybe you don't have <%=api.graphql%> configs? 👀</span>
|
|
73
|
+
<a class="link" href="https://github.com/siberiacancode/mock-config-server#configs" rel="noopener noreferrer" target="_blank">
|
|
74
|
+
Read documentation 📘 for more information
|
|
75
|
+
</a>
|
|
76
|
+
<% } %>
|
|
77
|
+
</div>
|
|
78
78
|
</div>
|
|
79
79
|
</div>
|
|
80
80
|
</div>
|
|
81
|
-
</
|
|
82
|
-
|
|
83
|
-
</body>
|
|
84
|
-
|
|
85
|
-
</html>
|
|
81
|
+
</body>
|
|
82
|
+
</html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const formatTimestamp: (timestamp: number) => string;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "formatTimestamp", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return formatTimestamp;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const formatTimestamp = (timestamp)=>new Date(timestamp).toLocaleString('ru-RU', {
|
|
12
|
+
day: 'numeric',
|
|
13
|
+
month: 'numeric',
|
|
14
|
+
year: 'numeric',
|
|
15
|
+
hour: 'numeric',
|
|
16
|
+
minute: 'numeric',
|
|
17
|
+
fractionalSecondDigits: 3
|
|
18
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './formatTimestamp/formatTimestamp';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
_export_star(require("./formatTimestamp/formatTimestamp"), exports);
|
|
6
|
+
function _export_star(from, to) {
|
|
7
|
+
Object.keys(from).forEach(function(k) {
|
|
8
|
+
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
9
|
+
Object.defineProperty(to, k, {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function() {
|
|
12
|
+
return from[k];
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
return from;
|
|
18
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './asyncHandler';
|
|
2
2
|
export * from './config';
|
|
3
|
+
export * from './date';
|
|
3
4
|
export * from './entities';
|
|
4
5
|
export * from './files';
|
|
5
6
|
export * from './graphql';
|
|
@@ -7,5 +8,6 @@ export * from './interceptors';
|
|
|
7
8
|
export * from './isPlainObject/isPlainObject';
|
|
8
9
|
export * from './isPrimitive/isPrimitive';
|
|
9
10
|
export * from './isRegExp/isRegExp';
|
|
11
|
+
export * from './logger';
|
|
10
12
|
export * from './sleep';
|
|
11
13
|
export * from './url';
|
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
});
|
|
5
5
|
_export_star(require("./asyncHandler"), exports);
|
|
6
6
|
_export_star(require("./config"), exports);
|
|
7
|
+
_export_star(require("./date"), exports);
|
|
7
8
|
_export_star(require("./entities"), exports);
|
|
8
9
|
_export_star(require("./files"), exports);
|
|
9
10
|
_export_star(require("./graphql"), exports);
|
|
@@ -11,6 +12,7 @@ _export_star(require("./interceptors"), exports);
|
|
|
11
12
|
_export_star(require("./isPlainObject/isPlainObject"), exports);
|
|
12
13
|
_export_star(require("./isPrimitive/isPrimitive"), exports);
|
|
13
14
|
_export_star(require("./isRegExp/isRegExp"), exports);
|
|
15
|
+
_export_star(require("./logger"), exports);
|
|
14
16
|
_export_star(require("./sleep"), exports);
|
|
15
17
|
_export_star(require("./url"), exports);
|
|
16
18
|
function _export_star(from, to) {
|
package/dist/src/utils/helpers/interceptors/callRequestInterceptor/callRequestInterceptor.js
CHANGED
|
@@ -8,18 +8,24 @@ Object.defineProperty(exports, "callRequestInterceptor", {
|
|
|
8
8
|
return callRequestInterceptor;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
+
const _logger = require("../../logger");
|
|
11
12
|
const _setDelay = require("../helpers/setDelay");
|
|
12
13
|
const callRequestInterceptor = async (params)=>{
|
|
13
14
|
const { request, interceptor } = params;
|
|
14
15
|
const getHeader = (field)=>request.headers[field];
|
|
15
16
|
const getHeaders = ()=>request.headers;
|
|
16
17
|
const getCookie = (name)=>request.cookies[name];
|
|
18
|
+
const log = (logger)=>(0, _logger.callRequestLogger)({
|
|
19
|
+
logger,
|
|
20
|
+
request
|
|
21
|
+
});
|
|
17
22
|
const requestInterceptorParams = {
|
|
18
23
|
request,
|
|
19
24
|
setDelay: _setDelay.setDelay,
|
|
20
25
|
getHeader,
|
|
21
26
|
getHeaders,
|
|
22
|
-
getCookie
|
|
27
|
+
getCookie,
|
|
28
|
+
log
|
|
23
29
|
};
|
|
24
30
|
await interceptor(requestInterceptorParams);
|
|
25
31
|
};
|
package/dist/src/utils/helpers/interceptors/callResponseInterceptors/callResponseInterceptors.js
CHANGED
|
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "callResponseInterceptors", {
|
|
|
8
8
|
return callResponseInterceptors;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
+
const _logger = require("../../logger");
|
|
11
12
|
const _setDelay = require("../helpers/setDelay");
|
|
12
13
|
const callResponseInterceptors = async (params)=>{
|
|
13
14
|
const { data, request, response, interceptors } = params;
|
|
@@ -36,6 +37,12 @@ const callResponseInterceptors = async (params)=>{
|
|
|
36
37
|
const attachment = (filename)=>{
|
|
37
38
|
response.attachment(filename);
|
|
38
39
|
};
|
|
40
|
+
const log = (logger)=>(0, _logger.callResponseLogger)({
|
|
41
|
+
logger,
|
|
42
|
+
data,
|
|
43
|
+
request,
|
|
44
|
+
response
|
|
45
|
+
});
|
|
39
46
|
const responseInterceptorParams = {
|
|
40
47
|
request,
|
|
41
48
|
response,
|
|
@@ -48,7 +55,8 @@ const callResponseInterceptors = async (params)=>{
|
|
|
48
55
|
setCookie,
|
|
49
56
|
getCookie,
|
|
50
57
|
clearCookie,
|
|
51
|
-
attachment
|
|
58
|
+
attachment,
|
|
59
|
+
log
|
|
52
60
|
};
|
|
53
61
|
let updatedData = data;
|
|
54
62
|
if (interceptors === null || interceptors === void 0 ? void 0 : interceptors.routeInterceptor) {
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Request } from 'express';
|
|
2
|
+
import type { Logger } from '../../../types';
|
|
3
|
+
interface CallRequestLoggerParams {
|
|
4
|
+
logger?: Logger<'request'>;
|
|
5
|
+
request: Request;
|
|
6
|
+
}
|
|
7
|
+
export declare const callRequestLogger: ({ logger, request }: CallRequestLoggerParams) => import("../../../types").PlainObject;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "callRequestLogger", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return callRequestLogger;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _helpers = require("../helpers");
|
|
12
|
+
const DEFAULT_REQUEST_LOGGER_OPTIONS = {
|
|
13
|
+
type: true,
|
|
14
|
+
id: true,
|
|
15
|
+
timestamp: true,
|
|
16
|
+
method: true,
|
|
17
|
+
url: true
|
|
18
|
+
};
|
|
19
|
+
const callRequestLogger = ({ logger, request })=>{
|
|
20
|
+
var _request_graphQL, _request_graphQL1, _request_graphQL2, _request_graphQL3;
|
|
21
|
+
var _request_graphQL_operationType, _request_graphQL_operationName, _request_graphQL_query, _request_graphQL_variables;
|
|
22
|
+
const tokens = {
|
|
23
|
+
type: 'request',
|
|
24
|
+
id: request.id,
|
|
25
|
+
timestamp: request.timestamp,
|
|
26
|
+
method: request.method.toLowerCase(),
|
|
27
|
+
url: decodeURI(`${request.protocol}://${request.get('host')}${request.originalUrl}`),
|
|
28
|
+
graphQLOperationType: (_request_graphQL_operationType = (_request_graphQL = request.graphQL) === null || _request_graphQL === void 0 ? void 0 : _request_graphQL.operationType) !== null && _request_graphQL_operationType !== void 0 ? _request_graphQL_operationType : null,
|
|
29
|
+
graphQLOperationName: (_request_graphQL_operationName = (_request_graphQL1 = request.graphQL) === null || _request_graphQL1 === void 0 ? void 0 : _request_graphQL1.operationName) !== null && _request_graphQL_operationName !== void 0 ? _request_graphQL_operationName : null,
|
|
30
|
+
graphQLQuery: (_request_graphQL_query = (_request_graphQL2 = request.graphQL) === null || _request_graphQL2 === void 0 ? void 0 : _request_graphQL2.query) !== null && _request_graphQL_query !== void 0 ? _request_graphQL_query : null,
|
|
31
|
+
variables: (_request_graphQL_variables = (_request_graphQL3 = request.graphQL) === null || _request_graphQL3 === void 0 ? void 0 : _request_graphQL3.variables) !== null && _request_graphQL_variables !== void 0 ? _request_graphQL_variables : null,
|
|
32
|
+
headers: request.headers,
|
|
33
|
+
cookies: request.cookies,
|
|
34
|
+
query: request.query,
|
|
35
|
+
params: request.params,
|
|
36
|
+
body: request.body
|
|
37
|
+
};
|
|
38
|
+
var _logger_options;
|
|
39
|
+
const options = (_logger_options = logger === null || logger === void 0 ? void 0 : logger.options) !== null && _logger_options !== void 0 ? _logger_options : DEFAULT_REQUEST_LOGGER_OPTIONS;
|
|
40
|
+
const filteredTokens = (0, _helpers.filterTokens)(tokens, options);
|
|
41
|
+
if (logger === null || logger === void 0 ? void 0 : logger.rewrite) {
|
|
42
|
+
logger.rewrite(filteredTokens);
|
|
43
|
+
return filteredTokens;
|
|
44
|
+
}
|
|
45
|
+
const formattedTokens = (0, _helpers.formatTokens)(filteredTokens);
|
|
46
|
+
console.dir(formattedTokens, {
|
|
47
|
+
depth: null
|
|
48
|
+
});
|
|
49
|
+
return filteredTokens;
|
|
50
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Request, Response } from 'express';
|
|
2
|
+
import type { Data, Logger } from '../../../types';
|
|
3
|
+
interface CallResponseLoggerParams {
|
|
4
|
+
logger?: Logger<'response'>;
|
|
5
|
+
data: Data;
|
|
6
|
+
request: Request;
|
|
7
|
+
response: Response;
|
|
8
|
+
}
|
|
9
|
+
export declare const callResponseLogger: ({ logger, data, request, response }: CallResponseLoggerParams) => import("../../../types").PlainObject;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "callResponseLogger", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return callResponseLogger;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _helpers = require("../helpers");
|
|
12
|
+
const DEFAULT_RESPONSE_LOGGER_OPTIONS = {
|
|
13
|
+
type: true,
|
|
14
|
+
id: true,
|
|
15
|
+
timestamp: true,
|
|
16
|
+
method: true,
|
|
17
|
+
url: true,
|
|
18
|
+
statusCode: true,
|
|
19
|
+
data: true
|
|
20
|
+
};
|
|
21
|
+
const callResponseLogger = ({ logger, data, request, response })=>{
|
|
22
|
+
var _request_graphQL, _request_graphQL1, _request_graphQL2, _request_graphQL3;
|
|
23
|
+
var _request_graphQL_operationType, _request_graphQL_operationName, _request_graphQL_query, _request_graphQL_variables;
|
|
24
|
+
const tokens = {
|
|
25
|
+
type: 'response',
|
|
26
|
+
id: request.id,
|
|
27
|
+
timestamp: Date.now(),
|
|
28
|
+
method: request.method.toLowerCase(),
|
|
29
|
+
url: decodeURI(`${request.protocol}://${request.get('host')}${request.originalUrl}`),
|
|
30
|
+
graphQLOperationType: (_request_graphQL_operationType = (_request_graphQL = request.graphQL) === null || _request_graphQL === void 0 ? void 0 : _request_graphQL.operationType) !== null && _request_graphQL_operationType !== void 0 ? _request_graphQL_operationType : null,
|
|
31
|
+
graphQLOperationName: (_request_graphQL_operationName = (_request_graphQL1 = request.graphQL) === null || _request_graphQL1 === void 0 ? void 0 : _request_graphQL1.operationName) !== null && _request_graphQL_operationName !== void 0 ? _request_graphQL_operationName : null,
|
|
32
|
+
graphQLQuery: (_request_graphQL_query = (_request_graphQL2 = request.graphQL) === null || _request_graphQL2 === void 0 ? void 0 : _request_graphQL2.query) !== null && _request_graphQL_query !== void 0 ? _request_graphQL_query : null,
|
|
33
|
+
variables: (_request_graphQL_variables = (_request_graphQL3 = request.graphQL) === null || _request_graphQL3 === void 0 ? void 0 : _request_graphQL3.variables) !== null && _request_graphQL_variables !== void 0 ? _request_graphQL_variables : null,
|
|
34
|
+
statusCode: response.statusCode,
|
|
35
|
+
headers: request.headers,
|
|
36
|
+
cookies: request.cookies,
|
|
37
|
+
query: request.query,
|
|
38
|
+
params: request.params,
|
|
39
|
+
body: request.body,
|
|
40
|
+
data
|
|
41
|
+
};
|
|
42
|
+
var _logger_options;
|
|
43
|
+
const options = (_logger_options = logger === null || logger === void 0 ? void 0 : logger.options) !== null && _logger_options !== void 0 ? _logger_options : DEFAULT_RESPONSE_LOGGER_OPTIONS;
|
|
44
|
+
const filteredTokens = (0, _helpers.filterTokens)(tokens, options);
|
|
45
|
+
if (logger === null || logger === void 0 ? void 0 : logger.rewrite) {
|
|
46
|
+
logger.rewrite(filteredTokens);
|
|
47
|
+
return filteredTokens;
|
|
48
|
+
}
|
|
49
|
+
const formattedTokens = (0, _helpers.formatTokens)(filteredTokens);
|
|
50
|
+
console.dir(formattedTokens, {
|
|
51
|
+
depth: null
|
|
52
|
+
});
|
|
53
|
+
return filteredTokens;
|
|
54
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { PlainObject } from '../../../../types';
|
|
2
|
+
type TokenNestedOption = Record<string, boolean>;
|
|
3
|
+
type TokenOptions = Record<string, boolean | TokenNestedOption>;
|
|
4
|
+
export declare const filterTokens: (tokens: PlainObject, options: TokenOptions) => PlainObject;
|
|
5
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "filterTokens", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return filterTokens;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _isPlainObject = require("../../../isPlainObject/isPlainObject");
|
|
12
|
+
const resolveNestedOptionFilterMode = (nestedOption)=>{
|
|
13
|
+
const values = Object.values(nestedOption);
|
|
14
|
+
return values.some(Boolean) ? 'whitelist' : 'blacklist';
|
|
15
|
+
};
|
|
16
|
+
const filterTokens = (tokens, options)=>Object.entries(options).reduce((acc, [name, option])=>{
|
|
17
|
+
const token = tokens[name];
|
|
18
|
+
if (option === true) {
|
|
19
|
+
acc[name] = token;
|
|
20
|
+
return acc;
|
|
21
|
+
}
|
|
22
|
+
const isNestedOption = (0, _isPlainObject.isPlainObject)(option);
|
|
23
|
+
const isNestedToken = (0, _isPlainObject.isPlainObject)(token);
|
|
24
|
+
if (isNestedOption && isNestedToken) {
|
|
25
|
+
const nestedOptionFilterMode = resolveNestedOptionFilterMode(option);
|
|
26
|
+
if (nestedOptionFilterMode === 'whitelist') {
|
|
27
|
+
acc[name] = Object.entries(option).reduce((acc, [name, nestedOption])=>{
|
|
28
|
+
if (nestedOption) {
|
|
29
|
+
acc[name] = token[name];
|
|
30
|
+
}
|
|
31
|
+
return acc;
|
|
32
|
+
}, {});
|
|
33
|
+
}
|
|
34
|
+
if (nestedOptionFilterMode === 'blacklist') {
|
|
35
|
+
acc[name] = Object.keys(token).reduce((acc, name)=>{
|
|
36
|
+
if (option[name] !== false) {
|
|
37
|
+
acc[name] = token[name];
|
|
38
|
+
}
|
|
39
|
+
return acc;
|
|
40
|
+
}, {});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return acc;
|
|
44
|
+
}, {});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "formatTokens", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return formatTokens;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _date = require("../../../date");
|
|
12
|
+
const formatTokens = (tokens)=>{
|
|
13
|
+
const { timestamp, method } = tokens;
|
|
14
|
+
return {
|
|
15
|
+
...tokens,
|
|
16
|
+
...timestamp && {
|
|
17
|
+
timestamp: (0, _date.formatTimestamp)(timestamp)
|
|
18
|
+
},
|
|
19
|
+
...method && {
|
|
20
|
+
method: method.toUpperCase()
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
_export_star(require("./filterTokens/filterTokens"), exports);
|
|
6
|
+
_export_star(require("./formatTokens/formatTokens"), exports);
|
|
7
|
+
function _export_star(from, to) {
|
|
8
|
+
Object.keys(from).forEach(function(k) {
|
|
9
|
+
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
10
|
+
Object.defineProperty(to, k, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function() {
|
|
13
|
+
return from[k];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
return from;
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
_export_star(require("./callRequestLogger/callRequestLogger"), exports);
|
|
6
|
+
_export_star(require("./callResponseLogger/callResponseLogger"), exports);
|
|
7
|
+
function _export_star(from, to) {
|
|
8
|
+
Object.keys(from).forEach(function(k) {
|
|
9
|
+
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
10
|
+
Object.defineProperty(to, k, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function() {
|
|
13
|
+
return from[k];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
return from;
|
|
19
|
+
}
|
|
@@ -4,7 +4,6 @@ export type CompareWithDescriptorStringValueCheckMode = 'includes' | 'notInclude
|
|
|
4
4
|
export type CompareWithDescriptorValueCheckMode = CompareWithDescriptorAnyValueCheckMode | CompareWithDescriptorStringValueCheckMode;
|
|
5
5
|
export type CalculateByDescriptorValueCheckMode = 'regExp' | 'function';
|
|
6
6
|
export type CheckMode = CheckActualValueCheckMode | CompareWithDescriptorValueCheckMode | CalculateByDescriptorValueCheckMode;
|
|
7
|
-
export type PlainEntityCheckMode = Exclude<CheckMode, CompareWithDescriptorStringValueCheckMode | Extract<CalculateByDescriptorValueCheckMode, 'regExp'>>;
|
|
8
7
|
export interface EntityDescriptor {
|
|
9
8
|
checkMode: CheckMode;
|
|
10
9
|
value?: any;
|
|
@@ -6,9 +6,6 @@ export type GraphQLEntityName = 'headers' | 'cookies' | 'query' | 'variables';
|
|
|
6
6
|
export type GraphQLEntity<EntityName extends GraphQLEntityName = GraphQLEntityName> = EntityName extends 'variables' ? PlainEntity : MappedEntity;
|
|
7
7
|
export type GraphQLOperationType = 'query' | 'mutation';
|
|
8
8
|
export type GraphQLOperationName = string | RegExp;
|
|
9
|
-
export type GraphQLEntityNamesByOperationType = {
|
|
10
|
-
[operationType in GraphQLOperationType]: GraphQLEntityName;
|
|
11
|
-
};
|
|
12
9
|
export type GraphQLEntitiesByEntityName = {
|
|
13
10
|
[EntityName in GraphQLEntityName]?: GraphQLEntity<EntityName>;
|
|
14
11
|
};
|
|
@@ -32,12 +29,12 @@ export type GraphQLRouteConfig = ({
|
|
|
32
29
|
data: ((request: Request, entities: GraphQLEntitiesByEntityName) => Data | Promise<Data>) | Data;
|
|
33
30
|
}) & {
|
|
34
31
|
entities?: GraphQLEntitiesByEntityName;
|
|
35
|
-
interceptors?: Interceptors
|
|
32
|
+
interceptors?: Interceptors<'graphql'>;
|
|
36
33
|
};
|
|
37
34
|
interface BaseGraphQLRequestConfig {
|
|
38
35
|
operationType: GraphQLOperationType;
|
|
39
36
|
routes: GraphQLRouteConfig[];
|
|
40
|
-
interceptors?: Interceptors
|
|
37
|
+
interceptors?: Interceptors<'graphql'>;
|
|
41
38
|
}
|
|
42
39
|
export interface OperationNameGraphQLRequestConfig extends BaseGraphQLRequestConfig {
|
|
43
40
|
operationName: GraphQLOperationName;
|
|
@@ -3,7 +3,9 @@ export * from './database';
|
|
|
3
3
|
export * from './entities';
|
|
4
4
|
export * from './graphql';
|
|
5
5
|
export * from './interceptors';
|
|
6
|
+
export * from './logger';
|
|
6
7
|
export * from './rest';
|
|
7
8
|
export * from './server';
|
|
9
|
+
export * from './shared';
|
|
8
10
|
export * from './utils';
|
|
9
11
|
export * from './values';
|
|
@@ -7,8 +7,10 @@ _export_star(require("./database"), exports);
|
|
|
7
7
|
_export_star(require("./entities"), exports);
|
|
8
8
|
_export_star(require("./graphql"), exports);
|
|
9
9
|
_export_star(require("./interceptors"), exports);
|
|
10
|
+
_export_star(require("./logger"), exports);
|
|
10
11
|
_export_star(require("./rest"), exports);
|
|
11
12
|
_export_star(require("./server"), exports);
|
|
13
|
+
_export_star(require("./shared"), exports);
|
|
12
14
|
_export_star(require("./utils"), exports);
|
|
13
15
|
_export_star(require("./values"), exports);
|
|
14
16
|
function _export_star(from, to) {
|