UNPKG

@lark-project/cli

Version:

飞书项目插件开发工具

58 lines (57 loc) 2.52 kB
"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;