feat: plugins v1.5
This commit is contained in:
@@ -37,8 +37,11 @@ const DATA_KEY_PATTERN = /^[a-zA-Z0-9][a-zA-Z0-9._:-]{0,127}$/;
|
||||
const DATA_SCOPE_PATTERN = /^[a-zA-Z][a-zA-Z0-9._:-]{0,63}$/;
|
||||
|
||||
export interface PluginRequirementSummary {
|
||||
installUrl?: string;
|
||||
manifest?: unknown;
|
||||
pluginId: string;
|
||||
reason?: string;
|
||||
sourceUrl?: string;
|
||||
status: ServerPluginRequirementStatus;
|
||||
updatedAt: number;
|
||||
versionRange?: string;
|
||||
@@ -174,6 +177,10 @@ function parseJsonValue(valueJson: string): unknown {
|
||||
}
|
||||
}
|
||||
|
||||
function parseOptionalJsonValue(valueJson: string | null): unknown {
|
||||
return valueJson ? parseJsonValue(valueJson) : undefined;
|
||||
}
|
||||
|
||||
function serializeJsonValue(value: unknown, code: string): string {
|
||||
try {
|
||||
return JSON.stringify(value ?? null);
|
||||
@@ -184,8 +191,11 @@ function serializeJsonValue(value: unknown, code: string): string {
|
||||
|
||||
function toRequirementSummary(entity: ServerPluginRequirementEntity): PluginRequirementSummary {
|
||||
return {
|
||||
installUrl: entity.installUrl ?? undefined,
|
||||
manifest: parseOptionalJsonValue(entity.manifestJson),
|
||||
pluginId: entity.pluginId,
|
||||
reason: entity.reason ?? undefined,
|
||||
sourceUrl: entity.sourceUrl ?? undefined,
|
||||
status: entity.status,
|
||||
updatedAt: entity.updatedAt,
|
||||
versionRange: entity.versionRange ?? undefined
|
||||
@@ -282,9 +292,12 @@ export async function getPluginRequirementsSnapshot(serverId: string): Promise<P
|
||||
|
||||
export async function upsertPluginRequirement(options: {
|
||||
actorUserId: string;
|
||||
installUrl?: unknown;
|
||||
manifest?: unknown;
|
||||
pluginId: string;
|
||||
reason?: unknown;
|
||||
serverId: string;
|
||||
sourceUrl?: unknown;
|
||||
status: unknown;
|
||||
versionRange?: unknown;
|
||||
}): Promise<PluginRequirementSummary> {
|
||||
@@ -306,6 +319,9 @@ export async function upsertPluginRequirement(options: {
|
||||
status: status as ServerPluginRequirementStatus,
|
||||
versionRange: normalizeOptionalString(options.versionRange, 128),
|
||||
reason: normalizeOptionalString(options.reason, 512),
|
||||
installUrl: normalizeOptionalString(options.installUrl, 2_000),
|
||||
sourceUrl: normalizeOptionalString(options.sourceUrl, 2_000),
|
||||
manifestJson: options.manifest === undefined ? null : serializeJsonValue(options.manifest, 'INVALID_PLUGIN_MANIFEST_METADATA'),
|
||||
configuredBy: options.actorUserId,
|
||||
createdAt: existing?.createdAt ?? now,
|
||||
updatedAt: now
|
||||
|
||||
Reference in New Issue
Block a user