mock-config-server 3.0.1 → 3.1.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 (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/src/core/database/createDatabaseRoutes/createDatabaseRoutes.d.ts +3 -0
  30. package/dist/src/core/database/createDatabaseRoutes/createDatabaseRoutes.js +33 -0
  31. package/dist/src/core/database/createDatabaseRoutes/helpers/array/createNewId/createNewId.d.ts +4 -0
  32. package/dist/src/core/database/createDatabaseRoutes/helpers/array/createNewId/createNewId.js +16 -0
  33. package/dist/src/core/database/createDatabaseRoutes/helpers/array/findIndexById/findIndexById.d.ts +4 -0
  34. package/dist/src/core/database/createDatabaseRoutes/helpers/array/findIndexById/findIndexById.js +8 -0
  35. package/dist/src/core/database/createDatabaseRoutes/helpers/array/index.d.ts +3 -0
  36. package/dist/src/core/database/createDatabaseRoutes/helpers/array/index.js +38 -0
  37. package/dist/src/core/database/createDatabaseRoutes/helpers/array/isIndex/isIndex.d.ts +1 -0
  38. package/dist/src/core/database/createDatabaseRoutes/helpers/array/isIndex/isIndex.js +8 -0
  39. package/dist/src/core/database/createDatabaseRoutes/helpers/createNestedDatabaseRoutes/createNestedDatabaseRoutes.d.ts +4 -0
  40. package/dist/src/core/database/createDatabaseRoutes/helpers/createNestedDatabaseRoutes/createNestedDatabaseRoutes.js +88 -0
  41. package/dist/src/core/database/createDatabaseRoutes/helpers/createRewrittenDatabaseRoutes/createRewrittenDatabaseRoutes.d.ts +2 -0
  42. package/dist/src/core/database/createDatabaseRoutes/helpers/createRewrittenDatabaseRoutes/createRewrittenDatabaseRoutes.js +12 -0
  43. package/dist/src/core/database/createDatabaseRoutes/helpers/createShallowDatabaseRoutes/createShallowDatabaseRoutes.d.ts +4 -0
  44. package/dist/src/core/database/createDatabaseRoutes/helpers/createShallowDatabaseRoutes/createShallowDatabaseRoutes.js +38 -0
  45. package/dist/src/core/database/createDatabaseRoutes/helpers/index.d.ts +5 -0
  46. package/dist/src/core/database/createDatabaseRoutes/helpers/index.js +60 -0
  47. package/dist/src/core/database/createDatabaseRoutes/helpers/splitDatabaseByNesting/splitDatabaseByNesting.d.ts +5 -0
  48. package/dist/src/core/database/createDatabaseRoutes/helpers/splitDatabaseByNesting/splitDatabaseByNesting.js +30 -0
  49. package/dist/src/core/database/createDatabaseRoutes/storages/File/FileStorage.d.ts +11 -0
  50. package/dist/src/core/database/createDatabaseRoutes/storages/File/FileStorage.js +64 -0
  51. package/dist/src/core/database/createDatabaseRoutes/storages/File/FileWriter.d.ts +11 -0
  52. package/dist/src/core/database/createDatabaseRoutes/storages/File/FileWriter.js +58 -0
  53. package/dist/src/core/database/createDatabaseRoutes/storages/Memory/MemoryStorage.d.ts +10 -0
  54. package/dist/src/core/database/createDatabaseRoutes/storages/Memory/MemoryStorage.js +54 -0
  55. package/dist/src/core/database/createDatabaseRoutes/storages/index.d.ts +2 -0
  56. package/dist/src/core/database/createDatabaseRoutes/storages/index.js +27 -0
  57. package/dist/src/core/database/index.d.ts +1 -0
  58. package/dist/src/core/database/index.js +16 -0
  59. package/dist/src/core/graphql/createGraphQLRoutes/createGraphQLRoutes.js +96 -83
  60. package/dist/src/core/graphql/createGraphQLRoutes/helpers/index.js +14 -15
  61. package/dist/src/core/graphql/createGraphQLRoutes/helpers/prepareGraphQLRequestConfigs/prepareGraphQLRequestConfigs.js +36 -30
  62. package/dist/src/core/graphql/index.js +14 -15
  63. package/dist/src/core/middlewares/cookieParseMiddleware/cookieParseMiddleware.js +15 -13
  64. package/dist/src/core/middlewares/cookieParseMiddleware/helpers/index.js +14 -15
  65. package/dist/src/core/middlewares/cookieParseMiddleware/helpers/parseCookie/parseCookie.js +16 -14
  66. package/dist/src/core/middlewares/corsMiddleware/corsMiddleware.js +48 -41
  67. package/dist/src/core/middlewares/corsMiddleware/helpers/getAllowedOrigins/getAllowedOrigins.js +13 -10
  68. package/dist/src/core/middlewares/corsMiddleware/helpers/index.js +14 -15
  69. package/dist/src/core/middlewares/destroyerMiddleware/destroyerMiddleware.js +21 -18
  70. package/dist/src/core/middlewares/errorMiddleware/errorMiddleware.js +18 -15
  71. package/dist/src/core/middlewares/index.js +92 -23
  72. package/dist/src/core/middlewares/noCorsMiddleware/noCorsMiddleware.js +21 -21
  73. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getGraphqlUrlSuggestions/getGraphqlUrlSuggestions.js +24 -16
  74. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getLevenshteinDistance/getLevenshteinDistance.js +78 -74
  75. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/getRestUrlSuggestions.js +36 -31
  76. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/getActualRestUrlMeaningfulString/getActualRestUrlMeaningfulString.js +6 -5
  77. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/getPatternRestUrlMeaningfulString/getPatternRestUrlMeaningfulString.js +6 -3
  78. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/index.js +25 -16
  79. package/dist/src/core/middlewares/notFoundMiddleware/helpers/index.js +36 -17
  80. package/dist/src/core/middlewares/notFoundMiddleware/notFoundMiddleware.js +63 -48
  81. package/dist/src/core/middlewares/requestInterceptorMiddleware/requestInterceptorMiddleware.js +13 -7
  82. package/dist/src/core/middlewares/staticMiddleware/staticMiddleware.js +26 -25
  83. package/dist/src/core/rest/createRestRoutes/createRestRoutes.js +71 -56
  84. package/dist/src/core/rest/createRestRoutes/helpers/index.js +14 -15
  85. package/dist/src/core/rest/createRestRoutes/helpers/prepareRestRequestConfigs/prepareRestRequestConfigs.js +38 -32
  86. package/dist/src/core/rest/index.js +14 -15
  87. package/dist/src/index.js +36 -17
  88. package/dist/src/server/createMockServer/createMockServer.js +74 -53
  89. package/dist/src/server/index.js +25 -16
  90. package/dist/src/server/startMockServer/startMockServer.js +20 -17
  91. package/dist/src/static/views/assets/icons/scheme-dark.svg +3 -3
  92. package/dist/src/static/views/assets/icons/scheme-light.svg +3 -3
  93. package/dist/src/static/views/assets/styles/global.css +88 -88
  94. package/dist/src/static/views/components/header/index.css +55 -55
  95. package/dist/src/static/views/components/header/index.ejs +39 -39
  96. package/dist/src/static/views/components/header/index.js +1 -1
  97. package/dist/src/static/views/features/scheme/dark.css +12 -12
  98. package/dist/src/static/views/features/scheme/index.ejs +3 -3
  99. package/dist/src/static/views/features/scheme/index.js +31 -31
  100. package/dist/src/static/views/features/scheme/light.css +12 -12
  101. package/dist/src/static/views/features/tab/index.css +30 -30
  102. package/dist/src/static/views/features/tab/index.ejs +1 -1
  103. package/dist/src/static/views/features/tab/index.js +12 -12
  104. package/dist/src/static/views/pages/404/index.css +10 -10
  105. package/dist/src/static/views/pages/404/index.ejs +84 -84
  106. package/dist/src/utils/constants/appPath.js +6 -2
  107. package/dist/src/utils/constants/checkModes.js +21 -30
  108. package/dist/src/utils/constants/default.js +15 -11
  109. package/dist/src/utils/constants/index.js +36 -17
  110. package/dist/src/utils/helpers/asyncHandler.js +6 -3
  111. package/dist/src/utils/helpers/config/index.js +14 -15
  112. package/dist/src/utils/helpers/config/resolveEntityValues/resolveEntityValues.js +109 -122
  113. package/dist/src/utils/helpers/entities/convertToEntityDescriptor/convertToEntityDescriptor.js +10 -6
  114. package/dist/src/utils/helpers/entities/index.js +25 -16
  115. package/dist/src/utils/helpers/entities/isEntityDescriptor/isEntityDescriptor.js +7 -4
  116. package/dist/src/utils/helpers/graphql/getGraphQLInput/getGraphQLInput.js +28 -18
  117. package/dist/src/utils/helpers/graphql/index.js +36 -17
  118. package/dist/src/utils/helpers/graphql/parseGraphQLRequest/parseGraphQLRequest.js +11 -9
  119. package/dist/src/utils/helpers/graphql/parseQuery/parseQuery.js +20 -17
  120. package/dist/src/utils/helpers/index.js +114 -25
  121. package/dist/src/utils/helpers/interceptors/callRequestInterceptor/callRequestInterceptor.js +22 -16
  122. package/dist/src/utils/helpers/interceptors/callResponseInterceptors/callResponseInterceptors.js +56 -48
  123. package/dist/src/utils/helpers/interceptors/helpers/setDelay.js +8 -5
  124. package/dist/src/utils/helpers/interceptors/index.js +25 -16
  125. package/dist/src/utils/helpers/isPlainObject/isPlainObject.js +6 -6
  126. package/dist/src/utils/helpers/isPrimitive/isPrimitive.js +6 -3
  127. package/dist/src/utils/helpers/isRegExp/isRegExp.js +6 -3
  128. package/dist/src/utils/helpers/sleep.js +7 -4
  129. package/dist/src/utils/helpers/url/convertWin32PathToUnix/convertWin32PathToUnix.js +6 -6
  130. package/dist/src/utils/helpers/url/getUrlParts/getUrlParts.js +7 -4
  131. package/dist/src/utils/helpers/url/index.js +47 -18
  132. package/dist/src/utils/helpers/url/removeLeadingAndTrailingSlashes/removeLeadingAndTrailingSlashes.js +6 -3
  133. package/dist/src/utils/helpers/url/urlJoin/urlJoin.js +11 -10
  134. package/dist/src/utils/types/checkModes.js +1 -2
  135. package/dist/src/utils/types/database.d.ts +6 -0
  136. package/dist/src/utils/types/database.js +1 -0
  137. package/dist/src/utils/types/graphql.js +1 -2
  138. package/dist/src/utils/types/index.d.ts +1 -0
  139. package/dist/src/utils/types/index.js +80 -20
  140. package/dist/src/utils/types/interceptors.js +1 -2
  141. package/dist/src/utils/types/rest.js +1 -2
  142. package/dist/src/utils/types/server.d.ts +5 -0
  143. package/dist/src/utils/types/server.js +1 -2
  144. package/dist/src/utils/types/values.js +1 -2
  145. package/package.json +130 -113
  146. package/dist/index.js +0 -17
@@ -1,19 +1,27 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.getGraphqlUrlSuggestions = void 0;
4
- const getLevenshteinDistance_1 = require("../getLevenshteinDistance/getLevenshteinDistance");
5
- const getGraphqlUrlSuggestions = ({ url, requestConfigs }) => {
6
- // ✅ important: operationName is always second word in 'query' query param
7
- const actualOperationName = url.searchParams.get('query')?.split(' ')[1];
8
- const actualUrlMeaningful = `${url.pathname}/${actualOperationName}`;
9
- const graphqlUrlSuggestions = requestConfigs.reduce((acc, requestConfig) => {
10
- const { operationName } = requestConfig;
11
- const distance = (0, getLevenshteinDistance_1.getLevenshteinDistance)(actualUrlMeaningful, operationName);
12
- const tolerance = Math.floor(operationName.length / 2);
13
- if (distance <= tolerance)
14
- acc.push(requestConfig);
15
- return acc;
16
- }, []);
17
- return graphqlUrlSuggestions;
7
+ var _getLevenshteinDistance = require("../getLevenshteinDistance/getLevenshteinDistance");
8
+ const getGraphqlUrlSuggestions = ({
9
+ url,
10
+ requestConfigs
11
+ }) => {
12
+ var _url$searchParams$get;
13
+ // important: operationName is always second word in 'query' query param
14
+ const actualOperationName = (_url$searchParams$get = url.searchParams.get('query')) === null || _url$searchParams$get === void 0 ? void 0 : _url$searchParams$get.split(' ')[1];
15
+ const actualUrlMeaningful = `${url.pathname}/${actualOperationName}`;
16
+ const graphqlUrlSuggestions = requestConfigs.reduce((acc, requestConfig) => {
17
+ const {
18
+ operationName
19
+ } = requestConfig;
20
+ const distance = (0, _getLevenshteinDistance.getLevenshteinDistance)(actualUrlMeaningful, operationName);
21
+ const tolerance = Math.floor(operationName.length / 2);
22
+ if (distance <= tolerance) acc.push(requestConfig);
23
+ return acc;
24
+ }, []);
25
+ return graphqlUrlSuggestions;
18
26
  };
19
- exports.getGraphqlUrlSuggestions = getGraphqlUrlSuggestions;
27
+ exports.getGraphqlUrlSuggestions = getGraphqlUrlSuggestions;
@@ -1,80 +1,84 @@
1
1
  "use strict";
2
- /* eslint-disable */
3
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
4
6
  exports.getLevenshteinDistance = void 0;
5
- const min = (d0, d1, d2, bx, ay) => d0 < d1 || d2 < d1 ? (d0 > d2 ? d2 + 1 : d0 + 1) : bx === ay ? d1 : d1 + 1;
7
+ /* eslint-disable */
8
+
9
+ const min = (d0, d1, d2, bx, ay) => d0 < d1 || d2 < d1 ? d0 > d2 ? d2 + 1 : d0 + 1 : bx === ay ? d1 : d1 + 1;
6
10
  const getLevenshteinDistance = (a, b) => {
7
- if (a === b) {
8
- return 0;
9
- }
10
- if (a.length > b.length) {
11
- const tmp = a;
12
- a = b;
13
- b = tmp;
14
- }
15
- let la = a.length;
16
- let lb = b.length;
17
- while (la > 0 && a.charCodeAt(la - 1) === b.charCodeAt(lb - 1)) {
18
- la--;
19
- lb--;
20
- }
21
- let offset = 0;
22
- while (offset < la && a.charCodeAt(offset) === b.charCodeAt(offset)) {
23
- offset++;
24
- }
25
- la -= offset;
26
- lb -= offset;
27
- if (la === 0 || lb < 3) {
28
- return lb;
29
- }
30
- let x = 0;
31
- let y;
32
- let d0;
33
- let d1;
34
- let d2;
35
- let d3;
36
- let dd = 0;
37
- let dy;
38
- let ay;
39
- let bx0;
40
- let bx1;
41
- let bx2;
42
- let bx3;
43
- const vector = [];
44
- for (y = 0; y < la; y++) {
45
- vector.push(y + 1);
46
- vector.push(a.charCodeAt(offset + y));
47
- }
48
- const len = vector.length - 1;
49
- for (; x < lb - 3;) {
50
- bx0 = b.charCodeAt(offset + (d0 = x));
51
- bx1 = b.charCodeAt(offset + (d1 = x + 1));
52
- bx2 = b.charCodeAt(offset + (d2 = x + 2));
53
- bx3 = b.charCodeAt(offset + (d3 = x + 3));
54
- dd = x += 4;
55
- for (y = 0; y < len; y += 2) {
56
- dy = vector[y];
57
- ay = vector[y + 1];
58
- d0 = min(dy, d0, d1, bx0, ay);
59
- d1 = min(d0, d1, d2, bx1, ay);
60
- d2 = min(d1, d2, d3, bx2, ay);
61
- dd = min(d2, d3, dd, bx3, ay);
62
- vector[y] = dd;
63
- d3 = d2;
64
- d2 = d1;
65
- d1 = d0;
66
- d0 = dy;
67
- }
11
+ if (a === b) {
12
+ return 0;
13
+ }
14
+ if (a.length > b.length) {
15
+ const tmp = a;
16
+ a = b;
17
+ b = tmp;
18
+ }
19
+ let la = a.length;
20
+ let lb = b.length;
21
+ while (la > 0 && a.charCodeAt(la - 1) === b.charCodeAt(lb - 1)) {
22
+ la--;
23
+ lb--;
24
+ }
25
+ let offset = 0;
26
+ while (offset < la && a.charCodeAt(offset) === b.charCodeAt(offset)) {
27
+ offset++;
28
+ }
29
+ la -= offset;
30
+ lb -= offset;
31
+ if (la === 0 || lb < 3) {
32
+ return lb;
33
+ }
34
+ let x = 0;
35
+ let y;
36
+ let d0;
37
+ let d1;
38
+ let d2;
39
+ let d3;
40
+ let dd = 0;
41
+ let dy;
42
+ let ay;
43
+ let bx0;
44
+ let bx1;
45
+ let bx2;
46
+ let bx3;
47
+ const vector = [];
48
+ for (y = 0; y < la; y++) {
49
+ vector.push(y + 1);
50
+ vector.push(a.charCodeAt(offset + y));
51
+ }
52
+ const len = vector.length - 1;
53
+ for (; x < lb - 3;) {
54
+ bx0 = b.charCodeAt(offset + (d0 = x));
55
+ bx1 = b.charCodeAt(offset + (d1 = x + 1));
56
+ bx2 = b.charCodeAt(offset + (d2 = x + 2));
57
+ bx3 = b.charCodeAt(offset + (d3 = x + 3));
58
+ dd = x += 4;
59
+ for (y = 0; y < len; y += 2) {
60
+ dy = vector[y];
61
+ ay = vector[y + 1];
62
+ d0 = min(dy, d0, d1, bx0, ay);
63
+ d1 = min(d0, d1, d2, bx1, ay);
64
+ d2 = min(d1, d2, d3, bx2, ay);
65
+ dd = min(d2, d3, dd, bx3, ay);
66
+ vector[y] = dd;
67
+ d3 = d2;
68
+ d2 = d1;
69
+ d1 = d0;
70
+ d0 = dy;
68
71
  }
69
- for (; x < lb;) {
70
- bx0 = b.charCodeAt(offset + (d0 = x));
71
- dd = ++x;
72
- for (y = 0; y < len; y += 2) {
73
- dy = vector[y];
74
- vector[y] = dd = min(dy, d0, dd, bx0, vector[y + 1]);
75
- d0 = dy;
76
- }
72
+ }
73
+ for (; x < lb;) {
74
+ bx0 = b.charCodeAt(offset + (d0 = x));
75
+ dd = ++x;
76
+ for (y = 0; y < len; y += 2) {
77
+ dy = vector[y];
78
+ vector[y] = dd = min(dy, d0, dd, bx0, vector[y + 1]);
79
+ d0 = dy;
77
80
  }
78
- return dd;
81
+ }
82
+ return dd;
79
83
  };
80
- exports.getLevenshteinDistance = getLevenshteinDistance;
84
+ exports.getLevenshteinDistance = getLevenshteinDistance;
@@ -1,34 +1,39 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.getRestUrlSuggestions = void 0;
4
- const helpers_1 = require("../../../../../utils/helpers");
5
- const getLevenshteinDistance_1 = require("../getLevenshteinDistance/getLevenshteinDistance");
6
- const helpers_2 = require("./helpers");
7
- const getRestUrlSuggestions = ({ url, requestConfigs }) => {
8
- const actualUrlParts = (0, helpers_1.getUrlParts)(url.pathname);
9
- const restUrlSuggestions = requestConfigs.reduce((acc, requestConfig) => {
10
- const patternUrlParts = (0, helpers_1.getUrlParts)(requestConfig.path);
11
- // important: ignore patterns with different amount of parts
12
- if (patternUrlParts.length !== actualUrlParts.length)
13
- return acc;
14
- const actualUrlMeaningfulString = (0, helpers_2.getActualRestUrlMeaningfulString)(actualUrlParts, patternUrlParts);
15
- const patternUrlMeaningfulString = (0, helpers_2.getPatternRestUrlMeaningfulString)(patternUrlParts);
16
- const tolerance = Math.floor(patternUrlMeaningfulString.length / 2);
17
- const distance = (0, getLevenshteinDistance_1.getLevenshteinDistance)(actualUrlMeaningfulString, patternUrlMeaningfulString);
18
- if (distance <= tolerance) {
19
- // replace param names in pattern with param values from actual url
20
- const urlSuggestion = patternUrlParts
21
- .map((_patternUrlPart, index) => {
22
- if (patternUrlParts[index].startsWith(':'))
23
- return actualUrlParts[index];
24
- return patternUrlParts[index];
25
- })
26
- .join('/');
27
- const suggestionWithQueryParams = `/${urlSuggestion}${url.search}`;
28
- acc.push({ ...requestConfig, path: suggestionWithQueryParams });
29
- }
30
- return acc;
31
- }, []);
32
- return restUrlSuggestions;
7
+ var _helpers = require("../../../../../utils/helpers");
8
+ var _getLevenshteinDistance = require("../getLevenshteinDistance/getLevenshteinDistance");
9
+ var _helpers2 = require("./helpers");
10
+ const getRestUrlSuggestions = ({
11
+ url,
12
+ requestConfigs
13
+ }) => {
14
+ const actualUrlParts = (0, _helpers.getUrlParts)(url.pathname);
15
+ const restUrlSuggestions = requestConfigs.reduce((acc, requestConfig) => {
16
+ const patternUrlParts = (0, _helpers.getUrlParts)(requestConfig.path);
17
+ // important: ignore patterns with different amount of parts
18
+ if (patternUrlParts.length !== actualUrlParts.length) return acc;
19
+ const actualUrlMeaningfulString = (0, _helpers2.getActualRestUrlMeaningfulString)(actualUrlParts, patternUrlParts);
20
+ const patternUrlMeaningfulString = (0, _helpers2.getPatternRestUrlMeaningfulString)(patternUrlParts);
21
+ const tolerance = Math.floor(patternUrlMeaningfulString.length / 2);
22
+ const distance = (0, _getLevenshteinDistance.getLevenshteinDistance)(actualUrlMeaningfulString, patternUrlMeaningfulString);
23
+ if (distance <= tolerance) {
24
+ // replace param names in pattern with param values from actual url
25
+ const urlSuggestion = patternUrlParts.map((_patternUrlPart, index) => {
26
+ if (patternUrlParts[index].startsWith(':')) return actualUrlParts[index];
27
+ return patternUrlParts[index];
28
+ }).join('/');
29
+ const suggestionWithQueryParams = `/${urlSuggestion}${url.search}`;
30
+ acc.push({
31
+ ...requestConfig,
32
+ path: suggestionWithQueryParams
33
+ });
34
+ }
35
+ return acc;
36
+ }, []);
37
+ return restUrlSuggestions;
33
38
  };
34
- exports.getRestUrlSuggestions = getRestUrlSuggestions;
39
+ exports.getRestUrlSuggestions = getRestUrlSuggestions;
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.getActualRestUrlMeaningfulString = void 0;
4
- const getActualRestUrlMeaningfulString = (actualUrlParts, patternUrlParts) => actualUrlParts
5
- .filter((_actualUrlPart, index) => !patternUrlParts[index].startsWith(':'))
6
- .join('');
7
- exports.getActualRestUrlMeaningfulString = getActualRestUrlMeaningfulString;
7
+ const getActualRestUrlMeaningfulString = (actualUrlParts, patternUrlParts) => actualUrlParts.filter((_actualUrlPart, index) => !patternUrlParts[index].startsWith(':')).join('');
8
+ exports.getActualRestUrlMeaningfulString = getActualRestUrlMeaningfulString;
@@ -1,5 +1,8 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.getPatternRestUrlMeaningfulString = void 0;
4
- const getPatternRestUrlMeaningfulString = (patternUrlParts) => patternUrlParts.filter((urlPatternPart) => !urlPatternPart.startsWith(':')).join('');
5
- exports.getPatternRestUrlMeaningfulString = getPatternRestUrlMeaningfulString;
7
+ const getPatternRestUrlMeaningfulString = patternUrlParts => patternUrlParts.filter(urlPatternPart => !urlPatternPart.startsWith(':')).join('');
8
+ exports.getPatternRestUrlMeaningfulString = getPatternRestUrlMeaningfulString;
@@ -1,18 +1,27 @@
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 _getActualRestUrlMeaningfulString = require("./getActualRestUrlMeaningfulString/getActualRestUrlMeaningfulString");
7
+ Object.keys(_getActualRestUrlMeaningfulString).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _getActualRestUrlMeaningfulString[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _getActualRestUrlMeaningfulString[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("./getActualRestUrlMeaningfulString/getActualRestUrlMeaningfulString"), exports);
18
- __exportStar(require("./getPatternRestUrlMeaningfulString/getPatternRestUrlMeaningfulString"), exports);
15
+ });
16
+ });
17
+ var _getPatternRestUrlMeaningfulString = require("./getPatternRestUrlMeaningfulString/getPatternRestUrlMeaningfulString");
18
+ Object.keys(_getPatternRestUrlMeaningfulString).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _getPatternRestUrlMeaningfulString[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _getPatternRestUrlMeaningfulString[key];
25
+ }
26
+ });
27
+ });
@@ -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 _getGraphqlUrlSuggestions = require("./getGraphqlUrlSuggestions/getGraphqlUrlSuggestions");
7
+ Object.keys(_getGraphqlUrlSuggestions).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _getGraphqlUrlSuggestions[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _getGraphqlUrlSuggestions[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("./getGraphqlUrlSuggestions/getGraphqlUrlSuggestions"), exports);
18
- __exportStar(require("./getLevenshteinDistance/getLevenshteinDistance"), exports);
19
- __exportStar(require("./getRestUrlSuggestions/getRestUrlSuggestions"), exports);
15
+ });
16
+ });
17
+ var _getLevenshteinDistance = require("./getLevenshteinDistance/getLevenshteinDistance");
18
+ Object.keys(_getLevenshteinDistance).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _getLevenshteinDistance[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _getLevenshteinDistance[key];
25
+ }
26
+ });
27
+ });
28
+ var _getRestUrlSuggestions = require("./getRestUrlSuggestions/getRestUrlSuggestions");
29
+ Object.keys(_getRestUrlSuggestions).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _getRestUrlSuggestions[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _getRestUrlSuggestions[key];
36
+ }
37
+ });
38
+ });
@@ -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;