@custom-elements-manifest/analyzer
Version:
<!-- [=> See Source <=](../../docs/analyzer/index.md) -->
26 lines (20 loc) • 696 B
JavaScript
import { has } from './index.js';
/**
* UTILITIES RELATED TO MODULE IMPORTS
*/
/** @example import defaultExport from 'foo'; */
export function hasDefaultImport(node) {
return !!node?.importClause?.name;
}
/** @example import {namedA, namedB} from 'foo'; */
export function hasNamedImport(node) {
return has(node?.importClause?.namedBindings?.elements);
}
/** @example import * as name from './my-module.js'; */
export function hasAggregatingImport(node) {
return !!node?.importClause?.namedBindings?.name && !hasNamedImport(node);
}
/** @example import './my-module.js'; */
export function hasSideEffectImport(node) {
return 'importClause' in node && node.importClause == null;
}