import faker from '@faker-js/faker'; const arrayOf = (f: () => T) => { const length = 3; return Array.from({ length, }, f); }; const objectOf = (f: () => T) => { const keys = ['foo', 'bar', 'qux']; return keys.reduce>((object, key) => { object[key] = f(); return object; }, {}); }; const factories = { boolean: () => faker.datatype.boolean(), date_iso_8601: () => faker.datatype.datetime().toISOString().slice(0, 10), date_time_iso_8601: () => faker.datatype.datetime().toISOString(), decimal: () => faker.datatype.float(), double: () => faker.datatype.float(), integer: () => faker.datatype.number(), json: () => faker.datatype.json(), long: () => faker.datatype.number(), object: () => faker.datatype.json(), string: () => faker.datatype.string(), unit: () => undefined, uuid: () => faker.datatype.uuid(), 'io.apibuilder.api.json.v0.enums.parameter_location': (): io.apibuilder.api.json.v0.enums.ParameterLocation => faker.helpers.arrayElement(['path', 'query', 'form', 'header']), 'io.apibuilder.api.json.v0.models.annotation': (): io.apibuilder.api.json.v0.models.Annotation => ({ description: factories.string(), deprecation: factories['io.apibuilder.api.json.v0.models.deprecation'](), }), 'io.apibuilder.api.json.v0.models.api_json': (): io.apibuilder.api.json.v0.models.ApiJson => ({ name: factories.string(), info: factories['io.apibuilder.api.json.v0.models.info'](), namespace: factories.string(), base_url: factories.string(), description: factories.string(), imports: arrayOf(() => factories['io.apibuilder.api.json.v0.models.import']()), headers: arrayOf(() => factories['io.apibuilder.api.json.v0.models.header']()), enums: objectOf(() => factories['io.apibuilder.api.json.v0.models.enum']()), interfaces: objectOf(() => factories['io.apibuilder.api.json.v0.models.interface']()), templates: factories['io.apibuilder.api.json.v0.models.templates'](), unions: objectOf(() => factories['io.apibuilder.api.json.v0.models.union']()), models: objectOf(() => factories['io.apibuilder.api.json.v0.models.model']()), resources: objectOf(() => factories['io.apibuilder.api.json.v0.models.resource']()), annotations: objectOf(() => factories['io.apibuilder.api.json.v0.models.annotation']()), attributes: arrayOf(() => factories['io.apibuilder.api.json.v0.models.attribute']()), }), 'io.apibuilder.api.json.v0.models.attribute': (): io.apibuilder.api.json.v0.models.Attribute => ({ name: factories.string(), value: factories.object(), }), 'io.apibuilder.api.json.v0.models.body': (): io.apibuilder.api.json.v0.models.Body => ({ type: factories.string(), description: factories.string(), attributes: arrayOf(() => factories['io.apibuilder.api.json.v0.models.attribute']()), deprecation: factories['io.apibuilder.api.json.v0.models.deprecation'](), }), 'io.apibuilder.api.json.v0.models.contact': (): io.apibuilder.api.json.v0.models.Contact => ({ name: factories.string(), url: factories.string(), email: factories.string(), }), 'io.apibuilder.api.json.v0.models.deprecation': (): io.apibuilder.api.json.v0.models.Deprecation => ({ description: factories.string(), }), 'io.apibuilder.api.json.v0.models.enum': (): io.apibuilder.api.json.v0.models.Enum => ({ plural: factories.string(), description: factories.string(), values: arrayOf(() => factories['io.apibuilder.api.json.v0.models.enum_value']()), attributes: arrayOf(() => factories['io.apibuilder.api.json.v0.models.attribute']()), deprecation: factories['io.apibuilder.api.json.v0.models.deprecation'](), }), 'io.apibuilder.api.json.v0.models.enum_value': (): io.apibuilder.api.json.v0.models.EnumValue => ({ name: factories.string(), value: factories.string(), description: factories.string(), attributes: arrayOf(() => factories['io.apibuilder.api.json.v0.models.attribute']()), deprecation: factories['io.apibuilder.api.json.v0.models.deprecation'](), }), 'io.apibuilder.api.json.v0.models.field': (): io.apibuilder.api.json.v0.models.Field => ({ name: factories.string(), type: factories.string(), description: factories.string(), required: factories.boolean(), 'default': factories.json(), example: factories.string(), minimum: factories.long(), maximum: factories.long(), attributes: arrayOf(() => factories['io.apibuilder.api.json.v0.models.attribute']()), annotations: arrayOf(() => factories.string()), deprecation: factories['io.apibuilder.api.json.v0.models.deprecation'](), }), 'io.apibuilder.api.json.v0.models.header': (): io.apibuilder.api.json.v0.models.Header => ({ name: factories.string(), type: factories.string(), required: factories.boolean(), description: factories.string(), attributes: arrayOf(() => factories['io.apibuilder.api.json.v0.models.attribute']()), deprecation: factories['io.apibuilder.api.json.v0.models.deprecation'](), }), 'io.apibuilder.api.json.v0.models.import': (): io.apibuilder.api.json.v0.models.Import => ({ uri: factories.string(), }), 'io.apibuilder.api.json.v0.models.info': (): io.apibuilder.api.json.v0.models.Info => ({ contact: factories['io.apibuilder.api.json.v0.models.contact'](), license: factories['io.apibuilder.api.json.v0.models.license'](), }), 'io.apibuilder.api.json.v0.models.interface': (): io.apibuilder.api.json.v0.models.Interface => ({ plural: factories.string(), description: factories.string(), fields: arrayOf(() => factories['io.apibuilder.api.json.v0.models.field']()), attributes: arrayOf(() => factories['io.apibuilder.api.json.v0.models.attribute']()), deprecation: factories['io.apibuilder.api.json.v0.models.deprecation'](), }), 'io.apibuilder.api.json.v0.models.license': (): io.apibuilder.api.json.v0.models.License => ({ name: factories.string(), url: factories.string(), }), 'io.apibuilder.api.json.v0.models.model': (): io.apibuilder.api.json.v0.models.Model => ({ description: factories.string(), plural: factories.string(), fields: arrayOf(() => factories['io.apibuilder.api.json.v0.models.field']()), attributes: arrayOf(() => factories['io.apibuilder.api.json.v0.models.attribute']()), interfaces: arrayOf(() => factories.string()), templates: arrayOf(() => factories['io.apibuilder.api.json.v0.models.template_declaration']()), deprecation: factories['io.apibuilder.api.json.v0.models.deprecation'](), }), 'io.apibuilder.api.json.v0.models.operation': (): io.apibuilder.api.json.v0.models.Operation => ({ method: factories.string(), path: factories.string(), description: factories.string(), body: factories['io.apibuilder.api.json.v0.models.body'](), parameters: arrayOf(() => factories['io.apibuilder.api.json.v0.models.parameter']()), responses: objectOf(() => factories['io.apibuilder.api.json.v0.models.response']()), attributes: arrayOf(() => factories['io.apibuilder.api.json.v0.models.attribute']()), deprecation: factories['io.apibuilder.api.json.v0.models.deprecation'](), }), 'io.apibuilder.api.json.v0.models.parameter': (): io.apibuilder.api.json.v0.models.Parameter => ({ name: factories.string(), type: factories.string(), location: factories['io.apibuilder.api.json.v0.enums.parameter_location'](), description: factories.string(), required: factories.boolean(), 'default': factories.json(), minimum: factories.long(), maximum: factories.long(), example: factories.string(), attributes: arrayOf(() => factories['io.apibuilder.api.json.v0.models.attribute']()), deprecation: factories['io.apibuilder.api.json.v0.models.deprecation'](), }), 'io.apibuilder.api.json.v0.models.resource': (): io.apibuilder.api.json.v0.models.Resource => ({ path: factories.string(), description: factories.string(), operations: arrayOf(() => factories['io.apibuilder.api.json.v0.models.operation']()), attributes: arrayOf(() => factories['io.apibuilder.api.json.v0.models.attribute']()), templates: arrayOf(() => factories['io.apibuilder.api.json.v0.models.template_declaration']()), deprecation: factories['io.apibuilder.api.json.v0.models.deprecation'](), }), 'io.apibuilder.api.json.v0.models.response': (): io.apibuilder.api.json.v0.models.Response => ({ type: factories.string(), headers: arrayOf(() => factories['io.apibuilder.api.json.v0.models.header']()), description: factories.string(), deprecation: factories['io.apibuilder.api.json.v0.models.deprecation'](), attributes: arrayOf(() => factories['io.apibuilder.api.json.v0.models.attribute']()), }), 'io.apibuilder.api.json.v0.models.template_declaration': (): io.apibuilder.api.json.v0.models.TemplateDeclaration => ({ name: factories.string(), cast: objectOf(() => factories.string()), }), 'io.apibuilder.api.json.v0.models.templates': (): io.apibuilder.api.json.v0.models.Templates => ({ models: objectOf(() => factories['io.apibuilder.api.json.v0.models.model']()), resources: objectOf(() => factories['io.apibuilder.api.json.v0.models.resource']()), }), 'io.apibuilder.api.json.v0.models.union': (): io.apibuilder.api.json.v0.models.Union => ({ plural: factories.string(), discriminator: factories.string(), description: factories.string(), types: arrayOf(() => factories['io.apibuilder.api.json.v0.models.union_type']()), attributes: arrayOf(() => factories['io.apibuilder.api.json.v0.models.attribute']()), interfaces: arrayOf(() => factories.string()), deprecation: factories['io.apibuilder.api.json.v0.models.deprecation'](), }), 'io.apibuilder.api.json.v0.models.union_type': (): io.apibuilder.api.json.v0.models.UnionType => ({ type: factories.string(), description: factories.string(), 'default': factories.boolean(), discriminator_value: factories.string(), attributes: arrayOf(() => factories['io.apibuilder.api.json.v0.models.attribute']()), deprecation: factories['io.apibuilder.api.json.v0.models.deprecation'](), }), }; export const makeAnnotation = () => factories['io.apibuilder.api.json.v0.models.annotation'](); export const makeApiJson = () => factories['io.apibuilder.api.json.v0.models.api_json'](); export const makeAttribute = () => factories['io.apibuilder.api.json.v0.models.attribute'](); export const makeBody = () => factories['io.apibuilder.api.json.v0.models.body'](); export const makeContact = () => factories['io.apibuilder.api.json.v0.models.contact'](); export const makeDeprecation = () => factories['io.apibuilder.api.json.v0.models.deprecation'](); export const makeEnum = () => factories['io.apibuilder.api.json.v0.models.enum'](); export const makeEnumValue = () => factories['io.apibuilder.api.json.v0.models.enum_value'](); export const makeField = () => factories['io.apibuilder.api.json.v0.models.field'](); export const makeHeader = () => factories['io.apibuilder.api.json.v0.models.header'](); export const makeImport = () => factories['io.apibuilder.api.json.v0.models.import'](); export const makeInfo = () => factories['io.apibuilder.api.json.v0.models.info'](); export const makeInterface = () => factories['io.apibuilder.api.json.v0.models.interface'](); export const makeLicense = () => factories['io.apibuilder.api.json.v0.models.license'](); export const makeModel = () => factories['io.apibuilder.api.json.v0.models.model'](); export const makeOperation = () => factories['io.apibuilder.api.json.v0.models.operation'](); export const makeParameter = () => factories['io.apibuilder.api.json.v0.models.parameter'](); export const makeParameterLocation = () => factories['io.apibuilder.api.json.v0.enums.parameter_location'](); export const makeResource = () => factories['io.apibuilder.api.json.v0.models.resource'](); export const makeResponse = () => factories['io.apibuilder.api.json.v0.models.response'](); export const makeTemplateDeclaration = () => factories['io.apibuilder.api.json.v0.models.template_declaration'](); export const makeTemplates = () => factories['io.apibuilder.api.json.v0.models.templates'](); export const makeUnion = () => factories['io.apibuilder.api.json.v0.models.union'](); export const makeUnionType = () => factories['io.apibuilder.api.json.v0.models.union_type']();