const requireTrueValue = value => {if (value !== true) {throw new TypeError('When specifying module types, use `true` for βcjsβ, βmjsβ and βjsβ extensions');}};const normalize = (extension, type, defaultModuleType) => {switch (extension) {case 'cjs': {requireTrueValue(type);return 'commonjs';}case 'mjs': {requireTrueValue(type);return 'module';}case 'js': {requireTrueValue(type);return defaultModuleType;}default: {if (type !== 'commonjs' && type !== 'module') {throw new TypeError(`Module type for β${extension}β must be βcommonjsβ or βmoduleβ`);}return type;}}};const deriveFromObject = (extensionsObject, defaultModuleType) => {const moduleTypes = {};for (const [extension, type] of Object.entries(extensionsObject)) {moduleTypes[extension] = normalize(extension, type, defaultModuleType);}return moduleTypes;};const deriveFromArray = (extensions, defaultModuleType) => {const moduleTypes = {};for (const extension of extensions) {switch (extension) {case 'cjs': {moduleTypes.cjs = 'commonjs';break;}case 'mjs': {moduleTypes.mjs = 'module';break;}case 'js': {moduleTypes.js = defaultModuleType;break;}default: {moduleTypes[extension] = 'commonjs';}}}return moduleTypes;};export default function moduleTypes(configuredExtensions, defaultModuleType) {if (configuredExtensions === undefined) {return {cjs: 'commonjs',mjs: 'module',js: defaultModuleType,};}if (Array.isArray(configuredExtensions)) {return deriveFromArray(configuredExtensions, defaultModuleType);}return deriveFromObject(configuredExtensions, defaultModuleType);}