"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveUTSCompiler = exports.resolveUtsModule = exports.resolveUtsAppModule = void 0;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const hbx_1 = require("./hbx");
const utils_1 = require("./utils");
/**
 * 解析 app 平台的 uts 插件，任意平台（android|ios）存在即可
 * @param id
 * @param importer
 * @returns
 */
function resolveUtsAppModule(id, importer) {
    id = path_1.default.resolve(importer, id);
    if (id.includes('utssdk') || id.includes('uni_modules')) {
        const parts = (0, utils_1.normalizePath)(id).split('/');
        const parentDir = parts[parts.length - 2];
        if (parentDir === 'uni_modules' || parentDir === 'utssdk') {
            const basedir = parentDir === 'uni_modules' ? 'utssdk' : '';
            if (fs_1.default.existsSync(path_1.default.resolve(id, basedir, 'index.uts'))) {
                return id;
            }
            const resolvePlatformDir = (p) => {
                return path_1.default.resolve(id, basedir, p);
            };
            const extname = ['.uts'];
            if (resolveUtsFile(resolvePlatformDir('app-android'), extname)) {
                return id;
            }
            if (resolveUtsFile(resolvePlatformDir('app-ios'), extname)) {
                return id;
            }
        }
    }
}
exports.resolveUtsAppModule = resolveUtsAppModule;
// 仅限 root/uni_modules/test-plugin | root/utssdk/test-plugin 格式
function resolveUtsModule(id, importer) {
    if (process.env.UNI_PLATFORM === 'app' ||
        process.env.UNI_PLATFORM === 'app-plus') {
        return resolveUtsAppModule(id, importer);
    }
    id = path_1.default.resolve(importer, id);
    if (id.includes('utssdk') || id.includes('uni_modules')) {
        const parts = (0, utils_1.normalizePath)(id).split('/');
        const parentDir = parts[parts.length - 2];
        if (parentDir === 'uni_modules' || parentDir === 'utssdk') {
            const basedir = parentDir === 'uni_modules' ? 'utssdk' : '';
            const resolvePlatformDir = (p) => {
                return path_1.default.resolve(id, basedir, p);
            };
            let index = resolveUtsFile(resolvePlatformDir(process.env.UNI_UTS_PLATFORM));
            if (index) {
                return index;
            }
            index = path_1.default.resolve(id, basedir, 'index.uts');
            if (fs_1.default.existsSync(index)) {
                return index;
            }
        }
    }
}
exports.resolveUtsModule = resolveUtsModule;
function resolveUtsFile(dir, extensions = ['.uts', '.ts', '.js']) {
    for (let i = 0; i < extensions.length; i++) {
        const indexFile = path_1.default.join(dir, 'index' + extensions[i]);
        if (fs_1.default.existsSync(indexFile)) {
            return indexFile;
        }
    }
}
function resolveUTSCompiler() {
    let compilerPath = '';
    if ((0, hbx_1.isInHBuilderX)()) {
        try {
            compilerPath = require.resolve(path_1.default.resolve(process.env.UNI_HBUILDERX_PLUGINS, 'uniapp-uts-v1'));
        }
        catch (e) { }
    }
    if (!compilerPath) {
        try {
            compilerPath = require.resolve('@dcloudio/uni-uts-v1', {
                paths: [process.env.UNI_CLI_CONTEXT],
            });
        }
        catch (e) { }
    }
    if (!compilerPath) {
        throw 'uts compiler is not found';
    }
    return require(compilerPath);
}
exports.resolveUTSCompiler = resolveUTSCompiler;
