123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- "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;
- // Node.js < 20
- function globalPreload(context) {
- transport = createTransport(context.port);
- return `
- globalThis.__esmLoaderPortPreV20 = port;
- `;
- }
- // Node.js >= 20
- function initialize(data) {
- transport = createTransport(data === null || data === void 0 ? void 0 : data.port);
- }
- function createTransport(port) {
- return new _portTransport.PortTransport(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;
- }
- });
- }
- module.exports = {
- resolve,
- load,
- globalPreload,
- initialize
- };
|