UNPKG

vue-declassify

Version:

Convert Vue 2 class-based components into object-based syntax.

37 lines (36 loc) 1.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ensure = exports.remove = void 0; function find(source, module) { return source.getImportDeclaration(declaration => { return declaration.getModuleSpecifierValue() === module; }); } function remove(source, ...modules) { for (const module of modules) { const declaration = find(source, module); if (declaration) { declaration.remove(); } } } exports.remove = remove; function ensure(source, module, imports) { let declaration = find(source, module); if (!declaration) { declaration = source.addImportDeclaration({ moduleSpecifier: module, }); } if (imports.default) { declaration.setDefaultImport(imports.default); } if (imports.named) { const existingNamedImports = new Set(declaration.getNamedImports().map(specifier => specifier.getName())); const newNamedImports = imports.named.filter(name => !existingNamedImports.has(name)); declaration.addNamedImports(newNamedImports.map(name => ({ name, }))); } } exports.ensure = ensure;