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,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
+ });
@@ -1,58 +1,79 @@
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.createMockServer = void 0;
7
- const body_parser_1 = __importDefault(require("body-parser"));
8
- const express_1 = __importDefault(require("express"));
9
- const graphql_1 = require("../../core/graphql");
10
- const middlewares_1 = require("../../core/middlewares");
11
- const rest_1 = require("../../core/rest");
12
- const helpers_1 = require("../../utils/helpers");
13
- const createMockServer = (mockServerConfig) => {
14
- const { cors, staticPath, rest, graphql, interceptors } = mockServerConfig;
15
- const server = (0, express_1.default)();
16
- server.set('view engine', 'ejs');
17
- server.set('views', (0, helpers_1.urlJoin)(__dirname, '../../static/views'));
18
- server.use(express_1.default.static((0, helpers_1.urlJoin)(__dirname, '../../static/views')));
19
- server.use(body_parser_1.default.urlencoded({ extended: false }));
20
- server.use(body_parser_1.default.json({ limit: '10mb' }));
21
- (0, middlewares_1.cookieParseMiddleware)(server);
22
- const serverRequestInterceptor = mockServerConfig.interceptors?.request;
23
- if (serverRequestInterceptor) {
24
- (0, middlewares_1.requestInterceptorMiddleware)(server, serverRequestInterceptor);
25
- }
26
- const baseUrl = mockServerConfig.baseUrl ?? '/';
27
- if (cors) {
28
- (0, middlewares_1.corsMiddleware)(server, cors);
29
- }
30
- else {
31
- (0, middlewares_1.noCorsMiddleware)(server);
32
- }
33
- if (staticPath) {
34
- (0, middlewares_1.staticMiddleware)(server, baseUrl, staticPath);
35
- }
36
- if (rest) {
37
- const routerWithRestRoutes = (0, rest_1.createRestRoutes)(express_1.default.Router(), rest, interceptors?.response);
38
- const apiRequestInterceptor = rest.interceptors?.request;
39
- if (apiRequestInterceptor) {
40
- (0, middlewares_1.requestInterceptorMiddleware)(server, apiRequestInterceptor);
41
- }
42
- const restBaseUrl = (0, helpers_1.urlJoin)(baseUrl, rest.baseUrl ?? '/');
43
- server.use(restBaseUrl, routerWithRestRoutes);
7
+ var _bodyParser = _interopRequireDefault(require("body-parser"));
8
+ var _express = _interopRequireDefault(require("express"));
9
+ var _database = require("../../core/database");
10
+ var _graphql = require("../../core/graphql");
11
+ var _middlewares = require("../../core/middlewares");
12
+ var _rest = require("../../core/rest");
13
+ var _helpers = require("../../utils/helpers");
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+ const createMockServer = mockServerConfig => {
16
+ var _mockServerConfig$int, _mockServerConfig$bas;
17
+ const {
18
+ cors,
19
+ staticPath,
20
+ rest,
21
+ graphql,
22
+ database,
23
+ interceptors
24
+ } = mockServerConfig;
25
+ const server = (0, _express.default)();
26
+ server.set('view engine', 'ejs');
27
+ server.set('views', (0, _helpers.urlJoin)(__dirname, '../../static/views'));
28
+ server.use(_express.default.static((0, _helpers.urlJoin)(__dirname, '../../static/views')));
29
+ server.use(_bodyParser.default.urlencoded({
30
+ extended: false
31
+ }));
32
+ server.use(_bodyParser.default.json({
33
+ limit: '10mb'
34
+ }));
35
+ server.set('json spaces', 2);
36
+ server.use(_bodyParser.default.text());
37
+ (0, _middlewares.cookieParseMiddleware)(server);
38
+ const serverRequestInterceptor = (_mockServerConfig$int = mockServerConfig.interceptors) === null || _mockServerConfig$int === void 0 ? void 0 : _mockServerConfig$int.request;
39
+ if (serverRequestInterceptor) {
40
+ (0, _middlewares.requestInterceptorMiddleware)(server, serverRequestInterceptor);
41
+ }
42
+ const baseUrl = (_mockServerConfig$bas = mockServerConfig.baseUrl) !== null && _mockServerConfig$bas !== void 0 ? _mockServerConfig$bas : '/';
43
+ if (cors) {
44
+ (0, _middlewares.corsMiddleware)(server, cors);
45
+ } else {
46
+ (0, _middlewares.noCorsMiddleware)(server);
47
+ }
48
+ if (staticPath) {
49
+ (0, _middlewares.staticMiddleware)(server, baseUrl, staticPath);
50
+ }
51
+ if (rest) {
52
+ var _rest$interceptors, _rest$baseUrl;
53
+ const routerWithRestRoutes = (0, _rest.createRestRoutes)(_express.default.Router(), rest, interceptors === null || interceptors === void 0 ? void 0 : interceptors.response);
54
+ const apiRequestInterceptor = (_rest$interceptors = rest.interceptors) === null || _rest$interceptors === void 0 ? void 0 : _rest$interceptors.request;
55
+ if (apiRequestInterceptor) {
56
+ (0, _middlewares.requestInterceptorMiddleware)(server, apiRequestInterceptor);
44
57
  }
45
- if (graphql) {
46
- const routerWithGraphQLRoutes = (0, graphql_1.createGraphQLRoutes)(express_1.default.Router(), graphql, interceptors?.response);
47
- const apiRequestInterceptor = graphql.interceptors?.request;
48
- if (apiRequestInterceptor) {
49
- (0, middlewares_1.requestInterceptorMiddleware)(server, apiRequestInterceptor);
50
- }
51
- const graphqlBaseUrl = (0, helpers_1.urlJoin)(baseUrl, graphql.baseUrl ?? '/');
52
- server.use(graphqlBaseUrl, routerWithGraphQLRoutes);
58
+ const restBaseUrl = (0, _helpers.urlJoin)(baseUrl, (_rest$baseUrl = rest.baseUrl) !== null && _rest$baseUrl !== void 0 ? _rest$baseUrl : '/');
59
+ server.use(restBaseUrl, routerWithRestRoutes);
60
+ }
61
+ if (graphql) {
62
+ var _graphql$interceptors, _graphql$baseUrl;
63
+ const routerWithGraphQLRoutes = (0, _graphql.createGraphQLRoutes)(_express.default.Router(), graphql, interceptors === null || interceptors === void 0 ? void 0 : interceptors.response);
64
+ const apiRequestInterceptor = (_graphql$interceptors = graphql.interceptors) === null || _graphql$interceptors === void 0 ? void 0 : _graphql$interceptors.request;
65
+ if (apiRequestInterceptor) {
66
+ (0, _middlewares.requestInterceptorMiddleware)(server, apiRequestInterceptor);
53
67
  }
54
- (0, middlewares_1.notFoundMiddleware)(server, mockServerConfig);
55
- (0, middlewares_1.errorMiddleware)(server);
56
- return server;
68
+ const graphqlBaseUrl = (0, _helpers.urlJoin)(baseUrl, (_graphql$baseUrl = graphql.baseUrl) !== null && _graphql$baseUrl !== void 0 ? _graphql$baseUrl : '/');
69
+ server.use(graphqlBaseUrl, routerWithGraphQLRoutes);
70
+ }
71
+ if (database) {
72
+ const routerWithDatabaseRoutes = (0, _database.createDatabaseRoutes)(_express.default.Router(), database);
73
+ server.use(baseUrl, routerWithDatabaseRoutes);
74
+ }
75
+ (0, _middlewares.notFoundMiddleware)(server, mockServerConfig);
76
+ (0, _middlewares.errorMiddleware)(server);
77
+ return server;
57
78
  };
58
- exports.createMockServer = createMockServer;
79
+ exports.createMockServer = createMockServer;
@@ -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 _createMockServer = require("./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("./createMockServer/createMockServer"), exports);
18
- __exportStar(require("./startMockServer/startMockServer"), exports);
15
+ });
16
+ });
17
+ var _startMockServer = require("./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
+ });
@@ -1,20 +1,23 @@
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.startMockServer = void 0;
7
- const ansi_colors_1 = __importDefault(require("ansi-colors"));
8
- const middlewares_1 = require("../../core/middlewares");
9
- const constants_1 = require("../../utils/constants");
10
- const createMockServer_1 = require("../createMockServer/createMockServer");
11
- const startMockServer = (mockServerConfig) => {
12
- const mockServer = (0, createMockServer_1.createMockServer)(mockServerConfig);
13
- const port = mockServerConfig.port ?? constants_1.DEFAULT.PORT;
14
- const server = mockServer.listen(port, () => {
15
- console.log(ansi_colors_1.default.green(`🎉 Mock Server is running at http://localhost:${port}`));
16
- });
17
- // important: add destroy method for closing keep-alive connections after server shutdown
18
- return (0, middlewares_1.destroyerMiddleware)(server);
7
+ var _ansiColors = _interopRequireDefault(require("ansi-colors"));
8
+ var _middlewares = require("../../core/middlewares");
9
+ var _constants = require("../../utils/constants");
10
+ var _createMockServer = require("../createMockServer/createMockServer");
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ const startMockServer = mockServerConfig => {
13
+ var _mockServerConfig$por;
14
+ const mockServer = (0, _createMockServer.createMockServer)(mockServerConfig);
15
+ const port = (_mockServerConfig$por = mockServerConfig.port) !== null && _mockServerConfig$por !== void 0 ? _mockServerConfig$por : _constants.DEFAULT.PORT;
16
+ const server = mockServer.listen(port, () => {
17
+ console.log(_ansiColors.default.green(`🎉 Mock Server is running at http://localhost:${port}`));
18
+ });
19
+
20
+ // ✅ important: add destroy method for closing keep-alive connections after server shutdown
21
+ return (0, _middlewares.destroyerMiddleware)(server);
19
22
  };
20
- exports.startMockServer = startMockServer;
23
+ exports.startMockServer = startMockServer;
@@ -1,3 +1,3 @@
1
- <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path d="M11 8C12.65 8 14 9.35 14 11C14 12.65 12.65 14 11 14C9.35 14 8 12.65 8 11C8 9.35 9.35 8 11 8ZM11 6C8.24 6 6 8.24 6 11C6 13.76 8.24 16 11 16C13.76 16 16 13.76 16 11C16 8.24 13.76 6 11 6ZM1 12H3C3.55 12 4 11.55 4 11C4 10.45 3.55 10 3 10H1C0.45 10 0 10.45 0 11C0 11.55 0.45 12 1 12ZM19 12H21C21.55 12 22 11.55 22 11C22 10.45 21.55 10 21 10H19C18.45 10 18 10.45 18 11C18 11.55 18.45 12 19 12ZM10 1V3C10 3.55 10.45 4 11 4C11.55 4 12 3.55 12 3V1C12 0.45 11.55 0 11 0C10.45 0 10 0.45 10 1ZM10 19V21C10 21.55 10.45 22 11 22C11.55 22 12 21.55 12 21V19C12 18.45 11.55 18 11 18C10.45 18 10 18.45 10 19ZM4.99 3.58C4.6 3.19 3.96 3.19 3.58 3.58C3.19 3.97 3.19 4.61 3.58 4.99L4.64 6.05C5.03 6.44 5.67 6.44 6.05 6.05C6.43 5.66 6.44 5.02 6.05 4.64L4.99 3.58ZM17.36 15.95C16.97 15.56 16.33 15.56 15.95 15.95C15.56 16.34 15.56 16.98 15.95 17.36L17.01 18.42C17.4 18.81 18.04 18.81 18.42 18.42C18.81 18.03 18.81 17.39 18.42 17.01L17.36 15.95ZM18.42 4.99C18.81 4.6 18.81 3.96 18.42 3.58C18.03 3.19 17.39 3.19 17.01 3.58L15.95 4.64C15.56 5.03 15.56 5.67 15.95 6.05C16.34 6.43 16.98 6.44 17.36 6.05L18.42 4.99ZM6.05 17.36C6.44 16.97 6.44 16.33 6.05 15.95C5.66 15.56 5.02 15.56 4.64 15.95L3.58 17.01C3.19 17.4 3.19 18.04 3.58 18.42C3.97 18.8 4.61 18.81 4.99 18.42L6.05 17.36Z" fill="white"/>
3
- </svg>
1
+ <svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M11 8C12.65 8 14 9.35 14 11C14 12.65 12.65 14 11 14C9.35 14 8 12.65 8 11C8 9.35 9.35 8 11 8ZM11 6C8.24 6 6 8.24 6 11C6 13.76 8.24 16 11 16C13.76 16 16 13.76 16 11C16 8.24 13.76 6 11 6ZM1 12H3C3.55 12 4 11.55 4 11C4 10.45 3.55 10 3 10H1C0.45 10 0 10.45 0 11C0 11.55 0.45 12 1 12ZM19 12H21C21.55 12 22 11.55 22 11C22 10.45 21.55 10 21 10H19C18.45 10 18 10.45 18 11C18 11.55 18.45 12 19 12ZM10 1V3C10 3.55 10.45 4 11 4C11.55 4 12 3.55 12 3V1C12 0.45 11.55 0 11 0C10.45 0 10 0.45 10 1ZM10 19V21C10 21.55 10.45 22 11 22C11.55 22 12 21.55 12 21V19C12 18.45 11.55 18 11 18C10.45 18 10 18.45 10 19ZM4.99 3.58C4.6 3.19 3.96 3.19 3.58 3.58C3.19 3.97 3.19 4.61 3.58 4.99L4.64 6.05C5.03 6.44 5.67 6.44 6.05 6.05C6.43 5.66 6.44 5.02 6.05 4.64L4.99 3.58ZM17.36 15.95C16.97 15.56 16.33 15.56 15.95 15.95C15.56 16.34 15.56 16.98 15.95 17.36L17.01 18.42C17.4 18.81 18.04 18.81 18.42 18.42C18.81 18.03 18.81 17.39 18.42 17.01L17.36 15.95ZM18.42 4.99C18.81 4.6 18.81 3.96 18.42 3.58C18.03 3.19 17.39 3.19 17.01 3.58L15.95 4.64C15.56 5.03 15.56 5.67 15.95 6.05C16.34 6.43 16.98 6.44 17.36 6.05L18.42 4.99ZM6.05 17.36C6.44 16.97 6.44 16.33 6.05 15.95C5.66 15.56 5.02 15.56 4.64 15.95L3.58 17.01C3.19 17.4 3.19 18.04 3.58 18.42C3.97 18.8 4.61 18.81 4.99 18.42L6.05 17.36Z" fill="white"/>
3
+ </svg>
@@ -1,3 +1,3 @@
1
- <svg width="18" height="18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path fill="#343434" fill-opacity="0.9" d="M6.36997 2.51C6.18997 3.15 6.09997 3.82 6.09997 4.5C6.09997 8.58 9.41997 11.9 13.5 11.9C14.18 11.9 14.85 11.81 15.49 11.63C14.45 14.19 11.93 16 8.99997 16C5.13997 16 1.99997 12.86 1.99997 9C1.99997 6.07 3.80997 3.55 6.36997 2.51ZM8.99997 0C4.02997 0 -3.05176e-05 4.03 -3.05176e-05 9C-3.05176e-05 13.97 4.02997 18 8.99997 18C13.97 18 18 13.97 18 9C18 8.54 17.96 8.08 17.9 7.64C16.92 9.01 15.32 9.9 13.5 9.9C10.52 9.9 8.09997 7.48 8.09997 4.5C8.09997 2.69 8.98997 1.08 10.36 0.0999999C9.91997 0.0399999 9.45997 0 8.99997 0Z"/>
3
- </svg>
1
+ <svg width="18" height="18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path fill="#343434" fill-opacity="0.9" d="M6.36997 2.51C6.18997 3.15 6.09997 3.82 6.09997 4.5C6.09997 8.58 9.41997 11.9 13.5 11.9C14.18 11.9 14.85 11.81 15.49 11.63C14.45 14.19 11.93 16 8.99997 16C5.13997 16 1.99997 12.86 1.99997 9C1.99997 6.07 3.80997 3.55 6.36997 2.51ZM8.99997 0C4.02997 0 -3.05176e-05 4.03 -3.05176e-05 9C-3.05176e-05 13.97 4.02997 18 8.99997 18C13.97 18 18 13.97 18 9C18 8.54 17.96 8.08 17.9 7.64C16.92 9.01 15.32 9.9 13.5 9.9C10.52 9.9 8.09997 7.48 8.09997 4.5C8.09997 2.69 8.98997 1.08 10.36 0.0999999C9.91997 0.0399999 9.45997 0 8.99997 0Z"/>
3
+ </svg>