UNPKG

testcafe

Version:

Automated browser testing for the modern web development stack.

66 lines 8.54 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const load_babel_libs_1 = __importDefault(require("../../../load-babel-libs")); const api_based_1 = __importDefault(require("../../api-based")); const BABEL_RUNTIME_RE = /^babel-runtime(\\|\/|$)/; const FLOW_MARKER_RE = /^\s*\/\/\s*@flow\s*\n|^\s*\/\*\s*@flow\s*\*\//; class ESNextTestFileCompiler extends api_based_1.default { static getBabelOptions(filename, code) { const { presetStage2, presetFlow, transformRuntime, transformClassProperties, presetEnv } = load_babel_libs_1.default(); // NOTE: passPrePreset and complex presets is a workaround for https://github.com/babel/babel/issues/2877 // Fixes https://github.com/DevExpress/testcafe/issues/969 return { passPerPreset: true, presets: [ { passPerPreset: false, presets: [{ plugins: [transformRuntime] }, presetStage2, presetEnv] }, FLOW_MARKER_RE.test(code) ? { passPerPreset: false, presets: [{ plugins: [transformClassProperties] }, presetFlow] } : {} ], filename: filename, retainLines: true, sourceMaps: 'inline', ast: false, babelrc: false, highlightCode: false, resolveModuleSource: source => { if (source === 'testcafe') return api_based_1.default.EXPORTABLE_LIB_PATH; if (BABEL_RUNTIME_RE.test(source)) { try { return require.resolve(source); } catch (err) { return source; } } return source; } }; } _compileCode(code, filename) { const { babel } = load_babel_libs_1.default(); if (this.cache[filename]) return this.cache[filename]; const opts = ESNextTestFileCompiler.getBabelOptions(filename, code); const compiled = babel.transform(code, opts); this.cache[filename] = compiled.code; return compiled.code; } _getRequireCompilers() { return { '.js': (code, filename) => this._compileCode(code, filename) }; } getSupportedExtension() { return '.js'; } } exports.default = ESNextTestFileCompiler; module.exports = exports.default; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcGlsZXIvdGVzdC1maWxlL2Zvcm1hdHMvZXMtbmV4dC9jb21waWxlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtFQUFxRDtBQUNyRCxnRUFBMkQ7QUFFM0QsTUFBTSxnQkFBZ0IsR0FBRyx5QkFBeUIsQ0FBQztBQUNuRCxNQUFNLGNBQWMsR0FBSywrQ0FBK0MsQ0FBQztBQUV6RSxNQUFxQixzQkFBdUIsU0FBUSxtQkFBNEI7SUFDNUUsTUFBTSxDQUFDLGVBQWUsQ0FBRSxRQUFRLEVBQUUsSUFBSTtRQUNsQyxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSx3QkFBd0IsRUFBRSxTQUFTLEVBQUUsR0FBRyx5QkFBYSxFQUFFLENBQUM7UUFFNUcseUdBQXlHO1FBQ3pHLDBEQUEwRDtRQUMxRCxPQUFPO1lBQ0gsYUFBYSxFQUFFLElBQUk7WUFDbkIsT0FBTyxFQUFRO2dCQUNYO29CQUNJLGFBQWEsRUFBRSxLQUFLO29CQUNwQixPQUFPLEVBQVEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxZQUFZLEVBQUUsU0FBUyxDQUFDO2lCQUM1RTtnQkFDRCxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDeEIsYUFBYSxFQUFFLEtBQUs7b0JBQ3BCLE9BQU8sRUFBUSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsd0JBQXdCLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQztpQkFDdkUsQ0FBQyxDQUFDLENBQUMsRUFBRTthQUNUO1lBQ0QsUUFBUSxFQUFPLFFBQVE7WUFDdkIsV0FBVyxFQUFJLElBQUk7WUFDbkIsVUFBVSxFQUFLLFFBQVE7WUFDdkIsR0FBRyxFQUFZLEtBQUs7WUFDcEIsT0FBTyxFQUFRLEtBQUs7WUFDcEIsYUFBYSxFQUFFLEtBQUs7WUFFcEIsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQzFCLElBQUksTUFBTSxLQUFLLFVBQVU7b0JBQ3JCLE9BQU8sbUJBQTRCLENBQUMsbUJBQW1CLENBQUM7Z0JBRTVELElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO29CQUMvQixJQUFJO3dCQUNBLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztxQkFDbEM7b0JBQ0QsT0FBTyxHQUFHLEVBQUU7d0JBQ1IsT0FBTyxNQUFNLENBQUM7cUJBQ2pCO2lCQUNKO2dCQUVELE9BQU8sTUFBTSxDQUFDO1lBQ2xCLENBQUM7U0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELFlBQVksQ0FBRSxJQUFJLEVBQUUsUUFBUTtRQUN4QixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcseUJBQWEsRUFBRSxDQUFDO1FBRWxDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDcEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWhDLE1BQU0sSUFBSSxHQUFPLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEUsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFN0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBRXJDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztJQUN6QixDQUFDO0lBRUQsb0JBQW9CO1FBQ2hCLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQzVFLENBQUM7SUFFRCxxQkFBcUI7UUFDakIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKO0FBaEVELHlDQWdFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2FkQmFiZWxMaWJzIGZyb20gJy4uLy4uLy4uL2xvYWQtYmFiZWwtbGlicyc7XG5pbXBvcnQgQVBJQmFzZWRUZXN0RmlsZUNvbXBpbGVyQmFzZSBmcm9tICcuLi8uLi9hcGktYmFzZWQnO1xuXG5jb25zdCBCQUJFTF9SVU5USU1FX1JFID0gL15iYWJlbC1ydW50aW1lKFxcXFx8XFwvfCQpLztcbmNvbnN0IEZMT1dfTUFSS0VSX1JFICAgPSAvXlxccypcXC9cXC9cXHMqQGZsb3dcXHMqXFxufF5cXHMqXFwvXFwqXFxzKkBmbG93XFxzKlxcKlxcLy87XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVTTmV4dFRlc3RGaWxlQ29tcGlsZXIgZXh0ZW5kcyBBUElCYXNlZFRlc3RGaWxlQ29tcGlsZXJCYXNlIHtcbiAgICBzdGF0aWMgZ2V0QmFiZWxPcHRpb25zIChmaWxlbmFtZSwgY29kZSkge1xuICAgICAgICBjb25zdCB7IHByZXNldFN0YWdlMiwgcHJlc2V0RmxvdywgdHJhbnNmb3JtUnVudGltZSwgdHJhbnNmb3JtQ2xhc3NQcm9wZXJ0aWVzLCBwcmVzZXRFbnYgfSA9IGxvYWRCYWJlbExpYnMoKTtcblxuICAgICAgICAvLyBOT1RFOiBwYXNzUHJlUHJlc2V0IGFuZCBjb21wbGV4IHByZXNldHMgaXMgYSB3b3JrYXJvdW5kIGZvciBodHRwczovL2dpdGh1Yi5jb20vYmFiZWwvYmFiZWwvaXNzdWVzLzI4NzdcbiAgICAgICAgLy8gRml4ZXMgaHR0cHM6Ly9naXRodWIuY29tL0RldkV4cHJlc3MvdGVzdGNhZmUvaXNzdWVzLzk2OVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcGFzc1BlclByZXNldDogdHJ1ZSxcbiAgICAgICAgICAgIHByZXNldHM6ICAgICAgIFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBhc3NQZXJQcmVzZXQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBwcmVzZXRzOiAgICAgICBbeyBwbHVnaW5zOiBbdHJhbnNmb3JtUnVudGltZV0gfSwgcHJlc2V0U3RhZ2UyLCBwcmVzZXRFbnZdXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBGTE9XX01BUktFUl9SRS50ZXN0KGNvZGUpID8ge1xuICAgICAgICAgICAgICAgICAgICBwYXNzUGVyUHJlc2V0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgcHJlc2V0czogICAgICAgW3sgcGx1Z2luczogW3RyYW5zZm9ybUNsYXNzUHJvcGVydGllc10gfSwgcHJlc2V0Rmxvd11cbiAgICAgICAgICAgICAgICB9IDoge31cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBmaWxlbmFtZTogICAgICBmaWxlbmFtZSxcbiAgICAgICAgICAgIHJldGFpbkxpbmVzOiAgIHRydWUsXG4gICAgICAgICAgICBzb3VyY2VNYXBzOiAgICAnaW5saW5lJyxcbiAgICAgICAgICAgIGFzdDogICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgYmFiZWxyYzogICAgICAgZmFsc2UsXG4gICAgICAgICAgICBoaWdobGlnaHRDb2RlOiBmYWxzZSxcblxuICAgICAgICAgICAgcmVzb2x2ZU1vZHVsZVNvdXJjZTogc291cmNlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc291cmNlID09PSAndGVzdGNhZmUnKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVBJQmFzZWRUZXN0RmlsZUNvbXBpbGVyQmFzZS5FWFBPUlRBQkxFX0xJQl9QQVRIO1xuXG4gICAgICAgICAgICAgICAgaWYgKEJBQkVMX1JVTlRJTUVfUkUudGVzdChzb3VyY2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVxdWlyZS5yZXNvbHZlKHNvdXJjZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgX2NvbXBpbGVDb2RlIChjb2RlLCBmaWxlbmFtZSkge1xuICAgICAgICBjb25zdCB7IGJhYmVsIH0gPSBsb2FkQmFiZWxMaWJzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuY2FjaGVbZmlsZW5hbWVdKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGVbZmlsZW5hbWVdO1xuXG4gICAgICAgIGNvbnN0IG9wdHMgICAgID0gRVNOZXh0VGVzdEZpbGVDb21waWxlci5nZXRCYWJlbE9wdGlvbnMoZmlsZW5hbWUsIGNvZGUpO1xuICAgICAgICBjb25zdCBjb21waWxlZCA9IGJhYmVsLnRyYW5zZm9ybShjb2RlLCBvcHRzKTtcblxuICAgICAgICB0aGlzLmNhY2hlW2ZpbGVuYW1lXSA9IGNvbXBpbGVkLmNvZGU7XG5cbiAgICAgICAgcmV0dXJuIGNvbXBpbGVkLmNvZGU7XG4gICAgfVxuXG4gICAgX2dldFJlcXVpcmVDb21waWxlcnMgKCkge1xuICAgICAgICByZXR1cm4geyAnLmpzJzogKGNvZGUsIGZpbGVuYW1lKSA9PiB0aGlzLl9jb21waWxlQ29kZShjb2RlLCBmaWxlbmFtZSkgfTtcbiAgICB9XG5cbiAgICBnZXRTdXBwb3J0ZWRFeHRlbnNpb24gKCkge1xuICAgICAgICByZXR1cm4gJy5qcyc7XG4gICAgfVxufVxuIl19