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.
Files changed (148) hide show
  1. package/README.md +2 -0
  2. package/dist/bin/bin.js +3 -6
  3. package/dist/bin/build.js +52 -50
  4. package/dist/bin/cli.js +50 -43
  5. package/dist/bin/helpers/createTemplate.js +29 -21
  6. package/dist/bin/helpers/getMostSpecificPathFromError.js +34 -30
  7. package/dist/bin/helpers/getValidationMessageFromPath.js +11 -8
  8. package/dist/bin/helpers/index.js +21 -79
  9. package/dist/bin/helpers/isOnlyRequestedDataResolvingPropertyExists.js +13 -6
  10. package/dist/bin/helpers/resolveConfigFile.js +22 -19
  11. package/dist/bin/helpers/resolveConfigFilePath.js +19 -12
  12. package/dist/bin/helpers/resolveExportsFromSourceCode.js +13 -10
  13. package/dist/bin/init.js +114 -97
  14. package/dist/bin/run.js +42 -43
  15. package/dist/bin/validateMockServerConfig/baseUrlSchema/baseUrlSchema.js +9 -5
  16. package/dist/bin/validateMockServerConfig/corsSchema/corsSchema.d.ts +2 -2
  17. package/dist/bin/validateMockServerConfig/corsSchema/corsSchema.js +32 -14
  18. package/dist/bin/validateMockServerConfig/databaseConfigSchema/databaseConfigSchema.js +19 -9
  19. package/dist/bin/validateMockServerConfig/graphqlConfigSchema/graphqlConfigSchema.d.ts +82 -72
  20. package/dist/bin/validateMockServerConfig/graphqlConfigSchema/graphqlConfigSchema.js +38 -22
  21. package/dist/bin/validateMockServerConfig/graphqlConfigSchema/routeConfigSchema/routeConfigSchema.d.ts +25 -21
  22. package/dist/bin/validateMockServerConfig/graphqlConfigSchema/routeConfigSchema/routeConfigSchema.js +36 -28
  23. package/dist/bin/validateMockServerConfig/interceptorsSchema/interceptorsSchema.js +12 -8
  24. package/dist/bin/validateMockServerConfig/portSchema/portSchema.js +9 -5
  25. package/dist/bin/validateMockServerConfig/queueSchema/queueSchema.d.ts +2 -2
  26. package/dist/bin/validateMockServerConfig/queueSchema/queueSchema.js +18 -9
  27. package/dist/bin/validateMockServerConfig/restConfigSchema/restConfigSchema.d.ts +270 -240
  28. package/dist/bin/validateMockServerConfig/restConfigSchema/restConfigSchema.js +33 -19
  29. package/dist/bin/validateMockServerConfig/restConfigSchema/routeConfigSchema/routeConfigSchema.d.ts +33 -28
  30. package/dist/bin/validateMockServerConfig/restConfigSchema/routeConfigSchema/routeConfigSchema.js +60 -48
  31. package/dist/bin/validateMockServerConfig/settingsSchema/settingsSchema.js +13 -9
  32. package/dist/bin/validateMockServerConfig/staticPathSchema/staticPathSchema.js +19 -9
  33. package/dist/bin/validateMockServerConfig/utils/checkModeSchema/checkModeSchema.js +27 -9
  34. package/dist/bin/validateMockServerConfig/utils/entitiesSchema/entitiesSchema.d.ts +4 -8
  35. package/dist/bin/validateMockServerConfig/utils/entitiesSchema/entitiesSchema.js +117 -60
  36. package/dist/bin/validateMockServerConfig/utils/index.js +20 -68
  37. package/dist/bin/validateMockServerConfig/utils/jsonSchema/jsonSchema.js +30 -10
  38. package/dist/bin/validateMockServerConfig/utils/plainObjectSchema/plainObjectSchema.js +9 -8
  39. package/dist/bin/validateMockServerConfig/utils/requiredPropertiesSchema/requiredPropertiesSchema.d.ts +1 -1
  40. package/dist/bin/validateMockServerConfig/utils/requiredPropertiesSchema/requiredPropertiesSchema.js +10 -7
  41. package/dist/bin/validateMockServerConfig/utils/sharedSchema/sharedSchema.js +18 -6
  42. package/dist/bin/validateMockServerConfig/validateApiMockServerConfig.js +43 -40
  43. package/dist/bin/validateMockServerConfig/validateMockServerConfig.js +38 -35
  44. package/dist/index.js +15 -13
  45. package/dist/src/core/database/createDatabaseRoutes/createDatabaseRoutes.js +25 -28
  46. package/dist/src/core/database/createDatabaseRoutes/helpers/array/createNewId/createNewId.js +14 -11
  47. package/dist/src/core/database/createDatabaseRoutes/helpers/array/findIndexById/findIndexById.js +8 -5
  48. package/dist/src/core/database/createDatabaseRoutes/helpers/array/index.js +17 -35
  49. package/dist/src/core/database/createDatabaseRoutes/helpers/array/isIndex/isIndex.js +8 -5
  50. package/dist/src/core/database/createDatabaseRoutes/helpers/createNestedDatabaseRoutes/createNestedDatabaseRoutes.js +159 -143
  51. package/dist/src/core/database/createDatabaseRoutes/helpers/createRewrittenDatabaseRoutes/createRewrittenDatabaseRoutes.js +15 -8
  52. package/dist/src/core/database/createDatabaseRoutes/helpers/createShallowDatabaseRoutes/createShallowDatabaseRoutes.js +90 -94
  53. package/dist/src/core/database/createDatabaseRoutes/helpers/filter/filter.js +49 -46
  54. package/dist/src/core/database/createDatabaseRoutes/helpers/index.js +19 -57
  55. package/dist/src/core/database/createDatabaseRoutes/helpers/pagination/pagination.js +32 -31
  56. package/dist/src/core/database/createDatabaseRoutes/helpers/search/search.js +34 -24
  57. package/dist/src/core/database/createDatabaseRoutes/helpers/sort/sort.js +37 -33
  58. package/dist/src/core/database/createDatabaseRoutes/helpers/splitDatabaseByNesting/splitDatabaseByNesting.js +26 -25
  59. package/dist/src/core/database/createDatabaseRoutes/storages/File/FileStorage.js +65 -50
  60. package/dist/src/core/database/createDatabaseRoutes/storages/File/FileWriter.js +55 -48
  61. package/dist/src/core/database/createDatabaseRoutes/storages/Memory/MemoryStorage.js +51 -41
  62. package/dist/src/core/database/createDatabaseRoutes/storages/index.js +16 -24
  63. package/dist/src/core/database/index.js +15 -13
  64. package/dist/src/core/graphql/createGraphQLRoutes/createGraphQLRoutes.js +131 -140
  65. package/dist/src/core/graphql/createGraphQLRoutes/helpers/index.js +15 -13
  66. package/dist/src/core/graphql/createGraphQLRoutes/helpers/prepareGraphQLRequestConfigs/prepareGraphQLRequestConfigs.js +36 -41
  67. package/dist/src/core/graphql/index.js +15 -13
  68. package/dist/src/core/middlewares/cookieParseMiddleware/cookieParseMiddleware.js +16 -13
  69. package/dist/src/core/middlewares/cookieParseMiddleware/helpers/index.js +15 -13
  70. package/dist/src/core/middlewares/cookieParseMiddleware/helpers/parseCookie/parseCookie.js +18 -15
  71. package/dist/src/core/middlewares/corsMiddleware/corsMiddleware.js +50 -47
  72. package/dist/src/core/middlewares/corsMiddleware/helpers/getAllowedOrigins/getAllowedOrigins.js +17 -12
  73. package/dist/src/core/middlewares/corsMiddleware/helpers/index.js +15 -13
  74. package/dist/src/core/middlewares/destroyerMiddleware/destroyerMiddleware.js +23 -20
  75. package/dist/src/core/middlewares/errorMiddleware/errorMiddleware.js +23 -17
  76. package/dist/src/core/middlewares/index.js +23 -91
  77. package/dist/src/core/middlewares/noCorsMiddleware/noCorsMiddleware.js +22 -19
  78. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getGraphqlUrlSuggestions/getGraphqlUrlSuggestions.js +21 -23
  79. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getLevenshteinDistance/getLevenshteinDistance.js +80 -80
  80. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/getRestUrlSuggestions.js +34 -34
  81. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/getActualRestUrlMeaningfulString/getActualRestUrlMeaningfulString.js +8 -5
  82. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/getPatternRestUrlMeaningfulString/getPatternRestUrlMeaningfulString.js +8 -5
  83. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/index.js +16 -24
  84. package/dist/src/core/middlewares/notFoundMiddleware/helpers/index.js +17 -35
  85. package/dist/src/core/middlewares/notFoundMiddleware/notFoundMiddleware.js +58 -60
  86. package/dist/src/core/middlewares/requestInterceptorMiddleware/requestInterceptorMiddleware.js +16 -17
  87. package/dist/src/core/middlewares/staticMiddleware/staticMiddleware.js +32 -25
  88. package/dist/src/core/rest/createRestRoutes/createRestRoutes.js +125 -130
  89. package/dist/src/core/rest/createRestRoutes/helpers/index.js +15 -13
  90. package/dist/src/core/rest/createRestRoutes/helpers/prepareRestRequestConfigs/prepareRestRequestConfigs.js +37 -43
  91. package/dist/src/core/rest/index.js +15 -13
  92. package/dist/src/index.js +16 -24
  93. package/dist/src/server/createDatabaseMockServer/createDatabaseMockServer.js +56 -53
  94. package/dist/src/server/createGraphQLMockServer/createGraphQLMockServer.js +64 -62
  95. package/dist/src/server/createMockServer/createMockServer.js +94 -91
  96. package/dist/src/server/createRestMockServer/createRestMockServer.js +64 -62
  97. package/dist/src/server/index.js +23 -91
  98. package/dist/src/server/startDatabaseMockServer/startDatabaseMockServer.js +25 -19
  99. package/dist/src/server/startGraphQLMockServer/startGraphQLMockServer.js +25 -19
  100. package/dist/src/server/startMockServer/startMockServer.js +25 -19
  101. package/dist/src/server/startRestMockServer/startRestMockServer.js +25 -19
  102. package/dist/src/utils/constants/appPath.js +8 -4
  103. package/dist/src/utils/constants/checkModes.js +74 -11
  104. package/dist/src/utils/constants/default.js +18 -14
  105. package/dist/src/utils/constants/index.js +17 -35
  106. package/dist/src/utils/helpers/asyncHandler.js +8 -5
  107. package/dist/src/utils/helpers/config/index.js +15 -13
  108. package/dist/src/utils/helpers/config/resolveEntityValues/resolveEntityValues.js +103 -110
  109. package/dist/src/utils/helpers/entities/convertToEntityDescriptor/convertToEntityDescriptor.js +12 -9
  110. package/dist/src/utils/helpers/entities/index.js +16 -24
  111. package/dist/src/utils/helpers/entities/isEntityDescriptor/isEntityDescriptor.js +9 -6
  112. package/dist/src/utils/helpers/files/index.js +15 -13
  113. package/dist/src/utils/helpers/files/isFilePathValid/isFilePathValid.js +22 -15
  114. package/dist/src/utils/helpers/graphql/getGraphQLInput/getGraphQLInput.js +25 -29
  115. package/dist/src/utils/helpers/graphql/index.js +17 -35
  116. package/dist/src/utils/helpers/graphql/parseGraphQLRequest/parseGraphQLRequest.js +13 -10
  117. package/dist/src/utils/helpers/graphql/parseQuery/parseQuery.js +23 -19
  118. package/dist/src/utils/helpers/index.js +26 -124
  119. package/dist/src/utils/helpers/interceptors/callRequestInterceptor/callRequestInterceptor.js +21 -21
  120. package/dist/src/utils/helpers/interceptors/callResponseInterceptors/callResponseInterceptors.js +62 -64
  121. package/dist/src/utils/helpers/interceptors/helpers/setDelay.js +10 -7
  122. package/dist/src/utils/helpers/interceptors/index.js +16 -24
  123. package/dist/src/utils/helpers/isPlainObject/isPlainObject.js +8 -5
  124. package/dist/src/utils/helpers/isPrimitive/isPrimitive.js +8 -5
  125. package/dist/src/utils/helpers/isRegExp/isRegExp.js +8 -5
  126. package/dist/src/utils/helpers/sleep.js +9 -6
  127. package/dist/src/utils/helpers/tests/createTmpDir.js +16 -9
  128. package/dist/src/utils/helpers/tests/index.js +15 -13
  129. package/dist/src/utils/helpers/url/convertWin32PathToUnix/convertWin32PathToUnix.js +8 -5
  130. package/dist/src/utils/helpers/url/getUrlParts/getUrlParts.js +9 -6
  131. package/dist/src/utils/helpers/url/index.js +18 -46
  132. package/dist/src/utils/helpers/url/removeLeadingAndTrailingSlashes/removeLeadingAndTrailingSlashes.js +8 -5
  133. package/dist/src/utils/helpers/url/urlJoin/urlJoin.js +18 -11
  134. package/dist/src/utils/types/checkModes.js +4 -1
  135. package/dist/src/utils/types/database.js +4 -1
  136. package/dist/src/utils/types/entities.js +4 -1
  137. package/dist/src/utils/types/graphql.d.ts +1 -1
  138. package/dist/src/utils/types/graphql.js +4 -1
  139. package/dist/src/utils/types/index.js +24 -102
  140. package/dist/src/utils/types/interceptors.js +4 -1
  141. package/dist/src/utils/types/rest.d.ts +1 -1
  142. package/dist/src/utils/types/rest.js +4 -1
  143. package/dist/src/utils/types/server.js +4 -1
  144. package/dist/src/utils/types/utils.js +4 -1
  145. package/dist/src/utils/types/values.js +4 -1
  146. package/package.json +26 -29
  147. package/dist/bin/templates/.eslintrc.js +0 -14
  148. package/dist/bin/templates/tsconfig.json +0 -11
@@ -1,135 +1,130 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports.createRestRoutes = void 0;
7
- var _flat = require("flat");
8
- var _path = _interopRequireDefault(require("path"));
9
- var _helpers = require("../../../utils/helpers");
10
- var _helpers2 = require("./helpers");
11
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
- const createRestRoutes = ({
13
- router,
14
- restConfig,
15
- serverResponseInterceptor
16
- }) => {
17
- (0, _helpers2.prepareRestRequestConfigs)(restConfig.configs).forEach(requestConfig => {
18
- router.route(requestConfig.path)[requestConfig.method]((0, _helpers.asyncHandler)(async (request, response, next) => {
19
- var _requestConfig$interc, _matchedRouteConfig$s, _matchedRouteConfig$e, _matchedRouteConfig$s2, _matchedRouteConfig$i, _requestConfig$interc2, _restConfig$intercept, _matchedRouteConfig$s3;
20
- const requestInterceptor = (_requestConfig$interc = requestConfig.interceptors) === null || _requestConfig$interc === void 0 ? void 0 : _requestConfig$interc.request;
21
- if (requestInterceptor) {
22
- await (0, _helpers.callRequestInterceptor)({
23
- request,
24
- interceptor: requestInterceptor
25
- });
26
- }
27
- const matchedRouteConfig = requestConfig.routes.find(({
28
- entities
29
- }) => {
30
- if (!entities) return true;
31
- const entries = Object.entries(entities);
32
- return entries.every(([entityName, entityDescriptorOrValue]) => {
33
- const {
34
- checkMode,
35
- value: descriptorValue
36
- } = (0, _helpers.convertToEntityDescriptor)(entityDescriptorOrValue);
37
-
38
- // important:
39
- // check whole body as plain value strictly if descriptor used for body
40
- const isEntityBodyByTopLevelDescriptor = entityName === 'body' && (0, _helpers.isEntityDescriptor)(entityDescriptorOrValue);
41
- if (isEntityBodyByTopLevelDescriptor) {
42
- // important:
43
- // bodyParser sets body to empty object if body not sent or invalid, so assume {} as undefined
44
- return (0, _helpers.resolveEntityValues)(checkMode, Object.keys(request.body).length ? request.body : undefined, descriptorValue);
45
- }
46
- const isEntityBodyByTopLevelArray = entityName === 'body' && Array.isArray(entityDescriptorOrValue);
47
- if (isEntityBodyByTopLevelArray) {
48
- return entityDescriptorOrValue.some(entityDescriptorOrValueElement =>
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
- // bodyParser sets body to empty object if body not sent or invalid, so assume {} as undefined
51
- (0, _helpers.resolveEntityValues)(checkMode, Object.keys(request.body).length ? request.body : undefined, entityDescriptorOrValueElement));
52
- }
53
- const recordOrArrayEntries = Object.entries(entityDescriptorOrValue);
54
- return recordOrArrayEntries.every(([entityKey, mappedEntityDescriptor]) => {
55
- const {
56
- checkMode,
57
- value: descriptorValue
58
- } = (0, _helpers.convertToEntityDescriptor)(mappedEntityDescriptor);
59
- const flattenEntity = (0, _flat.flatten)(request[entityName]);
60
- // important: transform header keys to lower case because browsers send headers in lowercase
61
- return (0, _helpers.resolveEntityValues)(checkMode, flattenEntity[entityName === 'headers' ? entityKey.toLowerCase() : entityKey], descriptorValue);
62
- });
63
- });
64
- });
65
- if (!matchedRouteConfig) {
66
- return next();
67
- }
68
- let matchedRouteConfigData = null;
69
- if ((_matchedRouteConfig$s = matchedRouteConfig.settings) !== null && _matchedRouteConfig$s !== void 0 && _matchedRouteConfig$s.polling && 'queue' in matchedRouteConfig) {
70
- var _shallowMatchedRouteC;
71
- if (!matchedRouteConfig.queue.length) return next();
72
- const shallowMatchedRouteConfig = matchedRouteConfig;
73
- let index = (_shallowMatchedRouteC = shallowMatchedRouteConfig.__pollingIndex) !== null && _shallowMatchedRouteC !== void 0 ? _shallowMatchedRouteC : 0;
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
- value: true
3
+ value: true
5
4
  });
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];
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
- value: true
3
+ value: true
5
4
  });
6
- exports.prepareRestRequestConfigs = void 0;
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
- // ✅ 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
- routeConfigWeight += (0, _helpers.isPlainObject)(body) ? Object.keys(body).length : 1;
37
- }
38
- return routeConfigWeight;
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
- requestConfigs.forEach(requestConfig => {
42
- requestConfig.routes.sort((first, second) =>
43
- // important:
44
- // Lift more specific configs for correct working of routes
45
- calculateRouteConfigWeight(second) - calculateRouteConfigWeight(first));
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
- value: true
3
+ value: true
5
4
  });
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];
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
- value: true
3
+ value: true
5
4
  });
6
- var _server = require("./server");
7
- Object.keys(_server).forEach(function (key) {
8
- if (key === "default" || key === "__esModule") return;
9
- if (key in exports && exports[key] === _server[key]) return;
10
- Object.defineProperty(exports, key, {
11
- enumerable: true,
12
- get: function () {
13
- return _server[key];
14
- }
15
- });
16
- });
17
- var _types = require("./utils/types");
18
- Object.keys(_types).forEach(function (key) {
19
- if (key === "default" || key === "__esModule") return;
20
- if (key in exports && exports[key] === _types[key]) return;
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
- value: true
3
+ value: true
5
4
  });
6
- exports.createDatabaseMockServer = void 0;
7
- var _bodyParser = _interopRequireDefault(require("body-parser"));
8
- var _express = _interopRequireDefault(require("express"));
9
- var _database = require("../../core/database");
10
- var _middlewares = require("../../core/middlewares");
11
- var _helpers = require("../../utils/helpers");
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
- const createDatabaseMockServer = (databaseMockServerConfig, server = (0, _express.default)()) => {
14
- var _databaseMockServerCo, _databaseMockServerCo2;
15
- const {
16
- cors,
17
- staticPath,
18
- data,
19
- routes
20
- } = databaseMockServerConfig;
21
- server.set('view engine', 'ejs');
22
- server.set('views', (0, _helpers.urlJoin)(__dirname, '../../static/views'));
23
- server.use(_express.default.static((0, _helpers.urlJoin)(__dirname, '../../static/views')));
24
- server.use(_bodyParser.default.urlencoded({
25
- extended: false
26
- }));
27
- server.use(_bodyParser.default.json({
28
- limit: '10mb'
29
- }));
30
- server.set('json spaces', 2);
31
- server.use(_bodyParser.default.text());
32
- (0, _middlewares.cookieParseMiddleware)(server);
33
- const serverRequestInterceptor = (_databaseMockServerCo = databaseMockServerConfig.interceptors) === null || _databaseMockServerCo === void 0 ? void 0 : _databaseMockServerCo.request;
34
- if (serverRequestInterceptor) {
35
- (0, _middlewares.requestInterceptorMiddleware)({
36
- server,
37
- interceptor: serverRequestInterceptor
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
- const baseUrl = (_databaseMockServerCo2 = databaseMockServerConfig.baseUrl) !== null && _databaseMockServerCo2 !== void 0 ? _databaseMockServerCo2 : '/';
41
- if (cors) {
42
- (0, _middlewares.corsMiddleware)(server, cors);
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;