@kubb/react-fabric 0.14.0 → 0.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/globals.d.ts +1 -1
- package/dist/index.cjs +6 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -4
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/jsx-dev-runtime.d.ts +2 -2
- package/dist/{jsx-namespace-C9N4PA8a.d.ts → jsx-namespace-BUQfB16E.d.ts} +2 -2
- package/dist/jsx-runtime.d.ts +2 -2
- package/dist/plugins.d.ts +1 -1
- package/dist/reactPlugin-D2aNZpS7.d.ts +35 -0
- package/dist/{types-BJVZ7ita.d.ts → types-DG_Fmgyd.d.ts} +7 -1
- package/dist/types.d.ts +1 -1
- package/package.json +2 -2
- package/src/devtools.ts +0 -2
- package/src/utils/getFunctionParams.ts +7 -2
- package/dist/reactPlugin-CKiGUCKQ.d.ts +0 -463
package/dist/globals.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as __name } from "./chunk-BGCRLu6H.js";
|
|
2
|
-
import { a as FabricExportProps, c as FabricReactElement, d as FabricTextProps, l as FabricReactNode, o as FabricFileProps, p as LineBreakProps, s as FabricImportProps, u as FabricSourceProps } from "./types-
|
|
2
|
+
import { a as FabricExportProps, c as FabricReactElement, d as FabricTextProps, l as FabricReactNode, o as FabricFileProps, p as LineBreakProps, s as FabricImportProps, u as FabricSourceProps } from "./types-DG_Fmgyd.js";
|
|
3
3
|
import React from "react";
|
|
4
4
|
|
|
5
5
|
//#region src/globals.d.ts
|
package/dist/index.cjs
CHANGED
|
@@ -473,9 +473,15 @@ function getFunctionParams(params, options) {
|
|
|
473
473
|
return [...acc, parsedItem];
|
|
474
474
|
}, []).join(", ");
|
|
475
475
|
}
|
|
476
|
+
/**
|
|
477
|
+
* @deprecated use @kubb/ast
|
|
478
|
+
*/
|
|
476
479
|
function createFunctionParams(params) {
|
|
477
480
|
return params;
|
|
478
481
|
}
|
|
482
|
+
/**
|
|
483
|
+
* @deprecated use @kubb/ast
|
|
484
|
+
*/
|
|
479
485
|
var FunctionParams = class FunctionParams {
|
|
480
486
|
#params;
|
|
481
487
|
static factory(params) {
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["NodeTreeContext","RootContext","NodeTreeContext","FabricContext","NodeTreeContext","FileContext","NodeTreeContext","NodeTreeContext","reactPlugin","#params"],"sources":["../src/components/Const.tsx","../src/components/Fabric.tsx","../src/components/File.tsx","../src/components/Function.tsx","../src/components/Type.tsx","../src/devtools.ts","../src/createReactFabric.ts","../src/utils/getFunctionParams.ts","../src/index.ts"],"sourcesContent":["import { NodeTreeContext, provide, useNodeTree } from '@kubb/fabric-core'\nimport type { FabricReactElement, FabricReactNode, JSDoc, Key } from '../types.ts'\nimport { createJSDoc } from '../utils/createJSDoc.ts'\n\nexport type ConstProps = {\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 /**\n * Children nodes.\n */\n children?: FabricReactNode\n}\n\n/**\n * Generates a TypeScript constant declaration.\n */\nexport function Const({ children, ...props }: ConstProps): FabricReactElement {\n const { name, export: canExport, type, JSDoc, asConst } = props\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'Const', props })\n\n provide(NodeTreeContext, childTree)\n }\n\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 ' '\n )}\n = {children}\n {asConst && <> as const</>}\n </>\n )\n}\n\nConst.displayName = 'Const'\n","import { FabricContext, NodeTreeContext, provide, RootContext, useContext, useNodeTree } from '@kubb/fabric-core'\nimport type { FabricReactElement, FabricReactNode } from '../types.ts'\n\nexport type FabricProps<TMeta extends object = object> = {\n /**\n * Metadata associated with the App.\n */\n meta?: TMeta\n /**\n * Children nodes.\n */\n children?: FabricReactNode\n}\n\n/**\n * Fabric container containing the FabricContext carrying `meta` and an `exit` hook.\n */\nexport function Fabric<TMeta extends object = object>({ children, ...props }: FabricProps<TMeta>): FabricReactElement {\n const { meta = {} } = props\n\n const { exit } = useContext(RootContext)\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'App', props })\n\n provide(NodeTreeContext, childTree)\n }\n\n provide(FabricContext, { exit, meta })\n\n return <>{children}</>\n}\n\nFabric.displayName = 'Fabric'\n","import { FileContext, NodeTreeContext, provide, useFile, useFileManager, useNodeTree } from '@kubb/fabric-core'\nimport type { KubbFile } from '@kubb/fabric-core/types'\nimport type { FabricReactElement, FabricReactNode, Key } from '../types.ts'\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?: FabricReactNode\n}\n\n/**\n * Adds files to the FileManager\n */\nexport function File<TMeta extends object = object>({ children, ...props }: Props<TMeta>): FabricReactElement {\n const { baseName, path, meta = {}, footer, banner } = props\n\n const fileManager = useFileManager()\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'File', props })\n\n provide(NodeTreeContext, childTree)\n }\n\n if (!baseName || !path) {\n return <>{children}</>\n }\n\n const file: KubbFile.File = {\n baseName,\n path,\n meta,\n banner,\n footer,\n sources: [],\n imports: [],\n exports: [],\n }\n\n const [resolvedFile] = fileManager.add(file)\n provide(FileContext, resolvedFile)\n\n return <kubb-file {...props}>{children}</kubb-file>\n}\n\nFile.displayName = 'File'\n\ntype FileSourceProps = Omit<KubbFile.Source, 'value'> & {\n key?: Key\n children?: FabricReactNode\n}\n\n/**\n * File.Source\n *\n * Marks a block of source text to be associated with the current file when\n * rendering with the FileCollector. Children are treated as the source string.\n */\nfunction FileSource({ children, ...props }: FileSourceProps): FabricReactElement {\n const { name, isExportable, isIndexable, isTypeOnly } = props\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'FileSource', props })\n\n provide(NodeTreeContext, childTree)\n }\n\n return (\n <kubb-source name={name} isTypeOnly={isTypeOnly} isExportable={isExportable} isIndexable={isIndexable}>\n {children}\n </kubb-source>\n )\n}\n\nFileSource.displayName = 'FileSource'\n\nexport type FileExportProps = KubbFile.Export & { key?: Key }\n\n/**\n * File.Export\n *\n * Declares an export entry for the current file. This will be collected by\n * the FileCollector for later emission.\n */\nfunction FileExport(props: FileExportProps): FabricReactElement {\n const { name, path, isTypeOnly, asAlias } = props\n\n const nodeTree = useNodeTree()\n const file = useFile()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'FileExport', props })\n\n provide(NodeTreeContext, childTree)\n }\n\n if (file) {\n file.exports.push({\n name,\n path,\n asAlias,\n isTypeOnly,\n })\n }\n\n return <kubb-export name={name} path={path} isTypeOnly={isTypeOnly} asAlias={asAlias} />\n}\n\nFileExport.displayName = 'FileExport'\n\nexport type FileImportProps = KubbFile.Import & { key?: Key }\n\n/**\n * File.Import\n *\n * Declares an import entry for the current file.\n */\nfunction FileImport(props: FileImportProps): FabricReactElement {\n const { name, root, path, isTypeOnly, isNameSpace } = props\n\n const nodeTree = useNodeTree()\n const file = useFile()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'FileImport', props })\n\n provide(NodeTreeContext, childTree)\n }\n\n if (file) {\n file.imports.push({\n name,\n path,\n root,\n isNameSpace,\n isTypeOnly,\n })\n }\n\n return <kubb-import name={name} root={root} path={path} isNameSpace={isNameSpace} isTypeOnly={isTypeOnly} />\n}\n\nFileImport.displayName = 'FileImport'\n\nFile.Export = FileExport\nFile.Import = FileImport\nFile.Source = FileSource\n","import { NodeTreeContext, provide, useNodeTree } from '@kubb/fabric-core'\nimport type { FabricReactElement, FabricReactNode, JSDoc, Key } from '../types.ts'\nimport { createJSDoc } from '../utils/createJSDoc.ts'\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 behavior.\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 * ReturnType(see async for adding Promise type).\n */\n returnType?: string\n /**\n * Options for JSdocs.\n */\n JSDoc?: JSDoc\n /**\n * Children nodes.\n */\n children?: FabricReactNode\n}\n\n/**\n * Generates a TypeScript function declaration.\n */\nexport function Function({ children, ...props }: Props): FabricReactElement {\n const { name, default: isDefault, export: canExport, async, generics, params, returnType, JSDoc } = props\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'Function', props })\n\n provide(NodeTreeContext, childTree)\n }\n\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 />\n {/* Indent component to handle indentation*/}\n {children}\n <br />\n <dedent />\n {/* Indent component to handle indentation*/}\n {'}'}\n </>\n )\n}\n\nFunction.displayName = 'Function'\n\ntype ArrowFunctionProps = Props & {\n /**\n * Create Arrow function in one line\n */\n singleLine?: boolean\n}\n\n/**\n * ArrowFunction\n *\n * Renders an arrow function definition. Supports the same flags as `Function`.\n * Use `singleLine` to render the body as a single-line expression.\n */\nfunction ArrowFunction({ children, ...props }: ArrowFunctionProps) {\n const { name, default: isDefault, export: canExport, async, generics, params, returnType, JSDoc, singleLine } = props\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'ArrowFunction', props })\n\n provide(NodeTreeContext, childTree)\n }\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 />\n {/* Indent component to handle indentation*/}\n {children}\n <br />\n <dedent />\n {/* Indent component to handle indentation*/}\n {'}'}\n <br />\n </>\n )}\n </>\n )\n}\n\nArrowFunction.displayName = 'ArrowFunction'\nFunction.Arrow = ArrowFunction\n","import { NodeTreeContext, provide, useNodeTree } from '@kubb/fabric-core'\nimport type { FabricReactElement, FabricReactNode, JSDoc, Key } from '../types.ts'\nimport { createJSDoc } from '../utils/createJSDoc.ts'\n\nexport type TypeProps = {\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 /**\n * Children nodes.\n */\n children?: FabricReactNode\n}\n\n/**\n * Generates a TypeScript type declaration.\n */\nexport function Type({ children, ...props }: TypeProps): FabricReactElement {\n const { name, export: canExport, JSDoc } = props\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'Type', props })\n\n provide(NodeTreeContext, childTree)\n }\n\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 = 'Type'\n","import { spawn } from 'node:child_process'\nimport { onProcessExit } from '@kubb/fabric-core'\nimport ws from 'ws'\nimport { Renderer } from './Renderer.ts'\n\ndeclare global {\n var WebSocket: typeof WebSocket\n var self: any\n var window: any\n var isDevtoolsEnabled: any\n}\n\nlet isOpen = false\n\nexport function openDevtools() {\n if (isOpen) {\n return undefined\n }\n // Set up global polyfills BEFORE importing react-devtools-core\n // This is required because react-devtools-core expects these to be available\n const customGlobal = global as any\n customGlobal.WebSocket ||= ws\n customGlobal.window ||= global\n customGlobal.self ||= global\n customGlobal.isDevtoolsEnabled = true\n\n // Filter out Kubb internal components from devtools for a cleaner view.\n // See https://github.com/facebook/react/blob/edf6eac8a181860fd8a2d076a43806f1237495a1/packages/react-devtools-shared/src/types.js#L24\n customGlobal.window.__REACT_DEVTOOLS_COMPONENT_FILTERS__ = [\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'Context.Provider',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'Root',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'ErrorBoundary',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'kubb-file',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'kubb-text',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'kubb-import',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'kubb-export',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'kubb-source',\n isEnabled: true,\n isValid: true,\n },\n ]\n\n // biome-ignore lint/suspicious/noTsIgnore: cannot find types\n // @ts-ignore\n import('react-devtools-core').then(async (devtools) => {\n console.info('Opening devtools')\n const controller = new AbortController()\n if (!isOpen) {\n const child = spawn('npx', ['react-devtools@6.1.5'], {\n signal: controller.signal,\n stdio: 'pipe',\n detached: true,\n })\n child.unref()\n }\n\n isOpen = true\n\n // Destructure the functions from the module\n const { initialize, connectToDevTools } = devtools?.default || devtools\n\n // Initialize DevTools BEFORE importing Renderer (which imports React)\n initialize()\n console.info('Initializing devtools')\n\n // Inject the renderer BEFORE connecting to DevTools\n // This ensures DevTools can properly discover the custom renderer\n Renderer.injectIntoDevTools({\n bundleType: 1,\n version: '19.2.3',\n rendererPackageName: 'kubb',\n // findFiberByHostInstance is required for DevTools to map elements to fibers\n findFiberByHostInstance: () => null,\n })\n\n console.info('Connecting devtools')\n\n try {\n connectToDevTools({\n host: 'localhost',\n port: 8097,\n useHttps: false,\n isAppActive: () => true,\n })\n } catch (e) {\n console.error(e)\n console.info('Error when connecting the devtools')\n }\n\n onProcessExit(() => {\n console.info('Disconnecting devtools')\n controller.abort()\n })\n })\n}\n","import { createFabric } from '@kubb/fabric-core'\nimport type { Fabric, FabricConfig, FabricMode } from '@kubb/fabric-core/types'\nimport { openDevtools } 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 if (config.devtools) {\n openDevtools()\n }\n\n const fabric = createFabric({ mode: config.mode })\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 { sortBy } from 'remeda'\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 sortBy(items.filter(Boolean) as Array<[key: string, item?: ParamItem]>, ([_key, item]) => {\n if (item?.children) {\n return 0 // Treat items with children as required (they'll get = {} if all children are optional)\n }\n // Priority order: required (0) → optional (1) → default-only (2)\n if (item?.optional) {\n return 1 // Optional parameters (with or without default)\n }\n if (item?.default) {\n // Parameters with default only (not marked as optional)\n // Note: While the ParamItem type suggests optional and default are mutually exclusive,\n // this handles the case where a parameter has a default value but isn't explicitly marked as optional\n return 2\n }\n return 0 // Required parameters\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 || !!item?.default)\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 // Check if this is a destructured parameter (object mode)\n const isDestructured = transformedName.startsWith('{')\n if (isDestructured) {\n // For destructured parameters, use \": type = {}\" syntax to make it optional\n acc.push(`${transformedName}: ${transformedType} = {}`)\n } else {\n // For inline parameters, use \"?: type\" syntax\n acc.push(`${transformedName}?: ${transformedType}`)\n }\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 * as React from 'react'\n\n// expose fabric core helpers\nexport { createContext, createFabric, createFile, FileManager, FileProcessor, TreeNode, useContext } from '@kubb/fabric-core'\n\n// react helpers\nexport const useState = React.useState\nexport const useEffect = React.useEffect\nexport const useReducer = React.useReducer\nexport const useRef = React.useRef\n\nexport { Const } from './components/Const.tsx'\nexport { Fabric } from './components/Fabric.tsx'\nexport { File } from './components/File.tsx'\nexport { Function } from './components/Function.tsx'\n// components\nexport { Root } from './components/Root.tsx'\nexport { Type } from './components/Type.tsx'\n\n// composables\nexport { useFabric } from './composables/useFabric.ts'\nexport { useFile } from './composables/useFile.ts'\nexport { useLifecycle } from './composables/useLifecycle.tsx'\n\n// factories\nexport { createReactFabric } from './createReactFabric.ts'\nexport { openDevtools } from './devtools.ts'\nexport { Runtime } from './Runtime.tsx'\n// utils\nexport { createFunctionParams, FunctionParams } from './utils/getFunctionParams.ts'\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["NodeTreeContext","RootContext","NodeTreeContext","FabricContext","NodeTreeContext","FileContext","NodeTreeContext","NodeTreeContext","reactPlugin","#params"],"sources":["../src/components/Const.tsx","../src/components/Fabric.tsx","../src/components/File.tsx","../src/components/Function.tsx","../src/components/Type.tsx","../src/devtools.ts","../src/createReactFabric.ts","../src/utils/getFunctionParams.ts","../src/index.ts"],"sourcesContent":["import { NodeTreeContext, provide, useNodeTree } from '@kubb/fabric-core'\nimport type { FabricReactElement, FabricReactNode, JSDoc, Key } from '../types.ts'\nimport { createJSDoc } from '../utils/createJSDoc.ts'\n\nexport type ConstProps = {\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 /**\n * Children nodes.\n */\n children?: FabricReactNode\n}\n\n/**\n * Generates a TypeScript constant declaration.\n */\nexport function Const({ children, ...props }: ConstProps): FabricReactElement {\n const { name, export: canExport, type, JSDoc, asConst } = props\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'Const', props })\n\n provide(NodeTreeContext, childTree)\n }\n\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 ' '\n )}\n = {children}\n {asConst && <> as const</>}\n </>\n )\n}\n\nConst.displayName = 'Const'\n","import { FabricContext, NodeTreeContext, provide, RootContext, useContext, useNodeTree } from '@kubb/fabric-core'\nimport type { FabricReactElement, FabricReactNode } from '../types.ts'\n\nexport type FabricProps<TMeta extends object = object> = {\n /**\n * Metadata associated with the App.\n */\n meta?: TMeta\n /**\n * Children nodes.\n */\n children?: FabricReactNode\n}\n\n/**\n * Fabric container containing the FabricContext carrying `meta` and an `exit` hook.\n */\nexport function Fabric<TMeta extends object = object>({ children, ...props }: FabricProps<TMeta>): FabricReactElement {\n const { meta = {} } = props\n\n const { exit } = useContext(RootContext)\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'App', props })\n\n provide(NodeTreeContext, childTree)\n }\n\n provide(FabricContext, { exit, meta })\n\n return <>{children}</>\n}\n\nFabric.displayName = 'Fabric'\n","import { FileContext, NodeTreeContext, provide, useFile, useFileManager, useNodeTree } from '@kubb/fabric-core'\nimport type { KubbFile } from '@kubb/fabric-core/types'\nimport type { FabricReactElement, FabricReactNode, Key } from '../types.ts'\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?: FabricReactNode\n}\n\n/**\n * Adds files to the FileManager\n */\nexport function File<TMeta extends object = object>({ children, ...props }: Props<TMeta>): FabricReactElement {\n const { baseName, path, meta = {}, footer, banner } = props\n\n const fileManager = useFileManager()\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'File', props })\n\n provide(NodeTreeContext, childTree)\n }\n\n if (!baseName || !path) {\n return <>{children}</>\n }\n\n const file: KubbFile.File = {\n baseName,\n path,\n meta,\n banner,\n footer,\n sources: [],\n imports: [],\n exports: [],\n }\n\n const [resolvedFile] = fileManager.add(file)\n provide(FileContext, resolvedFile)\n\n return <kubb-file {...props}>{children}</kubb-file>\n}\n\nFile.displayName = 'File'\n\ntype FileSourceProps = Omit<KubbFile.Source, 'value'> & {\n key?: Key\n children?: FabricReactNode\n}\n\n/**\n * File.Source\n *\n * Marks a block of source text to be associated with the current file when\n * rendering with the FileCollector. Children are treated as the source string.\n */\nfunction FileSource({ children, ...props }: FileSourceProps): FabricReactElement {\n const { name, isExportable, isIndexable, isTypeOnly } = props\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'FileSource', props })\n\n provide(NodeTreeContext, childTree)\n }\n\n return (\n <kubb-source name={name} isTypeOnly={isTypeOnly} isExportable={isExportable} isIndexable={isIndexable}>\n {children}\n </kubb-source>\n )\n}\n\nFileSource.displayName = 'FileSource'\n\nexport type FileExportProps = KubbFile.Export & { key?: Key }\n\n/**\n * File.Export\n *\n * Declares an export entry for the current file. This will be collected by\n * the FileCollector for later emission.\n */\nfunction FileExport(props: FileExportProps): FabricReactElement {\n const { name, path, isTypeOnly, asAlias } = props\n\n const nodeTree = useNodeTree()\n const file = useFile()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'FileExport', props })\n\n provide(NodeTreeContext, childTree)\n }\n\n if (file) {\n file.exports.push({\n name,\n path,\n asAlias,\n isTypeOnly,\n })\n }\n\n return <kubb-export name={name} path={path} isTypeOnly={isTypeOnly} asAlias={asAlias} />\n}\n\nFileExport.displayName = 'FileExport'\n\nexport type FileImportProps = KubbFile.Import & { key?: Key }\n\n/**\n * File.Import\n *\n * Declares an import entry for the current file.\n */\nfunction FileImport(props: FileImportProps): FabricReactElement {\n const { name, root, path, isTypeOnly, isNameSpace } = props\n\n const nodeTree = useNodeTree()\n const file = useFile()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'FileImport', props })\n\n provide(NodeTreeContext, childTree)\n }\n\n if (file) {\n file.imports.push({\n name,\n path,\n root,\n isNameSpace,\n isTypeOnly,\n })\n }\n\n return <kubb-import name={name} root={root} path={path} isNameSpace={isNameSpace} isTypeOnly={isTypeOnly} />\n}\n\nFileImport.displayName = 'FileImport'\n\nFile.Export = FileExport\nFile.Import = FileImport\nFile.Source = FileSource\n","import { NodeTreeContext, provide, useNodeTree } from '@kubb/fabric-core'\nimport type { FabricReactElement, FabricReactNode, JSDoc, Key } from '../types.ts'\nimport { createJSDoc } from '../utils/createJSDoc.ts'\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 behavior.\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 * ReturnType(see async for adding Promise type).\n */\n returnType?: string\n /**\n * Options for JSdocs.\n */\n JSDoc?: JSDoc\n /**\n * Children nodes.\n */\n children?: FabricReactNode\n}\n\n/**\n * Generates a TypeScript function declaration.\n */\nexport function Function({ children, ...props }: Props): FabricReactElement {\n const { name, default: isDefault, export: canExport, async, generics, params, returnType, JSDoc } = props\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'Function', props })\n\n provide(NodeTreeContext, childTree)\n }\n\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 />\n {/* Indent component to handle indentation*/}\n {children}\n <br />\n <dedent />\n {/* Indent component to handle indentation*/}\n {'}'}\n </>\n )\n}\n\nFunction.displayName = 'Function'\n\ntype ArrowFunctionProps = Props & {\n /**\n * Create Arrow function in one line\n */\n singleLine?: boolean\n}\n\n/**\n * ArrowFunction\n *\n * Renders an arrow function definition. Supports the same flags as `Function`.\n * Use `singleLine` to render the body as a single-line expression.\n */\nfunction ArrowFunction({ children, ...props }: ArrowFunctionProps) {\n const { name, default: isDefault, export: canExport, async, generics, params, returnType, JSDoc, singleLine } = props\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'ArrowFunction', props })\n\n provide(NodeTreeContext, childTree)\n }\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 />\n {/* Indent component to handle indentation*/}\n {children}\n <br />\n <dedent />\n {/* Indent component to handle indentation*/}\n {'}'}\n <br />\n </>\n )}\n </>\n )\n}\n\nArrowFunction.displayName = 'ArrowFunction'\nFunction.Arrow = ArrowFunction\n","import { NodeTreeContext, provide, useNodeTree } from '@kubb/fabric-core'\nimport type { FabricReactElement, FabricReactNode, JSDoc, Key } from '../types.ts'\nimport { createJSDoc } from '../utils/createJSDoc.ts'\n\nexport type TypeProps = {\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 /**\n * Children nodes.\n */\n children?: FabricReactNode\n}\n\n/**\n * Generates a TypeScript type declaration.\n */\nexport function Type({ children, ...props }: TypeProps): FabricReactElement {\n const { name, export: canExport, JSDoc } = props\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'Type', props })\n\n provide(NodeTreeContext, childTree)\n }\n\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 = 'Type'\n","import { spawn } from 'node:child_process'\nimport { onProcessExit } from '@kubb/fabric-core'\nimport ws from 'ws'\nimport { Renderer } from './Renderer.ts'\n\ndeclare global {\n var WebSocket: typeof WebSocket\n var isDevtoolsEnabled: any\n}\n\nlet isOpen = false\n\nexport function openDevtools() {\n if (isOpen) {\n return undefined\n }\n // Set up global polyfills BEFORE importing react-devtools-core\n // This is required because react-devtools-core expects these to be available\n const customGlobal = global as any\n customGlobal.WebSocket ||= ws\n customGlobal.window ||= global\n customGlobal.self ||= global\n customGlobal.isDevtoolsEnabled = true\n\n // Filter out Kubb internal components from devtools for a cleaner view.\n // See https://github.com/facebook/react/blob/edf6eac8a181860fd8a2d076a43806f1237495a1/packages/react-devtools-shared/src/types.js#L24\n customGlobal.window.__REACT_DEVTOOLS_COMPONENT_FILTERS__ = [\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'Context.Provider',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'Root',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'ErrorBoundary',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'kubb-file',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'kubb-text',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'kubb-import',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'kubb-export',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'kubb-source',\n isEnabled: true,\n isValid: true,\n },\n ]\n\n // biome-ignore lint/suspicious/noTsIgnore: cannot find types\n // @ts-ignore\n import('react-devtools-core').then(async (devtools) => {\n console.info('Opening devtools')\n const controller = new AbortController()\n if (!isOpen) {\n const child = spawn('npx', ['react-devtools@6.1.5'], {\n signal: controller.signal,\n stdio: 'pipe',\n detached: true,\n })\n child.unref()\n }\n\n isOpen = true\n\n // Destructure the functions from the module\n const { initialize, connectToDevTools } = devtools?.default || devtools\n\n // Initialize DevTools BEFORE importing Renderer (which imports React)\n initialize()\n console.info('Initializing devtools')\n\n // Inject the renderer BEFORE connecting to DevTools\n // This ensures DevTools can properly discover the custom renderer\n Renderer.injectIntoDevTools({\n bundleType: 1,\n version: '19.2.3',\n rendererPackageName: 'kubb',\n // findFiberByHostInstance is required for DevTools to map elements to fibers\n findFiberByHostInstance: () => null,\n })\n\n console.info('Connecting devtools')\n\n try {\n connectToDevTools({\n host: 'localhost',\n port: 8097,\n useHttps: false,\n isAppActive: () => true,\n })\n } catch (e) {\n console.error(e)\n console.info('Error when connecting the devtools')\n }\n\n onProcessExit(() => {\n console.info('Disconnecting devtools')\n controller.abort()\n })\n })\n}\n","import { createFabric } from '@kubb/fabric-core'\nimport type { Fabric, FabricConfig, FabricMode } from '@kubb/fabric-core/types'\nimport { openDevtools } 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 if (config.devtools) {\n openDevtools()\n }\n\n const fabric = createFabric({ mode: config.mode })\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 { sortBy } from 'remeda'\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 sortBy(items.filter(Boolean) as Array<[key: string, item?: ParamItem]>, ([_key, item]) => {\n if (item?.children) {\n return 0 // Treat items with children as required (they'll get = {} if all children are optional)\n }\n // Priority order: required (0) → optional (1) → default-only (2)\n if (item?.optional) {\n return 1 // Optional parameters (with or without default)\n }\n if (item?.default) {\n // Parameters with default only (not marked as optional)\n // Note: While the ParamItem type suggests optional and default are mutually exclusive,\n // this handles the case where a parameter has a default value but isn't explicitly marked as optional\n return 2\n }\n return 0 // Required parameters\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 || !!item?.default)\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 // Check if this is a destructured parameter (object mode)\n const isDestructured = transformedName.startsWith('{')\n if (isDestructured) {\n // For destructured parameters, use \": type = {}\" syntax to make it optional\n acc.push(`${transformedName}: ${transformedType} = {}`)\n } else {\n // For inline parameters, use \"?: type\" syntax\n acc.push(`${transformedName}?: ${transformedType}`)\n }\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\n/**\n * @deprecated use @kubb/ast\n */\nexport function createFunctionParams(params: Params): Params {\n return params\n}\n\n/**\n * @deprecated use @kubb/ast\n */\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 * as React from 'react'\n\n// expose fabric core helpers\nexport { createContext, createFabric, createFile, FileManager, FileProcessor, TreeNode, useContext } from '@kubb/fabric-core'\n\n// react helpers\nexport const useState = React.useState\nexport const useEffect = React.useEffect\nexport const useReducer = React.useReducer\nexport const useRef = React.useRef\n\nexport { Const } from './components/Const.tsx'\nexport { Fabric } from './components/Fabric.tsx'\nexport { File } from './components/File.tsx'\nexport { Function } from './components/Function.tsx'\n// components\nexport { Root } from './components/Root.tsx'\nexport { Type } from './components/Type.tsx'\n\n// composables\nexport { useFabric } from './composables/useFabric.ts'\nexport { useFile } from './composables/useFile.ts'\nexport { useLifecycle } from './composables/useLifecycle.tsx'\n\n// factories\nexport { createReactFabric } from './createReactFabric.ts'\nexport { openDevtools } from './devtools.ts'\nexport { Runtime } from './Runtime.tsx'\n// utils\nexport { createFunctionParams, FunctionParams } from './utils/getFunctionParams.ts'\n"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as __name } from "./chunk-BGCRLu6H.js";
|
|
2
|
-
import { c as FabricReactElement, f as Key, g as FunctionParams, h as types_d_exports, l as FabricReactNode, y as createFunctionParams } from "./types-
|
|
3
|
-
import { t as Options$1 } from "./reactPlugin-
|
|
2
|
+
import { c as FabricReactElement, f as Key, g as FunctionParams, h as types_d_exports, l as FabricReactNode, y as createFunctionParams } from "./types-DG_Fmgyd.js";
|
|
3
|
+
import { t as Options$1 } from "./reactPlugin-D2aNZpS7.js";
|
|
4
4
|
import { FileManager, FileManager as FileManager$1, FileProcessor, TreeNode, TreeNode as TreeNode$1, createContext, createFabric, createFile, useContext, useFabric, useFile, useLifecycle } from "@kubb/fabric-core";
|
|
5
5
|
import { Fabric as Fabric$1, FabricConfig, FabricMode, KubbFile } from "@kubb/fabric-core/types";
|
|
6
6
|
import * as react from "react";
|
|
@@ -302,8 +302,6 @@ declare function createReactFabric(config?: FabricConfig<Options$1 & {
|
|
|
302
302
|
//#region src/devtools.d.ts
|
|
303
303
|
declare global {
|
|
304
304
|
var WebSocket: typeof WebSocket;
|
|
305
|
-
var self: any;
|
|
306
|
-
var window: any;
|
|
307
305
|
var isDevtoolsEnabled: any;
|
|
308
306
|
}
|
|
309
307
|
declare function openDevtools(): undefined;
|
package/dist/index.js
CHANGED
|
@@ -474,9 +474,15 @@ function getFunctionParams(params, options) {
|
|
|
474
474
|
return [...acc, parsedItem];
|
|
475
475
|
}, []).join(", ");
|
|
476
476
|
}
|
|
477
|
+
/**
|
|
478
|
+
* @deprecated use @kubb/ast
|
|
479
|
+
*/
|
|
477
480
|
function createFunctionParams(params) {
|
|
478
481
|
return params;
|
|
479
482
|
}
|
|
483
|
+
/**
|
|
484
|
+
* @deprecated use @kubb/ast
|
|
485
|
+
*/
|
|
480
486
|
var FunctionParams = class FunctionParams {
|
|
481
487
|
#params;
|
|
482
488
|
static factory(params) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useContext","useFile","createFabric","#params"],"sources":["../src/utils/createJSDoc.ts","../src/components/Const.tsx","../src/components/Fabric.tsx","../src/components/File.tsx","../src/components/Function.tsx","../src/components/Type.tsx","../src/devtools.ts","../src/createReactFabric.ts","../src/utils/getFunctionParams.ts","../src/index.ts"],"sourcesContent":["export { createJSDoc } from '@kubb/fabric-core'\n","import { NodeTreeContext, provide, useNodeTree } from '@kubb/fabric-core'\nimport type { FabricReactElement, FabricReactNode, JSDoc, Key } from '../types.ts'\nimport { createJSDoc } from '../utils/createJSDoc.ts'\n\nexport type ConstProps = {\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 /**\n * Children nodes.\n */\n children?: FabricReactNode\n}\n\n/**\n * Generates a TypeScript constant declaration.\n */\nexport function Const({ children, ...props }: ConstProps): FabricReactElement {\n const { name, export: canExport, type, JSDoc, asConst } = props\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'Const', props })\n\n provide(NodeTreeContext, childTree)\n }\n\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 ' '\n )}\n = {children}\n {asConst && <> as const</>}\n </>\n )\n}\n\nConst.displayName = 'Const'\n","import { FabricContext, NodeTreeContext, provide, RootContext, useContext, useNodeTree } from '@kubb/fabric-core'\nimport type { FabricReactElement, FabricReactNode } from '../types.ts'\n\nexport type FabricProps<TMeta extends object = object> = {\n /**\n * Metadata associated with the App.\n */\n meta?: TMeta\n /**\n * Children nodes.\n */\n children?: FabricReactNode\n}\n\n/**\n * Fabric container containing the FabricContext carrying `meta` and an `exit` hook.\n */\nexport function Fabric<TMeta extends object = object>({ children, ...props }: FabricProps<TMeta>): FabricReactElement {\n const { meta = {} } = props\n\n const { exit } = useContext(RootContext)\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'App', props })\n\n provide(NodeTreeContext, childTree)\n }\n\n provide(FabricContext, { exit, meta })\n\n return <>{children}</>\n}\n\nFabric.displayName = 'Fabric'\n","import { FileContext, NodeTreeContext, provide, useFile, useFileManager, useNodeTree } from '@kubb/fabric-core'\nimport type { KubbFile } from '@kubb/fabric-core/types'\nimport type { FabricReactElement, FabricReactNode, Key } from '../types.ts'\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?: FabricReactNode\n}\n\n/**\n * Adds files to the FileManager\n */\nexport function File<TMeta extends object = object>({ children, ...props }: Props<TMeta>): FabricReactElement {\n const { baseName, path, meta = {}, footer, banner } = props\n\n const fileManager = useFileManager()\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'File', props })\n\n provide(NodeTreeContext, childTree)\n }\n\n if (!baseName || !path) {\n return <>{children}</>\n }\n\n const file: KubbFile.File = {\n baseName,\n path,\n meta,\n banner,\n footer,\n sources: [],\n imports: [],\n exports: [],\n }\n\n const [resolvedFile] = fileManager.add(file)\n provide(FileContext, resolvedFile)\n\n return <kubb-file {...props}>{children}</kubb-file>\n}\n\nFile.displayName = 'File'\n\ntype FileSourceProps = Omit<KubbFile.Source, 'value'> & {\n key?: Key\n children?: FabricReactNode\n}\n\n/**\n * File.Source\n *\n * Marks a block of source text to be associated with the current file when\n * rendering with the FileCollector. Children are treated as the source string.\n */\nfunction FileSource({ children, ...props }: FileSourceProps): FabricReactElement {\n const { name, isExportable, isIndexable, isTypeOnly } = props\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'FileSource', props })\n\n provide(NodeTreeContext, childTree)\n }\n\n return (\n <kubb-source name={name} isTypeOnly={isTypeOnly} isExportable={isExportable} isIndexable={isIndexable}>\n {children}\n </kubb-source>\n )\n}\n\nFileSource.displayName = 'FileSource'\n\nexport type FileExportProps = KubbFile.Export & { key?: Key }\n\n/**\n * File.Export\n *\n * Declares an export entry for the current file. This will be collected by\n * the FileCollector for later emission.\n */\nfunction FileExport(props: FileExportProps): FabricReactElement {\n const { name, path, isTypeOnly, asAlias } = props\n\n const nodeTree = useNodeTree()\n const file = useFile()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'FileExport', props })\n\n provide(NodeTreeContext, childTree)\n }\n\n if (file) {\n file.exports.push({\n name,\n path,\n asAlias,\n isTypeOnly,\n })\n }\n\n return <kubb-export name={name} path={path} isTypeOnly={isTypeOnly} asAlias={asAlias} />\n}\n\nFileExport.displayName = 'FileExport'\n\nexport type FileImportProps = KubbFile.Import & { key?: Key }\n\n/**\n * File.Import\n *\n * Declares an import entry for the current file.\n */\nfunction FileImport(props: FileImportProps): FabricReactElement {\n const { name, root, path, isTypeOnly, isNameSpace } = props\n\n const nodeTree = useNodeTree()\n const file = useFile()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'FileImport', props })\n\n provide(NodeTreeContext, childTree)\n }\n\n if (file) {\n file.imports.push({\n name,\n path,\n root,\n isNameSpace,\n isTypeOnly,\n })\n }\n\n return <kubb-import name={name} root={root} path={path} isNameSpace={isNameSpace} isTypeOnly={isTypeOnly} />\n}\n\nFileImport.displayName = 'FileImport'\n\nFile.Export = FileExport\nFile.Import = FileImport\nFile.Source = FileSource\n","import { NodeTreeContext, provide, useNodeTree } from '@kubb/fabric-core'\nimport type { FabricReactElement, FabricReactNode, JSDoc, Key } from '../types.ts'\nimport { createJSDoc } from '../utils/createJSDoc.ts'\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 behavior.\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 * ReturnType(see async for adding Promise type).\n */\n returnType?: string\n /**\n * Options for JSdocs.\n */\n JSDoc?: JSDoc\n /**\n * Children nodes.\n */\n children?: FabricReactNode\n}\n\n/**\n * Generates a TypeScript function declaration.\n */\nexport function Function({ children, ...props }: Props): FabricReactElement {\n const { name, default: isDefault, export: canExport, async, generics, params, returnType, JSDoc } = props\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'Function', props })\n\n provide(NodeTreeContext, childTree)\n }\n\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 />\n {/* Indent component to handle indentation*/}\n {children}\n <br />\n <dedent />\n {/* Indent component to handle indentation*/}\n {'}'}\n </>\n )\n}\n\nFunction.displayName = 'Function'\n\ntype ArrowFunctionProps = Props & {\n /**\n * Create Arrow function in one line\n */\n singleLine?: boolean\n}\n\n/**\n * ArrowFunction\n *\n * Renders an arrow function definition. Supports the same flags as `Function`.\n * Use `singleLine` to render the body as a single-line expression.\n */\nfunction ArrowFunction({ children, ...props }: ArrowFunctionProps) {\n const { name, default: isDefault, export: canExport, async, generics, params, returnType, JSDoc, singleLine } = props\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'ArrowFunction', props })\n\n provide(NodeTreeContext, childTree)\n }\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 />\n {/* Indent component to handle indentation*/}\n {children}\n <br />\n <dedent />\n {/* Indent component to handle indentation*/}\n {'}'}\n <br />\n </>\n )}\n </>\n )\n}\n\nArrowFunction.displayName = 'ArrowFunction'\nFunction.Arrow = ArrowFunction\n","import { NodeTreeContext, provide, useNodeTree } from '@kubb/fabric-core'\nimport type { FabricReactElement, FabricReactNode, JSDoc, Key } from '../types.ts'\nimport { createJSDoc } from '../utils/createJSDoc.ts'\n\nexport type TypeProps = {\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 /**\n * Children nodes.\n */\n children?: FabricReactNode\n}\n\n/**\n * Generates a TypeScript type declaration.\n */\nexport function Type({ children, ...props }: TypeProps): FabricReactElement {\n const { name, export: canExport, JSDoc } = props\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'Type', props })\n\n provide(NodeTreeContext, childTree)\n }\n\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 = 'Type'\n","import { spawn } from 'node:child_process'\nimport { onProcessExit } from '@kubb/fabric-core'\nimport ws from 'ws'\nimport { Renderer } from './Renderer.ts'\n\ndeclare global {\n var WebSocket: typeof WebSocket\n var self: any\n var window: any\n var isDevtoolsEnabled: any\n}\n\nlet isOpen = false\n\nexport function openDevtools() {\n if (isOpen) {\n return undefined\n }\n // Set up global polyfills BEFORE importing react-devtools-core\n // This is required because react-devtools-core expects these to be available\n const customGlobal = global as any\n customGlobal.WebSocket ||= ws\n customGlobal.window ||= global\n customGlobal.self ||= global\n customGlobal.isDevtoolsEnabled = true\n\n // Filter out Kubb internal components from devtools for a cleaner view.\n // See https://github.com/facebook/react/blob/edf6eac8a181860fd8a2d076a43806f1237495a1/packages/react-devtools-shared/src/types.js#L24\n customGlobal.window.__REACT_DEVTOOLS_COMPONENT_FILTERS__ = [\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'Context.Provider',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'Root',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'ErrorBoundary',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'kubb-file',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'kubb-text',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'kubb-import',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'kubb-export',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'kubb-source',\n isEnabled: true,\n isValid: true,\n },\n ]\n\n // biome-ignore lint/suspicious/noTsIgnore: cannot find types\n // @ts-ignore\n import('react-devtools-core').then(async (devtools) => {\n console.info('Opening devtools')\n const controller = new AbortController()\n if (!isOpen) {\n const child = spawn('npx', ['react-devtools@6.1.5'], {\n signal: controller.signal,\n stdio: 'pipe',\n detached: true,\n })\n child.unref()\n }\n\n isOpen = true\n\n // Destructure the functions from the module\n const { initialize, connectToDevTools } = devtools?.default || devtools\n\n // Initialize DevTools BEFORE importing Renderer (which imports React)\n initialize()\n console.info('Initializing devtools')\n\n // Inject the renderer BEFORE connecting to DevTools\n // This ensures DevTools can properly discover the custom renderer\n Renderer.injectIntoDevTools({\n bundleType: 1,\n version: '19.2.3',\n rendererPackageName: 'kubb',\n // findFiberByHostInstance is required for DevTools to map elements to fibers\n findFiberByHostInstance: () => null,\n })\n\n console.info('Connecting devtools')\n\n try {\n connectToDevTools({\n host: 'localhost',\n port: 8097,\n useHttps: false,\n isAppActive: () => true,\n })\n } catch (e) {\n console.error(e)\n console.info('Error when connecting the devtools')\n }\n\n onProcessExit(() => {\n console.info('Disconnecting devtools')\n controller.abort()\n })\n })\n}\n","import { createFabric } from '@kubb/fabric-core'\nimport type { Fabric, FabricConfig, FabricMode } from '@kubb/fabric-core/types'\nimport { openDevtools } 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 if (config.devtools) {\n openDevtools()\n }\n\n const fabric = createFabric({ mode: config.mode })\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 { sortBy } from 'remeda'\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 sortBy(items.filter(Boolean) as Array<[key: string, item?: ParamItem]>, ([_key, item]) => {\n if (item?.children) {\n return 0 // Treat items with children as required (they'll get = {} if all children are optional)\n }\n // Priority order: required (0) → optional (1) → default-only (2)\n if (item?.optional) {\n return 1 // Optional parameters (with or without default)\n }\n if (item?.default) {\n // Parameters with default only (not marked as optional)\n // Note: While the ParamItem type suggests optional and default are mutually exclusive,\n // this handles the case where a parameter has a default value but isn't explicitly marked as optional\n return 2\n }\n return 0 // Required parameters\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 || !!item?.default)\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 // Check if this is a destructured parameter (object mode)\n const isDestructured = transformedName.startsWith('{')\n if (isDestructured) {\n // For destructured parameters, use \": type = {}\" syntax to make it optional\n acc.push(`${transformedName}: ${transformedType} = {}`)\n } else {\n // For inline parameters, use \"?: type\" syntax\n acc.push(`${transformedName}?: ${transformedType}`)\n }\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 * as React from 'react'\n\n// expose fabric core helpers\nexport { createContext, createFabric, createFile, FileManager, FileProcessor, TreeNode, useContext } from '@kubb/fabric-core'\n\n// react helpers\nexport const useState = React.useState\nexport const useEffect = React.useEffect\nexport const useReducer = React.useReducer\nexport const useRef = React.useRef\n\nexport { Const } from './components/Const.tsx'\nexport { Fabric } from './components/Fabric.tsx'\nexport { File } from './components/File.tsx'\nexport { Function } from './components/Function.tsx'\n// components\nexport { Root } from './components/Root.tsx'\nexport { Type } from './components/Type.tsx'\n\n// composables\nexport { useFabric } from './composables/useFabric.ts'\nexport { useFile } from './composables/useFile.ts'\nexport { useLifecycle } from './composables/useLifecycle.tsx'\n\n// factories\nexport { createReactFabric } from './createReactFabric.ts'\nexport { openDevtools } from './devtools.ts'\nexport { Runtime } from './Runtime.tsx'\n// utils\nexport { createFunctionParams, FunctionParams } from './utils/getFunctionParams.ts'\n"],"mappings":";;;;;;;;;;;;;;;ACmCA,SAAgB,MAAM,EAAE,UAAU,GAAG,SAAyC;CAC5E,MAAM,EAAE,MAAM,QAAQ,WAAW,MAAM,OAAO,YAAY;CAE1D,MAAM,WAAW,aAAa;AAE9B,KAAI,SAGF,SAAQ,iBAFU,SAAS,SAAS;EAAE,MAAM;EAAS;EAAO,CAAC,CAE1B;AAGrC,QACE,qBAAA,UAAA,EAAA,UAAA;EACG,OAAO,YACN,qBAAA,UAAA,EAAA,UAAA,CACG,YAAY,EAAE,UAAU,OAAO,UAAU,CAAC,EAC3C,oBAAC,MAAD,EAAM,CAAA,CACL,EAAA,CAAA;EAEJ,aAAa,oBAAA,UAAA,EAAA,UAAE,WAAU,CAAA;EAAC;EACpB;EACN,OACC,qBAAA,UAAA,EAAA,UAAA;GACG;GACA;GAAM;GACN,EAAA,CAAA,GAEH;EACA;EACC;EACF,WAAW,oBAAA,UAAA,EAAA,UAAE,aAAY,CAAA;EACzB,EAAA,CAAA;;AAIP,MAAM,cAAc;;;;;;ACrDpB,SAAgB,OAAsC,EAAE,UAAU,GAAG,SAAiD;CACpH,MAAM,EAAE,OAAO,EAAE,KAAK;CAEtB,MAAM,EAAE,SAASA,aAAW,YAAY;CAExC,MAAM,WAAW,aAAa;AAE9B,KAAI,SAGF,SAAQ,iBAFU,SAAS,SAAS;EAAE,MAAM;EAAO;EAAO,CAAC,CAExB;AAGrC,SAAQ,eAAe;EAAE;EAAM;EAAM,CAAC;AAEtC,QAAO,oBAAA,UAAA,EAAG,UAAY,CAAA;;AAGxB,OAAO,cAAc;;;;;;ACGrB,SAAgB,KAAoC,EAAE,UAAU,GAAG,SAA2C;CAC5G,MAAM,EAAE,UAAU,MAAM,OAAO,EAAE,EAAE,QAAQ,WAAW;CAEtD,MAAM,cAAc,gBAAgB;CACpC,MAAM,WAAW,aAAa;AAE9B,KAAI,SAGF,SAAQ,iBAFU,SAAS,SAAS;EAAE,MAAM;EAAQ;EAAO,CAAC,CAEzB;AAGrC,KAAI,CAAC,YAAY,CAAC,KAChB,QAAO,oBAAA,UAAA,EAAG,UAAY,CAAA;CAGxB,MAAM,OAAsB;EAC1B;EACA;EACA;EACA;EACA;EACA,SAAS,EAAE;EACX,SAAS,EAAE;EACX,SAAS,EAAE;EACZ;CAED,MAAM,CAAC,gBAAgB,YAAY,IAAI,KAAK;AAC5C,SAAQ,aAAa,aAAa;AAElC,QAAO,oBAAC,aAAD;EAAW,GAAI;EAAQ;EAAqB,CAAA;;AAGrD,KAAK,cAAc;;;;;;;AAanB,SAAS,WAAW,EAAE,UAAU,GAAG,SAA8C;CAC/E,MAAM,EAAE,MAAM,cAAc,aAAa,eAAe;CAExD,MAAM,WAAW,aAAa;AAE9B,KAAI,SAGF,SAAQ,iBAFU,SAAS,SAAS;EAAE,MAAM;EAAc;EAAO,CAAC,CAE/B;AAGrC,QACE,oBAAC,eAAD;EAAmB;EAAkB;EAA0B;EAA2B;EACvF;EACW,CAAA;;AAIlB,WAAW,cAAc;;;;;;;AAUzB,SAAS,WAAW,OAA4C;CAC9D,MAAM,EAAE,MAAM,MAAM,YAAY,YAAY;CAE5C,MAAM,WAAW,aAAa;CAC9B,MAAM,OAAOC,WAAS;AAEtB,KAAI,SAGF,SAAQ,iBAFU,SAAS,SAAS;EAAE,MAAM;EAAc;EAAO,CAAC,CAE/B;AAGrC,KAAI,KACF,MAAK,QAAQ,KAAK;EAChB;EACA;EACA;EACA;EACD,CAAC;AAGJ,QAAO,oBAAC,eAAD;EAAmB;EAAY;EAAkB;EAAqB;EAAW,CAAA;;AAG1F,WAAW,cAAc;;;;;;AASzB,SAAS,WAAW,OAA4C;CAC9D,MAAM,EAAE,MAAM,MAAM,MAAM,YAAY,gBAAgB;CAEtD,MAAM,WAAW,aAAa;CAC9B,MAAM,OAAOA,WAAS;AAEtB,KAAI,SAGF,SAAQ,iBAFU,SAAS,SAAS;EAAE,MAAM;EAAc;EAAO,CAAC,CAE/B;AAGrC,KAAI,KACF,MAAK,QAAQ,KAAK;EAChB;EACA;EACA;EACA;EACA;EACD,CAAC;AAGJ,QAAO,oBAAC,eAAD;EAAmB;EAAY;EAAY;EAAmB;EAAyB;EAAc,CAAA;;AAG9G,WAAW,cAAc;AAEzB,KAAK,SAAS;AACd,KAAK,SAAS;AACd,KAAK,SAAS;;;;;;AC9Hd,SAAgB,SAAS,EAAE,UAAU,GAAG,SAAoC;CAC1E,MAAM,EAAE,MAAM,SAAS,WAAW,QAAQ,WAAW,OAAO,UAAU,QAAQ,YAAY,UAAU;CAEpG,MAAM,WAAW,aAAa;AAE9B,KAAI,SAGF,SAAQ,iBAFU,SAAS,SAAS;EAAE,MAAM;EAAY;EAAO,CAAC,CAE7B;AAGrC,QACE,qBAAA,UAAA,EAAA,UAAA;EACG,OAAO,YACN,qBAAA,UAAA,EAAA,UAAA,CACG,YAAY,EAAE,UAAU,OAAO,UAAU,CAAC,EAC3C,oBAAC,MAAD,EAAM,CAAA,CACL,EAAA,CAAA;EAEJ,aAAa,oBAAA,UAAA,EAAA,UAAE,WAAU,CAAA;EACzB,aAAa,oBAAA,UAAA,EAAA,UAAE,YAAW,CAAA;EAC1B,SAAS,oBAAA,UAAA,EAAA,UAAE,UAAS,CAAA;EAAC;EACZ;EACT,YACC,qBAAA,UAAA,EAAA,UAAA;GACG;GACA,MAAM,QAAQ,SAAS,GAAG,SAAS,KAAK,KAAK,CAAC,MAAM,GAAG;GACvD;GACA,EAAA,CAAA;EACH;EACA;EAAO;EAAE,cAAc,CAAC,SAAS,qBAAA,UAAA,EAAA,UAAA,CAAE,MAAG,WAAc,EAAA,CAAA;EACrD,cAAc,SACb,qBAAA,UAAA,EAAA,UAAA;GAAE;GACU;GACT;GACA;GACA,EAAA,CAAA;EAEJ;EACD,oBAAC,MAAD,EAAM,CAAA;EACN,oBAAC,UAAD,EAAU,CAAA;EAET;EACD,oBAAC,MAAD,EAAM,CAAA;EACN,oBAAC,UAAD,EAAU,CAAA;EAET;EACA,EAAA,CAAA;;AAIP,SAAS,cAAc;;;;;;;AAevB,SAAS,cAAc,EAAE,UAAU,GAAG,SAA6B;CACjE,MAAM,EAAE,MAAM,SAAS,WAAW,QAAQ,WAAW,OAAO,UAAU,QAAQ,YAAY,OAAO,eAAe;CAEhH,MAAM,WAAW,aAAa;AAE9B,KAAI,SAGF,SAAQ,iBAFU,SAAS,SAAS;EAAE,MAAM;EAAiB;EAAO,CAAC,CAElC;AAErC,QACE,qBAAA,UAAA,EAAA,UAAA;EACG,OAAO,YACN,qBAAA,UAAA,EAAA,UAAA,CACG,YAAY,EAAE,UAAU,OAAO,UAAU,CAAC,EAC3C,oBAAC,MAAD,EAAM,CAAA,CACL,EAAA,CAAA;EAEJ,aAAa,oBAAA,UAAA,EAAA,UAAE,WAAU,CAAA;EACzB,aAAa,oBAAA,UAAA,EAAA,UAAE,YAAW,CAAA;EAAC;EACrB;EAAK;EAAI,SAAS,oBAAA,UAAA,EAAA,UAAE,UAAS,CAAA;EACnC,YACC,qBAAA,UAAA,EAAA,UAAA;GACG;GACA,MAAM,QAAQ,SAAS,GAAG,SAAS,KAAK,KAAK,CAAC,MAAM,GAAG;GACvD;GACA,EAAA,CAAA;EACH;EACA;EAAO;EAAE,cAAc,CAAC,SAAS,qBAAA,UAAA,EAAA,UAAA,CAAE,MAAG,WAAc,EAAA,CAAA;EACrD,cAAc,SACb,qBAAA,UAAA,EAAA,UAAA;GAAE;GACU;GACT;GACA;GACA,EAAA,CAAA;EAEJ,cACC,qBAAA,UAAA,EAAA,UAAA;GACG;GACA;GACD,oBAAC,MAAD,EAAM,CAAA;GACL,EAAA,CAAA;EAEJ,CAAC,cACA,qBAAA,UAAA,EAAA,UAAA;GACG;GACD,oBAAC,MAAD,EAAM,CAAA;GACN,oBAAC,UAAD,EAAU,CAAA;GAET;GACD,oBAAC,MAAD,EAAM,CAAA;GACN,oBAAC,UAAD,EAAU,CAAA;GAET;GACD,oBAAC,MAAD,EAAM,CAAA;GACL,EAAA,CAAA;EAEJ,EAAA,CAAA;;AAIP,cAAc,cAAc;AAC5B,SAAS,QAAQ;;;;;;ACrJjB,SAAgB,KAAK,EAAE,UAAU,GAAG,SAAwC;CAC1E,MAAM,EAAE,MAAM,QAAQ,WAAW,UAAU;CAE3C,MAAM,WAAW,aAAa;AAE9B,KAAI,SAGF,SAAQ,iBAFU,SAAS,SAAS;EAAE,MAAM;EAAQ;EAAO,CAAC,CAEzB;AAGrC,KAAI,KAAK,OAAO,EAAE,CAAC,aAAa,KAAK,KAAK,OAAO,EAAE,CACjD,OAAM,IAAI,MAAM,gEAAgE;AAGlF,QACE,qBAAA,UAAA,EAAA,UAAA;EACG,OAAO,YACN,qBAAA,UAAA,EAAA,UAAA,CACG,YAAY,EAAE,UAAU,OAAO,UAAU,CAAC,EAC3C,oBAAC,MAAD,EAAM,CAAA,CACL,EAAA,CAAA;EAEJ,aAAa,oBAAA,UAAA,EAAA,UAAE,WAAU,CAAA;EAAC;EACrB;EAAK;EAAI;EACd,EAAA,CAAA;;AAIP,KAAK,cAAc;;;AC5CnB,IAAI,SAAS;AAEb,SAAgB,eAAe;AAC7B,KAAI,OACF;CAIF,MAAM,eAAe;AACrB,cAAa,cAAc;AAC3B,cAAa,WAAW;AACxB,cAAa,SAAS;AACtB,cAAa,oBAAoB;AAIjC,cAAa,OAAO,uCAAuC;EACzD;GAEE,MAAM;GACN,OAAO;GACP,WAAW;GACX,SAAS;GACV;EACD;GAEE,MAAM;GACN,OAAO;GACP,WAAW;GACX,SAAS;GACV;EACD;GAEE,MAAM;GACN,OAAO;GACP,WAAW;GACX,SAAS;GACV;EACD;GAEE,MAAM;GACN,OAAO;GACP,WAAW;GACX,SAAS;GACV;EACD;GAEE,MAAM;GACN,OAAO;GACP,WAAW;GACX,SAAS;GACV;EACD;GAEE,MAAM;GACN,OAAO;GACP,WAAW;GACX,SAAS;GACV;EACD;GAEE,MAAM;GACN,OAAO;GACP,WAAW;GACX,SAAS;GACV;EACD;GAEE,MAAM;GACN,OAAO;GACP,WAAW;GACX,SAAS;GACV;EACF;AAID,QAAO,uBAAuB,KAAK,OAAO,aAAa;AACrD,UAAQ,KAAK,mBAAmB;EAChC,MAAM,aAAa,IAAI,iBAAiB;AACxC,MAAI,CAAC,OACW,OAAM,OAAO,CAAC,uBAAuB,EAAE;GACnD,QAAQ,WAAW;GACnB,OAAO;GACP,UAAU;GACX,CAAC,CACI,OAAO;AAGf,WAAS;EAGT,MAAM,EAAE,YAAY,sBAAsB,UAAU,WAAW;AAG/D,cAAY;AACZ,UAAQ,KAAK,wBAAwB;AAIrC,WAAS,mBAAmB;GAC1B,YAAY;GACZ,SAAS;GACT,qBAAqB;GAErB,+BAA+B;GAChC,CAAC;AAEF,UAAQ,KAAK,sBAAsB;AAEnC,MAAI;AACF,qBAAkB;IAChB,MAAM;IACN,MAAM;IACN,UAAU;IACV,mBAAmB;IACpB,CAAC;WACK,GAAG;AACV,WAAQ,MAAM,EAAE;AAChB,WAAQ,KAAK,qCAAqC;;AAGpD,sBAAoB;AAClB,WAAQ,KAAK,yBAAyB;AACtC,cAAW,OAAO;IAClB;GACF;;;;ACpIJ,SAAgB,kBACd,SAA4E,EAAE,EACjB;AAC7D,KAAI,OAAO,SACT,eAAc;CAGhB,MAAM,SAASC,eAAa,EAAE,MAAM,OAAO,MAAM,CAAC;AAElD,QAAO,IAAI,aAAa;EACtB,QAAQ,OAAO;EACf,QAAQ,OAAO;EACf,OAAO,OAAO;EACd,OAAO,OAAO;EACf,CAAC;AAEF,QAAO;;;;ACuBT,SAAS,MAAM,OAA+C;AAC5D,QAAO,OAAO,MAAM,OAAO,QAAQ,GAA6C,CAAC,MAAM,UAAU;AAC/F,MAAI,MAAM,SACR,QAAO;AAGT,MAAI,MAAM,SACR,QAAO;AAET,MAAI,MAAM,QAIR,QAAO;AAET,SAAO;GACP;;AAGJ,SAAS,WAAW,KAAa,MAAiB,SAAiC;CAEjF,MAAM,UAAU,MAAM,OAAO,QAAQ,KAAK,SAAS,CAAC;CAEpD,MAAM,QAAkB,EAAE;CAC1B,MAAM,QAAkB,EAAE;CAE1B,MAAM,WAAW,QAAQ,OAAO,CAAC,MAAM,UAAU,MAAM,YAAY,CAAC,CAAC,MAAM,QAAQ;AAEnF,SAAQ,SAAS,CAAC,KAAK,eAAe;AACpC,MAAI,WAAW;GACb,MAAM,OAAO,UAAU,KAAK;IAAE,GAAG;IAAW,MAAM,KAAA;IAAW,EAAE,QAAQ;AACvE,OAAI,UAAU,UAAU;IACtB,MAAM,WAAW,OAAO,QAAQ,UAAU,SAAS,CAChD,KAAK,CAAC,SAAS;AACd,YAAO;MACP,CACD,KAAK,KAAK;AAEb,QAAI,SACF,OAAM,KAAK,GAAG,KAAK,MAAM,SAAS,IAAI;QAEtC,OAAM,KAAK,KAAK;cAGd,QAAQ,SAAS,UAAU,QAAQ,cACrC,OAAM,KAAK,GAAG,IAAI,IAAI,OAAO;OAE7B,OAAM,KAAK,KAAK;AAIpB,OAAI,QAAQ,MAAM,CAAC,MAAM,UAAU,MAAM,KAAK,CAC5C,OAAM,KAAK,UAAU,KAAK;IAAE,GAAG;IAAW,SAAS,KAAA;IAAW,EAAE,QAAQ,CAAC;;GAG7E;CAEF,MAAM,OAAO,KAAK,SAAS,WAAW,MAAM,MAAM,SAAS,KAAK,MAAM,KAAK,KAAK,CAAC,MAAM,KAAA;CACvF,MAAM,OAAO,KAAK,OAAO,KAAK,OAAO,MAAM,SAAS,KAAK,MAAM,KAAK,KAAK,CAAC,MAAM,KAAA;AAEhF,KAAI,CAAC,KACH,QAAO;AAGT,QAAO,UACL,MACA;EACE;EACA,SAAS,KAAK;EACd,UAAU,CAAC,KAAK,UAAU,WAAW,KAAA;EACtC,EACD,QACD;;AAGH,SAAS,UAAU,MAAc,MAAiB,SAA0B;CAC1E,MAAM,MAAgB,EAAE;CACxB,MAAM,kBAAkB,QAAQ,gBAAgB,QAAQ,cAAc,KAAK,GAAG;CAC9E,MAAM,kBAAkB,QAAQ,iBAAiB,KAAK,OAAO,QAAQ,cAAc,KAAK,KAAK,GAAG,KAAK;AAErG,KAAI,QAAQ,SAAS,SACnB,QAAO;AAGT,KAAI,QAAQ,SAAS,cACnB,QAAO,KAAK,QAAQ,GAAG,gBAAgB,IAAI,KAAK,UAAU;AAI5D,KAAI,KAAK,QAAQ,QAAQ,SAAS,cAChC,KAAI,KAAK,SAGP,KADuB,gBAAgB,WAAW,IAAI,CAGpD,KAAI,KAAK,GAAG,gBAAgB,IAAI,gBAAgB,OAAO;KAGvD,KAAI,KAAK,GAAG,gBAAgB,KAAK,kBAAkB;KAGrD,KAAI,KAAK,GAAG,gBAAgB,IAAI,kBAAkB,KAAK,UAAU,MAAM,KAAK,YAAY,KAAK;UAEtF,KAAK,WAAW,QAAQ,SAAS,cAC1C,KAAI,KAAK,GAAG,gBAAgB,KAAK,KAAK,UAAU;UACvC,KAAK,MACd,KAAI,KAAK,GAAG,gBAAgB,KAAK,KAAK,QAAQ;UACrC,KAAK,SAAS,eACvB,KAAI,KAAK,OAAO,kBAAkB;KAElC,KAAI,KAAK,gBAAgB;AAG3B,QAAO,IAAI;;AAGb,SAAgB,kBAAkB,QAAgB,SAA0B;AAG1E,QAFgB,MAAM,OAAO,QAAQ,OAAgD,CAAC,CAGnF,QAAQ,KAAK,CAAC,KAAK,UAAU;AAC5B,MAAI,CAAC,KACH,QAAO;AAGT,MAAI,KAAK,UAAU;AACjB,OAAI,OAAO,KAAK,KAAK,SAAS,CAAC,WAAW,EACxC,QAAO;AAGT,OAAI,KAAK,SAAS,eAChB,QAAO,CAAC,GAAG,KAAK,kBAAkB,KAAK,UAAU,QAAQ,CAAC;GAG5D,MAAM,aAAa,WAAW,KAAK,MAAM,QAAQ;AACjD,OAAI,CAAC,WACH,QAAO;AAGT,UAAO,CAAC,GAAG,KAAK,WAAW;;EAG7B,MAAM,aAAa,UAAU,KAAK,MAAM,QAAQ;AAEhD,SAAO,CAAC,GAAG,KAAK,WAAW;IAC1B,EAAE,CAAa,CACjB,KAAK,KAAK;;AAGf,SAAgB,qBAAqB,QAAwB;AAC3D,QAAO;;AAIT,IAAa,iBAAb,MAAa,eAAe;CAC1B;CAEA,OAAO,QAAQ,QAAgB;AAC7B,SAAO,IAAI,eAAe,OAAO;;CAEnC,YAAY,QAAgB;AAC1B,QAAA,SAAe;;CAGjB,IAAI,SAAiB;AACnB,SAAO,MAAA;;CAGT,IAAI,aAAqB;EACvB,MAAM,WAAW,KAAa,CAAC,KAAK,UAA+C;AACjF,OAAI,MAAM,SACR,QAAO,OAAO,QAAQ,KAAK,SAAS,CAAC,OAAO,SAAS,IAAI;AAE3D,OAAI,KACF,KAAI,OAAO;AAGb,UAAO;;AAET,SAAO,OAAO,QAAQ,MAAA,OAAa,CAAC,OAAO,SAAS,EAAE,CAAW;;CAGnE,OAAO,EAAE,eAAe,kBAAoE,EAAE,EAAU;AACtG,SAAO,kBAAkB,MAAA,QAAc;GAAE,MAAM;GAAQ;GAAe;GAAe,CAAC;;CAGxF,WAAmB;AACjB,SAAO,kBAAkB,MAAA,QAAc,EAAE,MAAM,UAAU,CAAC;;CAE5D,gBAAwB;AACtB,SAAO,kBAAkB,MAAA,QAAc,EAAE,MAAM,eAAe,CAAC;;CAGjE,gBAAwB;AACtB,SAAO,kBAAkB,MAAA,QAAc,EAAE,MAAM,eAAe,CAAC;;;;;ACxOnE,MAAa,WAAA,aAAiB;AAC9B,MAAa,YAAA,aAAkB;AAC/B,MAAa,aAAA,aAAmB;AAChC,MAAa,SAAA,aAAe"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useContext","useFile","createFabric","#params"],"sources":["../src/utils/createJSDoc.ts","../src/components/Const.tsx","../src/components/Fabric.tsx","../src/components/File.tsx","../src/components/Function.tsx","../src/components/Type.tsx","../src/devtools.ts","../src/createReactFabric.ts","../src/utils/getFunctionParams.ts","../src/index.ts"],"sourcesContent":["export { createJSDoc } from '@kubb/fabric-core'\n","import { NodeTreeContext, provide, useNodeTree } from '@kubb/fabric-core'\nimport type { FabricReactElement, FabricReactNode, JSDoc, Key } from '../types.ts'\nimport { createJSDoc } from '../utils/createJSDoc.ts'\n\nexport type ConstProps = {\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 /**\n * Children nodes.\n */\n children?: FabricReactNode\n}\n\n/**\n * Generates a TypeScript constant declaration.\n */\nexport function Const({ children, ...props }: ConstProps): FabricReactElement {\n const { name, export: canExport, type, JSDoc, asConst } = props\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'Const', props })\n\n provide(NodeTreeContext, childTree)\n }\n\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 ' '\n )}\n = {children}\n {asConst && <> as const</>}\n </>\n )\n}\n\nConst.displayName = 'Const'\n","import { FabricContext, NodeTreeContext, provide, RootContext, useContext, useNodeTree } from '@kubb/fabric-core'\nimport type { FabricReactElement, FabricReactNode } from '../types.ts'\n\nexport type FabricProps<TMeta extends object = object> = {\n /**\n * Metadata associated with the App.\n */\n meta?: TMeta\n /**\n * Children nodes.\n */\n children?: FabricReactNode\n}\n\n/**\n * Fabric container containing the FabricContext carrying `meta` and an `exit` hook.\n */\nexport function Fabric<TMeta extends object = object>({ children, ...props }: FabricProps<TMeta>): FabricReactElement {\n const { meta = {} } = props\n\n const { exit } = useContext(RootContext)\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'App', props })\n\n provide(NodeTreeContext, childTree)\n }\n\n provide(FabricContext, { exit, meta })\n\n return <>{children}</>\n}\n\nFabric.displayName = 'Fabric'\n","import { FileContext, NodeTreeContext, provide, useFile, useFileManager, useNodeTree } from '@kubb/fabric-core'\nimport type { KubbFile } from '@kubb/fabric-core/types'\nimport type { FabricReactElement, FabricReactNode, Key } from '../types.ts'\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?: FabricReactNode\n}\n\n/**\n * Adds files to the FileManager\n */\nexport function File<TMeta extends object = object>({ children, ...props }: Props<TMeta>): FabricReactElement {\n const { baseName, path, meta = {}, footer, banner } = props\n\n const fileManager = useFileManager()\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'File', props })\n\n provide(NodeTreeContext, childTree)\n }\n\n if (!baseName || !path) {\n return <>{children}</>\n }\n\n const file: KubbFile.File = {\n baseName,\n path,\n meta,\n banner,\n footer,\n sources: [],\n imports: [],\n exports: [],\n }\n\n const [resolvedFile] = fileManager.add(file)\n provide(FileContext, resolvedFile)\n\n return <kubb-file {...props}>{children}</kubb-file>\n}\n\nFile.displayName = 'File'\n\ntype FileSourceProps = Omit<KubbFile.Source, 'value'> & {\n key?: Key\n children?: FabricReactNode\n}\n\n/**\n * File.Source\n *\n * Marks a block of source text to be associated with the current file when\n * rendering with the FileCollector. Children are treated as the source string.\n */\nfunction FileSource({ children, ...props }: FileSourceProps): FabricReactElement {\n const { name, isExportable, isIndexable, isTypeOnly } = props\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'FileSource', props })\n\n provide(NodeTreeContext, childTree)\n }\n\n return (\n <kubb-source name={name} isTypeOnly={isTypeOnly} isExportable={isExportable} isIndexable={isIndexable}>\n {children}\n </kubb-source>\n )\n}\n\nFileSource.displayName = 'FileSource'\n\nexport type FileExportProps = KubbFile.Export & { key?: Key }\n\n/**\n * File.Export\n *\n * Declares an export entry for the current file. This will be collected by\n * the FileCollector for later emission.\n */\nfunction FileExport(props: FileExportProps): FabricReactElement {\n const { name, path, isTypeOnly, asAlias } = props\n\n const nodeTree = useNodeTree()\n const file = useFile()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'FileExport', props })\n\n provide(NodeTreeContext, childTree)\n }\n\n if (file) {\n file.exports.push({\n name,\n path,\n asAlias,\n isTypeOnly,\n })\n }\n\n return <kubb-export name={name} path={path} isTypeOnly={isTypeOnly} asAlias={asAlias} />\n}\n\nFileExport.displayName = 'FileExport'\n\nexport type FileImportProps = KubbFile.Import & { key?: Key }\n\n/**\n * File.Import\n *\n * Declares an import entry for the current file.\n */\nfunction FileImport(props: FileImportProps): FabricReactElement {\n const { name, root, path, isTypeOnly, isNameSpace } = props\n\n const nodeTree = useNodeTree()\n const file = useFile()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'FileImport', props })\n\n provide(NodeTreeContext, childTree)\n }\n\n if (file) {\n file.imports.push({\n name,\n path,\n root,\n isNameSpace,\n isTypeOnly,\n })\n }\n\n return <kubb-import name={name} root={root} path={path} isNameSpace={isNameSpace} isTypeOnly={isTypeOnly} />\n}\n\nFileImport.displayName = 'FileImport'\n\nFile.Export = FileExport\nFile.Import = FileImport\nFile.Source = FileSource\n","import { NodeTreeContext, provide, useNodeTree } from '@kubb/fabric-core'\nimport type { FabricReactElement, FabricReactNode, JSDoc, Key } from '../types.ts'\nimport { createJSDoc } from '../utils/createJSDoc.ts'\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 behavior.\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 * ReturnType(see async for adding Promise type).\n */\n returnType?: string\n /**\n * Options for JSdocs.\n */\n JSDoc?: JSDoc\n /**\n * Children nodes.\n */\n children?: FabricReactNode\n}\n\n/**\n * Generates a TypeScript function declaration.\n */\nexport function Function({ children, ...props }: Props): FabricReactElement {\n const { name, default: isDefault, export: canExport, async, generics, params, returnType, JSDoc } = props\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'Function', props })\n\n provide(NodeTreeContext, childTree)\n }\n\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 />\n {/* Indent component to handle indentation*/}\n {children}\n <br />\n <dedent />\n {/* Indent component to handle indentation*/}\n {'}'}\n </>\n )\n}\n\nFunction.displayName = 'Function'\n\ntype ArrowFunctionProps = Props & {\n /**\n * Create Arrow function in one line\n */\n singleLine?: boolean\n}\n\n/**\n * ArrowFunction\n *\n * Renders an arrow function definition. Supports the same flags as `Function`.\n * Use `singleLine` to render the body as a single-line expression.\n */\nfunction ArrowFunction({ children, ...props }: ArrowFunctionProps) {\n const { name, default: isDefault, export: canExport, async, generics, params, returnType, JSDoc, singleLine } = props\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'ArrowFunction', props })\n\n provide(NodeTreeContext, childTree)\n }\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 />\n {/* Indent component to handle indentation*/}\n {children}\n <br />\n <dedent />\n {/* Indent component to handle indentation*/}\n {'}'}\n <br />\n </>\n )}\n </>\n )\n}\n\nArrowFunction.displayName = 'ArrowFunction'\nFunction.Arrow = ArrowFunction\n","import { NodeTreeContext, provide, useNodeTree } from '@kubb/fabric-core'\nimport type { FabricReactElement, FabricReactNode, JSDoc, Key } from '../types.ts'\nimport { createJSDoc } from '../utils/createJSDoc.ts'\n\nexport type TypeProps = {\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 /**\n * Children nodes.\n */\n children?: FabricReactNode\n}\n\n/**\n * Generates a TypeScript type declaration.\n */\nexport function Type({ children, ...props }: TypeProps): FabricReactElement {\n const { name, export: canExport, JSDoc } = props\n\n const nodeTree = useNodeTree()\n\n if (nodeTree) {\n const childTree = nodeTree.addChild({ type: 'Type', props })\n\n provide(NodeTreeContext, childTree)\n }\n\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 = 'Type'\n","import { spawn } from 'node:child_process'\nimport { onProcessExit } from '@kubb/fabric-core'\nimport ws from 'ws'\nimport { Renderer } from './Renderer.ts'\n\ndeclare global {\n var WebSocket: typeof WebSocket\n var isDevtoolsEnabled: any\n}\n\nlet isOpen = false\n\nexport function openDevtools() {\n if (isOpen) {\n return undefined\n }\n // Set up global polyfills BEFORE importing react-devtools-core\n // This is required because react-devtools-core expects these to be available\n const customGlobal = global as any\n customGlobal.WebSocket ||= ws\n customGlobal.window ||= global\n customGlobal.self ||= global\n customGlobal.isDevtoolsEnabled = true\n\n // Filter out Kubb internal components from devtools for a cleaner view.\n // See https://github.com/facebook/react/blob/edf6eac8a181860fd8a2d076a43806f1237495a1/packages/react-devtools-shared/src/types.js#L24\n customGlobal.window.__REACT_DEVTOOLS_COMPONENT_FILTERS__ = [\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'Context.Provider',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'Root',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'ErrorBoundary',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'kubb-file',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'kubb-text',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'kubb-import',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'kubb-export',\n isEnabled: true,\n isValid: true,\n },\n {\n // ComponentFilterDisplayName\n type: 2,\n value: 'kubb-source',\n isEnabled: true,\n isValid: true,\n },\n ]\n\n // biome-ignore lint/suspicious/noTsIgnore: cannot find types\n // @ts-ignore\n import('react-devtools-core').then(async (devtools) => {\n console.info('Opening devtools')\n const controller = new AbortController()\n if (!isOpen) {\n const child = spawn('npx', ['react-devtools@6.1.5'], {\n signal: controller.signal,\n stdio: 'pipe',\n detached: true,\n })\n child.unref()\n }\n\n isOpen = true\n\n // Destructure the functions from the module\n const { initialize, connectToDevTools } = devtools?.default || devtools\n\n // Initialize DevTools BEFORE importing Renderer (which imports React)\n initialize()\n console.info('Initializing devtools')\n\n // Inject the renderer BEFORE connecting to DevTools\n // This ensures DevTools can properly discover the custom renderer\n Renderer.injectIntoDevTools({\n bundleType: 1,\n version: '19.2.3',\n rendererPackageName: 'kubb',\n // findFiberByHostInstance is required for DevTools to map elements to fibers\n findFiberByHostInstance: () => null,\n })\n\n console.info('Connecting devtools')\n\n try {\n connectToDevTools({\n host: 'localhost',\n port: 8097,\n useHttps: false,\n isAppActive: () => true,\n })\n } catch (e) {\n console.error(e)\n console.info('Error when connecting the devtools')\n }\n\n onProcessExit(() => {\n console.info('Disconnecting devtools')\n controller.abort()\n })\n })\n}\n","import { createFabric } from '@kubb/fabric-core'\nimport type { Fabric, FabricConfig, FabricMode } from '@kubb/fabric-core/types'\nimport { openDevtools } 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 if (config.devtools) {\n openDevtools()\n }\n\n const fabric = createFabric({ mode: config.mode })\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 { sortBy } from 'remeda'\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 sortBy(items.filter(Boolean) as Array<[key: string, item?: ParamItem]>, ([_key, item]) => {\n if (item?.children) {\n return 0 // Treat items with children as required (they'll get = {} if all children are optional)\n }\n // Priority order: required (0) → optional (1) → default-only (2)\n if (item?.optional) {\n return 1 // Optional parameters (with or without default)\n }\n if (item?.default) {\n // Parameters with default only (not marked as optional)\n // Note: While the ParamItem type suggests optional and default are mutually exclusive,\n // this handles the case where a parameter has a default value but isn't explicitly marked as optional\n return 2\n }\n return 0 // Required parameters\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 || !!item?.default)\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 // Check if this is a destructured parameter (object mode)\n const isDestructured = transformedName.startsWith('{')\n if (isDestructured) {\n // For destructured parameters, use \": type = {}\" syntax to make it optional\n acc.push(`${transformedName}: ${transformedType} = {}`)\n } else {\n // For inline parameters, use \"?: type\" syntax\n acc.push(`${transformedName}?: ${transformedType}`)\n }\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\n/**\n * @deprecated use @kubb/ast\n */\nexport function createFunctionParams(params: Params): Params {\n return params\n}\n\n/**\n * @deprecated use @kubb/ast\n */\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 * as React from 'react'\n\n// expose fabric core helpers\nexport { createContext, createFabric, createFile, FileManager, FileProcessor, TreeNode, useContext } from '@kubb/fabric-core'\n\n// react helpers\nexport const useState = React.useState\nexport const useEffect = React.useEffect\nexport const useReducer = React.useReducer\nexport const useRef = React.useRef\n\nexport { Const } from './components/Const.tsx'\nexport { Fabric } from './components/Fabric.tsx'\nexport { File } from './components/File.tsx'\nexport { Function } from './components/Function.tsx'\n// components\nexport { Root } from './components/Root.tsx'\nexport { Type } from './components/Type.tsx'\n\n// composables\nexport { useFabric } from './composables/useFabric.ts'\nexport { useFile } from './composables/useFile.ts'\nexport { useLifecycle } from './composables/useLifecycle.tsx'\n\n// factories\nexport { createReactFabric } from './createReactFabric.ts'\nexport { openDevtools } from './devtools.ts'\nexport { Runtime } from './Runtime.tsx'\n// utils\nexport { createFunctionParams, FunctionParams } from './utils/getFunctionParams.ts'\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as __name } from "./chunk-BGCRLu6H.js";
|
|
2
|
-
import { c as FabricReactElement, l as FabricReactNode } from "./types-
|
|
3
|
-
import { t as JSX } from "./jsx-namespace-
|
|
2
|
+
import { c as FabricReactElement, l as FabricReactNode } from "./types-DG_Fmgyd.js";
|
|
3
|
+
import { t as JSX } from "./jsx-namespace-BUQfB16E.js";
|
|
4
4
|
import * as react from "react";
|
|
5
5
|
import * as React$1 from "react/jsx-runtime";
|
|
6
6
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as __name } from "./chunk-BGCRLu6H.js";
|
|
2
|
-
import { a as FabricExportProps, c as FabricReactElement, d as FabricTextProps, l as FabricReactNode, o as FabricFileProps, p as LineBreakProps, s as FabricImportProps, u as FabricSourceProps } from "./types-
|
|
2
|
+
import { a as FabricExportProps, c as FabricReactElement, d as FabricTextProps, l as FabricReactNode, o as FabricFileProps, p as LineBreakProps, s as FabricImportProps, u as FabricSourceProps } from "./types-DG_Fmgyd.js";
|
|
3
3
|
import React from "react";
|
|
4
4
|
|
|
5
5
|
//#region src/jsx-namespace.d.ts
|
|
@@ -31,4 +31,4 @@ declare namespace JSX$1 {
|
|
|
31
31
|
}
|
|
32
32
|
//#endregion
|
|
33
33
|
export { JSX$1 as t };
|
|
34
|
-
//# sourceMappingURL=jsx-namespace-
|
|
34
|
+
//# sourceMappingURL=jsx-namespace-BUQfB16E.d.ts.map
|
package/dist/jsx-runtime.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as __name } from "./chunk-BGCRLu6H.js";
|
|
2
|
-
import { c as FabricReactElement, l as FabricReactNode } from "./types-
|
|
3
|
-
import { t as JSX } from "./jsx-namespace-
|
|
2
|
+
import { c as FabricReactElement, l as FabricReactNode } from "./types-DG_Fmgyd.js";
|
|
3
|
+
import { t as JSX } from "./jsx-namespace-BUQfB16E.js";
|
|
4
4
|
import * as react from "react";
|
|
5
5
|
import * as React$1 from "react/jsx-runtime";
|
|
6
6
|
|
package/dist/plugins.d.ts
CHANGED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { r as __name } from "./chunk-BGCRLu6H.js";
|
|
2
|
+
import { c as FabricReactElement, h as types_d_exports } from "./types-DG_Fmgyd.js";
|
|
3
|
+
import { TreeNode } from "@kubb/fabric-core";
|
|
4
|
+
import * as _kubb_fabric_core_plugins0 from "@kubb/fabric-core/plugins";
|
|
5
|
+
|
|
6
|
+
//#region src/plugins/reactPlugin.d.ts
|
|
7
|
+
type Options = {
|
|
8
|
+
stdout?: NodeJS.WriteStream;
|
|
9
|
+
stdin?: NodeJS.ReadStream;
|
|
10
|
+
stderr?: NodeJS.WriteStream;
|
|
11
|
+
treeNode?: TreeNode<types_d_exports.ComponentNode>;
|
|
12
|
+
/**
|
|
13
|
+
* Set this to true to always see the result of the render in the console(line per render)
|
|
14
|
+
*/
|
|
15
|
+
debug?: boolean;
|
|
16
|
+
};
|
|
17
|
+
type ExtendOptions = {
|
|
18
|
+
render(Fabric: FabricReactElement): Promise<void>;
|
|
19
|
+
renderToString(Fabric: FabricReactElement): Promise<string>;
|
|
20
|
+
waitUntilExit(): Promise<void>;
|
|
21
|
+
unmount(error?: Error | number | null): void;
|
|
22
|
+
};
|
|
23
|
+
declare global {
|
|
24
|
+
namespace Kubb {
|
|
25
|
+
interface Fabric {
|
|
26
|
+
render(Fabric: FabricReactElement): Promise<void>;
|
|
27
|
+
renderToString(Fabric: FabricReactElement): Promise<string>;
|
|
28
|
+
waitUntilExit(): Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
declare const reactPlugin: _kubb_fabric_core_plugins0.Plugin<Options, ExtendOptions>;
|
|
33
|
+
//#endregion
|
|
34
|
+
export { reactPlugin as n, Options as t };
|
|
35
|
+
//# sourceMappingURL=reactPlugin-D2aNZpS7.d.ts.map
|
|
@@ -31,7 +31,13 @@ type Options = {
|
|
|
31
31
|
transformName?: (name: string) => string;
|
|
32
32
|
transformType?: (type: string) => string;
|
|
33
33
|
};
|
|
34
|
+
/**
|
|
35
|
+
* @deprecated use @kubb/ast
|
|
36
|
+
*/
|
|
34
37
|
declare function createFunctionParams(params: Params): Params;
|
|
38
|
+
/**
|
|
39
|
+
* @deprecated use @kubb/ast
|
|
40
|
+
*/
|
|
35
41
|
declare class FunctionParams {
|
|
36
42
|
#private;
|
|
37
43
|
static factory(params: Params): FunctionParams;
|
|
@@ -101,4 +107,4 @@ type FabricExportProps = KubbFile.Export;
|
|
|
101
107
|
type LineBreakProps = React.DetailedHTMLProps<React.HTMLAttributes<HTMLBRElement>, HTMLBRElement>;
|
|
102
108
|
//#endregion
|
|
103
109
|
export { Param as _, FabricExportProps as a, FabricReactElement as c, FabricTextProps as d, Key as f, FunctionParams as g, types_d_exports as h, ElementNames as i, FabricReactNode as l, TextNode as m, DOMNode as n, FabricFileProps as o, LineBreakProps as p, DOMNodeAttribute as r, FabricImportProps as s, DOMElement as t, FabricSourceProps as u, Params as v, createFunctionParams as y };
|
|
104
|
-
//# sourceMappingURL=types-
|
|
110
|
+
//# sourceMappingURL=types-DG_Fmgyd.d.ts.map
|
package/dist/types.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { _ as Param, a as FabricExportProps, c as FabricReactElement, d as FabricTextProps, f as Key, i as ElementNames, l as FabricReactNode, m as TextNode, n as DOMNode, o as FabricFileProps, p as LineBreakProps, r as DOMNodeAttribute, s as FabricImportProps, t as DOMElement, u as FabricSourceProps, v as Params } from "./types-
|
|
1
|
+
import { _ as Param, a as FabricExportProps, c as FabricReactElement, d as FabricTextProps, f as Key, i as ElementNames, l as FabricReactNode, m as TextNode, n as DOMNode, o as FabricFileProps, p as LineBreakProps, r as DOMNodeAttribute, s as FabricImportProps, t as DOMElement, u as FabricSourceProps, v as Params } from "./types-DG_Fmgyd.js";
|
|
2
2
|
export * from "@kubb/fabric-core/types";
|
|
3
3
|
export { DOMElement, DOMNode, DOMNodeAttribute, ElementNames, FabricExportProps, FabricFileProps, FabricImportProps, FabricReactElement, FabricReactNode, FabricSourceProps, FabricTextProps, Key, LineBreakProps, Param, Params, TextNode };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kubb/react-fabric",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.1",
|
|
4
4
|
"description": "React integration for Kubb's fabric - JSX runtime and component-based code generation with React reconciler for building type-safe generators",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
"react-devtools-core": "6.1.5",
|
|
107
107
|
"remeda": "^2.33.6",
|
|
108
108
|
"ws": "8.18.0",
|
|
109
|
-
"@kubb/fabric-core": "0.
|
|
109
|
+
"@kubb/fabric-core": "0.15.1"
|
|
110
110
|
},
|
|
111
111
|
"devDependencies": {
|
|
112
112
|
"@types/react": "^19.2.14",
|
package/src/devtools.ts
CHANGED
|
@@ -192,11 +192,16 @@ export function getFunctionParams(params: Params, options: Options): string {
|
|
|
192
192
|
.join(', ')
|
|
193
193
|
}
|
|
194
194
|
|
|
195
|
+
/**
|
|
196
|
+
* @deprecated use @kubb/ast
|
|
197
|
+
*/
|
|
195
198
|
export function createFunctionParams(params: Params): Params {
|
|
196
199
|
return params
|
|
197
200
|
}
|
|
198
|
-
|
|
199
|
-
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* @deprecated use @kubb/ast
|
|
204
|
+
*/
|
|
200
205
|
export class FunctionParams {
|
|
201
206
|
#params: Params
|
|
202
207
|
|
|
@@ -1,463 +0,0 @@
|
|
|
1
|
-
import { r as __name } from "./chunk-BGCRLu6H.js";
|
|
2
|
-
import { c as FabricReactElement, h as types_d_exports } from "./types-BJVZ7ita.js";
|
|
3
|
-
import { TreeNode } from "@kubb/fabric-core";
|
|
4
|
-
|
|
5
|
-
//#region ../fabric-core/src/KubbFile.d.ts
|
|
6
|
-
type ImportName = string | Array<string | {
|
|
7
|
-
propertyName: string;
|
|
8
|
-
name?: string;
|
|
9
|
-
}>;
|
|
10
|
-
type Import = {
|
|
11
|
-
/**
|
|
12
|
-
* Import name to be used
|
|
13
|
-
* @example ["useState"]
|
|
14
|
-
* @example "React"
|
|
15
|
-
*/
|
|
16
|
-
name: ImportName;
|
|
17
|
-
/**
|
|
18
|
-
* Path for the import
|
|
19
|
-
* @example '@kubb/core'
|
|
20
|
-
*/
|
|
21
|
-
path: string;
|
|
22
|
-
/**
|
|
23
|
-
* Add type-only import prefix.
|
|
24
|
-
* - `true` generates `import type { Type } from './path'`
|
|
25
|
-
* - `false` generates `import { Type } from './path'`
|
|
26
|
-
* @default false
|
|
27
|
-
*/
|
|
28
|
-
isTypeOnly?: boolean;
|
|
29
|
-
/**
|
|
30
|
-
* Import entire module as namespace.
|
|
31
|
-
* - `true` generates `import * as Name from './path'`
|
|
32
|
-
* - `false` generates standard import
|
|
33
|
-
* @default false
|
|
34
|
-
*/
|
|
35
|
-
isNameSpace?: boolean;
|
|
36
|
-
/**
|
|
37
|
-
* When root is set it will get the path with relative getRelativePath(root, path).
|
|
38
|
-
*/
|
|
39
|
-
root?: string;
|
|
40
|
-
};
|
|
41
|
-
type Source = {
|
|
42
|
-
name?: string;
|
|
43
|
-
value?: string;
|
|
44
|
-
/**
|
|
45
|
-
* Make this source a type-only export.
|
|
46
|
-
* - `true` marks source as type export
|
|
47
|
-
* - `false` marks source as value export
|
|
48
|
-
* @default false
|
|
49
|
-
*/
|
|
50
|
-
isTypeOnly?: boolean;
|
|
51
|
-
/**
|
|
52
|
-
* Include export keyword in source.
|
|
53
|
-
* - `true` generates exportable const or type
|
|
54
|
-
* - `false` generates internal declaration
|
|
55
|
-
* @default false
|
|
56
|
-
*/
|
|
57
|
-
isExportable?: boolean;
|
|
58
|
-
/**
|
|
59
|
-
* Include in barrel file generation.
|
|
60
|
-
* - `true` adds to barrel exports
|
|
61
|
-
* - `false` excludes from barrel exports
|
|
62
|
-
* @default false
|
|
63
|
-
*/
|
|
64
|
-
isIndexable?: boolean;
|
|
65
|
-
};
|
|
66
|
-
type Export = {
|
|
67
|
-
/**
|
|
68
|
-
* Export name to be used.
|
|
69
|
-
* @example ["useState"]
|
|
70
|
-
* @example "React"
|
|
71
|
-
*/
|
|
72
|
-
name?: string | Array<string>;
|
|
73
|
-
/**
|
|
74
|
-
* Path for the import.
|
|
75
|
-
* @example '@kubb/core'
|
|
76
|
-
*/
|
|
77
|
-
path: string;
|
|
78
|
-
/**
|
|
79
|
-
* Add type-only export prefix.
|
|
80
|
-
* - `true` generates `export type { Type } from './path'`
|
|
81
|
-
* - `false` generates `export { Type } from './path'`
|
|
82
|
-
* @default false
|
|
83
|
-
*/
|
|
84
|
-
isTypeOnly?: boolean;
|
|
85
|
-
/**
|
|
86
|
-
* Export as aliased namespace.
|
|
87
|
-
* - `true` generates `export * as aliasName from './path'`
|
|
88
|
-
* - `false` generates standard export
|
|
89
|
-
* @default false
|
|
90
|
-
*/
|
|
91
|
-
asAlias?: boolean;
|
|
92
|
-
};
|
|
93
|
-
type Extname = '.ts' | '.js' | '.tsx' | '.json' | `.${string}`;
|
|
94
|
-
/**
|
|
95
|
-
* Name to be used to dynamically create the baseName(based on input.path)
|
|
96
|
-
* Based on UNIX basename
|
|
97
|
-
* @link https://nodejs.org/api/path.html#pathbasenamepath-suffix
|
|
98
|
-
*/
|
|
99
|
-
type BaseName = `${string}.${string}`;
|
|
100
|
-
/**
|
|
101
|
-
* Path will be full qualified path to a specified file
|
|
102
|
-
*/
|
|
103
|
-
type Path = string;
|
|
104
|
-
type File<TMeta extends object = object> = {
|
|
105
|
-
/**
|
|
106
|
-
* Name to be used to create the path
|
|
107
|
-
* Based on UNIX basename, `${name}.extname`
|
|
108
|
-
* @link https://nodejs.org/api/path.html#pathbasenamepath-suffix
|
|
109
|
-
*/
|
|
110
|
-
baseName: BaseName;
|
|
111
|
-
/**
|
|
112
|
-
* Path will be full qualified path to a specified file
|
|
113
|
-
*/
|
|
114
|
-
path: Path;
|
|
115
|
-
sources: Array<Source>;
|
|
116
|
-
imports: Array<Import>;
|
|
117
|
-
exports: Array<Export>;
|
|
118
|
-
/**
|
|
119
|
-
* Use extra meta, this is getting used to generate the barrel/index files.
|
|
120
|
-
*/
|
|
121
|
-
meta?: TMeta;
|
|
122
|
-
banner?: string;
|
|
123
|
-
footer?: string;
|
|
124
|
-
};
|
|
125
|
-
type ResolvedFile<TMeta extends object = object> = File<TMeta> & {
|
|
126
|
-
/**
|
|
127
|
-
* @default hash
|
|
128
|
-
*/
|
|
129
|
-
id: string;
|
|
130
|
-
/**
|
|
131
|
-
* Contains the first part of the baseName, generated based on baseName
|
|
132
|
-
* @link https://nodejs.org/api/path.html#pathformatpathobject
|
|
133
|
-
*/
|
|
134
|
-
name: string;
|
|
135
|
-
extname: Extname;
|
|
136
|
-
imports: Array<Import>;
|
|
137
|
-
exports: Array<Export>;
|
|
138
|
-
};
|
|
139
|
-
//#endregion
|
|
140
|
-
//#region ../fabric-core/src/parsers/types.d.ts
|
|
141
|
-
type PrintOptions = {
|
|
142
|
-
extname?: Extname;
|
|
143
|
-
};
|
|
144
|
-
type Parser<TOptions = unknown, TMeta extends object = any> = {
|
|
145
|
-
name: string;
|
|
146
|
-
type: 'parser';
|
|
147
|
-
/**
|
|
148
|
-
* Undefined is being used for the defaultParser
|
|
149
|
-
*/
|
|
150
|
-
extNames: Array<Extname> | undefined;
|
|
151
|
-
install: Install<TOptions>;
|
|
152
|
-
/**
|
|
153
|
-
* Convert a file to string
|
|
154
|
-
*/
|
|
155
|
-
parse(file: ResolvedFile<TMeta>, options: PrintOptions): Promise<string> | string;
|
|
156
|
-
};
|
|
157
|
-
//#endregion
|
|
158
|
-
//#region ../fabric-core/src/utils/AsyncEventEmitter.d.ts
|
|
159
|
-
type Options$3 = {
|
|
160
|
-
mode?: FabricMode;
|
|
161
|
-
maxListener?: number;
|
|
162
|
-
};
|
|
163
|
-
declare class AsyncEventEmitter<TEvents extends Record<string, any>> {
|
|
164
|
-
#private;
|
|
165
|
-
constructor({
|
|
166
|
-
maxListener,
|
|
167
|
-
mode
|
|
168
|
-
}?: Options$3);
|
|
169
|
-
emit<TEventName extends keyof TEvents & string>(eventName: TEventName, ...eventArgs: TEvents[TEventName]): Promise<void>;
|
|
170
|
-
on<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: (...eventArg: TEvents[TEventName]) => void): void;
|
|
171
|
-
onOnce<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: (...eventArgs: TEvents[TEventName]) => void): void;
|
|
172
|
-
off<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: (...eventArg: TEvents[TEventName]) => void): void;
|
|
173
|
-
removeAll(): void;
|
|
174
|
-
}
|
|
175
|
-
//#endregion
|
|
176
|
-
//#region ../fabric-core/src/FileProcessor.d.ts
|
|
177
|
-
type ProcessFilesProps = {
|
|
178
|
-
parsers?: Map<Extname, Parser>;
|
|
179
|
-
extension?: Record<Extname, Extname | ''>;
|
|
180
|
-
dryRun?: boolean;
|
|
181
|
-
/**
|
|
182
|
-
* @default 'sequential'
|
|
183
|
-
*/
|
|
184
|
-
mode?: FabricMode;
|
|
185
|
-
};
|
|
186
|
-
type GetParseOptions = {
|
|
187
|
-
parsers?: Map<Extname, Parser>;
|
|
188
|
-
extension?: Record<Extname, Extname | ''>;
|
|
189
|
-
};
|
|
190
|
-
type Options$2 = {
|
|
191
|
-
events?: AsyncEventEmitter<FabricEvents>;
|
|
192
|
-
};
|
|
193
|
-
declare class FileProcessor {
|
|
194
|
-
#private;
|
|
195
|
-
events: AsyncEventEmitter<FabricEvents>;
|
|
196
|
-
constructor({
|
|
197
|
-
events
|
|
198
|
-
}?: Options$2);
|
|
199
|
-
parse(file: ResolvedFile, {
|
|
200
|
-
parsers,
|
|
201
|
-
extension
|
|
202
|
-
}?: GetParseOptions): Promise<string>;
|
|
203
|
-
run(files: Array<ResolvedFile>, {
|
|
204
|
-
parsers,
|
|
205
|
-
mode,
|
|
206
|
-
dryRun,
|
|
207
|
-
extension
|
|
208
|
-
}?: ProcessFilesProps): Promise<ResolvedFile[]>;
|
|
209
|
-
}
|
|
210
|
-
//#endregion
|
|
211
|
-
//#region ../fabric-core/src/FileManager.d.ts
|
|
212
|
-
type Options$1 = {
|
|
213
|
-
events?: AsyncEventEmitter<FabricEvents>;
|
|
214
|
-
};
|
|
215
|
-
declare class FileManager$1 {
|
|
216
|
-
#private;
|
|
217
|
-
events: AsyncEventEmitter<FabricEvents>;
|
|
218
|
-
processor: FileProcessor;
|
|
219
|
-
constructor({
|
|
220
|
-
events
|
|
221
|
-
}?: Options$1);
|
|
222
|
-
add(...files: Array<File>): Array<ResolvedFile>;
|
|
223
|
-
upsert(...files: Array<File>): Array<ResolvedFile>;
|
|
224
|
-
flush(): void;
|
|
225
|
-
getByPath(path: Path): ResolvedFile | null;
|
|
226
|
-
deleteByPath(path: Path): void;
|
|
227
|
-
clear(): void;
|
|
228
|
-
get files(): Array<ResolvedFile>;
|
|
229
|
-
write(options: ProcessFilesProps): Promise<ResolvedFile[]>;
|
|
230
|
-
}
|
|
231
|
-
//#endregion
|
|
232
|
-
//#region ../fabric-core/src/Fabric.d.ts
|
|
233
|
-
/**
|
|
234
|
-
* Defines core runtime options for Fabric.
|
|
235
|
-
*/
|
|
236
|
-
interface FabricOptions {
|
|
237
|
-
/**
|
|
238
|
-
* Determines how Fabric processes files.
|
|
239
|
-
* - `sequential`: files are processed one by one
|
|
240
|
-
* - `parallel`: files are processed concurrently
|
|
241
|
-
*
|
|
242
|
-
* @default 'sequential'
|
|
243
|
-
*/
|
|
244
|
-
mode?: FabricMode;
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Available modes for file processing.
|
|
248
|
-
* @default 'sequential'
|
|
249
|
-
*/
|
|
250
|
-
type FabricMode = 'sequential' | 'parallel';
|
|
251
|
-
/**
|
|
252
|
-
* Event definitions emitted during the Fabric lifecycle.
|
|
253
|
-
*
|
|
254
|
-
* These events allow plugins and external code to hook into different stages
|
|
255
|
-
* of the file generation process. All events are asynchronous and can be
|
|
256
|
-
* listened to using `fabric.context.on()` or `fabric.context.onOnce()`.
|
|
257
|
-
*
|
|
258
|
-
* @example
|
|
259
|
-
* ```ts
|
|
260
|
-
* fabric.context.on('lifecycle:start', async () => {
|
|
261
|
-
* console.log('Fabric started!')
|
|
262
|
-
* })
|
|
263
|
-
* ```
|
|
264
|
-
*/
|
|
265
|
-
interface FabricEvents {
|
|
266
|
-
/**
|
|
267
|
-
* Emitted when the Fabric application lifecycle begins.
|
|
268
|
-
* This is typically the first event fired when starting a Fabric run.
|
|
269
|
-
* Use this to perform initial setup or logging.
|
|
270
|
-
*/
|
|
271
|
-
'lifecycle:start': [];
|
|
272
|
-
/**
|
|
273
|
-
* Emitted when the Fabric application lifecycle completes.
|
|
274
|
-
* This is typically the last event fired after all processing is done.
|
|
275
|
-
* Use this for cleanup tasks or final reporting.
|
|
276
|
-
*/
|
|
277
|
-
'lifecycle:end': [];
|
|
278
|
-
/**
|
|
279
|
-
* Emitted when Fabric starts rendering (used with reactPlugin).
|
|
280
|
-
* Provides access to the Fabric instance for render-time operations.
|
|
281
|
-
*/
|
|
282
|
-
'lifecycle:render': [fabric: Fabric];
|
|
283
|
-
/**
|
|
284
|
-
* Emitted once before file processing begins.
|
|
285
|
-
* Provides the complete list of files that will be processed.
|
|
286
|
-
* Use this to prepare for batch operations or display initial file counts.
|
|
287
|
-
*/
|
|
288
|
-
'files:processing:start': [files: Array<ResolvedFile>];
|
|
289
|
-
/**
|
|
290
|
-
* Emitted when files are successfully added to the FileManager's internal cache.
|
|
291
|
-
* This happens after files pass through path and name resolution.
|
|
292
|
-
* Use this to track which files have been registered.
|
|
293
|
-
*/
|
|
294
|
-
'files:added': [files: Array<ResolvedFile>];
|
|
295
|
-
/**
|
|
296
|
-
* Emitted during file path resolution, before a file is cached.
|
|
297
|
-
* Listeners can modify the file's path property to customize output location.
|
|
298
|
-
* This is called for each file being added via `addFile()` or `upsertFile()`.
|
|
299
|
-
*/
|
|
300
|
-
'file:resolve:path': [file: File];
|
|
301
|
-
/**
|
|
302
|
-
* Emitted during file name resolution, before a file is cached.
|
|
303
|
-
* Listeners can modify the file's name-related properties to customize naming.
|
|
304
|
-
* This is called for each file being added via `addFile()` or `upsertFile()`.
|
|
305
|
-
*/
|
|
306
|
-
'file:resolve:name': [file: File];
|
|
307
|
-
/**
|
|
308
|
-
* Emitted just before files are written to disk.
|
|
309
|
-
* Provides all files that will be written in this batch.
|
|
310
|
-
* Use this to perform pre-write operations like creating directories.
|
|
311
|
-
*/
|
|
312
|
-
'files:writing:start': [files: Array<ResolvedFile>];
|
|
313
|
-
/**
|
|
314
|
-
* Emitted after all files have been successfully written to disk.
|
|
315
|
-
* Provides all files that were written in this batch.
|
|
316
|
-
* Use this for post-write operations like running formatters or reporting.
|
|
317
|
-
*/
|
|
318
|
-
'files:writing:end': [files: Array<ResolvedFile>];
|
|
319
|
-
/**
|
|
320
|
-
* Emitted when an individual file starts being processed.
|
|
321
|
-
* This happens for each file in the queue, before parsing.
|
|
322
|
-
* Use this for per-file setup or detailed logging.
|
|
323
|
-
*/
|
|
324
|
-
'file:processing:start': [file: ResolvedFile, index: number, total: number];
|
|
325
|
-
/**
|
|
326
|
-
* Emitted when an individual file completes processing.
|
|
327
|
-
* This happens after the file has been parsed and handled.
|
|
328
|
-
* Use this for per-file cleanup or progress tracking.
|
|
329
|
-
*/
|
|
330
|
-
'file:processing:end': [file: ResolvedFile, index: number, total: number];
|
|
331
|
-
/**
|
|
332
|
-
* Emitted after each file is processed, providing progress metrics.
|
|
333
|
-
* This is the primary event for implementing progress bars or tracking.
|
|
334
|
-
* Plugins like fsPlugin use this to write files to disk.
|
|
335
|
-
*
|
|
336
|
-
* @property processed - Number of files processed so far
|
|
337
|
-
* @property total - Total number of files to process
|
|
338
|
-
* @property percentage - Completion percentage (0-100)
|
|
339
|
-
* @property source - Optional parsed source code of the file
|
|
340
|
-
* @property file - The file that was just processed
|
|
341
|
-
*/
|
|
342
|
-
'file:processing:update': [{
|
|
343
|
-
processed: number;
|
|
344
|
-
total: number;
|
|
345
|
-
percentage: number;
|
|
346
|
-
source?: string;
|
|
347
|
-
file: ResolvedFile;
|
|
348
|
-
}];
|
|
349
|
-
/**
|
|
350
|
-
* Emitted once all files have been successfully processed.
|
|
351
|
-
* This marks the completion of the processing phase.
|
|
352
|
-
* Use this to perform batch operations on all processed files.
|
|
353
|
-
*/
|
|
354
|
-
'files:processing:end': [files: Array<ResolvedFile>];
|
|
355
|
-
}
|
|
356
|
-
/**
|
|
357
|
-
* Shared context passed to all plugins, parsers, and Fabric internals.
|
|
358
|
-
*/
|
|
359
|
-
interface FabricContext$1<T extends FabricOptions = FabricOptions> extends AsyncEventEmitter<FabricEvents> {
|
|
360
|
-
/** The active Fabric configuration. */
|
|
361
|
-
config: FabricConfig<T>;
|
|
362
|
-
/** The internal file manager handling file creation, merging, and writing. */
|
|
363
|
-
fileManager: FileManager$1;
|
|
364
|
-
/** List of files currently in memory. */
|
|
365
|
-
files: ResolvedFile[];
|
|
366
|
-
/** Add new files to the file manager. */
|
|
367
|
-
addFile(...files: File[]): Promise<void>;
|
|
368
|
-
/** Track installed plugins and parsers to prevent duplicates. */
|
|
369
|
-
installedPlugins: Set<Plugin>;
|
|
370
|
-
installedParsers: Map<Extname, Parser>;
|
|
371
|
-
}
|
|
372
|
-
/**
|
|
373
|
-
* Base configuration object for Fabric.
|
|
374
|
-
*/
|
|
375
|
-
type FabricConfig<T extends FabricOptions = FabricOptions> = T;
|
|
376
|
-
/**
|
|
377
|
-
* Utility type that checks whether all properties of `T` are optional.
|
|
378
|
-
*/
|
|
379
|
-
type AllOptional<T> = {} extends T ? true : false;
|
|
380
|
-
/**
|
|
381
|
-
* Defines the signature of a plugin or parser's `install` function.
|
|
382
|
-
*/
|
|
383
|
-
type Install<TOptions = unknown> = TOptions extends any[] ? (context: FabricContext$1, ...options: TOptions) => void | Promise<void> : AllOptional<TOptions> extends true ? (context: FabricContext$1, options?: TOptions) => void | Promise<void> : (context: FabricContext$1, options: TOptions) => void | Promise<void>;
|
|
384
|
-
/**
|
|
385
|
-
* Defines the signature of a plugin or parser's `inject` function.
|
|
386
|
-
* Returns an object that extends the Fabric instance.
|
|
387
|
-
*/
|
|
388
|
-
type Inject<TOptions = unknown, TExtension extends Record<string, any> = {}> = TOptions extends any[] ? (context: FabricContext$1, ...options: TOptions) => Partial<TExtension> : AllOptional<TOptions> extends true ? (context: FabricContext$1, options?: TOptions) => Partial<TExtension> : (context: FabricContext$1, options: TOptions) => Partial<TExtension>;
|
|
389
|
-
/**
|
|
390
|
-
* The main Fabric runtime interface.
|
|
391
|
-
* Provides access to the current context, registered plugins, files, and utility methods.
|
|
392
|
-
*/
|
|
393
|
-
interface Fabric<T extends FabricOptions = FabricOptions> extends Kubb.Fabric {
|
|
394
|
-
/** The shared context for this Fabric instance. */
|
|
395
|
-
context: FabricContext$1<T>;
|
|
396
|
-
/** The files managed by this Fabric instance. */
|
|
397
|
-
files: ResolvedFile[];
|
|
398
|
-
/**
|
|
399
|
-
* Install a plugin or parser into Fabric.
|
|
400
|
-
*
|
|
401
|
-
* @param target - The plugin or parser to install.
|
|
402
|
-
* @param options - Optional configuration or arguments for the target.
|
|
403
|
-
* @returns A Fabric instance extended by the plugin (if applicable).
|
|
404
|
-
*/
|
|
405
|
-
use<TPluginOptions = unknown, TMeta extends object = object, TExtension extends Record<string, any> = {}>(target: Plugin<TPluginOptions, TExtension> | Parser<TPluginOptions, TMeta>, ...options: TPluginOptions extends any[] ? NoInfer<TPluginOptions> : AllOptional<TPluginOptions> extends true ? [NoInfer<TPluginOptions>?] : [NoInfer<TPluginOptions>]): (this & TExtension) | Promise<this & TExtension>;
|
|
406
|
-
/**
|
|
407
|
-
* Add one or more files to the Fabric file manager.
|
|
408
|
-
*/
|
|
409
|
-
addFile(...files: File[]): Promise<void>;
|
|
410
|
-
/**
|
|
411
|
-
* Add one or more files to the Fabric file manager and merge the source, imports, exports
|
|
412
|
-
*/
|
|
413
|
-
upsertFile(...files: File[]): Promise<void>;
|
|
414
|
-
/**
|
|
415
|
-
* Unmount the Fabric instance and remove all registered event listeners.
|
|
416
|
-
* Plugins may extend this to perform additional cleanup (e.g. process signal listeners).
|
|
417
|
-
*/
|
|
418
|
-
unmount(error?: Error | number | null): void;
|
|
419
|
-
}
|
|
420
|
-
//#endregion
|
|
421
|
-
//#region ../fabric-core/src/plugins/types.d.ts
|
|
422
|
-
type Plugin<TOptions = unknown, TAppExtension extends Record<string, any> = {}> = {
|
|
423
|
-
name: string;
|
|
424
|
-
type: 'plugin';
|
|
425
|
-
install: Install<TOptions>;
|
|
426
|
-
/**
|
|
427
|
-
* Runtime app overrides or extensions.
|
|
428
|
-
* Merged into the app instance after install.
|
|
429
|
-
* This cannot be async
|
|
430
|
-
*/
|
|
431
|
-
inject?: Inject<TOptions, TAppExtension>;
|
|
432
|
-
};
|
|
433
|
-
//#endregion
|
|
434
|
-
//#region src/plugins/reactPlugin.d.ts
|
|
435
|
-
type Options = {
|
|
436
|
-
stdout?: NodeJS.WriteStream;
|
|
437
|
-
stdin?: NodeJS.ReadStream;
|
|
438
|
-
stderr?: NodeJS.WriteStream;
|
|
439
|
-
treeNode?: TreeNode<types_d_exports.ComponentNode>;
|
|
440
|
-
/**
|
|
441
|
-
* Set this to true to always see the result of the render in the console(line per render)
|
|
442
|
-
*/
|
|
443
|
-
debug?: boolean;
|
|
444
|
-
};
|
|
445
|
-
type ExtendOptions = {
|
|
446
|
-
render(Fabric: FabricReactElement): Promise<void>;
|
|
447
|
-
renderToString(Fabric: FabricReactElement): Promise<string>;
|
|
448
|
-
waitUntilExit(): Promise<void>;
|
|
449
|
-
unmount(error?: Error | number | null): void;
|
|
450
|
-
};
|
|
451
|
-
declare global {
|
|
452
|
-
namespace Kubb {
|
|
453
|
-
interface Fabric {
|
|
454
|
-
render(Fabric: FabricReactElement): Promise<void>;
|
|
455
|
-
renderToString(Fabric: FabricReactElement): Promise<string>;
|
|
456
|
-
waitUntilExit(): Promise<void>;
|
|
457
|
-
}
|
|
458
|
-
}
|
|
459
|
-
}
|
|
460
|
-
declare const reactPlugin: Plugin<Options, ExtendOptions>;
|
|
461
|
-
//#endregion
|
|
462
|
-
export { reactPlugin as n, Options as t };
|
|
463
|
-
//# sourceMappingURL=reactPlugin-CKiGUCKQ.d.ts.map
|