Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
function isCommonJSModule(sourceString, filename) {
if (isRelativePath(sourceString)) {
const fullPath = nodePath.resolve(nodePath.dirname(filename), sourceString)
return !exportsAsESModule(require.resolve(fullPath))
} else if (nodePath.isAbsolute(sourceString)) {
return !exportsAsESModule(require.resolve(sourceString))
} else if (isBuiltinModule(sourceString)) {
return true
} else {
// eslint-disable-next-line no-console
console.warn(
oneLine`
import for "${sourceString}" was unable
to be identified as commonJS or ESM
`,
)
return false
}
}
function isCommonJSModule(sourceString, filename) {
if (isRelativePath(sourceString)) {
const fullPath = nodePath.resolve(nodePath.dirname(filename), sourceString)
return !exportsAsESModule(require.resolve(fullPath))
} else if (nodePath.isAbsolute(sourceString)) {
return !exportsAsESModule(require.resolve(sourceString))
} else if (isBuiltinModule(sourceString)) {
return true
} else {
// eslint-disable-next-line no-console
console.warn(
oneLine`
import for "${sourceString}" was unable
to be identified as commonJS or ESM
`,
)
return false
}
}
onwarn: ((warning, warn) => {
if (warning.code === 'UNRESOLVED_IMPORT') {
// If we're using remoteUrl, we should expect them to be unresolved. ("external" should handle this for us, but we're still seeing it)
if (remoteUrl && warning.source.startsWith(remoteUrl)) {
return;
}
logError(
`'${warning.source}' is imported by '${warning.importer}', but could not be resolved.`,
);
if (isNodeBuiltin(warning.source)) {
console.log(
chalk.dim(
` '${
warning.source
}' is a Node.js builtin module that won't exist on the web. You can find modern, web-ready packages at ${chalk.underline(
'https://www.pika.dev',
)}`,
),
);
} else {
console.log(
chalk.dim(` Make sure that the package is installed and that the file exists.`),
);
}
return;
}
export default function(info: any, isRoot: boolean, reporter: Reporter, warn: WarnFunction) {
if (isRoot) {
for (const key in typos) {
if (key in info) {
warn(reporter.lang('manifestPotentialTypo', key, typos[key]));
}
}
}
// validate name
const {name} = info;
if (typeof name === 'string') {
if (isRoot && isBuiltinModule(name)) {
warn(reporter.lang('manifestBuiltinModule', name));
}
// cannot start with a dot
if (name[0] === '.') {
throw new MessageError(reporter.lang('manifestNameDot'));
}
// cannot contain the following characters
if (!isValidPackageName(name)) {
throw new MessageError(reporter.lang('manifestNameIllegalChars'));
}
// cannot equal node_modules or favicon.ico
const lower = name.toLowerCase();
if (lower === 'node_modules' || lower === 'favicon.ico') {
external: id => isBuiltinModule(id) || external.some(m => id.split('/')[0] === m),
plugins: [
export const isScopedExternalModule = path =>
/^@(?:[\w-]+\/?[\w-])+$/.test(path) && !isBuiltinModule(path);
external: function (id) {
if (isBuiltin(id)) {
return true;
}
id = id.split('/').slice(0, id[0] === '@' ? 2 : 1).join('/');
return !!require('./package.json').dependencies[id];
}
};
onwarn(warning, warn) {
if (warning.code === 'UNRESOLVED_IMPORT' && isBuiltinModule(warning.source))
return
warn(warning)
}
}