From 23bd04a408cd6bc16451911eb04e39e0c8b89a7e Mon Sep 17 00:00:00 2001 From: Amadeus Beckmann Date: Wed, 16 Jan 2019 20:44:52 +0100 Subject: [PATCH] Add support for dynamic import statement --- package-lock.json | 2 +- package.json | 2 +- src/PluginSyntaxESTree.js | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index b51181a..ada47c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "escomplex-plugin-syntax-estree", - "version": "0.1.0", + "version": "0.1.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 314bb02..f489b40 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "escomplex-plugin-syntax-estree", - "version": "0.1.0", + "version": "0.1.1", "homepage": "https://github.com/typhonjs-node-escomplex/escomplex-plugin-syntax-estree/", "description": "Provides a plugin for typhonjs-escomplex module processing which loads syntax definitions for trait resolution for ESTree AST.", "license": "MPL-2.0", diff --git a/src/PluginSyntaxESTree.js b/src/PluginSyntaxESTree.js index d261298..22545d1 100644 --- a/src/PluginSyntaxESTree.js +++ b/src/PluginSyntaxESTree.js @@ -211,6 +211,21 @@ export default class PluginSyntaxESTree extends AbstractSyntaxLoader return { line: node.loc.start.line, path: dependencyPath, type: 'cjs' }; } + + if (node.callee.type === 'Import' && node.arguments.length === 1) + { + const dependency = node.arguments[0]; + + let dependencyPath = '* dynamic dependency *'; + + if (dependency.type === 'Literal' || dependency.type === 'StringLiteral') + { + dependencyPath = typeof settings.dependencyResolver === 'function' ? + settings.dependencyResolver(dependency.value) : dependency.value; + } + + return { line: node.loc.start.line, path: dependencyPath, type: 'esm' }; + } }); }