lib/transform/context.ts (38 lines of code) (raw):
import { JsonLoader } from "../swagger/jsonLoader";
import { LoggingFn, Parameter, refSelfSymbol, Schema } from "../swagger/swaggerTypes";
import { SchemaValidator } from "../swaggerValidator/schemaValidator";
import { GlobalTransformer, sortTransformers, SpecTransformer, Transformer } from "./transformer";
export interface TransformContext {
jsonLoader: JsonLoader;
schemaValidator: SchemaValidator;
objSchemas: Schema[];
arrSchemas: Schema[];
primSchemas: Schema[];
allParams: Parameter[];
baseSchemas: Set<Schema>;
specTransformers: SpecTransformer[];
globalTransformers: GlobalTransformer[];
logging?: LoggingFn;
}
export const getTransformContext = (
jsonLoader: JsonLoader,
schemaValidator: SchemaValidator,
transformers: Array<Transformer | undefined>,
logging?: LoggingFn
): TransformContext => {
return {
jsonLoader,
schemaValidator,
objSchemas: [],
arrSchemas: [],
primSchemas: [],
allParams: [],
baseSchemas: new Set(),
...sortTransformers(transformers.filter(Boolean) as Transformer[]),
logging,
};
};
export const getNameFromRef = (sch: Schema | undefined) => {
const sp = sch?.[refSelfSymbol]?.split("/");
return sp === undefined ? undefined : sp[sp.length - 1];
};