uni-ticket-system/node_modules/@dcloudio/uni-cli-shared/dist/json/mp/pages.js
2023-12-05 10:11:10 +08:00

148 lines
5.5 KiB
JavaScript
Raw 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";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.mergeMiniProgramAppJson = exports.parseMiniProgramPagesJson = void 0;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const shared_1 = require("@vue/shared");
const json_1 = require("../json");
const pages_1 = require("../pages");
const utils_1 = require("./utils");
const utils_2 = require("../../utils");
const project_1 = require("./project");
const manifest_1 = require("../manifest");
const theme_1 = require("../theme");
function parseMiniProgramPagesJson(jsonStr, platform, options = { subpackages: false }) {
return parsePagesJson(jsonStr, platform, options);
}
exports.parseMiniProgramPagesJson = parseMiniProgramPagesJson;
const NON_APP_JSON_KEYS = [
'unipush',
'secureNetwork',
'usingComponents',
'optimization',
'scopedSlotsCompiler',
'usingComponents',
'uniStatistics',
'mergeVirtualHostAttributes',
];
function mergeMiniProgramAppJson(appJson, platformJson = {}) {
Object.keys(platformJson).forEach((name) => {
if (!(0, project_1.isMiniProgramProjectJsonKey)(name) &&
!NON_APP_JSON_KEYS.includes(name)) {
appJson[name] = platformJson[name];
}
});
}
exports.mergeMiniProgramAppJson = mergeMiniProgramAppJson;
function parsePagesJson(jsonStr, platform, { debug, darkmode, networkTimeout, subpackages, windowOptionsMap, tabBarOptionsMap, tabBarItemOptionsMap, } = {
subpackages: false,
}) {
let appJson = {
pages: [],
};
let pageJsons = {};
let nvuePages = [];
// preprocess
const pagesJson = (0, json_1.parseJson)(jsonStr, true);
if (!pagesJson) {
throw new Error(`[vite] Error: pages.json parse failed.\n`);
}
function addPageJson(pagePath, style) {
const filename = path_1.default.join(process.env.UNI_INPUT_DIR, pagePath);
if (fs_1.default.existsSync(filename + '.nvue') &&
!fs_1.default.existsSync(filename + '.vue')) {
nvuePages.push(pagePath);
}
const windowOptions = {};
if (platform === 'mp-baidu') {
// 仅百度小程序需要页面配置 component:true
// 快手小程序反而不能配置 component:true故不能统一添加目前硬编码处理
windowOptions.component = true;
}
pageJsons[pagePath] = (0, shared_1.extend)(windowOptions, (0, utils_1.parseWindowOptions)(style, platform, windowOptionsMap));
}
// pages
(0, pages_1.validatePages)(pagesJson, jsonStr);
pagesJson.pages.forEach((page) => {
appJson.pages.push(page.path);
addPageJson(page.path, page.style);
});
// subpackages
pagesJson.subPackages = pagesJson.subPackages || pagesJson.subpackages;
if (pagesJson.subPackages) {
if (subpackages) {
appJson.subPackages = pagesJson.subPackages.map(({ root, pages, ...rest }) => {
return (0, shared_1.extend)({
root,
pages: pages.map((page) => {
addPageJson((0, utils_2.normalizePath)(path_1.default.join(root, page.path)), page.style);
return page.path;
}),
}, rest);
});
}
else {
pagesJson.subPackages.forEach(({ root, pages }) => {
pages.forEach((page) => {
const pagePath = (0, utils_2.normalizePath)(path_1.default.join(root, page.path));
appJson.pages.push(pagePath);
addPageJson(pagePath, page.style);
});
});
}
}
// window
if (pagesJson.globalStyle) {
const windowOptions = (0, utils_1.parseWindowOptions)(pagesJson.globalStyle, platform, windowOptionsMap);
const { usingComponents } = windowOptions;
if (usingComponents) {
delete windowOptions.usingComponents;
appJson.usingComponents = usingComponents;
}
else {
delete appJson.usingComponents;
}
appJson.window = windowOptions;
}
// tabBar
if (pagesJson.tabBar) {
const tabBar = (0, utils_1.parseTabBar)(pagesJson.tabBar, platform, tabBarOptionsMap, tabBarItemOptionsMap);
if (tabBar) {
appJson.tabBar = tabBar;
}
}
;
['preloadRule', 'workers', 'plugins', 'entryPagePath'].forEach((name) => {
if ((0, shared_1.hasOwn)(pagesJson, name)) {
appJson[name] = pagesJson[name];
}
});
if (debug) {
appJson.debug = debug;
}
if (networkTimeout) {
appJson.networkTimeout = networkTimeout;
}
const manifestJson = (0, manifest_1.getPlatformManifestJsonOnce)();
if (!darkmode) {
const { pages, window, tabBar } = (0, theme_1.initTheme)(manifestJson, appJson);
(0, shared_1.extend)(appJson, JSON.parse(JSON.stringify({ pages, window, tabBar })));
delete appJson.darkmode;
delete appJson.themeLocation;
pageJsons = (0, theme_1.initTheme)(manifestJson, pageJsons);
}
else {
const themeLocation = manifestJson.themeLocation || 'theme.json';
if ((0, theme_1.hasThemeJson)(path_1.default.join(process.env.UNI_INPUT_DIR, themeLocation)))
appJson.themeLocation = themeLocation;
}
return {
appJson,
pageJsons,
nvuePages,
};
}