{"version":3,"file":"index.cjs","names":["RootContext","result: React.ReactNode[]","Root","reactPlugin","types: string[]","names: string[]","item","key","name","acc: string[]","parsedItem"],"sources":["../src/components/App.tsx","../src/utils/createJSDoc.ts","../src/components/Const.tsx","../src/components/File.tsx","../../../node_modules/.pnpm/indent-string@5.0.0/node_modules/indent-string/index.js","../src/components/Indent.tsx","../src/components/Function.tsx","../src/components/Type.tsx","../src/composables/useApp.ts","../src/composables/useFile.ts","../src/composables/useLifecycle.tsx","../src/createReactFabric.ts","../src/utils/getFunctionParams.ts","../src/index.ts"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport type { KubbNode } from '../types.ts'\nimport { RootContext } from './Root.tsx'\n\nexport type AppContextProps<TMeta = unknown> = {\n  /**\n   * Exit (unmount)\n   */\n  readonly exit: (error?: Error) => void\n  readonly meta: TMeta\n}\n\nconst AppContext = createContext<AppContextProps | undefined>(undefined)\n\ntype Props<TMeta = unknown> = {\n  readonly children?: KubbNode\n  readonly meta: TMeta\n}\n\nexport function App<TMeta = unknown>({ meta, children }: Props<TMeta>) {\n  const { exit } = useContext(RootContext)\n\n  return <AppContext.Provider value={{ exit, meta }}>{children}</AppContext.Provider>\n}\n\nApp.Context = AppContext\nApp.displayName = 'KubbApp'\n","export function createJSDoc({ comments }: { comments: Array<string> }): string {\n  const filtered = comments.filter((c) => c.trim())\n  if (!filtered.length) {\n    return ''\n  }\n\n  return `/**\\n * ${filtered.join('\\n * ')}\\n */`\n}\n","import type { JSDoc, Key, KubbNode } from '../types.ts'\n\nimport { createJSDoc } from '../utils/createJSDoc.ts'\n\ntype Props = {\n  key?: Key\n  /**\n   * Name of the const\n   */\n  name: string\n  /**\n   * Does this type need to be exported.\n   */\n  export?: boolean\n  /**\n   * Type to make the const being typed\n   */\n  type?: string\n  /**\n   * Options for JSdocs.\n   */\n  JSDoc?: JSDoc\n  /**\n   * Use of `const` assertions\n   */\n  asConst?: boolean\n  children?: KubbNode\n}\n\nexport function Const({ name, export: canExport, type, JSDoc, asConst, children }: Props) {\n  return (\n    <>\n      {JSDoc?.comments && (\n        <>\n          {createJSDoc({ comments: JSDoc?.comments })}\n          <br />\n        </>\n      )}\n      {canExport && <>export </>}\n      const {name}{' '}\n      {type && (\n        <>\n          {':'}\n          {type}{' '}\n        </>\n      )}\n      = {children}\n      {asConst && <> as const</>}\n    </>\n  )\n}\n\nConst.displayName = 'KubbConst'\n","import type { KubbFile } from '@kubb/fabric-core/types'\nimport { createContext } from 'react'\nimport type { Key, KubbNode } from '../types.ts'\n\nexport type FileContextProps<TMeta extends object = object> = {\n  /**\n   * Name to be used to dynamicly create the baseName(based on input.path).\n   * Based on UNIX basename\n   * @link https://nodejs.org/api/path.html#pathbasenamepath-suffix\n   */\n  baseName: KubbFile.BaseName\n  /**\n   * Path will be full qualified path to a specified file.\n   */\n  path: KubbFile.Path\n  meta?: TMeta\n}\nconst FileContext = createContext<FileContextProps>({} as FileContextProps)\n\ntype BasePropsWithBaseName = {\n  /**\n   * Name to be used to dynamicly create the baseName(based on input.path).\n   * Based on UNIX basename\n   * @link https://nodejs.org/api/path.html#pathbasenamepath-suffix\n   */\n  baseName: KubbFile.BaseName\n  /**\n   * Path will be full qualified path to a specified file.\n   */\n  path: KubbFile.Path\n}\n\ntype BasePropsWithoutBaseName = {\n  baseName?: never\n  /**\n   * Path will be full qualified path to a specified file.\n   */\n  path?: KubbFile.Path\n}\n\ntype BaseProps = BasePropsWithBaseName | BasePropsWithoutBaseName\n\ntype Props<TMeta> = BaseProps & {\n  key?: Key\n  meta?: TMeta\n  banner?: string\n  footer?: string\n  children?: KubbNode\n}\n\nexport function File<TMeta extends object = object>({ children, ...rest }: Props<TMeta>) {\n  if (!rest.baseName || !rest.path) {\n    return <>{children}</>\n  }\n\n  return (\n    <kubb-file {...rest}>\n      <FileContext.Provider value={{ baseName: rest.baseName, path: rest.path, meta: rest.meta }}>{children}</FileContext.Provider>\n    </kubb-file>\n  )\n}\n\nFile.displayName = 'KubbFile'\n\ntype FileSourceProps = Omit<KubbFile.Source, 'value'> & {\n  key?: Key\n  children?: KubbNode\n}\n\nfunction FileSource({ isTypeOnly, name, isExportable, isIndexable, children }: FileSourceProps) {\n  return (\n    <kubb-source name={name} isTypeOnly={isTypeOnly} isExportable={isExportable} isIndexable={isIndexable}>\n      {children}\n    </kubb-source>\n  )\n}\n\nFileSource.displayName = 'KubbFileSource'\n\ntype FileExportProps = KubbFile.Export & { key?: Key }\n\nfunction FileExport({ name, path, isTypeOnly, asAlias }: FileExportProps) {\n  return <kubb-export name={name} path={path} isTypeOnly={isTypeOnly || false} asAlias={asAlias} />\n}\n\nFileExport.displayName = 'KubbFileExport'\n\ntype FileImportProps = KubbFile.Import & { key?: Key }\n\nfunction FileImport({ name, root, path, isTypeOnly, isNameSpace }: FileImportProps) {\n  return <kubb-import name={name} root={root} path={path} isNameSpace={isNameSpace} isTypeOnly={isTypeOnly || false} />\n}\n\nFileImport.displayName = 'KubbFileImport'\n\nFile.Export = FileExport\nFile.Import = FileImport\nFile.Source = FileSource\nFile.Context = FileContext\n","export default function indentString(string, count = 1, options = {}) {\n\tconst {\n\t\tindent = ' ',\n\t\tincludeEmptyLines = false\n\t} = options;\n\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`input\\` to be a \\`string\\`, got \\`${typeof string}\\``\n\t\t);\n\t}\n\n\tif (typeof count !== 'number') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`count\\` to be a \\`number\\`, got \\`${typeof count}\\``\n\t\t);\n\t}\n\n\tif (count < 0) {\n\t\tthrow new RangeError(\n\t\t\t`Expected \\`count\\` to be at least 0, got \\`${count}\\``\n\t\t);\n\t}\n\n\tif (typeof indent !== 'string') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`options.indent\\` to be a \\`string\\`, got \\`${typeof indent}\\``\n\t\t);\n\t}\n\n\tif (count === 0) {\n\t\treturn string;\n\t}\n\n\tconst regex = includeEmptyLines ? /^/gm : /^(?!\\s*$)/gm;\n\n\treturn string.replace(regex, indent.repeat(count));\n}\n","import dedent from 'dedent'\nimport indentString from 'indent-string'\nimport React from 'react'\n\ntype IndentProps = {\n  size?: number\n  children?: React.ReactNode\n}\n\n/**\n * Indents all children by `size` spaces.\n * Collapses consecutive <br /> tags to at most 2.\n */\nexport function Indent({ size = 2, children }: IndentProps) {\n  if (!children) return null\n\n  const childrenArray = React.Children.toArray(children)\n  const result: React.ReactNode[] = []\n\n  let prevWasBr = false\n  let brCount = 0\n\n  for (const child of childrenArray) {\n    if (React.isValidElement(child) && child.type === 'br') {\n      if (!prevWasBr || brCount < 2) {\n        result.push(child)\n        brCount++\n      }\n      prevWasBr = true\n    } else {\n      prevWasBr = false\n      brCount = 0\n      result.push(child)\n    }\n  }\n\n  return (\n    <>\n      {result.map((child) => {\n        if (typeof child === 'string') {\n          const cleaned = dedent(child)\n          return <>{indentString(cleaned, size)}</>\n        }\n        return (\n          <>\n            {' '.repeat(size)}\n            {child}\n          </>\n        )\n      })}\n    </>\n  )\n}\n","import type { JSDoc, Key, KubbNode } from '../types.ts'\nimport { createJSDoc } from '../utils/createJSDoc.ts'\nimport { Indent } from './Indent.tsx'\n\ntype Props = {\n  key?: Key\n  /**\n   * Name of the function.\n   */\n  name: string\n  /**\n   * Add default when export is being used\n   */\n  default?: boolean\n  /**\n   * Parameters/options/props that need to be used.\n   */\n  params?: string\n  /**\n   * Does this function need to be exported.\n   */\n  export?: boolean\n  /**\n   * Does the function has async/promise behaviour.\n   * This will also add `Promise<returnType>` as the returnType.\n   */\n  async?: boolean\n  /**\n   * Generics that needs to be added for TypeScript.\n   */\n  generics?: string | string[]\n\n  /**\n   * ReturnType(see async for adding Promise type).\n   */\n  returnType?: string\n  /**\n   * Options for JSdocs.\n   */\n  JSDoc?: JSDoc\n  children?: KubbNode\n}\n\nexport function Function({ name, default: isDefault, export: canExport, async, generics, params, returnType, JSDoc, children }: Props) {\n  return (\n    <>\n      {JSDoc?.comments && (\n        <>\n          {createJSDoc({ comments: JSDoc?.comments })}\n          <br />\n        </>\n      )}\n      {canExport && <>export </>}\n      {isDefault && <>default </>}\n      {async && <>async </>}\n      function {name}\n      {generics && (\n        <>\n          {'<'}\n          {Array.isArray(generics) ? generics.join(', ').trim() : generics}\n          {'>'}\n        </>\n      )}\n      ({params}){returnType && !async && <>: {returnType}</>}\n      {returnType && async && (\n        <>\n          : Promise{'<'}\n          {returnType}\n          {'>'}\n        </>\n      )}\n      {' {'}\n      <br />\n      <Indent size={2}>{children}</Indent>\n      <br />\n      {'}'}\n    </>\n  )\n}\n\nFunction.displayName = 'KubbFunction'\n\ntype ArrowFunctionProps = Props & {\n  /**\n   * Create Arrow function in one line\n   */\n  singleLine?: boolean\n}\n\nfunction ArrowFunction({ name, default: isDefault, export: canExport, async, generics, params, returnType, JSDoc, singleLine, children }: ArrowFunctionProps) {\n  return (\n    <>\n      {JSDoc?.comments && (\n        <>\n          {createJSDoc({ comments: JSDoc?.comments })}\n          <br />\n        </>\n      )}\n      {canExport && <>export </>}\n      {isDefault && <>default </>}\n      const {name} = {async && <>async </>}\n      {generics && (\n        <>\n          {'<'}\n          {Array.isArray(generics) ? generics.join(', ').trim() : generics}\n          {'>'}\n        </>\n      )}\n      ({params}){returnType && !async && <>: {returnType}</>}\n      {returnType && async && (\n        <>\n          : Promise{'<'}\n          {returnType}\n          {'>'}\n        </>\n      )}\n      {singleLine && (\n        <>\n          {' => '}\n          {children}\n          <br />\n        </>\n      )}\n      {!singleLine && (\n        <>\n          {' => {'}\n          <br />\n          <Indent size={2}>{children}</Indent>\n          <br />\n          {'}'}\n          <br />\n        </>\n      )}\n    </>\n  )\n}\n\nArrowFunction.displayName = 'KubbArrowFunction'\nFunction.Arrow = ArrowFunction\n","import type { JSDoc, Key, KubbNode } from '../types.ts'\nimport { createJSDoc } from '../utils/createJSDoc.ts'\n\ntype Props = {\n  key?: Key\n  /**\n   * Name of the type, this needs to start with a capital letter.\n   */\n  name: string\n  /**\n   * Does this type need to be exported.\n   */\n  export?: boolean\n  /**\n   * Options for JSdocs.\n   */\n  JSDoc?: JSDoc\n  children?: KubbNode\n}\n\nexport function Type({ name, export: canExport, JSDoc, children }: Props) {\n  if (name.charAt(0).toUpperCase() !== name.charAt(0)) {\n    throw new Error('Name should start with a capital letter(see TypeScript types)')\n  }\n\n  return (\n    <>\n      {JSDoc?.comments && (\n        <>\n          {createJSDoc({ comments: JSDoc?.comments })}\n          <br />\n        </>\n      )}\n      {canExport && <>export </>}\n      type {name} = {children}\n    </>\n  )\n}\n\nType.displayName = 'KubbType'\n","import { useContext } from 'react'\nimport { App, type AppContextProps } from '../components/App.tsx'\n\n/**\n * `useApp` will return the current App with plugin, pluginManager, fileManager and mode.\n */\nexport function useApp<TMeta = unknown>(): AppContextProps<TMeta> {\n  const app = useContext(App.Context)\n\n  if (!app) {\n    throw new Error('<App /> should be set')\n  }\n\n  return app as AppContextProps<TMeta>\n}\n","import { useContext } from 'react'\nimport type { FileContextProps } from '../components/File.tsx'\nimport { File } from '../components/File.tsx'\n\n/**\n * `useFile` will return the current file when <File/> is used.\n */\nexport function useFile(): FileContextProps {\n  const file = useContext(File.Context)\n\n  return file as FileContextProps\n}\n","import { useContext } from 'react'\n\nimport { Root } from '../components/Root.tsx'\n\n/**\n * `useLifecycle` will return some helpers to exit/restart the generation.\n */\nexport function useLifecycle() {\n  const { exit } = useContext(Root.Context)\n\n  return {\n    exit: () => {\n      const timeout = setTimeout(() => {\n        clearTimeout(timeout)\n\n        exit()\n      }, 0)\n    },\n  }\n}\n","import type { Fabric } from '@kubb/fabric-core'\nimport { createFabric } from '@kubb/fabric-core'\nimport type { FabricConfig, FabricMode } from '@kubb/fabric-core/types'\nimport { open } from './devtools.ts'\nimport type { Options } from './plugins/reactPlugin.ts'\nimport { reactPlugin } from './plugins/reactPlugin.ts'\n\nexport function createReactFabric(\n  config: FabricConfig<Options & { mode?: FabricMode; devtools?: boolean }> = {},\n): Fabric<Options & { mode?: FabricMode; devtools?: boolean }> {\n  const fabric = createFabric({ mode: config.mode })\n\n  if (config.devtools) {\n    open()\n  }\n\n  fabric.use(reactPlugin, {\n    stdout: config.stdout,\n    stderr: config.stderr,\n    debug: config.debug,\n    stdin: config.stdin,\n  })\n\n  return fabric\n}\n","import { orderBy } from 'natural-orderby'\n\nexport type Param = {\n  /**\n   * `object` will return the pathParams as an object.\n   *\n   * `inline` will return the pathParams as comma separated params.\n   * @default `'inline'`\n   * @private\n   */\n  mode?: 'object' | 'inline' | 'inlineSpread'\n  type?: 'string' | 'number' | (string & {})\n  optional?: boolean\n  /**\n   * @example test = \"default\"\n   */\n  default?: string\n  /**\n   * Used for no TypeScript(with mode object)\n   * @example test: \"default\"\n   */\n  value?: string\n  children?: Params\n}\n\ntype ParamItem =\n  | (Pick<Param, 'mode' | 'type' | 'value'> & {\n      optional?: true\n      default?: never\n      children?: Params\n    })\n  | (Pick<Param, 'mode' | 'type' | 'value'> & {\n      optional?: false\n      default?: string\n      children?: Params\n    })\n\nexport type Params = Record<string, Param | undefined>\n\ntype Options = {\n  type: 'constructor' | 'call' | 'object' | 'objectValue'\n  transformName?: (name: string) => string\n  transformType?: (type: string) => string\n}\n\nfunction order(items: Array<[key: string, item?: ParamItem]>) {\n  return orderBy(\n    items.filter(Boolean),\n    [\n      ([_key, item]) => {\n        if (item?.children) {\n          return undefined\n        }\n        return !item?.default\n      },\n      ([_key, item]) => {\n        if (item?.children) {\n          return undefined\n        }\n        return !item?.optional\n      },\n    ],\n    ['desc', 'desc'],\n  )\n}\n\nfunction parseChild(key: string, item: ParamItem, options: Options): string | null {\n  // @ts-expect-error\n  const entries = order(Object.entries(item.children))\n\n  const types: string[] = []\n  const names: string[] = []\n\n  const optional = entries.every(([_key, item]) => item?.optional)\n\n  entries.forEach(([key, entryItem]) => {\n    if (entryItem) {\n      const name = parseItem(key, { ...entryItem, type: undefined }, options)\n      if (entryItem.children) {\n        const subTypes = Object.entries(entryItem.children)\n          .map(([key]) => {\n            return key\n          })\n          .join(', ')\n\n        if (subTypes) {\n          names.push(`${name}: { ${subTypes} }`)\n        } else {\n          names.push(name)\n        }\n      } else {\n        if (options.type === 'call' && options.transformName) {\n          names.push(`${key}: ${name}`)\n        } else {\n          names.push(name)\n        }\n      }\n\n      if (entries.some(([_key, item]) => item?.type)) {\n        types.push(parseItem(key, { ...entryItem, default: undefined }, options))\n      }\n    }\n  })\n\n  const name = item.mode === 'inline' ? key : names.length ? `{ ${names.join(', ')} }` : undefined\n  const type = item.type ? item.type : types.length ? `{ ${types.join('; ')} }` : undefined\n\n  if (!name) {\n    return null\n  }\n\n  return parseItem(\n    name,\n    {\n      type,\n      default: item.default,\n      optional: !item.default ? optional : undefined,\n    } as ParamItem,\n    options,\n  )\n}\n\nfunction parseItem(name: string, item: ParamItem, options: Options): string {\n  const acc: string[] = []\n  const transformedName = options.transformName ? options.transformName(name) : name\n  const transformedType = options.transformType && item.type ? options.transformType(item.type) : item.type\n\n  if (options.type === 'object') {\n    return transformedName\n  }\n\n  if (options.type === 'objectValue') {\n    return item.value ? `${transformedName}: ${item.value}` : transformedName\n  }\n\n  //LEGACY\n  if (item.type && options.type === 'constructor') {\n    if (item.optional) {\n      acc.push(`${transformedName}?: ${transformedType}`)\n    } else {\n      acc.push(`${transformedName}: ${transformedType}${item.default ? ` = ${item.default}` : ''}`)\n    }\n  } else if (item.default && options.type === 'constructor') {\n    acc.push(`${transformedName} = ${item.default}`)\n  } else if (item.value) {\n    acc.push(`${transformedName} : ${item.value}`)\n  } else if (item.mode === 'inlineSpread') {\n    acc.push(`... ${transformedName}`)\n  } else {\n    acc.push(transformedName)\n  }\n\n  return acc[0] as string\n}\n\nexport function getFunctionParams(params: Params, options: Options): string {\n  const entries = order(Object.entries(params as Record<string, ParamItem | undefined>))\n\n  return entries\n    .reduce((acc, [key, item]) => {\n      if (!item) {\n        return acc\n      }\n\n      if (item.children) {\n        if (Object.keys(item.children).length === 0) {\n          return acc\n        }\n\n        if (item.mode === 'inlineSpread') {\n          return [...acc, getFunctionParams(item.children, options)]\n        }\n\n        const parsedItem = parseChild(key, item, options)\n        if (!parsedItem) {\n          return acc\n        }\n\n        return [...acc, parsedItem]\n      }\n\n      const parsedItem = parseItem(key, item, options)\n\n      return [...acc, parsedItem]\n    }, [] as string[])\n    .join(', ')\n}\n\nexport function createFunctionParams(params: Params): Params {\n  return params\n}\n// TODO  use of zod\n//TODO use of string as `$name: $type` to create templates for functions instead of call/constructor\nexport class FunctionParams {\n  #params: Params\n\n  static factory(params: Params) {\n    return new FunctionParams(params)\n  }\n  constructor(params: Params) {\n    this.#params = params\n  }\n\n  get params(): Params {\n    return this.#params\n  }\n\n  get flatParams(): Params {\n    const flatter = (acc: Params, [key, item]: [key: string, item?: Param]): Params => {\n      if (item?.children) {\n        return Object.entries(item.children).reduce(flatter, acc)\n      }\n      if (item) {\n        acc[key] = item\n      }\n\n      return acc\n    }\n    return Object.entries(this.#params).reduce(flatter, {} as Params)\n  }\n\n  toCall({ transformName, transformType }: Pick<Options, 'transformName' | 'transformType'> = {}): string {\n    return getFunctionParams(this.#params, { type: 'call', transformName, transformType })\n  }\n\n  toObject(): string {\n    return getFunctionParams(this.#params, { type: 'object' })\n  }\n  toObjectValue(): string {\n    return getFunctionParams(this.#params, { type: 'objectValue' })\n  }\n\n  toConstructor(): string {\n    return getFunctionParams(this.#params, { type: 'constructor' })\n  }\n}\n","// import './globals.ts'\nimport React from 'react'\n\n// expose fabric core helpers\nexport * from '@kubb/fabric-core'\n\n// react helpers\nexport const useState = React.useState\nexport const createContext = React.createContext\nexport const createElement = React.createElement\nexport const Fragment = React.Fragment\nexport const use = React.use\nexport const useContext = React.useContext\nexport const useEffect = React.useEffect\nexport const useReducer = React.useReducer\nexport const useRef = React.useRef\n// // components\nexport { App } from './components/App.tsx'\nexport { Const } from './components/Const.tsx'\nexport { File } from './components/File.tsx'\nexport { Function } from './components/Function.tsx'\nexport { Indent } from './components/Indent.tsx'\nexport { Type } from './components/Type.tsx'\nexport { useApp } from './composables/useApp.ts'\nexport { useFile } from './composables/useFile.ts'\nexport { useLifecycle } from './composables/useLifecycle.tsx'\nexport { createReactFabric } from './createReactFabric.ts'\nexport { Runtime } from './Runtime.tsx'\n// utils\nexport { createFunctionParams, FunctionParams } from './utils/getFunctionParams.ts'\n"],"x_google_ignoreList":[4],"mappings":"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"}