mirror of
https://github.com/Wx-2025/ST-Amily2-Chat-Optimisation.git
synced 2026-06-06 03:25:51 +00:00
ci: auto build & obfuscate [2026-04-19 03:01:12] (Jenkins #16)
This commit is contained in:
File diff suppressed because one or more lines are too long
291
utils/config/RuleProfileManager.js
Normal file
291
utils/config/RuleProfileManager.js
Normal file
@@ -0,0 +1,291 @@
|
||||
import { extension_settings } from "/scripts/extensions.js";
|
||||
import { saveSettingsDebounced } from "/script.js";
|
||||
import { extensionName } from "../settings.js";
|
||||
|
||||
const RULE_PROFILE_KEY = 'ruleProfiles';
|
||||
const RULE_ASSIGNMENTS_KEY = 'ruleProfileAssignments';
|
||||
|
||||
// ── 功能槽定义 ──────────────────────────────────────────────────────────────────
|
||||
export const RULE_SLOTS = {
|
||||
table: { label: '表格提取规则' },
|
||||
historiography: { label: '史官/总结提取规则' },
|
||||
condensation: { label: '翰林院·浓缩规则' },
|
||||
queryPreprocessing:{ label: '翰林院·查询预处理规则' },
|
||||
};
|
||||
|
||||
function sanitizeRuleProfile(profile = {}) {
|
||||
const exclusionRules = Array.isArray(profile.exclusionRules)
|
||||
? profile.exclusionRules
|
||||
.map(rule => ({
|
||||
start: String(rule?.start ?? '').trim(),
|
||||
end: String(rule?.end ?? '').trim(),
|
||||
}))
|
||||
.filter(rule => rule.start)
|
||||
: [];
|
||||
|
||||
return {
|
||||
id: String(profile.id ?? '').trim(),
|
||||
name: String(profile.name ?? '').trim(),
|
||||
tagExtractionEnabled: Boolean(profile.tagExtractionEnabled),
|
||||
tags: String(profile.tags ?? ''),
|
||||
exclusionRules,
|
||||
};
|
||||
}
|
||||
|
||||
function cloneRuleProfile(profile = {}) {
|
||||
return {
|
||||
id: profile.id || '',
|
||||
name: profile.name || '',
|
||||
tagExtractionEnabled: Boolean(profile.tagExtractionEnabled),
|
||||
tags: profile.tags || '',
|
||||
exclusionRules: Array.isArray(profile.exclusionRules)
|
||||
? profile.exclusionRules.map(rule => ({
|
||||
start: rule.start || '',
|
||||
end: rule.end || '',
|
||||
}))
|
||||
: [],
|
||||
};
|
||||
}
|
||||
|
||||
function createRuleProfileId(name = 'rule-profile') {
|
||||
const base = String(name || 'rule-profile')
|
||||
.toLowerCase()
|
||||
.replace(/[^a-z0-9]+/g, '-')
|
||||
.replace(/^-+|-+$/g, '') || 'rule-profile';
|
||||
return `${base}-${Date.now().toString(36)}`;
|
||||
}
|
||||
|
||||
function ensureSettingsRoot() {
|
||||
if (!extension_settings[extensionName]) {
|
||||
extension_settings[extensionName] = {};
|
||||
}
|
||||
return extension_settings[extensionName];
|
||||
}
|
||||
|
||||
function ensureProfileMap() {
|
||||
const settings = ensureSettingsRoot();
|
||||
if (!settings[RULE_PROFILE_KEY] || typeof settings[RULE_PROFILE_KEY] !== 'object' || Array.isArray(settings[RULE_PROFILE_KEY])) {
|
||||
settings[RULE_PROFILE_KEY] = {};
|
||||
}
|
||||
return settings[RULE_PROFILE_KEY];
|
||||
}
|
||||
|
||||
function ensureAssignments() {
|
||||
const settings = ensureSettingsRoot();
|
||||
if (!settings[RULE_ASSIGNMENTS_KEY] || typeof settings[RULE_ASSIGNMENTS_KEY] !== 'object' || Array.isArray(settings[RULE_ASSIGNMENTS_KEY])) {
|
||||
settings[RULE_ASSIGNMENTS_KEY] = {};
|
||||
}
|
||||
return settings[RULE_ASSIGNMENTS_KEY];
|
||||
}
|
||||
|
||||
function mergeRuleConfig(profile, fallback = {}) {
|
||||
const safeFallback = sanitizeRuleProfile({
|
||||
id: fallback.id,
|
||||
name: fallback.name,
|
||||
tagExtractionEnabled: fallback.tagExtractionEnabled,
|
||||
tags: fallback.tags,
|
||||
exclusionRules: fallback.exclusionRules,
|
||||
});
|
||||
|
||||
if (!profile) {
|
||||
return safeFallback;
|
||||
}
|
||||
|
||||
return {
|
||||
id: profile.id,
|
||||
name: profile.name,
|
||||
tagExtractionEnabled: profile.tagExtractionEnabled,
|
||||
tags: profile.tags,
|
||||
exclusionRules: cloneRuleProfile(profile).exclusionRules.length > 0
|
||||
? cloneRuleProfile(profile).exclusionRules
|
||||
: safeFallback.exclusionRules,
|
||||
};
|
||||
}
|
||||
|
||||
export class RuleProfileManager {
|
||||
listProfiles() {
|
||||
const profiles = Object.values(ensureProfileMap())
|
||||
.map(profile => cloneRuleProfile(profile))
|
||||
.sort((left, right) => {
|
||||
const leftName = left.name || left.id;
|
||||
const rightName = right.name || right.id;
|
||||
return leftName.localeCompare(rightName, 'zh-Hans-CN');
|
||||
});
|
||||
return profiles;
|
||||
}
|
||||
|
||||
getProfile(id) {
|
||||
if (!id) return null;
|
||||
const profile = ensureProfileMap()[id];
|
||||
return profile ? cloneRuleProfile(profile) : null;
|
||||
}
|
||||
|
||||
saveProfile(profile) {
|
||||
const normalized = sanitizeRuleProfile(profile);
|
||||
const profileId = normalized.id || createRuleProfileId(normalized.name);
|
||||
const nextProfile = {
|
||||
...normalized,
|
||||
id: profileId,
|
||||
name: normalized.name || profileId,
|
||||
};
|
||||
|
||||
ensureProfileMap()[profileId] = nextProfile;
|
||||
saveSettingsDebounced();
|
||||
return cloneRuleProfile(nextProfile);
|
||||
}
|
||||
|
||||
deleteProfile(id) {
|
||||
if (!id) return false;
|
||||
const profiles = ensureProfileMap();
|
||||
if (!profiles[id]) return false;
|
||||
delete profiles[id];
|
||||
saveSettingsDebounced();
|
||||
return true;
|
||||
}
|
||||
|
||||
resolveProfile(id, fallback = {}) {
|
||||
return mergeRuleConfig(this.getProfile(id), fallback);
|
||||
}
|
||||
|
||||
// ── 功能槽分配 ──────────────────────────────────────────────────────────────
|
||||
|
||||
getAssignment(slot) {
|
||||
if (!RULE_SLOTS[slot]) return null;
|
||||
return ensureAssignments()[slot] || null;
|
||||
}
|
||||
|
||||
setAssignment(slot, profileId) {
|
||||
if (!RULE_SLOTS[slot]) return false;
|
||||
const assignments = ensureAssignments();
|
||||
if (profileId) {
|
||||
assignments[slot] = profileId;
|
||||
} else {
|
||||
delete assignments[slot];
|
||||
}
|
||||
saveSettingsDebounced();
|
||||
return true;
|
||||
}
|
||||
|
||||
getAssignedProfile(slot) {
|
||||
const id = this.getAssignment(slot);
|
||||
if (!id) return null;
|
||||
const profile = ensureProfileMap()[id];
|
||||
return profile ? cloneRuleProfile(profile) : null;
|
||||
}
|
||||
}
|
||||
|
||||
export const ruleProfileManager = new RuleProfileManager();
|
||||
|
||||
export function resolveRuleConfig(ruleProfileId, fallback = {}) {
|
||||
return ruleProfileManager.resolveProfile(ruleProfileId, fallback);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过功能槽名解析规则配置(推荐方式)
|
||||
* 先查 assignments,再回退到旧字段
|
||||
*/
|
||||
export function resolveSlotRuleConfig(slot, legacyFallback = {}) {
|
||||
const assignedId = ruleProfileManager.getAssignment(slot);
|
||||
if (assignedId) {
|
||||
const profile = ruleProfileManager.getProfile(assignedId);
|
||||
if (profile) return profile;
|
||||
}
|
||||
// 回退到旧的 resolve 路径
|
||||
return sanitizeRuleProfile(legacyFallback);
|
||||
}
|
||||
|
||||
export function resolveCondensationRuleConfig(settings = {}) {
|
||||
const condensation = settings.condensation || {};
|
||||
return resolveSlotRuleConfig('condensation', {
|
||||
...condensation,
|
||||
ruleProfileId: condensation.ruleProfileId,
|
||||
});
|
||||
}
|
||||
|
||||
export function resolveQueryPreprocessingRuleConfig(settings = {}) {
|
||||
const queryPreprocessing = settings.queryPreprocessing || {};
|
||||
return resolveSlotRuleConfig('queryPreprocessing', {
|
||||
...queryPreprocessing,
|
||||
ruleProfileId: queryPreprocessing.ruleProfileId,
|
||||
});
|
||||
}
|
||||
|
||||
export function resolveTableRuleConfig(settings = {}) {
|
||||
return resolveSlotRuleConfig('table', {
|
||||
id: settings.table_rule_profile_id,
|
||||
tagExtractionEnabled: Boolean(settings.table_tags_to_extract),
|
||||
tags: settings.table_tags_to_extract || '',
|
||||
exclusionRules: settings.table_exclusion_rules || [],
|
||||
});
|
||||
}
|
||||
|
||||
export function resolveHistoriographyRuleConfig(settings = {}) {
|
||||
return resolveSlotRuleConfig('historiography', {
|
||||
id: settings.historiographyRuleProfileId,
|
||||
tagExtractionEnabled: settings.historiographyTagExtractionEnabled ?? false,
|
||||
tags: settings.historiographyTags || '',
|
||||
exclusionRules: settings.historiographyExclusionRules || [],
|
||||
});
|
||||
}
|
||||
|
||||
// ── 一次性迁移:旧分散 profileId 字段 → 统一 assignments ─────────────────────
|
||||
;(() => {
|
||||
const settings = ensureSettingsRoot();
|
||||
const assignments = ensureAssignments();
|
||||
let changed = false;
|
||||
|
||||
// table: table_rule_profile_id → assignments.table
|
||||
if (settings.table_rule_profile_id && !assignments.table) {
|
||||
assignments.table = settings.table_rule_profile_id;
|
||||
changed = true;
|
||||
}
|
||||
|
||||
// historiography: historiographyRuleProfileId → assignments.historiography
|
||||
if (settings.historiographyRuleProfileId && !assignments.historiography) {
|
||||
assignments.historiography = settings.historiographyRuleProfileId;
|
||||
changed = true;
|
||||
}
|
||||
|
||||
// condensation: condensation.ruleProfileId → assignments.condensation
|
||||
const condensation = settings.condensation || {};
|
||||
if (condensation.ruleProfileId && !assignments.condensation) {
|
||||
assignments.condensation = condensation.ruleProfileId;
|
||||
changed = true;
|
||||
}
|
||||
|
||||
// queryPreprocessing: queryPreprocessing.ruleProfileId → assignments.queryPreprocessing
|
||||
const queryPreprocessing = settings.queryPreprocessing || {};
|
||||
if (queryPreprocessing.ruleProfileId && !assignments.queryPreprocessing) {
|
||||
assignments.queryPreprocessing = queryPreprocessing.ruleProfileId;
|
||||
changed = true;
|
||||
}
|
||||
|
||||
if (changed) {
|
||||
saveSettingsDebounced();
|
||||
console.log('[RuleProfiles] 已迁移旧规则配置分配到统一 assignments。', assignments);
|
||||
}
|
||||
})();
|
||||
|
||||
setTimeout(() => {
|
||||
try {
|
||||
const ctx = window.Amily2Bus?.register('RuleProfiles');
|
||||
if (!ctx) {
|
||||
console.warn('[RuleProfiles] Amily2Bus 尚未就绪,注册跳过。');
|
||||
return;
|
||||
}
|
||||
ctx.expose({
|
||||
listProfiles: () => ruleProfileManager.listProfiles(),
|
||||
getProfile: (id) => ruleProfileManager.getProfile(id),
|
||||
saveProfile: (profile) => ruleProfileManager.saveProfile(profile),
|
||||
deleteProfile: (id) => ruleProfileManager.deleteProfile(id),
|
||||
resolveProfile: (id, fallback) => ruleProfileManager.resolveProfile(id, fallback),
|
||||
getAssignment: (slot) => ruleProfileManager.getAssignment(slot),
|
||||
setAssignment: (slot, id) => ruleProfileManager.setAssignment(slot, id),
|
||||
getAssignedProfile: (slot) => ruleProfileManager.getAssignedProfile(slot),
|
||||
RULE_SLOTS,
|
||||
});
|
||||
ctx.log('RuleProfiles', 'info', 'RuleProfiles 服务已注册到 Bus。');
|
||||
} catch (error) {
|
||||
console.error('[RuleProfiles] Bus 注册失败:', error);
|
||||
}
|
||||
}, 0);
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
function a0_0x3df7(_0x2d6ff7,_0x66f04c){_0x2d6ff7=_0x2d6ff7-0x142;const _0x37dbf3=a0_0x37db();let _0x3df7d1=_0x37dbf3[_0x2d6ff7];if(a0_0x3df7['SRsBUW']===undefined){var _0x177cea=function(_0x263285){const _0x23b824='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5dc9bb='',_0x4f00bc='';for(let _0x3a945f=0x0,_0x467661,_0x2c1afd,_0x361ba3=0x0;_0x2c1afd=_0x263285['charAt'](_0x361ba3++);~_0x2c1afd&&(_0x467661=_0x3a945f%0x4?_0x467661*0x40+_0x2c1afd:_0x2c1afd,_0x3a945f++%0x4)?_0x5dc9bb+=String['fromCharCode'](0xff&_0x467661>>(-0x2*_0x3a945f&0x6)):0x0){_0x2c1afd=_0x23b824['indexOf'](_0x2c1afd);}for(let _0x134167=0x0,_0x59c18c=_0x5dc9bb['length'];_0x134167<_0x59c18c;_0x134167++){_0x4f00bc+='%'+('00'+_0x5dc9bb['charCodeAt'](_0x134167)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4f00bc);};const _0x2742fa=function(_0x225e04,_0x57e87c){let _0x196891=[],_0x5287e0=0x0,_0x4e6f16,_0x4e9137='';_0x225e04=_0x177cea(_0x225e04);let _0x3b2355;for(_0x3b2355=0x0;_0x3b2355<0x100;_0x3b2355++){_0x196891[_0x3b2355]=_0x3b2355;}for(_0x3b2355=0x0;_0x3b2355<0x100;_0x3b2355++){_0x5287e0=(_0x5287e0+_0x196891[_0x3b2355]+_0x57e87c['charCodeAt'](_0x3b2355%_0x57e87c['length']))%0x100,_0x4e6f16=_0x196891[_0x3b2355],_0x196891[_0x3b2355]=_0x196891[_0x5287e0],_0x196891[_0x5287e0]=_0x4e6f16;}_0x3b2355=0x0,_0x5287e0=0x0;for(let _0x14e882=0x0;_0x14e882<_0x225e04['length'];_0x14e882++){_0x3b2355=(_0x3b2355+0x1)%0x100,_0x5287e0=(_0x5287e0+_0x196891[_0x3b2355])%0x100,_0x4e6f16=_0x196891[_0x3b2355],_0x196891[_0x3b2355]=_0x196891[_0x5287e0],_0x196891[_0x5287e0]=_0x4e6f16,_0x4e9137+=String['fromCharCode'](_0x225e04['charCodeAt'](_0x14e882)^_0x196891[(_0x196891[_0x3b2355]+_0x196891[_0x5287e0])%0x100]);}return _0x4e9137;};a0_0x3df7['gGFzDR']=_0x2742fa,a0_0x3df7['xOxaTR']={},a0_0x3df7['SRsBUW']=!![];}const _0x2e2977=_0x37dbf3[0x0],_0x46cf12=_0x2d6ff7+_0x2e2977,_0x2e4631=a0_0x3df7['xOxaTR'][_0x46cf12];return!_0x2e4631?(a0_0x3df7['ObVLbg']===undefined&&(a0_0x3df7['ObVLbg']=!![]),_0x3df7d1=a0_0x3df7['gGFzDR'](_0x3df7d1,_0x66f04c),a0_0x3df7['xOxaTR'][_0x46cf12]=_0x3df7d1):_0x3df7d1=_0x2e4631,_0x3df7d1;}const a0_0x2af32d=a0_0x3df7;(function(_0xd2618c,_0x4148c8){const _0x3e9b8c=a0_0x3df7,_0x44ff83=_0xd2618c();while(!![]){try{const _0x3bd772=parseInt(_0x3e9b8c(0x149,'cURR'))/0x1+-parseInt(_0x3e9b8c(0x152,'Ipuz'))/0x2*(-parseInt(_0x3e9b8c(0x159,'r74E'))/0x3)+-parseInt(_0x3e9b8c(0x147,'DYEA'))/0x4*(-parseInt(_0x3e9b8c(0x14c,'r74E'))/0x5)+parseInt(_0x3e9b8c(0x142,'UpGh'))/0x6*(parseInt(_0x3e9b8c(0x14e,'8hxs'))/0x7)+parseInt(_0x3e9b8c(0x14a,'hAFE'))/0x8*(-parseInt(_0x3e9b8c(0x146,'OG5z'))/0x9)+parseInt(_0x3e9b8c(0x15d,'Z46V'))/0xa+-parseInt(_0x3e9b8c(0x157,'SE&p'))/0xb;if(_0x3bd772===_0x4148c8)break;else _0x44ff83['push'](_0x44ff83['shift']());}catch(_0x52e370){_0x44ff83['push'](_0x44ff83['shift']());}}}(a0_0x37db,0x6ab29));function a0_0x37db(){const _0x2331d0=['pSkZW5ZdVZC3xIi','z8o6W7ddLduovrhdGCoC','arfnxCoaBmoCD8kXymoU','tNDZBSoedXbjsxLmW4C','WQq3tSoIWRXfW508W7pcPCknW6xcJ28','lCo1f8ksWRFcJsClwmoTucTYka','W6DJDmovWRb8W4SB','WPmbW5/dGSoauXFdRcm/wa','WPWsWQjrW6xcGSocW6hdOCoRDa','o8olWRzxWPxdHMe','WQ4MWRpdHJPzWRryqrPveSkuW5S','ESoctmoDWQ/cHmkBuSkAWOBcR1pcQa','BSkgW7xcSSkXiW','er9nzSoGBmoCy8k/Fa','iWuRF8kjaWmAWOm0W4K','u1CynmkzkmkfrSkQvmo/W5Cv','WPSyW5TwoCkxuHvIpYVdNa','vmkXF8kKkGL6uCoOcWG','WP/dOSowW6GmWOLgW5JcQGNcV8kM','fSkEg1ddHCkgWRJcRa','t3HmWQhcRCk1hxRcUWOVaa','n8ocWQNdImoLAabgWPGhcSoL','WPzoWQGuASoiDW','e07dU8kcW7VdImodW69oWOC','WPKcW5VdGCoecapdJb45rSkh','WPqtWQjCWRNcPSo7W53dSCo1','nSocW5tdU8o5FwhdLSoiFG','m8oVW6eooSk7W5yy','jsBdK8oxWQ1yWQX8W5FcIq','yLX0o8o2ndqRWQqlW75WW4pdPSoBmCkJkXuvWPddTeWv'];a0_0x37db=function(){return _0x2331d0;};return a0_0x37db();}export const SENSITIVE_KEYS=new Set([a0_0x2af32d(0x15e,'cURR'),a0_0x2af32d(0x156,'(nn@'),a0_0x2af32d(0x151,'UpGh'),a0_0x2af32d(0x14b,'7yS&'),a0_0x2af32d(0x150,'v814'),a0_0x2af32d(0x153,'Ipuz'),a0_0x2af32d(0x154,'V0W['),a0_0x2af32d(0x15f,'V0W[')]);
|
||||
function a0_0x14a8(){const _0x1fb0fe=['t8oghcK4WPuBW5xdImo7ba','WRFcMYFcOCkfW5JdQstcHCopWQuB','WQNdVvzhoHL6WQRcI8kmhCoGWPC','dMugW7tdR0tcUmkNudBcOSonFSo9','W43dH8oIWQlcG1moeI/dQa','ghm2W5j3lmo/WOj+','bXFcTdTYpSkUWRW','uCo/DSkWWR/cNmkbdCkflwP6tq','vxlcTb/dLstdKmkXW7PAyXJdQG','ASoMW7q7z3anWQ1+W6iHD8o+','cmkTvc4SW4rDmCkcWOu6WPGH','WPeVkcSeWRZcIHnWF0/dNq','WRFcKcBcPmkkW53cRXlcSCo+WRuOpq','dWbxWRydWPZcGKWx','q8onW7ddOmoXuCoZWRi','d8kOvc8PW40FhmkdWPytWR0','WPuPWR7dJ8kKBq','cmkTuYSQW4vAAmk+WReiWQCgWRO','qZD/W4TCbCoEWQzcia','lSk5WQX+gdjnWP9qW6ulzSoXm8kqW6tdHxWChLBcLbTV','baWVWPddRCoFW7ens8kfg8om','uhpcUH3dKYtdLmk4W4v5yZNdIa','W6OOW5ddUxy0gSo8xGS','mmk2WQb5fJjqWOTwW7m','WOTOW4hcOCkymmoyjWP8hGZcG8k8','W6CXWPTDdbfcWQ/dOSkJW6xcJfm'];a0_0x14a8=function(){return _0x1fb0fe;};return a0_0x14a8();}function a0_0x2f02(_0xfc7e50,_0x3dbb02){_0xfc7e50=_0xfc7e50-0x132;const _0x14a89c=a0_0x14a8();let _0x2f0242=_0x14a89c[_0xfc7e50];if(a0_0x2f02['haRsYa']===undefined){var _0x5df497=function(_0x10bb1d){const _0x5e6cb0='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x109289='',_0x9c7442='';for(let _0x403cc5=0x0,_0x465206,_0x20ab31,_0x2b7eb2=0x0;_0x20ab31=_0x10bb1d['charAt'](_0x2b7eb2++);~_0x20ab31&&(_0x465206=_0x403cc5%0x4?_0x465206*0x40+_0x20ab31:_0x20ab31,_0x403cc5++%0x4)?_0x109289+=String['fromCharCode'](0xff&_0x465206>>(-0x2*_0x403cc5&0x6)):0x0){_0x20ab31=_0x5e6cb0['indexOf'](_0x20ab31);}for(let _0x245772=0x0,_0x37e017=_0x109289['length'];_0x245772<_0x37e017;_0x245772++){_0x9c7442+='%'+('00'+_0x109289['charCodeAt'](_0x245772)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x9c7442);};const _0x4fc336=function(_0xbbd1d9,_0x87c073){let _0x5aae06=[],_0xc59be1=0x0,_0x1677a3,_0x18267d='';_0xbbd1d9=_0x5df497(_0xbbd1d9);let _0x2fdfd9;for(_0x2fdfd9=0x0;_0x2fdfd9<0x100;_0x2fdfd9++){_0x5aae06[_0x2fdfd9]=_0x2fdfd9;}for(_0x2fdfd9=0x0;_0x2fdfd9<0x100;_0x2fdfd9++){_0xc59be1=(_0xc59be1+_0x5aae06[_0x2fdfd9]+_0x87c073['charCodeAt'](_0x2fdfd9%_0x87c073['length']))%0x100,_0x1677a3=_0x5aae06[_0x2fdfd9],_0x5aae06[_0x2fdfd9]=_0x5aae06[_0xc59be1],_0x5aae06[_0xc59be1]=_0x1677a3;}_0x2fdfd9=0x0,_0xc59be1=0x0;for(let _0x60400c=0x0;_0x60400c<_0xbbd1d9['length'];_0x60400c++){_0x2fdfd9=(_0x2fdfd9+0x1)%0x100,_0xc59be1=(_0xc59be1+_0x5aae06[_0x2fdfd9])%0x100,_0x1677a3=_0x5aae06[_0x2fdfd9],_0x5aae06[_0x2fdfd9]=_0x5aae06[_0xc59be1],_0x5aae06[_0xc59be1]=_0x1677a3,_0x18267d+=String['fromCharCode'](_0xbbd1d9['charCodeAt'](_0x60400c)^_0x5aae06[(_0x5aae06[_0x2fdfd9]+_0x5aae06[_0xc59be1])%0x100]);}return _0x18267d;};a0_0x2f02['FifVqZ']=_0x4fc336,a0_0x2f02['BzwYNH']={},a0_0x2f02['haRsYa']=!![];}const _0x577f3d=_0x14a89c[0x0],_0x53c179=_0xfc7e50+_0x577f3d,_0x522de8=a0_0x2f02['BzwYNH'][_0x53c179];return!_0x522de8?(a0_0x2f02['YRLvop']===undefined&&(a0_0x2f02['YRLvop']=!![]),_0x2f0242=a0_0x2f02['FifVqZ'](_0x2f0242,_0x3dbb02),a0_0x2f02['BzwYNH'][_0x53c179]=_0x2f0242):_0x2f0242=_0x522de8,_0x2f0242;}const a0_0xbb9b93=a0_0x2f02;(function(_0x1bb79c,_0x24a1c8){const _0x3d02d0=a0_0x2f02,_0x1c7173=_0x1bb79c();while(!![]){try{const _0x254b63=-parseInt(_0x3d02d0(0x13d,'5rsN'))/0x1+-parseInt(_0x3d02d0(0x149,'Y#Z2'))/0x2*(parseInt(_0x3d02d0(0x13b,'MW1l'))/0x3)+parseInt(_0x3d02d0(0x134,'y6wl'))/0x4+-parseInt(_0x3d02d0(0x136,'ldKT'))/0x5*(-parseInt(_0x3d02d0(0x13a,'7dR0'))/0x6)+-parseInt(_0x3d02d0(0x14a,'5rsN'))/0x7+-parseInt(_0x3d02d0(0x137,'xK2z'))/0x8+parseInt(_0x3d02d0(0x138,']MRa'))/0x9;if(_0x254b63===_0x24a1c8)break;else _0x1c7173['push'](_0x1c7173['shift']());}catch(_0x3d34d4){_0x1c7173['push'](_0x1c7173['shift']());}}}(a0_0x14a8,0xf1f7e));export const SENSITIVE_KEYS=new Set([a0_0xbb9b93(0x145,'ld^v'),a0_0xbb9b93(0x133,'dUc%'),a0_0xbb9b93(0x148,'cU[V'),a0_0xbb9b93(0x139,'v^N$'),a0_0xbb9b93(0x132,'cU[V'),a0_0xbb9b93(0x147,'7dR0'),a0_0xbb9b93(0x135,'Ge@A'),a0_0xbb9b93(0x14b,'BVyW')]);
|
||||
@@ -2,7 +2,7 @@ import { extension_settings } from "/scripts/extensions.js";
|
||||
import { saveSettingsDebounced } from "/script.js";
|
||||
import { pluginAuthStatus } from "./auth.js";
|
||||
|
||||
export const pluginVersion = "1.4.5";
|
||||
export const pluginVersion = "2.1.0";
|
||||
|
||||
// 从当前文件 URL 动态推导插件文件夹名和根路径,兼容任意文件夹名(Dev / 正式版均适用)
|
||||
// URL 结构:.../scripts/extensions/third-party/<folderName>/utils/settings.js
|
||||
|
||||
Reference in New Issue
Block a user