UNPKG

testcafe

Version:

Automated browser testing for the modern web development stack.

60 lines 9.63 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_libs_1 = __importDefault(require("../../../babel/load-libs")); const api_based_1 = __importDefault(require("../../api-based")); const is_flow_code_1 = __importDefault(require("./is-flow-code")); const get_base_babel_options_1 = __importDefault(require("../../../babel/get-base-babel-options")); const disable_v8_optimization_note_1 = __importDefault(require("../../disable-v8-optimization-note")); const extensions_1 = __importDefault(require("../extensions")); //NOTE: The semicolon ; prevents the declaration from being bound with eval const DISABLE_V8_OPTIMIZATION_CODE = `;/*${disable_v8_optimization_note_1.default}*/ eval(""); `; class ESNextTestFileCompiler extends api_based_1.default { static getBabelOptions(filename, code, { esm } = {}) { const { presetStage2, presetFlow, transformRuntime, presetEnvForTestCode, presetReact, moduleResolver, transformPrivateMethods, transformClassProperties, transformClassStaticBlock, } = (0, load_libs_1.default)({ esm }); const opts = Object.assign({}, get_base_babel_options_1.default, { presets: [presetStage2, presetEnvForTestCode, presetReact], plugins: [transformRuntime, moduleResolver, transformPrivateMethods, transformClassProperties, transformClassStaticBlock], sourceMaps: 'inline', filename, }); if ((0, is_flow_code_1.default)(code)) opts.presets.push(presetFlow); return opts; } _compileCode(code, filename) { const { babel } = (0, load_libs_1.default)(this); if (this.cache[filename]) return this.cache[filename]; if (this.esm) code += DISABLE_V8_OPTIMIZATION_CODE; const opts = ESNextTestFileCompiler.getBabelOptions(filename, code, this); const compiled = babel.transform(code, opts); this.cache[filename] = compiled.code; return compiled.code; } _getRequireCompilers() { const requireCompilers = { [extensions_1.default.js]: (code, filename) => this._compileCode(code, filename), [extensions_1.default.jsx]: (code, filename) => this._compileCode(code, filename), [extensions_1.default.cjs]: (code, filename) => this._compileCode(code, filename), }; if (this.esm) requireCompilers[extensions_1.default.mjs] = (code, filename) => this._compileCode(code, filename); return requireCompilers; } get canCompileInEsm() { return true; } getSupportedExtension() { const supportedExtensions = [extensions_1.default.js, extensions_1.default.jsx, extensions_1.default.cjs, extensions_1.default.mjs]; return supportedExtensions; } } exports.default = ESNextTestFileCompiler; module.exports = exports.default; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcGlsZXIvdGVzdC1maWxlL2Zvcm1hdHMvZXMtbmV4dC9jb21waWxlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlFQUFxRDtBQUNyRCxnRUFBMkQ7QUFDM0Qsa0VBQXdDO0FBQ3hDLG1HQUF1RTtBQUN2RSxzR0FBOEU7QUFDOUUsK0RBQXVDO0FBRXZDLDJFQUEyRTtBQUMzRSxNQUFNLDRCQUE0QixHQUNsQyxNQUFNLHNDQUE0Qjs7Q0FFakMsQ0FBQztBQUVGLE1BQXFCLHNCQUF1QixTQUFRLG1CQUE0QjtJQUU1RSxNQUFNLENBQUMsZUFBZSxDQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO1FBQ2hELE1BQU0sRUFDRixZQUFZLEVBQ1osVUFBVSxFQUNWLGdCQUFnQixFQUNoQixvQkFBb0IsRUFDcEIsV0FBVyxFQUNYLGNBQWMsRUFDZCx1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLHlCQUF5QixHQUM1QixHQUFHLElBQUEsbUJBQWEsRUFBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFM0IsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsZ0NBQWtCLEVBQUU7WUFDL0MsT0FBTyxFQUFLLENBQUMsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFdBQVcsQ0FBQztZQUM3RCxPQUFPLEVBQUssQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLEVBQUUseUJBQXlCLENBQUM7WUFDNUgsVUFBVSxFQUFFLFFBQVE7WUFDcEIsUUFBUTtTQUNYLENBQUMsQ0FBQztRQUVILElBQUksSUFBQSxzQkFBVSxFQUFDLElBQUksQ0FBQztZQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVsQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsWUFBWSxDQUFFLElBQUksRUFBRSxRQUFRO1FBQ3hCLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFBLG1CQUFhLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUNwQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFaEMsSUFBSSxJQUFJLENBQUMsR0FBRztZQUNSLElBQUksSUFBSSw0QkFBNEIsQ0FBQztRQUV6QyxNQUFNLElBQUksR0FBTyxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5RSxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFFckMsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxvQkFBb0I7UUFDaEIsTUFBTSxnQkFBZ0IsR0FBRztZQUNyQixDQUFDLG9CQUFVLENBQUMsRUFBRSxDQUFDLEVBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUM7WUFDdkUsQ0FBQyxvQkFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO1lBQ3ZFLENBQUMsb0JBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQztTQUMxRSxDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsR0FBRztZQUNSLGdCQUFnQixDQUFDLG9CQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUU3RixPQUFPLGdCQUFnQixDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDZixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQscUJBQXFCO1FBQ2pCLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxvQkFBVSxDQUFDLEVBQUUsRUFBRSxvQkFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTVGLE9BQU8sbUJBQW1CLENBQUM7SUFDL0IsQ0FBQztDQUNKO0FBbkVELHlDQW1FQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2FkQmFiZWxMaWJzIGZyb20gJy4uLy4uLy4uL2JhYmVsL2xvYWQtbGlicyc7XG5pbXBvcnQgQVBJQmFzZWRUZXN0RmlsZUNvbXBpbGVyQmFzZSBmcm9tICcuLi8uLi9hcGktYmFzZWQnO1xuaW1wb3J0IGlzRmxvd0NvZGUgZnJvbSAnLi9pcy1mbG93LWNvZGUnO1xuaW1wb3J0IEJBU0VfQkFCRUxfT1BUSU9OUyBmcm9tICcuLi8uLi8uLi9iYWJlbC9nZXQtYmFzZS1iYWJlbC1vcHRpb25zJztcbmltcG9ydCBESVNBQkxFX1Y4X09QVElNSVpBVElPTl9OT1RFIGZyb20gJy4uLy4uL2Rpc2FibGUtdjgtb3B0aW1pemF0aW9uLW5vdGUnO1xuaW1wb3J0IEV4dGVuc2lvbnMgZnJvbSAnLi4vZXh0ZW5zaW9ucyc7XG5cbi8vTk9URTogVGhlIHNlbWljb2xvbiA7IHByZXZlbnRzIHRoZSBkZWNsYXJhdGlvbiBmcm9tIGJlaW5nIGJvdW5kIHdpdGggZXZhbFxuY29uc3QgRElTQUJMRV9WOF9PUFRJTUlaQVRJT05fQ09ERSA9XG5gOy8qJHtESVNBQkxFX1Y4X09QVElNSVpBVElPTl9OT1RFfSovXG5ldmFsKFwiXCIpO1xuYDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRVNOZXh0VGVzdEZpbGVDb21waWxlciBleHRlbmRzIEFQSUJhc2VkVGVzdEZpbGVDb21waWxlckJhc2Uge1xuXG4gICAgc3RhdGljIGdldEJhYmVsT3B0aW9ucyAoZmlsZW5hbWUsIGNvZGUsIHsgZXNtIH0gPSB7fSkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBwcmVzZXRTdGFnZTIsXG4gICAgICAgICAgICBwcmVzZXRGbG93LFxuICAgICAgICAgICAgdHJhbnNmb3JtUnVudGltZSxcbiAgICAgICAgICAgIHByZXNldEVudkZvclRlc3RDb2RlLFxuICAgICAgICAgICAgcHJlc2V0UmVhY3QsXG4gICAgICAgICAgICBtb2R1bGVSZXNvbHZlcixcbiAgICAgICAgICAgIHRyYW5zZm9ybVByaXZhdGVNZXRob2RzLFxuICAgICAgICAgICAgdHJhbnNmb3JtQ2xhc3NQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgdHJhbnNmb3JtQ2xhc3NTdGF0aWNCbG9jayxcbiAgICAgICAgfSA9IGxvYWRCYWJlbExpYnMoeyBlc20gfSk7XG5cbiAgICAgICAgY29uc3Qgb3B0cyA9IE9iamVjdC5hc3NpZ24oe30sIEJBU0VfQkFCRUxfT1BUSU9OUywge1xuICAgICAgICAgICAgcHJlc2V0czogICAgW3ByZXNldFN0YWdlMiwgcHJlc2V0RW52Rm9yVGVzdENvZGUsIHByZXNldFJlYWN0XSxcbiAgICAgICAgICAgIHBsdWdpbnM6ICAgIFt0cmFuc2Zvcm1SdW50aW1lLCBtb2R1bGVSZXNvbHZlciwgdHJhbnNmb3JtUHJpdmF0ZU1ldGhvZHMsIHRyYW5zZm9ybUNsYXNzUHJvcGVydGllcywgdHJhbnNmb3JtQ2xhc3NTdGF0aWNCbG9ja10sXG4gICAgICAgICAgICBzb3VyY2VNYXBzOiAnaW5saW5lJyxcbiAgICAgICAgICAgIGZpbGVuYW1lLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoaXNGbG93Q29kZShjb2RlKSlcbiAgICAgICAgICAgIG9wdHMucHJlc2V0cy5wdXNoKHByZXNldEZsb3cpO1xuXG4gICAgICAgIHJldHVybiBvcHRzO1xuICAgIH1cblxuICAgIF9jb21waWxlQ29kZSAoY29kZSwgZmlsZW5hbWUpIHtcbiAgICAgICAgY29uc3QgeyBiYWJlbCB9ID0gbG9hZEJhYmVsTGlicyh0aGlzKTtcblxuICAgICAgICBpZiAodGhpcy5jYWNoZVtmaWxlbmFtZV0pXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jYWNoZVtmaWxlbmFtZV07XG5cbiAgICAgICAgaWYgKHRoaXMuZXNtKVxuICAgICAgICAgICAgY29kZSArPSBESVNBQkxFX1Y4X09QVElNSVpBVElPTl9DT0RFO1xuXG4gICAgICAgIGNvbnN0IG9wdHMgICAgID0gRVNOZXh0VGVzdEZpbGVDb21waWxlci5nZXRCYWJlbE9wdGlvbnMoZmlsZW5hbWUsIGNvZGUsIHRoaXMpO1xuICAgICAgICBjb25zdCBjb21waWxlZCA9IGJhYmVsLnRyYW5zZm9ybShjb2RlLCBvcHRzKTtcblxuICAgICAgICB0aGlzLmNhY2hlW2ZpbGVuYW1lXSA9IGNvbXBpbGVkLmNvZGU7XG5cbiAgICAgICAgcmV0dXJuIGNvbXBpbGVkLmNvZGU7XG4gICAgfVxuXG4gICAgX2dldFJlcXVpcmVDb21waWxlcnMgKCkge1xuICAgICAgICBjb25zdCByZXF1aXJlQ29tcGlsZXJzID0ge1xuICAgICAgICAgICAgW0V4dGVuc2lvbnMuanNdOiAgKGNvZGUsIGZpbGVuYW1lKSA9PiB0aGlzLl9jb21waWxlQ29kZShjb2RlLCBmaWxlbmFtZSksXG4gICAgICAgICAgICBbRXh0ZW5zaW9ucy5qc3hdOiAoY29kZSwgZmlsZW5hbWUpID0+IHRoaXMuX2NvbXBpbGVDb2RlKGNvZGUsIGZpbGVuYW1lKSxcbiAgICAgICAgICAgIFtFeHRlbnNpb25zLmNqc106IChjb2RlLCBmaWxlbmFtZSkgPT4gdGhpcy5fY29tcGlsZUNvZGUoY29kZSwgZmlsZW5hbWUpLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLmVzbSlcbiAgICAgICAgICAgIHJlcXVpcmVDb21waWxlcnNbRXh0ZW5zaW9ucy5tanNdID0gKGNvZGUsIGZpbGVuYW1lKSA9PiB0aGlzLl9jb21waWxlQ29kZShjb2RlLCBmaWxlbmFtZSk7XG5cbiAgICAgICAgcmV0dXJuIHJlcXVpcmVDb21waWxlcnM7XG4gICAgfVxuXG4gICAgZ2V0IGNhbkNvbXBpbGVJbkVzbSAoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGdldFN1cHBvcnRlZEV4dGVuc2lvbiAoKSB7XG4gICAgICAgIGNvbnN0IHN1cHBvcnRlZEV4dGVuc2lvbnMgPSBbRXh0ZW5zaW9ucy5qcywgRXh0ZW5zaW9ucy5qc3gsIEV4dGVuc2lvbnMuY2pzLCBFeHRlbnNpb25zLm1qc107XG5cbiAgICAgICAgcmV0dXJuIHN1cHBvcnRlZEV4dGVuc2lvbnM7XG4gICAgfVxufVxuIl19