mock-config-server 3.0.1 → 3.1.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.
Files changed (146) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +614 -502
  3. package/dist/bin/bin.js +8 -3
  4. package/dist/bin/build.js +51 -45
  5. package/dist/bin/cli.js +37 -44
  6. package/dist/bin/helpers/index.js +36 -17
  7. package/dist/bin/helpers/resolveConfigFile.js +20 -17
  8. package/dist/bin/helpers/resolveConfigFilePath.js +12 -35
  9. package/dist/bin/helpers/resolveExportsFromSourceCode.js +11 -8
  10. package/dist/bin/resolveConfigFilePath/resolveConfigFilePath.js +12 -35
  11. package/dist/bin/run.js +17 -12
  12. package/dist/bin/validateMockServerConfig/helpers/index.js +25 -16
  13. package/dist/bin/validateMockServerConfig/helpers/isCheckModeValid/index.js +14 -15
  14. package/dist/bin/validateMockServerConfig/helpers/isCheckModeValid/isCheckModeValid.js +8 -6
  15. package/dist/bin/validateMockServerConfig/helpers/isDescriptorValueValid/index.js +14 -15
  16. package/dist/bin/validateMockServerConfig/helpers/isDescriptorValueValid/isDescriptorValueValid.js +15 -18
  17. package/dist/bin/validateMockServerConfig/validateBaseUrl/validateBaseUrl.js +12 -9
  18. package/dist/bin/validateMockServerConfig/validateCors/validateCors.js +75 -73
  19. package/dist/bin/validateMockServerConfig/validateDatabaseConfig/validateDatabaseConfig.d.ts +1 -0
  20. package/dist/bin/validateMockServerConfig/validateDatabaseConfig/validateDatabaseConfig.js +45 -0
  21. package/dist/bin/validateMockServerConfig/validateGraphqlConfig/validateGraphqlConfig.js +47 -43
  22. package/dist/bin/validateMockServerConfig/validateGraphqlConfig/validateRoutes/validateRoutes.js +90 -83
  23. package/dist/bin/validateMockServerConfig/validateInterceptors/validateInterceptors.js +22 -16
  24. package/dist/bin/validateMockServerConfig/validateMockServerConfig.js +29 -27
  25. package/dist/bin/validateMockServerConfig/validatePort/validatePort.js +9 -6
  26. package/dist/bin/validateMockServerConfig/validateRestConfig/validateRestConfig.js +52 -47
  27. package/dist/bin/validateMockServerConfig/validateRestConfig/validateRoutes/validateRoutes.js +94 -87
  28. package/dist/bin/validateMockServerConfig/validateStaticPath/validateStaticPath.js +43 -34
  29. package/dist/index.js +14 -15
  30. package/dist/src/core/database/createDatabaseRoutes/createDatabaseRoutes.d.ts +3 -0
  31. package/dist/src/core/database/createDatabaseRoutes/createDatabaseRoutes.js +33 -0
  32. package/dist/src/core/database/createDatabaseRoutes/helpers/array/createNewId/createNewId.d.ts +4 -0
  33. package/dist/src/core/database/createDatabaseRoutes/helpers/array/createNewId/createNewId.js +16 -0
  34. package/dist/src/core/database/createDatabaseRoutes/helpers/array/findIndexById/findIndexById.d.ts +4 -0
  35. package/dist/src/core/database/createDatabaseRoutes/helpers/array/findIndexById/findIndexById.js +8 -0
  36. package/dist/src/core/database/createDatabaseRoutes/helpers/array/index.d.ts +3 -0
  37. package/dist/src/core/database/createDatabaseRoutes/helpers/array/index.js +38 -0
  38. package/dist/src/core/database/createDatabaseRoutes/helpers/array/isIndex/isIndex.d.ts +1 -0
  39. package/dist/src/core/database/createDatabaseRoutes/helpers/array/isIndex/isIndex.js +8 -0
  40. package/dist/src/core/database/createDatabaseRoutes/helpers/createNestedDatabaseRoutes/createNestedDatabaseRoutes.d.ts +4 -0
  41. package/dist/src/core/database/createDatabaseRoutes/helpers/createNestedDatabaseRoutes/createNestedDatabaseRoutes.js +88 -0
  42. package/dist/src/core/database/createDatabaseRoutes/helpers/createRewrittenDatabaseRoutes/createRewrittenDatabaseRoutes.d.ts +2 -0
  43. package/dist/src/core/database/createDatabaseRoutes/helpers/createRewrittenDatabaseRoutes/createRewrittenDatabaseRoutes.js +12 -0
  44. package/dist/src/core/database/createDatabaseRoutes/helpers/createShallowDatabaseRoutes/createShallowDatabaseRoutes.d.ts +4 -0
  45. package/dist/src/core/database/createDatabaseRoutes/helpers/createShallowDatabaseRoutes/createShallowDatabaseRoutes.js +38 -0
  46. package/dist/src/core/database/createDatabaseRoutes/helpers/index.d.ts +5 -0
  47. package/dist/src/core/database/createDatabaseRoutes/helpers/index.js +60 -0
  48. package/dist/src/core/database/createDatabaseRoutes/helpers/splitDatabaseByNesting/splitDatabaseByNesting.d.ts +5 -0
  49. package/dist/src/core/database/createDatabaseRoutes/helpers/splitDatabaseByNesting/splitDatabaseByNesting.js +30 -0
  50. package/dist/src/core/database/createDatabaseRoutes/storages/File/FileStorage.d.ts +11 -0
  51. package/dist/src/core/database/createDatabaseRoutes/storages/File/FileStorage.js +64 -0
  52. package/dist/src/core/database/createDatabaseRoutes/storages/File/FileWriter.d.ts +11 -0
  53. package/dist/src/core/database/createDatabaseRoutes/storages/File/FileWriter.js +58 -0
  54. package/dist/src/core/database/createDatabaseRoutes/storages/Memory/MemoryStorage.d.ts +10 -0
  55. package/dist/src/core/database/createDatabaseRoutes/storages/Memory/MemoryStorage.js +54 -0
  56. package/dist/src/core/database/createDatabaseRoutes/storages/index.d.ts +2 -0
  57. package/dist/src/core/database/createDatabaseRoutes/storages/index.js +27 -0
  58. package/dist/src/core/database/index.d.ts +1 -0
  59. package/dist/src/core/database/index.js +16 -0
  60. package/dist/src/core/graphql/createGraphQLRoutes/createGraphQLRoutes.js +96 -83
  61. package/dist/src/core/graphql/createGraphQLRoutes/helpers/index.js +14 -15
  62. package/dist/src/core/graphql/createGraphQLRoutes/helpers/prepareGraphQLRequestConfigs/prepareGraphQLRequestConfigs.js +36 -30
  63. package/dist/src/core/graphql/index.js +14 -15
  64. package/dist/src/core/middlewares/cookieParseMiddleware/cookieParseMiddleware.js +15 -13
  65. package/dist/src/core/middlewares/cookieParseMiddleware/helpers/index.js +14 -15
  66. package/dist/src/core/middlewares/cookieParseMiddleware/helpers/parseCookie/parseCookie.js +16 -14
  67. package/dist/src/core/middlewares/corsMiddleware/corsMiddleware.js +48 -41
  68. package/dist/src/core/middlewares/corsMiddleware/helpers/getAllowedOrigins/getAllowedOrigins.js +13 -10
  69. package/dist/src/core/middlewares/corsMiddleware/helpers/index.js +14 -15
  70. package/dist/src/core/middlewares/destroyerMiddleware/destroyerMiddleware.js +21 -18
  71. package/dist/src/core/middlewares/errorMiddleware/errorMiddleware.js +18 -15
  72. package/dist/src/core/middlewares/index.js +92 -23
  73. package/dist/src/core/middlewares/noCorsMiddleware/noCorsMiddleware.js +21 -21
  74. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getGraphqlUrlSuggestions/getGraphqlUrlSuggestions.js +24 -16
  75. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getLevenshteinDistance/getLevenshteinDistance.js +78 -74
  76. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/getRestUrlSuggestions.js +36 -31
  77. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/getActualRestUrlMeaningfulString/getActualRestUrlMeaningfulString.js +6 -5
  78. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/getPatternRestUrlMeaningfulString/getPatternRestUrlMeaningfulString.js +6 -3
  79. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/index.js +25 -16
  80. package/dist/src/core/middlewares/notFoundMiddleware/helpers/index.js +36 -17
  81. package/dist/src/core/middlewares/notFoundMiddleware/notFoundMiddleware.js +63 -48
  82. package/dist/src/core/middlewares/requestInterceptorMiddleware/requestInterceptorMiddleware.js +13 -7
  83. package/dist/src/core/middlewares/staticMiddleware/staticMiddleware.js +26 -25
  84. package/dist/src/core/rest/createRestRoutes/createRestRoutes.js +71 -56
  85. package/dist/src/core/rest/createRestRoutes/helpers/index.js +14 -15
  86. package/dist/src/core/rest/createRestRoutes/helpers/prepareRestRequestConfigs/prepareRestRequestConfigs.js +38 -32
  87. package/dist/src/core/rest/index.js +14 -15
  88. package/dist/src/index.js +36 -17
  89. package/dist/src/server/createMockServer/createMockServer.js +74 -53
  90. package/dist/src/server/index.js +25 -16
  91. package/dist/src/server/startMockServer/startMockServer.js +20 -17
  92. package/dist/src/static/views/assets/icons/scheme-dark.svg +3 -3
  93. package/dist/src/static/views/assets/icons/scheme-light.svg +3 -3
  94. package/dist/src/static/views/assets/styles/global.css +88 -88
  95. package/dist/src/static/views/components/header/index.css +55 -55
  96. package/dist/src/static/views/components/header/index.ejs +39 -39
  97. package/dist/src/static/views/components/header/index.js +1 -1
  98. package/dist/src/static/views/features/scheme/dark.css +12 -12
  99. package/dist/src/static/views/features/scheme/index.ejs +3 -3
  100. package/dist/src/static/views/features/scheme/index.js +31 -31
  101. package/dist/src/static/views/features/scheme/light.css +12 -12
  102. package/dist/src/static/views/features/tab/index.css +30 -30
  103. package/dist/src/static/views/features/tab/index.ejs +1 -1
  104. package/dist/src/static/views/features/tab/index.js +12 -12
  105. package/dist/src/static/views/pages/404/index.css +10 -10
  106. package/dist/src/static/views/pages/404/index.ejs +84 -84
  107. package/dist/src/utils/constants/appPath.js +6 -2
  108. package/dist/src/utils/constants/checkModes.js +21 -30
  109. package/dist/src/utils/constants/default.js +15 -11
  110. package/dist/src/utils/constants/index.js +36 -17
  111. package/dist/src/utils/helpers/asyncHandler.js +6 -3
  112. package/dist/src/utils/helpers/config/index.js +14 -15
  113. package/dist/src/utils/helpers/config/resolveEntityValues/resolveEntityValues.js +109 -122
  114. package/dist/src/utils/helpers/entities/convertToEntityDescriptor/convertToEntityDescriptor.js +10 -6
  115. package/dist/src/utils/helpers/entities/index.js +25 -16
  116. package/dist/src/utils/helpers/entities/isEntityDescriptor/isEntityDescriptor.js +7 -4
  117. package/dist/src/utils/helpers/graphql/getGraphQLInput/getGraphQLInput.js +28 -18
  118. package/dist/src/utils/helpers/graphql/index.js +36 -17
  119. package/dist/src/utils/helpers/graphql/parseGraphQLRequest/parseGraphQLRequest.js +11 -9
  120. package/dist/src/utils/helpers/graphql/parseQuery/parseQuery.js +20 -17
  121. package/dist/src/utils/helpers/index.js +114 -25
  122. package/dist/src/utils/helpers/interceptors/callRequestInterceptor/callRequestInterceptor.js +22 -16
  123. package/dist/src/utils/helpers/interceptors/callResponseInterceptors/callResponseInterceptors.js +56 -48
  124. package/dist/src/utils/helpers/interceptors/helpers/setDelay.js +8 -5
  125. package/dist/src/utils/helpers/interceptors/index.js +25 -16
  126. package/dist/src/utils/helpers/isPlainObject/isPlainObject.js +6 -6
  127. package/dist/src/utils/helpers/isPrimitive/isPrimitive.js +6 -3
  128. package/dist/src/utils/helpers/isRegExp/isRegExp.js +6 -3
  129. package/dist/src/utils/helpers/sleep.js +7 -4
  130. package/dist/src/utils/helpers/url/convertWin32PathToUnix/convertWin32PathToUnix.js +6 -6
  131. package/dist/src/utils/helpers/url/getUrlParts/getUrlParts.js +7 -4
  132. package/dist/src/utils/helpers/url/index.js +47 -18
  133. package/dist/src/utils/helpers/url/removeLeadingAndTrailingSlashes/removeLeadingAndTrailingSlashes.js +6 -3
  134. package/dist/src/utils/helpers/url/urlJoin/urlJoin.js +11 -10
  135. package/dist/src/utils/types/checkModes.js +1 -2
  136. package/dist/src/utils/types/database.d.ts +6 -0
  137. package/dist/src/utils/types/database.js +1 -0
  138. package/dist/src/utils/types/graphql.js +1 -2
  139. package/dist/src/utils/types/index.d.ts +1 -0
  140. package/dist/src/utils/types/index.js +80 -20
  141. package/dist/src/utils/types/interceptors.js +1 -2
  142. package/dist/src/utils/types/rest.js +1 -2
  143. package/dist/src/utils/types/server.d.ts +5 -0
  144. package/dist/src/utils/types/server.js +1 -2
  145. package/dist/src/utils/types/values.js +1 -2
  146. package/package.json +130 -113
@@ -1,53 +1,68 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.notFoundMiddleware = void 0;
4
- const helpers_1 = require("../../../utils/helpers");
5
- const helpers_2 = require("./helpers");
7
+ var _helpers = require("../../../utils/helpers");
8
+ var _helpers2 = require("./helpers");
6
9
  const notFoundMiddleware = (server, mockServerConfig) => {
7
- const { baseUrl: serverBaseUrl, rest, graphql } = mockServerConfig;
8
- const restRequestConfigs = rest?.configs
9
- .filter(({ path }) => !(path instanceof RegExp))
10
- .map((request) => ({
11
- method: request.method,
12
- path: `${serverBaseUrl ?? ''}${rest?.baseUrl ?? ''}${request.path}`
13
- })) ?? [];
14
- const graphqlRequestConfigs = graphql?.configs
15
- .filter(({ operationName }) => !(operationName instanceof RegExp))
16
- .map((request) => ({
17
- operationType: request.operationType,
18
- operationName: `${serverBaseUrl ?? ''}${graphql?.baseUrl ?? ''} ${request.operationName}`
19
- })) ?? [];
20
- server.use((request, response) => {
21
- const url = new URL(`${request.protocol}://${request.get('host')}${request.originalUrl}`);
22
- let restRequestSuggestions = [];
23
- if (rest) {
24
- restRequestSuggestions = (0, helpers_2.getRestUrlSuggestions)({
25
- url,
26
- requestConfigs: restRequestConfigs
27
- });
28
- }
29
- let graphqlRequestSuggestions = [];
30
- if (graphql && (0, helpers_1.parseGraphQLRequest)(request)) {
31
- graphqlRequestSuggestions = (0, helpers_2.getGraphqlUrlSuggestions)({
32
- url,
33
- requestConfigs: graphqlRequestConfigs
34
- });
35
- }
36
- const isRequestSupportHtml = request.headers.accept?.includes('text/html') || request.headers.accept?.includes('*/*');
37
- if (isRequestSupportHtml) {
38
- response.status(404).render('pages/404', {
39
- restRequestSuggestions,
40
- graphqlRequestSuggestions
41
- });
42
- return;
43
- }
44
- response.status(404).json({
45
- message: 'Request or page not found. Similar requests in data',
46
- data: {
47
- restRequestSuggestions,
48
- graphqlRequestSuggestions
49
- }
50
- });
10
+ var _rest$configs$filter$, _graphql$configs$filt;
11
+ const {
12
+ baseUrl: serverBaseUrl,
13
+ rest,
14
+ graphql
15
+ } = mockServerConfig;
16
+ const restRequestConfigs = (_rest$configs$filter$ = rest === null || rest === void 0 ? void 0 : rest.configs.filter(({
17
+ path
18
+ }) => !(path instanceof RegExp)).map(request => {
19
+ var _rest$baseUrl;
20
+ return {
21
+ method: request.method,
22
+ 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}`
23
+ };
24
+ })) !== null && _rest$configs$filter$ !== void 0 ? _rest$configs$filter$ : [];
25
+ const graphqlRequestConfigs = (_graphql$configs$filt = graphql === null || graphql === void 0 ? void 0 : graphql.configs.filter(({
26
+ operationName
27
+ }) => !(operationName instanceof RegExp)).map(request => {
28
+ var _graphql$baseUrl;
29
+ return {
30
+ operationType: request.operationType,
31
+ 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}`
32
+ };
33
+ })) !== null && _graphql$configs$filt !== void 0 ? _graphql$configs$filt : [];
34
+ server.use((request, response) => {
35
+ var _request$headers$acce, _request$headers$acce2;
36
+ const url = new URL(`${request.protocol}://${request.get('host')}${request.originalUrl}`);
37
+ let restRequestSuggestions = [];
38
+ if (rest) {
39
+ restRequestSuggestions = (0, _helpers2.getRestUrlSuggestions)({
40
+ url,
41
+ requestConfigs: restRequestConfigs
42
+ });
43
+ }
44
+ let graphqlRequestSuggestions = [];
45
+ if (graphql && (0, _helpers.parseGraphQLRequest)(request)) {
46
+ graphqlRequestSuggestions = (0, _helpers2.getGraphqlUrlSuggestions)({
47
+ url,
48
+ requestConfigs: graphqlRequestConfigs
49
+ });
50
+ }
51
+ const isRequestSupportHtml = ((_request$headers$acce = request.headers.accept) === null || _request$headers$acce === void 0 ? void 0 : _request$headers$acce.includes('text/html')) || ((_request$headers$acce2 = request.headers.accept) === null || _request$headers$acce2 === void 0 ? void 0 : _request$headers$acce2.includes('*/*'));
52
+ if (isRequestSupportHtml) {
53
+ response.status(404).render('pages/404', {
54
+ restRequestSuggestions,
55
+ graphqlRequestSuggestions
56
+ });
57
+ return;
58
+ }
59
+ response.status(404).json({
60
+ message: 'Request or page not found. Similar requests in data',
61
+ data: {
62
+ restRequestSuggestions,
63
+ graphqlRequestSuggestions
64
+ }
51
65
  });
66
+ });
52
67
  };
53
- exports.notFoundMiddleware = notFoundMiddleware;
68
+ exports.notFoundMiddleware = notFoundMiddleware;
@@ -1,11 +1,17 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.requestInterceptorMiddleware = void 0;
4
- const helpers_1 = require("../../../utils/helpers");
7
+ var _helpers = require("../../../utils/helpers");
5
8
  const requestInterceptorMiddleware = (server, interceptor) => {
6
- server.use((0, helpers_1.asyncHandler)(async (request, _response, next) => {
7
- await (0, helpers_1.callRequestInterceptor)({ request, interceptor });
8
- return next();
9
- }));
9
+ server.use((0, _helpers.asyncHandler)(async (request, _response, next) => {
10
+ await (0, _helpers.callRequestInterceptor)({
11
+ request,
12
+ interceptor
13
+ });
14
+ return next();
15
+ }));
10
16
  };
11
- exports.requestInterceptorMiddleware = requestInterceptorMiddleware;
17
+ exports.requestInterceptorMiddleware = requestInterceptorMiddleware;
@@ -1,30 +1,31 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
6
  exports.staticMiddleware = void 0;
7
- const express_1 = __importDefault(require("express"));
8
- const constants_1 = require("../../../utils/constants");
9
- const helpers_1 = require("../../../utils/helpers");
7
+ var _express = _interopRequireDefault(require("express"));
8
+ var _constants = require("../../../utils/constants");
9
+ var _helpers = require("../../../utils/helpers");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
11
  const staticMiddleware = (server, baseUrl, staticPath) => {
11
- const isStaticPathArray = Array.isArray(staticPath);
12
- if (isStaticPathArray) {
13
- staticPath.forEach((staticPath) => {
14
- const isPathObject = typeof staticPath === 'object';
15
- if (isPathObject) {
16
- server.use((0, helpers_1.urlJoin)(baseUrl, staticPath.prefix), express_1.default.static((0, helpers_1.urlJoin)(constants_1.APP_PATH, staticPath.path)));
17
- return;
18
- }
19
- server.use(baseUrl, express_1.default.static((0, helpers_1.urlJoin)(constants_1.APP_PATH, staticPath)));
20
- });
21
- return;
22
- }
23
- const isStaticPathObject = typeof staticPath === 'object';
24
- if (isStaticPathObject) {
25
- server.use((0, helpers_1.urlJoin)(baseUrl, staticPath.prefix), express_1.default.static((0, helpers_1.urlJoin)(constants_1.APP_PATH, staticPath.path)));
12
+ const isStaticPathArray = Array.isArray(staticPath);
13
+ if (isStaticPathArray) {
14
+ staticPath.forEach(staticPath => {
15
+ const isPathObject = typeof staticPath === 'object';
16
+ if (isPathObject) {
17
+ server.use((0, _helpers.urlJoin)(baseUrl, staticPath.prefix), _express.default.static((0, _helpers.urlJoin)(_constants.APP_PATH, staticPath.path)));
26
18
  return;
27
- }
28
- server.use(baseUrl, express_1.default.static((0, helpers_1.urlJoin)(constants_1.APP_PATH, staticPath)));
19
+ }
20
+ server.use(baseUrl, _express.default.static((0, _helpers.urlJoin)(_constants.APP_PATH, staticPath)));
21
+ });
22
+ return;
23
+ }
24
+ const isStaticPathObject = typeof staticPath === 'object';
25
+ if (isStaticPathObject) {
26
+ server.use((0, _helpers.urlJoin)(baseUrl, staticPath.prefix), _express.default.static((0, _helpers.urlJoin)(_constants.APP_PATH, staticPath.path)));
27
+ return;
28
+ }
29
+ server.use(baseUrl, _express.default.static((0, _helpers.urlJoin)(_constants.APP_PATH, staticPath)));
29
30
  };
30
- exports.staticMiddleware = staticMiddleware;
31
+ exports.staticMiddleware = staticMiddleware;
@@ -1,60 +1,75 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.createRestRoutes = void 0;
4
- const flat_1 = require("flat");
5
- const helpers_1 = require("../../../utils/helpers");
6
- const helpers_2 = require("./helpers");
7
+ var _flat = require("flat");
8
+ var _helpers = require("../../../utils/helpers");
9
+ var _helpers2 = require("./helpers");
7
10
  const createRestRoutes = (router, restConfig, serverResponseInterceptors) => {
8
- (0, helpers_2.prepareRestRequestConfigs)(restConfig.configs).forEach((requestConfig) => {
9
- router.route(requestConfig.path)[requestConfig.method]((0, helpers_1.asyncHandler)(async (request, response, next) => {
10
- const requestInterceptor = requestConfig.interceptors?.request;
11
- if (requestInterceptor) {
12
- await (0, helpers_1.callRequestInterceptor)({ request, interceptor: requestInterceptor });
13
- }
14
- const matchedRouteConfig = requestConfig.routes.find(({ entities }) => {
15
- if (!entities)
16
- return true;
17
- const entries = Object.entries(entities);
18
- return entries.every(([entityName, valueOrDescriptor]) => {
19
- const { checkMode, value: descriptorValue } = (0, helpers_1.convertToEntityDescriptor)(valueOrDescriptor);
20
- // important: check whole body as plain value strictly if descriptor used for body
21
- const isBodyPlain = entityName === 'body' && (0, helpers_1.isEntityDescriptor)(valueOrDescriptor);
22
- if (isBodyPlain) {
23
- // ✅ important: bodyParser sets body to empty object if body not sent or invalid, so count {} as undefined
24
- return (0, helpers_1.resolveEntityValues)(checkMode, Object.keys(request.body).length ? request.body : undefined, descriptorValue);
25
- }
26
- const mappedEntityDescriptors = Object.entries(valueOrDescriptor);
27
- return mappedEntityDescriptors.every(([entityKey, mappedEntityDescriptor]) => {
28
- const { checkMode, value: descriptorValue } = (0, helpers_1.convertToEntityDescriptor)(mappedEntityDescriptor);
29
- const flattenEntity = (0, flat_1.flatten)(request[entityName]);
30
- return (0, helpers_1.resolveEntityValues)(checkMode, flattenEntity[entityKey], descriptorValue);
31
- });
32
- });
33
- });
34
- if (!matchedRouteConfig) {
35
- return next();
36
- }
37
- const matchedRouteConfigData = typeof matchedRouteConfig.data === 'function'
38
- ? await matchedRouteConfig.data(request, matchedRouteConfig.entities ?? {})
39
- : matchedRouteConfig.data;
40
- const data = await (0, helpers_1.callResponseInterceptors)({
41
- data: matchedRouteConfigData,
42
- request,
43
- response,
44
- interceptors: {
45
- routeInterceptor: matchedRouteConfig.interceptors?.response,
46
- requestInterceptor: requestConfig.interceptors?.response,
47
- apiInterceptor: restConfig.interceptors?.response,
48
- serverInterceptor: serverResponseInterceptors
49
- }
50
- });
51
- // important:
52
- // set 'Cache-Control' header for explicit browsers response revalidate
53
- // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control
54
- response.set('Cache-control', 'max-age=0, must-revalidate');
55
- return response.status(response.statusCode).json(data);
56
- }));
57
- });
58
- return router;
11
+ (0, _helpers2.prepareRestRequestConfigs)(restConfig.configs).forEach(requestConfig => {
12
+ router.route(requestConfig.path)[requestConfig.method]((0, _helpers.asyncHandler)(async (request, response, next) => {
13
+ var _requestConfig$interc, _matchedRouteConfig$e, _matchedRouteConfig$i, _requestConfig$interc2, _restConfig$intercept;
14
+ const requestInterceptor = (_requestConfig$interc = requestConfig.interceptors) === null || _requestConfig$interc === void 0 ? void 0 : _requestConfig$interc.request;
15
+ if (requestInterceptor) {
16
+ await (0, _helpers.callRequestInterceptor)({
17
+ request,
18
+ interceptor: requestInterceptor
19
+ });
20
+ }
21
+ const matchedRouteConfig = requestConfig.routes.find(({
22
+ entities
23
+ }) => {
24
+ if (!entities) return true;
25
+ const entries = Object.entries(entities);
26
+ return entries.every(([entityName, valueOrDescriptor]) => {
27
+ const {
28
+ checkMode,
29
+ value: descriptorValue
30
+ } = (0, _helpers.convertToEntityDescriptor)(valueOrDescriptor);
31
+
32
+ // important: check whole body as plain value strictly if descriptor used for body
33
+ const isBodyPlain = entityName === 'body' && (0, _helpers.isEntityDescriptor)(valueOrDescriptor);
34
+ if (isBodyPlain) {
35
+ // ✅ important: bodyParser sets body to empty object if body not sent or invalid, so count {} as undefined
36
+ return (0, _helpers.resolveEntityValues)(checkMode, Object.keys(request.body).length ? request.body : undefined, descriptorValue);
37
+ }
38
+ const mappedEntityDescriptors = Object.entries(valueOrDescriptor);
39
+ return mappedEntityDescriptors.every(([entityKey, mappedEntityDescriptor]) => {
40
+ const {
41
+ checkMode,
42
+ value: descriptorValue
43
+ } = (0, _helpers.convertToEntityDescriptor)(mappedEntityDescriptor);
44
+ const flattenEntity = (0, _flat.flatten)(request[entityName]);
45
+ // ✅ important: transform header keys to lower case because browsers send headers in lowercase
46
+ return (0, _helpers.resolveEntityValues)(checkMode, flattenEntity[entityName === 'headers' ? entityKey.toLowerCase() : entityKey], descriptorValue);
47
+ });
48
+ });
49
+ });
50
+ if (!matchedRouteConfig) {
51
+ return next();
52
+ }
53
+ const matchedRouteConfigData = typeof matchedRouteConfig.data === 'function' ? await matchedRouteConfig.data(request, (_matchedRouteConfig$e = matchedRouteConfig.entities) !== null && _matchedRouteConfig$e !== void 0 ? _matchedRouteConfig$e : {}) : matchedRouteConfig.data;
54
+ const data = await (0, _helpers.callResponseInterceptors)({
55
+ data: matchedRouteConfigData,
56
+ request,
57
+ response,
58
+ interceptors: {
59
+ routeInterceptor: (_matchedRouteConfig$i = matchedRouteConfig.interceptors) === null || _matchedRouteConfig$i === void 0 ? void 0 : _matchedRouteConfig$i.response,
60
+ requestInterceptor: (_requestConfig$interc2 = requestConfig.interceptors) === null || _requestConfig$interc2 === void 0 ? void 0 : _requestConfig$interc2.response,
61
+ apiInterceptor: (_restConfig$intercept = restConfig.interceptors) === null || _restConfig$intercept === void 0 ? void 0 : _restConfig$intercept.response,
62
+ serverInterceptor: serverResponseInterceptors
63
+ }
64
+ });
65
+
66
+ // ✅ important:
67
+ // set 'Cache-Control' header for explicit browsers response revalidate
68
+ // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control
69
+ response.set('Cache-control', 'max-age=0, must-revalidate');
70
+ return response.status(response.statusCode).json(data);
71
+ }));
72
+ });
73
+ return router;
59
74
  };
60
- exports.createRestRoutes = createRestRoutes;
75
+ exports.createRestRoutes = createRestRoutes;
@@ -1,17 +1,16 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _prepareRestRequestConfigs = require("./prepareRestRequestConfigs/prepareRestRequestConfigs");
7
+ Object.keys(_prepareRestRequestConfigs).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _prepareRestRequestConfigs[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _prepareRestRequestConfigs[key];
7
14
  }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./prepareRestRequestConfigs/prepareRestRequestConfigs"), exports);
15
+ });
16
+ });
@@ -1,37 +1,43 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.prepareRestRequestConfigs = void 0;
4
- const helpers_1 = require("../../../../../utils/helpers");
5
- const calculateRouteConfigWeight = (restRouteConfig) => {
6
- const { entities } = restRouteConfig;
7
- if (!entities)
8
- return 0;
9
- let routeConfigWeight = 0;
10
- const { headers, cookies, query, params, body } = entities;
11
- if (headers)
12
- routeConfigWeight += Object.keys(headers).length;
13
- if (cookies)
14
- routeConfigWeight += Object.keys(cookies).length;
15
- if (query)
16
- routeConfigWeight += Object.keys(query).length;
17
- if (params)
18
- routeConfigWeight += Object.keys(params).length;
19
- if (body) {
20
- if ((0, helpers_1.isPlainObject)(body) && body.checkMode) {
21
- routeConfigWeight += (0, helpers_1.isPlainObject)(body.value) ? Object.keys(body.value).length : 1;
22
- return routeConfigWeight;
23
- }
24
- routeConfigWeight += (0, helpers_1.isPlainObject)(body) ? Object.keys(body).length : 1;
7
+ var _helpers = require("../../../../../utils/helpers");
8
+ const calculateRouteConfigWeight = restRouteConfig => {
9
+ const {
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
+ routeConfigWeight += (0, _helpers.isPlainObject)(body.value) ? Object.keys(body.value).length : 1;
28
+ return routeConfigWeight;
25
29
  }
26
- return routeConfigWeight;
30
+ routeConfigWeight += (0, _helpers.isPlainObject)(body) ? Object.keys(body).length : 1;
31
+ }
32
+ return routeConfigWeight;
27
33
  };
28
- const prepareRestRequestConfigs = (requestConfigs) => {
29
- requestConfigs.forEach((requestConfig) => {
30
- requestConfig.routes.sort((first, second) =>
31
- // ✅ important:
32
- // Lift more specific configs for correct working of routes
33
- calculateRouteConfigWeight(second) - calculateRouteConfigWeight(first));
34
- });
35
- return requestConfigs;
34
+ const prepareRestRequestConfigs = requestConfigs => {
35
+ requestConfigs.forEach(requestConfig => {
36
+ requestConfig.routes.sort((first, second) =>
37
+ // ✅ important:
38
+ // Lift more specific configs for correct working of routes
39
+ calculateRouteConfigWeight(second) - calculateRouteConfigWeight(first));
40
+ });
41
+ return requestConfigs;
36
42
  };
37
- exports.prepareRestRequestConfigs = prepareRestRequestConfigs;
43
+ exports.prepareRestRequestConfigs = prepareRestRequestConfigs;
@@ -1,17 +1,16 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _createRestRoutes = require("./createRestRoutes/createRestRoutes");
7
+ Object.keys(_createRestRoutes).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _createRestRoutes[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _createRestRoutes[key];
7
14
  }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./createRestRoutes/createRestRoutes"), exports);
15
+ });
16
+ });
package/dist/src/index.js CHANGED
@@ -1,19 +1,38 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _createMockServer = require("./server/createMockServer/createMockServer");
7
+ Object.keys(_createMockServer).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _createMockServer[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _createMockServer[key];
7
14
  }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./server/createMockServer/createMockServer"), exports);
18
- __exportStar(require("./server/startMockServer/startMockServer"), exports);
19
- __exportStar(require("./utils/types"), exports);
15
+ });
16
+ });
17
+ var _startMockServer = require("./server/startMockServer/startMockServer");
18
+ Object.keys(_startMockServer).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _startMockServer[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _startMockServer[key];
25
+ }
26
+ });
27
+ });
28
+ var _types = require("./utils/types");
29
+ Object.keys(_types).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _types[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _types[key];
36
+ }
37
+ });
38
+ });