@mocko/core 2.0.0-alpha.12
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 +3 -0
- package/default.env +26 -0
- package/dist/api/deploy/deploy.controller.js +37 -0
- package/dist/api/deploy/deploy.controller.js.map +1 -0
- package/dist/api/deploy/deploy.router.js +40 -0
- package/dist/api/deploy/deploy.router.js.map +1 -0
- package/dist/api/deploy/deploy.service.js +55 -0
- package/dist/api/deploy/deploy.service.js.map +1 -0
- package/dist/api/flag/data/flag.dto.js +36 -0
- package/dist/api/flag/data/flag.dto.js.map +1 -0
- package/dist/api/flag/flag.controller.js +90 -0
- package/dist/api/flag/flag.controller.js.map +1 -0
- package/dist/api/flag/flag.memory-repository.js +37 -0
- package/dist/api/flag/flag.memory-repository.js.map +1 -0
- package/dist/api/flag/flag.redis-repository.js +44 -0
- package/dist/api/flag/flag.redis-repository.js.map +1 -0
- package/dist/api/flag/flag.repository.js +3 -0
- package/dist/api/flag/flag.repository.js.map +1 -0
- package/dist/api/flag/flag.router.js +61 -0
- package/dist/api/flag/flag.router.js.map +1 -0
- package/dist/api/flag/flag.service.js +88 -0
- package/dist/api/flag/flag.service.js.map +1 -0
- package/dist/api/health/health.controller.js +30 -0
- package/dist/api/health/health.controller.js.map +1 -0
- package/dist/api/health/health.router.js +35 -0
- package/dist/api/health/health.router.js.map +1 -0
- package/dist/api/health/health.service.js +35 -0
- package/dist/api/health/health.service.js.map +1 -0
- package/dist/api/host/data/core-host.dto.js +16 -0
- package/dist/api/host/data/core-host.dto.js.map +1 -0
- package/dist/api/host/host.controller.js +32 -0
- package/dist/api/host/host.controller.js.map +1 -0
- package/dist/api/host/host.router.js +35 -0
- package/dist/api/host/host.router.js.map +1 -0
- package/dist/api/host/host.service.js +30 -0
- package/dist/api/host/host.service.js.map +1 -0
- package/dist/api/mock/data/core-mock.dto.js +52 -0
- package/dist/api/mock/data/core-mock.dto.js.map +1 -0
- package/dist/api/mock/data/mock-failure.js +11 -0
- package/dist/api/mock/data/mock-failure.js.map +1 -0
- package/dist/api/mock/mock.controller.js +43 -0
- package/dist/api/mock/mock.controller.js.map +1 -0
- package/dist/api/mock/mock.handler.js +141 -0
- package/dist/api/mock/mock.handler.js.map +1 -0
- package/dist/api/mock/mock.repository.js +38 -0
- package/dist/api/mock/mock.repository.js.map +1 -0
- package/dist/api/mock/mock.router.js +50 -0
- package/dist/api/mock/mock.router.js.map +1 -0
- package/dist/api/mock/mock.service.js +111 -0
- package/dist/api/mock/mock.service.js.map +1 -0
- package/dist/api/proxy/proxy.controller.js +45 -0
- package/dist/api/proxy/proxy.controller.js.map +1 -0
- package/dist/api/proxy/proxy.router.js +62 -0
- package/dist/api/proxy/proxy.router.js.map +1 -0
- package/dist/api/proxy/proxy.service.js +48 -0
- package/dist/api/proxy/proxy.service.js.map +1 -0
- package/dist/config/config.constants.js +7 -0
- package/dist/config/config.constants.js.map +1 -0
- package/dist/config/config.service.js +89 -0
- package/dist/config/config.service.js.map +1 -0
- package/dist/definitions/data/data.js +3 -0
- package/dist/definitions/data/data.js.map +1 -0
- package/dist/definitions/data/host.js +35 -0
- package/dist/definitions/data/host.js.map +1 -0
- package/dist/definitions/data/mock.js +74 -0
- package/dist/definitions/data/mock.js.map +1 -0
- package/dist/definitions/data/mocko-definition.js +48 -0
- package/dist/definitions/data/mocko-definition.js.map +1 -0
- package/dist/definitions/definition.constants.js +6 -0
- package/dist/definitions/definition.constants.js.map +1 -0
- package/dist/definitions/definition.provider.js +185 -0
- package/dist/definitions/definition.provider.js.map +1 -0
- package/dist/helpers/flag.js +49 -0
- package/dist/helpers/flag.js.map +1 -0
- package/dist/helpers/log.js +30 -0
- package/dist/helpers/log.js.map +1 -0
- package/dist/helpers/response.js +54 -0
- package/dist/helpers/response.js.map +1 -0
- package/dist/listeners/deploy-listener.js +29 -0
- package/dist/listeners/deploy-listener.js.map +1 -0
- package/dist/listeners/index.js +26 -0
- package/dist/listeners/index.js.map +1 -0
- package/dist/main.js +26 -0
- package/dist/main.js.map +1 -0
- package/dist/main.router.js +51 -0
- package/dist/main.router.js.map +1 -0
- package/dist/plugins/h2o2.js +22 -0
- package/dist/plugins/h2o2.js.map +1 -0
- package/dist/plugins/index.js +29 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/logger.js +24 -0
- package/dist/plugins/logger.js.map +1 -0
- package/dist/redis/redis.provider.js +94 -0
- package/dist/redis/redis.provider.js.map +1 -0
- package/dist/server.js +153 -0
- package/dist/server.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/utils/decorators/provider.js +6 -0
- package/dist/utils/decorators/provider.js.map +1 -0
- package/dist/utils/decorators/service.js +6 -0
- package/dist/utils/decorators/service.js.map +1 -0
- package/dist/utils/listener.js +3 -0
- package/dist/utils/listener.js.map +1 -0
- package/dist/utils/logger.js +7 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/plugin.js +3 -0
- package/dist/utils/plugin.js.map +1 -0
- package/dist/utils/remap-event-bus.js +26 -0
- package/dist/utils/remap-event-bus.js.map +1 -0
- package/dist/utils/router.js +3 -0
- package/dist/utils/router.js.map +1 -0
- package/dist/utils/stream.js +9 -0
- package/dist/utils/stream.js.map +1 -0
- package/dist/utils/utils.js +54 -0
- package/dist/utils/utils.js.map +1 -0
- package/nodemon.json +6 -0
- package/package.json +58 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.MockService = void 0;
|
|
16
|
+
const service_1 = require("../../utils/decorators/service");
|
|
17
|
+
const mock_repository_1 = require("./mock.repository");
|
|
18
|
+
const proxy_controller_1 = require("../proxy/proxy.controller");
|
|
19
|
+
const flag_service_1 = require("../flag/flag.service");
|
|
20
|
+
const logger_1 = require("../../utils/logger");
|
|
21
|
+
const inversify_1 = require("inversify");
|
|
22
|
+
const mock_handler_1 = require("./mock.handler");
|
|
23
|
+
const LogHelpers = require("../../helpers/log");
|
|
24
|
+
const ResponseHelpers = require("../../helpers/response");
|
|
25
|
+
const FlagHelpers = require("../../helpers/flag");
|
|
26
|
+
const definition_provider_1 = require("../../definitions/definition.provider");
|
|
27
|
+
const bigodon_1 = require("bigodon");
|
|
28
|
+
const core_mock_dto_1 = require("./data/core-mock.dto");
|
|
29
|
+
let MockService = class MockService {
|
|
30
|
+
constructor(logger, repository, proxyController, flagService, definitionProvider) {
|
|
31
|
+
this.logger = logger;
|
|
32
|
+
this.repository = repository;
|
|
33
|
+
this.proxyController = proxyController;
|
|
34
|
+
this.flagService = flagService;
|
|
35
|
+
this.definitionProvider = definitionProvider;
|
|
36
|
+
this.bigodon = new bigodon_1.default();
|
|
37
|
+
}
|
|
38
|
+
async getMockRoutes() {
|
|
39
|
+
const options = await this.definitionProvider.getDefinitions();
|
|
40
|
+
this.registerHelpers();
|
|
41
|
+
return options.mocks
|
|
42
|
+
.filter((mock) => mock.isEnabled)
|
|
43
|
+
.filter((mock) => !this.isReservedPath(mock.path))
|
|
44
|
+
.map((mock) => this.mockToRoute(mock, options.data, options.hosts));
|
|
45
|
+
}
|
|
46
|
+
mockToRoute(mock, data, hosts) {
|
|
47
|
+
let config = {};
|
|
48
|
+
const handler = new mock_handler_1.MockHandler(this.bigodon, this.repository, this.proxyController, this.logger, mock, data).handle;
|
|
49
|
+
const vhost = this.resolveMockHost(mock.host, hosts);
|
|
50
|
+
if (mock.parse === false) {
|
|
51
|
+
config = {
|
|
52
|
+
payload: {
|
|
53
|
+
output: 'stream',
|
|
54
|
+
parse: false,
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
method: mock.method,
|
|
60
|
+
path: mock.path,
|
|
61
|
+
vhost,
|
|
62
|
+
handler,
|
|
63
|
+
config,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
async listMocks() {
|
|
67
|
+
const options = await this.definitionProvider.getDefinitions();
|
|
68
|
+
return options.mocks.map((mock) => core_mock_dto_1.CoreMockDto.ofMock(mock));
|
|
69
|
+
}
|
|
70
|
+
resolveMockHost(hostName, hosts) {
|
|
71
|
+
if (!hostName) {
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
const host = hosts.find((item) => item.slug === hostName || item.source === hostName);
|
|
75
|
+
return (host === null || host === void 0 ? void 0 : host.source) || hostName;
|
|
76
|
+
}
|
|
77
|
+
async getMockById(id) {
|
|
78
|
+
const options = await this.definitionProvider.getDefinitions();
|
|
79
|
+
const mock = options.mocks.find((item) => item.id === id);
|
|
80
|
+
if (!mock) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
const failure = await this.repository.getFailure(id);
|
|
84
|
+
return core_mock_dto_1.CoreMockDetailsDto.of(mock, failure);
|
|
85
|
+
}
|
|
86
|
+
isReservedPath(path) {
|
|
87
|
+
return path === '/__mocko__' || path.startsWith('/__mocko__/');
|
|
88
|
+
}
|
|
89
|
+
registerHelpers() {
|
|
90
|
+
this.bigodon.addHelper('log', LogHelpers.log(this.logger));
|
|
91
|
+
this.bigodon.addHelper('warn', LogHelpers.warn(this.logger));
|
|
92
|
+
this.bigodon.addHelper('error', LogHelpers.error(this.logger));
|
|
93
|
+
this.bigodon.addHelper('setStatus', ResponseHelpers.setStatus);
|
|
94
|
+
this.bigodon.addHelper('proxy', ResponseHelpers.proxy(this.definitionProvider));
|
|
95
|
+
this.bigodon.addHelper('setHeader', ResponseHelpers.setHeader);
|
|
96
|
+
this.bigodon.addHelper('getFlag', FlagHelpers.getFlag(this.flagService));
|
|
97
|
+
this.bigodon.addHelper('setFlag', FlagHelpers.setFlag(this.flagService));
|
|
98
|
+
this.bigodon.addHelper('delFlag', FlagHelpers.delFlag(this.flagService));
|
|
99
|
+
this.bigodon.addHelper('hasFlag', FlagHelpers.hasFlag(this.flagService));
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
exports.MockService = MockService;
|
|
103
|
+
exports.MockService = MockService = __decorate([
|
|
104
|
+
(0, service_1.Service)(),
|
|
105
|
+
__param(0, (0, inversify_1.inject)(logger_1.Logger)),
|
|
106
|
+
__metadata("design:paramtypes", [Object, mock_repository_1.MockRepository,
|
|
107
|
+
proxy_controller_1.ProxyController,
|
|
108
|
+
flag_service_1.FlagService,
|
|
109
|
+
definition_provider_1.DefinitionProvider])
|
|
110
|
+
], MockService);
|
|
111
|
+
//# sourceMappingURL=mock.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock.service.js","sourceRoot":"","sources":["../../../src/api/mock/mock.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ProxyController = void 0;
|
|
13
|
+
const provider_1 = require("../../utils/decorators/provider");
|
|
14
|
+
const proxy_service_1 = require("./proxy.service");
|
|
15
|
+
const Boom = require("@hapi/boom");
|
|
16
|
+
const config_service_1 = require("../../config/config.service");
|
|
17
|
+
const debug = require('debug')('mocko:proxy:proxy:controller');
|
|
18
|
+
const TIMEOUT = config_service_1.configProvider.getNumber('PROXY_TIMEOUT-MILLIS');
|
|
19
|
+
let ProxyController = class ProxyController {
|
|
20
|
+
constructor(service) {
|
|
21
|
+
this.service = service;
|
|
22
|
+
}
|
|
23
|
+
proxyRequest(request, h, overrideUri, logLabel) {
|
|
24
|
+
const mustProxy = this.service.isProxyEnabled() || !!overrideUri;
|
|
25
|
+
const uri = this.service.getProxyUri(overrideUri) + request.url.search;
|
|
26
|
+
if (!mustProxy) {
|
|
27
|
+
debug(`cannot proxy '${request.method.toUpperCase()} ${request.path}', proxying is disabled`);
|
|
28
|
+
throw Boom.notFound('No mock was found for this endpoint and method. Proxying is also disabled.');
|
|
29
|
+
}
|
|
30
|
+
request['_label'] = logLabel || 'proxy';
|
|
31
|
+
debug(`proxying '${request.method.toUpperCase()} ${request.path}' to ${uri}`);
|
|
32
|
+
return h.proxy({
|
|
33
|
+
uri,
|
|
34
|
+
passThrough: true,
|
|
35
|
+
xforward: true,
|
|
36
|
+
timeout: TIMEOUT
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
exports.ProxyController = ProxyController;
|
|
41
|
+
exports.ProxyController = ProxyController = __decorate([
|
|
42
|
+
(0, provider_1.Provider)(),
|
|
43
|
+
__metadata("design:paramtypes", [proxy_service_1.ProxyService])
|
|
44
|
+
], ProxyController);
|
|
45
|
+
//# sourceMappingURL=proxy.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.controller.js","sourceRoot":"","sources":["../../../src/api/proxy/proxy.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8DAAyD;AAEzD,mDAA6C;AAC7C,mCAAmC;AACnC,gEAA2D;AAE3D,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,8BAA8B,CAAC,CAAC;AAE/D,MAAM,OAAO,GAAG,+BAAc,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;AAG1D,IAAM,eAAe,GAArB,MAAM,eAAe;IACxB,YACqB,OAAqB;QAArB,YAAO,GAAP,OAAO,CAAc;IACtC,CAAC;IAEL,YAAY,CAAC,OAAqB,EAAE,CAAuB,EAAE,WAAoB,EAAE,QAAiB;QAChG,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,WAAW,CAAC;QACjE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;QAEvE,IAAG,CAAC,SAAS,EAAE,CAAC;YACZ,KAAK,CAAC,iBAAiB,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,IAAI,yBAAyB,CAAC,CAAC;YAC9F,MAAM,IAAI,CAAC,QAAQ,CAAC,4EAA4E,CAAC,CAAC;QACtG,CAAC;QAED,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,IAAI,OAAO,CAAC;QAExC,KAAK,CAAC,aAAa,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,IAAI,QAAQ,GAAG,EAAE,CAAC,CAAC;QAC9E,OAAO,CAAC,CAAC,KAAK,CAAC;YACX,GAAG;YACH,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,OAAO;SACnB,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AAxBY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAQ,GAAE;qCAGuB,4BAAY;GAFjC,eAAe,CAwB3B"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ProxyRouter = void 0;
|
|
13
|
+
const provider_1 = require("../../utils/decorators/provider");
|
|
14
|
+
const proxy_controller_1 = require("./proxy.controller");
|
|
15
|
+
const proxy_service_1 = require("./proxy.service");
|
|
16
|
+
let ProxyRouter = class ProxyRouter {
|
|
17
|
+
constructor(controller, service) {
|
|
18
|
+
this.controller = controller;
|
|
19
|
+
this.service = service;
|
|
20
|
+
}
|
|
21
|
+
async getRoutes() {
|
|
22
|
+
const hosts = await this.service.getHosts();
|
|
23
|
+
return [{
|
|
24
|
+
method: '*',
|
|
25
|
+
path: '/{any*}',
|
|
26
|
+
handler: this.controller.proxyRequest.bind(this.controller),
|
|
27
|
+
config: {
|
|
28
|
+
payload: {
|
|
29
|
+
output: 'stream',
|
|
30
|
+
parse: false,
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
rules: {
|
|
34
|
+
mapSilently: true,
|
|
35
|
+
},
|
|
36
|
+
}, ...hosts.filter((host) => host.destination).map(h => this.hostToRoute(h))];
|
|
37
|
+
}
|
|
38
|
+
hostToRoute(host) {
|
|
39
|
+
return {
|
|
40
|
+
method: '*',
|
|
41
|
+
path: '/{any*}',
|
|
42
|
+
vhost: host.source,
|
|
43
|
+
handler: (req, h) => this.controller.proxyRequest(req, h, host.destination, `@${host.slug}`),
|
|
44
|
+
config: {
|
|
45
|
+
payload: {
|
|
46
|
+
output: 'stream',
|
|
47
|
+
parse: false,
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
rules: {
|
|
51
|
+
mapSilently: true,
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
exports.ProxyRouter = ProxyRouter;
|
|
57
|
+
exports.ProxyRouter = ProxyRouter = __decorate([
|
|
58
|
+
(0, provider_1.Provider)(),
|
|
59
|
+
__metadata("design:paramtypes", [proxy_controller_1.ProxyController,
|
|
60
|
+
proxy_service_1.ProxyService])
|
|
61
|
+
], ProxyRouter);
|
|
62
|
+
//# sourceMappingURL=proxy.router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.router.js","sourceRoot":"","sources":["../../../src/api/proxy/proxy.router.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,8DAAyD;AACzD,yDAAmD;AACnD,mDAA+C;AAKxC,IAAM,WAAW,GAAjB,MAAM,WAAW;IACpB,YACqB,UAA2B,EAC3B,OAAqB;QADrB,eAAU,GAAV,UAAU,CAAiB;QAC3B,YAAO,GAAP,OAAO,CAAc;IACtC,CAAC;IAEL,KAAK,CAAC,SAAS;QACX,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAE5C,OAAO,CAAC;gBACJ,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;gBAE3D,MAAM,EAAE;oBACJ,OAAO,EAAE;wBACL,MAAM,EAAE,QAAQ;wBAChB,KAAK,EAAE,KAAK;qBACf;iBACJ;gBACD,KAAK,EAAE;oBACH,WAAW,EAAE,IAAI;iBACpB;aACJ,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,WAAW,CAAC,IAAU;QAClB,OAAO;YACH,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,WAAY,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAE7F,MAAM,EAAE;gBACJ,OAAO,EAAE;oBACL,MAAM,EAAE,QAAQ;oBAChB,KAAK,EAAE,KAAK;iBACf;aACJ;YACD,KAAK,EAAE;gBACH,WAAW,EAAE,IAAI;aACpB;SACJ,CAAC;IACN,CAAC;CACJ,CAAA;AA5CY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAQ,GAAE;qCAG0B,kCAAe;QAClB,4BAAY;GAHjC,WAAW,CA4CvB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ProxyService = void 0;
|
|
13
|
+
const service_1 = require("../../utils/decorators/service");
|
|
14
|
+
const config_service_1 = require("../../config/config.service");
|
|
15
|
+
const definition_provider_1 = require("../../definitions/definition.provider");
|
|
16
|
+
const BASE_URI = config_service_1.configProvider.get('PROXY_BASE-URI');
|
|
17
|
+
let ProxyService = class ProxyService {
|
|
18
|
+
constructor(definitionProvider) {
|
|
19
|
+
this.definitionProvider = definitionProvider;
|
|
20
|
+
this.PROXY_URL = this.baseUriToH2o2Path(BASE_URI);
|
|
21
|
+
}
|
|
22
|
+
isProxyEnabled() {
|
|
23
|
+
return Boolean(BASE_URI.trim());
|
|
24
|
+
}
|
|
25
|
+
getProxyUri(overrideUri) {
|
|
26
|
+
if (overrideUri) {
|
|
27
|
+
return this.baseUriToH2o2Path(overrideUri);
|
|
28
|
+
}
|
|
29
|
+
return this.PROXY_URL;
|
|
30
|
+
}
|
|
31
|
+
async getHosts() {
|
|
32
|
+
const definitions = await this.definitionProvider.getDefinitions();
|
|
33
|
+
return definitions.hosts;
|
|
34
|
+
}
|
|
35
|
+
baseUriToH2o2Path(uri) {
|
|
36
|
+
let path = uri;
|
|
37
|
+
if (path.endsWith('/')) {
|
|
38
|
+
path = path.slice(0, -1);
|
|
39
|
+
}
|
|
40
|
+
return path + '{path}';
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
exports.ProxyService = ProxyService;
|
|
44
|
+
exports.ProxyService = ProxyService = __decorate([
|
|
45
|
+
(0, service_1.Service)(),
|
|
46
|
+
__metadata("design:paramtypes", [definition_provider_1.DefinitionProvider])
|
|
47
|
+
], ProxyService);
|
|
48
|
+
//# sourceMappingURL=proxy.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.service.js","sourceRoot":"","sources":["../../../src/api/proxy/proxy.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4DAAuD;AACvD,gEAA2D;AAC3D,+EAA2E;AAG3E,MAAM,QAAQ,GAAG,+BAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAG/C,IAAM,YAAY,GAAlB,MAAM,YAAY;IAGrB,YACqB,kBAAsC;QAAtC,uBAAkB,GAAlB,kBAAkB,CAAoB;QAEvD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,cAAc;QACV,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,WAAW,CAAC,WAAoB;QAC5B,IAAG,WAAW,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,QAAQ;QACV,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,CAAC;QACnE,OAAO,WAAW,CAAC,KAAK,CAAC;IAC7B,CAAC;IAEO,iBAAiB,CAAC,GAAW;QACjC,IAAI,IAAI,GAAG,GAAG,CAAC;QACf,IAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,IAAI,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACJ,CAAA;AAlCY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,iBAAO,GAAE;qCAKmC,wCAAkB;GAJlD,YAAY,CAkCxB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_CONFIG_PATH = exports.CONFIG_PATH = void 0;
|
|
4
|
+
const path = require("path");
|
|
5
|
+
exports.CONFIG_PATH = path.join(__dirname, '..', '..', '.env');
|
|
6
|
+
exports.DEFAULT_CONFIG_PATH = path.join(__dirname, '..', '..', 'default.env');
|
|
7
|
+
//# sourceMappingURL=config.constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.constants.js","sourceRoot":"","sources":["../../src/config/config.constants.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAEhB,QAAA,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACvD,QAAA,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.configProvider = exports.ConfigProvider = void 0;
|
|
13
|
+
const dotenv = require("dotenv");
|
|
14
|
+
const fs = require("fs");
|
|
15
|
+
const config_constants_1 = require("./config.constants");
|
|
16
|
+
const provider_1 = require("../utils/decorators/provider");
|
|
17
|
+
const debug = require('debug')('mocko:proxy:config');
|
|
18
|
+
let ConfigProvider = class ConfigProvider {
|
|
19
|
+
constructor(configPath, defaultConfigPath) {
|
|
20
|
+
const path = this.assertConfig(configPath, defaultConfigPath);
|
|
21
|
+
this.config = { ...this.fromFile(path), ...process.env };
|
|
22
|
+
}
|
|
23
|
+
get(key) {
|
|
24
|
+
const value = this.getOptional(key);
|
|
25
|
+
if (typeof value === 'undefined') {
|
|
26
|
+
throw new Error(`Missing ${key} config`);
|
|
27
|
+
}
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
getOptional(key) {
|
|
31
|
+
return this.config[key];
|
|
32
|
+
}
|
|
33
|
+
getOptionalBoolean(key) {
|
|
34
|
+
const value = this.getOptional(key);
|
|
35
|
+
if (typeof value === 'undefined') {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
return value.toLowerCase() === 'true';
|
|
39
|
+
}
|
|
40
|
+
getNumber(key) {
|
|
41
|
+
const value = Number(this.get(key));
|
|
42
|
+
if (isNaN(value)) {
|
|
43
|
+
throw new TypeError(`The config ${key} isn't a number`);
|
|
44
|
+
}
|
|
45
|
+
return value;
|
|
46
|
+
}
|
|
47
|
+
getBoolean(key) {
|
|
48
|
+
return this.get(key).toLowerCase() === 'true';
|
|
49
|
+
}
|
|
50
|
+
getRedisUrl() {
|
|
51
|
+
return this.getOptional('REDIS_URL');
|
|
52
|
+
}
|
|
53
|
+
getRedisPrefix() {
|
|
54
|
+
const prefix = this.getOptional('REDIS_PREFIX') || 'mocko:';
|
|
55
|
+
return `${prefix.endsWith(':') ? prefix : `${prefix}:`}v2:`;
|
|
56
|
+
}
|
|
57
|
+
getRedisConfig() {
|
|
58
|
+
return {
|
|
59
|
+
port: this.getNumber('REDIS_PORT'),
|
|
60
|
+
host: this.get('REDIS_HOST'),
|
|
61
|
+
password: this.getOptional('REDIS_PASSWORD'),
|
|
62
|
+
db: this.getNumber('REDIS_DATABASE'),
|
|
63
|
+
keyPrefix: this.getRedisPrefix(),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
fromFile(path) {
|
|
67
|
+
return dotenv.parse(fs.readFileSync(path));
|
|
68
|
+
}
|
|
69
|
+
assertConfig(configPath, defaultConfigPath) {
|
|
70
|
+
if (fs.existsSync(configPath)) {
|
|
71
|
+
return configPath;
|
|
72
|
+
}
|
|
73
|
+
try {
|
|
74
|
+
fs.copyFileSync(defaultConfigPath, configPath);
|
|
75
|
+
return configPath;
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
debug('Failed to copy default config to .env, using the default file');
|
|
79
|
+
return defaultConfigPath;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
exports.ConfigProvider = ConfigProvider;
|
|
84
|
+
exports.ConfigProvider = ConfigProvider = __decorate([
|
|
85
|
+
(0, provider_1.Provider)(),
|
|
86
|
+
__metadata("design:paramtypes", [String, String])
|
|
87
|
+
], ConfigProvider);
|
|
88
|
+
exports.configProvider = new ConfigProvider(config_constants_1.CONFIG_PATH, config_constants_1.DEFAULT_CONFIG_PATH);
|
|
89
|
+
//# sourceMappingURL=config.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../src/config/config.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../../src/definitions/data/data.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateHost = validateHost;
|
|
4
|
+
exports.hostFromConfig = hostFromConfig;
|
|
5
|
+
const Joi = require("joi");
|
|
6
|
+
const hostSchema = Joi.object({
|
|
7
|
+
slug: Joi.string().required(),
|
|
8
|
+
name: Joi.string().allow('').optional(),
|
|
9
|
+
source: Joi.string().hostname().required(),
|
|
10
|
+
destination: Joi.string().uri({ scheme: ['http', 'https'] }).optional(),
|
|
11
|
+
});
|
|
12
|
+
function validateHost(host) {
|
|
13
|
+
const validation = hostSchema.validate(host);
|
|
14
|
+
if (validation.error) {
|
|
15
|
+
throw new Error(validation.error.message);
|
|
16
|
+
}
|
|
17
|
+
return validation.value;
|
|
18
|
+
}
|
|
19
|
+
function hostFromConfig(slug, data) {
|
|
20
|
+
var _a, _b, _c;
|
|
21
|
+
const host = {
|
|
22
|
+
slug,
|
|
23
|
+
name: (_a = data === null || data === void 0 ? void 0 : data[0]) === null || _a === void 0 ? void 0 : _a.name,
|
|
24
|
+
source: (_b = data === null || data === void 0 ? void 0 : data[0]) === null || _b === void 0 ? void 0 : _b.source,
|
|
25
|
+
destination: (_c = data === null || data === void 0 ? void 0 : data[0]) === null || _c === void 0 ? void 0 : _c.destination,
|
|
26
|
+
};
|
|
27
|
+
try {
|
|
28
|
+
return validateHost(host);
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
throw new Error(`On host '${slug}', ${error.message}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
;
|
|
35
|
+
//# sourceMappingURL=host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.js","sourceRoot":"","sources":["../../../src/definitions/data/host.ts"],"names":[],"mappings":";;AAgBA,oCAOC;AAED,wCAaC;AAtCD,2BAA2B;AAS3B,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC;IAC1B,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC1C,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC1E,CAAC,CAAC;AAEH,SAAgB,YAAY,CAAC,IAAU;IACnC,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAG,UAAU,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,UAAU,CAAC,KAAK,CAAC;AAC5B,CAAC;AAED,SAAgB,cAAc,CAAC,IAAY,EAAE,IAAS;;IAClD,MAAM,IAAI,GAAG;QACT,IAAI;QACJ,IAAI,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,CAAC,CAAC,0CAAE,IAAI;QACrB,MAAM,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,CAAC,CAAC,0CAAE,MAAM;QACzB,WAAW,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,CAAC,CAAC,0CAAE,WAAW;KACtC,CAAC;IAEF,IAAI,CAAC;QACD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAM,KAAK,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3D,CAAC;AACL,CAAC;AAAA,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MOCK_METHODS = void 0;
|
|
4
|
+
exports.validateMock = validateMock;
|
|
5
|
+
exports.mockFromConfig = mockFromConfig;
|
|
6
|
+
const Joi = require("joi");
|
|
7
|
+
exports.MOCK_METHODS = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', '*'];
|
|
8
|
+
const mockSchema = Joi.object({
|
|
9
|
+
id: Joi.string().optional(),
|
|
10
|
+
name: Joi.string().optional(),
|
|
11
|
+
source: Joi.string().valid('FILE', 'DEPLOYED').optional(),
|
|
12
|
+
filePath: Joi.string().optional(),
|
|
13
|
+
isEnabled: Joi.boolean().default(true),
|
|
14
|
+
labels: Joi.array().items(Joi.string()).optional().default([]),
|
|
15
|
+
method: Joi.string().valid(...exports.MOCK_METHODS),
|
|
16
|
+
path: Joi.string(),
|
|
17
|
+
parse: Joi.boolean().default(true),
|
|
18
|
+
format: Joi.string().valid('json', 'html', 'text', 'xml', 'javascript', 'css').optional(),
|
|
19
|
+
host: Joi.string().optional(),
|
|
20
|
+
response: Joi.object({
|
|
21
|
+
code: Joi.number().min(200).max(599).label("status"),
|
|
22
|
+
delay: Joi.number().optional().min(0).max(300000).label("delay"),
|
|
23
|
+
body: Joi.string().allow('').label("body"),
|
|
24
|
+
headers: Joi.object().pattern(Joi.string(), Joi.string()).label("headers"),
|
|
25
|
+
}),
|
|
26
|
+
});
|
|
27
|
+
function validateMock(mock) {
|
|
28
|
+
const validation = mockSchema.validate(mock, { convert: true });
|
|
29
|
+
if (validation.error) {
|
|
30
|
+
throw new Error(validation.error.message);
|
|
31
|
+
}
|
|
32
|
+
assertFormatDoesNotConflictWithContentType(validation.value);
|
|
33
|
+
return validation.value;
|
|
34
|
+
}
|
|
35
|
+
function assertFormatDoesNotConflictWithContentType(mock) {
|
|
36
|
+
if (!mock.format) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const hasContentType = Object.keys(mock.response.headers || {})
|
|
40
|
+
.some((key) => key.toLowerCase() === 'content-type');
|
|
41
|
+
if (hasContentType) {
|
|
42
|
+
throw new Error("cannot use both 'format' and an explicit Content-Type header");
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function mockFromConfig(req, res) {
|
|
46
|
+
var _a, _b;
|
|
47
|
+
const [rawMethod, ...pathParts] = req.split(" ");
|
|
48
|
+
const method = rawMethod.toUpperCase();
|
|
49
|
+
const path = pathParts.join(" ");
|
|
50
|
+
const headers = ((_a = res === null || res === void 0 ? void 0 : res.headers) === null || _a === void 0 ? void 0 : _a[0]) || {};
|
|
51
|
+
const code = (res === null || res === void 0 ? void 0 : res.status) || (method === 'POST' ? 201 : 200);
|
|
52
|
+
const host = res === null || res === void 0 ? void 0 : res.host;
|
|
53
|
+
const parse = res === null || res === void 0 ? void 0 : res.parse;
|
|
54
|
+
const format = res === null || res === void 0 ? void 0 : res.format;
|
|
55
|
+
const name = ((_b = res === null || res === void 0 ? void 0 : res.name) === null || _b === void 0 ? void 0 : _b.trim()) || undefined;
|
|
56
|
+
const isEnabled = res === null || res === void 0 ? void 0 : res.enabled;
|
|
57
|
+
const labels = res === null || res === void 0 ? void 0 : res.labels;
|
|
58
|
+
const definition = {
|
|
59
|
+
name, method, path, host, parse, format, isEnabled, labels,
|
|
60
|
+
response: {
|
|
61
|
+
code,
|
|
62
|
+
delay: res === null || res === void 0 ? void 0 : res.delay,
|
|
63
|
+
body: (res === null || res === void 0 ? void 0 : res.body) || "",
|
|
64
|
+
headers: headers,
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
try {
|
|
68
|
+
return validateMock(definition);
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
throw new Error(`On mock '${req}', ${error.message}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=mock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../../../src/definitions/data/mock.ts"],"names":[],"mappings":";;;AAgDA,oCAQC;AAcD,wCA4BC;AAlGD,2BAA2B;AAEd,QAAA,YAAY,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAU,CAAC;AA0BpF,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC;IAC1B,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE;IACzD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACtC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9D,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,oBAAY,CAAC;IAC3C,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE;IAClB,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE;IACzF,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC;QACjB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QACpD,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QAChE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QAC1C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;KAC7E,CAAC;CACL,CAAC,CAAC;AAEH,SAAgB,YAAY,CAAC,IAAS;IAClC,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,IAAG,UAAU,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,0CAA0C,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC7D,OAAO,UAAU,CAAC,KAAK,CAAC;AAC5B,CAAC;AAED,SAAS,0CAA0C,CAAC,IAAU;IAC1D,IAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;SAC1D,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,cAAc,CAAC,CAAC;IACzD,IAAG,cAAc,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IACpF,CAAC;AACL,CAAC;AAED,SAAgB,cAAc,CAAC,GAAW,EAAE,GAAQ;;IAChD,MAAM,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IACvC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,CAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,0CAAG,CAAC,CAAC,KAAI,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,KAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,CAAC;IACvB,MAAM,KAAK,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,CAAC;IACzB,MAAM,MAAM,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,CAAC;IAC3B,MAAM,IAAI,GAAG,CAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,0CAAE,IAAI,EAAE,KAAI,SAAS,CAAC;IAC5C,MAAM,SAAS,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC;IAC/B,MAAM,MAAM,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,CAAC;IAE3B,MAAM,UAAU,GAAG;QACf,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;QAC1D,QAAQ,EAAE;YACN,IAAI;YACJ,KAAK,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK;YACjB,IAAI,EAAE,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,KAAI,EAAE;YACrB,OAAO,EAAE,OAAO;SACnB;KACJ,CAAC;IAEF,IAAI,CAAC;QACD,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAAC,OAAM,KAAK,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,YAAY,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1D,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.definitionFromConfig = void 0;
|
|
4
|
+
exports.validateDefinition = validateDefinition;
|
|
5
|
+
const Joi = require("joi");
|
|
6
|
+
const utils_1 = require("../../utils/utils");
|
|
7
|
+
const host_1 = require("./host");
|
|
8
|
+
const mock_1 = require("./mock");
|
|
9
|
+
const definitionSchema = Joi.object({
|
|
10
|
+
mocks: Joi.array().items(Joi.any()).required(),
|
|
11
|
+
hosts: Joi.array().items(Joi.any()).required(),
|
|
12
|
+
data: Joi.object()
|
|
13
|
+
.pattern(Joi.string(), Joi.object().pattern(Joi.string(), Joi.any()))
|
|
14
|
+
.optional(),
|
|
15
|
+
});
|
|
16
|
+
const definitionFromConfig = (config, onMockError) => {
|
|
17
|
+
const mergedMocks = (0, utils_1.mergeRecords)(config.mock || []);
|
|
18
|
+
const mocks = Object.entries(mergedMocks)
|
|
19
|
+
.flatMap(([req, resList]) => resList.map(res => [req, res]))
|
|
20
|
+
.flatMap(([req, res]) => {
|
|
21
|
+
try {
|
|
22
|
+
return [(0, mock_1.mockFromConfig)(req, res)];
|
|
23
|
+
}
|
|
24
|
+
catch (e) {
|
|
25
|
+
onMockError === null || onMockError === void 0 ? void 0 : onMockError(e);
|
|
26
|
+
return [];
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
const mergedDataBlocks = (0, utils_1.mergeRecords)(config.data || []);
|
|
30
|
+
const data = config.data && Object.fromEntries(Object.entries(mergedDataBlocks)
|
|
31
|
+
.map(([key, values]) => [key, (0, utils_1.mergeRecords)(values)]));
|
|
32
|
+
const hosts = Object.entries((0, utils_1.mergeRecords)(config.host || []))
|
|
33
|
+
.map(([name, data]) => (0, host_1.hostFromConfig)(name, data));
|
|
34
|
+
return { mocks, data, hosts };
|
|
35
|
+
};
|
|
36
|
+
exports.definitionFromConfig = definitionFromConfig;
|
|
37
|
+
function validateDefinition(definition) {
|
|
38
|
+
const validation = definitionSchema.validate(definition);
|
|
39
|
+
if (validation.error) {
|
|
40
|
+
throw new Error(validation.error.message);
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
mocks: validation.value.mocks.map(mock_1.validateMock),
|
|
44
|
+
hosts: validation.value.hosts.map(host_1.validateHost),
|
|
45
|
+
data: validation.value.data,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=mocko-definition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mocko-definition.js","sourceRoot":"","sources":["../../../src/definitions/data/mocko-definition.ts"],"names":[],"mappings":";;;AAgDA,gDAWC;AA3DD,2BAA2B;AAC3B,6CAAiD;AAEjD,iCAA4D;AAC5D,iCAA4D;AAQ5D,MAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,CAAC;IAChC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC9C,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC9C,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE;SACb,OAAO,CACJ,GAAG,CAAC,MAAM,EAAE,EACZ,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAChD;SACA,QAAQ,EAAE;CAClB,CAAC,CAAC;AAEI,MAAM,oBAAoB,GAAG,CAAC,MAAW,EAAE,WAAoC,EAAmB,EAAE;IACvG,MAAM,WAAW,GAAG,IAAA,oBAAY,EAAM,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;SACpC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;SAC3D,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE;QACpB,IAAI,CAAC;YACD,OAAO,CAAC,IAAA,qBAAc,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACtC,CAAC;QAAC,OAAM,CAAC,EAAE,CAAC;YACR,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAG,CAAC,CAAC,CAAC;YACjB,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC,CAAC,CAAC;IAEP,MAAM,gBAAgB,GAAG,IAAA,oBAAY,EAAc,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,WAAW,CAC1C,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC;SAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,IAAA,oBAAY,EAAC,MAAM,CAAC,CAAC,CAAC,CACnD,CAAC;IAEV,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAA,oBAAY,EAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;SACxD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAA,qBAAc,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAEvD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAClC,CAAC,CAAC;AAvBW,QAAA,oBAAoB,wBAuB/B;AAEF,SAAgB,kBAAkB,CAAC,UAAmB;IAClD,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACzD,IAAG,UAAU,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO;QACH,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAY,CAAC;QAC/C,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAY,CAAC;QAC/C,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI;KAC9B,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.REDIS_OPTIONS_DEPLOYMENT = exports.REDIS_MOCK_KEY = void 0;
|
|
4
|
+
exports.REDIS_MOCK_KEY = 'workspace_mocks';
|
|
5
|
+
exports.REDIS_OPTIONS_DEPLOYMENT = 'mocks_deployment';
|
|
6
|
+
//# sourceMappingURL=definition.constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.constants.js","sourceRoot":"","sources":["../../src/definitions/definition.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG,iBAAiB,CAAC;AACnC,QAAA,wBAAwB,GAAG,kBAAkB,CAAC"}
|