mock-config-server 3.5.0 → 3.6.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/README.md +2 -0
- package/dist/bin/bin.js +3 -3
- package/dist/bin/build.js +5 -5
- package/dist/bin/cli.js +18 -18
- package/dist/bin/helpers/createTemplate.js +4 -4
- package/dist/bin/helpers/getValidationMessageFromPath.js +2 -2
- package/dist/bin/helpers/isOnlyRequestedDataResolvingPropertyExists.js +3 -3
- package/dist/bin/helpers/resolveConfigFile.js +3 -3
- package/dist/bin/helpers/resolveExportsFromSourceCode.js +1 -1
- package/dist/bin/init.js +36 -36
- package/dist/bin/run.js +6 -6
- package/dist/bin/validateMockServerConfig/corsSchema/corsSchema.d.ts +2 -2
- package/dist/bin/validateMockServerConfig/corsSchema/corsSchema.js +6 -6
- package/dist/bin/validateMockServerConfig/graphqlConfigSchema/graphqlConfigSchema.d.ts +82 -72
- package/dist/bin/validateMockServerConfig/graphqlConfigSchema/graphqlConfigSchema.js +4 -4
- package/dist/bin/validateMockServerConfig/graphqlConfigSchema/routeConfigSchema/routeConfigSchema.d.ts +25 -21
- package/dist/bin/validateMockServerConfig/graphqlConfigSchema/routeConfigSchema/routeConfigSchema.js +3 -5
- package/dist/bin/validateMockServerConfig/queueSchema/queueSchema.d.ts +2 -2
- package/dist/bin/validateMockServerConfig/queueSchema/queueSchema.js +1 -1
- package/dist/bin/validateMockServerConfig/restConfigSchema/restConfigSchema.d.ts +270 -240
- package/dist/bin/validateMockServerConfig/restConfigSchema/restConfigSchema.js +6 -6
- package/dist/bin/validateMockServerConfig/restConfigSchema/routeConfigSchema/routeConfigSchema.d.ts +33 -28
- package/dist/bin/validateMockServerConfig/restConfigSchema/routeConfigSchema/routeConfigSchema.js +7 -9
- package/dist/bin/validateMockServerConfig/utils/entitiesSchema/entitiesSchema.d.ts +4 -8
- package/dist/bin/validateMockServerConfig/utils/entitiesSchema/entitiesSchema.js +11 -11
- package/dist/bin/validateMockServerConfig/utils/requiredPropertiesSchema/requiredPropertiesSchema.d.ts +1 -1
- package/dist/bin/validateMockServerConfig/utils/sharedSchema/sharedSchema.js +2 -2
- package/dist/bin/validateMockServerConfig/validateApiMockServerConfig.js +3 -3
- package/dist/bin/validateMockServerConfig/validateMockServerConfig.js +1 -1
- package/dist/src/core/database/createDatabaseRoutes/createDatabaseRoutes.js +3 -3
- package/dist/src/core/database/createDatabaseRoutes/helpers/array/createNewId/createNewId.js +1 -1
- package/dist/src/core/database/createDatabaseRoutes/helpers/createNestedDatabaseRoutes/createNestedDatabaseRoutes.js +15 -13
- package/dist/src/core/database/createDatabaseRoutes/helpers/createShallowDatabaseRoutes/createShallowDatabaseRoutes.js +15 -13
- package/dist/src/core/database/createDatabaseRoutes/helpers/filter/filter.js +19 -13
- package/dist/src/core/database/createDatabaseRoutes/helpers/search/search.js +3 -3
- package/dist/src/core/database/createDatabaseRoutes/helpers/sort/sort.js +5 -5
- package/dist/src/core/database/createDatabaseRoutes/helpers/splitDatabaseByNesting/splitDatabaseByNesting.js +1 -1
- package/dist/src/core/database/createDatabaseRoutes/storages/File/FileStorage.js +1 -1
- package/dist/src/core/database/createDatabaseRoutes/storages/File/FileWriter.js +1 -1
- package/dist/src/core/graphql/createGraphQLRoutes/createGraphQLRoutes.js +24 -19
- package/dist/src/core/graphql/createGraphQLRoutes/helpers/prepareGraphQLRequestConfigs/prepareGraphQLRequestConfigs.js +1 -1
- package/dist/src/core/middlewares/cookieParseMiddleware/helpers/parseCookie/parseCookie.js +3 -3
- package/dist/src/core/middlewares/corsMiddleware/corsMiddleware.js +8 -8
- package/dist/src/core/middlewares/corsMiddleware/helpers/getAllowedOrigins/getAllowedOrigins.js +2 -2
- package/dist/src/core/middlewares/destroyerMiddleware/destroyerMiddleware.js +2 -2
- package/dist/src/core/middlewares/errorMiddleware/errorMiddleware.js +1 -1
- package/dist/src/core/middlewares/noCorsMiddleware/noCorsMiddleware.js +7 -7
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/getGraphqlUrlSuggestions/getGraphqlUrlSuggestions.js +1 -1
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/getRestUrlSuggestions.js +2 -2
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/getActualRestUrlMeaningfulString/getActualRestUrlMeaningfulString.js +1 -1
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/getPatternRestUrlMeaningfulString/getPatternRestUrlMeaningfulString.js +1 -1
- package/dist/src/core/middlewares/notFoundMiddleware/notFoundMiddleware.js +7 -7
- package/dist/src/core/middlewares/requestInterceptorMiddleware/requestInterceptorMiddleware.js +1 -1
- package/dist/src/core/middlewares/staticMiddleware/staticMiddleware.js +2 -2
- package/dist/src/core/rest/createRestRoutes/createRestRoutes.js +19 -14
- package/dist/src/core/rest/createRestRoutes/helpers/prepareRestRequestConfigs/prepareRestRequestConfigs.js +26 -2
- package/dist/src/server/createDatabaseMockServer/createDatabaseMockServer.js +6 -6
- package/dist/src/server/createGraphQLMockServer/createGraphQLMockServer.js +6 -6
- package/dist/src/server/createMockServer/createMockServer.js +8 -8
- package/dist/src/server/createRestMockServer/createRestMockServer.js +6 -6
- package/dist/src/utils/constants/checkModes.js +18 -18
- package/dist/src/utils/constants/default.js +4 -4
- package/dist/src/utils/helpers/config/resolveEntityValues/resolveEntityValues.js +20 -20
- package/dist/src/utils/helpers/entities/convertToEntityDescriptor/convertToEntityDescriptor.js +1 -1
- package/dist/src/utils/helpers/entities/isEntityDescriptor/isEntityDescriptor.js +1 -1
- package/dist/src/utils/helpers/graphql/getGraphQLInput/getGraphQLInput.js +3 -3
- package/dist/src/utils/helpers/graphql/parseQuery/parseQuery.js +1 -1
- package/dist/src/utils/helpers/isPlainObject/isPlainObject.js +1 -1
- package/dist/src/utils/helpers/url/convertWin32PathToUnix/convertWin32PathToUnix.js +1 -1
- package/dist/src/utils/helpers/url/getUrlParts/getUrlParts.js +1 -1
- package/dist/src/utils/helpers/url/removeLeadingAndTrailingSlashes/removeLeadingAndTrailingSlashes.js +1 -1
- package/dist/src/utils/helpers/url/urlJoin/urlJoin.js +1 -1
- package/dist/src/utils/types/graphql.d.ts +1 -1
- package/dist/src/utils/types/rest.d.ts +1 -1
- package/package.json +21 -23
|
@@ -14,24 +14,24 @@ const _helpers1 = require("./helpers");
|
|
|
14
14
|
const createGraphQLRoutes = ({ router, graphqlConfig, serverResponseInterceptor })=>{
|
|
15
15
|
const preparedGraphQLRequestConfig = (0, _helpers1.prepareGraphQLRequestConfigs)(graphqlConfig.configs);
|
|
16
16
|
const graphqlMiddleware = async (request, response, next)=>{
|
|
17
|
-
var _matchedRequestConfig_interceptors, _matchedRouteConfig_settings, _matchedRouteConfig_settings1,
|
|
17
|
+
var _matchedRequestConfig_interceptors, _matchedRouteConfig_interceptors, _matchedRouteConfig_settings, _matchedRouteConfig_settings1, _matchedRouteConfig_interceptors1, _matchedRequestConfig_interceptors1, _graphqlConfig_interceptors, _matchedRouteConfig_settings2;
|
|
18
18
|
const graphQLInput = (0, _helpers.getGraphQLInput)(request);
|
|
19
19
|
if (!graphQLInput.query) {
|
|
20
20
|
return response.status(400).json({
|
|
21
|
-
message:
|
|
21
|
+
message: 'Query is missing, you must pass a valid GraphQL query'
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
24
|
const query = (0, _helpers.parseQuery)(graphQLInput.query);
|
|
25
25
|
if (!query) {
|
|
26
26
|
return response.status(400).json({
|
|
27
|
-
message:
|
|
27
|
+
message: 'Query is invalid, you must use a valid GraphQL query'
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
30
|
const matchedRequestConfig = preparedGraphQLRequestConfig.find((requestConfig)=>{
|
|
31
31
|
var _graphQLInput_query;
|
|
32
32
|
if (requestConfig.operationType !== query.operationType) return false;
|
|
33
|
-
if (
|
|
34
|
-
if (
|
|
33
|
+
if ('query' in requestConfig && requestConfig.query.replace(/\s+/gi, ' ') !== ((_graphQLInput_query = graphQLInput.query) === null || _graphQLInput_query === void 0 ? void 0 : _graphQLInput_query.replace(/\s+/gi, ' '))) return false;
|
|
34
|
+
if ('operationName' in requestConfig) {
|
|
35
35
|
if (!query.operationName) return false;
|
|
36
36
|
if (requestConfig.operationName instanceof RegExp) return new RegExp(requestConfig.operationName).test(query.operationName);
|
|
37
37
|
return requestConfig.operationName === query.operationName;
|
|
@@ -41,11 +41,10 @@ const createGraphQLRoutes = ({ router, graphqlConfig, serverResponseInterceptor
|
|
|
41
41
|
if (!matchedRequestConfig) {
|
|
42
42
|
return next();
|
|
43
43
|
}
|
|
44
|
-
|
|
45
|
-
if (requestInterceptor) {
|
|
44
|
+
if ((_matchedRequestConfig_interceptors = matchedRequestConfig.interceptors) === null || _matchedRequestConfig_interceptors === void 0 ? void 0 : _matchedRequestConfig_interceptors.request) {
|
|
46
45
|
await (0, _helpers.callRequestInterceptor)({
|
|
47
46
|
request,
|
|
48
|
-
interceptor:
|
|
47
|
+
interceptor: matchedRequestConfig.interceptors.request
|
|
49
48
|
});
|
|
50
49
|
}
|
|
51
50
|
const matchedRouteConfig = matchedRequestConfig.routes.find(({ entities })=>{
|
|
@@ -54,28 +53,34 @@ const createGraphQLRoutes = ({ router, graphqlConfig, serverResponseInterceptor
|
|
|
54
53
|
return entries.every(([entityName, entityDescriptorOrValue])=>{
|
|
55
54
|
const { checkMode, value: entityDescriptorValue } = (0, _helpers.convertToEntityDescriptor)(entityDescriptorOrValue);
|
|
56
55
|
// ✅ important: check whole variables as plain value strictly if descriptor used for variables
|
|
57
|
-
const isEntityVariablesByTopLevelDescriptor = entityName ===
|
|
56
|
+
const isEntityVariablesByTopLevelDescriptor = entityName === 'variables' && (0, _helpers.isEntityDescriptor)(entityDescriptorOrValue);
|
|
58
57
|
if (isEntityVariablesByTopLevelDescriptor) {
|
|
59
58
|
return (0, _helpers.resolveEntityValues)(checkMode, graphQLInput.variables, entityDescriptorValue);
|
|
60
59
|
}
|
|
61
|
-
const isEntityVariablesByTopLevelArray = entityName ===
|
|
60
|
+
const isEntityVariablesByTopLevelArray = entityName === 'variables' && Array.isArray(entityDescriptorOrValue);
|
|
62
61
|
if (isEntityVariablesByTopLevelArray) {
|
|
63
62
|
return entityDescriptorOrValue.some((entityDescriptorOrValueElement)=>(0, _helpers.resolveEntityValues)(checkMode, graphQLInput.variables, entityDescriptorOrValueElement));
|
|
64
63
|
}
|
|
65
64
|
const recordOrArrayEntries = Object.entries(entityDescriptorOrValue);
|
|
66
65
|
return recordOrArrayEntries.every(([entityKey, entityValue])=>{
|
|
67
66
|
const { checkMode, value: descriptorValue } = (0, _helpers.convertToEntityDescriptor)(entityValue);
|
|
68
|
-
const flattenEntity = (0, _flat.flatten)(entityName ===
|
|
67
|
+
const flattenEntity = (0, _flat.flatten)(entityName === 'variables' ? graphQLInput.variables : request[entityName]);
|
|
69
68
|
// ✅ important: transform header keys to lower case because browsers send headers in lowercase
|
|
70
|
-
return (0, _helpers.resolveEntityValues)(checkMode, flattenEntity[entityName ===
|
|
69
|
+
return (0, _helpers.resolveEntityValues)(checkMode, flattenEntity[entityName === 'headers' ? entityKey.toLowerCase() : entityKey], descriptorValue);
|
|
71
70
|
});
|
|
72
71
|
});
|
|
73
72
|
});
|
|
74
73
|
if (!matchedRouteConfig) {
|
|
75
74
|
return next();
|
|
76
75
|
}
|
|
76
|
+
if ((_matchedRouteConfig_interceptors = matchedRouteConfig.interceptors) === null || _matchedRouteConfig_interceptors === void 0 ? void 0 : _matchedRouteConfig_interceptors.request) {
|
|
77
|
+
await (0, _helpers.callRequestInterceptor)({
|
|
78
|
+
request,
|
|
79
|
+
interceptor: matchedRouteConfig.interceptors.request
|
|
80
|
+
});
|
|
81
|
+
}
|
|
77
82
|
let matchedRouteConfigData = null;
|
|
78
|
-
if (((_matchedRouteConfig_settings = matchedRouteConfig.settings) === null || _matchedRouteConfig_settings === void 0 ? void 0 : _matchedRouteConfig_settings.polling) &&
|
|
83
|
+
if (((_matchedRouteConfig_settings = matchedRouteConfig.settings) === null || _matchedRouteConfig_settings === void 0 ? void 0 : _matchedRouteConfig_settings.polling) && 'queue' in matchedRouteConfig) {
|
|
79
84
|
if (!matchedRouteConfig.queue.length) return next();
|
|
80
85
|
const shallowMatchedRouteConfig = matchedRouteConfig;
|
|
81
86
|
var _shallowMatchedRouteConfig___pollingIndex;
|
|
@@ -101,24 +106,24 @@ const createGraphQLRoutes = ({ router, graphqlConfig, serverResponseInterceptor
|
|
|
101
106
|
}
|
|
102
107
|
matchedRouteConfigData = data;
|
|
103
108
|
}
|
|
104
|
-
if (
|
|
109
|
+
if ('data' in matchedRouteConfig) {
|
|
105
110
|
matchedRouteConfigData = matchedRouteConfig.data;
|
|
106
111
|
}
|
|
107
112
|
var _matchedRouteConfig_entities;
|
|
108
|
-
const resolvedData = typeof matchedRouteConfigData ===
|
|
113
|
+
const resolvedData = typeof matchedRouteConfigData === 'function' ? await matchedRouteConfigData(request, (_matchedRouteConfig_entities = matchedRouteConfig.entities) !== null && _matchedRouteConfig_entities !== void 0 ? _matchedRouteConfig_entities : {}) : matchedRouteConfigData;
|
|
109
114
|
if ((_matchedRouteConfig_settings1 = matchedRouteConfig.settings) === null || _matchedRouteConfig_settings1 === void 0 ? void 0 : _matchedRouteConfig_settings1.status) {
|
|
110
115
|
response.statusCode = matchedRouteConfig.settings.status;
|
|
111
116
|
}
|
|
112
117
|
// ✅ important:
|
|
113
118
|
// set 'Cache-Control' header for explicit browsers response revalidate: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control
|
|
114
119
|
// this code should place before response interceptors for giving opportunity to rewrite 'Cache-Control' header
|
|
115
|
-
if (matchedRequestConfig.operationType ===
|
|
120
|
+
if (matchedRequestConfig.operationType === 'query') response.set('Cache-control', 'no-cache');
|
|
116
121
|
const data = await (0, _helpers.callResponseInterceptors)({
|
|
117
122
|
data: resolvedData,
|
|
118
123
|
request,
|
|
119
124
|
response,
|
|
120
125
|
interceptors: {
|
|
121
|
-
routeInterceptor: (
|
|
126
|
+
routeInterceptor: (_matchedRouteConfig_interceptors1 = matchedRouteConfig.interceptors) === null || _matchedRouteConfig_interceptors1 === void 0 ? void 0 : _matchedRouteConfig_interceptors1.response,
|
|
122
127
|
requestInterceptor: (_matchedRequestConfig_interceptors1 = matchedRequestConfig.interceptors) === null || _matchedRequestConfig_interceptors1 === void 0 ? void 0 : _matchedRequestConfig_interceptors1.response,
|
|
123
128
|
apiInterceptor: (_graphqlConfig_interceptors = graphqlConfig.interceptors) === null || _graphqlConfig_interceptors === void 0 ? void 0 : _graphqlConfig_interceptors.response,
|
|
124
129
|
serverInterceptor: serverResponseInterceptor
|
|
@@ -129,7 +134,7 @@ const createGraphQLRoutes = ({ router, graphqlConfig, serverResponseInterceptor
|
|
|
129
134
|
}
|
|
130
135
|
return response.json(data);
|
|
131
136
|
};
|
|
132
|
-
router.route(
|
|
133
|
-
router.route(
|
|
137
|
+
router.route('/').get((0, _helpers.asyncHandler)(graphqlMiddleware));
|
|
138
|
+
router.route('/').post((0, _helpers.asyncHandler)(graphqlMiddleware));
|
|
134
139
|
return router;
|
|
135
140
|
};
|
|
@@ -21,7 +21,7 @@ const calculateRouteConfigWeight = (graphQLRouteConfig)=>{
|
|
|
21
21
|
if ((0, _helpers.isPlainObject)(variables) && variables.checkMode) {
|
|
22
22
|
// ✅ important:
|
|
23
23
|
// check that actual value check modes does not have `value` for compare
|
|
24
|
-
if (variables.checkMode ===
|
|
24
|
+
if (variables.checkMode === 'exists' || variables.checkMode === 'notExists') {
|
|
25
25
|
routeConfigWeight += 1;
|
|
26
26
|
return routeConfigWeight;
|
|
27
27
|
}
|
|
@@ -11,12 +11,12 @@ Object.defineProperty(exports, "parseCookie", {
|
|
|
11
11
|
const parseCookie = (cookieHeader)=>{
|
|
12
12
|
if (!cookieHeader) return {};
|
|
13
13
|
const cookies = {};
|
|
14
|
-
const cookiePairs = cookieHeader.split(
|
|
14
|
+
const cookiePairs = cookieHeader.split(';');
|
|
15
15
|
cookiePairs.forEach((cookie)=>{
|
|
16
|
-
const [name, value] = cookie.trim().split(
|
|
16
|
+
const [name, value] = cookie.trim().split('=');
|
|
17
17
|
if (!name) return;
|
|
18
18
|
var _value_trim;
|
|
19
|
-
cookies[name.trim()] = (_value_trim = value === null || value === void 0 ? void 0 : value.trim()) !== null && _value_trim !== void 0 ? _value_trim :
|
|
19
|
+
cookies[name.trim()] = (_value_trim = value === null || value === void 0 ? void 0 : value.trim()) !== null && _value_trim !== void 0 ? _value_trim : '';
|
|
20
20
|
});
|
|
21
21
|
return cookies;
|
|
22
22
|
};
|
|
@@ -17,7 +17,7 @@ const corsMiddleware = (server, cors)=>{
|
|
|
17
17
|
return next();
|
|
18
18
|
}
|
|
19
19
|
let allowedOrigins = [];
|
|
20
|
-
if (typeof cors.origin ===
|
|
20
|
+
if (typeof cors.origin === 'function') {
|
|
21
21
|
const origins = await cors.origin(request);
|
|
22
22
|
allowedOrigins = (0, _helpers1.getAllowedOrigins)(origins);
|
|
23
23
|
} else {
|
|
@@ -34,18 +34,18 @@ const corsMiddleware = (server, cors)=>{
|
|
|
34
34
|
return allowedOrigin === origin;
|
|
35
35
|
});
|
|
36
36
|
if (isRequestOriginAllowed) {
|
|
37
|
-
response.setHeader(
|
|
37
|
+
response.setHeader('Access-Control-Allow-Origin', origin);
|
|
38
38
|
var _cors_credentials;
|
|
39
|
-
response.setHeader(
|
|
39
|
+
response.setHeader('Access-Control-Allow-Credentials', `${(_cors_credentials = cors.credentials) !== null && _cors_credentials !== void 0 ? _cors_credentials : _constants.DEFAULT.CORS.CREDENTIALS}`);
|
|
40
40
|
var _cors_exposedHeaders;
|
|
41
|
-
response.setHeader(
|
|
42
|
-
if (request.method ===
|
|
41
|
+
response.setHeader('Access-Control-Expose-Headers', (_cors_exposedHeaders = cors.exposedHeaders) !== null && _cors_exposedHeaders !== void 0 ? _cors_exposedHeaders : _constants.DEFAULT.CORS.EXPOSED_HEADERS);
|
|
42
|
+
if (request.method === 'OPTIONS') {
|
|
43
43
|
var _cors_methods;
|
|
44
|
-
response.setHeader(
|
|
44
|
+
response.setHeader('Access-Control-Allow-Methods', (_cors_methods = cors.methods) !== null && _cors_methods !== void 0 ? _cors_methods : _constants.DEFAULT.CORS.METHODS);
|
|
45
45
|
var _cors_allowedHeaders;
|
|
46
|
-
response.setHeader(
|
|
46
|
+
response.setHeader('Access-Control-Allow-Headers', (_cors_allowedHeaders = cors.allowedHeaders) !== null && _cors_allowedHeaders !== void 0 ? _cors_allowedHeaders : _constants.DEFAULT.CORS.ALLOWED_HEADERS);
|
|
47
47
|
var _cors_maxAge;
|
|
48
|
-
response.setHeader(
|
|
48
|
+
response.setHeader('Access-Control-Max-Age', (_cors_maxAge = cors.maxAge) !== null && _cors_maxAge !== void 0 ? _cors_maxAge : _constants.DEFAULT.CORS.MAX_AGE);
|
|
49
49
|
response.sendStatus(204);
|
|
50
50
|
return response.end();
|
|
51
51
|
}
|
package/dist/src/core/middlewares/corsMiddleware/helpers/getAllowedOrigins/getAllowedOrigins.js
CHANGED
|
@@ -12,10 +12,10 @@ const getAllowedOrigins = (origin)=>{
|
|
|
12
12
|
if (Array.isArray(origin)) {
|
|
13
13
|
return origin;
|
|
14
14
|
}
|
|
15
|
-
if (typeof origin ===
|
|
15
|
+
if (typeof origin === 'string' || origin instanceof RegExp) {
|
|
16
16
|
return [
|
|
17
17
|
origin
|
|
18
18
|
];
|
|
19
19
|
}
|
|
20
|
-
throw new Error(
|
|
20
|
+
throw new Error('Invalid cors origin format');
|
|
21
21
|
};
|
|
@@ -11,10 +11,10 @@ Object.defineProperty(exports, "destroyerMiddleware", {
|
|
|
11
11
|
const destroyerMiddleware = (server)=>{
|
|
12
12
|
const serverWithDestroyer = server;
|
|
13
13
|
const connections = {};
|
|
14
|
-
serverWithDestroyer.on(
|
|
14
|
+
serverWithDestroyer.on('connection', (connection)=>{
|
|
15
15
|
const key = `${connection.remoteAddress}:${connection.remotePort}`;
|
|
16
16
|
connections[key] = connection;
|
|
17
|
-
connection.on(
|
|
17
|
+
connection.on('close', ()=>{
|
|
18
18
|
delete connections[key];
|
|
19
19
|
});
|
|
20
20
|
});
|
|
@@ -18,7 +18,7 @@ const errorMiddleware = (server)=>{
|
|
|
18
18
|
server.use((error, request, response, next)=>{
|
|
19
19
|
console.error(_ansicolors.default.bgRed(`\nError on ${request.method} ${request.url} request\n`));
|
|
20
20
|
var _error_message;
|
|
21
|
-
const message = `Message: ${(_error_message = error.message) !== null && _error_message !== void 0 ? _error_message :
|
|
21
|
+
const message = `Message: ${(_error_message = error.message) !== null && _error_message !== void 0 ? _error_message : 'Internal server error'}\n\n${error.stack}`;
|
|
22
22
|
response.status(error.status || 500).send(message);
|
|
23
23
|
// ✅ important:
|
|
24
24
|
// call next function for trigger default express error handling behavior
|
|
@@ -11,14 +11,14 @@ Object.defineProperty(exports, "noCorsMiddleware", {
|
|
|
11
11
|
const _constants = require("../../../utils/constants");
|
|
12
12
|
const noCorsMiddleware = (server)=>{
|
|
13
13
|
server.use((request, response, next)=>{
|
|
14
|
-
response.setHeader(
|
|
15
|
-
response.setHeader(
|
|
16
|
-
response.setHeader(
|
|
17
|
-
const isPreflightRequest = request.method ===
|
|
14
|
+
response.setHeader('Access-Control-Allow-Origin', _constants.DEFAULT.CORS.ORIGIN);
|
|
15
|
+
response.setHeader('Access-Control-Allow-Credentials', `${_constants.DEFAULT.CORS.CREDENTIALS}`);
|
|
16
|
+
response.setHeader('Access-Control-Expose-Headers', _constants.DEFAULT.CORS.EXPOSED_HEADERS);
|
|
17
|
+
const isPreflightRequest = request.method === 'OPTIONS' && request.headers.origin && request.headers['access-control-request-method'] && request.headers['access-control-request-headers'];
|
|
18
18
|
if (isPreflightRequest) {
|
|
19
|
-
response.setHeader(
|
|
20
|
-
response.setHeader(
|
|
21
|
-
response.setHeader(
|
|
19
|
+
response.setHeader('Access-Control-Allow-Methods', _constants.DEFAULT.CORS.METHODS);
|
|
20
|
+
response.setHeader('Access-Control-Allow-Headers', _constants.DEFAULT.CORS.ALLOWED_HEADERS);
|
|
21
|
+
response.setHeader('Access-Control-Max-Age', _constants.DEFAULT.CORS.MAX_AGE);
|
|
22
22
|
response.sendStatus(204);
|
|
23
23
|
return response.end();
|
|
24
24
|
}
|
|
@@ -12,7 +12,7 @@ const _getLevenshteinDistance = require("../getLevenshteinDistance/getLevenshtei
|
|
|
12
12
|
const getGraphqlUrlSuggestions = ({ url, requestConfigs })=>{
|
|
13
13
|
var _url_searchParams_get;
|
|
14
14
|
// ✅ important: operationName is always second word in 'query' query param
|
|
15
|
-
const actualOperationName = (_url_searchParams_get = url.searchParams.get(
|
|
15
|
+
const actualOperationName = (_url_searchParams_get = url.searchParams.get('query')) === null || _url_searchParams_get === void 0 ? void 0 : _url_searchParams_get.split(' ')[1];
|
|
16
16
|
const actualUrlMeaningful = `${url.pathname}/${actualOperationName}`;
|
|
17
17
|
const graphqlUrlSuggestions = requestConfigs.reduce((acc, requestConfig)=>{
|
|
18
18
|
const { operationName } = requestConfig;
|
|
@@ -24,9 +24,9 @@ const getRestUrlSuggestions = ({ url, requestConfigs })=>{
|
|
|
24
24
|
if (distance <= tolerance) {
|
|
25
25
|
// replace param names in pattern with param values from actual url
|
|
26
26
|
const urlSuggestion = patternUrlParts.map((_patternUrlPart, index)=>{
|
|
27
|
-
if (patternUrlParts[index].startsWith(
|
|
27
|
+
if (patternUrlParts[index].startsWith(':')) return actualUrlParts[index];
|
|
28
28
|
return patternUrlParts[index];
|
|
29
|
-
}).join(
|
|
29
|
+
}).join('/');
|
|
30
30
|
const suggestionWithQueryParams = `/${urlSuggestion}${url.search}`;
|
|
31
31
|
acc.push({
|
|
32
32
|
...requestConfig,
|
|
@@ -8,4 +8,4 @@ Object.defineProperty(exports, "getActualRestUrlMeaningfulString", {
|
|
|
8
8
|
return getActualRestUrlMeaningfulString;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const getActualRestUrlMeaningfulString = (actualUrlParts, patternUrlParts)=>actualUrlParts.filter((_actualUrlPart, index)=>!patternUrlParts[index].startsWith(
|
|
11
|
+
const getActualRestUrlMeaningfulString = (actualUrlParts, patternUrlParts)=>actualUrlParts.filter((_actualUrlPart, index)=>!patternUrlParts[index].startsWith(':')).join('');
|
|
@@ -8,4 +8,4 @@ Object.defineProperty(exports, "getPatternRestUrlMeaningfulString", {
|
|
|
8
8
|
return getPatternRestUrlMeaningfulString;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const getPatternRestUrlMeaningfulString = (patternUrlParts)=>patternUrlParts.filter((urlPatternPart)=>!urlPatternPart.startsWith(
|
|
11
|
+
const getPatternRestUrlMeaningfulString = (patternUrlParts)=>patternUrlParts.filter((urlPatternPart)=>!urlPatternPart.startsWith(':')).join('');
|
|
@@ -17,20 +17,20 @@ const notFoundMiddleware = (server, mockServerConfig)=>{
|
|
|
17
17
|
var _rest_baseUrl;
|
|
18
18
|
return {
|
|
19
19
|
method: request.method,
|
|
20
|
-
path: `${serverBaseUrl !== null && serverBaseUrl !== void 0 ? serverBaseUrl :
|
|
20
|
+
path: `${serverBaseUrl !== null && serverBaseUrl !== void 0 ? serverBaseUrl : ''}${(_rest_baseUrl = rest === null || rest === void 0 ? void 0 : rest.baseUrl) !== null && _rest_baseUrl !== void 0 ? _rest_baseUrl : ''}${request.path}`
|
|
21
21
|
};
|
|
22
22
|
})) !== null && _rest_configs_filter_map !== void 0 ? _rest_configs_filter_map : [];
|
|
23
23
|
var _graphql_configs_filter_map;
|
|
24
|
-
const graphqlRequestConfigs = (_graphql_configs_filter_map = graphql === null || graphql === void 0 ? void 0 : graphql.configs.filter((request)=>
|
|
24
|
+
const graphqlRequestConfigs = (_graphql_configs_filter_map = graphql === null || graphql === void 0 ? void 0 : graphql.configs.filter((request)=>'operationName' in request && !(request.operationName instanceof RegExp)).map((request)=>{
|
|
25
25
|
var _graphql_baseUrl;
|
|
26
26
|
return {
|
|
27
27
|
operationType: request.operationType,
|
|
28
|
-
operationName: `${serverBaseUrl !== null && serverBaseUrl !== void 0 ? serverBaseUrl :
|
|
28
|
+
operationName: `${serverBaseUrl !== null && serverBaseUrl !== void 0 ? serverBaseUrl : ''}${(_graphql_baseUrl = graphql === null || graphql === void 0 ? void 0 : graphql.baseUrl) !== null && _graphql_baseUrl !== void 0 ? _graphql_baseUrl : ''} ${request.operationName}`
|
|
29
29
|
};
|
|
30
30
|
})) !== null && _graphql_configs_filter_map !== void 0 ? _graphql_configs_filter_map : [];
|
|
31
31
|
server.use((request, response)=>{
|
|
32
32
|
var _request_headers_accept, _request_headers_accept1;
|
|
33
|
-
const url = new URL(`${request.protocol}://${request.get(
|
|
33
|
+
const url = new URL(`${request.protocol}://${request.get('host')}${request.originalUrl}`);
|
|
34
34
|
let restRequestSuggestions = [];
|
|
35
35
|
if (rest) {
|
|
36
36
|
restRequestSuggestions = (0, _helpers1.getRestUrlSuggestions)({
|
|
@@ -45,16 +45,16 @@ const notFoundMiddleware = (server, mockServerConfig)=>{
|
|
|
45
45
|
requestConfigs: graphqlRequestConfigs
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
|
-
const isRequestSupportHtml = ((_request_headers_accept = request.headers.accept) === null || _request_headers_accept === void 0 ? void 0 : _request_headers_accept.includes(
|
|
48
|
+
const isRequestSupportHtml = ((_request_headers_accept = request.headers.accept) === null || _request_headers_accept === void 0 ? void 0 : _request_headers_accept.includes('text/html')) || ((_request_headers_accept1 = request.headers.accept) === null || _request_headers_accept1 === void 0 ? void 0 : _request_headers_accept1.includes('*/*'));
|
|
49
49
|
if (isRequestSupportHtml) {
|
|
50
|
-
response.status(404).render(
|
|
50
|
+
response.status(404).render('pages/404', {
|
|
51
51
|
restRequestSuggestions,
|
|
52
52
|
graphqlRequestSuggestions
|
|
53
53
|
});
|
|
54
54
|
return;
|
|
55
55
|
}
|
|
56
56
|
response.status(404).json({
|
|
57
|
-
message:
|
|
57
|
+
message: 'Request or page not found. Similar requests in data',
|
|
58
58
|
data: {
|
|
59
59
|
restRequestSuggestions,
|
|
60
60
|
graphqlRequestSuggestions
|
package/dist/src/core/middlewares/requestInterceptorMiddleware/requestInterceptorMiddleware.js
CHANGED
|
@@ -9,7 +9,7 @@ Object.defineProperty(exports, "requestInterceptorMiddleware", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
const _helpers = require("../../../utils/helpers");
|
|
12
|
-
const requestInterceptorMiddleware = ({ server, path =
|
|
12
|
+
const requestInterceptorMiddleware = ({ server, path = '*', interceptor })=>{
|
|
13
13
|
server.use(path, (0, _helpers.asyncHandler)(async (request, _response, next)=>{
|
|
14
14
|
await (0, _helpers.callRequestInterceptor)({
|
|
15
15
|
request,
|
|
@@ -20,7 +20,7 @@ const staticMiddleware = (server, baseUrl, staticPath)=>{
|
|
|
20
20
|
const isStaticPathArray = Array.isArray(staticPath);
|
|
21
21
|
if (isStaticPathArray) {
|
|
22
22
|
staticPath.forEach((staticPath)=>{
|
|
23
|
-
const isPathObject = typeof staticPath ===
|
|
23
|
+
const isPathObject = typeof staticPath === 'object';
|
|
24
24
|
if (isPathObject) {
|
|
25
25
|
server.use((0, _helpers.urlJoin)(baseUrl, staticPath.prefix), _express.default.static((0, _helpers.urlJoin)(_constants.APP_PATH, staticPath.path)));
|
|
26
26
|
return;
|
|
@@ -29,7 +29,7 @@ const staticMiddleware = (server, baseUrl, staticPath)=>{
|
|
|
29
29
|
});
|
|
30
30
|
return;
|
|
31
31
|
}
|
|
32
|
-
const isStaticPathObject = typeof staticPath ===
|
|
32
|
+
const isStaticPathObject = typeof staticPath === 'object';
|
|
33
33
|
if (isStaticPathObject) {
|
|
34
34
|
server.use((0, _helpers.urlJoin)(baseUrl, staticPath.prefix), _express.default.static((0, _helpers.urlJoin)(_constants.APP_PATH, staticPath.path)));
|
|
35
35
|
return;
|
|
@@ -20,12 +20,11 @@ function _interop_require_default(obj) {
|
|
|
20
20
|
const createRestRoutes = ({ router, restConfig, serverResponseInterceptor })=>{
|
|
21
21
|
(0, _helpers1.prepareRestRequestConfigs)(restConfig.configs).forEach((requestConfig)=>{
|
|
22
22
|
router.route(requestConfig.path)[requestConfig.method]((0, _helpers.asyncHandler)(async (request, response, next)=>{
|
|
23
|
-
var _requestConfig_interceptors, _matchedRouteConfig_settings, _matchedRouteConfig_settings1,
|
|
24
|
-
|
|
25
|
-
if (requestInterceptor) {
|
|
23
|
+
var _requestConfig_interceptors, _matchedRouteConfig_interceptors, _matchedRouteConfig_settings, _matchedRouteConfig_settings1, _matchedRouteConfig_interceptors1, _requestConfig_interceptors1, _restConfig_interceptors, _matchedRouteConfig_settings2;
|
|
24
|
+
if ((_requestConfig_interceptors = requestConfig.interceptors) === null || _requestConfig_interceptors === void 0 ? void 0 : _requestConfig_interceptors.request) {
|
|
26
25
|
await (0, _helpers.callRequestInterceptor)({
|
|
27
26
|
request,
|
|
28
|
-
interceptor:
|
|
27
|
+
interceptor: requestConfig.interceptors.request
|
|
29
28
|
});
|
|
30
29
|
}
|
|
31
30
|
const matchedRouteConfig = requestConfig.routes.find(({ entities })=>{
|
|
@@ -35,13 +34,13 @@ const createRestRoutes = ({ router, restConfig, serverResponseInterceptor })=>{
|
|
|
35
34
|
const { checkMode, value: descriptorValue } = (0, _helpers.convertToEntityDescriptor)(entityDescriptorOrValue);
|
|
36
35
|
// ✅ important:
|
|
37
36
|
// check whole body as plain value strictly if descriptor used for body
|
|
38
|
-
const isEntityBodyByTopLevelDescriptor = entityName ===
|
|
37
|
+
const isEntityBodyByTopLevelDescriptor = entityName === 'body' && (0, _helpers.isEntityDescriptor)(entityDescriptorOrValue);
|
|
39
38
|
if (isEntityBodyByTopLevelDescriptor) {
|
|
40
39
|
// ✅ important:
|
|
41
40
|
// bodyParser sets body to empty object if body not sent or invalid, so assume {} as undefined
|
|
42
41
|
return (0, _helpers.resolveEntityValues)(checkMode, Object.keys(request.body).length ? request.body : undefined, descriptorValue);
|
|
43
42
|
}
|
|
44
|
-
const isEntityBodyByTopLevelArray = entityName ===
|
|
43
|
+
const isEntityBodyByTopLevelArray = entityName === 'body' && Array.isArray(entityDescriptorOrValue);
|
|
45
44
|
if (isEntityBodyByTopLevelArray) {
|
|
46
45
|
return entityDescriptorOrValue.some((entityDescriptorOrValueElement)=>// ✅ important:
|
|
47
46
|
// bodyParser sets body to empty object if body not sent or invalid, so assume {} as undefined
|
|
@@ -52,15 +51,21 @@ const createRestRoutes = ({ router, restConfig, serverResponseInterceptor })=>{
|
|
|
52
51
|
const { checkMode, value: descriptorValue } = (0, _helpers.convertToEntityDescriptor)(mappedEntityDescriptor);
|
|
53
52
|
const flattenEntity = (0, _flat.flatten)(request[entityName]);
|
|
54
53
|
// ✅ important: transform header keys to lower case because browsers send headers in lowercase
|
|
55
|
-
return (0, _helpers.resolveEntityValues)(checkMode, flattenEntity[entityName ===
|
|
54
|
+
return (0, _helpers.resolveEntityValues)(checkMode, flattenEntity[entityName === 'headers' ? entityKey.toLowerCase() : entityKey], descriptorValue);
|
|
56
55
|
});
|
|
57
56
|
});
|
|
58
57
|
});
|
|
59
58
|
if (!matchedRouteConfig) {
|
|
60
59
|
return next();
|
|
61
60
|
}
|
|
61
|
+
if ((_matchedRouteConfig_interceptors = matchedRouteConfig.interceptors) === null || _matchedRouteConfig_interceptors === void 0 ? void 0 : _matchedRouteConfig_interceptors.request) {
|
|
62
|
+
await (0, _helpers.callRequestInterceptor)({
|
|
63
|
+
request,
|
|
64
|
+
interceptor: matchedRouteConfig.interceptors.request
|
|
65
|
+
});
|
|
66
|
+
}
|
|
62
67
|
let matchedRouteConfigData = null;
|
|
63
|
-
if (((_matchedRouteConfig_settings = matchedRouteConfig.settings) === null || _matchedRouteConfig_settings === void 0 ? void 0 : _matchedRouteConfig_settings.polling) &&
|
|
68
|
+
if (((_matchedRouteConfig_settings = matchedRouteConfig.settings) === null || _matchedRouteConfig_settings === void 0 ? void 0 : _matchedRouteConfig_settings.polling) && 'queue' in matchedRouteConfig) {
|
|
64
69
|
if (!matchedRouteConfig.queue.length) return next();
|
|
65
70
|
const shallowMatchedRouteConfig = matchedRouteConfig;
|
|
66
71
|
var _shallowMatchedRouteConfig___pollingIndex;
|
|
@@ -86,27 +91,27 @@ const createRestRoutes = ({ router, restConfig, serverResponseInterceptor })=>{
|
|
|
86
91
|
}
|
|
87
92
|
matchedRouteConfigData = data;
|
|
88
93
|
}
|
|
89
|
-
if (
|
|
94
|
+
if ('data' in matchedRouteConfig) {
|
|
90
95
|
matchedRouteConfigData = matchedRouteConfig.data;
|
|
91
96
|
}
|
|
92
|
-
if (
|
|
97
|
+
if ('file' in matchedRouteConfig) {
|
|
93
98
|
if (!(0, _helpers.isFilePathValid)(matchedRouteConfig.file)) return next();
|
|
94
99
|
}
|
|
95
100
|
var _matchedRouteConfig_entities;
|
|
96
|
-
const resolvedData = typeof matchedRouteConfigData ===
|
|
101
|
+
const resolvedData = typeof matchedRouteConfigData === 'function' ? await matchedRouteConfigData(request, (_matchedRouteConfig_entities = matchedRouteConfig.entities) !== null && _matchedRouteConfig_entities !== void 0 ? _matchedRouteConfig_entities : {}) : matchedRouteConfigData;
|
|
97
102
|
if ((_matchedRouteConfig_settings1 = matchedRouteConfig.settings) === null || _matchedRouteConfig_settings1 === void 0 ? void 0 : _matchedRouteConfig_settings1.status) {
|
|
98
103
|
response.statusCode = matchedRouteConfig.settings.status;
|
|
99
104
|
}
|
|
100
105
|
// ✅ important:
|
|
101
106
|
// set 'Cache-Control' header for explicit browsers response revalidate: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control
|
|
102
107
|
// this code should place before response interceptors for giving opportunity to rewrite 'Cache-Control' header
|
|
103
|
-
if (request.method ===
|
|
108
|
+
if (request.method === 'GET') response.set('Cache-control', 'no-cache');
|
|
104
109
|
const data = await (0, _helpers.callResponseInterceptors)({
|
|
105
110
|
data: resolvedData,
|
|
106
111
|
request,
|
|
107
112
|
response,
|
|
108
113
|
interceptors: {
|
|
109
|
-
routeInterceptor: (
|
|
114
|
+
routeInterceptor: (_matchedRouteConfig_interceptors1 = matchedRouteConfig.interceptors) === null || _matchedRouteConfig_interceptors1 === void 0 ? void 0 : _matchedRouteConfig_interceptors1.response,
|
|
110
115
|
requestInterceptor: (_requestConfig_interceptors1 = requestConfig.interceptors) === null || _requestConfig_interceptors1 === void 0 ? void 0 : _requestConfig_interceptors1.response,
|
|
111
116
|
apiInterceptor: (_restConfig_interceptors = restConfig.interceptors) === null || _restConfig_interceptors === void 0 ? void 0 : _restConfig_interceptors.response,
|
|
112
117
|
serverInterceptor: serverResponseInterceptor
|
|
@@ -115,7 +120,7 @@ const createRestRoutes = ({ router, restConfig, serverResponseInterceptor })=>{
|
|
|
115
120
|
if ((_matchedRouteConfig_settings2 = matchedRouteConfig.settings) === null || _matchedRouteConfig_settings2 === void 0 ? void 0 : _matchedRouteConfig_settings2.delay) {
|
|
116
121
|
await (0, _helpers.sleep)(matchedRouteConfig.settings.delay);
|
|
117
122
|
}
|
|
118
|
-
if (
|
|
123
|
+
if ('file' in matchedRouteConfig) {
|
|
119
124
|
return response.sendFile(_path.default.resolve(matchedRouteConfig.file));
|
|
120
125
|
}
|
|
121
126
|
return response.json(data);
|
|
@@ -22,7 +22,7 @@ const calculateRouteConfigWeight = (restRouteConfig)=>{
|
|
|
22
22
|
if ((0, _helpers.isPlainObject)(body) && body.checkMode) {
|
|
23
23
|
// ✅ important:
|
|
24
24
|
// check that actual value check modes does not have `value` for compare
|
|
25
|
-
if (body.checkMode ===
|
|
25
|
+
if (body.checkMode === 'exists' || body.checkMode === 'notExists') {
|
|
26
26
|
routeConfigWeight += 1;
|
|
27
27
|
return routeConfigWeight;
|
|
28
28
|
}
|
|
@@ -34,7 +34,31 @@ const calculateRouteConfigWeight = (restRouteConfig)=>{
|
|
|
34
34
|
return routeConfigWeight;
|
|
35
35
|
};
|
|
36
36
|
const prepareRestRequestConfigs = (requestConfigs)=>{
|
|
37
|
-
requestConfigs.
|
|
37
|
+
const sortedByPathRequestConfigs = requestConfigs.sort(({ path: firstPath }, { path: secondPath })=>{
|
|
38
|
+
// ✅ important:
|
|
39
|
+
// do not compare RegExp paths and non-parameterized paths
|
|
40
|
+
if (firstPath instanceof RegExp || secondPath instanceof RegExp) return 0;
|
|
41
|
+
if (!firstPath.includes('/:') && !secondPath.includes('/:')) return 0;
|
|
42
|
+
const firstPathParts = firstPath.split('/');
|
|
43
|
+
const secondPathParts = secondPath.split('/');
|
|
44
|
+
const minimalPathPartsLength = Math.min(firstPathParts.length, secondPathParts.length);
|
|
45
|
+
// ✅ important:
|
|
46
|
+
// need to find the leftmost parameter/non-parameter pair and give priority to non-parameter one
|
|
47
|
+
for(let i = 0; i < minimalPathPartsLength; i += 1){
|
|
48
|
+
const firstPathPart = firstPathParts[i];
|
|
49
|
+
const secondPathPart = secondPathParts[i];
|
|
50
|
+
const isFirstPathPartParameter = firstPathPart.startsWith(':');
|
|
51
|
+
const isSecondPathPartParameter = secondPathPart.startsWith(':');
|
|
52
|
+
if (!isFirstPathPartParameter && !isSecondPathPartParameter) {
|
|
53
|
+
if (firstPathPart === secondPathPart) continue;
|
|
54
|
+
return 0;
|
|
55
|
+
}
|
|
56
|
+
if (isFirstPathPartParameter && isSecondPathPartParameter) continue;
|
|
57
|
+
return +isFirstPathPartParameter - +isSecondPathPartParameter;
|
|
58
|
+
}
|
|
59
|
+
return 0;
|
|
60
|
+
});
|
|
61
|
+
sortedByPathRequestConfigs.forEach((requestConfig)=>{
|
|
38
62
|
requestConfig.routes.sort((first, second)=>// ✅ important:
|
|
39
63
|
// Lift more specific configs for correct working of routes
|
|
40
64
|
calculateRouteConfigWeight(second) - calculateRouteConfigWeight(first));
|
|
@@ -21,16 +21,16 @@ function _interop_require_default(obj) {
|
|
|
21
21
|
const createDatabaseMockServer = (databaseMockServerConfig, server = (0, _express.default)())=>{
|
|
22
22
|
var _databaseMockServerConfig_interceptors;
|
|
23
23
|
const { cors, staticPath, data, routes } = databaseMockServerConfig;
|
|
24
|
-
server.set(
|
|
25
|
-
server.set(
|
|
26
|
-
server.use(_express.default.static((0, _helpers.urlJoin)(__dirname,
|
|
24
|
+
server.set('view engine', 'ejs');
|
|
25
|
+
server.set('views', (0, _helpers.urlJoin)(__dirname, '../../static/views'));
|
|
26
|
+
server.use(_express.default.static((0, _helpers.urlJoin)(__dirname, '../../static/views')));
|
|
27
27
|
server.use(_bodyparser.default.urlencoded({
|
|
28
28
|
extended: false
|
|
29
29
|
}));
|
|
30
30
|
server.use(_bodyparser.default.json({
|
|
31
|
-
limit:
|
|
31
|
+
limit: '10mb'
|
|
32
32
|
}));
|
|
33
|
-
server.set(
|
|
33
|
+
server.set('json spaces', 2);
|
|
34
34
|
server.use(_bodyparser.default.text());
|
|
35
35
|
(0, _middlewares.cookieParseMiddleware)(server);
|
|
36
36
|
const serverRequestInterceptor = (_databaseMockServerConfig_interceptors = databaseMockServerConfig.interceptors) === null || _databaseMockServerConfig_interceptors === void 0 ? void 0 : _databaseMockServerConfig_interceptors.request;
|
|
@@ -41,7 +41,7 @@ const createDatabaseMockServer = (databaseMockServerConfig, server = (0, _expres
|
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
43
|
var _databaseMockServerConfig_baseUrl;
|
|
44
|
-
const baseUrl = (_databaseMockServerConfig_baseUrl = databaseMockServerConfig.baseUrl) !== null && _databaseMockServerConfig_baseUrl !== void 0 ? _databaseMockServerConfig_baseUrl :
|
|
44
|
+
const baseUrl = (_databaseMockServerConfig_baseUrl = databaseMockServerConfig.baseUrl) !== null && _databaseMockServerConfig_baseUrl !== void 0 ? _databaseMockServerConfig_baseUrl : '/';
|
|
45
45
|
if (cors) {
|
|
46
46
|
(0, _middlewares.corsMiddleware)(server, cors);
|
|
47
47
|
} else {
|
|
@@ -22,16 +22,16 @@ function _interop_require_default(obj) {
|
|
|
22
22
|
const createGraphQLMockServer = (graphqlMockServerConfig, server = (0, _express.default)())=>{
|
|
23
23
|
var _graphqlMockServerConfig_interceptors;
|
|
24
24
|
const { cors, staticPath, configs, database, interceptors } = graphqlMockServerConfig;
|
|
25
|
-
server.set(
|
|
26
|
-
server.set(
|
|
27
|
-
server.use(_express.default.static((0, _helpers.urlJoin)(__dirname,
|
|
25
|
+
server.set('view engine', 'ejs');
|
|
26
|
+
server.set('views', (0, _helpers.urlJoin)(__dirname, '../../static/views'));
|
|
27
|
+
server.use(_express.default.static((0, _helpers.urlJoin)(__dirname, '../../static/views')));
|
|
28
28
|
server.use(_bodyparser.default.urlencoded({
|
|
29
29
|
extended: false
|
|
30
30
|
}));
|
|
31
31
|
server.use(_bodyparser.default.json({
|
|
32
|
-
limit:
|
|
32
|
+
limit: '10mb'
|
|
33
33
|
}));
|
|
34
|
-
server.set(
|
|
34
|
+
server.set('json spaces', 2);
|
|
35
35
|
server.use(_bodyparser.default.text());
|
|
36
36
|
(0, _middlewares.cookieParseMiddleware)(server);
|
|
37
37
|
const serverRequestInterceptor = (_graphqlMockServerConfig_interceptors = graphqlMockServerConfig.interceptors) === null || _graphqlMockServerConfig_interceptors === void 0 ? void 0 : _graphqlMockServerConfig_interceptors.request;
|
|
@@ -42,7 +42,7 @@ const createGraphQLMockServer = (graphqlMockServerConfig, server = (0, _express.
|
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
44
|
var _graphqlMockServerConfig_baseUrl;
|
|
45
|
-
const baseUrl = (_graphqlMockServerConfig_baseUrl = graphqlMockServerConfig.baseUrl) !== null && _graphqlMockServerConfig_baseUrl !== void 0 ? _graphqlMockServerConfig_baseUrl :
|
|
45
|
+
const baseUrl = (_graphqlMockServerConfig_baseUrl = graphqlMockServerConfig.baseUrl) !== null && _graphqlMockServerConfig_baseUrl !== void 0 ? _graphqlMockServerConfig_baseUrl : '/';
|
|
46
46
|
if (cors) {
|
|
47
47
|
(0, _middlewares.corsMiddleware)(server, cors);
|
|
48
48
|
} else {
|