import { join } from 'path' ; import { readdirSync } from 'fs' ; import * as model from './metamodel' ; const jsonSpecPath = join ( __dirname , '..' , '..' , '..' , 'specification' , '_json_spec' ) ; export interface JsonSpec { documentation : { url : string ; description : string ; } ; stability : model . Stability ; visibility : model . Visibility ; headers : { accept ? : string [ ] ; content_type ? : string [ ] ; } ; url : { paths : Array < { path : string ; methods : string [ ] ; parts ? : Record < string , { type : string ; description : string ; deprecated ? : boolean ; } > ; deprecated ? : { version : string ; description : string ; } ; } > ; } ; params ? : Record < string , { type : string ; description : string ; options ? : string [ ] ; } > ; body ? : { description : string ; required ? : boolean ; } ; } export default function buildJsonSpec ( ) { const files = readdirSync ( jsonSpecPath ) . filter ( file => file . endsWith ( '.json' ) ) ; const map = new Map ( ) ; for ( const file of files ) { const json = require ( join ( jsonSpecPath , file ) ) ; const name = Object . keys ( json ) [ 0 ] ; map . set ( name , json [ name ] ) ; } return map ; }