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.swagger.v0.enums.api_key_in_type': (): io.apibuilder.swagger.v0.enums.ApiKeyInType => faker.helpers.arrayElement(['query', 'header']), 'io.apibuilder.swagger.v0.enums.collection_format_type': (): io.apibuilder.swagger.v0.enums.CollectionFormatType => faker.helpers.arrayElement(['csv', 'ssv', 'tsv', 'pipes']), 'io.apibuilder.swagger.v0.enums.format_type': (): io.apibuilder.swagger.v0.enums.FormatType => faker.helpers.arrayElement([ 'binary', 'byte', 'date', 'date-time', 'double', 'float', 'int32', 'int64', 'password', ]), 'io.apibuilder.swagger.v0.enums.items_type': (): io.apibuilder.swagger.v0.enums.ItemsType => faker.helpers.arrayElement(['string', 'number', 'integer', 'boolean', 'array']), 'io.apibuilder.swagger.v0.enums.parameter_in_type': (): io.apibuilder.swagger.v0.enums.ParameterInType => faker.helpers.arrayElement(['query', 'header', 'path', 'formData', 'body']), 'io.apibuilder.swagger.v0.enums.security_scheme_type': (): io.apibuilder.swagger.v0.enums.SecuritySchemeType => faker.helpers.arrayElement(['basic', 'apiKey', 'oauth2']), 'io.apibuilder.swagger.v0.models.contact': (): io.apibuilder.swagger.v0.models.Contact => ({ name: factories.string(), url: factories.string(), email: factories.string(), }), 'io.apibuilder.swagger.v0.models.external_documentation': (): io.apibuilder.swagger.v0.models.ExternalDocumentation => ({ description: factories.string(), url: factories.string(), }), 'io.apibuilder.swagger.v0.models.header': (): io.apibuilder.swagger.v0.models.Header => ({ description: factories.string(), type: factories['io.apibuilder.swagger.v0.enums.items_type'](), format: factories['io.apibuilder.swagger.v0.enums.format_type'](), items: factories['io.apibuilder.swagger.v0.models.items'](), collectionFormat: factories['io.apibuilder.swagger.v0.enums.collection_format_type'](), 'default': factories.object(), maximum: factories.long(), exclusiveMaximum: factories.boolean(), minimum: factories.long(), exclusiveMinimum: factories.boolean(), maxLength: factories.integer(), minLength: factories.integer(), pattern: factories.string(), maxItems: factories.integer(), minItems: factories.integer(), uniqueItems: factories.boolean(), 'enum': arrayOf(() => factories.object()), multipleOf: factories.long(), }), 'io.apibuilder.swagger.v0.models.info': (): io.apibuilder.swagger.v0.models.Info => ({ title: factories.string(), description: factories.string(), termsOfService: factories.string(), contact: factories['io.apibuilder.swagger.v0.models.contact'](), license: factories['io.apibuilder.swagger.v0.models.license'](), version: factories.string(), }), 'io.apibuilder.swagger.v0.models.items': (): io.apibuilder.swagger.v0.models.Items => ({ type: factories['io.apibuilder.swagger.v0.enums.items_type'](), format: factories['io.apibuilder.swagger.v0.enums.format_type'](), items: factories['io.apibuilder.swagger.v0.models.items'](), collectionFormat: factories['io.apibuilder.swagger.v0.enums.collection_format_type'](), 'default': factories.object(), maximum: factories.long(), exclusiveMaximum: factories.boolean(), minimum: factories.long(), exclusiveMinimum: factories.boolean(), maxLength: factories.integer(), minLength: factories.integer(), pattern: factories.string(), maxItems: factories.integer(), minItems: factories.integer(), uniqueItems: factories.boolean(), 'enum': arrayOf(() => factories.object()), multipleOf: factories.long(), }), 'io.apibuilder.swagger.v0.models.license': (): io.apibuilder.swagger.v0.models.License => ({ name: factories.string(), url: factories.string(), }), 'io.apibuilder.swagger.v0.models.operation': (): io.apibuilder.swagger.v0.models.Operation => ({ tags: arrayOf(() => factories.string()), summary: factories.string(), description: factories.string(), externalDocs: factories['io.apibuilder.swagger.v0.models.external_documentation'](), operationId: factories.string(), consumes: arrayOf(() => factories.string()), produces: arrayOf(() => factories.string()), parameters: arrayOf(() => factories['io.apibuilder.swagger.v0.unions.parameter_or_ref']()), responses: objectOf(() => factories['io.apibuilder.swagger.v0.unions.response_or_ref']()), schemes: arrayOf(() => factories.string()), deprecated: factories.boolean(), security: arrayOf(() => objectOf(() => arrayOf(() => factories.string()))), }), 'io.apibuilder.swagger.v0.models.parameter': (): io.apibuilder.swagger.v0.models.Parameter => ({ discriminator: 'parameter', name: factories.string(), 'in': factories['io.apibuilder.swagger.v0.enums.parameter_in_type'](), description: factories.string(), required: factories.boolean(), schema: factories['io.apibuilder.swagger.v0.models.schema'](), type: factories.string(), format: factories.string(), allowEmptyValue: factories.boolean(), items: factories['io.apibuilder.swagger.v0.models.items'](), collectionFormat: factories['io.apibuilder.swagger.v0.enums.collection_format_type'](), 'default': factories.object(), maximum: factories.long(), exclusiveMaximum: factories.boolean(), minimum: factories.long(), exclusiveMinimum: factories.boolean(), maxLength: factories.integer(), minLength: factories.integer(), pattern: factories.string(), maxItems: factories.integer(), minItems: factories.integer(), uniqueItems: factories.boolean(), 'enum': arrayOf(() => factories.object()), multipleOf: factories.long(), }), 'io.apibuilder.swagger.v0.models.path_item': (): io.apibuilder.swagger.v0.models.PathItem => ({ ref: factories.string(), get: factories['io.apibuilder.swagger.v0.models.operation'](), put: factories['io.apibuilder.swagger.v0.models.operation'](), post: factories['io.apibuilder.swagger.v0.models.operation'](), 'delete': factories['io.apibuilder.swagger.v0.models.operation'](), options: factories['io.apibuilder.swagger.v0.models.operation'](), head: factories['io.apibuilder.swagger.v0.models.operation'](), patch: factories['io.apibuilder.swagger.v0.models.operation'](), parameters: arrayOf(() => factories['io.apibuilder.swagger.v0.unions.parameter_or_ref']()), }), 'io.apibuilder.swagger.v0.models.reference': (): io.apibuilder.swagger.v0.models.Reference => ({ discriminator: 'reference', ref: factories.string(), }), 'io.apibuilder.swagger.v0.models.response': (): io.apibuilder.swagger.v0.models.Response => ({ discriminator: 'response', description: factories.string(), schema: factories['io.apibuilder.swagger.v0.models.schema'](), headers: objectOf(() => factories['io.apibuilder.swagger.v0.models.header']()), examples: factories.object(), }), 'io.apibuilder.swagger.v0.models.schema': (): io.apibuilder.swagger.v0.models.Schema => ({ ref: factories.string(), format: factories['io.apibuilder.swagger.v0.enums.format_type'](), title: factories.string(), description: factories.string(), 'default': factories.object(), multipleOf: factories.long(), maximum: factories.long(), exclusiveMaximum: factories.boolean(), minimum: factories.long(), exclusiveMinimum: factories.boolean(), maxLength: factories.integer(), minLength: factories.integer(), pattern: factories.string(), maxItems: factories.integer(), minItems: factories.integer(), uniqueItems: factories.boolean(), maxProperties: factories.integer(), minProperties: factories.integer(), required: arrayOf(() => factories.string()), 'enum': arrayOf(() => factories.object()), type: arrayOf(() => factories.string()), items: factories['io.apibuilder.swagger.v0.models.schema'](), allOf: arrayOf(() => factories['io.apibuilder.swagger.v0.models.schema']()), properties: objectOf(() => factories['io.apibuilder.swagger.v0.models.schema']()), additionalProperties: factories['io.apibuilder.swagger.v0.models.schema'](), discriminator: factories.string(), readOnly: factories.boolean(), xml: factories['io.apibuilder.swagger.v0.models.xml'](), externalDocs: factories['io.apibuilder.swagger.v0.models.external_documentation'](), example: factories.object(), }), 'io.apibuilder.swagger.v0.models.security_scheme': (): io.apibuilder.swagger.v0.models.SecurityScheme => ({ type: factories['io.apibuilder.swagger.v0.enums.security_scheme_type'](), description: factories.string(), name: factories.string(), 'in': factories['io.apibuilder.swagger.v0.enums.api_key_in_type'](), flow: factories.string(), authorizationUrl: factories.string(), tokenUrl: factories.string(), scopes: objectOf(() => factories.string()), }), 'io.apibuilder.swagger.v0.models.swagger': (): io.apibuilder.swagger.v0.models.Swagger => ({ swagger: factories.string(), info: factories['io.apibuilder.swagger.v0.models.info'](), host: factories.string(), basePath: factories.string(), schemes: arrayOf(() => factories.string()), consumes: arrayOf(() => factories.string()), produces: arrayOf(() => factories.string()), paths: objectOf(() => factories['io.apibuilder.swagger.v0.models.path_item']()), definitions: objectOf(() => factories['io.apibuilder.swagger.v0.models.schema']()), parameters: objectOf(() => factories['io.apibuilder.swagger.v0.models.parameter']()), responses: objectOf(() => factories['io.apibuilder.swagger.v0.models.response']()), securityDefinitions: objectOf(() => factories['io.apibuilder.swagger.v0.models.security_scheme']()), security: objectOf(() => factories.string()), tags: arrayOf(() => factories['io.apibuilder.swagger.v0.models.tag']()), externalDocs: factories['io.apibuilder.swagger.v0.models.external_documentation'](), }), 'io.apibuilder.swagger.v0.models.tag': (): io.apibuilder.swagger.v0.models.Tag => ({ name: factories.string(), description: factories.string(), externalDocs: factories['io.apibuilder.swagger.v0.models.external_documentation'](), }), 'io.apibuilder.swagger.v0.models.xml': (): io.apibuilder.swagger.v0.models.Xml => ({ name: factories.string(), namespace: factories.string(), prefix: factories.string(), attribute: factories.boolean(), wrapped: factories.boolean(), }), 'io.apibuilder.swagger.v0.unions.parameter_or_ref': (): io.apibuilder.swagger.v0.unions.ParameterOrRef => { const f = faker.helpers.arrayElement([ () => factories['io.apibuilder.swagger.v0.models.parameter'](), () => factories['io.apibuilder.swagger.v0.models.reference'](), ]); return f(); }, 'io.apibuilder.swagger.v0.unions.response_or_ref': (): io.apibuilder.swagger.v0.unions.ResponseOrRef => { const f = faker.helpers.arrayElement([ () => factories['io.apibuilder.swagger.v0.models.response'](), () => factories['io.apibuilder.swagger.v0.models.reference'](), ]); return f(); }, }; export const makeApiKeyInType = () => factories['io.apibuilder.swagger.v0.enums.api_key_in_type'](); export const makeCollectionFormatType = () => factories['io.apibuilder.swagger.v0.enums.collection_format_type'](); export const makeContact = () => factories['io.apibuilder.swagger.v0.models.contact'](); export const makeExternalDocumentation = () => factories['io.apibuilder.swagger.v0.models.external_documentation'](); export const makeFormatType = () => factories['io.apibuilder.swagger.v0.enums.format_type'](); export const makeHeader = () => factories['io.apibuilder.swagger.v0.models.header'](); export const makeInfo = () => factories['io.apibuilder.swagger.v0.models.info'](); export const makeItems = () => factories['io.apibuilder.swagger.v0.models.items'](); export const makeItemsType = () => factories['io.apibuilder.swagger.v0.enums.items_type'](); export const makeLicense = () => factories['io.apibuilder.swagger.v0.models.license'](); export const makeOperation = () => factories['io.apibuilder.swagger.v0.models.operation'](); export const makeParameter = () => factories['io.apibuilder.swagger.v0.models.parameter'](); export const makeParameterInType = () => factories['io.apibuilder.swagger.v0.enums.parameter_in_type'](); export const makeParameterOrRef = () => factories['io.apibuilder.swagger.v0.unions.parameter_or_ref'](); export const makePathItem = () => factories['io.apibuilder.swagger.v0.models.path_item'](); export const makeReference = () => factories['io.apibuilder.swagger.v0.models.reference'](); export const makeResponse = () => factories['io.apibuilder.swagger.v0.models.response'](); export const makeResponseOrRef = () => factories['io.apibuilder.swagger.v0.unions.response_or_ref'](); export const makeSchema = () => factories['io.apibuilder.swagger.v0.models.schema'](); export const makeSecurityScheme = () => factories['io.apibuilder.swagger.v0.models.security_scheme'](); export const makeSecuritySchemeType = () => factories['io.apibuilder.swagger.v0.enums.security_scheme_type'](); export const makeSwagger = () => factories['io.apibuilder.swagger.v0.models.swagger'](); export const makeTag = () => factories['io.apibuilder.swagger.v0.models.tag'](); export const makeXml = () => factories['io.apibuilder.swagger.v0.models.xml']();