1 | ;
|
2 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
3 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
4 | };
|
5 | Object.defineProperty(exports, "__esModule", { value: true });
|
6 | const runtime_1 = require("./errors/runtime");
|
7 | const types_1 = require("./errors/types");
|
8 | const embedding_utils_1 = __importDefault(require("./embedding-utils"));
|
9 | const exportable_lib_1 = __importDefault(require("./api/exportable-lib"));
|
10 | const testcafe_configuration_1 = __importDefault(require("./configuration/testcafe-configuration"));
|
11 | const option_names_1 = __importDefault(require("./configuration/option-names"));
|
12 | const lazyRequire = require('import-lazy')(require);
|
13 | const TestCafe = lazyRequire('./testcafe');
|
14 | const endpointUtils = lazyRequire('endpoint-utils');
|
15 | const setupExitHook = lazyRequire('async-exit-hook');
|
16 | // Validations
|
17 | async function getValidHostname(hostname) {
|
18 | if (hostname) {
|
19 | const valid = await endpointUtils.isMyHostname(hostname);
|
20 | if (!valid)
|
21 | throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.invalidHostname, hostname);
|
22 | }
|
23 | else
|
24 | hostname = endpointUtils.getIPAddress();
|
25 | return hostname;
|
26 | }
|
27 | async function getValidPort(port) {
|
28 | if (port) {
|
29 | const isFree = await endpointUtils.isFreePort(port);
|
30 | if (!isFree)
|
31 | throw new runtime_1.GeneralError(types_1.RUNTIME_ERRORS.portIsNotFree, port);
|
32 | }
|
33 | else
|
34 | port = await endpointUtils.getFreePort();
|
35 | return port;
|
36 | }
|
37 | // API
|
38 | async function createTestCafe(hostname, port1, port2, sslOptions, developmentMode, retryTestPages) {
|
39 | const configuration = new testcafe_configuration_1.default();
|
40 | await configuration.init({
|
41 | hostname,
|
42 | port1,
|
43 | port2,
|
44 | ssl: sslOptions,
|
45 | developmentMode,
|
46 | retryTestPages
|
47 | });
|
48 | [hostname, port1, port2] = await Promise.all([
|
49 | getValidHostname(configuration.getOption(option_names_1.default.hostname)),
|
50 | getValidPort(configuration.getOption(option_names_1.default.port1)),
|
51 | getValidPort(configuration.getOption(option_names_1.default.port2))
|
52 | ]);
|
53 | configuration.mergeOptions({ hostname, port1, port2 });
|
54 | const testcafe = new TestCafe(configuration);
|
55 | setupExitHook(cb => testcafe.close().then(cb));
|
56 | return testcafe;
|
57 | }
|
58 | // Embedding utils
|
59 | createTestCafe.embeddingUtils = embedding_utils_1.default;
|
60 | // Common API
|
61 | Object.keys(exportable_lib_1.default).forEach(key => {
|
62 | Object.defineProperty(createTestCafe, key, { get: () => exportable_lib_1.default[key] });
|
63 | });
|
64 | exports.default = createTestCafe;
|
65 | module.exports = exports.default;
|
66 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4Q0FBZ0Q7QUFDaEQsMENBQWdEO0FBQ2hELHdFQUErQztBQUMvQywwRUFBaUQ7QUFDakQsb0dBQTJFO0FBQzNFLGdGQUF3RDtBQUV4RCxNQUFNLFdBQVcsR0FBSyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEQsTUFBTSxRQUFRLEdBQVEsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ2hELE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3BELE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBRXJELGNBQWM7QUFDZCxLQUFLLFVBQVUsZ0JBQWdCLENBQUUsUUFBUTtJQUNyQyxJQUFJLFFBQVEsRUFBRTtRQUNWLE1BQU0sS0FBSyxHQUFHLE1BQU0sYUFBYSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV6RCxJQUFJLENBQUMsS0FBSztZQUNOLE1BQU0sSUFBSSxzQkFBWSxDQUFDLHNCQUFjLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQ3hFOztRQUVHLFFBQVEsR0FBRyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFNUMsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQztBQUVELEtBQUssVUFBVSxZQUFZLENBQUUsSUFBSTtJQUM3QixJQUFJLElBQUksRUFBRTtRQUNOLE1BQU0sTUFBTSxHQUFHLE1BQU0sYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVwRCxJQUFJLENBQUMsTUFBTTtZQUNQLE1BQU0sSUFBSSxzQkFBWSxDQUFDLHNCQUFjLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ2xFOztRQUVHLElBQUksR0FBRyxNQUFNLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUU3QyxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTTtBQUNOLEtBQUssVUFBVSxjQUFjLENBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxjQUFjO0lBQzlGLE1BQU0sYUFBYSxHQUFHLElBQUksZ0NBQXFCLEVBQUUsQ0FBQztJQUVsRCxNQUFNLGFBQWEsQ0FBQyxJQUFJLENBQUM7UUFDckIsUUFBUTtRQUNSLEtBQUs7UUFDTCxLQUFLO1FBQ0wsR0FBRyxFQUFFLFVBQVU7UUFDZixlQUFlO1FBQ2YsY0FBYztLQUNqQixDQUFDLENBQUM7SUFFSCxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQ3pDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsc0JBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRSxZQUFZLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxzQkFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pELFlBQVksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLHNCQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDNUQsQ0FBQyxDQUFDO0lBRUgsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUV2RCxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUU3QyxhQUFhLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFL0MsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQztBQUVELGtCQUFrQjtBQUNsQixjQUFjLENBQUMsY0FBYyxHQUFHLHlCQUFjLENBQUM7QUFFL0MsYUFBYTtBQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsd0JBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtJQUNyQyxNQUFNLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsd0JBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEYsQ0FBQyxDQUFDLENBQUM7QUFFSCxrQkFBZSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW5lcmFsRXJyb3IgfSBmcm9tICcuL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi9lcnJvcnMvdHlwZXMnO1xuaW1wb3J0IGVtYmVkZGluZ1V0aWxzIGZyb20gJy4vZW1iZWRkaW5nLXV0aWxzJztcbmltcG9ydCBleHBvcnRhYmxlTGliIGZyb20gJy4vYXBpL2V4cG9ydGFibGUtbGliJztcbmltcG9ydCBUZXN0Q2FmZUNvbmZpZ3VyYXRpb24gZnJvbSAnLi9jb25maWd1cmF0aW9uL3Rlc3RjYWZlLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IE9QVElPTl9OQU1FUyBmcm9tICcuL2NvbmZpZ3VyYXRpb24vb3B0aW9uLW5hbWVzJztcblxuY29uc3QgbGF6eVJlcXVpcmUgICA9IHJlcXVpcmUoJ2ltcG9ydC1sYXp5JykocmVxdWlyZSk7XG5jb25zdCBUZXN0Q2FmZSAgICAgID0gbGF6eVJlcXVpcmUoJy4vdGVzdGNhZmUnKTtcbmNvbnN0IGVuZHBvaW50VXRpbHMgPSBsYXp5UmVxdWlyZSgnZW5kcG9pbnQtdXRpbHMnKTtcbmNvbnN0IHNldHVwRXhpdEhvb2sgPSBsYXp5UmVxdWlyZSgnYXN5bmMtZXhpdC1ob29rJyk7XG5cbi8vIFZhbGlkYXRpb25zXG5hc3luYyBmdW5jdGlvbiBnZXRWYWxpZEhvc3RuYW1lIChob3N0bmFtZSkge1xuICAgIGlmIChob3N0bmFtZSkge1xuICAgICAgICBjb25zdCB2YWxpZCA9IGF3YWl0IGVuZHBvaW50VXRpbHMuaXNNeUhvc3RuYW1lKGhvc3RuYW1lKTtcblxuICAgICAgICBpZiAoIXZhbGlkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEdlbmVyYWxFcnJvcihSVU5USU1FX0VSUk9SUy5pbnZhbGlkSG9zdG5hbWUsIGhvc3RuYW1lKTtcbiAgICB9XG4gICAgZWxzZVxuICAgICAgICBob3N0bmFtZSA9IGVuZHBvaW50VXRpbHMuZ2V0SVBBZGRyZXNzKCk7XG5cbiAgICByZXR1cm4gaG9zdG5hbWU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFZhbGlkUG9ydCAocG9ydCkge1xuICAgIGlmIChwb3J0KSB7XG4gICAgICAgIGNvbnN0IGlzRnJlZSA9IGF3YWl0IGVuZHBvaW50VXRpbHMuaXNGcmVlUG9ydChwb3J0KTtcblxuICAgICAgICBpZiAoIWlzRnJlZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBHZW5lcmFsRXJyb3IoUlVOVElNRV9FUlJPUlMucG9ydElzTm90RnJlZSwgcG9ydCk7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgICAgcG9ydCA9IGF3YWl0IGVuZHBvaW50VXRpbHMuZ2V0RnJlZVBvcnQoKTtcblxuICAgIHJldHVybiBwb3J0O1xufVxuXG4vLyBBUElcbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRlc3RDYWZlIChob3N0bmFtZSwgcG9ydDEsIHBvcnQyLCBzc2xPcHRpb25zLCBkZXZlbG9wbWVudE1vZGUsIHJldHJ5VGVzdFBhZ2VzKSB7XG4gICAgY29uc3QgY29uZmlndXJhdGlvbiA9IG5ldyBUZXN0Q2FmZUNvbmZpZ3VyYXRpb24oKTtcblxuICAgIGF3YWl0IGNvbmZpZ3VyYXRpb24uaW5pdCh7XG4gICAgICAgIGhvc3RuYW1lLFxuICAgICAgICBwb3J0MSxcbiAgICAgICAgcG9ydDIsXG4gICAgICAgIHNzbDogc3NsT3B0aW9ucyxcbiAgICAgICAgZGV2ZWxvcG1lbnRNb2RlLFxuICAgICAgICByZXRyeVRlc3RQYWdlc1xuICAgIH0pO1xuXG4gICAgW2hvc3RuYW1lLCBwb3J0MSwgcG9ydDJdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICBnZXRWYWxpZEhvc3RuYW1lKGNvbmZpZ3VyYXRpb24uZ2V0T3B0aW9uKE9QVElPTl9OQU1FUy5ob3N0bmFtZSkpLFxuICAgICAgICBnZXRWYWxpZFBvcnQoY29uZmlndXJhdGlvbi5nZXRPcHRpb24oT1BUSU9OX05BTUVTLnBvcnQxKSksXG4gICAgICAgIGdldFZhbGlkUG9ydChjb25maWd1cmF0aW9uLmdldE9wdGlvbihPUFRJT05fTkFNRVMucG9ydDIpKVxuICAgIF0pO1xuXG4gICAgY29uZmlndXJhdGlvbi5tZXJnZU9wdGlvbnMoeyBob3N0bmFtZSwgcG9ydDEsIHBvcnQyIH0pO1xuXG4gICAgY29uc3QgdGVzdGNhZmUgPSBuZXcgVGVzdENhZmUoY29uZmlndXJhdGlvbik7XG5cbiAgICBzZXR1cEV4aXRIb29rKGNiID0+IHRlc3RjYWZlLmNsb3NlKCkudGhlbihjYikpO1xuXG4gICAgcmV0dXJuIHRlc3RjYWZlO1xufVxuXG4vLyBFbWJlZGRpbmcgdXRpbHNcbmNyZWF0ZVRlc3RDYWZlLmVtYmVkZGluZ1V0aWxzID0gZW1iZWRkaW5nVXRpbHM7XG5cbi8vIENvbW1vbiBBUElcbk9iamVjdC5rZXlzKGV4cG9ydGFibGVMaWIpLmZvckVhY2goa2V5ID0+IHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3JlYXRlVGVzdENhZmUsIGtleSwgeyBnZXQ6ICgpID0+IGV4cG9ydGFibGVMaWJba2V5XSB9KTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVUZXN0Q2FmZTtcbiJdfQ== |
\ | No newline at end of file |