You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

esm-loader-import-alias

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

esm-loader-import-alias - npm Package Compare versions

Comparing version

to
1.0.3

42

dist/index.js
import createLoader from 'create-esm-loader';
import escape from 'escape-string-regexp';
import esquery from 'esquery';
import { generate } from 'astring';
import { parse } from 'meriyah';
const NAME = 'esm-loader-import-alias';
const importTypes = [
'ImportDeclaration',
'ExportAllDeclaration',
'ExportNamedDeclaration',
];
const parseOpts = { module: true, next: true, webcompat: true };
// create-esm-loader config

@@ -8,26 +16,20 @@ const config = {

const { url, aliases } = options;
let sourceStr = String(source);
const aliasKeys = Object.keys(aliases || {});
const sourceStr = String(source);
if (!aliases ||
!Object.keys(aliases).some((before) => sourceStr.includes(before)))
!aliasKeys.some((alias) => sourceStr.includes(alias)))
return undefined;
if (options.debug)
console.log(`[${NAME}] transform: ${url}`);
// @TODO use AST to be safer
for (const [before, after] of Object.entries(aliases)) {
const imports = [
...[
...sourceStr.matchAll(new RegExp(`import .*['"\`](${escape(before)}).*?['"\`]`, 'g')),
],
...[
...sourceStr.matchAll(new RegExp(`export .*from.*['"\`](${escape(before)}).*?['"\`]`, 'g')),
],
];
imports.forEach((statement) => {
if (!sourceStr.includes(statement[0]))
return;
const reImport = statement[0].replace(statement[1], after);
sourceStr = sourceStr.replace(statement[0], reImport);
const ast = parse(sourceStr, parseOpts);
const imports = esquery(ast, `:matches(${importTypes.join(',')})`);
imports.forEach((importer) => {
const value = importer.source.value;
aliasKeys.forEach((alias) => {
if (value.includes(alias))
importer.source.value = value.replace(alias, aliases[alias]);
});
}
return { source: sourceStr };
});
const newSource = generate(ast);
return { source: newSource };
},

@@ -34,0 +36,0 @@ };

{
"name": "esm-loader-import-alias",
"version": "1.0.2",
"version": "1.0.3",
"description": "Chainable ESModule Loader for import path aliases",

@@ -18,4 +18,6 @@ "homepage": "https://github.com/brev/esm-loaders/tree/main/packages/esm-loader-import-alias#readme",

"dependencies": {
"astring": "^1.8.1",
"create-esm-loader": "^0.1.1",
"escape-string-regexp": "^5.0.0"
"esquery": "^1.4.0",
"meriyah": "^4.2.0"
},

@@ -22,0 +24,0 @@ "devDependencies": {