mock-config-server 2.0.2 → 2.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 (140) hide show
  1. package/README.md +33 -1
  2. package/dist/bin/{mock-config-server.d.ts → bin.d.ts} +2 -2
  3. package/dist/bin/bin.js +8 -0
  4. package/dist/bin/cli.d.ts +1 -0
  5. package/dist/bin/cli.js +36 -0
  6. package/dist/bin/{resolveExportsFromSourceCode.d.ts → resolveExportsFromSourceCode/resolveExportsFromSourceCode.d.ts} +1 -1
  7. package/dist/bin/{resolveExportsFromSourceCode.js → resolveExportsFromSourceCode/resolveExportsFromSourceCode.js} +11 -11
  8. package/dist/bin/start.d.ts +3 -0
  9. package/dist/bin/{mock-config-server.js → start.js} +73 -67
  10. package/dist/bin/validateMockServerConfig/validateBaseUrl/validateBaseUrl.d.ts +1 -1
  11. package/dist/bin/validateMockServerConfig/validateBaseUrl/validateBaseUrl.js +12 -12
  12. package/dist/bin/validateMockServerConfig/validateCors/validateCors.d.ts +1 -1
  13. package/dist/bin/validateMockServerConfig/validateCors/validateCors.js +82 -82
  14. package/dist/bin/validateMockServerConfig/validateGraphqlConfig/validateGraphqlConfig.d.ts +1 -1
  15. package/dist/bin/validateMockServerConfig/validateGraphqlConfig/validateGraphqlConfig.js +48 -48
  16. package/dist/bin/validateMockServerConfig/validateGraphqlConfig/validateRoutes/validateRoutes.d.ts +2 -2
  17. package/dist/bin/validateMockServerConfig/validateGraphqlConfig/validateRoutes/validateRoutes.js +71 -71
  18. package/dist/bin/validateMockServerConfig/validateInterceptors/validateInterceptors.d.ts +1 -1
  19. package/dist/bin/validateMockServerConfig/validateInterceptors/validateInterceptors.js +21 -21
  20. package/dist/bin/validateMockServerConfig/validateMockServerConfig.d.ts +2 -1
  21. package/dist/bin/validateMockServerConfig/validateMockServerConfig.js +30 -34
  22. package/dist/bin/validateMockServerConfig/validatePort/validatePort.d.ts +1 -1
  23. package/dist/bin/validateMockServerConfig/validatePort/validatePort.js +9 -9
  24. package/dist/bin/validateMockServerConfig/validateRestConfig/validateRestConfig.d.ts +1 -1
  25. package/dist/bin/validateMockServerConfig/validateRestConfig/validateRestConfig.js +52 -52
  26. package/dist/bin/validateMockServerConfig/validateRestConfig/validateRoutes/validateRoutes.d.ts +2 -2
  27. package/dist/bin/validateMockServerConfig/validateRestConfig/validateRoutes/validateRoutes.js +105 -104
  28. package/dist/bin/validateMockServerConfig/validateStaticPath/validateStaticPath.d.ts +1 -1
  29. package/dist/bin/validateMockServerConfig/validateStaticPath/validateStaticPath.js +44 -44
  30. package/dist/index.d.ts +1 -1
  31. package/dist/index.js +17 -17
  32. package/dist/src/{graphql → core/graphql}/createGraphQLRoutes/createGraphQLRoutes.d.ts +3 -3
  33. package/dist/src/{graphql → core/graphql}/createGraphQLRoutes/createGraphQLRoutes.js +76 -73
  34. package/dist/src/core/graphql/createGraphQLRoutes/helpers/index.d.ts +1 -0
  35. package/dist/src/{notFound/urlSuggestions → core/graphql/createGraphQLRoutes/helpers}/index.js +17 -18
  36. package/dist/src/{graphql → core/graphql/createGraphQLRoutes/helpers}/prepareGraphQLRequestConfigs/prepareGraphQLRequestConfigs.d.ts +2 -2
  37. package/dist/src/{graphql → core/graphql/createGraphQLRoutes/helpers}/prepareGraphQLRequestConfigs/prepareGraphQLRequestConfigs.js +28 -28
  38. package/dist/src/core/graphql/index.d.ts +1 -0
  39. package/dist/src/{notFound/urlSuggestions/getGraphqlUrlSuggestions → core/graphql}/index.js +17 -17
  40. package/dist/src/{cors → core/middlewares}/corsMiddleware/corsMiddleware.d.ts +3 -3
  41. package/dist/src/{cors → core/middlewares}/corsMiddleware/corsMiddleware.js +44 -44
  42. package/dist/src/{cors/getOrigins → core/middlewares/corsMiddleware/helpers/getAllowedOrigins}/getAllowedOrigins.d.ts +2 -2
  43. package/dist/src/{cors/getOrigins → core/middlewares/corsMiddleware/helpers/getAllowedOrigins}/getAllowedOrigins.js +13 -13
  44. package/dist/src/core/middlewares/corsMiddleware/helpers/index.d.ts +1 -0
  45. package/dist/src/{notFound/urlSuggestions/getRestUrlSuggestions → core/middlewares/corsMiddleware/helpers}/index.js +17 -17
  46. package/dist/src/core/middlewares/index.d.ts +4 -0
  47. package/dist/src/core/middlewares/index.js +20 -0
  48. package/dist/src/{cors → core/middlewares}/noCorsMiddleware/noCorsMiddleware.d.ts +2 -2
  49. package/dist/src/{cors → core/middlewares}/noCorsMiddleware/noCorsMiddleware.js +24 -20
  50. package/dist/src/{notFound/urlSuggestions → core/middlewares/notFoundMiddleware/helpers}/getGraphqlUrlSuggestions/getGraphqlUrlSuggestions.d.ts +6 -6
  51. package/dist/src/{notFound/urlSuggestions → core/middlewares/notFoundMiddleware/helpers}/getGraphqlUrlSuggestions/getGraphqlUrlSuggestions.js +18 -18
  52. package/dist/src/{notFound/urlSuggestions → core/middlewares/notFoundMiddleware/helpers}/getLevenshteinDistance/getLevenshteinDistance.d.ts +1 -1
  53. package/dist/src/{notFound/urlSuggestions → core/middlewares/notFoundMiddleware/helpers}/getLevenshteinDistance/getLevenshteinDistance.js +80 -80
  54. package/dist/src/{notFound/urlSuggestions → core/middlewares/notFoundMiddleware/helpers}/getRestUrlSuggestions/getRestUrlSuggestions.d.ts +6 -6
  55. package/dist/src/{notFound/urlSuggestions → core/middlewares/notFoundMiddleware/helpers}/getRestUrlSuggestions/getRestUrlSuggestions.js +34 -34
  56. package/dist/src/{notFound/urlSuggestions → core/middlewares/notFoundMiddleware/helpers}/getRestUrlSuggestions/helpers/getActualRestUrlMeaningfulString/getActualRestUrlMeaningfulString.d.ts +1 -1
  57. package/dist/src/{notFound/urlSuggestions → core/middlewares/notFoundMiddleware/helpers}/getRestUrlSuggestions/helpers/getActualRestUrlMeaningfulString/getActualRestUrlMeaningfulString.js +7 -7
  58. package/dist/src/{notFound/urlSuggestions → core/middlewares/notFoundMiddleware/helpers}/getRestUrlSuggestions/helpers/getPatternRestUrlMeaningfulString/getPatternRestUrlMeaningfulString.d.ts +1 -1
  59. package/dist/src/{notFound/urlSuggestions → core/middlewares/notFoundMiddleware/helpers}/getRestUrlSuggestions/helpers/getPatternRestUrlMeaningfulString/getPatternRestUrlMeaningfulString.js +5 -5
  60. package/dist/src/{notFound/urlSuggestions → core/middlewares/notFoundMiddleware/helpers}/getRestUrlSuggestions/helpers/index.d.ts +2 -2
  61. package/dist/src/{notFound/urlSuggestions → core/middlewares/notFoundMiddleware/helpers}/getRestUrlSuggestions/helpers/index.js +18 -18
  62. package/dist/src/core/middlewares/notFoundMiddleware/helpers/index.d.ts +3 -0
  63. package/dist/src/core/middlewares/notFoundMiddleware/helpers/index.js +19 -0
  64. package/dist/src/{notFound → core/middlewares/notFoundMiddleware}/notFoundMiddleware.d.ts +8 -8
  65. package/dist/src/{notFound → core/middlewares/notFoundMiddleware}/notFoundMiddleware.js +47 -47
  66. package/dist/src/{static → core/middlewares}/staticMiddleware/staticMiddleware.d.ts +3 -3
  67. package/dist/src/{static → core/middlewares}/staticMiddleware/staticMiddleware.js +30 -30
  68. package/dist/src/{rest → core/rest}/createRestRoutes/createRestRoutes.d.ts +3 -3
  69. package/dist/src/{rest → core/rest}/createRestRoutes/createRestRoutes.js +46 -41
  70. package/dist/src/core/rest/createRestRoutes/helpers/index.d.ts +1 -0
  71. package/dist/src/core/rest/createRestRoutes/helpers/index.js +17 -0
  72. package/dist/src/{rest → core/rest/createRestRoutes/helpers}/prepareRestRequestConfigs/prepareRestRequestConfigs.d.ts +2 -2
  73. package/dist/src/{rest → core/rest/createRestRoutes/helpers}/prepareRestRequestConfigs/prepareRestRequestConfigs.js +30 -30
  74. package/dist/src/core/rest/index.d.ts +1 -0
  75. package/dist/src/core/rest/index.js +17 -0
  76. package/dist/src/index.d.ts +3 -3
  77. package/dist/src/index.js +19 -19
  78. package/dist/src/server/createMockServer/createMockServer.d.ts +3 -3
  79. package/dist/src/server/createMockServer/createMockServer.js +46 -49
  80. package/dist/src/server/index.d.ts +2 -0
  81. package/dist/src/server/index.js +18 -0
  82. package/dist/src/server/startMockServer/startMockServer.d.ts +2 -2
  83. package/dist/src/server/startMockServer/startMockServer.js +17 -17
  84. package/dist/src/utils/constants/appPath.d.ts +1 -1
  85. package/dist/src/utils/constants/appPath.js +4 -4
  86. package/dist/src/utils/constants/default.d.ts +11 -11
  87. package/dist/src/utils/constants/default.js +14 -14
  88. package/dist/src/utils/constants/index.d.ts +2 -2
  89. package/dist/src/utils/constants/index.js +18 -18
  90. package/dist/src/utils/helpers/config/index.d.ts +1 -0
  91. package/dist/src/utils/helpers/config/index.js +17 -0
  92. package/dist/src/{configs → utils/helpers/config}/isEntitiesEqual/isEntityValuesEqual.d.ts +1 -1
  93. package/dist/src/{configs → utils/helpers/config}/isEntitiesEqual/isEntityValuesEqual.js +29 -29
  94. package/dist/src/{graphql → utils/helpers/graphql}/getGraphQLInput/getGraphQLInput.d.ts +3 -3
  95. package/dist/src/{graphql → utils/helpers/graphql}/getGraphQLInput/getGraphQLInput.js +21 -21
  96. package/dist/src/utils/helpers/graphql/index.d.ts +3 -0
  97. package/dist/src/utils/helpers/graphql/index.js +19 -0
  98. package/dist/src/{graphql → utils/helpers/graphql}/parseGraphQLRequest/parseGraphQLRequest.d.ts +3 -3
  99. package/dist/src/{graphql → utils/helpers/graphql}/parseGraphQLRequest/parseGraphQLRequest.js +12 -12
  100. package/dist/src/{graphql → utils/helpers/graphql}/parseQuery/parseQuery.d.ts +7 -7
  101. package/dist/src/{graphql → utils/helpers/graphql}/parseQuery/parseQuery.js +21 -21
  102. package/dist/src/utils/helpers/index.d.ts +6 -3
  103. package/dist/src/utils/helpers/index.js +22 -19
  104. package/dist/src/{routes → utils/helpers/interceptors}/callRequestInterceptors/callRequestInterceptors.d.ts +12 -12
  105. package/dist/src/{routes → utils/helpers/interceptors}/callRequestInterceptors/callRequestInterceptors.js +13 -13
  106. package/dist/src/{routes → utils/helpers/interceptors}/callResponseInterceptors/callResponseInterceptors.d.ts +14 -14
  107. package/dist/src/{routes → utils/helpers/interceptors}/callResponseInterceptors/callResponseInterceptors.js +55 -31
  108. package/dist/src/utils/helpers/interceptors/index.d.ts +2 -0
  109. package/dist/src/utils/helpers/interceptors/index.js +18 -0
  110. package/dist/src/utils/helpers/{isPlainObject.d.ts → isPlainObject/isPlainObject.d.ts} +1 -1
  111. package/dist/src/utils/helpers/{isPlainObject.js → isPlainObject/isPlainObject.js} +5 -5
  112. package/dist/src/utils/helpers/sleep.d.ts +1 -1
  113. package/dist/src/utils/helpers/sleep.js +7 -7
  114. package/dist/src/utils/helpers/url/convertWin32PathToUnix/convertWin32PathToUnix.d.ts +1 -1
  115. package/dist/src/utils/helpers/url/convertWin32PathToUnix/convertWin32PathToUnix.js +8 -8
  116. package/dist/src/utils/helpers/url/getUrlParts/getUrlParts.d.ts +1 -1
  117. package/dist/src/utils/helpers/url/getUrlParts/getUrlParts.js +6 -6
  118. package/dist/src/utils/helpers/url/index.d.ts +4 -4
  119. package/dist/src/utils/helpers/url/index.js +20 -20
  120. package/dist/src/utils/helpers/url/removeLeadingAndTrailingSlashes/removeLeadingAndTrailingSlashes.d.ts +1 -1
  121. package/dist/src/utils/helpers/url/removeLeadingAndTrailingSlashes/removeLeadingAndTrailingSlashes.js +5 -5
  122. package/dist/src/utils/helpers/url/urlJoin/urlJoin.d.ts +1 -1
  123. package/dist/src/utils/helpers/url/urlJoin/urlJoin.js +14 -14
  124. package/dist/src/utils/types/graphql.d.ts +34 -5
  125. package/dist/src/utils/types/graphql.js +2 -2
  126. package/dist/src/utils/types/index.d.ts +5 -4
  127. package/dist/src/utils/types/index.js +21 -20
  128. package/dist/src/utils/types/interceptors.d.ts +21 -15
  129. package/dist/src/utils/types/interceptors.js +2 -2
  130. package/dist/src/utils/types/rest.d.ts +38 -0
  131. package/dist/src/utils/types/{configs.js → rest.js} +2 -2
  132. package/dist/src/utils/types/server.d.ts +37 -32
  133. package/dist/src/utils/types/server.js +2 -2
  134. package/dist/src/utils/types/values.d.ts +9 -0
  135. package/dist/src/utils/types/values.js +2 -0
  136. package/package.json +19 -17
  137. package/dist/src/notFound/urlSuggestions/getGraphqlUrlSuggestions/index.d.ts +0 -1
  138. package/dist/src/notFound/urlSuggestions/getRestUrlSuggestions/index.d.ts +0 -1
  139. package/dist/src/notFound/urlSuggestions/index.d.ts +0 -2
  140. package/dist/src/utils/types/configs.d.ts +0 -63
@@ -1,44 +1,44 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateStaticPath = void 0;
4
- const helpers_1 = require("../../../src/utils/helpers");
5
- const validateStaticPath = (staticPath) => {
6
- const isStaticPathArray = Array.isArray(staticPath);
7
- if (isStaticPathArray) {
8
- staticPath.forEach((staticPathElement, index) => {
9
- const isStaticPathElementObject = (0, helpers_1.isPlainObject)(staticPathElement);
10
- if (isStaticPathElementObject) {
11
- const { prefix, path } = staticPathElement;
12
- if (typeof prefix !== 'string' || !prefix.startsWith('/')) {
13
- throw new Error(`staticPath[${index}].prefix`);
14
- }
15
- if (typeof path !== 'string' || !path.startsWith('/')) {
16
- throw new Error(`staticPath[${index}].path`);
17
- }
18
- return;
19
- }
20
- if (typeof staticPathElement !== 'string' || !staticPathElement.startsWith('/')) {
21
- throw new Error(`staticPath[${index}]`);
22
- }
23
- });
24
- return;
25
- }
26
- const isStaticPathObject = (0, helpers_1.isPlainObject)(staticPath);
27
- if (isStaticPathObject) {
28
- const { prefix, path } = staticPath;
29
- if (typeof prefix !== 'string' || !prefix.startsWith('/')) {
30
- throw new Error('staticPath.prefix');
31
- }
32
- if (typeof path !== 'string' || !path.startsWith('/')) {
33
- throw new Error('staticPath.path');
34
- }
35
- return;
36
- }
37
- if (typeof staticPath !== 'string' && typeof staticPath !== 'undefined') {
38
- throw new Error('staticPath');
39
- }
40
- if (typeof staticPath === 'string' && !staticPath.startsWith('/')) {
41
- throw new Error('staticPath');
42
- }
43
- };
44
- exports.validateStaticPath = validateStaticPath;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateStaticPath = void 0;
4
+ const helpers_1 = require("../../../src/utils/helpers");
5
+ const validateStaticPath = (staticPath) => {
6
+ const isStaticPathArray = Array.isArray(staticPath);
7
+ if (isStaticPathArray) {
8
+ staticPath.forEach((staticPathElement, index) => {
9
+ const isStaticPathElementObject = (0, helpers_1.isPlainObject)(staticPathElement);
10
+ if (isStaticPathElementObject) {
11
+ const { prefix, path } = staticPathElement;
12
+ if (typeof prefix !== 'string' || !prefix.startsWith('/')) {
13
+ throw new Error(`staticPath[${index}].prefix`);
14
+ }
15
+ if (typeof path !== 'string' || !path.startsWith('/')) {
16
+ throw new Error(`staticPath[${index}].path`);
17
+ }
18
+ return;
19
+ }
20
+ if (typeof staticPathElement !== 'string' || !staticPathElement.startsWith('/')) {
21
+ throw new Error(`staticPath[${index}]`);
22
+ }
23
+ });
24
+ return;
25
+ }
26
+ const isStaticPathObject = (0, helpers_1.isPlainObject)(staticPath);
27
+ if (isStaticPathObject) {
28
+ const { prefix, path } = staticPath;
29
+ if (typeof prefix !== 'string' || !prefix.startsWith('/')) {
30
+ throw new Error('staticPath.prefix');
31
+ }
32
+ if (typeof path !== 'string' || !path.startsWith('/')) {
33
+ throw new Error('staticPath.path');
34
+ }
35
+ return;
36
+ }
37
+ if (typeof staticPath !== 'string' && typeof staticPath !== 'undefined') {
38
+ throw new Error('staticPath');
39
+ }
40
+ if (typeof staticPath === 'string' && !staticPath.startsWith('/')) {
41
+ throw new Error('staticPath');
42
+ }
43
+ };
44
+ exports.validateStaticPath = validateStaticPath;
package/dist/index.d.ts CHANGED
@@ -1 +1 @@
1
- export * from './src';
1
+ export * from './src';
package/dist/index.js CHANGED
@@ -1,17 +1,17 @@
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]; } };
7
- }
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("./src"), exports);
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]; } };
7
+ }
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("./src"), exports);
@@ -1,3 +1,3 @@
1
- import { IRouter } from 'express';
2
- import type { GraphQLRequestConfig, Interceptors } from '../../utils/types';
3
- export declare const createGraphQLRoutes: (router: IRouter, configs: GraphQLRequestConfig[], interceptors?: Interceptors) => IRouter;
1
+ import type { IRouter } from 'express';
2
+ import type { GraphQLRequestConfig, Interceptors } from '../../../utils/types';
3
+ export declare const createGraphQLRoutes: (router: IRouter, configs: GraphQLRequestConfig[], interceptors?: Interceptors) => IRouter;
@@ -1,73 +1,76 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createGraphQLRoutes = void 0;
4
- const isEntityValuesEqual_1 = require("../../configs/isEntitiesEqual/isEntityValuesEqual");
5
- const callRequestInterceptors_1 = require("../../routes/callRequestInterceptors/callRequestInterceptors");
6
- const callResponseInterceptors_1 = require("../../routes/callResponseInterceptors/callResponseInterceptors");
7
- const getGraphQLInput_1 = require("../getGraphQLInput/getGraphQLInput");
8
- const parseQuery_1 = require("../parseQuery/parseQuery");
9
- const prepareGraphQLRequestConfigs_1 = require("../prepareGraphQLRequestConfigs/prepareGraphQLRequestConfigs");
10
- const createGraphQLRoutes = (router, configs, interceptors) => {
11
- const preparedGraphQLRequestConfig = (0, prepareGraphQLRequestConfigs_1.prepareGraphQLRequestConfigs)(configs);
12
- const graphqlMiddleware = (request, response, next) => {
13
- const graphQLInput = (0, getGraphQLInput_1.getGraphQLInput)(request);
14
- if (!graphQLInput || !graphQLInput.query) {
15
- return response.status(400).json('Query is missing, you must pass a valid GraphQL query');
16
- }
17
- const query = (0, parseQuery_1.parseQuery)(graphQLInput.query);
18
- if (!query) {
19
- return response.status(400).json('Query is invalid, you must use a valid GraphQL query');
20
- }
21
- if (!query.operationName || !query.operationType) {
22
- return response
23
- .status(400)
24
- .json(`You should to specify operationName and operationType for ${request.method}:${request.baseUrl}${request.path}`);
25
- }
26
- const matchedRequestConfig = preparedGraphQLRequestConfig.find((requestConfig) => {
27
- if (requestConfig.operationName instanceof RegExp) {
28
- return (new RegExp(requestConfig.operationName).test(query.operationName) &&
29
- requestConfig.operationType === query.operationType);
30
- }
31
- return (requestConfig.operationName === query.operationName &&
32
- requestConfig.operationType === query.operationType);
33
- });
34
- if (!matchedRequestConfig) {
35
- return next();
36
- }
37
- (0, callRequestInterceptors_1.callRequestInterceptors)({
38
- request,
39
- interceptors: {
40
- requestInterceptor: matchedRequestConfig.interceptors?.request,
41
- serverInterceptor: interceptors?.request
42
- }
43
- });
44
- const matchedRouteConfig = matchedRequestConfig.routes.find(({ entities }) => {
45
- if (!entities)
46
- return true;
47
- return Object.entries(entities).every(([entity, entityValue]) => {
48
- if (entity === 'variables') {
49
- return (0, isEntityValuesEqual_1.isEntityValuesEqual)(entityValue, graphQLInput.variables);
50
- }
51
- return (0, isEntityValuesEqual_1.isEntityValuesEqual)(entityValue, request[entity]);
52
- });
53
- });
54
- if (!matchedRouteConfig) {
55
- return next();
56
- }
57
- const data = (0, callResponseInterceptors_1.callResponseInterceptors)({
58
- data: matchedRouteConfig.data,
59
- request,
60
- response,
61
- interceptors: {
62
- routeInterceptor: matchedRouteConfig.interceptors?.response,
63
- requestInterceptor: matchedRequestConfig.interceptors?.response,
64
- serverInterceptor: interceptors?.response
65
- }
66
- });
67
- return response.status(response.statusCode).json(data);
68
- };
69
- router.route('/').get(graphqlMiddleware);
70
- router.route('/').post(graphqlMiddleware);
71
- return router;
72
- };
73
- exports.createGraphQLRoutes = createGraphQLRoutes;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createGraphQLRoutes = void 0;
4
+ const helpers_1 = require("../../../utils/helpers");
5
+ const helpers_2 = require("./helpers");
6
+ const createGraphQLRoutes = (router, configs, interceptors) => {
7
+ const preparedGraphQLRequestConfig = (0, helpers_2.prepareGraphQLRequestConfigs)(configs);
8
+ const graphqlMiddleware = async (request, response, next) => {
9
+ const graphQLInput = (0, helpers_1.getGraphQLInput)(request);
10
+ if (!graphQLInput || !graphQLInput.query) {
11
+ return response.status(400).json('Query is missing, you must pass a valid GraphQL query');
12
+ }
13
+ const query = (0, helpers_1.parseQuery)(graphQLInput.query);
14
+ if (!query) {
15
+ return response.status(400).json('Query is invalid, you must use a valid GraphQL query');
16
+ }
17
+ if (!query.operationName || !query.operationType) {
18
+ return response
19
+ .status(400)
20
+ .json(`You should to specify operationName and operationType for ${request.method}:${request.baseUrl}${request.path}`);
21
+ }
22
+ const matchedRequestConfig = preparedGraphQLRequestConfig.find((requestConfig) => {
23
+ if (requestConfig.operationName instanceof RegExp) {
24
+ return (new RegExp(requestConfig.operationName).test(query.operationName) &&
25
+ requestConfig.operationType === query.operationType);
26
+ }
27
+ return (requestConfig.operationName === query.operationName &&
28
+ requestConfig.operationType === query.operationType);
29
+ });
30
+ if (!matchedRequestConfig) {
31
+ return next();
32
+ }
33
+ (0, helpers_1.callRequestInterceptors)({
34
+ request,
35
+ interceptors: {
36
+ requestInterceptor: matchedRequestConfig.interceptors?.request,
37
+ serverInterceptor: interceptors?.request
38
+ }
39
+ });
40
+ const matchedRouteConfig = matchedRequestConfig.routes.find(({ entities }) => {
41
+ if (!entities)
42
+ return true;
43
+ return Object.entries(entities).every(([entity, entityValue]) => {
44
+ if (entity === 'variables') {
45
+ return (0, helpers_1.isEntityValuesEqual)(entityValue, graphQLInput.variables);
46
+ }
47
+ return (0, helpers_1.isEntityValuesEqual)(entityValue, request[entity]);
48
+ });
49
+ });
50
+ if (!matchedRouteConfig) {
51
+ return next();
52
+ }
53
+ const matchedRouteConfigData = typeof matchedRouteConfig.data === 'function'
54
+ ? await matchedRouteConfig.data(request, matchedRouteConfig.entities ?? {})
55
+ : matchedRouteConfig.data;
56
+ const data = (0, helpers_1.callResponseInterceptors)({
57
+ data: matchedRouteConfigData,
58
+ request,
59
+ response,
60
+ interceptors: {
61
+ routeInterceptor: matchedRouteConfig.interceptors?.response,
62
+ requestInterceptor: matchedRequestConfig.interceptors?.response,
63
+ serverInterceptor: interceptors?.response
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
+ router.route('/').get(graphqlMiddleware);
73
+ router.route('/').post(graphqlMiddleware);
74
+ return router;
75
+ };
76
+ exports.createGraphQLRoutes = createGraphQLRoutes;
@@ -0,0 +1 @@
1
+ export * from './prepareGraphQLRequestConfigs/prepareGraphQLRequestConfigs';
@@ -1,18 +1,17 @@
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]; } };
7
- }
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"), exports);
18
- __exportStar(require("./getRestUrlSuggestions"), exports);
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]; } };
7
+ }
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("./prepareGraphQLRequestConfigs/prepareGraphQLRequestConfigs"), exports);
@@ -1,2 +1,2 @@
1
- import type { GraphQLRequestConfig } from '../../utils/types';
2
- export declare const prepareGraphQLRequestConfigs: (requestConfigs: GraphQLRequestConfig[]) => GraphQLRequestConfig[];
1
+ import type { GraphQLRequestConfig } from '../../../../../utils/types';
2
+ export declare const prepareGraphQLRequestConfigs: (requestConfigs: GraphQLRequestConfig[]) => GraphQLRequestConfig[];
@@ -1,28 +1,28 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.prepareGraphQLRequestConfigs = void 0;
4
- const helpers_1 = require("../../utils/helpers");
5
- const calculateRouteConfigWeight = (graphQLRouteConfig) => {
6
- const { entities } = graphQLRouteConfig;
7
- if (!entities)
8
- return 0;
9
- let routeConfigWeight = 0;
10
- const { headers, query, variables } = entities;
11
- if (headers)
12
- routeConfigWeight += Object.keys(headers).length;
13
- if (query)
14
- routeConfigWeight += Object.keys(query).length;
15
- if (variables)
16
- routeConfigWeight += (0, helpers_1.isPlainObject)(variables) ? Object.keys(variables).length : 1;
17
- return routeConfigWeight;
18
- };
19
- const prepareGraphQLRequestConfigs = (requestConfigs) => {
20
- requestConfigs.forEach((requestConfig) => {
21
- requestConfig.routes.sort((first, second) =>
22
- // ✅ important:
23
- // Lift more specific configs for correct working of routes
24
- calculateRouteConfigWeight(second) - calculateRouteConfigWeight(first));
25
- });
26
- return requestConfigs;
27
- };
28
- exports.prepareGraphQLRequestConfigs = prepareGraphQLRequestConfigs;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.prepareGraphQLRequestConfigs = void 0;
4
+ const helpers_1 = require("../../../../../utils/helpers");
5
+ const calculateRouteConfigWeight = (graphQLRouteConfig) => {
6
+ const { entities } = graphQLRouteConfig;
7
+ if (!entities)
8
+ return 0;
9
+ let routeConfigWeight = 0;
10
+ const { headers, query, variables } = entities;
11
+ if (headers)
12
+ routeConfigWeight += Object.keys(headers).length;
13
+ if (query)
14
+ routeConfigWeight += Object.keys(query).length;
15
+ if (variables)
16
+ routeConfigWeight += (0, helpers_1.isPlainObject)(variables) ? Object.keys(variables).length : 1;
17
+ return routeConfigWeight;
18
+ };
19
+ const prepareGraphQLRequestConfigs = (requestConfigs) => {
20
+ requestConfigs.forEach((requestConfig) => {
21
+ requestConfig.routes.sort((first, second) =>
22
+ // ✅ important:
23
+ // Lift more specific configs for correct working of routes
24
+ calculateRouteConfigWeight(second) - calculateRouteConfigWeight(first));
25
+ });
26
+ return requestConfigs;
27
+ };
28
+ exports.prepareGraphQLRequestConfigs = prepareGraphQLRequestConfigs;
@@ -0,0 +1 @@
1
+ export * from './createGraphQLRoutes/createGraphQLRoutes';
@@ -1,17 +1,17 @@
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]; } };
7
- }
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"), exports);
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]; } };
7
+ }
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("./createGraphQLRoutes/createGraphQLRoutes"), exports);
@@ -1,3 +1,3 @@
1
- import type { Express } from 'express';
2
- import type { Cors } from '../../utils/types';
3
- export declare const corsMiddleware: (server: Express, cors: Cors) => void;
1
+ import type { Express } from 'express';
2
+ import type { Cors } from '../../../utils/types';
3
+ export declare const corsMiddleware: (server: Express, cors: Cors) => void;
@@ -1,44 +1,44 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.corsMiddleware = void 0;
4
- const constants_1 = require("../../utils/constants");
5
- const getAllowedOrigins_1 = require("../getOrigins/getAllowedOrigins");
6
- const corsMiddleware = (server, cors) => {
7
- server.use(async (req, res, next) => {
8
- if (Array.isArray(cors.origin) && !cors.origin.length) {
9
- return next();
10
- }
11
- let allowedOrigins = [];
12
- if (typeof cors.origin === 'function') {
13
- const origins = await cors.origin(req);
14
- allowedOrigins = (0, getAllowedOrigins_1.getAllowedOrigins)(origins);
15
- }
16
- else {
17
- allowedOrigins = (0, getAllowedOrigins_1.getAllowedOrigins)(cors.origin);
18
- }
19
- const { origin } = req.headers;
20
- if (!allowedOrigins?.length || !origin) {
21
- return next();
22
- }
23
- const isRequestOriginAllowed = allowedOrigins.some((allowedOrigin) => {
24
- if (allowedOrigin instanceof RegExp) {
25
- return new RegExp(allowedOrigin).test(origin);
26
- }
27
- return allowedOrigin === origin;
28
- });
29
- if (isRequestOriginAllowed) {
30
- res.setHeader('Access-Control-Allow-Origin', origin);
31
- res.setHeader('Access-Control-Allow-Credentials', `${cors.credentials ?? constants_1.DEFAULT.CORS.CREDENTIALS}`);
32
- res.setHeader('Access-Control-Expose-Headers', cors.exposedHeaders ?? constants_1.DEFAULT.CORS.EXPOSED_HEADERS);
33
- if (req.method === 'OPTIONS') {
34
- res.setHeader('Access-Control-Allow-Methods', cors.methods ?? constants_1.DEFAULT.CORS.METHODS);
35
- res.setHeader('Access-Control-Allow-Headers', cors.allowedHeaders ?? constants_1.DEFAULT.CORS.ALLOWED_HEADERS);
36
- res.setHeader('Access-Control-Max-Age', cors.maxAge ?? constants_1.DEFAULT.CORS.MAX_AGE);
37
- res.sendStatus(204);
38
- return res.end();
39
- }
40
- }
41
- return next();
42
- });
43
- };
44
- exports.corsMiddleware = corsMiddleware;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.corsMiddleware = void 0;
4
+ const constants_1 = require("../../../utils/constants");
5
+ const helpers_1 = require("./helpers");
6
+ const corsMiddleware = (server, cors) => {
7
+ server.use(async (req, res, next) => {
8
+ if (Array.isArray(cors.origin) && !cors.origin.length) {
9
+ return next();
10
+ }
11
+ let allowedOrigins = [];
12
+ if (typeof cors.origin === 'function') {
13
+ const origins = await cors.origin(req);
14
+ allowedOrigins = (0, helpers_1.getAllowedOrigins)(origins);
15
+ }
16
+ else {
17
+ allowedOrigins = (0, helpers_1.getAllowedOrigins)(cors.origin);
18
+ }
19
+ const { origin } = req.headers;
20
+ if (!allowedOrigins?.length || !origin) {
21
+ return next();
22
+ }
23
+ const isRequestOriginAllowed = allowedOrigins.some((allowedOrigin) => {
24
+ if (allowedOrigin instanceof RegExp) {
25
+ return new RegExp(allowedOrigin).test(origin);
26
+ }
27
+ return allowedOrigin === origin;
28
+ });
29
+ if (isRequestOriginAllowed) {
30
+ res.setHeader('Access-Control-Allow-Origin', origin);
31
+ res.setHeader('Access-Control-Allow-Credentials', `${cors.credentials ?? constants_1.DEFAULT.CORS.CREDENTIALS}`);
32
+ res.setHeader('Access-Control-Expose-Headers', cors.exposedHeaders ?? constants_1.DEFAULT.CORS.EXPOSED_HEADERS);
33
+ if (req.method === 'OPTIONS') {
34
+ res.setHeader('Access-Control-Allow-Methods', cors.methods ?? constants_1.DEFAULT.CORS.METHODS);
35
+ res.setHeader('Access-Control-Allow-Headers', cors.allowedHeaders ?? constants_1.DEFAULT.CORS.ALLOWED_HEADERS);
36
+ res.setHeader('Access-Control-Max-Age', cors.maxAge ?? constants_1.DEFAULT.CORS.MAX_AGE);
37
+ res.sendStatus(204);
38
+ return res.end();
39
+ }
40
+ }
41
+ return next();
42
+ });
43
+ };
44
+ exports.corsMiddleware = corsMiddleware;
@@ -1,2 +1,2 @@
1
- import type { CorsOrigin } from '../../utils/types';
2
- export declare const getAllowedOrigins: (origin: CorsOrigin) => (string | RegExp)[];
1
+ import type { CorsOrigin } from '../../../../../utils/types';
2
+ export declare const getAllowedOrigins: (origin: CorsOrigin) => (string | RegExp)[];
@@ -1,13 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getAllowedOrigins = void 0;
4
- const getAllowedOrigins = (origin) => {
5
- if (Array.isArray(origin)) {
6
- return origin;
7
- }
8
- if (typeof origin === 'string' || origin instanceof RegExp) {
9
- return [origin];
10
- }
11
- throw new Error('Invalid cors origin format');
12
- };
13
- exports.getAllowedOrigins = getAllowedOrigins;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAllowedOrigins = void 0;
4
+ const getAllowedOrigins = (origin) => {
5
+ if (Array.isArray(origin)) {
6
+ return origin;
7
+ }
8
+ if (typeof origin === 'string' || origin instanceof RegExp) {
9
+ return [origin];
10
+ }
11
+ throw new Error('Invalid cors origin format');
12
+ };
13
+ exports.getAllowedOrigins = getAllowedOrigins;
@@ -0,0 +1 @@
1
+ export * from './getAllowedOrigins/getAllowedOrigins';
@@ -1,17 +1,17 @@
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]; } };
7
- }
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("./getRestUrlSuggestions"), exports);
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]; } };
7
+ }
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("./getAllowedOrigins/getAllowedOrigins"), exports);
@@ -0,0 +1,4 @@
1
+ export * from './staticMiddleware/staticMiddleware';
2
+ export * from './corsMiddleware/corsMiddleware';
3
+ export * from './noCorsMiddleware/noCorsMiddleware';
4
+ export * from './notFoundMiddleware/notFoundMiddleware';