H5-contact/node_modules/@dcloudio/uni-h5-vite/dist/plugins/api.js

80 lines
2.7 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"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;