mock-config-server 3.4.1 → 3.6.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 +2 -0
- package/dist/bin/bin.js +3 -6
- package/dist/bin/build.js +52 -50
- package/dist/bin/cli.js +50 -43
- package/dist/bin/helpers/createTemplate.js +29 -21
- package/dist/bin/helpers/getMostSpecificPathFromError.js +34 -30
- package/dist/bin/helpers/getValidationMessageFromPath.js +11 -8
- package/dist/bin/helpers/index.js +21 -79
- package/dist/bin/helpers/isOnlyRequestedDataResolvingPropertyExists.js +13 -6
- package/dist/bin/helpers/resolveConfigFile.js +22 -19
- package/dist/bin/helpers/resolveConfigFilePath.js +19 -12
- package/dist/bin/helpers/resolveExportsFromSourceCode.js +13 -10
- package/dist/bin/init.js +114 -97
- package/dist/bin/run.js +42 -43
- package/dist/bin/validateMockServerConfig/baseUrlSchema/baseUrlSchema.js +9 -5
- package/dist/bin/validateMockServerConfig/corsSchema/corsSchema.d.ts +2 -2
- package/dist/bin/validateMockServerConfig/corsSchema/corsSchema.js +32 -14
- package/dist/bin/validateMockServerConfig/databaseConfigSchema/databaseConfigSchema.js +19 -9
- package/dist/bin/validateMockServerConfig/graphqlConfigSchema/graphqlConfigSchema.d.ts +82 -72
- package/dist/bin/validateMockServerConfig/graphqlConfigSchema/graphqlConfigSchema.js +38 -22
- package/dist/bin/validateMockServerConfig/graphqlConfigSchema/routeConfigSchema/routeConfigSchema.d.ts +25 -21
- package/dist/bin/validateMockServerConfig/graphqlConfigSchema/routeConfigSchema/routeConfigSchema.js +36 -28
- package/dist/bin/validateMockServerConfig/interceptorsSchema/interceptorsSchema.js +12 -8
- package/dist/bin/validateMockServerConfig/portSchema/portSchema.js +9 -5
- package/dist/bin/validateMockServerConfig/queueSchema/queueSchema.d.ts +2 -2
- package/dist/bin/validateMockServerConfig/queueSchema/queueSchema.js +18 -9
- package/dist/bin/validateMockServerConfig/restConfigSchema/restConfigSchema.d.ts +270 -240
- package/dist/bin/validateMockServerConfig/restConfigSchema/restConfigSchema.js +33 -19
- package/dist/bin/validateMockServerConfig/restConfigSchema/routeConfigSchema/routeConfigSchema.d.ts +33 -28
- package/dist/bin/validateMockServerConfig/restConfigSchema/routeConfigSchema/routeConfigSchema.js +60 -48
- package/dist/bin/validateMockServerConfig/settingsSchema/settingsSchema.js +13 -9
- package/dist/bin/validateMockServerConfig/staticPathSchema/staticPathSchema.js +19 -9
- package/dist/bin/validateMockServerConfig/utils/checkModeSchema/checkModeSchema.js +27 -9
- package/dist/bin/validateMockServerConfig/utils/entitiesSchema/entitiesSchema.d.ts +4 -8
- package/dist/bin/validateMockServerConfig/utils/entitiesSchema/entitiesSchema.js +117 -60
- package/dist/bin/validateMockServerConfig/utils/index.js +20 -68
- package/dist/bin/validateMockServerConfig/utils/jsonSchema/jsonSchema.js +30 -10
- package/dist/bin/validateMockServerConfig/utils/plainObjectSchema/plainObjectSchema.js +9 -8
- package/dist/bin/validateMockServerConfig/utils/requiredPropertiesSchema/requiredPropertiesSchema.d.ts +1 -1
- package/dist/bin/validateMockServerConfig/utils/requiredPropertiesSchema/requiredPropertiesSchema.js +10 -7
- package/dist/bin/validateMockServerConfig/utils/sharedSchema/sharedSchema.js +18 -6
- package/dist/bin/validateMockServerConfig/validateApiMockServerConfig.js +43 -40
- package/dist/bin/validateMockServerConfig/validateMockServerConfig.js +38 -35
- package/dist/index.js +15 -13
- package/dist/src/core/database/createDatabaseRoutes/createDatabaseRoutes.js +25 -28
- package/dist/src/core/database/createDatabaseRoutes/helpers/array/createNewId/createNewId.js +14 -11
- package/dist/src/core/database/createDatabaseRoutes/helpers/array/findIndexById/findIndexById.js +8 -5
- package/dist/src/core/database/createDatabaseRoutes/helpers/array/index.js +17 -35
- package/dist/src/core/database/createDatabaseRoutes/helpers/array/isIndex/isIndex.js +8 -5
- package/dist/src/core/database/createDatabaseRoutes/helpers/createNestedDatabaseRoutes/createNestedDatabaseRoutes.js +159 -143
- package/dist/src/core/database/createDatabaseRoutes/helpers/createRewrittenDatabaseRoutes/createRewrittenDatabaseRoutes.js +15 -8
- package/dist/src/core/database/createDatabaseRoutes/helpers/createShallowDatabaseRoutes/createShallowDatabaseRoutes.js +90 -94
- package/dist/src/core/database/createDatabaseRoutes/helpers/filter/filter.js +49 -46
- package/dist/src/core/database/createDatabaseRoutes/helpers/index.js +19 -57
- package/dist/src/core/database/createDatabaseRoutes/helpers/pagination/pagination.js +32 -31
- package/dist/src/core/database/createDatabaseRoutes/helpers/search/search.js +34 -24
- package/dist/src/core/database/createDatabaseRoutes/helpers/sort/sort.js +37 -33
- package/dist/src/core/database/createDatabaseRoutes/helpers/splitDatabaseByNesting/splitDatabaseByNesting.js +26 -25
- package/dist/src/core/database/createDatabaseRoutes/storages/File/FileStorage.js +65 -50
- package/dist/src/core/database/createDatabaseRoutes/storages/File/FileWriter.js +55 -48
- package/dist/src/core/database/createDatabaseRoutes/storages/Memory/MemoryStorage.js +51 -41
- package/dist/src/core/database/createDatabaseRoutes/storages/index.js +16 -24
- package/dist/src/core/database/index.js +15 -13
- package/dist/src/core/graphql/createGraphQLRoutes/createGraphQLRoutes.js +131 -140
- package/dist/src/core/graphql/createGraphQLRoutes/helpers/index.js +15 -13
- package/dist/src/core/graphql/createGraphQLRoutes/helpers/prepareGraphQLRequestConfigs/prepareGraphQLRequestConfigs.js +36 -41
- package/dist/src/core/graphql/index.js +15 -13
- package/dist/src/core/middlewares/cookieParseMiddleware/cookieParseMiddleware.js +16 -13
- package/dist/src/core/middlewares/cookieParseMiddleware/helpers/index.js +15 -13
- package/dist/src/core/middlewares/cookieParseMiddleware/helpers/parseCookie/parseCookie.js +18 -15
- package/dist/src/core/middlewares/corsMiddleware/corsMiddleware.js +50 -47
- package/dist/src/core/middlewares/corsMiddleware/helpers/getAllowedOrigins/getAllowedOrigins.js +17 -12
- package/dist/src/core/middlewares/corsMiddleware/helpers/index.js +15 -13
- package/dist/src/core/middlewares/destroyerMiddleware/destroyerMiddleware.js +23 -20
- package/dist/src/core/middlewares/errorMiddleware/errorMiddleware.js +23 -17
- package/dist/src/core/middlewares/index.js +23 -91
- package/dist/src/core/middlewares/noCorsMiddleware/noCorsMiddleware.js +22 -19
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/getGraphqlUrlSuggestions/getGraphqlUrlSuggestions.js +21 -23
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/getLevenshteinDistance/getLevenshteinDistance.js +80 -80
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/getRestUrlSuggestions.js +34 -34
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/getActualRestUrlMeaningfulString/getActualRestUrlMeaningfulString.js +8 -5
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/getPatternRestUrlMeaningfulString/getPatternRestUrlMeaningfulString.js +8 -5
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/index.js +16 -24
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/index.js +17 -35
- package/dist/src/core/middlewares/notFoundMiddleware/notFoundMiddleware.js +58 -60
- package/dist/src/core/middlewares/requestInterceptorMiddleware/requestInterceptorMiddleware.js +16 -17
- package/dist/src/core/middlewares/staticMiddleware/staticMiddleware.js +32 -25
- package/dist/src/core/rest/createRestRoutes/createRestRoutes.js +125 -130
- package/dist/src/core/rest/createRestRoutes/helpers/index.js +15 -13
- package/dist/src/core/rest/createRestRoutes/helpers/prepareRestRequestConfigs/prepareRestRequestConfigs.js +37 -43
- package/dist/src/core/rest/index.js +15 -13
- package/dist/src/index.js +16 -24
- package/dist/src/server/createDatabaseMockServer/createDatabaseMockServer.js +56 -53
- package/dist/src/server/createGraphQLMockServer/createGraphQLMockServer.js +64 -62
- package/dist/src/server/createMockServer/createMockServer.js +94 -91
- package/dist/src/server/createRestMockServer/createRestMockServer.js +64 -62
- package/dist/src/server/index.js +23 -91
- package/dist/src/server/startDatabaseMockServer/startDatabaseMockServer.js +25 -19
- package/dist/src/server/startGraphQLMockServer/startGraphQLMockServer.js +25 -19
- package/dist/src/server/startMockServer/startMockServer.js +25 -19
- package/dist/src/server/startRestMockServer/startRestMockServer.js +25 -19
- package/dist/src/utils/constants/appPath.js +8 -4
- package/dist/src/utils/constants/checkModes.js +74 -11
- package/dist/src/utils/constants/default.js +18 -14
- package/dist/src/utils/constants/index.js +17 -35
- package/dist/src/utils/helpers/asyncHandler.js +8 -5
- package/dist/src/utils/helpers/config/index.js +15 -13
- package/dist/src/utils/helpers/config/resolveEntityValues/resolveEntityValues.js +103 -110
- package/dist/src/utils/helpers/entities/convertToEntityDescriptor/convertToEntityDescriptor.js +12 -9
- package/dist/src/utils/helpers/entities/index.js +16 -24
- package/dist/src/utils/helpers/entities/isEntityDescriptor/isEntityDescriptor.js +9 -6
- package/dist/src/utils/helpers/files/index.js +15 -13
- package/dist/src/utils/helpers/files/isFilePathValid/isFilePathValid.js +22 -15
- package/dist/src/utils/helpers/graphql/getGraphQLInput/getGraphQLInput.js +25 -29
- package/dist/src/utils/helpers/graphql/index.js +17 -35
- package/dist/src/utils/helpers/graphql/parseGraphQLRequest/parseGraphQLRequest.js +13 -10
- package/dist/src/utils/helpers/graphql/parseQuery/parseQuery.js +23 -19
- package/dist/src/utils/helpers/index.js +26 -124
- package/dist/src/utils/helpers/interceptors/callRequestInterceptor/callRequestInterceptor.js +21 -21
- package/dist/src/utils/helpers/interceptors/callResponseInterceptors/callResponseInterceptors.js +62 -64
- package/dist/src/utils/helpers/interceptors/helpers/setDelay.js +10 -7
- package/dist/src/utils/helpers/interceptors/index.js +16 -24
- package/dist/src/utils/helpers/isPlainObject/isPlainObject.js +8 -5
- package/dist/src/utils/helpers/isPrimitive/isPrimitive.js +8 -5
- package/dist/src/utils/helpers/isRegExp/isRegExp.js +8 -5
- package/dist/src/utils/helpers/sleep.js +9 -6
- package/dist/src/utils/helpers/tests/createTmpDir.js +16 -9
- package/dist/src/utils/helpers/tests/index.js +15 -13
- package/dist/src/utils/helpers/url/convertWin32PathToUnix/convertWin32PathToUnix.js +8 -5
- package/dist/src/utils/helpers/url/getUrlParts/getUrlParts.js +9 -6
- package/dist/src/utils/helpers/url/index.js +18 -46
- package/dist/src/utils/helpers/url/removeLeadingAndTrailingSlashes/removeLeadingAndTrailingSlashes.js +8 -5
- package/dist/src/utils/helpers/url/urlJoin/urlJoin.js +18 -11
- package/dist/src/utils/types/checkModes.js +4 -1
- package/dist/src/utils/types/database.js +4 -1
- package/dist/src/utils/types/entities.js +4 -1
- package/dist/src/utils/types/graphql.d.ts +1 -1
- package/dist/src/utils/types/graphql.js +4 -1
- package/dist/src/utils/types/index.js +24 -102
- package/dist/src/utils/types/interceptors.js +4 -1
- package/dist/src/utils/types/rest.d.ts +1 -1
- package/dist/src/utils/types/rest.js +4 -1
- package/dist/src/utils/types/server.js +4 -1
- package/dist/src/utils/types/utils.js +4 -1
- package/dist/src/utils/types/values.js +4 -1
- package/package.json +26 -29
- package/dist/bin/templates/.eslintrc.js +0 -14
- package/dist/bin/templates/tsconfig.json +0 -11
|
@@ -1,135 +1,130 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
2
|
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
|
|
3
|
+
value: true
|
|
5
4
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
5
|
+
Object.defineProperty(exports, "createRestRoutes", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return createRestRoutes;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _flat = require("flat");
|
|
12
|
+
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
13
|
+
const _helpers = require("../../../utils/helpers");
|
|
14
|
+
const _helpers1 = require("./helpers");
|
|
15
|
+
function _interop_require_default(obj) {
|
|
16
|
+
return obj && obj.__esModule ? obj : {
|
|
17
|
+
default: obj
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
const createRestRoutes = ({ router, restConfig, serverResponseInterceptor })=>{
|
|
21
|
+
(0, _helpers1.prepareRestRequestConfigs)(restConfig.configs).forEach((requestConfig)=>{
|
|
22
|
+
router.route(requestConfig.path)[requestConfig.method]((0, _helpers.asyncHandler)(async (request, response, next)=>{
|
|
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) {
|
|
25
|
+
await (0, _helpers.callRequestInterceptor)({
|
|
26
|
+
request,
|
|
27
|
+
interceptor: requestConfig.interceptors.request
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
const matchedRouteConfig = requestConfig.routes.find(({ entities })=>{
|
|
31
|
+
if (!entities) return true;
|
|
32
|
+
const entries = Object.entries(entities);
|
|
33
|
+
return entries.every(([entityName, entityDescriptorOrValue])=>{
|
|
34
|
+
const { checkMode, value: descriptorValue } = (0, _helpers.convertToEntityDescriptor)(entityDescriptorOrValue);
|
|
35
|
+
// ✅ important:
|
|
36
|
+
// check whole body as plain value strictly if descriptor used for body
|
|
37
|
+
const isEntityBodyByTopLevelDescriptor = entityName === 'body' && (0, _helpers.isEntityDescriptor)(entityDescriptorOrValue);
|
|
38
|
+
if (isEntityBodyByTopLevelDescriptor) {
|
|
39
|
+
// ✅ important:
|
|
40
|
+
// bodyParser sets body to empty object if body not sent or invalid, so assume {} as undefined
|
|
41
|
+
return (0, _helpers.resolveEntityValues)(checkMode, Object.keys(request.body).length ? request.body : undefined, descriptorValue);
|
|
42
|
+
}
|
|
43
|
+
const isEntityBodyByTopLevelArray = entityName === 'body' && Array.isArray(entityDescriptorOrValue);
|
|
44
|
+
if (isEntityBodyByTopLevelArray) {
|
|
45
|
+
return entityDescriptorOrValue.some((entityDescriptorOrValueElement)=>// ✅ important:
|
|
46
|
+
// bodyParser sets body to empty object if body not sent or invalid, so assume {} as undefined
|
|
47
|
+
(0, _helpers.resolveEntityValues)(checkMode, Object.keys(request.body).length ? request.body : undefined, entityDescriptorOrValueElement));
|
|
48
|
+
}
|
|
49
|
+
const recordOrArrayEntries = Object.entries(entityDescriptorOrValue);
|
|
50
|
+
return recordOrArrayEntries.every(([entityKey, mappedEntityDescriptor])=>{
|
|
51
|
+
const { checkMode, value: descriptorValue } = (0, _helpers.convertToEntityDescriptor)(mappedEntityDescriptor);
|
|
52
|
+
const flattenEntity = (0, _flat.flatten)(request[entityName]);
|
|
53
|
+
// ✅ important: transform header keys to lower case because browsers send headers in lowercase
|
|
54
|
+
return (0, _helpers.resolveEntityValues)(checkMode, flattenEntity[entityName === 'headers' ? entityKey.toLowerCase() : entityKey], descriptorValue);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
if (!matchedRouteConfig) {
|
|
59
|
+
return next();
|
|
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
|
+
}
|
|
67
|
+
let matchedRouteConfigData = null;
|
|
68
|
+
if (((_matchedRouteConfig_settings = matchedRouteConfig.settings) === null || _matchedRouteConfig_settings === void 0 ? void 0 : _matchedRouteConfig_settings.polling) && 'queue' in matchedRouteConfig) {
|
|
69
|
+
if (!matchedRouteConfig.queue.length) return next();
|
|
70
|
+
const shallowMatchedRouteConfig = matchedRouteConfig;
|
|
71
|
+
var _shallowMatchedRouteConfig___pollingIndex;
|
|
72
|
+
let index = (_shallowMatchedRouteConfig___pollingIndex = shallowMatchedRouteConfig.__pollingIndex) !== null && _shallowMatchedRouteConfig___pollingIndex !== void 0 ? _shallowMatchedRouteConfig___pollingIndex : 0;
|
|
73
|
+
const { time, data } = matchedRouteConfig.queue[index];
|
|
74
|
+
const updateIndex = ()=>{
|
|
75
|
+
if (matchedRouteConfig.queue.length - 1 === index) {
|
|
76
|
+
index = 0;
|
|
77
|
+
} else {
|
|
78
|
+
index += 1;
|
|
79
|
+
}
|
|
80
|
+
shallowMatchedRouteConfig.__pollingIndex = index;
|
|
81
|
+
};
|
|
82
|
+
if (time && !shallowMatchedRouteConfig.__timeoutInProgress) {
|
|
83
|
+
shallowMatchedRouteConfig.__timeoutInProgress = true;
|
|
84
|
+
setTimeout(()=>{
|
|
85
|
+
shallowMatchedRouteConfig.__timeoutInProgress = false;
|
|
86
|
+
updateIndex();
|
|
87
|
+
}, time);
|
|
88
|
+
}
|
|
89
|
+
if (!time && !shallowMatchedRouteConfig.__timeoutInProgress) {
|
|
90
|
+
updateIndex();
|
|
91
|
+
}
|
|
92
|
+
matchedRouteConfigData = data;
|
|
93
|
+
}
|
|
94
|
+
if ('data' in matchedRouteConfig) {
|
|
95
|
+
matchedRouteConfigData = matchedRouteConfig.data;
|
|
96
|
+
}
|
|
97
|
+
if ('file' in matchedRouteConfig) {
|
|
98
|
+
if (!(0, _helpers.isFilePathValid)(matchedRouteConfig.file)) return next();
|
|
99
|
+
}
|
|
100
|
+
var _matchedRouteConfig_entities;
|
|
101
|
+
const resolvedData = typeof matchedRouteConfigData === 'function' ? await matchedRouteConfigData(request, (_matchedRouteConfig_entities = matchedRouteConfig.entities) !== null && _matchedRouteConfig_entities !== void 0 ? _matchedRouteConfig_entities : {}) : matchedRouteConfigData;
|
|
102
|
+
if ((_matchedRouteConfig_settings1 = matchedRouteConfig.settings) === null || _matchedRouteConfig_settings1 === void 0 ? void 0 : _matchedRouteConfig_settings1.status) {
|
|
103
|
+
response.statusCode = matchedRouteConfig.settings.status;
|
|
104
|
+
}
|
|
49
105
|
// ✅ important:
|
|
50
|
-
//
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const {
|
|
75
|
-
time,
|
|
76
|
-
data
|
|
77
|
-
} = matchedRouteConfig.queue[index];
|
|
78
|
-
const updateIndex = () => {
|
|
79
|
-
if (matchedRouteConfig.queue.length - 1 === index) {
|
|
80
|
-
index = 0;
|
|
81
|
-
} else {
|
|
82
|
-
index += 1;
|
|
83
|
-
}
|
|
84
|
-
shallowMatchedRouteConfig.__pollingIndex = index;
|
|
85
|
-
};
|
|
86
|
-
if (time && !shallowMatchedRouteConfig.__timeoutInProgress) {
|
|
87
|
-
shallowMatchedRouteConfig.__timeoutInProgress = true;
|
|
88
|
-
setTimeout(() => {
|
|
89
|
-
shallowMatchedRouteConfig.__timeoutInProgress = false;
|
|
90
|
-
updateIndex();
|
|
91
|
-
}, time);
|
|
92
|
-
}
|
|
93
|
-
if (!time && !shallowMatchedRouteConfig.__timeoutInProgress) {
|
|
94
|
-
updateIndex();
|
|
95
|
-
}
|
|
96
|
-
matchedRouteConfigData = data;
|
|
97
|
-
}
|
|
98
|
-
if ('data' in matchedRouteConfig) {
|
|
99
|
-
matchedRouteConfigData = matchedRouteConfig.data;
|
|
100
|
-
}
|
|
101
|
-
if ('file' in matchedRouteConfig) {
|
|
102
|
-
if (!(0, _helpers.isFilePathValid)(matchedRouteConfig.file)) return next();
|
|
103
|
-
}
|
|
104
|
-
const resolvedData = typeof matchedRouteConfigData === 'function' ? await matchedRouteConfigData(request, (_matchedRouteConfig$e = matchedRouteConfig.entities) !== null && _matchedRouteConfig$e !== void 0 ? _matchedRouteConfig$e : {}) : matchedRouteConfigData;
|
|
105
|
-
if ((_matchedRouteConfig$s2 = matchedRouteConfig.settings) !== null && _matchedRouteConfig$s2 !== void 0 && _matchedRouteConfig$s2.status) {
|
|
106
|
-
response.statusCode = matchedRouteConfig.settings.status;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
// ✅ important:
|
|
110
|
-
// set 'Cache-Control' header for explicit browsers response revalidate: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control
|
|
111
|
-
// this code should place before response interceptors for giving opportunity to rewrite 'Cache-Control' header
|
|
112
|
-
if (request.method === 'GET') response.set('Cache-control', 'no-cache');
|
|
113
|
-
const data = await (0, _helpers.callResponseInterceptors)({
|
|
114
|
-
data: resolvedData,
|
|
115
|
-
request,
|
|
116
|
-
response,
|
|
117
|
-
interceptors: {
|
|
118
|
-
routeInterceptor: (_matchedRouteConfig$i = matchedRouteConfig.interceptors) === null || _matchedRouteConfig$i === void 0 ? void 0 : _matchedRouteConfig$i.response,
|
|
119
|
-
requestInterceptor: (_requestConfig$interc2 = requestConfig.interceptors) === null || _requestConfig$interc2 === void 0 ? void 0 : _requestConfig$interc2.response,
|
|
120
|
-
apiInterceptor: (_restConfig$intercept = restConfig.interceptors) === null || _restConfig$intercept === void 0 ? void 0 : _restConfig$intercept.response,
|
|
121
|
-
serverInterceptor: serverResponseInterceptor
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
if ((_matchedRouteConfig$s3 = matchedRouteConfig.settings) !== null && _matchedRouteConfig$s3 !== void 0 && _matchedRouteConfig$s3.delay) {
|
|
125
|
-
await (0, _helpers.sleep)(matchedRouteConfig.settings.delay);
|
|
126
|
-
}
|
|
127
|
-
if ('file' in matchedRouteConfig) {
|
|
128
|
-
return response.sendFile(_path.default.resolve(matchedRouteConfig.file));
|
|
129
|
-
}
|
|
130
|
-
return response.json(data);
|
|
131
|
-
}));
|
|
132
|
-
});
|
|
133
|
-
return router;
|
|
106
|
+
// set 'Cache-Control' header for explicit browsers response revalidate: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control
|
|
107
|
+
// this code should place before response interceptors for giving opportunity to rewrite 'Cache-Control' header
|
|
108
|
+
if (request.method === 'GET') response.set('Cache-control', 'no-cache');
|
|
109
|
+
const data = await (0, _helpers.callResponseInterceptors)({
|
|
110
|
+
data: resolvedData,
|
|
111
|
+
request,
|
|
112
|
+
response,
|
|
113
|
+
interceptors: {
|
|
114
|
+
routeInterceptor: (_matchedRouteConfig_interceptors1 = matchedRouteConfig.interceptors) === null || _matchedRouteConfig_interceptors1 === void 0 ? void 0 : _matchedRouteConfig_interceptors1.response,
|
|
115
|
+
requestInterceptor: (_requestConfig_interceptors1 = requestConfig.interceptors) === null || _requestConfig_interceptors1 === void 0 ? void 0 : _requestConfig_interceptors1.response,
|
|
116
|
+
apiInterceptor: (_restConfig_interceptors = restConfig.interceptors) === null || _restConfig_interceptors === void 0 ? void 0 : _restConfig_interceptors.response,
|
|
117
|
+
serverInterceptor: serverResponseInterceptor
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
if ((_matchedRouteConfig_settings2 = matchedRouteConfig.settings) === null || _matchedRouteConfig_settings2 === void 0 ? void 0 : _matchedRouteConfig_settings2.delay) {
|
|
121
|
+
await (0, _helpers.sleep)(matchedRouteConfig.settings.delay);
|
|
122
|
+
}
|
|
123
|
+
if ('file' in matchedRouteConfig) {
|
|
124
|
+
return response.sendFile(_path.default.resolve(matchedRouteConfig.file));
|
|
125
|
+
}
|
|
126
|
+
return response.json(data);
|
|
127
|
+
}));
|
|
128
|
+
});
|
|
129
|
+
return router;
|
|
134
130
|
};
|
|
135
|
-
exports.createRestRoutes = createRestRoutes;
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
2
|
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
|
|
3
|
+
value: true
|
|
5
4
|
});
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
5
|
+
_export_star(require("./prepareRestRequestConfigs/prepareRestRequestConfigs"), 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,49 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
2
|
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
|
|
3
|
+
value: true
|
|
5
4
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
entities
|
|
11
|
-
} = restRouteConfig;
|
|
12
|
-
if (!entities) return 0;
|
|
13
|
-
let routeConfigWeight = 0;
|
|
14
|
-
const {
|
|
15
|
-
headers,
|
|
16
|
-
cookies,
|
|
17
|
-
query,
|
|
18
|
-
params,
|
|
19
|
-
body
|
|
20
|
-
} = entities;
|
|
21
|
-
if (headers) routeConfigWeight += Object.keys(headers).length;
|
|
22
|
-
if (cookies) routeConfigWeight += Object.keys(cookies).length;
|
|
23
|
-
if (query) routeConfigWeight += Object.keys(query).length;
|
|
24
|
-
if (params) routeConfigWeight += Object.keys(params).length;
|
|
25
|
-
if (body) {
|
|
26
|
-
if ((0, _helpers.isPlainObject)(body) && body.checkMode) {
|
|
27
|
-
// ✅ important:
|
|
28
|
-
// check that actual value check modes does not have `value` for compare
|
|
29
|
-
if (body.checkMode === 'exists' || body.checkMode === 'notExists') {
|
|
30
|
-
routeConfigWeight += 1;
|
|
31
|
-
return routeConfigWeight;
|
|
32
|
-
}
|
|
33
|
-
routeConfigWeight += (0, _helpers.isPlainObject)(body.value) ? Object.keys(body.value).length : 1;
|
|
34
|
-
return routeConfigWeight;
|
|
5
|
+
Object.defineProperty(exports, "prepareRestRequestConfigs", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return prepareRestRequestConfigs;
|
|
35
9
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
10
|
+
});
|
|
11
|
+
const _helpers = require("../../../../../utils/helpers");
|
|
12
|
+
const calculateRouteConfigWeight = (restRouteConfig)=>{
|
|
13
|
+
const { entities } = restRouteConfig;
|
|
14
|
+
if (!entities) return 0;
|
|
15
|
+
let routeConfigWeight = 0;
|
|
16
|
+
const { headers, cookies, query, params, body } = entities;
|
|
17
|
+
if (headers) routeConfigWeight += Object.keys(headers).length;
|
|
18
|
+
if (cookies) routeConfigWeight += Object.keys(cookies).length;
|
|
19
|
+
if (query) routeConfigWeight += Object.keys(query).length;
|
|
20
|
+
if (params) routeConfigWeight += Object.keys(params).length;
|
|
21
|
+
if (body) {
|
|
22
|
+
if ((0, _helpers.isPlainObject)(body) && body.checkMode) {
|
|
23
|
+
// ✅ important:
|
|
24
|
+
// check that actual value check modes does not have `value` for compare
|
|
25
|
+
if (body.checkMode === 'exists' || body.checkMode === 'notExists') {
|
|
26
|
+
routeConfigWeight += 1;
|
|
27
|
+
return routeConfigWeight;
|
|
28
|
+
}
|
|
29
|
+
routeConfigWeight += (0, _helpers.isPlainObject)(body.value) ? Object.keys(body.value).length : 1;
|
|
30
|
+
return routeConfigWeight;
|
|
31
|
+
}
|
|
32
|
+
routeConfigWeight += (0, _helpers.isPlainObject)(body) ? Object.keys(body).length : 1;
|
|
33
|
+
}
|
|
34
|
+
return routeConfigWeight;
|
|
39
35
|
};
|
|
40
|
-
const prepareRestRequestConfigs = requestConfigs
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return requestConfigs;
|
|
36
|
+
const prepareRestRequestConfigs = (requestConfigs)=>{
|
|
37
|
+
requestConfigs.forEach((requestConfig)=>{
|
|
38
|
+
requestConfig.routes.sort((first, second)=>// ✅ important:
|
|
39
|
+
// Lift more specific configs for correct working of routes
|
|
40
|
+
calculateRouteConfigWeight(second) - calculateRouteConfigWeight(first));
|
|
41
|
+
});
|
|
42
|
+
return requestConfigs;
|
|
48
43
|
};
|
|
49
|
-
exports.prepareRestRequestConfigs = prepareRestRequestConfigs;
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
2
|
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
|
|
3
|
+
value: true
|
|
5
4
|
});
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
5
|
+
_export_star(require("./createRestRoutes/createRestRoutes"), 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
|
+
}
|
package/dist/src/index.js
CHANGED
|
@@ -1,27 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
2
|
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
|
|
3
|
+
value: true
|
|
5
4
|
});
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
Object.defineProperty(exports, key, {
|
|
22
|
-
enumerable: true,
|
|
23
|
-
get: function () {
|
|
24
|
-
return _types[key];
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
});
|
|
5
|
+
_export_star(require("./server"), exports);
|
|
6
|
+
_export_star(require("./utils/types"), 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
|
+
}
|
|
@@ -1,58 +1,61 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
2
|
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
|
|
3
|
+
value: true
|
|
5
4
|
});
|
|
6
|
-
exports
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
(
|
|
36
|
-
|
|
37
|
-
|
|
5
|
+
Object.defineProperty(exports, "createDatabaseMockServer", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return createDatabaseMockServer;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _bodyparser = /*#__PURE__*/ _interop_require_default(require("body-parser"));
|
|
12
|
+
const _express = /*#__PURE__*/ _interop_require_default(require("express"));
|
|
13
|
+
const _database = require("../../core/database");
|
|
14
|
+
const _middlewares = require("../../core/middlewares");
|
|
15
|
+
const _helpers = require("../../utils/helpers");
|
|
16
|
+
function _interop_require_default(obj) {
|
|
17
|
+
return obj && obj.__esModule ? obj : {
|
|
18
|
+
default: obj
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const createDatabaseMockServer = (databaseMockServerConfig, server = (0, _express.default)())=>{
|
|
22
|
+
var _databaseMockServerConfig_interceptors;
|
|
23
|
+
const { cors, staticPath, data, routes } = databaseMockServerConfig;
|
|
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
|
+
server.use(_bodyparser.default.urlencoded({
|
|
28
|
+
extended: false
|
|
29
|
+
}));
|
|
30
|
+
server.use(_bodyparser.default.json({
|
|
31
|
+
limit: '10mb'
|
|
32
|
+
}));
|
|
33
|
+
server.set('json spaces', 2);
|
|
34
|
+
server.use(_bodyparser.default.text());
|
|
35
|
+
(0, _middlewares.cookieParseMiddleware)(server);
|
|
36
|
+
const serverRequestInterceptor = (_databaseMockServerConfig_interceptors = databaseMockServerConfig.interceptors) === null || _databaseMockServerConfig_interceptors === void 0 ? void 0 : _databaseMockServerConfig_interceptors.request;
|
|
37
|
+
if (serverRequestInterceptor) {
|
|
38
|
+
(0, _middlewares.requestInterceptorMiddleware)({
|
|
39
|
+
server,
|
|
40
|
+
interceptor: serverRequestInterceptor
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
var _databaseMockServerConfig_baseUrl;
|
|
44
|
+
const baseUrl = (_databaseMockServerConfig_baseUrl = databaseMockServerConfig.baseUrl) !== null && _databaseMockServerConfig_baseUrl !== void 0 ? _databaseMockServerConfig_baseUrl : '/';
|
|
45
|
+
if (cors) {
|
|
46
|
+
(0, _middlewares.corsMiddleware)(server, cors);
|
|
47
|
+
} else {
|
|
48
|
+
(0, _middlewares.noCorsMiddleware)(server);
|
|
49
|
+
}
|
|
50
|
+
if (staticPath) {
|
|
51
|
+
(0, _middlewares.staticMiddleware)(server, baseUrl, staticPath);
|
|
52
|
+
}
|
|
53
|
+
const routerWithDatabaseRoutes = (0, _database.createDatabaseRoutes)(_express.default.Router(), {
|
|
54
|
+
data,
|
|
55
|
+
routes
|
|
38
56
|
});
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
} else {
|
|
44
|
-
(0, _middlewares.noCorsMiddleware)(server);
|
|
45
|
-
}
|
|
46
|
-
if (staticPath) {
|
|
47
|
-
(0, _middlewares.staticMiddleware)(server, baseUrl, staticPath);
|
|
48
|
-
}
|
|
49
|
-
const routerWithDatabaseRoutes = (0, _database.createDatabaseRoutes)(_express.default.Router(), {
|
|
50
|
-
data,
|
|
51
|
-
routes
|
|
52
|
-
});
|
|
53
|
-
server.use(baseUrl, routerWithDatabaseRoutes);
|
|
54
|
-
(0, _middlewares.notFoundMiddleware)(server, databaseMockServerConfig);
|
|
55
|
-
(0, _middlewares.errorMiddleware)(server);
|
|
56
|
-
return server;
|
|
57
|
+
server.use(baseUrl, routerWithDatabaseRoutes);
|
|
58
|
+
(0, _middlewares.notFoundMiddleware)(server, databaseMockServerConfig);
|
|
59
|
+
(0, _middlewares.errorMiddleware)(server);
|
|
60
|
+
return server;
|
|
57
61
|
};
|
|
58
|
-
exports.createDatabaseMockServer = createDatabaseMockServer;
|