specmatic 1.3.24 → 1.3.26
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/dist/bin/command.line.js +22 -4
- package/dist/common/runner.d.ts +2 -1
- package/dist/common/runner.js +8 -2
- package/dist/config.d.ts +1 -0
- package/dist/config.js +3 -2
- package/dist/graphql/index.d.ts +12 -0
- package/dist/graphql/index.js +109 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +14 -1
- package/package.json +2 -2
- package/specmatic.jar +0 -0
- package/src/bin/__tests__/command.line.ts +13 -1
- package/src/bin/command.line.ts +22 -4
- package/src/common/runner.ts +9 -2
- package/src/config.ts +1 -0
- package/src/graphql/index.ts +100 -0
- package/src/index.ts +28 -24
package/dist/bin/command.line.js
CHANGED
|
@@ -25,11 +25,29 @@ var callSpecmaticCli = function callSpecmaticCli(args) {
|
|
|
25
25
|
});
|
|
26
26
|
};
|
|
27
27
|
function getJarFunction(args) {
|
|
28
|
-
|
|
28
|
+
if (args.length >= 3) {
|
|
29
|
+
switch (args[2]) {
|
|
30
|
+
case 'kafka':
|
|
31
|
+
return _runner.callKafka;
|
|
32
|
+
case 'graphql':
|
|
33
|
+
return _runner.callGraphQl;
|
|
34
|
+
default:
|
|
35
|
+
return _runner.callCore;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return _runner.callCore;
|
|
29
39
|
}
|
|
30
40
|
function extractArgsForJar(args) {
|
|
31
|
-
|
|
32
|
-
|
|
41
|
+
if (args.length >= 3) {
|
|
42
|
+
switch (args[2]) {
|
|
43
|
+
case 'kafka':
|
|
44
|
+
case 'graphql':
|
|
45
|
+
return args.slice(3).join(' ');
|
|
46
|
+
default:
|
|
47
|
+
return args.slice(2).join(' ');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return args.slice(2).join(' ');
|
|
33
51
|
}
|
|
34
52
|
var _default = exports["default"] = callSpecmaticCli;
|
|
35
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcnVubmVyIiwib2JqIiwiX19lc01vZHVsZSIsImNhbGxTcGVjbWF0aWNDbGkiLCJhcmdzIiwicHJvY2VzcyIsImFyZ3YiLCJjbGlBcmdzIiwiZXh0cmFjdEFyZ3NGb3JKYXIiLCJmbiIsImdldEphckZ1bmN0aW9uIiwibG9nZ2VyIiwiaW5mbyIsImNvbmNhdCIsImVyciIsImNvZGUiLCJleGl0Q29kZSIsIm1lc3NhZ2UiLCJjb25zb2xlIiwibG9nIiwibGVuZ3RoIiwiY2FsbEthZmthIiwiY2FsbEdyYXBoUWwiLCJjYWxsQ29yZSIsInNsaWNlIiwiam9pbiIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW4vY29tbWFuZC5saW5lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2dnZXIgZnJvbSAnLi4vY29tbW9uL2xvZ2dlcidcbmltcG9ydCB7IGNhbGxLYWZrYSwgY2FsbENvcmUsIGNhbGxHcmFwaFFsIH0gZnJvbSAnLi4vY29tbW9uL3J1bm5lcidcblxuY29uc3QgY2FsbFNwZWNtYXRpY0NsaSA9IChhcmdzPzogc3RyaW5nW10pID0+IHtcbiAgICBhcmdzID0gYXJncyB8fCBwcm9jZXNzLmFyZ3ZcbiAgICBsZXQgY2xpQXJncyA9IGV4dHJhY3RBcmdzRm9ySmFyKGFyZ3MpXG4gICAgbGV0IGZuID0gZ2V0SmFyRnVuY3Rpb24oYXJncylcbiAgICBsb2dnZXIuaW5mbyhgQ0xJOiBSdW5uaW5nIHdpdGggYXJncyBcIiR7Y2xpQXJnc31cImApXG4gICAgZm4oXG4gICAgICAgIGNsaUFyZ3MsXG4gICAgICAgIChlcnI/OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnQ0xJOiBGaW5pc2hlZCB3aXRoIG5vbiB6ZXJvIGV4aXQgY29kZTogJywgZXJyLmNvZGUpXG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0Q29kZSA9IGVyci5jb2RlXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdDTEk6IEZpbmlzaGVkJylcbiAgICAgICAgICAgICAgICBwcm9jZXNzLmV4aXRDb2RlID0gMFxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtZXNzYWdlID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke21lc3NhZ2V9YClcbiAgICAgICAgfVxuICAgIClcbn1cblxuZnVuY3Rpb24gZ2V0SmFyRnVuY3Rpb24oYXJnczogc3RyaW5nW10pIHtcbiAgICBpZihhcmdzLmxlbmd0aCA+PSAzKSB7XG4gICAgICAgIHN3aXRjaCAoYXJnc1syXSkge1xuICAgICAgICAgICAgY2FzZSAna2Fma2EnOlxuICAgICAgICAgICAgICAgIHJldHVybiBjYWxsS2Fma2FcbiAgICAgICAgICAgIGNhc2UgJ2dyYXBocWwnOlxuICAgICAgICAgICAgICAgIHJldHVybiBjYWxsR3JhcGhRbFxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbENvcmVcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2FsbENvcmVcbn1cblxuZnVuY3Rpb24gZXh0cmFjdEFyZ3NGb3JKYXIoYXJnczogc3RyaW5nW10pIHtcbiAgICBpZihhcmdzLmxlbmd0aCA+PSAzKSB7XG4gICAgICAgIHN3aXRjaCAoYXJnc1syXSkge1xuICAgICAgICAgICAgY2FzZSAna2Fma2EnOlxuICAgICAgICAgICAgY2FzZSAnZ3JhcGhxbCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFyZ3Muc2xpY2UoMykuam9pbignICcpXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBhcmdzLnNsaWNlKDIpLmpvaW4oJyAnKVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcmdzLnNsaWNlKDIpLmpvaW4oJyAnKVxufVxuXG5leHBvcnQgZGVmYXVsdCBjYWxsU3BlY21hdGljQ2xpXG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUFtRSxTQUFBRCx1QkFBQUcsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLGdCQUFBQSxHQUFBO0FBRW5FLElBQU1FLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBZ0JBLENBQUlDLElBQWUsRUFBSztFQUMxQ0EsSUFBSSxHQUFHQSxJQUFJLElBQUlDLE9BQU8sQ0FBQ0MsSUFBSTtFQUMzQixJQUFJQyxPQUFPLEdBQUdDLGlCQUFpQixDQUFDSixJQUFJLENBQUM7RUFDckMsSUFBSUssRUFBRSxHQUFHQyxjQUFjLENBQUNOLElBQUksQ0FBQztFQUM3Qk8sa0JBQU0sQ0FBQ0MsSUFBSSw2QkFBQUMsTUFBQSxDQUE0Qk4sT0FBTyxPQUFHLENBQUM7RUFDbERFLEVBQUUsQ0FDRUYsT0FBTyxFQUNQLFVBQUNPLEdBQVMsRUFBSztJQUNYLElBQUlBLEdBQUcsRUFBRTtNQUNMSCxrQkFBTSxDQUFDQyxJQUFJLENBQUMseUNBQXlDLEVBQUVFLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDO01BQ2hFVixPQUFPLENBQUNXLFFBQVEsR0FBR0YsR0FBRyxDQUFDQyxJQUFJO0lBQy9CLENBQUMsTUFBTTtNQUNISixrQkFBTSxDQUFDQyxJQUFJLENBQUMsZUFBZSxDQUFDO01BQzVCUCxPQUFPLENBQUNXLFFBQVEsR0FBRyxDQUFDO0lBQ3hCO0VBQ0osQ0FBQyxFQUNELFVBQUFDLE9BQU8sRUFBSTtJQUNQQyxPQUFPLENBQUNDLEdBQUcsSUFBQU4sTUFBQSxDQUFJSSxPQUFPLENBQUUsQ0FBQztFQUM3QixDQUNKLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBU1AsY0FBY0EsQ0FBQ04sSUFBYyxFQUFFO0VBQ3BDLElBQUdBLElBQUksQ0FBQ2dCLE1BQU0sSUFBSSxDQUFDLEVBQUU7SUFDakIsUUFBUWhCLElBQUksQ0FBQyxDQUFDLENBQUM7TUFDWCxLQUFLLE9BQU87UUFDUixPQUFPaUIsaUJBQVM7TUFDcEIsS0FBSyxTQUFTO1FBQ1YsT0FBT0MsbUJBQVc7TUFDdEI7UUFDSSxPQUFPQyxnQkFBUTtJQUN2QjtFQUNKO0VBQ0EsT0FBT0EsZ0JBQVE7QUFDbkI7QUFFQSxTQUFTZixpQkFBaUJBLENBQUNKLElBQWMsRUFBRTtFQUN2QyxJQUFHQSxJQUFJLENBQUNnQixNQUFNLElBQUksQ0FBQyxFQUFFO0lBQ2pCLFFBQVFoQixJQUFJLENBQUMsQ0FBQyxDQUFDO01BQ1gsS0FBSyxPQUFPO01BQ1osS0FBSyxTQUFTO1FBQ1YsT0FBT0EsSUFBSSxDQUFDb0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDQyxJQUFJLENBQUMsR0FBRyxDQUFDO01BQ2xDO1FBQ0ksT0FBT3JCLElBQUksQ0FBQ29CLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUN0QztFQUNKO0VBQ0EsT0FBT3JCLElBQUksQ0FBQ29CLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUNsQztBQUFDLElBQUFDLFFBQUEsR0FBQUMsT0FBQSxjQUVjeEIsZ0JBQWdCIn0=
|
package/dist/common/runner.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ChildProcess } from 'child_process';
|
|
2
2
|
declare const callCore: (args: string, done: (error: any) => void, onOutput: (message: string, error: boolean) => void) => ChildProcess;
|
|
3
3
|
declare const callKafka: (args: string, done: (error: any) => void, onOutput: (message: string, error: boolean) => void) => ChildProcess;
|
|
4
|
-
|
|
4
|
+
declare const callGraphQl: (args: string, done: (error: any) => void, onOutput: (message: string, error: boolean) => void) => ChildProcess;
|
|
5
|
+
export { callCore, callKafka, callGraphQl };
|
package/dist/common/runner.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.callKafka = exports.callCore = void 0;
|
|
6
|
+
exports.callKafka = exports.callGraphQl = exports.callCore = void 0;
|
|
7
7
|
var _path = _interopRequireDefault(require("path"));
|
|
8
8
|
var _config = require("../config");
|
|
9
9
|
var _logger = _interopRequireDefault(require("../common/logger"));
|
|
@@ -21,6 +21,12 @@ var callKafka = exports.callKafka = function callKafka(args, done, onOutput) {
|
|
|
21
21
|
_logger["default"].debug("CLI: Specmatic jar path: ".concat(specmaticJarPath));
|
|
22
22
|
return callJar(specmaticJarPath, args, done, onOutput);
|
|
23
23
|
};
|
|
24
|
+
var callGraphQl = exports.callGraphQl = function callGraphQl(args, done, onOutput) {
|
|
25
|
+
var rootPath = _path["default"].resolve(__dirname, '..', '..', '..', 'specmatic-beta', 'graphql');
|
|
26
|
+
var specmaticJarPath = _path["default"].resolve(rootPath, _config.specmaticGraphQlJarName);
|
|
27
|
+
_logger["default"].debug("CLI: Specmatic jar path: ".concat(specmaticJarPath));
|
|
28
|
+
return callJar(specmaticJarPath, args, done, onOutput);
|
|
29
|
+
};
|
|
24
30
|
function callJar(jarPath, args, done, onOutput) {
|
|
25
31
|
var _javaProcess$stdout, _javaProcess$stderr;
|
|
26
32
|
var argsList = [];
|
|
@@ -48,4 +54,4 @@ function callJar(jarPath, args, done, onOutput) {
|
|
|
48
54
|
});
|
|
49
55
|
return javaProcess;
|
|
50
56
|
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NvbmZpZyIsIl9sb2dnZXIiLCJfY2hpbGRfcHJvY2VzcyIsIm9iaiIsIl9fZXNNb2R1bGUiLCJjYWxsQ29yZSIsImV4cG9ydHMiLCJhcmdzIiwiZG9uZSIsIm9uT3V0cHV0Iiwicm9vdFBhdGgiLCJwYXRoIiwicmVzb2x2ZSIsIl9fZGlybmFtZSIsInNwZWNtYXRpY0phclBhdGgiLCJzcGVjbWF0aWNDb3JlSmFyTmFtZSIsImxvZ2dlciIsImRlYnVnIiwiY29uY2F0IiwiY2FsbEphciIsImNhbGxLYWZrYSIsInNwZWNtYXRpY0thZmthSmFyTmFtZSIsImNhbGxHcmFwaFFsIiwic3BlY21hdGljR3JhcGhRbEphck5hbWUiLCJqYXJQYXRoIiwiX2phdmFQcm9jZXNzJHN0ZG91dCIsIl9qYXZhUHJvY2VzcyRzdGRlcnIiLCJhcmdzTGlzdCIsInByb2Nlc3MiLCJlbnYiLCJwdXNoIiwiamF2YVByb2Nlc3MiLCJzcGF3biIsInN0ZGlvIiwic3RkZXJyIiwic2hlbGwiLCJzdGRvdXQiLCJvbiIsImRhdGEiLCJjb2RlIiwiRXJyb3IiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbW9uL3J1bm5lci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXhlY1NoIGZyb20gJ2V4ZWMtc2gnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBzcGVjbWF0aWNDb3JlSmFyTmFtZSwgc3BlY21hdGljS2Fma2FKYXJOYW1lLCBzcGVjbWF0aWNHcmFwaFFsSmFyTmFtZSB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4uL2NvbW1vbi9sb2dnZXInO1xuaW1wb3J0IHsgQ2hpbGRQcm9jZXNzLCBzcGF3biwgU3Bhd25PcHRpb25zIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5cbmNvbnN0IGNhbGxDb3JlID0gKGFyZ3M6IHN0cmluZywgZG9uZTogKGVycm9yOiBhbnkpID0+IHZvaWQsIG9uT3V0cHV0OiAobWVzc2FnZTogc3RyaW5nLCBlcnJvcjogYm9vbGVhbikgPT4gdm9pZCk6IENoaWxkUHJvY2VzcyA9PiB7XG4gICAgY29uc3Qgcm9vdFBhdGggPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4nLCAnLi4nKTtcbiAgICBjb25zdCBzcGVjbWF0aWNKYXJQYXRoID0gcGF0aC5yZXNvbHZlKHJvb3RQYXRoLCBzcGVjbWF0aWNDb3JlSmFyTmFtZSk7XG4gICAgbG9nZ2VyLmRlYnVnKGBDTEk6IFNwZWNtYXRpYyBqYXIgcGF0aDogJHtzcGVjbWF0aWNKYXJQYXRofWApO1xuICAgIHJldHVybiBjYWxsSmFyKHNwZWNtYXRpY0phclBhdGgsIGFyZ3MsIGRvbmUsIG9uT3V0cHV0KTtcbn07XG5cbmNvbnN0IGNhbGxLYWZrYSA9IChhcmdzOiBzdHJpbmcsIGRvbmU6IChlcnJvcjogYW55KSA9PiB2b2lkLCBvbk91dHB1dDogKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I6IGJvb2xlYW4pID0+IHZvaWQpOiBDaGlsZFByb2Nlc3MgPT4ge1xuICAgIGNvbnN0IHJvb3RQYXRoID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJy4uJywgJ3NwZWNtYXRpYy1iZXRhJywgJ2thZmthJyk7XG4gICAgY29uc3Qgc3BlY21hdGljSmFyUGF0aCA9IHBhdGgucmVzb2x2ZShyb290UGF0aCwgc3BlY21hdGljS2Fma2FKYXJOYW1lKTtcbiAgICBsb2dnZXIuZGVidWcoYENMSTogU3BlY21hdGljIGphciBwYXRoOiAke3NwZWNtYXRpY0phclBhdGh9YCk7XG4gICAgcmV0dXJuIGNhbGxKYXIoc3BlY21hdGljSmFyUGF0aCwgYXJncywgZG9uZSwgb25PdXRwdXQpO1xufTtcblxuY29uc3QgY2FsbEdyYXBoUWwgPSAoYXJnczogc3RyaW5nLCBkb25lOiAoZXJyb3I6IGFueSkgPT4gdm9pZCwgb25PdXRwdXQ6IChtZXNzYWdlOiBzdHJpbmcsIGVycm9yOiBib29sZWFuKSA9PiB2b2lkKTogQ2hpbGRQcm9jZXNzID0+IHtcbiAgICBjb25zdCByb290UGF0aCA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicsICcuLicsICcuLicsICdzcGVjbWF0aWMtYmV0YScsICdncmFwaHFsJyk7XG4gICAgY29uc3Qgc3BlY21hdGljSmFyUGF0aCA9IHBhdGgucmVzb2x2ZShyb290UGF0aCwgc3BlY21hdGljR3JhcGhRbEphck5hbWUpO1xuICAgIGxvZ2dlci5kZWJ1ZyhgQ0xJOiBTcGVjbWF0aWMgamFyIHBhdGg6ICR7c3BlY21hdGljSmFyUGF0aH1gKTtcbiAgICByZXR1cm4gY2FsbEphcihzcGVjbWF0aWNKYXJQYXRoLCBhcmdzLCBkb25lLCBvbk91dHB1dCk7XG59XG5cbmZ1bmN0aW9uIGNhbGxKYXIoamFyUGF0aDogc3RyaW5nLCBhcmdzOiBzdHJpbmcsIGRvbmU6IChlcnJvcjogYW55KSA9PiB2b2lkLCBvbk91dHB1dDogKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I6IGJvb2xlYW4pID0+IHZvaWQpIHtcbiAgICBsZXQgYXJnc0xpc3QgPSBbXTtcbiAgICBpZiAocHJvY2Vzcy5lbnZbJ2VuZHBvaW50c0FQSSddKSB7XG4gICAgICAgIGFyZ3NMaXN0LnB1c2goYC1EZW5kcG9pbnRzQVBJPVwiJHtwcm9jZXNzLmVudlsnZW5kcG9pbnRzQVBJJ119XCJgKTtcbiAgICB9XG4gICAgYXJnc0xpc3QgPSBhcmdzTGlzdC5jb25jYXQoWyctamFyJywgYFwiJHtqYXJQYXRofVwiYCwgYXJnc10pO1xuICAgIGNvbnN0IGphdmFQcm9jZXNzOiBDaGlsZFByb2Nlc3MgPSBzcGF3bignamF2YScsIGFyZ3NMaXN0LCB7IHN0ZGlvOiAncGlwZScsIHN0ZGVycjogJ3BpcGUnLCBzaGVsbDogdHJ1ZSB9IGFzIFNwYXduT3B0aW9ucyk7XG4gICAgamF2YVByb2Nlc3Muc3Rkb3V0Py5vbignZGF0YScsIGZ1bmN0aW9uIChkYXRhOiBTdHJpbmcpIHtcbiAgICAgICAgb25PdXRwdXQoYCR7ZGF0YX1gLCBmYWxzZSk7XG4gICAgfSk7XG4gICAgamF2YVByb2Nlc3Muc3RkZXJyPy5vbignZGF0YScsIGZ1bmN0aW9uIChkYXRhOiBTdHJpbmcpIHtcbiAgICAgICAgb25PdXRwdXQoYCR7ZGF0YX1gLCB0cnVlKTtcbiAgICB9KTtcbiAgICBqYXZhUHJvY2Vzcy5vbignY2xvc2UnLCBmdW5jdGlvbiAoY29kZTpudW1iZXIpIHtcbiAgICAgICAgaWYgKGNvZGUpIHtcbiAgICAgICAgICAgIGRvbmUobmV3IEVycm9yKCdDb21tYW5kIGV4aXRlZCB3aXRoIG5vbiB6ZXJvIGNvZGU6ICcgKyBjb2RlKSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRvbmUobnVsbCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gamF2YVByb2Nlc3M7XG59XG5cbmV4cG9ydCB7IGNhbGxDb3JlLCBjYWxsS2Fma2EsIGNhbGxHcmFwaFFsIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLGNBQUEsR0FBQUgsT0FBQTtBQUFrRSxTQUFBRCx1QkFBQUssR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLGdCQUFBQSxHQUFBO0FBRWxFLElBQU1FLFFBQVEsR0FBQUMsT0FBQSxDQUFBRCxRQUFBLEdBQUcsU0FBWEEsUUFBUUEsQ0FBSUUsSUFBWSxFQUFFQyxJQUEwQixFQUFFQyxRQUFtRCxFQUFtQjtFQUM5SCxJQUFNQyxRQUFRLEdBQUdDLGdCQUFJLENBQUNDLE9BQU8sQ0FBQ0MsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7RUFDcEQsSUFBTUMsZ0JBQWdCLEdBQUdILGdCQUFJLENBQUNDLE9BQU8sQ0FBQ0YsUUFBUSxFQUFFSyw0QkFBb0IsQ0FBQztFQUNy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
|
package/dist/config.d.ts
CHANGED
package/dist/config.js
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.specmaticKafkaJarName = exports.specmaticCoreJarName = void 0;
|
|
6
|
+
exports.specmaticKafkaJarName = exports.specmaticGraphQlJarName = exports.specmaticCoreJarName = void 0;
|
|
7
7
|
var specmaticCoreJarName = exports.specmaticCoreJarName = 'specmatic.jar';
|
|
8
8
|
var specmaticKafkaJarName = exports.specmaticKafkaJarName = 'specmatic-kafka-all.jar';
|
|
9
|
-
|
|
9
|
+
var specmaticGraphQlJarName = exports.specmaticGraphQlJarName = 'specmatic-graphql-all.jar';
|
|
10
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzcGVjbWF0aWNDb3JlSmFyTmFtZSIsImV4cG9ydHMiLCJzcGVjbWF0aWNLYWZrYUphck5hbWUiLCJzcGVjbWF0aWNHcmFwaFFsSmFyTmFtZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHNwZWNtYXRpY0NvcmVKYXJOYW1lID0gJ3NwZWNtYXRpYy5qYXInO1xuZXhwb3J0IGNvbnN0IHNwZWNtYXRpY0thZmthSmFyTmFtZSA9ICdzcGVjbWF0aWMta2Fma2EtYWxsLmphcic7XG5leHBvcnQgY29uc3Qgc3BlY21hdGljR3JhcGhRbEphck5hbWUgPSAnc3BlY21hdGljLWdyYXBocWwtYWxsLmphcic7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFPLElBQU1BLG9CQUFvQixHQUFBQyxPQUFBLENBQUFELG9CQUFBLEdBQUcsZUFBZTtBQUM1QyxJQUFNRSxxQkFBcUIsR0FBQUQsT0FBQSxDQUFBQyxxQkFBQSxHQUFHLHlCQUF5QjtBQUN2RCxJQUFNQyx1QkFBdUIsR0FBQUYsT0FBQSxDQUFBRSx1QkFBQSxHQUFHLDJCQUEyQiJ9
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { ChildProcess } from "node:child_process";
|
|
3
|
+
export declare class GraphQlStub {
|
|
4
|
+
host: string;
|
|
5
|
+
port: number;
|
|
6
|
+
data?: string;
|
|
7
|
+
process: ChildProcess;
|
|
8
|
+
constructor(host: string, port: number, process: ChildProcess, data?: string);
|
|
9
|
+
}
|
|
10
|
+
declare const startGraphQlStub: (host?: string, port?: string, data?: string, args?: (string | number)[]) => Promise<GraphQlStub>;
|
|
11
|
+
declare const stopGraphQlStub: (graphQlStub: GraphQlStub) => Promise<void>;
|
|
12
|
+
export { startGraphQlStub, stopGraphQlStub };
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.stopGraphQlStub = exports.startGraphQlStub = exports.GraphQlStub = void 0;
|
|
7
|
+
var _logger = _interopRequireDefault(require("../common/logger"));
|
|
8
|
+
var _runner = require("../common/runner");
|
|
9
|
+
var _shutdownUtils = require("../core/shutdownUtils");
|
|
10
|
+
var _terminate = _interopRequireDefault(require("terminate"));
|
|
11
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
12
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
13
|
+
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
14
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
15
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
16
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
17
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
18
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
19
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
20
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
21
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
22
|
+
var GraphQlStub = exports.GraphQlStub = /*#__PURE__*/_createClass(function GraphQlStub(host, port, process, data) {
|
|
23
|
+
_classCallCheck(this, GraphQlStub);
|
|
24
|
+
_defineProperty(this, "host", void 0);
|
|
25
|
+
_defineProperty(this, "port", void 0);
|
|
26
|
+
_defineProperty(this, "data", void 0);
|
|
27
|
+
_defineProperty(this, "process", void 0);
|
|
28
|
+
this.host = host;
|
|
29
|
+
this.port = port;
|
|
30
|
+
this.process = process;
|
|
31
|
+
this.data = data;
|
|
32
|
+
});
|
|
33
|
+
var startGraphQlStub = exports.startGraphQlStub = function startGraphQlStub(host, port, data) {
|
|
34
|
+
var args = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
|
|
35
|
+
var cmd = " stub ";
|
|
36
|
+
if (host) cmd += "--host ".concat(host, " ");
|
|
37
|
+
if (port) cmd += "--port ".concat(port, " ");
|
|
38
|
+
if (data) cmd += "--data ".concat(data, " ");
|
|
39
|
+
cmd += args.join(" ");
|
|
40
|
+
_logger["default"].info("GraphQl Stub: Starting server");
|
|
41
|
+
_logger["default"].debug("GraphQl Stub: Executing \"".concat(cmd, "\""));
|
|
42
|
+
return new Promise(function (resolve, reject) {
|
|
43
|
+
var reportedPort;
|
|
44
|
+
var javaProcess = (0, _runner.callGraphQl)(cmd, function (err) {
|
|
45
|
+
if (err) {
|
|
46
|
+
_logger["default"].error("GraphQl Stub: Exited with error ".concat(err));
|
|
47
|
+
}
|
|
48
|
+
}, function (message, error) {
|
|
49
|
+
if (!error) {
|
|
50
|
+
if (message.includes("Starting the server on port")) {
|
|
51
|
+
_logger["default"].info("GraphQl Stub: ".concat(message));
|
|
52
|
+
var stubInfo = message.split("port ")[1];
|
|
53
|
+
if (stubInfo.length < 2) reject("Cannot determine port from graphql stub output");else reportedPort = Number.parseInt(stubInfo[1].trim());
|
|
54
|
+
} else if (message.includes("Address already in use")) {
|
|
55
|
+
_logger["default"].error("GraphQl Stub: ".concat(message));
|
|
56
|
+
reject(message);
|
|
57
|
+
} else if (message.includes("Stub server is running")) {
|
|
58
|
+
var _host = message.split("on ")[1].split(":")[0].trim();
|
|
59
|
+
if (port) {
|
|
60
|
+
resolve(new GraphQlStub(_host, reportedPort, javaProcess, data));
|
|
61
|
+
} else {
|
|
62
|
+
reject("No port or host information available, but graphql stub server is running");
|
|
63
|
+
}
|
|
64
|
+
} else {
|
|
65
|
+
_logger["default"].debug("GraphQl Stub: ".concat(message));
|
|
66
|
+
}
|
|
67
|
+
} else {
|
|
68
|
+
_logger["default"].error("GraphQl Stub: ".concat(message));
|
|
69
|
+
reject(message);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
var stopGraphQlStub = exports.stopGraphQlStub = /*#__PURE__*/function () {
|
|
75
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(graphQlStub) {
|
|
76
|
+
var _javaProcess$stdout, _javaProcess$stderr;
|
|
77
|
+
var javaProcess;
|
|
78
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
79
|
+
while (1) switch (_context.prev = _context.next) {
|
|
80
|
+
case 0:
|
|
81
|
+
_logger["default"].debug("GraphQl Stub: Stopping server at ".concat(graphQlStub.host, ":").concat(graphQlStub.port));
|
|
82
|
+
javaProcess = graphQlStub.process;
|
|
83
|
+
(_javaProcess$stdout = javaProcess.stdout) === null || _javaProcess$stdout === void 0 || _javaProcess$stdout.removeAllListeners();
|
|
84
|
+
(_javaProcess$stderr = javaProcess.stderr) === null || _javaProcess$stderr === void 0 || _javaProcess$stderr.removeAllListeners();
|
|
85
|
+
javaProcess.removeAllListeners("close");
|
|
86
|
+
_logger["default"].debug("Trying to stop stub process gracefully ...");
|
|
87
|
+
_context.prev = 6;
|
|
88
|
+
_context.next = 9;
|
|
89
|
+
return (0, _shutdownUtils.gracefulShutdown)(javaProcess);
|
|
90
|
+
case 9:
|
|
91
|
+
_context.next = 14;
|
|
92
|
+
break;
|
|
93
|
+
case 11:
|
|
94
|
+
_context.prev = 11;
|
|
95
|
+
_context.t0 = _context["catch"](6);
|
|
96
|
+
(0, _terminate["default"])(javaProcess.pid);
|
|
97
|
+
case 14:
|
|
98
|
+
_logger["default"].info("GraphQl Stub: Stopped server at ".concat(graphQlStub.host, ":").concat(graphQlStub.port));
|
|
99
|
+
case 15:
|
|
100
|
+
case "end":
|
|
101
|
+
return _context.stop();
|
|
102
|
+
}
|
|
103
|
+
}, _callee, null, [[6, 11]]);
|
|
104
|
+
}));
|
|
105
|
+
return function stopGraphQlStub(_x) {
|
|
106
|
+
return _ref.apply(this, arguments);
|
|
107
|
+
};
|
|
108
|
+
}();
|
|
109
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcnVubmVyIiwiX3NodXRkb3duVXRpbHMiLCJfdGVybWluYXRlIiwib2JqIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJlIiwidCIsInIiLCJPYmplY3QiLCJuIiwiaGFzT3duUHJvcGVydHkiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiaSIsImEiLCJjIiwiYXN5bmNJdGVyYXRvciIsInUiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIndyYXAiLCJHZW5lcmF0b3IiLCJjcmVhdGUiLCJDb250ZXh0IiwibWFrZUludm9rZU1ldGhvZCIsInRyeUNhdGNoIiwidHlwZSIsImFyZyIsImNhbGwiLCJoIiwibCIsImYiLCJzIiwieSIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJwIiwiZCIsImdldFByb3RvdHlwZU9mIiwidiIsInZhbHVlcyIsImciLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJpbnZva2UiLCJyZXNvbHZlIiwiX19hd2FpdCIsInRoZW4iLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsIkVycm9yIiwiZG9uZSIsIm1ldGhvZCIsImRlbGVnYXRlIiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiVHlwZUVycm9yIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImxlbmd0aCIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsIm5hbWUiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJhd3JhcCIsImFzeW5jIiwiUHJvbWlzZSIsImtleXMiLCJyZXZlcnNlIiwicG9wIiwicHJldiIsImNoYXJBdCIsInNsaWNlIiwic3RvcCIsInJ2YWwiLCJoYW5kbGUiLCJjb21wbGV0ZSIsImZpbmlzaCIsIl9jYXRjaCIsImRlbGVnYXRlWWllbGQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJyZWplY3QiLCJfbmV4dCIsIl90aHJvdyIsImtleSIsImluZm8iLCJlcnJvciIsIl9hc3luY1RvR2VuZXJhdG9yIiwiZm4iLCJzZWxmIiwiYXJncyIsImFyZ3VtZW50cyIsImFwcGx5IiwiZXJyIiwidW5kZWZpbmVkIiwiX2RlZmluZVByb3BlcnRpZXMiLCJ0YXJnZXQiLCJwcm9wcyIsImRlc2NyaXB0b3IiLCJfdG9Qcm9wZXJ0eUtleSIsIl9jcmVhdGVDbGFzcyIsIkNvbnN0cnVjdG9yIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJfZGVmaW5lUHJvcGVydHkiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJ0b1ByaW1pdGl2ZSIsIk51bWJlciIsIkdyYXBoUWxTdHViIiwiZXhwb3J0cyIsImhvc3QiLCJwb3J0IiwicHJvY2VzcyIsImRhdGEiLCJzdGFydEdyYXBoUWxTdHViIiwiY21kIiwiY29uY2F0Iiwiam9pbiIsImxvZ2dlciIsImRlYnVnIiwicmVwb3J0ZWRQb3J0IiwiamF2YVByb2Nlc3MiLCJjYWxsR3JhcGhRbCIsIm1lc3NhZ2UiLCJpbmNsdWRlcyIsInN0dWJJbmZvIiwic3BsaXQiLCJwYXJzZUludCIsInRyaW0iLCJzdG9wR3JhcGhRbFN0dWIiLCJfcmVmIiwiX2NhbGxlZSIsImdyYXBoUWxTdHViIiwiX2phdmFQcm9jZXNzJHN0ZG91dCIsIl9qYXZhUHJvY2VzcyRzdGRlcnIiLCJfY2FsbGVlJCIsIl9jb250ZXh0Iiwic3Rkb3V0IiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwic3RkZXJyIiwiZ3JhY2VmdWxTaHV0ZG93biIsInQwIiwidGVybWluYXRlIiwicGlkIiwiX3giXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZ3JhcGhxbC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENoaWxkUHJvY2VzcyB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCBsb2dnZXIgZnJvbSBcIi4uL2NvbW1vbi9sb2dnZXJcIjtcbmltcG9ydCB7IGNhbGxHcmFwaFFsIH0gZnJvbSBcIi4uL2NvbW1vbi9ydW5uZXJcIjtcbmltcG9ydCB7IGdyYWNlZnVsU2h1dGRvd24gfSBmcm9tIFwiLi4vY29yZS9zaHV0ZG93blV0aWxzXCI7XG5pbXBvcnQgdGVybWluYXRlIGZyb20gXCJ0ZXJtaW5hdGVcIjtcblxuZXhwb3J0IGNsYXNzIEdyYXBoUWxTdHViIHtcblx0aG9zdDogc3RyaW5nO1xuXHRwb3J0OiBudW1iZXI7XG5cdGRhdGE/OiBzdHJpbmc7XG5cdHByb2Nlc3M6IENoaWxkUHJvY2Vzcztcblx0Y29uc3RydWN0b3IoXG5cdFx0aG9zdDogc3RyaW5nLFxuXHRcdHBvcnQ6IG51bWJlcixcblx0XHRwcm9jZXNzOiBDaGlsZFByb2Nlc3MsXG5cdFx0ZGF0YT86IHN0cmluZyxcblx0KSB7XG5cdFx0dGhpcy5ob3N0ID0gaG9zdDtcblx0XHR0aGlzLnBvcnQgPSBwb3J0O1xuXHRcdHRoaXMucHJvY2VzcyA9IHByb2Nlc3M7XG5cdFx0dGhpcy5kYXRhID0gZGF0YTtcblx0fVxufVxuXG5jb25zdCBzdGFydEdyYXBoUWxTdHViID0gKFxuXHRob3N0Pzogc3RyaW5nLFxuXHRwb3J0Pzogc3RyaW5nLFxuXHRkYXRhPzogc3RyaW5nLFxuXHRhcmdzOiAoc3RyaW5nIHwgbnVtYmVyKVtdID0gW10sXG4pOiBQcm9taXNlPEdyYXBoUWxTdHViPiA9PiB7XG5cdGxldCBjbWQgPSBcIiBzdHViIFwiO1xuXHRpZiAoaG9zdCkgY21kICs9IGAtLWhvc3QgJHtob3N0fSBgO1xuXHRpZiAocG9ydCkgY21kICs9IGAtLXBvcnQgJHtwb3J0fSBgO1xuXHRpZiAoZGF0YSkgY21kICs9IGAtLWRhdGEgJHtkYXRhfSBgO1xuXHRjbWQgKz0gYXJncy5qb2luKFwiIFwiKTtcblxuXHRsb2dnZXIuaW5mbyhcIkdyYXBoUWwgU3R1YjogU3RhcnRpbmcgc2VydmVyXCIpO1xuXHRsb2dnZXIuZGVidWcoYEdyYXBoUWwgU3R1YjogRXhlY3V0aW5nIFwiJHtjbWR9XCJgKTtcblxuXHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdGxldCByZXBvcnRlZFBvcnQ6IG51bWJlcjtcblx0XHRjb25zdCBqYXZhUHJvY2VzcyA9IGNhbGxHcmFwaFFsKFxuXHRcdFx0Y21kLFxuXHRcdFx0KGVycjogYW55KSA9PiB7XG5cdFx0XHRcdGlmIChlcnIpIHtcblx0XHRcdFx0XHRsb2dnZXIuZXJyb3IoYEdyYXBoUWwgU3R1YjogRXhpdGVkIHdpdGggZXJyb3IgJHtlcnJ9YCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHQobWVzc2FnZSwgZXJyb3IpID0+IHtcblx0XHRcdFx0aWYgKCFlcnJvcikge1xuXHRcdFx0XHRcdGlmIChtZXNzYWdlLmluY2x1ZGVzKFwiU3RhcnRpbmcgdGhlIHNlcnZlciBvbiBwb3J0XCIpKSB7XG5cdFx0XHRcdFx0XHRsb2dnZXIuaW5mbyhgR3JhcGhRbCBTdHViOiAke21lc3NhZ2V9YCk7XG5cdFx0XHRcdFx0XHRjb25zdCBzdHViSW5mbyA9IG1lc3NhZ2Uuc3BsaXQoXCJwb3J0IFwiKVsxXTtcblx0XHRcdFx0XHRcdGlmIChzdHViSW5mby5sZW5ndGggPCAyKVxuXHRcdFx0XHRcdFx0XHRyZWplY3QoXCJDYW5ub3QgZGV0ZXJtaW5lIHBvcnQgZnJvbSBncmFwaHFsIHN0dWIgb3V0cHV0XCIpO1xuXHRcdFx0XHRcdFx0ZWxzZSByZXBvcnRlZFBvcnQgPSBOdW1iZXIucGFyc2VJbnQoc3R1YkluZm9bMV0udHJpbSgpKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoXCJBZGRyZXNzIGFscmVhZHkgaW4gdXNlXCIpKSB7XG5cdFx0XHRcdFx0XHRsb2dnZXIuZXJyb3IoYEdyYXBoUWwgU3R1YjogJHttZXNzYWdlfWApO1xuXHRcdFx0XHRcdFx0cmVqZWN0KG1lc3NhZ2UpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAobWVzc2FnZS5pbmNsdWRlcyhcIlN0dWIgc2VydmVyIGlzIHJ1bm5pbmdcIikpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGhvc3QgPSBtZXNzYWdlLnNwbGl0KFwib24gXCIpWzFdLnNwbGl0KFwiOlwiKVswXS50cmltKCk7XG5cdFx0XHRcdFx0XHRpZiAocG9ydCkge1xuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKG5ldyBHcmFwaFFsU3R1Yihob3N0LCByZXBvcnRlZFBvcnQsIGphdmFQcm9jZXNzLCBkYXRhKSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRyZWplY3QoXG5cdFx0XHRcdFx0XHRcdFx0XCJObyBwb3J0IG9yIGhvc3QgaW5mb3JtYXRpb24gYXZhaWxhYmxlLCBidXQgZ3JhcGhxbCBzdHViIHNlcnZlciBpcyBydW5uaW5nXCIsXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGxvZ2dlci5kZWJ1ZyhgR3JhcGhRbCBTdHViOiAke21lc3NhZ2V9YCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGxvZ2dlci5lcnJvcihgR3JhcGhRbCBTdHViOiAke21lc3NhZ2V9YCk7XG5cdFx0XHRcdFx0cmVqZWN0KG1lc3NhZ2UpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdCk7XG5cdH0pO1xufTtcblxuY29uc3Qgc3RvcEdyYXBoUWxTdHViID0gYXN5bmMgKGdyYXBoUWxTdHViOiBHcmFwaFFsU3R1YikgPT4ge1xuXHRsb2dnZXIuZGVidWcoXG5cdFx0YEdyYXBoUWwgU3R1YjogU3RvcHBpbmcgc2VydmVyIGF0ICR7Z3JhcGhRbFN0dWIuaG9zdH06JHtncmFwaFFsU3R1Yi5wb3J0fWAsXG5cdCk7XG5cdGNvbnN0IGphdmFQcm9jZXNzID0gZ3JhcGhRbFN0dWIucHJvY2Vzcztcblx0amF2YVByb2Nlc3Muc3Rkb3V0Py5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcblx0amF2YVByb2Nlc3Muc3RkZXJyPy5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcblx0amF2YVByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzKFwiY2xvc2VcIik7XG5cdGxvZ2dlci5kZWJ1ZyhcIlRyeWluZyB0byBzdG9wIHN0dWIgcHJvY2VzcyBncmFjZWZ1bGx5IC4uLlwiKTtcblx0dHJ5IHtcblx0XHRhd2FpdCBncmFjZWZ1bFNodXRkb3duKGphdmFQcm9jZXNzKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdHRlcm1pbmF0ZShqYXZhUHJvY2Vzcy5waWQhKTtcblx0fVxuXHRsb2dnZXIuaW5mbyhcblx0XHRgR3JhcGhRbCBTdHViOiBTdG9wcGVkIHNlcnZlciBhdCAke2dyYXBoUWxTdHViLmhvc3R9OiR7Z3JhcGhRbFN0dWIucG9ydH1gLFxuXHQpO1xufTtcblxuZXhwb3J0IHsgc3RhcnRHcmFwaFFsU3R1Yiwgc3RvcEdyYXBoUWxTdHViIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGNBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFVBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUFrQyxTQUFBRCx1QkFBQUssR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLGdCQUFBQSxHQUFBO0FBQUEsU0FBQUUsUUFBQUMsQ0FBQSxzQ0FBQUQsT0FBQSx3QkFBQUUsTUFBQSx1QkFBQUEsTUFBQSxDQUFBQyxRQUFBLGFBQUFGLENBQUEsa0JBQUFBLENBQUEsZ0JBQUFBLENBQUEsV0FBQUEsQ0FBQSx5QkFBQUMsTUFBQSxJQUFBRCxDQUFBLENBQUFHLFdBQUEsS0FBQUYsTUFBQSxJQUFBRCxDQUFBLEtBQUFDLE1BQUEsQ0FBQUcsU0FBQSxxQkFBQUosQ0FBQSxLQUFBRCxPQUFBLENBQUFDLENBQUE7QUFBQSxTQUFBSyxvQkFBQSxrQkFIbEMscUpBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFDLENBQUEsU0FBQUMsQ0FBQSxFQUFBRCxDQUFBLE9BQUFFLENBQUEsR0FBQUMsTUFBQSxDQUFBTCxTQUFBLEVBQUFNLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxjQUFBLEVBQUFYLENBQUEsR0FBQVMsTUFBQSxDQUFBRyxjQUFBLGNBQUFMLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLElBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLENBQUFLLEtBQUEsS0FBQUMsQ0FBQSx3QkFBQWIsTUFBQSxHQUFBQSxNQUFBLE9BQUFjLENBQUEsR0FBQUQsQ0FBQSxDQUFBWixRQUFBLGtCQUFBYyxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsYUFBQSx1QkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLFdBQUEsOEJBQUFDLE9BQUFiLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFDLE1BQUEsQ0FBQUcsY0FBQSxDQUFBTCxDQUFBLEVBQUFELENBQUEsSUFBQU8sS0FBQSxFQUFBTCxDQUFBLEVBQUFhLFVBQUEsTUFBQUMsWUFBQSxNQUFBQyxRQUFBLFNBQUFoQixDQUFBLENBQUFELENBQUEsV0FBQWMsTUFBQSxtQkFBQWIsQ0FBQSxJQUFBYSxNQUFBLFlBQUFBLE9BQUFiLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLGdCQUFBZ0IsS0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsUUFBQUksQ0FBQSxHQUFBUixDQUFBLElBQUFBLENBQUEsQ0FBQUYsU0FBQSxZQUFBcUIsU0FBQSxHQUFBbkIsQ0FBQSxHQUFBbUIsU0FBQSxFQUFBVixDQUFBLEdBQUFOLE1BQUEsQ0FBQWlCLE1BQUEsQ0FBQVosQ0FBQSxDQUFBVixTQUFBLEdBQUFZLENBQUEsT0FBQVcsT0FBQSxDQUFBakIsQ0FBQSxnQkFBQVYsQ0FBQSxDQUFBZSxDQUFBLGVBQUFGLEtBQUEsRUFBQWUsZ0JBQUEsQ0FBQXJCLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxDQUFBLE1BQUFELENBQUEsYUFBQWMsU0FBQXRCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLG1CQUFBc0IsSUFBQSxZQUFBQyxHQUFBLEVBQUF4QixDQUFBLENBQUF5QixJQUFBLENBQUExQixDQUFBLEVBQUFFLENBQUEsY0FBQUQsQ0FBQSxhQUFBdUIsSUFBQSxXQUFBQyxHQUFBLEVBQUF4QixDQUFBLFFBQUFELENBQUEsQ0FBQWtCLElBQUEsR0FBQUEsSUFBQSxNQUFBUyxDQUFBLHFCQUFBQyxDQUFBLHFCQUFBQyxDQUFBLGdCQUFBQyxDQUFBLGdCQUFBQyxDQUFBLGdCQUFBWixVQUFBLGNBQUFhLGtCQUFBLGNBQUFDLDJCQUFBLFNBQUFDLENBQUEsT0FBQXBCLE1BQUEsQ0FBQW9CLENBQUEsRUFBQXpCLENBQUEscUNBQUEwQixDQUFBLEdBQUFoQyxNQUFBLENBQUFpQyxjQUFBLEVBQUFDLENBQUEsR0FBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFBLENBQUEsQ0FBQUcsTUFBQSxRQUFBRCxDQUFBLElBQUFBLENBQUEsS0FBQW5DLENBQUEsSUFBQUUsQ0FBQSxDQUFBc0IsSUFBQSxDQUFBVyxDQUFBLEVBQUE1QixDQUFBLE1BQUF5QixDQUFBLEdBQUFHLENBQUEsT0FBQUUsQ0FBQSxHQUFBTiwwQkFBQSxDQUFBbkMsU0FBQSxHQUFBcUIsU0FBQSxDQUFBckIsU0FBQSxHQUFBSyxNQUFBLENBQUFpQixNQUFBLENBQUFjLENBQUEsWUFBQU0sc0JBQUF2QyxDQUFBLGdDQUFBd0MsT0FBQSxXQUFBekMsQ0FBQSxJQUFBYyxNQUFBLENBQUFiLENBQUEsRUFBQUQsQ0FBQSxZQUFBQyxDQUFBLGdCQUFBeUMsT0FBQSxDQUFBMUMsQ0FBQSxFQUFBQyxDQUFBLHNCQUFBMEMsY0FBQTFDLENBQUEsRUFBQUQsQ0FBQSxhQUFBNEMsT0FBQTFDLENBQUEsRUFBQVIsQ0FBQSxFQUFBYyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBYSxRQUFBLENBQUF0QixDQUFBLENBQUFDLENBQUEsR0FBQUQsQ0FBQSxFQUFBUCxDQUFBLG1CQUFBZ0IsQ0FBQSxDQUFBYyxJQUFBLFFBQUFaLENBQUEsR0FBQUYsQ0FBQSxDQUFBZSxHQUFBLEVBQUFFLENBQUEsR0FBQWYsQ0FBQSxDQUFBTCxLQUFBLFNBQUFvQixDQUFBLGdCQUFBbEMsT0FBQSxDQUFBa0MsQ0FBQSxLQUFBdkIsQ0FBQSxDQUFBc0IsSUFBQSxDQUFBQyxDQUFBLGVBQUEzQixDQUFBLENBQUE2QyxPQUFBLENBQUFsQixDQUFBLENBQUFtQixPQUFBLEVBQUFDLElBQUEsV0FBQTlDLENBQUEsSUFBQTJDLE1BQUEsU0FBQTNDLENBQUEsRUFBQU8sQ0FBQSxFQUFBQyxDQUFBLGdCQUFBUixDQUFBLElBQUEyQyxNQUFBLFVBQUEzQyxDQUFBLEVBQUFPLENBQUEsRUFBQUMsQ0FBQSxRQUFBVCxDQUFBLENBQUE2QyxPQUFBLENBQUFsQixDQUFBLEVBQUFvQixJQUFBLFdBQUE5QyxDQUFBLElBQUFXLENBQUEsQ0FBQUwsS0FBQSxHQUFBTixDQUFBLEVBQUFPLENBQUEsQ0FBQUksQ0FBQSxnQkFBQVgsQ0FBQSxXQUFBMkMsTUFBQSxVQUFBM0MsQ0FBQSxFQUFBTyxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxDQUFBQyxDQUFBLENBQUFlLEdBQUEsU0FBQXZCLENBQUEsRUFBQVIsQ0FBQSxvQkFBQWEsS0FBQSxXQUFBQSxNQUFBTixDQUFBLEVBQUFHLENBQUEsYUFBQTRDLDJCQUFBLGVBQUFoRCxDQUFBLFdBQUFBLENBQUEsRUFBQUUsQ0FBQSxJQUFBMEMsTUFBQSxDQUFBM0MsQ0FBQSxFQUFBRyxDQUFBLEVBQUFKLENBQUEsRUFBQUUsQ0FBQSxnQkFBQUEsQ0FBQSxHQUFBQSxDQUFBLEdBQUFBLENBQUEsQ0FBQTZDLElBQUEsQ0FBQUMsMEJBQUEsRUFBQUEsMEJBQUEsSUFBQUEsMEJBQUEscUJBQUExQixpQkFBQXRCLENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLFFBQUFWLENBQUEsR0FBQWlDLENBQUEsbUJBQUFuQixDQUFBLEVBQUFDLENBQUEsUUFBQWYsQ0FBQSxLQUFBbUMsQ0FBQSxZQUFBb0IsS0FBQSxzQ0FBQXZELENBQUEsS0FBQW9DLENBQUEsb0JBQUF0QixDQUFBLFFBQUFDLENBQUEsV0FBQUYsS0FBQSxFQUFBTixDQUFBLEVBQUFpRCxJQUFBLGVBQUE5QyxDQUFBLENBQUErQyxNQUFBLEdBQUEzQyxDQUFBLEVBQUFKLENBQUEsQ0FBQXFCLEdBQUEsR0FBQWhCLENBQUEsVUFBQUMsQ0FBQSxHQUFBTixDQUFBLENBQUFnRCxRQUFBLE1BQUExQyxDQUFBLFFBQUFFLENBQUEsR0FBQXlDLG1CQUFBLENBQUEzQyxDQUFBLEVBQUFOLENBQUEsT0FBQVEsQ0FBQSxRQUFBQSxDQUFBLEtBQUFtQixDQUFBLG1CQUFBbkIsQ0FBQSxxQkFBQVIsQ0FBQSxDQUFBK0MsTUFBQSxFQUFBL0MsQ0FBQSxDQUFBa0QsSUFBQSxHQUFBbEQsQ0FBQSxDQUFBbUQsS0FBQSxHQUFBbkQsQ0FBQSxDQUFBcUIsR0FBQSxzQkFBQXJCLENBQUEsQ0FBQStDLE1BQUEsUUFBQXpELENBQUEsS0FBQWlDLENBQUEsUUFBQWpDLENBQUEsR0FBQW9DLENBQUEsRUFBQTFCLENBQUEsQ0FBQXFCLEdBQUEsRUFBQXJCLENBQUEsQ0FBQW9ELGlCQUFBLENBQUFwRCxDQUFBLENBQUFxQixHQUFBLHVCQUFBckIsQ0FBQSxDQUFBK0MsTUFBQSxJQUFBL0MsQ0FBQSxDQUFBcUQsTUFBQSxXQUFBckQsQ0FBQSxDQUFBcUIsR0FBQSxHQUFBL0IsQ0FBQSxHQUFBbUMsQ0FBQSxNQUFBSyxDQUFBLEdBQUFYLFFBQUEsQ0FBQXZCLENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLG9CQUFBOEIsQ0FBQSxDQUFBVixJQUFBLFFBQUE5QixDQUFBLEdBQUFVLENBQUEsQ0FBQThDLElBQUEsR0FBQXBCLENBQUEsR0FBQUYsQ0FBQSxFQUFBTSxDQUFBLENBQUFULEdBQUEsS0FBQU0sQ0FBQSxxQkFBQXhCLEtBQUEsRUFBQTJCLENBQUEsQ0FBQVQsR0FBQSxFQUFBeUIsSUFBQSxFQUFBOUMsQ0FBQSxDQUFBOEMsSUFBQSxrQkFBQWhCLENBQUEsQ0FBQVYsSUFBQSxLQUFBOUIsQ0FBQSxHQUFBb0MsQ0FBQSxFQUFBMUIsQ0FBQSxDQUFBK0MsTUFBQSxZQUFBL0MsQ0FBQSxDQUFBcUIsR0FBQSxHQUFBUyxDQUFBLENBQUFULEdBQUEsbUJBQUE0QixvQkFBQXJELENBQUEsRUFBQUUsQ0FBQSxRQUFBRSxDQUFBLEdBQUFGLENBQUEsQ0FBQWlELE1BQUEsRUFBQXpELENBQUEsR0FBQU0sQ0FBQSxDQUFBSixRQUFBLENBQUFRLENBQUEsT0FBQVYsQ0FBQSxLQUFBTyxDQUFBLFNBQUFDLENBQUEsQ0FBQWtELFFBQUEscUJBQUFoRCxDQUFBLElBQUFKLENBQUEsQ0FBQUosUUFBQSxlQUFBTSxDQUFBLENBQUFpRCxNQUFBLGFBQUFqRCxDQUFBLENBQUF1QixHQUFBLEdBQUF4QixDQUFBLEVBQUFvRCxtQkFBQSxDQUFBckQsQ0FBQSxFQUFBRSxDQUFBLGVBQUFBLENBQUEsQ0FBQWlELE1BQUEsa0JBQUEvQyxDQUFBLEtBQUFGLENBQUEsQ0FBQWlELE1BQUEsWUFBQWpELENBQUEsQ0FBQXVCLEdBQUEsT0FBQWlDLFNBQUEsdUNBQUF0RCxDQUFBLGlCQUFBMkIsQ0FBQSxNQUFBdkIsQ0FBQSxHQUFBZSxRQUFBLENBQUE3QixDQUFBLEVBQUFNLENBQUEsQ0FBQUosUUFBQSxFQUFBTSxDQUFBLENBQUF1QixHQUFBLG1CQUFBakIsQ0FBQSxDQUFBZ0IsSUFBQSxTQUFBdEIsQ0FBQSxDQUFBaUQsTUFBQSxZQUFBakQsQ0FBQSxDQUFBdUIsR0FBQSxHQUFBakIsQ0FBQSxDQUFBaUIsR0FBQSxFQUFBdkIsQ0FBQSxDQUFBa0QsUUFBQSxTQUFBckIsQ0FBQSxNQUFBdEIsQ0FBQSxHQUFBRCxDQUFBLENBQUFpQixHQUFBLFNBQUFoQixDQUFBLEdBQUFBLENBQUEsQ0FBQXlDLElBQUEsSUFBQWhELENBQUEsQ0FBQUYsQ0FBQSxDQUFBMkQsVUFBQSxJQUFBbEQsQ0FBQSxDQUFBRixLQUFBLEVBQUFMLENBQUEsQ0FBQTBELElBQUEsR0FBQTVELENBQUEsQ0FBQTZELE9BQUEsZUFBQTNELENBQUEsQ0FBQWlELE1BQUEsS0FBQWpELENBQUEsQ0FBQWlELE1BQUEsV0FBQWpELENBQUEsQ0FBQXVCLEdBQUEsR0FBQXhCLENBQUEsR0FBQUMsQ0FBQSxDQUFBa0QsUUFBQSxTQUFBckIsQ0FBQSxJQUFBdEIsQ0FBQSxJQUFBUCxDQUFBLENBQUFpRCxNQUFBLFlBQUFqRCxDQUFBLENBQUF1QixHQUFBLE9BQUFpQyxTQUFBLHNDQUFBeEQsQ0FBQSxDQUFBa0QsUUFBQSxTQUFBckIsQ0FBQSxjQUFBK0IsYUFBQTdELENBQUEsUUFBQUQsQ0FBQSxLQUFBK0QsTUFBQSxFQUFBOUQsQ0FBQSxZQUFBQSxDQUFBLEtBQUFELENBQUEsQ0FBQWdFLFFBQUEsR0FBQS9ELENBQUEsV0FBQUEsQ0FBQSxLQUFBRCxDQUFBLENBQUFpRSxVQUFBLEdBQUFoRSxDQUFBLEtBQUFELENBQUEsQ0FBQWtFLFFBQUEsR0FBQWpFLENBQUEsV0FBQWtFLFVBQUEsQ0FBQUMsSUFBQSxDQUFBcEUsQ0FBQSxjQUFBcUUsY0FBQXBFLENBQUEsUUFBQUQsQ0FBQSxHQUFBQyxDQUFBLENBQUFxRSxVQUFBLFFBQUF0RSxDQUFBLENBQUF3QixJQUFBLG9CQUFBeEIsQ0FBQSxDQUFBeUIsR0FBQSxFQUFBeEIsQ0FBQSxDQUFBcUUsVUFBQSxHQUFBdEUsQ0FBQSxhQUFBcUIsUUFBQXBCLENBQUEsU0FBQWtFLFVBQUEsTUFBQUosTUFBQSxhQUFBOUQsQ0FBQSxDQUFBd0MsT0FBQSxDQUFBcUIsWUFBQSxjQUFBUyxLQUFBLGlCQUFBakMsT0FBQXRDLENBQUEsUUFBQUEsQ0FBQSxXQUFBQSxDQUFBLFFBQUFFLENBQUEsR0FBQUYsQ0FBQSxDQUFBUyxDQUFBLE9BQUFQLENBQUEsU0FBQUEsQ0FBQSxDQUFBd0IsSUFBQSxDQUFBMUIsQ0FBQSw0QkFBQUEsQ0FBQSxDQUFBNEQsSUFBQSxTQUFBNUQsQ0FBQSxPQUFBd0UsS0FBQSxDQUFBeEUsQ0FBQSxDQUFBeUUsTUFBQSxTQUFBL0UsQ0FBQSxPQUFBYyxDQUFBLFlBQUFvRCxLQUFBLGFBQUFsRSxDQUFBLEdBQUFNLENBQUEsQ0FBQXlFLE1BQUEsT0FBQXJFLENBQUEsQ0FBQXNCLElBQUEsQ0FBQTFCLENBQUEsRUFBQU4sQ0FBQSxVQUFBa0UsSUFBQSxDQUFBckQsS0FBQSxHQUFBUCxDQUFBLENBQUFOLENBQUEsR0FBQWtFLElBQUEsQ0FBQVYsSUFBQSxPQUFBVSxJQUFBLFNBQUFBLElBQUEsQ0FBQXJELEtBQUEsR0FBQU4sQ0FBQSxFQUFBMkQsSUFBQSxDQUFBVixJQUFBLE9BQUFVLElBQUEsWUFBQXBELENBQUEsQ0FBQW9ELElBQUEsR0FBQXBELENBQUEsZ0JBQUFrRCxTQUFBLENBQUFqRSxPQUFBLENBQUFPLENBQUEsa0NBQUFnQyxpQkFBQSxDQUFBbEMsU0FBQSxHQUFBbUMsMEJBQUEsRUFBQXZDLENBQUEsQ0FBQTZDLENBQUEsbUJBQUFoQyxLQUFBLEVBQUEwQiwwQkFBQSxFQUFBakIsWUFBQSxTQUFBdEIsQ0FBQSxDQUFBdUMsMEJBQUEsbUJBQUExQixLQUFBLEVBQUF5QixpQkFBQSxFQUFBaEIsWUFBQSxTQUFBZ0IsaUJBQUEsQ0FBQTBDLFdBQUEsR0FBQTVELE1BQUEsQ0FBQW1CLDBCQUFBLEVBQUFyQixDQUFBLHdCQUFBWixDQUFBLENBQUEyRSxtQkFBQSxhQUFBMUUsQ0FBQSxRQUFBRCxDQUFBLHdCQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUosV0FBQSxXQUFBRyxDQUFBLEtBQUFBLENBQUEsS0FBQWdDLGlCQUFBLDZCQUFBaEMsQ0FBQSxDQUFBMEUsV0FBQSxJQUFBMUUsQ0FBQSxDQUFBNEUsSUFBQSxPQUFBNUUsQ0FBQSxDQUFBNkUsSUFBQSxhQUFBNUUsQ0FBQSxXQUFBRSxNQUFBLENBQUEyRSxjQUFBLEdBQUEzRSxNQUFBLENBQUEyRSxjQUFBLENBQUE3RSxDQUFBLEVBQUFnQywwQkFBQSxLQUFBaEMsQ0FBQSxDQUFBOEUsU0FBQSxHQUFBOUMsMEJBQUEsRUFBQW5CLE1BQUEsQ0FBQWIsQ0FBQSxFQUFBVyxDQUFBLHlCQUFBWCxDQUFBLENBQUFILFNBQUEsR0FBQUssTUFBQSxDQUFBaUIsTUFBQSxDQUFBbUIsQ0FBQSxHQUFBdEMsQ0FBQSxLQUFBRCxDQUFBLENBQUFnRixLQUFBLGFBQUEvRSxDQUFBLGFBQUE2QyxPQUFBLEVBQUE3QyxDQUFBLE9BQUF1QyxxQkFBQSxDQUFBRyxhQUFBLENBQUE3QyxTQUFBLEdBQUFnQixNQUFBLENBQUE2QixhQUFBLENBQUE3QyxTQUFBLEVBQUFZLENBQUEsaUNBQUFWLENBQUEsQ0FBQTJDLGFBQUEsR0FBQUEsYUFBQSxFQUFBM0MsQ0FBQSxDQUFBaUYsS0FBQSxhQUFBaEYsQ0FBQSxFQUFBQyxDQUFBLEVBQUFFLENBQUEsRUFBQVYsQ0FBQSxFQUFBYyxDQUFBLGVBQUFBLENBQUEsS0FBQUEsQ0FBQSxHQUFBMEUsT0FBQSxPQUFBekUsQ0FBQSxPQUFBa0MsYUFBQSxDQUFBekIsSUFBQSxDQUFBakIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFFLENBQUEsRUFBQVYsQ0FBQSxHQUFBYyxDQUFBLFVBQUFSLENBQUEsQ0FBQTJFLG1CQUFBLENBQUF6RSxDQUFBLElBQUFPLENBQUEsR0FBQUEsQ0FBQSxDQUFBbUQsSUFBQSxHQUFBYixJQUFBLFdBQUE5QyxDQUFBLFdBQUFBLENBQUEsQ0FBQWlELElBQUEsR0FBQWpELENBQUEsQ0FBQU0sS0FBQSxHQUFBRSxDQUFBLENBQUFtRCxJQUFBLFdBQUFwQixxQkFBQSxDQUFBRCxDQUFBLEdBQUF6QixNQUFBLENBQUF5QixDQUFBLEVBQUEzQixDQUFBLGdCQUFBRSxNQUFBLENBQUF5QixDQUFBLEVBQUE5QixDQUFBLGlDQUFBSyxNQUFBLENBQUF5QixDQUFBLDZEQUFBdkMsQ0FBQSxDQUFBbUYsSUFBQSxhQUFBbEYsQ0FBQSxRQUFBRCxDQUFBLEdBQUFHLE1BQUEsQ0FBQUYsQ0FBQSxHQUFBQyxDQUFBLGdCQUFBRSxDQUFBLElBQUFKLENBQUEsRUFBQUUsQ0FBQSxDQUFBa0UsSUFBQSxDQUFBaEUsQ0FBQSxVQUFBRixDQUFBLENBQUFrRixPQUFBLGFBQUF4QixLQUFBLFdBQUExRCxDQUFBLENBQUF1RSxNQUFBLFNBQUF4RSxDQUFBLEdBQUFDLENBQUEsQ0FBQW1GLEdBQUEsUUFBQXBGLENBQUEsSUFBQUQsQ0FBQSxTQUFBNEQsSUFBQSxDQUFBckQsS0FBQSxHQUFBTixDQUFBLEVBQUEyRCxJQUFBLENBQUFWLElBQUEsT0FBQVUsSUFBQSxXQUFBQSxJQUFBLENBQUFWLElBQUEsT0FBQVUsSUFBQSxRQUFBNUQsQ0FBQSxDQUFBc0MsTUFBQSxHQUFBQSxNQUFBLEVBQUFqQixPQUFBLENBQUF2QixTQUFBLEtBQUFELFdBQUEsRUFBQXdCLE9BQUEsRUFBQWtELEtBQUEsV0FBQUEsTUFBQXZFLENBQUEsYUFBQXNGLElBQUEsV0FBQTFCLElBQUEsV0FBQU4sSUFBQSxRQUFBQyxLQUFBLEdBQUF0RCxDQUFBLE9BQUFpRCxJQUFBLFlBQUFFLFFBQUEsY0FBQUQsTUFBQSxnQkFBQTFCLEdBQUEsR0FBQXhCLENBQUEsT0FBQWtFLFVBQUEsQ0FBQTFCLE9BQUEsQ0FBQTRCLGFBQUEsSUFBQXJFLENBQUEsV0FBQUUsQ0FBQSxrQkFBQUEsQ0FBQSxDQUFBcUYsTUFBQSxPQUFBbkYsQ0FBQSxDQUFBc0IsSUFBQSxPQUFBeEIsQ0FBQSxNQUFBc0UsS0FBQSxFQUFBdEUsQ0FBQSxDQUFBc0YsS0FBQSxjQUFBdEYsQ0FBQSxJQUFBRCxDQUFBLE1BQUF3RixJQUFBLFdBQUFBLEtBQUEsU0FBQXZDLElBQUEsV0FBQWpELENBQUEsUUFBQWtFLFVBQUEsSUFBQUcsVUFBQSxrQkFBQXJFLENBQUEsQ0FBQXVCLElBQUEsUUFBQXZCLENBQUEsQ0FBQXdCLEdBQUEsY0FBQWlFLElBQUEsS0FBQWxDLGlCQUFBLFdBQUFBLGtCQUFBeEQsQ0FBQSxhQUFBa0QsSUFBQSxRQUFBbEQsQ0FBQSxNQUFBRSxDQUFBLGtCQUFBeUYsT0FBQXZGLENBQUEsRUFBQVYsQ0FBQSxXQUFBZSxDQUFBLENBQUFlLElBQUEsWUFBQWYsQ0FBQSxDQUFBZ0IsR0FBQSxHQUFBekIsQ0FBQSxFQUFBRSxDQUFBLENBQUEwRCxJQUFBLEdBQUF4RCxDQUFBLEVBQUFWLENBQUEsS0FBQVEsQ0FBQSxDQUFBaUQsTUFBQSxXQUFBakQsQ0FBQSxDQUFBdUIsR0FBQSxHQUFBeEIsQ0FBQSxLQUFBUCxDQUFBLGFBQUFBLENBQUEsUUFBQXlFLFVBQUEsQ0FBQU0sTUFBQSxNQUFBL0UsQ0FBQSxTQUFBQSxDQUFBLFFBQUFjLENBQUEsUUFBQTJELFVBQUEsQ0FBQXpFLENBQUEsR0FBQWUsQ0FBQSxHQUFBRCxDQUFBLENBQUE4RCxVQUFBLGlCQUFBOUQsQ0FBQSxDQUFBdUQsTUFBQSxTQUFBNEIsTUFBQSxhQUFBbkYsQ0FBQSxDQUFBdUQsTUFBQSxTQUFBdUIsSUFBQSxRQUFBNUUsQ0FBQSxHQUFBTixDQUFBLENBQUFzQixJQUFBLENBQUFsQixDQUFBLGVBQUFJLENBQUEsR0FBQVIsQ0FBQSxDQUFBc0IsSUFBQSxDQUFBbEIsQ0FBQSxxQkFBQUUsQ0FBQSxJQUFBRSxDQUFBLGFBQUEwRSxJQUFBLEdBQUE5RSxDQUFBLENBQUF3RCxRQUFBLFNBQUEyQixNQUFBLENBQUFuRixDQUFBLENBQUF3RCxRQUFBLGdCQUFBc0IsSUFBQSxHQUFBOUUsQ0FBQSxDQUFBeUQsVUFBQSxTQUFBMEIsTUFBQSxDQUFBbkYsQ0FBQSxDQUFBeUQsVUFBQSxjQUFBdkQsQ0FBQSxhQUFBNEUsSUFBQSxHQUFBOUUsQ0FBQSxDQUFBd0QsUUFBQSxTQUFBMkIsTUFBQSxDQUFBbkYsQ0FBQSxDQUFBd0QsUUFBQSxxQkFBQXBELENBQUEsWUFBQXFDLEtBQUEscURBQUFxQyxJQUFBLEdBQUE5RSxDQUFBLENBQUF5RCxVQUFBLFNBQUEwQixNQUFBLENBQUFuRixDQUFBLENBQUF5RCxVQUFBLFlBQUFSLE1BQUEsV0FBQUEsT0FBQXhELENBQUEsRUFBQUQsQ0FBQSxhQUFBRSxDQUFBLFFBQUFpRSxVQUFBLENBQUFNLE1BQUEsTUFBQXZFLENBQUEsU0FBQUEsQ0FBQSxRQUFBUixDQUFBLFFBQUF5RSxVQUFBLENBQUFqRSxDQUFBLE9BQUFSLENBQUEsQ0FBQXFFLE1BQUEsU0FBQXVCLElBQUEsSUFBQWxGLENBQUEsQ0FBQXNCLElBQUEsQ0FBQWhDLENBQUEsd0JBQUE0RixJQUFBLEdBQUE1RixDQUFBLENBQUF1RSxVQUFBLFFBQUF6RCxDQUFBLEdBQUFkLENBQUEsYUFBQWMsQ0FBQSxpQkFBQVAsQ0FBQSxtQkFBQUEsQ0FBQSxLQUFBTyxDQUFBLENBQUF1RCxNQUFBLElBQUEvRCxDQUFBLElBQUFBLENBQUEsSUFBQVEsQ0FBQSxDQUFBeUQsVUFBQSxLQUFBekQsQ0FBQSxjQUFBQyxDQUFBLEdBQUFELENBQUEsR0FBQUEsQ0FBQSxDQUFBOEQsVUFBQSxjQUFBN0QsQ0FBQSxDQUFBZSxJQUFBLEdBQUF2QixDQUFBLEVBQUFRLENBQUEsQ0FBQWdCLEdBQUEsR0FBQXpCLENBQUEsRUFBQVEsQ0FBQSxTQUFBMkMsTUFBQSxnQkFBQVMsSUFBQSxHQUFBcEQsQ0FBQSxDQUFBeUQsVUFBQSxFQUFBbEMsQ0FBQSxTQUFBNkQsUUFBQSxDQUFBbkYsQ0FBQSxNQUFBbUYsUUFBQSxXQUFBQSxTQUFBM0YsQ0FBQSxFQUFBRCxDQUFBLG9CQUFBQyxDQUFBLENBQUF1QixJQUFBLFFBQUF2QixDQUFBLENBQUF3QixHQUFBLHFCQUFBeEIsQ0FBQSxDQUFBdUIsSUFBQSxtQkFBQXZCLENBQUEsQ0FBQXVCLElBQUEsUUFBQW9DLElBQUEsR0FBQTNELENBQUEsQ0FBQXdCLEdBQUEsZ0JBQUF4QixDQUFBLENBQUF1QixJQUFBLFNBQUFrRSxJQUFBLFFBQUFqRSxHQUFBLEdBQUF4QixDQUFBLENBQUF3QixHQUFBLE9BQUEwQixNQUFBLGtCQUFBUyxJQUFBLHlCQUFBM0QsQ0FBQSxDQUFBdUIsSUFBQSxJQUFBeEIsQ0FBQSxVQUFBNEQsSUFBQSxHQUFBNUQsQ0FBQSxHQUFBK0IsQ0FBQSxLQUFBOEQsTUFBQSxXQUFBQSxPQUFBNUYsQ0FBQSxhQUFBRCxDQUFBLFFBQUFtRSxVQUFBLENBQUFNLE1BQUEsTUFBQXpFLENBQUEsU0FBQUEsQ0FBQSxRQUFBRSxDQUFBLFFBQUFpRSxVQUFBLENBQUFuRSxDQUFBLE9BQUFFLENBQUEsQ0FBQStELFVBQUEsS0FBQWhFLENBQUEsY0FBQTJGLFFBQUEsQ0FBQTFGLENBQUEsQ0FBQW9FLFVBQUEsRUFBQXBFLENBQUEsQ0FBQWdFLFFBQUEsR0FBQUcsYUFBQSxDQUFBbkUsQ0FBQSxHQUFBNkIsQ0FBQSx5QkFBQStELE9BQUE3RixDQUFBLGFBQUFELENBQUEsUUFBQW1FLFVBQUEsQ0FBQU0sTUFBQSxNQUFBekUsQ0FBQSxTQUFBQSxDQUFBLFFBQUFFLENBQUEsUUFBQWlFLFVBQUEsQ0FBQW5FLENBQUEsT0FBQUUsQ0FBQSxDQUFBNkQsTUFBQSxLQUFBOUQsQ0FBQSxRQUFBRyxDQUFBLEdBQUFGLENBQUEsQ0FBQW9FLFVBQUEsa0JBQUFsRSxDQUFBLENBQUFvQixJQUFBLFFBQUE5QixDQUFBLEdBQUFVLENBQUEsQ0FBQXFCLEdBQUEsRUFBQTRDLGFBQUEsQ0FBQW5FLENBQUEsWUFBQVIsQ0FBQSxnQkFBQXVELEtBQUEsOEJBQUE4QyxhQUFBLFdBQUFBLGNBQUEvRixDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxnQkFBQWdELFFBQUEsS0FBQXhELFFBQUEsRUFBQTBDLE1BQUEsQ0FBQXRDLENBQUEsR0FBQTJELFVBQUEsRUFBQXpELENBQUEsRUFBQTJELE9BQUEsRUFBQXpELENBQUEsb0JBQUErQyxNQUFBLFVBQUExQixHQUFBLEdBQUF4QixDQUFBLEdBQUE4QixDQUFBLE9BQUEvQixDQUFBO0FBQUEsU0FBQWdHLG1CQUFBQyxHQUFBLEVBQUFwRCxPQUFBLEVBQUFxRCxNQUFBLEVBQUFDLEtBQUEsRUFBQUMsTUFBQSxFQUFBQyxHQUFBLEVBQUE1RSxHQUFBLGNBQUE2RSxJQUFBLEdBQUFMLEdBQUEsQ0FBQUksR0FBQSxFQUFBNUUsR0FBQSxPQUFBbEIsS0FBQSxHQUFBK0YsSUFBQSxDQUFBL0YsS0FBQSxXQUFBZ0csS0FBQSxJQUFBTCxNQUFBLENBQUFLLEtBQUEsaUJBQUFELElBQUEsQ0FBQXBELElBQUEsSUFBQUwsT0FBQSxDQUFBdEMsS0FBQSxZQUFBMkUsT0FBQSxDQUFBckMsT0FBQSxDQUFBdEMsS0FBQSxFQUFBd0MsSUFBQSxDQUFBb0QsS0FBQSxFQUFBQyxNQUFBO0FBQUEsU0FBQUksa0JBQUFDLEVBQUEsNkJBQUFDLElBQUEsU0FBQUMsSUFBQSxHQUFBQyxTQUFBLGFBQUExQixPQUFBLFdBQUFyQyxPQUFBLEVBQUFxRCxNQUFBLFFBQUFELEdBQUEsR0FBQVEsRUFBQSxDQUFBSSxLQUFBLENBQUFILElBQUEsRUFBQUMsSUFBQSxZQUFBUixNQUFBNUYsS0FBQSxJQUFBeUYsa0JBQUEsQ0FBQUMsR0FBQSxFQUFBcEQsT0FBQSxFQUFBcUQsTUFBQSxFQUFBQyxLQUFBLEVBQUFDLE1BQUEsVUFBQTdGLEtBQUEsY0FBQTZGLE9BQUFVLEdBQUEsSUFBQWQsa0JBQUEsQ0FBQUMsR0FBQSxFQUFBcEQsT0FBQSxFQUFBcUQsTUFBQSxFQUFBQyxLQUFBLEVBQUFDLE1BQUEsV0FBQVUsR0FBQSxLQUFBWCxLQUFBLENBQUFZLFNBQUE7QUFBQSxTQUFBQyxrQkFBQUMsTUFBQSxFQUFBQyxLQUFBLGFBQUExRyxDQUFBLE1BQUFBLENBQUEsR0FBQTBHLEtBQUEsQ0FBQXpDLE1BQUEsRUFBQWpFLENBQUEsVUFBQTJHLFVBQUEsR0FBQUQsS0FBQSxDQUFBMUcsQ0FBQSxHQUFBMkcsVUFBQSxDQUFBcEcsVUFBQSxHQUFBb0csVUFBQSxDQUFBcEcsVUFBQSxXQUFBb0csVUFBQSxDQUFBbkcsWUFBQSx3QkFBQW1HLFVBQUEsRUFBQUEsVUFBQSxDQUFBbEcsUUFBQSxTQUFBZCxNQUFBLENBQUFHLGNBQUEsQ0FBQTJHLE1BQUEsRUFBQUcsY0FBQSxDQUFBRCxVQUFBLENBQUFkLEdBQUEsR0FBQWMsVUFBQTtBQUFBLFNBQUFFLGFBQUFDLFdBQUEsRUFBQUMsVUFBQSxFQUFBQyxXQUFBLFFBQUFELFVBQUEsRUFBQVAsaUJBQUEsQ0FBQU0sV0FBQSxDQUFBeEgsU0FBQSxFQUFBeUgsVUFBQSxPQUFBQyxXQUFBLEVBQUFSLGlCQUFBLENBQUFNLFdBQUEsRUFBQUUsV0FBQSxHQUFBckgsTUFBQSxDQUFBRyxjQUFBLENBQUFnSCxXQUFBLGlCQUFBckcsUUFBQSxtQkFBQXFHLFdBQUE7QUFBQSxTQUFBRyxnQkFBQUMsUUFBQSxFQUFBSixXQUFBLFVBQUFJLFFBQUEsWUFBQUosV0FBQSxlQUFBNUQsU0FBQTtBQUFBLFNBQUFpRSxnQkFBQXBJLEdBQUEsRUFBQThHLEdBQUEsRUFBQTlGLEtBQUEsSUFBQThGLEdBQUEsR0FBQWUsY0FBQSxDQUFBZixHQUFBLE9BQUFBLEdBQUEsSUFBQTlHLEdBQUEsSUFBQVksTUFBQSxDQUFBRyxjQUFBLENBQUFmLEdBQUEsRUFBQThHLEdBQUEsSUFBQTlGLEtBQUEsRUFBQUEsS0FBQSxFQUFBUSxVQUFBLFFBQUFDLFlBQUEsUUFBQUMsUUFBQSxvQkFBQTFCLEdBQUEsQ0FBQThHLEdBQUEsSUFBQTlGLEtBQUEsV0FBQWhCLEdBQUE7QUFBQSxTQUFBNkgsZUFBQW5ILENBQUEsUUFBQU8sQ0FBQSxHQUFBb0gsWUFBQSxDQUFBM0gsQ0FBQSxnQ0FBQVIsT0FBQSxDQUFBZSxDQUFBLElBQUFBLENBQUEsR0FBQXFILE1BQUEsQ0FBQXJILENBQUE7QUFBQSxTQUFBb0gsYUFBQTNILENBQUEsRUFBQUMsQ0FBQSxvQkFBQVQsT0FBQSxDQUFBUSxDQUFBLE1BQUFBLENBQUEsU0FBQUEsQ0FBQSxNQUFBRCxDQUFBLEdBQUFDLENBQUEsQ0FBQU4sTUFBQSxDQUFBbUksV0FBQSxrQkFBQTlILENBQUEsUUFBQVEsQ0FBQSxHQUFBUixDQUFBLENBQUEwQixJQUFBLENBQUF6QixDQUFBLEVBQUFDLENBQUEsZ0NBQUFULE9BQUEsQ0FBQWUsQ0FBQSxVQUFBQSxDQUFBLFlBQUFrRCxTQUFBLHlFQUFBeEQsQ0FBQSxHQUFBMkgsTUFBQSxHQUFBRSxNQUFBLEVBQUE5SCxDQUFBO0FBQUEsSUFLYStILFdBQVcsR0FBQUMsT0FBQSxDQUFBRCxXQUFBLGdCQUFBWCxZQUFBLENBS3ZCLFNBQUFXLFlBQ0NFLElBQVksRUFDWkMsSUFBWSxFQUNaQyxPQUFxQixFQUNyQkMsSUFBYSxFQUNaO0VBQUFaLGVBQUEsT0FBQU8sV0FBQTtFQUFBTCxlQUFBO0VBQUFBLGVBQUE7RUFBQUEsZUFBQTtFQUFBQSxlQUFBO0VBQ0QsSUFBSSxDQUFDTyxJQUFJLEdBQUdBLElBQUk7RUFDaEIsSUFBSSxDQUFDQyxJQUFJLEdBQUdBLElBQUk7RUFDaEIsSUFBSSxDQUFDQyxPQUFPLEdBQUdBLE9BQU87RUFDdEIsSUFBSSxDQUFDQyxJQUFJLEdBQUdBLElBQUk7QUFDakIsQ0FBQztBQUdGLElBQU1DLGdCQUFnQixHQUFBTCxPQUFBLENBQUFLLGdCQUFBLEdBQUcsU0FBbkJBLGdCQUFnQkEsQ0FDckJKLElBQWEsRUFDYkMsSUFBYSxFQUNiRSxJQUFhLEVBRWE7RUFBQSxJQUQxQjFCLElBQXlCLEdBQUFDLFNBQUEsQ0FBQW5DLE1BQUEsUUFBQW1DLFNBQUEsUUFBQUcsU0FBQSxHQUFBSCxTQUFBLE1BQUcsRUFBRTtFQUU5QixJQUFJMkIsR0FBRyxHQUFHLFFBQVE7RUFDbEIsSUFBSUwsSUFBSSxFQUFFSyxHQUFHLGNBQUFDLE1BQUEsQ0FBY04sSUFBSSxNQUFHO0VBQ2xDLElBQUlDLElBQUksRUFBRUksR0FBRyxjQUFBQyxNQUFBLENBQWNMLElBQUksTUFBRztFQUNsQyxJQUFJRSxJQUFJLEVBQUVFLEdBQUcsY0FBQUMsTUFBQSxDQUFjSCxJQUFJLE1BQUc7RUFDbENFLEdBQUcsSUFBSTVCLElBQUksQ0FBQzhCLElBQUksQ0FBQyxHQUFHLENBQUM7RUFFckJDLGtCQUFNLENBQUNwQyxJQUFJLENBQUMsK0JBQStCLENBQUM7RUFDNUNvQyxrQkFBTSxDQUFDQyxLQUFLLDhCQUFBSCxNQUFBLENBQTZCRCxHQUFHLE9BQUcsQ0FBQztFQUVoRCxPQUFPLElBQUlyRCxPQUFPLENBQUMsVUFBQ3JDLE9BQU8sRUFBRXFELE1BQU0sRUFBSztJQUN2QyxJQUFJMEMsWUFBb0I7SUFDeEIsSUFBTUMsV0FBVyxHQUFHLElBQUFDLG1CQUFXLEVBQzlCUCxHQUFHLEVBQ0gsVUFBQ3pCLEdBQVEsRUFBSztNQUNiLElBQUlBLEdBQUcsRUFBRTtRQUNSNEIsa0JBQU0sQ0FBQ25DLEtBQUssb0NBQUFpQyxNQUFBLENBQW9DMUIsR0FBRyxDQUFFLENBQUM7TUFDdkQ7SUFDRCxDQUFDLEVBQ0QsVUFBQ2lDLE9BQU8sRUFBRXhDLEtBQUssRUFBSztNQUNuQixJQUFJLENBQUNBLEtBQUssRUFBRTtRQUNYLElBQUl3QyxPQUFPLENBQUNDLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxFQUFFO1VBQ3BETixrQkFBTSxDQUFDcEMsSUFBSSxrQkFBQWtDLE1BQUEsQ0FBa0JPLE9BQU8sQ0FBRSxDQUFDO1VBQ3ZDLElBQU1FLFFBQVEsR0FBR0YsT0FBTyxDQUFDRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1VBQzFDLElBQUlELFFBQVEsQ0FBQ3hFLE1BQU0sR0FBRyxDQUFDLEVBQ3RCeUIsTUFBTSxDQUFDLGdEQUFnRCxDQUFDLENBQUMsS0FDckQwQyxZQUFZLEdBQUdiLE1BQU0sQ0FBQ29CLFFBQVEsQ0FBQ0YsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hELENBQUMsTUFBTSxJQUFJTCxPQUFPLENBQUNDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFO1VBQ3RETixrQkFBTSxDQUFDbkMsS0FBSyxrQkFBQWlDLE1BQUEsQ0FBa0JPLE9BQU8sQ0FBRSxDQUFDO1VBQ3hDN0MsTUFBTSxDQUFDNkMsT0FBTyxDQUFDO1FBQ2hCLENBQUMsTUFBTSxJQUFJQSxPQUFPLENBQUNDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFO1VBQ3RELElBQU1kLEtBQUksR0FBR2EsT0FBTyxDQUFDRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNBLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0UsSUFBSSxDQUFDLENBQUM7VUFDekQsSUFBSWpCLElBQUksRUFBRTtZQUNUdEYsT0FBTyxDQUFDLElBQUltRixXQUFXLENBQUNFLEtBQUksRUFBRVUsWUFBWSxFQUFFQyxXQUFXLEVBQUVSLElBQUksQ0FBQyxDQUFDO1VBQ2hFLENBQUMsTUFBTTtZQUNObkMsTUFBTSxDQUNMLDJFQUNELENBQUM7VUFDRjtRQUNELENBQUMsTUFBTTtVQUNOd0Msa0JBQU0sQ0FBQ0MsS0FBSyxrQkFBQUgsTUFBQSxDQUFrQk8sT0FBTyxDQUFFLENBQUM7UUFDekM7TUFDRCxDQUFDLE1BQU07UUFDTkwsa0JBQU0sQ0FBQ25DLEtBQUssa0JBQUFpQyxNQUFBLENBQWtCTyxPQUFPLENBQUUsQ0FBQztRQUN4QzdDLE1BQU0sQ0FBQzZDLE9BQU8sQ0FBQztNQUNoQjtJQUNELENBQ0QsQ0FBQztFQUNGLENBQUMsQ0FBQztBQUNILENBQUM7QUFFRCxJQUFNTSxlQUFlLEdBQUFwQixPQUFBLENBQUFvQixlQUFBO0VBQUEsSUFBQUMsSUFBQSxHQUFBOUMsaUJBQUEsZUFBQXpHLG1CQUFBLEdBQUE4RSxJQUFBLENBQUcsU0FBQTBFLFFBQU9DLFdBQXdCO0lBQUEsSUFBQUMsbUJBQUEsRUFBQUMsbUJBQUE7SUFBQSxJQUFBYixXQUFBO0lBQUEsT0FBQTlJLG1CQUFBLEdBQUFtQixJQUFBLFVBQUF5SSxTQUFBQyxRQUFBO01BQUEsa0JBQUFBLFFBQUEsQ0FBQXRFLElBQUEsR0FBQXNFLFFBQUEsQ0FBQWhHLElBQUE7UUFBQTtVQUN0RDhFLGtCQUFNLENBQUNDLEtBQUsscUNBQUFILE1BQUEsQ0FDeUJnQixXQUFXLENBQUN0QixJQUFJLE9BQUFNLE1BQUEsQ0FBSWdCLFdBQVcsQ0FBQ3JCLElBQUksQ0FDekUsQ0FBQztVQUNLVSxXQUFXLEdBQUdXLFdBQVcsQ0FBQ3BCLE9BQU87VUFDdkMsQ0FBQXFCLG1CQUFBLEdBQUFaLFdBQVcsQ0FBQ2dCLE1BQU0sY0FBQUosbUJBQUEsZUFBbEJBLG1CQUFBLENBQW9CSyxrQkFBa0IsQ0FBQyxDQUFDO1VBQ3hDLENBQUFKLG1CQUFBLEdBQUFiLFdBQVcsQ0FBQ2tCLE1BQU0sY0FBQUwsbUJBQUEsZUFBbEJBLG1CQUFBLENBQW9CSSxrQkFBa0IsQ0FBQyxDQUFDO1VBQ3hDakIsV0FBVyxDQUFDaUIsa0JBQWtCLENBQUMsT0FBTyxDQUFDO1VBQ3ZDcEIsa0JBQU0sQ0FBQ0MsS0FBSyxDQUFDLDRDQUE0QyxDQUFDO1VBQUNpQixRQUFBLENBQUF0RSxJQUFBO1VBQUFzRSxRQUFBLENBQUFoRyxJQUFBO1VBQUEsT0FFcEQsSUFBQW9HLCtCQUFnQixFQUFDbkIsV0FBVyxDQUFDO1FBQUE7VUFBQWUsUUFBQSxDQUFBaEcsSUFBQTtVQUFBO1FBQUE7VUFBQWdHLFFBQUEsQ0FBQXRFLElBQUE7VUFBQXNFLFFBQUEsQ0FBQUssRUFBQSxHQUFBTCxRQUFBO1VBRW5DLElBQUFNLHFCQUFTLEVBQUNyQixXQUFXLENBQUNzQixHQUFJLENBQUM7UUFBQztVQUU3QnpCLGtCQUFNLENBQUNwQyxJQUFJLG9DQUFBa0MsTUFBQSxDQUN5QmdCLFdBQVcsQ0FBQ3RCLElBQUksT0FBQU0sTUFBQSxDQUFJZ0IsV0FBVyxDQUFDckIsSUFBSSxDQUN4RSxDQUFDO1FBQUM7UUFBQTtVQUFBLE9BQUF5QixRQUFBLENBQUFuRSxJQUFBO01BQUE7SUFBQSxHQUFBOEQsT0FBQTtFQUFBLENBQ0Y7RUFBQSxnQkFqQktGLGVBQWVBLENBQUFlLEVBQUE7SUFBQSxPQUFBZCxJQUFBLENBQUF6QyxLQUFBLE9BQUFELFNBQUE7RUFBQTtBQUFBLEdBaUJwQiJ9
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export { startStub, startStub as startHttpStub, stopStub, stopStub as stopHttpStub, test, testWithApiCoverage, setExpectations, setExpectations as setHttpStubExpectations, setExpectationJson, setExpectationJson as setHttpStubExpectationJson, printJarVersion, showTestResults, } from
|
|
2
|
-
export { startKafkaStub, startKafkaStub as startKafkaMock, stopKafkaStub, stopKafkaStub as stopKafkaMock, verifyKafkaStubMessage, verifyKafkaStubMessage as verifyKafkaMockMessage, verifyKafkaStub, verifyKafkaStub as verifyKafkaMock, setKafkaStubExpectations, setKafkaStubExpectations as setKafkaMockExpectations, } from
|
|
1
|
+
export { startStub, startStub as startHttpStub, stopStub, stopStub as stopHttpStub, test, testWithApiCoverage, setExpectations, setExpectations as setHttpStubExpectations, setExpectationJson, setExpectationJson as setHttpStubExpectationJson, printJarVersion, showTestResults, } from "./core";
|
|
2
|
+
export { startKafkaStub, startKafkaStub as startKafkaMock, stopKafkaStub, stopKafkaStub as stopKafkaMock, verifyKafkaStubMessage, verifyKafkaStubMessage as verifyKafkaMockMessage, verifyKafkaStub, verifyKafkaStub as verifyKafkaMock, setKafkaStubExpectations, setKafkaStubExpectations as setKafkaMockExpectations, } from "./kafka";
|
|
3
|
+
export { startGraphQlStub, stopGraphQlStub, } from "./graphql";
|
package/dist/index.js
CHANGED
|
@@ -51,6 +51,12 @@ Object.defineProperty(exports, "showTestResults", {
|
|
|
51
51
|
return _core.showTestResults;
|
|
52
52
|
}
|
|
53
53
|
});
|
|
54
|
+
Object.defineProperty(exports, "startGraphQlStub", {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
get: function get() {
|
|
57
|
+
return _graphql.startGraphQlStub;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
54
60
|
Object.defineProperty(exports, "startHttpStub", {
|
|
55
61
|
enumerable: true,
|
|
56
62
|
get: function get() {
|
|
@@ -75,6 +81,12 @@ Object.defineProperty(exports, "startStub", {
|
|
|
75
81
|
return _core.startStub;
|
|
76
82
|
}
|
|
77
83
|
});
|
|
84
|
+
Object.defineProperty(exports, "stopGraphQlStub", {
|
|
85
|
+
enumerable: true,
|
|
86
|
+
get: function get() {
|
|
87
|
+
return _graphql.stopGraphQlStub;
|
|
88
|
+
}
|
|
89
|
+
});
|
|
78
90
|
Object.defineProperty(exports, "stopHttpStub", {
|
|
79
91
|
enumerable: true,
|
|
80
92
|
get: function get() {
|
|
@@ -137,4 +149,5 @@ Object.defineProperty(exports, "verifyKafkaStubMessage", {
|
|
|
137
149
|
});
|
|
138
150
|
var _core = require("./core");
|
|
139
151
|
var _kafka = require("./kafka");
|
|
140
|
-
|
|
152
|
+
var _graphql = require("./graphql");
|
|
153
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfa2Fma2EiLCJfZ3JhcGhxbCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuXHRzdGFydFN0dWIsXG5cdHN0YXJ0U3R1YiBhcyBzdGFydEh0dHBTdHViLFxuXHRzdG9wU3R1Yixcblx0c3RvcFN0dWIgYXMgc3RvcEh0dHBTdHViLFxuXHR0ZXN0LFxuXHR0ZXN0V2l0aEFwaUNvdmVyYWdlLFxuXHRzZXRFeHBlY3RhdGlvbnMsXG5cdHNldEV4cGVjdGF0aW9ucyBhcyBzZXRIdHRwU3R1YkV4cGVjdGF0aW9ucyxcblx0c2V0RXhwZWN0YXRpb25Kc29uLFxuXHRzZXRFeHBlY3RhdGlvbkpzb24gYXMgc2V0SHR0cFN0dWJFeHBlY3RhdGlvbkpzb24sXG5cdHByaW50SmFyVmVyc2lvbixcblx0c2hvd1Rlc3RSZXN1bHRzLFxufSBmcm9tIFwiLi9jb3JlXCI7XG5leHBvcnQge1xuXHRzdGFydEthZmthU3R1Yixcblx0c3RhcnRLYWZrYVN0dWIgYXMgc3RhcnRLYWZrYU1vY2ssXG5cdHN0b3BLYWZrYVN0dWIsXG5cdHN0b3BLYWZrYVN0dWIgYXMgc3RvcEthZmthTW9jayxcblx0dmVyaWZ5S2Fma2FTdHViTWVzc2FnZSxcblx0dmVyaWZ5S2Fma2FTdHViTWVzc2FnZSBhcyB2ZXJpZnlLYWZrYU1vY2tNZXNzYWdlLFxuXHR2ZXJpZnlLYWZrYVN0dWIsXG5cdHZlcmlmeUthZmthU3R1YiBhcyB2ZXJpZnlLYWZrYU1vY2ssXG5cdHNldEthZmthU3R1YkV4cGVjdGF0aW9ucyxcblx0c2V0S2Fma2FTdHViRXhwZWN0YXRpb25zIGFzIHNldEthZmthTW9ja0V4cGVjdGF0aW9ucyxcbn0gZnJvbSBcIi4va2Fma2FcIjtcbmV4cG9ydCB7XG5cdHN0YXJ0R3JhcGhRbFN0dWIsXG5cdHN0b3BHcmFwaFFsU3R1Yixcbn0gZnJvbSBcIi4vZ3JhcGhxbFwiO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsT0FBQTtBQWNBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQVlBLElBQUFFLFFBQUEsR0FBQUYsT0FBQSJ9
|
package/package.json
CHANGED
package/specmatic.jar
CHANGED
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import callSpecmaticCli from '../command.line';
|
|
3
|
-
import { specmaticCoreJarName, specmaticKafkaJarName } from '../../config';
|
|
3
|
+
import { specmaticCoreJarName, specmaticGraphQlJarName, specmaticKafkaJarName } from '../../config';
|
|
4
4
|
import fs from 'fs';
|
|
5
5
|
import { ChildProcess, spawn } from 'child_process';
|
|
6
6
|
import { mock as jestMock, mockReset } from 'jest-mock-extended';
|
|
@@ -38,3 +38,15 @@ test('pass kafka related calls to the kafka jar', async () => {
|
|
|
38
38
|
expect(spawn.mock.calls[0][1][1]).toBe(`"${path.resolve(specmaticKafkaJarPath)}"`);
|
|
39
39
|
expect(spawn.mock.calls[0][1][2]).toBe(testArgs.slice(3).join(" "));
|
|
40
40
|
});
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
test('pass graphql related calls to the graphql jar', async () => {
|
|
44
|
+
spawn.mockReturnValue(javaProcessMock);
|
|
45
|
+
|
|
46
|
+
jest.spyOn(fs, 'existsSync').mockReturnValue(true);
|
|
47
|
+
const testArgs = ['node', 'index.js', 'graphql', '--host', 'localhost', '--port', '8000'];
|
|
48
|
+
callSpecmaticCli(testArgs);
|
|
49
|
+
const specmaticGraphQlJarPath = path.resolve(__dirname, '..', '..', '..', '..', 'specmatic-beta', 'graphql', specmaticGraphQlJarName);
|
|
50
|
+
expect(spawn.mock.calls[0][1][1]).toBe(`"${path.resolve(specmaticGraphQlJarPath)}"`);
|
|
51
|
+
expect(spawn.mock.calls[0][1][2]).toBe(testArgs.slice(3).join(" "));
|
|
52
|
+
})
|
package/src/bin/command.line.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import logger from '../common/logger'
|
|
2
|
-
import { callKafka, callCore } from '../common/runner'
|
|
2
|
+
import { callKafka, callCore, callGraphQl } from '../common/runner'
|
|
3
3
|
|
|
4
4
|
const callSpecmaticCli = (args?: string[]) => {
|
|
5
5
|
args = args || process.argv
|
|
@@ -24,12 +24,30 @@ const callSpecmaticCli = (args?: string[]) => {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
function getJarFunction(args: string[]) {
|
|
27
|
-
|
|
27
|
+
if(args.length >= 3) {
|
|
28
|
+
switch (args[2]) {
|
|
29
|
+
case 'kafka':
|
|
30
|
+
return callKafka
|
|
31
|
+
case 'graphql':
|
|
32
|
+
return callGraphQl
|
|
33
|
+
default:
|
|
34
|
+
return callCore
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return callCore
|
|
28
38
|
}
|
|
29
39
|
|
|
30
40
|
function extractArgsForJar(args: string[]) {
|
|
31
|
-
|
|
32
|
-
|
|
41
|
+
if(args.length >= 3) {
|
|
42
|
+
switch (args[2]) {
|
|
43
|
+
case 'kafka':
|
|
44
|
+
case 'graphql':
|
|
45
|
+
return args.slice(3).join(' ')
|
|
46
|
+
default:
|
|
47
|
+
return args.slice(2).join(' ')
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return args.slice(2).join(' ')
|
|
33
51
|
}
|
|
34
52
|
|
|
35
53
|
export default callSpecmaticCli
|
package/src/common/runner.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import execSh from 'exec-sh';
|
|
2
2
|
import path from 'path';
|
|
3
|
-
import { specmaticCoreJarName, specmaticKafkaJarName } from '../config';
|
|
3
|
+
import { specmaticCoreJarName, specmaticKafkaJarName, specmaticGraphQlJarName } from '../config';
|
|
4
4
|
import logger from '../common/logger';
|
|
5
5
|
import { ChildProcess, spawn, SpawnOptions } from 'child_process';
|
|
6
6
|
|
|
@@ -18,6 +18,13 @@ const callKafka = (args: string, done: (error: any) => void, onOutput: (message:
|
|
|
18
18
|
return callJar(specmaticJarPath, args, done, onOutput);
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
+
const callGraphQl = (args: string, done: (error: any) => void, onOutput: (message: string, error: boolean) => void): ChildProcess => {
|
|
22
|
+
const rootPath = path.resolve(__dirname, '..', '..', '..', 'specmatic-beta', 'graphql');
|
|
23
|
+
const specmaticJarPath = path.resolve(rootPath, specmaticGraphQlJarName);
|
|
24
|
+
logger.debug(`CLI: Specmatic jar path: ${specmaticJarPath}`);
|
|
25
|
+
return callJar(specmaticJarPath, args, done, onOutput);
|
|
26
|
+
}
|
|
27
|
+
|
|
21
28
|
function callJar(jarPath: string, args: string, done: (error: any) => void, onOutput: (message: string, error: boolean) => void) {
|
|
22
29
|
let argsList = [];
|
|
23
30
|
if (process.env['endpointsAPI']) {
|
|
@@ -41,4 +48,4 @@ function callJar(jarPath: string, args: string, done: (error: any) => void, onOu
|
|
|
41
48
|
return javaProcess;
|
|
42
49
|
}
|
|
43
50
|
|
|
44
|
-
export { callCore, callKafka };
|
|
51
|
+
export { callCore, callKafka, callGraphQl };
|
package/src/config.ts
CHANGED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type { ChildProcess } from "node:child_process";
|
|
2
|
+
import logger from "../common/logger";
|
|
3
|
+
import { callGraphQl } from "../common/runner";
|
|
4
|
+
import { gracefulShutdown } from "../core/shutdownUtils";
|
|
5
|
+
import terminate from "terminate";
|
|
6
|
+
|
|
7
|
+
export class GraphQlStub {
|
|
8
|
+
host: string;
|
|
9
|
+
port: number;
|
|
10
|
+
data?: string;
|
|
11
|
+
process: ChildProcess;
|
|
12
|
+
constructor(
|
|
13
|
+
host: string,
|
|
14
|
+
port: number,
|
|
15
|
+
process: ChildProcess,
|
|
16
|
+
data?: string,
|
|
17
|
+
) {
|
|
18
|
+
this.host = host;
|
|
19
|
+
this.port = port;
|
|
20
|
+
this.process = process;
|
|
21
|
+
this.data = data;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const startGraphQlStub = (
|
|
26
|
+
host?: string,
|
|
27
|
+
port?: string,
|
|
28
|
+
data?: string,
|
|
29
|
+
args: (string | number)[] = [],
|
|
30
|
+
): Promise<GraphQlStub> => {
|
|
31
|
+
let cmd = " stub ";
|
|
32
|
+
if (host) cmd += `--host ${host} `;
|
|
33
|
+
if (port) cmd += `--port ${port} `;
|
|
34
|
+
if (data) cmd += `--data ${data} `;
|
|
35
|
+
cmd += args.join(" ");
|
|
36
|
+
|
|
37
|
+
logger.info("GraphQl Stub: Starting server");
|
|
38
|
+
logger.debug(`GraphQl Stub: Executing "${cmd}"`);
|
|
39
|
+
|
|
40
|
+
return new Promise((resolve, reject) => {
|
|
41
|
+
let reportedPort: number;
|
|
42
|
+
const javaProcess = callGraphQl(
|
|
43
|
+
cmd,
|
|
44
|
+
(err: any) => {
|
|
45
|
+
if (err) {
|
|
46
|
+
logger.error(`GraphQl Stub: Exited with error ${err}`);
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
(message, error) => {
|
|
50
|
+
if (!error) {
|
|
51
|
+
if (message.includes("Starting the server on port")) {
|
|
52
|
+
logger.info(`GraphQl Stub: ${message}`);
|
|
53
|
+
const stubInfo = message.split("port ")[1];
|
|
54
|
+
if (stubInfo.length < 2)
|
|
55
|
+
reject("Cannot determine port from graphql stub output");
|
|
56
|
+
else reportedPort = Number.parseInt(stubInfo[1].trim());
|
|
57
|
+
} else if (message.includes("Address already in use")) {
|
|
58
|
+
logger.error(`GraphQl Stub: ${message}`);
|
|
59
|
+
reject(message);
|
|
60
|
+
} else if (message.includes("Stub server is running")) {
|
|
61
|
+
const host = message.split("on ")[1].split(":")[0].trim();
|
|
62
|
+
if (port) {
|
|
63
|
+
resolve(new GraphQlStub(host, reportedPort, javaProcess, data));
|
|
64
|
+
} else {
|
|
65
|
+
reject(
|
|
66
|
+
"No port or host information available, but graphql stub server is running",
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
} else {
|
|
70
|
+
logger.debug(`GraphQl Stub: ${message}`);
|
|
71
|
+
}
|
|
72
|
+
} else {
|
|
73
|
+
logger.error(`GraphQl Stub: ${message}`);
|
|
74
|
+
reject(message);
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
);
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
const stopGraphQlStub = async (graphQlStub: GraphQlStub) => {
|
|
82
|
+
logger.debug(
|
|
83
|
+
`GraphQl Stub: Stopping server at ${graphQlStub.host}:${graphQlStub.port}`,
|
|
84
|
+
);
|
|
85
|
+
const javaProcess = graphQlStub.process;
|
|
86
|
+
javaProcess.stdout?.removeAllListeners();
|
|
87
|
+
javaProcess.stderr?.removeAllListeners();
|
|
88
|
+
javaProcess.removeAllListeners("close");
|
|
89
|
+
logger.debug("Trying to stop stub process gracefully ...");
|
|
90
|
+
try {
|
|
91
|
+
await gracefulShutdown(javaProcess);
|
|
92
|
+
} catch (e) {
|
|
93
|
+
terminate(javaProcess.pid!);
|
|
94
|
+
}
|
|
95
|
+
logger.info(
|
|
96
|
+
`GraphQl Stub: Stopped server at ${graphQlStub.host}:${graphQlStub.port}`,
|
|
97
|
+
);
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
export { startGraphQlStub, stopGraphQlStub };
|
package/src/index.ts
CHANGED
|
@@ -1,26 +1,30 @@
|
|
|
1
1
|
export {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
} from
|
|
2
|
+
startStub,
|
|
3
|
+
startStub as startHttpStub,
|
|
4
|
+
stopStub,
|
|
5
|
+
stopStub as stopHttpStub,
|
|
6
|
+
test,
|
|
7
|
+
testWithApiCoverage,
|
|
8
|
+
setExpectations,
|
|
9
|
+
setExpectations as setHttpStubExpectations,
|
|
10
|
+
setExpectationJson,
|
|
11
|
+
setExpectationJson as setHttpStubExpectationJson,
|
|
12
|
+
printJarVersion,
|
|
13
|
+
showTestResults,
|
|
14
|
+
} from "./core";
|
|
15
15
|
export {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
} from
|
|
16
|
+
startKafkaStub,
|
|
17
|
+
startKafkaStub as startKafkaMock,
|
|
18
|
+
stopKafkaStub,
|
|
19
|
+
stopKafkaStub as stopKafkaMock,
|
|
20
|
+
verifyKafkaStubMessage,
|
|
21
|
+
verifyKafkaStubMessage as verifyKafkaMockMessage,
|
|
22
|
+
verifyKafkaStub,
|
|
23
|
+
verifyKafkaStub as verifyKafkaMock,
|
|
24
|
+
setKafkaStubExpectations,
|
|
25
|
+
setKafkaStubExpectations as setKafkaMockExpectations,
|
|
26
|
+
} from "./kafka";
|
|
27
|
+
export {
|
|
28
|
+
startGraphQlStub,
|
|
29
|
+
stopGraphQlStub,
|
|
30
|
+
} from "./graphql";
|