73 lines
2.4 KiB
JavaScript
73 lines
2.4 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.findVueComponentImports = void 0;
|
|
const path_1 = __importDefault(require("path"));
|
|
const es_module_lexer_1 = require("es-module-lexer");
|
|
const shared_1 = require("@vue/shared");
|
|
const types_1 = require("@babel/types");
|
|
const parser_1 = require("@babel/parser");
|
|
const constants_1 = require("../constants");
|
|
const utils_1 = require("../utils");
|
|
/**
|
|
* 暂时没用
|
|
* @param source
|
|
* @param importer
|
|
* @param resolve
|
|
* @returns
|
|
*/
|
|
async function findVueComponentImports(source, importer, resolve) {
|
|
await es_module_lexer_1.init;
|
|
let imports = [];
|
|
// strip UTF-8 BOM
|
|
if (source.charCodeAt(0) === 0xfeff) {
|
|
source = source.slice(1);
|
|
}
|
|
try {
|
|
imports = (0, es_module_lexer_1.parse)(source)[0];
|
|
}
|
|
catch (e) {
|
|
console.error(e);
|
|
}
|
|
if (!imports.length) {
|
|
return [];
|
|
}
|
|
const rewriteImports = [];
|
|
for (let i = 0; i < imports.length; i++) {
|
|
const importSpecifier = imports[i];
|
|
const { n } = importSpecifier;
|
|
if (!n) {
|
|
continue;
|
|
}
|
|
const extname = path_1.default.extname(n);
|
|
// 仅处理没有后缀,或后缀是.vue,.nvue的文件
|
|
if (extname && !constants_1.EXTNAME_VUE.includes(extname)) {
|
|
continue;
|
|
}
|
|
const res = await resolve(n, importer);
|
|
if (!res) {
|
|
continue;
|
|
}
|
|
if (constants_1.EXTNAME_VUE_RE.test(res.id)) {
|
|
const expr = (0, parser_1.parse)(source.slice(importSpecifier.ss, importSpecifier.se), {
|
|
plugins: (0, utils_1.normalizeParsePlugins)(res.id),
|
|
sourceType: 'module',
|
|
}).program.body[0];
|
|
if ((0, types_1.isImportDeclaration)(expr) && expr.specifiers.length === 1) {
|
|
const importDefaultSpecifier = expr.specifiers[0];
|
|
if (!(0, types_1.isImportDefaultSpecifier)(importDefaultSpecifier)) {
|
|
continue;
|
|
}
|
|
rewriteImports.push((0, shared_1.extend)(importSpecifier, {
|
|
n: res.id,
|
|
i: importDefaultSpecifier.local.name,
|
|
}));
|
|
}
|
|
}
|
|
}
|
|
return rewriteImports;
|
|
}
|
|
exports.findVueComponentImports = findVueComponentImports;
|