@jujulego/jill 2.4.0 → 2.5.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.
@@ -1 +1 @@
1
- {"version":3,"file":"jill.application-8LJ2a7MD.js","sources":["../src/ui/hooks/useIsVerbose.ts","../src/ui/hooks/useFlatTaskTree.ts","../src/ui/task-tree-stats.tsx","../src/ui/task-tree-completed.tsx","../src/ui/hooks/useStdoutDimensions.ts","../src/ui/task-tree-scrollable-spinner.tsx","../src/ui/task-tree-full-spinner.tsx","../src/ui/task-tree-spinner.tsx","../src/modules/task-command.tsx","../src/jill.application.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { CONFIG } from '@/src/config/config-loader.ts';\nimport { container } from '@/src/inversify.config.ts';\n\nexport function useIsVerbose() {\n return useMemo(() => {\n const config = container.get(CONFIG);\n\n if (config.verbose) {\n return ['verbose', 'debug'].includes(config.verbose);\n } else {\n return false;\n }\n }, []);\n}\n","import { GroupTask, Task, TaskManager } from '@jujulego/tasks';\nimport { useLayoutEffect, useMemo, useState } from 'react';\n\nimport { Workspace } from '@/src/project/workspace.ts';\nimport { CommandTask, isCommandCtx } from '@/src/tasks/command-task.ts';\nimport { ScriptTask } from '@/src/tasks/script-task.ts';\nimport { useIsVerbose } from '@/src/ui/hooks/useIsVerbose.ts';\n\n// Types\nexport interface FlatTask {\n task: Task;\n level: number;\n}\n\n// Utils\n/**\n * Sorts tasks according to workspace and script, keeping command at the end\n */\nexport function taskComparator(a: Task, b: Task) {\n // 1 - compare kind\n const kindA = a instanceof CommandTask ? 0 : 1;\n const kindB = b instanceof CommandTask ? 0 : 1;\n\n if (kindA !== kindB) {\n return kindB - kindA;\n }\n\n // 2 - compare workspaces\n const wksA = 'workspace' in a.context ? (a.context.workspace as Workspace).name : '\\uffff';\n const wksB = 'workspace' in b.context ? (b.context.workspace as Workspace).name : '\\uffff';\n const wksDiff = wksA.localeCompare(wksB);\n\n if (wksDiff !== 0) {\n return wksDiff;\n }\n\n // 1 - compare scripts\n const scriptA = 'script' in a.context ? a.context.script as string : '\\uffff';\n const scriptB = 'script' in b.context ? b.context.script as string : '\\uffff';\n\n return scriptA.localeCompare(scriptB);\n}\n\n/**\n * Extract tasks to be printed, with their level in the tree\n */\nexport function * flatTasks(tasks: readonly Task[], isVerbose: boolean, groupId?: string, level = 0): Generator<FlatTask> {\n for (const task of tasks) {\n if (task.group?.id !== groupId) {\n continue;\n }\n\n yield { task, level };\n\n if (task instanceof GroupTask) {\n const isCommandGroup = task.tasks.some((t) => !isCommandCtx(t.context));\n const hasFailed = task.tasks.some((t) => t.status === 'failed');\n const isStarted = task.status === 'running';\n\n if (isVerbose || isCommandGroup || hasFailed || isStarted) {\n let tasks = task.tasks;\n\n if (task instanceof ScriptTask) {\n tasks = [...tasks].sort(taskComparator);\n }\n\n yield* flatTasks(tasks, isVerbose, task.id, level + 1);\n }\n }\n }\n}\n\n// Hook\nexport function useFlatTaskTree(manager: TaskManager): FlatTask[] {\n const isVerbose = useIsVerbose();\n\n const [tasks, setTasks] = useState([...manager.tasks].sort(taskComparator));\n const [version, setVersion] = useState(0);\n\n useLayoutEffect(() => {\n let dirty = false;\n\n return manager.on('added', () => {\n if (!dirty) {\n dirty = true;\n\n queueMicrotask(() => {\n setTasks([...manager.tasks].sort(taskComparator));\n dirty = false;\n });\n }\n });\n }, [manager]);\n\n useLayoutEffect(() => {\n let dirty = false;\n\n return manager.on('started', () => {\n if (!dirty) {\n dirty = true;\n\n setTimeout(() => {\n setVersion((old) => ++old);\n dirty = false;\n });\n }\n });\n }, [manager]);\n\n useLayoutEffect(() => {\n let dirty = false;\n\n return manager.on('completed', () => {\n if (!dirty) {\n dirty = true;\n\n setTimeout(() => {\n setVersion((old) => ++old);\n dirty = false;\n });\n }\n });\n }, [manager]);\n\n return useMemo(() => {\n return Array.from(flatTasks(tasks, isVerbose));\n }, [tasks, isVerbose, version]);\n}\n","import { TaskManager } from '@jujulego/tasks';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport symbols from 'log-symbols';\nimport { useLayoutEffect, useState } from 'react';\n\n// Types\nexport interface TaskTreeStatsProps {\n readonly manager: TaskManager;\n}\n\n// Component\nexport default function TaskTreeStats({ manager }: TaskTreeStatsProps) {\n // Follow stats\n const [stats, setStats] = useState(() => {\n const base = { running: 0, done: 0, failed: 0 };\n \n for (const task of manager.tasks) {\n switch (task.status) {\n case 'starting':\n case 'running':\n base.running += task.weight;\n break;\n\n case 'done':\n base.done += task.weight;\n break;\n\n case 'failed':\n base.failed += task.weight;\n break;\n }\n }\n \n return base;\n });\n\n useLayoutEffect(() => manager.on('started', (task) => {\n setStats((old) => ({\n ...old,\n running: old.running + task.weight\n }));\n }), [manager]);\n\n useLayoutEffect(() => manager.on('completed', (task) => {\n setStats((old) => ({\n running: old.running - task.weight,\n done: task.status === 'done' ? old.done + task.weight : old.done,\n failed: task.status === 'failed' ? old.failed + task.weight : old.failed,\n }));\n }), [manager]);\n\n // Render\n return (\n <Text>\n { (stats.running !== 0) && (\n <><Spinner type=\"sand\" /> <Text bold>{ stats.running }</Text> running</>\n ) }\n { (stats.running !== 0 && stats.done !== 0) && (<>, </>) }\n { (stats.done !== 0) && (\n <Text color=\"green\">{ symbols.success } { stats.done } done</Text>\n ) }\n { (stats.running + stats.done !== 0 && stats.failed !== 0) && (<>, </>) }\n { (stats.failed !== 0) && (\n <Text color=\"red\">{ symbols.error } { stats.failed } failed</Text>\n ) }\n </Text>\n );\n}\n","import { TaskManager } from '@jujulego/tasks';\nimport { Box, Static } from 'ink';\nimport { useMemo } from 'react';\n\nimport { flatTasks, taskComparator } from '@/src/ui/hooks/useFlatTaskTree.ts';\nimport { useIsVerbose } from '@/src/ui/hooks/useIsVerbose.ts';\nimport TaskSpinner from '@/src/ui/task-spinner.tsx';\nimport TaskTreeStats from '@/src/ui/task-tree-stats.tsx';\n\n// Types\nexport interface TaskTreeCompletedProps {\n readonly manager: TaskManager;\n}\n\n// Component\nexport default function TaskTreeCompleted({ manager }: TaskTreeCompletedProps) {\n // Config\n const isVerbose = useIsVerbose();\n\n // Extract all tasks\n const flat = useMemo(() => {\n return Array.from(flatTasks([...manager.tasks].sort(taskComparator), isVerbose));\n }, [manager, isVerbose]);\n\n // Render\n return (\n <>\n <Static items={flat}>\n { ({ task, level }) => (\n <Box key={task.id} marginLeft={level * 2} flexShrink={0}>\n <TaskSpinner task={task} />\n </Box>\n ) }\n </Static>\n <TaskTreeStats manager={manager} />\n </>\n );\n}\n","import { useStdout } from 'ink';\nimport { useEffect, useState } from 'react';\n\nexport function useStdoutDimensions() {\n const { stdout } = useStdout();\n const [dimensions, setDimensions] = useState({\n columns: stdout.columns ?? Infinity,\n rows: stdout.rows ?? Infinity,\n });\n\n useEffect(() => {\n const handler = () => setDimensions({\n columns: stdout.columns ?? Infinity,\n rows: stdout.rows ?? Infinity,\n });\n stdout.on('resize', handler);\n\n return () => {\n stdout.off('resize', handler);\n };\n }, [stdout]);\n\n return dimensions;\n}\n","import { TaskManager } from '@jujulego/tasks';\nimport { Box, Text, useInput } from 'ink';\nimport { useEffect, useMemo, useState } from 'react';\n\nimport { useStdoutDimensions } from '@/src/ui/hooks/useStdoutDimensions.ts';\nimport { useFlatTaskTree } from '@/src/ui/hooks/useFlatTaskTree.ts';\nimport TaskSpinner from '@/src/ui/task-spinner.tsx';\nimport TaskTreeStats from '@/src/ui/task-tree-stats.tsx';\n\n// Types\nexport interface TaskTreeScrollableSpinnerProps {\n readonly manager: TaskManager;\n}\n\n// Component\nexport default function TaskTreeScrollableSpinner({ manager }: TaskTreeScrollableSpinnerProps) {\n const { rows: termHeight } = useStdoutDimensions();\n\n // Extract all tasks\n const flat = useFlatTaskTree(manager);\n\n const maxHeight = useMemo(\n () => Math.min(termHeight - 4, flat.length),\n [termHeight, flat]\n );\n\n // Manage scroll\n const [start, setStart] = useState(0);\n\n const slice = useMemo(\n () => flat.slice(start, start + maxHeight),\n [flat, start, maxHeight]\n );\n\n useEffect(() => {\n if (start + maxHeight > flat.length) {\n setStart(Math.max(flat.length - maxHeight, 0));\n }\n }, [start, flat, maxHeight]);\n\n useInput((_, key) => {\n if (key.upArrow) {\n setStart((old) => Math.max(0, old - 1));\n } else if (key.downArrow) {\n setStart((old) => Math.min(flat.length - maxHeight, old + 1));\n }\n });\n\n // Render\n return (\n <>\n <Box flexDirection=\"column\">\n { slice.map(({ task, level }) => (\n <Box key={task.id} marginLeft={level * 2} flexShrink={0}>\n <TaskSpinner task={task} />\n </Box>\n )) }\n </Box>\n <Text>\n <TaskTreeStats manager={manager} />\n { (maxHeight < flat.length) && (<Text color=\"grey\"> - use keyboard arrows to scroll</Text>) }\n </Text>\n </>\n );\n}\n","import { TaskManager } from '@jujulego/tasks';\nimport { Box, Text } from 'ink';\n\nimport { useFlatTaskTree } from '@/src/ui/hooks/useFlatTaskTree.ts';\nimport TaskSpinner from '@/src/ui/task-spinner.tsx';\nimport TaskTreeStats from '@/src/ui/task-tree-stats.tsx';\n\n// Types\nexport interface TaskTreeFullSpinnerProps {\n readonly manager: TaskManager;\n}\n\n// Component\nexport default function TaskTreeFullSpinner({ manager }: TaskTreeFullSpinnerProps) {\n const flat = useFlatTaskTree(manager);\n\n // Render\n return (\n <>\n <Box flexDirection=\"column\">\n { flat.map(({ task, level }) => (\n <Box key={task.id} marginLeft={level * 2} flexShrink={0}>\n <TaskSpinner task={task} />\n </Box>\n )) }\n </Box>\n <Text>\n <TaskTreeStats manager={manager} />\n </Text>\n </>\n );\n}\n","import { TaskManager } from '@jujulego/tasks';\nimport { useStdin } from 'ink';\n\nimport TaskTreeScrollableSpinner from '@/src/ui/task-tree-scrollable-spinner.tsx';\nimport TaskTreeFullSpinner from '@/src/ui/task-tree-full-spinner.tsx';\n\n// Types\nexport interface TaskTreeSpinnerProps {\n readonly manager: TaskManager;\n}\n\n// Component\nexport default function TaskTreeSpinner({ manager }: TaskTreeSpinnerProps) {\n const stdin = useStdin();\n\n if (stdin.isRawModeSupported) {\n return <TaskTreeScrollableSpinner manager={manager} />;\n } else {\n return <TaskTreeFullSpinner manager={manager} />;\n }\n}\n","import { waitFor$ } from '@jujulego/event-tree';\nimport { Logger } from '@jujulego/logger';\nimport { plan as extractPlan, type Task, type TaskManager, TaskSet, type TaskSummary } from '@jujulego/tasks';\nimport { injectable } from 'inversify';\nimport { type ArgumentsCamelCase, type Argv } from 'yargs';\n\nimport { container, lazyInject } from '@/src/inversify.config.ts';\nimport { isCommandCtx } from '@/src/tasks/command-task.ts';\nimport { isScriptCtx } from '@/src/tasks/script-task.ts';\nimport { TASK_MANAGER } from '@/src/tasks/task-manager.config.ts';\nimport { type AwaitableGenerator } from '@/src/types.ts';\nimport List from '@/src/ui/list.tsx';\nimport TaskTreeCompleted from '@/src/ui/task-tree-completed.tsx';\nimport TaskTreeSpinner from '@/src/ui/task-tree-spinner.tsx';\nimport { ExitException } from '@/src/utils/exit.ts';\nimport { printJson } from '@/src/utils/json.ts';\n\nimport { InkCommand } from './ink-command.tsx';\n\n// Types\nexport interface ITaskCommandArgs {\n plan: boolean;\n 'plan-mode': 'json' | 'list';\n}\n\n// Class\n@injectable()\nexport abstract class TaskCommand<A = unknown> extends InkCommand<A> {\n // Attributes\n @lazyInject(TASK_MANAGER)\n readonly manager: TaskManager;\n\n // Methods\n abstract prepare(args: ArgumentsCamelCase<A>): AwaitableGenerator<Task>;\n\n protected addTaskOptions(parser: Argv): Argv<ITaskCommandArgs> {\n return parser\n .option('plan', {\n type: 'boolean',\n desc: 'Only prints tasks to be run',\n default: false,\n })\n .option('plan-mode', {\n type: 'string',\n desc: 'Plan output mode',\n choices: ['json', 'list'] as const,\n default: 'list' as const\n });\n }\n\n async* render(args: ArgumentsCamelCase<A & ITaskCommandArgs>) {\n // Prepare tasks\n const tasks = new TaskSet();\n\n for await (const tsk of this.prepare(args)) {\n tasks.add(tsk);\n }\n\n if (args.plan) {\n const plan: TaskSummary[] = Array.from(extractPlan(tasks));\n\n if (args.planMode === 'json') {\n printJson(plan);\n } else {\n const data = plan.map((tsk) => ({\n id: tsk.id.substring(0, 6),\n name: tsk.name,\n workspace: isCommandCtx(tsk.context) || isScriptCtx(tsk.context) ? tsk.context.workspace.name : '',\n group: tsk.groupId?.substring(0, 6),\n 'depends on': tsk.dependenciesIds.map(id => id.substring(0, 6)).join(', ')\n }));\n\n yield <List items={data} headers/>;\n }\n } else if (tasks.tasks.length > 0) {\n // Render\n yield <TaskTreeSpinner manager={this.manager} />;\n\n // Start tasks\n tasks.start(this.manager);\n\n const result = await waitFor$(tasks, 'finished');\n\n this.app.clear();\n yield <TaskTreeCompleted manager={this.manager} />;\n\n if (result.failed > 0) {\n throw new ExitException(1);\n }\n } else {\n const logger = container.get(Logger);\n logger.warning('No task found');\n }\n }\n}\n","import { Logger, withLabel } from '@jujulego/logger';\nimport { type Task } from '@jujulego/tasks';\nimport { inject, injectable, type interfaces as int } from 'inversify';\nimport yargs, { type Argv, type CommandModule } from 'yargs';\n\nimport { ContextService, type Context } from '@/src/commons/context.service.ts';\nimport { applyConfigOptions } from '@/src/config/config-options.ts';\nimport { CURRENT } from '@/src/constants.ts';\nimport { container, lazyInjectNamed } from '@/src/inversify.config.ts';\nimport { buildCommandModule, COMMAND, COMMAND_MODULE, getCommandOpts, type ICommand } from '@/src/modules/command.ts';\nimport { getModule } from '@/src/modules/module.ts';\nimport { PluginLoaderService } from '@/src/modules/plugin-loader.service.ts';\nimport { TaskCommand } from '@/src/modules/task-command.tsx';\nimport { type Class } from '@/src/types.ts';\n\n// @ts-ignore: Outside of typescript's rootDir in build\nimport pkg from '../package.json';\n\n// Application\n@injectable()\nexport class JillApplication {\n // Attributes\n readonly container: int.Container;\n readonly parser: Argv;\n\n // Constructor\n constructor(\n @inject(ContextService)\n private readonly context: ContextService,\n @inject(PluginLoaderService)\n private readonly plugins: PluginLoaderService,\n @inject(Logger)\n private readonly logger: Logger,\n ) {\n // Create container\n this.container = container.createChild();\n\n // Create parser\n this.parser = yargs()\n .scriptName('jill')\n .completion('completion', 'Generate bash completion script')\n .help('help', 'Show help for a command')\n .version('version', 'Show version', pkg.version)\n .wrap(process.stdout.columns)\n .exitProcess(false);\n }\n\n // Methods\n private _prepareParser(commands: CommandModule[]): Argv {\n applyConfigOptions(this.parser);\n\n return this.parser\n .command(commands)\n .recommendCommands()\n .strict()\n .fail(false);\n }\n\n private async _loadPlugins(): Promise<void> {\n this.logger.child(withLabel('plugin')).verbose('Loading plugin <core>');\n\n const { CorePlugin } = await import('@/src/core.plugin.ts');\n this.container.load(getModule(CorePlugin, true));\n\n await this.plugins.loadPlugins(this.container);\n }\n\n async run(argv: string | readonly string[]): Promise<void> {\n this.context.reset({ application: this });\n await this._loadPlugins();\n\n // Parse command\n const commands = await this.container.getAllAsync(COMMAND_MODULE);\n\n await this._prepareParser(commands).parseAsync(argv);\n }\n\n async tasksOf(argv: string[], ctx: Omit<Context, 'application'> = {}): Promise<Task[]> {\n this.context.reset({ ...ctx, application: this });\n await this._loadPlugins();\n\n // Prepare commands\n const commands = await this.container.getAllAsync(COMMAND);\n\n return new Promise<Task[]>((resolve, reject) => {\n const modules: CommandModule[] = [];\n\n for (const cmd of commands) {\n const opts = getCommandOpts(cmd.constructor as Class<ICommand>);\n const mod = buildCommandModule(cmd, opts);\n\n mod.handler = async (args) => {\n if (cmd instanceof TaskCommand) {\n const tasks: Task[] = [];\n\n for await (const tsk of cmd.prepare(args)) {\n tasks.push(tsk);\n }\n\n resolve(tasks);\n } else {\n resolve([]);\n }\n };\n\n modules.push(mod);\n }\n\n // Parse command\n this._prepareParser(modules)\n .parseAsync(argv)\n .catch(reject);\n });\n }\n}\n\ncontainer.bind(JillApplication)\n .toSelf()\n .inTransientScope()\n .whenTargetIsDefault();\n\n// Lazy injection\nexport function LazyCurrentApplication() {\n return lazyInjectNamed(JillApplication, CURRENT);\n}\n\ncontainer.bind(JillApplication)\n .toDynamicValue(({ container }) => {\n const ctx = container.get(ContextService);\n const app = ctx.application;\n\n if (!app) {\n throw new Error('Cannot inject current application, it not yet defined');\n }\n\n return app;\n })\n .whenTargetNamed(CURRENT);\n"],"names":["useIsVerbose","useMemo","config","container","get","CONFIG","verbose","includes","taskComparator","a","b","kindA","CommandTask","kindB","wksA","context","workspace","name","wksB","wksDiff","localeCompare","scriptA","script","scriptB","flatTasks","tasks","isVerbose","groupId","level","task","group","id","GroupTask","isCommandGroup","some","t","isCommandCtx","hasFailed","status","isStarted","ScriptTask","sort","useFlatTaskTree","manager","setTasks","useState","version","setVersion","useLayoutEffect","dirty","on","queueMicrotask","setTimeout","old","Array","from","TaskTreeStats","stats","setStats","base","running","done","failed","weight","_jsxs","Text","_Fragment","_jsx","Spinner","type","bold","color","symbols","success","error","TaskTreeCompleted","flat","Static","items","Box","marginLeft","flexShrink","TaskSpinner","useStdoutDimensions","stdout","useStdout","dimensions","setDimensions","columns","Infinity","rows","useEffect","handler","off","TaskTreeScrollableSpinner","termHeight","maxHeight","Math","min","length","start","setStart","slice","max","useInput","_","key","upArrow","downArrow","flexDirection","map","TaskTreeFullSpinner","TaskTreeSpinner","stdin","useStdin","isRawModeSupported","TaskCommand","InkCommand","addTaskOptions","parser","option","desc","default","choices","render","args","TaskSet","tsk","prepare","add","plan","extractPlan","planMode","printJson","data","substring","isScriptCtx","dependenciesIds","join","List","headers","result","waitFor$","app","clear","ExitException","logger","Logger","warning","lazyInject","TASK_MANAGER","injectable","JillApplication","constructor","plugins","createChild","yargs","scriptName","completion","help","pkg","wrap","process","exitProcess","_prepareParser","commands","applyConfigOptions","command","recommendCommands","strict","fail","_loadPlugins","child","withLabel","CorePlugin","load","getModule","loadPlugins","run","argv","reset","application","getAllAsync","COMMAND_MODULE","parseAsync","tasksOf","ctx","COMMAND","Promise","resolve","reject","modules","cmd","opts","getCommandOpts","mod","buildCommandModule","push","catch","inject","ContextService","PluginLoaderService","bind","toSelf","inTransientScope","whenTargetIsDefault","toDynamicValue","Error","whenTargetNamed","CURRENT"],"mappings":"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"}
1
+ {"version":3,"file":"jill.application-BEjmcH4e.js","sources":["../src/ui/hooks/useIsVerbose.ts","../src/ui/hooks/useFlatTaskTree.ts","../src/ui/task-tree-stats.tsx","../src/ui/task-tree-completed.tsx","../src/ui/hooks/useStdoutDimensions.ts","../src/ui/task-tree-scrollable-spinner.tsx","../src/ui/task-tree-full-spinner.tsx","../src/ui/task-tree-spinner.tsx","../src/modules/task-command.tsx","../src/jill.application.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { CONFIG } from '@/src/config/config-loader.ts';\nimport { container } from '@/src/inversify.config.ts';\n\nexport function useIsVerbose() {\n return useMemo(() => {\n const config = container.get(CONFIG);\n\n if (config.verbose) {\n return ['verbose', 'debug'].includes(config.verbose);\n } else {\n return false;\n }\n }, []);\n}\n","import { GroupTask, Task, TaskManager } from '@jujulego/tasks';\nimport { useLayoutEffect, useMemo, useState } from 'react';\n\nimport { Workspace } from '@/src/project/workspace.ts';\nimport { CommandTask, isCommandCtx } from '@/src/tasks/command-task.ts';\nimport { ScriptTask } from '@/src/tasks/script-task.ts';\nimport { useIsVerbose } from '@/src/ui/hooks/useIsVerbose.ts';\n\n// Types\nexport interface FlatTask {\n task: Task;\n level: number;\n}\n\n// Utils\n/**\n * Sorts tasks according to workspace and script, keeping command at the end\n */\nexport function taskComparator(a: Task, b: Task) {\n // 1 - compare kind\n const kindA = a instanceof CommandTask ? 0 : 1;\n const kindB = b instanceof CommandTask ? 0 : 1;\n\n if (kindA !== kindB) {\n return kindB - kindA;\n }\n\n // 2 - compare workspaces\n const wksA = 'workspace' in a.context ? (a.context.workspace as Workspace).name : '\\uffff';\n const wksB = 'workspace' in b.context ? (b.context.workspace as Workspace).name : '\\uffff';\n const wksDiff = wksA.localeCompare(wksB);\n\n if (wksDiff !== 0) {\n return wksDiff;\n }\n\n // 1 - compare scripts\n const scriptA = 'script' in a.context ? a.context.script as string : '\\uffff';\n const scriptB = 'script' in b.context ? b.context.script as string : '\\uffff';\n\n return scriptA.localeCompare(scriptB);\n}\n\n/**\n * Extract tasks to be printed, with their level in the tree\n */\nexport function * flatTasks(tasks: readonly Task[], isVerbose: boolean, groupId?: string, level = 0): Generator<FlatTask> {\n for (const task of tasks) {\n if (task.group?.id !== groupId) {\n continue;\n }\n\n yield { task, level };\n\n if (task instanceof GroupTask) {\n const isCommandGroup = task.tasks.some((t) => !isCommandCtx(t.context));\n const hasFailed = task.tasks.some((t) => t.status === 'failed');\n const isStarted = task.status === 'running';\n\n if (isVerbose || isCommandGroup || hasFailed || isStarted) {\n let tasks = task.tasks;\n\n if (task instanceof ScriptTask) {\n tasks = [...tasks].sort(taskComparator);\n }\n\n yield* flatTasks(tasks, isVerbose, task.id, level + 1);\n }\n }\n }\n}\n\n// Hook\nexport function useFlatTaskTree(manager: TaskManager): FlatTask[] {\n const isVerbose = useIsVerbose();\n\n const [tasks, setTasks] = useState([...manager.tasks].sort(taskComparator));\n const [version, setVersion] = useState(0);\n\n useLayoutEffect(() => {\n let dirty = false;\n\n return manager.on('added', () => {\n if (!dirty) {\n dirty = true;\n\n queueMicrotask(() => {\n setTasks([...manager.tasks].sort(taskComparator));\n dirty = false;\n });\n }\n });\n }, [manager]);\n\n useLayoutEffect(() => {\n let dirty = false;\n\n return manager.on('started', () => {\n if (!dirty) {\n dirty = true;\n\n setTimeout(() => {\n setVersion((old) => ++old);\n dirty = false;\n });\n }\n });\n }, [manager]);\n\n useLayoutEffect(() => {\n let dirty = false;\n\n return manager.on('completed', () => {\n if (!dirty) {\n dirty = true;\n\n setTimeout(() => {\n setVersion((old) => ++old);\n dirty = false;\n });\n }\n });\n }, [manager]);\n\n return useMemo(() => {\n return Array.from(flatTasks(tasks, isVerbose));\n }, [tasks, isVerbose, version]);\n}\n","import { TaskManager } from '@jujulego/tasks';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport symbols from 'log-symbols';\nimport { useLayoutEffect, useState } from 'react';\n\n// Types\nexport interface TaskTreeStatsProps {\n readonly manager: TaskManager;\n}\n\n// Component\nexport default function TaskTreeStats({ manager }: TaskTreeStatsProps) {\n // Follow stats\n const [stats, setStats] = useState(() => {\n const base = { running: 0, done: 0, failed: 0 };\n \n for (const task of manager.tasks) {\n switch (task.status) {\n case 'starting':\n case 'running':\n base.running += task.weight;\n break;\n\n case 'done':\n base.done += task.weight;\n break;\n\n case 'failed':\n base.failed += task.weight;\n break;\n }\n }\n \n return base;\n });\n\n useLayoutEffect(() => manager.on('started', (task) => {\n setStats((old) => ({\n ...old,\n running: old.running + task.weight\n }));\n }), [manager]);\n\n useLayoutEffect(() => manager.on('completed', (task) => {\n setStats((old) => ({\n running: old.running - task.weight,\n done: task.status === 'done' ? old.done + task.weight : old.done,\n failed: task.status === 'failed' ? old.failed + task.weight : old.failed,\n }));\n }), [manager]);\n\n // Render\n return (\n <Text>\n { (stats.running !== 0) && (\n <><Spinner type=\"sand\" /> <Text bold>{ stats.running }</Text> running</>\n ) }\n { (stats.running !== 0 && stats.done !== 0) && (<>, </>) }\n { (stats.done !== 0) && (\n <Text color=\"green\">{ symbols.success } { stats.done } done</Text>\n ) }\n { (stats.running + stats.done !== 0 && stats.failed !== 0) && (<>, </>) }\n { (stats.failed !== 0) && (\n <Text color=\"red\">{ symbols.error } { stats.failed } failed</Text>\n ) }\n </Text>\n );\n}\n","import { TaskManager } from '@jujulego/tasks';\nimport { Box, Static } from 'ink';\nimport { useMemo } from 'react';\n\nimport { flatTasks, taskComparator } from '@/src/ui/hooks/useFlatTaskTree.ts';\nimport { useIsVerbose } from '@/src/ui/hooks/useIsVerbose.ts';\nimport TaskSpinner from '@/src/ui/task-spinner.tsx';\nimport TaskTreeStats from '@/src/ui/task-tree-stats.tsx';\n\n// Types\nexport interface TaskTreeCompletedProps {\n readonly manager: TaskManager;\n}\n\n// Component\nexport default function TaskTreeCompleted({ manager }: TaskTreeCompletedProps) {\n // Config\n const isVerbose = useIsVerbose();\n\n // Extract all tasks\n const flat = useMemo(() => {\n return Array.from(flatTasks([...manager.tasks].sort(taskComparator), isVerbose));\n }, [manager, isVerbose]);\n\n // Render\n return (\n <>\n <Static items={flat}>\n { ({ task, level }) => (\n <Box key={task.id} marginLeft={level * 2} flexShrink={0}>\n <TaskSpinner task={task} />\n </Box>\n ) }\n </Static>\n <TaskTreeStats manager={manager} />\n </>\n );\n}\n","import { useStdout } from 'ink';\nimport { useEffect, useState } from 'react';\n\nexport function useStdoutDimensions() {\n const { stdout } = useStdout();\n const [dimensions, setDimensions] = useState({\n columns: stdout.columns ?? Infinity,\n rows: stdout.rows ?? Infinity,\n });\n\n useEffect(() => {\n const handler = () => setDimensions({\n columns: stdout.columns ?? Infinity,\n rows: stdout.rows ?? Infinity,\n });\n stdout.on('resize', handler);\n\n return () => {\n stdout.off('resize', handler);\n };\n }, [stdout]);\n\n return dimensions;\n}\n","import { TaskManager } from '@jujulego/tasks';\nimport { Box, Text, useInput } from 'ink';\nimport { useEffect, useMemo, useState } from 'react';\n\nimport { useStdoutDimensions } from '@/src/ui/hooks/useStdoutDimensions.ts';\nimport { useFlatTaskTree } from '@/src/ui/hooks/useFlatTaskTree.ts';\nimport TaskSpinner from '@/src/ui/task-spinner.tsx';\nimport TaskTreeStats from '@/src/ui/task-tree-stats.tsx';\n\n// Types\nexport interface TaskTreeScrollableSpinnerProps {\n readonly manager: TaskManager;\n}\n\n// Component\nexport default function TaskTreeScrollableSpinner({ manager }: TaskTreeScrollableSpinnerProps) {\n const { rows: termHeight } = useStdoutDimensions();\n\n // Extract all tasks\n const flat = useFlatTaskTree(manager);\n\n const maxHeight = useMemo(\n () => Math.min(termHeight - 4, flat.length),\n [termHeight, flat]\n );\n\n // Manage scroll\n const [start, setStart] = useState(0);\n\n const slice = useMemo(\n () => flat.slice(start, start + maxHeight),\n [flat, start, maxHeight]\n );\n\n useEffect(() => {\n if (start + maxHeight > flat.length) {\n setStart(Math.max(flat.length - maxHeight, 0));\n }\n }, [start, flat, maxHeight]);\n\n useInput((_, key) => {\n if (key.upArrow) {\n setStart((old) => Math.max(0, old - 1));\n } else if (key.downArrow) {\n setStart((old) => Math.min(flat.length - maxHeight, old + 1));\n }\n });\n\n // Render\n return (\n <>\n <Box flexDirection=\"column\">\n { slice.map(({ task, level }) => (\n <Box key={task.id} marginLeft={level * 2} flexShrink={0}>\n <TaskSpinner task={task} />\n </Box>\n )) }\n </Box>\n <Text>\n <TaskTreeStats manager={manager} />\n { (maxHeight < flat.length) && (<Text color=\"grey\"> - use keyboard arrows to scroll</Text>) }\n </Text>\n </>\n );\n}\n","import { TaskManager } from '@jujulego/tasks';\nimport { Box, Text } from 'ink';\n\nimport { useFlatTaskTree } from '@/src/ui/hooks/useFlatTaskTree.ts';\nimport TaskSpinner from '@/src/ui/task-spinner.tsx';\nimport TaskTreeStats from '@/src/ui/task-tree-stats.tsx';\n\n// Types\nexport interface TaskTreeFullSpinnerProps {\n readonly manager: TaskManager;\n}\n\n// Component\nexport default function TaskTreeFullSpinner({ manager }: TaskTreeFullSpinnerProps) {\n const flat = useFlatTaskTree(manager);\n\n // Render\n return (\n <>\n <Box flexDirection=\"column\">\n { flat.map(({ task, level }) => (\n <Box key={task.id} marginLeft={level * 2} flexShrink={0}>\n <TaskSpinner task={task} />\n </Box>\n )) }\n </Box>\n <Text>\n <TaskTreeStats manager={manager} />\n </Text>\n </>\n );\n}\n","import { TaskManager } from '@jujulego/tasks';\nimport { useStdin } from 'ink';\n\nimport TaskTreeScrollableSpinner from '@/src/ui/task-tree-scrollable-spinner.tsx';\nimport TaskTreeFullSpinner from '@/src/ui/task-tree-full-spinner.tsx';\n\n// Types\nexport interface TaskTreeSpinnerProps {\n readonly manager: TaskManager;\n}\n\n// Component\nexport default function TaskTreeSpinner({ manager }: TaskTreeSpinnerProps) {\n const stdin = useStdin();\n\n if (stdin.isRawModeSupported) {\n return <TaskTreeScrollableSpinner manager={manager} />;\n } else {\n return <TaskTreeFullSpinner manager={manager} />;\n }\n}\n","import { waitFor$ } from '@jujulego/event-tree';\nimport { Logger } from '@jujulego/logger';\nimport { plan as extractPlan, type Task, type TaskManager, TaskSet, type TaskSummary } from '@jujulego/tasks';\nimport { injectable } from 'inversify';\nimport { type ArgumentsCamelCase, type Argv } from 'yargs';\n\nimport { container, lazyInject } from '@/src/inversify.config.ts';\nimport { isCommandCtx } from '@/src/tasks/command-task.ts';\nimport { isScriptCtx } from '@/src/tasks/script-task.ts';\nimport { TASK_MANAGER } from '@/src/tasks/task-manager.config.ts';\nimport { type AwaitableGenerator } from '@/src/types.ts';\nimport List from '@/src/ui/list.tsx';\nimport TaskTreeCompleted from '@/src/ui/task-tree-completed.tsx';\nimport TaskTreeSpinner from '@/src/ui/task-tree-spinner.tsx';\nimport { ExitException } from '@/src/utils/exit.ts';\nimport { printJson } from '@/src/utils/json.ts';\n\nimport { InkCommand } from './ink-command.tsx';\n\n// Types\nexport interface ITaskCommandArgs {\n plan: boolean;\n 'plan-mode': 'json' | 'list';\n}\n\n// Class\n@injectable()\nexport abstract class TaskCommand<A = unknown> extends InkCommand<A> {\n // Attributes\n @lazyInject(TASK_MANAGER)\n readonly manager: TaskManager;\n\n // Methods\n abstract prepare(args: ArgumentsCamelCase<A>): AwaitableGenerator<Task>;\n\n protected addTaskOptions(parser: Argv): Argv<ITaskCommandArgs> {\n return parser\n .option('plan', {\n type: 'boolean',\n desc: 'Only prints tasks to be run',\n default: false,\n })\n .option('plan-mode', {\n type: 'string',\n desc: 'Plan output mode',\n choices: ['json', 'list'] as const,\n default: 'list' as const\n });\n }\n\n async* render(args: ArgumentsCamelCase<A & ITaskCommandArgs>) {\n // Prepare tasks\n const tasks = new TaskSet();\n\n for await (const tsk of this.prepare(args)) {\n tasks.add(tsk);\n }\n\n if (args.plan) {\n const plan: TaskSummary[] = Array.from(extractPlan(tasks));\n\n if (args.planMode === 'json') {\n printJson(plan);\n } else {\n const data = plan.map((tsk) => ({\n id: tsk.id.substring(0, 6),\n name: tsk.name,\n workspace: isCommandCtx(tsk.context) || isScriptCtx(tsk.context) ? tsk.context.workspace.name : '',\n group: tsk.groupId?.substring(0, 6),\n 'depends on': tsk.dependenciesIds.map(id => id.substring(0, 6)).join(', ')\n }));\n\n yield <List items={data} headers/>;\n }\n } else if (tasks.tasks.length > 0) {\n // Render\n yield <TaskTreeSpinner manager={this.manager} />;\n\n // Start tasks\n tasks.start(this.manager);\n\n const result = await waitFor$(tasks, 'finished');\n\n this.app.clear();\n yield <TaskTreeCompleted manager={this.manager} />;\n\n if (result.failed > 0) {\n throw new ExitException(1);\n }\n } else {\n const logger = container.get(Logger);\n logger.warning('No task found');\n }\n }\n}\n","import { Logger, withLabel } from '@jujulego/logger';\nimport { type Task } from '@jujulego/tasks';\nimport { inject, injectable, type interfaces as int } from 'inversify';\nimport yargs, { type Argv, type CommandModule } from 'yargs';\n\nimport { ContextService, type Context } from '@/src/commons/context.service.ts';\nimport { applyConfigOptions } from '@/src/config/config-options.ts';\nimport { CURRENT } from '@/src/constants.ts';\nimport { container, lazyInjectNamed } from '@/src/inversify.config.ts';\nimport { buildCommandModule, COMMAND, COMMAND_MODULE, getCommandOpts, type ICommand } from '@/src/modules/command.ts';\nimport { getModule } from '@/src/modules/module.ts';\nimport { PluginLoaderService } from '@/src/modules/plugin-loader.service.ts';\nimport { TaskCommand } from '@/src/modules/task-command.tsx';\nimport { type Class } from '@/src/types.ts';\n\n// @ts-ignore: Outside of typescript's rootDir in build\nimport pkg from '../package.json';\n\n// Application\n@injectable()\nexport class JillApplication {\n // Attributes\n readonly container: int.Container;\n readonly parser: Argv;\n\n // Constructor\n constructor(\n @inject(ContextService)\n private readonly context: ContextService,\n @inject(PluginLoaderService)\n private readonly plugins: PluginLoaderService,\n @inject(Logger)\n private readonly logger: Logger,\n ) {\n // Create container\n this.container = container.createChild();\n\n // Create parser\n this.parser = yargs()\n .scriptName('jill')\n .completion('completion', 'Generate bash completion script')\n .help('help', 'Show help for a command')\n .version('version', 'Show version', pkg.version)\n .wrap(process.stdout.columns)\n .exitProcess(false);\n }\n\n // Methods\n private _prepareParser(commands: CommandModule[]): Argv {\n applyConfigOptions(this.parser);\n\n return this.parser\n .command(commands)\n .recommendCommands()\n .strict()\n .fail(false);\n }\n\n private async _loadPlugins(): Promise<void> {\n this.logger.child(withLabel('plugin')).verbose('Loading plugin <core>');\n\n const { CorePlugin } = await import('@/src/core.plugin.ts');\n this.container.load(getModule(CorePlugin, true));\n\n await this.plugins.loadPlugins(this.container);\n }\n\n async run(argv: string | readonly string[]): Promise<void> {\n this.context.reset({ application: this });\n await this._loadPlugins();\n\n // Parse command\n const commands = await this.container.getAllAsync(COMMAND_MODULE);\n\n await this._prepareParser(commands).parseAsync(argv);\n }\n\n async tasksOf(argv: string[], ctx: Omit<Context, 'application'> = {}): Promise<Task[]> {\n this.context.reset({ ...ctx, application: this });\n await this._loadPlugins();\n\n // Prepare commands\n const commands = await this.container.getAllAsync(COMMAND);\n\n return new Promise<Task[]>((resolve, reject) => {\n const modules: CommandModule[] = [];\n\n for (const cmd of commands) {\n const opts = getCommandOpts(cmd.constructor as Class<ICommand>);\n const mod = buildCommandModule(cmd, opts);\n\n mod.handler = async (args) => {\n if (cmd instanceof TaskCommand) {\n const tasks: Task[] = [];\n\n for await (const tsk of cmd.prepare(args)) {\n tasks.push(tsk);\n }\n\n resolve(tasks);\n } else {\n resolve([]);\n }\n };\n\n modules.push(mod);\n }\n\n // Parse command\n this._prepareParser(modules)\n .parseAsync(argv)\n .catch(reject);\n });\n }\n}\n\ncontainer.bind(JillApplication)\n .toSelf()\n .inTransientScope()\n .whenTargetIsDefault();\n\n// Lazy injection\nexport function LazyCurrentApplication() {\n return lazyInjectNamed(JillApplication, CURRENT);\n}\n\ncontainer.bind(JillApplication)\n .toDynamicValue(({ container }) => {\n const ctx = container.get(ContextService);\n const app = ctx.application;\n\n if (!app) {\n throw new Error('Cannot inject current application, it not yet defined');\n }\n\n return app;\n })\n .whenTargetNamed(CURRENT);\n"],"names":["useIsVerbose","useMemo","config","container","get","CONFIG","verbose","includes","taskComparator","a","b","kindA","CommandTask","kindB","wksA","context","workspace","name","wksB","wksDiff","localeCompare","scriptA","script","scriptB","flatTasks","tasks","isVerbose","groupId","level","task","group","id","GroupTask","isCommandGroup","some","t","isCommandCtx","hasFailed","status","isStarted","ScriptTask","sort","useFlatTaskTree","manager","setTasks","useState","version","setVersion","useLayoutEffect","dirty","on","queueMicrotask","setTimeout","old","Array","from","TaskTreeStats","stats","setStats","base","running","done","failed","weight","_jsxs","Text","_Fragment","_jsx","Spinner","type","bold","color","symbols","success","error","TaskTreeCompleted","flat","Static","items","Box","marginLeft","flexShrink","TaskSpinner","useStdoutDimensions","stdout","useStdout","dimensions","setDimensions","columns","Infinity","rows","useEffect","handler","off","TaskTreeScrollableSpinner","termHeight","maxHeight","Math","min","length","start","setStart","slice","max","useInput","_","key","upArrow","downArrow","flexDirection","map","TaskTreeFullSpinner","TaskTreeSpinner","stdin","useStdin","isRawModeSupported","TaskCommand","InkCommand","addTaskOptions","parser","option","desc","default","choices","render","args","TaskSet","tsk","prepare","add","plan","extractPlan","planMode","printJson","data","substring","isScriptCtx","dependenciesIds","join","List","headers","result","waitFor$","app","clear","ExitException","logger","Logger","warning","lazyInject","TASK_MANAGER","injectable","JillApplication","constructor","plugins","createChild","yargs","scriptName","completion","help","pkg","wrap","process","exitProcess","_prepareParser","commands","applyConfigOptions","command","recommendCommands","strict","fail","_loadPlugins","child","withLabel","CorePlugin","load","getModule","loadPlugins","run","argv","reset","application","getAllAsync","COMMAND_MODULE","parseAsync","tasksOf","ctx","COMMAND","Promise","resolve","reject","modules","cmd","opts","getCommandOpts","mod","buildCommandModule","push","catch","inject","ContextService","PluginLoaderService","bind","toSelf","inTransientScope","whenTargetIsDefault","toDynamicValue","Error","whenTargetNamed","CURRENT"],"mappings":"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"}
package/dist/main.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Logger } from '@jujulego/logger';
2
2
  import { hideBin } from 'yargs/helpers';
3
- import { m as container, E as ExitException } from './ink-command-8BDSCbqp.js';
4
- import { J as JillApplication } from './jill.application-8LJ2a7MD.js';
3
+ import { m as container, E as ExitException } from './ink-command-dQCqkmg0.js';
4
+ import { J as JillApplication } from './jill.application-BEjmcH4e.js';
5
5
  import '@swc/helpers/_/_ts_decorate';
6
6
  import '@swc/helpers/_/_ts_param';
7
7
  import 'inversify';
@@ -21,7 +21,6 @@ import 'pretty-ms';
21
21
  import 'react';
22
22
  import '@jujulego/event-tree';
23
23
  import 'inversify-inject-decorators';
24
- import 'reflect-metadata';
25
24
  import '@jujulego/aegis';
26
25
  import '@jujulego/quick-tag';
27
26
  import 'chalk-template';
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../src/main.ts"],"sourcesContent":["import { Logger } from '@jujulego/logger';\nimport { hideBin } from 'yargs/helpers';\n\nimport '@/src/commons/logger.service.ts';\nimport { container } from '@/src/inversify.config.ts';\nimport { JillApplication } from '@/src/jill.application.ts';\nimport { ExitException } from '@/src/utils/exit.ts';\n\n// Bootstrap\n(async () => {\n const app = await container.getAsync(JillApplication);\n\n try {\n await app.run(hideBin(process.argv));\n } catch (err) {\n if (err instanceof ExitException) {\n process.exit(err.code);\n } else {\n console.error(await app.parser.getHelp());\n\n if (err.message) {\n const logger = container.get(Logger);\n logger.error(err.message);\n }\n\n process.exit(1);\n }\n }\n})();\n"],"names":["app","container","getAsync","JillApplication","run","hideBin","process","argv","err","ExitException","exit","code","console","error","parser","getHelp","message","logger","get","Logger"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA;AACC,CAAA,UAAA;AACC,IAAA,MAAMA,GAAM,GAAA,MAAMC,SAAUC,CAAAA,QAAQ,CAACC,eAAAA,CAAAA,CAAAA;IAErC,IAAI;AACF,QAAA,MAAMH,GAAII,CAAAA,GAAG,CAACC,OAAAA,CAAQC,QAAQC,IAAI,CAAA,CAAA,CAAA;AACpC,KAAA,CAAE,OAAOC,GAAK,EAAA;AACZ,QAAA,IAAIA,eAAeC,aAAe,EAAA;YAChCH,OAAQI,CAAAA,IAAI,CAACF,GAAAA,CAAIG,IAAI,CAAA,CAAA;SAChB,MAAA;AACLC,YAAAA,OAAAA,CAAQC,KAAK,CAAC,MAAMb,GAAIc,CAAAA,MAAM,CAACC,OAAO,EAAA,CAAA,CAAA;YAEtC,IAAIP,GAAAA,CAAIQ,OAAO,EAAE;gBACf,MAAMC,MAAAA,GAAShB,SAAUiB,CAAAA,GAAG,CAACC,MAAAA,CAAAA,CAAAA;gBAC7BF,MAAOJ,CAAAA,KAAK,CAACL,GAAAA,CAAIQ,OAAO,CAAA,CAAA;AAC1B,aAAA;AAEAV,YAAAA,OAAAA,CAAQI,IAAI,CAAC,CAAA,CAAA,CAAA;AACf,SAAA;AACF,KAAA;AACF,CAAA,GAAA"}
1
+ {"version":3,"file":"main.js","sources":["../src/main.ts"],"sourcesContent":["import { Logger } from '@jujulego/logger';\nimport { hideBin } from 'yargs/helpers';\n\nimport '@/src/commons/logger.service.ts';\nimport { container } from '@/src/inversify.config.ts';\nimport { JillApplication } from '@/src/jill.application.ts';\nimport { ExitException } from '@/src/utils/exit.ts';\n\n// Bootstrap\n(async () => {\n const app = await container.getAsync(JillApplication);\n\n try {\n await app.run(hideBin(process.argv));\n } catch (err) {\n if (err instanceof ExitException) {\n process.exit(err.code);\n } else {\n console.error(await app.parser.getHelp());\n\n if (err.message) {\n const logger = container.get(Logger);\n logger.error(err.message);\n }\n\n process.exit(1);\n }\n }\n})();\n"],"names":["app","container","getAsync","JillApplication","run","hideBin","process","argv","err","ExitException","exit","code","console","error","parser","getHelp","message","logger","get","Logger"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA;AACC,CAAA,UAAA;AACC,IAAA,MAAMA,GAAM,GAAA,MAAMC,SAAUC,CAAAA,QAAQ,CAACC,eAAAA,CAAAA,CAAAA;IAErC,IAAI;AACF,QAAA,MAAMH,GAAII,CAAAA,GAAG,CAACC,OAAAA,CAAQC,QAAQC,IAAI,CAAA,CAAA,CAAA;AACpC,KAAA,CAAE,OAAOC,GAAK,EAAA;AACZ,QAAA,IAAIA,eAAeC,aAAe,EAAA;YAChCH,OAAQI,CAAAA,IAAI,CAACF,GAAAA,CAAIG,IAAI,CAAA,CAAA;SAChB,MAAA;AACLC,YAAAA,OAAAA,CAAQC,KAAK,CAAC,MAAMb,GAAIc,CAAAA,MAAM,CAACC,OAAO,EAAA,CAAA,CAAA;YAEtC,IAAIP,GAAAA,CAAIQ,OAAO,EAAE;gBACf,MAAMC,MAAAA,GAAShB,SAAUiB,CAAAA,GAAG,CAACC,MAAAA,CAAAA,CAAAA;gBAC7BF,MAAOJ,CAAAA,KAAK,CAACL,GAAAA,CAAIQ,OAAO,CAAA,CAAA;AAC1B,aAAA;AAEAV,YAAAA,OAAAA,CAAQI,IAAI,CAAC,CAAA,CAAA,CAAA;AACf,SAAA;AACF,KAAA;AACF,CAAA,GAAA"}