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.spec.v0.enums.method': (): io.apibuilder.spec.v0.enums.Method => faker.helpers.arrayElement([ 'GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'CONNECT', 'OPTIONS', 'TRACE', ]), 'io.apibuilder.spec.v0.enums.parameter_location': (): io.apibuilder.spec.v0.enums.ParameterLocation => faker.helpers.arrayElement(['Path', 'Query', 'Form', 'Header']), 'io.apibuilder.spec.v0.enums.response_code_option': (): io.apibuilder.spec.v0.enums.ResponseCodeOption => faker.helpers.arrayElement(['Default']), 'io.apibuilder.spec.v0.models.annotation': (): io.apibuilder.spec.v0.models.Annotation => ({ name: factories.string(), description: factories.string(), deprecation: factories['io.apibuilder.spec.v0.models.deprecation'](), }), 'io.apibuilder.spec.v0.models.apidoc': (): io.apibuilder.spec.v0.models.Apidoc => ({ version: factories.string(), }), 'io.apibuilder.spec.v0.models.application': (): io.apibuilder.spec.v0.models.Application => ({ key: factories.string(), }), 'io.apibuilder.spec.v0.models.attribute': (): io.apibuilder.spec.v0.models.Attribute => ({ name: factories.string(), value: factories.object(), description: factories.string(), deprecation: factories['io.apibuilder.spec.v0.models.deprecation'](), }), 'io.apibuilder.spec.v0.models.body': (): io.apibuilder.spec.v0.models.Body => ({ type: factories.string(), description: factories.string(), deprecation: factories['io.apibuilder.spec.v0.models.deprecation'](), attributes: arrayOf(() => factories['io.apibuilder.spec.v0.models.attribute']()), }), 'io.apibuilder.spec.v0.models.contact': (): io.apibuilder.spec.v0.models.Contact => ({ name: factories.string(), url: factories.string(), email: factories.string(), }), 'io.apibuilder.spec.v0.models.deprecation': (): io.apibuilder.spec.v0.models.Deprecation => ({ description: factories.string(), }), 'io.apibuilder.spec.v0.models.enum': (): io.apibuilder.spec.v0.models.Enum => ({ name: factories.string(), plural: factories.string(), description: factories.string(), deprecation: factories['io.apibuilder.spec.v0.models.deprecation'](), values: arrayOf(() => factories['io.apibuilder.spec.v0.models.enum_value']()), attributes: arrayOf(() => factories['io.apibuilder.spec.v0.models.attribute']()), }), 'io.apibuilder.spec.v0.models.enum_value': (): io.apibuilder.spec.v0.models.EnumValue => ({ name: factories.string(), description: factories.string(), deprecation: factories['io.apibuilder.spec.v0.models.deprecation'](), attributes: arrayOf(() => factories['io.apibuilder.spec.v0.models.attribute']()), value: factories.string(), }), 'io.apibuilder.spec.v0.models.field': (): io.apibuilder.spec.v0.models.Field => ({ name: factories.string(), type: factories.string(), description: factories.string(), deprecation: factories['io.apibuilder.spec.v0.models.deprecation'](), 'default': factories.string(), required: factories.boolean(), minimum: factories.long(), maximum: factories.long(), example: factories.string(), attributes: arrayOf(() => factories['io.apibuilder.spec.v0.models.attribute']()), annotations: arrayOf(() => factories.string()), }), 'io.apibuilder.spec.v0.models.header': (): io.apibuilder.spec.v0.models.Header => ({ name: factories.string(), type: factories.string(), description: factories.string(), deprecation: factories['io.apibuilder.spec.v0.models.deprecation'](), required: factories.boolean(), 'default': factories.string(), attributes: arrayOf(() => factories['io.apibuilder.spec.v0.models.attribute']()), }), 'io.apibuilder.spec.v0.models.import': (): io.apibuilder.spec.v0.models.Import => ({ uri: factories.string(), namespace: factories.string(), organization: factories['io.apibuilder.spec.v0.models.organization'](), application: factories['io.apibuilder.spec.v0.models.application'](), version: factories.string(), enums: arrayOf(() => factories.string()), interfaces: arrayOf(() => factories.string()), unions: arrayOf(() => factories.string()), models: arrayOf(() => factories.string()), annotations: arrayOf(() => factories['io.apibuilder.spec.v0.models.annotation']()), }), 'io.apibuilder.spec.v0.models.info': (): io.apibuilder.spec.v0.models.Info => ({ license: factories['io.apibuilder.spec.v0.models.license'](), contact: factories['io.apibuilder.spec.v0.models.contact'](), }), 'io.apibuilder.spec.v0.models.interface': (): io.apibuilder.spec.v0.models.Interface => ({ name: factories.string(), plural: factories.string(), description: factories.string(), deprecation: factories['io.apibuilder.spec.v0.models.deprecation'](), fields: arrayOf(() => factories['io.apibuilder.spec.v0.models.field']()), attributes: arrayOf(() => factories['io.apibuilder.spec.v0.models.attribute']()), }), 'io.apibuilder.spec.v0.models.license': (): io.apibuilder.spec.v0.models.License => ({ name: factories.string(), url: factories.string(), }), 'io.apibuilder.spec.v0.models.model': (): io.apibuilder.spec.v0.models.Model => ({ name: factories.string(), plural: factories.string(), description: factories.string(), deprecation: factories['io.apibuilder.spec.v0.models.deprecation'](), fields: arrayOf(() => factories['io.apibuilder.spec.v0.models.field']()), attributes: arrayOf(() => factories['io.apibuilder.spec.v0.models.attribute']()), interfaces: arrayOf(() => factories.string()), }), 'io.apibuilder.spec.v0.models.operation': (): io.apibuilder.spec.v0.models.Operation => ({ method: factories['io.apibuilder.spec.v0.enums.method'](), path: factories.string(), description: factories.string(), deprecation: factories['io.apibuilder.spec.v0.models.deprecation'](), body: factories['io.apibuilder.spec.v0.models.body'](), parameters: arrayOf(() => factories['io.apibuilder.spec.v0.models.parameter']()), responses: arrayOf(() => factories['io.apibuilder.spec.v0.models.response']()), attributes: arrayOf(() => factories['io.apibuilder.spec.v0.models.attribute']()), }), 'io.apibuilder.spec.v0.models.organization': (): io.apibuilder.spec.v0.models.Organization => ({ key: factories.string(), }), 'io.apibuilder.spec.v0.models.parameter': (): io.apibuilder.spec.v0.models.Parameter => ({ name: factories.string(), type: factories.string(), location: factories['io.apibuilder.spec.v0.enums.parameter_location'](), description: factories.string(), deprecation: factories['io.apibuilder.spec.v0.models.deprecation'](), required: factories.boolean(), 'default': factories.string(), minimum: factories.long(), maximum: factories.long(), example: factories.string(), attributes: arrayOf(() => factories['io.apibuilder.spec.v0.models.attribute']()), }), 'io.apibuilder.spec.v0.models.resource': (): io.apibuilder.spec.v0.models.Resource => ({ type: factories.string(), plural: factories.string(), path: factories.string(), description: factories.string(), deprecation: factories['io.apibuilder.spec.v0.models.deprecation'](), operations: arrayOf(() => factories['io.apibuilder.spec.v0.models.operation']()), attributes: arrayOf(() => factories['io.apibuilder.spec.v0.models.attribute']()), }), 'io.apibuilder.spec.v0.models.response': (): io.apibuilder.spec.v0.models.Response => ({ code: factories['io.apibuilder.spec.v0.unions.response_code'](), type: factories.string(), headers: arrayOf(() => factories['io.apibuilder.spec.v0.models.header']()), description: factories.string(), deprecation: factories['io.apibuilder.spec.v0.models.deprecation'](), attributes: arrayOf(() => factories['io.apibuilder.spec.v0.models.attribute']()), }), 'io.apibuilder.spec.v0.models.service': (): io.apibuilder.spec.v0.models.Service => ({ apidoc: factories['io.apibuilder.spec.v0.models.apidoc'](), name: factories.string(), organization: factories['io.apibuilder.spec.v0.models.organization'](), application: factories['io.apibuilder.spec.v0.models.application'](), namespace: factories.string(), version: factories.string(), base_url: factories.string(), description: factories.string(), info: factories['io.apibuilder.spec.v0.models.info'](), headers: arrayOf(() => factories['io.apibuilder.spec.v0.models.header']()), imports: arrayOf(() => factories['io.apibuilder.spec.v0.models.import']()), enums: arrayOf(() => factories['io.apibuilder.spec.v0.models.enum']()), interfaces: arrayOf(() => factories['io.apibuilder.spec.v0.models.interface']()), unions: arrayOf(() => factories['io.apibuilder.spec.v0.models.union']()), models: arrayOf(() => factories['io.apibuilder.spec.v0.models.model']()), resources: arrayOf(() => factories['io.apibuilder.spec.v0.models.resource']()), attributes: arrayOf(() => factories['io.apibuilder.spec.v0.models.attribute']()), annotations: arrayOf(() => factories['io.apibuilder.spec.v0.models.annotation']()), }), 'io.apibuilder.spec.v0.models.union': (): io.apibuilder.spec.v0.models.Union => ({ name: factories.string(), plural: factories.string(), discriminator: factories.string(), description: factories.string(), deprecation: factories['io.apibuilder.spec.v0.models.deprecation'](), types: arrayOf(() => factories['io.apibuilder.spec.v0.models.union_type']()), attributes: arrayOf(() => factories['io.apibuilder.spec.v0.models.attribute']()), interfaces: arrayOf(() => factories.string()), }), 'io.apibuilder.spec.v0.models.union_type': (): io.apibuilder.spec.v0.models.UnionType => ({ type: factories.string(), description: factories.string(), deprecation: factories['io.apibuilder.spec.v0.models.deprecation'](), attributes: arrayOf(() => factories['io.apibuilder.spec.v0.models.attribute']()), 'default': factories.boolean(), discriminator_value: factories.string(), }), 'io.apibuilder.spec.v0.unions.response_code': (): io.apibuilder.spec.v0.unions.ResponseCode => { const f = faker.helpers.arrayElement([() => ({ discriminator: 'integer' as const, value: factories.integer(), }), () => ({ discriminator: 'response_code_option' as const, value: factories['io.apibuilder.spec.v0.enums.response_code_option'](), })]); return f(); }, 'io.postman.generator.attributes.v0.enums.attribute_name': (): io.postman.generator.attributes.v0.enums.AttributeName => faker.helpers.arrayElement(['postman-basic-auth', 'object-reference', 'value-substitute']), 'io.postman.generator.attributes.v0.models.basic_auth': (): io.postman.generator.attributes.v0.models.BasicAuth => ({ username: factories.string(), password: factories.string(), }), 'io.postman.generator.attributes.v0.models.object_reference': (): io.postman.generator.attributes.v0.models.ObjectReference => ({ related_service_namespace: factories.string(), resource_type: factories.string(), operation_method: factories['io.apibuilder.spec.v0.enums.method'](), operation_path: factories.string(), identifier_field: factories.string(), query_params: objectOf(() => factories.string()), delete_operation_path: factories.string(), }), 'io.postman.generator.attributes.v0.models.value_substitute': (): io.postman.generator.attributes.v0.models.ValueSubstitute => ({ substitute: factories.string(), }), }; export const makeAttributeName = () => factories['io.postman.generator.attributes.v0.enums.attribute_name'](); export const makeBasicAuth = () => factories['io.postman.generator.attributes.v0.models.basic_auth'](); export const makeObjectReference = () => factories['io.postman.generator.attributes.v0.models.object_reference'](); export const makeValueSubstitute = () => factories['io.postman.generator.attributes.v0.models.value_substitute']();