{"version":3,"sources":["../../../src/scripts/GetDefinationsAndSave/index.ts","../../../src/config/index.ts","../../../src/func/Save/save.ts","../../../src/ssl/get.ts","../../../src/utils/axios/index.ts"],"sourcesContent":["import {configStore} from '../../config/index.ts';\nimport {saveBatch} from '../../func/Save/save.ts';\nimport {getFromSwaggerRootHtml, getSwaggerSchemaJsons} from '../../ssl/get.ts';\nimport {} from '../../config/index.ts';\nimport {URL} from '../../types.ts';\n\nexport async function getDefinationsAndSave() {\n  let promisses: string[] = [];\n  function regFilter(item: URL): URL | null {\n    if (!configStore?.filter) {\n      return item;\n    }\n    const res = configStore?.filter?.test(item.url) ? null : item;\n    return res;\n  }\n  if (!configStore?.singleJson) {\n    const Swaggerlist = await getFromSwaggerRootHtml({\n      baseUrl: configStore?.baseUrl + '/swagger/index.html',\n    });\n\n    promisses = Swaggerlist.urls\n      .filter(item => regFilter(item))\n      .map(item => {\n        return configStore?.baseUrl + item.url;\n      });\n  } else {\n    promisses = [configStore?.baseUrl];\n  }\n\n  const jsonsSchemas = await getSwaggerSchemaJsons({requests: promisses});\n\n  const fileTosave = jsonsSchemas.map(data => ({\n    data: JSON.stringify(data),\n    name: data.info.title + '.' + data.info.version,\n  }));\n  configStore?.archive &&\n    (await saveBatch({\n      location: 'archive/',\n      beautify: false,\n      extention: '.json',\n      files: fileTosave,\n    }));\n\n  return jsonsSchemas;\n}\n","import chalk from 'chalk';\nimport ora from 'ora';\nimport {cosmiconfig} from 'cosmiconfig';\nimport {IConfig} from '../types.ts';\nimport {ConfigStore} from './store/store.ts';\nconst spinner = ora('get hookgenrc config file');\nconst explorer = () => cosmiconfig('hookgenrc');\n// eslint-disable-next-line prefer-const\nexport let configStore: ConfigStore | undefined = undefined;\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n//@ts-ignore\nexport async function getConfig(): Promise<IConfig | undefined> {\n  spinner.start();\n  try {\n    const configFile = await explorer().load('./hookgenrc.json');\n    if (configFile?.isEmpty) {\n      spinner.warn();\n      console.warn(chalk.yellow(' └ codegen file is empty!'));\n      return Promise.resolve(undefined);\n    } else {\n      spinner.succeed();\n      configStore = new ConfigStore(configFile?.config as IConfig);\n      return configFile?.config as IConfig;\n    }\n  } catch (error) {\n    spinner.fail();\n    console.error(\n      chalk.bgRedBright(error ? error : ' └ Error get config file')\n    );\n    throw new Error(\n      chalk.bgRedBright(error ? error : ' └ Error get config file')\n    );\n  }\n}\n","import {format} from 'prettier';\nimport fs from 'fs';\nimport {configStore} from '../../config/index.ts';\nimport {ISaveBatch, ISaveFile} from '../../types.ts';\nimport ora from 'ora';\nimport chalk from 'chalk';\nimport makeDir from 'make-dir';\n\nconst writeFs = async ({\n  data,\n  fileName,\n  location,\n}: ISaveFile): Promise<fs.WriteStream> => {\n  // eslint-disable-next-line no-async-promise-executor\n  return new Promise(async (resolve, reject) => {\n    const dir = await makeDir(location);\n    if (dir) {\n      const file = fs\n        .createWriteStream(location + '/' + fileName)\n        .once('open', () => {\n          file.write(data);\n          file.end();\n        })\n        .once('error', error => {\n          reject(error);\n        })\n        .once('finish', () => {\n          resolve(file);\n        });\n    }\n  });\n};\n\nconst getPrettierFileData = async (\n  data: unknown,\n  beautify = true\n): Promise<string> => {\n  if (beautify) {\n    const beauty = await format(`${data}`, configStore?.prettier);\n    return `${beauty}`;\n  }\n  return `${data}`;\n};\n\nexport async function save({\n  fileName,\n  data,\n  location,\n  beautify,\n  extention,\n  comment,\n}: ISaveFile) {\n  if (data) {\n    const spinner = ora(\n      chalk.gray(' ├ Saving :\"' + fileName + '\" in :\"' + location + '\"')\n    );\n    try {\n      const fileData = await getPrettierFileData(data, beautify);\n      const dataStr = comment ? `\\n /* ${comment} */\\n` + fileData : fileData;\n      await writeFs({\n        data: dataStr,\n        fileName: fileName + extention,\n        location: configStore?.outDir + '/' + location,\n      });\n      spinner.succeed();\n    } catch (error) {\n      spinner.fail();\n      console.error(chalk.redBright(' └ ' + error));\n    }\n  }\n}\n\nexport function saveBatch({files, location, beautify, extention}: ISaveBatch) {\n  const promisses = files.map(file => {\n    if (file.data.length) {\n      return save({\n        data: file.data,\n        fileName: file.name,\n        beautify,\n        location,\n        extention,\n        comment: file.comment,\n      });\n    } else {\n      return null;\n      // console.warn(\n      //   chalk.green(\n      //     ` └ ${file.name} in ${location} not saved duo to empty string! `\n      //   )\n      // );\n    }\n  });\n  return Promise.all(promisses);\n}\n","import {\n  IGetFromSwaggerRootHtml,\n  IGetSwaggerDefenitions,\n  ISwaggerRootHtml,\n  Spec,\n} from '../types.ts';\nimport ora from 'ora';\nimport chalk from 'chalk';\nimport Axios from '../utils/axios/index.ts';\n\nexport async function getFromSwaggerRootHtml({\n  baseUrl,\n  sslConfiguredAgent,\n}: IGetFromSwaggerRootHtml): Promise<ISwaggerRootHtml> {\n  const info = ora('get Swagger defination lists').info().start();\n\n  const {data} = await Axios.request<string>({\n    url: baseUrl,\n    method: 'get',\n    headers: {\n      'content-type': 'application/json',\n    },\n    httpsAgent: sslConfiguredAgent,\n  });\n\n  try {\n    const regex = /\"urls\":\\[.*\\]/g;\n    const listRegExpMatchArray = data.match(regex);\n    const result = '{' + listRegExpMatchArray + '}';\n    info.text = '└ get Swagger defination lists';\n    info.succeed();\n    return JSON.parse(result);\n  } catch (error) {\n    info.fail();\n    info.text = '└ get Swagger defination lists';\n    throw new Error('can not done \"get Swagger defination lists\"! ');\n  }\n}\n\nexport async function getSwaggerSchemaJsons({\n  requests,\n  sslConfiguredAgent,\n}: IGetSwaggerDefenitions) {\n  const REQ_Header = {\n    headers: {\n      'content-type': 'application/json',\n    },\n    httpsAgent: sslConfiguredAgent,\n  };\n\n  const spinner = ora('get Swagger definations Schemas').info();\n  spinner.start();\n  try {\n    const responses = await Axios.all<Spec>(\n      requests.map(endpoint =>\n        Axios.get(endpoint, REQ_Header)\n          .then(res => {\n            if (res.data.paths) {\n              return res.data;\n            } else {\n              console.warn(\n                chalk.yellow(\n                  ' └ Warning: checking endpoint:' +\n                    endpoint +\n                    ' !! is it empty?'\n                )\n              );\n              return res.data;\n            }\n          })\n          .catch(() => {\n            throw new Error('error geting json with address:' + endpoint);\n          })\n      )\n    );\n    if (responses) {\n      spinner.text = '└ get Swagger definations Schemas';\n      spinner.succeed();\n      return responses;\n    } else {\n      throw new Error('no responses');\n    }\n  } catch (error) {\n    spinner.text = '└ get Swagger definations Schemas';\n    spinner.fail();\n    throw new Error(\n      chalk.bgRedBright(\n        error ? error : 'can not done \"get Swagger definations Schemas\"! '\n      )\n    );\n  }\n}\n","import axios, {\n  AxiosError,\n  AxiosResponse,\n  InternalAxiosRequestConfig,\n} from 'axios';\nimport ora from 'ora';\nimport chalk from 'chalk';\nimport {Spec, Spins} from '../../types.ts';\n\naxios.defaults.paramsSerializer = {\n  indexes: null,\n};\n\nconst spins: Spins[] = [];\n\n/** configration for api request like header authorization  */\nconst configAxiosRequest = (\n  config: InternalAxiosRequestConfig<unknown>\n): InternalAxiosRequestConfig<unknown> => {\n  const spinner = ora('axios get');\n  spinner.text = '├ axios get :' + config.url;\n  spinner.start();\n  spins.push({id: config.url, spinner: spinner});\n  return config;\n};\n\n/** this situation happen when request does not even send to network or internet */\nconst onAxiosRequestError = (error: AxiosError): Promise<AxiosError> => {\n  const spinner = spins.find(\n    spinObj => spinObj.id === error?.config?.url\n  )?.spinner;\n  spinner?.fail();\n  return Promise.reject(error);\n};\n\n/** handle Response of api response  */\nconst onAxiosResponse = (response: AxiosResponse<Spec>): AxiosResponse => {\n  const spinner = spins.find(\n    spinObj => spinObj.id === response.config.url\n  )?.spinner;\n  spinner?.succeed();\n  return response;\n};\n\n/** handle api response errors */\nconst onAxiosResponseError = (error: AxiosError): Promise<AxiosError> => {\n  try {\n    const spinner = spins.find(\n      spinObj => spinObj.id === error?.config?.url\n    )?.spinner;\n    spinner?.fail();\n    if (error.response) {\n      console.warn(\n        chalk.redBright(\n          ' └ Error axios get with code :' + error.response.status\n        )\n      );\n      /** this situation happen when request return a response with error object that contain a status code */\n      // responseHandler(error.response.status)(error);\n    } else if (error.request) {\n      /** this situation happen when request does not return means that request fail duo to network error or sth like that */\n      console.warn(chalk.redBright(' └ check your network Connection'));\n    } else {\n      console.error(chalk.redBright(' └ Error axios get ', error.message));\n    }\n    throw new Error(error.message);\n  } catch (error) {\n    console.error(chalk.redBright(' └ Error axios get:', error));\n    return Promise.reject(error);\n  }\n};\n\n/** handle axios response for errors and etc.. */\naxios.interceptors.response.use(onAxiosResponse, onAxiosResponseError);\n/** set axios request's header configration like autorization */\naxios.interceptors.request.use(configAxiosRequest, onAxiosRequestError);\n\nexport default axios;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAAkB;AAClB,iBAAgB;AAChB,yBAA0B;AAG1B,IAAM,cAAU,WAAAA,SAAI,2BAA2B;AAGxC,IAAI,cAAuC;;;ACRlD,sBAAqB;AACrB,gBAAe;AAGf,IAAAC,cAAgB;AAChB,IAAAC,gBAAkB;AAClB,sBAAoB;AAEpB,IAAM,UAAU,CAAO,OAImB,iBAJnB,KAImB,WAJnB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AACF,GAA0C;AAExC,SAAO,IAAI,QAAQ,CAAO,SAAS,WAAW;AAC5C,UAAM,MAAM,UAAM,gBAAAC,SAAQ,QAAQ;AAClC,QAAI,KAAK;AACP,YAAM,OAAO,UAAAC,QACV,kBAAkB,WAAW,MAAM,QAAQ,EAC3C,KAAK,QAAQ,MAAM;AAClB,aAAK,MAAM,IAAI;AACf,aAAK,IAAI;AAAA,MACX,CAAC,EACA,KAAK,SAAS,WAAS;AACtB,eAAO,KAAK;AAAA,MACd,CAAC,EACA,KAAK,UAAU,MAAM;AACpB,gBAAQ,IAAI;AAAA,MACd,CAAC;AAAA,IACL;AAAA,EACF,EAAC;AACH;AAEA,IAAM,sBAAsB,CAC1B,MACA,WAAW,SACS;AApCtB;AAqCE,MAAI,UAAU;AACZ,UAAM,SAAS,UAAM,wBAAO,GAAG,IAAI,KAAI,wCAAa,QAAQ;AAC5D,WAAO,GAAG,MAAM;AAAA,EAClB;AACA,SAAO,GAAG,IAAI;AAChB;AAEA,SAAsB,KAAK,IAOb;AAAA,6CAPa;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAc;AAnDd;AAoDE,QAAI,MAAM;AACR,YAAMC,eAAU,YAAAC;AAAA,QACd,cAAAC,QAAM,KAAK,sBAAiB,WAAW,YAAY,WAAW,GAAG;AAAA,MACnE;AACA,UAAI;AACF,cAAM,WAAW,MAAM,oBAAoB,MAAM,QAAQ;AACzD,cAAM,UAAU,UAAU;AAAA,MAAS,OAAO;AAAA,IAAU,WAAW;AAC/D,cAAM,QAAQ;AAAA,UACZ,MAAM;AAAA,UACN,UAAU,WAAW;AAAA,UACrB,YAAU,wCAAa,UAAS,MAAM;AAAA,QACxC,CAAC;AACD,QAAAF,SAAQ,QAAQ;AAAA,MAClB,SAAS,OAAO;AACd,QAAAA,SAAQ,KAAK;AACb,gBAAQ,MAAM,cAAAE,QAAM,UAAU,aAAQ,KAAK,CAAC;AAAA,MAC9C;AAAA,IACF;AAAA,EACF;AAAA;AAEO,SAAS,UAAU,EAAC,OAAO,UAAU,UAAU,UAAS,GAAe;AAC5E,QAAM,YAAY,MAAM,IAAI,UAAQ;AAClC,QAAI,KAAK,KAAK,QAAQ;AACpB,aAAO,KAAK;AAAA,QACV,MAAM,KAAK;AAAA,QACX,UAAU,KAAK;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAS,KAAK;AAAA,MAChB,CAAC;AAAA,IACH,OAAO;AACL,aAAO;AAAA,IAMT;AAAA,EACF,CAAC;AACD,SAAO,QAAQ,IAAI,SAAS;AAC9B;;;ACvFA,IAAAC,cAAgB;AAChB,IAAAC,gBAAkB;;;ACPlB,mBAIO;AACP,IAAAC,cAAgB;AAChB,IAAAC,gBAAkB;AAGlB,aAAAC,QAAM,SAAS,mBAAmB;AAAA,EAChC,SAAS;AACX;AAEA,IAAM,QAAiB,CAAC;AAGxB,IAAM,qBAAqB,CACzB,WACwC;AACxC,QAAMC,eAAU,YAAAC,SAAI,WAAW;AAC/B,EAAAD,SAAQ,OAAO,uBAAkB,OAAO;AACxC,EAAAA,SAAQ,MAAM;AACd,QAAM,KAAK,EAAC,IAAI,OAAO,KAAK,SAASA,SAAO,CAAC;AAC7C,SAAO;AACT;AAGA,IAAM,sBAAsB,CAAC,UAA2C;AA3BxE;AA4BE,QAAMA,YAAU,WAAM;AAAA,IACpB,aAAQ;AA7BZ,UAAAE;AA6Be,qBAAQ,SAAOA,MAAA,+BAAO,WAAP,gBAAAA,IAAe;AAAA;AAAA,EAC3C,MAFgB,mBAEb;AACH,EAAAF,YAAA,gBAAAA,SAAS;AACT,SAAO,QAAQ,OAAO,KAAK;AAC7B;AAGA,IAAM,kBAAkB,CAAC,aAAiD;AApC1E;AAqCE,QAAMA,YAAU,WAAM;AAAA,IACpB,aAAW,QAAQ,OAAO,SAAS,OAAO;AAAA,EAC5C,MAFgB,mBAEb;AACH,EAAAA,YAAA,gBAAAA,SAAS;AACT,SAAO;AACT;AAGA,IAAM,uBAAuB,CAAC,UAA2C;AA7CzE;AA8CE,MAAI;AACF,UAAMA,YAAU,WAAM;AAAA,MACpB,aAAQ;AAhDd,YAAAE;AAgDiB,uBAAQ,SAAOA,MAAA,+BAAO,WAAP,gBAAAA,IAAe;AAAA;AAAA,IAC3C,MAFgB,mBAEb;AACH,IAAAF,YAAA,gBAAAA,SAAS;AACT,QAAI,MAAM,UAAU;AAClB,cAAQ;AAAA,QACN,cAAAG,QAAM;AAAA,UACJ,wCAAmC,MAAM,SAAS;AAAA,QACpD;AAAA,MACF;AAAA,IAGF,WAAW,MAAM,SAAS;AAExB,cAAQ,KAAK,cAAAA,QAAM,UAAU,uCAAkC,CAAC;AAAA,IAClE,OAAO;AACL,cAAQ,MAAM,cAAAA,QAAM,UAAU,4BAAuB,MAAM,OAAO,CAAC;AAAA,IACrE;AACA,UAAM,IAAI,MAAM,MAAM,OAAO;AAAA,EAC/B,SAASC,QAAO;AACd,YAAQ,MAAM,cAAAD,QAAM,UAAU,4BAAuBC,MAAK,CAAC;AAC3D,WAAO,QAAQ,OAAOA,MAAK;AAAA,EAC7B;AACF;AAGA,aAAAL,QAAM,aAAa,SAAS,IAAI,iBAAiB,oBAAoB;AAErE,aAAAA,QAAM,aAAa,QAAQ,IAAI,oBAAoB,mBAAmB;AAEtE,IAAO,gBAAQ,aAAAA;;;ADnEf,SAAsB,uBAAuB,IAGU;AAAA,6CAHV;AAAA,IAC3C;AAAA,IACA;AAAA,EACF,GAAuD;AACrD,UAAM,WAAO,YAAAM,SAAI,8BAA8B,EAAE,KAAK,EAAE,MAAM;AAE9D,UAAM,EAAC,KAAI,IAAI,MAAM,cAAM,QAAgB;AAAA,MACzC,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,MAClB;AAAA,MACA,YAAY;AAAA,IACd,CAAC;AAED,QAAI;AACF,YAAM,QAAQ;AACd,YAAM,uBAAuB,KAAK,MAAM,KAAK;AAC7C,YAAM,SAAS,MAAM,uBAAuB;AAC5C,WAAK,OAAO;AACZ,WAAK,QAAQ;AACb,aAAO,KAAK,MAAM,MAAM;AAAA,IAC1B,SAAS,OAAO;AACd,WAAK,KAAK;AACV,WAAK,OAAO;AACZ,YAAM,IAAI,MAAM,+CAA+C;AAAA,IACjE;AAAA,EACF;AAAA;AAEA,SAAsB,sBAAsB,IAGjB;AAAA,6CAHiB;AAAA,IAC1C;AAAA,IACA;AAAA,EACF,GAA2B;AACzB,UAAM,aAAa;AAAA,MACjB,SAAS;AAAA,QACP,gBAAgB;AAAA,MAClB;AAAA,MACA,YAAY;AAAA,IACd;AAEA,UAAMC,eAAU,YAAAD,SAAI,iCAAiC,EAAE,KAAK;AAC5D,IAAAC,SAAQ,MAAM;AACd,QAAI;AACF,YAAM,YAAY,MAAM,cAAM;AAAA,QAC5B,SAAS;AAAA,UAAI,cACX,cAAM,IAAI,UAAU,UAAU,EAC3B,KAAK,SAAO;AACX,gBAAI,IAAI,KAAK,OAAO;AAClB,qBAAO,IAAI;AAAA,YACb,OAAO;AACL,sBAAQ;AAAA,gBACN,cAAAC,QAAM;AAAA,kBACJ,wCACE,WACA;AAAA,gBACJ;AAAA,cACF;AACA,qBAAO,IAAI;AAAA,YACb;AAAA,UACF,CAAC,EACA,MAAM,MAAM;AACX,kBAAM,IAAI,MAAM,oCAAoC,QAAQ;AAAA,UAC9D,CAAC;AAAA,QACL;AAAA,MACF;AACA,UAAI,WAAW;AACb,QAAAD,SAAQ,OAAO;AACf,QAAAA,SAAQ,QAAQ;AAChB,eAAO;AAAA,MACT,OAAO;AACL,cAAM,IAAI,MAAM,cAAc;AAAA,MAChC;AAAA,IACF,SAAS,OAAO;AACd,MAAAA,SAAQ,OAAO;AACf,MAAAA,SAAQ,KAAK;AACb,YAAM,IAAI;AAAA,QACR,cAAAC,QAAM;AAAA,UACJ,QAAQ,QAAQ;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;;;AHrFA,SAAsB,wBAAwB;AAAA;AAN9C;AAOE,QAAI,YAAsB,CAAC;AAC3B,aAAS,UAAU,MAAuB;AAR5C,UAAAC,KAAAC,KAAAC;AASI,UAAI,GAACF,MAAA,gCAAAA,IAAa,SAAQ;AACxB,eAAO;AAAA,MACT;AACA,YAAM,QAAME,OAAAD,MAAA,gCAAAA,IAAa,WAAb,gBAAAC,IAAqB,KAAK,KAAK,QAAO,OAAO;AACzD,aAAO;AAAA,IACT;AACA,QAAI,GAAC,wCAAa,aAAY;AAC5B,YAAM,cAAc,MAAM,uBAAuB;AAAA,QAC/C,WAAS,wCAAa,WAAU;AAAA,MAClC,CAAC;AAED,kBAAY,YAAY,KACrB,OAAO,UAAQ,UAAU,IAAI,CAAC,EAC9B,IAAI,UAAQ;AAtBnB,YAAAF;AAuBQ,iBAAOA,MAAA,gCAAAA,IAAa,WAAU,KAAK;AAAA,MACrC,CAAC;AAAA,IACL,OAAO;AACL,kBAAY,EAAC,wCAAa,OAAO;AAAA,IACnC;AAEA,UAAM,eAAe,MAAM,sBAAsB,EAAC,UAAU,UAAS,CAAC;AAEtE,UAAM,aAAa,aAAa,IAAI,WAAS;AAAA,MAC3C,MAAM,KAAK,UAAU,IAAI;AAAA,MACzB,MAAM,KAAK,KAAK,QAAQ,MAAM,KAAK,KAAK;AAAA,IAC1C,EAAE;AACF,8CAAa,aACV,MAAM,UAAU;AAAA,MACf,UAAU;AAAA,MACV,UAAU;AAAA,MACV,WAAW;AAAA,MACX,OAAO;AAAA,IACT,CAAC;AAEH,WAAO;AAAA,EACT;AAAA;","names":["ora","import_ora","import_chalk","makeDir","fs","spinner","ora","chalk","import_ora","import_chalk","import_ora","import_chalk","axios","spinner","ora","_a","chalk","error","ora","spinner","chalk","_a","_b","_c"]}