| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305 |
- "use strict";
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- var desc = Object.getOwnPropertyDescriptor(m, k);
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
- desc = { enumerable: true, get: function() { return m[k]; } };
- }
- Object.defineProperty(o, k2, desc);
- }) : (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- o[k2] = m[k];
- }));
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
- Object.defineProperty(o, "default", { enumerable: true, value: v });
- }) : function(o, v) {
- o["default"] = v;
- });
- var __importStar = (this && this.__importStar) || function (mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
- __setModuleDefault(result, mod);
- return result;
- };
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.resolveSourceMapFile = exports.relative = exports.isColorSupported = exports.parseSwiftPackageWithPluginId = exports.parseKotlinPackageWithPluginId = exports.genConfigJson = exports.genComponentsCode = exports.resolveIOSComponents = exports.resolveAndroidComponents = exports.getCompilerServer = exports.createResolveTypeReferenceName = exports.resolveUTSPlatformFile = exports.resolveIOSDir = exports.resolveAndroidDir = exports.isRootIndex = exports.moveRootIndexSourceMap = exports.genUTSPlatformResource = exports.resolvePackage = exports.getUTSCompiler = exports.resolveUTSSourceMapPath = exports.ERR_MSG_PLACEHOLDER = void 0;
- const path_1 = __importStar(require("path"));
- const fs_extra_1 = __importDefault(require("fs-extra"));
- const shared_1 = require("@vue/shared");
- const fast_glob_1 = __importDefault(require("fast-glob"));
- const shared_2 = require("./shared");
- exports.ERR_MSG_PLACEHOLDER = `___ERR_MSG___`;
- function resolveUTSSourceMapPath() {
- return (0, shared_2.resolveSourceMapPath)();
- }
- exports.resolveUTSSourceMapPath = resolveUTSSourceMapPath;
- function getUTSCompiler() {
- // eslint-disable-next-line no-restricted-globals
- return require('@dcloudio/uts');
- }
- exports.getUTSCompiler = getUTSCompiler;
- function resolvePackage(filename) {
- const parts = (0, shared_2.normalizePath)(filename).split('/');
- const isUniModules = parts.includes('uni_modules');
- const index = isUniModules
- ? parts.findIndex((part) => part === 'uni_modules')
- : parts.findIndex((part) => part === 'utssdk');
- if (index > -1) {
- const id = parts[index + 1];
- const name = (0, shared_1.camelize)(prefix(id));
- return {
- id,
- name,
- namespace: 'UTSSDK' + (isUniModules ? 'Modules' : '') + (0, shared_1.capitalize)(name),
- is_uni_modules: isUniModules,
- extname: '.uts',
- };
- }
- }
- exports.resolvePackage = resolvePackage;
- function genUTSPlatformResource(filename, options) {
- const platformFile = resolveUTSPlatformFile(filename, options);
- const { platform } = options;
- const utsInputDir = resolveUTSPlatformDir(filename, platform);
- const utsOutputDir = resolveUTSPlatformDir(platformFile, platform);
- // 拷贝所有非uts,vue文件及目录
- if (fs_extra_1.default.existsSync(utsInputDir)) {
- fs_extra_1.default.copySync(utsInputDir, utsOutputDir, {
- filter(src) {
- if (src.endsWith('config.json')) {
- return false;
- }
- return !['.uts', '.vue'].includes(path_1.default.extname(src));
- },
- });
- }
- copyConfigJson(utsInputDir, utsOutputDir, options.components, options.package);
- // 生产模式下,需要将生成的平台文件转移到 src 下
- const srcDir = path_1.default.resolve(utsOutputDir, 'src');
- if (!fs_extra_1.default.existsSync(srcDir)) {
- fs_extra_1.default.mkdirSync(srcDir);
- }
- if (fs_extra_1.default.existsSync(platformFile)) {
- fs_extra_1.default.moveSync(platformFile, path_1.default.resolve(utsOutputDir, 'src/index' + options.extname), {
- overwrite: true,
- });
- }
- }
- exports.genUTSPlatformResource = genUTSPlatformResource;
- function moveRootIndexSourceMap(filename, { inputDir, platform, extname }) {
- if (isRootIndex(filename, platform)) {
- const sourceMapFilename = path_1.default
- .resolve(resolveUTSSourceMapPath(), path_1.default.relative(inputDir, filename))
- .replace(path_1.default.extname(filename), extname + '.map');
- if (fs_extra_1.default.existsSync(sourceMapFilename)) {
- const newSourceMapFilename = path_1.default.resolve(path_1.default.dirname(sourceMapFilename), platform, path_1.default.basename(sourceMapFilename));
- fs_extra_1.default.moveSync(sourceMapFilename, newSourceMapFilename, {
- overwrite: true,
- });
- }
- }
- }
- exports.moveRootIndexSourceMap = moveRootIndexSourceMap;
- function isRootIndex(filename, platform) {
- return path_1.default.basename(path_1.default.dirname(filename)) !== platform;
- }
- exports.isRootIndex = isRootIndex;
- function resolveAndroidDir(filename) {
- return resolveUTSPlatformDir(filename, 'app-android');
- }
- exports.resolveAndroidDir = resolveAndroidDir;
- function resolveIOSDir(filename) {
- return resolveUTSPlatformDir(filename, 'app-ios');
- }
- exports.resolveIOSDir = resolveIOSDir;
- function resolveUTSPlatformDir(filename, platform) {
- const maybePlatformDir = path_1.default.dirname(filename);
- if (isRootIndex(filename, platform)) {
- return path_1.default.join(maybePlatformDir, platform);
- }
- return maybePlatformDir;
- }
- function resolveUTSPlatformFile(filename, { inputDir, outputDir, platform, extname }) {
- let platformFile = path_1.default
- .resolve(outputDir, path_1.default.relative(inputDir, filename))
- .replace(path_1.default.extname(filename), extname);
- // 如果是根目录的 index.uts 编译出来的 index.kt,则移动到平台目录下
- if (isRootIndex(filename, platform)) {
- if (fs_extra_1.default.existsSync(platformFile)) {
- const newPlatformFile = path_1.default.resolve(path_1.default.dirname(platformFile), platform + '/index' + extname);
- fs_extra_1.default.moveSync(platformFile, newPlatformFile, {
- overwrite: true,
- });
- platformFile = newPlatformFile;
- }
- }
- return platformFile;
- }
- exports.resolveUTSPlatformFile = resolveUTSPlatformFile;
- function resolveTypeAliasDeclNames(items) {
- const names = [];
- items.forEach((item) => {
- if (item.type === 'TsTypeAliasDeclaration') {
- names.push(item.id.value);
- }
- });
- return names;
- }
- function createResolveTypeReferenceName(namespace, ast, interfaceTypes) {
- const names = resolveTypeAliasDeclNames(ast.body);
- return (name) => {
- if (names.includes(name) || interfaceTypes.includes(name)) {
- return namespace + (0, shared_1.capitalize)(name) + 'JSONObject';
- }
- return name;
- };
- }
- exports.createResolveTypeReferenceName = createResolveTypeReferenceName;
- function getCompilerServer(pluginName) {
- if (!process.env.UNI_HBUILDERX_PLUGINS) {
- console.error(`HBuilderX is not found`);
- return;
- }
- const compilerServerPath = path_1.default.resolve(process.env.UNI_HBUILDERX_PLUGINS, `${pluginName}/out/${pluginName === 'uniapp-runextension' ? 'main.js' : 'external.js'}`);
- if (fs_extra_1.default.existsSync(compilerServerPath)) {
- // eslint-disable-next-line no-restricted-globals
- return require(compilerServerPath);
- }
- else {
- if ((0, shared_2.runByHBuilderX)()) {
- (0, shared_2.installHBuilderXPlugin)(pluginName);
- }
- else {
- console.error(compilerServerPath + ' is not found');
- }
- }
- }
- exports.getCompilerServer = getCompilerServer;
- function resolveComponents(platform, pluginDir, is_uni_modules) {
- const components = {};
- const platformDir = path_1.default.resolve(pluginDir, is_uni_modules ? 'utssdk' : '', platform);
- if (fs_extra_1.default.existsSync(platformDir)) {
- fast_glob_1.default
- .sync('**/*.vue', { cwd: platformDir, absolute: true })
- .forEach((file) => {
- let name = parseVueComponentName(file);
- if (!name) {
- if (file.endsWith('index.vue')) {
- name = path_1.default.basename(pluginDir);
- }
- }
- if (name && !components[name]) {
- components[name] = file;
- }
- });
- }
- return components;
- }
- function resolveAndroidComponents(pluginDir, is_uni_modules) {
- return resolveComponents('app-android', pluginDir, is_uni_modules);
- }
- exports.resolveAndroidComponents = resolveAndroidComponents;
- function resolveIOSComponents(pluginDir, is_uni_modules) {
- return resolveComponents('app-ios', pluginDir, is_uni_modules);
- }
- exports.resolveIOSComponents = resolveIOSComponents;
- const nameRE = /export\s+default\s+[\s\S]*?name\s*:\s*['|"](.*?)['|"]/;
- function parseVueComponentName(file) {
- const content = fs_extra_1.default.readFileSync(file, 'utf8');
- const matches = content.match(nameRE);
- if (matches) {
- return matches[1];
- }
- }
- function genComponentsCode(filename, components, isX) {
- const codes = [];
- const dirname = path_1.default.dirname(filename);
- Object.keys(components).forEach((name) => {
- const source = (0, shared_2.normalizePath)(path_1.default.relative(dirname, components[name]));
- const className = (0, shared_1.capitalize)((0, shared_1.camelize)(name));
- codes.push(`export { default as ${className}Component${isX ? `, ${className}Node` : ''} } from '${source.startsWith('.') ? source : './' + source}'`);
- });
- return codes.join('\n');
- }
- exports.genComponentsCode = genComponentsCode;
- function genConfigJson(platform, components, pluginRelativeDir, is_uni_modules, inputDir, outputDir) {
- if (!Object.keys(components).length) {
- return;
- }
- const pluginId = (0, path_1.basename)(pluginRelativeDir);
- const utsInputDir = (0, path_1.resolve)(inputDir, pluginRelativeDir, is_uni_modules ? 'utssdk' : '', platform);
- const utsOutputDir = (0, path_1.resolve)(outputDir, pluginRelativeDir, is_uni_modules ? 'utssdk' : '', platform);
- copyConfigJson(utsInputDir, utsOutputDir, components, platform === 'app-android'
- ? parseKotlinPackageWithPluginId(pluginId, is_uni_modules) + '.'
- : parseSwiftPackageWithPluginId(pluginId, is_uni_modules));
- }
- exports.genConfigJson = genConfigJson;
- function copyConfigJson(inputDir, outputDir, componentsObj, namespace) {
- const configJsonFilename = (0, path_1.resolve)(inputDir, 'config.json');
- const outputConfigJsonFilename = (0, path_1.resolve)(outputDir, 'config.json');
- if (Object.keys(componentsObj).length) {
- //存在组件
- const components = genComponentsConfigJson(componentsObj, namespace);
- if (fs_extra_1.default.existsSync(configJsonFilename)) {
- fs_extra_1.default.outputFileSync(outputConfigJsonFilename, JSON.stringify((0, shared_1.extend)({ components }, (0, shared_2.parseJson)(fs_extra_1.default.readFileSync(configJsonFilename, 'utf8'))), null, 2));
- }
- else {
- fs_extra_1.default.outputFileSync(outputConfigJsonFilename, JSON.stringify({ components }, null, 2));
- }
- }
- else {
- if (fs_extra_1.default.existsSync(configJsonFilename)) {
- fs_extra_1.default.copySync(configJsonFilename, outputConfigJsonFilename);
- }
- }
- }
- function genComponentsConfigJson(components, namespace) {
- const res = [];
- Object.keys(components).forEach((name) => {
- res.push({
- name,
- class: namespace + (0, shared_1.capitalize)((0, shared_1.camelize)(name)) + 'Component',
- });
- });
- return res;
- }
- function prefix(id) {
- if (process.env.UNI_UTS_MODULE_PREFIX &&
- !id.startsWith(process.env.UNI_UTS_MODULE_PREFIX)) {
- return process.env.UNI_UTS_MODULE_PREFIX + '-' + id;
- }
- return id;
- }
- function parseKotlinPackageWithPluginId(id, is_uni_modules) {
- return 'uts.sdk.' + (is_uni_modules ? 'modules.' : '') + (0, shared_1.camelize)(prefix(id));
- }
- exports.parseKotlinPackageWithPluginId = parseKotlinPackageWithPluginId;
- function parseSwiftPackageWithPluginId(id, is_uni_modules) {
- return ('UTSSDK' +
- (is_uni_modules ? 'Modules' : '') +
- (0, shared_1.capitalize)((0, shared_1.camelize)(prefix(id))));
- }
- exports.parseSwiftPackageWithPluginId = parseSwiftPackageWithPluginId;
- function isColorSupported() {
- if ('NO_COLOR' in process.env || (0, shared_2.isInHBuilderX)()) {
- return false;
- }
- return true;
- }
- exports.isColorSupported = isColorSupported;
- function relative(filename, inputDir) {
- if (path_1.default.isAbsolute(filename)) {
- return (0, shared_2.normalizePath)(path_1.default.relative(inputDir, filename));
- }
- return filename;
- }
- exports.relative = relative;
- function resolveSourceMapFile(outputDir, kotlinFile) {
- return (path_1.default.resolve((0, shared_2.resolveSourceMapPath)(), path_1.default.relative(outputDir, kotlinFile)) +
- '.map');
- }
- exports.resolveSourceMapFile = resolveSourceMapFile;
|