{"version":3,"sources":["../../../src/scripts/CreateHooks/ReactQueryTemplate.ts","../../../src/func/Typescript/TypeNameMaker/index.ts","../../../src/helper/index.ts","../../../src/config/index.ts"],"sourcesContent":["import {pathSplit} from '../../helper/index.ts';\nimport {camelCase} from '../../func/Typescript/TypeNameMaker/index.ts';\nimport {HttpMethodsUpperCase} from '../../types.ts';\nimport {IHooksTemplate} from './HooksTemplate.ts';\nimport {OpenAPIV3} from 'openapi-types';\nimport {configStore} from '../../config/index.ts';\nconst getResourcePicked = (value: string) => {\n  if (configStore?.resourcePick) {\n    return `Pick<${value},'${configStore?.resourcePick}'>['${configStore?.resourcePick}']`;\n  } else {\n    return value;\n  }\n};\nexport function ReactQueryTemplate({\n  method,\n  path,\n  media: {description, deprecated, tags, summary, parameters},\n}: IHooksTemplate) {\n  const {definationName, scopeName, itemName} = pathSplit(path);\n  if (!method) {\n    return '';\n  }\n\n  const isPaging = parameters?.some(param =>\n    (param as OpenAPIV3.ParameterObject).name.includes('PageNumber')\n  );\n  const name = camelCase(itemName);\n  const methodName = camelCase(method) as HttpMethodsUpperCase;\n  const tagName = camelCase(scopeName || tags?.[0] || '');\n\n  const typeRoot = `${camelCase(definationName)}.${\n    tagName ? tagName + '.' : ''\n  }${methodName}`;\n  const entityName = camelCase(method) + name;\n  const requestType = `${typeRoot}.Request.`;\n  const responseType = `${typeRoot}.Response.`;\n\n  if (methodName === 'Get') {\n    const query = getMethod(\n      deprecated,\n      description,\n      summary,\n      tags,\n      name,\n      methodName,\n      path,\n      entityName,\n      responseType,\n      requestType,\n      tagName\n    );\n    const infinit = isPaging\n      ? infiniteMethod(\n          deprecated,\n          description,\n          summary,\n          tags,\n          name,\n          methodName,\n          path,\n          entityName,\n          responseType,\n          requestType,\n          tagName\n        )\n      : '';\n    return query + infinit;\n  } else\n    return `\\n/**\n  ${deprecated ? '* @deprecated' : '* '}\n   * ${description ? description : 'No description'}\n   * @summary  ${summary}\n   * @tags ${tags}\n   * @name ${name}\n   * @request ${methodName}:${path}\n   \n    ${deprecated ? '' : '*/ '}\n use${entityName} :(\n\toptions?: Omit<UseMutationOptions<${getResourcePicked(\n    `${responseType}${name}`\n  )}, unknown,${requestType}${name} | undefined, unknown>, \"mutationFn\">,\n  axiosOptions?: AxiosOpt,\n) => {\n\treturn useMutation((args)=>this.Api._${\n    tagName ? tagName + '.' : ''\n  }${entityName}(args,axiosOptions), options);\n} ,\n${deprecated ? '*/' : ' '}`;\n}\n\nfunction infiniteMethod(\n  deprecated: boolean | undefined,\n  description: string | undefined,\n  summary: string | undefined,\n  tags: string[] | undefined,\n  name: string,\n  methodName: string,\n  path: string,\n  entityName: string,\n  responseType: string,\n  requestType: string,\n  tagName: string\n) {\n  return `\n    \\n/**\n  ${deprecated ? '* @deprecated' : '* '}\n   * ${description ? description : 'No description'}\n   * @summary  ${summary}\n   * @tags ${tags}\n   * @name ${name}\n   * @request ${methodName}:${path}\n   ${deprecated ? '' : '*/ '}\n   use${entityName}Infinit:<T = ${getResourcePicked(`${responseType}${name}`)}>(\n\targs: ${requestType}${name},\n\toptions?:\n\t\t| Omit<\n\t\t\t\tUseInfiniteQueryOptions<${getResourcePicked(\n          `${responseType}${name}`\n        )}, unknown, T, ${getResourcePicked(\n          `${responseType}${name}`\n        )}, (string | ${requestType}${name})[]>,\n\t\t\t\t\"queryFn\" | \"queryKey\"\n\t\t  >\n\t\t| undefined,\n  axiosOptions?: AxiosOpt,\n) => {\n\treturn useInfiniteQuery(['${\n    tagName ? tagName + '.' : ''\n  }${entityName}', args], ({ pageParam = 1 }) => this.Api._${\n    tagName ? tagName + '.' : ''\n  }${entityName}({ ...args, \n   params:{\n              ...args.params,\n              PageNumber: pageParam,\n            }\n  },  axiosOptions), options);\n},\n${deprecated ? '*/' : ' '}`;\n}\n\nfunction getMethod(\n  deprecated: boolean | undefined,\n  description: string | undefined,\n  summary: string | undefined,\n  tags: string[] | undefined,\n  name: string,\n  methodName: string,\n  path: string,\n  entityName: string,\n  responseType: string,\n  requestType: string,\n  tagName: string\n) {\n  return `\\n/**\n  ${deprecated ? '* @deprecated' : '* '}\n   * ${description ? description : 'No description'}\n   * @summary  ${summary}\n   * @tags ${tags}\n   * @name ${name}\n   * @request ${methodName}:${path}\n     ${deprecated ? '' : '*/ '}\n  use${entityName} : <T =  ${getResourcePicked(`${responseType}${name}`)}>(\n\targs:  ${requestType}${name},\n\toptions?: Omit<UseQueryOptions<${getResourcePicked(\n    `${responseType}${name}`\n  )}, unknown, T, (string |${requestType}${name})[]>, \"initialData\" | \"queryFn\" | \"queryKey\">,\n  axiosOptions?: AxiosOpt,\n) => {\n\treturn useQuery(['${\n    tagName ? tagName + '.' : ''\n  }${entityName}', args], () => this.Api._${\n    tagName ? tagName + '.' : ''\n  }${entityName}(args,axiosOptions), options);\n},\n  ${deprecated ? '*/' : ' '}`;\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 {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","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"],"mappings":"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","names":["ora"]}