@@ -7,12 +7,13 @@ import {
77 extensiblePredicateDefinitions ,
88} from "./predicates" ;
99
10- import * as dataSchemaJson from "./data- schema.json" ;
10+ import * as modelExtensionFileSchema from "./model-extension-file. schema.json" ;
1111import { Mode } from "./shared/mode" ;
1212import { assertNever } from "../common/helpers-pure" ;
13+ import { ModelExtensionFile } from "./model-extension-file" ;
1314
14- const ajv = new Ajv ( { allErrors : true } ) ;
15- const dataSchemaValidate = ajv . compile ( dataSchemaJson ) ;
15+ const ajv = new Ajv ( { allErrors : true , allowUnionTypes : true } ) ;
16+ const modelExtensionFileSchemaValidate = ajv . compile ( modelExtensionFileSchema ) ;
1617
1718function createDataProperty (
1819 methods : ModeledMethod [ ] ,
@@ -211,24 +212,29 @@ export function createFilenameForPackage(
211212 return `${ prefix } ${ packageName } ${ suffix } .yml` ;
212213}
213214
214- export function loadDataExtensionYaml (
215- data : any ,
216- ) : Record < string , ModeledMethod > | undefined {
217- dataSchemaValidate ( data ) ;
215+ function validateModelExtensionFile ( data : unknown ) : data is ModelExtensionFile {
216+ modelExtensionFileSchemaValidate ( data ) ;
218217
219- if ( dataSchemaValidate . errors ) {
218+ if ( modelExtensionFileSchemaValidate . errors ) {
220219 throw new Error (
221- `Invalid data extension YAML: ${ dataSchemaValidate . errors
220+ `Invalid data extension YAML: ${ modelExtensionFileSchemaValidate . errors
222221 . map ( ( error ) => `${ error . instancePath } ${ error . message } ` )
223222 . join ( ", " ) } `,
224223 ) ;
225224 }
226225
227- const extensions = data . extensions ;
228- if ( ! Array . isArray ( extensions ) ) {
226+ return true ;
227+ }
228+
229+ export function loadDataExtensionYaml (
230+ data : unknown ,
231+ ) : Record < string , ModeledMethod > | undefined {
232+ if ( ! validateModelExtensionFile ( data ) ) {
229233 return undefined ;
230234 }
231235
236+ const extensions = data . extensions ;
237+
232238 const modeledMethods : Record < string , ModeledMethod > = { } ;
233239
234240 for ( const extension of extensions ) {
0 commit comments