80 lines
2.7 KiB
JavaScript
80 lines
2.7 KiB
JavaScript
"use strict";
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.uniApiPlugin = void 0;
|
||
const utils_1 = require("../utils");
|
||
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
|
||
let enableFacialRecognition = false;
|
||
function isEnableFacialRecognition() {
|
||
return enableFacialRecognition;
|
||
}
|
||
function setEnableFacialRecognition(enable) {
|
||
enableFacialRecognition = enable;
|
||
}
|
||
function checkGetMetaInfo(code) {
|
||
return code.includes('window.getMetaInfo');
|
||
}
|
||
function checkFacialRecognition(code) {
|
||
return code.includes('getFacialRecognitionMetaInfo');
|
||
}
|
||
function uniApiPlugin() {
|
||
let viteServer = undefined;
|
||
const inputDir = (0, uni_cli_shared_1.normalizePath)(process.env.UNI_INPUT_DIR);
|
||
return {
|
||
name: 'uni:h5-api',
|
||
enforce: 'pre',
|
||
configureServer(server) {
|
||
viteServer = server;
|
||
},
|
||
transform(code, id) {
|
||
if (!viteServer)
|
||
return;
|
||
// 通过transform阶段识别,仅判断inputDir内部的文件,避免框架文件影响
|
||
if (!isEnableFacialRecognition() &&
|
||
(0, uni_cli_shared_1.normalizePath)(id).startsWith(inputDir)) {
|
||
if (checkFacialRecognition(code)) {
|
||
setEnableFacialRecognition(true);
|
||
// 开发模式触发重新刷新
|
||
viteServer.hot.send({
|
||
type: 'full-reload',
|
||
path: '*',
|
||
});
|
||
}
|
||
}
|
||
},
|
||
generateBundle(_options, bundle) {
|
||
if (viteServer)
|
||
return;
|
||
if (!isEnableFacialRecognition()) {
|
||
const filesNames = Object.keys(bundle);
|
||
for (const fileName of filesNames) {
|
||
const chunk = bundle[fileName];
|
||
if (chunk &&
|
||
chunk.type === 'chunk' &&
|
||
chunk.code &&
|
||
!isEnableFacialRecognition()) {
|
||
setEnableFacialRecognition(checkFacialRecognition(chunk.code) || checkGetMetaInfo(chunk.code));
|
||
}
|
||
}
|
||
}
|
||
},
|
||
transformIndexHtml: {
|
||
order: 'post',
|
||
handler() {
|
||
if (!isEnableFacialRecognition()) {
|
||
return;
|
||
}
|
||
return [
|
||
{
|
||
tag: 'script',
|
||
attrs: {
|
||
src: utils_1.AliYunCloudAuthWebSDK,
|
||
},
|
||
injectTo: 'head',
|
||
},
|
||
];
|
||
},
|
||
},
|
||
};
|
||
}
|
||
exports.uniApiPlugin = uniApiPlugin;
|