Skip to content

Commit

Permalink
feat: Added more validation
Browse files Browse the repository at this point in the history
Signed-off-by: Tom Lanser <[email protected]>
  • Loading branch information
Tommylans committed Jan 4, 2023
1 parent 61119c7 commit eb8dd2f
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 14 deletions.
13 changes: 1 addition & 12 deletions packages/toolbox-core/src/agent/config/ToolboxConfig.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,11 @@
import type { AgentConfigRecord } from './AgentConfigRecord'

import { z } from 'zod'
import { ToolboxConfigSchema } from './adapters/ToolBoxConfigValidation'
export interface ToolboxConfig {
colorScheme: 'dark' | 'light'
agents: AgentConfigRecord[]
}

const AgentConfigRecordSchema = z.object({
id: z.string(),
name: z.string(),
agentConfig: z.any(),
})

const ToolboxConfigSchema = z.object({
colorScheme: z.enum(['dark', 'light']).default('light'),
agents: z.array(AgentConfigRecordSchema).default([]),
})

export const validateAndParseToolboxConfig = (config: unknown): ToolboxConfig => {
return ToolboxConfigSchema.parse(config) as ToolboxConfig
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
import {
AutoAcceptCredential,
AutoAcceptProof,
DidCommMimeType,
KeyDerivationMethod,
MediatorPickupStrategy,
} from '@aries-framework/core'
import { z } from 'zod'

export const WalletConfigSchema = z.object({
id: z.string(),
key: z.string(),
keyDerivationMethod: z.nativeEnum(KeyDerivationMethod).optional(),
storage: z
.object({
type: z.string(),
})
.optional(),
masterSecretId: z.string().optional(),
})

export const IndyLedgerConfigSchema = z.object({
genesisPath: z.string().optional(),
genesisTransactions: z.string().optional(),
id: z.string(),
isProduction: z.boolean(),
indyNamespace: z.string(),
transactionAuthorAgreement: z
.object({
version: z.string(),
acceptanceMechanism: z.string(),
})
.optional(),
})

export const InitConfigSchema = z.object({
endpoints: z.array(z.string()).optional(),
label: z.string(),
publicDidSeed: z.string().optional(),
mediatorRecordId: z.string().optional(),
walletConfig: WalletConfigSchema.optional(),
autoAcceptConnections: z.boolean().optional(),
autoAcceptProofs: z.nativeEnum(AutoAcceptProof).optional(),
autoAcceptCredentials: z.nativeEnum(AutoAcceptCredential).optional(),
logger: z.any().optional(),
didCommMimeType: z.nativeEnum(DidCommMimeType).optional(),
indyLedgers: z.array(IndyLedgerConfigSchema).optional(),
connectToIndyLedgersOnStartup: z.boolean().optional(),
autoAcceptMediationRequests: z.boolean().optional(),
mediatorConnectionsInvite: z.string().optional(),
defaultMediatorId: z.string().optional(),
clearDefaultMediator: z.boolean().optional(),
mediatorPollingInterval: z.number().optional(),
mediatorPickupStrategy: z.nativeEnum(MediatorPickupStrategy).optional(),
maximumMessagePickup: z.number().optional(),
baseMediatorReconnectionIntervalMs: z.number().optional(),
maximumMediatorReconnectionIntervalMs: z.number().optional(),
useDidKeyInProtocols: z.boolean().optional(),
useLegacyDidSovPrefix: z.boolean().optional(),
connectionImageUrl: z.string().optional(),
autoUpdateStorageOnStartup: z.boolean().optional(),
})

export const AgentConfigRecordSchema = z.object({
id: z.string(),
name: z.string(),
agentConfig: InitConfigSchema,
})

export const ToolboxConfigSchema = z.object({
colorScheme: z.enum(['light', 'dark']).default('light'),
agents: z.array(AgentConfigRecordSchema).default([]),
})
2 changes: 1 addition & 1 deletion packages/toolbox-ui/src/ToolboxApp.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import React from 'react'
import { RouterProvider } from 'react-router-dom'

import { GlobalErrorHandler } from './components/GlobalErrorHandler'
import { useConfig, useConfigUnsafe } from './contexts/ConfigProvider'
import { useConfigUnsafe } from './contexts/ConfigProvider'

interface ToolboxAppProps {
router: RouterProviderProps['router']
Expand Down
2 changes: 1 addition & 1 deletion packages/toolbox-ui/src/contexts/AgentManagerContext.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import type { ReactNode } from 'react'

import React, { createContext, useContext, useMemo, useState } from 'react'

import { useConfig, useConfigUnsafe } from './ConfigProvider'
import { useConfigUnsafe } from './ConfigProvider'

export interface IAgentContext {
agents: AgentConfigRecord[]
Expand Down

0 comments on commit eb8dd2f

Please sign in to comment.