uni_modules.js 3.5 KB
Newer Older
fxy060608's avatar
fxy060608 已提交
1
"use strict";
fxy060608's avatar
fxy060608 已提交
2
var __importDefault = (this && this.__importDefault) || function (mod) {
fxy060608's avatar
fxy060608 已提交
3 4 5
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
fxy060608's avatar
fxy060608 已提交
6
exports.parseInject = exports.parseInjects = exports.parseUniExtApis = void 0;
fxy060608's avatar
fxy060608 已提交
7 8 9
const path_1 = __importDefault(require("path"));
const fs_extra_1 = __importDefault(require("fs-extra"));
const merge_1 = require("merge");
fxy060608's avatar
fxy060608 已提交
10
function parseUniExtApis(vite = true) {
fxy060608's avatar
fxy060608 已提交
11 12
    const uniModulesDir = path_1.default.resolve(process.env.UNI_INPUT_DIR, 'uni_modules');
    if (!fs_extra_1.default.existsSync(uniModulesDir)) {
fxy060608's avatar
fxy060608 已提交
13
        return {};
fxy060608's avatar
fxy060608 已提交
14
    }
fxy060608's avatar
fxy060608 已提交
15
    const injects = {};
fxy060608's avatar
fxy060608 已提交
16 17 18 19 20 21 22 23 24 25
    fs_extra_1.default.readdirSync(uniModulesDir).forEach((uniModuleDir) => {
        var _a, _b;
        // 必须以 uni- 开头
        if (!uniModuleDir.startsWith('uni-')) {
            return;
        }
        const pkgPath = path_1.default.resolve(uniModulesDir, uniModuleDir, 'package.json');
        if (!fs_extra_1.default.existsSync(pkgPath)) {
            return;
        }
fxy060608's avatar
fxy060608 已提交
26
        const exports = (_b = (_a = JSON.parse(fs_extra_1.default.readFileSync(pkgPath, 'utf8'))) === null || _a === void 0 ? void 0 : _a.uni_modules) === null || _b === void 0 ? void 0 : _b['uni-ext-api'];
fxy060608's avatar
fxy060608 已提交
27
        if (exports) {
fxy060608's avatar
fxy060608 已提交
28 29 30 31
            Object.assign(injects, parseInjects(vite, process.env.UNI_PLATFORM === 'h5' ? 'web' : process.env.UNI_PLATFORM, `@/uni_modules/${uniModuleDir}` +
                (vite || !process.env.UNI_UTS_PLATFORM
                    ? ''
                    : `/utssdk/${process.env.UNI_UTS_PLATFORM}/index`), exports));
fxy060608's avatar
fxy060608 已提交
32 33
        }
    });
fxy060608's avatar
fxy060608 已提交
34
    return injects;
fxy060608's avatar
fxy060608 已提交
35
}
fxy060608's avatar
fxy060608 已提交
36
exports.parseUniExtApis = parseUniExtApis;
fxy060608's avatar
fxy060608 已提交
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
/**
 *  uni:'getBatteryInfo'
 * import getBatteryInfo from '..'
 *
 * uni:['getBatteryInfo']
 * import { getBatteryInfo } from '..'
 *
 * uni:['openLocation','chooseLocation']
 * import { openLocation, chooseLocation } from '..'
 *
 * uni:{
 *  onUserCaptureScreen: "onCaptureScreen"
 *  offUserCaptureScreen: "offCaptureScreen"
 * }
 *
 * uni.getBatteryInfo = getBatteryInfo
 * @param source
 * @param globalObject
 * @param define
 * @returns
 */
fxy060608's avatar
fxy060608 已提交
58
function parseInjects(vite = true, platform, source, exports = {}) {
fxy060608's avatar
fxy060608 已提交
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
    let rootDefines = {};
    Object.keys(exports).forEach((name) => {
        if (name.startsWith('uni')) {
            rootDefines[name] = exports[name];
        }
    });
    const platformDefines = exports[platform];
    // 该平台不支持
    if (platformDefines === false) {
        return {};
    }
    if (platformDefines) {
        rootDefines = (0, merge_1.recursive)(true, rootDefines, platformDefines);
    }
    const injects = {};
    for (const key in rootDefines) {
fxy060608's avatar
fxy060608 已提交
75
        Object.assign(injects, parseInject(vite, source, 'uni', rootDefines[key]));
fxy060608's avatar
fxy060608 已提交
76 77 78 79
    }
    return injects;
}
exports.parseInjects = parseInjects;
fxy060608's avatar
fxy060608 已提交
80
function parseInject(vite = true, source, globalObject, define) {
fxy060608's avatar
fxy060608 已提交
81 82 83 84 85
    const injects = {};
    if (define === false) {
    }
    else if (typeof define === 'string') {
        // {'uni.getBatteryInfo' : '@dcloudio/uni-getbatteryinfo'}
fxy060608's avatar
fxy060608 已提交
86
        injects[globalObject + '.' + define] = vite ? source : [source, 'default'];
fxy060608's avatar
fxy060608 已提交
87 88
    }
    else if (Array.isArray(define)) {
fxy060608's avatar
fxy060608 已提交
89
        // {'uni.getBatteryInfo' : ['@dcloudio/uni-getbatteryinfo','getBatteryInfo]}
fxy060608's avatar
fxy060608 已提交
90
        define.forEach((d) => {
fxy060608's avatar
fxy060608 已提交
91
            injects[globalObject + '.' + d] = [source, d];
fxy060608's avatar
fxy060608 已提交
92 93 94 95 96
        });
    }
    else {
        const keys = Object.keys(define);
        keys.forEach((d) => {
fxy060608's avatar
fxy060608 已提交
97
            injects[globalObject + '.' + d] = [source, define[d]];
fxy060608's avatar
fxy060608 已提交
98 99
        });
    }
fxy060608's avatar
fxy060608 已提交
100
    return injects;
fxy060608's avatar
fxy060608 已提交
101
}
fxy060608's avatar
fxy060608 已提交
102
exports.parseInject = parseInject;