{"version":3,"sources":["../../../../src/func/Typescript/NonPrimitivesMaker/index.ts","../../../../src/func/Typescript/TypeNameMaker/index.ts","../../../../src/types.ts","../../../../src/helper/index.ts","../../../../src/func/Typescript/InterfaceMaker/index.ts","../../../../src/func/Typescript/peer/index.ts"],"sourcesContent":["import {isNullable} from '../../../helper/index.ts';\n// import {createComponentPrimitives} from '../../../scripts/CreateComponentSchemas/index.mts';\nimport {\n  ComponentSchema,\n  IOpenApiComponent,\n  isArraySchemaObject,\n  isReference,\n} from '../../../types.ts';\nimport {interfaceMaker} from '../InterfaceMaker/index.ts';\nimport {typeNameMaker} from '../TypeNameMaker/index.ts';\nimport {peer} from '../peer/index.ts';\n\nexport const nonPrimitivesMaker = (\n  properties: ComponentSchema,\n  name: string\n) => {\n  if (!properties) {\n    return;\n  }\n  const nonPrimitiveName = typeNameMaker(name);\n  const nonPrimitiveValue = properties\n    .map(item =>\n      peer(\n        item.objectName,\n        typeNameMaker(name + item.objectName + typePostFix(item.objectSchema)),\n        isNullable(item.objectSchema),\n        !isReference(item.objectSchema) &&\n          isArraySchemaObject(item.objectSchema)\n      )\n    )\n    .join('');\n\n  const nonPremitiveTypes = interfaceMaker(nonPrimitiveName, nonPrimitiveValue);\n  return nonPremitiveTypes;\n};\n\nexport const typePostFix = (schema: IOpenApiComponent) => {\n  if (isReference(schema)) {\n    return 'Ref';\n  }\n\n  if (schema.enum?.length) {\n    return 'Enum';\n  }\n\n  if (schema.type === 'array') {\n    const arrayType = typePostFix(schema.items) as string;\n    return arrayType;\n  }\n\n  return '';\n};\n","import {camelize, capitalize} from '../../../helper/index.ts';\n\nexport function typeNameMaker(name: string, extra = 'Set') {\n  return 'I' + camelCase(name) + extra;\n}\nexport function typeNameSpaceMaker(\n  name: string,\n  namespace: string,\n  extra = 'Set'\n) {\n  return (\n    namespace + '.I' + capitalize(camelize(nameRefineWithDot(name))) + extra\n  );\n}\n\nexport function nameRefine(name: string) {\n  const reg = /[^a-zA-Z0-9]/g;\n\n  return name.toString().replace(reg, '');\n}\nexport function nameRefineWithDot(name: string) {\n  const reg = /[^a-zA-Z0-9.]/g;\n\n  return name.toString().replace(reg, '');\n}\n\nexport function nameStringify(name: string) {\n  return \"'\" + name + \"'\";\n}\n\nexport function camelCase(name: string) {\n  return capitalize(camelize(nameRefine(name)));\n}\n","import {Options} from 'prettier';\nimport {Agent} from 'https';\nimport {OpenAPIV3} from 'openapi-types';\nimport {Ora} from 'ora';\n\nexport type Spec = OpenAPIV3.Document;\nexport interface IGetFromSwaggerRootHtml {\n  /**\n   * Get Root url of swagger and get list of scopes jsons.\n   *\n   * @param baseUrl - YOUR_BASE_URL\n   */\n  baseUrl: string;\n  sslConfiguredAgent?: Agent;\n}\nexport interface IGetSwaggerDefenitions {\n  requests: string[];\n  sslConfiguredAgent?: Agent;\n}\n\nexport interface ISwaggerRootHtml {\n  urls: URL[];\n  deepLinking: boolean;\n  persistAuthorization: boolean;\n  displayOperationId: boolean;\n  defaultModelsExpandDepth: number;\n  defaultModelExpandDepth: number;\n  defaultModelRendering: string;\n  displayRequestDuration: boolean;\n  docExpansion: string;\n  showExtensions: boolean;\n  showCommonExtensions: boolean;\n  supportedSubmitMethods: string[];\n}\n\nexport interface URL {\n  url: string;\n  name: string;\n}\nexport type fileTypes = 'mts' | 'ts' | 'd.ts' | 'md' | 'tsx';\nexport enum fileTypesEnum {\n  enums = 'enums',\n  types = 'types',\n  client = 'client',\n  api = 'api',\n  hook = 'hook',\n}\nexport interface IConfig {\n  baseUrl: string;\n  outDir: string;\n  archive?: boolean;\n  prettier?: Options;\n  resourcePick?: string;\n  filter?: RegExp;\n  singleJson?: boolean;\n  hook?: 'SWR' | 'ReactQuery' | 'NG';\n  fileTypes?: {[key in fileTypesEnum]: fileTypes};\n}\n\nexport interface ISaveFile {\n  fileName: string;\n  location: string;\n  data: unknown;\n  extention?: string;\n  beautify?: boolean;\n  comment?: string;\n}\nexport interface ISaveBatch {\n  files: {name: string; data: string; extention?: string; comment?: string}[];\n  location: string;\n  beautify?: boolean;\n  extention?: string;\n}\nexport type IOpenApiComponent =\n  | OpenAPIV3.ReferenceObject\n  | OpenAPIV3.SchemaObject;\nexport type ComponentSchema =\n  | {\n      objectName: string;\n      objectSchema: IOpenApiComponent;\n    }[]\n  | undefined;\n\nexport interface ICreateComponentSchemas {}\n\nexport function isReference(\n  schemaObject: IOpenApiComponent\n): schemaObject is OpenAPIV3.ReferenceObject {\n  return (schemaObject as OpenAPIV3.ReferenceObject).$ref !== undefined;\n}\n\nexport function isArraySchemaObject(\n  schemaObject: OpenAPIV3.ArraySchemaObject | OpenAPIV3.NonArraySchemaObject\n): schemaObject is OpenAPIV3.ArraySchemaObject {\n  return (schemaObject as OpenAPIV3.ArraySchemaObject).items !== undefined;\n}\n\nexport interface Spins {\n  id?: string;\n  spinner: Ora;\n}\n\nexport interface IRecursiveArraySchema {\n  /*\n  *\n  * @example:  properties?: {\n            [name: string]: ReferenceObject | SchemaObject;\n        };\n  */\n  component: OpenAPIV3.SchemaObject;\n  name: string;\n}\nexport interface IRecursiveComponentSchema {\n  /*\n  *\n  * @example:  properties?: {\n            [name: string]: ReferenceObject | SchemaObject;\n        };\n  */\n  component?: IOpenApiComponent;\n  name: string;\n}\n\nexport function isReferenceOrParameter(\n  object: OpenAPIV3.ParameterObject | OpenAPIV3.ReferenceObject\n): object is OpenAPIV3.ReferenceObject {\n  return (object as OpenAPIV3.ReferenceObject).$ref !== undefined;\n}\n\nexport interface ICreateParameter {\n  parameters?: (OpenAPIV3.ReferenceObject | OpenAPIV3.ParameterObject)[];\n  pathName: string;\n  methodType: string;\n}\n\nexport function isReferenceOrRequestBody(\n  object: OpenAPIV3.RequestBodyObject | OpenAPIV3.ReferenceObject\n): object is OpenAPIV3.ReferenceObject {\n  return (object as OpenAPIV3.ReferenceObject).$ref !== undefined;\n}\nexport function isReferenceOrResponse(\n  object: OpenAPIV3.ResponseObject | OpenAPIV3.ReferenceObject\n): object is OpenAPIV3.ReferenceObject {\n  return (object as OpenAPIV3.ReferenceObject).$ref !== undefined;\n}\n\nexport interface ICreateRequestBody {\n  requestBody?: OpenAPIV3.ReferenceObject | OpenAPIV3.RequestBodyObject;\n  pathName: string;\n  methodType: string;\n}\n\nexport interface ICreateResponse {\n  response: OpenAPIV3.ReferenceObject | OpenAPIV3.ResponseObject;\n  pathName: string;\n  methodType: string;\n  status: 'Ok' | 'Bad';\n}\n\nexport type ISchema = {[key: string]: IOpenApiComponent};\n\nexport type HttpMethodsUpperCase =\n  | 'Get'\n  | 'Put'\n  | 'Post'\n  | 'Delete'\n  | 'Options'\n  | 'Head'\n  | 'Patch';\n\nexport function isInterfaceEmpty(\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  object: {} | {[key: string]: any}\n): object is {} {\n  return Object.keys(object as {}).length === 0;\n}\n","import {OpenAPIV3} from 'openapi-types';\nimport {typeNameMaker} from '../func/Typescript/TypeNameMaker/index.ts';\nimport {Spec, isReference} from '../types.ts';\nconst repoTypes: string[] = [''];\nexport function capitalize(string: string) {\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport function camelize(str: string) {\n  return str\n    .replace(/(?:^\\w|[A-Z]|\\b\\w)/g, (word, index) => {\n      return index === 0 ? word.toLowerCase() : word.toUpperCase();\n    })\n    .replace(/\\s+/g, '');\n}\n\nexport const primitiveJs = (\n  key: 'string' | 'number' | 'boolean' | 'integer' | undefined\n) => {\n  switch (key) {\n    case 'integer':\n      return 'number';\n    case 'number':\n      return 'number';\n    case 'boolean':\n      return 'boolean';\n    case 'string':\n      return 'string';\n\n    default:\n      return 'unknown';\n  }\n};\n\nexport const definitionFullName = (defination: Spec) => {\n  return defination.info.title + '_' + defination.info.version;\n};\n\nexport const isDuplication = (name: string, data: string[]): boolean => {\n  const iName = typeNameMaker(name);\n  const include = repoTypes.some(item => item.includes(iName));\n  const dataInclude = data.some(item => item.includes(iName));\n  if (include && dataInclude) {\n    return true;\n  }\n  repoTypes.push(iName);\n  return false;\n};\n\nexport const isNullable = (\n  schema: OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject\n): boolean | undefined => {\n  if (!isReference(schema)) {\n    return schema.nullable;\n  }\n  return undefined;\n};\n\nexport const definationComment = (defination: Spec, data: string[][]) => {\n  data.forEach(fileData => {\n    fileData.push(\n      `\\n/* ${defination.info.title} - ${defination.info.version} */\\n`\n    );\n  });\n};\nexport const getDefinationComment = (defination: Spec) => {\n  return ` ${defination.info.title} - ${defination.info.version}`;\n};\n\nexport function statusString(status: string) {\n  const okReg = /2\\d\\d/g;\n  const badReg = /400/g;\n  if (okReg.test(status)) {\n    return 'Ok';\n  }\n\n  if (badReg) {\n    return 'Bad';\n  }\n\n  return;\n}\n\nexport const pathSplit = (path: string) => {\n  const reg = /\\/{\\w*}/g;\n  const regBracketsParams = /{(.*?)}/g;\n  const refinePath = path.replace(reg, '');\n\n  const bracketsParams = path\n    .match(regBracketsParams)\n    ?.map(params => {\n      const name = params.replace(/{|}/g, '');\n      return 'By' + capitalize(name);\n    })\n    .join('');\n\n  const pathScope = refinePath.split('/') as string[];\n  const definationName = pathScope[1] as string;\n  const scopeName = pathScope[3] as string;\n  const itemName =\n    (((pathScope[pathScope.length - 1] as string) +\n      capitalize(pathScope[pathScope.length - 2])) as string) +\n    (bracketsParams || '');\n\n  return {pathScope, definationName, scopeName, itemName};\n};\n","export function interfaceMaker(\n  InterfaceName: string,\n  core: string,\n  extend?: string\n) {\n  if (extend)\n    return (\n      'interface ' +\n      InterfaceName +\n      (extend ? ' extends ' + extend : '') +\n      ' {' +\n      core +\n      '}'\n    );\n  return 'interface ' + InterfaceName + '{' + core + '}';\n}\n","import {nameStringify} from '../TypeNameMaker/index.ts';\n\nexport function peer(\n  name: string,\n  type: string,\n  nullable?: boolean,\n  isArray?: boolean\n) {\n  return (\n    nameStringify(name) +\n    (nullable ? '?:' : ':') +\n    type +\n    (isArray ? '[];' : ';')\n  );\n}\nexport function equal(name: string, type: string) {\n  return name + '=' + nameStringify(type) + ',';\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEO,SAAS,cAAc,MAAc,QAAQ,OAAO;AACzD,SAAO,MAAM,UAAU,IAAI,IAAI;AACjC;AAWO,SAAS,WAAW,MAAc;AACvC,QAAM,MAAM;AAEZ,SAAO,KAAK,SAAS,EAAE,QAAQ,KAAK,EAAE;AACxC;AAOO,SAAS,cAAc,MAAc;AAC1C,SAAO,MAAM,OAAO;AACtB;AAEO,SAAS,UAAU,MAAc;AACtC,SAAO,WAAW,SAAS,WAAW,IAAI,CAAC,CAAC;AAC9C;;;ACqDO,SAAS,YACd,cAC2C;AAC3C,SAAQ,aAA2C,SAAS;AAC9D;AAEO,SAAS,oBACd,cAC6C;AAC7C,SAAQ,aAA6C,UAAU;AACjE;;;AC3FO,SAAS,WAAW,QAAgB;AACzC,SAAO,OAAO,OAAO,CAAC,EAAE,YAAY,IAAI,OAAO,MAAM,CAAC;AACxD;AAEO,SAAS,SAAS,KAAa;AACpC,SAAO,IACJ,QAAQ,uBAAuB,CAAC,MAAM,UAAU;AAC/C,WAAO,UAAU,IAAI,KAAK,YAAY,IAAI,KAAK,YAAY;AAAA,EAC7D,CAAC,EACA,QAAQ,QAAQ,EAAE;AACvB;AAmCO,IAAM,aAAa,CACxB,WACwB;AACxB,MAAI,CAAC,YAAY,MAAM,GAAG;AACxB,WAAO,OAAO;AAAA,EAChB;AACA,SAAO;AACT;;;ACxDO,SAAS,eACd,eACA,MACA,QACA;AACA,MAAI;AACF,WACE,eACA,iBACC,SAAS,cAAc,SAAS,MACjC,OACA,OACA;AAEJ,SAAO,eAAe,gBAAgB,MAAM,OAAO;AACrD;;;ACbO,SAAS,KACd,MACA,MACA,UACA,SACA;AACA,SACE,cAAc,IAAI,KACjB,WAAW,OAAO,OACnB,QACC,UAAU,QAAQ;AAEvB;;;ALFO,IAAM,qBAAqB,CAChC,YACA,SACG;AACH,MAAI,CAAC,YAAY;AACf;AAAA,EACF;AACA,QAAM,mBAAmB,cAAc,IAAI;AAC3C,QAAM,oBAAoB,WACvB;AAAA,IAAI,UACH;AAAA,MACE,KAAK;AAAA,MACL,cAAc,OAAO,KAAK,aAAa,YAAY,KAAK,YAAY,CAAC;AAAA,MACrE,WAAW,KAAK,YAAY;AAAA,MAC5B,CAAC,YAAY,KAAK,YAAY,KAC5B,oBAAoB,KAAK,YAAY;AAAA,IACzC;AAAA,EACF,EACC,KAAK,EAAE;AAEV,QAAM,oBAAoB,eAAe,kBAAkB,iBAAiB;AAC5E,SAAO;AACT;AAEO,IAAM,cAAc,CAAC,WAA8B;AApC1D;AAqCE,MAAI,YAAY,MAAM,GAAG;AACvB,WAAO;AAAA,EACT;AAEA,OAAI,YAAO,SAAP,mBAAa,QAAQ;AACvB,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,SAAS,SAAS;AAC3B,UAAM,YAAY,YAAY,OAAO,KAAK;AAC1C,WAAO;AAAA,EACT;AAEA,SAAO;AACT;","names":[]}