feat(05-01): enrich BACKEND_REGISTRY and update all consumers

- Change BACKEND_REGISTRY shape from Record<BackendType, FieldDef[]> to
  Record<BackendType, { displayName, description, fields: FieldDef[] }>
- Add displayName and description to azureblob, s3, s3-compatible entries
- Update schemas/index.ts buildZodSchema to use .fields access
- Update RemoteConfigStep.tsx two .fields accesses (azureblob.find + map)
This commit is contained in:
2026-03-30 09:37:16 +02:00
parent 7ec45896e5
commit d495552b60
3 changed files with 112 additions and 96 deletions
+109 -93
View File
@@ -16,97 +16,113 @@ export interface FieldDef {
options?: { value: string; label: string }[]; // for inputType: 'select'
}
export const BACKEND_REGISTRY: Record<BackendType, FieldDef[]> = {
azureblob: [
{
key: 'account',
label: 'Storage Account Name',
inputType: 'text',
required: true,
placeholder: 'mystorageaccount',
helpText: 'The storage account name (not the full URL)',
},
{
key: 'key',
label: 'Access Key',
inputType: 'password',
required: false,
helpText: 'Base64-encoded storage account key. Provide either this or a SAS URL, not both.',
},
{
key: 'sas_url',
label: 'SAS URL',
inputType: 'password',
required: false,
placeholder: 'https://mystorageaccount.blob.core.windows.net/?sv=...',
helpText: 'Full SAS URL including account and container. Provide either this or an access key, not both.',
},
],
s3: [
{
key: 'provider',
label: 'Provider',
inputType: 'select',
required: true,
options: [{ value: 'AWS', label: 'Amazon S3' }],
},
{
key: 'access_key_id',
label: 'Access Key ID',
inputType: 'text',
required: true,
placeholder: 'AKIAIOSFODNN7EXAMPLE',
},
{
key: 'secret_access_key',
label: 'Secret Access Key',
inputType: 'password',
required: true,
},
{
key: 'region',
label: 'Region',
inputType: 'text',
required: true,
placeholder: 'us-east-1',
},
],
's3-compatible': [
{
key: 'provider',
label: 'Provider',
inputType: 'select',
required: true,
options: [{ value: 'Other', label: 'S3-Compatible' }],
helpText: 'Covers Wasabi, MinIO, Cloudflare R2, and any S3-compatible storage',
},
{
key: 'access_key_id',
label: 'Access Key ID',
inputType: 'text',
required: true,
},
{
key: 'secret_access_key',
label: 'Secret Access Key',
inputType: 'password',
required: true,
},
{
key: 'endpoint',
label: 'Endpoint URL',
inputType: 'text',
required: true,
placeholder: 'https://s3.wasabisys.com',
helpText: 'The S3-compatible endpoint URL for your storage provider',
},
{
key: 'region',
label: 'Region',
inputType: 'text',
required: false,
placeholder: 'us-east-1',
helpText: 'Optional for most S3-compatible providers',
},
],
export const BACKEND_REGISTRY: Record<BackendType, {
displayName: string;
description: string;
fields: FieldDef[];
}> = {
azureblob: {
displayName: 'Azure Blob Storage',
description: 'Microsoft Azure cloud storage',
fields: [
{
key: 'account',
label: 'Storage Account Name',
inputType: 'text',
required: true,
placeholder: 'mystorageaccount',
helpText: 'The storage account name (not the full URL)',
},
{
key: 'key',
label: 'Access Key',
inputType: 'password',
required: false,
helpText: 'Base64-encoded storage account key. Provide either this or a SAS URL, not both.',
},
{
key: 'sas_url',
label: 'SAS URL',
inputType: 'password',
required: false,
placeholder: 'https://mystorageaccount.blob.core.windows.net/?sv=...',
helpText: 'Full SAS URL including account and container. Provide either this or an access key, not both.',
},
],
},
s3: {
displayName: 'Amazon S3',
description: 'AWS Simple Storage Service',
fields: [
{
key: 'provider',
label: 'Provider',
inputType: 'select',
required: true,
options: [{ value: 'AWS', label: 'Amazon S3' }],
},
{
key: 'access_key_id',
label: 'Access Key ID',
inputType: 'text',
required: true,
placeholder: 'AKIAIOSFODNN7EXAMPLE',
},
{
key: 'secret_access_key',
label: 'Secret Access Key',
inputType: 'password',
required: true,
},
{
key: 'region',
label: 'Region',
inputType: 'text',
required: true,
placeholder: 'us-east-1',
},
],
},
's3-compatible': {
displayName: 'S3-Compatible',
description: 'Wasabi, MinIO, Cloudflare R2, and others',
fields: [
{
key: 'provider',
label: 'Provider',
inputType: 'select',
required: true,
options: [{ value: 'Other', label: 'S3-Compatible' }],
helpText: 'Covers Wasabi, MinIO, Cloudflare R2, and any S3-compatible storage',
},
{
key: 'access_key_id',
label: 'Access Key ID',
inputType: 'text',
required: true,
},
{
key: 'secret_access_key',
label: 'Secret Access Key',
inputType: 'password',
required: true,
},
{
key: 'endpoint',
label: 'Endpoint URL',
inputType: 'text',
required: true,
placeholder: 'https://s3.wasabisys.com',
helpText: 'The S3-compatible endpoint URL for your storage provider',
},
{
key: 'region',
label: 'Region',
inputType: 'text',
required: false,
placeholder: 'us-east-1',
helpText: 'Optional for most S3-compatible providers',
},
],
},
};