Innovenergy_trunk/frontend/node_modules/testcafe/lib/api/test-page-url.js

76 lines
10 KiB
JavaScript
Raw Permalink Normal View History

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.assertRoleUrl = exports.assertBaseUrl = exports.assertPageUrl = exports.prepareBaseUrl = exports.getUrl = exports.resolveRelativeUrl = exports.isRelative = void 0;
const url_1 = require("url");
const os_family_1 = __importDefault(require("os-family"));
const runtime_1 = require("../errors/runtime");
const types_1 = require("../errors/types");
const testcafe_hammerhead_1 = require("testcafe-hammerhead");
const path_1 = require("path");
const PROTOCOL_RE = /^([\w-]+?)(?=:\/\/)/;
const SUPPORTED_PROTOCOL_RE = /^(https?|file):/;
const IMPLICIT_PROTOCOL_RE = /^\/\//;
const ABSOLUTE_PATH_RE = /^\/[^/]/;
const WIN_ABSOLUTE_PATH_RE = /^\w:[/\\]/;
const RELATIVE_PATH_RE = /^\.\.?[/\\]/;
function isRelative(url) {
return RELATIVE_PATH_RE.test(url);
}
exports.isRelative = isRelative;
function isAbsolute(url) {
// NOTE: path.isAbsolute treats the '//example.com' path as absolute
return os_family_1.default.win ? WIN_ABSOLUTE_PATH_RE.test(url) : ABSOLUTE_PATH_RE.test(url);
}
function resolveRelativeUrl(path, base) {
const url = new url_1.URL(path, base);
return url.toString();
}
exports.resolveRelativeUrl = resolveRelativeUrl;
function ensureProtocol(url) {
if (SUPPORTED_PROTOCOL_RE.test(url) || url === testcafe_hammerhead_1.SPECIAL_BLANK_PAGE)
return url;
const protocol = IMPLICIT_PROTOCOL_RE.test(url) ? 'http:' : 'http://';
return protocol + url;
}
function getUrl(url, base) {
if (isRelative(url)) {
if (!base)
throw new Error('Relative urls require a base path');
return resolveRelativeUrl(url, base);
}
else if (isAbsolute(url))
return (0, url_1.pathToFileURL)(url).toString();
return ensureProtocol(url);
}
exports.getUrl = getUrl;
function prepareBaseUrl(url) {
url = (0, path_1.join)(url, '/');
return isAbsolute(url) ? (0, url_1.pathToFileURL)(url) : new url_1.URL(url);
}
exports.prepareBaseUrl = prepareBaseUrl;
function assertPageUrl(url, callsiteName) {
assertProtocol(url, callsiteName, 'test page URL');
}
exports.assertPageUrl = assertPageUrl;
function assertProtocol(url, callsiteName, what) {
const protocol = url.match(PROTOCOL_RE);
const hasUnsupportedProtocol = protocol && !SUPPORTED_PROTOCOL_RE.test(url);
const isWinAbsolutePath = os_family_1.default.win && WIN_ABSOLUTE_PATH_RE.test(url);
if (hasUnsupportedProtocol && !isWinAbsolutePath && url !== testcafe_hammerhead_1.SPECIAL_BLANK_PAGE)
throw new runtime_1.APIError(callsiteName, types_1.RUNTIME_ERRORS.unsupportedUrlProtocol, what, url, what, protocol && protocol[0]);
}
function assertBaseUrl(url, callsiteName) {
if (isRelative(url))
throw new runtime_1.APIError(callsiteName, types_1.RUNTIME_ERRORS.relativeBaseUrl, url);
assertProtocol(url, callsiteName, 'base URL');
}
exports.assertBaseUrl = assertBaseUrl;
function assertRoleUrl(url, callsiteName) {
if (isRelative(url))
throw new runtime_1.APIError(callsiteName, types_1.RUNTIME_ERRORS.roleInitializedWithRelativeUrl);
}
exports.assertRoleUrl = assertRoleUrl;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1wYWdlLXVybC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvdGVzdC1wYWdlLXVybC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw2QkFBeUM7QUFDekMsMERBQTJCO0FBQzNCLCtDQUE2QztBQUM3QywyQ0FBaUQ7QUFDakQsNkRBQXlEO0FBQ3pELCtCQUE0QjtBQUU1QixNQUFNLFdBQVcsR0FBYSxxQkFBcUIsQ0FBQztBQUNwRCxNQUFNLHFCQUFxQixHQUFHLGlCQUFpQixDQUFDO0FBQ2hELE1BQU0sb0JBQW9CLEdBQUksT0FBTyxDQUFDO0FBQ3RDLE1BQU0sZ0JBQWdCLEdBQVEsU0FBUyxDQUFDO0FBQ3hDLE1BQU0sb0JBQW9CLEdBQUksV0FBVyxDQUFDO0FBQzFDLE1BQU0sZ0JBQWdCLEdBQVEsYUFBYSxDQUFDO0FBRTVDLFNBQWdCLFVBQVUsQ0FBRSxHQUFXO0lBQ25DLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFGRCxnQ0FFQztBQUVELFNBQVMsVUFBVSxDQUFFLEdBQVc7SUFDNUIsb0VBQW9FO0lBQ3BFLE9BQU8sbUJBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFFRCxTQUFnQixrQkFBa0IsQ0FBRSxJQUFZLEVBQUUsSUFBUztJQUN2RCxNQUFNLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFaEMsT0FBTyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDMUIsQ0FBQztBQUpELGdEQUlDO0FBRUQsU0FBUyxjQUFjLENBQUUsR0FBVztJQUNoQyxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEtBQUssd0NBQWtCO1FBQzdELE9BQU8sR0FBRyxDQUFDO0lBRWYsTUFBTSxRQUFRLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUV0RSxPQUFPLFFBQVEsR0FBRyxHQUFHLENBQUM7QUFDMUIsQ0FBQztBQUVELFNBQWdCLE1BQU0sQ0FBRSxHQUFXLEVBQUUsSUFBVTtJQUMzQyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNqQixJQUFJLENBQUMsSUFBSTtZQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUV6RCxPQUFPLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUN4QztTQUVJLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUNwQixPQUFPLElBQUEsbUJBQWEsRUFBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUV6QyxPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBWkQsd0JBWUM7QUFFRCxTQUFnQixjQUFjLENBQUUsR0FBVztJQUN2QyxHQUFHLEdBQUcsSUFBQSxXQUFJLEVBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBLG1CQUFhLEVBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUFIRCx3Q0FHQztBQUVELFNBQWdCLGFBQWEsQ0FBRSxHQUFXLEVBQUUsWUFBb0I7SUFDNUQsY0FBYyxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUZELHNDQUVDO0FBRUQsU0FBUyxjQUFjLENBQUUsR0FBVyxFQUFFLFlBQW9CLEVBQUUsSUFBWTtJQUNwRSxNQUFNLFFBQVEsR0FBaUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0RCxNQUFNLHNCQUFzQixHQUFHLFFBQVEsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1RSxNQUFNLGlCQUFpQixHQUFRLG1CQUFFLENBQUMsR0FBRyxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV4RSxJQUFJLHNCQUFzQixJQUFJLENBQUMsaUJBQWlCLElBQUksR0FBRyxLQUFLLHdDQUFrQjtRQUMxRSxNQUFNLElBQUksa0JBQVEsQ0FBQyxZQUFZLEVBQUUsc0JBQWMsQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUgsQ0FBQztBQUVELFNBQWdCLGFBQWEsQ0FBRSxHQUFXLEVBQUUsWUFBb0I7SUFDNUQsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQ2YsTUFBTSxJQUFJLGtCQUFRLENBQUMsWUFBWSxFQUFFLHNCQUFjLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRTFFLGNBQWMsQ0FBQyxHQUFHLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ2xELENBQUM7QUFMRCxzQ0FLQztBQUVELFNBQWdCLGFBQWEsQ0FBRSxHQUFXLEVBQUUsWUFBb0I7SUFDNUQsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQ2YsTUFBTSxJQUFJLGtCQUFRLENBQUMsWUFBWSxFQUFFLHNCQUFjLENBQUMsOEJBQThCLENBQUMsQ0FBQztBQUN4RixDQUFDO0FBSEQsc0NBR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVUkwsIHBhdGhUb0ZpbGVVUkwgfSBmcm9tICd1cmwnO1xuaW1wb3J0IE9TIGZyb20gJ29zLWZhbWlseSc7XG5pbXBvcnQgeyBBUElFcnJvciB9IGZyb20gJy4uL2Vycm9ycy9ydW50aW1lJztcbmltcG9ydCB7IFJVTlRJTUVfRVJST1JTIH0gZnJvbSAnLi4vZXJyb3JzL3R5cGVzJztcbmltcG9ydCB7IFNQRUNJQUxfQkxBTktfUEFHRSB9IGZyb20gJ3Rlc3RjYWZlLWhhbW1lcmhlYWQnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuXG5jb25zdCBQUk9UT0NPTF9SRSAgICAgICAgICAgPSAvXihbXFx3LV0rPykoPz06XFwvXFwvKS87XG5jb25zdCBTVVBQT1JURURfUFJPVE9DT0xfUkUgPSAvXihodHRwcz98ZmlsZSk6LztcbmNvbnN0IElNUExJQ0lUX1BST1RPQ09MX1JFICA9IC9eXFwvXFwvLztcbmNvbnN0IEFCU09MVVRFX1BBVEhfUkUgICAgICA9I