@lark-project/cli
Version:
飞书项目插件开发工具
58 lines (57 loc) • 2.52 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.jsCodeGeneration = exports.cssCodeGeneration = void 0;
const fs_extra_1 = __importDefault(require("fs-extra"));
const paths_1 = __importDefault(require("../../config/paths"));
const constants_1 = require("../../config/constants");
// 0.0.1 版本白名单
const WHITE_LIST = ['SemiIcons', 'SemiUiReact'];
// 根据 externals 自动生成 dependency
const transform = externals => {
const dependency = {};
for (let dep in externals) {
dependency[externals[dep]] = {
version: WHITE_LIST.includes(externals[dep]) ? '0.0.1' : '0.0.0',
};
}
return dependency;
};
/** CSS code generation */
const cssCodeGeneration = (css) => (css && css.toString().replace(/[\r\n]*\/[\*\/](?=# sourceMap).*[\r\n]*/g, '')) || '';
exports.cssCodeGeneration = cssCodeGeneration;
/** JS code generation */
const jsCodeGeneration = (data) => {
const builtin_permissions = {
document: 'read',
};
const plugin_config = fs_extra_1.default.readJsonSync(paths_1.default.pluginConfigJson);
const extWebpackConfig = require('../../config/buildConfig');
const { externals = {} } = extWebpackConfig;
const { dependency = {}, permissions = {} } = plugin_config !== null && plugin_config !== void 0 ? plugin_config : {};
const merged_externals = Object.assign(Object.assign({}, constants_1.BUILTIN_EXTERNALS), externals);
const merged_permissions = Object.assign(Object.assign({}, builtin_permissions), permissions);
const dependency_from_externals = transform(merged_externals);
const merged_dependency = Object.assign(Object.assign({}, dependency_from_externals), dependency);
const permissionsStr = JSON.stringify(merged_permissions).replace(/"/g, "'");
const dependencyStr = JSON.stringify(merged_dependency).replace(/"/g, "'");
return `(function config()
{return {
iframeAllocateMode: 'built_in_keys',
runtimeVersion: '1.0.0',
iframeKey: 'internal_plugin',
permissions: ${permissionsStr},
dependency: ${dependencyStr},
provider: \`(${data
.toString()
.replace(/(?!\\)`/g, '\\`')
.replace(/\\(?!`)/g, '\\\\')
.replace(/\$(?=\{)/g, '\\$')
.replace(/^!/, '')
.replace(/;$/, '')})\`
}
})()`;
};
exports.jsCodeGeneration = jsCodeGeneration;