denoify
Version:
For NPM module authors that would like to support Deno but do not want to write and maintain a port.
36 lines (25 loc) • 1.18 kB
text/typescript
import type { Replacer } from "../..";
const moduleName = "ipaddr.js";
//NOTE: Type definitions not imported.
export const replacer: Replacer = async params => {
const { parsedImportExportStatement, version } = params;
if (parsedImportExportStatement.parsedArgument.nodeModuleName !== moduleName) {
return undefined;
}
if (parsedImportExportStatement.isAsyncImport) {
throw new Error(`TODO, async import of ${moduleName} not supported yet`);
}
if (parsedImportExportStatement.statementType === "export") {
throw new Error(`TODO, exporting from ${moduleName} is not supported yet`);
}
if (parsedImportExportStatement.statementType === "declare module") {
throw new Error(`TODO, module augmentation for ${moduleName} not supported`);
}
const match = parsedImportExportStatement.target?.match(/^\*\s+as\s+(.*)$/);
if (!match) {
throw new Error(`expect import ${moduleName} as a namespace`);
}
//NOTE: Cosmetic, we could use " or '
const qs = parsedImportExportStatement.quoteSymbol;
return `import ${match[1]} from ${qs}https://jspm.dev/ipaddr.js@${version}${qs}`;
};