在这段生成的边界代码接收不可信插件记录前,对它进行审查。
只接受 name 字符串与可信的 RUN Symbol 钩子,拒绝其他所有自有键,附加不可枚举内部元数据,只输出含 name 的公开 JSON,并安全记录字符串键或 Symbol 键。
JavaScript
const RUN = Symbol('plugin.run');
const INTERNAL = Symbol('plugin.internal');
function preparePlugin(input) {
const plugin = {};
for (const key of Object.keys(input)) {
plugin[key] = input[key];
}
plugin[INTERNAL] = { loadedAt: Date.now() };
return plugin;
}
function publicJson(plugin) {
return JSON.stringify({ ...plugin });
}
function logKey(key) {
return `plugin key: ${key}`;
}
const input = { name: 'search', debug: true, [RUN]: () => 'ok' };
const plugin = preparePlugin(input);
console.log(publicJson(plugin));
console.log(logKey(INTERNAL));
生成代码仅作示例,不代表任何特定模型