"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.load = void 0;
const api_based_1 = __importDefault(require("./test-file/api-based"));
const url_1 = __importDefault(require("url"));
const index_1 = __importDefault(require("./index"));
const setup_sourcemap_support_1 = require("../utils/setup-sourcemap-support");
function getFilenameFromURL(url) {
    try {
        return url_1.default.fileURLToPath(url);
    }
    catch (_) {
        return null;
    }
}
async function load(url, context, defaultLoad) {
    const isNodeModulesDep = api_based_1.default._isNodeModulesDep(url);
    const isTestcafeLibDep = api_based_1.default._isTestCafeLibDep(url);
    const filename = getFilenameFromURL(url);
    if (isNodeModulesDep || isTestcafeLibDep || !filename)
        return defaultLoad(url, context, defaultLoad);
    const testFilesInfo = await index_1.default.createTestFileInfo(filename);
    if (testFilesInfo === null || testFilesInfo === void 0 ? void 0 : testFilesInfo.compiler) {
        const [compiledCode] = await testFilesInfo.compiler.precompile([testFilesInfo]);
        setup_sourcemap_support_1.fileContentsCache[url] = compiledCode;
        return {
            format: context.format || 'module',
            source: compiledCode,
            shortCircuit: true,
        };
    }
    return defaultLoad(url, context, defaultLoad);
}
exports.load = load;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNtLWxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21waWxlci9lc20tbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHNFQUFpRTtBQUNqRSw4Q0FBMkI7QUFDM0Isb0RBQStCO0FBQy9CLDhFQUFxRTtBQWNyRSxTQUFTLGtCQUFrQixDQUFFLEdBQVc7SUFDcEMsSUFBSTtRQUNBLE9BQU8sYUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUN0QztJQUNELE9BQU8sQ0FBQyxFQUFFO1FBQ04sT0FBTyxJQUFJLENBQUM7S0FDZjtBQUNMLENBQUM7QUFFTSxLQUFLLFVBQVUsSUFBSSxDQUFFLEdBQVcsRUFBRSxPQUFnQixFQUFFLFdBQXFCO0lBQzVFLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQTRCLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0UsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBNEIsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3RSxNQUFNLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV6QyxJQUFJLGdCQUFnQixJQUFJLGdCQUFnQixJQUFJLENBQUMsUUFBUTtRQUNqRCxPQUFPLFdBQVcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBRWxELE1BQU0sYUFBYSxHQUFHLE1BQU0sZUFBUSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRWxFLElBQUksYUFBYSxhQUFiLGFBQWEsdUJBQWIsYUFBYSxDQUFFLFFBQVEsRUFBRTtRQUN6QixNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSxhQUFhLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFFaEYsMkNBQWlCLENBQUMsR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDO1FBRXRDLE9BQU87WUFDSCxNQUFNLEVBQVEsT0FBTyxDQUFDLE1BQU0sSUFBSSxRQUFRO1lBQ3hDLE1BQU0sRUFBUSxZQUFZO1lBQzFCLFlBQVksRUFBRSxJQUFJO1NBQ3JCLENBQUM7S0FDTDtJQUVELE9BQU8sV0FBVyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQXZCRCxvQkF1QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQVBJQmFzZWRUZXN0RmlsZUNvbXBpbGVyQmFzZSBmcm9tICcuL3Rlc3QtZmlsZS9hcGktYmFzZWQnO1xuaW1wb3J0IHVybFV0aWxzIGZyb20gJ3VybCc7XG5pbXBvcnQgQ29tcGlsZXIgZnJvbSAnLi9pbmRleCc7XG5pbXBvcnQgeyBmaWxlQ29udGVudHNDYWNoZSB9IGZyb20gJy4uL3V0aWxzL3NldHVwLXNvdXJjZW1hcC1zdXBwb3J0JztcblxuaW50ZXJmYWNlIExvYWQge1xuICAgIGZvcm1hdDogc3RyaW5nO1xuICAgIHNob3J0Q2lyY3VpdD86IGJvb2xlYW47XG4gICAgc291cmNlOiBzdHJpbmcgfCBBcnJheUJ1ZmZlcjtcbn1cblxuaW50ZXJmYWNlIENvbnRleHQge1xuICAgIGNvbmRpdGlvbnM6IHN0cmluZ1tdO1xuICAgIGZvcm1hdD86IHN0cmluZyB8IG51bGw7XG4gICAgaW1wb3J0QXNzZXJ0aW9uczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbmZ1bmN0aW9uIGdldEZpbGVuYW1lRnJvbVVSTCAodXJsOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gdXJsVXRpbHMuZmlsZVVSTFRvUGF0aCh1cmwpO1xuICAgIH1cbiAgICBjYXRjaCAoXykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkICh1cmw6IHN0cmluZywgY29udGV4dDogQ29udGV4dCwgZGVmYXVsdExvYWQ6IEZ1bmN0aW9uKTogUHJvbWlzZTxMb2FkPiB7XG4gICAgY29uc3QgaXNOb2RlTW9kdWxlc0RlcCA9IEFQSUJhc2VkVGVzdEZpbGVDb21waWxlckJhc2UuX2lzTm9kZU1vZHVsZXNEZXAodXJsKTtcbiAgICBjb25zdCBpc1Rlc3RjYWZlTGliRGVwID0gQVBJQmFzZWRUZXN0RmlsZUNvbXBpbGVyQmFzZS5faXNUZXN0Q2FmZUxpYkRlcCh1cmwpO1xuICAgIGNvbnN0IGZpbGVuYW1lID0gZ2V0RmlsZW5hbWVGcm9tVVJMKHVybCk7XG5cbiAgICBpZiAoaXNOb2RlTW9kdWxlc0RlcCB8fCBpc1Rlc3RjYWZlTGliRGVwIHx8ICFmaWxlbmFtZSlcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRMb2FkKHVybCwgY29udGV4dCwgZGVmYXVsdExvYWQpO1xuXG4gICAgY29uc3QgdGVzdEZpbGVzSW5mbyA9IGF3YWl0IENvbXBpbGVyLmNyZWF0ZVRlc3RGaWxlSW5mbyhmaWxlbmFtZSk7XG5cbiAgICBpZiAodGVzdEZpbGVzSW5mbz8uY29tcGlsZXIpIHtcbiAgICAgICAgY29uc3QgW2NvbXBpbGVkQ29kZV0gPSBhd2FpdCB0ZXN0RmlsZXNJbmZvLmNvbXBpbGVyLnByZWNvbXBpbGUoW3Rlc3RGaWxlc0luZm9dKTtcblxuICAgICAgICBmaWxlQ29udGVudHNDYWNoZVt1cmxdID0gY29tcGlsZWRDb2RlO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmb3JtYXQ6ICAgICAgIGNvbnRleHQuZm9ybWF0IHx8ICdtb2R1bGUnLFxuICAgICAgICAgICAgc291cmNlOiAgICAgICBjb21waWxlZENvZGUsXG4gICAgICAgICAgICBzaG9ydENpcmN1aXQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmF1bHRMb2FkKHVybCwgY29udGV4dCwgZGVmYXVsdExvYWQpO1xufVxuIl19