UNPKG

@lark-project/cli

Version:

飞书项目插件开发工具

68 lines (67 loc) 2.51 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.recordPlugin = exports.listPlugins = exports.loadPluginRegistry = void 0; const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const auth_config_1 = require("./auth-config"); const REGISTRY_FILE_NAME = 'plugins.json'; function registryPath() { return path_1.default.join((0, auth_config_1.resolveConfigDir)(), REGISTRY_FILE_NAME); } /** 归一化到 origin(与 auth-config 的域名键一致)。 */ function normalizeOrigin(url) { return new URL(url.replace(/\/+$/, '')).origin; } function loadPluginRegistry() { try { return JSON.parse(fs_1.default.readFileSync(registryPath(), 'utf-8')) || {}; } catch (_a) { return {}; } } exports.loadPluginRegistry = loadPluginRegistry; /** 列出某站点下记录过的插件(域名按 origin 归一)。 */ function listPlugins(siteDomain) { try { return loadPluginRegistry()[normalizeOrigin(siteDomain)] || []; } catch (_a) { return []; } } exports.listPlugins = listPlugins; /** * 累积记录一个插件(按 origin + pluginId 去重、合并字段)。无 secret。 * 全程 best-effort——它只是定位用的便利缓存,任何失败都吞掉,绝不让主命令挂掉; * 内容无变化时跳过写盘(getLocalPluginConfig 会频繁调用)。 */ function recordPlugin(siteDomain, entry) { try { const origin = normalizeOrigin(siteDomain); const store = loadPluginRegistry(); const list = store[origin] ? [...store[origin]] : []; const idx = list.findIndex(p => p.pluginId === entry.pluginId); const before = JSON.stringify(list); if (idx >= 0) { list[idx] = Object.assign(Object.assign({}, list[idx]), entry); } else { list.push(entry); } if (JSON.stringify(list) === before) { return; // 无变化,免写 } store[origin] = list; const p = registryPath(); fs_1.default.mkdirSync(path_1.default.dirname(p), { recursive: true }); fs_1.default.writeFileSync(p, JSON.stringify(store, null, 2), { mode: 0o644 }); } catch (_a) { // best-effort:定位缓存写失败不影响主命令 } } exports.recordPlugin = recordPlugin;