"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createBuildResolvePlugin = void 0;
const fs_extra_1 = __importDefault(require("fs-extra"));
const resolveVue_1 = require("../utils/resolveVue");
const utils_1 = require("../utils");
const debug = require('debug')('vite:build:resolve');
exports.createBuildResolvePlugin = (root, resolver) => {
    return {
        name: 'vite:resolve',
        async resolveId(id, importer) {
            const original = id;
            id = resolver.alias(id) || id;
            if (id === 'vue' || id.startsWith('@vue/')) {
                const vuePaths = resolveVue_1.resolveVue(root);
                if (id in vuePaths) {
                    return vuePaths[id];
                }
            }
            if (utils_1.isExternalUrl(id)) {
                return { id, external: true };
            }
            if (id.startsWith('/') && !id.startsWith(root)) {
                const resolved = resolver.requestToFile(id);
                if (fs_extra_1.default.existsSync(resolved)) {
                    debug(id, `-->`, resolved);
                    return resolved;
                }
            }
            // fallback to node-resolve because alias
            if (id !== original) {
                const resolved = await this.resolve(id, importer, { skipSelf: true });
                return resolved || { id };
            }
        }
    };
};
//# sourceMappingURL=buildPluginResolve.js.map