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 path_1 = __importDefault(require("path"));
|
7 | const os_family_1 = __importDefault(require("os-family"));
|
8 | const runtime_1 = require("../errors/runtime");
|
9 | const types_1 = require("../errors/types");
|
10 | const testcafe_hammerhead_1 = require("testcafe-hammerhead");
|
11 | const PROTOCOL_RE = /^([\w-]+?)(?=:\/\/)/;
|
12 | const SUPPORTED_PROTOCOL_RE = /^(https?|file):/;
|
13 | const IMPLICIT_PROTOCOL_RE = /^\/\//;
|
14 | const ABSOLUTE_PATH_RE = /^\/[^/]/;
|
15 | const WIN_ABSOLUTE_PATH_RE = /^\w:[/\\]/;
|
16 | const RELATIVE_PATH_RE = /^\.\.?[/\\]/;
|
17 | function isAbsolutePath(url) {
|
18 | return os_family_1.default.win ? WIN_ABSOLUTE_PATH_RE.test(url) : ABSOLUTE_PATH_RE.test(url);
|
19 | }
|
20 | function resolveFileUrl(url, testFileName) {
|
21 | const testFileDir = path_1.default.dirname(testFileName);
|
22 | if (RELATIVE_PATH_RE.test(url))
|
23 | url = path_1.default.join(testFileDir, url);
|
24 | return 'file://' + url;
|
25 | }
|
26 | function assertUrl(url, callsiteName) {
|
27 | const protocol = url.match(PROTOCOL_RE);
|
28 | const hasUnsupportedProtocol = protocol && !SUPPORTED_PROTOCOL_RE.test(url);
|
29 | const isWinAbsolutePath = os_family_1.default.win && WIN_ABSOLUTE_PATH_RE.test(url);
|
30 | if (hasUnsupportedProtocol && !isWinAbsolutePath && url !== testcafe_hammerhead_1.SPECIAL_BLANK_PAGE)
|
31 | throw new runtime_1.APIError(callsiteName, types_1.RUNTIME_ERRORS.unsupportedUrlProtocol, url, protocol[0]);
|
32 | }
|
33 | exports.assertUrl = assertUrl;
|
34 | function resolvePageUrl(url, testFileName) {
|
35 | if (SUPPORTED_PROTOCOL_RE.test(url) || url === testcafe_hammerhead_1.SPECIAL_BLANK_PAGE)
|
36 | return url;
|
37 | if (isAbsolutePath(url) || RELATIVE_PATH_RE.test(url))
|
38 | return resolveFileUrl(url, testFileName);
|
39 | const protocol = IMPLICIT_PROTOCOL_RE.test(url) ? 'http:' : 'http://';
|
40 | return protocol + url;
|
41 | }
|
42 | exports.resolvePageUrl = resolvePageUrl;
|
43 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1wYWdlLXVybC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvdGVzdC1wYWdlLXVybC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdEQUF3QjtBQUN4QiwwREFBMkI7QUFDM0IsK0NBQTZDO0FBQzdDLDJDQUFpRDtBQUNqRCw2REFBeUQ7QUFFekQsTUFBTSxXQUFXLEdBQWEscUJBQXFCLENBQUM7QUFDcEQsTUFBTSxxQkFBcUIsR0FBRyxpQkFBaUIsQ0FBQztBQUNoRCxNQUFNLG9CQUFvQixHQUFJLE9BQU8sQ0FBQztBQUN0QyxNQUFNLGdCQUFnQixHQUFRLFNBQVMsQ0FBQztBQUN4QyxNQUFNLG9CQUFvQixHQUFJLFdBQVcsQ0FBQztBQUMxQyxNQUFNLGdCQUFnQixHQUFRLGFBQWEsQ0FBQztBQUc1QyxTQUFTLGNBQWMsQ0FBRSxHQUFHO0lBQ3hCLE9BQU8sbUJBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBRSxHQUFHLEVBQUUsWUFBWTtJQUN0QyxNQUFNLFdBQVcsR0FBRyxjQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRS9DLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUMxQixHQUFHLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFdEMsT0FBTyxTQUFTLEdBQUcsR0FBRyxDQUFDO0FBQzNCLENBQUM7QUFFRCxTQUFnQixTQUFTLENBQUUsR0FBRyxFQUFFLFlBQVk7SUFDeEMsTUFBTSxRQUFRLEdBQWlCLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEQsTUFBTSxzQkFBc0IsR0FBRyxRQUFRLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUUsTUFBTSxpQkFBaUIsR0FBUSxtQkFBRSxDQUFDLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFeEUsSUFBSSxzQkFBc0IsSUFBSSxDQUFDLGlCQUFpQixJQUFJLEdBQUcsS0FBSyx3Q0FBa0I7UUFDMUUsTUFBTSxJQUFJLGtCQUFRLENBQUMsWUFBWSxFQUFFLHNCQUFjLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xHLENBQUM7QUFQRCw4QkFPQztBQUVELFNBQWdCLGNBQWMsQ0FBRSxHQUFHLEVBQUUsWUFBWTtJQUM3QyxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEtBQUssd0NBQWtCO1FBQzdELE9BQU8sR0FBRyxDQUFDO0lBRWYsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNqRCxPQUFPLGNBQWMsQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFFN0MsTUFBTSxRQUFRLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUV0RSxPQUFPLFFBQVEsR0FBRyxHQUFHLENBQUM7QUFDMUIsQ0FBQztBQVZELHdDQVVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgT1MgZnJvbSAnb3MtZmFtaWx5JztcbmltcG9ydCB7IEFQSUVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL3J1bnRpbWUnO1xuaW1wb3J0IHsgUlVOVElNRV9FUlJPUlMgfSBmcm9tICcuLi9lcnJvcnMvdHlwZXMnO1xuaW1wb3J0IHsgU1BFQ0lBTF9CTEFOS19QQUdFIH0gZnJvbSAndGVzdGNhZmUtaGFtbWVyaGVhZCc7XG5cbmNvbnN0IFBST1RPQ09MX1JFICAgICAgICAgICA9IC9eKFtcXHctXSs/KSg/PTpcXC9cXC8pLztcbmNvbnN0IFNVUFBPUlRFRF9QUk9UT0NPTF9SRSA9IC9eKGh0dHBzP3xmaWxlKTovO1xuY29uc3QgSU1QTElDSVRfUFJPVE9DT0xfUkUgID0gL15cXC9cXC8vO1xuY29uc3QgQUJTT0xVVEVfUEFUSF9SRSAgICAgID0gL15cXC9bXi9dLztcbmNvbnN0IFdJTl9BQlNPTFVURV9QQVRIX1JFICA9IC9eXFx3OlsvXFxcXF0vO1xuY29uc3QgUkVMQVRJVkVfUEFUSF9SRSAgICAgID0gL15cXC5cXC4/Wy9cXFxcXS87XG5cblxuZnVuY3Rpb24gaXNBYnNvbHV0ZVBhdGggKHVybCkge1xuICAgIHJldHVybiBPUy53aW4gPyBXSU5fQUJTT0xVVEVfUEFUSF9SRS50ZXN0KHVybCkgOiBBQlNPTFVURV9QQVRIX1JFLnRlc3QodXJsKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUZpbGVVcmwgKHVybCwgdGVzdEZpbGVOYW1lKSB7XG4gICAgY29uc3QgdGVzdEZpbGVEaXIgPSBwYXRoLmRpcm5hbWUodGVzdEZpbGVOYW1lKTtcblxuICAgIGlmIChSRUxBVElWRV9QQVRIX1JFLnRlc3QodXJsKSlcbiAgICAgICAgdXJsID0gcGF0aC5qb2luKHRlc3RGaWxlRGlyLCB1cmwpO1xuXG4gICAgcmV0dXJuICdmaWxlOi8vJyArIHVybDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFVybCAodXJsLCBjYWxsc2l0ZU5hbWUpIHtcbiAgICBjb25zdCBwcm90b2NvbCAgICAgICAgICAgICAgID0gdXJsLm1hdGNoKFBST1RPQ09MX1JFKTtcbiAgICBjb25zdCBoYXNVbnN1cHBvcnRlZFByb3RvY29sID0gcHJvdG9jb2wgJiYgIVNVUFBPUlRFRF9QUk9UT0NPTF9SRS50ZXN0KHVybCk7XG4gICAgY29uc3QgaXNXaW5BYnNvbHV0ZVBhdGggICAgICA9IE9TLndpbiAmJiBXSU5fQUJTT0xVVEVfUEFUSF9SRS50ZXN0KHVybCk7XG5cbiAgICBpZiAoaGFzVW5zdXBwb3J0ZWRQcm90b2NvbCAmJiAhaXNXaW5BYnNvbHV0ZVBhdGggJiYgdXJsICE9PSBTUEVDSUFMX0JMQU5LX1BBR0UpXG4gICAgICAgIHRocm93IG5ldyBBUElFcnJvcihjYWxsc2l0ZU5hbWUsIFJVTlRJTUVfRVJST1JTLnVuc3VwcG9ydGVkVXJsUHJvdG9jb2wsIHVybCwgcHJvdG9jb2xbMF0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBhZ2VVcmwgKHVybCwgdGVzdEZpbGVOYW1lKSB7XG4gICAgaWYgKFNVUFBPUlRFRF9QUk9UT0NPTF9SRS50ZXN0KHVybCkgfHwgdXJsID09PSBTUEVDSUFMX0JMQU5LX1BBR0UpXG4gICAgICAgIHJldHVybiB1cmw7XG5cbiAgICBpZiAoaXNBYnNvbHV0ZVBhdGgodXJsKSB8fCBSRUxBVElWRV9QQVRIX1JFLnRlc3QodXJsKSlcbiAgICAgICAgcmV0dXJuIHJlc29sdmVGaWxlVXJsKHVybCwgdGVzdEZpbGVOYW1lKTtcblxuICAgIGNvbnN0IHByb3RvY29sID0gSU1QTElDSVRfUFJPVE9DT0xfUkUudGVzdCh1cmwpID8gJ2h0dHA6JyA6ICdodHRwOi8vJztcblxuICAgIHJldHVybiBwcm90b2NvbCArIHVybDtcbn1cbiJdfQ== |
\ | No newline at end of file |