@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.
Files changed (117) hide show
  1. package/README.md +3 -0
  2. package/default.env +26 -0
  3. package/dist/api/deploy/deploy.controller.js +37 -0
  4. package/dist/api/deploy/deploy.controller.js.map +1 -0
  5. package/dist/api/deploy/deploy.router.js +40 -0
  6. package/dist/api/deploy/deploy.router.js.map +1 -0
  7. package/dist/api/deploy/deploy.service.js +55 -0
  8. package/dist/api/deploy/deploy.service.js.map +1 -0
  9. package/dist/api/flag/data/flag.dto.js +36 -0
  10. package/dist/api/flag/data/flag.dto.js.map +1 -0
  11. package/dist/api/flag/flag.controller.js +90 -0
  12. package/dist/api/flag/flag.controller.js.map +1 -0
  13. package/dist/api/flag/flag.memory-repository.js +37 -0
  14. package/dist/api/flag/flag.memory-repository.js.map +1 -0
  15. package/dist/api/flag/flag.redis-repository.js +44 -0
  16. package/dist/api/flag/flag.redis-repository.js.map +1 -0
  17. package/dist/api/flag/flag.repository.js +3 -0
  18. package/dist/api/flag/flag.repository.js.map +1 -0
  19. package/dist/api/flag/flag.router.js +61 -0
  20. package/dist/api/flag/flag.router.js.map +1 -0
  21. package/dist/api/flag/flag.service.js +88 -0
  22. package/dist/api/flag/flag.service.js.map +1 -0
  23. package/dist/api/health/health.controller.js +30 -0
  24. package/dist/api/health/health.controller.js.map +1 -0
  25. package/dist/api/health/health.router.js +35 -0
  26. package/dist/api/health/health.router.js.map +1 -0
  27. package/dist/api/health/health.service.js +35 -0
  28. package/dist/api/health/health.service.js.map +1 -0
  29. package/dist/api/host/data/core-host.dto.js +16 -0
  30. package/dist/api/host/data/core-host.dto.js.map +1 -0
  31. package/dist/api/host/host.controller.js +32 -0
  32. package/dist/api/host/host.controller.js.map +1 -0
  33. package/dist/api/host/host.router.js +35 -0
  34. package/dist/api/host/host.router.js.map +1 -0
  35. package/dist/api/host/host.service.js +30 -0
  36. package/dist/api/host/host.service.js.map +1 -0
  37. package/dist/api/mock/data/core-mock.dto.js +52 -0
  38. package/dist/api/mock/data/core-mock.dto.js.map +1 -0
  39. package/dist/api/mock/data/mock-failure.js +11 -0
  40. package/dist/api/mock/data/mock-failure.js.map +1 -0
  41. package/dist/api/mock/mock.controller.js +43 -0
  42. package/dist/api/mock/mock.controller.js.map +1 -0
  43. package/dist/api/mock/mock.handler.js +141 -0
  44. package/dist/api/mock/mock.handler.js.map +1 -0
  45. package/dist/api/mock/mock.repository.js +38 -0
  46. package/dist/api/mock/mock.repository.js.map +1 -0
  47. package/dist/api/mock/mock.router.js +50 -0
  48. package/dist/api/mock/mock.router.js.map +1 -0
  49. package/dist/api/mock/mock.service.js +111 -0
  50. package/dist/api/mock/mock.service.js.map +1 -0
  51. package/dist/api/proxy/proxy.controller.js +45 -0
  52. package/dist/api/proxy/proxy.controller.js.map +1 -0
  53. package/dist/api/proxy/proxy.router.js +62 -0
  54. package/dist/api/proxy/proxy.router.js.map +1 -0
  55. package/dist/api/proxy/proxy.service.js +48 -0
  56. package/dist/api/proxy/proxy.service.js.map +1 -0
  57. package/dist/config/config.constants.js +7 -0
  58. package/dist/config/config.constants.js.map +1 -0
  59. package/dist/config/config.service.js +89 -0
  60. package/dist/config/config.service.js.map +1 -0
  61. package/dist/definitions/data/data.js +3 -0
  62. package/dist/definitions/data/data.js.map +1 -0
  63. package/dist/definitions/data/host.js +35 -0
  64. package/dist/definitions/data/host.js.map +1 -0
  65. package/dist/definitions/data/mock.js +74 -0
  66. package/dist/definitions/data/mock.js.map +1 -0
  67. package/dist/definitions/data/mocko-definition.js +48 -0
  68. package/dist/definitions/data/mocko-definition.js.map +1 -0
  69. package/dist/definitions/definition.constants.js +6 -0
  70. package/dist/definitions/definition.constants.js.map +1 -0
  71. package/dist/definitions/definition.provider.js +185 -0
  72. package/dist/definitions/definition.provider.js.map +1 -0
  73. package/dist/helpers/flag.js +49 -0
  74. package/dist/helpers/flag.js.map +1 -0
  75. package/dist/helpers/log.js +30 -0
  76. package/dist/helpers/log.js.map +1 -0
  77. package/dist/helpers/response.js +54 -0
  78. package/dist/helpers/response.js.map +1 -0
  79. package/dist/listeners/deploy-listener.js +29 -0
  80. package/dist/listeners/deploy-listener.js.map +1 -0
  81. package/dist/listeners/index.js +26 -0
  82. package/dist/listeners/index.js.map +1 -0
  83. package/dist/main.js +26 -0
  84. package/dist/main.js.map +1 -0
  85. package/dist/main.router.js +51 -0
  86. package/dist/main.router.js.map +1 -0
  87. package/dist/plugins/h2o2.js +22 -0
  88. package/dist/plugins/h2o2.js.map +1 -0
  89. package/dist/plugins/index.js +29 -0
  90. package/dist/plugins/index.js.map +1 -0
  91. package/dist/plugins/logger.js +24 -0
  92. package/dist/plugins/logger.js.map +1 -0
  93. package/dist/redis/redis.provider.js +94 -0
  94. package/dist/redis/redis.provider.js.map +1 -0
  95. package/dist/server.js +153 -0
  96. package/dist/server.js.map +1 -0
  97. package/dist/tsconfig.tsbuildinfo +1 -0
  98. package/dist/utils/decorators/provider.js +6 -0
  99. package/dist/utils/decorators/provider.js.map +1 -0
  100. package/dist/utils/decorators/service.js +6 -0
  101. package/dist/utils/decorators/service.js.map +1 -0
  102. package/dist/utils/listener.js +3 -0
  103. package/dist/utils/listener.js.map +1 -0
  104. package/dist/utils/logger.js +7 -0
  105. package/dist/utils/logger.js.map +1 -0
  106. package/dist/utils/plugin.js +3 -0
  107. package/dist/utils/plugin.js.map +1 -0
  108. package/dist/utils/remap-event-bus.js +26 -0
  109. package/dist/utils/remap-event-bus.js.map +1 -0
  110. package/dist/utils/router.js +3 -0
  111. package/dist/utils/router.js.map +1 -0
  112. package/dist/utils/stream.js +9 -0
  113. package/dist/utils/stream.js.map +1 -0
  114. package/dist/utils/utils.js +54 -0
  115. package/dist/utils/utils.js.map +1 -0
  116. package/nodemon.json +6 -0
  117. package/package.json +58 -0
@@ -0,0 +1,185 @@
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.DefinitionProvider = void 0;
16
+ const inversify_1 = require("inversify");
17
+ const provider_1 = require("../utils/decorators/provider");
18
+ const mocko_definition_1 = require("./data/mocko-definition");
19
+ const logger_1 = require("../utils/logger");
20
+ const redis_provider_1 = require("../redis/redis.provider");
21
+ const definition_constants_1 = require("./definition.constants");
22
+ const fs_1 = require("fs");
23
+ const path_1 = require("path");
24
+ const hcl_parser_1 = require("hcl-parser");
25
+ const Hoek = require("@hapi/hoek");
26
+ const sync_1 = require("@mocko/sync");
27
+ const uuid_1 = require("uuid");
28
+ const utils_1 = require("../utils/utils");
29
+ const debug = require('debug')('mocko:proxy:definition:provider');
30
+ const { readFile, readdir, lstat } = fs_1.promises;
31
+ const MOCKS_DIR = process.env['MOCKS_FOLDER'] || "mocks";
32
+ const MUST_LOAD_DIR = !!process.env['MOCKS_FOLDER'];
33
+ const HCL_EXTENSION = ".hcl";
34
+ const DOT = ".";
35
+ const FILE_ID_NAMESPACE = '4e88cbd8-4eaf-48c1-a4e9-d958802337e3';
36
+ let DefinitionProvider = class DefinitionProvider {
37
+ constructor(logger, redis) {
38
+ this.logger = logger;
39
+ this.redis = redis;
40
+ this.deployDefinition = null;
41
+ }
42
+ async getDefinitions() {
43
+ if (!this.definitions) {
44
+ this.definitions = await this.buildDefinitions();
45
+ }
46
+ return this.definitions;
47
+ }
48
+ async getFileHosts() {
49
+ const fileDefinitions = await this.getFileDefinitions();
50
+ return fileDefinitions.hosts;
51
+ }
52
+ clearDefinitions() {
53
+ this.definitions = null;
54
+ }
55
+ setDeployDefinition(definition) {
56
+ this.deployDefinition = definition;
57
+ this.clearDefinitions();
58
+ }
59
+ async buildDefinitions() {
60
+ const fileDefinitions = await this.getFileDefinitions();
61
+ const deployDefinitions = this.deployDefinition;
62
+ if (this.redis.isEnabled) {
63
+ const redisDefinitions = await this.getRedisDefinitions();
64
+ return this.mergeDefinitions(fileDefinitions, redisDefinitions, deployDefinitions);
65
+ }
66
+ return this.mergeDefinitions(fileDefinitions, null, deployDefinitions);
67
+ }
68
+ async getFileDefinitions() {
69
+ const options = (await this.getMockFilesContent()).filter(o => o !== null);
70
+ return {
71
+ mocks: options.map(o => o.mocks || []).flat(),
72
+ data: (0, utils_1.mergeData)(options.map(o => o.data || {})),
73
+ hosts: options.map(o => o.hosts || []).flat(),
74
+ };
75
+ }
76
+ async getRedisDefinitions() {
77
+ debug('fetching mocks from redis');
78
+ const definitions = await this.redis.get(definition_constants_1.REDIS_OPTIONS_DEPLOYMENT);
79
+ if (!definitions) {
80
+ debug('no mocks found, running proxy only');
81
+ return { mocks: [], hosts: [] };
82
+ }
83
+ const normalizedDefinitions = (0, mocko_definition_1.validateDefinition)({
84
+ mocks: definitions.mocks || [],
85
+ hosts: definitions.hosts || [],
86
+ data: definitions.data,
87
+ });
88
+ debug(`found ${normalizedDefinitions.mocks.length} mocks`);
89
+ return normalizedDefinitions;
90
+ }
91
+ mergeDefinitions(fileDefinitions, redisDefinitions, deployDefinitions) {
92
+ const mocks = [
93
+ ...this.withSource((deployDefinitions === null || deployDefinitions === void 0 ? void 0 : deployDefinitions.mocks) || [], 'DEPLOYED'),
94
+ ...this.withSource((redisDefinitions === null || redisDefinitions === void 0 ? void 0 : redisDefinitions.mocks) || [], 'DEPLOYED'),
95
+ ...this.withSource(fileDefinitions.mocks, 'FILE'),
96
+ ];
97
+ const hosts = [
98
+ ...((deployDefinitions === null || deployDefinitions === void 0 ? void 0 : deployDefinitions.hosts) || []),
99
+ ...((redisDefinitions === null || redisDefinitions === void 0 ? void 0 : redisDefinitions.hosts) || []),
100
+ ...fileDefinitions.hosts,
101
+ ];
102
+ const data = (0, utils_1.mergeData)([
103
+ fileDefinitions.data || {},
104
+ (redisDefinitions === null || redisDefinitions === void 0 ? void 0 : redisDefinitions.data) || {},
105
+ (deployDefinitions === null || deployDefinitions === void 0 ? void 0 : deployDefinitions.data) || {},
106
+ ]);
107
+ return {
108
+ mocks,
109
+ hosts,
110
+ data,
111
+ };
112
+ }
113
+ async getMockFilesContent(path = MOCKS_DIR) {
114
+ if (!MUST_LOAD_DIR) {
115
+ return [];
116
+ }
117
+ debug(`loading mocks from dir '${path}'`);
118
+ const fileNames = await readdir(path)
119
+ .catch(Hoek.ignore);
120
+ if (!fileNames) {
121
+ this.logger.error(`Failed to load the mocks from '${MOCKS_DIR}', make sure it's a directory and your user has read permission on its files`);
122
+ process.exit(1);
123
+ }
124
+ const files = await Promise.all(fileNames.map(async (name) => {
125
+ const stat = await lstat((0, path_1.join)(path, name));
126
+ const isDir = stat.isDirectory();
127
+ return { name, isDir };
128
+ }));
129
+ const mockFiles = files
130
+ .filter(f => !f.isDir)
131
+ .filter(f => !f.name.startsWith(DOT))
132
+ .filter(f => f.name.endsWith(HCL_EXTENSION));
133
+ const subDirContents = (await Promise.all(files
134
+ .filter(f => f.isDir)
135
+ .filter(f => !f.name.startsWith(DOT))
136
+ .map(f => this.getMockFilesContent((0, path_1.join)(path, f.name)))))
137
+ .flat();
138
+ const dirContents = await Promise.all(mockFiles
139
+ .map(m => this.optionsFromFile((0, path_1.join)(path, m.name))));
140
+ return [...dirContents, ...subDirContents];
141
+ }
142
+ async optionsFromFile(path) {
143
+ const content = await readFile(path);
144
+ const [data, error] = (0, hcl_parser_1.parse)(content.toString());
145
+ if (error) {
146
+ this.logger.warn(`Failed to parse file '${path}:${error.Pos.Line}:${error.Pos.Column}'`);
147
+ return null;
148
+ }
149
+ const definition = (0, mocko_definition_1.definitionFromConfig)(data, (e) => this.logger.warn(`Invalid mock on file '${path}': ${e.message}`));
150
+ definition.mocks = definition.mocks.map((mock) => this.withFileMetadata(path, mock));
151
+ return definition;
152
+ }
153
+ withSource(mocks, source) {
154
+ return mocks.map((mock) => ({
155
+ ...mock,
156
+ source: mock.source || source,
157
+ }));
158
+ }
159
+ withFileMetadata(filePath, mock) {
160
+ var _a;
161
+ const normalizedFilePath = (0, path_1.relative)(MOCKS_DIR, filePath)
162
+ .replace(/\\/g, '/');
163
+ const idSeed = `${normalizedFilePath}:${mock.method}:${mock.path}`;
164
+ return {
165
+ ...mock,
166
+ id: mock.id || (0, uuid_1.v5)(idSeed, FILE_ID_NAMESPACE),
167
+ name: ((_a = mock.name) === null || _a === void 0 ? void 0 : _a.trim()) || normalizedFilePath,
168
+ filePath: normalizedFilePath,
169
+ source: 'FILE',
170
+ };
171
+ }
172
+ };
173
+ exports.DefinitionProvider = DefinitionProvider;
174
+ __decorate([
175
+ (0, sync_1.Synchronize)(),
176
+ __metadata("design:type", Function),
177
+ __metadata("design:paramtypes", []),
178
+ __metadata("design:returntype", Promise)
179
+ ], DefinitionProvider.prototype, "getDefinitions", null);
180
+ exports.DefinitionProvider = DefinitionProvider = __decorate([
181
+ (0, provider_1.Provider)(),
182
+ __param(0, (0, inversify_1.inject)(logger_1.Logger)),
183
+ __metadata("design:paramtypes", [Object, redis_provider_1.RedisProvider])
184
+ ], DefinitionProvider);
185
+ //# sourceMappingURL=definition.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition.provider.js","sourceRoot":"","sources":["../../src/definitions/definition.provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasFlag = exports.delFlag = exports.setFlag = exports.getFlag = void 0;
4
+ function validateFlagKey(key) {
5
+ if (typeof key !== 'string') {
6
+ throw new TypeError('Flag keys must be strings');
7
+ }
8
+ if (!key.length) {
9
+ throw new TypeError('Flag keys cannot be empty');
10
+ }
11
+ if (/:(:|$)/.test(key)) {
12
+ throw new TypeError(`The flag '${key}' contains an empty section (either by finishing with or having two consecutive colons)`);
13
+ }
14
+ }
15
+ function validateFlagExpiration(ttlMillis) {
16
+ if (typeof ttlMillis !== 'number') {
17
+ throw new TypeError('Flag expiration must be a number');
18
+ }
19
+ if (ttlMillis <= 0) {
20
+ throw new TypeError('Flag expiration must be a positive number');
21
+ }
22
+ }
23
+ const getFlag = (flagService) => async (key) => {
24
+ validateFlagKey(key);
25
+ return await flagService.getFlag(key);
26
+ };
27
+ exports.getFlag = getFlag;
28
+ const setFlag = (flagService) => async function (key, value, ttlMillis) {
29
+ validateFlagKey(key);
30
+ if (typeof ttlMillis !== 'undefined') {
31
+ validateFlagExpiration(ttlMillis);
32
+ await flagService.setFlag(key, value !== null && value !== void 0 ? value : null, ttlMillis);
33
+ }
34
+ else {
35
+ await flagService.setFlag(key, value !== null && value !== void 0 ? value : null);
36
+ }
37
+ };
38
+ exports.setFlag = setFlag;
39
+ const delFlag = (flagService) => async (key) => {
40
+ validateFlagKey(key);
41
+ await flagService.delFlag(key);
42
+ };
43
+ exports.delFlag = delFlag;
44
+ const hasFlag = (flagService) => async (key) => {
45
+ validateFlagKey(key);
46
+ return await flagService.hasFlag(key);
47
+ };
48
+ exports.hasFlag = hasFlag;
49
+ //# sourceMappingURL=flag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flag.js","sourceRoot":"","sources":["../../src/helpers/flag.ts"],"names":[],"mappings":";;;AAEA,SAAS,eAAe,CAAC,GAAQ;IAC7B,IAAG,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC,CAAC;IACrD,CAAC;IAED,IAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QACb,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC,CAAC;IACrD,CAAC;IAED,IAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,SAAS,CAAC,aAAa,GAAG,yFAAyF,CAAC,CAAC;IACnI,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB,CAAC,SAAiB;IAC7C,IAAG,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;IAC5D,CAAC;IAED,IAAG,SAAS,IAAI,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;IACrE,CAAC;AACL,CAAC;AAEM,MAAM,OAAO,GAAG,CAAC,WAAwB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAQ,EAAgB,EAAE;IAClF,eAAe,CAAC,GAAG,CAAC,CAAC;IACrB,OAAO,MAAM,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC1C,CAAC,CAAC;AAHW,QAAA,OAAO,WAGlB;AAEK,MAAM,OAAO,GAAG,CAAC,WAAwB,EAAE,EAAE,CAAC,KAAK,WAAW,GAAQ,EAAE,KAAU,EAAE,SAAiB;IACxG,eAAe,CAAC,GAAG,CAAC,CAAC;IAErB,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE,CAAC;QACnC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACJ,MAAM,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,CAAC,CAAC;IAClD,CAAC;AACL,CAAC,CAAC;AATW,QAAA,OAAO,WASlB;AAEK,MAAM,OAAO,GAAG,CAAC,WAAwB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAQ,EAAiB,EAAE;IACnF,eAAe,CAAC,GAAG,CAAC,CAAC;IAErB,MAAM,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC,CAAC;AAJW,QAAA,OAAO,WAIlB;AAEK,MAAM,OAAO,GAAG,CAAC,WAAwB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAQ,EAAoB,EAAE;IACtF,eAAe,CAAC,GAAG,CAAC,CAAC;IAErB,OAAO,MAAM,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC1C,CAAC,CAAC;AAJW,QAAA,OAAO,WAIlB"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.error = exports.warn = exports.log = void 0;
4
+ const stringifyParam = (param) => {
5
+ if (param !== null && typeof param === 'object') {
6
+ try {
7
+ return JSON.stringify(param, null, 2);
8
+ }
9
+ catch (_) {
10
+ return String(param);
11
+ }
12
+ }
13
+ return String(param);
14
+ };
15
+ const formatParams = (...params) => params
16
+ .map(param => stringifyParam(param))
17
+ .join(' ');
18
+ const log = (logger) => (...params) => {
19
+ logger.info(formatParams(...params));
20
+ };
21
+ exports.log = log;
22
+ const warn = (logger) => (...params) => {
23
+ logger.warn(formatParams(...params));
24
+ };
25
+ exports.warn = warn;
26
+ const error = (logger) => (...params) => {
27
+ logger.error(formatParams(...params));
28
+ };
29
+ exports.error = error;
30
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/helpers/log.ts"],"names":[],"mappings":";;;AAEA,MAAM,cAAc,GAAG,CAAC,KAAU,EAAU,EAAE;IAC1C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9C,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,GAAG,MAAa,EAAU,EAAE,CAAC,MAAM;KACpD,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KACnC,IAAI,CAAC,GAAG,CAAC,CAAC;AAER,MAAM,GAAG,GAAG,CAAC,MAAe,EAAE,EAAE,CAAC,CAAC,GAAG,MAAa,EAAQ,EAAE;IAC/D,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACzC,CAAC,CAAC;AAFW,QAAA,GAAG,OAEd;AACK,MAAM,IAAI,GAAG,CAAC,MAAe,EAAE,EAAE,CAAC,CAAC,GAAG,MAAa,EAAQ,EAAE;IAChE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACzC,CAAC,CAAC;AAFW,QAAA,IAAI,QAEf;AACK,MAAM,KAAK,GAAG,CAAC,MAAe,EAAE,EAAE,CAAC,CAAC,GAAG,MAAa,EAAQ,EAAE;IACjE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC;AAFW,QAAA,KAAK,SAEhB"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.proxy = void 0;
4
+ exports.setStatus = setStatus;
5
+ exports.setHeader = setHeader;
6
+ const utils_1 = require("../utils/utils");
7
+ function setStatus(status) {
8
+ let statusCode;
9
+ if (typeof status === 'string') {
10
+ statusCode = parseInt(status, 10);
11
+ }
12
+ else if (typeof status === 'number') {
13
+ statusCode = status;
14
+ }
15
+ else {
16
+ throw new TypeError('Status must be a number');
17
+ }
18
+ if (isNaN(statusCode)) {
19
+ throw new TypeError('Status must be a number');
20
+ }
21
+ if (statusCode < 200 || statusCode >= 600) {
22
+ throw new TypeError('Status must be between 200 and 599');
23
+ }
24
+ this.data.status = statusCode;
25
+ }
26
+ function setHeader(key, value) {
27
+ if (typeof key !== 'string' || typeof value !== 'string') {
28
+ throw new TypeError('Headers must be strings');
29
+ }
30
+ this.data.responseHeaders[key] = value;
31
+ }
32
+ function getHost(hosts, proxyUri, header) {
33
+ if (typeof proxyUri === 'string') {
34
+ const hostBySlug = hosts.find(h => h.slug.toLowerCase() === proxyUri.toLowerCase());
35
+ if (hostBySlug === null || hostBySlug === void 0 ? void 0 : hostBySlug.destination) {
36
+ return [hostBySlug.destination, '@' + hostBySlug.slug];
37
+ }
38
+ return [proxyUri, null];
39
+ }
40
+ const hostByHeader = hosts.find(h => h.source.toLowerCase() === header);
41
+ if (hostByHeader === null || hostByHeader === void 0 ? void 0 : hostByHeader.destination) {
42
+ return [hostByHeader.destination, '@' + hostByHeader.slug];
43
+ }
44
+ return ['', null];
45
+ }
46
+ const proxy = (definitionProvider) => async function (proxyUri) {
47
+ const hosts = (await definitionProvider.getDefinitions()).hosts;
48
+ const [url, label] = getHost(hosts, proxyUri, (0, utils_1.firstString)(this.contexts[0].request.headers.host));
49
+ this.data.proxyTo = url;
50
+ this.data.proxyLabel = label;
51
+ this.halt();
52
+ };
53
+ exports.proxy = proxy;
54
+ //# sourceMappingURL=response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/helpers/response.ts"],"names":[],"mappings":";;;AAKA,8BAmBC;AAED,8BAMC;AA7BD,0CAA6C;AAE7C,SAAgB,SAAS,CAAuB,MAAe;IAC3D,IAAI,UAAkB,CAAC;IACvB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7B,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC;SAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACpC,UAAU,GAAG,MAAM,CAAC;IACxB,CAAC;SAAM,CAAC;QACJ,MAAM,IAAI,SAAS,CAAC,yBAAyB,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,SAAS,CAAC,yBAAyB,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,UAAU,GAAG,GAAG,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;QACxC,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;AAClC,CAAC;AAED,SAAgB,SAAS,CAAuB,GAAY,EAAE,KAAc;IACxE,IAAG,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACtD,MAAM,IAAI,SAAS,CAAC,yBAAyB,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC3C,CAAC;AAED,SAAS,OAAO,CAAC,KAAa,EAAE,QAAgB,EAAE,MAAc;IAC5D,IAAG,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QACpF,IAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,EAAE,CAAC;YACzB,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC;IACxE,IAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,WAAW,EAAE,CAAC;QAC3B,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACtB,CAAC;AAEM,MAAM,KAAK,GAAG,CAAC,kBAAsC,EAAE,EAAE,CAAC,KAAK,WAAiC,QAAiB;IACpH,MAAM,KAAK,GAAG,CAAC,MAAM,kBAAkB,CAAC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC;IAChE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAA,mBAAW,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAElG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;IACxB,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;AAChB,CAAC,CAAC;AAPW,QAAA,KAAK,SAOhB"}
@@ -0,0 +1,29 @@
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.DeployListener = void 0;
13
+ const provider_1 = require("../utils/decorators/provider");
14
+ const remap_event_bus_1 = require("../utils/remap-event-bus");
15
+ let DeployListener = class DeployListener {
16
+ constructor(remapEventBus) {
17
+ this.remapEventBus = remapEventBus;
18
+ this.channel = 'mocko:deploy';
19
+ }
20
+ async onMessage(_message) {
21
+ await this.remapEventBus.emit();
22
+ }
23
+ };
24
+ exports.DeployListener = DeployListener;
25
+ exports.DeployListener = DeployListener = __decorate([
26
+ (0, provider_1.Provider)(),
27
+ __metadata("design:paramtypes", [remap_event_bus_1.RemapEventBus])
28
+ ], DeployListener);
29
+ //# sourceMappingURL=deploy-listener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-listener.js","sourceRoot":"","sources":["../../src/listeners/deploy-listener.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,2DAAsD;AACtD,8DAAuD;AAGhD,IAAM,cAAc,GAApB,MAAM,cAAc;IAGvB,YACqB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;QAHxC,YAAO,GAAG,cAAc,CAAC;IAI9B,CAAC;IAEL,KAAK,CAAC,SAAS,CAAC,QAAgB;QAC5B,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC;CACJ,CAAA;AAVY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAQ,GAAE;qCAK6B,+BAAa;GAJxC,cAAc,CAU1B"}
@@ -0,0 +1,26 @@
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.ListenerProvider = void 0;
13
+ const provider_1 = require("../utils/decorators/provider");
14
+ const deploy_listener_1 = require("./deploy-listener");
15
+ let ListenerProvider = class ListenerProvider {
16
+ constructor(deploy) {
17
+ this.deploy = deploy;
18
+ this.listeners = [this.deploy];
19
+ }
20
+ };
21
+ exports.ListenerProvider = ListenerProvider;
22
+ exports.ListenerProvider = ListenerProvider = __decorate([
23
+ (0, provider_1.Provider)(),
24
+ __metadata("design:paramtypes", [deploy_listener_1.DeployListener])
25
+ ], ListenerProvider);
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/listeners/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2DAAsD;AACtD,uDAAiD;AAI1C,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IACzB,YACqB,MAAsB;QAAtB,WAAM,GAAN,MAAM,CAAgB;QAGlC,cAAS,GAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAF5C,CAAC;CAGR,CAAA;AANY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAQ,GAAE;qCAGsB,gCAAc;GAFlC,gBAAgB,CAM5B"}
package/dist/main.js ADDED
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("reflect-metadata");
4
+ const inversify_1 = require("inversify");
5
+ const server_1 = require("./server");
6
+ const logger_1 = require("./utils/logger");
7
+ const config_service_1 = require("./config/config.service");
8
+ const debug = require('debug')('mocko:proxy:main');
9
+ async function bootstrap() {
10
+ debug('starting');
11
+ const container = new inversify_1.Container({
12
+ autoBindInjectable: true,
13
+ defaultScope: 'Singleton',
14
+ });
15
+ container.bind(logger_1.Logger).toConstantValue(logger_1.logger);
16
+ container.bind(config_service_1.ConfigProvider).toConstantValue(config_service_1.configProvider);
17
+ debug('resolving dependencies');
18
+ const server = await container
19
+ .resolve(server_1.Server)
20
+ .start();
21
+ process.on('SIGINT', () => server.stop());
22
+ process.on('SIGTERM', () => server.stop());
23
+ return server;
24
+ }
25
+ module.exports.server = bootstrap();
26
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;AAAA,4BAA0B;AAC1B,yCAAsC;AACtC,qCAAkC;AAClC,2CAAyD;AACzD,4DAAuE;AAEvE,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAEnD,KAAK,UAAU,SAAS;IACpB,KAAK,CAAC,UAAU,CAAC,CAAC;IAClB,MAAM,SAAS,GAAG,IAAI,qBAAS,CAAC;QAC5B,kBAAkB,EAAE,IAAI;QACxB,YAAY,EAAE,WAAW;KAC5B,CAAC,CAAC;IAEH,SAAS,CAAC,IAAI,CAAU,eAAM,CAAC,CAAC,eAAe,CAAC,eAAM,CAAC,CAAC;IACxD,SAAS,CAAC,IAAI,CAAiB,+BAAc,CAAC,CAAC,eAAe,CAAC,+BAAc,CAAC,CAAC;IAE/E,KAAK,CAAC,wBAAwB,CAAC,CAAA;IAC/B,MAAM,MAAM,GAAG,MAAM,SAAS;SACzB,OAAO,CAAS,eAAM,CAAC;SACvB,KAAK,EAAE,CAAC;IAEb,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAE3C,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC"}
@@ -0,0 +1,51 @@
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.MainRouter = void 0;
13
+ const provider_1 = require("./utils/decorators/provider");
14
+ const proxy_router_1 = require("./api/proxy/proxy.router");
15
+ const mock_router_1 = require("./api/mock/mock.router");
16
+ const health_router_1 = require("./api/health/health.router");
17
+ const deploy_router_1 = require("./api/deploy/deploy.router");
18
+ const flag_router_1 = require("./api/flag/flag.router");
19
+ const host_router_1 = require("./api/host/host.router");
20
+ let MainRouter = class MainRouter {
21
+ constructor(proxyRouter, mockRouter, flagRouter, hostRouter, healthRouter, deployRouter) {
22
+ this.proxyRouter = proxyRouter;
23
+ this.mockRouter = mockRouter;
24
+ this.flagRouter = flagRouter;
25
+ this.hostRouter = hostRouter;
26
+ this.healthRouter = healthRouter;
27
+ this.deployRouter = deployRouter;
28
+ }
29
+ async getRoutes() {
30
+ const routes = await Promise.all([
31
+ this.deployRouter.getRoutes(),
32
+ this.healthRouter.getRoutes(),
33
+ this.flagRouter.getRoutes(),
34
+ this.mockRouter.getRoutes(),
35
+ this.hostRouter.getRoutes(),
36
+ this.proxyRouter.getRoutes(),
37
+ ]);
38
+ return routes.flat();
39
+ }
40
+ };
41
+ exports.MainRouter = MainRouter;
42
+ exports.MainRouter = MainRouter = __decorate([
43
+ (0, provider_1.Provider)(),
44
+ __metadata("design:paramtypes", [proxy_router_1.ProxyRouter,
45
+ mock_router_1.MockRouter,
46
+ flag_router_1.FlagRouter,
47
+ host_router_1.HostRouter,
48
+ health_router_1.HealthRouter,
49
+ deploy_router_1.DeployRouter])
50
+ ], MainRouter);
51
+ //# sourceMappingURL=main.router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.router.js","sourceRoot":"","sources":["../src/main.router.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,0DAAqD;AACrD,2DAAqD;AACrD,wDAAkD;AAClD,8DAAwD;AACxD,8DAAwD;AACxD,wDAAoD;AACpD,wDAAoD;AAG7C,IAAM,UAAU,GAAhB,MAAM,UAAU;IACnB,YACqB,WAAwB,EACxB,UAAsB,EACtB,UAAsB,EACtB,UAAsB,EACtB,YAA0B,EAC1B,YAA0B;QAL1B,gBAAW,GAAX,WAAW,CAAa;QACxB,eAAU,GAAV,UAAU,CAAY;QACtB,eAAU,GAAV,UAAU,CAAY;QACtB,eAAU,GAAV,UAAU,CAAY;QACtB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,iBAAY,GAAZ,YAAY,CAAc;IAC3C,CAAC;IAEL,KAAK,CAAC,SAAS;QACX,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC7B,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;YAC7B,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;YAC7B,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;YAC3B,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;YAC3B,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;YAC3B,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;SAC/B,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;CACJ,CAAA;AAtBY,gCAAU;qBAAV,UAAU;IADtB,IAAA,mBAAQ,GAAE;qCAG2B,0BAAW;QACZ,wBAAU;QACV,wBAAU;QACV,wBAAU;QACR,4BAAY;QACZ,4BAAY;GAPtC,UAAU,CAsBtB"}
@@ -0,0 +1,22 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.H2o2Plugin = void 0;
10
+ const H2o2 = require("@mocko/h2o2");
11
+ const provider_1 = require("../utils/decorators/provider");
12
+ let H2o2Plugin = class H2o2Plugin {
13
+ constructor() {
14
+ this.plugin = H2o2;
15
+ this.options = {};
16
+ }
17
+ };
18
+ exports.H2o2Plugin = H2o2Plugin;
19
+ exports.H2o2Plugin = H2o2Plugin = __decorate([
20
+ (0, provider_1.Provider)()
21
+ ], H2o2Plugin);
22
+ //# sourceMappingURL=h2o2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"h2o2.js","sourceRoot":"","sources":["../../src/plugins/h2o2.ts"],"names":[],"mappings":";;;;;;;;;AACA,oCAAoC;AACpC,2DAAsD;AAG/C,IAAM,UAAU,GAAhB,MAAM,UAAU;IAAhB;QACM,WAAM,GAAG,IAAI,CAAC;QACd,YAAO,GAAG,EAAE,CAAC;IAC1B,CAAC;CAAA,CAAA;AAHY,gCAAU;qBAAV,UAAU;IADtB,IAAA,mBAAQ,GAAE;GACE,UAAU,CAGtB"}
@@ -0,0 +1,29 @@
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.PluginProvider = void 0;
13
+ const provider_1 = require("../utils/decorators/provider");
14
+ const logger_1 = require("./logger");
15
+ const h2o2_1 = require("./h2o2");
16
+ let PluginProvider = class PluginProvider {
17
+ constructor(logger, h2o2) {
18
+ this.logger = logger;
19
+ this.h2o2 = h2o2;
20
+ this.plugins = [this.logger, this.h2o2];
21
+ }
22
+ };
23
+ exports.PluginProvider = PluginProvider;
24
+ exports.PluginProvider = PluginProvider = __decorate([
25
+ (0, provider_1.Provider)(),
26
+ __metadata("design:paramtypes", [logger_1.LoggerPlugin,
27
+ h2o2_1.H2o2Plugin])
28
+ ], PluginProvider);
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2DAAsD;AACtD,qCAAsC;AAEtC,iCAAkC;AAG3B,IAAM,cAAc,GAApB,MAAM,cAAc;IACvB,YACqB,MAAoB,EACpB,IAAgB;QADhB,WAAM,GAAN,MAAM,CAAc;QACpB,SAAI,GAAJ,IAAI,CAAY;QAG5B,YAAO,GAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAFnD,CAAC;CAGR,CAAA;AAPY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAQ,GAAE;qCAGsB,qBAAY;QACd,iBAAU;GAH5B,cAAc,CAO1B"}
@@ -0,0 +1,24 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.LoggerPlugin = void 0;
10
+ const provider_1 = require("../utils/decorators/provider");
11
+ const logger_1 = require("@mocko/logger");
12
+ let LoggerPlugin = class LoggerPlugin {
13
+ constructor() {
14
+ this.plugin = logger_1.hapiRequestLogger;
15
+ this.options = {
16
+ shouldLogRequest: (path) => !path.startsWith('/__mocko__'),
17
+ };
18
+ }
19
+ };
20
+ exports.LoggerPlugin = LoggerPlugin;
21
+ exports.LoggerPlugin = LoggerPlugin = __decorate([
22
+ (0, provider_1.Provider)()
23
+ ], LoggerPlugin);
24
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/plugins/logger.ts"],"names":[],"mappings":";;;;;;;;;AACA,2DAAsD;AACtD,0CAAkD;AAG3C,IAAM,YAAY,GAAlB,MAAM,YAAY;IAAlB;QACM,WAAM,GAAG,0BAAiB,CAAC;QAC3B,YAAO,GAAG;YACf,gBAAgB,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;SACrE,CAAC;IACN,CAAC;CAAA,CAAA;AALY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAQ,GAAE;GACE,YAAY,CAKxB"}