import { JSONSchemaFaker } from 'json-schema-faker'; import { JsonValue } from 'type-fest'; // @ts-ignore No types available import joiToJson from 'joi-to-json'; import { CLIAlterationHook } from '../../domain/product-module-definition'; import { EStepType, getJoiSchemaFromCode } from './schema-generator'; export interface Payload { schemaType: string; payload: JsonValue; } export const generatePayload = (params: { joiSchema: any }): JsonValue => { return JSONSchemaFaker.generate(joiToJson(params.joiSchema)); }; export const generatePayloadArray = (params: { code: string; schemaType: EStepType; alterationHooks: CLIAlterationHook[]; }): Payload[] => { const { code, schemaType, alterationHooks } = params; const joiSchemaMap = getJoiSchemaFromCode({ localDefinitionCode: code, schemaType, alterationHooks, }); return [...joiSchemaMap.entries()].map(([name, schema]) => { return { schemaType: name, payload: generatePayload({ joiSchema: schema, }), }; }); };