uni-ticket-system/node_modules/@dcloudio/uni-app-uts/dist/plugins/utils.js
2023-12-05 10:11:10 +08:00

212 lines
7.4 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.genClassName = exports.getExtApiComponents = exports.addExtApiComponents = exports.getUniCloudObjectInfo = exports.getUniCloudSpaceList = exports.parseUTSImportFilename = exports.parseUTSRelativeFilename = exports.stringifyMap = exports.isVue = exports.uvueOutDir = exports.kotlinOutDir = exports.parseImports = exports.ENTRY_FILENAME = exports.DEFAULT_APPID = exports.UVUE_CLASS_NAME_PREFIX = void 0;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const es_module_lexer_1 = require("es-module-lexer");
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
const shared_1 = require("@vue/shared");
exports.UVUE_CLASS_NAME_PREFIX = 'Gen';
exports.DEFAULT_APPID = 'HBuilder';
exports.ENTRY_FILENAME = 'index.uts';
async function parseImports(code) {
await es_module_lexer_1.init;
const [imports] = (0, es_module_lexer_1.parse)(code);
return imports
.map(({ s, e }) => {
return `import "${code.slice(s, e)}"`;
})
.concat(parseUniExtApiImports(code))
.join('\n');
}
exports.parseImports = parseImports;
function parseUniExtApiImports(code) {
const extApis = (0, uni_cli_shared_1.parseUniExtApiNamespacesJsOnce)(process.env.UNI_UTS_PLATFORM, process.env.UNI_UTS_TARGET_LANGUAGE);
const pattern = /uni\.(\w+)/g;
const apis = new Set();
let match;
while ((match = pattern.exec(code)) !== null) {
apis.add(match[1]);
}
const imports = [];
apis.forEach((api) => {
const extApi = extApis[api];
if (extApi) {
imports.push(`import "${extApi[0]}"`);
}
});
return imports;
}
function kotlinOutDir() {
return path_1.default.join(process.env.UNI_OUTPUT_DIR, '../.kotlin');
}
exports.kotlinOutDir = kotlinOutDir;
function uvueOutDir() {
return path_1.default.join(process.env.UNI_OUTPUT_DIR, '../.uvue');
}
exports.uvueOutDir = uvueOutDir;
function isVue(filename) {
return filename.endsWith('.vue') || filename.endsWith('.uvue');
}
exports.isVue = isVue;
function stringifyMap(obj, ts = false) {
return serialize(obj, ts);
}
exports.stringifyMap = stringifyMap;
function serialize(obj, ts = false) {
if ((0, shared_1.isString)(obj)) {
return `"${obj}"`;
}
else if ((0, shared_1.isPlainObject)(obj)) {
const entries = Object.entries(obj).map(([key, value]) => `[${serialize(key, ts)},${serialize(value, ts)}]`);
if (entries.length) {
return `utsMapOf([${entries.join(',')}])`;
}
if (ts) {
return `utsMapOf<string, any | null>()`;
}
return `utsMapOf()`;
}
else if ((0, shared_1.isArray)(obj)) {
return `[${obj.map((item) => serialize(item, ts)).join(',')}]`;
}
else {
return String(obj);
}
}
function parseUTSRelativeFilename(filename) {
if (!path_1.default.isAbsolute(filename)) {
return filename;
}
return (0, uni_cli_shared_1.normalizeNodeModules)(path_1.default.relative(process.env.UNI_INPUT_DIR, filename));
}
exports.parseUTSRelativeFilename = parseUTSRelativeFilename;
function parseUTSImportFilename(filename) {
if (!path_1.default.isAbsolute(filename)) {
return filename;
}
return (0, uni_cli_shared_1.normalizePath)(path_1.default.join(uvueOutDir(), (0, uni_cli_shared_1.normalizeNodeModules)(path_1.default.relative(process.env.UNI_INPUT_DIR, filename))));
}
exports.parseUTSImportFilename = parseUTSImportFilename;
let uniCloudSpaceList;
function getUniCloudSpaceList() {
if (uniCloudSpaceList) {
return uniCloudSpaceList;
}
if (!process.env.UNI_CLOUD_SPACES) {
uniCloudSpaceList = [];
return uniCloudSpaceList;
}
try {
const spaces = JSON.parse(process.env.UNI_CLOUD_SPACES);
if (!Array.isArray(spaces)) {
uniCloudSpaceList = [];
return uniCloudSpaceList;
}
uniCloudSpaceList = spaces.map((space) => {
if (space.provider === 'tcb') {
space.provider = 'tencent';
}
if (space.clientSecret) {
return {
provider: space.provider,
spaceName: space.name,
spaceId: space.id,
clientSecret: space.clientSecret,
endpoint: space.apiEndpoint,
workspaceFolder: space.workspaceFolder,
};
}
else {
return {
provider: space.provider,
spaceName: space.name,
spaceId: space.id,
workspaceFolder: space.workspaceFolder,
};
}
});
}
catch (e) {
console.error(e);
}
uniCloudSpaceList = uniCloudSpaceList || [];
if (uniCloudSpaceList.length > 1) {
console.warn('Multi uniCloud space is not supported yet.');
}
return uniCloudSpaceList;
}
exports.getUniCloudSpaceList = getUniCloudSpaceList;
function getUniCloudObjectInfo(uniCloudSpaceList) {
let uniCloudWorkspaceFolder = process.env.UNI_INPUT_DIR.endsWith('src')
? path_1.default.resolve(process.env.UNI_INPUT_DIR, '..')
: process.env.UNI_INPUT_DIR;
let serviceProvider = 'aliyun';
if (uniCloudSpaceList && uniCloudSpaceList.length > 0) {
const space = uniCloudSpaceList[0];
if (space.workspaceFolder) {
uniCloudWorkspaceFolder = space.workspaceFolder;
}
serviceProvider = space.provider === 'tencent' ? 'tcb' : space.provider;
}
else {
serviceProvider =
['aliyun', 'tcb', 'alipay'].find((item) => fs_1.default.existsSync(path_1.default.resolve(uniCloudWorkspaceFolder, 'uniCloud-' + item))) || 'aliyun';
}
try {
const { getWorkspaceObjectInfo } = require('../../lib/unicloud-utils');
return getWorkspaceObjectInfo(uniCloudWorkspaceFolder, serviceProvider);
}
catch (e) {
console.error(e);
return [];
}
}
exports.getUniCloudObjectInfo = getUniCloudObjectInfo;
const extApiComponents = new Set();
function addExtApiComponents(components) {
components.forEach((component) => {
extApiComponents.add(component);
});
}
exports.addExtApiComponents = addExtApiComponents;
function getExtApiComponents() {
return extApiComponents;
}
exports.getExtApiComponents = getExtApiComponents;
function genClassName(fileName, prefix = 'Gen') {
return (prefix +
(0, shared_1.capitalize)((0, shared_1.camelize)(verifySymbol((0, uni_cli_shared_1.removeExt)((0, uni_cli_shared_1.normalizeNodeModules)(fileName).replace(/[\/|_]/g, '-'))))));
}
exports.genClassName = genClassName;
function isValidStart(c) {
return !!c.match(/^[A-Za-z_-]$/);
}
function isValidContinue(c) {
return !!c.match(/^[A-Za-z0-9_-]$/);
}
function verifySymbol(s) {
const chars = Array.from(s);
if (isValidStart(chars[0]) && chars.slice(1).every(isValidContinue)) {
return s;
}
const buf = [];
let hasStart = false;
for (const c of chars) {
if (!hasStart && isValidStart(c)) {
hasStart = true;
buf.push(c);
}
else if (isValidContinue(c)) {
buf.push(c);
}
}
if (buf.length === 0) {
buf.push('_');
}
return buf.join('');
}