mock-config-server 3.3.4 → 3.4.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 +107 -3
- package/dist/bin/build.js +1 -1
- package/dist/bin/cli.d.ts +1 -1
- package/dist/bin/cli.js +25 -16
- package/dist/bin/helpers/createTemplate.d.ts +9 -0
- package/dist/bin/helpers/createTemplate.js +25 -0
- package/dist/bin/helpers/getMostSpecificPathFromError.d.ts +2 -0
- package/dist/bin/helpers/getMostSpecificPathFromError.js +36 -0
- package/dist/bin/helpers/getValidationMessageFromPath.d.ts +1 -0
- package/dist/bin/helpers/getValidationMessageFromPath.js +11 -0
- package/dist/bin/helpers/index.d.ts +4 -0
- package/dist/bin/helpers/index.js +44 -0
- package/dist/bin/helpers/isOnlyRequestedDataResolvingPropertyExists.d.ts +4 -0
- package/dist/bin/helpers/isOnlyRequestedDataResolvingPropertyExists.js +9 -0
- package/dist/bin/init.d.ts +2 -0
- package/dist/bin/init.js +101 -0
- package/dist/bin/run.d.ts +1 -1
- package/dist/bin/run.js +23 -2
- package/dist/bin/templates/.eslintrc.js +14 -0
- package/dist/bin/templates/js/full/mock-requests/graphql/index.js +2 -0
- package/dist/bin/templates/js/full/mock-requests/graphql/user.js +35 -0
- package/dist/bin/templates/js/full/mock-requests/graphql/users.js +12 -0
- package/dist/bin/templates/js/full/mock-requests/rest/index.js +2 -0
- package/dist/bin/templates/js/full/mock-requests/rest/user.js +35 -0
- package/dist/bin/templates/js/full/mock-requests/rest/users.js +12 -0
- package/dist/bin/templates/js/full/mock-server.config.js +16 -0
- package/dist/bin/templates/js/graphql/mock-requests/index.js +2 -0
- package/dist/bin/templates/js/graphql/mock-requests/user.js +35 -0
- package/dist/bin/templates/js/graphql/mock-requests/users.js +12 -0
- package/dist/bin/templates/js/graphql/mock-server.config.js +9 -0
- package/dist/bin/templates/js/rest/mock-requests/index.js +2 -0
- package/dist/bin/templates/js/rest/mock-requests/user.js +35 -0
- package/dist/bin/templates/js/rest/mock-requests/users.js +12 -0
- package/dist/bin/templates/js/rest/mock-server.config.js +9 -0
- package/dist/bin/templates/ts/full/mock-requests/graphql/index.ts +2 -0
- package/dist/bin/templates/ts/full/mock-requests/graphql/user.ts +37 -0
- package/dist/bin/templates/ts/full/mock-requests/graphql/users.ts +14 -0
- package/dist/bin/templates/ts/full/mock-requests/rest/index.ts +2 -0
- package/dist/bin/templates/ts/full/mock-requests/rest/user.ts +37 -0
- package/dist/bin/templates/ts/full/mock-requests/rest/users.ts +14 -0
- package/dist/bin/templates/ts/full/mock-server.config.ts +18 -0
- package/dist/bin/templates/ts/graphql/mock-requests/index.ts +2 -0
- package/dist/bin/templates/ts/graphql/mock-requests/user.ts +37 -0
- package/dist/bin/templates/ts/graphql/mock-requests/users.ts +14 -0
- package/dist/bin/templates/ts/graphql/mock-server.config.ts +11 -0
- package/dist/bin/templates/ts/rest/mock-requests/index.ts +2 -0
- package/dist/bin/templates/ts/rest/mock-requests/user.ts +37 -0
- package/dist/bin/templates/ts/rest/mock-requests/users.ts +14 -0
- package/dist/bin/templates/ts/rest/mock-server.config.ts +11 -0
- package/dist/bin/templates/tsconfig.json +11 -0
- package/dist/bin/validateMockServerConfig/baseUrlSchema/baseUrlSchema.d.ts +1 -0
- package/dist/bin/validateMockServerConfig/baseUrlSchema/baseUrlSchema.js +8 -0
- package/dist/bin/validateMockServerConfig/corsSchema/corsSchema.d.ts +23 -0
- package/dist/bin/validateMockServerConfig/corsSchema/corsSchema.js +17 -0
- package/dist/bin/validateMockServerConfig/databaseConfigSchema/databaseConfigSchema.d.ts +11 -0
- package/dist/bin/validateMockServerConfig/databaseConfigSchema/databaseConfigSchema.js +12 -0
- package/dist/bin/validateMockServerConfig/graphqlConfigSchema/graphqlConfigSchema.d.ts +248 -0
- package/dist/bin/validateMockServerConfig/graphqlConfigSchema/graphqlConfigSchema.js +31 -0
- package/dist/bin/validateMockServerConfig/graphqlConfigSchema/routeConfigSchema/routeConfigSchema.d.ts +61 -0
- package/dist/bin/validateMockServerConfig/graphqlConfigSchema/routeConfigSchema/routeConfigSchema.js +37 -0
- package/dist/bin/validateMockServerConfig/interceptorsSchema/interceptorsSchema.d.ts +11 -0
- package/dist/bin/validateMockServerConfig/interceptorsSchema/interceptorsSchema.js +11 -0
- package/dist/bin/validateMockServerConfig/portSchema/portSchema.d.ts +2 -0
- package/dist/bin/validateMockServerConfig/portSchema/portSchema.js +9 -0
- package/dist/bin/validateMockServerConfig/queueSchema/queueSchema.d.ts +8 -0
- package/dist/bin/validateMockServerConfig/queueSchema/queueSchema.js +12 -0
- package/dist/bin/validateMockServerConfig/restConfigSchema/restConfigSchema.d.ts +713 -0
- package/dist/bin/validateMockServerConfig/restConfigSchema/restConfigSchema.js +23 -0
- package/dist/bin/validateMockServerConfig/restConfigSchema/routeConfigSchema/routeConfigSchema.d.ts +77 -0
- package/dist/bin/validateMockServerConfig/restConfigSchema/routeConfigSchema/routeConfigSchema.js +52 -0
- package/dist/bin/validateMockServerConfig/settingsSchema/settingsSchema.d.ts +14 -0
- package/dist/bin/validateMockServerConfig/settingsSchema/settingsSchema.js +12 -0
- package/dist/bin/validateMockServerConfig/staticPathSchema/staticPathSchema.d.ts +20 -0
- package/dist/bin/validateMockServerConfig/staticPathSchema/staticPathSchema.js +14 -0
- package/dist/bin/validateMockServerConfig/utils/checkModeSchema/checkModeSchema.d.ts +5 -0
- package/dist/bin/validateMockServerConfig/utils/checkModeSchema/checkModeSchema.js +12 -0
- package/dist/bin/validateMockServerConfig/utils/entitiesSchema/entitiesSchema.d.ts +75 -0
- package/dist/bin/validateMockServerConfig/utils/entitiesSchema/entitiesSchema.js +67 -0
- package/dist/bin/validateMockServerConfig/utils/index.d.ts +6 -0
- package/dist/bin/validateMockServerConfig/utils/index.js +71 -0
- package/dist/bin/validateMockServerConfig/utils/jsonSchema/jsonSchema.d.ts +8 -0
- package/dist/bin/validateMockServerConfig/utils/jsonSchema/jsonSchema.js +13 -0
- package/dist/bin/validateMockServerConfig/utils/plainObjectSchema/plainObjectSchema.d.ts +2 -0
- package/dist/bin/validateMockServerConfig/utils/plainObjectSchema/plainObjectSchema.js +11 -0
- package/dist/bin/validateMockServerConfig/utils/requiredPropertiesSchema/requiredPropertiesSchema.d.ts +3 -0
- package/dist/bin/validateMockServerConfig/utils/requiredPropertiesSchema/requiredPropertiesSchema.js +10 -0
- package/dist/bin/validateMockServerConfig/utils/sharedSchema/sharedSchema.d.ts +3 -0
- package/dist/bin/validateMockServerConfig/utils/sharedSchema/sharedSchema.js +9 -0
- package/dist/bin/validateMockServerConfig/validateApiMockServerConfig.d.ts +2 -0
- package/dist/bin/validateMockServerConfig/validateApiMockServerConfig.js +44 -0
- package/dist/bin/validateMockServerConfig/validateMockServerConfig.js +27 -20
- package/dist/src/core/database/createDatabaseRoutes/helpers/createNestedDatabaseRoutes/createNestedDatabaseRoutes.js +27 -16
- package/dist/src/core/database/createDatabaseRoutes/helpers/createShallowDatabaseRoutes/createShallowDatabaseRoutes.js +64 -3
- package/dist/src/core/database/createDatabaseRoutes/helpers/filter/filter.d.ts +1 -0
- package/dist/src/core/database/createDatabaseRoutes/helpers/filter/filter.js +46 -6
- package/dist/src/core/database/createDatabaseRoutes/helpers/pagination/pagination.d.ts +1 -0
- package/dist/src/core/database/createDatabaseRoutes/helpers/search/search.d.ts +4 -0
- package/dist/src/core/database/createDatabaseRoutes/helpers/search/search.js +29 -0
- package/dist/src/core/database/createDatabaseRoutes/helpers/sort/sort.d.ts +1 -0
- package/dist/src/core/database/createDatabaseRoutes/helpers/sort/sort.js +3 -4
- package/dist/src/core/database/createDatabaseRoutes/storages/File/FileWriter.js +2 -2
- package/dist/src/core/graphql/createGraphQLRoutes/createGraphQLRoutes.js +13 -7
- package/dist/src/core/graphql/createGraphQLRoutes/helpers/prepareGraphQLRequestConfigs/prepareGraphQLRequestConfigs.js +7 -1
- package/dist/src/core/rest/createRestRoutes/createRestRoutes.js +27 -10
- package/dist/src/core/rest/createRestRoutes/helpers/prepareRestRequestConfigs/prepareRestRequestConfigs.js +6 -0
- package/dist/src/server/createGraphQLMockServer/createGraphQLMockServer.js +1 -1
- package/dist/src/server/createRestMockServer/createRestMockServer.js +1 -1
- package/dist/src/static/views/components/header/index.js +1 -1
- package/dist/src/static/views/features/scheme/index.js +31 -31
- package/dist/src/static/views/features/tab/index.js +12 -12
- package/dist/src/utils/constants/appPath.js +1 -2
- package/dist/src/utils/constants/checkModes.d.ts +8 -9
- package/dist/src/utils/constants/checkModes.js +8 -16
- package/dist/src/utils/constants/default.js +2 -3
- package/dist/src/utils/helpers/files/index.d.ts +1 -0
- package/dist/src/utils/helpers/files/index.js +16 -0
- package/dist/src/utils/helpers/files/isFilePathValid/isFilePathValid.d.ts +1 -0
- package/dist/src/utils/helpers/files/isFilePathValid/isFilePathValid.js +19 -0
- package/dist/src/utils/helpers/index.d.ts +1 -0
- package/dist/src/utils/helpers/index.js +11 -0
- package/dist/src/utils/helpers/tests/createTmpDir.d.ts +1 -0
- package/dist/src/utils/helpers/tests/createTmpDir.js +12 -0
- package/dist/src/utils/helpers/tests/index.d.ts +1 -0
- package/dist/{bin/validateMockServerConfig/helpers/isCheckModeValid → src/utils/helpers/tests}/index.js +4 -4
- package/dist/src/utils/types/entities.d.ts +48 -0
- package/dist/src/utils/types/entities.js +1 -0
- package/dist/src/utils/types/graphql.d.ts +11 -45
- package/dist/src/utils/types/index.d.ts +1 -0
- package/dist/src/utils/types/index.js +11 -0
- package/dist/src/utils/types/rest.d.ts +17 -46
- package/dist/src/utils/types/server.d.ts +5 -4
- package/package.json +35 -27
- package/dist/bin/resolveConfigFilePath/resolveConfigFilePath.d.ts +0 -1
- package/dist/bin/resolveConfigFilePath/resolveConfigFilePath.js +0 -16
- package/dist/bin/validateMockServerConfig/helpers/index.d.ts +0 -2
- package/dist/bin/validateMockServerConfig/helpers/index.js +0 -27
- package/dist/bin/validateMockServerConfig/helpers/isCheckModeValid/index.d.ts +0 -1
- package/dist/bin/validateMockServerConfig/helpers/isCheckModeValid/isCheckModeValid.d.ts +0 -1
- package/dist/bin/validateMockServerConfig/helpers/isCheckModeValid/isCheckModeValid.js +0 -12
- package/dist/bin/validateMockServerConfig/helpers/isDescriptorValueValid/index.d.ts +0 -1
- package/dist/bin/validateMockServerConfig/helpers/isDescriptorValueValid/index.js +0 -16
- package/dist/bin/validateMockServerConfig/helpers/isDescriptorValueValid/isDescriptorValueValid.d.ts +0 -2
- package/dist/bin/validateMockServerConfig/helpers/isDescriptorValueValid/isDescriptorValueValid.js +0 -43
- package/dist/bin/validateMockServerConfig/validateBaseUrl/validateBaseUrl.d.ts +0 -1
- package/dist/bin/validateMockServerConfig/validateBaseUrl/validateBaseUrl.js +0 -15
- package/dist/bin/validateMockServerConfig/validateCors/validateCors.d.ts +0 -1
- package/dist/bin/validateMockServerConfig/validateCors/validateCors.js +0 -84
- package/dist/bin/validateMockServerConfig/validateDatabaseConfig/validateDatabaseConfig.d.ts +0 -1
- package/dist/bin/validateMockServerConfig/validateDatabaseConfig/validateDatabaseConfig.js +0 -45
- package/dist/bin/validateMockServerConfig/validateGraphqlConfig/validateGraphqlConfig.d.ts +0 -1
- package/dist/bin/validateMockServerConfig/validateGraphqlConfig/validateGraphqlConfig.js +0 -58
- package/dist/bin/validateMockServerConfig/validateGraphqlConfig/validateRoutes/validateRoutes.d.ts +0 -2
- package/dist/bin/validateMockServerConfig/validateGraphqlConfig/validateRoutes/validateRoutes.js +0 -153
- package/dist/bin/validateMockServerConfig/validateInterceptors/validateInterceptors.d.ts +0 -1
- package/dist/bin/validateMockServerConfig/validateInterceptors/validateInterceptors.js +0 -27
- package/dist/bin/validateMockServerConfig/validatePort/validatePort.d.ts +0 -1
- package/dist/bin/validateMockServerConfig/validatePort/validatePort.js +0 -12
- package/dist/bin/validateMockServerConfig/validateQueue/validateQueue.d.ts +0 -1
- package/dist/bin/validateMockServerConfig/validateQueue/validateQueue.js +0 -29
- package/dist/bin/validateMockServerConfig/validateRestConfig/validateRestConfig.d.ts +0 -1
- package/dist/bin/validateMockServerConfig/validateRestConfig/validateRestConfig.js +0 -57
- package/dist/bin/validateMockServerConfig/validateRestConfig/validateRoutes/validateRoutes.d.ts +0 -2
- package/dist/bin/validateMockServerConfig/validateRestConfig/validateRoutes/validateRoutes.js +0 -157
- package/dist/bin/validateMockServerConfig/validateSettings/validateSettings.d.ts +0 -1
- package/dist/bin/validateMockServerConfig/validateSettings/validateSettings.js +0 -34
- package/dist/bin/validateMockServerConfig/validateStaticPath/validateStaticPath.d.ts +0 -1
- package/dist/bin/validateMockServerConfig/validateStaticPath/validateStaticPath.js +0 -53
- package/dist/src/core/database/createOrm/createOrm.d.ts +0 -4
- package/dist/src/core/database/createOrm/createOrm.js +0 -70
- package/dist/src/core/database/createStorage/createStorage.d.ts +0 -2
- package/dist/src/core/database/createStorage/createStorage.js +0 -10
package/README.md
CHANGED
|
@@ -88,21 +88,30 @@ Configs are the fundamental part of the mock server. These configs are easy to f
|
|
|
88
88
|
|
|
89
89
|
##### Rest request config
|
|
90
90
|
|
|
91
|
+
Every route must be configured to handle response content in one of three ways: data or [queue](#polling) or [file](#file-responses).
|
|
92
|
+
|
|
91
93
|
- `path` {string | RegExp} request path
|
|
92
|
-
- `method` {
|
|
94
|
+
- `method` {get | post | delete | put | patch | options} rest api method
|
|
93
95
|
- `routes` {RestRouteConfig[]} request routes
|
|
94
|
-
- `data
|
|
96
|
+
- `data?` {any} mock data of request
|
|
97
|
+
- `queue?` {Array<{ time?: number; data: any}>} queue for polling with opportunity to set time for each response
|
|
98
|
+
- `file?` {string} path to file for return in response
|
|
99
|
+
- `settings?` {Settings} settings for route (polling on/off, etc.)
|
|
95
100
|
- `entities?` Object<headers | cookies | query | params | body> object that helps in data retrieval
|
|
96
101
|
- `interceptors?` {Interceptors} functions to change request or response parameters, [read](#interceptors)
|
|
97
102
|
- `interceptors?` {Interceptors} functions to change request or response parameters, [read](#interceptors)
|
|
98
103
|
|
|
99
104
|
##### GraphQL request config
|
|
100
105
|
|
|
106
|
+
Every route must be configured to handle response content in one of two ways: data or [queue](#polling).
|
|
107
|
+
|
|
101
108
|
- `operationType` {query | mutation} graphql operation type
|
|
102
109
|
- `operationName?` {string | RegExp} graphql operation name
|
|
103
110
|
- `query?`: {string} graphql query as string
|
|
104
111
|
- `routes` {GraphQLRouteConfig[]} request routes
|
|
105
|
-
- `data
|
|
112
|
+
- `data?` {any} mock data of request
|
|
113
|
+
- `queue?` {Array<{ time?: number; data: any}>} queue for polling with opportunity to set time for each response
|
|
114
|
+
- `settings?` {Settings} settings for route (polling on/off, etc.)
|
|
106
115
|
- `entities?` Object<headers | cookies | query | variables> object that helps in data retrieval
|
|
107
116
|
- `interceptors?` {Interceptors} functions to change request or response parameters, [read](#interceptors)
|
|
108
117
|
- `interceptors?` {Interceptors} functions to change request or response parameters, [read](#interceptors)
|
|
@@ -473,6 +482,66 @@ const mockServerConfig = {
|
|
|
473
482
|
export default mockServerConfig;
|
|
474
483
|
```
|
|
475
484
|
|
|
485
|
+
#### File responses
|
|
486
|
+
|
|
487
|
+
Rest routes support paths to files. If a route is matched, the server will send data from the file. If the file is not found, the server will return 404.
|
|
488
|
+
|
|
489
|
+
```javascript
|
|
490
|
+
/** @type {import('mock-config-server').MockServerConfig} */
|
|
491
|
+
const mockServerConfig = {
|
|
492
|
+
rest: {
|
|
493
|
+
baseUrl: '/api',
|
|
494
|
+
configs: [
|
|
495
|
+
{
|
|
496
|
+
path: '/files/settings',
|
|
497
|
+
method: 'get',
|
|
498
|
+
routes: [
|
|
499
|
+
{
|
|
500
|
+
file: './settings.json'
|
|
501
|
+
}
|
|
502
|
+
]
|
|
503
|
+
}
|
|
504
|
+
]
|
|
505
|
+
}
|
|
506
|
+
};
|
|
507
|
+
|
|
508
|
+
export default mockServerConfig;
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
> If the file path is absolute, then this path will be used as is. If the file path is relative, it will be appended to the current working directory.
|
|
512
|
+
|
|
513
|
+
If the file exists, response interceptors will receive null as the data argument.
|
|
514
|
+
|
|
515
|
+
```javascript
|
|
516
|
+
/** @type {import('mock-config-server').MockServerConfig} */
|
|
517
|
+
const mockServerConfig = {
|
|
518
|
+
rest: {
|
|
519
|
+
baseUrl: '/api',
|
|
520
|
+
configs: [
|
|
521
|
+
{
|
|
522
|
+
path: '/files/settings',
|
|
523
|
+
method: 'get',
|
|
524
|
+
routes: [
|
|
525
|
+
{
|
|
526
|
+
file: './settings.json',
|
|
527
|
+
interceptors: {
|
|
528
|
+
response: (data) => {
|
|
529
|
+
console.log(data); // null
|
|
530
|
+
return data;
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
]
|
|
535
|
+
}
|
|
536
|
+
]
|
|
537
|
+
}
|
|
538
|
+
};
|
|
539
|
+
|
|
540
|
+
export default mockServerConfig;
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
> Any changes to the data will not affect the file (and the response, respectively).
|
|
544
|
+
|
|
476
545
|
#### Static Path
|
|
477
546
|
|
|
478
547
|
Entity for connecting statics to the server, like HTML, JSON, PNG, etc.
|
|
@@ -697,6 +766,20 @@ GET /users?_begin=20&_end=30
|
|
|
697
766
|
|
|
698
767
|
Works exactly as [slice](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice), \_begin and \_end are optional
|
|
699
768
|
|
|
769
|
+
### Full text search
|
|
770
|
+
|
|
771
|
+
> Add \_q parameter for search data, search can be done by strings and numbers
|
|
772
|
+
|
|
773
|
+
```
|
|
774
|
+
GET /users?_q=siberia
|
|
775
|
+
```
|
|
776
|
+
|
|
777
|
+
For multiple search
|
|
778
|
+
|
|
779
|
+
```
|
|
780
|
+
GET /users?_q=siberia&_q=24
|
|
781
|
+
```
|
|
782
|
+
|
|
700
783
|
### File example
|
|
701
784
|
|
|
702
785
|
```javascript
|
|
@@ -730,6 +813,18 @@ Examples:
|
|
|
730
813
|
mcs --help
|
|
731
814
|
```
|
|
732
815
|
|
|
816
|
+
# Init Command
|
|
817
|
+
|
|
818
|
+
The init command is used to initialize a new project or set up the initial configuration for a tool. It helps users get started with a new project by providing a streamlined setup process.
|
|
819
|
+
|
|
820
|
+
```
|
|
821
|
+
mcs init
|
|
822
|
+
|
|
823
|
+
Examples:
|
|
824
|
+
mcs init
|
|
825
|
+
mcs init --baseurl /base/url --port 3000
|
|
826
|
+
```
|
|
827
|
+
|
|
733
828
|
## ✨ Contributors
|
|
734
829
|
|
|
735
830
|
<table>
|
|
@@ -769,6 +864,15 @@ Examples:
|
|
|
769
864
|
<br />
|
|
770
865
|
<sub style="font-size:13px"><b>🎱️ anv296</b></sub>
|
|
771
866
|
</a>
|
|
867
|
+
</td>
|
|
868
|
+
<td align="center" style="word-wrap: break-word; width: 100.0; height: 100.0">
|
|
869
|
+
<a href="https://github.com/kvelian">
|
|
870
|
+
<img src="https://avatars.githubusercontent.com/u/81089091?s=400&u=7c4fcc6d120f4b13ccbd03a9a384622b6523c376&v=4"
|
|
871
|
+
width="100;"
|
|
872
|
+
alt="kvelian" />
|
|
873
|
+
<br />
|
|
874
|
+
<sub style="font-size:13px"><b>🌵 kvelian</b></sub>
|
|
875
|
+
</a>
|
|
772
876
|
</td>
|
|
773
877
|
</tr>
|
|
774
878
|
</table>
|
package/dist/bin/build.js
CHANGED
|
@@ -31,7 +31,7 @@ const build = async argv => {
|
|
|
31
31
|
let instance;
|
|
32
32
|
build.onStart(() => {
|
|
33
33
|
var _instance;
|
|
34
|
-
(_instance = instance) === null || _instance === void 0
|
|
34
|
+
(_instance = instance) === null || _instance === void 0 || _instance.destroy();
|
|
35
35
|
});
|
|
36
36
|
build.onEnd(result => {
|
|
37
37
|
if (!result.errors.length) {
|
package/dist/bin/cli.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const cli: () => void;
|
|
1
|
+
export declare const cli: () => Promise<void> | undefined;
|
package/dist/bin/cli.js
CHANGED
|
@@ -7,24 +7,33 @@ exports.cli = void 0;
|
|
|
7
7
|
var _yargs = _interopRequireDefault(require("yargs"));
|
|
8
8
|
var _helpers = require("yargs/helpers");
|
|
9
9
|
var _build = require("./build");
|
|
10
|
+
var _init = require("./init");
|
|
10
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
+
const initOptions = {
|
|
13
|
+
baseUrl: {
|
|
14
|
+
alias: 'b',
|
|
15
|
+
description: 'Set base url for mock server',
|
|
16
|
+
type: 'string'
|
|
17
|
+
},
|
|
18
|
+
port: {
|
|
19
|
+
alias: 'p',
|
|
20
|
+
description: 'Set port for server',
|
|
21
|
+
type: 'number'
|
|
22
|
+
},
|
|
23
|
+
staticPath: {
|
|
24
|
+
alias: 's',
|
|
25
|
+
description: 'Set static path for mock server',
|
|
26
|
+
type: 'string'
|
|
27
|
+
}
|
|
28
|
+
};
|
|
11
29
|
const cli = () => {
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
alias: 'p',
|
|
20
|
-
description: 'Set port for server',
|
|
21
|
-
type: 'number'
|
|
22
|
-
},
|
|
23
|
-
staticPath: {
|
|
24
|
-
alias: 's',
|
|
25
|
-
description: 'Set static path for mock server',
|
|
26
|
-
type: 'string'
|
|
27
|
-
},
|
|
30
|
+
const processArgv = (0, _helpers.hideBin)(process.argv);
|
|
31
|
+
if (processArgv.includes('init')) {
|
|
32
|
+
const argv = (0, _yargs.default)(processArgv).options(initOptions).parse();
|
|
33
|
+
return (0, _init.init)(argv);
|
|
34
|
+
}
|
|
35
|
+
const argv = (0, _yargs.default)(processArgv).usage('mcs [options]').epilogue('More info: https://github.com/siberiacancode/mock-config-server#readme').options({
|
|
36
|
+
...initOptions,
|
|
28
37
|
config: {
|
|
29
38
|
alias: 'c',
|
|
30
39
|
description: 'Set path to config file',
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createTemplate = void 0;
|
|
7
|
+
var _nodeFs = _interopRequireDefault(require("node:fs"));
|
|
8
|
+
var _constants = require("../../src/utils/constants");
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
const createTemplate = options => {
|
|
11
|
+
const language = options.withTypescript ? 'ts' : 'js';
|
|
12
|
+
const templatePath = `dist/bin/templates/${language}/${options.apiType}`;
|
|
13
|
+
_nodeFs.default.cpSync(`${templatePath}/mock-requests`, `${_constants.APP_PATH}/mock-requests`, {
|
|
14
|
+
recursive: true,
|
|
15
|
+
force: true
|
|
16
|
+
});
|
|
17
|
+
let mockServerConfig = _nodeFs.default.readFileSync(`${templatePath}/mock-server.config.${language}`, 'utf8');
|
|
18
|
+
if (options.staticPath !== '/') {
|
|
19
|
+
mockServerConfig = mockServerConfig.replace(`port: ${_constants.DEFAULT.PORT}`, `port: ${_constants.DEFAULT.PORT},\n staticPath: '${options.staticPath}'`);
|
|
20
|
+
}
|
|
21
|
+
mockServerConfig = mockServerConfig.replace(`port: ${_constants.DEFAULT.PORT}`, `port: ${options.port.toString()}`);
|
|
22
|
+
mockServerConfig = mockServerConfig.replace("baseUrl: '/'", `baseUrl: '${options.baseUrl}'`);
|
|
23
|
+
_nodeFs.default.writeFileSync(`${_constants.APP_PATH}/mock-server.config.${language}`, mockServerConfig);
|
|
24
|
+
};
|
|
25
|
+
exports.createTemplate = createTemplate;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getMostSpecificPathFromError = void 0;
|
|
7
|
+
var _zod = require("zod");
|
|
8
|
+
const getMostSpecificPathFromError = error => {
|
|
9
|
+
let currentMostSpecificPath = [];
|
|
10
|
+
for (const issue of error.issues) {
|
|
11
|
+
if (issue.code === _zod.z.ZodIssueCode.invalid_union) {
|
|
12
|
+
for (const unionError of issue.unionErrors) {
|
|
13
|
+
const unionErrorMostSpecificPath = getMostSpecificPathFromError(unionError);
|
|
14
|
+
if (unionErrorMostSpecificPath.length > currentMostSpecificPath.length) {
|
|
15
|
+
currentMostSpecificPath = unionErrorMostSpecificPath;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
// eslint-disable-next-line no-continue
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
if (issue.code === _zod.z.ZodIssueCode.unrecognized_keys) {
|
|
22
|
+
const [unrecognizedKey] = issue.keys;
|
|
23
|
+
const issuePath = [...issue.path, unrecognizedKey];
|
|
24
|
+
if (issuePath.length > currentMostSpecificPath.length) {
|
|
25
|
+
currentMostSpecificPath = issuePath;
|
|
26
|
+
}
|
|
27
|
+
// eslint-disable-next-line no-continue
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
if (issue.path.length > currentMostSpecificPath.length) {
|
|
31
|
+
currentMostSpecificPath = issue.path;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return currentMostSpecificPath;
|
|
35
|
+
};
|
|
36
|
+
exports.getMostSpecificPathFromError = getMostSpecificPathFromError;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getValidationMessageFromPath: (path: (string | number)[]) => string | number;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getValidationMessageFromPath = void 0;
|
|
7
|
+
const getValidationMessageFromPath = path => path.reduce((validationMessageAcc, pathElement) => {
|
|
8
|
+
if (typeof pathElement === 'number') return `${validationMessageAcc}[${pathElement}]`;
|
|
9
|
+
return `${validationMessageAcc}.${pathElement}`;
|
|
10
|
+
}, '');
|
|
11
|
+
exports.getValidationMessageFromPath = getValidationMessageFromPath;
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
export * from './createTemplate';
|
|
2
|
+
export * from './getMostSpecificPathFromError';
|
|
3
|
+
export * from './getValidationMessageFromPath';
|
|
4
|
+
export * from './isOnlyRequestedDataResolvingPropertyExists';
|
|
1
5
|
export * from './resolveConfigFile';
|
|
2
6
|
export * from './resolveConfigFilePath';
|
|
3
7
|
export * from './resolveExportsFromSourceCode';
|
|
@@ -3,6 +3,50 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
var _createTemplate = require("./createTemplate");
|
|
7
|
+
Object.keys(_createTemplate).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _createTemplate[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _createTemplate[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
var _getMostSpecificPathFromError = require("./getMostSpecificPathFromError");
|
|
18
|
+
Object.keys(_getMostSpecificPathFromError).forEach(function (key) {
|
|
19
|
+
if (key === "default" || key === "__esModule") return;
|
|
20
|
+
if (key in exports && exports[key] === _getMostSpecificPathFromError[key]) return;
|
|
21
|
+
Object.defineProperty(exports, key, {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () {
|
|
24
|
+
return _getMostSpecificPathFromError[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
var _getValidationMessageFromPath = require("./getValidationMessageFromPath");
|
|
29
|
+
Object.keys(_getValidationMessageFromPath).forEach(function (key) {
|
|
30
|
+
if (key === "default" || key === "__esModule") return;
|
|
31
|
+
if (key in exports && exports[key] === _getValidationMessageFromPath[key]) return;
|
|
32
|
+
Object.defineProperty(exports, key, {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function () {
|
|
35
|
+
return _getValidationMessageFromPath[key];
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
var _isOnlyRequestedDataResolvingPropertyExists = require("./isOnlyRequestedDataResolvingPropertyExists");
|
|
40
|
+
Object.keys(_isOnlyRequestedDataResolvingPropertyExists).forEach(function (key) {
|
|
41
|
+
if (key === "default" || key === "__esModule") return;
|
|
42
|
+
if (key in exports && exports[key] === _isOnlyRequestedDataResolvingPropertyExists[key]) return;
|
|
43
|
+
Object.defineProperty(exports, key, {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
get: function () {
|
|
46
|
+
return _isOnlyRequestedDataResolvingPropertyExists[key];
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
});
|
|
6
50
|
var _resolveConfigFile = require("./resolveConfigFile");
|
|
7
51
|
Object.keys(_resolveConfigFile).forEach(function (key) {
|
|
8
52
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { PlainObject } from '../../src/utils/types';
|
|
2
|
+
declare const DATA_RESOLVING_PROPERTIES: readonly ["data", "file", "queue"];
|
|
3
|
+
export declare const isOnlyRequestedDataResolvingPropertyExists: (object: PlainObject, requestedDataResolvingProperty: (typeof DATA_RESOLVING_PROPERTIES)[number]) => boolean;
|
|
4
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isOnlyRequestedDataResolvingPropertyExists = void 0;
|
|
7
|
+
const DATA_RESOLVING_PROPERTIES = ['data', 'file', 'queue'];
|
|
8
|
+
const isOnlyRequestedDataResolvingPropertyExists = (object, requestedDataResolvingProperty) => DATA_RESOLVING_PROPERTIES.every(dataResolvingProperty => dataResolvingProperty === requestedDataResolvingProperty ? dataResolvingProperty in object : !(dataResolvingProperty in object));
|
|
9
|
+
exports.isOnlyRequestedDataResolvingPropertyExists = isOnlyRequestedDataResolvingPropertyExists;
|
package/dist/bin/init.js
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.init = void 0;
|
|
7
|
+
var _ansiColors = _interopRequireDefault(require("ansi-colors"));
|
|
8
|
+
var _prompts = _interopRequireDefault(require("prompts"));
|
|
9
|
+
var _baseUrlSchema = require("./validateMockServerConfig/baseUrlSchema/baseUrlSchema");
|
|
10
|
+
var _portSchema = require("./validateMockServerConfig/portSchema/portSchema");
|
|
11
|
+
var _staticPathSchema = require("./validateMockServerConfig/staticPathSchema/staticPathSchema");
|
|
12
|
+
var _helpers = require("./helpers");
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
const init = async argv => {
|
|
15
|
+
try {
|
|
16
|
+
var _process$env$npm_conf;
|
|
17
|
+
const response = await (0, _prompts.default)([{
|
|
18
|
+
name: 'withTypescript',
|
|
19
|
+
type: 'toggle',
|
|
20
|
+
message: 'Would you like to use TypeScript?',
|
|
21
|
+
initial: true,
|
|
22
|
+
active: 'Yes',
|
|
23
|
+
inactive: 'No'
|
|
24
|
+
}, {
|
|
25
|
+
type: 'select',
|
|
26
|
+
name: 'apiType',
|
|
27
|
+
message: 'Choose api type',
|
|
28
|
+
initial: 0,
|
|
29
|
+
choices: [{
|
|
30
|
+
title: 'Rest',
|
|
31
|
+
description: 'Rest api sample',
|
|
32
|
+
value: 'rest'
|
|
33
|
+
}, {
|
|
34
|
+
title: 'GraphQL',
|
|
35
|
+
description: 'GraphQL api sample',
|
|
36
|
+
value: 'graphql'
|
|
37
|
+
}, {
|
|
38
|
+
title: 'Both',
|
|
39
|
+
description: 'Rest api and GraphQL api sample',
|
|
40
|
+
value: 'full'
|
|
41
|
+
}]
|
|
42
|
+
}, {
|
|
43
|
+
name: 'baseUrl',
|
|
44
|
+
type: argv.baseUrl ? null : 'text',
|
|
45
|
+
message: 'Base url (must start with a forward slash):',
|
|
46
|
+
initial: '/',
|
|
47
|
+
validate: baseUrl => {
|
|
48
|
+
try {
|
|
49
|
+
_baseUrlSchema.baseUrlSchema.parse(baseUrl);
|
|
50
|
+
return true;
|
|
51
|
+
} catch {
|
|
52
|
+
return 'Invalid base url value';
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}, {
|
|
56
|
+
name: 'port',
|
|
57
|
+
type: argv.port ? null : 'number',
|
|
58
|
+
message: 'Port:',
|
|
59
|
+
initial: 31299,
|
|
60
|
+
validate: port => {
|
|
61
|
+
try {
|
|
62
|
+
_portSchema.portSchema.parse(+port);
|
|
63
|
+
return true;
|
|
64
|
+
} catch (error) {
|
|
65
|
+
return 'Invalid port value';
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}, {
|
|
69
|
+
name: 'staticPath',
|
|
70
|
+
type: argv.staticPath ? null : 'text',
|
|
71
|
+
message: 'Static path (must start with a forward slash):',
|
|
72
|
+
initial: '/',
|
|
73
|
+
validate: staticPath => {
|
|
74
|
+
try {
|
|
75
|
+
_staticPathSchema.staticPathSchema.parse(staticPath);
|
|
76
|
+
return true;
|
|
77
|
+
} catch {
|
|
78
|
+
return 'Invalid static path value';
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}], {
|
|
82
|
+
onCancel: () => {
|
|
83
|
+
throw new Error('❌ Operation cancelled');
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
await (0, _helpers.createTemplate)({
|
|
87
|
+
...argv,
|
|
88
|
+
...response
|
|
89
|
+
});
|
|
90
|
+
const userAgent = (_process$env$npm_conf = process.env.npm_config_user_agent) !== null && _process$env$npm_conf !== void 0 ? _process$env$npm_conf : '';
|
|
91
|
+
// eslint-disable-next-line no-nested-ternary
|
|
92
|
+
const packageManager = /pnpm/.test(userAgent) ? 'pnpm' : /yarn/.test(userAgent) ? 'yarn' : 'npx';
|
|
93
|
+
console.log('\n');
|
|
94
|
+
console.log(_ansiColors.default.bold('🎉 Thanks for using mock-config-server! 🎉'));
|
|
95
|
+
console.log(`start command: ${_ansiColors.default.bold(_ansiColors.default.green(`${packageManager} mcs`))}`);
|
|
96
|
+
} catch (cancelled) {
|
|
97
|
+
console.log(cancelled === null || cancelled === void 0 ? void 0 : cancelled.message);
|
|
98
|
+
process.exit(1);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
exports.init = init;
|
package/dist/bin/run.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/// <reference types="node" />
|
|
3
3
|
import type { MockServerConfig, MockServerConfigArgv } from '../src';
|
|
4
|
-
export declare const run: (mockConfig: MockServerConfig,
|
|
4
|
+
export declare const run: (mockConfig: MockServerConfig, { baseUrl, port, staticPath }: MockServerConfigArgv) => (import("http").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse> & {
|
|
5
5
|
destroy: (callback?: ((err?: Error | undefined) => void) | undefined) => import("http").Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>;
|
|
6
6
|
}) | undefined;
|
package/dist/bin/run.js
CHANGED
|
@@ -6,13 +6,34 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.run = void 0;
|
|
8
8
|
var _server = require("../src/server");
|
|
9
|
+
var _helpers = require("../src/utils/helpers");
|
|
10
|
+
var _validateApiMockServerConfig = require("./validateMockServerConfig/validateApiMockServerConfig");
|
|
9
11
|
var _validateMockServerConfig = require("./validateMockServerConfig/validateMockServerConfig");
|
|
10
|
-
const run = (mockConfig,
|
|
12
|
+
const run = (mockConfig, {
|
|
13
|
+
baseUrl,
|
|
14
|
+
port,
|
|
15
|
+
staticPath
|
|
16
|
+
}) => {
|
|
11
17
|
try {
|
|
12
18
|
const mergedMockServerConfig = {
|
|
13
19
|
...mockConfig,
|
|
14
|
-
|
|
20
|
+
baseUrl,
|
|
21
|
+
port,
|
|
22
|
+
staticPath
|
|
15
23
|
};
|
|
24
|
+
if (!mergedMockServerConfig.rest && !mergedMockServerConfig.graphql && 'configs' in mergedMockServerConfig) {
|
|
25
|
+
const mergedApiMockServerConfig = mergedMockServerConfig;
|
|
26
|
+
if (Array.isArray(mergedApiMockServerConfig.configs) && (0, _helpers.isPlainObject)(mergedApiMockServerConfig.configs[0]) && 'path' in mergedApiMockServerConfig.configs[0]) {
|
|
27
|
+
(0, _validateApiMockServerConfig.validateApiMockServerConfig)(mergedApiMockServerConfig, 'rest');
|
|
28
|
+
return (0, _server.startRestMockServer)(mergedApiMockServerConfig);
|
|
29
|
+
}
|
|
30
|
+
if (Array.isArray(mergedApiMockServerConfig.configs) && (0, _helpers.isPlainObject)(mergedApiMockServerConfig.configs[0]) && ('query' in mergedApiMockServerConfig.configs[0] || 'operationName' in mergedApiMockServerConfig.configs[0])) {
|
|
31
|
+
(0, _validateApiMockServerConfig.validateApiMockServerConfig)(mergedApiMockServerConfig, 'graphql');
|
|
32
|
+
return (0, _server.startGraphQLMockServer)(mergedApiMockServerConfig);
|
|
33
|
+
}
|
|
34
|
+
(0, _validateApiMockServerConfig.validateApiMockServerConfig)(mergedApiMockServerConfig, 'rest');
|
|
35
|
+
return (0, _server.startRestMockServer)(mergedApiMockServerConfig);
|
|
36
|
+
}
|
|
16
37
|
(0, _validateMockServerConfig.validateMockServerConfig)(mergedMockServerConfig);
|
|
17
38
|
return (0, _server.startMockServer)(mergedMockServerConfig);
|
|
18
39
|
} catch (error) {
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export const getUserQuery = {
|
|
2
|
+
operationName: 'getUser',
|
|
3
|
+
operationType: 'query',
|
|
4
|
+
routes: [
|
|
5
|
+
{
|
|
6
|
+
data: { id: 1, emoji: '🎉' }
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
data: { id: 2, emoji: '🔥' },
|
|
10
|
+
entities: {
|
|
11
|
+
variables: {
|
|
12
|
+
id: 2
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export const createUserMutation = {
|
|
20
|
+
operationName: 'createUser',
|
|
21
|
+
operationType: 'mutation',
|
|
22
|
+
routes: [
|
|
23
|
+
{
|
|
24
|
+
data: { id: 1, emoji: '🎉' }
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
data: { id: 2, emoji: '🔥' },
|
|
28
|
+
entities: {
|
|
29
|
+
variables: {
|
|
30
|
+
emoji: '🔥'
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export const getUserRequest = {
|
|
2
|
+
method: 'get',
|
|
3
|
+
path: '/users/:id',
|
|
4
|
+
routes: [
|
|
5
|
+
{
|
|
6
|
+
data: { id: 1, emoji: '🎉' }
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
data: { id: 2, emoji: '🔥' },
|
|
10
|
+
entities: {
|
|
11
|
+
params: {
|
|
12
|
+
id: 2
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export const postUserRequest = {
|
|
20
|
+
method: 'post',
|
|
21
|
+
path: '/users',
|
|
22
|
+
routes: [
|
|
23
|
+
{
|
|
24
|
+
data: { id: 1, emoji: '🎉' }
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
data: { id: 2, emoji: '🔥' },
|
|
28
|
+
entities: {
|
|
29
|
+
body: {
|
|
30
|
+
emoji: '🔥'
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
};
|