mock-config-server 3.7.0 → 4.0.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.
- package/README.md +272 -224
- package/dist/bin/bin.js +1 -1
- package/dist/bin/build.d.ts +3 -1
- package/dist/bin/build.js +10 -0
- package/dist/bin/helpers/createTemplate.d.ts +3 -3
- package/dist/bin/helpers/createTemplate.js +1 -1
- package/dist/bin/helpers/index.d.ts +0 -3
- package/dist/bin/helpers/index.js +0 -3
- package/dist/bin/helpers/resolveConfigFile.d.ts +2 -2
- package/dist/bin/helpers/resolveConfigFile.js +2 -2
- package/dist/bin/helpers/resolveConfigFilePath.js +4 -4
- package/dist/bin/helpers/resolveExportsFromSourceCode.js +1 -2
- package/dist/bin/init.js +5 -8
- package/dist/bin/run.d.ts +1 -2
- package/dist/bin/run.js +1 -6
- package/dist/bin/runFlatConfig.d.ts +5 -0
- package/dist/bin/runFlatConfig.js +36 -0
- package/dist/bin/templates/js/full/mock-server.config.js +10 -7
- package/dist/bin/templates/js/graphql/mock-server.config.js +11 -6
- package/dist/bin/templates/js/rest/mock-server.config.js +11 -6
- package/dist/bin/templates/ts/full/mock-requests/graphql/index.ts +2 -2
- package/dist/bin/templates/ts/full/mock-requests/graphql/user.ts +37 -37
- package/dist/bin/templates/ts/full/mock-requests/graphql/users.ts +14 -14
- package/dist/bin/templates/ts/full/mock-requests/rest/index.ts +2 -2
- package/dist/bin/templates/ts/full/mock-requests/rest/user.ts +37 -37
- package/dist/bin/templates/ts/full/mock-requests/rest/users.ts +14 -14
- package/dist/bin/templates/ts/full/mock-server.config.ts +11 -8
- package/dist/bin/templates/ts/graphql/mock-requests/index.ts +2 -2
- package/dist/bin/templates/ts/graphql/mock-requests/user.ts +37 -37
- package/dist/bin/templates/ts/graphql/mock-requests/users.ts +14 -14
- package/dist/bin/templates/ts/graphql/mock-server.config.ts +12 -7
- package/dist/bin/templates/ts/rest/mock-requests/index.ts +2 -2
- package/dist/bin/templates/ts/rest/mock-requests/user.ts +37 -37
- package/dist/bin/templates/ts/rest/mock-requests/users.ts +14 -14
- package/dist/bin/templates/ts/rest/mock-server.config.ts +12 -7
- package/dist/src/core/database/createDatabaseRoutes/createDatabaseRoutes.js +2 -1
- package/dist/src/core/database/createDatabaseRoutes/helpers/createNestedDatabaseRoutes/createNestedDatabaseRoutes.js +8 -12
- package/dist/src/core/database/createDatabaseRoutes/helpers/filter/filter.d.ts +0 -1
- package/dist/src/core/database/createDatabaseRoutes/helpers/pagination/pagination.d.ts +0 -1
- package/dist/src/core/database/createDatabaseRoutes/helpers/search/search.d.ts +0 -1
- package/dist/src/core/database/createDatabaseRoutes/helpers/sort/sort.d.ts +0 -1
- package/dist/src/core/database/createDatabaseRoutes/helpers/splitDatabaseByNesting/splitDatabaseByNesting.d.ts +1 -1
- package/dist/src/core/database/createDatabaseRoutes/storages/File/FileStorage.d.ts +5 -6
- package/dist/src/core/database/createDatabaseRoutes/storages/File/FileStorage.js +4 -4
- package/dist/src/core/database/createDatabaseRoutes/storages/File/FileWriter.js +2 -2
- package/dist/src/core/database/createDatabaseRoutes/storages/Memory/MemoryStorage.d.ts +6 -7
- package/dist/src/core/database/createOrm/createOrm.d.ts +2 -0
- package/dist/src/core/database/createOrm/createOrm.js +119 -0
- package/dist/src/core/database/createStorage/createStorage.d.ts +2 -0
- package/dist/src/core/database/createStorage/createStorage.js +13 -0
- package/dist/src/core/database/index.d.ts +2 -0
- package/dist/src/core/database/index.js +2 -0
- package/dist/src/core/graphql/createGraphQLRoutes/createGraphQLRoutes.d.ts +1 -1
- package/dist/src/core/graphql/createGraphQLRoutes/createGraphQLRoutes.js +39 -17
- package/dist/src/core/graphql/createGraphQLRoutes/helpers/prepareGraphQLRequestConfigs/prepareGraphQLRequestConfigs.js +2 -2
- package/dist/src/core/middlewares/contextMiddleware/contextMiddleware.d.ts +2 -2
- package/dist/src/core/middlewares/contextMiddleware/contextMiddleware.js +24 -12
- package/dist/src/core/middlewares/destroyerMiddleware/destroyerMiddleware.d.ts +1 -2
- package/dist/src/core/middlewares/index.d.ts +0 -1
- package/dist/src/core/middlewares/index.js +0 -1
- package/dist/src/core/middlewares/requestInterceptorMiddleware/requestInterceptorMiddleware.d.ts +2 -2
- package/dist/src/core/rest/createRestRoutes/createRestRoutes.d.ts +1 -1
- package/dist/src/core/rest/createRestRoutes/createRestRoutes.js +80 -24
- package/dist/src/server/createDatabaseMockServer/createDatabaseMockServer.d.ts +1 -1
- package/dist/src/server/createDatabaseMockServer/createDatabaseMockServer.js +6 -6
- package/dist/src/server/createFlatMockServer/createFlatMockServer.d.ts +3 -0
- package/dist/src/server/createFlatMockServer/createFlatMockServer.js +127 -0
- package/dist/src/server/createGraphQLMockServer/createGraphQLMockServer.d.ts +1 -1
- package/dist/src/server/createGraphQLMockServer/createGraphQLMockServer.js +3 -6
- package/dist/src/server/createMockServer/createMockServer.d.ts +1 -1
- package/dist/src/server/createMockServer/createMockServer.js +3 -5
- package/dist/src/server/createRestMockServer/createRestMockServer.d.ts +1 -1
- package/dist/src/server/createRestMockServer/createRestMockServer.js +3 -6
- package/dist/src/server/index.d.ts +2 -0
- package/dist/src/server/index.js +2 -0
- package/dist/src/server/startDatabaseMockServer/startDatabaseMockServer.d.ts +1 -2
- package/dist/src/server/startFlatMockServer/startFlatMockServer.d.ts +4 -0
- package/dist/src/server/startFlatMockServer/startFlatMockServer.js +28 -0
- package/dist/src/server/startGraphQLMockServer/startGraphQLMockServer.d.ts +1 -2
- package/dist/src/server/startMockServer/startMockServer.d.ts +1 -2
- package/dist/src/server/startRestMockServer/startRestMockServer.d.ts +1 -2
- package/dist/src/utils/constants/checkModes.d.ts +1 -3
- package/dist/src/utils/constants/checkModes.js +3 -19
- package/dist/src/utils/helpers/config/resolveEntityValues/resolveEntityValues.d.ts +20 -2
- package/dist/src/utils/helpers/config/resolveEntityValues/resolveEntityValues.js +37 -71
- package/dist/src/utils/helpers/files/index.d.ts +1 -0
- package/dist/src/utils/helpers/files/index.js +1 -0
- package/dist/src/utils/helpers/files/isFileDescriptor/isFileDescriptor.d.ts +2 -0
- package/dist/src/utils/helpers/files/isFileDescriptor/isFileDescriptor.js +16 -0
- package/dist/src/utils/helpers/files/isFilePathValid/isFilePathValid.js +3 -3
- package/dist/src/utils/helpers/graphql/parseQuery/parseQuery.d.ts +1 -1
- package/dist/src/utils/helpers/index.d.ts +0 -1
- package/dist/src/utils/helpers/index.js +0 -1
- package/dist/src/utils/helpers/interceptors/callRequestInterceptor/callRequestInterceptor.d.ts +1 -1
- package/dist/src/utils/helpers/interceptors/callRequestInterceptor/callRequestInterceptor.js +2 -1
- package/dist/src/utils/helpers/interceptors/callResponseInterceptors/callResponseInterceptors.js +10 -5
- package/dist/src/utils/helpers/logger/callResponseLogger/callResponseLogger.d.ts +1 -1
- package/dist/src/utils/helpers/tests/createTmpDir.js +4 -4
- package/dist/src/utils/helpers/url/convertWin32PathToUnix/convertWin32PathToUnix.js +1 -1
- package/dist/src/utils/helpers/url/urlJoin/urlJoin.js +4 -4
- package/dist/src/utils/types/checkModes.d.ts +14 -7
- package/dist/src/utils/types/database.d.ts +30 -0
- package/dist/src/utils/types/entities.d.ts +13 -43
- package/dist/src/utils/types/files.d.ts +5 -0
- package/dist/src/utils/types/files.js +4 -0
- package/dist/src/utils/types/graphql.d.ts +9 -8
- package/dist/src/utils/types/index.d.ts +1 -0
- package/dist/src/utils/types/index.js +1 -0
- package/dist/src/utils/types/interceptors.d.ts +21 -16
- package/dist/src/utils/types/logger.d.ts +11 -11
- package/dist/src/utils/types/rest.d.ts +17 -12
- package/dist/src/utils/types/server.d.ts +48 -20
- package/dist/src/utils/types/shared.d.ts +1 -1
- package/dist/src/utils/types/utils.d.ts +4 -4
- package/dist/src/utils/types/values.d.ts +3 -4
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/corsSchema/corsSchema.d.ts +2 -2
- package/dist/{bin/helpers → src/utils/validate}/getMostSpecificPathFromError.d.ts +1 -1
- package/dist/src/utils/validate/getValidationMessageFromPath.d.ts +1 -0
- package/dist/src/utils/validate/graphqlConfigSchema/graphqlConfigSchema.d.ts +535 -0
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/graphqlConfigSchema/graphqlConfigSchema.js +14 -6
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/graphqlConfigSchema/routeConfigSchema/routeConfigSchema.d.ts +20 -5
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/graphqlConfigSchema/routeConfigSchema/routeConfigSchema.js +5 -5
- package/dist/src/utils/validate/index.d.ts +14 -0
- package/dist/src/utils/validate/index.js +31 -0
- package/dist/{bin/helpers → src/utils/validate}/isOnlyRequestedDataResolvingPropertyExists.d.ts +1 -1
- package/dist/src/utils/validate/queueSchema/queueSchema.d.ts +20 -0
- package/dist/src/utils/validate/queueSchema/queueSchema.js +24 -0
- package/dist/src/utils/validate/restConfigSchema/restConfigSchema.d.ts +1659 -0
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/restConfigSchema/restConfigSchema.js +13 -5
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/restConfigSchema/routeConfigSchema/routeConfigSchema.d.ts +21 -6
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/restConfigSchema/routeConfigSchema/routeConfigSchema.js +6 -6
- package/dist/src/utils/validate/utils/checkModeSchema/checkModeSchema.d.ts +23 -0
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/utils/checkModeSchema/checkModeSchema.js +24 -1
- package/dist/src/utils/validate/utils/entitiesSchema/entitiesSchema.d.ts +4 -0
- package/dist/src/utils/validate/utils/entitiesSchema/entitiesSchema.js +94 -0
- package/dist/src/utils/validate/utils/extendedDiscriminatedUnion/extendedDiscriminatedUnion.d.ts +8 -0
- package/dist/src/utils/validate/utils/extendedDiscriminatedUnion/extendedDiscriminatedUnion.js +46 -0
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/utils/index.d.ts +2 -2
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/utils/index.js +2 -2
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/utils/jsonSchema/jsonSchema.d.ts +2 -2
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/utils/jsonSchema/jsonSchema.js +1 -1
- package/dist/src/utils/validate/utils/nestedObjectOrArraySchema/nestedObjectOrArraySchema.d.ts +3 -0
- package/dist/src/utils/validate/utils/nestedObjectOrArraySchema/nestedObjectOrArraySchema.js +22 -0
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/utils/requiredPropertiesSchema/requiredPropertiesSchema.d.ts +1 -1
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/utils/requiredPropertiesSchema/requiredPropertiesSchema.js +1 -1
- package/dist/src/utils/validate/validateApiMockServerConfig.d.ts +2 -0
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/validateApiMockServerConfig.js +4 -3
- package/dist/src/utils/validate/validateFlatMockServerConfig.d.ts +2 -0
- package/dist/src/utils/validate/validateFlatMockServerConfig.js +53 -0
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/validateMockServerConfig.d.ts +1 -1
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/validateMockServerConfig.js +4 -3
- package/package.json +51 -52
- package/dist/bin/helpers/getValidationMessageFromPath.d.ts +0 -1
- package/dist/bin/validateMockServerConfig/graphqlConfigSchema/graphqlConfigSchema.d.ts +0 -258
- package/dist/bin/validateMockServerConfig/queueSchema/queueSchema.d.ts +0 -8
- package/dist/bin/validateMockServerConfig/queueSchema/queueSchema.js +0 -21
- package/dist/bin/validateMockServerConfig/restConfigSchema/restConfigSchema.d.ts +0 -743
- package/dist/bin/validateMockServerConfig/utils/checkModeSchema/checkModeSchema.d.ts +0 -5
- package/dist/bin/validateMockServerConfig/utils/entitiesSchema/entitiesSchema.d.ts +0 -71
- package/dist/bin/validateMockServerConfig/utils/entitiesSchema/entitiesSchema.js +0 -124
- package/dist/bin/validateMockServerConfig/validateApiMockServerConfig.d.ts +0 -2
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/getGraphqlUrlSuggestions/getGraphqlUrlSuggestions.d.ts +0 -11
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/getGraphqlUrlSuggestions/getGraphqlUrlSuggestions.js +0 -25
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/getLevenshteinDistance/getLevenshteinDistance.d.ts +0 -1
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/getLevenshteinDistance/getLevenshteinDistance.js +0 -85
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/getRestUrlSuggestions.d.ts +0 -11
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/getRestUrlSuggestions.js +0 -39
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/getActualRestUrlMeaningfulString/getActualRestUrlMeaningfulString.d.ts +0 -1
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/getActualRestUrlMeaningfulString/getActualRestUrlMeaningfulString.js +0 -11
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/getPatternRestUrlMeaningfulString/getPatternRestUrlMeaningfulString.d.ts +0 -1
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/getPatternRestUrlMeaningfulString/getPatternRestUrlMeaningfulString.js +0 -11
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/index.d.ts +0 -2
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/index.js +0 -19
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/index.d.ts +0 -3
- package/dist/src/core/middlewares/notFoundMiddleware/helpers/index.js +0 -20
- package/dist/src/core/middlewares/notFoundMiddleware/notFoundMiddleware.d.ts +0 -3
- package/dist/src/core/middlewares/notFoundMiddleware/notFoundMiddleware.js +0 -65
- package/dist/src/static/views/assets/icons/scheme-dark.svg +0 -3
- package/dist/src/static/views/assets/icons/scheme-light.svg +0 -3
- package/dist/src/static/views/assets/images/404.png +0 -0
- package/dist/src/static/views/assets/images/logo.png +0 -0
- package/dist/src/static/views/assets/styles/global.css +0 -88
- package/dist/src/static/views/components/header/index.css +0 -55
- package/dist/src/static/views/components/header/index.ejs +0 -40
- package/dist/src/static/views/components/header/index.js +0 -1
- package/dist/src/static/views/features/scheme/dark.css +0 -13
- package/dist/src/static/views/features/scheme/index.ejs +0 -3
- package/dist/src/static/views/features/scheme/index.js +0 -31
- package/dist/src/static/views/features/scheme/light.css +0 -13
- package/dist/src/static/views/features/tab/index.css +0 -30
- package/dist/src/static/views/features/tab/index.ejs +0 -2
- package/dist/src/static/views/features/tab/index.js +0 -12
- package/dist/src/static/views/pages/404/index.css +0 -10
- package/dist/src/static/views/pages/404/index.ejs +0 -82
- package/dist/src/utils/helpers/isRegExp/isRegExp.d.ts +0 -1
- package/dist/src/utils/helpers/isRegExp/isRegExp.js +0 -11
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/baseUrlSchema/baseUrlSchema.d.ts +0 -0
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/baseUrlSchema/baseUrlSchema.js +0 -0
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/corsSchema/corsSchema.js +0 -0
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/databaseConfigSchema/databaseConfigSchema.d.ts +0 -0
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/databaseConfigSchema/databaseConfigSchema.js +0 -0
- package/dist/{bin/helpers → src/utils/validate}/getMostSpecificPathFromError.js +0 -0
- package/dist/{bin/helpers → src/utils/validate}/getValidationMessageFromPath.js +0 -0
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/interceptorsSchema/interceptorsSchema.d.ts +0 -0
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/interceptorsSchema/interceptorsSchema.js +0 -0
- package/dist/{bin/helpers → src/utils/validate}/isOnlyRequestedDataResolvingPropertyExists.js +0 -0
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/portSchema/portSchema.d.ts +0 -0
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/portSchema/portSchema.js +0 -0
- package/dist/{bin/validateMockServerConfig → src/utils/validate}/settingsSchema/settingsSchema.d.ts +2 -2
- /package/dist/{bin/validateMockServerConfig → src/utils/validate}/settingsSchema/settingsSchema.js +0 -0
- /package/dist/{bin/validateMockServerConfig → src/utils/validate}/staticPathSchema/staticPathSchema.d.ts +0 -0
- /package/dist/{bin/validateMockServerConfig → src/utils/validate}/staticPathSchema/staticPathSchema.js +0 -0
- /package/dist/{bin/validateMockServerConfig → src/utils/validate}/utils/plainObjectSchema/plainObjectSchema.d.ts +0 -0
- /package/dist/{bin/validateMockServerConfig → src/utils/validate}/utils/plainObjectSchema/plainObjectSchema.js +0 -0
- /package/dist/{bin/validateMockServerConfig → src/utils/validate}/utils/sharedSchema/sharedSchema.d.ts +0 -0
- /package/dist/{bin/validateMockServerConfig → src/utils/validate}/utils/sharedSchema/sharedSchema.js +0 -0
|
@@ -30,11 +30,10 @@ const createGraphQLRoutes = ({ router, graphqlConfig, serverResponseInterceptor
|
|
|
30
30
|
const matchedRequestConfig = preparedGraphQLRequestConfig.find((requestConfig)=>{
|
|
31
31
|
var _graphQLInput_query;
|
|
32
32
|
if (requestConfig.operationType !== query.operationType) return false;
|
|
33
|
-
if ('query' in requestConfig && requestConfig.query.replace(/\s+/
|
|
33
|
+
if ('query' in requestConfig && requestConfig.query.replace(/\s+/g, '') !== ((_graphQLInput_query = graphQLInput.query) === null || _graphQLInput_query === void 0 ? void 0 : _graphQLInput_query.replace(/\s+/g, ''))) return false;
|
|
34
34
|
if ('operationName' in requestConfig) {
|
|
35
35
|
if (!query.operationName) return false;
|
|
36
|
-
|
|
37
|
-
return requestConfig.operationName === query.operationName;
|
|
36
|
+
return requestConfig.operationName instanceof RegExp ? new RegExp(requestConfig.operationName).test(query.operationName) : requestConfig.operationName === query.operationName;
|
|
38
37
|
}
|
|
39
38
|
return true;
|
|
40
39
|
});
|
|
@@ -49,24 +48,47 @@ const createGraphQLRoutes = ({ router, graphqlConfig, serverResponseInterceptor
|
|
|
49
48
|
}
|
|
50
49
|
const matchedRouteConfig = matchedRequestConfig.routes.find(({ entities })=>{
|
|
51
50
|
if (!entities) return true;
|
|
52
|
-
const
|
|
53
|
-
return
|
|
54
|
-
|
|
55
|
-
//
|
|
51
|
+
const entityEntries = Object.entries(entities);
|
|
52
|
+
return entityEntries.every(([entityName, entityDescriptorOrValue])=>{
|
|
53
|
+
// ✅ important:
|
|
54
|
+
// check whole variables as plain value strictly if descriptor used for variables
|
|
56
55
|
const isEntityVariablesByTopLevelDescriptor = entityName === 'variables' && (0, _helpers.isEntityDescriptor)(entityDescriptorOrValue);
|
|
57
56
|
if (isEntityVariablesByTopLevelDescriptor) {
|
|
58
|
-
|
|
57
|
+
const variablesDescriptor = entityDescriptorOrValue;
|
|
58
|
+
if (variablesDescriptor.checkMode === 'exists' || variablesDescriptor.checkMode === 'notExists') {
|
|
59
|
+
return (0, _helpers.resolveEntityValues)({
|
|
60
|
+
actualValue: graphQLInput.variables,
|
|
61
|
+
checkMode: variablesDescriptor.checkMode
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
var _variablesDescriptor_oneOf;
|
|
65
|
+
return (0, _helpers.resolveEntityValues)({
|
|
66
|
+
actualValue: graphQLInput.variables,
|
|
67
|
+
descriptorValue: variablesDescriptor.value,
|
|
68
|
+
checkMode: variablesDescriptor.checkMode,
|
|
69
|
+
oneOf: (_variablesDescriptor_oneOf = variablesDescriptor.oneOf) !== null && _variablesDescriptor_oneOf !== void 0 ? _variablesDescriptor_oneOf : false
|
|
70
|
+
});
|
|
59
71
|
}
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const recordOrArrayEntries = Object.entries(entityDescriptorOrValue);
|
|
65
|
-
return recordOrArrayEntries.every(([entityKey, entityValue])=>{
|
|
66
|
-
const { checkMode, value: descriptorValue } = (0, _helpers.convertToEntityDescriptor)(entityValue);
|
|
67
|
-
const flattenEntity = (0, _flat.flatten)(entityName === 'variables' ? graphQLInput.variables : request[entityName]);
|
|
72
|
+
const actualEntity = (0, _flat.flatten)(entityName === 'variables' ? graphQLInput.variables : request[entityName]);
|
|
73
|
+
const entityValueEntries = Object.entries(entityDescriptorOrValue);
|
|
74
|
+
return entityValueEntries.every(([entityPropertyKey, entityPropertyDescriptorOrValue])=>{
|
|
75
|
+
const entityPropertyDescriptor = (0, _helpers.convertToEntityDescriptor)(entityPropertyDescriptorOrValue);
|
|
68
76
|
// ✅ important: transform header keys to lower case because browsers send headers in lowercase
|
|
69
|
-
|
|
77
|
+
const actualPropertyKey = entityName === 'headers' ? entityPropertyKey.toLowerCase() : entityPropertyKey;
|
|
78
|
+
const actualPropertyValue = actualEntity[actualPropertyKey];
|
|
79
|
+
if (entityPropertyDescriptor.checkMode === 'exists' || entityPropertyDescriptor.checkMode === 'notExists') {
|
|
80
|
+
return (0, _helpers.resolveEntityValues)({
|
|
81
|
+
actualValue: actualPropertyValue,
|
|
82
|
+
checkMode: entityPropertyDescriptor.checkMode
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
var _entityPropertyDescriptor_oneOf;
|
|
86
|
+
return (0, _helpers.resolveEntityValues)({
|
|
87
|
+
actualValue: actualPropertyValue,
|
|
88
|
+
descriptorValue: entityPropertyDescriptor.value,
|
|
89
|
+
checkMode: entityPropertyDescriptor.checkMode,
|
|
90
|
+
oneOf: (_entityPropertyDescriptor_oneOf = entityPropertyDescriptor.oneOf) !== null && _entityPropertyDescriptor_oneOf !== void 0 ? _entityPropertyDescriptor_oneOf : false
|
|
91
|
+
});
|
|
70
92
|
});
|
|
71
93
|
});
|
|
72
94
|
});
|
|
@@ -18,7 +18,7 @@ const calculateRouteConfigWeight = (graphQLRouteConfig)=>{
|
|
|
18
18
|
if (cookies) routeConfigWeight += Object.keys(cookies).length;
|
|
19
19
|
if (query) routeConfigWeight += Object.keys(query).length;
|
|
20
20
|
if (variables) {
|
|
21
|
-
if (
|
|
21
|
+
if (variables.checkMode) {
|
|
22
22
|
// ✅ important:
|
|
23
23
|
// check that actual value check modes does not have `value` for compare
|
|
24
24
|
if (variables.checkMode === 'exists' || variables.checkMode === 'notExists') {
|
|
@@ -28,7 +28,7 @@ const calculateRouteConfigWeight = (graphQLRouteConfig)=>{
|
|
|
28
28
|
routeConfigWeight += (0, _helpers.isPlainObject)(variables.value) ? Object.keys(variables.value).length : 1;
|
|
29
29
|
return routeConfigWeight;
|
|
30
30
|
}
|
|
31
|
-
routeConfigWeight +=
|
|
31
|
+
routeConfigWeight += Object.keys(variables).length;
|
|
32
32
|
}
|
|
33
33
|
return routeConfigWeight;
|
|
34
34
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Express } from 'express';
|
|
2
|
-
import type { GraphQLEntity, GraphQLOperationName, GraphQLOperationType } from '../../../utils/types';
|
|
2
|
+
import type { GraphQLEntity, GraphQLOperationName, GraphQLOperationType, MockServerConfig } from '../../../utils/types';
|
|
3
3
|
declare global {
|
|
4
4
|
namespace Express {
|
|
5
5
|
interface Request {
|
|
@@ -14,4 +14,4 @@ declare global {
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
-
export declare const contextMiddleware: (server: Express) => void;
|
|
17
|
+
export declare const contextMiddleware: (server: Express, { database }: Pick<MockServerConfig, "database">) => void;
|
|
@@ -8,26 +8,38 @@ Object.defineProperty(exports, "contextMiddleware", {
|
|
|
8
8
|
return contextMiddleware;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
+
const _database = require("../../database");
|
|
11
12
|
const _helpers = require("../../../utils/helpers");
|
|
12
|
-
const contextMiddleware = (server)=>{
|
|
13
|
+
const contextMiddleware = (server, { database })=>{
|
|
13
14
|
let requestId = 0;
|
|
15
|
+
const context = {
|
|
16
|
+
orm: {}
|
|
17
|
+
};
|
|
18
|
+
if (database) {
|
|
19
|
+
const storage = (0, _database.createStorage)(database.data);
|
|
20
|
+
const orm = (0, _database.createOrm)(storage);
|
|
21
|
+
context.orm = orm;
|
|
22
|
+
}
|
|
14
23
|
server.use((request, _response, next)=>{
|
|
15
24
|
requestId += 1;
|
|
16
25
|
request.id = requestId;
|
|
17
26
|
request.timestamp = Date.now();
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
if (request.method === 'GET' || request.method === 'POST') {
|
|
28
|
+
const graphQLInput = (0, _helpers.getGraphQLInput)(request);
|
|
29
|
+
var _graphQLInput_query;
|
|
30
|
+
const graphQLQuery = (0, _helpers.parseQuery)((_graphQLInput_query = graphQLInput.query) !== null && _graphQLInput_query !== void 0 ? _graphQLInput_query : '');
|
|
31
|
+
if (graphQLInput.query && graphQLQuery) {
|
|
32
|
+
request.graphQL = {
|
|
33
|
+
operationType: graphQLQuery.operationType,
|
|
34
|
+
operationName: graphQLQuery.operationName,
|
|
35
|
+
query: graphQLInput.query,
|
|
36
|
+
variables: graphQLInput.variables
|
|
37
|
+
};
|
|
38
|
+
return next();
|
|
39
|
+
}
|
|
29
40
|
}
|
|
30
41
|
request.graphQL = null;
|
|
42
|
+
request.context = context;
|
|
31
43
|
return next();
|
|
32
44
|
});
|
|
33
45
|
};
|
|
@@ -4,6 +4,5 @@ export * from './corsMiddleware/corsMiddleware';
|
|
|
4
4
|
export * from './destroyerMiddleware/destroyerMiddleware';
|
|
5
5
|
export * from './errorMiddleware/errorMiddleware';
|
|
6
6
|
export * from './noCorsMiddleware/noCorsMiddleware';
|
|
7
|
-
export * from './notFoundMiddleware/notFoundMiddleware';
|
|
8
7
|
export * from './requestInterceptorMiddleware/requestInterceptorMiddleware';
|
|
9
8
|
export * from './staticMiddleware/staticMiddleware';
|
|
@@ -8,7 +8,6 @@ _export_star(require("./corsMiddleware/corsMiddleware"), exports);
|
|
|
8
8
|
_export_star(require("./destroyerMiddleware/destroyerMiddleware"), exports);
|
|
9
9
|
_export_star(require("./errorMiddleware/errorMiddleware"), exports);
|
|
10
10
|
_export_star(require("./noCorsMiddleware/noCorsMiddleware"), exports);
|
|
11
|
-
_export_star(require("./notFoundMiddleware/notFoundMiddleware"), exports);
|
|
12
11
|
_export_star(require("./requestInterceptorMiddleware/requestInterceptorMiddleware"), exports);
|
|
13
12
|
_export_star(require("./staticMiddleware/staticMiddleware"), exports);
|
|
14
13
|
function _export_star(from, to) {
|
package/dist/src/core/middlewares/requestInterceptorMiddleware/requestInterceptorMiddleware.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Express } from 'express';
|
|
2
2
|
import type { RequestInterceptor } from '../../../utils/types';
|
|
3
3
|
interface RequestInterceptorMiddlewareParams {
|
|
4
|
-
server: Express;
|
|
5
|
-
path?: string;
|
|
6
4
|
interceptor: RequestInterceptor;
|
|
5
|
+
path?: string;
|
|
6
|
+
server: Express;
|
|
7
7
|
}
|
|
8
8
|
export declare const requestInterceptorMiddleware: ({ server, path, interceptor }: RequestInterceptorMiddlewareParams) => void;
|
|
9
9
|
export {};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { IRouter } from 'express';
|
|
2
2
|
import type { Interceptors, RestConfig } from '../../../utils/types';
|
|
3
3
|
interface CreateRestRoutesParams {
|
|
4
|
-
router: IRouter;
|
|
5
4
|
restConfig: RestConfig;
|
|
5
|
+
router: IRouter;
|
|
6
6
|
serverResponseInterceptor?: Interceptors<'rest'>['response'];
|
|
7
7
|
}
|
|
8
8
|
export declare const createRestRoutes: ({ router, restConfig, serverResponseInterceptor }: CreateRestRoutesParams) => IRouter;
|
|
@@ -9,7 +9,8 @@ Object.defineProperty(exports, "createRestRoutes", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
const _flat = require("flat");
|
|
12
|
-
const
|
|
12
|
+
const _nodefs = /*#__PURE__*/ _interop_require_default(require("node:fs"));
|
|
13
|
+
const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
|
|
13
14
|
const _helpers = require("../../../utils/helpers");
|
|
14
15
|
const _helpers1 = require("./helpers");
|
|
15
16
|
function _interop_require_default(obj) {
|
|
@@ -29,29 +30,56 @@ const createRestRoutes = ({ router, restConfig, serverResponseInterceptor })=>{
|
|
|
29
30
|
}
|
|
30
31
|
const matchedRouteConfig = requestConfig.routes.find(({ entities })=>{
|
|
31
32
|
if (!entities) return true;
|
|
32
|
-
const
|
|
33
|
-
return
|
|
34
|
-
const { checkMode, value: descriptorValue } = (0, _helpers.convertToEntityDescriptor)(entityDescriptorOrValue);
|
|
33
|
+
const entityEntries = Object.entries(entities);
|
|
34
|
+
return entityEntries.every(([entityName, entityDescriptorOrValue])=>{
|
|
35
35
|
// ✅ important:
|
|
36
36
|
// check whole body as plain value strictly if descriptor used for body
|
|
37
37
|
const isEntityBodyByTopLevelDescriptor = entityName === 'body' && (0, _helpers.isEntityDescriptor)(entityDescriptorOrValue);
|
|
38
38
|
if (isEntityBodyByTopLevelDescriptor) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
const bodyDescriptor = entityDescriptorOrValue;
|
|
40
|
+
if (bodyDescriptor.checkMode === 'exists' || bodyDescriptor.checkMode === 'notExists') {
|
|
41
|
+
return (0, _helpers.resolveEntityValues)({
|
|
42
|
+
actualValue: request.body,
|
|
43
|
+
checkMode: bodyDescriptor.checkMode
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
var _bodyDescriptor_oneOf;
|
|
47
|
+
return (0, _helpers.resolveEntityValues)({
|
|
48
|
+
actualValue: request.body,
|
|
49
|
+
descriptorValue: bodyDescriptor.value,
|
|
50
|
+
checkMode: bodyDescriptor.checkMode,
|
|
51
|
+
oneOf: (_bodyDescriptor_oneOf = bodyDescriptor.oneOf) !== null && _bodyDescriptor_oneOf !== void 0 ? _bodyDescriptor_oneOf : false
|
|
52
|
+
});
|
|
42
53
|
}
|
|
43
54
|
const isEntityBodyByTopLevelArray = entityName === 'body' && Array.isArray(entityDescriptorOrValue);
|
|
44
55
|
if (isEntityBodyByTopLevelArray) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
56
|
+
if (!Array.isArray(request.body)) return false;
|
|
57
|
+
return (0, _helpers.resolveEntityValues)({
|
|
58
|
+
actualValue: request.body,
|
|
59
|
+
descriptorValue: entityDescriptorOrValue,
|
|
60
|
+
checkMode: 'equals'
|
|
61
|
+
});
|
|
48
62
|
}
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
const
|
|
63
|
+
const actualEntity = (0, _flat.flatten)(request[entityName]);
|
|
64
|
+
const entityValueEntries = Object.entries(entityDescriptorOrValue);
|
|
65
|
+
return entityValueEntries.every(([entityPropertyKey, entityPropertyDescriptorOrValue])=>{
|
|
66
|
+
const entityPropertyDescriptor = (0, _helpers.convertToEntityDescriptor)(entityPropertyDescriptorOrValue);
|
|
53
67
|
// ✅ important: transform header keys to lower case because browsers send headers in lowercase
|
|
54
|
-
|
|
68
|
+
const actualPropertyKey = entityName === 'headers' ? entityPropertyKey.toLowerCase() : entityPropertyKey;
|
|
69
|
+
const actualPropertyValue = actualEntity[actualPropertyKey];
|
|
70
|
+
if (entityPropertyDescriptor.checkMode === 'exists' || entityPropertyDescriptor.checkMode === 'notExists') {
|
|
71
|
+
return (0, _helpers.resolveEntityValues)({
|
|
72
|
+
actualValue: actualPropertyValue,
|
|
73
|
+
checkMode: entityPropertyDescriptor.checkMode
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
var _entityPropertyDescriptor_oneOf;
|
|
77
|
+
return (0, _helpers.resolveEntityValues)({
|
|
78
|
+
actualValue: actualPropertyValue,
|
|
79
|
+
descriptorValue: entityPropertyDescriptor.value,
|
|
80
|
+
checkMode: entityPropertyDescriptor.checkMode,
|
|
81
|
+
oneOf: (_entityPropertyDescriptor_oneOf = entityPropertyDescriptor.oneOf) !== null && _entityPropertyDescriptor_oneOf !== void 0 ? _entityPropertyDescriptor_oneOf : false
|
|
82
|
+
});
|
|
55
83
|
});
|
|
56
84
|
});
|
|
57
85
|
});
|
|
@@ -62,13 +90,13 @@ const createRestRoutes = ({ router, restConfig, serverResponseInterceptor })=>{
|
|
|
62
90
|
interceptor: matchedRouteConfig.interceptors.request
|
|
63
91
|
});
|
|
64
92
|
}
|
|
65
|
-
|
|
93
|
+
const matchedRouteConfigDataDescriptor = {};
|
|
66
94
|
if (((_matchedRouteConfig_settings = matchedRouteConfig.settings) === null || _matchedRouteConfig_settings === void 0 ? void 0 : _matchedRouteConfig_settings.polling) && 'queue' in matchedRouteConfig) {
|
|
67
95
|
if (!matchedRouteConfig.queue.length) return next();
|
|
68
96
|
const shallowMatchedRouteConfig = matchedRouteConfig;
|
|
69
97
|
var _shallowMatchedRouteConfig___pollingIndex;
|
|
70
98
|
let index = (_shallowMatchedRouteConfig___pollingIndex = shallowMatchedRouteConfig.__pollingIndex) !== null && _shallowMatchedRouteConfig___pollingIndex !== void 0 ? _shallowMatchedRouteConfig___pollingIndex : 0;
|
|
71
|
-
const { time
|
|
99
|
+
const { time } = matchedRouteConfig.queue[index];
|
|
72
100
|
const updateIndex = ()=>{
|
|
73
101
|
if (matchedRouteConfig.queue.length - 1 === index) {
|
|
74
102
|
index = 0;
|
|
@@ -77,6 +105,7 @@ const createRestRoutes = ({ router, restConfig, serverResponseInterceptor })=>{
|
|
|
77
105
|
}
|
|
78
106
|
shallowMatchedRouteConfig.__pollingIndex = index;
|
|
79
107
|
};
|
|
108
|
+
const queueItem = matchedRouteConfig.queue[index];
|
|
80
109
|
if (time && !shallowMatchedRouteConfig.__timeoutInProgress) {
|
|
81
110
|
shallowMatchedRouteConfig.__timeoutInProgress = true;
|
|
82
111
|
setTimeout(()=>{
|
|
@@ -87,16 +116,21 @@ const createRestRoutes = ({ router, restConfig, serverResponseInterceptor })=>{
|
|
|
87
116
|
if (!time && !shallowMatchedRouteConfig.__timeoutInProgress) {
|
|
88
117
|
updateIndex();
|
|
89
118
|
}
|
|
90
|
-
|
|
119
|
+
if ('data' in queueItem) {
|
|
120
|
+
matchedRouteConfigDataDescriptor.data = queueItem.data;
|
|
121
|
+
}
|
|
122
|
+
if ('file' in queueItem) {
|
|
123
|
+
if (!(0, _helpers.isFilePathValid)(queueItem.file)) return next();
|
|
124
|
+
matchedRouteConfigDataDescriptor.file = queueItem.file;
|
|
125
|
+
}
|
|
91
126
|
}
|
|
92
127
|
if ('data' in matchedRouteConfig) {
|
|
93
|
-
|
|
128
|
+
matchedRouteConfigDataDescriptor.data = matchedRouteConfig.data;
|
|
94
129
|
}
|
|
95
130
|
if ('file' in matchedRouteConfig) {
|
|
96
131
|
if (!(0, _helpers.isFilePathValid)(matchedRouteConfig.file)) return next();
|
|
132
|
+
matchedRouteConfigDataDescriptor.file = matchedRouteConfig.file;
|
|
97
133
|
}
|
|
98
|
-
var _matchedRouteConfig_entities;
|
|
99
|
-
const resolvedData = typeof matchedRouteConfigData === 'function' ? await matchedRouteConfigData(request, (_matchedRouteConfig_entities = matchedRouteConfig.entities) !== null && _matchedRouteConfig_entities !== void 0 ? _matchedRouteConfig_entities : {}) : matchedRouteConfigData;
|
|
100
134
|
if ((_matchedRouteConfig_settings1 = matchedRouteConfig.settings) === null || _matchedRouteConfig_settings1 === void 0 ? void 0 : _matchedRouteConfig_settings1.status) {
|
|
101
135
|
response.statusCode = matchedRouteConfig.settings.status;
|
|
102
136
|
}
|
|
@@ -104,6 +138,18 @@ const createRestRoutes = ({ router, restConfig, serverResponseInterceptor })=>{
|
|
|
104
138
|
// set 'Cache-Control' header for explicit browsers response revalidate: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control
|
|
105
139
|
// this code should place before response interceptors for giving opportunity to rewrite 'Cache-Control' header
|
|
106
140
|
if (request.method === 'GET') response.set('Cache-control', 'no-cache');
|
|
141
|
+
let resolvedData = null;
|
|
142
|
+
if (matchedRouteConfigDataDescriptor.data) {
|
|
143
|
+
var _matchedRouteConfig_entities;
|
|
144
|
+
resolvedData = typeof matchedRouteConfigDataDescriptor.data === 'function' ? await matchedRouteConfigDataDescriptor.data(request, (_matchedRouteConfig_entities = matchedRouteConfig.entities) !== null && _matchedRouteConfig_entities !== void 0 ? _matchedRouteConfig_entities : {}) : matchedRouteConfigDataDescriptor.data;
|
|
145
|
+
}
|
|
146
|
+
if (matchedRouteConfigDataDescriptor.file) {
|
|
147
|
+
const buffer = _nodefs.default.readFileSync(_nodepath.default.resolve(matchedRouteConfigDataDescriptor.file));
|
|
148
|
+
resolvedData = {
|
|
149
|
+
path: matchedRouteConfigDataDescriptor.file,
|
|
150
|
+
file: buffer
|
|
151
|
+
};
|
|
152
|
+
}
|
|
107
153
|
const data = await (0, _helpers.callResponseInterceptors)({
|
|
108
154
|
data: resolvedData,
|
|
109
155
|
request,
|
|
@@ -118,10 +164,20 @@ const createRestRoutes = ({ router, restConfig, serverResponseInterceptor })=>{
|
|
|
118
164
|
if ((_matchedRouteConfig_settings2 = matchedRouteConfig.settings) === null || _matchedRouteConfig_settings2 === void 0 ? void 0 : _matchedRouteConfig_settings2.delay) {
|
|
119
165
|
await (0, _helpers.sleep)(matchedRouteConfig.settings.delay);
|
|
120
166
|
}
|
|
121
|
-
if (
|
|
122
|
-
|
|
167
|
+
if ((0, _helpers.isFileDescriptor)(data)) {
|
|
168
|
+
const isFilePathChanged = matchedRouteConfigDataDescriptor.file !== data.path;
|
|
169
|
+
if (isFilePathChanged) {
|
|
170
|
+
if (!(0, _helpers.isFilePathValid)(data.path)) return next();
|
|
171
|
+
data.file = _nodefs.default.readFileSync(_nodepath.default.resolve(data.path));
|
|
172
|
+
}
|
|
173
|
+
// ✅ important: replace backslashes because windows can use them in file path
|
|
174
|
+
const fileName = data.path.replaceAll('\\', '/').split('/').at(-1);
|
|
175
|
+
const fileExtension = fileName.split('.').at(-1);
|
|
176
|
+
response.type(fileExtension);
|
|
177
|
+
response.set('Content-Disposition', `filename=${fileName}`);
|
|
178
|
+
return response.send(data.file);
|
|
123
179
|
}
|
|
124
|
-
|
|
180
|
+
response.json(data);
|
|
125
181
|
}));
|
|
126
182
|
});
|
|
127
183
|
return router;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { Express } from 'express';
|
|
2
2
|
import type { DatabaseMockServerConfig } from '../../utils/types';
|
|
3
|
-
export declare const createDatabaseMockServer: (databaseMockServerConfig: Omit<DatabaseMockServerConfig,
|
|
3
|
+
export declare const createDatabaseMockServer: (databaseMockServerConfig: Omit<DatabaseMockServerConfig, "port">, server?: Express) => Express;
|
|
@@ -12,7 +12,6 @@ const _bodyparser = /*#__PURE__*/ _interop_require_default(require("body-parser"
|
|
|
12
12
|
const _express = /*#__PURE__*/ _interop_require_default(require("express"));
|
|
13
13
|
const _database = require("../../core/database");
|
|
14
14
|
const _middlewares = require("../../core/middlewares");
|
|
15
|
-
const _helpers = require("../../utils/helpers");
|
|
16
15
|
function _interop_require_default(obj) {
|
|
17
16
|
return obj && obj.__esModule ? obj : {
|
|
18
17
|
default: obj
|
|
@@ -21,9 +20,6 @@ function _interop_require_default(obj) {
|
|
|
21
20
|
const createDatabaseMockServer = (databaseMockServerConfig, server = (0, _express.default)())=>{
|
|
22
21
|
var _databaseMockServerConfig_interceptors;
|
|
23
22
|
const { cors, staticPath, data, routes } = databaseMockServerConfig;
|
|
24
|
-
server.set('view engine', 'ejs');
|
|
25
|
-
server.set('views', (0, _helpers.urlJoin)(__dirname, '../../static/views'));
|
|
26
|
-
server.use(_express.default.static((0, _helpers.urlJoin)(__dirname, '../../static/views')));
|
|
27
23
|
server.use(_bodyparser.default.urlencoded({
|
|
28
24
|
extended: false
|
|
29
25
|
}));
|
|
@@ -32,7 +28,12 @@ const createDatabaseMockServer = (databaseMockServerConfig, server = (0, _expres
|
|
|
32
28
|
}));
|
|
33
29
|
server.set('json spaces', 2);
|
|
34
30
|
server.use(_bodyparser.default.text());
|
|
35
|
-
(0, _middlewares.contextMiddleware)(server
|
|
31
|
+
(0, _middlewares.contextMiddleware)(server, {
|
|
32
|
+
database: {
|
|
33
|
+
data,
|
|
34
|
+
routes
|
|
35
|
+
}
|
|
36
|
+
});
|
|
36
37
|
(0, _middlewares.cookieParseMiddleware)(server);
|
|
37
38
|
const serverRequestInterceptor = (_databaseMockServerConfig_interceptors = databaseMockServerConfig.interceptors) === null || _databaseMockServerConfig_interceptors === void 0 ? void 0 : _databaseMockServerConfig_interceptors.request;
|
|
38
39
|
if (serverRequestInterceptor) {
|
|
@@ -56,7 +57,6 @@ const createDatabaseMockServer = (databaseMockServerConfig, server = (0, _expres
|
|
|
56
57
|
routes
|
|
57
58
|
});
|
|
58
59
|
server.use(baseUrl, routerWithDatabaseRoutes);
|
|
59
|
-
(0, _middlewares.notFoundMiddleware)(server, databaseMockServerConfig);
|
|
60
60
|
(0, _middlewares.errorMiddleware)(server);
|
|
61
61
|
return server;
|
|
62
62
|
};
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "createFlatMockServer", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return createFlatMockServer;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _bodyparser = /*#__PURE__*/ _interop_require_default(require("body-parser"));
|
|
12
|
+
const _express = /*#__PURE__*/ _interop_require_default(require("express"));
|
|
13
|
+
const _database = require("../../core/database");
|
|
14
|
+
const _graphql = require("../../core/graphql");
|
|
15
|
+
const _middlewares = require("../../core/middlewares");
|
|
16
|
+
const _rest = require("../../core/rest");
|
|
17
|
+
const _validate = require("../../utils/validate");
|
|
18
|
+
function _interop_require_default(obj) {
|
|
19
|
+
return obj && obj.__esModule ? obj : {
|
|
20
|
+
default: obj
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
const createFlatMockServer = (flatMockServerConfig, server = (0, _express.default)())=>{
|
|
24
|
+
(0, _validate.validateFlatMockServerConfig)(flatMockServerConfig);
|
|
25
|
+
const [option, ...flatMockServerComponents] = flatMockServerConfig;
|
|
26
|
+
const flatMockServerSettings = !('configs' in option) ? option : undefined;
|
|
27
|
+
const { cors, staticPath, interceptors, baseUrl: serverBaseUrl = '/', database } = flatMockServerSettings !== null && flatMockServerSettings !== void 0 ? flatMockServerSettings : {};
|
|
28
|
+
server.use(_bodyparser.default.urlencoded({
|
|
29
|
+
extended: false
|
|
30
|
+
}));
|
|
31
|
+
server.use(_bodyparser.default.json({
|
|
32
|
+
limit: '10mb'
|
|
33
|
+
}));
|
|
34
|
+
server.set('json spaces', 2);
|
|
35
|
+
server.use(_bodyparser.default.text());
|
|
36
|
+
(0, _middlewares.contextMiddleware)(server, {
|
|
37
|
+
database
|
|
38
|
+
});
|
|
39
|
+
(0, _middlewares.cookieParseMiddleware)(server);
|
|
40
|
+
const serverRequestInterceptor = interceptors === null || interceptors === void 0 ? void 0 : interceptors.request;
|
|
41
|
+
if (serverRequestInterceptor) {
|
|
42
|
+
(0, _middlewares.requestInterceptorMiddleware)({
|
|
43
|
+
server,
|
|
44
|
+
interceptor: serverRequestInterceptor
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
if (cors) {
|
|
48
|
+
(0, _middlewares.corsMiddleware)(server, cors);
|
|
49
|
+
} else {
|
|
50
|
+
(0, _middlewares.noCorsMiddleware)(server);
|
|
51
|
+
}
|
|
52
|
+
if (staticPath) {
|
|
53
|
+
(0, _middlewares.staticMiddleware)(server, serverBaseUrl, staticPath);
|
|
54
|
+
}
|
|
55
|
+
if (database) {
|
|
56
|
+
const routerWithDatabaseRoutes = (0, _database.createDatabaseRoutes)(_express.default.Router(), database);
|
|
57
|
+
server.use(serverBaseUrl, routerWithDatabaseRoutes);
|
|
58
|
+
}
|
|
59
|
+
const { restRequestConfigs, graphQLRequestConfigs } = flatMockServerComponents.reduce((acc, component)=>{
|
|
60
|
+
const { baseUrl = '' } = component;
|
|
61
|
+
component.configs.forEach((config)=>{
|
|
62
|
+
var _component_interceptors, _config_interceptors, _component_interceptors1, _config_interceptors1;
|
|
63
|
+
const interceptors = {
|
|
64
|
+
...(((_component_interceptors = component.interceptors) === null || _component_interceptors === void 0 ? void 0 : _component_interceptors.request) || ((_config_interceptors = config.interceptors) === null || _config_interceptors === void 0 ? void 0 : _config_interceptors.request)) && {
|
|
65
|
+
request: (params)=>{
|
|
66
|
+
var _component_interceptors, _config_interceptors;
|
|
67
|
+
if ((_component_interceptors = component.interceptors) === null || _component_interceptors === void 0 ? void 0 : _component_interceptors.request) {
|
|
68
|
+
component.interceptors.request(params);
|
|
69
|
+
}
|
|
70
|
+
if ((_config_interceptors = config.interceptors) === null || _config_interceptors === void 0 ? void 0 : _config_interceptors.request) {
|
|
71
|
+
config.interceptors.request(params);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
...(((_component_interceptors1 = component.interceptors) === null || _component_interceptors1 === void 0 ? void 0 : _component_interceptors1.response) || ((_config_interceptors1 = config.interceptors) === null || _config_interceptors1 === void 0 ? void 0 : _config_interceptors1.response)) && {
|
|
76
|
+
response: (data, params)=>{
|
|
77
|
+
var _config_interceptors, _component_interceptors;
|
|
78
|
+
if ((_config_interceptors = config.interceptors) === null || _config_interceptors === void 0 ? void 0 : _config_interceptors.response) {
|
|
79
|
+
data = config.interceptors.response(data, params);
|
|
80
|
+
}
|
|
81
|
+
if ((_component_interceptors = component.interceptors) === null || _component_interceptors === void 0 ? void 0 : _component_interceptors.response) {
|
|
82
|
+
data = component.interceptors.response(data, params);
|
|
83
|
+
}
|
|
84
|
+
return data;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
const isRest = 'method' in config;
|
|
89
|
+
if (isRest) acc.restRequestConfigs.push({
|
|
90
|
+
...config,
|
|
91
|
+
interceptors,
|
|
92
|
+
path: config.path instanceof RegExp ? new RegExp(`${baseUrl}${config.path.source}`, config.path.flags) : `${baseUrl}${config.path}`
|
|
93
|
+
});
|
|
94
|
+
const isGraphql = 'operationType' in config;
|
|
95
|
+
if (isGraphql) acc.graphQLRequestConfigs.push({
|
|
96
|
+
...config,
|
|
97
|
+
interceptors
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
return acc;
|
|
101
|
+
}, {
|
|
102
|
+
restRequestConfigs: [],
|
|
103
|
+
graphQLRequestConfigs: []
|
|
104
|
+
});
|
|
105
|
+
if (restRequestConfigs.length) {
|
|
106
|
+
const routerWithRestRoutes = (0, _rest.createRestRoutes)({
|
|
107
|
+
router: _express.default.Router(),
|
|
108
|
+
restConfig: {
|
|
109
|
+
configs: restRequestConfigs
|
|
110
|
+
},
|
|
111
|
+
serverResponseInterceptor: interceptors === null || interceptors === void 0 ? void 0 : interceptors.response
|
|
112
|
+
});
|
|
113
|
+
server.use(serverBaseUrl, routerWithRestRoutes);
|
|
114
|
+
}
|
|
115
|
+
if (graphQLRequestConfigs.length) {
|
|
116
|
+
const routerWithGraphQLRoutes = (0, _graphql.createGraphQLRoutes)({
|
|
117
|
+
router: _express.default.Router(),
|
|
118
|
+
graphqlConfig: {
|
|
119
|
+
configs: graphQLRequestConfigs
|
|
120
|
+
},
|
|
121
|
+
serverResponseInterceptor: interceptors === null || interceptors === void 0 ? void 0 : interceptors.response
|
|
122
|
+
});
|
|
123
|
+
server.use(serverBaseUrl, routerWithGraphQLRoutes);
|
|
124
|
+
}
|
|
125
|
+
(0, _middlewares.errorMiddleware)(server);
|
|
126
|
+
return server;
|
|
127
|
+
};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { Express } from 'express';
|
|
2
2
|
import type { GraphQLMockServerConfig } from '../../utils/types';
|
|
3
|
-
export declare const createGraphQLMockServer: (graphqlMockServerConfig: Omit<GraphQLMockServerConfig,
|
|
3
|
+
export declare const createGraphQLMockServer: (graphqlMockServerConfig: Omit<GraphQLMockServerConfig, "port">, server?: Express) => Express;
|
|
@@ -13,7 +13,7 @@ const _express = /*#__PURE__*/ _interop_require_default(require("express"));
|
|
|
13
13
|
const _database = require("../../core/database");
|
|
14
14
|
const _graphql = require("../../core/graphql");
|
|
15
15
|
const _middlewares = require("../../core/middlewares");
|
|
16
|
-
const
|
|
16
|
+
const _validate = require("../../utils/validate");
|
|
17
17
|
function _interop_require_default(obj) {
|
|
18
18
|
return obj && obj.__esModule ? obj : {
|
|
19
19
|
default: obj
|
|
@@ -21,10 +21,8 @@ function _interop_require_default(obj) {
|
|
|
21
21
|
}
|
|
22
22
|
const createGraphQLMockServer = (graphqlMockServerConfig, server = (0, _express.default)())=>{
|
|
23
23
|
var _graphqlMockServerConfig_interceptors;
|
|
24
|
+
(0, _validate.validateApiMockServerConfig)(graphqlMockServerConfig, 'graphql');
|
|
24
25
|
const { cors, staticPath, configs, database, interceptors } = graphqlMockServerConfig;
|
|
25
|
-
server.set('view engine', 'ejs');
|
|
26
|
-
server.set('views', (0, _helpers.urlJoin)(__dirname, '../../static/views'));
|
|
27
|
-
server.use(_express.default.static((0, _helpers.urlJoin)(__dirname, '../../static/views')));
|
|
28
26
|
server.use(_bodyparser.default.urlencoded({
|
|
29
27
|
extended: false
|
|
30
28
|
}));
|
|
@@ -33,7 +31,7 @@ const createGraphQLMockServer = (graphqlMockServerConfig, server = (0, _express.
|
|
|
33
31
|
}));
|
|
34
32
|
server.set('json spaces', 2);
|
|
35
33
|
server.use(_bodyparser.default.text());
|
|
36
|
-
(0, _middlewares.contextMiddleware)(server);
|
|
34
|
+
(0, _middlewares.contextMiddleware)(server, graphqlMockServerConfig);
|
|
37
35
|
(0, _middlewares.cookieParseMiddleware)(server);
|
|
38
36
|
const serverRequestInterceptor = (_graphqlMockServerConfig_interceptors = graphqlMockServerConfig.interceptors) === null || _graphqlMockServerConfig_interceptors === void 0 ? void 0 : _graphqlMockServerConfig_interceptors.request;
|
|
39
37
|
if (serverRequestInterceptor) {
|
|
@@ -64,7 +62,6 @@ const createGraphQLMockServer = (graphqlMockServerConfig, server = (0, _express.
|
|
|
64
62
|
const routerWithDatabaseRoutes = (0, _database.createDatabaseRoutes)(_express.default.Router(), database);
|
|
65
63
|
server.use(baseUrl, routerWithDatabaseRoutes);
|
|
66
64
|
}
|
|
67
|
-
(0, _middlewares.notFoundMiddleware)(server, graphqlMockServerConfig);
|
|
68
65
|
(0, _middlewares.errorMiddleware)(server);
|
|
69
66
|
return server;
|
|
70
67
|
};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { Express } from 'express';
|
|
2
2
|
import type { MockServerConfig } from '../../utils/types';
|
|
3
|
-
export declare const createMockServer: (mockServerConfig: Omit<MockServerConfig,
|
|
3
|
+
export declare const createMockServer: (mockServerConfig: Omit<MockServerConfig, "port">, server?: Express) => Express;
|