@jujulego/jill 2.0.0-beta.1 → 2.0.0-beta.2

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,"sources":["commands/each.command.tsx"],"names":[],"mappings":"AACA,OAAO,EAAW,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAiDjE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;EA+CtB,CAAC","file":"each.command.d.ts","sourcesContent":["import { AffectedFilter, Filter, Pipeline } from '@jujulego/jill-common';\nimport { TaskSet, WorkspaceDepsMode } from '@jujulego/jill-core';\nimport { useApp } from 'ink';\nimport { useEffect, useRef } from 'react';\n\nimport { command } from '../command';\nimport { TaskSetSpinner } from '../components/TaskSetSpinner';\nimport { useProject, withProject } from '../wrappers/project.wrapper';\n\n// Command\nconst { wrapper, useArgs } = withProject(command({\n name: 'each <script>',\n description: 'Run script on selected workspaces',\n builder: yargs => yargs\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all' as WorkspaceDepsMode,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n .option('affected', {\n alias: 'a',\n type: 'string',\n coerce: (rev: string) => rev === '' ? 'master' : rev,\n group: 'Affected:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master.\\n' +\n 'Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Affected:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Affected:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n })\n}));\n\n// Component\nexport const EachCommand = wrapper(function EachCommand() {\n const args = useArgs();\n const project = useProject();\n const { exit } = useApp();\n\n // Refs\n const tasks = useRef(new TaskSet());\n\n // Effects\n useEffect(() => void (async () => {\n // Setup pipeline\n const pipeline = new Pipeline();\n pipeline.add(Filter.scripts([args.script]));\n\n if (args.private !== undefined) {\n pipeline.add(Filter.privateWorkspace(args.private));\n }\n\n if (args.affected !== undefined) {\n pipeline.add(new AffectedFilter(\n args.affected,\n args.affectedRevFallback,\n args.affectedRevSort\n ));\n }\n\n // Filter and create tasks\n for await (const wks of pipeline.filter(project.workspaces())) {\n tasks.current.add(await wks.run(args.script, args['--']?.map(arg => arg.toString()), {\n buildDeps: args.depsMode\n }));\n }\n\n tasks.current.start();\n\n // Result end code\n const [result] = await tasks.current.waitFor('finished');\n\n if (result.failed) {\n exit(new Error('Some tasks has failed'));\n }\n })(), [args]);\n\n // Render\n return (\n <TaskSetSpinner taskSet={tasks.current} />\n );\n});\n"]}
1
+ {"version":3,"sources":["commands/each.command.tsx"],"names":[],"mappings":"AACA,OAAO,EAAW,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAgDjE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;EA+CtB,CAAC","file":"each.command.d.ts","sourcesContent":["import { AffectedFilter, Filter, Pipeline, TaskSetSpinner } from '@jujulego/jill-common';\nimport { TaskSet, WorkspaceDepsMode } from '@jujulego/jill-core';\nimport { useApp } from 'ink';\nimport { useEffect, useRef } from 'react';\n\nimport { command } from '../command';\nimport { useProject, withProject } from '../wrappers/project.wrapper';\n\n// Command\nconst { wrapper, useArgs } = withProject(command({\n name: 'each <script>',\n description: 'Run script on selected workspaces',\n builder: yargs => yargs\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all' as WorkspaceDepsMode,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n .option('affected', {\n alias: 'a',\n type: 'string',\n coerce: (rev: string) => rev === '' ? 'master' : rev,\n group: 'Affected:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master.\\n' +\n 'Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Affected:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Affected:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n })\n}));\n\n// Component\nexport const EachCommand = wrapper(function EachCommand() {\n const args = useArgs();\n const project = useProject();\n const { exit } = useApp();\n\n // Refs\n const tasks = useRef(new TaskSet());\n\n // Effects\n useEffect(() => void (async () => {\n // Setup pipeline\n const pipeline = new Pipeline();\n pipeline.add(Filter.scripts([args.script]));\n\n if (args.private !== undefined) {\n pipeline.add(Filter.privateWorkspace(args.private));\n }\n\n if (args.affected !== undefined) {\n pipeline.add(new AffectedFilter(\n args.affected,\n args.affectedRevFallback,\n args.affectedRevSort\n ));\n }\n\n // Filter and create tasks\n for await (const wks of pipeline.filter(project.workspaces())) {\n tasks.current.add(await wks.run(args.script, args['--']?.map(arg => arg.toString()), {\n buildDeps: args.depsMode\n }));\n }\n\n tasks.current.start();\n\n // Result end code\n const [result] = await tasks.current.waitFor('finished');\n\n if (result.failed) {\n exit(new Error('Some tasks has failed'));\n }\n })(), [args, project, exit]);\n\n // Render\n return (\n <TaskSetSpinner taskSet={tasks.current} />\n );\n});\n"]}
@@ -17,8 +17,6 @@ var _react = require("react");
17
17
 
18
18
  var _command = require("../command");
19
19
 
20
- var _TaskSetSpinner = require("../components/TaskSetSpinner");
21
-
22
20
  var _project = require("../wrappers/project.wrapper");
23
21
 
24
22
  var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
@@ -168,9 +166,9 @@ const EachCommand = wrapper(function EachCommand() {
168
166
  if (result.failed) {
169
167
  exit(new Error('Some tasks has failed'));
170
168
  }
171
- }))(), [args]); // Render
169
+ }))(), [args, project, exit]); // Render
172
170
 
173
- return (0, _jsxRuntime.jsx)(_TaskSetSpinner.TaskSetSpinner, {
171
+ return (0, _jsxRuntime.jsx)(_jillCommon.TaskSetSpinner, {
174
172
  taskSet: tasks.current
175
173
  });
176
174
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["commands/each.command.js","commands/each.command.tsx"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__asyncValues","o","Symbol","asyncIterator","TypeError","m","i","call","__values","iterator","verb","n","v","settle","d","wrapper","useArgs","name","description","builder","yargs","positional","type","demandOption","option","choice","default","desc","group","alias","coerce","rev","EachCommand","args","project","exit","tasks","TaskSet","e_1","_a","_b","pipeline","Pipeline","add","Filter","scripts","script","private","undefined","privateWorkspace","affected","AffectedFilter","affectedRevFallback","affectedRevSort","_c","filter","workspaces","_d","wks","current","run","map","arg","toString","buildDeps","depsMode","e_1_1","error","return","start","waitFor","failed","Error","TaskSetSpinner","taskSet"],"mappings":"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","file":"each.command.js","sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { AffectedFilter, Filter, Pipeline } from '@jujulego/jill-common';\nimport { TaskSet } from '@jujulego/jill-core';\nimport { useApp } from 'ink';\nimport { useEffect, useRef } from 'react';\nimport { command } from '../command';\nimport { TaskSetSpinner } from '../components/TaskSetSpinner';\nimport { useProject, withProject } from '../wrappers/project.wrapper';\n// Command\nconst { wrapper, useArgs } = withProject(command({\n name: 'each <script>',\n description: 'Run script on selected workspaces',\n builder: yargs => yargs\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all',\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n .option('affected', {\n alias: 'a',\n type: 'string',\n coerce: (rev) => rev === '' ? 'master' : rev,\n group: 'Affected:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master.\\n' +\n 'Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Affected:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Affected:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n })\n}));\n// Component\nexport const EachCommand = wrapper(function EachCommand() {\n const args = useArgs();\n const project = useProject();\n const { exit } = useApp();\n // Refs\n const tasks = useRef(new TaskSet());\n // Effects\n useEffect(() => void (() => __awaiter(this, void 0, void 0, function* () {\n var e_1, _a;\n var _b;\n // Setup pipeline\n const pipeline = new Pipeline();\n pipeline.add(Filter.scripts([args.script]));\n if (args.private !== undefined) {\n pipeline.add(Filter.privateWorkspace(args.private));\n }\n if (args.affected !== undefined) {\n pipeline.add(new AffectedFilter(args.affected, args.affectedRevFallback, args.affectedRevSort));\n }\n try {\n // Filter and create tasks\n for (var _c = __asyncValues(pipeline.filter(project.workspaces())), _d; _d = yield _c.next(), !_d.done;) {\n const wks = _d.value;\n tasks.current.add(yield wks.run(args.script, (_b = args['--']) === null || _b === void 0 ? void 0 : _b.map(arg => arg.toString()), {\n buildDeps: args.depsMode\n }));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) yield _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n tasks.current.start();\n // Result end code\n const [result] = yield tasks.current.waitFor('finished');\n if (result.failed) {\n exit(new Error('Some tasks has failed'));\n }\n }))(), [args]);\n // Render\n return (_jsx(TaskSetSpinner, { taskSet: tasks.current }));\n});","import { AffectedFilter, Filter, Pipeline } from '@jujulego/jill-common';\nimport { TaskSet, WorkspaceDepsMode } from '@jujulego/jill-core';\nimport { useApp } from 'ink';\nimport { useEffect, useRef } from 'react';\n\nimport { command } from '../command';\nimport { TaskSetSpinner } from '../components/TaskSetSpinner';\nimport { useProject, withProject } from '../wrappers/project.wrapper';\n\n// Command\nconst { wrapper, useArgs } = withProject(command({\n name: 'each <script>',\n description: 'Run script on selected workspaces',\n builder: yargs => yargs\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all' as WorkspaceDepsMode,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n .option('affected', {\n alias: 'a',\n type: 'string',\n coerce: (rev: string) => rev === '' ? 'master' : rev,\n group: 'Affected:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master.\\n' +\n 'Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Affected:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Affected:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n })\n}));\n\n// Component\nexport const EachCommand = wrapper(function EachCommand() {\n const args = useArgs();\n const project = useProject();\n const { exit } = useApp();\n\n // Refs\n const tasks = useRef(new TaskSet());\n\n // Effects\n useEffect(() => void (async () => {\n // Setup pipeline\n const pipeline = new Pipeline();\n pipeline.add(Filter.scripts([args.script]));\n\n if (args.private !== undefined) {\n pipeline.add(Filter.privateWorkspace(args.private));\n }\n\n if (args.affected !== undefined) {\n pipeline.add(new AffectedFilter(\n args.affected,\n args.affectedRevFallback,\n args.affectedRevSort\n ));\n }\n\n // Filter and create tasks\n for await (const wks of pipeline.filter(project.workspaces())) {\n tasks.current.add(await wks.run(args.script, args['--']?.map(arg => arg.toString()), {\n buildDeps: args.depsMode\n }));\n }\n\n tasks.current.start();\n\n // Result end code\n const [result] = await tasks.current.waitFor('finished');\n\n if (result.failed) {\n exit(new Error('Some tasks has failed'));\n }\n })(), [args]);\n\n // Render\n return (\n <TaskSetSpinner taskSet={tasks.current} />\n );\n});\n"]}
1
+ {"version":3,"sources":["commands/each.command.js","commands/each.command.tsx"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__asyncValues","o","Symbol","asyncIterator","TypeError","m","i","call","__values","iterator","verb","n","v","settle","d","wrapper","useArgs","name","description","builder","yargs","positional","type","demandOption","option","choice","default","desc","group","alias","coerce","rev","EachCommand","args","project","exit","tasks","TaskSet","e_1","_a","_b","pipeline","Pipeline","add","Filter","scripts","script","private","undefined","privateWorkspace","affected","AffectedFilter","affectedRevFallback","affectedRevSort","_c","filter","workspaces","_d","wks","current","run","map","arg","toString","buildDeps","depsMode","e_1_1","error","return","start","waitFor","failed","Error","TaskSetSpinner","taskSet"],"mappings":"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","file":"each.command.js","sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { AffectedFilter, Filter, Pipeline, TaskSetSpinner } from '@jujulego/jill-common';\nimport { TaskSet } from '@jujulego/jill-core';\nimport { useApp } from 'ink';\nimport { useEffect, useRef } from 'react';\nimport { command } from '../command';\nimport { useProject, withProject } from '../wrappers/project.wrapper';\n// Command\nconst { wrapper, useArgs } = withProject(command({\n name: 'each <script>',\n description: 'Run script on selected workspaces',\n builder: yargs => yargs\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all',\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n .option('affected', {\n alias: 'a',\n type: 'string',\n coerce: (rev) => rev === '' ? 'master' : rev,\n group: 'Affected:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master.\\n' +\n 'Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Affected:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Affected:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n })\n}));\n// Component\nexport const EachCommand = wrapper(function EachCommand() {\n const args = useArgs();\n const project = useProject();\n const { exit } = useApp();\n // Refs\n const tasks = useRef(new TaskSet());\n // Effects\n useEffect(() => void (() => __awaiter(this, void 0, void 0, function* () {\n var e_1, _a;\n var _b;\n // Setup pipeline\n const pipeline = new Pipeline();\n pipeline.add(Filter.scripts([args.script]));\n if (args.private !== undefined) {\n pipeline.add(Filter.privateWorkspace(args.private));\n }\n if (args.affected !== undefined) {\n pipeline.add(new AffectedFilter(args.affected, args.affectedRevFallback, args.affectedRevSort));\n }\n try {\n // Filter and create tasks\n for (var _c = __asyncValues(pipeline.filter(project.workspaces())), _d; _d = yield _c.next(), !_d.done;) {\n const wks = _d.value;\n tasks.current.add(yield wks.run(args.script, (_b = args['--']) === null || _b === void 0 ? void 0 : _b.map(arg => arg.toString()), {\n buildDeps: args.depsMode\n }));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) yield _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n tasks.current.start();\n // Result end code\n const [result] = yield tasks.current.waitFor('finished');\n if (result.failed) {\n exit(new Error('Some tasks has failed'));\n }\n }))(), [args, project, exit]);\n // Render\n return (_jsx(TaskSetSpinner, { taskSet: tasks.current }));\n});","import { AffectedFilter, Filter, Pipeline, TaskSetSpinner } from '@jujulego/jill-common';\nimport { TaskSet, WorkspaceDepsMode } from '@jujulego/jill-core';\nimport { useApp } from 'ink';\nimport { useEffect, useRef } from 'react';\n\nimport { command } from '../command';\nimport { useProject, withProject } from '../wrappers/project.wrapper';\n\n// Command\nconst { wrapper, useArgs } = withProject(command({\n name: 'each <script>',\n description: 'Run script on selected workspaces',\n builder: yargs => yargs\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all' as WorkspaceDepsMode,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n .option('affected', {\n alias: 'a',\n type: 'string',\n coerce: (rev: string) => rev === '' ? 'master' : rev,\n group: 'Affected:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master.\\n' +\n 'Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Affected:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Affected:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n })\n}));\n\n// Component\nexport const EachCommand = wrapper(function EachCommand() {\n const args = useArgs();\n const project = useProject();\n const { exit } = useApp();\n\n // Refs\n const tasks = useRef(new TaskSet());\n\n // Effects\n useEffect(() => void (async () => {\n // Setup pipeline\n const pipeline = new Pipeline();\n pipeline.add(Filter.scripts([args.script]));\n\n if (args.private !== undefined) {\n pipeline.add(Filter.privateWorkspace(args.private));\n }\n\n if (args.affected !== undefined) {\n pipeline.add(new AffectedFilter(\n args.affected,\n args.affectedRevFallback,\n args.affectedRevSort\n ));\n }\n\n // Filter and create tasks\n for await (const wks of pipeline.filter(project.workspaces())) {\n tasks.current.add(await wks.run(args.script, args['--']?.map(arg => arg.toString()), {\n buildDeps: args.depsMode\n }));\n }\n\n tasks.current.start();\n\n // Result end code\n const [result] = await tasks.current.waitFor('finished');\n\n if (result.failed) {\n exit(new Error('Some tasks has failed'));\n }\n })(), [args, project, exit]);\n\n // Render\n return (\n <TaskSetSpinner taskSet={tasks.current} />\n );\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["commands/list.command.tsx"],"names":[],"mappings":"AAaA,oBAAY,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAC7D,oBAAY,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AA0FtD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;EAwEtB,CAAC","file":"list.command.d.ts","sourcesContent":["import { AffectedFilter, Filter, Pipeline } from '@jujulego/jill-common';\nimport { Workspace } from '@jujulego/jill-core';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport * as path from 'path';\nimport { useEffect, useMemo, useState } from 'react';\nimport slugify from 'slugify';\n\nimport { command } from '../command';\nimport { useProject, withProject } from '../wrappers/project.wrapper';\nimport { List } from '../components/List';\n\n// Types\nexport type Attribute = 'name' | 'version' | 'root' | 'slug';\nexport type Data = Partial<Record<Attribute, string>>;\n\ntype Extractor<T> = (wks: Workspace, json: boolean) => T;\n\n// Constants\nconst LONG_ATTRIBUTES: Attribute[] = ['name', 'version', 'root'];\nconst JSON_ATTRIBUTES: Attribute[] = ['name', 'version', 'slug', 'root'];\nconst DEFAULT_ATTRIBUTES: Attribute[] = ['name'];\n\nconst EXTRACTORS: Record<Attribute, Extractor<string | undefined>> = {\n name: wks => wks.name,\n version: wks => wks.manifest.version || undefined,\n root: (wks, json) => json ? wks.cwd : path.relative(process.cwd(), wks.cwd) || '.',\n slug: wks => slugify(wks.name)\n};\n\n// Utils\nfunction buildExtractor(attrs: Attribute[]): Extractor<Data> {\n return (wks, json) => {\n const data: Data = {};\n\n for (const attr of attrs) {\n data[attr] = EXTRACTORS[attr](wks, json);\n }\n\n return data;\n };\n}\n\n// Command\nconst { wrapper, useArgs } = withProject(command({\n name: ['list', 'ls'],\n description: 'List workspaces',\n builder: (yargs) => yargs\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n .option('with-script', {\n type: 'array',\n string: true,\n group: 'Filters:',\n desc: 'Print only workspaces having the given script',\n })\n .option('affected', {\n alias: 'a',\n type: 'string',\n coerce: (rev: string) => rev === '' ? 'master' : rev,\n group: 'Affected:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master.\\n' +\n 'Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Affected:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Affected:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n })\n .option('attrs', {\n type: 'array',\n choices: ['name', 'version', 'root', 'slug'],\n default: [] as Attribute[],\n group: 'Format:',\n desc: 'Select printed attributes'\n })\n .option('headers', {\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints columns headers'\n })\n .option('long', {\n alias: 'l',\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints name, version and root of all workspaces',\n })\n .option('json', {\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints data as a JSON array',\n }),\n}));\n\n// Component\nexport const ListCommand = wrapper(function ListComponent() {\n const args = useArgs();\n const project = useProject();\n\n // State\n const [workspaces, setWorkspaces] = useState<Workspace[]>();\n\n // Memo\n const attrs = useMemo(() => {\n let attrs = args.attrs;\n\n if (args.attrs.length === 0) {\n if (args.long) {\n attrs = LONG_ATTRIBUTES;\n } else if (args.json) {\n attrs = JSON_ATTRIBUTES;\n } else {\n attrs = DEFAULT_ATTRIBUTES;\n }\n }\n\n return attrs;\n }, [args]);\n\n const data = useMemo(() => {\n return workspaces?.map(wks => buildExtractor(attrs)(wks, args.json ?? false));\n }, [attrs, args, workspaces]);\n\n // Effects\n useEffect(() => void (async () => {\n // Setup pipeline\n const pipeline = new Pipeline();\n\n if (args.private !== undefined) {\n pipeline.add(Filter.privateWorkspace(args.private));\n }\n\n if (args.withScript !== undefined) {\n pipeline.add(Filter.scripts(args.withScript));\n }\n\n if (args.affected !== undefined) {\n pipeline.add(new AffectedFilter(\n args.affected,\n args.affectedRevFallback,\n args.affectedRevSort\n ));\n }\n\n // Filter\n const workspaces: Workspace[] = [];\n\n for await (const wks of pipeline.filter(project.workspaces())) {\n workspaces.push(wks);\n }\n\n setWorkspaces(workspaces);\n })(), [args]);\n\n // Render\n if (!data) {\n return <Text><Spinner /> Loading workspaces</Text>;\n }\n\n return (\n <List\n attrs={attrs}\n data={data}\n json={args.json}\n withoutHeaders={!(args.headers ?? (attrs.length > 1))}\n />\n );\n});\n"]}
1
+ {"version":3,"sources":["commands/list.command.tsx"],"names":[],"mappings":"AAYA,oBAAY,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAC7D,oBAAY,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AA0FtD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;EAwEtB,CAAC","file":"list.command.d.ts","sourcesContent":["import { AffectedFilter, Filter, List, Pipeline } from '@jujulego/jill-common';\nimport { Workspace } from '@jujulego/jill-core';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport * as path from 'path';\nimport { useEffect, useMemo, useState } from 'react';\nimport slugify from 'slugify';\n\nimport { command } from '../command';\nimport { useProject, withProject } from '../wrappers/project.wrapper';\n\n// Types\nexport type Attribute = 'name' | 'version' | 'root' | 'slug';\nexport type Data = Partial<Record<Attribute, string>>;\n\ntype Extractor<T> = (wks: Workspace, json: boolean) => T;\n\n// Constants\nconst LONG_ATTRIBUTES: Attribute[] = ['name', 'version', 'root'];\nconst JSON_ATTRIBUTES: Attribute[] = ['name', 'version', 'slug', 'root'];\nconst DEFAULT_ATTRIBUTES: Attribute[] = ['name'];\n\nconst EXTRACTORS: Record<Attribute, Extractor<string | undefined>> = {\n name: wks => wks.name,\n version: wks => wks.manifest.version || undefined,\n root: (wks, json) => json ? wks.cwd : path.relative(process.cwd(), wks.cwd) || '.',\n slug: wks => slugify(wks.name)\n};\n\n// Utils\nfunction buildExtractor(attrs: Attribute[]): Extractor<Data> {\n return (wks, json) => {\n const data: Data = {};\n\n for (const attr of attrs) {\n data[attr] = EXTRACTORS[attr](wks, json);\n }\n\n return data;\n };\n}\n\n// Command\nconst { wrapper, useArgs } = withProject(command({\n name: ['list', 'ls'],\n description: 'List workspaces',\n builder: (yargs) => yargs\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n .option('with-script', {\n type: 'array',\n string: true,\n group: 'Filters:',\n desc: 'Print only workspaces having the given script',\n })\n .option('affected', {\n alias: 'a',\n type: 'string',\n coerce: (rev: string) => rev === '' ? 'master' : rev,\n group: 'Affected:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master.\\n' +\n 'Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Affected:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Affected:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n })\n .option('attrs', {\n type: 'array',\n choices: ['name', 'version', 'root', 'slug'],\n default: [] as Attribute[],\n group: 'Format:',\n desc: 'Select printed attributes'\n })\n .option('headers', {\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints columns headers'\n })\n .option('long', {\n alias: 'l',\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints name, version and root of all workspaces',\n })\n .option('json', {\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints data as a JSON array',\n }),\n}));\n\n// Component\nexport const ListCommand = wrapper(function ListComponent() {\n const args = useArgs();\n const project = useProject();\n\n // State\n const [workspaces, setWorkspaces] = useState<Workspace[]>();\n\n // Memo\n const attrs = useMemo(() => {\n let attrs = args.attrs;\n\n if (args.attrs.length === 0) {\n if (args.long) {\n attrs = LONG_ATTRIBUTES;\n } else if (args.json) {\n attrs = JSON_ATTRIBUTES;\n } else {\n attrs = DEFAULT_ATTRIBUTES;\n }\n }\n\n return attrs;\n }, [args]);\n\n const data = useMemo(() => {\n return workspaces?.map(wks => buildExtractor(attrs)(wks, args.json ?? false));\n }, [attrs, args, workspaces]);\n\n // Effects\n useEffect(() => void (async () => {\n // Setup pipeline\n const pipeline = new Pipeline();\n\n if (args.private !== undefined) {\n pipeline.add(Filter.privateWorkspace(args.private));\n }\n\n if (args.withScript !== undefined) {\n pipeline.add(Filter.scripts(args.withScript));\n }\n\n if (args.affected !== undefined) {\n pipeline.add(new AffectedFilter(\n args.affected,\n args.affectedRevFallback,\n args.affectedRevSort\n ));\n }\n\n // Filter\n const workspaces: Workspace[] = [];\n\n for await (const wks of pipeline.filter(project.workspaces())) {\n workspaces.push(wks);\n }\n\n setWorkspaces(workspaces);\n })(), [project, args]);\n\n // Render\n if (!data) {\n return <Text><Spinner /> Loading workspaces</Text>;\n }\n\n return (\n <List\n attrs={attrs}\n data={data}\n json={args.json}\n withoutHeaders={!(args.headers ?? (attrs.length > 1))}\n />\n );\n});\n"]}
@@ -23,8 +23,6 @@ var _command = require("../command");
23
23
 
24
24
  var _project = require("../wrappers/project.wrapper");
25
25
 
26
- var _List = require("../components/List");
27
-
28
26
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
27
 
30
28
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -235,7 +233,7 @@ const ListCommand = wrapper(function ListComponent() {
235
233
  }
236
234
 
237
235
  setWorkspaces(workspaces);
238
- }))(), [args]); // Render
236
+ }))(), [project, args]); // Render
239
237
 
240
238
  if (!data) {
241
239
  return (0, _jsxRuntime.jsxs)(_ink.Text, {
@@ -243,7 +241,7 @@ const ListCommand = wrapper(function ListComponent() {
243
241
  });
244
242
  }
245
243
 
246
- return (0, _jsxRuntime.jsx)(_List.List, {
244
+ return (0, _jsxRuntime.jsx)(_jillCommon.List, {
247
245
  attrs: attrs,
248
246
  data: data,
249
247
  json: args.json,
@@ -1 +1 @@
1
- {"version":3,"sources":["commands/list.command.js","commands/list.command.tsx"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__asyncValues","o","Symbol","asyncIterator","TypeError","m","i","call","__values","iterator","verb","n","v","settle","d","LONG_ATTRIBUTES","JSON_ATTRIBUTES","DEFAULT_ATTRIBUTES","EXTRACTORS","name","wks","version","manifest","undefined","root","json","cwd","path","relative","process","slug","buildExtractor","attrs","data","attr","wrapper","useArgs","description","builder","yargs","option","type","group","desc","string","alias","coerce","rev","default","choices","ListCommand","ListComponent","_a","args","project","workspaces","setWorkspaces","length","long","map","e_1","_b","pipeline","Pipeline","private","add","Filter","privateWorkspace","withScript","scripts","affected","AffectedFilter","affectedRevFallback","affectedRevSort","_c","filter","_d","push","e_1_1","error","return","Text","children","Spinner","List","withoutHeaders","headers"],"mappings":";;;;;;;AAgBA;;AChBA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;ADVA,IAAIA,SAAS,GAAI,UAAQ,SAAKA,SAAd,IAA4B,UAAUC,OAAV,EAAmBC,UAAnB,EAA+BC,CAA/B,EAAkCC,SAAlC,EAA6C;AACrF,WAASC,KAAT,CAAeC,KAAf,EAAsB;AAAE,WAAOA,KAAK,YAAYH,CAAjB,GAAqBG,KAArB,GAA6B,IAAIH,CAAJ,CAAM,UAAUI,OAAV,EAAmB;AAAEA,MAAAA,OAAO,CAACD,KAAD,CAAP;AAAiB,KAA5C,CAApC;AAAoF;;AAC5G,SAAO,KAAKH,CAAC,KAAKA,CAAC,GAAGK,OAAT,CAAN,EAAyB,UAAUD,OAAV,EAAmBE,MAAnB,EAA2B;AACvD,aAASC,SAAT,CAAmBJ,KAAnB,EAA0B;AAAE,UAAI;AAAEK,QAAAA,IAAI,CAACP,SAAS,CAACQ,IAAV,CAAeN,KAAf,CAAD,CAAJ;AAA8B,OAApC,CAAqC,OAAOO,CAAP,EAAU;AAAEJ,QAAAA,MAAM,CAACI,CAAD,CAAN;AAAY;AAAE;;AAC3F,aAASC,QAAT,CAAkBR,KAAlB,EAAyB;AAAE,UAAI;AAAEK,QAAAA,IAAI,CAACP,SAAS,CAAC,OAAD,CAAT,CAAmBE,KAAnB,CAAD,CAAJ;AAAkC,OAAxC,CAAyC,OAAOO,CAAP,EAAU;AAAEJ,QAAAA,MAAM,CAACI,CAAD,CAAN;AAAY;AAAE;;AAC9F,aAASF,IAAT,CAAcI,MAAd,EAAsB;AAAEA,MAAAA,MAAM,CAACC,IAAP,GAAcT,OAAO,CAACQ,MAAM,CAACT,KAAR,CAArB,GAAsCD,KAAK,CAACU,MAAM,CAACT,KAAR,CAAL,CAAoBW,IAApB,CAAyBP,SAAzB,EAAoCI,QAApC,CAAtC;AAAsF;;AAC9GH,IAAAA,IAAI,CAAC,CAACP,SAAS,GAAGA,SAAS,CAACc,KAAV,CAAgBjB,OAAhB,EAAyBC,UAAU,IAAI,EAAvC,CAAb,EAAyDU,IAAzD,EAAD,CAAJ;AACH,GALM,CAAP;AAMH,CARD;;AASA,IAAIO,aAAa,GAAI,UAAQ,SAAKA,aAAd,IAAgC,UAAUC,CAAV,EAAa;AAC7D,MAAI,CAACC,MAAM,CAACC,aAAZ,EAA2B,MAAM,IAAIC,SAAJ,CAAc,sCAAd,CAAN;AAC3B,MAAIC,CAAC,GAAGJ,CAAC,CAACC,MAAM,CAACC,aAAR,CAAT;AAAA,MAAiCG,CAAjC;AACA,SAAOD,CAAC,GAAGA,CAAC,CAACE,IAAF,CAAON,CAAP,CAAH,IAAgBA,CAAC,GAAG,OAAOO,QAAP,KAAoB,UAApB,GAAiCA,QAAQ,CAACP,CAAD,CAAzC,GAA+CA,CAAC,CAACC,MAAM,CAACO,QAAR,CAAD,EAAnD,EAAyEH,CAAC,GAAG,EAA7E,EAAiFI,IAAI,CAAC,MAAD,CAArF,EAA+FA,IAAI,CAAC,OAAD,CAAnG,EAA8GA,IAAI,CAAC,QAAD,CAAlH,EAA8HJ,CAAC,CAACJ,MAAM,CAACC,aAAR,CAAD,GAA0B,YAAY;AAAE,WAAO,IAAP;AAAc,GAApL,EAAsLG,CAAtM,CAAR;;AACA,WAASI,IAAT,CAAcC,CAAd,EAAiB;AAAEL,IAAAA,CAAC,CAACK,CAAD,CAAD,GAAOV,CAAC,CAACU,CAAD,CAAD,IAAQ,UAAUC,CAAV,EAAa;AAAE,aAAO,IAAIvB,OAAJ,CAAY,UAAUD,OAAV,EAAmBE,MAAnB,EAA2B;AAAEsB,QAAAA,CAAC,GAAGX,CAAC,CAACU,CAAD,CAAD,CAAKC,CAAL,CAAJ,EAAaC,MAAM,CAACzB,OAAD,EAAUE,MAAV,EAAkBsB,CAAC,CAACf,IAApB,EAA0Be,CAAC,CAACzB,KAA5B,CAAnB;AAAwD,OAAjG,CAAP;AAA4G,KAA1I;AAA6I;;AAChK,WAAS0B,MAAT,CAAgBzB,OAAhB,EAAyBE,MAAzB,EAAiCwB,CAAjC,EAAoCF,CAApC,EAAuC;AAAEvB,IAAAA,OAAO,CAACD,OAAR,CAAgBwB,CAAhB,EAAmBd,IAAnB,CAAwB,UAASc,CAAT,EAAY;AAAExB,MAAAA,OAAO,CAAC;AAAED,QAAAA,KAAK,EAAEyB,CAAT;AAAYf,QAAAA,IAAI,EAAEiB;AAAlB,OAAD,CAAP;AAAiC,KAAvE,EAAyExB,MAAzE;AAAmF;AAC/H,CAND;;ACSA;AACA,MAAMyB,eAAe,GAAgB,CAAC,MAAD,EAAS,SAAT,EAAoB,MAApB,CAArC;AACA,MAAMC,eAAe,GAAgB,CAAC,MAAD,EAAS,SAAT,EAAoB,MAApB,EAA4B,MAA5B,CAArC;AACA,MAAMC,kBAAkB,GAAgB,CAAC,MAAD,CAAxC;AAEA,MAAMC,UAAU,GAAqD;AACnEC,EAAAA,IAAI,EAAEC,GAAG,IAAIA,GAAG,CAACD,IADkD;AAEnEE,EAAAA,OAAO,EAAED,GAAG,IAAIA,GAAG,CAACE,QAAJ,CAAaD,OAAb,IAAwBE,SAF2B;AAGnEC,EAAAA,IAAI,EAAE,CAACJ,GAAD,EAAMK,IAAN,KAAgBA,IAAI,GAAGL,GAAG,CAACM,GAAP,GAAaC,IAAI,CAACC,QAAL,CAAcC,OAAO,CAACH,GAAR,EAAd,EAA6BN,GAAG,CAACM,GAAjC,KAAyC,GAHb;AAInEI,EAAAA,IAAI,EAAEV,GAAG,IAAI,sBAAQA,GAAG,CAACD,IAAZ;AAJsD,CAArE,C,CAOA;;AACA,SAASY,cAAT,CAAwBC,KAAxB,EAA0C;AACxC,SAAO,CAACZ,GAAD,EAAMK,IAAN,KAAc;AACnB,UAAMQ,IAAI,GAAS,EAAnB;;AAEA,SAAK,MAAMC,IAAX,IAAmBF,KAAnB,EAA0B;AACxBC,MAAAA,IAAI,CAACC,IAAD,CAAJ,GAAahB,UAAU,CAACgB,IAAD,CAAV,CAAiBd,GAAjB,EAAsBK,IAAtB,CAAb;AACD;;AAED,WAAOQ,IAAP;AACD,GARD;AASD,C,CAED;;;AACA,MAAM;AAAEE,EAAAA,OAAF;AAAWC,EAAAA;AAAX,IAAuB,0BAAY,sBAAQ;AAC/CjB,EAAAA,IAAI,EAAE,CAAC,MAAD,EAAS,IAAT,CADyC;AAE/CkB,EAAAA,WAAW,EAAE,iBAFkC;AAG/CC,EAAAA,OAAO,EAAGC,KAAD,IAAWA,KAAK,CACtBC,MADiB,CACV,SADU,EACC;AACjBC,IAAAA,IAAI,EAAE,SADW;AAEjBC,IAAAA,KAAK,EAAE,UAFU;AAGjBC,IAAAA,IAAI,EAAE;AAHW,GADD,EAMjBH,MANiB,CAMV,aANU,EAMK;AACrBC,IAAAA,IAAI,EAAE,OADe;AAErBG,IAAAA,MAAM,EAAE,IAFa;AAGrBF,IAAAA,KAAK,EAAE,UAHc;AAIrBC,IAAAA,IAAI,EAAE;AAJe,GANL,EAYjBH,MAZiB,CAYV,UAZU,EAYE;AAClBK,IAAAA,KAAK,EAAE,GADW;AAElBJ,IAAAA,IAAI,EAAE,QAFY;AAGlBK,IAAAA,MAAM,EAAGC,GAAD,IAAiBA,GAAG,KAAK,EAAR,GAAa,QAAb,GAAwBA,GAH/B;AAIlBL,IAAAA,KAAK,EAAE,WAJW;AAKlBC,IAAAA,IAAI,EAAE,wHACJ;AANgB,GAZF,EAoBjBH,MApBiB,CAoBV,mBApBU,EAoBW;AAC3BC,IAAAA,IAAI,EAAE,QADqB;AAE3BC,IAAAA,KAAK,EAAE,WAFoB;AAG3BC,IAAAA,IAAI,EAAE;AAHqB,GApBX,EAyBjBH,MAzBiB,CAyBV,uBAzBU,EAyBe;AAC/BC,IAAAA,IAAI,EAAE,QADyB;AAE/BO,IAAAA,OAAO,EAAE,QAFsB;AAG/BN,IAAAA,KAAK,EAAE,WAHwB;AAI/BC,IAAAA,IAAI,EAAE;AAJyB,GAzBf,EA+BjBH,MA/BiB,CA+BV,OA/BU,EA+BD;AACfC,IAAAA,IAAI,EAAE,OADS;AAEfQ,IAAAA,OAAO,EAAE,CAAC,MAAD,EAAS,SAAT,EAAoB,MAApB,EAA4B,MAA5B,CAFM;AAGfD,IAAAA,OAAO,EAAE,EAHM;AAIfN,IAAAA,KAAK,EAAE,SAJQ;AAKfC,IAAAA,IAAI,EAAE;AALS,GA/BC,EAsCjBH,MAtCiB,CAsCV,SAtCU,EAsCC;AACjBC,IAAAA,IAAI,EAAE,SADW;AAEjBC,IAAAA,KAAK,EAAE,SAFU;AAGjBC,IAAAA,IAAI,EAAE;AAHW,GAtCD,EA2CjBH,MA3CiB,CA2CV,MA3CU,EA2CF;AACdK,IAAAA,KAAK,EAAE,GADO;AAEdJ,IAAAA,IAAI,EAAE,SAFQ;AAGdC,IAAAA,KAAK,EAAE,SAHO;AAIdC,IAAAA,IAAI,EAAE;AAJQ,GA3CE,EAiDjBH,MAjDiB,CAiDV,MAjDU,EAiDF;AACdC,IAAAA,IAAI,EAAE,SADQ;AAEdC,IAAAA,KAAK,EAAE,SAFO;AAGdC,IAAAA,IAAI,EAAE;AAHQ,GAjDE;AAH2B,CAAR,CAAZ,CAA7B,C,CA2DA;;AACO,MAAMO,WAAW,GAAGf,OAAO,CAAC,SAASgB,aAAT,GAAsB;ADGrD,MAAIC,EAAJ;;ACFF,QAAMC,IAAI,GAAGjB,OAAO,EAApB;AACA,QAAMkB,OAAO,GAAG,0BAAhB,CAFuD,CAIvD;;AACA,QAAM,CAACC,UAAD,EAAaC,aAAb,IAA8B,sBAApC,CALuD,CAOvD;;AACA,QAAMxB,KAAK,GAAG,oBAAQ,MAAK;AACzB,QAAIA,KAAK,GAAGqB,IAAI,CAACrB,KAAjB;;AAEA,QAAIqB,IAAI,CAACrB,KAAL,CAAWyB,MAAX,KAAsB,CAA1B,EAA6B;AAC3B,UAAIJ,IAAI,CAACK,IAAT,EAAe;AACb1B,QAAAA,KAAK,GAAGjB,eAAR;AACD,OAFD,MAEO,IAAIsC,IAAI,CAAC5B,IAAT,EAAe;AACpBO,QAAAA,KAAK,GAAGhB,eAAR;AACD,OAFM,MAEA;AACLgB,QAAAA,KAAK,GAAGf,kBAAR;AACD;AACF;;AAED,WAAOe,KAAP;AACD,GAda,EAcX,CAACqB,IAAD,CAdW,CAAd;AAgBA,QAAMpB,IAAI,GAAG,oBAAQ,MAAK;AACxB,WAAOsB,UAAU,KAAA,IAAV,IAAAA,UAAU,KAAA,KAAA,CAAV,GAAU,KAAA,CAAV,GAAAA,UAAU,CAAEI,GAAZ,CAAgBvC,GAAG,IAAG;AAAA,UAAAgC,EAAA;;AAAC,aAAArB,cAAc,CAACC,KAAD,CAAd,CAAsBZ,GAAtB,EAA2B,CAAAgC,EAAA,GAAAC,IAAI,CAAC5B,IAAL,MAAS,IAAT,IAAS2B,EAAA,KAAA,KAAA,CAAT,GAASA,EAAT,GAAa,KAAxC,CAAA;AAA8C,KAArE,CAAP;AACD,GAFY,EAEV,CAACpB,KAAD,EAAQqB,IAAR,EAAcE,UAAd,CAFU,CAAb,CAxBuD,CA4BvD;;AACA,wBAAU,MAAM,KAAK,CAAC,MAAW1E,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;ADA3B,QAAI+E,GAAJ,EAASC,EAAT,CCA2B,CAC/B;;;AACA,UAAMC,QAAQ,GAAG,IAAIC,oBAAJ,EAAjB;;AAEA,QAAIV,IAAI,CAACW,OAAL,KAAiBzC,SAArB,EAAgC;AAC9BuC,MAAAA,QAAQ,CAACG,GAAT,CAAaC,mBAAOC,gBAAP,CAAwBd,IAAI,CAACW,OAA7B,CAAb;AACD;;AAED,QAAIX,IAAI,CAACe,UAAL,KAAoB7C,SAAxB,EAAmC;AACjCuC,MAAAA,QAAQ,CAACG,GAAT,CAAaC,mBAAOG,OAAP,CAAehB,IAAI,CAACe,UAApB,CAAb;AACD;;AAED,QAAIf,IAAI,CAACiB,QAAL,KAAkB/C,SAAtB,EAAiC;AAC/BuC,MAAAA,QAAQ,CAACG,GAAT,CAAa,IAAIM,0BAAJ,CACXlB,IAAI,CAACiB,QADM,EAEXjB,IAAI,CAACmB,mBAFM,EAGXnB,IAAI,CAACoB,eAHM,CAAb;AAKD,KAlB8B,CAoB/B;;;AACA,UAAMlB,UAAU,GAAgB,EAAhC;;ADPI,QAAI;ACSR,WAAwB,IAAAmB,EAAA,GAAA1E,aAAA,CAAA8D,QAAQ,CAACa,MAAT,CAAgBrB,OAAO,CAACC,UAAR,EAAhB,CAAA,CAAA,EAAqCqB,EAA7D,EAA6DA,EAAA,GAAA,MAAAF,EAAA,CAAAjF,IAAA,EAAA,EAAA,CAAAmF,EAAA,CAAA/E,IAA7D,GAA6D;AAAlD,cAAMuB,GAAG,GAAAwD,EAAA,CAAAzF,KAAT;AACToE,QAAAA,UAAU,CAACsB,IAAX,CAAgBzD,GAAhB;AACD;ADNI,KALD,CAMA,OAAO0D,KAAP,EAAc;AAAElB,MAAAA,GAAG,GAAG;AAAEmB,QAAAA,KAAK,EAAED;AAAT,OAAN;AAAyB,KANzC,SAOQ;AACJ,UAAI;AACA,YAAIF,EAAE,IAAI,CAACA,EAAE,CAAC/E,IAAV,KAAmBgE,EAAE,GAAGa,EAAE,CAACM,MAA3B,CAAJ,EAAwC,MAAMnB,EAAE,CAACtD,IAAH,CAAQmE,EAAR,CAAN;AAC3C,OAFD,SAGQ;AAAE,YAAId,GAAJ,EAAS,MAAMA,GAAG,CAACmB,KAAV;AAAkB;AACxC;;ACCLvB,IAAAA,aAAa,CAACD,UAAD,CAAb;AACD,GA5BgC,CAAZ,GAArB,EA4BM,CAACF,IAAD,CA5BN,EA7BuD,CA2DvD;;AACA,MAAI,CAACpB,IAAL,EAAW;AACT,WAAO,sBAACgD,SAAD,EAAK;AAAAC,MAAAA,QAAA,EAAA,CAAC,qBAACC,mBAAD,EAAQ,EAAR,CAAD,EAAY,qBAAZ;AAAA,KAAL,CAAP;AACD;;AAED,SACE,qBAACC,UAAD,EAAK;AACHpD,IAAAA,KAAK,EAAEA,KADJ;AAEHC,IAAAA,IAAI,EAAEA,IAFH;AAGHR,IAAAA,IAAI,EAAE4B,IAAI,CAAC5B,IAHR;AAIH4D,IAAAA,cAAc,EAAE,EAAE,CAAAjC,EAAA,GAAAC,IAAI,CAACiC,OAAL,MAAY,IAAZ,IAAYlC,EAAA,KAAA,KAAA,CAAZ,GAAYA,EAAZ,GAAiBpB,KAAK,CAACyB,MAAN,GAAe,CAAlC;AAJb,GAAL,CADF;AAQD,CAxEiC,CAA3B","file":"list.command.js","sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { AffectedFilter, Filter, Pipeline } from '@jujulego/jill-common';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport * as path from 'path';\nimport { useEffect, useMemo, useState } from 'react';\nimport slugify from 'slugify';\nimport { command } from '../command';\nimport { useProject, withProject } from '../wrappers/project.wrapper';\nimport { List } from '../components/List';\n// Constants\nconst LONG_ATTRIBUTES = ['name', 'version', 'root'];\nconst JSON_ATTRIBUTES = ['name', 'version', 'slug', 'root'];\nconst DEFAULT_ATTRIBUTES = ['name'];\nconst EXTRACTORS = {\n name: wks => wks.name,\n version: wks => wks.manifest.version || undefined,\n root: (wks, json) => json ? wks.cwd : path.relative(process.cwd(), wks.cwd) || '.',\n slug: wks => slugify(wks.name)\n};\n// Utils\nfunction buildExtractor(attrs) {\n return (wks, json) => {\n const data = {};\n for (const attr of attrs) {\n data[attr] = EXTRACTORS[attr](wks, json);\n }\n return data;\n };\n}\n// Command\nconst { wrapper, useArgs } = withProject(command({\n name: ['list', 'ls'],\n description: 'List workspaces',\n builder: (yargs) => yargs\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n .option('with-script', {\n type: 'array',\n string: true,\n group: 'Filters:',\n desc: 'Print only workspaces having the given script',\n })\n .option('affected', {\n alias: 'a',\n type: 'string',\n coerce: (rev) => rev === '' ? 'master' : rev,\n group: 'Affected:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master.\\n' +\n 'Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Affected:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Affected:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n })\n .option('attrs', {\n type: 'array',\n choices: ['name', 'version', 'root', 'slug'],\n default: [],\n group: 'Format:',\n desc: 'Select printed attributes'\n })\n .option('headers', {\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints columns headers'\n })\n .option('long', {\n alias: 'l',\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints name, version and root of all workspaces',\n })\n .option('json', {\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints data as a JSON array',\n }),\n}));\n// Component\nexport const ListCommand = wrapper(function ListComponent() {\n var _a;\n const args = useArgs();\n const project = useProject();\n // State\n const [workspaces, setWorkspaces] = useState();\n // Memo\n const attrs = useMemo(() => {\n let attrs = args.attrs;\n if (args.attrs.length === 0) {\n if (args.long) {\n attrs = LONG_ATTRIBUTES;\n }\n else if (args.json) {\n attrs = JSON_ATTRIBUTES;\n }\n else {\n attrs = DEFAULT_ATTRIBUTES;\n }\n }\n return attrs;\n }, [args]);\n const data = useMemo(() => {\n return workspaces === null || workspaces === void 0 ? void 0 : workspaces.map(wks => { var _a; return buildExtractor(attrs)(wks, (_a = args.json) !== null && _a !== void 0 ? _a : false); });\n }, [attrs, args, workspaces]);\n // Effects\n useEffect(() => void (() => __awaiter(this, void 0, void 0, function* () {\n var e_1, _b;\n // Setup pipeline\n const pipeline = new Pipeline();\n if (args.private !== undefined) {\n pipeline.add(Filter.privateWorkspace(args.private));\n }\n if (args.withScript !== undefined) {\n pipeline.add(Filter.scripts(args.withScript));\n }\n if (args.affected !== undefined) {\n pipeline.add(new AffectedFilter(args.affected, args.affectedRevFallback, args.affectedRevSort));\n }\n // Filter\n const workspaces = [];\n try {\n for (var _c = __asyncValues(pipeline.filter(project.workspaces())), _d; _d = yield _c.next(), !_d.done;) {\n const wks = _d.value;\n workspaces.push(wks);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_b = _c.return)) yield _b.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n setWorkspaces(workspaces);\n }))(), [args]);\n // Render\n if (!data) {\n return _jsxs(Text, { children: [_jsx(Spinner, {}), \" Loading workspaces\"] });\n }\n return (_jsx(List, { attrs: attrs, data: data, json: args.json, withoutHeaders: !((_a = args.headers) !== null && _a !== void 0 ? _a : (attrs.length > 1)) }));\n});","import { AffectedFilter, Filter, Pipeline } from '@jujulego/jill-common';\nimport { Workspace } from '@jujulego/jill-core';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport * as path from 'path';\nimport { useEffect, useMemo, useState } from 'react';\nimport slugify from 'slugify';\n\nimport { command } from '../command';\nimport { useProject, withProject } from '../wrappers/project.wrapper';\nimport { List } from '../components/List';\n\n// Types\nexport type Attribute = 'name' | 'version' | 'root' | 'slug';\nexport type Data = Partial<Record<Attribute, string>>;\n\ntype Extractor<T> = (wks: Workspace, json: boolean) => T;\n\n// Constants\nconst LONG_ATTRIBUTES: Attribute[] = ['name', 'version', 'root'];\nconst JSON_ATTRIBUTES: Attribute[] = ['name', 'version', 'slug', 'root'];\nconst DEFAULT_ATTRIBUTES: Attribute[] = ['name'];\n\nconst EXTRACTORS: Record<Attribute, Extractor<string | undefined>> = {\n name: wks => wks.name,\n version: wks => wks.manifest.version || undefined,\n root: (wks, json) => json ? wks.cwd : path.relative(process.cwd(), wks.cwd) || '.',\n slug: wks => slugify(wks.name)\n};\n\n// Utils\nfunction buildExtractor(attrs: Attribute[]): Extractor<Data> {\n return (wks, json) => {\n const data: Data = {};\n\n for (const attr of attrs) {\n data[attr] = EXTRACTORS[attr](wks, json);\n }\n\n return data;\n };\n}\n\n// Command\nconst { wrapper, useArgs } = withProject(command({\n name: ['list', 'ls'],\n description: 'List workspaces',\n builder: (yargs) => yargs\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n .option('with-script', {\n type: 'array',\n string: true,\n group: 'Filters:',\n desc: 'Print only workspaces having the given script',\n })\n .option('affected', {\n alias: 'a',\n type: 'string',\n coerce: (rev: string) => rev === '' ? 'master' : rev,\n group: 'Affected:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master.\\n' +\n 'Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Affected:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Affected:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n })\n .option('attrs', {\n type: 'array',\n choices: ['name', 'version', 'root', 'slug'],\n default: [] as Attribute[],\n group: 'Format:',\n desc: 'Select printed attributes'\n })\n .option('headers', {\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints columns headers'\n })\n .option('long', {\n alias: 'l',\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints name, version and root of all workspaces',\n })\n .option('json', {\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints data as a JSON array',\n }),\n}));\n\n// Component\nexport const ListCommand = wrapper(function ListComponent() {\n const args = useArgs();\n const project = useProject();\n\n // State\n const [workspaces, setWorkspaces] = useState<Workspace[]>();\n\n // Memo\n const attrs = useMemo(() => {\n let attrs = args.attrs;\n\n if (args.attrs.length === 0) {\n if (args.long) {\n attrs = LONG_ATTRIBUTES;\n } else if (args.json) {\n attrs = JSON_ATTRIBUTES;\n } else {\n attrs = DEFAULT_ATTRIBUTES;\n }\n }\n\n return attrs;\n }, [args]);\n\n const data = useMemo(() => {\n return workspaces?.map(wks => buildExtractor(attrs)(wks, args.json ?? false));\n }, [attrs, args, workspaces]);\n\n // Effects\n useEffect(() => void (async () => {\n // Setup pipeline\n const pipeline = new Pipeline();\n\n if (args.private !== undefined) {\n pipeline.add(Filter.privateWorkspace(args.private));\n }\n\n if (args.withScript !== undefined) {\n pipeline.add(Filter.scripts(args.withScript));\n }\n\n if (args.affected !== undefined) {\n pipeline.add(new AffectedFilter(\n args.affected,\n args.affectedRevFallback,\n args.affectedRevSort\n ));\n }\n\n // Filter\n const workspaces: Workspace[] = [];\n\n for await (const wks of pipeline.filter(project.workspaces())) {\n workspaces.push(wks);\n }\n\n setWorkspaces(workspaces);\n })(), [args]);\n\n // Render\n if (!data) {\n return <Text><Spinner /> Loading workspaces</Text>;\n }\n\n return (\n <List\n attrs={attrs}\n data={data}\n json={args.json}\n withoutHeaders={!(args.headers ?? (attrs.length > 1))}\n />\n );\n});\n"]}
1
+ {"version":3,"sources":["commands/list.command.js","commands/list.command.tsx"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__asyncValues","o","Symbol","asyncIterator","TypeError","m","i","call","__values","iterator","verb","n","v","settle","d","LONG_ATTRIBUTES","JSON_ATTRIBUTES","DEFAULT_ATTRIBUTES","EXTRACTORS","name","wks","version","manifest","undefined","root","json","cwd","path","relative","process","slug","buildExtractor","attrs","data","attr","wrapper","useArgs","description","builder","yargs","option","type","group","desc","string","alias","coerce","rev","default","choices","ListCommand","ListComponent","_a","args","project","workspaces","setWorkspaces","length","long","map","e_1","_b","pipeline","Pipeline","private","add","Filter","privateWorkspace","withScript","scripts","affected","AffectedFilter","affectedRevFallback","affectedRevSort","_c","filter","_d","push","e_1_1","error","return","Text","children","Spinner","List","withoutHeaders","headers"],"mappings":"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","file":"list.command.js","sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { AffectedFilter, Filter, List, Pipeline } from '@jujulego/jill-common';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport * as path from 'path';\nimport { useEffect, useMemo, useState } from 'react';\nimport slugify from 'slugify';\nimport { command } from '../command';\nimport { useProject, withProject } from '../wrappers/project.wrapper';\n// Constants\nconst LONG_ATTRIBUTES = ['name', 'version', 'root'];\nconst JSON_ATTRIBUTES = ['name', 'version', 'slug', 'root'];\nconst DEFAULT_ATTRIBUTES = ['name'];\nconst EXTRACTORS = {\n name: wks => wks.name,\n version: wks => wks.manifest.version || undefined,\n root: (wks, json) => json ? wks.cwd : path.relative(process.cwd(), wks.cwd) || '.',\n slug: wks => slugify(wks.name)\n};\n// Utils\nfunction buildExtractor(attrs) {\n return (wks, json) => {\n const data = {};\n for (const attr of attrs) {\n data[attr] = EXTRACTORS[attr](wks, json);\n }\n return data;\n };\n}\n// Command\nconst { wrapper, useArgs } = withProject(command({\n name: ['list', 'ls'],\n description: 'List workspaces',\n builder: (yargs) => yargs\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n .option('with-script', {\n type: 'array',\n string: true,\n group: 'Filters:',\n desc: 'Print only workspaces having the given script',\n })\n .option('affected', {\n alias: 'a',\n type: 'string',\n coerce: (rev) => rev === '' ? 'master' : rev,\n group: 'Affected:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master.\\n' +\n 'Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Affected:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Affected:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n })\n .option('attrs', {\n type: 'array',\n choices: ['name', 'version', 'root', 'slug'],\n default: [],\n group: 'Format:',\n desc: 'Select printed attributes'\n })\n .option('headers', {\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints columns headers'\n })\n .option('long', {\n alias: 'l',\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints name, version and root of all workspaces',\n })\n .option('json', {\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints data as a JSON array',\n }),\n}));\n// Component\nexport const ListCommand = wrapper(function ListComponent() {\n var _a;\n const args = useArgs();\n const project = useProject();\n // State\n const [workspaces, setWorkspaces] = useState();\n // Memo\n const attrs = useMemo(() => {\n let attrs = args.attrs;\n if (args.attrs.length === 0) {\n if (args.long) {\n attrs = LONG_ATTRIBUTES;\n }\n else if (args.json) {\n attrs = JSON_ATTRIBUTES;\n }\n else {\n attrs = DEFAULT_ATTRIBUTES;\n }\n }\n return attrs;\n }, [args]);\n const data = useMemo(() => {\n return workspaces === null || workspaces === void 0 ? void 0 : workspaces.map(wks => { var _a; return buildExtractor(attrs)(wks, (_a = args.json) !== null && _a !== void 0 ? _a : false); });\n }, [attrs, args, workspaces]);\n // Effects\n useEffect(() => void (() => __awaiter(this, void 0, void 0, function* () {\n var e_1, _b;\n // Setup pipeline\n const pipeline = new Pipeline();\n if (args.private !== undefined) {\n pipeline.add(Filter.privateWorkspace(args.private));\n }\n if (args.withScript !== undefined) {\n pipeline.add(Filter.scripts(args.withScript));\n }\n if (args.affected !== undefined) {\n pipeline.add(new AffectedFilter(args.affected, args.affectedRevFallback, args.affectedRevSort));\n }\n // Filter\n const workspaces = [];\n try {\n for (var _c = __asyncValues(pipeline.filter(project.workspaces())), _d; _d = yield _c.next(), !_d.done;) {\n const wks = _d.value;\n workspaces.push(wks);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_b = _c.return)) yield _b.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n setWorkspaces(workspaces);\n }))(), [project, args]);\n // Render\n if (!data) {\n return _jsxs(Text, { children: [_jsx(Spinner, {}), \" Loading workspaces\"] });\n }\n return (_jsx(List, { attrs: attrs, data: data, json: args.json, withoutHeaders: !((_a = args.headers) !== null && _a !== void 0 ? _a : (attrs.length > 1)) }));\n});","import { AffectedFilter, Filter, List, Pipeline } from '@jujulego/jill-common';\nimport { Workspace } from '@jujulego/jill-core';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport * as path from 'path';\nimport { useEffect, useMemo, useState } from 'react';\nimport slugify from 'slugify';\n\nimport { command } from '../command';\nimport { useProject, withProject } from '../wrappers/project.wrapper';\n\n// Types\nexport type Attribute = 'name' | 'version' | 'root' | 'slug';\nexport type Data = Partial<Record<Attribute, string>>;\n\ntype Extractor<T> = (wks: Workspace, json: boolean) => T;\n\n// Constants\nconst LONG_ATTRIBUTES: Attribute[] = ['name', 'version', 'root'];\nconst JSON_ATTRIBUTES: Attribute[] = ['name', 'version', 'slug', 'root'];\nconst DEFAULT_ATTRIBUTES: Attribute[] = ['name'];\n\nconst EXTRACTORS: Record<Attribute, Extractor<string | undefined>> = {\n name: wks => wks.name,\n version: wks => wks.manifest.version || undefined,\n root: (wks, json) => json ? wks.cwd : path.relative(process.cwd(), wks.cwd) || '.',\n slug: wks => slugify(wks.name)\n};\n\n// Utils\nfunction buildExtractor(attrs: Attribute[]): Extractor<Data> {\n return (wks, json) => {\n const data: Data = {};\n\n for (const attr of attrs) {\n data[attr] = EXTRACTORS[attr](wks, json);\n }\n\n return data;\n };\n}\n\n// Command\nconst { wrapper, useArgs } = withProject(command({\n name: ['list', 'ls'],\n description: 'List workspaces',\n builder: (yargs) => yargs\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n .option('with-script', {\n type: 'array',\n string: true,\n group: 'Filters:',\n desc: 'Print only workspaces having the given script',\n })\n .option('affected', {\n alias: 'a',\n type: 'string',\n coerce: (rev: string) => rev === '' ? 'master' : rev,\n group: 'Affected:',\n desc: 'Print only affected workspaces towards given git revision. If no revision is given, it will check towards master.\\n' +\n 'Replaces %name by workspace name.',\n })\n .option('affected-rev-sort', {\n type: 'string',\n group: 'Affected:',\n desc: 'Sort applied to git tag / git branch command',\n })\n .option('affected-rev-fallback', {\n type: 'string',\n default: 'master',\n group: 'Affected:',\n desc: 'Fallback revision, used if no revision matching the given format is found',\n })\n .option('attrs', {\n type: 'array',\n choices: ['name', 'version', 'root', 'slug'],\n default: [] as Attribute[],\n group: 'Format:',\n desc: 'Select printed attributes'\n })\n .option('headers', {\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints columns headers'\n })\n .option('long', {\n alias: 'l',\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints name, version and root of all workspaces',\n })\n .option('json', {\n type: 'boolean',\n group: 'Format:',\n desc: 'Prints data as a JSON array',\n }),\n}));\n\n// Component\nexport const ListCommand = wrapper(function ListComponent() {\n const args = useArgs();\n const project = useProject();\n\n // State\n const [workspaces, setWorkspaces] = useState<Workspace[]>();\n\n // Memo\n const attrs = useMemo(() => {\n let attrs = args.attrs;\n\n if (args.attrs.length === 0) {\n if (args.long) {\n attrs = LONG_ATTRIBUTES;\n } else if (args.json) {\n attrs = JSON_ATTRIBUTES;\n } else {\n attrs = DEFAULT_ATTRIBUTES;\n }\n }\n\n return attrs;\n }, [args]);\n\n const data = useMemo(() => {\n return workspaces?.map(wks => buildExtractor(attrs)(wks, args.json ?? false));\n }, [attrs, args, workspaces]);\n\n // Effects\n useEffect(() => void (async () => {\n // Setup pipeline\n const pipeline = new Pipeline();\n\n if (args.private !== undefined) {\n pipeline.add(Filter.privateWorkspace(args.private));\n }\n\n if (args.withScript !== undefined) {\n pipeline.add(Filter.scripts(args.withScript));\n }\n\n if (args.affected !== undefined) {\n pipeline.add(new AffectedFilter(\n args.affected,\n args.affectedRevFallback,\n args.affectedRevSort\n ));\n }\n\n // Filter\n const workspaces: Workspace[] = [];\n\n for await (const wks of pipeline.filter(project.workspaces())) {\n workspaces.push(wks);\n }\n\n setWorkspaces(workspaces);\n })(), [project, args]);\n\n // Render\n if (!data) {\n return <Text><Spinner /> Loading workspaces</Text>;\n }\n\n return (\n <List\n attrs={attrs}\n data={data}\n json={args.json}\n withoutHeaders={!(args.headers ?? (attrs.length > 1))}\n />\n );\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["commands/run.command.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAyBjE,eAAO,MAAM,UAAU;;;;;;;;;;EAqBrB,CAAC","file":"run.command.d.ts","sourcesContent":["import { TaskSet, WorkspaceDepsMode } from '@jujulego/jill-core';\nimport { useEffect, useRef } from 'react';\n\nimport { command } from '../command';\nimport { withProject } from '../wrappers/project.wrapper';\nimport { useWorkspace, withWorkspace } from '../wrappers/workspace.wrapper';\nimport { TaskSetSpinner } from '../components/TaskSetSpinner';\n\n// Command\nconst { wrapper, useArgs } = withProject(withWorkspace(command({\n name: 'run <script>',\n description: 'Run script inside workspace',\n builder: (yargs) => yargs\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all' as WorkspaceDepsMode,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n})));\n\n// Component\nexport const RunCommand = wrapper(function InfoCommand() {\n const { script, depsMode, '--': rest = [] } = useArgs();\n const wks = useWorkspace();\n\n // Refs\n const tasks = useRef(new TaskSet());\n\n // Effects\n useEffect(() => void (async () => {\n const task = await wks.run(script, rest.map(arg => arg.toString()), {\n buildDeps: depsMode\n });\n\n tasks.current.add(task);\n tasks.current.start();\n })(), [script, depsMode, rest, wks]);\n\n // Render\n return (\n <TaskSetSpinner taskSet={tasks.current} />\n );\n});\n"]}
1
+ {"version":3,"sources":["commands/run.command.tsx"],"names":[],"mappings":"AACA,OAAO,EAAW,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAwBjE,eAAO,MAAM,UAAU;;;;;;;;;;EAqBrB,CAAC","file":"run.command.d.ts","sourcesContent":["import { TaskSetSpinner } from '@jujulego/jill-common';\nimport { TaskSet, WorkspaceDepsMode } from '@jujulego/jill-core';\nimport { useEffect, useRef } from 'react';\n\nimport { command } from '../command';\nimport { withProject } from '../wrappers/project.wrapper';\nimport { useWorkspace, withWorkspace } from '../wrappers/workspace.wrapper';\n\n// Command\nconst { wrapper, useArgs } = withProject(withWorkspace(command({\n name: 'run <script>',\n description: 'Run script inside workspace',\n builder: (yargs) => yargs\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all' as WorkspaceDepsMode,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n})));\n\n// Component\nexport const RunCommand = wrapper(function InfoCommand() {\n const { script, depsMode, '--': rest = [] } = useArgs();\n const wks = useWorkspace();\n\n // Refs\n const tasks = useRef(new TaskSet());\n\n // Effects\n useEffect(() => void (async () => {\n const task = await wks.run(script, rest.map(arg => arg.toString()), {\n buildDeps: depsMode\n });\n\n tasks.current.add(task);\n tasks.current.start();\n })(), [script, depsMode, rest, wks]);\n\n // Render\n return (\n <TaskSetSpinner taskSet={tasks.current} />\n );\n});\n"]}
@@ -7,6 +7,8 @@ exports.RunCommand = void 0;
7
7
 
8
8
  var _jsxRuntime = require("react/jsx-runtime");
9
9
 
10
+ var _jillCommon = require("@jujulego/jill-common");
11
+
10
12
  var _jillCore = require("@jujulego/jill-core");
11
13
 
12
14
  var _react = require("react");
@@ -17,8 +19,6 @@ var _project = require("../wrappers/project.wrapper");
17
19
 
18
20
  var _workspace = require("../wrappers/workspace.wrapper");
19
21
 
20
- var _TaskSetSpinner = require("../components/TaskSetSpinner");
21
-
22
22
  var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
23
23
  function adopt(value) {
24
24
  return value instanceof P ? value : new P(function (resolve) {
@@ -86,7 +86,7 @@ const RunCommand = wrapper(function InfoCommand() {
86
86
  tasks.current.start();
87
87
  }))(), [script, depsMode, rest, wks]); // Render
88
88
 
89
- return (0, _jsxRuntime.jsx)(_TaskSetSpinner.TaskSetSpinner, {
89
+ return (0, _jsxRuntime.jsx)(_jillCommon.TaskSetSpinner, {
90
90
  taskSet: tasks.current
91
91
  });
92
92
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["commands/run.command.js","commands/run.command.tsx"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","wrapper","useArgs","name","description","builder","yargs","positional","type","demandOption","option","choice","default","desc","RunCommand","InfoCommand","script","depsMode","rest","wks","tasks","TaskSet","task","run","map","arg","toString","buildDeps","current","add","start","TaskSetSpinner","taskSet"],"mappings":"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","file":"run.command.js","sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { TaskSet } from '@jujulego/jill-core';\nimport { useEffect, useRef } from 'react';\nimport { command } from '../command';\nimport { withProject } from '../wrappers/project.wrapper';\nimport { useWorkspace, withWorkspace } from '../wrappers/workspace.wrapper';\nimport { TaskSetSpinner } from '../components/TaskSetSpinner';\n// Command\nconst { wrapper, useArgs } = withProject(withWorkspace(command({\n name: 'run <script>',\n description: 'Run script inside workspace',\n builder: (yargs) => yargs\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all',\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n})));\n// Component\nexport const RunCommand = wrapper(function InfoCommand() {\n const { script, depsMode, '--': rest = [] } = useArgs();\n const wks = useWorkspace();\n // Refs\n const tasks = useRef(new TaskSet());\n // Effects\n useEffect(() => void (() => __awaiter(this, void 0, void 0, function* () {\n const task = yield wks.run(script, rest.map(arg => arg.toString()), {\n buildDeps: depsMode\n });\n tasks.current.add(task);\n tasks.current.start();\n }))(), [script, depsMode, rest, wks]);\n // Render\n return (_jsx(TaskSetSpinner, { taskSet: tasks.current }));\n});","import { TaskSet, WorkspaceDepsMode } from '@jujulego/jill-core';\nimport { useEffect, useRef } from 'react';\n\nimport { command } from '../command';\nimport { withProject } from '../wrappers/project.wrapper';\nimport { useWorkspace, withWorkspace } from '../wrappers/workspace.wrapper';\nimport { TaskSetSpinner } from '../components/TaskSetSpinner';\n\n// Command\nconst { wrapper, useArgs } = withProject(withWorkspace(command({\n name: 'run <script>',\n description: 'Run script inside workspace',\n builder: (yargs) => yargs\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all' as WorkspaceDepsMode,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n})));\n\n// Component\nexport const RunCommand = wrapper(function InfoCommand() {\n const { script, depsMode, '--': rest = [] } = useArgs();\n const wks = useWorkspace();\n\n // Refs\n const tasks = useRef(new TaskSet());\n\n // Effects\n useEffect(() => void (async () => {\n const task = await wks.run(script, rest.map(arg => arg.toString()), {\n buildDeps: depsMode\n });\n\n tasks.current.add(task);\n tasks.current.start();\n })(), [script, depsMode, rest, wks]);\n\n // Render\n return (\n <TaskSetSpinner taskSet={tasks.current} />\n );\n});\n"]}
1
+ {"version":3,"sources":["commands/run.command.js","commands/run.command.tsx"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","wrapper","useArgs","name","description","builder","yargs","positional","type","demandOption","option","choice","default","desc","RunCommand","InfoCommand","script","depsMode","rest","wks","tasks","TaskSet","task","run","map","arg","toString","buildDeps","current","add","start","TaskSetSpinner","taskSet"],"mappings":"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","file":"run.command.js","sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { TaskSetSpinner } from '@jujulego/jill-common';\nimport { TaskSet } from '@jujulego/jill-core';\nimport { useEffect, useRef } from 'react';\nimport { command } from '../command';\nimport { withProject } from '../wrappers/project.wrapper';\nimport { useWorkspace, withWorkspace } from '../wrappers/workspace.wrapper';\n// Command\nconst { wrapper, useArgs } = withProject(withWorkspace(command({\n name: 'run <script>',\n description: 'Run script inside workspace',\n builder: (yargs) => yargs\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all',\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n})));\n// Component\nexport const RunCommand = wrapper(function InfoCommand() {\n const { script, depsMode, '--': rest = [] } = useArgs();\n const wks = useWorkspace();\n // Refs\n const tasks = useRef(new TaskSet());\n // Effects\n useEffect(() => void (() => __awaiter(this, void 0, void 0, function* () {\n const task = yield wks.run(script, rest.map(arg => arg.toString()), {\n buildDeps: depsMode\n });\n tasks.current.add(task);\n tasks.current.start();\n }))(), [script, depsMode, rest, wks]);\n // Render\n return (_jsx(TaskSetSpinner, { taskSet: tasks.current }));\n});","import { TaskSetSpinner } from '@jujulego/jill-common';\nimport { TaskSet, WorkspaceDepsMode } from '@jujulego/jill-core';\nimport { useEffect, useRef } from 'react';\n\nimport { command } from '../command';\nimport { withProject } from '../wrappers/project.wrapper';\nimport { useWorkspace, withWorkspace } from '../wrappers/workspace.wrapper';\n\n// Command\nconst { wrapper, useArgs } = withProject(withWorkspace(command({\n name: 'run <script>',\n description: 'Run script inside workspace',\n builder: (yargs) => yargs\n .positional('script', { type: 'string', demandOption: true })\n .option('deps-mode', {\n choice: ['all', 'prod', 'none'],\n default: 'all' as WorkspaceDepsMode,\n desc: 'Dependency selection mode:\\n' +\n ' - all = dependencies AND devDependencies\\n' +\n ' - prod = dependencies\\n' +\n ' - none = nothing'\n })\n})));\n\n// Component\nexport const RunCommand = wrapper(function InfoCommand() {\n const { script, depsMode, '--': rest = [] } = useArgs();\n const wks = useWorkspace();\n\n // Refs\n const tasks = useRef(new TaskSet());\n\n // Effects\n useEffect(() => void (async () => {\n const task = await wks.run(script, rest.map(arg => arg.toString()), {\n buildDeps: depsMode\n });\n\n tasks.current.add(task);\n tasks.current.start();\n })(), [script, depsMode, rest, wks]);\n\n // Render\n return (\n <TaskSetSpinner taskSet={tasks.current} />\n );\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["components/WorkspaceTree.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,EAAE,EAAE,YAAY,EAAuB,MAAM,OAAO,CAAC;AAG9D,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,SAAS,CAAC;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAMD,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAwChD,CAAC","file":"WorkspaceTree.d.ts","sourcesContent":["import { Workspace } from '@jujulego/jill-core';\nimport { Newline, Text, TextProps } from 'ink';\nimport { FC, ReactElement, useEffect, useState } from 'react';\n\n// Types\nexport interface WorkspaceTreeProps {\n workspace: Workspace;\n dev?: boolean;\n level?: ReactElement;\n}\n\n// Utils\nconst style = (dev: boolean): TextProps => ({ color: dev ? 'blue' : '' });\n\n// Component\nexport const WorkspaceTree: FC<WorkspaceTreeProps> = (props) => {\n const { workspace: wks, dev = false, level = '' } = props;\n\n // State\n const [deps, setDeps] = useState<[Workspace, boolean][]>([]);\n\n // Effects\n useEffect(() => void (async () => {\n const deps: [Workspace, boolean][] = [];\n\n for await (const dep of wks.dependencies()) {\n deps.push([dep, dev]);\n }\n\n for await (const dep of wks.devDependencies()) {\n deps.push([dep, true]);\n }\n\n setDeps(deps);\n })(), [wks]);\n\n // Render\n return (\n <Text>\n <Text {...style(dev)}>{ wks.name }</Text>\n { wks.version && (<Text color=\"grey\">@{ wks.version }</Text>) }\n <Newline />\n\n { deps.map(([dep, isDev], idx) => (\n <Text key={dep.name}>\n { level }<Text {...style(dev)}>{ idx === deps.length - 1 ? '└' : '├'}─{' '}</Text>\n <WorkspaceTree\n workspace={dep}\n dev={isDev}\n level={<>{ level }<Text {...style(dev)}>{ idx === deps.length - 1 ? ' ' : '│' }{' '}</Text></>}\n />\n </Text>\n )) }\n </Text>\n );\n};\n"]}
1
+ {"version":3,"sources":["components/WorkspaceTree.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,EAAE,EAAE,YAAY,EAAuB,MAAM,OAAO,CAAC;AAG9D,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,SAAS,CAAC;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAMD,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAuChD,CAAC","file":"WorkspaceTree.d.ts","sourcesContent":["import { WorkspaceName } from '@jujulego/jill-common';\nimport { Workspace } from '@jujulego/jill-core';\nimport { Newline, Text, TextProps } from 'ink';\nimport { FC, ReactElement, useEffect, useState } from 'react';\n\n// Types\nexport interface WorkspaceTreeProps {\n workspace: Workspace;\n dev?: boolean;\n level?: ReactElement;\n}\n\n// Utils\nconst style = (dev: boolean): TextProps => ({ color: dev ? 'blue' : '' });\n\n// Component\nexport const WorkspaceTree: FC<WorkspaceTreeProps> = (props) => {\n const { workspace: wks, dev = false, level = '' } = props;\n\n // State\n const [deps, setDeps] = useState<[Workspace, boolean][]>([]);\n\n // Effects\n useEffect(() => void (async () => {\n const deps: [Workspace, boolean][] = [];\n\n for await (const dep of wks.dependencies()) {\n deps.push([dep, dev]);\n }\n\n for await (const dep of wks.devDependencies()) {\n deps.push([dep, true]);\n }\n\n setDeps(deps);\n })(), [dev, wks]);\n\n // Render\n return (\n <Text>\n <WorkspaceName {...style(dev)} workspace={wks} />\n <Newline />\n\n { deps.map(([dep, isDev], idx) => (\n <Text key={dep.name}>\n { level }<Text {...style(dev)}>{ idx === deps.length - 1 ? '└' : '├'}─{' '}</Text>\n <WorkspaceTree\n workspace={dep}\n dev={isDev}\n level={<>{ level }<Text {...style(dev)}>{ idx === deps.length - 1 ? ' ' : '│' }{' '}</Text></>}\n />\n </Text>\n )) }\n </Text>\n );\n};\n"]}
@@ -7,6 +7,8 @@ exports.WorkspaceTree = void 0;
7
7
 
8
8
  var _jsxRuntime = require("react/jsx-runtime");
9
9
 
10
+ var _jillCommon = require("@jujulego/jill-common");
11
+
10
12
  var _ink = require("ink");
11
13
 
12
14
  var _react = require("react");
@@ -124,15 +126,11 @@ const WorkspaceTree = props => {
124
126
  }
125
127
 
126
128
  setDeps(deps);
127
- }))(), [wks]); // Render
129
+ }))(), [dev, wks]); // Render
128
130
 
129
131
  return (0, _jsxRuntime.jsxs)(_ink.Text, {
130
- children: [(0, _jsxRuntime.jsx)(_ink.Text, Object.assign({}, style(dev), {
131
- children: wks.name
132
- })), wks.version && (0, _jsxRuntime.jsxs)(_ink.Text, Object.assign({
133
- color: "grey"
134
- }, {
135
- children: ["@", wks.version]
132
+ children: [(0, _jsxRuntime.jsx)(_jillCommon.WorkspaceName, Object.assign({}, style(dev), {
133
+ workspace: wks
136
134
  })), (0, _jsxRuntime.jsx)(_ink.Newline, {}), deps.map(([dep, isDev], idx) => (0, _jsxRuntime.jsxs)(_ink.Text, {
137
135
  children: [level, (0, _jsxRuntime.jsxs)(_ink.Text, Object.assign({}, style(dev), {
138
136
  children: [idx === deps.length - 1 ? '└' : '├', "\u2500", ' ']
@@ -1 +1 @@
1
- {"version":3,"sources":["components/WorkspaceTree.js","components/WorkspaceTree.tsx"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__asyncValues","o","Symbol","asyncIterator","TypeError","m","i","call","__values","iterator","verb","n","v","settle","d","style","dev","color","WorkspaceTree","props","workspace","wks","level","deps","setDeps","e_1","_a","e_2","_b","_c","dependencies","_d","dep","push","e_1_1","error","return","_e","devDependencies","_f","e_2_1","Text","children","Object","assign","name","version","Newline","map","isDev","idx","length","_Fragment"],"mappings":"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","file":"WorkspaceTree.js","sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { Newline, Text } from 'ink';\nimport { useEffect, useState } from 'react';\n// Utils\nconst style = (dev) => ({ color: dev ? 'blue' : '' });\n// Component\nexport const WorkspaceTree = (props) => {\n const { workspace: wks, dev = false, level = '' } = props;\n // State\n const [deps, setDeps] = useState([]);\n // Effects\n useEffect(() => void (() => __awaiter(void 0, void 0, void 0, function* () {\n var e_1, _a, e_2, _b;\n const deps = [];\n try {\n for (var _c = __asyncValues(wks.dependencies()), _d; _d = yield _c.next(), !_d.done;) {\n const dep = _d.value;\n deps.push([dep, dev]);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) yield _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n try {\n for (var _e = __asyncValues(wks.devDependencies()), _f; _f = yield _e.next(), !_f.done;) {\n const dep = _f.value;\n deps.push([dep, true]);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) yield _b.call(_e);\n }\n finally { if (e_2) throw e_2.error; }\n }\n setDeps(deps);\n }))(), [wks]);\n // Render\n return (_jsxs(Text, { children: [_jsx(Text, Object.assign({}, style(dev), { children: wks.name })), wks.version && (_jsxs(Text, Object.assign({ color: \"grey\" }, { children: [\"@\", wks.version] }))), _jsx(Newline, {}), deps.map(([dep, isDev], idx) => (_jsxs(Text, { children: [level, _jsxs(Text, Object.assign({}, style(dev), { children: [idx === deps.length - 1 ? '└' : '├', \"\\u2500\", ' '] })), _jsx(WorkspaceTree, { workspace: dep, dev: isDev, level: _jsxs(_Fragment, { children: [level, _jsxs(Text, Object.assign({}, style(dev), { children: [idx === deps.length - 1 ? ' ' : '│', ' '] }))] }) })] }, dep.name)))] }));\n};","import { Workspace } from '@jujulego/jill-core';\nimport { Newline, Text, TextProps } from 'ink';\nimport { FC, ReactElement, useEffect, useState } from 'react';\n\n// Types\nexport interface WorkspaceTreeProps {\n workspace: Workspace;\n dev?: boolean;\n level?: ReactElement;\n}\n\n// Utils\nconst style = (dev: boolean): TextProps => ({ color: dev ? 'blue' : '' });\n\n// Component\nexport const WorkspaceTree: FC<WorkspaceTreeProps> = (props) => {\n const { workspace: wks, dev = false, level = '' } = props;\n\n // State\n const [deps, setDeps] = useState<[Workspace, boolean][]>([]);\n\n // Effects\n useEffect(() => void (async () => {\n const deps: [Workspace, boolean][] = [];\n\n for await (const dep of wks.dependencies()) {\n deps.push([dep, dev]);\n }\n\n for await (const dep of wks.devDependencies()) {\n deps.push([dep, true]);\n }\n\n setDeps(deps);\n })(), [wks]);\n\n // Render\n return (\n <Text>\n <Text {...style(dev)}>{ wks.name }</Text>\n { wks.version && (<Text color=\"grey\">@{ wks.version }</Text>) }\n <Newline />\n\n { deps.map(([dep, isDev], idx) => (\n <Text key={dep.name}>\n { level }<Text {...style(dev)}>{ idx === deps.length - 1 ? '└' : '├'}─{' '}</Text>\n <WorkspaceTree\n workspace={dep}\n dev={isDev}\n level={<>{ level }<Text {...style(dev)}>{ idx === deps.length - 1 ? ' ' : '│' }{' '}</Text></>}\n />\n </Text>\n )) }\n </Text>\n );\n};\n"]}
1
+ {"version":3,"sources":["components/WorkspaceTree.js","components/WorkspaceTree.tsx"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__asyncValues","o","Symbol","asyncIterator","TypeError","m","i","call","__values","iterator","verb","n","v","settle","d","style","dev","color","WorkspaceTree","props","workspace","wks","level","deps","setDeps","e_1","_a","e_2","_b","_c","dependencies","_d","dep","push","e_1_1","error","return","_e","devDependencies","_f","e_2_1","Text","children","WorkspaceName","Object","assign","Newline","map","isDev","idx","length","_Fragment","name"],"mappings":"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","file":"WorkspaceTree.js","sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { WorkspaceName } from '@jujulego/jill-common';\nimport { Newline, Text } from 'ink';\nimport { useEffect, useState } from 'react';\n// Utils\nconst style = (dev) => ({ color: dev ? 'blue' : '' });\n// Component\nexport const WorkspaceTree = (props) => {\n const { workspace: wks, dev = false, level = '' } = props;\n // State\n const [deps, setDeps] = useState([]);\n // Effects\n useEffect(() => void (() => __awaiter(void 0, void 0, void 0, function* () {\n var e_1, _a, e_2, _b;\n const deps = [];\n try {\n for (var _c = __asyncValues(wks.dependencies()), _d; _d = yield _c.next(), !_d.done;) {\n const dep = _d.value;\n deps.push([dep, dev]);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) yield _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n try {\n for (var _e = __asyncValues(wks.devDependencies()), _f; _f = yield _e.next(), !_f.done;) {\n const dep = _f.value;\n deps.push([dep, true]);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) yield _b.call(_e);\n }\n finally { if (e_2) throw e_2.error; }\n }\n setDeps(deps);\n }))(), [dev, wks]);\n // Render\n return (_jsxs(Text, { children: [_jsx(WorkspaceName, Object.assign({}, style(dev), { workspace: wks })), _jsx(Newline, {}), deps.map(([dep, isDev], idx) => (_jsxs(Text, { children: [level, _jsxs(Text, Object.assign({}, style(dev), { children: [idx === deps.length - 1 ? '└' : '├', \"\\u2500\", ' '] })), _jsx(WorkspaceTree, { workspace: dep, dev: isDev, level: _jsxs(_Fragment, { children: [level, _jsxs(Text, Object.assign({}, style(dev), { children: [idx === deps.length - 1 ? ' ' : '│', ' '] }))] }) })] }, dep.name)))] }));\n};","import { WorkspaceName } from '@jujulego/jill-common';\nimport { Workspace } from '@jujulego/jill-core';\nimport { Newline, Text, TextProps } from 'ink';\nimport { FC, ReactElement, useEffect, useState } from 'react';\n\n// Types\nexport interface WorkspaceTreeProps {\n workspace: Workspace;\n dev?: boolean;\n level?: ReactElement;\n}\n\n// Utils\nconst style = (dev: boolean): TextProps => ({ color: dev ? 'blue' : '' });\n\n// Component\nexport const WorkspaceTree: FC<WorkspaceTreeProps> = (props) => {\n const { workspace: wks, dev = false, level = '' } = props;\n\n // State\n const [deps, setDeps] = useState<[Workspace, boolean][]>([]);\n\n // Effects\n useEffect(() => void (async () => {\n const deps: [Workspace, boolean][] = [];\n\n for await (const dep of wks.dependencies()) {\n deps.push([dep, dev]);\n }\n\n for await (const dep of wks.devDependencies()) {\n deps.push([dep, true]);\n }\n\n setDeps(deps);\n })(), [dev, wks]);\n\n // Render\n return (\n <Text>\n <WorkspaceName {...style(dev)} workspace={wks} />\n <Newline />\n\n { deps.map(([dep, isDev], idx) => (\n <Text key={dep.name}>\n { level }<Text {...style(dev)}>{ idx === deps.length - 1 ? '└' : '├'}─{' '}</Text>\n <WorkspaceTree\n workspace={dep}\n dev={isDev}\n level={<>{ level }<Text {...style(dev)}>{ idx === deps.length - 1 ? ' ' : '│' }{' '}</Text></>}\n />\n </Text>\n )) }\n </Text>\n );\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,YAAY,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAW,gBAAgB,EAAW,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACxG,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,oBAAY,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3G,oBAAY,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,YAAY,CAAC;AAGnH,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAoB3H","file":"wrapper.d.ts","sourcesContent":["import { FC, ReactElement } from 'react';\n\nimport { BuilderWrapper, Command, CommandComponent, useArgs, UseArgsHook } from './application.context';\nimport { CommandUtils } from './command';\n\n// Types\nexport type CommandWrapper<A> = <Args>(utils: CommandUtils<Args>) => CommandUtils<Omit<Args, keyof A> & A>;\nexport type WrapperComponent<A> = <Args>(useArgs: UseArgsHook<A>, Wrapped: CommandComponent<Args>) => ReactElement;\n\n// Wrapper generator\nexport function commandWrapper<A>(name: string, builder: BuilderWrapper<A>, wrapper: WrapperComponent<A>): CommandWrapper<A> {\n return <Args>(utils: CommandUtils<Args>): CommandUtils<Omit<Args, keyof A> & A> => ({\n useArgs: () => useArgs<Args & A>(),\n wrapper: (Component: FC): CommandComponent<Omit<Args, keyof A> & A> => {\n const Wrapped = utils.wrapper(Component);\n\n // Update builder\n const command: Command<Omit<Args, keyof A> & A> = {\n ...Wrapped.command,\n builder: (yargs) => builder(Wrapped.command.builder(yargs))\n };\n\n // Component wrapper\n const Wrapper: FC = () => wrapper(() => useArgs<A>(), Wrapped);\n\n Wrapper.displayName = `${name}(${Wrapped.displayName || Wrapped.name})`;\n\n return Object.assign(Wrapper, { command });\n },\n });\n}\n"]}
1
+ {"version":3,"sources":["wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,YAAY,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAW,gBAAgB,EAAW,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACxG,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,oBAAY,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3G,oBAAY,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,YAAY,CAAC;AAGnH,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAoB3H","file":"wrapper.d.ts","sourcesContent":["import { FC, ReactElement } from 'react';\n\nimport { BuilderWrapper, Command, CommandComponent, useArgs, UseArgsHook } from './application.context';\nimport { CommandUtils } from './command';\n\n// Types\nexport type CommandWrapper<A> = <Args>(utils: CommandUtils<Args>) => CommandUtils<Omit<Args, keyof A> & A>;\nexport type WrapperComponent<A> = <Args>(useArgs: UseArgsHook<A>, Wrapped: CommandComponent<Args>) => ReactElement;\n\n// Wrapper generator\nexport function commandWrapper<A>(name: string, builder: BuilderWrapper<A>, wrapper: WrapperComponent<A>): CommandWrapper<A> {\n return <Args>(utils: CommandUtils<Args>): CommandUtils<Omit<Args, keyof A> & A> => ({\n useArgs: () => useArgs<Args & A>(),\n wrapper: (Component: FC): CommandComponent<Omit<Args, keyof A> & A> => {\n const Wrapped = utils.wrapper(Component);\n\n // Update builder\n const command: Command<Omit<Args, keyof A> & A> = {\n ...Wrapped.command,\n builder: (yargs) => builder(Wrapped.command.builder(yargs))\n };\n\n // Component wrapper\n const Wrapper: FC = () => wrapper(useArgs, Wrapped);\n\n Wrapper.displayName = `${name}(${Wrapped.displayName || Wrapped.name})`;\n\n return Object.assign(Wrapper, { command });\n },\n });\n}\n"]}
package/dist/wrapper.js CHANGED
@@ -18,7 +18,7 @@ function commandWrapper(name, builder, wrapper) {
18
18
  builder: yargs => builder(Wrapped.command.builder(yargs))
19
19
  }); // Component wrapper
20
20
 
21
- const Wrapper = () => wrapper(() => (0, _application.useArgs)(), Wrapped);
21
+ const Wrapper = () => wrapper(_application.useArgs, Wrapped);
22
22
 
23
23
  Wrapper.displayName = `${name}(${Wrapped.displayName || Wrapped.name})`;
24
24
  return Object.assign(Wrapper, {
@@ -1 +1 @@
1
- {"version":3,"sources":["wrapper.ts"],"names":["commandWrapper","name","builder","wrapper","utils","useArgs","Component","Wrapped","command","Object","assign","yargs","Wrapper","displayName"],"mappings":";;;;;;;AAEA;;AAOA;AACM,SAAUA,cAAV,CAA4BC,IAA5B,EAA0CC,OAA1C,EAAsEC,OAAtE,EAAkG;AACtG,SAAcC,KAAP,KAA6E;AAClFC,IAAAA,OAAO,EAAE,MAAM,2BADmE;AAElFF,IAAAA,OAAO,EAAGG,SAAD,IAA6D;AACpE,YAAMC,OAAO,GAAGH,KAAK,CAACD,OAAN,CAAcG,SAAd,CAAhB,CADoE,CAGpE;;AACA,YAAME,OAAO,GAAAC,MAAA,CAAAC,MAAA,CAAAD,MAAA,CAAAC,MAAA,CAAA,EAAA,EACRH,OAAO,CAACC,OADA,CAAA,EACO;AAClBN,QAAAA,OAAO,EAAGS,KAAD,IAAWT,OAAO,CAACK,OAAO,CAACC,OAAR,CAAgBN,OAAhB,CAAwBS,KAAxB,CAAD;AADT,OADP,CAAb,CAJoE,CASpE;;AACA,YAAMC,OAAO,GAAO,MAAMT,OAAO,CAAC,MAAM,2BAAP,EAAqBI,OAArB,CAAjC;;AAEAK,MAAAA,OAAO,CAACC,WAAR,GAAsB,GAAGZ,IAAI,IAAIM,OAAO,CAACM,WAAR,IAAuBN,OAAO,CAACN,IAAI,GAApE;AAEA,aAAOQ,MAAM,CAACC,MAAP,CAAcE,OAAd,EAAuB;AAAEJ,QAAAA;AAAF,OAAvB,CAAP;AACD;AAjBiF,GAA7E,CAAP;AAmBD","file":"wrapper.js","sourcesContent":["import { FC, ReactElement } from 'react';\n\nimport { BuilderWrapper, Command, CommandComponent, useArgs, UseArgsHook } from './application.context';\nimport { CommandUtils } from './command';\n\n// Types\nexport type CommandWrapper<A> = <Args>(utils: CommandUtils<Args>) => CommandUtils<Omit<Args, keyof A> & A>;\nexport type WrapperComponent<A> = <Args>(useArgs: UseArgsHook<A>, Wrapped: CommandComponent<Args>) => ReactElement;\n\n// Wrapper generator\nexport function commandWrapper<A>(name: string, builder: BuilderWrapper<A>, wrapper: WrapperComponent<A>): CommandWrapper<A> {\n return <Args>(utils: CommandUtils<Args>): CommandUtils<Omit<Args, keyof A> & A> => ({\n useArgs: () => useArgs<Args & A>(),\n wrapper: (Component: FC): CommandComponent<Omit<Args, keyof A> & A> => {\n const Wrapped = utils.wrapper(Component);\n\n // Update builder\n const command: Command<Omit<Args, keyof A> & A> = {\n ...Wrapped.command,\n builder: (yargs) => builder(Wrapped.command.builder(yargs))\n };\n\n // Component wrapper\n const Wrapper: FC = () => wrapper(() => useArgs<A>(), Wrapped);\n\n Wrapper.displayName = `${name}(${Wrapped.displayName || Wrapped.name})`;\n\n return Object.assign(Wrapper, { command });\n },\n });\n}\n"]}
1
+ {"version":3,"sources":["wrapper.ts"],"names":["commandWrapper","name","builder","wrapper","utils","useArgs","Component","Wrapped","command","Object","assign","yargs","Wrapper","displayName"],"mappings":";;;;;;;AAEA;;AAOA;AACM,SAAUA,cAAV,CAA4BC,IAA5B,EAA0CC,OAA1C,EAAsEC,OAAtE,EAAkG;AACtG,SAAcC,KAAP,KAA6E;AAClFC,IAAAA,OAAO,EAAE,MAAM,2BADmE;AAElFF,IAAAA,OAAO,EAAGG,SAAD,IAA6D;AACpE,YAAMC,OAAO,GAAGH,KAAK,CAACD,OAAN,CAAcG,SAAd,CAAhB,CADoE,CAGpE;;AACA,YAAME,OAAO,GAAAC,MAAA,CAAAC,MAAA,CAAAD,MAAA,CAAAC,MAAA,CAAA,EAAA,EACRH,OAAO,CAACC,OADA,CAAA,EACO;AAClBN,QAAAA,OAAO,EAAGS,KAAD,IAAWT,OAAO,CAACK,OAAO,CAACC,OAAR,CAAgBN,OAAhB,CAAwBS,KAAxB,CAAD;AADT,OADP,CAAb,CAJoE,CASpE;;AACA,YAAMC,OAAO,GAAO,MAAMT,OAAO,CAACE,oBAAD,EAAUE,OAAV,CAAjC;;AAEAK,MAAAA,OAAO,CAACC,WAAR,GAAsB,GAAGZ,IAAI,IAAIM,OAAO,CAACM,WAAR,IAAuBN,OAAO,CAACN,IAAI,GAApE;AAEA,aAAOQ,MAAM,CAACC,MAAP,CAAcE,OAAd,EAAuB;AAAEJ,QAAAA;AAAF,OAAvB,CAAP;AACD;AAjBiF,GAA7E,CAAP;AAmBD","file":"wrapper.js","sourcesContent":["import { FC, ReactElement } from 'react';\n\nimport { BuilderWrapper, Command, CommandComponent, useArgs, UseArgsHook } from './application.context';\nimport { CommandUtils } from './command';\n\n// Types\nexport type CommandWrapper<A> = <Args>(utils: CommandUtils<Args>) => CommandUtils<Omit<Args, keyof A> & A>;\nexport type WrapperComponent<A> = <Args>(useArgs: UseArgsHook<A>, Wrapped: CommandComponent<Args>) => ReactElement;\n\n// Wrapper generator\nexport function commandWrapper<A>(name: string, builder: BuilderWrapper<A>, wrapper: WrapperComponent<A>): CommandWrapper<A> {\n return <Args>(utils: CommandUtils<Args>): CommandUtils<Omit<Args, keyof A> & A> => ({\n useArgs: () => useArgs<Args & A>(),\n wrapper: (Component: FC): CommandComponent<Omit<Args, keyof A> & A> => {\n const Wrapped = utils.wrapper(Component);\n\n // Update builder\n const command: Command<Omit<Args, keyof A> & A> = {\n ...Wrapped.command,\n builder: (yargs) => builder(Wrapped.command.builder(yargs))\n };\n\n // Component wrapper\n const Wrapper: FC = () => wrapper(useArgs, Wrapped);\n\n Wrapper.displayName = `${name}(${Wrapped.displayName || Wrapped.name})`;\n\n return Object.assign(Wrapper, { command });\n },\n });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["wrappers/workspace.wrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAahD,wBAAgB,YAAY,IAAI,SAAS,CAQxC;AAGD,eAAO,MAAM,aAAa;;EAmCzB,CAAC","file":"workspace.wrapper.d.ts","sourcesContent":["import { Workspace } from '@jujulego/jill-core';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport { createContext, useContext, useEffect, useState } from 'react';\n\nimport { commandWrapper } from '../wrapper';\nimport { useProject } from './project.wrapper';\nimport logSymbols from 'log-symbols';\n\n// Context\nconst WorkspaceContext = createContext<Workspace | null>(null);\n\n// Hooks\nexport function useWorkspace(): Workspace {\n const wks = useContext(WorkspaceContext);\n\n if (!wks) {\n throw new Error('To use the useWorkspace hook you must wrap your command with the withWorkspace wrapper');\n }\n\n return wks;\n}\n\n// Wrapper\nexport const withWorkspace = commandWrapper(\n 'withWorkspace',\n (yargs) => yargs\n .option('workspace', {\n alias: 'w',\n type: 'string',\n desc: 'Workspace to use'\n }),\n (useArgs, Wrapped) => {\n const { workspace } = useArgs();\n const project = useProject();\n\n // State\n const [wks, setWks] = useState<Workspace | null>();\n\n // Effects\n useEffect(() => void (async () => {\n setWks(await (workspace ? project.workspace(workspace) : project.currentWorkspace()));\n })(), [workspace]);\n\n // Render\n if (wks === undefined) {\n return <Text><Spinner /> Loading \"{workspace || '.'}\" workspace</Text>;\n }\n\n if (wks === null) {\n return <Text color=\"red\">{logSymbols.error} Workspace \"{workspace || '.'}\" not found</Text>;\n }\n\n return (\n <WorkspaceContext.Provider value={wks}>\n <Wrapped />\n </WorkspaceContext.Provider>\n );\n }\n);\n"]}
1
+ {"version":3,"sources":["wrappers/workspace.wrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAahD,wBAAgB,YAAY,IAAI,SAAS,CAQxC;AAGD,eAAO,MAAM,aAAa;;EAmCzB,CAAC","file":"workspace.wrapper.d.ts","sourcesContent":["import { Workspace } from '@jujulego/jill-core';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport { createContext, useContext, useEffect, useState } from 'react';\n\nimport { commandWrapper } from '../wrapper';\nimport { useProject } from './project.wrapper';\nimport logSymbols from 'log-symbols';\n\n// Context\nconst WorkspaceContext = createContext<Workspace | null>(null);\n\n// Hooks\nexport function useWorkspace(): Workspace {\n const wks = useContext(WorkspaceContext);\n\n if (!wks) {\n throw new Error('To use the useWorkspace hook you must wrap your command with the withWorkspace wrapper');\n }\n\n return wks;\n}\n\n// Wrapper\nexport const withWorkspace = commandWrapper(\n 'withWorkspace',\n (yargs) => yargs\n .option('workspace', {\n alias: 'w',\n type: 'string',\n desc: 'Workspace to use'\n }),\n (useArgs, Wrapped) => {\n const { workspace } = useArgs();\n const project = useProject();\n\n // State\n const [wks, setWks] = useState<Workspace | null>();\n\n // Effects\n useEffect(() => void (async () => {\n setWks(await (workspace ? project.workspace(workspace) : project.currentWorkspace()));\n })(), [project, workspace]);\n\n // Render\n if (wks === undefined) {\n return <Text><Spinner /> Loading &quot;{workspace || '.'}&quot; workspace</Text>;\n }\n\n if (wks === null) {\n return <Text color=\"red\">{logSymbols.error} Workspace &quot;{workspace || '.'}&quot; not found</Text>;\n }\n\n return (\n <WorkspaceContext.Provider value={wks}>\n <Wrapped />\n </WorkspaceContext.Provider>\n );\n }\n);\n"]}
@@ -82,7 +82,7 @@ const withWorkspace = (0, _wrapper.commandWrapper)('withWorkspace', yargs => yar
82
82
 
83
83
  (0, _react.useEffect)(() => void (() => __awaiter(void 0, void 0, void 0, function* () {
84
84
  setWks(yield workspace ? project.workspace(workspace) : project.currentWorkspace());
85
- }))(), [workspace]); // Render
85
+ }))(), [project, workspace]); // Render
86
86
 
87
87
  if (wks === undefined) {
88
88
  return (0, _jsxRuntime.jsxs)(_ink.Text, {
@@ -1 +1 @@
1
- {"version":3,"sources":["wrappers/workspace.wrapper.js","wrappers/workspace.wrapper.tsx"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","WorkspaceContext","useWorkspace","wks","Error","withWorkspace","yargs","option","alias","type","desc","useArgs","Wrapped","workspace","project","setWks","currentWorkspace","undefined","Text","children","Spinner","Object","assign","color","logSymbols","error","Provider"],"mappings":"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","file":"workspace.wrapper.js","sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport { createContext, useContext, useEffect, useState } from 'react';\nimport { commandWrapper } from '../wrapper';\nimport { useProject } from './project.wrapper';\nimport logSymbols from 'log-symbols';\n// Context\nconst WorkspaceContext = createContext(null);\n// Hooks\nexport function useWorkspace() {\n const wks = useContext(WorkspaceContext);\n if (!wks) {\n throw new Error('To use the useWorkspace hook you must wrap your command with the withWorkspace wrapper');\n }\n return wks;\n}\n// Wrapper\nexport const withWorkspace = commandWrapper('withWorkspace', (yargs) => yargs\n .option('workspace', {\n alias: 'w',\n type: 'string',\n desc: 'Workspace to use'\n}), (useArgs, Wrapped) => {\n const { workspace } = useArgs();\n const project = useProject();\n // State\n const [wks, setWks] = useState();\n // Effects\n useEffect(() => void (() => __awaiter(void 0, void 0, void 0, function* () {\n setWks(yield (workspace ? project.workspace(workspace) : project.currentWorkspace()));\n }))(), [workspace]);\n // Render\n if (wks === undefined) {\n return _jsxs(Text, { children: [_jsx(Spinner, {}), \" Loading \\\"\", workspace || '.', \"\\\" workspace\"] });\n }\n if (wks === null) {\n return _jsxs(Text, Object.assign({ color: \"red\" }, { children: [logSymbols.error, \" Workspace \\\"\", workspace || '.', \"\\\" not found\"] }));\n }\n return (_jsx(WorkspaceContext.Provider, Object.assign({ value: wks }, { children: _jsx(Wrapped, {}) })));\n});","import { Workspace } from '@jujulego/jill-core';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport { createContext, useContext, useEffect, useState } from 'react';\n\nimport { commandWrapper } from '../wrapper';\nimport { useProject } from './project.wrapper';\nimport logSymbols from 'log-symbols';\n\n// Context\nconst WorkspaceContext = createContext<Workspace | null>(null);\n\n// Hooks\nexport function useWorkspace(): Workspace {\n const wks = useContext(WorkspaceContext);\n\n if (!wks) {\n throw new Error('To use the useWorkspace hook you must wrap your command with the withWorkspace wrapper');\n }\n\n return wks;\n}\n\n// Wrapper\nexport const withWorkspace = commandWrapper(\n 'withWorkspace',\n (yargs) => yargs\n .option('workspace', {\n alias: 'w',\n type: 'string',\n desc: 'Workspace to use'\n }),\n (useArgs, Wrapped) => {\n const { workspace } = useArgs();\n const project = useProject();\n\n // State\n const [wks, setWks] = useState<Workspace | null>();\n\n // Effects\n useEffect(() => void (async () => {\n setWks(await (workspace ? project.workspace(workspace) : project.currentWorkspace()));\n })(), [workspace]);\n\n // Render\n if (wks === undefined) {\n return <Text><Spinner /> Loading \"{workspace || '.'}\" workspace</Text>;\n }\n\n if (wks === null) {\n return <Text color=\"red\">{logSymbols.error} Workspace \"{workspace || '.'}\" not found</Text>;\n }\n\n return (\n <WorkspaceContext.Provider value={wks}>\n <Wrapped />\n </WorkspaceContext.Provider>\n );\n }\n);\n"]}
1
+ {"version":3,"sources":["wrappers/workspace.wrapper.js","wrappers/workspace.wrapper.tsx"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","WorkspaceContext","useWorkspace","wks","Error","withWorkspace","yargs","option","alias","type","desc","useArgs","Wrapped","workspace","project","setWks","currentWorkspace","undefined","Text","children","Spinner","Object","assign","color","logSymbols","error","Provider"],"mappings":"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","file":"workspace.wrapper.js","sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport { createContext, useContext, useEffect, useState } from 'react';\nimport { commandWrapper } from '../wrapper';\nimport { useProject } from './project.wrapper';\nimport logSymbols from 'log-symbols';\n// Context\nconst WorkspaceContext = createContext(null);\n// Hooks\nexport function useWorkspace() {\n const wks = useContext(WorkspaceContext);\n if (!wks) {\n throw new Error('To use the useWorkspace hook you must wrap your command with the withWorkspace wrapper');\n }\n return wks;\n}\n// Wrapper\nexport const withWorkspace = commandWrapper('withWorkspace', (yargs) => yargs\n .option('workspace', {\n alias: 'w',\n type: 'string',\n desc: 'Workspace to use'\n}), (useArgs, Wrapped) => {\n const { workspace } = useArgs();\n const project = useProject();\n // State\n const [wks, setWks] = useState();\n // Effects\n useEffect(() => void (() => __awaiter(void 0, void 0, void 0, function* () {\n setWks(yield (workspace ? project.workspace(workspace) : project.currentWorkspace()));\n }))(), [project, workspace]);\n // Render\n if (wks === undefined) {\n return _jsxs(Text, { children: [_jsx(Spinner, {}), \" Loading \\\"\", workspace || '.', \"\\\" workspace\"] });\n }\n if (wks === null) {\n return _jsxs(Text, Object.assign({ color: \"red\" }, { children: [logSymbols.error, \" Workspace \\\"\", workspace || '.', \"\\\" not found\"] }));\n }\n return (_jsx(WorkspaceContext.Provider, Object.assign({ value: wks }, { children: _jsx(Wrapped, {}) })));\n});","import { Workspace } from '@jujulego/jill-core';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport { createContext, useContext, useEffect, useState } from 'react';\n\nimport { commandWrapper } from '../wrapper';\nimport { useProject } from './project.wrapper';\nimport logSymbols from 'log-symbols';\n\n// Context\nconst WorkspaceContext = createContext<Workspace | null>(null);\n\n// Hooks\nexport function useWorkspace(): Workspace {\n const wks = useContext(WorkspaceContext);\n\n if (!wks) {\n throw new Error('To use the useWorkspace hook you must wrap your command with the withWorkspace wrapper');\n }\n\n return wks;\n}\n\n// Wrapper\nexport const withWorkspace = commandWrapper(\n 'withWorkspace',\n (yargs) => yargs\n .option('workspace', {\n alias: 'w',\n type: 'string',\n desc: 'Workspace to use'\n }),\n (useArgs, Wrapped) => {\n const { workspace } = useArgs();\n const project = useProject();\n\n // State\n const [wks, setWks] = useState<Workspace | null>();\n\n // Effects\n useEffect(() => void (async () => {\n setWks(await (workspace ? project.workspace(workspace) : project.currentWorkspace()));\n })(), [project, workspace]);\n\n // Render\n if (wks === undefined) {\n return <Text><Spinner /> Loading &quot;{workspace || '.'}&quot; workspace</Text>;\n }\n\n if (wks === null) {\n return <Text color=\"red\">{logSymbols.error} Workspace &quot;{workspace || '.'}&quot; not found</Text>;\n }\n\n return (\n <WorkspaceContext.Provider value={wks}>\n <Wrapped />\n </WorkspaceContext.Provider>\n );\n }\n);\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jujulego/jill",
3
- "version": "2.0.0-beta.1",
3
+ "version": "2.0.0-beta.2",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -33,7 +33,7 @@
33
33
  }
34
34
  },
35
35
  "dependencies": {
36
- "@jujulego/jill-common": "^2.0.0-beta.1",
36
+ "@jujulego/jill-common": "^2.0.0-beta.2",
37
37
  "@jujulego/jill-core": "^2.0.0-beta.1",
38
38
  "@repeaterjs/repeater": "^3.0.4",
39
39
  "chalk": "^4.1.1",
@@ -53,34 +53,36 @@
53
53
  "yargs": "^17.0.1"
54
54
  },
55
55
  "devDependencies": {
56
- "@babel/core": "7.17.5",
56
+ "@babel/core": "7.17.8",
57
57
  "@babel/plugin-proposal-class-properties": "7.16.7",
58
58
  "@babel/preset-env": "7.16.11",
59
59
  "@babel/preset-react": "7.16.7",
60
- "@babel/runtime": "7.17.2",
60
+ "@babel/runtime": "7.17.8",
61
61
  "@types/gulp": "4.0.9",
62
62
  "@types/jest": "27.4.1",
63
63
  "@types/node": "14.18.12",
64
64
  "@types/normalize-package-data": "2.4.1",
65
65
  "@types/react": "17.0.39",
66
- "@types/ws": "8.5.2",
67
- "@types/yargs": "17.0.9",
68
- "@typescript-eslint/eslint-plugin": "5.14.0",
69
- "@typescript-eslint/parser": "5.14.0",
66
+ "@types/ws": "8.5.3",
67
+ "@types/yargs": "17.0.10",
68
+ "@typescript-eslint/eslint-plugin": "5.16.0",
69
+ "@typescript-eslint/parser": "5.16.0",
70
70
  "del": "6.0.0",
71
- "eslint": "8.10.0",
72
- "eslint-plugin-jest": "26.1.1",
71
+ "eslint": "8.11.0",
72
+ "eslint-plugin-jest": "26.1.3",
73
+ "eslint-plugin-react": "7.29.4",
74
+ "eslint-plugin-react-hooks": "4.3.0",
73
75
  "eslint-plugin-workspaces": "0.7.0",
74
76
  "gulp": "4.0.2",
75
77
  "gulp-cli": "2.3.0",
76
78
  "ink-testing-library": "2.1.0",
77
79
  "jest": "27.5.1",
78
80
  "jill-tools": "0.0.0",
79
- "msw": "0.39.0",
81
+ "msw": "0.39.2",
80
82
  "normalize-package-data": "3.0.3",
81
- "ts-jest": "27.1.3",
83
+ "ts-jest": "27.1.4",
82
84
  "ts-node": "10.7.0",
83
85
  "typescript": "4.6.2"
84
86
  },
85
- "stableVersion": "1.2.0"
87
+ "stableVersion": "2.0.0-beta.1"
86
88
  }
@@ -1,9 +0,0 @@
1
- import { ReactElement } from 'react';
2
- export declare type ListItem<K extends string> = Partial<Record<K, string | number>> & Record<string, unknown>;
3
- export interface ListProps<K extends string> {
4
- attrs: K[];
5
- data: ListItem<K>[];
6
- withoutHeaders?: boolean;
7
- json?: boolean;
8
- }
9
- export declare const List: <K extends string>(props: ListProps<K>) => ReactElement | null;
@@ -1 +0,0 @@
1
- {"version":3,"sources":["components/List.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAa,MAAM,OAAO,CAAC;AAGhD,oBAAY,QAAQ,CAAC,CAAC,SAAS,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEvG,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,MAAM;IAC1C,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAQD,eAAO,MAAM,IAAI,6CAA4C,YAAY,GAAG,IA2B3E,CAAC","file":"List.d.ts","sourcesContent":["import { Box, Text, useStdout } from 'ink';\nimport { ReactElement, useEffect } from 'react';\n\n// Types\nexport type ListItem<K extends string> = Partial<Record<K, string | number>> & Record<string, unknown>;\n\nexport interface ListProps<K extends string> {\n\tattrs: K[];\n\tdata: ListItem<K>[];\n\twithoutHeaders?: boolean;\n\tjson?: boolean;\n}\n\n// Utils\nfunction capitalize(str: string): string {\n\treturn `${str.substring(0, 1).toUpperCase()}${str.substring(1)}`;\n}\n\n// Component\nexport const List = <K extends string>(props: ListProps<K>): ReactElement | null => {\n\tconst { attrs, data, withoutHeaders = false, json = false } = props;\n\tconst { stdout } = useStdout();\n\n\t// Effects\n\tuseEffect(() => {\n\t\tif (!json) return;\n\t\tif (!stdout) return;\n\n\t\tstdout.write(JSON.stringify(data, null, stdout.isTTY ? 2 : 0));\n\t}, [stdout, data, json]);\n\n\t// Render\n\tif (json) return null;\n\n\treturn (\n\t\t<Box>\n\t\t\t{attrs.map((attr) => (\n\t\t\t\t<Box key={attr} flexDirection=\"column\" marginRight={2}>\n\t\t\t\t\t{!withoutHeaders && <Text bold>{capitalize(attr)}</Text>}\n\t\t\t\t\t{data.map((d, idx) => (\n\t\t\t\t\t\t<Text key={idx} color={d[attr] ? '' : 'grey'}>{d[attr] || 'unset'}</Text>\n\t\t\t\t\t))}\n\t\t\t\t</Box>\n\t\t\t))}\n\t\t</Box>\n\t);\n};\n"]}
@@ -1,57 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.List = void 0;
7
-
8
- var _jsxRuntime = require("react/jsx-runtime");
9
-
10
- var _ink = require("ink");
11
-
12
- var _react = require("react");
13
-
14
- // Utils
15
- function capitalize(str) {
16
- return `${str.substring(0, 1).toUpperCase()}${str.substring(1)}`;
17
- } // Component
18
-
19
-
20
- const List = props => {
21
- const {
22
- attrs,
23
- data,
24
- withoutHeaders = false,
25
- json = false
26
- } = props;
27
- const {
28
- stdout
29
- } = (0, _ink.useStdout)(); // Effects
30
-
31
- (0, _react.useEffect)(() => {
32
- if (!json) return;
33
- if (!stdout) return;
34
- stdout.write(JSON.stringify(data, null, stdout.isTTY ? 2 : 0));
35
- }, [stdout, data, json]); // Render
36
-
37
- if (json) return null;
38
- return (0, _jsxRuntime.jsx)(_ink.Box, {
39
- children: attrs.map(attr => (0, _jsxRuntime.jsxs)(_ink.Box, Object.assign({
40
- flexDirection: "column",
41
- marginRight: 2
42
- }, {
43
- children: [!withoutHeaders && (0, _jsxRuntime.jsx)(_ink.Text, Object.assign({
44
- bold: true
45
- }, {
46
- children: capitalize(attr)
47
- })), data.map((d, idx) => (0, _jsxRuntime.jsx)(_ink.Text, Object.assign({
48
- color: d[attr] ? '' : 'grey'
49
- }, {
50
- children: d[attr] || 'unset'
51
- }), idx))]
52
- }), attr))
53
- });
54
- };
55
-
56
- exports.List = List;
57
- //# sourceMappingURL=List.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["components/List.js","components/List.tsx"],"names":["capitalize","str","substring","toUpperCase","List","props","attrs","data","withoutHeaders","json","stdout","write","JSON","stringify","isTTY","Box","children","map","attr","Object","assign","flexDirection","marginRight","Text","bold","d","idx","color"],"mappings":";;;;;;;AAAA;;ACAA;;AACA;;AAYA;AACA,SAASA,UAAT,CAAoBC,GAApB,EAA+B;AAC9B,SAAO,GAAGA,GAAG,CAACC,SAAJ,CAAc,CAAd,EAAiB,CAAjB,EAAoBC,WAApB,EAAiC,GAAGF,GAAG,CAACC,SAAJ,CAAc,CAAd,CAAgB,EAA9D;AACA,C,CAED;;;AACO,MAAME,IAAI,GAAsBC,KAAnB,IAA+D;AAClF,QAAM;AAAEC,IAAAA,KAAF;AAASC,IAAAA,IAAT;AAAeC,IAAAA,cAAc,GAAG,KAAhC;AAAuCC,IAAAA,IAAI,GAAG;AAA9C,MAAwDJ,KAA9D;AACA,QAAM;AAAEK,IAAAA;AAAF,MAAa,qBAAnB,CAFkF,CAIlF;;AACA,wBAAU,MAAK;AACd,QAAI,CAACD,IAAL,EAAW;AACX,QAAI,CAACC,MAAL,EAAa;AAEbA,IAAAA,MAAM,CAACC,KAAP,CAAaC,IAAI,CAACC,SAAL,CAAeN,IAAf,EAAqB,IAArB,EAA2BG,MAAM,CAACI,KAAP,GAAe,CAAf,GAAmB,CAA9C,CAAb;AACA,GALD,EAKG,CAACJ,MAAD,EAASH,IAAT,EAAeE,IAAf,CALH,EALkF,CAYlF;;AACA,MAAIA,IAAJ,EAAU,OAAO,IAAP;AAEV,SACC,qBAACM,QAAD,EAAI;AAAAC,IAAAA,QAAA,EACFV,KAAK,CAACW,GAAN,CAAWC,IAAD,IACV,sBAACH,QAAD,EAAII,MAAA,CAAAC,MAAA,CAAA;AAAYC,MAAAA,aAAa,EAAC,QAA1B;AAAmCC,MAAAA,WAAW,EAAE;AAAhD,KAAA,EAAiD;AAAAN,MAAAA,QAAA,EAAA,CACnD,CAACR,cAAD,IAAmB,qBAACe,SAAD,EAAKJ,MAAA,CAAAC,MAAA,CAAA;AAACI,QAAAA,IAAI,EAAA;AAAL,OAAA,EAAK;AAAAR,QAAAA,QAAA,EAAEhB,UAAU,CAACkB,IAAD;AAAZ,OAAL,CAAL,CADgC,EAEnDX,IAAI,CAACU,GAAL,CAAS,CAACQ,CAAD,EAAIC,GAAJ,KACT,qBAACH,SAAD,EAAKJ,MAAA,CAAAC,MAAA,CAAA;AAAWO,QAAAA,KAAK,EAAEF,CAAC,CAACP,IAAD,CAAD,GAAU,EAAV,GAAe;AAAjC,OAAA,EAAuC;AAAAF,QAAAA,QAAA,EAAGS,CAAC,CAACP,IAAD,CAAD,IAAW;AAAd,OAAvC,CAAL,EAAWQ,GAAX,CADA,CAFmD;AAAA,KAAjD,CAAJ,EAAUR,IAAV,CADA;AADE,GAAJ,CADD;AAYA,CA3BM","file":"List.js","sourcesContent":["import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Box, Text, useStdout } from 'ink';\nimport { useEffect } from 'react';\n// Utils\nfunction capitalize(str) {\n return `${str.substring(0, 1).toUpperCase()}${str.substring(1)}`;\n}\n// Component\nexport const List = (props) => {\n const { attrs, data, withoutHeaders = false, json = false } = props;\n const { stdout } = useStdout();\n // Effects\n useEffect(() => {\n if (!json)\n return;\n if (!stdout)\n return;\n stdout.write(JSON.stringify(data, null, stdout.isTTY ? 2 : 0));\n }, [stdout, data, json]);\n // Render\n if (json)\n return null;\n return (_jsx(Box, { children: attrs.map((attr) => (_jsxs(Box, Object.assign({ flexDirection: \"column\", marginRight: 2 }, { children: [!withoutHeaders && _jsx(Text, Object.assign({ bold: true }, { children: capitalize(attr) })), data.map((d, idx) => (_jsx(Text, Object.assign({ color: d[attr] ? '' : 'grey' }, { children: d[attr] || 'unset' }), idx)))] }), attr))) }));\n};","import { Box, Text, useStdout } from 'ink';\nimport { ReactElement, useEffect } from 'react';\n\n// Types\nexport type ListItem<K extends string> = Partial<Record<K, string | number>> & Record<string, unknown>;\n\nexport interface ListProps<K extends string> {\n\tattrs: K[];\n\tdata: ListItem<K>[];\n\twithoutHeaders?: boolean;\n\tjson?: boolean;\n}\n\n// Utils\nfunction capitalize(str: string): string {\n\treturn `${str.substring(0, 1).toUpperCase()}${str.substring(1)}`;\n}\n\n// Component\nexport const List = <K extends string>(props: ListProps<K>): ReactElement | null => {\n\tconst { attrs, data, withoutHeaders = false, json = false } = props;\n\tconst { stdout } = useStdout();\n\n\t// Effects\n\tuseEffect(() => {\n\t\tif (!json) return;\n\t\tif (!stdout) return;\n\n\t\tstdout.write(JSON.stringify(data, null, stdout.isTTY ? 2 : 0));\n\t}, [stdout, data, json]);\n\n\t// Render\n\tif (json) return null;\n\n\treturn (\n\t\t<Box>\n\t\t\t{attrs.map((attr) => (\n\t\t\t\t<Box key={attr} flexDirection=\"column\" marginRight={2}>\n\t\t\t\t\t{!withoutHeaders && <Text bold>{capitalize(attr)}</Text>}\n\t\t\t\t\t{data.map((d, idx) => (\n\t\t\t\t\t\t<Text key={idx} color={d[attr] ? '' : 'grey'}>{d[attr] || 'unset'}</Text>\n\t\t\t\t\t))}\n\t\t\t\t</Box>\n\t\t\t))}\n\t\t</Box>\n\t);\n};\n"]}
@@ -1,6 +0,0 @@
1
- import { TaskSet } from '@jujulego/jill-core';
2
- import { FC } from 'react';
3
- export interface TaskSetSpinnerProps {
4
- taskSet: TaskSet;
5
- }
6
- export declare const TaskSetSpinner: FC<TaskSetSpinnerProps>;
@@ -1 +0,0 @@
1
- {"version":3,"sources":["components/TaskSetSpinner.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,EAAE,EAAuB,MAAM,OAAO,CAAC;AAIhD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;CAClB;AAGD,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAyBlD,CAAC","file":"TaskSetSpinner.d.ts","sourcesContent":["import { Task, TaskSet } from '@jujulego/jill-core';\nimport { FC, useEffect, useState } from 'react';\nimport { TaskSpinner } from './TaskSpinner';\n\n// Types\nexport interface TaskSetSpinnerProps {\n taskSet: TaskSet;\n}\n\n// Component\nexport const TaskSetSpinner: FC<TaskSetSpinnerProps> = (props) => {\n const { taskSet } = props;\n\n // State\n const [tasks, setTasks] = useState<Task[]>([]);\n\n // Effects\n useEffect(() => {\n const handler = (task: Task) => {\n setTasks((old) => [...old, task]);\n };\n\n taskSet.on('started', handler);\n\n return () => {\n taskSet.off('started', handler);\n };\n }, [taskSet]);\n\n // Render\n return (\n <>\n { tasks.map((task, idx) => <TaskSpinner key={idx} task={task} />) }\n </>\n );\n};\n"]}
@@ -1,41 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.TaskSetSpinner = void 0;
7
-
8
- var _jsxRuntime = require("react/jsx-runtime");
9
-
10
- var _react = require("react");
11
-
12
- var _TaskSpinner = require("./TaskSpinner");
13
-
14
- // Component
15
- const TaskSetSpinner = props => {
16
- const {
17
- taskSet
18
- } = props; // State
19
-
20
- const [tasks, setTasks] = (0, _react.useState)([]); // Effects
21
-
22
- (0, _react.useEffect)(() => {
23
- const handler = task => {
24
- setTasks(old => [...old, task]);
25
- };
26
-
27
- taskSet.on('started', handler);
28
- return () => {
29
- taskSet.off('started', handler);
30
- };
31
- }, [taskSet]); // Render
32
-
33
- return (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
34
- children: tasks.map((task, idx) => (0, _jsxRuntime.jsx)(_TaskSpinner.TaskSpinner, {
35
- task: task
36
- }, idx))
37
- });
38
- };
39
-
40
- exports.TaskSetSpinner = TaskSetSpinner;
41
- //# sourceMappingURL=TaskSetSpinner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["components/TaskSetSpinner.js","components/TaskSetSpinner.tsx"],"names":["TaskSetSpinner","props","taskSet","tasks","setTasks","handler","task","old","on","off","_Fragment","children","map","idx","TaskSpinner"],"mappings":";;;;;;;AAAA;;ACCA;;AACA;;AAOA;AACO,MAAMA,cAAc,GAA6BC,KAAD,IAAU;AAC/D,QAAM;AAAEC,IAAAA;AAAF,MAAcD,KAApB,CAD+D,CAG/D;;AACA,QAAM,CAACE,KAAD,EAAQC,QAAR,IAAoB,qBAAiB,EAAjB,CAA1B,CAJ+D,CAM/D;;AACA,wBAAU,MAAK;AACb,UAAMC,OAAO,GAAIC,IAAD,IAAe;AAC7BF,MAAAA,QAAQ,CAAEG,GAAD,IAAS,CAAC,GAAGA,GAAJ,EAASD,IAAT,CAAV,CAAR;AACD,KAFD;;AAIAJ,IAAAA,OAAO,CAACM,EAAR,CAAW,SAAX,EAAsBH,OAAtB;AAEA,WAAO,MAAK;AACVH,MAAAA,OAAO,CAACO,GAAR,CAAY,SAAZ,EAAuBJ,OAAvB;AACD,KAFD;AAGD,GAVD,EAUG,CAACH,OAAD,CAVH,EAP+D,CAmB/D;;AACA,SACE,qBAAAQ,oBAAA,EAAA;AAAAC,IAAAA,QAAA,EACIR,KAAK,CAACS,GAAN,CAAU,CAACN,IAAD,EAAOO,GAAP,KAAe,qBAACC,wBAAD,EAAY;AAAWR,MAAAA,IAAI,EAAEA;AAAjB,KAAZ,EAAkBO,GAAlB,CAAzB;AADJ,GAAA,CADF;AAKD,CAzBM","file":"TaskSetSpinner.js","sourcesContent":["import { jsx as _jsx, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { useEffect, useState } from 'react';\nimport { TaskSpinner } from './TaskSpinner';\n// Component\nexport const TaskSetSpinner = (props) => {\n const { taskSet } = props;\n // State\n const [tasks, setTasks] = useState([]);\n // Effects\n useEffect(() => {\n const handler = (task) => {\n setTasks((old) => [...old, task]);\n };\n taskSet.on('started', handler);\n return () => {\n taskSet.off('started', handler);\n };\n }, [taskSet]);\n // Render\n return (_jsx(_Fragment, { children: tasks.map((task, idx) => _jsx(TaskSpinner, { task: task }, idx)) }));\n};","import { Task, TaskSet } from '@jujulego/jill-core';\nimport { FC, useEffect, useState } from 'react';\nimport { TaskSpinner } from './TaskSpinner';\n\n// Types\nexport interface TaskSetSpinnerProps {\n taskSet: TaskSet;\n}\n\n// Component\nexport const TaskSetSpinner: FC<TaskSetSpinnerProps> = (props) => {\n const { taskSet } = props;\n\n // State\n const [tasks, setTasks] = useState<Task[]>([]);\n\n // Effects\n useEffect(() => {\n const handler = (task: Task) => {\n setTasks((old) => [...old, task]);\n };\n\n taskSet.on('started', handler);\n\n return () => {\n taskSet.off('started', handler);\n };\n }, [taskSet]);\n\n // Render\n return (\n <>\n { tasks.map((task, idx) => <TaskSpinner key={idx} task={task} />) }\n </>\n );\n};\n"]}
@@ -1,6 +0,0 @@
1
- import { Task } from '@jujulego/jill-core';
2
- import { FC } from 'react';
3
- export interface TaskSpinnerProps {
4
- task: Task;
5
- }
6
- export declare const TaskSpinner: FC<TaskSpinnerProps>;
@@ -1 +0,0 @@
1
- {"version":3,"sources":["components/TaskSpinner.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAI3C,OAAO,EAAE,EAAE,EAAuB,MAAM,OAAO,CAAC;AAGhD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,IAAI,CAAC;CACZ;AAGD,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CA0C5C,CAAC","file":"TaskSpinner.d.ts","sourcesContent":["import { Task } from '@jujulego/jill-core';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport logSymbols from 'log-symbols';\nimport { FC, useEffect, useState } from 'react';\n\n// Types\nexport interface TaskSpinnerProps {\n task: Task;\n}\n\n// Component\nexport const TaskSpinner: FC<TaskSpinnerProps> = (props) => {\n const { task } = props;\n const wks = task.context.workspace;\n\n // State\n const [status, setStatus] = useState(task.status);\n\n // Effects\n useEffect(() => {\n task.on('status', setStatus);\n\n return () => {\n task.off('status', setStatus);\n };\n }, [task]);\n\n // Render\n if (status === 'done') {\n return (\n <Text>\n { logSymbols.success }{' '}\n { wks && <><Text color=\"grey\">[{ wks.name }]</Text>{' '}</> }\n { task.name } is { status }\n </Text>\n );\n } else if (status === 'failed') {\n return (\n <Text>\n { logSymbols.error }{' '}\n { wks && <><Text color=\"grey\">[{ wks.name }]</Text>{' '}</> }\n { task.name } is { status }\n </Text>\n );\n }\n\n return (\n <Text>\n <Spinner type={status === 'running' ? 'line' : 'simpleDotsScrolling'} />{' '}\n { wks && <><Text color=\"grey\">[{ wks.name }]</Text>{' '}</> }\n { task.name } is { status }\n </Text>\n );\n};\n"]}
@@ -1,72 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.TaskSpinner = void 0;
7
-
8
- var _jsxRuntime = require("react/jsx-runtime");
9
-
10
- var _ink = require("ink");
11
-
12
- var _inkSpinner = _interopRequireDefault(require("ink-spinner"));
13
-
14
- var _logSymbols = _interopRequireDefault(require("log-symbols"));
15
-
16
- var _react = require("react");
17
-
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
- // Component
21
- const TaskSpinner = props => {
22
- const {
23
- task
24
- } = props;
25
- const wks = task.context.workspace; // State
26
-
27
- const [status, setStatus] = (0, _react.useState)(task.status); // Effects
28
-
29
- (0, _react.useEffect)(() => {
30
- task.on('status', setStatus);
31
- return () => {
32
- task.off('status', setStatus);
33
- };
34
- }, [task]); // Render
35
-
36
- if (status === 'done') {
37
- return (0, _jsxRuntime.jsxs)(_ink.Text, {
38
- children: [_logSymbols.default.success, ' ', wks && (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
39
- children: [(0, _jsxRuntime.jsxs)(_ink.Text, Object.assign({
40
- color: "grey"
41
- }, {
42
- children: ["[", wks.name, "]"]
43
- })), ' ']
44
- }), task.name, " is ", status]
45
- });
46
- } else if (status === 'failed') {
47
- return (0, _jsxRuntime.jsxs)(_ink.Text, {
48
- children: [_logSymbols.default.error, ' ', wks && (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
49
- children: [(0, _jsxRuntime.jsxs)(_ink.Text, Object.assign({
50
- color: "grey"
51
- }, {
52
- children: ["[", wks.name, "]"]
53
- })), ' ']
54
- }), task.name, " is ", status]
55
- });
56
- }
57
-
58
- return (0, _jsxRuntime.jsxs)(_ink.Text, {
59
- children: [(0, _jsxRuntime.jsx)(_inkSpinner.default, {
60
- type: status === 'running' ? 'line' : 'simpleDotsScrolling'
61
- }), ' ', wks && (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
62
- children: [(0, _jsxRuntime.jsxs)(_ink.Text, Object.assign({
63
- color: "grey"
64
- }, {
65
- children: ["[", wks.name, "]"]
66
- })), ' ']
67
- }), task.name, " is ", status]
68
- });
69
- };
70
-
71
- exports.TaskSpinner = TaskSpinner;
72
- //# sourceMappingURL=TaskSpinner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["components/TaskSpinner.js","components/TaskSpinner.tsx"],"names":["TaskSpinner","props","task","wks","context","workspace","status","setStatus","on","off","Text","children","logSymbols","success","_Fragment","Object","assign","color","name","error","Spinner","type"],"mappings":";;;;;;;AAAA;;ACCA;;AACA;;AACA;;AACA;;;;AAOA;AACO,MAAMA,WAAW,GAA0BC,KAAD,IAAU;AACzD,QAAM;AAAEC,IAAAA;AAAF,MAAWD,KAAjB;AACA,QAAME,GAAG,GAAGD,IAAI,CAACE,OAAL,CAAaC,SAAzB,CAFyD,CAIzD;;AACA,QAAM,CAACC,MAAD,EAASC,SAAT,IAAsB,qBAASL,IAAI,CAACI,MAAd,CAA5B,CALyD,CAOzD;;AACA,wBAAU,MAAK;AACbJ,IAAAA,IAAI,CAACM,EAAL,CAAQ,QAAR,EAAkBD,SAAlB;AAEA,WAAO,MAAK;AACVL,MAAAA,IAAI,CAACO,GAAL,CAAS,QAAT,EAAmBF,SAAnB;AACD,KAFD;AAGD,GAND,EAMG,CAACL,IAAD,CANH,EARyD,CAgBzD;;AACA,MAAII,MAAM,KAAK,MAAf,EAAuB;AACrB,WACE,sBAACI,SAAD,EAAK;AAAAC,MAAAA,QAAA,EAAA,CACDC,oBAAWC,OADV,EACoB,GADpB,EAEDV,GAAG,IAAI,sBAAAW,oBAAA,EAAA;AAAAH,QAAAA,QAAA,EAAA,CAAE,sBAACD,SAAD,EAAKK,MAAA,CAAAC,MAAA,CAAA;AAACC,UAAAA,KAAK,EAAC;AAAP,SAAA,EAAa;AAAAN,UAAAA,QAAA,EAAA,CAAA,GAAA,EAAIR,GAAG,CAACe,IAAR,EAAY,GAAZ;AAAA,SAAb,CAAL,CAAF,EAA2C,GAA3C;AAAA,OAAA,CAFN,EAGDhB,IAAI,CAACgB,IAHJ,EAGQ,MAHR,EAGgBZ,MAHhB;AAAA,KAAL,CADF;AAOD,GARD,MAQO,IAAIA,MAAM,KAAK,QAAf,EAAyB;AAC9B,WACE,sBAACI,SAAD,EAAK;AAAAC,MAAAA,QAAA,EAAA,CACDC,oBAAWO,KADV,EACkB,GADlB,EAEDhB,GAAG,IAAI,sBAAAW,oBAAA,EAAA;AAAAH,QAAAA,QAAA,EAAA,CAAE,sBAACD,SAAD,EAAKK,MAAA,CAAAC,MAAA,CAAA;AAACC,UAAAA,KAAK,EAAC;AAAP,SAAA,EAAa;AAAAN,UAAAA,QAAA,EAAA,CAAA,GAAA,EAAIR,GAAG,CAACe,IAAR,EAAY,GAAZ;AAAA,SAAb,CAAL,CAAF,EAA2C,GAA3C;AAAA,OAAA,CAFN,EAGDhB,IAAI,CAACgB,IAHJ,EAGQ,MAHR,EAGgBZ,MAHhB;AAAA,KAAL,CADF;AAOD;;AAED,SACE,sBAACI,SAAD,EAAK;AAAAC,IAAAA,QAAA,EAAA,CACH,qBAACS,mBAAD,EAAQ;AAACC,MAAAA,IAAI,EAAEf,MAAM,KAAK,SAAX,GAAuB,MAAvB,GAAgC;AAAvC,KAAR,CADG,EACsE,GADtE,EAEDH,GAAG,IAAI,sBAAAW,oBAAA,EAAA;AAAAH,MAAAA,QAAA,EAAA,CAAE,sBAACD,SAAD,EAAKK,MAAA,CAAAC,MAAA,CAAA;AAACC,QAAAA,KAAK,EAAC;AAAP,OAAA,EAAa;AAAAN,QAAAA,QAAA,EAAA,CAAA,GAAA,EAAIR,GAAG,CAACe,IAAR,EAAY,GAAZ;AAAA,OAAb,CAAL,CAAF,EAA2C,GAA3C;AAAA,KAAA,CAFN,EAGDhB,IAAI,CAACgB,IAHJ,EAGQ,MAHR,EAGgBZ,MAHhB;AAAA,GAAL,CADF;AAOD,CA1CM","file":"TaskSpinner.js","sourcesContent":["import { jsxs as _jsxs, Fragment as _Fragment, jsx as _jsx } from \"react/jsx-runtime\";\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport logSymbols from 'log-symbols';\nimport { useEffect, useState } from 'react';\n// Component\nexport const TaskSpinner = (props) => {\n const { task } = props;\n const wks = task.context.workspace;\n // State\n const [status, setStatus] = useState(task.status);\n // Effects\n useEffect(() => {\n task.on('status', setStatus);\n return () => {\n task.off('status', setStatus);\n };\n }, [task]);\n // Render\n if (status === 'done') {\n return (_jsxs(Text, { children: [logSymbols.success, ' ', wks && _jsxs(_Fragment, { children: [_jsxs(Text, Object.assign({ color: \"grey\" }, { children: [\"[\", wks.name, \"]\"] })), ' '] }), task.name, \" is \", status] }));\n }\n else if (status === 'failed') {\n return (_jsxs(Text, { children: [logSymbols.error, ' ', wks && _jsxs(_Fragment, { children: [_jsxs(Text, Object.assign({ color: \"grey\" }, { children: [\"[\", wks.name, \"]\"] })), ' '] }), task.name, \" is \", status] }));\n }\n return (_jsxs(Text, { children: [_jsx(Spinner, { type: status === 'running' ? 'line' : 'simpleDotsScrolling' }), ' ', wks && _jsxs(_Fragment, { children: [_jsxs(Text, Object.assign({ color: \"grey\" }, { children: [\"[\", wks.name, \"]\"] })), ' '] }), task.name, \" is \", status] }));\n};","import { Task } from '@jujulego/jill-core';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport logSymbols from 'log-symbols';\nimport { FC, useEffect, useState } from 'react';\n\n// Types\nexport interface TaskSpinnerProps {\n task: Task;\n}\n\n// Component\nexport const TaskSpinner: FC<TaskSpinnerProps> = (props) => {\n const { task } = props;\n const wks = task.context.workspace;\n\n // State\n const [status, setStatus] = useState(task.status);\n\n // Effects\n useEffect(() => {\n task.on('status', setStatus);\n\n return () => {\n task.off('status', setStatus);\n };\n }, [task]);\n\n // Render\n if (status === 'done') {\n return (\n <Text>\n { logSymbols.success }{' '}\n { wks && <><Text color=\"grey\">[{ wks.name }]</Text>{' '}</> }\n { task.name } is { status }\n </Text>\n );\n } else if (status === 'failed') {\n return (\n <Text>\n { logSymbols.error }{' '}\n { wks && <><Text color=\"grey\">[{ wks.name }]</Text>{' '}</> }\n { task.name } is { status }\n </Text>\n );\n }\n\n return (\n <Text>\n <Spinner type={status === 'running' ? 'line' : 'simpleDotsScrolling'} />{' '}\n { wks && <><Text color=\"grey\">[{ wks.name }]</Text>{' '}</> }\n { task.name } is { status }\n </Text>\n );\n};\n"]}