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.
Files changed (216) hide show
  1. package/README.md +272 -224
  2. package/dist/bin/bin.js +1 -1
  3. package/dist/bin/build.d.ts +3 -1
  4. package/dist/bin/build.js +10 -0
  5. package/dist/bin/helpers/createTemplate.d.ts +3 -3
  6. package/dist/bin/helpers/createTemplate.js +1 -1
  7. package/dist/bin/helpers/index.d.ts +0 -3
  8. package/dist/bin/helpers/index.js +0 -3
  9. package/dist/bin/helpers/resolveConfigFile.d.ts +2 -2
  10. package/dist/bin/helpers/resolveConfigFile.js +2 -2
  11. package/dist/bin/helpers/resolveConfigFilePath.js +4 -4
  12. package/dist/bin/helpers/resolveExportsFromSourceCode.js +1 -2
  13. package/dist/bin/init.js +5 -8
  14. package/dist/bin/run.d.ts +1 -2
  15. package/dist/bin/run.js +1 -6
  16. package/dist/bin/runFlatConfig.d.ts +5 -0
  17. package/dist/bin/runFlatConfig.js +36 -0
  18. package/dist/bin/templates/js/full/mock-server.config.js +10 -7
  19. package/dist/bin/templates/js/graphql/mock-server.config.js +11 -6
  20. package/dist/bin/templates/js/rest/mock-server.config.js +11 -6
  21. package/dist/bin/templates/ts/full/mock-requests/graphql/index.ts +2 -2
  22. package/dist/bin/templates/ts/full/mock-requests/graphql/user.ts +37 -37
  23. package/dist/bin/templates/ts/full/mock-requests/graphql/users.ts +14 -14
  24. package/dist/bin/templates/ts/full/mock-requests/rest/index.ts +2 -2
  25. package/dist/bin/templates/ts/full/mock-requests/rest/user.ts +37 -37
  26. package/dist/bin/templates/ts/full/mock-requests/rest/users.ts +14 -14
  27. package/dist/bin/templates/ts/full/mock-server.config.ts +11 -8
  28. package/dist/bin/templates/ts/graphql/mock-requests/index.ts +2 -2
  29. package/dist/bin/templates/ts/graphql/mock-requests/user.ts +37 -37
  30. package/dist/bin/templates/ts/graphql/mock-requests/users.ts +14 -14
  31. package/dist/bin/templates/ts/graphql/mock-server.config.ts +12 -7
  32. package/dist/bin/templates/ts/rest/mock-requests/index.ts +2 -2
  33. package/dist/bin/templates/ts/rest/mock-requests/user.ts +37 -37
  34. package/dist/bin/templates/ts/rest/mock-requests/users.ts +14 -14
  35. package/dist/bin/templates/ts/rest/mock-server.config.ts +12 -7
  36. package/dist/src/core/database/createDatabaseRoutes/createDatabaseRoutes.js +2 -1
  37. package/dist/src/core/database/createDatabaseRoutes/helpers/createNestedDatabaseRoutes/createNestedDatabaseRoutes.js +8 -12
  38. package/dist/src/core/database/createDatabaseRoutes/helpers/filter/filter.d.ts +0 -1
  39. package/dist/src/core/database/createDatabaseRoutes/helpers/pagination/pagination.d.ts +0 -1
  40. package/dist/src/core/database/createDatabaseRoutes/helpers/search/search.d.ts +0 -1
  41. package/dist/src/core/database/createDatabaseRoutes/helpers/sort/sort.d.ts +0 -1
  42. package/dist/src/core/database/createDatabaseRoutes/helpers/splitDatabaseByNesting/splitDatabaseByNesting.d.ts +1 -1
  43. package/dist/src/core/database/createDatabaseRoutes/storages/File/FileStorage.d.ts +5 -6
  44. package/dist/src/core/database/createDatabaseRoutes/storages/File/FileStorage.js +4 -4
  45. package/dist/src/core/database/createDatabaseRoutes/storages/File/FileWriter.js +2 -2
  46. package/dist/src/core/database/createDatabaseRoutes/storages/Memory/MemoryStorage.d.ts +6 -7
  47. package/dist/src/core/database/createOrm/createOrm.d.ts +2 -0
  48. package/dist/src/core/database/createOrm/createOrm.js +119 -0
  49. package/dist/src/core/database/createStorage/createStorage.d.ts +2 -0
  50. package/dist/src/core/database/createStorage/createStorage.js +13 -0
  51. package/dist/src/core/database/index.d.ts +2 -0
  52. package/dist/src/core/database/index.js +2 -0
  53. package/dist/src/core/graphql/createGraphQLRoutes/createGraphQLRoutes.d.ts +1 -1
  54. package/dist/src/core/graphql/createGraphQLRoutes/createGraphQLRoutes.js +39 -17
  55. package/dist/src/core/graphql/createGraphQLRoutes/helpers/prepareGraphQLRequestConfigs/prepareGraphQLRequestConfigs.js +2 -2
  56. package/dist/src/core/middlewares/contextMiddleware/contextMiddleware.d.ts +2 -2
  57. package/dist/src/core/middlewares/contextMiddleware/contextMiddleware.js +24 -12
  58. package/dist/src/core/middlewares/destroyerMiddleware/destroyerMiddleware.d.ts +1 -2
  59. package/dist/src/core/middlewares/index.d.ts +0 -1
  60. package/dist/src/core/middlewares/index.js +0 -1
  61. package/dist/src/core/middlewares/requestInterceptorMiddleware/requestInterceptorMiddleware.d.ts +2 -2
  62. package/dist/src/core/rest/createRestRoutes/createRestRoutes.d.ts +1 -1
  63. package/dist/src/core/rest/createRestRoutes/createRestRoutes.js +80 -24
  64. package/dist/src/server/createDatabaseMockServer/createDatabaseMockServer.d.ts +1 -1
  65. package/dist/src/server/createDatabaseMockServer/createDatabaseMockServer.js +6 -6
  66. package/dist/src/server/createFlatMockServer/createFlatMockServer.d.ts +3 -0
  67. package/dist/src/server/createFlatMockServer/createFlatMockServer.js +127 -0
  68. package/dist/src/server/createGraphQLMockServer/createGraphQLMockServer.d.ts +1 -1
  69. package/dist/src/server/createGraphQLMockServer/createGraphQLMockServer.js +3 -6
  70. package/dist/src/server/createMockServer/createMockServer.d.ts +1 -1
  71. package/dist/src/server/createMockServer/createMockServer.js +3 -5
  72. package/dist/src/server/createRestMockServer/createRestMockServer.d.ts +1 -1
  73. package/dist/src/server/createRestMockServer/createRestMockServer.js +3 -6
  74. package/dist/src/server/index.d.ts +2 -0
  75. package/dist/src/server/index.js +2 -0
  76. package/dist/src/server/startDatabaseMockServer/startDatabaseMockServer.d.ts +1 -2
  77. package/dist/src/server/startFlatMockServer/startFlatMockServer.d.ts +4 -0
  78. package/dist/src/server/startFlatMockServer/startFlatMockServer.js +28 -0
  79. package/dist/src/server/startGraphQLMockServer/startGraphQLMockServer.d.ts +1 -2
  80. package/dist/src/server/startMockServer/startMockServer.d.ts +1 -2
  81. package/dist/src/server/startRestMockServer/startRestMockServer.d.ts +1 -2
  82. package/dist/src/utils/constants/checkModes.d.ts +1 -3
  83. package/dist/src/utils/constants/checkModes.js +3 -19
  84. package/dist/src/utils/helpers/config/resolveEntityValues/resolveEntityValues.d.ts +20 -2
  85. package/dist/src/utils/helpers/config/resolveEntityValues/resolveEntityValues.js +37 -71
  86. package/dist/src/utils/helpers/files/index.d.ts +1 -0
  87. package/dist/src/utils/helpers/files/index.js +1 -0
  88. package/dist/src/utils/helpers/files/isFileDescriptor/isFileDescriptor.d.ts +2 -0
  89. package/dist/src/utils/helpers/files/isFileDescriptor/isFileDescriptor.js +16 -0
  90. package/dist/src/utils/helpers/files/isFilePathValid/isFilePathValid.js +3 -3
  91. package/dist/src/utils/helpers/graphql/parseQuery/parseQuery.d.ts +1 -1
  92. package/dist/src/utils/helpers/index.d.ts +0 -1
  93. package/dist/src/utils/helpers/index.js +0 -1
  94. package/dist/src/utils/helpers/interceptors/callRequestInterceptor/callRequestInterceptor.d.ts +1 -1
  95. package/dist/src/utils/helpers/interceptors/callRequestInterceptor/callRequestInterceptor.js +2 -1
  96. package/dist/src/utils/helpers/interceptors/callResponseInterceptors/callResponseInterceptors.js +10 -5
  97. package/dist/src/utils/helpers/logger/callResponseLogger/callResponseLogger.d.ts +1 -1
  98. package/dist/src/utils/helpers/tests/createTmpDir.js +4 -4
  99. package/dist/src/utils/helpers/url/convertWin32PathToUnix/convertWin32PathToUnix.js +1 -1
  100. package/dist/src/utils/helpers/url/urlJoin/urlJoin.js +4 -4
  101. package/dist/src/utils/types/checkModes.d.ts +14 -7
  102. package/dist/src/utils/types/database.d.ts +30 -0
  103. package/dist/src/utils/types/entities.d.ts +13 -43
  104. package/dist/src/utils/types/files.d.ts +5 -0
  105. package/dist/src/utils/types/files.js +4 -0
  106. package/dist/src/utils/types/graphql.d.ts +9 -8
  107. package/dist/src/utils/types/index.d.ts +1 -0
  108. package/dist/src/utils/types/index.js +1 -0
  109. package/dist/src/utils/types/interceptors.d.ts +21 -16
  110. package/dist/src/utils/types/logger.d.ts +11 -11
  111. package/dist/src/utils/types/rest.d.ts +17 -12
  112. package/dist/src/utils/types/server.d.ts +48 -20
  113. package/dist/src/utils/types/shared.d.ts +1 -1
  114. package/dist/src/utils/types/utils.d.ts +4 -4
  115. package/dist/src/utils/types/values.d.ts +3 -4
  116. package/dist/{bin/validateMockServerConfig → src/utils/validate}/corsSchema/corsSchema.d.ts +2 -2
  117. package/dist/{bin/helpers → src/utils/validate}/getMostSpecificPathFromError.d.ts +1 -1
  118. package/dist/src/utils/validate/getValidationMessageFromPath.d.ts +1 -0
  119. package/dist/src/utils/validate/graphqlConfigSchema/graphqlConfigSchema.d.ts +535 -0
  120. package/dist/{bin/validateMockServerConfig → src/utils/validate}/graphqlConfigSchema/graphqlConfigSchema.js +14 -6
  121. package/dist/{bin/validateMockServerConfig → src/utils/validate}/graphqlConfigSchema/routeConfigSchema/routeConfigSchema.d.ts +20 -5
  122. package/dist/{bin/validateMockServerConfig → src/utils/validate}/graphqlConfigSchema/routeConfigSchema/routeConfigSchema.js +5 -5
  123. package/dist/src/utils/validate/index.d.ts +14 -0
  124. package/dist/src/utils/validate/index.js +31 -0
  125. package/dist/{bin/helpers → src/utils/validate}/isOnlyRequestedDataResolvingPropertyExists.d.ts +1 -1
  126. package/dist/src/utils/validate/queueSchema/queueSchema.d.ts +20 -0
  127. package/dist/src/utils/validate/queueSchema/queueSchema.js +24 -0
  128. package/dist/src/utils/validate/restConfigSchema/restConfigSchema.d.ts +1659 -0
  129. package/dist/{bin/validateMockServerConfig → src/utils/validate}/restConfigSchema/restConfigSchema.js +13 -5
  130. package/dist/{bin/validateMockServerConfig → src/utils/validate}/restConfigSchema/routeConfigSchema/routeConfigSchema.d.ts +21 -6
  131. package/dist/{bin/validateMockServerConfig → src/utils/validate}/restConfigSchema/routeConfigSchema/routeConfigSchema.js +6 -6
  132. package/dist/src/utils/validate/utils/checkModeSchema/checkModeSchema.d.ts +23 -0
  133. package/dist/{bin/validateMockServerConfig → src/utils/validate}/utils/checkModeSchema/checkModeSchema.js +24 -1
  134. package/dist/src/utils/validate/utils/entitiesSchema/entitiesSchema.d.ts +4 -0
  135. package/dist/src/utils/validate/utils/entitiesSchema/entitiesSchema.js +94 -0
  136. package/dist/src/utils/validate/utils/extendedDiscriminatedUnion/extendedDiscriminatedUnion.d.ts +8 -0
  137. package/dist/src/utils/validate/utils/extendedDiscriminatedUnion/extendedDiscriminatedUnion.js +46 -0
  138. package/dist/{bin/validateMockServerConfig → src/utils/validate}/utils/index.d.ts +2 -2
  139. package/dist/{bin/validateMockServerConfig → src/utils/validate}/utils/index.js +2 -2
  140. package/dist/{bin/validateMockServerConfig → src/utils/validate}/utils/jsonSchema/jsonSchema.d.ts +2 -2
  141. package/dist/{bin/validateMockServerConfig → src/utils/validate}/utils/jsonSchema/jsonSchema.js +1 -1
  142. package/dist/src/utils/validate/utils/nestedObjectOrArraySchema/nestedObjectOrArraySchema.d.ts +3 -0
  143. package/dist/src/utils/validate/utils/nestedObjectOrArraySchema/nestedObjectOrArraySchema.js +22 -0
  144. package/dist/{bin/validateMockServerConfig → src/utils/validate}/utils/requiredPropertiesSchema/requiredPropertiesSchema.d.ts +1 -1
  145. package/dist/{bin/validateMockServerConfig → src/utils/validate}/utils/requiredPropertiesSchema/requiredPropertiesSchema.js +1 -1
  146. package/dist/src/utils/validate/validateApiMockServerConfig.d.ts +2 -0
  147. package/dist/{bin/validateMockServerConfig → src/utils/validate}/validateApiMockServerConfig.js +4 -3
  148. package/dist/src/utils/validate/validateFlatMockServerConfig.d.ts +2 -0
  149. package/dist/src/utils/validate/validateFlatMockServerConfig.js +53 -0
  150. package/dist/{bin/validateMockServerConfig → src/utils/validate}/validateMockServerConfig.d.ts +1 -1
  151. package/dist/{bin/validateMockServerConfig → src/utils/validate}/validateMockServerConfig.js +4 -3
  152. package/package.json +51 -52
  153. package/dist/bin/helpers/getValidationMessageFromPath.d.ts +0 -1
  154. package/dist/bin/validateMockServerConfig/graphqlConfigSchema/graphqlConfigSchema.d.ts +0 -258
  155. package/dist/bin/validateMockServerConfig/queueSchema/queueSchema.d.ts +0 -8
  156. package/dist/bin/validateMockServerConfig/queueSchema/queueSchema.js +0 -21
  157. package/dist/bin/validateMockServerConfig/restConfigSchema/restConfigSchema.d.ts +0 -743
  158. package/dist/bin/validateMockServerConfig/utils/checkModeSchema/checkModeSchema.d.ts +0 -5
  159. package/dist/bin/validateMockServerConfig/utils/entitiesSchema/entitiesSchema.d.ts +0 -71
  160. package/dist/bin/validateMockServerConfig/utils/entitiesSchema/entitiesSchema.js +0 -124
  161. package/dist/bin/validateMockServerConfig/validateApiMockServerConfig.d.ts +0 -2
  162. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getGraphqlUrlSuggestions/getGraphqlUrlSuggestions.d.ts +0 -11
  163. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getGraphqlUrlSuggestions/getGraphqlUrlSuggestions.js +0 -25
  164. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getLevenshteinDistance/getLevenshteinDistance.d.ts +0 -1
  165. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getLevenshteinDistance/getLevenshteinDistance.js +0 -85
  166. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/getRestUrlSuggestions.d.ts +0 -11
  167. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/getRestUrlSuggestions.js +0 -39
  168. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/getActualRestUrlMeaningfulString/getActualRestUrlMeaningfulString.d.ts +0 -1
  169. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/getActualRestUrlMeaningfulString/getActualRestUrlMeaningfulString.js +0 -11
  170. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/getPatternRestUrlMeaningfulString/getPatternRestUrlMeaningfulString.d.ts +0 -1
  171. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/getPatternRestUrlMeaningfulString/getPatternRestUrlMeaningfulString.js +0 -11
  172. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/index.d.ts +0 -2
  173. package/dist/src/core/middlewares/notFoundMiddleware/helpers/getRestUrlSuggestions/helpers/index.js +0 -19
  174. package/dist/src/core/middlewares/notFoundMiddleware/helpers/index.d.ts +0 -3
  175. package/dist/src/core/middlewares/notFoundMiddleware/helpers/index.js +0 -20
  176. package/dist/src/core/middlewares/notFoundMiddleware/notFoundMiddleware.d.ts +0 -3
  177. package/dist/src/core/middlewares/notFoundMiddleware/notFoundMiddleware.js +0 -65
  178. package/dist/src/static/views/assets/icons/scheme-dark.svg +0 -3
  179. package/dist/src/static/views/assets/icons/scheme-light.svg +0 -3
  180. package/dist/src/static/views/assets/images/404.png +0 -0
  181. package/dist/src/static/views/assets/images/logo.png +0 -0
  182. package/dist/src/static/views/assets/styles/global.css +0 -88
  183. package/dist/src/static/views/components/header/index.css +0 -55
  184. package/dist/src/static/views/components/header/index.ejs +0 -40
  185. package/dist/src/static/views/components/header/index.js +0 -1
  186. package/dist/src/static/views/features/scheme/dark.css +0 -13
  187. package/dist/src/static/views/features/scheme/index.ejs +0 -3
  188. package/dist/src/static/views/features/scheme/index.js +0 -31
  189. package/dist/src/static/views/features/scheme/light.css +0 -13
  190. package/dist/src/static/views/features/tab/index.css +0 -30
  191. package/dist/src/static/views/features/tab/index.ejs +0 -2
  192. package/dist/src/static/views/features/tab/index.js +0 -12
  193. package/dist/src/static/views/pages/404/index.css +0 -10
  194. package/dist/src/static/views/pages/404/index.ejs +0 -82
  195. package/dist/src/utils/helpers/isRegExp/isRegExp.d.ts +0 -1
  196. package/dist/src/utils/helpers/isRegExp/isRegExp.js +0 -11
  197. package/dist/{bin/validateMockServerConfig → src/utils/validate}/baseUrlSchema/baseUrlSchema.d.ts +0 -0
  198. package/dist/{bin/validateMockServerConfig → src/utils/validate}/baseUrlSchema/baseUrlSchema.js +0 -0
  199. package/dist/{bin/validateMockServerConfig → src/utils/validate}/corsSchema/corsSchema.js +0 -0
  200. package/dist/{bin/validateMockServerConfig → src/utils/validate}/databaseConfigSchema/databaseConfigSchema.d.ts +0 -0
  201. package/dist/{bin/validateMockServerConfig → src/utils/validate}/databaseConfigSchema/databaseConfigSchema.js +0 -0
  202. package/dist/{bin/helpers → src/utils/validate}/getMostSpecificPathFromError.js +0 -0
  203. package/dist/{bin/helpers → src/utils/validate}/getValidationMessageFromPath.js +0 -0
  204. package/dist/{bin/validateMockServerConfig → src/utils/validate}/interceptorsSchema/interceptorsSchema.d.ts +0 -0
  205. package/dist/{bin/validateMockServerConfig → src/utils/validate}/interceptorsSchema/interceptorsSchema.js +0 -0
  206. package/dist/{bin/helpers → src/utils/validate}/isOnlyRequestedDataResolvingPropertyExists.js +0 -0
  207. package/dist/{bin/validateMockServerConfig → src/utils/validate}/portSchema/portSchema.d.ts +0 -0
  208. package/dist/{bin/validateMockServerConfig → src/utils/validate}/portSchema/portSchema.js +0 -0
  209. package/dist/{bin/validateMockServerConfig → src/utils/validate}/settingsSchema/settingsSchema.d.ts +2 -2
  210. /package/dist/{bin/validateMockServerConfig → src/utils/validate}/settingsSchema/settingsSchema.js +0 -0
  211. /package/dist/{bin/validateMockServerConfig → src/utils/validate}/staticPathSchema/staticPathSchema.d.ts +0 -0
  212. /package/dist/{bin/validateMockServerConfig → src/utils/validate}/staticPathSchema/staticPathSchema.js +0 -0
  213. /package/dist/{bin/validateMockServerConfig → src/utils/validate}/utils/plainObjectSchema/plainObjectSchema.d.ts +0 -0
  214. /package/dist/{bin/validateMockServerConfig → src/utils/validate}/utils/plainObjectSchema/plainObjectSchema.js +0 -0
  215. /package/dist/{bin/validateMockServerConfig → src/utils/validate}/utils/sharedSchema/sharedSchema.d.ts +0 -0
  216. /package/dist/{bin/validateMockServerConfig → src/utils/validate}/utils/sharedSchema/sharedSchema.js +0 -0
@@ -1,37 +1,37 @@
1
- import type { GraphQLRequestConfig } from 'mock-config-server';
2
-
3
- export const getUserQuery: GraphQLRequestConfig = {
4
- operationName: 'getUser',
5
- operationType: 'query',
6
- routes: [
7
- {
8
- data: { id: 1, emoji: '🎉' }
9
- },
10
- {
11
- data: { id: 2, emoji: '🔥' },
12
- entities: {
13
- variables: {
14
- id: 2
15
- }
16
- }
17
- }
18
- ]
19
- };
20
-
21
- export const createUserMutation: GraphQLRequestConfig = {
22
- operationName: 'createUser',
23
- operationType: 'mutation',
24
- routes: [
25
- {
26
- data: { id: 1, emoji: '🎉' }
27
- },
28
- {
29
- data: { id: 2, emoji: '🔥' },
30
- entities: {
31
- variables: {
32
- emoji: '🔥'
33
- }
34
- }
35
- }
36
- ]
37
- };
1
+ import type { GraphQLRequestConfig } from 'mock-config-server';
2
+
3
+ export const getUserQuery: GraphQLRequestConfig = {
4
+ operationName: 'getUser',
5
+ operationType: 'query',
6
+ routes: [
7
+ {
8
+ data: { id: 1, emoji: '🎉' }
9
+ },
10
+ {
11
+ data: { id: 2, emoji: '🔥' },
12
+ entities: {
13
+ variables: {
14
+ id: 2
15
+ }
16
+ }
17
+ }
18
+ ]
19
+ };
20
+
21
+ export const createUserMutation: GraphQLRequestConfig = {
22
+ operationName: 'createUser',
23
+ operationType: 'mutation',
24
+ routes: [
25
+ {
26
+ data: { id: 1, emoji: '🎉' }
27
+ },
28
+ {
29
+ data: { id: 2, emoji: '🔥' },
30
+ entities: {
31
+ variables: {
32
+ emoji: '🔥'
33
+ }
34
+ }
35
+ }
36
+ ]
37
+ };
@@ -1,14 +1,14 @@
1
- import type { GraphQLRequestConfig } from 'mock-config-server';
2
-
3
- export const getUsersQuery: GraphQLRequestConfig = {
4
- operationName: 'getUsers',
5
- operationType: 'query',
6
- routes: [
7
- {
8
- data: [
9
- { id: 1, emoji: '🎉' },
10
- { id: 2, emoji: '🔥' }
11
- ]
12
- }
13
- ]
14
- };
1
+ import type { GraphQLRequestConfig } from 'mock-config-server';
2
+
3
+ export const getUsersQuery: GraphQLRequestConfig = {
4
+ operationName: 'getUsers',
5
+ operationType: 'query',
6
+ routes: [
7
+ {
8
+ data: [
9
+ { id: 1, emoji: '🎉' },
10
+ { id: 2, emoji: '🔥' }
11
+ ]
12
+ }
13
+ ]
14
+ };
@@ -1,11 +1,16 @@
1
- import type { GraphQLMockServerConfig } from 'mock-config-server';
1
+ import type { FlatMockServerConfig } from 'mock-config-server';
2
2
 
3
3
  import { createUserMutation, getUserQuery, getUsersQuery } from './mock-requests';
4
4
 
5
- const restMockServerConfig: GraphQLMockServerConfig = {
6
- port: 31299,
7
- baseUrl: '/',
8
- configs: [getUserQuery, getUsersQuery, createUserMutation]
9
- };
5
+ const mockServerConfig: FlatMockServerConfig = [
6
+ {
7
+ port: 31299,
8
+ baseUrl: '/graphql'
9
+ },
10
+ {
11
+ name: 'graphql',
12
+ configs: [getUserQuery, getUsersQuery, createUserMutation]
13
+ }
14
+ ];
10
15
 
11
- export default restMockServerConfig;
16
+ export default mockServerConfig;
@@ -1,2 +1,2 @@
1
- export * from './user';
2
- export * from './users';
1
+ export * from './user';
2
+ export * from './users';
@@ -1,37 +1,37 @@
1
- import type { RestRequestConfig } from 'mock-config-server';
2
-
3
- export const getUserRequest: RestRequestConfig = {
4
- method: 'get',
5
- path: '/users/:id',
6
- routes: [
7
- {
8
- data: { id: 1, emoji: '🎉' }
9
- },
10
- {
11
- data: { id: 2, emoji: '🔥' },
12
- entities: {
13
- params: {
14
- id: 2
15
- }
16
- }
17
- }
18
- ]
19
- };
20
-
21
- export const postUserRequest: RestRequestConfig = {
22
- method: 'post',
23
- path: '/users',
24
- routes: [
25
- {
26
- data: { id: 1, emoji: '🎉' }
27
- },
28
- {
29
- data: { id: 2, emoji: '🔥' },
30
- entities: {
31
- body: {
32
- emoji: '🔥'
33
- }
34
- }
35
- }
36
- ]
37
- };
1
+ import type { RestRequestConfig } from 'mock-config-server';
2
+
3
+ export const getUserRequest: RestRequestConfig = {
4
+ method: 'get',
5
+ path: '/users/:id',
6
+ routes: [
7
+ {
8
+ data: { id: 1, emoji: '🎉' }
9
+ },
10
+ {
11
+ data: { id: 2, emoji: '🔥' },
12
+ entities: {
13
+ params: {
14
+ id: 2
15
+ }
16
+ }
17
+ }
18
+ ]
19
+ };
20
+
21
+ export const postUserRequest: RestRequestConfig = {
22
+ method: 'post',
23
+ path: '/users',
24
+ routes: [
25
+ {
26
+ data: { id: 1, emoji: '🎉' }
27
+ },
28
+ {
29
+ data: { id: 2, emoji: '🔥' },
30
+ entities: {
31
+ body: {
32
+ emoji: '🔥'
33
+ }
34
+ }
35
+ }
36
+ ]
37
+ };
@@ -1,14 +1,14 @@
1
- import type { RestRequestConfig } from 'mock-config-server';
2
-
3
- export const getUsersRequest: RestRequestConfig = {
4
- path: '/users',
5
- method: 'get',
6
- routes: [
7
- {
8
- data: [
9
- { id: 1, emoji: '🎉' },
10
- { id: 2, emoji: '🔥' }
11
- ]
12
- }
13
- ]
14
- };
1
+ import type { RestRequestConfig } from 'mock-config-server';
2
+
3
+ export const getUsersRequest: RestRequestConfig = {
4
+ path: '/users',
5
+ method: 'get',
6
+ routes: [
7
+ {
8
+ data: [
9
+ { id: 1, emoji: '🎉' },
10
+ { id: 2, emoji: '🔥' }
11
+ ]
12
+ }
13
+ ]
14
+ };
@@ -1,11 +1,16 @@
1
- import type { RestMockServerConfig } from 'mock-config-server';
1
+ import type { FlatMockServerConfig } from 'mock-config-server';
2
2
 
3
3
  import { getUserRequest, getUsersRequest, postUserRequest } from './mock-requests';
4
4
 
5
- const restMockServerConfig: RestMockServerConfig = {
6
- port: 31299,
7
- baseUrl: '/',
8
- configs: [getUserRequest, getUsersRequest, postUserRequest]
9
- };
5
+ const mockServerConfig: FlatMockServerConfig = [
6
+ {
7
+ port: 31299,
8
+ baseUrl: '/'
9
+ },
10
+ {
11
+ name: 'rest',
12
+ configs: [getUserRequest, getUsersRequest, postUserRequest]
13
+ }
14
+ ];
10
15
 
11
- export default restMockServerConfig;
16
+ export default mockServerConfig;
@@ -8,12 +8,13 @@ Object.defineProperty(exports, "createDatabaseRoutes", {
8
8
  return createDatabaseRoutes;
9
9
  }
10
10
  });
11
+ const _createStorage = require("../createStorage/createStorage");
11
12
  const _helpers = require("./helpers");
12
13
  const _storages = require("./storages");
13
14
  const isVariableJsonFile = (variable)=>typeof variable === 'string' && variable.endsWith('.json');
14
15
  const createDatabaseRoutes = (router, { data, routes })=>{
15
16
  if (routes) {
16
- const storage = isVariableJsonFile(routes) ? new _storages.FileStorage(routes) : new _storages.MemoryStorage(routes);
17
+ const storage = (0, _createStorage.createStorage)(routes);
17
18
  (0, _helpers.createRewrittenDatabaseRoutes)(router, storage.read());
18
19
  router.route('/__routes').get((_request, response)=>{
19
20
  response.json(storage.read());
@@ -87,12 +87,11 @@ const createNestedDatabaseRoutes = (router, database, storage)=>{
87
87
  response.set('Location', `${request.url}/${newResourceId}`);
88
88
  response.status(201).json(newResource);
89
89
  });
90
- router.route(itemPath).get((request, response)=>{
90
+ router.route(itemPath).get((request, response, next)=>{
91
91
  const currentResourceCollection = storage.read(key);
92
92
  const currentResourceIndex = (0, _array.findIndexById)(currentResourceCollection, request.params.id);
93
93
  if (currentResourceIndex === -1) {
94
- response.status(404).end();
95
- return;
94
+ return next();
96
95
  }
97
96
  // ✅ important:
98
97
  // set 'Cache-Control' header for explicit browsers response revalidate
@@ -103,12 +102,11 @@ const createNestedDatabaseRoutes = (router, database, storage)=>{
103
102
  currentResourceIndex
104
103
  ]));
105
104
  });
106
- router.route(itemPath).put((request, response)=>{
105
+ router.route(itemPath).put((request, response, next)=>{
107
106
  const currentResourceCollection = storage.read(key);
108
107
  const currentResourceIndex = (0, _array.findIndexById)(currentResourceCollection, request.params.id);
109
108
  if (currentResourceIndex === -1) {
110
- response.status(404).end();
111
- return;
109
+ return next();
112
110
  }
113
111
  const currentResource = storage.read([
114
112
  key,
@@ -124,12 +122,11 @@ const createNestedDatabaseRoutes = (router, database, storage)=>{
124
122
  ], updatedResource);
125
123
  response.json(updatedResource);
126
124
  });
127
- router.route(itemPath).patch((request, response)=>{
125
+ router.route(itemPath).patch((request, response, next)=>{
128
126
  const currentResourceCollection = storage.read(key);
129
127
  const currentResourceIndex = (0, _array.findIndexById)(currentResourceCollection, request.params.id);
130
128
  if (currentResourceIndex === -1) {
131
- response.status(404).end();
132
- return;
129
+ return next();
133
130
  }
134
131
  const currentResource = storage.read([
135
132
  key,
@@ -146,12 +143,11 @@ const createNestedDatabaseRoutes = (router, database, storage)=>{
146
143
  ], updatedResource);
147
144
  response.json(updatedResource);
148
145
  });
149
- router.route(itemPath).delete((request, response)=>{
146
+ router.route(itemPath).delete((request, response, next)=>{
150
147
  const currentResourceCollection = storage.read(key);
151
148
  const currentResourceIndex = (0, _array.findIndexById)(currentResourceCollection, request.params.id);
152
149
  if (currentResourceIndex === -1) {
153
- response.status(404).end();
154
- return;
150
+ return next();
155
151
  }
156
152
  storage.delete([
157
153
  key,
@@ -1,3 +1,2 @@
1
- /// <reference types="node" />
2
1
  import type { ParsedUrlQuery } from 'node:querystring';
3
2
  export declare const filter: (array: any[], filters: ParsedUrlQuery) => any[];
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import type { ParsedUrlQuery } from 'node:querystring';
3
2
  export declare const pagination: (array: any[], queries: ParsedUrlQuery) => any[] | {
4
3
  _link: {
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import type { ParsedUrlQuery } from 'node:querystring';
3
2
  export declare const searchInNestedObjects: (obj: any, searchText: string) => boolean;
4
3
  export declare const search: (array: any[], searchText: ParsedUrlQuery) => any[];
@@ -1,3 +1,2 @@
1
- /// <reference types="node" />
2
1
  import type { ParsedUrlQuery } from 'node:querystring';
3
2
  export declare const sort: (array: any[], queries: ParsedUrlQuery) => any[];
@@ -1,5 +1,5 @@
1
1
  import type { DatabaseConfig, NestedDatabase, ShallowDatabase } from '../../../../../utils/types';
2
- export declare const splitDatabaseByNesting: (data: DatabaseConfig['data']) => {
2
+ export declare const splitDatabaseByNesting: (data: DatabaseConfig["data"]) => {
3
3
  shallowDatabase: ShallowDatabase;
4
4
  nestedDatabase: NestedDatabase;
5
5
  };
@@ -1,10 +1,9 @@
1
- type Index = string | number;
2
- export declare class FileStorage<T extends Record<Index, any> = Record<Index, any>> {
1
+ import type { Storage, StorageIndex } from '../../../../../utils/types';
2
+ export declare class FileStorage<Data extends Record<StorageIndex, any> = Record<StorageIndex, any>> implements Storage {
3
3
  private readonly fileWriter;
4
4
  private readonly data;
5
5
  constructor(fileName: string);
6
- read(key?: Index | Index[]): any;
7
- write(key: Index | Index[], value: unknown): void;
8
- delete(key: Index | Index[]): void;
6
+ read(key?: StorageIndex | StorageIndex[]): any;
7
+ write(key: StorageIndex | StorageIndex[], value: unknown): void;
8
+ delete(key: StorageIndex | StorageIndex[]): void;
9
9
  }
10
- export {};
@@ -8,8 +8,8 @@ Object.defineProperty(exports, "FileStorage", {
8
8
  return FileStorage;
9
9
  }
10
10
  });
11
- const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
12
- const _path = /*#__PURE__*/ _interop_require_default(require("path"));
11
+ const _nodefs = /*#__PURE__*/ _interop_require_default(require("node:fs"));
12
+ const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
13
13
  const _constants = require("../../../../../utils/constants");
14
14
  const _helpers = require("../../helpers");
15
15
  const _FileWriter = require("./FileWriter");
@@ -22,9 +22,9 @@ class FileStorage {
22
22
  fileWriter;
23
23
  data;
24
24
  constructor(fileName){
25
- const filePath = _path.default.resolve(_constants.APP_PATH, fileName);
25
+ const filePath = _nodepath.default.resolve(_constants.APP_PATH, fileName);
26
26
  this.fileWriter = new _FileWriter.FileWriter(filePath);
27
- this.data = JSON.parse(_fs.default.readFileSync(filePath, 'utf-8'));
27
+ this.data = JSON.parse(_nodefs.default.readFileSync(filePath, 'utf-8'));
28
28
  }
29
29
  read(key) {
30
30
  if (!key) return this.data;
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "FileWriter", {
8
8
  return FileWriter;
9
9
  }
10
10
  });
11
- const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
11
+ const _nodefs = /*#__PURE__*/ _interop_require_default(require("node:fs"));
12
12
  function _interop_require_default(obj) {
13
13
  return obj && obj.__esModule ? obj : {
14
14
  default: obj
@@ -38,7 +38,7 @@ class FileWriter {
38
38
  }
39
39
  async unlockedWrite(data, recursionLevel = 0) {
40
40
  this.writeIsLocked = true;
41
- await _fs.default.promises.writeFile(this.filePath, data, 'utf-8');
41
+ await _nodefs.default.promises.writeFile(this.filePath, data, 'utf-8');
42
42
  this.writeIsLocked = false;
43
43
  // ✅ important:
44
44
  // copy content of this.nextData into new variable
@@ -1,9 +1,8 @@
1
- type Index = string | number;
2
- export declare class MemoryStorage<T extends Record<Index, any> = Record<Index, any>> {
1
+ import type { Storage, StorageIndex } from '../../../../../utils/types';
2
+ export declare class MemoryStorage<Data extends Record<StorageIndex, any> = Record<StorageIndex, any>> implements Storage {
3
3
  private readonly data;
4
- constructor(initialData: T);
5
- read(key?: Index | Index[]): any;
6
- write(key: Index | Index[], value: unknown): void;
7
- delete(key: Index | Index[]): void;
4
+ constructor(initialData: Data);
5
+ read(key?: StorageIndex | StorageIndex[]): any;
6
+ write(key: StorageIndex | StorageIndex[], value: unknown): void;
7
+ delete(key: StorageIndex | StorageIndex[]): void;
8
8
  }
9
- export {};
@@ -0,0 +1,2 @@
1
+ import type { Database, Orm, Storage } from '../../../utils/types';
2
+ export declare const createOrm: <Data extends Database = Database>(storage: Storage) => Orm<Data>;
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "createOrm", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return createOrm;
9
+ }
10
+ });
11
+ const _flat = require("flat");
12
+ const _helpers = require("../createDatabaseRoutes/helpers");
13
+ const createOrm = (storage)=>{
14
+ const { shallowDatabase, nestedDatabase } = (0, _helpers.splitDatabaseByNesting)(storage.read());
15
+ const nestedOrm = Object.keys(nestedDatabase).reduce((orm, key)=>{
16
+ orm[key] = {
17
+ create: (item)=>{
18
+ const collection = storage.read(key);
19
+ const newResourceId = (0, _helpers.createNewId)(collection);
20
+ const newResource = {
21
+ ...item,
22
+ id: newResourceId
23
+ };
24
+ storage.write([
25
+ key,
26
+ collection.length
27
+ ], newResource);
28
+ return newResource;
29
+ },
30
+ update: (id, item)=>{
31
+ const collection = storage.read(key);
32
+ const currentResourceIndex = (0, _helpers.findIndexById)(collection, id);
33
+ const currentResource = storage.read([
34
+ key,
35
+ currentResourceIndex
36
+ ]);
37
+ const updatedResource = {
38
+ ...currentResource,
39
+ ...item,
40
+ id
41
+ };
42
+ storage.write([
43
+ key,
44
+ currentResourceIndex
45
+ ], updatedResource);
46
+ },
47
+ delete: (id)=>{
48
+ const collection = storage.read(key);
49
+ const currentResourceIndex = (0, _helpers.findIndexById)(collection, id);
50
+ storage.delete([
51
+ key,
52
+ currentResourceIndex
53
+ ]);
54
+ },
55
+ createMany (items) {
56
+ items.forEach((item)=>this.create(item));
57
+ },
58
+ updateMany (ids, item) {
59
+ ids.forEach((id)=>this.update(id, item));
60
+ return ids.length;
61
+ },
62
+ deleteMany (ids) {
63
+ ids.forEach((id)=>this.delete(id));
64
+ },
65
+ findById: (id)=>{
66
+ const collection = storage.read(key);
67
+ const currentResourceIndex = (0, _helpers.findIndexById)(collection, id);
68
+ return storage.read([
69
+ key,
70
+ currentResourceIndex
71
+ ]);
72
+ },
73
+ findMany: (filters)=>{
74
+ const collection = storage.read(key);
75
+ if (!filters) return collection;
76
+ const flattenedFilters = (0, _flat.flatten)(filters);
77
+ return collection.filter((resource)=>{
78
+ const flattenedResource = (0, _flat.flatten)(resource);
79
+ return Object.entries(flattenedFilters).every(([key, value])=>flattenedResource[key] === value);
80
+ });
81
+ },
82
+ findFirst: (filters)=>{
83
+ const collection = storage.read(key);
84
+ if (!filters) return collection[0];
85
+ const flattenedFilters = (0, _flat.flatten)(filters);
86
+ return collection.find((resource)=>{
87
+ const flattenedResource = (0, _flat.flatten)(resource);
88
+ return Object.entries(flattenedFilters).every(([key, value])=>flattenedResource[key] === value);
89
+ });
90
+ },
91
+ exists: (filters)=>{
92
+ const collection = storage.read(key);
93
+ const flattenedFilters = (0, _flat.flatten)(filters);
94
+ return collection.some((resource)=>{
95
+ const flattenedResource = (0, _flat.flatten)(resource);
96
+ return Object.entries(flattenedFilters).every(([key, value])=>flattenedResource[key] === value);
97
+ });
98
+ },
99
+ count: ()=>storage.read(key).length
100
+ };
101
+ orm[key].createMany = orm[key].createMany.bind(orm[key]);
102
+ orm[key].updateMany = orm[key].updateMany.bind(orm[key]);
103
+ orm[key].deleteMany = orm[key].deleteMany.bind(orm[key]);
104
+ return orm;
105
+ }, {});
106
+ const shallowOrm = Object.keys(shallowDatabase).reduce((orm, key)=>{
107
+ orm[key] = {
108
+ get: ()=>storage.read(key),
109
+ update: (data)=>{
110
+ storage.write(key, data);
111
+ }
112
+ };
113
+ return orm;
114
+ }, {});
115
+ return {
116
+ ...nestedOrm,
117
+ ...shallowOrm
118
+ };
119
+ };
@@ -0,0 +1,2 @@
1
+ import { FileStorage, MemoryStorage } from '../createDatabaseRoutes/storages';
2
+ export declare const createStorage: <Data extends `${string}.json` | Record<string, unknown>>(data: Data) => FileStorage<Record<import("../../..").StorageIndex, any>> | MemoryStorage<Record<import("../../..").StorageIndex, any>>;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "createStorage", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return createStorage;
9
+ }
10
+ });
11
+ const _storages = require("../createDatabaseRoutes/storages");
12
+ const isVariableJsonFile = (variable)=>typeof variable === 'string' && variable.endsWith('.json');
13
+ const createStorage = (data)=>isVariableJsonFile(data) ? new _storages.FileStorage(data) : new _storages.MemoryStorage(data);
@@ -1 +1,3 @@
1
1
  export * from './createDatabaseRoutes/createDatabaseRoutes';
2
+ export * from './createOrm/createOrm';
3
+ export * from './createStorage/createStorage';
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
5
  _export_star(require("./createDatabaseRoutes/createDatabaseRoutes"), exports);
6
+ _export_star(require("./createOrm/createOrm"), exports);
7
+ _export_star(require("./createStorage/createStorage"), exports);
6
8
  function _export_star(from, to) {
7
9
  Object.keys(from).forEach(function(k) {
8
10
  if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
@@ -1,8 +1,8 @@
1
1
  import type { IRouter } from 'express';
2
2
  import type { GraphqlConfig, Interceptors } from '../../../utils/types';
3
3
  interface CreateGraphQLRoutesParams {
4
- router: IRouter;
5
4
  graphqlConfig: GraphqlConfig;
5
+ router: IRouter;
6
6
  serverResponseInterceptor?: Interceptors<'graphql'>['response'];
7
7
  }
8
8
  export declare const createGraphQLRoutes: ({ router, graphqlConfig, serverResponseInterceptor }: CreateGraphQLRoutesParams) => IRouter;