UNPKG

2.54 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.freePort = exports.serverExists = exports.clientFactory = undefined;
7
8var _regenerator = require('babel-runtime/regenerator');
9
10var _regenerator2 = _interopRequireDefault(_regenerator);
11
12var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
13
14var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
15
16var _net = require('net');
17
18var _net2 = _interopRequireDefault(_net);
19
20var _dynamodb = require('aws-sdk/clients/dynamodb');
21
22var _dynamodb2 = _interopRequireDefault(_dynamodb);
23
24var _global = require('aws-sdk/global');
25
26function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
28var IPV4_LOCALHOST = '127.0.0.1'; // Has to be IPv4
29
30var clientFactory = exports.clientFactory = function clientFactory(port) {
31 var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
32 return new _dynamodb2.default(Object.assign({
33 region: 'localhost',
34 endpoint: 'http://' + IPV4_LOCALHOST + ':' + port,
35 credentials: new _global.Credentials('dummyKey', 'dummySecret')
36 }, options));
37};
38
39var serverExists = exports.serverExists = function () {
40 var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(port) {
41 var client;
42 return _regenerator2.default.wrap(function _callee$(_context) {
43 while (1) {
44 switch (_context.prev = _context.next) {
45 case 0:
46 client = clientFactory(port, { maxRetries: 0 });
47 _context.prev = 1;
48 _context.next = 4;
49 return client.describeLimits().promise();
50
51 case 4:
52 return _context.abrupt('return', true);
53
54 case 7:
55 _context.prev = 7;
56 _context.t0 = _context['catch'](1);
57 return _context.abrupt('return', false);
58
59 case 10:
60 case 'end':
61 return _context.stop();
62 }
63 }
64 }, _callee, undefined, [[1, 7]]);
65 }));
66
67 return function serverExists(_x2) {
68 return _ref.apply(this, arguments);
69 };
70}();
71
72var freePort = exports.freePort = function freePort() {
73 return new Promise(function (resolve, reject) {
74 var server = _net2.default.createServer().once('error', function (e) {
75 reject(e);
76 }).once('listening', function () {
77 var _server$address = server.address(),
78 port = _server$address.port;
79
80 server.close();
81 resolve(port);
82 }).listen(0, '0.0.0.0');
83 });
84};
\No newline at end of file