(options = {})
| 37 | const PLUGIN_NAME = 'commonjs'; |
| 38 | |
| 39 | export default function commonjs(options = {}) { |
| 40 | const { |
| 41 | ignoreGlobal, |
| 42 | ignoreDynamicRequires, |
| 43 | requireReturnsDefault: requireReturnsDefaultOption, |
| 44 | defaultIsModuleExports: defaultIsModuleExportsOption, |
| 45 | esmExternals, |
| 46 | requireNodeBuiltins = false |
| 47 | } = options; |
| 48 | const extensions = options.extensions || ['.js']; |
| 49 | const filter = createFilter(options.include, options.exclude); |
| 50 | const isPossibleCjsId = (id) => { |
| 51 | const extName = extname(id); |
| 52 | return extName === '.cjs' || (extensions.includes(extName) && filter(id)); |
| 53 | }; |
| 54 | |
| 55 | const { strictRequiresFilter, detectCyclesAndConditional } = getStrictRequiresFilter(options); |
| 56 | |
| 57 | const getRequireReturnsDefault = |
| 58 | typeof requireReturnsDefaultOption === 'function' |
| 59 | ? requireReturnsDefaultOption |
| 60 | : () => requireReturnsDefaultOption; |
| 61 | |
| 62 | let esmExternalIds; |
| 63 | const isEsmExternal = |
| 64 | typeof esmExternals === 'function' |
| 65 | ? esmExternals |
| 66 | : Array.isArray(esmExternals) |
| 67 | ? ((esmExternalIds = new Set(esmExternals)), (id) => esmExternalIds.has(id)) |
| 68 | : () => esmExternals; |
| 69 | |
| 70 | const getDefaultIsModuleExports = |
| 71 | typeof defaultIsModuleExportsOption === 'function' |
| 72 | ? defaultIsModuleExportsOption |
| 73 | : () => |
| 74 | typeof defaultIsModuleExportsOption === 'boolean' ? defaultIsModuleExportsOption : 'auto'; |
| 75 | |
| 76 | const dynamicRequireRoot = |
| 77 | typeof options.dynamicRequireRoot === 'string' |
| 78 | ? resolve(options.dynamicRequireRoot) |
| 79 | : process.cwd(); |
| 80 | const { commonDir, dynamicRequireModules } = getDynamicRequireModules( |
| 81 | options.dynamicRequireTargets, |
| 82 | dynamicRequireRoot |
| 83 | ); |
| 84 | const isDynamicRequireModulesEnabled = dynamicRequireModules.size > 0; |
| 85 | |
| 86 | const ignoreRequire = |
| 87 | typeof options.ignore === 'function' |
| 88 | ? options.ignore |
| 89 | : Array.isArray(options.ignore) |
| 90 | ? (id) => options.ignore.includes(id) |
| 91 | : () => false; |
| 92 | |
| 93 | const getIgnoreTryCatchRequireStatementMode = (id) => { |
| 94 | const mode = |
| 95 | typeof options.ignoreTryCatch === 'function' |
| 96 | ? options.ignoreTryCatch(id) |
no test coverage detected