@pact-foundation/pact-node
Version:
Core of @pact-foundation/pact. You almost certainly don't want to depend on this directly.
121 lines • 5.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Pact = void 0;
var q = require("q");
var path = require("path");
var server_1 = require("./server");
var stub_1 = require("./stub");
var verifier_1 = require("./verifier");
var message_1 = require("./message");
var publisher_1 = require("./publisher");
var can_deploy_1 = require("./can-deploy");
var pact_environment_1 = require("./pact-environment");
var logger_1 = require("./logger");
var service_1 = require("./service");
var _ = require("underscore");
var mkdirp = require("mkdirp");
var rimraf = require("rimraf");
var Pact = (function () {
function Pact() {
var _this = this;
this.__servers = [];
this.__stubs = [];
if (pact_environment_1.default.isWindows()) {
try {
var name_1 = 'Jctyo0NXwbPN6Y1o8p2TkicKma2kfqmXwVLw6ypBX47uktBPX9FM9kbPraQXsAUZuT6BvenTbnWczXzuN4js0KB9e7P5cccxvmXPYcFhJnBvPSKGH1FlTqEOsjl8djk3md';
var dir = mkdirp.sync(path.resolve(__dirname, name_1, name_1));
dir && rimraf.sync(dir);
}
catch (_a) {
logger_1.default.warn('WARNING: Windows Long Paths is not enabled and might cause Pact to crash if the path is too long. ' +
'To fix this issue, please consult https://github.com/pact-foundation/pact-js-core#enable-long-paths`');
}
}
process.once('exit', function () { return _this.removeAll(); });
process.once('SIGINT', function () { return process.exit(); });
}
Pact.prototype.logLevel = function (level) {
return (0, logger_1.setLogLevel)(level);
};
Pact.prototype.createServer = function (options) {
var _this = this;
if (options === void 0) { options = {}; }
if (options &&
options.port &&
_.some(this.__servers, function (s) { return s.options.port === options.port; })) {
var msg = "Port '".concat(options.port, "' is already in use by another process.");
logger_1.default.error(msg);
throw new Error(msg);
}
var server = (0, server_1.default)(options);
this.__servers.push(server);
logger_1.default.info("Creating Pact Server with options: \n".concat(JSON.stringify(server.options)));
server.once(service_1.AbstractService.Events.DELETE_EVENT, function (s) {
logger_1.default.info("Deleting Pact Server with options: \n".concat(JSON.stringify(s.options)));
_this.__servers = _.without(_this.__servers, s);
});
return server;
};
Pact.prototype.listServers = function () {
return this.__servers;
};
Pact.prototype.removeAllServers = function () {
if (this.__servers.length === 0) {
return q(this.__servers);
}
logger_1.default.info('Removing all Pact servers.');
return q.all(_.map(this.__servers, function (server) { return server.delete(); }));
};
Pact.prototype.createStub = function (options) {
var _this = this;
if (options === void 0) { options = {}; }
if (options &&
options.port &&
_.some(this.__stubs, function (s) { return s.options.port === options.port; })) {
var msg = "Port '".concat(options.port, "' is already in use by another process.");
logger_1.default.error(msg);
throw new Error(msg);
}
var stub = (0, stub_1.default)(options);
this.__stubs.push(stub);
logger_1.default.info("Creating Pact Stub with options: \n".concat(JSON.stringify(stub.options)));
stub.once(service_1.AbstractService.Events.DELETE_EVENT, function (s) {
logger_1.default.info("Deleting Pact Stub with options: \n".concat(JSON.stringify(stub.options)));
_this.__stubs = _.without(_this.__stubs, s);
});
return stub;
};
Pact.prototype.listStubs = function () {
return this.__stubs;
};
Pact.prototype.removeAllStubs = function () {
if (this.__stubs.length === 0) {
return q(this.__stubs);
}
logger_1.default.info('Removing all Pact stubs.');
return q.all(_.map(this.__stubs, function (stub) { return stub.delete(); }));
};
Pact.prototype.removeAll = function () {
return q.all(_.flatten([this.removeAllStubs(), this.removeAllServers()]));
};
Pact.prototype.verifyPacts = function (options) {
logger_1.default.info('Verifying Pacts.');
return (0, verifier_1.default)(options).verify();
};
Pact.prototype.createMessage = function (options) {
logger_1.default.info('Creating Message');
return (0, message_1.default)(options).createMessage();
};
Pact.prototype.publishPacts = function (options) {
logger_1.default.info('Publishing Pacts to Broker');
return (0, publisher_1.default)(options).publish();
};
Pact.prototype.canDeploy = function (options) {
logger_1.default.info('Checking if it it possible to deploy');
return (0, can_deploy_1.default)(options).canDeploy();
};
return Pact;
}());
exports.Pact = Pact;
exports.default = new Pact();
//# sourceMappingURL=pact.js.map