@kubb/core 3.14.3 → 3.15.0
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/{FileManager-Zd55TEM3.d.ts → FileManager-Cm7Iylcx.d.ts} +2 -2
- package/dist/{FileManager-3ug7EyFN.d.cts → FileManager-HxsypMy8.d.cts} +2 -2
- package/dist/{chunk-F5IHVBMD.js → chunk-7P6FFVGF.js} +5 -5
- package/dist/chunk-7P6FFVGF.js.map +1 -0
- package/dist/{chunk-RM6742YK.js → chunk-CMKZBNCX.js} +49 -23
- package/dist/chunk-CMKZBNCX.js.map +1 -0
- package/dist/{chunk-NK3PFGI7.cjs → chunk-FAQ7SBKL.cjs} +14 -14
- package/dist/{chunk-NK3PFGI7.cjs.map → chunk-FAQ7SBKL.cjs.map} +1 -1
- package/dist/{chunk-TC37PFUL.cjs → chunk-MKN7YSK2.cjs} +55 -22
- package/dist/chunk-MKN7YSK2.cjs.map +1 -0
- package/dist/{chunk-3GAXFWD7.cjs → chunk-TJJOSCFA.cjs} +7 -5
- package/dist/chunk-TJJOSCFA.cjs.map +1 -0
- package/dist/{chunk-GENFDSKH.js → chunk-XTSQKCYI.js} +3 -3
- package/dist/{chunk-GENFDSKH.js.map → chunk-XTSQKCYI.js.map} +1 -1
- package/dist/fs.cjs +12 -8
- package/dist/fs.d.cts +6 -2
- package/dist/fs.d.ts +6 -2
- package/dist/fs.js +1 -1
- package/dist/index.cjs +22 -19
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +8 -5
- package/dist/index.js.map +1 -1
- package/dist/logger.cjs +6 -6
- package/dist/logger.js +2 -2
- package/dist/mocks.cjs +3 -3
- package/dist/mocks.d.cts +2 -2
- package/dist/mocks.d.ts +2 -2
- package/dist/mocks.js +2 -2
- package/dist/{parser--5gRW-zL.d.ts → parser-CcELSk43.d.ts} +2 -2
- package/dist/{parser-t_YKG02d.d.cts → parser-Dwb7eMU3.d.cts} +2 -2
- package/dist/{types-CFmeCPcR.d.cts → types-CX9JVw2n.d.cts} +1 -2
- package/dist/{types-CFmeCPcR.d.ts → types-CX9JVw2n.d.ts} +1 -2
- package/dist/utils.cjs +17 -17
- package/dist/utils.d.cts +3 -3
- package/dist/utils.d.ts +3 -3
- package/dist/utils.js +2 -2
- package/package.json +4 -4
- package/src/build.ts +8 -2
- package/src/fs/exists.ts +36 -0
- package/src/fs/index.ts +3 -1
- package/src/fs/read.ts +0 -33
- package/src/fs/utils.ts +32 -0
- package/src/types.ts +1 -1
- package/dist/chunk-3GAXFWD7.cjs.map +0 -1
- package/dist/chunk-F5IHVBMD.js.map +0 -1
- package/dist/chunk-RM6742YK.js.map +0 -1
- package/dist/chunk-TC37PFUL.cjs.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/executeStrategies.ts","../src/PromiseManager.ts","../src/errors.ts","../src/plugin.ts","../src/PluginManager.ts","../src/config.ts","../src/build.ts","../src/BaseGenerator.ts","../src/PackageManager.ts"],"names":["path","resolve","plugin","require"],"mappings":"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","file":"index.js","sourcesContent":["type PromiseFunc<T = unknown, T2 = never> = (state?: T) => T2 extends never ? Promise<T> : Promise<T> | T2\n\ntype ValueOfPromiseFuncArray<TInput extends Array<unknown>> = TInput extends Array<PromiseFunc<infer X, infer Y>> ? X | Y : never\n\ntype SeqOutput<TInput extends Array<PromiseFunc<TValue, null>>, TValue> = Promise<Array<Awaited<ValueOfPromiseFuncArray<TInput>>>>\n\n/**\n * Chains promises\n */\nexport function hookSeq<TInput extends Array<PromiseFunc<TValue, null>>, TValue, TOutput = SeqOutput<TInput, TValue>>(promises: TInput): TOutput {\n return promises.filter(Boolean).reduce(\n (promise, func) => {\n if (typeof func !== 'function') {\n throw new Error('HookSeq needs a function that returns a promise `() => Promise<unknown>`')\n }\n\n return promise.then((state) => {\n const calledFunc = func(state as TValue)\n\n if (calledFunc) {\n return calledFunc.then(Array.prototype.concat.bind(state))\n }\n })\n },\n Promise.resolve([] as unknown),\n ) as TOutput\n}\n\ntype HookFirstOutput<TInput extends Array<PromiseFunc<TValue, null>>, TValue = unknown> = ValueOfPromiseFuncArray<TInput>\n\n/**\n * Chains promises, first non-null result stops and returns\n */\nexport function hookFirst<TInput extends Array<PromiseFunc<TValue, null>>, TValue = unknown, TOutput = HookFirstOutput<TInput, TValue>>(\n promises: TInput,\n nullCheck = (state: any) => state !== null,\n): TOutput {\n let promise: Promise<unknown> = Promise.resolve(null) as Promise<unknown>\n\n for (const func of promises.filter(Boolean)) {\n promise = promise.then((state) => {\n if (nullCheck(state)) {\n return state\n }\n\n return func(state as TValue)\n })\n }\n\n return promise as TOutput\n}\n\ntype HookParallelOutput<TInput extends Array<PromiseFunc<TValue, null>>, TValue> = Promise<PromiseSettledResult<Awaited<ValueOfPromiseFuncArray<TInput>>>[]>\n\n/**\n * Run promises in parallel with allSettled\n */\nexport function hookParallel<TInput extends Array<PromiseFunc<TValue, null>>, TValue = unknown, TOutput = HookParallelOutput<TInput, TValue>>(\n promises: TInput,\n): TOutput {\n return Promise.allSettled(promises.filter(Boolean).map((promise) => promise())) as TOutput\n}\n\nexport type Strategy = 'seq' | 'first' | 'parallel'\n\nexport type StrategySwitch<TStrategy extends Strategy, TInput extends Array<PromiseFunc<TValue, null>>, TValue> = TStrategy extends 'first'\n ? HookFirstOutput<TInput, TValue>\n : TStrategy extends 'seq'\n ? SeqOutput<TInput, TValue>\n : TStrategy extends 'parallel'\n ? HookParallelOutput<TInput, TValue>\n : never\n","import { hookFirst, hookParallel, hookSeq } from './utils/executeStrategies.ts'\n\nimport type { PossiblePromise } from './utils/types.ts'\nimport type { Strategy, StrategySwitch } from './utils/executeStrategies.ts'\n\ntype PromiseFunc<T = unknown, T2 = never> = () => T2 extends never ? Promise<T> : Promise<T> | T2\n\ntype Options<TState = any> = {\n nullCheck?: (state: TState) => boolean\n}\n\nexport class PromiseManager<TState = any> {\n #options: Options<TState> = {}\n\n constructor(options: Options<TState> = {}) {\n this.#options = options\n\n return this\n }\n\n run<TInput extends Array<PromiseFunc<TValue, null>>, TValue, TStrategy extends Strategy, TOutput = StrategySwitch<TStrategy, TInput, TValue>>(\n strategy: TStrategy,\n promises: TInput,\n ): TOutput {\n if (strategy === 'seq') {\n return hookSeq<TInput, TValue, TOutput>(promises)\n }\n\n if (strategy === 'first') {\n return hookFirst<TInput, TValue, TOutput>(promises, this.#options.nullCheck)\n }\n\n if (strategy === 'parallel') {\n return hookParallel<TInput, TValue, TOutput>(promises)\n }\n\n throw new Error(`${strategy} not implemented`)\n }\n}\n\nexport function isPromise<T>(result: PossiblePromise<T>): result is Promise<T> {\n return !!result && typeof (result as Promise<unknown>)?.then === 'function'\n}\n\nexport function isPromiseRejectedResult<T>(result: PromiseSettledResult<unknown>): result is Omit<PromiseRejectedResult, 'reason'> & { reason: T } {\n return result.status === 'rejected'\n}\n","export class ValidationPluginError extends Error {}\n","import path from 'node:path'\n\nimport type { FileManager } from './FileManager.ts'\nimport type { PluginManager } from './PluginManager.ts'\nimport type { Plugin, PluginContext, PluginFactoryOptions, UserPluginWithLifeCycle } from './types.ts'\n\ntype PluginFactory<T extends PluginFactoryOptions = PluginFactoryOptions> = (options: T['options']) => UserPluginWithLifeCycle<T>\n\ntype OptionalPluginFactory<T extends PluginFactoryOptions = PluginFactoryOptions> = (options?: T['options']) => UserPluginWithLifeCycle<T>\n\nexport function createPlugin<T extends PluginFactoryOptions = PluginFactoryOptions>(factory: PluginFactory<T>): OptionalPluginFactory<T> {\n return (options = {}) => {\n return factory(options)\n }\n}\n\ntype Options = {\n config: PluginContext['config']\n fileManager: FileManager\n pluginManager: PluginManager\n resolvePath: PluginContext['resolvePath']\n resolveName: PluginContext['resolveName']\n logger: PluginContext['logger']\n getPlugins: () => Array<Plugin>\n plugin?: PluginContext['plugin']\n}\n\n// not publicly exported\nexport type PluginCore = PluginFactoryOptions<'core', Options, Options, PluginContext, never>\n\nexport const pluginCore = createPlugin<PluginCore>((options) => {\n const { fileManager, pluginManager, resolvePath, resolveName, logger } = options\n\n return {\n name: 'core',\n options,\n key: ['core'],\n context() {\n return {\n get config() {\n return options.config\n },\n get plugins() {\n return options.getPlugins()\n },\n get plugin() {\n // see pluginManger.#execute where we override with `.call` the context with the correct plugin\n return options.plugin as NonNullable<Options['plugin']>\n },\n logger,\n fileManager,\n pluginManager,\n async addFile(...files) {\n const resolvedFiles = await fileManager.add(...files)\n\n if (!Array.isArray(resolvedFiles)) {\n return [resolvedFiles]\n }\n\n return resolvedFiles\n },\n resolvePath,\n resolveName,\n }\n },\n resolvePath(baseName) {\n const root = path.resolve(options.config.root, options.config.output.path)\n\n return path.resolve(root, baseName)\n },\n resolveName(name) {\n return name\n },\n }\n})\n","import { FileManager } from './FileManager.ts'\nimport { isPromise, isPromiseRejectedResult } from './PromiseManager.ts'\nimport { PromiseManager } from './PromiseManager.ts'\nimport { ValidationPluginError } from './errors.ts'\nimport { pluginCore } from './plugin.ts'\nimport { transformReservedWord } from './transformers/transformReservedWord.ts'\nimport { EventEmitter } from './utils/EventEmitter.ts'\nimport { setUniqueName } from './utils/uniqueName.ts'\n\nimport type { KubbFile } from './fs/index.ts'\nimport type { Logger } from './logger.ts'\nimport type { PluginCore } from './plugin.ts'\nimport { trim } from './transformers/trim.ts'\nimport type {\n Config,\n GetPluginFactoryOptions,\n Plugin,\n PluginFactoryOptions,\n PluginLifecycle,\n PluginLifecycleHooks,\n PluginParameter,\n PluginWithLifeCycle,\n ResolveNameParams,\n ResolvePathParams,\n UserPlugin,\n UserPluginWithLifeCycle,\n} from './types.ts'\n\ntype RequiredPluginLifecycle = Required<PluginLifecycle>\n\ntype Strategy = 'hookFirst' | 'hookForPlugin' | 'hookParallel' | 'hookSeq'\n\ntype Executer<H extends PluginLifecycleHooks = PluginLifecycleHooks> = {\n message: string\n strategy: Strategy\n hookName: H\n plugin: Plugin\n parameters?: unknown[] | undefined\n output?: unknown\n}\n\ntype ParseResult<H extends PluginLifecycleHooks> = RequiredPluginLifecycle[H]\n\ntype SafeParseResult<H extends PluginLifecycleHooks, Result = ReturnType<ParseResult<H>>> = {\n result: Result\n plugin: Plugin\n}\n\n// inspired by: https://github.com/rollup/rollup/blob/master/src/utils/PluginDriver.ts#\n\ntype Options = {\n logger: Logger\n}\n\ntype Events = {\n executing: [executer: Executer]\n executed: [executer: Executer]\n error: [error: Error]\n}\n\ntype GetFileProps<TOptions = object> = {\n name: string\n mode?: KubbFile.Mode\n extname: KubbFile.Extname\n pluginKey: Plugin['key']\n options?: TOptions\n}\n\nexport class PluginManager {\n readonly plugins = new Set<Plugin<GetPluginFactoryOptions<any>>>()\n readonly fileManager: FileManager\n readonly events: EventEmitter<Events> = new EventEmitter()\n\n readonly config: Config\n\n readonly executed: Array<Executer> = []\n readonly logger: Logger\n readonly options: Options\n readonly #core: Plugin<PluginCore>\n\n readonly #usedPluginNames: Record<string, number> = {}\n readonly #promiseManager: PromiseManager\n\n constructor(config: Config, options: Options) {\n this.config = config\n this.options = options\n this.logger = options.logger\n this.fileManager = new FileManager()\n this.#promiseManager = new PromiseManager({\n nullCheck: (state: SafeParseResult<'resolveName'> | null) => !!state?.result,\n })\n\n const core = pluginCore({\n config,\n logger: this.logger,\n pluginManager: this,\n fileManager: this.fileManager,\n resolvePath: this.resolvePath.bind(this),\n resolveName: this.resolveName.bind(this),\n getPlugins: this.#getSortedPlugins.bind(this),\n })\n\n // call core.context.call with empty context so we can transform `context()` to `context: {}`\n this.#core = this.#parse(core as unknown as UserPlugin, this as any, core.context.call(null as any)) as Plugin<PluginCore>\n ;[this.#core, ...(config.plugins || [])].forEach((plugin) => {\n const parsedPlugin = this.#parse(plugin as UserPlugin, this, this.#core.context)\n\n this.plugins.add(parsedPlugin)\n })\n\n return this\n }\n\n getFile<TOptions = object>({ name, mode, extname, pluginKey, options }: GetFileProps<TOptions>): KubbFile.File<{ pluginKey: Plugin['key'] }> {\n const baseName = `${name}${extname}` as const\n const path = this.resolvePath({ baseName, mode, pluginKey, options })\n\n if (!path) {\n throw new Error(`Filepath should be defined for resolvedName \"${name}\" and pluginKey [${JSON.stringify(pluginKey)}]`)\n }\n\n return {\n path,\n baseName,\n meta: {\n pluginKey,\n },\n sources: [],\n }\n }\n\n resolvePath = <TOptions = object>(params: ResolvePathParams<TOptions>): KubbFile.OptionalPath => {\n if (params.pluginKey) {\n const paths = this.hookForPluginSync({\n pluginKey: params.pluginKey,\n hookName: 'resolvePath',\n parameters: [params.baseName, params.mode, params.options as object],\n message: `Resolving path '${params.baseName}'`,\n })\n\n if (paths && paths?.length > 1) {\n this.logger.emit('debug', {\n date: new Date(),\n logs: [\n `Cannot return a path where the 'pluginKey' ${\n params.pluginKey ? JSON.stringify(params.pluginKey) : '\"'\n } is not unique enough\\n\\nPaths: ${JSON.stringify(paths, undefined, 2)}\\n\\nFalling back on the first item.\\n`,\n ],\n })\n }\n\n return paths?.at(0)\n }\n return this.hookFirstSync({\n hookName: 'resolvePath',\n parameters: [params.baseName, params.mode, params.options as object],\n message: `Resolving path '${params.baseName}'`,\n }).result\n }\n //TODO refactor by using the order of plugins and the cache of the fileManager instead of guessing and recreating the name/path\n resolveName = (params: ResolveNameParams): string => {\n if (params.pluginKey) {\n const names = this.hookForPluginSync({\n pluginKey: params.pluginKey,\n hookName: 'resolveName',\n parameters: [trim(params.name), params.type],\n message: `Resolving name '${params.name}' and type '${params.type}'`,\n })\n\n if (names && names?.length > 1) {\n this.logger.emit('debug', {\n date: new Date(),\n logs: [\n `Cannot return a name where the 'pluginKey' ${\n params.pluginKey ? JSON.stringify(params.pluginKey) : '\"'\n } is not unique enough\\n\\nNames: ${JSON.stringify(names, undefined, 2)}\\n\\nFalling back on the first item.\\n`,\n ],\n })\n }\n\n return transformReservedWord(names?.at(0) || params.name)\n }\n\n const name = this.hookFirstSync({\n hookName: 'resolveName',\n parameters: [trim(params.name), params.type],\n message: `Resolving name '${params.name}' and type '${params.type}'`,\n }).result\n\n return transformReservedWord(name)\n }\n\n /**\n * Instead of calling `pluginManager.events.on` you can use `pluginManager.on`. This one also has better types.\n */\n on<TEventName extends keyof Events & string>(eventName: TEventName, handler: (...eventArg: Events[TEventName]) => void): void {\n this.events.on(eventName, handler as any)\n }\n\n /**\n * Run a specific hookName for plugin x.\n */\n async hookForPlugin<H extends PluginLifecycleHooks>({\n pluginKey,\n hookName,\n parameters,\n message,\n }: {\n pluginKey: Plugin['key']\n hookName: H\n parameters: PluginParameter<H>\n message: string\n }): Promise<Array<ReturnType<ParseResult<H>> | null>> {\n const plugins = this.getPluginsByKey(hookName, pluginKey)\n\n this.logger.emit('progress_start', { id: hookName, size: plugins.length, message: 'Running plugins...' })\n\n const promises = plugins\n .map((plugin) => {\n return this.#execute<H>({\n strategy: 'hookFirst',\n hookName,\n parameters,\n plugin,\n message,\n })\n })\n .filter(Boolean)\n\n const items = await Promise.all(promises)\n\n this.logger.emit('progress_stop', { id: hookName })\n\n return items\n }\n /**\n * Run a specific hookName for plugin x.\n */\n\n hookForPluginSync<H extends PluginLifecycleHooks>({\n pluginKey,\n hookName,\n parameters,\n message,\n }: {\n pluginKey: Plugin['key']\n hookName: H\n parameters: PluginParameter<H>\n message: string\n }): Array<ReturnType<ParseResult<H>>> | null {\n const plugins = this.getPluginsByKey(hookName, pluginKey)\n\n const result = plugins\n .map((plugin) => {\n return this.#executeSync<H>({\n strategy: 'hookFirst',\n hookName,\n parameters,\n plugin,\n message,\n })\n })\n .filter(Boolean)\n\n return result\n }\n\n /**\n * First non-null result stops and will return it's value.\n */\n async hookFirst<H extends PluginLifecycleHooks>({\n hookName,\n parameters,\n skipped,\n message,\n }: {\n hookName: H\n parameters: PluginParameter<H>\n skipped?: ReadonlySet<Plugin> | null\n message: string\n }): Promise<SafeParseResult<H>> {\n const plugins = this.#getSortedPlugins(hookName).filter((plugin) => {\n return skipped ? skipped.has(plugin) : true\n })\n\n this.logger.emit('progress_start', { id: hookName, size: plugins.length })\n\n const promises = plugins.map((plugin) => {\n return async () => {\n const value = await this.#execute<H>({\n strategy: 'hookFirst',\n hookName,\n parameters,\n plugin,\n message,\n })\n\n return Promise.resolve({\n plugin,\n result: value,\n } as SafeParseResult<H>)\n }\n })\n\n const result = await this.#promiseManager.run('first', promises)\n\n this.logger.emit('progress_stop', { id: hookName })\n\n return result\n }\n\n /**\n * First non-null result stops and will return it's value.\n */\n hookFirstSync<H extends PluginLifecycleHooks>({\n hookName,\n parameters,\n skipped,\n message,\n }: {\n hookName: H\n parameters: PluginParameter<H>\n skipped?: ReadonlySet<Plugin> | null\n message: string\n }): SafeParseResult<H> {\n let parseResult: SafeParseResult<H> = null as unknown as SafeParseResult<H>\n const plugins = this.#getSortedPlugins(hookName).filter((plugin) => {\n return skipped ? skipped.has(plugin) : true\n })\n\n for (const plugin of plugins) {\n parseResult = {\n result: this.#executeSync<H>({\n strategy: 'hookFirst',\n hookName,\n parameters,\n plugin,\n message,\n }),\n plugin,\n } as SafeParseResult<H>\n\n if (parseResult?.result != null) {\n break\n }\n }\n\n return parseResult\n }\n\n /**\n * Run all plugins in parallel(order will be based on `this.plugin` and if `pre` or `post` is set).\n */\n async hookParallel<H extends PluginLifecycleHooks, TOuput = void>({\n hookName,\n parameters,\n message,\n }: {\n hookName: H\n parameters?: Parameters<RequiredPluginLifecycle[H]> | undefined\n message: string\n }): Promise<Awaited<TOuput>[]> {\n const plugins = this.#getSortedPlugins(hookName)\n this.logger.emit('progress_start', { id: hookName, size: plugins.length })\n\n const promises = plugins.map((plugin) => {\n return () =>\n this.#execute({\n strategy: 'hookParallel',\n hookName,\n parameters,\n plugin,\n message,\n }) as Promise<TOuput>\n })\n\n const results = await this.#promiseManager.run('parallel', promises)\n\n results.forEach((result, index) => {\n if (isPromiseRejectedResult<Error>(result)) {\n const plugin = this.#getSortedPlugins(hookName)[index]\n\n this.#catcher<H>(result.reason, plugin, hookName)\n }\n })\n\n this.logger.emit('progress_stop', { id: hookName })\n\n return results.filter((result) => result.status === 'fulfilled').map((result) => (result as PromiseFulfilledResult<Awaited<TOuput>>).value)\n }\n\n /**\n * Chains plugins\n */\n async hookSeq<H extends PluginLifecycleHooks>({\n hookName,\n parameters,\n message,\n }: {\n hookName: H\n parameters?: PluginParameter<H>\n message: string\n }): Promise<void> {\n const plugins = this.#getSortedPlugins(hookName)\n this.logger.emit('progress_start', { id: hookName, size: plugins.length })\n\n const promises = plugins.map((plugin) => {\n return () =>\n this.#execute({\n strategy: 'hookSeq',\n hookName,\n parameters,\n plugin,\n message,\n })\n })\n\n await this.#promiseManager.run('seq', promises)\n\n this.logger.emit('progress_stop', { id: hookName })\n }\n\n #getSortedPlugins(hookName?: keyof PluginLifecycle): Plugin[] {\n const plugins = [...this.plugins].filter((plugin) => plugin.name !== 'core')\n\n if (hookName) {\n return plugins.filter((plugin) => hookName in plugin)\n }\n // TODO add test case for sorting with pre/post\n\n return plugins\n .map((plugin) => {\n if (plugin.pre) {\n const isValid = plugin.pre.every((pluginName) => plugins.find((pluginToFind) => pluginToFind.name === pluginName))\n\n if (!isValid) {\n throw new ValidationPluginError(`This plugin has a pre set that is not valid(${JSON.stringify(plugin.pre, undefined, 2)})`)\n }\n }\n\n return plugin\n })\n .sort((a, b) => {\n if (b.pre?.includes(a.name)) {\n return 1\n }\n if (b.post?.includes(a.name)) {\n return -1\n }\n return 0\n })\n }\n\n getPluginByKey(pluginKey: Plugin['key']): Plugin | undefined {\n const plugins = [...this.plugins]\n const [searchPluginName] = pluginKey\n\n return plugins.find((item) => {\n const [name] = item.key\n\n return name === searchPluginName\n })\n }\n\n getPluginsByKey(hookName: keyof PluginWithLifeCycle, pluginKey: Plugin['key']): Plugin[] {\n const plugins = [...this.plugins]\n const [searchPluginName, searchIdentifier] = pluginKey\n\n const pluginByPluginName = plugins\n .filter((plugin) => hookName in plugin)\n .filter((item) => {\n const [name, identifier] = item.key\n\n const identifierCheck = identifier?.toString() === searchIdentifier?.toString()\n const nameCheck = name === searchPluginName\n\n if (searchIdentifier) {\n return identifierCheck && nameCheck\n }\n\n return nameCheck\n })\n\n if (!pluginByPluginName?.length) {\n // fallback on the core plugin when there is no match\n\n const corePlugin = plugins.find((plugin) => plugin.name === 'core' && hookName in plugin)\n\n if (corePlugin) {\n this.logger.emit('debug', {\n date: new Date(),\n logs: [`No hook '${hookName}' for pluginKey '${JSON.stringify(pluginKey)}' found, falling back on the '@kubb/core' plugin`],\n })\n } else {\n this.logger.emit('debug', {\n date: new Date(),\n logs: [`No hook '${hookName}' for pluginKey '${JSON.stringify(pluginKey)}' found, no fallback found in the '@kubb/core' plugin`],\n })\n }\n return corePlugin ? [corePlugin] : []\n }\n\n return pluginByPluginName\n }\n\n #addExecutedToCallStack(executer: Executer | undefined) {\n if (executer) {\n this.events.emit('executed', executer)\n this.executed.push(executer)\n\n this.logger.emit('progressed', { id: executer.hookName, message: `${executer.plugin.name}: ${executer.message}` })\n }\n }\n\n /**\n * Run an async plugin hook and return the result.\n * @param hookName Name of the plugin hook. Must be either in `PluginHooks` or `OutputPluginValueHooks`.\n * @param args Arguments passed to the plugin hook.\n * @param plugin The actual pluginObject to run.\n */\n // Implementation signature\n #execute<H extends PluginLifecycleHooks>({\n strategy,\n hookName,\n parameters,\n plugin,\n message,\n }: {\n strategy: Strategy\n hookName: H\n parameters: unknown[] | undefined\n plugin: PluginWithLifeCycle\n message: string\n }): Promise<ReturnType<ParseResult<H>> | null> | null {\n const hook = plugin[hookName]\n let output: unknown\n\n if (!hook) {\n return null\n }\n\n this.events.emit('executing', { strategy, hookName, parameters, plugin, message })\n const promise = new Promise((resolve) => {\n resolve(undefined)\n })\n\n const task = promise\n .then(() => {\n if (typeof hook === 'function') {\n const possiblePromiseResult = (hook as Function).apply({ ...this.#core.context, plugin }, parameters) as Promise<ReturnType<ParseResult<H>>>\n\n if (isPromise(possiblePromiseResult)) {\n return Promise.resolve(possiblePromiseResult)\n }\n return possiblePromiseResult\n }\n\n return hook\n })\n .then((result) => {\n output = result\n\n this.#addExecutedToCallStack({\n parameters,\n output,\n strategy,\n hookName,\n plugin,\n message,\n })\n\n return result\n })\n .catch((e: Error) => {\n this.#catcher<H>(e, plugin, hookName)\n\n return null\n })\n\n return task\n }\n\n /**\n * Run a sync plugin hook and return the result.\n * @param hookName Name of the plugin hook. Must be in `PluginHooks`.\n * @param args Arguments passed to the plugin hook.\n * @param plugin The acutal plugin\n * @param replaceContext When passed, the plugin context can be overridden.\n */\n #executeSync<H extends PluginLifecycleHooks>({\n strategy,\n hookName,\n parameters,\n plugin,\n message,\n }: {\n strategy: Strategy\n hookName: H\n parameters: PluginParameter<H>\n plugin: PluginWithLifeCycle\n message: string\n }): ReturnType<ParseResult<H>> | null {\n const hook = plugin[hookName]\n let output: unknown\n\n if (!hook) {\n return null\n }\n\n this.events.emit('executing', { strategy, hookName, parameters, plugin, message })\n\n try {\n if (typeof hook === 'function') {\n const fn = (hook as Function).apply({ ...this.#core.context, plugin }, parameters) as ReturnType<ParseResult<H>>\n\n output = fn\n\n this.#addExecutedToCallStack({\n parameters,\n output,\n strategy,\n hookName,\n plugin,\n message,\n })\n\n return fn\n }\n\n output = hook\n\n this.#addExecutedToCallStack({\n parameters,\n output,\n strategy,\n hookName,\n plugin,\n message,\n })\n\n return hook\n } catch (e) {\n this.#catcher<H>(e as Error, plugin, hookName)\n\n return null\n }\n }\n\n #catcher<H extends PluginLifecycleHooks>(cause: Error, plugin?: Plugin, hookName?: H) {\n const text = `${cause.message} (plugin: ${plugin?.name || 'unknown'}, hook: ${hookName || 'unknown'})`\n\n this.logger.emit('error', text, cause)\n this.events.emit('error', cause)\n }\n\n #parse<TPlugin extends UserPluginWithLifeCycle>(\n plugin: TPlugin,\n pluginManager: PluginManager,\n context: PluginCore['context'] | undefined,\n ): Plugin<GetPluginFactoryOptions<TPlugin>> {\n const usedPluginNames = pluginManager.#usedPluginNames\n\n setUniqueName(plugin.name, usedPluginNames)\n\n const key = [plugin.name, usedPluginNames[plugin.name]].filter(Boolean) as [typeof plugin.name, string]\n\n if (plugin.context && typeof plugin.context === 'function') {\n return {\n ...plugin,\n key,\n context: (plugin.context as Function).call(context) as typeof plugin.context,\n } as unknown as Plugin<GetPluginFactoryOptions<TPlugin>>\n }\n\n return {\n ...plugin,\n key,\n } as unknown as Plugin<GetPluginFactoryOptions<TPlugin>>\n }\n\n static getDependedPlugins<\n T1 extends PluginFactoryOptions,\n T2 extends PluginFactoryOptions = never,\n T3 extends PluginFactoryOptions = never,\n TOutput = T3 extends never ? (T2 extends never ? [T1: Plugin<T1>] : [T1: Plugin<T1>, T2: Plugin<T2>]) : [T1: Plugin<T1>, T2: Plugin<T2>, T3: Plugin<T3>],\n >(plugins: Array<Plugin>, dependedPluginNames: string | string[]): TOutput {\n let pluginNames: string[] = []\n if (typeof dependedPluginNames === 'string') {\n pluginNames = [dependedPluginNames]\n } else {\n pluginNames = dependedPluginNames\n }\n\n return pluginNames.map((pluginName) => {\n const plugin = plugins.find((plugin) => plugin.name === pluginName)\n if (!plugin) {\n throw new ValidationPluginError(`This plugin depends on the ${pluginName} plugin.`)\n }\n return plugin\n }) as TOutput\n }\n\n static get hooks() {\n return ['buildStart', 'resolvePath', 'resolveName', 'buildEnd'] as const\n }\n}\n","import type { PossiblePromise } from './utils/types.ts'\nimport type { InputPath, UserConfig } from './types.ts'\n\ntype Args = {\n /**\n * Path to `kubb.config.js`\n */\n config?: string\n /**\n * Watch changes on input\n */\n watch?: boolean\n\n /**\n * Log level to report when using the CLI\n *\n * `silent` will hide all information that is not relevant\n *\n * `info` will show all information possible(not related to the PluginManager)\n *\n * `debug` will show all information possible(related to the PluginManager), handy for seeing logs\n * @default `silent`\n */\n logLevel?: string\n /**\n * Run Kubb with Bun\n */\n bun?: boolean\n}\n\n/**\n * Type helper to make it easier to use vite.config.ts accepts a direct UserConfig object, or a function that returns it. The function receives a ConfigEnv object.\n */\nexport function defineConfig(\n options:\n | PossiblePromise<UserConfig | Array<UserConfig>>\n | ((\n /** The options derived from the CLI flags */\n args: Args,\n ) => PossiblePromise<UserConfig | Array<UserConfig>>),\n): typeof options {\n return options\n}\n\nexport function isInputPath(result: UserConfig | undefined): result is UserConfig<InputPath> {\n return !!result && 'path' in (result?.input as any)\n}\n","import { clean, read } from './fs/index.ts'\nimport type { KubbFile } from './fs/index.ts'\nimport { type FileManager, processFiles } from './FileManager.ts'\nimport { PluginManager } from './PluginManager.ts'\nimport { isInputPath } from './config.ts'\nimport { createLogger } from './logger.ts'\nimport { URLPath } from './utils/URLPath.ts'\n\nimport { join, resolve } from 'node:path'\nimport { getRelativePath } from './fs/index.ts'\nimport type { Logger } from './logger.ts'\nimport type { Config, Output, UserConfig } from './types.ts'\n\ntype BuildOptions = {\n config: UserConfig\n /**\n * @default Logger without the spinner\n */\n logger?: Logger\n pluginManager?: PluginManager\n}\n\ntype BuildOutput = {\n files: FileManager['files']\n pluginManager: PluginManager\n /**\n * Only for safeBuild\n */\n error?: Error\n}\n\nexport async function setup(options: BuildOptions): Promise<PluginManager> {\n if (options.pluginManager) {\n return options.pluginManager\n }\n\n const { config: userConfig, logger = createLogger() } = options\n\n try {\n if (isInputPath(userConfig) && !new URLPath(userConfig.input.path).isURL) {\n await read(userConfig.input.path)\n }\n } catch (e) {\n if (isInputPath(userConfig)) {\n throw new Error(\n `Cannot read file/URL defined in \\`input.path\\` or set with \\`kubb generate PATH\\` in the CLI of your Kubb config ${userConfig.input.path}`,\n {\n cause: e,\n },\n )\n }\n }\n\n const definedConfig: Config = {\n root: userConfig.root || process.cwd(),\n ...userConfig,\n output: {\n write: true,\n barrelType: 'named',\n extension: {\n '.ts': '.ts',\n },\n defaultBanner: 'simple',\n ...userConfig.output,\n },\n plugins: userConfig.plugins as Config['plugins'],\n }\n\n if (definedConfig.output.clean) {\n await clean(definedConfig.output.path)\n await clean(join(definedConfig.root, '.kubb'))\n }\n\n return new PluginManager(definedConfig, { logger })\n}\n\nexport async function build(options: BuildOptions): Promise<BuildOutput> {\n const { files, pluginManager, error } = await safeBuild(options)\n\n if (error) throw error\n\n return {\n files,\n pluginManager,\n error,\n }\n}\n\nexport async function safeBuild(options: BuildOptions): Promise<BuildOutput> {\n let files = []\n const pluginManager = await setup(options)\n const config = pluginManager.config\n\n try {\n pluginManager.events.on('executing', ({ plugin, message }) => {\n pluginManager.logger.emit('debug', { date: new Date(), logs: [`Executing pluginKey ${plugin.key?.join('.')} | ${message}`] })\n })\n\n pluginManager.events.on('executed', ({ plugin, message, output }) => {\n pluginManager.logger.emit('debug', {\n date: new Date(),\n logs: [`Executed pluginKey ${plugin.key?.join('.')} | ${message} | ${JSON.stringify(output, undefined, 2)}`],\n })\n })\n\n await pluginManager.hookParallel({\n hookName: 'buildStart',\n parameters: [config],\n message: 'buildStart',\n })\n\n // create root barrel file\n const root = resolve(config.root)\n const rootPath = resolve(root, config.output.path, 'index.ts')\n const barrelFiles = pluginManager.fileManager.files.filter((file) => {\n return file.sources.some((source) => source.isIndexable)\n })\n\n const rootFile: KubbFile.File = {\n path: rootPath,\n baseName: 'index.ts',\n exports: barrelFiles\n .flatMap((file) => {\n const containsOnlyTypes = file.sources?.every((source) => source.isTypeOnly)\n return file.sources\n ?.map((source) => {\n if (!file.path || !source.isIndexable) {\n return undefined\n }\n\n // validate of the file is coming from plugin x, needs pluginKey on every file TODO update typing\n const plugin = [...pluginManager.plugins].find((item) => {\n const meta = file.meta as any\n return item.key === meta?.pluginKey\n })\n const pluginOptions = plugin?.options as { output?: Output<any> }\n\n if (!pluginOptions || pluginOptions?.output?.barrelType === false) {\n return undefined\n }\n\n return {\n name: config.output.barrelType === 'all' ? undefined : [source.name],\n path: getRelativePath(rootPath, file.path),\n isTypeOnly: config.output.barrelType === 'all' ? containsOnlyTypes : source.isTypeOnly,\n } as KubbFile.Export\n })\n .filter(Boolean)\n })\n .filter(Boolean),\n sources: [],\n meta: {},\n }\n\n if (config.output.barrelType) {\n await pluginManager.fileManager.add(rootFile)\n }\n\n files = await processFiles({\n root: config.root,\n extension: config.output.extension,\n dryRun: !config.output.write,\n files: pluginManager.fileManager.files,\n logger: pluginManager.logger,\n })\n\n await pluginManager.hookParallel({ hookName: 'buildEnd', message: `Build stopped for ${config.name}` })\n\n pluginManager.fileManager.clear()\n } catch (e) {\n return {\n files: [],\n pluginManager,\n error: e as Error,\n }\n }\n\n return {\n files,\n pluginManager,\n }\n}\n","/**\n * Abstract class that contains the building blocks for plugins to create their own Generator\n * @link idea based on https://github.com/colinhacks/zod/blob/master/src/types.ts#L137\n */\nexport abstract class BaseGenerator<TOptions = unknown, TContext = unknown> {\n #options: TOptions = {} as TOptions\n #context: TContext = {} as TContext\n\n constructor(options?: TOptions, context?: TContext) {\n if (context) {\n this.#context = context\n }\n\n if (options) {\n this.#options = options\n }\n\n return this\n }\n\n get options(): TOptions {\n return this.#options\n }\n\n get context(): TContext {\n return this.#context\n }\n\n set options(options: TOptions) {\n this.#options = { ...this.#options, ...options }\n }\n\n abstract build(...params: unknown[]): unknown\n}\n","import mod from 'node:module'\nimport os from 'node:os'\nimport { pathToFileURL } from 'node:url'\n\nimport { findUp, findUpSync } from 'find-up'\nimport { coerce, satisfies } from 'semver'\n\nimport { read, readSync } from './fs/index.ts'\n\ntype PackageJSON = {\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n}\n\ntype DependencyName = string\n\ntype DependencyVersion = string\n\nexport class PackageManager {\n static #cache: Record<DependencyName, DependencyVersion> = {}\n\n #cwd?: string\n #SLASHES = new Set(['/', '\\\\'])\n constructor(workspace?: string) {\n if (workspace) {\n this.#cwd = workspace\n }\n\n return this\n }\n\n set workspace(workspace: string) {\n this.#cwd = workspace\n }\n\n get workspace(): string | undefined {\n return this.#cwd\n }\n\n normalizeDirectory(directory: string): string {\n if (!this.#SLASHES.has(directory[directory.length - 1]!)) {\n return `${directory}/`\n }\n\n return directory\n }\n\n getLocation(path: string): string {\n let location = path\n\n if (this.#cwd) {\n const require = mod.createRequire(this.normalizeDirectory(this.#cwd))\n location = require.resolve(path)\n }\n\n return location\n }\n\n async import(path: string): Promise<any | undefined> {\n try {\n let location = this.getLocation(path)\n\n if (os.platform() === 'win32') {\n location = pathToFileURL(location).href\n }\n\n const module = await import(location)\n\n return module?.default ?? module\n } catch (e) {\n console.error(e)\n return undefined\n }\n }\n\n async getPackageJSON(): Promise<PackageJSON | undefined> {\n const pkgPath = await findUp(['package.json'], {\n cwd: this.#cwd,\n })\n if (!pkgPath) {\n return undefined\n }\n\n const json = await read(pkgPath)\n\n return JSON.parse(json) as PackageJSON\n }\n\n getPackageJSONSync(): PackageJSON | undefined {\n const pkgPath = findUpSync(['package.json'], {\n cwd: this.#cwd,\n })\n if (!pkgPath) {\n return undefined\n }\n\n const json = readSync(pkgPath)\n\n return JSON.parse(json) as PackageJSON\n }\n\n static setVersion(dependency: DependencyName, version: DependencyVersion): void {\n PackageManager.#cache[dependency] = version\n }\n\n #match(packageJSON: PackageJSON, dependency: DependencyName | RegExp): string | undefined {\n const dependencies = {\n ...(packageJSON['dependencies'] || {}),\n ...(packageJSON['devDependencies'] || {}),\n }\n\n if (typeof dependency === 'string' && dependencies[dependency]) {\n return dependencies[dependency]\n }\n\n const matchedDependency = Object.keys(dependencies).find((dep) => dep.match(dependency))\n\n return matchedDependency ? dependencies[matchedDependency] : undefined\n }\n\n async getVersion(dependency: DependencyName | RegExp): Promise<DependencyVersion | undefined> {\n if (typeof dependency === 'string' && PackageManager.#cache[dependency]) {\n return PackageManager.#cache[dependency]\n }\n\n const packageJSON = await this.getPackageJSON()\n\n if (!packageJSON) {\n return undefined\n }\n\n return this.#match(packageJSON, dependency)\n }\n\n getVersionSync(dependency: DependencyName | RegExp): DependencyVersion | undefined {\n if (typeof dependency === 'string' && PackageManager.#cache[dependency]) {\n return PackageManager.#cache[dependency]\n }\n\n const packageJSON = this.getPackageJSONSync()\n\n if (!packageJSON) {\n return undefined\n }\n\n return this.#match(packageJSON, dependency)\n }\n\n async isValid(dependency: DependencyName | RegExp, version: DependencyVersion): Promise<boolean> {\n const packageVersion = await this.getVersion(dependency)\n\n if (!packageVersion) {\n return false\n }\n\n if (packageVersion === version) {\n return true\n }\n\n const semVer = coerce(packageVersion)\n\n if (!semVer) {\n throw new Error(`${packageVersion} is not valid`)\n }\n\n return satisfies(semVer, version)\n }\n isValidSync(dependency: DependencyName | RegExp, version: DependencyVersion): boolean {\n const packageVersion = this.getVersionSync(dependency)\n\n if (!packageVersion) {\n return false\n }\n\n if (version === 'next' && packageVersion === version) {\n return true\n }\n\n const semVer = coerce(packageVersion)\n\n if (!semVer) {\n return false\n }\n\n return satisfies(semVer, version)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils/executeStrategies.ts","../src/PromiseManager.ts","../src/errors.ts","../src/plugin.ts","../src/PluginManager.ts","../src/config.ts","../src/build.ts","../src/BaseGenerator.ts","../src/PackageManager.ts"],"names":["path","resolve","plugin","require"],"mappings":"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","file":"index.js","sourcesContent":["type PromiseFunc<T = unknown, T2 = never> = (state?: T) => T2 extends never ? Promise<T> : Promise<T> | T2\n\ntype ValueOfPromiseFuncArray<TInput extends Array<unknown>> = TInput extends Array<PromiseFunc<infer X, infer Y>> ? X | Y : never\n\ntype SeqOutput<TInput extends Array<PromiseFunc<TValue, null>>, TValue> = Promise<Array<Awaited<ValueOfPromiseFuncArray<TInput>>>>\n\n/**\n * Chains promises\n */\nexport function hookSeq<TInput extends Array<PromiseFunc<TValue, null>>, TValue, TOutput = SeqOutput<TInput, TValue>>(promises: TInput): TOutput {\n return promises.filter(Boolean).reduce(\n (promise, func) => {\n if (typeof func !== 'function') {\n throw new Error('HookSeq needs a function that returns a promise `() => Promise<unknown>`')\n }\n\n return promise.then((state) => {\n const calledFunc = func(state as TValue)\n\n if (calledFunc) {\n return calledFunc.then(Array.prototype.concat.bind(state))\n }\n })\n },\n Promise.resolve([] as unknown),\n ) as TOutput\n}\n\ntype HookFirstOutput<TInput extends Array<PromiseFunc<TValue, null>>, TValue = unknown> = ValueOfPromiseFuncArray<TInput>\n\n/**\n * Chains promises, first non-null result stops and returns\n */\nexport function hookFirst<TInput extends Array<PromiseFunc<TValue, null>>, TValue = unknown, TOutput = HookFirstOutput<TInput, TValue>>(\n promises: TInput,\n nullCheck = (state: any) => state !== null,\n): TOutput {\n let promise: Promise<unknown> = Promise.resolve(null) as Promise<unknown>\n\n for (const func of promises.filter(Boolean)) {\n promise = promise.then((state) => {\n if (nullCheck(state)) {\n return state\n }\n\n return func(state as TValue)\n })\n }\n\n return promise as TOutput\n}\n\ntype HookParallelOutput<TInput extends Array<PromiseFunc<TValue, null>>, TValue> = Promise<PromiseSettledResult<Awaited<ValueOfPromiseFuncArray<TInput>>>[]>\n\n/**\n * Run promises in parallel with allSettled\n */\nexport function hookParallel<TInput extends Array<PromiseFunc<TValue, null>>, TValue = unknown, TOutput = HookParallelOutput<TInput, TValue>>(\n promises: TInput,\n): TOutput {\n return Promise.allSettled(promises.filter(Boolean).map((promise) => promise())) as TOutput\n}\n\nexport type Strategy = 'seq' | 'first' | 'parallel'\n\nexport type StrategySwitch<TStrategy extends Strategy, TInput extends Array<PromiseFunc<TValue, null>>, TValue> = TStrategy extends 'first'\n ? HookFirstOutput<TInput, TValue>\n : TStrategy extends 'seq'\n ? SeqOutput<TInput, TValue>\n : TStrategy extends 'parallel'\n ? HookParallelOutput<TInput, TValue>\n : never\n","import { hookFirst, hookParallel, hookSeq } from './utils/executeStrategies.ts'\n\nimport type { PossiblePromise } from './utils/types.ts'\nimport type { Strategy, StrategySwitch } from './utils/executeStrategies.ts'\n\ntype PromiseFunc<T = unknown, T2 = never> = () => T2 extends never ? Promise<T> : Promise<T> | T2\n\ntype Options<TState = any> = {\n nullCheck?: (state: TState) => boolean\n}\n\nexport class PromiseManager<TState = any> {\n #options: Options<TState> = {}\n\n constructor(options: Options<TState> = {}) {\n this.#options = options\n\n return this\n }\n\n run<TInput extends Array<PromiseFunc<TValue, null>>, TValue, TStrategy extends Strategy, TOutput = StrategySwitch<TStrategy, TInput, TValue>>(\n strategy: TStrategy,\n promises: TInput,\n ): TOutput {\n if (strategy === 'seq') {\n return hookSeq<TInput, TValue, TOutput>(promises)\n }\n\n if (strategy === 'first') {\n return hookFirst<TInput, TValue, TOutput>(promises, this.#options.nullCheck)\n }\n\n if (strategy === 'parallel') {\n return hookParallel<TInput, TValue, TOutput>(promises)\n }\n\n throw new Error(`${strategy} not implemented`)\n }\n}\n\nexport function isPromise<T>(result: PossiblePromise<T>): result is Promise<T> {\n return !!result && typeof (result as Promise<unknown>)?.then === 'function'\n}\n\nexport function isPromiseRejectedResult<T>(result: PromiseSettledResult<unknown>): result is Omit<PromiseRejectedResult, 'reason'> & { reason: T } {\n return result.status === 'rejected'\n}\n","export class ValidationPluginError extends Error {}\n","import path from 'node:path'\n\nimport type { FileManager } from './FileManager.ts'\nimport type { PluginManager } from './PluginManager.ts'\nimport type { Plugin, PluginContext, PluginFactoryOptions, UserPluginWithLifeCycle } from './types.ts'\n\ntype PluginFactory<T extends PluginFactoryOptions = PluginFactoryOptions> = (options: T['options']) => UserPluginWithLifeCycle<T>\n\ntype OptionalPluginFactory<T extends PluginFactoryOptions = PluginFactoryOptions> = (options?: T['options']) => UserPluginWithLifeCycle<T>\n\nexport function createPlugin<T extends PluginFactoryOptions = PluginFactoryOptions>(factory: PluginFactory<T>): OptionalPluginFactory<T> {\n return (options = {}) => {\n return factory(options)\n }\n}\n\ntype Options = {\n config: PluginContext['config']\n fileManager: FileManager\n pluginManager: PluginManager\n resolvePath: PluginContext['resolvePath']\n resolveName: PluginContext['resolveName']\n logger: PluginContext['logger']\n getPlugins: () => Array<Plugin>\n plugin?: PluginContext['plugin']\n}\n\n// not publicly exported\nexport type PluginCore = PluginFactoryOptions<'core', Options, Options, PluginContext, never>\n\nexport const pluginCore = createPlugin<PluginCore>((options) => {\n const { fileManager, pluginManager, resolvePath, resolveName, logger } = options\n\n return {\n name: 'core',\n options,\n key: ['core'],\n context() {\n return {\n get config() {\n return options.config\n },\n get plugins() {\n return options.getPlugins()\n },\n get plugin() {\n // see pluginManger.#execute where we override with `.call` the context with the correct plugin\n return options.plugin as NonNullable<Options['plugin']>\n },\n logger,\n fileManager,\n pluginManager,\n async addFile(...files) {\n const resolvedFiles = await fileManager.add(...files)\n\n if (!Array.isArray(resolvedFiles)) {\n return [resolvedFiles]\n }\n\n return resolvedFiles\n },\n resolvePath,\n resolveName,\n }\n },\n resolvePath(baseName) {\n const root = path.resolve(options.config.root, options.config.output.path)\n\n return path.resolve(root, baseName)\n },\n resolveName(name) {\n return name\n },\n }\n})\n","import { FileManager } from './FileManager.ts'\nimport { isPromise, isPromiseRejectedResult } from './PromiseManager.ts'\nimport { PromiseManager } from './PromiseManager.ts'\nimport { ValidationPluginError } from './errors.ts'\nimport { pluginCore } from './plugin.ts'\nimport { transformReservedWord } from './transformers/transformReservedWord.ts'\nimport { EventEmitter } from './utils/EventEmitter.ts'\nimport { setUniqueName } from './utils/uniqueName.ts'\n\nimport type { KubbFile } from './fs/index.ts'\nimport type { Logger } from './logger.ts'\nimport type { PluginCore } from './plugin.ts'\nimport { trim } from './transformers/trim.ts'\nimport type {\n Config,\n GetPluginFactoryOptions,\n Plugin,\n PluginFactoryOptions,\n PluginLifecycle,\n PluginLifecycleHooks,\n PluginParameter,\n PluginWithLifeCycle,\n ResolveNameParams,\n ResolvePathParams,\n UserPlugin,\n UserPluginWithLifeCycle,\n} from './types.ts'\n\ntype RequiredPluginLifecycle = Required<PluginLifecycle>\n\ntype Strategy = 'hookFirst' | 'hookForPlugin' | 'hookParallel' | 'hookSeq'\n\ntype Executer<H extends PluginLifecycleHooks = PluginLifecycleHooks> = {\n message: string\n strategy: Strategy\n hookName: H\n plugin: Plugin\n parameters?: unknown[] | undefined\n output?: unknown\n}\n\ntype ParseResult<H extends PluginLifecycleHooks> = RequiredPluginLifecycle[H]\n\ntype SafeParseResult<H extends PluginLifecycleHooks, Result = ReturnType<ParseResult<H>>> = {\n result: Result\n plugin: Plugin\n}\n\n// inspired by: https://github.com/rollup/rollup/blob/master/src/utils/PluginDriver.ts#\n\ntype Options = {\n logger: Logger\n}\n\ntype Events = {\n executing: [executer: Executer]\n executed: [executer: Executer]\n error: [error: Error]\n}\n\ntype GetFileProps<TOptions = object> = {\n name: string\n mode?: KubbFile.Mode\n extname: KubbFile.Extname\n pluginKey: Plugin['key']\n options?: TOptions\n}\n\nexport class PluginManager {\n readonly plugins = new Set<Plugin<GetPluginFactoryOptions<any>>>()\n readonly fileManager: FileManager\n readonly events: EventEmitter<Events> = new EventEmitter()\n\n readonly config: Config\n\n readonly executed: Array<Executer> = []\n readonly logger: Logger\n readonly options: Options\n readonly #core: Plugin<PluginCore>\n\n readonly #usedPluginNames: Record<string, number> = {}\n readonly #promiseManager: PromiseManager\n\n constructor(config: Config, options: Options) {\n this.config = config\n this.options = options\n this.logger = options.logger\n this.fileManager = new FileManager()\n this.#promiseManager = new PromiseManager({\n nullCheck: (state: SafeParseResult<'resolveName'> | null) => !!state?.result,\n })\n\n const core = pluginCore({\n config,\n logger: this.logger,\n pluginManager: this,\n fileManager: this.fileManager,\n resolvePath: this.resolvePath.bind(this),\n resolveName: this.resolveName.bind(this),\n getPlugins: this.#getSortedPlugins.bind(this),\n })\n\n // call core.context.call with empty context so we can transform `context()` to `context: {}`\n this.#core = this.#parse(core as unknown as UserPlugin, this as any, core.context.call(null as any)) as Plugin<PluginCore>\n ;[this.#core, ...(config.plugins || [])].forEach((plugin) => {\n const parsedPlugin = this.#parse(plugin as UserPlugin, this, this.#core.context)\n\n this.plugins.add(parsedPlugin)\n })\n\n return this\n }\n\n getFile<TOptions = object>({ name, mode, extname, pluginKey, options }: GetFileProps<TOptions>): KubbFile.File<{ pluginKey: Plugin['key'] }> {\n const baseName = `${name}${extname}` as const\n const path = this.resolvePath({ baseName, mode, pluginKey, options })\n\n if (!path) {\n throw new Error(`Filepath should be defined for resolvedName \"${name}\" and pluginKey [${JSON.stringify(pluginKey)}]`)\n }\n\n return {\n path,\n baseName,\n meta: {\n pluginKey,\n },\n sources: [],\n }\n }\n\n resolvePath = <TOptions = object>(params: ResolvePathParams<TOptions>): KubbFile.OptionalPath => {\n if (params.pluginKey) {\n const paths = this.hookForPluginSync({\n pluginKey: params.pluginKey,\n hookName: 'resolvePath',\n parameters: [params.baseName, params.mode, params.options as object],\n message: `Resolving path '${params.baseName}'`,\n })\n\n if (paths && paths?.length > 1) {\n this.logger.emit('debug', {\n date: new Date(),\n logs: [\n `Cannot return a path where the 'pluginKey' ${\n params.pluginKey ? JSON.stringify(params.pluginKey) : '\"'\n } is not unique enough\\n\\nPaths: ${JSON.stringify(paths, undefined, 2)}\\n\\nFalling back on the first item.\\n`,\n ],\n })\n }\n\n return paths?.at(0)\n }\n return this.hookFirstSync({\n hookName: 'resolvePath',\n parameters: [params.baseName, params.mode, params.options as object],\n message: `Resolving path '${params.baseName}'`,\n }).result\n }\n //TODO refactor by using the order of plugins and the cache of the fileManager instead of guessing and recreating the name/path\n resolveName = (params: ResolveNameParams): string => {\n if (params.pluginKey) {\n const names = this.hookForPluginSync({\n pluginKey: params.pluginKey,\n hookName: 'resolveName',\n parameters: [trim(params.name), params.type],\n message: `Resolving name '${params.name}' and type '${params.type}'`,\n })\n\n if (names && names?.length > 1) {\n this.logger.emit('debug', {\n date: new Date(),\n logs: [\n `Cannot return a name where the 'pluginKey' ${\n params.pluginKey ? JSON.stringify(params.pluginKey) : '\"'\n } is not unique enough\\n\\nNames: ${JSON.stringify(names, undefined, 2)}\\n\\nFalling back on the first item.\\n`,\n ],\n })\n }\n\n return transformReservedWord(names?.at(0) || params.name)\n }\n\n const name = this.hookFirstSync({\n hookName: 'resolveName',\n parameters: [trim(params.name), params.type],\n message: `Resolving name '${params.name}' and type '${params.type}'`,\n }).result\n\n return transformReservedWord(name)\n }\n\n /**\n * Instead of calling `pluginManager.events.on` you can use `pluginManager.on`. This one also has better types.\n */\n on<TEventName extends keyof Events & string>(eventName: TEventName, handler: (...eventArg: Events[TEventName]) => void): void {\n this.events.on(eventName, handler as any)\n }\n\n /**\n * Run a specific hookName for plugin x.\n */\n async hookForPlugin<H extends PluginLifecycleHooks>({\n pluginKey,\n hookName,\n parameters,\n message,\n }: {\n pluginKey: Plugin['key']\n hookName: H\n parameters: PluginParameter<H>\n message: string\n }): Promise<Array<ReturnType<ParseResult<H>> | null>> {\n const plugins = this.getPluginsByKey(hookName, pluginKey)\n\n this.logger.emit('progress_start', { id: hookName, size: plugins.length, message: 'Running plugins...' })\n\n const promises = plugins\n .map((plugin) => {\n return this.#execute<H>({\n strategy: 'hookFirst',\n hookName,\n parameters,\n plugin,\n message,\n })\n })\n .filter(Boolean)\n\n const items = await Promise.all(promises)\n\n this.logger.emit('progress_stop', { id: hookName })\n\n return items\n }\n /**\n * Run a specific hookName for plugin x.\n */\n\n hookForPluginSync<H extends PluginLifecycleHooks>({\n pluginKey,\n hookName,\n parameters,\n message,\n }: {\n pluginKey: Plugin['key']\n hookName: H\n parameters: PluginParameter<H>\n message: string\n }): Array<ReturnType<ParseResult<H>>> | null {\n const plugins = this.getPluginsByKey(hookName, pluginKey)\n\n const result = plugins\n .map((plugin) => {\n return this.#executeSync<H>({\n strategy: 'hookFirst',\n hookName,\n parameters,\n plugin,\n message,\n })\n })\n .filter(Boolean)\n\n return result\n }\n\n /**\n * First non-null result stops and will return it's value.\n */\n async hookFirst<H extends PluginLifecycleHooks>({\n hookName,\n parameters,\n skipped,\n message,\n }: {\n hookName: H\n parameters: PluginParameter<H>\n skipped?: ReadonlySet<Plugin> | null\n message: string\n }): Promise<SafeParseResult<H>> {\n const plugins = this.#getSortedPlugins(hookName).filter((plugin) => {\n return skipped ? skipped.has(plugin) : true\n })\n\n this.logger.emit('progress_start', { id: hookName, size: plugins.length })\n\n const promises = plugins.map((plugin) => {\n return async () => {\n const value = await this.#execute<H>({\n strategy: 'hookFirst',\n hookName,\n parameters,\n plugin,\n message,\n })\n\n return Promise.resolve({\n plugin,\n result: value,\n } as SafeParseResult<H>)\n }\n })\n\n const result = await this.#promiseManager.run('first', promises)\n\n this.logger.emit('progress_stop', { id: hookName })\n\n return result\n }\n\n /**\n * First non-null result stops and will return it's value.\n */\n hookFirstSync<H extends PluginLifecycleHooks>({\n hookName,\n parameters,\n skipped,\n message,\n }: {\n hookName: H\n parameters: PluginParameter<H>\n skipped?: ReadonlySet<Plugin> | null\n message: string\n }): SafeParseResult<H> {\n let parseResult: SafeParseResult<H> = null as unknown as SafeParseResult<H>\n const plugins = this.#getSortedPlugins(hookName).filter((plugin) => {\n return skipped ? skipped.has(plugin) : true\n })\n\n for (const plugin of plugins) {\n parseResult = {\n result: this.#executeSync<H>({\n strategy: 'hookFirst',\n hookName,\n parameters,\n plugin,\n message,\n }),\n plugin,\n } as SafeParseResult<H>\n\n if (parseResult?.result != null) {\n break\n }\n }\n\n return parseResult\n }\n\n /**\n * Run all plugins in parallel(order will be based on `this.plugin` and if `pre` or `post` is set).\n */\n async hookParallel<H extends PluginLifecycleHooks, TOuput = void>({\n hookName,\n parameters,\n message,\n }: {\n hookName: H\n parameters?: Parameters<RequiredPluginLifecycle[H]> | undefined\n message: string\n }): Promise<Awaited<TOuput>[]> {\n const plugins = this.#getSortedPlugins(hookName)\n this.logger.emit('progress_start', { id: hookName, size: plugins.length })\n\n const promises = plugins.map((plugin) => {\n return () =>\n this.#execute({\n strategy: 'hookParallel',\n hookName,\n parameters,\n plugin,\n message,\n }) as Promise<TOuput>\n })\n\n const results = await this.#promiseManager.run('parallel', promises)\n\n results.forEach((result, index) => {\n if (isPromiseRejectedResult<Error>(result)) {\n const plugin = this.#getSortedPlugins(hookName)[index]\n\n this.#catcher<H>(result.reason, plugin, hookName)\n }\n })\n\n this.logger.emit('progress_stop', { id: hookName })\n\n return results.filter((result) => result.status === 'fulfilled').map((result) => (result as PromiseFulfilledResult<Awaited<TOuput>>).value)\n }\n\n /**\n * Chains plugins\n */\n async hookSeq<H extends PluginLifecycleHooks>({\n hookName,\n parameters,\n message,\n }: {\n hookName: H\n parameters?: PluginParameter<H>\n message: string\n }): Promise<void> {\n const plugins = this.#getSortedPlugins(hookName)\n this.logger.emit('progress_start', { id: hookName, size: plugins.length })\n\n const promises = plugins.map((plugin) => {\n return () =>\n this.#execute({\n strategy: 'hookSeq',\n hookName,\n parameters,\n plugin,\n message,\n })\n })\n\n await this.#promiseManager.run('seq', promises)\n\n this.logger.emit('progress_stop', { id: hookName })\n }\n\n #getSortedPlugins(hookName?: keyof PluginLifecycle): Plugin[] {\n const plugins = [...this.plugins].filter((plugin) => plugin.name !== 'core')\n\n if (hookName) {\n return plugins.filter((plugin) => hookName in plugin)\n }\n // TODO add test case for sorting with pre/post\n\n return plugins\n .map((plugin) => {\n if (plugin.pre) {\n const isValid = plugin.pre.every((pluginName) => plugins.find((pluginToFind) => pluginToFind.name === pluginName))\n\n if (!isValid) {\n throw new ValidationPluginError(`This plugin has a pre set that is not valid(${JSON.stringify(plugin.pre, undefined, 2)})`)\n }\n }\n\n return plugin\n })\n .sort((a, b) => {\n if (b.pre?.includes(a.name)) {\n return 1\n }\n if (b.post?.includes(a.name)) {\n return -1\n }\n return 0\n })\n }\n\n getPluginByKey(pluginKey: Plugin['key']): Plugin | undefined {\n const plugins = [...this.plugins]\n const [searchPluginName] = pluginKey\n\n return plugins.find((item) => {\n const [name] = item.key\n\n return name === searchPluginName\n })\n }\n\n getPluginsByKey(hookName: keyof PluginWithLifeCycle, pluginKey: Plugin['key']): Plugin[] {\n const plugins = [...this.plugins]\n const [searchPluginName, searchIdentifier] = pluginKey\n\n const pluginByPluginName = plugins\n .filter((plugin) => hookName in plugin)\n .filter((item) => {\n const [name, identifier] = item.key\n\n const identifierCheck = identifier?.toString() === searchIdentifier?.toString()\n const nameCheck = name === searchPluginName\n\n if (searchIdentifier) {\n return identifierCheck && nameCheck\n }\n\n return nameCheck\n })\n\n if (!pluginByPluginName?.length) {\n // fallback on the core plugin when there is no match\n\n const corePlugin = plugins.find((plugin) => plugin.name === 'core' && hookName in plugin)\n\n if (corePlugin) {\n this.logger.emit('debug', {\n date: new Date(),\n logs: [`No hook '${hookName}' for pluginKey '${JSON.stringify(pluginKey)}' found, falling back on the '@kubb/core' plugin`],\n })\n } else {\n this.logger.emit('debug', {\n date: new Date(),\n logs: [`No hook '${hookName}' for pluginKey '${JSON.stringify(pluginKey)}' found, no fallback found in the '@kubb/core' plugin`],\n })\n }\n return corePlugin ? [corePlugin] : []\n }\n\n return pluginByPluginName\n }\n\n #addExecutedToCallStack(executer: Executer | undefined) {\n if (executer) {\n this.events.emit('executed', executer)\n this.executed.push(executer)\n\n this.logger.emit('progressed', { id: executer.hookName, message: `${executer.plugin.name}: ${executer.message}` })\n }\n }\n\n /**\n * Run an async plugin hook and return the result.\n * @param hookName Name of the plugin hook. Must be either in `PluginHooks` or `OutputPluginValueHooks`.\n * @param args Arguments passed to the plugin hook.\n * @param plugin The actual pluginObject to run.\n */\n // Implementation signature\n #execute<H extends PluginLifecycleHooks>({\n strategy,\n hookName,\n parameters,\n plugin,\n message,\n }: {\n strategy: Strategy\n hookName: H\n parameters: unknown[] | undefined\n plugin: PluginWithLifeCycle\n message: string\n }): Promise<ReturnType<ParseResult<H>> | null> | null {\n const hook = plugin[hookName]\n let output: unknown\n\n if (!hook) {\n return null\n }\n\n this.events.emit('executing', { strategy, hookName, parameters, plugin, message })\n const promise = new Promise((resolve) => {\n resolve(undefined)\n })\n\n const task = promise\n .then(() => {\n if (typeof hook === 'function') {\n const possiblePromiseResult = (hook as Function).apply({ ...this.#core.context, plugin }, parameters) as Promise<ReturnType<ParseResult<H>>>\n\n if (isPromise(possiblePromiseResult)) {\n return Promise.resolve(possiblePromiseResult)\n }\n return possiblePromiseResult\n }\n\n return hook\n })\n .then((result) => {\n output = result\n\n this.#addExecutedToCallStack({\n parameters,\n output,\n strategy,\n hookName,\n plugin,\n message,\n })\n\n return result\n })\n .catch((e: Error) => {\n this.#catcher<H>(e, plugin, hookName)\n\n return null\n })\n\n return task\n }\n\n /**\n * Run a sync plugin hook and return the result.\n * @param hookName Name of the plugin hook. Must be in `PluginHooks`.\n * @param args Arguments passed to the plugin hook.\n * @param plugin The acutal plugin\n * @param replaceContext When passed, the plugin context can be overridden.\n */\n #executeSync<H extends PluginLifecycleHooks>({\n strategy,\n hookName,\n parameters,\n plugin,\n message,\n }: {\n strategy: Strategy\n hookName: H\n parameters: PluginParameter<H>\n plugin: PluginWithLifeCycle\n message: string\n }): ReturnType<ParseResult<H>> | null {\n const hook = plugin[hookName]\n let output: unknown\n\n if (!hook) {\n return null\n }\n\n this.events.emit('executing', { strategy, hookName, parameters, plugin, message })\n\n try {\n if (typeof hook === 'function') {\n const fn = (hook as Function).apply({ ...this.#core.context, plugin }, parameters) as ReturnType<ParseResult<H>>\n\n output = fn\n\n this.#addExecutedToCallStack({\n parameters,\n output,\n strategy,\n hookName,\n plugin,\n message,\n })\n\n return fn\n }\n\n output = hook\n\n this.#addExecutedToCallStack({\n parameters,\n output,\n strategy,\n hookName,\n plugin,\n message,\n })\n\n return hook\n } catch (e) {\n this.#catcher<H>(e as Error, plugin, hookName)\n\n return null\n }\n }\n\n #catcher<H extends PluginLifecycleHooks>(cause: Error, plugin?: Plugin, hookName?: H) {\n const text = `${cause.message} (plugin: ${plugin?.name || 'unknown'}, hook: ${hookName || 'unknown'})`\n\n this.logger.emit('error', text, cause)\n this.events.emit('error', cause)\n }\n\n #parse<TPlugin extends UserPluginWithLifeCycle>(\n plugin: TPlugin,\n pluginManager: PluginManager,\n context: PluginCore['context'] | undefined,\n ): Plugin<GetPluginFactoryOptions<TPlugin>> {\n const usedPluginNames = pluginManager.#usedPluginNames\n\n setUniqueName(plugin.name, usedPluginNames)\n\n const key = [plugin.name, usedPluginNames[plugin.name]].filter(Boolean) as [typeof plugin.name, string]\n\n if (plugin.context && typeof plugin.context === 'function') {\n return {\n ...plugin,\n key,\n context: (plugin.context as Function).call(context) as typeof plugin.context,\n } as unknown as Plugin<GetPluginFactoryOptions<TPlugin>>\n }\n\n return {\n ...plugin,\n key,\n } as unknown as Plugin<GetPluginFactoryOptions<TPlugin>>\n }\n\n static getDependedPlugins<\n T1 extends PluginFactoryOptions,\n T2 extends PluginFactoryOptions = never,\n T3 extends PluginFactoryOptions = never,\n TOutput = T3 extends never ? (T2 extends never ? [T1: Plugin<T1>] : [T1: Plugin<T1>, T2: Plugin<T2>]) : [T1: Plugin<T1>, T2: Plugin<T2>, T3: Plugin<T3>],\n >(plugins: Array<Plugin>, dependedPluginNames: string | string[]): TOutput {\n let pluginNames: string[] = []\n if (typeof dependedPluginNames === 'string') {\n pluginNames = [dependedPluginNames]\n } else {\n pluginNames = dependedPluginNames\n }\n\n return pluginNames.map((pluginName) => {\n const plugin = plugins.find((plugin) => plugin.name === pluginName)\n if (!plugin) {\n throw new ValidationPluginError(`This plugin depends on the ${pluginName} plugin.`)\n }\n return plugin\n }) as TOutput\n }\n\n static get hooks() {\n return ['buildStart', 'resolvePath', 'resolveName', 'buildEnd'] as const\n }\n}\n","import type { PossiblePromise } from './utils/types.ts'\nimport type { InputPath, UserConfig } from './types.ts'\n\ntype Args = {\n /**\n * Path to `kubb.config.js`\n */\n config?: string\n /**\n * Watch changes on input\n */\n watch?: boolean\n\n /**\n * Log level to report when using the CLI\n *\n * `silent` will hide all information that is not relevant\n *\n * `info` will show all information possible(not related to the PluginManager)\n *\n * `debug` will show all information possible(related to the PluginManager), handy for seeing logs\n * @default `silent`\n */\n logLevel?: string\n /**\n * Run Kubb with Bun\n */\n bun?: boolean\n}\n\n/**\n * Type helper to make it easier to use vite.config.ts accepts a direct UserConfig object, or a function that returns it. The function receives a ConfigEnv object.\n */\nexport function defineConfig(\n options:\n | PossiblePromise<UserConfig | Array<UserConfig>>\n | ((\n /** The options derived from the CLI flags */\n args: Args,\n ) => PossiblePromise<UserConfig | Array<UserConfig>>),\n): typeof options {\n return options\n}\n\nexport function isInputPath(result: UserConfig | undefined): result is UserConfig<InputPath> {\n return !!result && 'path' in (result?.input as any)\n}\n","import { clean, exists } from './fs/index.ts'\nimport type { KubbFile } from './fs/index.ts'\nimport { type FileManager, processFiles } from './FileManager.ts'\nimport { PluginManager } from './PluginManager.ts'\nimport { isInputPath } from './config.ts'\nimport { createLogger } from './logger.ts'\nimport { URLPath } from './utils/URLPath.ts'\n\nimport { join, resolve } from 'node:path'\nimport { getRelativePath } from './fs/index.ts'\nimport type { Logger } from './logger.ts'\nimport type { Config, Output, UserConfig } from './types.ts'\nimport consola from 'consola'\nimport { colors } from 'consola/utils'\n\ntype BuildOptions = {\n config: UserConfig\n /**\n * @default Logger without the spinner\n */\n logger?: Logger\n pluginManager?: PluginManager\n}\n\ntype BuildOutput = {\n files: FileManager['files']\n pluginManager: PluginManager\n /**\n * Only for safeBuild\n */\n error?: Error\n}\n\nexport async function setup(options: BuildOptions): Promise<PluginManager> {\n if (options.pluginManager) {\n return options.pluginManager\n }\n\n const { config: userConfig, logger = createLogger() } = options\n\n if (Array.isArray(userConfig.input)) {\n consola.warn(colors.yellow('This feature is still under development — use with caution'))\n }\n\n try {\n if (isInputPath(userConfig) && !new URLPath(userConfig.input.path).isURL) {\n await exists(userConfig.input.path)\n }\n } catch (e) {\n if (isInputPath(userConfig)) {\n throw new Error(\n `Cannot read file/URL defined in \\`input.path\\` or set with \\`kubb generate PATH\\` in the CLI of your Kubb config ${userConfig.input.path}`,\n {\n cause: e,\n },\n )\n }\n }\n\n const definedConfig: Config = {\n root: userConfig.root || process.cwd(),\n ...userConfig,\n output: {\n write: true,\n barrelType: 'named',\n extension: {\n '.ts': '.ts',\n },\n defaultBanner: 'simple',\n ...userConfig.output,\n },\n plugins: userConfig.plugins as Config['plugins'],\n }\n\n if (definedConfig.output.clean) {\n await clean(definedConfig.output.path)\n await clean(join(definedConfig.root, '.kubb'))\n }\n\n return new PluginManager(definedConfig, { logger })\n}\n\nexport async function build(options: BuildOptions): Promise<BuildOutput> {\n const { files, pluginManager, error } = await safeBuild(options)\n\n if (error) throw error\n\n return {\n files,\n pluginManager,\n error,\n }\n}\n\nexport async function safeBuild(options: BuildOptions): Promise<BuildOutput> {\n let files = []\n const pluginManager = await setup(options)\n const config = pluginManager.config\n\n try {\n pluginManager.events.on('executing', ({ plugin, message }) => {\n pluginManager.logger.emit('debug', { date: new Date(), logs: [`Executing pluginKey ${plugin.key?.join('.')} | ${message}`] })\n })\n\n pluginManager.events.on('executed', ({ plugin, message, output }) => {\n pluginManager.logger.emit('debug', {\n date: new Date(),\n logs: [`Executed pluginKey ${plugin.key?.join('.')} | ${message} | ${JSON.stringify(output, undefined, 2)}`],\n })\n })\n\n await pluginManager.hookParallel({\n hookName: 'buildStart',\n parameters: [config],\n message: 'buildStart',\n })\n\n // create root barrel file\n const root = resolve(config.root)\n const rootPath = resolve(root, config.output.path, 'index.ts')\n const barrelFiles = pluginManager.fileManager.files.filter((file) => {\n return file.sources.some((source) => source.isIndexable)\n })\n\n const rootFile: KubbFile.File = {\n path: rootPath,\n baseName: 'index.ts',\n exports: barrelFiles\n .flatMap((file) => {\n const containsOnlyTypes = file.sources?.every((source) => source.isTypeOnly)\n return file.sources\n ?.map((source) => {\n if (!file.path || !source.isIndexable) {\n return undefined\n }\n\n // validate of the file is coming from plugin x, needs pluginKey on every file TODO update typing\n const plugin = [...pluginManager.plugins].find((item) => {\n const meta = file.meta as any\n return item.key === meta?.pluginKey\n })\n const pluginOptions = plugin?.options as { output?: Output<any> }\n\n if (!pluginOptions || pluginOptions?.output?.barrelType === false) {\n return undefined\n }\n\n return {\n name: config.output.barrelType === 'all' ? undefined : [source.name],\n path: getRelativePath(rootPath, file.path),\n isTypeOnly: config.output.barrelType === 'all' ? containsOnlyTypes : source.isTypeOnly,\n } as KubbFile.Export\n })\n .filter(Boolean)\n })\n .filter(Boolean),\n sources: [],\n meta: {},\n }\n\n if (config.output.barrelType) {\n await pluginManager.fileManager.add(rootFile)\n }\n\n files = await processFiles({\n root: config.root,\n extension: config.output.extension,\n dryRun: !config.output.write,\n files: pluginManager.fileManager.files,\n logger: pluginManager.logger,\n })\n\n await pluginManager.hookParallel({ hookName: 'buildEnd', message: `Build stopped for ${config.name}` })\n\n pluginManager.fileManager.clear()\n } catch (e) {\n return {\n files: [],\n pluginManager,\n error: e as Error,\n }\n }\n\n return {\n files,\n pluginManager,\n }\n}\n","/**\n * Abstract class that contains the building blocks for plugins to create their own Generator\n * @link idea based on https://github.com/colinhacks/zod/blob/master/src/types.ts#L137\n */\nexport abstract class BaseGenerator<TOptions = unknown, TContext = unknown> {\n #options: TOptions = {} as TOptions\n #context: TContext = {} as TContext\n\n constructor(options?: TOptions, context?: TContext) {\n if (context) {\n this.#context = context\n }\n\n if (options) {\n this.#options = options\n }\n\n return this\n }\n\n get options(): TOptions {\n return this.#options\n }\n\n get context(): TContext {\n return this.#context\n }\n\n set options(options: TOptions) {\n this.#options = { ...this.#options, ...options }\n }\n\n abstract build(...params: unknown[]): unknown\n}\n","import mod from 'node:module'\nimport os from 'node:os'\nimport { pathToFileURL } from 'node:url'\n\nimport { findUp, findUpSync } from 'find-up'\nimport { coerce, satisfies } from 'semver'\n\nimport { read, readSync } from './fs/index.ts'\n\ntype PackageJSON = {\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n}\n\ntype DependencyName = string\n\ntype DependencyVersion = string\n\nexport class PackageManager {\n static #cache: Record<DependencyName, DependencyVersion> = {}\n\n #cwd?: string\n #SLASHES = new Set(['/', '\\\\'])\n constructor(workspace?: string) {\n if (workspace) {\n this.#cwd = workspace\n }\n\n return this\n }\n\n set workspace(workspace: string) {\n this.#cwd = workspace\n }\n\n get workspace(): string | undefined {\n return this.#cwd\n }\n\n normalizeDirectory(directory: string): string {\n if (!this.#SLASHES.has(directory[directory.length - 1]!)) {\n return `${directory}/`\n }\n\n return directory\n }\n\n getLocation(path: string): string {\n let location = path\n\n if (this.#cwd) {\n const require = mod.createRequire(this.normalizeDirectory(this.#cwd))\n location = require.resolve(path)\n }\n\n return location\n }\n\n async import(path: string): Promise<any | undefined> {\n try {\n let location = this.getLocation(path)\n\n if (os.platform() === 'win32') {\n location = pathToFileURL(location).href\n }\n\n const module = await import(location)\n\n return module?.default ?? module\n } catch (e) {\n console.error(e)\n return undefined\n }\n }\n\n async getPackageJSON(): Promise<PackageJSON | undefined> {\n const pkgPath = await findUp(['package.json'], {\n cwd: this.#cwd,\n })\n if (!pkgPath) {\n return undefined\n }\n\n const json = await read(pkgPath)\n\n return JSON.parse(json) as PackageJSON\n }\n\n getPackageJSONSync(): PackageJSON | undefined {\n const pkgPath = findUpSync(['package.json'], {\n cwd: this.#cwd,\n })\n if (!pkgPath) {\n return undefined\n }\n\n const json = readSync(pkgPath)\n\n return JSON.parse(json) as PackageJSON\n }\n\n static setVersion(dependency: DependencyName, version: DependencyVersion): void {\n PackageManager.#cache[dependency] = version\n }\n\n #match(packageJSON: PackageJSON, dependency: DependencyName | RegExp): string | undefined {\n const dependencies = {\n ...(packageJSON['dependencies'] || {}),\n ...(packageJSON['devDependencies'] || {}),\n }\n\n if (typeof dependency === 'string' && dependencies[dependency]) {\n return dependencies[dependency]\n }\n\n const matchedDependency = Object.keys(dependencies).find((dep) => dep.match(dependency))\n\n return matchedDependency ? dependencies[matchedDependency] : undefined\n }\n\n async getVersion(dependency: DependencyName | RegExp): Promise<DependencyVersion | undefined> {\n if (typeof dependency === 'string' && PackageManager.#cache[dependency]) {\n return PackageManager.#cache[dependency]\n }\n\n const packageJSON = await this.getPackageJSON()\n\n if (!packageJSON) {\n return undefined\n }\n\n return this.#match(packageJSON, dependency)\n }\n\n getVersionSync(dependency: DependencyName | RegExp): DependencyVersion | undefined {\n if (typeof dependency === 'string' && PackageManager.#cache[dependency]) {\n return PackageManager.#cache[dependency]\n }\n\n const packageJSON = this.getPackageJSONSync()\n\n if (!packageJSON) {\n return undefined\n }\n\n return this.#match(packageJSON, dependency)\n }\n\n async isValid(dependency: DependencyName | RegExp, version: DependencyVersion): Promise<boolean> {\n const packageVersion = await this.getVersion(dependency)\n\n if (!packageVersion) {\n return false\n }\n\n if (packageVersion === version) {\n return true\n }\n\n const semVer = coerce(packageVersion)\n\n if (!semVer) {\n throw new Error(`${packageVersion} is not valid`)\n }\n\n return satisfies(semVer, version)\n }\n isValidSync(dependency: DependencyName | RegExp, version: DependencyVersion): boolean {\n const packageVersion = this.getVersionSync(dependency)\n\n if (!packageVersion) {\n return false\n }\n\n if (version === 'next' && packageVersion === version) {\n return true\n }\n\n const semVer = coerce(packageVersion)\n\n if (!semVer) {\n return false\n }\n\n return satisfies(semVer, version)\n }\n}\n"]}
|
package/dist/logger.cjs
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('./chunk-
|
|
3
|
+
var chunkTJJOSCFA_cjs = require('./chunk-TJJOSCFA.cjs');
|
|
4
|
+
require('./chunk-MKN7YSK2.cjs');
|
|
5
5
|
require('./chunk-KZOJCFA7.cjs');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
Object.defineProperty(exports, "LogMapper", {
|
|
10
10
|
enumerable: true,
|
|
11
|
-
get: function () { return
|
|
11
|
+
get: function () { return chunkTJJOSCFA_cjs.LogMapper; }
|
|
12
12
|
});
|
|
13
13
|
Object.defineProperty(exports, "createLogger", {
|
|
14
14
|
enumerable: true,
|
|
15
|
-
get: function () { return
|
|
15
|
+
get: function () { return chunkTJJOSCFA_cjs.createLogger; }
|
|
16
16
|
});
|
|
17
17
|
Object.defineProperty(exports, "randomCliColour", {
|
|
18
18
|
enumerable: true,
|
|
19
|
-
get: function () { return
|
|
19
|
+
get: function () { return chunkTJJOSCFA_cjs.randomCliColour; }
|
|
20
20
|
});
|
|
21
21
|
Object.defineProperty(exports, "randomColour", {
|
|
22
22
|
enumerable: true,
|
|
23
|
-
get: function () { return
|
|
23
|
+
get: function () { return chunkTJJOSCFA_cjs.randomColour; }
|
|
24
24
|
});
|
|
25
25
|
//# sourceMappingURL=logger.cjs.map
|
|
26
26
|
//# sourceMappingURL=logger.cjs.map
|
package/dist/logger.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { LogMapper, createLogger, randomCliColour, randomColour } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { LogMapper, createLogger, randomCliColour, randomColour } from './chunk-7P6FFVGF.js';
|
|
2
|
+
import './chunk-CMKZBNCX.js';
|
|
3
3
|
//# sourceMappingURL=logger.js.map
|
|
4
4
|
//# sourceMappingURL=logger.js.map
|
package/dist/mocks.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkFAQ7SBKL_cjs = require('./chunk-FAQ7SBKL.cjs');
|
|
4
4
|
var chunkTEEWO6UV_cjs = require('./chunk-TEEWO6UV.cjs');
|
|
5
|
-
require('./chunk-
|
|
5
|
+
require('./chunk-MKN7YSK2.cjs');
|
|
6
6
|
var chunkKZOJCFA7_cjs = require('./chunk-KZOJCFA7.cjs');
|
|
7
7
|
var path = require('path');
|
|
8
8
|
|
|
@@ -66,7 +66,7 @@ async function matchFiles(files, pre) {
|
|
|
66
66
|
return void 0;
|
|
67
67
|
}
|
|
68
68
|
for await (const file of files) {
|
|
69
|
-
const source = await
|
|
69
|
+
const source = await chunkFAQ7SBKL_cjs.getSource(chunkFAQ7SBKL_cjs.createFile(file), { logger: mockedLogger });
|
|
70
70
|
await expect(source).toMatchFileSnapshot(path__default.default.join(...["__snapshots__", pre, file.path].filter(Boolean)));
|
|
71
71
|
}
|
|
72
72
|
}
|
package/dist/mocks.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { R as ResolvedFile, F as File } from './types-
|
|
1
|
+
import { R as ResolvedFile, F as File } from './types-CX9JVw2n.cjs';
|
|
2
2
|
import { L as Logger } from './logger-BWq-oJU_.cjs';
|
|
3
|
-
import { P as PluginManager } from './FileManager-
|
|
3
|
+
import { P as PluginManager } from './FileManager-HxsypMy8.cjs';
|
|
4
4
|
import 'consola/utils';
|
|
5
5
|
import 'consola';
|
|
6
6
|
|
package/dist/mocks.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { R as ResolvedFile, F as File } from './types-
|
|
1
|
+
import { R as ResolvedFile, F as File } from './types-CX9JVw2n.js';
|
|
2
2
|
import { L as Logger } from './logger-BWq-oJU_.js';
|
|
3
|
-
import { P as PluginManager } from './FileManager-
|
|
3
|
+
import { P as PluginManager } from './FileManager-Cm7Iylcx.js';
|
|
4
4
|
import 'consola/utils';
|
|
5
5
|
import 'consola';
|
|
6
6
|
|
package/dist/mocks.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { getSource, createFile } from './chunk-
|
|
1
|
+
import { getSource, createFile } from './chunk-XTSQKCYI.js';
|
|
2
2
|
import { camelCase, pascalCase } from './chunk-GBYHPDPK.js';
|
|
3
|
-
import './chunk-
|
|
3
|
+
import './chunk-CMKZBNCX.js';
|
|
4
4
|
import path from 'path';
|
|
5
5
|
|
|
6
6
|
var mockedLogger = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { E as Extname, R as ResolvedFile, I as Import, a as ResolvedImport, b as Export, c as ResolvedExport, F as File } from './types-
|
|
1
|
+
import { E as Extname, R as ResolvedFile, I as Import, a as ResolvedImport, b as Export, c as ResolvedExport, F as File } from './types-CX9JVw2n.js';
|
|
2
2
|
import { L as Logger } from './logger-BWq-oJU_.js';
|
|
3
|
-
import { C as Config } from './FileManager-
|
|
3
|
+
import { C as Config } from './FileManager-Cm7Iylcx.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Generate a default banner for files created by Kubb
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { E as Extname, R as ResolvedFile, I as Import, a as ResolvedImport, b as Export, c as ResolvedExport, F as File } from './types-
|
|
1
|
+
import { E as Extname, R as ResolvedFile, I as Import, a as ResolvedImport, b as Export, c as ResolvedExport, F as File } from './types-CX9JVw2n.cjs';
|
|
2
2
|
import { L as Logger } from './logger-BWq-oJU_.cjs';
|
|
3
|
-
import { C as Config } from './FileManager-
|
|
3
|
+
import { C as Config } from './FileManager-HxsypMy8.cjs';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Generate a default banner for files created by Kubb
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
declare function getRelativePath(rootDir?: string | null, filePath?: string | null, platform?: 'windows' | 'mac' | 'linux'): string;
|
|
2
1
|
declare function read(path: string): Promise<string>;
|
|
3
2
|
declare function readSync(path: string): string;
|
|
4
3
|
|
|
@@ -144,4 +143,4 @@ declare namespace types {
|
|
|
144
143
|
export type { types_AdvancedPath as AdvancedPath, types_BaseName as BaseName, types_Export as Export, types_Extname as Extname, types_File as File, types_Import as Import, types_Mode as Mode, types_OptionalPath as OptionalPath, types_Path as Path, types_ResolvedExport as ResolvedExport, types_ResolvedFile as ResolvedFile, types_ResolvedImport as ResolvedImport, types_Source as Source };
|
|
145
144
|
}
|
|
146
145
|
|
|
147
|
-
export { type BaseName as B, type Extname as E, type File as F, type Import as I, type Mode as M, type OptionalPath as O, type Path as P, type ResolvedFile as R, type ResolvedImport as a, type Export as b, type ResolvedExport as c, readSync as d,
|
|
146
|
+
export { type BaseName as B, type Extname as E, type File as F, type Import as I, type Mode as M, type OptionalPath as O, type Path as P, type ResolvedFile as R, type ResolvedImport as a, type Export as b, type ResolvedExport as c, readSync as d, read as r, types as t, write as w };
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
declare function getRelativePath(rootDir?: string | null, filePath?: string | null, platform?: 'windows' | 'mac' | 'linux'): string;
|
|
2
1
|
declare function read(path: string): Promise<string>;
|
|
3
2
|
declare function readSync(path: string): string;
|
|
4
3
|
|
|
@@ -144,4 +143,4 @@ declare namespace types {
|
|
|
144
143
|
export type { types_AdvancedPath as AdvancedPath, types_BaseName as BaseName, types_Export as Export, types_Extname as Extname, types_File as File, types_Import as Import, types_Mode as Mode, types_OptionalPath as OptionalPath, types_Path as Path, types_ResolvedExport as ResolvedExport, types_ResolvedFile as ResolvedFile, types_ResolvedImport as ResolvedImport, types_Source as Source };
|
|
145
144
|
}
|
|
146
145
|
|
|
147
|
-
export { type BaseName as B, type Extname as E, type File as F, type Import as I, type Mode as M, type OptionalPath as O, type Path as P, type ResolvedFile as R, type ResolvedImport as a, type Export as b, type ResolvedExport as c, readSync as d,
|
|
146
|
+
export { type BaseName as B, type Extname as E, type File as F, type Import as I, type Mode as M, type OptionalPath as O, type Path as P, type ResolvedFile as R, type ResolvedImport as a, type Export as b, type ResolvedExport as c, readSync as d, read as r, types as t, write as w };
|
package/dist/utils.cjs
CHANGED
|
@@ -1,71 +1,71 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkFAQ7SBKL_cjs = require('./chunk-FAQ7SBKL.cjs');
|
|
4
4
|
require('./chunk-TEEWO6UV.cjs');
|
|
5
|
-
require('./chunk-
|
|
5
|
+
require('./chunk-MKN7YSK2.cjs');
|
|
6
6
|
require('./chunk-KZOJCFA7.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
Object.defineProperty(exports, "FunctionParams", {
|
|
11
11
|
enumerable: true,
|
|
12
|
-
get: function () { return
|
|
12
|
+
get: function () { return chunkFAQ7SBKL_cjs.FunctionParams; }
|
|
13
13
|
});
|
|
14
14
|
Object.defineProperty(exports, "URLPath", {
|
|
15
15
|
enumerable: true,
|
|
16
|
-
get: function () { return
|
|
16
|
+
get: function () { return chunkFAQ7SBKL_cjs.URLPath; }
|
|
17
17
|
});
|
|
18
18
|
Object.defineProperty(exports, "createFile", {
|
|
19
19
|
enumerable: true,
|
|
20
|
-
get: function () { return
|
|
20
|
+
get: function () { return chunkFAQ7SBKL_cjs.createFile; }
|
|
21
21
|
});
|
|
22
22
|
Object.defineProperty(exports, "createFileExport", {
|
|
23
23
|
enumerable: true,
|
|
24
|
-
get: function () { return
|
|
24
|
+
get: function () { return chunkFAQ7SBKL_cjs.createFileExport; }
|
|
25
25
|
});
|
|
26
26
|
Object.defineProperty(exports, "createFileImport", {
|
|
27
27
|
enumerable: true,
|
|
28
|
-
get: function () { return
|
|
28
|
+
get: function () { return chunkFAQ7SBKL_cjs.createFileImport; }
|
|
29
29
|
});
|
|
30
30
|
Object.defineProperty(exports, "createFileParser", {
|
|
31
31
|
enumerable: true,
|
|
32
|
-
get: function () { return
|
|
32
|
+
get: function () { return chunkFAQ7SBKL_cjs.createFileParser; }
|
|
33
33
|
});
|
|
34
34
|
Object.defineProperty(exports, "getDefaultBanner", {
|
|
35
35
|
enumerable: true,
|
|
36
|
-
get: function () { return
|
|
36
|
+
get: function () { return chunkFAQ7SBKL_cjs.getDefaultBanner; }
|
|
37
37
|
});
|
|
38
38
|
Object.defineProperty(exports, "getFileParser", {
|
|
39
39
|
enumerable: true,
|
|
40
|
-
get: function () { return
|
|
40
|
+
get: function () { return chunkFAQ7SBKL_cjs.getFileParser; }
|
|
41
41
|
});
|
|
42
42
|
Object.defineProperty(exports, "getUniqueName", {
|
|
43
43
|
enumerable: true,
|
|
44
|
-
get: function () { return
|
|
44
|
+
get: function () { return chunkFAQ7SBKL_cjs.getUniqueName; }
|
|
45
45
|
});
|
|
46
46
|
Object.defineProperty(exports, "isPromise", {
|
|
47
47
|
enumerable: true,
|
|
48
|
-
get: function () { return
|
|
48
|
+
get: function () { return chunkFAQ7SBKL_cjs.isPromise; }
|
|
49
49
|
});
|
|
50
50
|
Object.defineProperty(exports, "isPromiseFulfilledResult", {
|
|
51
51
|
enumerable: true,
|
|
52
|
-
get: function () { return
|
|
52
|
+
get: function () { return chunkFAQ7SBKL_cjs.isPromiseFulfilledResult; }
|
|
53
53
|
});
|
|
54
54
|
Object.defineProperty(exports, "isPromiseRejectedResult", {
|
|
55
55
|
enumerable: true,
|
|
56
|
-
get: function () { return
|
|
56
|
+
get: function () { return chunkFAQ7SBKL_cjs.isPromiseRejectedResult; }
|
|
57
57
|
});
|
|
58
58
|
Object.defineProperty(exports, "renderTemplate", {
|
|
59
59
|
enumerable: true,
|
|
60
|
-
get: function () { return
|
|
60
|
+
get: function () { return chunkFAQ7SBKL_cjs.renderTemplate; }
|
|
61
61
|
});
|
|
62
62
|
Object.defineProperty(exports, "setUniqueName", {
|
|
63
63
|
enumerable: true,
|
|
64
|
-
get: function () { return
|
|
64
|
+
get: function () { return chunkFAQ7SBKL_cjs.setUniqueName; }
|
|
65
65
|
});
|
|
66
66
|
Object.defineProperty(exports, "timeout", {
|
|
67
67
|
enumerable: true,
|
|
68
|
-
get: function () { return
|
|
68
|
+
get: function () { return chunkFAQ7SBKL_cjs.timeout; }
|
|
69
69
|
});
|
|
70
70
|
//# sourceMappingURL=utils.cjs.map
|
|
71
71
|
//# sourceMappingURL=utils.cjs.map
|
package/dist/utils.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { a as PossiblePromise } from './FileManager-
|
|
2
|
-
export { P as ParserModule, d as createFile, b as createFileExport, c as createFileImport, e as createFileParser, g as getDefaultBanner, a as getFileParser } from './parser-
|
|
3
|
-
import './types-
|
|
1
|
+
import { a as PossiblePromise } from './FileManager-HxsypMy8.cjs';
|
|
2
|
+
export { P as ParserModule, d as createFile, b as createFileExport, c as createFileImport, e as createFileParser, g as getDefaultBanner, a as getFileParser } from './parser-Dwb7eMU3.cjs';
|
|
3
|
+
import './types-CX9JVw2n.cjs';
|
|
4
4
|
import './logger-BWq-oJU_.cjs';
|
|
5
5
|
import 'consola/utils';
|
|
6
6
|
import 'consola';
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { a as PossiblePromise } from './FileManager-
|
|
2
|
-
export { P as ParserModule, d as createFile, b as createFileExport, c as createFileImport, e as createFileParser, g as getDefaultBanner, a as getFileParser } from './parser
|
|
3
|
-
import './types-
|
|
1
|
+
import { a as PossiblePromise } from './FileManager-Cm7Iylcx.js';
|
|
2
|
+
export { P as ParserModule, d as createFile, b as createFileExport, c as createFileImport, e as createFileParser, g as getDefaultBanner, a as getFileParser } from './parser-CcELSk43.js';
|
|
3
|
+
import './types-CX9JVw2n.js';
|
|
4
4
|
import './logger-BWq-oJU_.js';
|
|
5
5
|
import 'consola/utils';
|
|
6
6
|
import 'consola';
|
package/dist/utils.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { FunctionParams, URLPath, createFile, createFileExport, createFileImport, createFileParser, getDefaultBanner, getFileParser, getUniqueName, isPromise, isPromiseFulfilledResult, isPromiseRejectedResult, renderTemplate, setUniqueName, timeout } from './chunk-
|
|
1
|
+
export { FunctionParams, URLPath, createFile, createFileExport, createFileImport, createFileParser, getDefaultBanner, getFileParser, getUniqueName, isPromise, isPromiseFulfilledResult, isPromiseRejectedResult, renderTemplate, setUniqueName, timeout } from './chunk-XTSQKCYI.js';
|
|
2
2
|
import './chunk-GBYHPDPK.js';
|
|
3
|
-
import './chunk-
|
|
3
|
+
import './chunk-CMKZBNCX.js';
|
|
4
4
|
//# sourceMappingURL=utils.js.map
|
|
5
5
|
//# sourceMappingURL=utils.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kubb/core",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.15.0",
|
|
4
4
|
"description": "Core functionality for Kubb's plugin-based code generation system, providing the foundation for transforming OpenAPI specifications.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
"remeda": "^2.25.0",
|
|
98
98
|
"seedrandom": "^3.0.5",
|
|
99
99
|
"semver": "^7.7.2",
|
|
100
|
-
"@kubb/parser-ts": "3.
|
|
100
|
+
"@kubb/parser-ts": "3.15.0"
|
|
101
101
|
},
|
|
102
102
|
"devDependencies": {
|
|
103
103
|
"@types/fs-extra": "^11.0.4",
|
|
@@ -108,8 +108,8 @@
|
|
|
108
108
|
"prettier": "^3.6.2",
|
|
109
109
|
"tsup": "^8.5.0",
|
|
110
110
|
"typescript": "^5.8.3",
|
|
111
|
-
"@kubb/config-ts": "3.
|
|
112
|
-
"@kubb/config-tsup": "3.
|
|
111
|
+
"@kubb/config-ts": "3.15.0",
|
|
112
|
+
"@kubb/config-tsup": "3.15.0"
|
|
113
113
|
},
|
|
114
114
|
"engines": {
|
|
115
115
|
"node": ">=20"
|