| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- // NOTICE: This file is generated by Rollup. To modify it,
- // please instead edit the ESM counterpart and rebuild with Rollup (npm run build).
- 'use strict';
- const fs = require('node:fs');
- const path = require('node:path');
- const node_url = require('node:url');
- const importMetaResolve = require('@dual-bundle/import-meta-resolve');
- const resolveFrom = require('resolve-from');
- /**
- * TODO: These suffixes are here for commonjs compatibility reason, we should remove these codes after migrating to pure ESM, because in ESM accurate paths are required
- */
- const pathSuffixes = ['', '.js', '.json', `${path.sep}index.js`, `${path.sep}index.json`];
- const specifierSuffixes = ['', '.js', '.json', '/index.js', '/index.json'];
- /**
- * Checks whether the given file exists as a file.
- * @param {string} filename The file to check.
- * @returns {boolean} `true` if the file exists and is a file, otherwise `false`.
- */
- function existsFile(filename) {
- return fs.statSync(filename, { throwIfNoEntry: false })?.isFile() ?? false;
- }
- /**
- * @param {string} parent
- * @param {string} lookup
- * @returns {string | undefined}
- */
- function resolveSilent(parent, lookup) {
- if (path.isAbsolute(lookup)) {
- for (const suffix of pathSuffixes) {
- const filename = lookup + suffix;
- if (existsFile(filename)) {
- return filename;
- }
- }
- return;
- }
- const base = node_url.pathToFileURL(path.resolve(parent, 'noop.js')).toString();
- for (const suffix of specifierSuffixes) {
- try {
- const resolved = node_url.fileURLToPath(importMetaResolve.resolve(lookup + suffix, base));
- if (existsFile(resolved)) {
- return resolved;
- }
- } catch {
- //
- }
- }
- /**
- * Yarn P'n'P does not support pure ESM well by default, this is only a workaround for it
- * @see https://github.com/wooorm/import-meta-resolve/issues/23
- *
- * TODO: this workaround is still necessary before native `import.meta.resolve` replacement
- */
- return resolveFrom.silent(parent, lookup);
- }
- module.exports = resolveSilent;
|