@sprucelabs/spruce-cli
Version:
Command line interface for building Spruce skills.
25 lines (21 loc) • 846 B
text/typescript
import { validateSchema } from '@sprucelabs/schema'
import cloneDeep from 'lodash/cloneDeep'
import SpruceError from '../../../errors/SpruceError'
import ImportService from '../../../services/ImportService'
export default class SchemaService extends ImportService {
public async importSchema(file: string) {
const definitionProxy = await this.importDefault(file)
try {
validateSchema(definitionProxy)
} catch (err: any) {
throw new SpruceError({
code: 'SCHEMA_FAILED_TO_IMPORT',
file,
originalError: err,
friendlyMessage:
'The definition imported is not valid. Make sure it is "export default build[Schema|Error|Field]Definition"',
})
}
return cloneDeep(definitionProxy)
}
}