Add extension management service

This commit is contained in:
2025-06-24 14:16:53 +08:00
parent ea025e3f5d
commit f3bcb87828
31 changed files with 1682 additions and 176 deletions

View File

@@ -334,6 +334,227 @@ export class EditingConfig {
}
}
/**
* Extension 单个扩展配置
*/
export class Extension {
/**
* 扩展唯一标识
*/
"id": ExtensionID;
/**
* 扩展分类
*/
"category": ExtensionCategory;
/**
* 是否启用
*/
"enabled": boolean;
/**
* 是否为默认扩展
*/
"isDefault": boolean;
/**
* 扩展配置项
*/
"config": ExtensionConfig;
/** Creates a new Extension instance. */
constructor($$source: Partial<Extension> = {}) {
if (!("id" in $$source)) {
this["id"] = ("" as ExtensionID);
}
if (!("category" in $$source)) {
this["category"] = ("" as ExtensionCategory);
}
if (!("enabled" in $$source)) {
this["enabled"] = false;
}
if (!("isDefault" in $$source)) {
this["isDefault"] = false;
}
if (!("config" in $$source)) {
this["config"] = ({} as ExtensionConfig);
}
Object.assign(this, $$source);
}
/**
* Creates a new Extension instance from a string or object.
*/
static createFrom($$source: any = {}): Extension {
const $$createField4_0 = $$createType6;
let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source;
if ("config" in $$parsedSource) {
$$parsedSource["config"] = $$createField4_0($$parsedSource["config"]);
}
return new Extension($$parsedSource as Partial<Extension>);
}
}
/**
* ExtensionCategory 扩展分类
*/
export enum ExtensionCategory {
/**
* The Go zero value for the underlying type of the enum.
*/
$zero = "",
/**
* 编辑增强
*/
CategoryEditing = "editing",
/**
* 界面增强
*/
CategoryUI = "ui",
/**
* 工具类
*/
CategoryTools = "tools",
};
/**
* ExtensionConfig 扩展配置项(动态配置)
*/
export type ExtensionConfig = { [_: string]: any };
/**
* ExtensionID 扩展标识符
*/
export enum ExtensionID {
/**
* The Go zero value for the underlying type of the enum.
*/
$zero = "",
/**
* 编辑增强扩展
* 彩虹括号
*/
ExtensionRainbowBrackets = "rainbowBrackets",
/**
* 超链接
*/
ExtensionHyperlink = "hyperlink",
/**
* 颜色选择器
*/
ExtensionColorSelector = "colorSelector",
ExtensionFold = "fold",
ExtensionTextHighlight = "textHighlight",
/**
* UI增强扩展
* 小地图
*/
ExtensionMinimap = "minimap",
/**
* 代码爆炸效果
*/
ExtensionCodeBlast = "codeBlast",
/**
* 工具扩展
* 搜索功能
*/
ExtensionSearch = "search",
/**
* 代码块
*/
ExtensionCodeBlock = "codeBlock",
};
/**
* ExtensionMetadata 扩展配置元数据
*/
export class ExtensionMetadata {
/**
* 配置版本
*/
"version": string;
/**
* 最后更新时间
*/
"lastUpdated": string;
/** Creates a new ExtensionMetadata instance. */
constructor($$source: Partial<ExtensionMetadata> = {}) {
if (!("version" in $$source)) {
this["version"] = "";
}
if (!("lastUpdated" in $$source)) {
this["lastUpdated"] = "";
}
Object.assign(this, $$source);
}
/**
* Creates a new ExtensionMetadata instance from a string or object.
*/
static createFrom($$source: any = {}): ExtensionMetadata {
let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source;
return new ExtensionMetadata($$parsedSource as Partial<ExtensionMetadata>);
}
}
/**
* ExtensionSettings 扩展设置配置
*/
export class ExtensionSettings {
/**
* 扩展列表
*/
"extensions": Extension[];
/**
* 配置元数据
*/
"metadata": ExtensionMetadata;
/** Creates a new ExtensionSettings instance. */
constructor($$source: Partial<ExtensionSettings> = {}) {
if (!("extensions" in $$source)) {
this["extensions"] = [];
}
if (!("metadata" in $$source)) {
this["metadata"] = (new ExtensionMetadata());
}
Object.assign(this, $$source);
}
/**
* Creates a new ExtensionSettings instance from a string or object.
*/
static createFrom($$source: any = {}): ExtensionSettings {
const $$createField0_0 = $$createType9;
const $$createField1_0 = $$createType10;
let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source;
if ("extensions" in $$parsedSource) {
$$parsedSource["extensions"] = $$createField0_0($$parsedSource["extensions"]);
}
if ("metadata" in $$parsedSource) {
$$parsedSource["metadata"] = $$createField1_0($$parsedSource["metadata"]);
}
return new ExtensionSettings($$parsedSource as Partial<ExtensionSettings>);
}
}
/**
* GeneralConfig 通用设置配置
*/
@@ -397,7 +618,7 @@ export class GeneralConfig {
* Creates a new GeneralConfig instance from a string or object.
*/
static createFrom($$source: any = {}): GeneralConfig {
const $$createField5_0 = $$createType6;
const $$createField5_0 = $$createType11;
let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source;
if ("globalHotkey" in $$parsedSource) {
$$parsedSource["globalHotkey"] = $$createField5_0($$parsedSource["globalHotkey"]);
@@ -874,8 +1095,8 @@ export class KeyBindingConfig {
* Creates a new KeyBindingConfig instance from a string or object.
*/
static createFrom($$source: any = {}): KeyBindingConfig {
const $$createField0_0 = $$createType8;
const $$createField1_0 = $$createType9;
const $$createField0_0 = $$createType13;
const $$createField1_0 = $$createType14;
let $$parsedSource = typeof $$source === 'string' ? JSON.parse($$source) : $$source;
if ("keyBindings" in $$parsedSource) {
$$parsedSource["keyBindings"] = $$createField0_0($$parsedSource["keyBindings"]);
@@ -1029,7 +1250,17 @@ const $$createType2 = AppearanceConfig.createFrom;
const $$createType3 = UpdatesConfig.createFrom;
const $$createType4 = ConfigMetadata.createFrom;
const $$createType5 = DocumentMeta.createFrom;
const $$createType6 = HotkeyCombo.createFrom;
const $$createType7 = KeyBinding.createFrom;
const $$createType8 = $Create.Array($$createType7);
const $$createType9 = KeyBindingMetadata.createFrom;
var $$createType6 = (function $$initCreateType6(...args): any {
if ($$createType6 === $$initCreateType6) {
$$createType6 = $$createType7;
}
return $$createType6(...args);
});
const $$createType7 = $Create.Map($Create.Any, $Create.Any);
const $$createType8 = Extension.createFrom;
const $$createType9 = $Create.Array($$createType8);
const $$createType10 = ExtensionMetadata.createFrom;
const $$createType11 = HotkeyCombo.createFrom;
const $$createType12 = KeyBinding.createFrom;
const $$createType13 = $Create.Array($$createType12);
const $$createType14 = KeyBindingMetadata.createFrom;