import $RefParser = require('@bcherny/json-schema-ref-parser') import {JSONSchema} from './types/JSONSchema' import {log} from './utils' export type DereferencedPaths = WeakMap<$RefParser.JSONSchemaObject, string> export async function dereference( schema: JSONSchema, {cwd, $refOptions}: {cwd: string; $refOptions: $RefParser.Options} ): Promise<{dereferencedPaths: DereferencedPaths; dereferencedSchema: JSONSchema}> { log('green', 'dereferencer', 'Dereferencing input schema:', cwd, schema) const parser = new $RefParser() const dereferencedPaths: DereferencedPaths = new WeakMap() const dereferencedSchema = (await parser.dereference(cwd, schema as any, { ...$refOptions, dereference: { ...$refOptions.dereference, onDereference($ref, schema) { dereferencedPaths.set(schema, $ref) } } })) as any // TODO: fix types return {dereferencedPaths, dereferencedSchema} }