You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
24 lines
824 B
24 lines
824 B
import { z } from 'zod'
|
|
import {Canonical, CanonicalDefinition} from '../service/Canonical'
|
|
import {InvalidCanonicalExportError} from '../service/CanonicalInstantiable'
|
|
import {Singleton} from '../di'
|
|
|
|
@Singleton()
|
|
export class ValidationUnit extends Canonical<z.ZodType<unknown>> {
|
|
protected appPath = ['types']
|
|
|
|
protected canonicalItem = 'type'
|
|
|
|
protected suffix = '.js'
|
|
|
|
public async initCanonicalItem(definition: CanonicalDefinition): Promise<z.Schema<unknown>> {
|
|
if ( !(definition.imported?.exZodifiedSchema) ) {
|
|
this.logging.debug('Type export is invalid: no exZodifiedSchema found')
|
|
this.logging.debug(definition.imported)
|
|
throw new InvalidCanonicalExportError(definition.originalName)
|
|
}
|
|
|
|
return definition.imported.exZodifiedSchema
|
|
}
|
|
}
|