File: /var/www/quadcode.com/node_modules/@playwright/test/lib/transform/esmLoader.js
"use strict";
var _fs = _interopRequireDefault(require("fs"));
var _url = _interopRequireDefault(require("url"));
var _compilationCache = require("./compilationCache");
var _transform = require("./transform");
var _portTransport = require("./portTransport");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Copyright (c) Microsoft Corporation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Node < 18.6: defaultResolve takes 3 arguments.
// Node >= 18.6: nextResolve from the chain takes 2 arguments.
async function resolve(specifier, context, defaultResolve) {
var _currentFileDepsColle;
if (context.parentURL && context.parentURL.startsWith('file://')) {
const filename = _url.default.fileURLToPath(context.parentURL);
const resolved = (0, _transform.resolveHook)(filename, specifier);
if (resolved !== undefined) specifier = _url.default.pathToFileURL(resolved).toString();
}
const result = await defaultResolve(specifier, context, defaultResolve);
if (result !== null && result !== void 0 && result.url && result.url.startsWith('file://')) (_currentFileDepsColle = (0, _compilationCache.currentFileDepsCollector)()) === null || _currentFileDepsColle === void 0 ? void 0 : _currentFileDepsColle.add(_url.default.fileURLToPath(result.url));
return result;
}
// Node < 18.6: defaultLoad takes 3 arguments.
// Node >= 18.6: nextLoad from the chain takes 2 arguments.
async function load(moduleUrl, context, defaultLoad) {
var _transport;
// Bail out for wasm, json, etc.
// non-js files have context.format === undefined
if (context.format !== 'commonjs' && context.format !== 'module' && context.format !== undefined) return defaultLoad(moduleUrl, context, defaultLoad);
// Bail for built-in modules.
if (!moduleUrl.startsWith('file://')) return defaultLoad(moduleUrl, context, defaultLoad);
const filename = _url.default.fileURLToPath(moduleUrl);
// Bail for node_modules.
if (!(0, _transform.shouldTransform)(filename)) return defaultLoad(moduleUrl, context, defaultLoad);
const code = _fs.default.readFileSync(filename, 'utf-8');
const source = (0, _transform.transformHook)(code, filename, moduleUrl);
// Flush the source maps to the main thread.
await ((_transport = transport) === null || _transport === void 0 ? void 0 : _transport.send('pushToCompilationCache', {
cache: (0, _compilationCache.serializeCompilationCache)()
}));
// Output format is always the same as input format, if it was unknown, we always report modules.
// shortCircuit is required by Node >= 18.6 to designate no more loaders should be called.
return {
format: context.format || 'module',
source,
shortCircuit: true
};
}
let transport;
function globalPreload(context) {
transport = new _portTransport.PortTransport(context.port, async (method, params) => {
if (method === 'setTransformConfig') {
(0, _transform.setTransformConfig)(params.config);
return;
}
if (method === 'addToCompilationCache') {
(0, _compilationCache.addToCompilationCache)(params.cache);
return;
}
if (method === 'getCompilationCache') return {
cache: (0, _compilationCache.serializeCompilationCache)()
};
if (method === 'startCollectingFileDeps') {
(0, _compilationCache.startCollectingFileDeps)();
return;
}
if (method === 'stopCollectingFileDeps') {
(0, _compilationCache.stopCollectingFileDeps)(params.file);
return;
}
});
return `
globalThis.__esmLoaderPort = port;
`;
}
module.exports = {
resolve,
load,
globalPreload
};