You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					1205 lines
				
				33 KiB
			
		
		
			
		
	
	
					1205 lines
				
				33 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								import path, { dirname, resolve, extname, normalize, sep } from 'path';
							 | 
						||
| 
								 | 
							
								import isBuiltinModule from 'is-builtin-module';
							 | 
						||
| 
								 | 
							
								import deepMerge from 'deepmerge';
							 | 
						||
| 
								 | 
							
								import isModule from 'is-module';
							 | 
						||
| 
								 | 
							
								import fs, { realpathSync } from 'fs';
							 | 
						||
| 
								 | 
							
								import { promisify } from 'util';
							 | 
						||
| 
								 | 
							
								import { pathToFileURL, fileURLToPath } from 'url';
							 | 
						||
| 
								 | 
							
								import resolve$1 from 'resolve';
							 | 
						||
| 
								 | 
							
								import { createFilter } from '@rollup/pluginutils';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var version = "13.3.0";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								promisify(fs.access);
							 | 
						||
| 
								 | 
							
								const readFile$1 = promisify(fs.readFile);
							 | 
						||
| 
								 | 
							
								const realpath = promisify(fs.realpath);
							 | 
						||
| 
								 | 
							
								const stat = promisify(fs.stat);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								async function fileExists(filePath) {
							 | 
						||
| 
								 | 
							
								  try {
							 | 
						||
| 
								 | 
							
								    const res = await stat(filePath);
							 | 
						||
| 
								 | 
							
								    return res.isFile();
							 | 
						||
| 
								 | 
							
								  } catch {
							 | 
						||
| 
								 | 
							
								    return false;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								async function resolveSymlink(path) {
							 | 
						||
| 
								 | 
							
								  return (await fileExists(path)) ? realpath(path) : path;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const onError = (error) => {
							 | 
						||
| 
								 | 
							
								  if (error.code === 'ENOENT') {
							 | 
						||
| 
								 | 
							
								    return false;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  throw error;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const makeCache = (fn) => {
							 | 
						||
| 
								 | 
							
								  const cache = new Map();
							 | 
						||
| 
								 | 
							
								  const wrapped = async (param, done) => {
							 | 
						||
| 
								 | 
							
								    if (cache.has(param) === false) {
							 | 
						||
| 
								 | 
							
								      cache.set(
							 | 
						||
| 
								 | 
							
								        param,
							 | 
						||
| 
								 | 
							
								        fn(param).catch((err) => {
							 | 
						||
| 
								 | 
							
								          cache.delete(param);
							 | 
						||
| 
								 | 
							
								          throw err;
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								      );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    try {
							 | 
						||
| 
								 | 
							
								      const result = cache.get(param);
							 | 
						||
| 
								 | 
							
								      const value = await result;
							 | 
						||
| 
								 | 
							
								      return done(null, value);
							 | 
						||
| 
								 | 
							
								    } catch (error) {
							 | 
						||
| 
								 | 
							
								      return done(error);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  wrapped.clear = () => cache.clear();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return wrapped;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const isDirCached = makeCache(async (file) => {
							 | 
						||
| 
								 | 
							
								  try {
							 | 
						||
| 
								 | 
							
								    const stats = await stat(file);
							 | 
						||
| 
								 | 
							
								    return stats.isDirectory();
							 | 
						||
| 
								 | 
							
								  } catch (error) {
							 | 
						||
| 
								 | 
							
								    return onError(error);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const isFileCached = makeCache(async (file) => {
							 | 
						||
| 
								 | 
							
								  try {
							 | 
						||
| 
								 | 
							
								    const stats = await stat(file);
							 | 
						||
| 
								 | 
							
								    return stats.isFile();
							 | 
						||
| 
								 | 
							
								  } catch (error) {
							 | 
						||
| 
								 | 
							
								    return onError(error);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const readCachedFile = makeCache(readFile$1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function handleDeprecatedOptions(opts) {
							 | 
						||
| 
								 | 
							
								  const warnings = [];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (opts.customResolveOptions) {
							 | 
						||
| 
								 | 
							
								    const { customResolveOptions } = opts;
							 | 
						||
| 
								 | 
							
								    if (customResolveOptions.moduleDirectory) {
							 | 
						||
| 
								 | 
							
								      // eslint-disable-next-line no-param-reassign
							 | 
						||
| 
								 | 
							
								      opts.moduleDirectories = Array.isArray(customResolveOptions.moduleDirectory)
							 | 
						||
| 
								 | 
							
								        ? customResolveOptions.moduleDirectory
							 | 
						||
| 
								 | 
							
								        : [customResolveOptions.moduleDirectory];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      warnings.push(
							 | 
						||
| 
								 | 
							
								        'node-resolve: The `customResolveOptions.moduleDirectory` option has been deprecated. Use `moduleDirectories`, which must be an array.'
							 | 
						||
| 
								 | 
							
								      );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (customResolveOptions.preserveSymlinks) {
							 | 
						||
| 
								 | 
							
								      throw new Error(
							 | 
						||
| 
								 | 
							
								        'node-resolve: `customResolveOptions.preserveSymlinks` is no longer an option. We now always use the rollup `preserveSymlinks` option.'
							 | 
						||
| 
								 | 
							
								      );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    [
							 | 
						||
| 
								 | 
							
								      'basedir',
							 | 
						||
| 
								 | 
							
								      'package',
							 | 
						||
| 
								 | 
							
								      'extensions',
							 | 
						||
| 
								 | 
							
								      'includeCoreModules',
							 | 
						||
| 
								 | 
							
								      'readFile',
							 | 
						||
| 
								 | 
							
								      'isFile',
							 | 
						||
| 
								 | 
							
								      'isDirectory',
							 | 
						||
| 
								 | 
							
								      'realpath',
							 | 
						||
| 
								 | 
							
								      'packageFilter',
							 | 
						||
| 
								 | 
							
								      'pathFilter',
							 | 
						||
| 
								 | 
							
								      'paths',
							 | 
						||
| 
								 | 
							
								      'packageIterator'
							 | 
						||
| 
								 | 
							
								    ].forEach((resolveOption) => {
							 | 
						||
| 
								 | 
							
								      if (customResolveOptions[resolveOption]) {
							 | 
						||
| 
								 | 
							
								        throw new Error(
							 | 
						||
| 
								 | 
							
								          `node-resolve: \`customResolveOptions.${resolveOption}\` is no longer an option. If you need this, please open an issue.`
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return { warnings };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// returns the imported package name for bare module imports
							 | 
						||
| 
								 | 
							
								function getPackageName(id) {
							 | 
						||
| 
								 | 
							
								  if (id.startsWith('.') || id.startsWith('/')) {
							 | 
						||
| 
								 | 
							
								    return null;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const split = id.split('/');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // @my-scope/my-package/foo.js -> @my-scope/my-package
							 | 
						||
| 
								 | 
							
								  // @my-scope/my-package -> @my-scope/my-package
							 | 
						||
| 
								 | 
							
								  if (split[0][0] === '@') {
							 | 
						||
| 
								 | 
							
								    return `${split[0]}/${split[1]}`;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // my-package/foo.js -> my-package
							 | 
						||
| 
								 | 
							
								  // my-package -> my-package
							 | 
						||
| 
								 | 
							
								  return split[0];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function getMainFields(options) {
							 | 
						||
| 
								 | 
							
								  let mainFields;
							 | 
						||
| 
								 | 
							
								  if (options.mainFields) {
							 | 
						||
| 
								 | 
							
								    ({ mainFields } = options);
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    mainFields = ['module', 'main'];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  if (options.browser && mainFields.indexOf('browser') === -1) {
							 | 
						||
| 
								 | 
							
								    return ['browser'].concat(mainFields);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  if (!mainFields.length) {
							 | 
						||
| 
								 | 
							
								    throw new Error('Please ensure at least one `mainFields` value is specified');
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return mainFields;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function getPackageInfo(options) {
							 | 
						||
| 
								 | 
							
								  const {
							 | 
						||
| 
								 | 
							
								    cache,
							 | 
						||
| 
								 | 
							
								    extensions,
							 | 
						||
| 
								 | 
							
								    pkg,
							 | 
						||
| 
								 | 
							
								    mainFields,
							 | 
						||
| 
								 | 
							
								    preserveSymlinks,
							 | 
						||
| 
								 | 
							
								    useBrowserOverrides,
							 | 
						||
| 
								 | 
							
								    rootDir,
							 | 
						||
| 
								 | 
							
								    ignoreSideEffectsForRoot
							 | 
						||
| 
								 | 
							
								  } = options;
							 | 
						||
| 
								 | 
							
								  let { pkgPath } = options;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (cache.has(pkgPath)) {
							 | 
						||
| 
								 | 
							
								    return cache.get(pkgPath);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // browserify/resolve doesn't realpath paths returned in its packageFilter callback
							 | 
						||
| 
								 | 
							
								  if (!preserveSymlinks) {
							 | 
						||
| 
								 | 
							
								    pkgPath = realpathSync(pkgPath);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const pkgRoot = dirname(pkgPath);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const packageInfo = {
							 | 
						||
| 
								 | 
							
								    // copy as we are about to munge the `main` field of `pkg`.
							 | 
						||
| 
								 | 
							
								    packageJson: { ...pkg },
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // path to package.json file
							 | 
						||
| 
								 | 
							
								    packageJsonPath: pkgPath,
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // directory containing the package.json
							 | 
						||
| 
								 | 
							
								    root: pkgRoot,
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // which main field was used during resolution of this module (main, module, or browser)
							 | 
						||
| 
								 | 
							
								    resolvedMainField: 'main',
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // whether the browser map was used to resolve the entry point to this module
							 | 
						||
| 
								 | 
							
								    browserMappedMain: false,
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // the entry point of the module with respect to the selected main field and any
							 | 
						||
| 
								 | 
							
								    // relevant browser mappings.
							 | 
						||
| 
								 | 
							
								    resolvedEntryPoint: ''
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  let overriddenMain = false;
							 | 
						||
| 
								 | 
							
								  for (let i = 0; i < mainFields.length; i++) {
							 | 
						||
| 
								 | 
							
								    const field = mainFields[i];
							 | 
						||
| 
								 | 
							
								    if (typeof pkg[field] === 'string') {
							 | 
						||
| 
								 | 
							
								      pkg.main = pkg[field];
							 | 
						||
| 
								 | 
							
								      packageInfo.resolvedMainField = field;
							 | 
						||
| 
								 | 
							
								      overriddenMain = true;
							 | 
						||
| 
								 | 
							
								      break;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const internalPackageInfo = {
							 | 
						||
| 
								 | 
							
								    cachedPkg: pkg,
							 | 
						||
| 
								 | 
							
								    hasModuleSideEffects: () => null,
							 | 
						||
| 
								 | 
							
								    hasPackageEntry: overriddenMain !== false || mainFields.indexOf('main') !== -1,
							 | 
						||
| 
								 | 
							
								    packageBrowserField:
							 | 
						||
| 
								 | 
							
								      useBrowserOverrides &&
							 | 
						||
| 
								 | 
							
								      typeof pkg.browser === 'object' &&
							 | 
						||
| 
								 | 
							
								      Object.keys(pkg.browser).reduce((browser, key) => {
							 | 
						||
| 
								 | 
							
								        let resolved = pkg.browser[key];
							 | 
						||
| 
								 | 
							
								        if (resolved && resolved[0] === '.') {
							 | 
						||
| 
								 | 
							
								          resolved = resolve(pkgRoot, resolved);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        /* eslint-disable no-param-reassign */
							 | 
						||
| 
								 | 
							
								        browser[key] = resolved;
							 | 
						||
| 
								 | 
							
								        if (key[0] === '.') {
							 | 
						||
| 
								 | 
							
								          const absoluteKey = resolve(pkgRoot, key);
							 | 
						||
| 
								 | 
							
								          browser[absoluteKey] = resolved;
							 | 
						||
| 
								 | 
							
								          if (!extname(key)) {
							 | 
						||
| 
								 | 
							
								            extensions.reduce((subBrowser, ext) => {
							 | 
						||
| 
								 | 
							
								              subBrowser[absoluteKey + ext] = subBrowser[key];
							 | 
						||
| 
								 | 
							
								              return subBrowser;
							 | 
						||
| 
								 | 
							
								            }, browser);
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return browser;
							 | 
						||
| 
								 | 
							
								      }, {}),
							 | 
						||
| 
								 | 
							
								    packageInfo
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const browserMap = internalPackageInfo.packageBrowserField;
							 | 
						||
| 
								 | 
							
								  if (
							 | 
						||
| 
								 | 
							
								    useBrowserOverrides &&
							 | 
						||
| 
								 | 
							
								    typeof pkg.browser === 'object' &&
							 | 
						||
| 
								 | 
							
								    // eslint-disable-next-line no-prototype-builtins
							 | 
						||
| 
								 | 
							
								    browserMap.hasOwnProperty(pkg.main)
							 | 
						||
| 
								 | 
							
								  ) {
							 | 
						||
| 
								 | 
							
								    packageInfo.resolvedEntryPoint = browserMap[pkg.main];
							 | 
						||
| 
								 | 
							
								    packageInfo.browserMappedMain = true;
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    // index.node is technically a valid default entrypoint as well...
							 | 
						||
| 
								 | 
							
								    packageInfo.resolvedEntryPoint = resolve(pkgRoot, pkg.main || 'index.js');
							 | 
						||
| 
								 | 
							
								    packageInfo.browserMappedMain = false;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (!ignoreSideEffectsForRoot || rootDir !== pkgRoot) {
							 | 
						||
| 
								 | 
							
								    const packageSideEffects = pkg.sideEffects;
							 | 
						||
| 
								 | 
							
								    if (typeof packageSideEffects === 'boolean') {
							 | 
						||
| 
								 | 
							
								      internalPackageInfo.hasModuleSideEffects = () => packageSideEffects;
							 | 
						||
| 
								 | 
							
								    } else if (Array.isArray(packageSideEffects)) {
							 | 
						||
| 
								 | 
							
								      const finalPackageSideEffects = packageSideEffects.map((sideEffect) => {
							 | 
						||
| 
								 | 
							
								        /*
							 | 
						||
| 
								 | 
							
								         * The array accepts simple glob patterns to the relevant files... Patterns like .css, which do not include a /, will be treated like **\/.css.
							 | 
						||
| 
								 | 
							
								         * https://webpack.js.org/guides/tree-shaking/
							 | 
						||
| 
								 | 
							
								         */
							 | 
						||
| 
								 | 
							
								        if (sideEffect.includes('/')) {
							 | 
						||
| 
								 | 
							
								          return sideEffect;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return `**/${sideEffect}`;
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								      internalPackageInfo.hasModuleSideEffects = createFilter(finalPackageSideEffects, null, {
							 | 
						||
| 
								 | 
							
								        resolve: pkgRoot
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  cache.set(pkgPath, internalPackageInfo);
							 | 
						||
| 
								 | 
							
								  return internalPackageInfo;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function normalizeInput(input) {
							 | 
						||
| 
								 | 
							
								  if (Array.isArray(input)) {
							 | 
						||
| 
								 | 
							
								    return input;
							 | 
						||
| 
								 | 
							
								  } else if (typeof input === 'object') {
							 | 
						||
| 
								 | 
							
								    return Object.values(input);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // otherwise it's a string
							 | 
						||
| 
								 | 
							
								  return [input];
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* eslint-disable no-await-in-loop */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function isModuleDir(current, moduleDirs) {
							 | 
						||
| 
								 | 
							
								  return moduleDirs.some((dir) => current.endsWith(dir));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								async function findPackageJson(base, moduleDirs) {
							 | 
						||
| 
								 | 
							
								  const { root } = path.parse(base);
							 | 
						||
| 
								 | 
							
								  let current = base;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  while (current !== root && !isModuleDir(current, moduleDirs)) {
							 | 
						||
| 
								 | 
							
								    const pkgJsonPath = path.join(current, 'package.json');
							 | 
						||
| 
								 | 
							
								    if (await fileExists(pkgJsonPath)) {
							 | 
						||
| 
								 | 
							
								      const pkgJsonString = fs.readFileSync(pkgJsonPath, 'utf-8');
							 | 
						||
| 
								 | 
							
								      return { pkgJson: JSON.parse(pkgJsonString), pkgPath: current, pkgJsonPath };
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    current = path.resolve(current, '..');
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return null;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function isUrl(str) {
							 | 
						||
| 
								 | 
							
								  try {
							 | 
						||
| 
								 | 
							
								    return !!new URL(str);
							 | 
						||
| 
								 | 
							
								  } catch (_) {
							 | 
						||
| 
								 | 
							
								    return false;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function isConditions(exports) {
							 | 
						||
| 
								 | 
							
								  return typeof exports === 'object' && Object.keys(exports).every((k) => !k.startsWith('.'));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function isMappings(exports) {
							 | 
						||
| 
								 | 
							
								  return typeof exports === 'object' && !isConditions(exports);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function isMixedExports(exports) {
							 | 
						||
| 
								 | 
							
								  const keys = Object.keys(exports);
							 | 
						||
| 
								 | 
							
								  return keys.some((k) => k.startsWith('.')) && keys.some((k) => !k.startsWith('.'));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function createBaseErrorMsg(importSpecifier, importer) {
							 | 
						||
| 
								 | 
							
								  return `Could not resolve import "${importSpecifier}" in ${importer}`;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function createErrorMsg(context, reason, internal) {
							 | 
						||
| 
								 | 
							
								  const { importSpecifier, importer, pkgJsonPath } = context;
							 | 
						||
| 
								 | 
							
								  const base = createBaseErrorMsg(importSpecifier, importer);
							 | 
						||
| 
								 | 
							
								  const field = internal ? 'imports' : 'exports';
							 | 
						||
| 
								 | 
							
								  return `${base} using ${field} defined in ${pkgJsonPath}.${reason ? ` ${reason}` : ''}`;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class ResolveError extends Error {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class InvalidConfigurationError extends ResolveError {
							 | 
						||
| 
								 | 
							
								  constructor(context, reason) {
							 | 
						||
| 
								 | 
							
								    super(createErrorMsg(context, `Invalid "exports" field. ${reason}`));
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class InvalidModuleSpecifierError extends ResolveError {
							 | 
						||
| 
								 | 
							
								  constructor(context, internal, reason) {
							 | 
						||
| 
								 | 
							
								    super(createErrorMsg(context, reason, internal));
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class InvalidPackageTargetError extends ResolveError {
							 | 
						||
| 
								 | 
							
								  constructor(context, reason) {
							 | 
						||
| 
								 | 
							
								    super(createErrorMsg(context, reason));
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* eslint-disable no-await-in-loop, no-undefined */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function includesInvalidSegments(pathSegments, moduleDirs) {
							 | 
						||
| 
								 | 
							
								  return pathSegments
							 | 
						||
| 
								 | 
							
								    .split('/')
							 | 
						||
| 
								 | 
							
								    .slice(1)
							 | 
						||
| 
								 | 
							
								    .some((t) => ['.', '..', ...moduleDirs].includes(t));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								async function resolvePackageTarget(context, { target, subpath, pattern, internal }) {
							 | 
						||
| 
								 | 
							
								  if (typeof target === 'string') {
							 | 
						||
| 
								 | 
							
								    if (!pattern && subpath.length > 0 && !target.endsWith('/')) {
							 | 
						||
| 
								 | 
							
								      throw new InvalidModuleSpecifierError(context);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (!target.startsWith('./')) {
							 | 
						||
| 
								 | 
							
								      if (internal && !['/', '../'].some((p) => target.startsWith(p)) && !isUrl(target)) {
							 | 
						||
| 
								 | 
							
								        // this is a bare package import, remap it and resolve it using regular node resolve
							 | 
						||
| 
								 | 
							
								        if (pattern) {
							 | 
						||
| 
								 | 
							
								          const result = await context.resolveId(
							 | 
						||
| 
								 | 
							
								            target.replace(/\*/g, subpath),
							 | 
						||
| 
								 | 
							
								            context.pkgURL.href
							 | 
						||
| 
								 | 
							
								          );
							 | 
						||
| 
								 | 
							
								          return result ? pathToFileURL(result.location).href : null;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        const result = await context.resolveId(`${target}${subpath}`, context.pkgURL.href);
							 | 
						||
| 
								 | 
							
								        return result ? pathToFileURL(result.location).href : null;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      throw new InvalidPackageTargetError(context, `Invalid mapping: "${target}".`);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (includesInvalidSegments(target, context.moduleDirs)) {
							 | 
						||
| 
								 | 
							
								      throw new InvalidPackageTargetError(context, `Invalid mapping: "${target}".`);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const resolvedTarget = new URL(target, context.pkgURL);
							 | 
						||
| 
								 | 
							
								    if (!resolvedTarget.href.startsWith(context.pkgURL.href)) {
							 | 
						||
| 
								 | 
							
								      throw new InvalidPackageTargetError(
							 | 
						||
| 
								 | 
							
								        context,
							 | 
						||
| 
								 | 
							
								        `Resolved to ${resolvedTarget.href} which is outside package ${context.pkgURL.href}`
							 | 
						||
| 
								 | 
							
								      );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (includesInvalidSegments(subpath, context.moduleDirs)) {
							 | 
						||
| 
								 | 
							
								      throw new InvalidModuleSpecifierError(context);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (pattern) {
							 | 
						||
| 
								 | 
							
								      return resolvedTarget.href.replace(/\*/g, subpath);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return new URL(subpath, resolvedTarget).href;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (Array.isArray(target)) {
							 | 
						||
| 
								 | 
							
								    let lastError;
							 | 
						||
| 
								 | 
							
								    for (const item of target) {
							 | 
						||
| 
								 | 
							
								      try {
							 | 
						||
| 
								 | 
							
								        const resolved = await resolvePackageTarget(context, {
							 | 
						||
| 
								 | 
							
								          target: item,
							 | 
						||
| 
								 | 
							
								          subpath,
							 | 
						||
| 
								 | 
							
								          pattern,
							 | 
						||
| 
								 | 
							
								          internal
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // return if defined or null, but not undefined
							 | 
						||
| 
								 | 
							
								        if (resolved !== undefined) {
							 | 
						||
| 
								 | 
							
								          return resolved;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      } catch (error) {
							 | 
						||
| 
								 | 
							
								        if (!(error instanceof InvalidPackageTargetError)) {
							 | 
						||
| 
								 | 
							
								          throw error;
							 | 
						||
| 
								 | 
							
								        } else {
							 | 
						||
| 
								 | 
							
								          lastError = error;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (lastError) {
							 | 
						||
| 
								 | 
							
								      throw lastError;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return null;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (target && typeof target === 'object') {
							 | 
						||
| 
								 | 
							
								    for (const [key, value] of Object.entries(target)) {
							 | 
						||
| 
								 | 
							
								      if (key === 'default' || context.conditions.includes(key)) {
							 | 
						||
| 
								 | 
							
								        const resolved = await resolvePackageTarget(context, {
							 | 
						||
| 
								 | 
							
								          target: value,
							 | 
						||
| 
								 | 
							
								          subpath,
							 | 
						||
| 
								 | 
							
								          pattern,
							 | 
						||
| 
								 | 
							
								          internal
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        // return if defined or null, but not undefined
							 | 
						||
| 
								 | 
							
								        if (resolved !== undefined) {
							 | 
						||
| 
								 | 
							
								          return resolved;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return undefined;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (target === null) {
							 | 
						||
| 
								 | 
							
								    return null;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  throw new InvalidPackageTargetError(context, `Invalid exports field.`);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* eslint-disable no-await-in-loop */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								async function resolvePackageImportsExports(context, { matchKey, matchObj, internal }) {
							 | 
						||
| 
								 | 
							
								  if (!matchKey.endsWith('*') && matchKey in matchObj) {
							 | 
						||
| 
								 | 
							
								    const target = matchObj[matchKey];
							 | 
						||
| 
								 | 
							
								    const resolved = await resolvePackageTarget(context, { target, subpath: '', internal });
							 | 
						||
| 
								 | 
							
								    return resolved;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const expansionKeys = Object.keys(matchObj)
							 | 
						||
| 
								 | 
							
								    .filter((k) => k.endsWith('/') || k.endsWith('*'))
							 | 
						||
| 
								 | 
							
								    .sort((a, b) => b.length - a.length);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  for (const expansionKey of expansionKeys) {
							 | 
						||
| 
								 | 
							
								    const prefix = expansionKey.substring(0, expansionKey.length - 1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (expansionKey.endsWith('*') && matchKey.startsWith(prefix)) {
							 | 
						||
| 
								 | 
							
								      const target = matchObj[expansionKey];
							 | 
						||
| 
								 | 
							
								      const subpath = matchKey.substring(expansionKey.length - 1);
							 | 
						||
| 
								 | 
							
								      const resolved = await resolvePackageTarget(context, {
							 | 
						||
| 
								 | 
							
								        target,
							 | 
						||
| 
								 | 
							
								        subpath,
							 | 
						||
| 
								 | 
							
								        pattern: true,
							 | 
						||
| 
								 | 
							
								        internal
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								      return resolved;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (matchKey.startsWith(expansionKey)) {
							 | 
						||
| 
								 | 
							
								      const target = matchObj[expansionKey];
							 | 
						||
| 
								 | 
							
								      const subpath = matchKey.substring(expansionKey.length);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      const resolved = await resolvePackageTarget(context, { target, subpath, internal });
							 | 
						||
| 
								 | 
							
								      return resolved;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  throw new InvalidModuleSpecifierError(context, internal);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								async function resolvePackageExports(context, subpath, exports) {
							 | 
						||
| 
								 | 
							
								  if (isMixedExports(exports)) {
							 | 
						||
| 
								 | 
							
								    throw new InvalidConfigurationError(
							 | 
						||
| 
								 | 
							
								      context,
							 | 
						||
| 
								 | 
							
								      'All keys must either start with ./, or without one.'
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (subpath === '.') {
							 | 
						||
| 
								 | 
							
								    let mainExport;
							 | 
						||
| 
								 | 
							
								    // If exports is a String or Array, or an Object containing no keys starting with ".", then
							 | 
						||
| 
								 | 
							
								    if (typeof exports === 'string' || Array.isArray(exports) || isConditions(exports)) {
							 | 
						||
| 
								 | 
							
								      mainExport = exports;
							 | 
						||
| 
								 | 
							
								    } else if (isMappings(exports)) {
							 | 
						||
| 
								 | 
							
								      mainExport = exports['.'];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (mainExport) {
							 | 
						||
| 
								 | 
							
								      const resolved = await resolvePackageTarget(context, { target: mainExport, subpath: '' });
							 | 
						||
| 
								 | 
							
								      if (resolved) {
							 | 
						||
| 
								 | 
							
								        return resolved;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  } else if (isMappings(exports)) {
							 | 
						||
| 
								 | 
							
								    const resolvedMatch = await resolvePackageImportsExports(context, {
							 | 
						||
| 
								 | 
							
								      matchKey: subpath,
							 | 
						||
| 
								 | 
							
								      matchObj: exports
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (resolvedMatch) {
							 | 
						||
| 
								 | 
							
								      return resolvedMatch;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  throw new InvalidModuleSpecifierError(context);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								async function resolvePackageImports({
							 | 
						||
| 
								 | 
							
								  importSpecifier,
							 | 
						||
| 
								 | 
							
								  importer,
							 | 
						||
| 
								 | 
							
								  moduleDirs,
							 | 
						||
| 
								 | 
							
								  conditions,
							 | 
						||
| 
								 | 
							
								  resolveId
							 | 
						||
| 
								 | 
							
								}) {
							 | 
						||
| 
								 | 
							
								  const result = await findPackageJson(importer, moduleDirs);
							 | 
						||
| 
								 | 
							
								  if (!result) {
							 | 
						||
| 
								 | 
							
								    throw new Error(createBaseErrorMsg('. Could not find a parent package.json.'));
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const { pkgPath, pkgJsonPath, pkgJson } = result;
							 | 
						||
| 
								 | 
							
								  const pkgURL = pathToFileURL(`${pkgPath}/`);
							 | 
						||
| 
								 | 
							
								  const context = {
							 | 
						||
| 
								 | 
							
								    importer,
							 | 
						||
| 
								 | 
							
								    importSpecifier,
							 | 
						||
| 
								 | 
							
								    moduleDirs,
							 | 
						||
| 
								 | 
							
								    pkgURL,
							 | 
						||
| 
								 | 
							
								    pkgJsonPath,
							 | 
						||
| 
								 | 
							
								    conditions,
							 | 
						||
| 
								 | 
							
								    resolveId
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const { imports } = pkgJson;
							 | 
						||
| 
								 | 
							
								  if (!imports) {
							 | 
						||
| 
								 | 
							
								    throw new InvalidModuleSpecifierError(context, true);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (importSpecifier === '#' || importSpecifier.startsWith('#/')) {
							 | 
						||
| 
								 | 
							
								    throw new InvalidModuleSpecifierError(context, true, 'Invalid import specifier.');
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return resolvePackageImportsExports(context, {
							 | 
						||
| 
								 | 
							
								    matchKey: importSpecifier,
							 | 
						||
| 
								 | 
							
								    matchObj: imports,
							 | 
						||
| 
								 | 
							
								    internal: true
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const resolveImportPath = promisify(resolve$1);
							 | 
						||
| 
								 | 
							
								const readFile = promisify(fs.readFile);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								async function getPackageJson(importer, pkgName, resolveOptions, moduleDirectories) {
							 | 
						||
| 
								 | 
							
								  if (importer) {
							 | 
						||
| 
								 | 
							
								    const selfPackageJsonResult = await findPackageJson(importer, moduleDirectories);
							 | 
						||
| 
								 | 
							
								    if (selfPackageJsonResult && selfPackageJsonResult.pkgJson.name === pkgName) {
							 | 
						||
| 
								 | 
							
								      // the referenced package name is the current package
							 | 
						||
| 
								 | 
							
								      return selfPackageJsonResult;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  try {
							 | 
						||
| 
								 | 
							
								    const pkgJsonPath = await resolveImportPath(`${pkgName}/package.json`, resolveOptions);
							 | 
						||
| 
								 | 
							
								    const pkgJson = JSON.parse(await readFile(pkgJsonPath, 'utf-8'));
							 | 
						||
| 
								 | 
							
								    return { pkgJsonPath, pkgJson, pkgPath: dirname(pkgJsonPath) };
							 | 
						||
| 
								 | 
							
								  } catch (_) {
							 | 
						||
| 
								 | 
							
								    return null;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								async function resolveIdClassic({
							 | 
						||
| 
								 | 
							
								  importSpecifier,
							 | 
						||
| 
								 | 
							
								  packageInfoCache,
							 | 
						||
| 
								 | 
							
								  extensions,
							 | 
						||
| 
								 | 
							
								  mainFields,
							 | 
						||
| 
								 | 
							
								  preserveSymlinks,
							 | 
						||
| 
								 | 
							
								  useBrowserOverrides,
							 | 
						||
| 
								 | 
							
								  baseDir,
							 | 
						||
| 
								 | 
							
								  moduleDirectories,
							 | 
						||
| 
								 | 
							
								  rootDir,
							 | 
						||
| 
								 | 
							
								  ignoreSideEffectsForRoot
							 | 
						||
| 
								 | 
							
								}) {
							 | 
						||
| 
								 | 
							
								  let hasModuleSideEffects = () => null;
							 | 
						||
| 
								 | 
							
								  let hasPackageEntry = true;
							 | 
						||
| 
								 | 
							
								  let packageBrowserField = false;
							 | 
						||
| 
								 | 
							
								  let packageInfo;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const filter = (pkg, pkgPath) => {
							 | 
						||
| 
								 | 
							
								    const info = getPackageInfo({
							 | 
						||
| 
								 | 
							
								      cache: packageInfoCache,
							 | 
						||
| 
								 | 
							
								      extensions,
							 | 
						||
| 
								 | 
							
								      pkg,
							 | 
						||
| 
								 | 
							
								      pkgPath,
							 | 
						||
| 
								 | 
							
								      mainFields,
							 | 
						||
| 
								 | 
							
								      preserveSymlinks,
							 | 
						||
| 
								 | 
							
								      useBrowserOverrides,
							 | 
						||
| 
								 | 
							
								      rootDir,
							 | 
						||
| 
								 | 
							
								      ignoreSideEffectsForRoot
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    ({ packageInfo, hasModuleSideEffects, hasPackageEntry, packageBrowserField } = info);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return info.cachedPkg;
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const resolveOptions = {
							 | 
						||
| 
								 | 
							
								    basedir: baseDir,
							 | 
						||
| 
								 | 
							
								    readFile: readCachedFile,
							 | 
						||
| 
								 | 
							
								    isFile: isFileCached,
							 | 
						||
| 
								 | 
							
								    isDirectory: isDirCached,
							 | 
						||
| 
								 | 
							
								    extensions,
							 | 
						||
| 
								 | 
							
								    includeCoreModules: false,
							 | 
						||
| 
								 | 
							
								    moduleDirectory: moduleDirectories,
							 | 
						||
| 
								 | 
							
								    preserveSymlinks,
							 | 
						||
| 
								 | 
							
								    packageFilter: filter
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  let location;
							 | 
						||
| 
								 | 
							
								  try {
							 | 
						||
| 
								 | 
							
								    location = await resolveImportPath(importSpecifier, resolveOptions);
							 | 
						||
| 
								 | 
							
								  } catch (error) {
							 | 
						||
| 
								 | 
							
								    if (error.code !== 'MODULE_NOT_FOUND') {
							 | 
						||
| 
								 | 
							
								      throw error;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return null;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								    location: preserveSymlinks ? location : await resolveSymlink(location),
							 | 
						||
| 
								 | 
							
								    hasModuleSideEffects,
							 | 
						||
| 
								 | 
							
								    hasPackageEntry,
							 | 
						||
| 
								 | 
							
								    packageBrowserField,
							 | 
						||
| 
								 | 
							
								    packageInfo
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								async function resolveWithExportMap({
							 | 
						||
| 
								 | 
							
								  importer,
							 | 
						||
| 
								 | 
							
								  importSpecifier,
							 | 
						||
| 
								 | 
							
								  exportConditions,
							 | 
						||
| 
								 | 
							
								  packageInfoCache,
							 | 
						||
| 
								 | 
							
								  extensions,
							 | 
						||
| 
								 | 
							
								  mainFields,
							 | 
						||
| 
								 | 
							
								  preserveSymlinks,
							 | 
						||
| 
								 | 
							
								  useBrowserOverrides,
							 | 
						||
| 
								 | 
							
								  baseDir,
							 | 
						||
| 
								 | 
							
								  moduleDirectories,
							 | 
						||
| 
								 | 
							
								  rootDir,
							 | 
						||
| 
								 | 
							
								  ignoreSideEffectsForRoot
							 | 
						||
| 
								 | 
							
								}) {
							 | 
						||
| 
								 | 
							
								  if (importSpecifier.startsWith('#')) {
							 | 
						||
| 
								 | 
							
								    // this is a package internal import, resolve using package imports field
							 | 
						||
| 
								 | 
							
								    const resolveResult = await resolvePackageImports({
							 | 
						||
| 
								 | 
							
								      importSpecifier,
							 | 
						||
| 
								 | 
							
								      importer,
							 | 
						||
| 
								 | 
							
								      moduleDirs: moduleDirectories,
							 | 
						||
| 
								 | 
							
								      conditions: exportConditions,
							 | 
						||
| 
								 | 
							
								      resolveId(id /* , parent*/) {
							 | 
						||
| 
								 | 
							
								        return resolveIdClassic({
							 | 
						||
| 
								 | 
							
								          importSpecifier: id,
							 | 
						||
| 
								 | 
							
								          packageInfoCache,
							 | 
						||
| 
								 | 
							
								          extensions,
							 | 
						||
| 
								 | 
							
								          mainFields,
							 | 
						||
| 
								 | 
							
								          preserveSymlinks,
							 | 
						||
| 
								 | 
							
								          useBrowserOverrides,
							 | 
						||
| 
								 | 
							
								          baseDir,
							 | 
						||
| 
								 | 
							
								          moduleDirectories
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const location = fileURLToPath(resolveResult);
							 | 
						||
| 
								 | 
							
								    return {
							 | 
						||
| 
								 | 
							
								      location: preserveSymlinks ? location : await resolveSymlink(location),
							 | 
						||
| 
								 | 
							
								      hasModuleSideEffects: () => null,
							 | 
						||
| 
								 | 
							
								      hasPackageEntry: true,
							 | 
						||
| 
								 | 
							
								      packageBrowserField: false,
							 | 
						||
| 
								 | 
							
								      // eslint-disable-next-line no-undefined
							 | 
						||
| 
								 | 
							
								      packageInfo: undefined
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const pkgName = getPackageName(importSpecifier);
							 | 
						||
| 
								 | 
							
								  if (pkgName) {
							 | 
						||
| 
								 | 
							
								    // it's a bare import, find the package.json and resolve using package exports if available
							 | 
						||
| 
								 | 
							
								    let hasModuleSideEffects = () => null;
							 | 
						||
| 
								 | 
							
								    let hasPackageEntry = true;
							 | 
						||
| 
								 | 
							
								    let packageBrowserField = false;
							 | 
						||
| 
								 | 
							
								    let packageInfo;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const filter = (pkg, pkgPath) => {
							 | 
						||
| 
								 | 
							
								      const info = getPackageInfo({
							 | 
						||
| 
								 | 
							
								        cache: packageInfoCache,
							 | 
						||
| 
								 | 
							
								        extensions,
							 | 
						||
| 
								 | 
							
								        pkg,
							 | 
						||
| 
								 | 
							
								        pkgPath,
							 | 
						||
| 
								 | 
							
								        mainFields,
							 | 
						||
| 
								 | 
							
								        preserveSymlinks,
							 | 
						||
| 
								 | 
							
								        useBrowserOverrides,
							 | 
						||
| 
								 | 
							
								        rootDir,
							 | 
						||
| 
								 | 
							
								        ignoreSideEffectsForRoot
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      ({ packageInfo, hasModuleSideEffects, hasPackageEntry, packageBrowserField } = info);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return info.cachedPkg;
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const resolveOptions = {
							 | 
						||
| 
								 | 
							
								      basedir: baseDir,
							 | 
						||
| 
								 | 
							
								      readFile: readCachedFile,
							 | 
						||
| 
								 | 
							
								      isFile: isFileCached,
							 | 
						||
| 
								 | 
							
								      isDirectory: isDirCached,
							 | 
						||
| 
								 | 
							
								      extensions,
							 | 
						||
| 
								 | 
							
								      includeCoreModules: false,
							 | 
						||
| 
								 | 
							
								      moduleDirectory: moduleDirectories,
							 | 
						||
| 
								 | 
							
								      preserveSymlinks,
							 | 
						||
| 
								 | 
							
								      packageFilter: filter
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const result = await getPackageJson(importer, pkgName, resolveOptions, moduleDirectories);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (result && result.pkgJson.exports) {
							 | 
						||
| 
								 | 
							
								      const { pkgJson, pkgJsonPath } = result;
							 | 
						||
| 
								 | 
							
								      const subpath =
							 | 
						||
| 
								 | 
							
								        pkgName === importSpecifier ? '.' : `.${importSpecifier.substring(pkgName.length)}`;
							 | 
						||
| 
								 | 
							
								      const pkgDr = pkgJsonPath.replace('package.json', '');
							 | 
						||
| 
								 | 
							
								      const pkgURL = pathToFileURL(pkgDr);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      const context = {
							 | 
						||
| 
								 | 
							
								        importer,
							 | 
						||
| 
								 | 
							
								        importSpecifier,
							 | 
						||
| 
								 | 
							
								        moduleDirs: moduleDirectories,
							 | 
						||
| 
								 | 
							
								        pkgURL,
							 | 
						||
| 
								 | 
							
								        pkgJsonPath,
							 | 
						||
| 
								 | 
							
								        conditions: exportConditions
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								      const resolvedPackageExport = await resolvePackageExports(context, subpath, pkgJson.exports);
							 | 
						||
| 
								 | 
							
								      const location = fileURLToPath(resolvedPackageExport);
							 | 
						||
| 
								 | 
							
								      if (location) {
							 | 
						||
| 
								 | 
							
								        return {
							 | 
						||
| 
								 | 
							
								          location: preserveSymlinks ? location : await resolveSymlink(location),
							 | 
						||
| 
								 | 
							
								          hasModuleSideEffects,
							 | 
						||
| 
								 | 
							
								          hasPackageEntry,
							 | 
						||
| 
								 | 
							
								          packageBrowserField,
							 | 
						||
| 
								 | 
							
								          packageInfo
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return null;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								async function resolveWithClassic({
							 | 
						||
| 
								 | 
							
								  importer,
							 | 
						||
| 
								 | 
							
								  importSpecifierList,
							 | 
						||
| 
								 | 
							
								  exportConditions,
							 | 
						||
| 
								 | 
							
								  warn,
							 | 
						||
| 
								 | 
							
								  packageInfoCache,
							 | 
						||
| 
								 | 
							
								  extensions,
							 | 
						||
| 
								 | 
							
								  mainFields,
							 | 
						||
| 
								 | 
							
								  preserveSymlinks,
							 | 
						||
| 
								 | 
							
								  useBrowserOverrides,
							 | 
						||
| 
								 | 
							
								  baseDir,
							 | 
						||
| 
								 | 
							
								  moduleDirectories,
							 | 
						||
| 
								 | 
							
								  rootDir,
							 | 
						||
| 
								 | 
							
								  ignoreSideEffectsForRoot
							 | 
						||
| 
								 | 
							
								}) {
							 | 
						||
| 
								 | 
							
								  for (let i = 0; i < importSpecifierList.length; i++) {
							 | 
						||
| 
								 | 
							
								    // eslint-disable-next-line no-await-in-loop
							 | 
						||
| 
								 | 
							
								    const result = await resolveIdClassic({
							 | 
						||
| 
								 | 
							
								      importer,
							 | 
						||
| 
								 | 
							
								      importSpecifier: importSpecifierList[i],
							 | 
						||
| 
								 | 
							
								      exportConditions,
							 | 
						||
| 
								 | 
							
								      warn,
							 | 
						||
| 
								 | 
							
								      packageInfoCache,
							 | 
						||
| 
								 | 
							
								      extensions,
							 | 
						||
| 
								 | 
							
								      mainFields,
							 | 
						||
| 
								 | 
							
								      preserveSymlinks,
							 | 
						||
| 
								 | 
							
								      useBrowserOverrides,
							 | 
						||
| 
								 | 
							
								      baseDir,
							 | 
						||
| 
								 | 
							
								      moduleDirectories,
							 | 
						||
| 
								 | 
							
								      rootDir,
							 | 
						||
| 
								 | 
							
								      ignoreSideEffectsForRoot
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (result) {
							 | 
						||
| 
								 | 
							
								      return result;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return null;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Resolves to the module if found or `null`.
							 | 
						||
| 
								 | 
							
								// The first import specificer will first be attempted with the exports algorithm.
							 | 
						||
| 
								 | 
							
								// If this is unsuccesful because export maps are not being used, then all of `importSpecifierList`
							 | 
						||
| 
								 | 
							
								// will be tried with the classic resolution algorithm
							 | 
						||
| 
								 | 
							
								async function resolveImportSpecifiers({
							 | 
						||
| 
								 | 
							
								  importer,
							 | 
						||
| 
								 | 
							
								  importSpecifierList,
							 | 
						||
| 
								 | 
							
								  exportConditions,
							 | 
						||
| 
								 | 
							
								  warn,
							 | 
						||
| 
								 | 
							
								  packageInfoCache,
							 | 
						||
| 
								 | 
							
								  extensions,
							 | 
						||
| 
								 | 
							
								  mainFields,
							 | 
						||
| 
								 | 
							
								  preserveSymlinks,
							 | 
						||
| 
								 | 
							
								  useBrowserOverrides,
							 | 
						||
| 
								 | 
							
								  baseDir,
							 | 
						||
| 
								 | 
							
								  moduleDirectories,
							 | 
						||
| 
								 | 
							
								  rootDir,
							 | 
						||
| 
								 | 
							
								  ignoreSideEffectsForRoot
							 | 
						||
| 
								 | 
							
								}) {
							 | 
						||
| 
								 | 
							
								  try {
							 | 
						||
| 
								 | 
							
								    const exportMapRes = await resolveWithExportMap({
							 | 
						||
| 
								 | 
							
								      importer,
							 | 
						||
| 
								 | 
							
								      importSpecifier: importSpecifierList[0],
							 | 
						||
| 
								 | 
							
								      exportConditions,
							 | 
						||
| 
								 | 
							
								      packageInfoCache,
							 | 
						||
| 
								 | 
							
								      extensions,
							 | 
						||
| 
								 | 
							
								      mainFields,
							 | 
						||
| 
								 | 
							
								      preserveSymlinks,
							 | 
						||
| 
								 | 
							
								      useBrowserOverrides,
							 | 
						||
| 
								 | 
							
								      baseDir,
							 | 
						||
| 
								 | 
							
								      moduleDirectories,
							 | 
						||
| 
								 | 
							
								      rootDir,
							 | 
						||
| 
								 | 
							
								      ignoreSideEffectsForRoot
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								    if (exportMapRes) return exportMapRes;
							 | 
						||
| 
								 | 
							
								  } catch (error) {
							 | 
						||
| 
								 | 
							
								    if (error instanceof ResolveError) {
							 | 
						||
| 
								 | 
							
								      warn(error);
							 | 
						||
| 
								 | 
							
								      return null;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    throw error;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // package has no imports or exports, use classic node resolve
							 | 
						||
| 
								 | 
							
								  return resolveWithClassic({
							 | 
						||
| 
								 | 
							
								    importer,
							 | 
						||
| 
								 | 
							
								    importSpecifierList,
							 | 
						||
| 
								 | 
							
								    exportConditions,
							 | 
						||
| 
								 | 
							
								    warn,
							 | 
						||
| 
								 | 
							
								    packageInfoCache,
							 | 
						||
| 
								 | 
							
								    extensions,
							 | 
						||
| 
								 | 
							
								    mainFields,
							 | 
						||
| 
								 | 
							
								    preserveSymlinks,
							 | 
						||
| 
								 | 
							
								    useBrowserOverrides,
							 | 
						||
| 
								 | 
							
								    baseDir,
							 | 
						||
| 
								 | 
							
								    moduleDirectories,
							 | 
						||
| 
								 | 
							
								    rootDir,
							 | 
						||
| 
								 | 
							
								    ignoreSideEffectsForRoot
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* eslint-disable no-param-reassign, no-shadow, no-undefined */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const ES6_BROWSER_EMPTY = '\0node-resolve:empty.js';
							 | 
						||
| 
								 | 
							
								const deepFreeze = (object) => {
							 | 
						||
| 
								 | 
							
								  Object.freeze(object);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  for (const value of Object.values(object)) {
							 | 
						||
| 
								 | 
							
								    if (typeof value === 'object' && !Object.isFrozen(value)) {
							 | 
						||
| 
								 | 
							
								      deepFreeze(value);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return object;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const baseConditions = ['default', 'module'];
							 | 
						||
| 
								 | 
							
								const baseConditionsEsm = [...baseConditions, 'import'];
							 | 
						||
| 
								 | 
							
								const baseConditionsCjs = [...baseConditions, 'require'];
							 | 
						||
| 
								 | 
							
								const defaults = {
							 | 
						||
| 
								 | 
							
								  dedupe: [],
							 | 
						||
| 
								 | 
							
								  // It's important that .mjs is listed before .js so that Rollup will interpret npm modules
							 | 
						||
| 
								 | 
							
								  // which deploy both ESM .mjs and CommonJS .js files as ESM.
							 | 
						||
| 
								 | 
							
								  extensions: ['.mjs', '.js', '.json', '.node'],
							 | 
						||
| 
								 | 
							
								  resolveOnly: [],
							 | 
						||
| 
								 | 
							
								  moduleDirectories: ['node_modules'],
							 | 
						||
| 
								 | 
							
								  ignoreSideEffectsForRoot: false
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								const DEFAULTS = deepFreeze(deepMerge({}, defaults));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function nodeResolve(opts = {}) {
							 | 
						||
| 
								 | 
							
								  const { warnings } = handleDeprecatedOptions(opts);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const options = { ...defaults, ...opts };
							 | 
						||
| 
								 | 
							
								  const { extensions, jail, moduleDirectories, ignoreSideEffectsForRoot } = options;
							 | 
						||
| 
								 | 
							
								  const conditionsEsm = [...baseConditionsEsm, ...(options.exportConditions || [])];
							 | 
						||
| 
								 | 
							
								  const conditionsCjs = [...baseConditionsCjs, ...(options.exportConditions || [])];
							 | 
						||
| 
								 | 
							
								  const packageInfoCache = new Map();
							 | 
						||
| 
								 | 
							
								  const idToPackageInfo = new Map();
							 | 
						||
| 
								 | 
							
								  const mainFields = getMainFields(options);
							 | 
						||
| 
								 | 
							
								  const useBrowserOverrides = mainFields.indexOf('browser') !== -1;
							 | 
						||
| 
								 | 
							
								  const isPreferBuiltinsSet = options.preferBuiltins === true || options.preferBuiltins === false;
							 | 
						||
| 
								 | 
							
								  const preferBuiltins = isPreferBuiltinsSet ? options.preferBuiltins : true;
							 | 
						||
| 
								 | 
							
								  const rootDir = resolve(options.rootDir || process.cwd());
							 | 
						||
| 
								 | 
							
								  let { dedupe } = options;
							 | 
						||
| 
								 | 
							
								  let rollupOptions;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (typeof dedupe !== 'function') {
							 | 
						||
| 
								 | 
							
								    dedupe = (importee) =>
							 | 
						||
| 
								 | 
							
								      options.dedupe.includes(importee) || options.dedupe.includes(getPackageName(importee));
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // creates a function from the patterns to test if a particular module should be bundled.
							 | 
						||
| 
								 | 
							
								  const allowPatterns = (patterns) => {
							 | 
						||
| 
								 | 
							
								    const regexPatterns = patterns.map((pattern) => {
							 | 
						||
| 
								 | 
							
								      if (pattern instanceof RegExp) {
							 | 
						||
| 
								 | 
							
								        return pattern;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      const normalized = pattern.replace(/[\\^$*+?.()|[\]{}]/g, '\\$&');
							 | 
						||
| 
								 | 
							
								      return new RegExp(`^${normalized}$`);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								    return (id) => !regexPatterns.length || regexPatterns.some((pattern) => pattern.test(id));
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const resolveOnly =
							 | 
						||
| 
								 | 
							
								    typeof options.resolveOnly === 'function'
							 | 
						||
| 
								 | 
							
								      ? options.resolveOnly
							 | 
						||
| 
								 | 
							
								      : allowPatterns(options.resolveOnly);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const browserMapCache = new Map();
							 | 
						||
| 
								 | 
							
								  let preserveSymlinks;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const doResolveId = async (context, importee, importer, custom) => {
							 | 
						||
| 
								 | 
							
								    // strip query params from import
							 | 
						||
| 
								 | 
							
								    const [importPath, params] = importee.split('?');
							 | 
						||
| 
								 | 
							
								    const importSuffix = `${params ? `?${params}` : ''}`;
							 | 
						||
| 
								 | 
							
								    importee = importPath;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const baseDir = !importer || dedupe(importee) ? rootDir : dirname(importer);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // https://github.com/defunctzombie/package-browser-field-spec
							 | 
						||
| 
								 | 
							
								    const browser = browserMapCache.get(importer);
							 | 
						||
| 
								 | 
							
								    if (useBrowserOverrides && browser) {
							 | 
						||
| 
								 | 
							
								      const resolvedImportee = resolve(baseDir, importee);
							 | 
						||
| 
								 | 
							
								      if (browser[importee] === false || browser[resolvedImportee] === false) {
							 | 
						||
| 
								 | 
							
								        return { id: ES6_BROWSER_EMPTY };
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      const browserImportee =
							 | 
						||
| 
								 | 
							
								        (importee[0] !== '.' && browser[importee]) ||
							 | 
						||
| 
								 | 
							
								        browser[resolvedImportee] ||
							 | 
						||
| 
								 | 
							
								        browser[`${resolvedImportee}.js`] ||
							 | 
						||
| 
								 | 
							
								        browser[`${resolvedImportee}.json`];
							 | 
						||
| 
								 | 
							
								      if (browserImportee) {
							 | 
						||
| 
								 | 
							
								        importee = browserImportee;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const parts = importee.split(/[/\\]/);
							 | 
						||
| 
								 | 
							
								    let id = parts.shift();
							 | 
						||
| 
								 | 
							
								    let isRelativeImport = false;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (id[0] === '@' && parts.length > 0) {
							 | 
						||
| 
								 | 
							
								      // scoped packages
							 | 
						||
| 
								 | 
							
								      id += `/${parts.shift()}`;
							 | 
						||
| 
								 | 
							
								    } else if (id[0] === '.') {
							 | 
						||
| 
								 | 
							
								      // an import relative to the parent dir of the importer
							 | 
						||
| 
								 | 
							
								      id = resolve(baseDir, importee);
							 | 
						||
| 
								 | 
							
								      isRelativeImport = true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // if it's not a relative import, and it's not requested, reject it.
							 | 
						||
| 
								 | 
							
								    if (!isRelativeImport && !resolveOnly(id)) {
							 | 
						||
| 
								 | 
							
								      if (normalizeInput(rollupOptions.input).includes(importee)) {
							 | 
						||
| 
								 | 
							
								        return null;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      return false;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const importSpecifierList = [importee];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (importer === undefined && !importee[0].match(/^\.?\.?\//)) {
							 | 
						||
| 
								 | 
							
								      // For module graph roots (i.e. when importer is undefined), we
							 | 
						||
| 
								 | 
							
								      // need to handle 'path fragments` like `foo/bar` that are commonly
							 | 
						||
| 
								 | 
							
								      // found in rollup config files. If importee doesn't look like a
							 | 
						||
| 
								 | 
							
								      // relative or absolute path, we make it relative and attempt to
							 | 
						||
| 
								 | 
							
								      // resolve it.
							 | 
						||
| 
								 | 
							
								      importSpecifierList.push(`./${importee}`);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // TypeScript files may import '.js' to refer to either '.ts' or '.tsx'
							 | 
						||
| 
								 | 
							
								    if (importer && importee.endsWith('.js')) {
							 | 
						||
| 
								 | 
							
								      for (const ext of ['.ts', '.tsx']) {
							 | 
						||
| 
								 | 
							
								        if (importer.endsWith(ext) && extensions.includes(ext)) {
							 | 
						||
| 
								 | 
							
								          importSpecifierList.push(importee.replace(/.js$/, ext));
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const warn = (...args) => context.warn(...args);
							 | 
						||
| 
								 | 
							
								    const isRequire = custom && custom['node-resolve'] && custom['node-resolve'].isRequire;
							 | 
						||
| 
								 | 
							
								    const exportConditions = isRequire ? conditionsCjs : conditionsEsm;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (useBrowserOverrides && !exportConditions.includes('browser'))
							 | 
						||
| 
								 | 
							
								      exportConditions.push('browser');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const resolvedWithoutBuiltins = await resolveImportSpecifiers({
							 | 
						||
| 
								 | 
							
								      importer,
							 | 
						||
| 
								 | 
							
								      importSpecifierList,
							 | 
						||
| 
								 | 
							
								      exportConditions,
							 | 
						||
| 
								 | 
							
								      warn,
							 | 
						||
| 
								 | 
							
								      packageInfoCache,
							 | 
						||
| 
								 | 
							
								      extensions,
							 | 
						||
| 
								 | 
							
								      mainFields,
							 | 
						||
| 
								 | 
							
								      preserveSymlinks,
							 | 
						||
| 
								 | 
							
								      useBrowserOverrides,
							 | 
						||
| 
								 | 
							
								      baseDir,
							 | 
						||
| 
								 | 
							
								      moduleDirectories,
							 | 
						||
| 
								 | 
							
								      rootDir,
							 | 
						||
| 
								 | 
							
								      ignoreSideEffectsForRoot
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const importeeIsBuiltin = isBuiltinModule(importee);
							 | 
						||
| 
								 | 
							
								    const resolved =
							 | 
						||
| 
								 | 
							
								      importeeIsBuiltin && preferBuiltins
							 | 
						||
| 
								 | 
							
								        ? {
							 | 
						||
| 
								 | 
							
								            packageInfo: undefined,
							 | 
						||
| 
								 | 
							
								            hasModuleSideEffects: () => null,
							 | 
						||
| 
								 | 
							
								            hasPackageEntry: true,
							 | 
						||
| 
								 | 
							
								            packageBrowserField: false
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        : resolvedWithoutBuiltins;
							 | 
						||
| 
								 | 
							
								    if (!resolved) {
							 | 
						||
| 
								 | 
							
								      return null;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const { packageInfo, hasModuleSideEffects, hasPackageEntry, packageBrowserField } = resolved;
							 | 
						||
| 
								 | 
							
								    let { location } = resolved;
							 | 
						||
| 
								 | 
							
								    if (packageBrowserField) {
							 | 
						||
| 
								 | 
							
								      if (Object.prototype.hasOwnProperty.call(packageBrowserField, location)) {
							 | 
						||
| 
								 | 
							
								        if (!packageBrowserField[location]) {
							 | 
						||
| 
								 | 
							
								          browserMapCache.set(location, packageBrowserField);
							 | 
						||
| 
								 | 
							
								          return { id: ES6_BROWSER_EMPTY };
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        location = packageBrowserField[location];
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      browserMapCache.set(location, packageBrowserField);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (hasPackageEntry && !preserveSymlinks) {
							 | 
						||
| 
								 | 
							
								      const exists = await fileExists(location);
							 | 
						||
| 
								 | 
							
								      if (exists) {
							 | 
						||
| 
								 | 
							
								        location = await realpath(location);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    idToPackageInfo.set(location, packageInfo);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (hasPackageEntry) {
							 | 
						||
| 
								 | 
							
								      if (importeeIsBuiltin && preferBuiltins) {
							 | 
						||
| 
								 | 
							
								        if (!isPreferBuiltinsSet && resolvedWithoutBuiltins && resolved !== importee) {
							 | 
						||
| 
								 | 
							
								          context.warn(
							 | 
						||
| 
								 | 
							
								            `preferring built-in module '${importee}' over local alternative at '${resolvedWithoutBuiltins.location}', pass 'preferBuiltins: false' to disable this behavior or 'preferBuiltins: true' to disable this warning`
							 | 
						||
| 
								 | 
							
								          );
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return false;
							 | 
						||
| 
								 | 
							
								      } else if (jail && location.indexOf(normalize(jail.trim(sep))) !== 0) {
							 | 
						||
| 
								 | 
							
								        return null;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (options.modulesOnly && (await fileExists(location))) {
							 | 
						||
| 
								 | 
							
								      const code = await readFile$1(location, 'utf-8');
							 | 
						||
| 
								 | 
							
								      if (isModule(code)) {
							 | 
						||
| 
								 | 
							
								        return {
							 | 
						||
| 
								 | 
							
								          id: `${location}${importSuffix}`,
							 | 
						||
| 
								 | 
							
								          moduleSideEffects: hasModuleSideEffects(location)
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      return null;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return {
							 | 
						||
| 
								 | 
							
								      id: `${location}${importSuffix}`,
							 | 
						||
| 
								 | 
							
								      moduleSideEffects: hasModuleSideEffects(location)
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return {
							 | 
						||
| 
								 | 
							
								    name: 'node-resolve',
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    version,
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    buildStart(buildOptions) {
							 | 
						||
| 
								 | 
							
								      rollupOptions = buildOptions;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      for (const warning of warnings) {
							 | 
						||
| 
								 | 
							
								        this.warn(warning);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      ({ preserveSymlinks } = buildOptions);
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    generateBundle() {
							 | 
						||
| 
								 | 
							
								      readCachedFile.clear();
							 | 
						||
| 
								 | 
							
								      isFileCached.clear();
							 | 
						||
| 
								 | 
							
								      isDirCached.clear();
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    async resolveId(importee, importer, resolveOptions) {
							 | 
						||
| 
								 | 
							
								      if (importee === ES6_BROWSER_EMPTY) {
							 | 
						||
| 
								 | 
							
								        return importee;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      // ignore IDs with null character, these belong to other plugins
							 | 
						||
| 
								 | 
							
								      if (/\0/.test(importee)) return null;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      if (/\0/.test(importer)) {
							 | 
						||
| 
								 | 
							
								        importer = undefined;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      const resolved = await doResolveId(this, importee, importer, resolveOptions.custom);
							 | 
						||
| 
								 | 
							
								      if (resolved) {
							 | 
						||
| 
								 | 
							
								        const resolvedResolved = await this.resolve(
							 | 
						||
| 
								 | 
							
								          resolved.id,
							 | 
						||
| 
								 | 
							
								          importer,
							 | 
						||
| 
								 | 
							
								          Object.assign({ skipSelf: true }, resolveOptions)
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								        if (resolvedResolved) {
							 | 
						||
| 
								 | 
							
								          // Handle plugins that manually make the result external
							 | 
						||
| 
								 | 
							
								          if (resolvedResolved.external) {
							 | 
						||
| 
								 | 
							
								            return false;
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								          // Allow other plugins to take over resolution. Rollup core will not
							 | 
						||
| 
								 | 
							
								          // change the id if it corresponds to an existing file
							 | 
						||
| 
								 | 
							
								          if (resolvedResolved.id !== resolved.id) {
							 | 
						||
| 
								 | 
							
								            return resolvedResolved;
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								          // Pass on meta information added by other plugins
							 | 
						||
| 
								 | 
							
								          return { ...resolved, meta: resolvedResolved.meta };
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      return resolved;
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    load(importee) {
							 | 
						||
| 
								 | 
							
								      if (importee === ES6_BROWSER_EMPTY) {
							 | 
						||
| 
								 | 
							
								        return 'export default {};';
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      return null;
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    getPackageInfoForId(id) {
							 | 
						||
| 
								 | 
							
								      return idToPackageInfo.get(id);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export { DEFAULTS, nodeResolve as default, nodeResolve };
							 |