1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.freePort = exports.serverExists = exports.clientFactory = undefined;
|
7 |
|
8 | var _regenerator = require('babel-runtime/regenerator');
|
9 |
|
10 | var _regenerator2 = _interopRequireDefault(_regenerator);
|
11 |
|
12 | var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
|
13 |
|
14 | var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
|
15 |
|
16 | var _net = require('net');
|
17 |
|
18 | var _net2 = _interopRequireDefault(_net);
|
19 |
|
20 | var _dynamodb = require('aws-sdk/clients/dynamodb');
|
21 |
|
22 | var _dynamodb2 = _interopRequireDefault(_dynamodb);
|
23 |
|
24 | var _global = require('aws-sdk/global');
|
25 |
|
26 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
27 |
|
28 | var IPV4_LOCALHOST = '127.0.0.1';
|
29 |
|
30 | var 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 |
|
39 | var serverExists = exports.serverExists = function () {
|
40 | var _ref = (0, _asyncToGenerator3.default)( _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 |
|
72 | var 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 |