feat: add plugin marketplace renderer
This commit is contained in:
@@ -57,6 +57,7 @@ export type CodingPluginProject = {
|
||||
schemaVersion: 1;
|
||||
project: { localProjectId: string; durableProjectId: string | null };
|
||||
policyStatus: PluginPolicyStatus;
|
||||
unknownPluginIds: string[];
|
||||
items: CodingPluginItem[];
|
||||
};
|
||||
|
||||
@@ -181,8 +182,8 @@ function pluginItem(value: unknown): CodingPluginItem {
|
||||
|
||||
export function parseCodingPluginProject(value: unknown): CodingPluginProject {
|
||||
const source = record(value, 'plugin project');
|
||||
exact(source, ['schemaVersion', 'project', 'policyStatus', 'items'], 'plugin project');
|
||||
if (source.schemaVersion !== 1 || !Array.isArray(source.items)) throw new Error('plugin project schema is invalid');
|
||||
exact(source, ['schemaVersion', 'project', 'policyStatus', 'unknownPluginIds', 'items'], 'plugin project');
|
||||
if (source.schemaVersion !== 1 || !Array.isArray(source.items) || !Array.isArray(source.unknownPluginIds)) throw new Error('plugin project schema is invalid');
|
||||
const project = record(source.project, 'project'); exact(project, ['localProjectId', 'durableProjectId'], 'project');
|
||||
const policyStatus = string(source.policyStatus, 'policyStatus', 16) as PluginPolicyStatus;
|
||||
if (!['current', 'stale', 'unavailable'].includes(policyStatus)) throw new Error('policyStatus is invalid');
|
||||
@@ -190,6 +191,7 @@ export function parseCodingPluginProject(value: unknown): CodingPluginProject {
|
||||
schemaVersion: 1,
|
||||
project: { localProjectId: string(project.localProjectId, 'project.localProjectId', 128), durableProjectId: project.durableProjectId === null ? null : string(project.durableProjectId, 'project.durableProjectId', 128) },
|
||||
policyStatus,
|
||||
unknownPluginIds: source.unknownPluginIds.map((id) => string(id, 'unknown plugin id', 128)),
|
||||
items: source.items.map(pluginItem),
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user