@jujulego/jill 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/each.d.ts.map +1 -1
- package/dist/commands/each.js +1 -1
- package/dist/commands/each.js.map +1 -1
- package/dist/git.d.ts +1 -1
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js.map +1 -1
- package/dist/middlewares/global-config.d.ts +1 -1
- package/dist/middlewares/global-config.d.ts.map +1 -1
- package/dist/middlewares/global-config.js +7 -0
- package/dist/middlewares/global-config.js.map +1 -1
- package/dist/services/spinner.service.d.ts +3 -5
- package/dist/services/spinner.service.d.ts.map +1 -1
- package/dist/services/spinner.service.js +6 -17
- package/dist/services/spinner.service.js.map +1 -1
- package/dist/ui/global-spinner.d.ts.map +1 -1
- package/dist/ui/global-spinner.js +1 -1
- package/dist/ui/global-spinner.js.map +1 -1
- package/dist/ui/index.d.ts +2 -1
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +2 -1
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/task-spinner.d.ts.map +1 -1
- package/dist/ui/task-spinner.js +6 -4
- package/dist/ui/task-spinner.js.map +1 -1
- package/dist/ui/workspace-tree.d.ts.map +1 -1
- package/dist/ui/workspace-tree.js +3 -2
- package/dist/ui/workspace-tree.js.map +1 -1
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/{index.js → utils/index.js} +3 -7
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/streams.d.ts +3 -0
- package/dist/utils/streams.d.ts.map +1 -0
- package/dist/{utils.js → utils/streams.js} +6 -28
- package/dist/utils/streams.js.map +1 -0
- package/dist/utils/string.d.ts +1 -0
- package/dist/utils/string.d.ts.map +1 -0
- package/dist/utils/string.js +14 -0
- package/dist/utils/string.js.map +1 -0
- package/dist/{utils.d.ts → utils/yargs.d.ts} +2 -6
- package/dist/utils/yargs.d.ts.map +1 -0
- package/dist/utils/yargs.js +33 -0
- package/dist/utils/yargs.js.map +1 -0
- package/package.json +16 -21
- package/dist/index.d.ts +0 -7
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["commands/each.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,
|
|
1
|
+
{"version":3,"sources":["commands/each.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAW,iBAAiB,EAAE,MAAM,YAAY,CAAC;;;;;;;;;;;;;;AAMxD,wBAiHG","file":"each.d.ts","sourcesContent":["import { waitForEvent } from '@jujulego/event-tree';\nimport { TaskManager, TaskSet } from '@jujulego/tasks';\nimport ink from 'ink';\nimport yargs from 'yargs';\n\nimport { AffectedFilter, Pipeline, PrivateFilter, ScriptsFilter } from '../filters';\nimport { loadProject, setupInk } from '../middlewares';\nimport { Project, WorkspaceDepsMode } from '../project';\nimport { container, CURRENT, INK_APP, SpinnerService } from '../services';\nimport { Layout, TasksSpinner } from '../ui';\nimport { applyMiddlewares, defineCommand } from '../utils';\n\n// Command\nexport default defineCommand({\n command: 'each <script>',\n describe: 'Run script on many workspaces',\n builder: (yargs) =>\n applyMiddlewares(yargs, [\n setupInk,\n loadProject,\n ])\n // Run options\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 // Filters\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n\n // Affected filter\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 async handler(args) {\n const app = container.get<ink.Instance>(INK_APP);\n const project = container.getNamed(Project, CURRENT);\n const manager = container.get(TaskManager);\n const spinner = container.get(SpinnerService);\n\n try {\n spinner.spin('Loading workspaces ...');\n\n // Setup pipeline\n const pipeline = new Pipeline();\n pipeline.add(new ScriptsFilter([args.script]));\n\n if (args.private !== undefined) {\n pipeline.add(new PrivateFilter(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 // Extract arguments\n const rest = args._.map(arg => arg.toString());\n\n if (rest[0] === 'each') {\n rest.splice(0, 1);\n }\n\n // Create script tasks\n const tasks = new TaskSet(manager);\n\n for await (const wks of pipeline.filter(project.workspaces())) {\n tasks.add(await wks.run(args.script, rest, {\n buildDeps: args.depsMode,\n }));\n }\n\n if (tasks.tasks.length === 0) {\n spinner.failed('No workspace found !');\n return yargs.exit(1, new Error('No workspace found !'));\n }\n\n spinner.stop();\n\n // Render\n app.rerender(\n <Layout>\n <TasksSpinner manager={manager} />\n </Layout>\n );\n\n // Start and wait for result\n tasks.start();\n\n const result = await waitForEvent(tasks, 'finished');\n\n if (result.failed > 0) {\n return yargs.exit(1, new Error(`${result.failed} tasks failed !`));\n }\n } finally {\n spinner.stop();\n }\n }\n});\n"]}
|
package/dist/commands/each.js
CHANGED
|
@@ -107,7 +107,7 @@ const _default = (0, _utils.defineCommand)({
|
|
|
107
107
|
tasks.start();
|
|
108
108
|
const result = await (0, _eventTree.waitForEvent)(tasks, 'finished');
|
|
109
109
|
if (result.failed > 0) {
|
|
110
|
-
return _yargs.default.exit(1, new Error(
|
|
110
|
+
return _yargs.default.exit(1, new Error(`${result.failed} tasks failed !`));
|
|
111
111
|
}
|
|
112
112
|
} finally{
|
|
113
113
|
spinner.stop();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["commands/each.js"],"sourcesContent":["import { waitForEvent } from '@jujulego/event-tree';\nimport { TaskManager, TaskSet } from '@jujulego/tasks';\nimport ink from 'ink';\nimport yargs from 'yargs';\n\nimport { AffectedFilter, Pipeline, PrivateFilter, ScriptsFilter } from '../filters';\nimport { loadProject, setupInk } from '../middlewares';\nimport { Project,
|
|
1
|
+
{"version":3,"sources":["commands/each.js"],"sourcesContent":["import { waitForEvent } from '@jujulego/event-tree';\nimport { TaskManager, TaskSet } from '@jujulego/tasks';\nimport ink from 'ink';\nimport yargs from 'yargs';\n\nimport { AffectedFilter, Pipeline, PrivateFilter, ScriptsFilter } from '../filters';\nimport { loadProject, setupInk } from '../middlewares';\nimport { Project, WorkspaceDepsMode } from '../project';\nimport { container, CURRENT, INK_APP, SpinnerService } from '../services';\nimport { Layout, TasksSpinner } from '../ui';\nimport { applyMiddlewares, defineCommand } from '../utils';\n\n// Command\nexport default defineCommand({\n command: 'each <script>',\n describe: 'Run script on many workspaces',\n builder: (yargs) =>\n applyMiddlewares(yargs, [\n setupInk,\n loadProject,\n ])\n // Run options\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 // Filters\n .option('private', {\n type: 'boolean',\n group: 'Filters:',\n desc: 'Print only private workspaces',\n })\n\n // Affected filter\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 async handler(args) {\n const app = container.get<ink.Instance>(INK_APP);\n const project = container.getNamed(Project, CURRENT);\n const manager = container.get(TaskManager);\n const spinner = container.get(SpinnerService);\n\n try {\n spinner.spin('Loading workspaces ...');\n\n // Setup pipeline\n const pipeline = new Pipeline();\n pipeline.add(new ScriptsFilter([args.script]));\n\n if (args.private !== undefined) {\n pipeline.add(new PrivateFilter(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 // Extract arguments\n const rest = args._.map(arg => arg.toString());\n\n if (rest[0] === 'each') {\n rest.splice(0, 1);\n }\n\n // Create script tasks\n const tasks = new TaskSet(manager);\n\n for await (const wks of pipeline.filter(project.workspaces())) {\n tasks.add(await wks.run(args.script, rest, {\n buildDeps: args.depsMode,\n }));\n }\n\n if (tasks.tasks.length === 0) {\n spinner.failed('No workspace found !');\n return yargs.exit(1, new Error('No workspace found !'));\n }\n\n spinner.stop();\n\n // Render\n app.rerender(\n <Layout>\n <TasksSpinner manager={manager} />\n </Layout>\n );\n\n // Start and wait for result\n tasks.start();\n\n const result = await waitForEvent(tasks, 'finished');\n\n if (result.failed > 0) {\n return yargs.exit(1, new Error(`${result.failed} tasks failed !`));\n }\n } finally {\n spinner.stop();\n }\n }\n});\n"],"names":["defineCommand","command","describe","builder","yargs","applyMiddlewares","setupInk","loadProject","positional","type","demandOption","option","choice","default","desc","group","alias","coerce","rev","handler","args","app","container","get","INK_APP","project","getNamed","Project","CURRENT","manager","TaskManager","spinner","SpinnerService","spin","pipeline","Pipeline","add","ScriptsFilter","script","private","undefined","PrivateFilter","affected","AffectedFilter","affectedRevFallback","affectedRevSort","rest","_","map","arg","toString","splice","tasks","TaskSet","wks","filter","workspaces","run","buildDeps","depsMode","length","failed","exit","Error","stop","rerender","Layout","TasksSpinner","start","result","waitForEvent"],"mappings":"AAAA;;;;+BAYA,UAAU;AACV;;aAAA;;;2BAb6B;uBACQ;4DAEnB;yBAEqD;6BACjC;yBACK;0BACiB;oBACvB;uBACW;;;;;;MAGhD,WAAeA,IAAAA,oBAAa,EAAC;IAC3BC,SAAS;IACTC,UAAU;IACVC,SAAS,CAACC,QACRC,IAAAA,uBAAgB,EAACD,OAAO;YACtBE,qBAAQ;YACRC,wBAAW;SACZ,CACD,cAAc;SACbC,UAAU,CAAC,UAAU;YAAEC,MAAM;YAAUC,cAAc,IAAI;QAAC,GAC1DC,MAAM,CAAC,aAAa;YACnBC,QAAQ;gBAAC;gBAAO;gBAAQ;aAAO;YAC/BC,SAAS;YACTC,MAAM,iCACJ,gDACA,6BACA;QACJ,EAEA,UAAU;SACTH,MAAM,CAAC,WAAW;YACjBF,MAAM;YACNM,OAAO;YACPD,MAAM;QACR,EAEA,kBAAkB;SACjBH,MAAM,CAAC,YAAY;YAClBK,OAAO;YACPP,MAAM;YACNQ,QAAQ,CAACC,MAAgBA,QAAQ,KAAK,WAAWA,GAAG;YACpDH,OAAO;YACPD,MAAM,wHACJ;QACJ,GACCH,MAAM,CAAC,qBAAqB;YAC3BF,MAAM;YACNM,OAAO;YACPD,MAAM;QACR,GACCH,MAAM,CAAC,yBAAyB;YAC/BF,MAAM;YACNI,SAAS;YACTE,OAAO;YACPD,MAAM;QACR;IACF,MAAMK,SAAQC,IAAI,EAAE;QAClB,MAAMC,MAAMC,mBAAS,CAACC,GAAG,CAAeC,iBAAO;QAC/C,MAAMC,UAAUH,mBAAS,CAACI,QAAQ,CAACC,gBAAO,EAAEC,iBAAO;QACnD,MAAMC,UAAUP,mBAAS,CAACC,GAAG,CAACO,kBAAW;QACzC,MAAMC,UAAUT,mBAAS,CAACC,GAAG,CAACS,wBAAc;QAE5C,IAAI;YACFD,QAAQE,IAAI,CAAC;YAEb,iBAAiB;YACjB,MAAMC,WAAW,IAAIC,iBAAQ;YAC7BD,SAASE,GAAG,CAAC,IAAIC,sBAAa,CAAC;gBAACjB,KAAKkB,MAAM;aAAC;YAE5C,IAAIlB,KAAKmB,OAAO,KAAKC,WAAW;gBAC9BN,SAASE,GAAG,CAAC,IAAIK,sBAAa,CAACrB,KAAKmB,OAAO;YAC7C,CAAC;YAED,IAAInB,KAAKsB,QAAQ,KAAKF,WAAW;gBAC/BN,SAASE,GAAG,CAAC,IAAIO,uBAAc,CAC7BvB,KAAKsB,QAAQ,EACbtB,KAAKwB,mBAAmB,EACxBxB,KAAKyB,eAAe;YAExB,CAAC;YAED,oBAAoB;YACpB,MAAMC,OAAO1B,KAAK2B,CAAC,CAACC,GAAG,CAACC,CAAAA,MAAOA,IAAIC,QAAQ;YAE3C,IAAIJ,IAAI,CAAC,EAAE,KAAK,QAAQ;gBACtBA,KAAKK,MAAM,CAAC,GAAG;YACjB,CAAC;YAED,sBAAsB;YACtB,MAAMC,QAAQ,IAAIC,cAAO,CAACxB;YAE1B,WAAW,MAAMyB,OAAOpB,SAASqB,MAAM,CAAC9B,QAAQ+B,UAAU,IAAK;gBAC7DJ,MAAMhB,GAAG,CAAC,MAAMkB,IAAIG,GAAG,CAACrC,KAAKkB,MAAM,EAAEQ,MAAM;oBACzCY,WAAWtC,KAAKuC,QAAQ;gBAC1B;YACF;YAEA,IAAIP,MAAMA,KAAK,CAACQ,MAAM,KAAK,GAAG;gBAC5B7B,QAAQ8B,MAAM,CAAC;gBACf,OAAOzD,cAAK,CAAC0D,IAAI,CAAC,GAAG,IAAIC,MAAM;YACjC,CAAC;YAEDhC,QAAQiC,IAAI;YAEZ,SAAS;YACT3C,IAAI4C,QAAQ,eACV,qBAACC,UAAM;0BACL,cAAA,qBAACC,gBAAY;oBAACtC,SAASA;;;YAI3B,4BAA4B;YAC5BuB,MAAMgB,KAAK;YAEX,MAAMC,SAAS,MAAMC,IAAAA,uBAAY,EAAClB,OAAO;YAEzC,IAAIiB,OAAOR,MAAM,GAAG,GAAG;gBACrB,OAAOzD,cAAK,CAAC0D,IAAI,CAAC,GAAG,IAAIC,MAAM,CAAC,EAAEM,OAAOR,MAAM,CAAC,eAAe,CAAC;YAClE,CAAC;QACH,SAAU;YACR9B,QAAQiC,IAAI;QACd;IACF;AACF","file":"each.js"}
|
package/dist/git.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export interface GitContext extends TaskContext {
|
|
|
4
4
|
command: string;
|
|
5
5
|
}
|
|
6
6
|
export declare class Git {
|
|
7
|
-
static readonly manager: TaskManager
|
|
7
|
+
static readonly manager: TaskManager;
|
|
8
8
|
static readonly logger: Logger;
|
|
9
9
|
static command(cmd: string, args: string[], options?: SpawnTaskOptions): SpawnTask<GitContext>;
|
|
10
10
|
static branch(args: string[], options?: SpawnTaskOptions): SpawnTask<GitContext>;
|
package/dist/git.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAExF,OAAO,EAAc,MAAM,EAAE,MAAM,YAAY,CAAC;AAIhD,MAAM,WAAW,UAAW,SAAQ,WAAW;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,qBAAa,GAAG;IAGd,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC
|
|
1
|
+
{"version":3,"sources":["git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAExF,OAAO,EAAc,MAAM,EAAE,MAAM,YAAY,CAAC;AAIhD,MAAM,WAAW,UAAW,SAAQ,WAAW;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,qBAAa,GAAG;IAGd,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAGrC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAG/B,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,gBAAqB,GAAG,SAAS,CAAC,UAAU,CAAC;IAalG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC,UAAU,CAAC;IAIhF,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC,UAAU,CAAC;IAI9E,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC,UAAU,CAAC;IAK7E,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;WAevF,YAAY,CAAC,IAAI,GAAE,MAAM,EAAO,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;WAW7E,QAAQ,CAAC,IAAI,GAAE,MAAM,EAAO,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAUvF","file":"git.d.ts","sourcesContent":["import { SpawnTask, SpawnTaskOptions, TaskContext, TaskManager } from '@jujulego/tasks';\n\nimport { lazyInject, Logger } from './services';\nimport { streamLines } from './utils';\n\n// Types\nexport interface GitContext extends TaskContext {\n command: string;\n}\n\n// Git commands\nexport class Git {\n // Services\n @lazyInject(TaskManager)\n static readonly manager: TaskManager;\n\n @lazyInject(Logger)\n static readonly logger: Logger;\n\n // commons\n static command(cmd: string, args: string[], options: SpawnTaskOptions = {}): SpawnTask<GitContext> {\n const opts = { logger: this.logger, ...options };\n\n // Create task\n const task = new SpawnTask('git', [cmd, ...args], { command: cmd }, opts);\n task.subscribe('stream', ({ data }) => opts.logger.debug(data.toString('utf-8')));\n\n this.manager.add(task);\n\n return task;\n }\n\n // commands\n static branch(args: string[], options?: SpawnTaskOptions): SpawnTask<GitContext> {\n return this.command('branch', args, options);\n }\n\n static diff(args: string[], options?: SpawnTaskOptions): SpawnTask<GitContext> {\n return this.command('diff', args, options);\n }\n\n static tag(args: string[], options?: SpawnTaskOptions): SpawnTask<GitContext> {\n return this.command('tag', args, options);\n }\n\n // high level\n static isAffected(reference: string, args: string[] = [], opts?: SpawnTaskOptions): Promise<boolean> {\n return new Promise((resolve, reject) => {\n const task = this.diff(['--quiet', reference, ...args], opts);\n\n task.subscribe('status.done', () => resolve(false));\n task.subscribe('status.failed', () => {\n if (task.exitCode) {\n resolve(true);\n } else {\n reject(new Error(`Task ${task.name} failed`));\n }\n });\n });\n }\n\n static async listBranches(args: string[] = [], opts?: SpawnTaskOptions): Promise<string[]> {\n const task = this.branch(['-l', ...args], opts);\n const result: string[] = [];\n\n for await (const line of streamLines(task, 'stdout')) {\n result.push(line.replace(/^[ *] /, ''));\n }\n\n return result;\n }\n\n static async listTags(args: string[] = [], opts?: SpawnTaskOptions): Promise<string[]> {\n const task = this.tag(['-l', ...args], opts);\n const result: string[] = [];\n\n for await (const line of streamLines(task, 'stdout')) {\n result.push(line);\n }\n\n return result;\n }\n}\n"]}
|
package/dist/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["git.js"],"sourcesContent":["import { SpawnTask, SpawnTaskOptions, TaskContext, TaskManager } from '@jujulego/tasks';\n\nimport { lazyInject, Logger } from './services';\nimport { streamLines } from './utils';\n\n// Types\nexport interface GitContext extends TaskContext {\n command: string;\n}\n\n// Git commands\nexport class Git {\n // Services\n @lazyInject(TaskManager)\n static readonly manager: TaskManager
|
|
1
|
+
{"version":3,"sources":["git.js"],"sourcesContent":["import { SpawnTask, SpawnTaskOptions, TaskContext, TaskManager } from '@jujulego/tasks';\n\nimport { lazyInject, Logger } from './services';\nimport { streamLines } from './utils';\n\n// Types\nexport interface GitContext extends TaskContext {\n command: string;\n}\n\n// Git commands\nexport class Git {\n // Services\n @lazyInject(TaskManager)\n static readonly manager: TaskManager;\n\n @lazyInject(Logger)\n static readonly logger: Logger;\n\n // commons\n static command(cmd: string, args: string[], options: SpawnTaskOptions = {}): SpawnTask<GitContext> {\n const opts = { logger: this.logger, ...options };\n\n // Create task\n const task = new SpawnTask('git', [cmd, ...args], { command: cmd }, opts);\n task.subscribe('stream', ({ data }) => opts.logger.debug(data.toString('utf-8')));\n\n this.manager.add(task);\n\n return task;\n }\n\n // commands\n static branch(args: string[], options?: SpawnTaskOptions): SpawnTask<GitContext> {\n return this.command('branch', args, options);\n }\n\n static diff(args: string[], options?: SpawnTaskOptions): SpawnTask<GitContext> {\n return this.command('diff', args, options);\n }\n\n static tag(args: string[], options?: SpawnTaskOptions): SpawnTask<GitContext> {\n return this.command('tag', args, options);\n }\n\n // high level\n static isAffected(reference: string, args: string[] = [], opts?: SpawnTaskOptions): Promise<boolean> {\n return new Promise((resolve, reject) => {\n const task = this.diff(['--quiet', reference, ...args], opts);\n\n task.subscribe('status.done', () => resolve(false));\n task.subscribe('status.failed', () => {\n if (task.exitCode) {\n resolve(true);\n } else {\n reject(new Error(`Task ${task.name} failed`));\n }\n });\n });\n }\n\n static async listBranches(args: string[] = [], opts?: SpawnTaskOptions): Promise<string[]> {\n const task = this.branch(['-l', ...args], opts);\n const result: string[] = [];\n\n for await (const line of streamLines(task, 'stdout')) {\n result.push(line.replace(/^[ *] /, ''));\n }\n\n return result;\n }\n\n static async listTags(args: string[] = [], opts?: SpawnTaskOptions): Promise<string[]> {\n const task = this.tag(['-l', ...args], opts);\n const result: string[] = [];\n\n for await (const line of streamLines(task, 'stdout')) {\n result.push(line);\n }\n\n return result;\n }\n}\n"],"names":["Git","command","cmd","args","options","opts","logger","task","SpawnTask","subscribe","data","debug","toString","manager","add","branch","diff","tag","isAffected","reference","Promise","resolve","reject","exitCode","Error","name","listBranches","result","line","streamLines","push","replace","listTags","lazyInject","TaskManager","Logger"],"mappings":"AAAA;;;;+BAWaA;;aAAAA;;uBAXyD;0BAEnC;uBACP;;;;;;;AAQrB,MAAMA;IAQX,UAAU;IACV,OAAOC,QAAQC,GAAW,EAAEC,IAAc,EAAEC,UAA4B,CAAC,CAAC,EAAyB;QACjG,MAAMC,OAAO;YAAEC,QAAQ,IAAI,CAACA,MAAM;YAAE,GAAGF,OAAO;QAAC;QAE/C,cAAc;QACd,MAAMG,OAAO,IAAIC,gBAAS,CAAC,OAAO;YAACN;eAAQC;SAAK,EAAE;YAAEF,SAASC;QAAI,GAAGG;QACpEE,KAAKE,SAAS,CAAC,UAAU,CAAC,EAAEC,KAAI,EAAE,GAAKL,KAAKC,MAAM,CAACK,KAAK,CAACD,KAAKE,QAAQ,CAAC;QAEvE,IAAI,CAACC,OAAO,CAACC,GAAG,CAACP;QAEjB,OAAOA;IACT;IAEA,WAAW;IACX,OAAOQ,OAAOZ,IAAc,EAAEC,OAA0B,EAAyB;QAC/E,OAAO,IAAI,CAACH,OAAO,CAAC,UAAUE,MAAMC;IACtC;IAEA,OAAOY,KAAKb,IAAc,EAAEC,OAA0B,EAAyB;QAC7E,OAAO,IAAI,CAACH,OAAO,CAAC,QAAQE,MAAMC;IACpC;IAEA,OAAOa,IAAId,IAAc,EAAEC,OAA0B,EAAyB;QAC5E,OAAO,IAAI,CAACH,OAAO,CAAC,OAAOE,MAAMC;IACnC;IAEA,aAAa;IACb,OAAOc,WAAWC,SAAiB,EAAEhB,OAAiB,EAAE,EAAEE,IAAuB,EAAoB;QACnG,OAAO,IAAIe,QAAQ,CAACC,SAASC,SAAW;YACtC,MAAMf,OAAO,IAAI,CAACS,IAAI,CAAC;gBAAC;gBAAWG;mBAAchB;aAAK,EAAEE;YAExDE,KAAKE,SAAS,CAAC,eAAe,IAAMY,QAAQ,KAAK;YACjDd,KAAKE,SAAS,CAAC,iBAAiB,IAAM;gBACpC,IAAIF,KAAKgB,QAAQ,EAAE;oBACjBF,QAAQ,IAAI;gBACd,OAAO;oBACLC,OAAO,IAAIE,MAAM,CAAC,KAAK,EAAEjB,KAAKkB,IAAI,CAAC,OAAO,CAAC;gBAC7C,CAAC;YACH;QACF;IACF;IAEA,aAAaC,aAAavB,OAAiB,EAAE,EAAEE,IAAuB,EAAqB;QACzF,MAAME,OAAO,IAAI,CAACQ,MAAM,CAAC;YAAC;eAASZ;SAAK,EAAEE;QAC1C,MAAMsB,SAAmB,EAAE;QAE3B,WAAW,MAAMC,QAAQC,IAAAA,kBAAW,EAACtB,MAAM,UAAW;YACpDoB,OAAOG,IAAI,CAACF,KAAKG,OAAO,CAAC,UAAU;QACrC;QAEA,OAAOJ;IACT;IAEA,aAAaK,SAAS7B,OAAiB,EAAE,EAAEE,IAAuB,EAAqB;QACrF,MAAME,OAAO,IAAI,CAACU,GAAG,CAAC;YAAC;eAASd;SAAK,EAAEE;QACvC,MAAMsB,SAAmB,EAAE;QAE3B,WAAW,MAAMC,QAAQC,IAAAA,kBAAW,EAACtB,MAAM,UAAW;YACpDoB,OAAOG,IAAI,CAACF;QACd;QAEA,OAAOD;IACT;AACF;;IArEGM,IAAAA,oBAAU,EAACC,kBAAW;GAFZlC;;IAKViC,IAAAA,oBAAU,EAACE,gBAAM;GALPnC","file":"git.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["middlewares/global-config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["middlewares/global-config.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,YAAY;;;;EAmBvB,CAAC","file":"global-config.d.ts","sourcesContent":["import os from 'node:os';\n\nimport { container, GLOBAL_CONFIG } from '../services';\nimport { defineMiddleware } from '../utils';\n\n// Middleware\nexport const globalConfig = defineMiddleware({\n builder: (yargs) => yargs\n .option('verbose', {\n alias: 'v',\n type: 'count',\n description: 'Set verbosity level',\n })\n .option('jobs', {\n alias: 'j',\n type: 'number',\n default: os.cpus().length - 1,\n description: 'Set maximum parallel job number',\n }),\n handler(args) {\n container.bind(GLOBAL_CONFIG).toConstantValue({\n verbose: args.verbose,\n jobs: args.jobs,\n });\n }\n});\n"]}
|
|
@@ -6,8 +6,14 @@ Object.defineProperty(exports, "globalConfig", {
|
|
|
6
6
|
enumerable: true,
|
|
7
7
|
get: ()=>globalConfig
|
|
8
8
|
});
|
|
9
|
+
const _nodeOs = /*#__PURE__*/ _interopRequireDefault(require("node:os"));
|
|
9
10
|
const _services = require("../services");
|
|
10
11
|
const _utils = require("../utils");
|
|
12
|
+
function _interopRequireDefault(obj) {
|
|
13
|
+
return obj && obj.__esModule ? obj : {
|
|
14
|
+
default: obj
|
|
15
|
+
};
|
|
16
|
+
}
|
|
11
17
|
const globalConfig = (0, _utils.defineMiddleware)({
|
|
12
18
|
builder: (yargs)=>yargs.option('verbose', {
|
|
13
19
|
alias: 'v',
|
|
@@ -16,6 +22,7 @@ const globalConfig = (0, _utils.defineMiddleware)({
|
|
|
16
22
|
}).option('jobs', {
|
|
17
23
|
alias: 'j',
|
|
18
24
|
type: 'number',
|
|
25
|
+
default: _nodeOs.default.cpus().length - 1,
|
|
19
26
|
description: 'Set maximum parallel job number'
|
|
20
27
|
}),
|
|
21
28
|
handler (args) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["middlewares/global-config.js"],"sourcesContent":["import { container, GLOBAL_CONFIG } from '../services';\nimport { defineMiddleware } from '../utils';\n\n// Middleware\nexport const globalConfig = defineMiddleware({\n builder: (yargs) => yargs\n .option('verbose', {\n alias: 'v',\n type: 'count',\n description: 'Set verbosity level',\n })\n .option('jobs', {\n alias: 'j',\n type: 'number',\n description: 'Set maximum parallel job number',\n }),\n handler(args) {\n container.bind(GLOBAL_CONFIG).toConstantValue({\n verbose: args.verbose,\n jobs: args.jobs,\n });\n }\n});\n"],"names":["globalConfig","defineMiddleware","builder","yargs","option","alias","type","description","handler","args","container","bind","GLOBAL_CONFIG","toConstantValue","verbose","jobs"],"mappings":"AAAA;;;;+
|
|
1
|
+
{"version":3,"sources":["middlewares/global-config.js"],"sourcesContent":["import os from 'node:os';\n\nimport { container, GLOBAL_CONFIG } from '../services';\nimport { defineMiddleware } from '../utils';\n\n// Middleware\nexport const globalConfig = defineMiddleware({\n builder: (yargs) => yargs\n .option('verbose', {\n alias: 'v',\n type: 'count',\n description: 'Set verbosity level',\n })\n .option('jobs', {\n alias: 'j',\n type: 'number',\n default: os.cpus().length - 1,\n description: 'Set maximum parallel job number',\n }),\n handler(args) {\n container.bind(GLOBAL_CONFIG).toConstantValue({\n verbose: args.verbose,\n jobs: args.jobs,\n });\n }\n});\n"],"names":["globalConfig","defineMiddleware","builder","yargs","option","alias","type","description","default","os","cpus","length","handler","args","container","bind","GLOBAL_CONFIG","toConstantValue","verbose","jobs"],"mappings":"AAAA;;;;+BAMaA;;aAAAA;;6DANE;0BAE0B;uBACR;;;;;;AAG1B,MAAMA,eAAeC,IAAAA,uBAAgB,EAAC;IAC3CC,SAAS,CAACC,QAAUA,MACjBC,MAAM,CAAC,WAAW;YACjBC,OAAO;YACPC,MAAM;YACNC,aAAa;QACf,GACCH,MAAM,CAAC,QAAQ;YACdC,OAAO;YACPC,MAAM;YACNE,SAASC,eAAE,CAACC,IAAI,GAAGC,MAAM,GAAG;YAC5BJ,aAAa;QACf;IACFK,SAAQC,IAAI,EAAE;QACZC,mBAAS,CAACC,IAAI,CAACC,uBAAa,EAAEC,eAAe,CAAC;YAC5CC,SAASL,KAAKK,OAAO;YACrBC,MAAMN,KAAKM,IAAI;QACjB;IACF;AACF","file":"global-config.js"}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
|
+
import { EventSource } from '@jujulego/event-tree';
|
|
1
2
|
export declare type SpinnerStatus = 'spin' | 'stop' | 'success' | 'failed';
|
|
2
3
|
export interface SpinnerState {
|
|
3
4
|
status: SpinnerStatus;
|
|
4
5
|
label: string;
|
|
5
6
|
}
|
|
6
|
-
export declare type
|
|
7
|
-
export declare class SpinnerService {
|
|
7
|
+
export declare type SpinnerEventMap = Record<`update.${SpinnerStatus}`, SpinnerState>;
|
|
8
|
+
export declare class SpinnerService extends EventSource<SpinnerEventMap> {
|
|
8
9
|
private _status;
|
|
9
10
|
private _label;
|
|
10
|
-
private readonly _listeners;
|
|
11
|
-
private _propagate;
|
|
12
|
-
subscribe(listener: SpinnerStateListener): () => void;
|
|
13
11
|
spin(label: string): void;
|
|
14
12
|
success(label: string): void;
|
|
15
13
|
failed(label: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["services/spinner.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["services/spinner.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMnD,oBAAY,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AACnE,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oBAAY,eAAe,GAAG,MAAM,CAAC,UAAU,aAAa,EAAE,EAAE,YAAY,CAAC,CAAC;AAG9E,qBACa,cAAe,SAAQ,WAAW,CAAC,eAAe,CAAC;IAE9D,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,MAAM,CAAM;IAGpB,IAAI,CAAC,KAAK,EAAE,MAAM;IAOlB,OAAO,CAAC,KAAK,EAAE,MAAM;IAOrB,MAAM,CAAC,KAAK,EAAE,MAAM;IAOpB,IAAI;IASJ,IAAI,KAAK,IAAI,YAAY,CAKxB;CACF","file":"spinner.service.d.ts","sourcesContent":["import { EventSource } from '@jujulego/event-tree';\nimport { injectable } from 'inversify';\n\nimport { container } from './inversify.config';\n\n// Interface\nexport type SpinnerStatus = 'spin' | 'stop' | 'success' | 'failed';\nexport interface SpinnerState {\n status: SpinnerStatus;\n label: string;\n}\n\nexport type SpinnerEventMap = Record<`update.${SpinnerStatus}`, SpinnerState>;\n\n// Service\n@injectable()\nexport class SpinnerService extends EventSource<SpinnerEventMap> {\n // Attributes\n private _status: SpinnerStatus = 'stop';\n private _label = '';\n\n // Methods\n spin(label: string) {\n this._status = 'spin';\n this._label = label;\n\n this.emit('update.spin', this.state);\n }\n\n success(label: string) {\n this._status = 'success';\n this._label = label;\n\n this.emit('update.success', this.state);\n }\n\n failed(label: string) {\n this._status = 'failed';\n this._label = label;\n\n this.emit('update.failed', this.state);\n }\n\n stop() {\n if (this._status === 'spin') {\n this._status = 'stop';\n\n this.emit('update.stop', this.state);\n }\n }\n\n // Properties\n get state(): SpinnerState {\n return {\n status: this._status,\n label: this._label,\n };\n }\n}\n\ncontainer.bind(SpinnerService)\n .toSelf()\n .inSingletonScope();\n"]}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "SpinnerService", {
|
|
|
6
6
|
enumerable: true,
|
|
7
7
|
get: ()=>SpinnerService
|
|
8
8
|
});
|
|
9
|
+
const _eventTree = require("@jujulego/event-tree");
|
|
9
10
|
const _inversify = require("inversify");
|
|
10
11
|
const _inversifyConfig = require("./inversify.config");
|
|
11
12
|
var __decorate = (void 0) && (void 0).__decorate || function(decorators, target, key, desc) {
|
|
@@ -14,42 +15,30 @@ var __decorate = (void 0) && (void 0).__decorate || function(decorators, target,
|
|
|
14
15
|
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
15
16
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
16
17
|
};
|
|
17
|
-
let SpinnerService = class SpinnerService {
|
|
18
|
+
let SpinnerService = class SpinnerService extends _eventTree.EventSource {
|
|
18
19
|
// Attributes
|
|
19
20
|
_status = 'stop';
|
|
20
21
|
_label = '';
|
|
21
|
-
_listeners = new Set();
|
|
22
22
|
// Methods
|
|
23
|
-
_propagate() {
|
|
24
|
-
for (const listener of this._listeners){
|
|
25
|
-
listener(this.state);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
subscribe(listener) {
|
|
29
|
-
this._listeners.add(listener);
|
|
30
|
-
return ()=>{
|
|
31
|
-
this._listeners.delete(listener);
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
23
|
spin(label) {
|
|
35
24
|
this._status = 'spin';
|
|
36
25
|
this._label = label;
|
|
37
|
-
this.
|
|
26
|
+
this.emit('update.spin', this.state);
|
|
38
27
|
}
|
|
39
28
|
success(label) {
|
|
40
29
|
this._status = 'success';
|
|
41
30
|
this._label = label;
|
|
42
|
-
this.
|
|
31
|
+
this.emit('update.success', this.state);
|
|
43
32
|
}
|
|
44
33
|
failed(label) {
|
|
45
34
|
this._status = 'failed';
|
|
46
35
|
this._label = label;
|
|
47
|
-
this.
|
|
36
|
+
this.emit('update.failed', this.state);
|
|
48
37
|
}
|
|
49
38
|
stop() {
|
|
50
39
|
if (this._status === 'spin') {
|
|
51
40
|
this._status = 'stop';
|
|
52
|
-
this.
|
|
41
|
+
this.emit('update.stop', this.state);
|
|
53
42
|
}
|
|
54
43
|
}
|
|
55
44
|
// Properties
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["services/spinner.service.js"],"sourcesContent":["import { injectable } from 'inversify';\n\nimport { container } from './inversify.config';\n\n// Interface\nexport type SpinnerStatus = 'spin' | 'stop' | 'success' | 'failed';\nexport interface SpinnerState {\n status: SpinnerStatus;\n label: string;\n}\n\nexport type
|
|
1
|
+
{"version":3,"sources":["services/spinner.service.js"],"sourcesContent":["import { EventSource } from '@jujulego/event-tree';\nimport { injectable } from 'inversify';\n\nimport { container } from './inversify.config';\n\n// Interface\nexport type SpinnerStatus = 'spin' | 'stop' | 'success' | 'failed';\nexport interface SpinnerState {\n status: SpinnerStatus;\n label: string;\n}\n\nexport type SpinnerEventMap = Record<`update.${SpinnerStatus}`, SpinnerState>;\n\n// Service\n@injectable()\nexport class SpinnerService extends EventSource<SpinnerEventMap> {\n // Attributes\n private _status: SpinnerStatus = 'stop';\n private _label = '';\n\n // Methods\n spin(label: string) {\n this._status = 'spin';\n this._label = label;\n\n this.emit('update.spin', this.state);\n }\n\n success(label: string) {\n this._status = 'success';\n this._label = label;\n\n this.emit('update.success', this.state);\n }\n\n failed(label: string) {\n this._status = 'failed';\n this._label = label;\n\n this.emit('update.failed', this.state);\n }\n\n stop() {\n if (this._status === 'spin') {\n this._status = 'stop';\n\n this.emit('update.stop', this.state);\n }\n }\n\n // Properties\n get state(): SpinnerState {\n return {\n status: this._status,\n label: this._label,\n };\n }\n}\n\ncontainer.bind(SpinnerService)\n .toSelf()\n .inSingletonScope();\n"],"names":["SpinnerService","EventSource","_status","_label","spin","label","emit","state","success","failed","stop","status","injectable","container","bind","toSelf","inSingletonScope"],"mappings":"AAAA;;;;+BAgBaA;;aAAAA;;2BAhBe;2BACD;iCAED;;;;;;;IAabA,iBAAN,6BAA6BC,sBAAW;IAC7C,aAAa;IACLC,UAAyB,OAAO;IAChCC,SAAS,GAAG;IAEpB,UAAU;IACVC,KAAKC,KAAa,EAAE;QAClB,IAAI,CAACH,OAAO,GAAG;QACf,IAAI,CAACC,MAAM,GAAGE;QAEd,IAAI,CAACC,IAAI,CAAC,eAAe,IAAI,CAACC,KAAK;IACrC;IAEAC,QAAQH,KAAa,EAAE;QACrB,IAAI,CAACH,OAAO,GAAG;QACf,IAAI,CAACC,MAAM,GAAGE;QAEd,IAAI,CAACC,IAAI,CAAC,kBAAkB,IAAI,CAACC,KAAK;IACxC;IAEAE,OAAOJ,KAAa,EAAE;QACpB,IAAI,CAACH,OAAO,GAAG;QACf,IAAI,CAACC,MAAM,GAAGE;QAEd,IAAI,CAACC,IAAI,CAAC,iBAAiB,IAAI,CAACC,KAAK;IACvC;IAEAG,OAAO;QACL,IAAI,IAAI,CAACR,OAAO,KAAK,QAAQ;YAC3B,IAAI,CAACA,OAAO,GAAG;YAEf,IAAI,CAACI,IAAI,CAAC,eAAe,IAAI,CAACC,KAAK;QACrC,CAAC;IACH;IAEA,aAAa;IACb,IAAIA,QAAsB;QACxB,OAAO;YACLI,QAAQ,IAAI,CAACT,OAAO;YACpBG,OAAO,IAAI,CAACF,MAAM;QACpB;IACF;AACF;AA1CaH;IADZY,IAAAA,qBAAU;GACEZ;AA4Cba,0BAAS,CAACC,IAAI,CAACd,gBACZe,MAAM,GACNC,gBAAgB","file":"spinner.service.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ui/global-spinner.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAA6B,MAAM,OAAO,CAAC;AAKtD,eAAO,MAAM,aAAa,EAAE,EAuC3B,CAAC","file":"global-spinner.d.ts","sourcesContent":["import { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport symbols from 'log-symbols';\nimport { FC, useLayoutEffect, useState } from 'react';\n\nimport { container, SpinnerService, SpinnerState } from '../services';\n\n// Components\nexport const GlobalSpinner: FC = () => {\n // State\n const [state, setState] = useState<SpinnerState>({ status: 'stop', label: '' });\n\n // Effect\n useLayoutEffect(() => {\n const spinner = container.get(SpinnerService);\n setState(spinner.state);\n\n return spinner.subscribe(setState);\n }, []);\n\n // Render\n switch (state.status) {\n case 'spin':\n return (\n <Text>\n <Spinner />{' ' + state.label}\n </Text>\n );\n\n case 'success':\n return (\n <Text color=\"green\">\n {symbols.success} {state.label}\n </Text>\n );\n\n case 'failed':\n return (\n <Text color=\"red\">\n {symbols.error} {state.label}\n </Text>\n );\n\n case 'stop':\n default:\n return null;\n }\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["ui/global-spinner.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAA6B,MAAM,OAAO,CAAC;AAKtD,eAAO,MAAM,aAAa,EAAE,EAuC3B,CAAC","file":"global-spinner.d.ts","sourcesContent":["import { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport symbols from 'log-symbols';\nimport { FC, useLayoutEffect, useState } from 'react';\n\nimport { container, SpinnerService, SpinnerState } from '../services';\n\n// Components\nexport const GlobalSpinner: FC = () => {\n // State\n const [state, setState] = useState<SpinnerState>({ status: 'stop', label: '' });\n\n // Effect\n useLayoutEffect(() => {\n const spinner = container.get(SpinnerService);\n setState(spinner.state);\n\n return spinner.subscribe('update', setState);\n }, []);\n\n // Render\n switch (state.status) {\n case 'spin':\n return (\n <Text>\n <Spinner />{' ' + state.label}\n </Text>\n );\n\n case 'success':\n return (\n <Text color=\"green\">\n {symbols.success} {state.label}\n </Text>\n );\n\n case 'failed':\n return (\n <Text color=\"red\">\n {symbols.error} {state.label}\n </Text>\n );\n\n case 'stop':\n default:\n return null;\n }\n};\n"]}
|
|
@@ -27,7 +27,7 @@ const GlobalSpinner = ()=>{
|
|
|
27
27
|
(0, _react.useLayoutEffect)(()=>{
|
|
28
28
|
const spinner = _services.container.get(_services.SpinnerService);
|
|
29
29
|
setState(spinner.state);
|
|
30
|
-
return spinner.subscribe(setState);
|
|
30
|
+
return spinner.subscribe('update', setState);
|
|
31
31
|
}, []);
|
|
32
32
|
// Render
|
|
33
33
|
switch(state.status){
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ui/global-spinner.js"],"sourcesContent":["import { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport symbols from 'log-symbols';\nimport { FC, useLayoutEffect, useState } from 'react';\n\nimport { container, SpinnerService, SpinnerState } from '../services';\n\n// Components\nexport const GlobalSpinner: FC = () => {\n // State\n const [state, setState] = useState<SpinnerState>({ status: 'stop', label: '' });\n\n // Effect\n useLayoutEffect(() => {\n const spinner = container.get(SpinnerService);\n setState(spinner.state);\n\n return spinner.subscribe(setState);\n }, []);\n\n // Render\n switch (state.status) {\n case 'spin':\n return (\n <Text>\n <Spinner />{' ' + state.label}\n </Text>\n );\n\n case 'success':\n return (\n <Text color=\"green\">\n {symbols.success} {state.label}\n </Text>\n );\n\n case 'failed':\n return (\n <Text color=\"red\">\n {symbols.error} {state.label}\n </Text>\n );\n\n case 'stop':\n default:\n return null;\n }\n};\n"],"names":["GlobalSpinner","state","setState","useState","status","label","useLayoutEffect","spinner","container","get","SpinnerService","subscribe","Text","Spinner","color","symbols","success","error"],"mappings":"AAAA;;;;+BAQaA;;aAAAA;;;qBARQ;iEACD;iEACA;uBAC0B;0BAEU;;;;;;AAGjD,MAAMA,gBAAoB,IAAM;IACrC,QAAQ;IACR,MAAM,CAACC,OAAOC,SAAS,GAAGC,IAAAA,eAAQ,EAAe;QAAEC,QAAQ;QAAQC,OAAO;IAAG;IAE7E,SAAS;IACTC,IAAAA,sBAAe,EAAC,IAAM;QACpB,MAAMC,UAAUC,mBAAS,CAACC,GAAG,CAACC,wBAAc;QAC5CR,SAASK,QAAQN,KAAK;QAEtB,OAAOM,QAAQI,SAAS,
|
|
1
|
+
{"version":3,"sources":["ui/global-spinner.js"],"sourcesContent":["import { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport symbols from 'log-symbols';\nimport { FC, useLayoutEffect, useState } from 'react';\n\nimport { container, SpinnerService, SpinnerState } from '../services';\n\n// Components\nexport const GlobalSpinner: FC = () => {\n // State\n const [state, setState] = useState<SpinnerState>({ status: 'stop', label: '' });\n\n // Effect\n useLayoutEffect(() => {\n const spinner = container.get(SpinnerService);\n setState(spinner.state);\n\n return spinner.subscribe('update', setState);\n }, []);\n\n // Render\n switch (state.status) {\n case 'spin':\n return (\n <Text>\n <Spinner />{' ' + state.label}\n </Text>\n );\n\n case 'success':\n return (\n <Text color=\"green\">\n {symbols.success} {state.label}\n </Text>\n );\n\n case 'failed':\n return (\n <Text color=\"red\">\n {symbols.error} {state.label}\n </Text>\n );\n\n case 'stop':\n default:\n return null;\n }\n};\n"],"names":["GlobalSpinner","state","setState","useState","status","label","useLayoutEffect","spinner","container","get","SpinnerService","subscribe","Text","Spinner","color","symbols","success","error"],"mappings":"AAAA;;;;+BAQaA;;aAAAA;;;qBARQ;iEACD;iEACA;uBAC0B;0BAEU;;;;;;AAGjD,MAAMA,gBAAoB,IAAM;IACrC,QAAQ;IACR,MAAM,CAACC,OAAOC,SAAS,GAAGC,IAAAA,eAAQ,EAAe;QAAEC,QAAQ;QAAQC,OAAO;IAAG;IAE7E,SAAS;IACTC,IAAAA,sBAAe,EAAC,IAAM;QACpB,MAAMC,UAAUC,mBAAS,CAACC,GAAG,CAACC,wBAAc;QAC5CR,SAASK,QAAQN,KAAK;QAEtB,OAAOM,QAAQI,SAAS,CAAC,UAAUT;IACrC,GAAG,EAAE;IAEL,SAAS;IACT,OAAQD,MAAMG,MAAM;QAClB,KAAK;YACH,qBACE,sBAACQ,SAAI;;kCACH,qBAACC,mBAAO;oBAAI,MAAMZ,MAAMI,KAAK;;;QAInC,KAAK;YACH,qBACE,sBAACO,SAAI;gBAACE,OAAM;;oBACTC,mBAAO,CAACC,OAAO;oBAAC;oBAAEf,MAAMI,KAAK;;;QAIpC,KAAK;YACH,qBACE,sBAACO,SAAI;gBAACE,OAAM;;oBACTC,mBAAO,CAACE,KAAK;oBAAC;oBAAEhB,MAAMI,KAAK;;;QAIlC,KAAK;QACL;YACE,OAAO,IAAI;IACf;AACF","file":"global-spinner.js"}
|
package/dist/ui/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export * from './global-spinner';
|
|
|
2
2
|
export * from './layout';
|
|
3
3
|
export * from './list';
|
|
4
4
|
export * from './static-logs';
|
|
5
|
-
export * from './
|
|
5
|
+
export * from './task-name';
|
|
6
6
|
export * from './task-spinner';
|
|
7
|
+
export * from './tasks-spinner';
|
|
7
8
|
export * from './workspace-tree';
|
package/dist/ui/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,
|
|
1
|
+
{"version":3,"sources":["ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC","file":"index.d.ts","sourcesContent":["export * from './global-spinner';\nexport * from './layout';\nexport * from './list';\nexport * from './static-logs';\nexport * from './task-name';\nexport * from './task-spinner';\nexport * from './tasks-spinner';\nexport * from './workspace-tree';\n"]}
|
package/dist/ui/index.js
CHANGED
|
@@ -6,8 +6,9 @@ _exportStar(require("./global-spinner"), exports);
|
|
|
6
6
|
_exportStar(require("./layout"), exports);
|
|
7
7
|
_exportStar(require("./list"), exports);
|
|
8
8
|
_exportStar(require("./static-logs"), exports);
|
|
9
|
-
_exportStar(require("./
|
|
9
|
+
_exportStar(require("./task-name"), exports);
|
|
10
10
|
_exportStar(require("./task-spinner"), exports);
|
|
11
|
+
_exportStar(require("./tasks-spinner"), exports);
|
|
11
12
|
_exportStar(require("./workspace-tree"), exports);
|
|
12
13
|
function _exportStar(from, to) {
|
|
13
14
|
Object.keys(from).forEach(function(k) {
|
package/dist/ui/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ui/index.js"],"sourcesContent":["export * from './global-spinner';\nexport * from './layout';\nexport * from './list';\nexport * from './static-logs';\nexport * from './
|
|
1
|
+
{"version":3,"sources":["ui/index.js"],"sourcesContent":["export * from './global-spinner';\nexport * from './layout';\nexport * from './list';\nexport * from './static-logs';\nexport * from './task-name';\nexport * from './task-spinner';\nexport * from './tasks-spinner';\nexport * from './workspace-tree';\n"],"names":[],"mappings":"AAAA;;;;oBAAc;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA","file":"index.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ui/task-spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAKvC,OAAO,EAAE,EAAE,EAA6B,MAAM,OAAO,CAAC;AAKtD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,IAAI,CAAC;CACZ;AAGD,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAmD5C,CAAC","file":"task-spinner.d.ts","sourcesContent":["import { Task } from '@jujulego/tasks';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport symbols from 'log-symbols';\nimport ms from 'ms';\nimport { FC, useLayoutEffect, useState } from 'react';\n\nimport { TaskName } from './task-name';\n\n// Types\nexport interface TaskSpinnerProps {\n task: Task;\n}\n\n// Components\nexport const TaskSpinner: FC<TaskSpinnerProps> = ({ task }) => {\n // State\n const [status, setStatus] = useState(task.status);\n const [time, setTime] = useState(0);\n\n // Effects\n useLayoutEffect(() => {\n return task.subscribe('status', (event) => {\n setStatus(event.status);\n });\n }, [task]);\n\n useLayoutEffect(() => {\n return task.subscribe('completed', ({ duration }) => {\n setTime(duration);\n });\n }, [task]);\n\n // Render\n switch (status) {\n case 'blocked':\n case 'ready':\n return (\n <Text color=\"grey\">\n <Spinner type=\"line2\" />{' '}<TaskName task={task} />\n </Text>\n );\n\n case 'running':\n return (\n <Text>\n <Spinner />{' '}<TaskName task={task} />\n </Text>\n );\n\n case 'done':\n return (\n <Text>\n <Text color=\"green\">{ symbols.success }{' '}<TaskName task={task} /></Text>\n <Text color=\"magenta\">{' '}took { ms(time) }</Text>\n </Text>\n );\n\n case 'failed':\n return (\n <Text>\n <Text color=\"red\">{ symbols.error }{' '}<TaskName task={task} /></Text>\n <Text color=\"magenta\">{' '}took { ms(time) }</Text>\n </Text>\n );\n }\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["ui/task-spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAKvC,OAAO,EAAE,EAAE,EAA6B,MAAM,OAAO,CAAC;AAKtD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,IAAI,CAAC;CACZ;AAGD,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAmD5C,CAAC","file":"task-spinner.d.ts","sourcesContent":["import { Task } from '@jujulego/tasks';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport symbols from 'log-symbols';\nimport ms from 'ms';\nimport { FC, useLayoutEffect, useState } from 'react';\n\nimport { TaskName } from './task-name';\n\n// Types\nexport interface TaskSpinnerProps {\n task: Task;\n}\n\n// Components\nexport const TaskSpinner: FC<TaskSpinnerProps> = ({ task }) => {\n // State\n const [status, setStatus] = useState(task.status);\n const [time, setTime] = useState(0);\n\n // Effects\n useLayoutEffect(() => {\n return task.subscribe('status', (event) => {\n setStatus(event.status);\n });\n }, [task]);\n\n useLayoutEffect(() => {\n return task.subscribe('completed', ({ duration }) => {\n setTime(duration);\n });\n }, [task]);\n\n // Render\n switch (status) {\n case 'blocked':\n case 'ready':\n return (\n <Text color=\"grey\">\n <Spinner type=\"line2\" />{' '}<TaskName task={task} />\n </Text>\n );\n\n case 'running':\n return (\n <Text>\n <Spinner />{' '}<TaskName task={task} />\n </Text>\n );\n\n case 'done':\n return (\n <Text>\n <Text color=\"green\">{ symbols.success }{' '}<TaskName task={task} /></Text>\n <Text color=\"magenta\">{' '}(took { ms(time) })</Text>\n </Text>\n );\n\n case 'failed':\n return (\n <Text>\n <Text color=\"red\">{ symbols.error }{' '}<TaskName task={task} /></Text>\n <Text color=\"magenta\">{' '}(took { ms(time) })</Text>\n </Text>\n );\n }\n};\n"]}
|
package/dist/ui/task-spinner.js
CHANGED
|
@@ -80,8 +80,9 @@ const TaskSpinner = ({ task })=>{
|
|
|
80
80
|
color: "magenta",
|
|
81
81
|
children: [
|
|
82
82
|
' ',
|
|
83
|
-
"took ",
|
|
84
|
-
(0, _ms.default)(time)
|
|
83
|
+
"(took ",
|
|
84
|
+
(0, _ms.default)(time),
|
|
85
|
+
")"
|
|
85
86
|
]
|
|
86
87
|
})
|
|
87
88
|
]
|
|
@@ -103,8 +104,9 @@ const TaskSpinner = ({ task })=>{
|
|
|
103
104
|
color: "magenta",
|
|
104
105
|
children: [
|
|
105
106
|
' ',
|
|
106
|
-
"took ",
|
|
107
|
-
(0, _ms.default)(time)
|
|
107
|
+
"(took ",
|
|
108
|
+
(0, _ms.default)(time),
|
|
109
|
+
")"
|
|
108
110
|
]
|
|
109
111
|
})
|
|
110
112
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ui/task-spinner.js"],"sourcesContent":["import { Task } from '@jujulego/tasks';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport symbols from 'log-symbols';\nimport ms from 'ms';\nimport { FC, useLayoutEffect, useState } from 'react';\n\nimport { TaskName } from './task-name';\n\n// Types\nexport interface TaskSpinnerProps {\n task: Task;\n}\n\n// Components\nexport const TaskSpinner: FC<TaskSpinnerProps> = ({ task }) => {\n // State\n const [status, setStatus] = useState(task.status);\n const [time, setTime] = useState(0);\n\n // Effects\n useLayoutEffect(() => {\n return task.subscribe('status', (event) => {\n setStatus(event.status);\n });\n }, [task]);\n\n useLayoutEffect(() => {\n return task.subscribe('completed', ({ duration }) => {\n setTime(duration);\n });\n }, [task]);\n\n // Render\n switch (status) {\n case 'blocked':\n case 'ready':\n return (\n <Text color=\"grey\">\n <Spinner type=\"line2\" />{' '}<TaskName task={task} />\n </Text>\n );\n\n case 'running':\n return (\n <Text>\n <Spinner />{' '}<TaskName task={task} />\n </Text>\n );\n\n case 'done':\n return (\n <Text>\n <Text color=\"green\">{ symbols.success }{' '}<TaskName task={task} /></Text>\n <Text color=\"magenta\">{' '}took { ms(time) }</Text>\n </Text>\n );\n\n case 'failed':\n return (\n <Text>\n <Text color=\"red\">{ symbols.error }{' '}<TaskName task={task} /></Text>\n <Text color=\"magenta\">{' '}took { ms(time) }</Text>\n </Text>\n );\n }\n};\n"],"names":["TaskSpinner","task","status","setStatus","useState","time","setTime","useLayoutEffect","subscribe","event","duration","Text","color","Spinner","type","TaskName","symbols","success","ms","error"],"mappings":"AAAA;;;;+BAeaA;;aAAAA;;;qBAdQ;iEACD;iEACA;yDACL;uBAC+B;0BAErB;;;;;;AAQlB,MAAMA,cAAoC,CAAC,EAAEC,KAAI,EAAE,GAAK;IAC7D,QAAQ;IACR,MAAM,CAACC,QAAQC,UAAU,GAAGC,IAAAA,eAAQ,EAACH,KAAKC,MAAM;IAChD,MAAM,CAACG,MAAMC,QAAQ,GAAGF,IAAAA,eAAQ,EAAC;IAEjC,UAAU;IACVG,IAAAA,sBAAe,EAAC,IAAM;QACpB,OAAON,KAAKO,SAAS,CAAC,UAAU,CAACC,QAAU;YACzCN,UAAUM,MAAMP,MAAM;QACxB;IACF,GAAG;QAACD;KAAK;IAETM,IAAAA,sBAAe,EAAC,IAAM;QACpB,OAAON,KAAKO,SAAS,CAAC,aAAa,CAAC,EAAEE,SAAQ,EAAE,GAAK;YACnDJ,QAAQI;QACV;IACF,GAAG;QAACT;KAAK;IAET,SAAS;IACT,OAAQC;QACN,KAAK;QACL,KAAK;YACH,qBACE,sBAACS,SAAI;gBAACC,OAAM;;kCACV,qBAACC,mBAAO;wBAACC,MAAK;;oBAAW;kCAAI,qBAACC,kBAAQ;wBAACd,MAAMA;;;;QAInD,KAAK;YACH,qBACE,sBAACU,SAAI;;kCACH,qBAACE,mBAAO;oBAAI;kCAAI,qBAACE,kBAAQ;wBAACd,MAAMA;;;;QAItC,KAAK;YACH,qBACE,sBAACU,SAAI;;kCACH,sBAACA,SAAI;wBAACC,OAAM;;4BAAUI,mBAAO,CAACC,OAAO;4BAAG;0CAAI,qBAACF,kBAAQ;gCAACd,MAAMA;;;;kCAC5D,sBAACU,SAAI;wBAACC,OAAM;;4BAAW;4BAAI;
|
|
1
|
+
{"version":3,"sources":["ui/task-spinner.js"],"sourcesContent":["import { Task } from '@jujulego/tasks';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport symbols from 'log-symbols';\nimport ms from 'ms';\nimport { FC, useLayoutEffect, useState } from 'react';\n\nimport { TaskName } from './task-name';\n\n// Types\nexport interface TaskSpinnerProps {\n task: Task;\n}\n\n// Components\nexport const TaskSpinner: FC<TaskSpinnerProps> = ({ task }) => {\n // State\n const [status, setStatus] = useState(task.status);\n const [time, setTime] = useState(0);\n\n // Effects\n useLayoutEffect(() => {\n return task.subscribe('status', (event) => {\n setStatus(event.status);\n });\n }, [task]);\n\n useLayoutEffect(() => {\n return task.subscribe('completed', ({ duration }) => {\n setTime(duration);\n });\n }, [task]);\n\n // Render\n switch (status) {\n case 'blocked':\n case 'ready':\n return (\n <Text color=\"grey\">\n <Spinner type=\"line2\" />{' '}<TaskName task={task} />\n </Text>\n );\n\n case 'running':\n return (\n <Text>\n <Spinner />{' '}<TaskName task={task} />\n </Text>\n );\n\n case 'done':\n return (\n <Text>\n <Text color=\"green\">{ symbols.success }{' '}<TaskName task={task} /></Text>\n <Text color=\"magenta\">{' '}(took { ms(time) })</Text>\n </Text>\n );\n\n case 'failed':\n return (\n <Text>\n <Text color=\"red\">{ symbols.error }{' '}<TaskName task={task} /></Text>\n <Text color=\"magenta\">{' '}(took { ms(time) })</Text>\n </Text>\n );\n }\n};\n"],"names":["TaskSpinner","task","status","setStatus","useState","time","setTime","useLayoutEffect","subscribe","event","duration","Text","color","Spinner","type","TaskName","symbols","success","ms","error"],"mappings":"AAAA;;;;+BAeaA;;aAAAA;;;qBAdQ;iEACD;iEACA;yDACL;uBAC+B;0BAErB;;;;;;AAQlB,MAAMA,cAAoC,CAAC,EAAEC,KAAI,EAAE,GAAK;IAC7D,QAAQ;IACR,MAAM,CAACC,QAAQC,UAAU,GAAGC,IAAAA,eAAQ,EAACH,KAAKC,MAAM;IAChD,MAAM,CAACG,MAAMC,QAAQ,GAAGF,IAAAA,eAAQ,EAAC;IAEjC,UAAU;IACVG,IAAAA,sBAAe,EAAC,IAAM;QACpB,OAAON,KAAKO,SAAS,CAAC,UAAU,CAACC,QAAU;YACzCN,UAAUM,MAAMP,MAAM;QACxB;IACF,GAAG;QAACD;KAAK;IAETM,IAAAA,sBAAe,EAAC,IAAM;QACpB,OAAON,KAAKO,SAAS,CAAC,aAAa,CAAC,EAAEE,SAAQ,EAAE,GAAK;YACnDJ,QAAQI;QACV;IACF,GAAG;QAACT;KAAK;IAET,SAAS;IACT,OAAQC;QACN,KAAK;QACL,KAAK;YACH,qBACE,sBAACS,SAAI;gBAACC,OAAM;;kCACV,qBAACC,mBAAO;wBAACC,MAAK;;oBAAW;kCAAI,qBAACC,kBAAQ;wBAACd,MAAMA;;;;QAInD,KAAK;YACH,qBACE,sBAACU,SAAI;;kCACH,qBAACE,mBAAO;oBAAI;kCAAI,qBAACE,kBAAQ;wBAACd,MAAMA;;;;QAItC,KAAK;YACH,qBACE,sBAACU,SAAI;;kCACH,sBAACA,SAAI;wBAACC,OAAM;;4BAAUI,mBAAO,CAACC,OAAO;4BAAG;0CAAI,qBAACF,kBAAQ;gCAACd,MAAMA;;;;kCAC5D,sBAACU,SAAI;wBAACC,OAAM;;4BAAW;4BAAI;4BAAQM,IAAAA,WAAE,EAACb;4BAAO;;;;;QAInD,KAAK;YACH,qBACE,sBAACM,SAAI;;kCACH,sBAACA,SAAI;wBAACC,OAAM;;4BAAQI,mBAAO,CAACG,KAAK;4BAAG;0CAAI,qBAACJ,kBAAQ;gCAACd,MAAMA;;;;kCACxD,sBAACU,SAAI;wBAACC,OAAM;;4BAAW;4BAAI;4BAAQM,IAAAA,WAAE,EAACb;4BAAO;;;;;IAGrD;AACF","file":"task-spinner.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ui/workspace-tree.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,YAAY,EAAuB,MAAM,OAAO,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,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,
|
|
1
|
+
{"version":3,"sources":["ui/workspace-tree.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,YAAY,EAAuB,MAAM,OAAO,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,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,CAyChD,CAAC","file":"workspace-tree.d.ts","sourcesContent":["import { Newline, Text, TextProps } from 'ink';\nimport { FC, ReactElement, useEffect, useState } from 'react';\n\nimport { Workspace } from '../project';\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 | null][]>([]);\n\n // Effects\n useEffect(() => void (async () => {\n const deps: [Workspace, boolean | null][] = [];\n\n for await (const dep of wks.dependencies()) {\n deps.push([dep, null]);\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 { (deps.length > 0) && <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 ?? dev}\n level={<>{ level }<Text {...style(dev)}>{ idx === deps.length - 1 ? ' ' : '│' }{' '}</Text></>}\n />\n { (idx < deps.length - 1) && <Newline /> }\n </Text>\n )) }\n </Text>\n );\n};\n"]}
|
|
@@ -50,7 +50,7 @@ const WorkspaceTree = (props)=>{
|
|
|
50
50
|
wks.version
|
|
51
51
|
]
|
|
52
52
|
}),
|
|
53
|
-
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_ink.Newline, {}),
|
|
53
|
+
deps.length > 0 && /*#__PURE__*/ (0, _jsxRuntime.jsx)(_ink.Newline, {}),
|
|
54
54
|
deps.map(([dep, isDev], idx)=>/*#__PURE__*/ (0, _jsxRuntime.jsxs)(_ink.Text, {
|
|
55
55
|
children: [
|
|
56
56
|
level,
|
|
@@ -77,7 +77,8 @@ const WorkspaceTree = (props)=>{
|
|
|
77
77
|
})
|
|
78
78
|
]
|
|
79
79
|
})
|
|
80
|
-
})
|
|
80
|
+
}),
|
|
81
|
+
idx < deps.length - 1 && /*#__PURE__*/ (0, _jsxRuntime.jsx)(_ink.Newline, {})
|
|
81
82
|
]
|
|
82
83
|
}, dep.name))
|
|
83
84
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ui/workspace-tree.js"],"sourcesContent":["import { Newline, Text, TextProps } from 'ink';\nimport { FC, ReactElement, useEffect, useState } from 'react';\n\nimport { Workspace } from '../project';\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 | null][]>([]);\n\n // Effects\n useEffect(() => void (async () => {\n const deps: [Workspace, boolean | null][] = [];\n\n for await (const dep of wks.dependencies()) {\n deps.push([dep, null]);\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 &&
|
|
1
|
+
{"version":3,"sources":["ui/workspace-tree.js"],"sourcesContent":["import { Newline, Text, TextProps } from 'ink';\nimport { FC, ReactElement, useEffect, useState } from 'react';\n\nimport { Workspace } from '../project';\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 | null][]>([]);\n\n // Effects\n useEffect(() => void (async () => {\n const deps: [Workspace, boolean | null][] = [];\n\n for await (const dep of wks.dependencies()) {\n deps.push([dep, null]);\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 { (deps.length > 0) && <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 ?? dev}\n level={<>{ level }<Text {...style(dev)}>{ idx === deps.length - 1 ? ' ' : '│' }{' '}</Text></>}\n />\n { (idx < deps.length - 1) && <Newline /> }\n </Text>\n )) }\n </Text>\n );\n};\n"],"names":["WorkspaceTree","style","dev","color","props","workspace","wks","level","deps","setDeps","useState","useEffect","dep","dependencies","push","devDependencies","Text","name","version","length","Newline","map","isDev","idx"],"mappings":"AAAA;;;;+BAgBaA;;aAAAA;;;qBAhB4B;uBACa;AAWtD,QAAQ;AACR,MAAMC,QAAQ,CAACC,MAA6B,CAAA;QAAEC,OAAOD,MAAM,SAAS,EAAE;IAAC,CAAA;AAGhE,MAAMF,gBAAwC,CAACI,QAAU;IAC9D,MAAM,EAAEC,WAAWC,IAAG,EAAEJ,KAAM,KAAK,CAAA,EAAEK,OAAQ,GAAE,EAAE,GAAGH;IAEpD,QAAQ;IACR,MAAM,CAACI,MAAMC,QAAQ,GAAGC,IAAAA,eAAQ,EAAgC,EAAE;IAElE,UAAU;IACVC,IAAAA,gBAAS,EAAC,IAAM,KAAK,AAAC,CAAA,UAAY;YAChC,MAAMH,OAAsC,EAAE;YAE9C,WAAW,MAAMI,OAAON,IAAIO,YAAY,GAAI;gBAC1CL,KAAKM,IAAI,CAAC;oBAACF;oBAAK,IAAI;iBAAC;YACvB;YAEA,WAAW,MAAMA,QAAON,IAAIS,eAAe,GAAI;gBAC7CP,KAAKM,IAAI,CAAC;oBAACF;oBAAK,IAAI;iBAAC;YACvB;YAEAH,QAAQD;QACV,CAAA,KAAM;QAACF;KAAI;IAEX,SAAS;IACT,qBACE,sBAACU,SAAI;;0BACH,qBAACA,SAAI;gBAAE,GAAGf,MAAMC,IAAI;0BAAII,IAAIW,IAAI;;YAC9BX,IAAIY,OAAO,kBAAI,sBAACF,SAAI;gBAACb,OAAM;;oBAAO;oBAAGG,IAAIY,OAAO;;;YAC/CV,KAAKW,MAAM,GAAG,mBAAM,qBAACC,YAAO;YAE7BZ,KAAKa,GAAG,CAAC,CAAC,CAACT,KAAKU,MAAM,EAAEC,oBACxB,sBAACP,SAAI;;wBACDT;sCAAO,sBAACS,SAAI;4BAAE,GAAGf,MAAMC,IAAI;;gCAAIqB,QAAQf,KAAKW,MAAM,GAAG,IAAI,MAAM,GAAG;gCAAC;gCAAE;;;sCACvE,qBAACnB;4BACCK,WAAWO;4BACXV,KAAKoB,SAASpB;4BACdK,qBAAO;;oCAAIA;kDAAO,sBAACS,SAAI;wCAAE,GAAGf,MAAMC,IAAI;;4CAAIqB,QAAQf,KAAKW,MAAM,GAAG,IAAI,MAAM,GAAG;4CAAG;;;;;;wBAE/EI,MAAMf,KAAKW,MAAM,GAAG,mBAAM,qBAACC,YAAO;;mBAP5BR,IAAIK,IAAI;;;AAY3B","file":"workspace-tree.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC","file":"index.d.ts","sourcesContent":["export * from './streams';\nexport * from './string';\nexport * from './yargs';\n"]}
|
|
@@ -2,13 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
_exportStar(require("./
|
|
6
|
-
_exportStar(require("./
|
|
7
|
-
_exportStar(require("./
|
|
8
|
-
_exportStar(require("./project"), exports);
|
|
9
|
-
_exportStar(require("./services"), exports);
|
|
10
|
-
_exportStar(require("./ui"), exports);
|
|
11
|
-
_exportStar(require("./utils"), exports);
|
|
5
|
+
_exportStar(require("./streams"), exports);
|
|
6
|
+
_exportStar(require("./string"), exports);
|
|
7
|
+
_exportStar(require("./yargs"), exports);
|
|
12
8
|
function _exportStar(from, to) {
|
|
13
9
|
Object.keys(from).forEach(function(k) {
|
|
14
10
|
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) Object.defineProperty(to, k, {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["utils/index.js"],"sourcesContent":["export * from './streams';\nexport * from './string';\nexport * from './yargs';\n"],"names":[],"mappings":"AAAA;;;;oBAAc;oBACA;oBACA","file":"index.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["utils/streams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAI7D,wBAAuB,OAAO,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAIvF;AAED,wBAAuB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC,CA8BnG","file":"streams.d.ts","sourcesContent":["import { SpawnTask, SpawnTaskStream } from '@jujulego/tasks';\nimport { streamEvents } from '@jujulego/event-tree';\n\n// Utils\nexport async function* combine<T>(...generators: AsyncGenerator<T>[]): AsyncGenerator<T> {\n for (const gen of generators) {\n yield* gen;\n }\n}\n\nexport async function *streamLines(task: SpawnTask, stream: SpawnTaskStream): AsyncGenerator<string> {\n // Abort\n const ctrl = new AbortController();\n const reason = new Error('aborted');\n\n task.subscribe('completed', () => ctrl.abort(reason));\n\n // Stream\n let current = '';\n\n try {\n for await (const chunk of streamEvents(task, `stream.${stream}`, { signal: ctrl.signal })) {\n const data = current + chunk.data.toString('utf-8');\n const lines = data.split(/\\r?\\n/);\n\n current = lines.pop() ?? '';\n\n for (const line of lines) {\n yield line;\n }\n }\n } catch (err) {\n if (err !== reason) {\n throw err;\n }\n\n if (current) {\n yield current;\n }\n }\n}\n"]}
|
|
@@ -10,11 +10,7 @@ function _export(target, all) {
|
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
12
|
combine: ()=>combine,
|
|
13
|
-
streamLines: ()=>streamLines
|
|
14
|
-
applyMiddlewares: ()=>applyMiddlewares,
|
|
15
|
-
defineCommand: ()=>defineCommand,
|
|
16
|
-
defineMiddleware: ()=>defineMiddleware,
|
|
17
|
-
capitalize: ()=>capitalize
|
|
13
|
+
streamLines: ()=>streamLines
|
|
18
14
|
});
|
|
19
15
|
const _eventTree = require("@jujulego/event-tree");
|
|
20
16
|
async function* combine(...generators) {
|
|
@@ -25,7 +21,8 @@ async function* combine(...generators) {
|
|
|
25
21
|
async function* streamLines(task, stream) {
|
|
26
22
|
// Abort
|
|
27
23
|
const ctrl = new AbortController();
|
|
28
|
-
|
|
24
|
+
const reason = new Error('aborted');
|
|
25
|
+
task.subscribe('completed', ()=>ctrl.abort(reason));
|
|
29
26
|
// Stream
|
|
30
27
|
let current = '';
|
|
31
28
|
try {
|
|
@@ -33,14 +30,14 @@ async function* streamLines(task, stream) {
|
|
|
33
30
|
signal: ctrl.signal
|
|
34
31
|
})){
|
|
35
32
|
const data = current + chunk.data.toString('utf-8');
|
|
36
|
-
const lines = data.split(/\r?\n/
|
|
33
|
+
const lines = data.split(/\r?\n/);
|
|
37
34
|
current = lines.pop() ?? '';
|
|
38
35
|
for (const line of lines){
|
|
39
36
|
yield line;
|
|
40
37
|
}
|
|
41
38
|
}
|
|
42
39
|
} catch (err) {
|
|
43
|
-
if (
|
|
40
|
+
if (err !== reason) {
|
|
44
41
|
throw err;
|
|
45
42
|
}
|
|
46
43
|
if (current) {
|
|
@@ -48,24 +45,5 @@ async function* streamLines(task, stream) {
|
|
|
48
45
|
}
|
|
49
46
|
}
|
|
50
47
|
}
|
|
51
|
-
function applyMiddlewares(yargs, middlewares) {
|
|
52
|
-
let tmp = yargs;
|
|
53
|
-
for (const middleware of middlewares){
|
|
54
|
-
if (middleware.builder) {
|
|
55
|
-
tmp = middleware.builder(tmp);
|
|
56
|
-
}
|
|
57
|
-
tmp.middleware(middleware.handler);
|
|
58
|
-
}
|
|
59
|
-
return tmp;
|
|
60
|
-
}
|
|
61
|
-
function defineCommand(command) {
|
|
62
|
-
return command;
|
|
63
|
-
}
|
|
64
|
-
function defineMiddleware(middleware) {
|
|
65
|
-
return middleware;
|
|
66
|
-
}
|
|
67
|
-
function capitalize(txt) {
|
|
68
|
-
return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();
|
|
69
|
-
}
|
|
70
48
|
|
|
71
|
-
//# sourceMappingURL=
|
|
49
|
+
//# sourceMappingURL=streams.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["utils/streams.js"],"sourcesContent":["import { SpawnTask, SpawnTaskStream } from '@jujulego/tasks';\nimport { streamEvents } from '@jujulego/event-tree';\n\n// Utils\nexport async function* combine<T>(...generators: AsyncGenerator<T>[]): AsyncGenerator<T> {\n for (const gen of generators) {\n yield* gen;\n }\n}\n\nexport async function *streamLines(task: SpawnTask, stream: SpawnTaskStream): AsyncGenerator<string> {\n // Abort\n const ctrl = new AbortController();\n const reason = new Error('aborted');\n\n task.subscribe('completed', () => ctrl.abort(reason));\n\n // Stream\n let current = '';\n\n try {\n for await (const chunk of streamEvents(task, `stream.${stream}`, { signal: ctrl.signal })) {\n const data = current + chunk.data.toString('utf-8');\n const lines = data.split(/\\r?\\n/);\n\n current = lines.pop() ?? '';\n\n for (const line of lines) {\n yield line;\n }\n }\n } catch (err) {\n if (err !== reason) {\n throw err;\n }\n\n if (current) {\n yield current;\n }\n }\n}\n"],"names":["combine","streamLines","generators","gen","task","stream","ctrl","AbortController","reason","Error","subscribe","abort","current","chunk","streamEvents","signal","data","toString","lines","split","pop","line","err"],"mappings":"AAAA;;;;;;;;;;;IAIuBA,OAAO,MAAPA;IAMAC,WAAW,MAAXA;;2BATM;AAGtB,gBAAgBD,QAAW,GAAGE,UAA+B,EAAqB;IACvF,KAAK,MAAMC,OAAOD,WAAY;QAC5B,OAAOC;IACT;AACF;AAEO,gBAAgBF,YAAYG,IAAe,EAAEC,MAAuB,EAA0B;IACnG,QAAQ;IACR,MAAMC,OAAO,IAAIC;IACjB,MAAMC,SAAS,IAAIC,MAAM;IAEzBL,KAAKM,SAAS,CAAC,aAAa,IAAMJ,KAAKK,KAAK,CAACH;IAE7C,SAAS;IACT,IAAII,UAAU;IAEd,IAAI;QACF,WAAW,MAAMC,SAASC,IAAAA,uBAAY,EAACV,MAAM,CAAC,OAAO,EAAEC,OAAO,CAAC,EAAE;YAAEU,QAAQT,KAAKS,MAAM;QAAC,GAAI;YACzF,MAAMC,OAAOJ,UAAUC,MAAMG,IAAI,CAACC,QAAQ,CAAC;YAC3C,MAAMC,QAAQF,KAAKG,KAAK,CAAC;YAEzBP,UAAUM,MAAME,GAAG,MAAM;YAEzB,KAAK,MAAMC,QAAQH,MAAO;gBACxB,MAAMG;YACR;QACF;IACF,EAAE,OAAOC,KAAK;QACZ,IAAIA,QAAQd,QAAQ;YAClB,MAAMc,IAAI;QACZ,CAAC;QAED,IAAIV,SAAS;YACX,MAAMA;QACR,CAAC;IACH;AACF","file":"streams.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function capitalize(txt: string): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["utils/string.ts"],"names":[],"mappings":"AACA,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C","file":"string.d.ts","sourcesContent":["// Utils\nexport function capitalize(txt: string): string {\n return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Utils
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "capitalize", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: ()=>capitalize
|
|
9
|
+
});
|
|
10
|
+
function capitalize(txt) {
|
|
11
|
+
return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=string.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["utils/string.js"],"sourcesContent":["// Utils\nexport function capitalize(txt: string): string {\n return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();\n}\n"],"names":["capitalize","txt","charAt","toUpperCase","substring","toLowerCase"],"mappings":"AAAA,QAAQ;AACR;;;;+BAAgBA;;aAAAA;;AAAT,SAASA,WAAWC,GAAW,EAAU;IAC9C,OAAOA,IAAIC,MAAM,CAAC,GAAGC,WAAW,KAAKF,IAAIG,SAAS,CAAC,GAAGC,WAAW;AACnE","file":"string.js"}
|
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
import { SpawnTask, SpawnTaskStream } from '@jujulego/tasks';
|
|
2
1
|
import { Arguments, Argv, CommandModule } from 'yargs';
|
|
3
|
-
import { Awaitable } from '
|
|
4
|
-
export declare function combine<T>(...generators: AsyncGenerator<T>[]): AsyncGenerator<T>;
|
|
5
|
-
export declare function streamLines(task: SpawnTask, stream: SpawnTaskStream): AsyncGenerator<string>;
|
|
2
|
+
import { Awaitable } from '../types';
|
|
6
3
|
export interface Middleware<T = unknown, U = unknown> {
|
|
7
4
|
builder?: (yargs: Argv<T>) => Argv<U>;
|
|
8
5
|
handler(args: Arguments<U>): Awaitable<void>;
|
|
9
6
|
}
|
|
10
|
-
export declare function applyMiddlewares<T>(yargs: Argv<T>, middlewares: Middleware[]): Argv<T>;
|
|
11
7
|
export declare function defineCommand<T, U>(command: CommandModule<T, U>): CommandModule<T, U>;
|
|
12
8
|
export declare function defineMiddleware<T, U>(middleware: Middleware<T, U>): Middleware<T, U>;
|
|
13
|
-
export declare function
|
|
9
|
+
export declare function applyMiddlewares<T>(yargs: Argv<T>, middlewares: Middleware[]): Argv<T>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["utils/yargs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IAClD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;CAC9C;AAGD,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAErF;AAGD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAErF;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAYtF","file":"yargs.d.ts","sourcesContent":["import { Arguments, Argv, CommandModule } from 'yargs';\n\nimport { Awaitable } from '../types';\n\n// Types\nexport interface Middleware<T = unknown, U = unknown> {\n builder?: (yargs: Argv<T>) => Argv<U>;\n handler(args: Arguments<U>): Awaitable<void>;\n}\n\n// Command utils\nexport function defineCommand<T, U>(command: CommandModule<T, U>): CommandModule<T, U> {\n return command;\n}\n\n// Middleware utils\nexport function defineMiddleware<T, U>(middleware: Middleware<T, U>): Middleware<T, U> {\n return middleware;\n}\n\nexport function applyMiddlewares<T>(yargs: Argv<T>, middlewares: Middleware[]): Argv<T> {\n let tmp: Argv<unknown> = yargs;\n\n for (const middleware of middlewares) {\n if (middleware.builder) {\n tmp = middleware.builder(tmp);\n }\n\n tmp.middleware(middleware.handler);\n }\n\n return tmp as Argv<T>;\n}\n"]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
defineCommand: ()=>defineCommand,
|
|
13
|
+
defineMiddleware: ()=>defineMiddleware,
|
|
14
|
+
applyMiddlewares: ()=>applyMiddlewares
|
|
15
|
+
});
|
|
16
|
+
function defineCommand(command) {
|
|
17
|
+
return command;
|
|
18
|
+
}
|
|
19
|
+
function defineMiddleware(middleware) {
|
|
20
|
+
return middleware;
|
|
21
|
+
}
|
|
22
|
+
function applyMiddlewares(yargs, middlewares) {
|
|
23
|
+
let tmp = yargs;
|
|
24
|
+
for (const middleware of middlewares){
|
|
25
|
+
if (middleware.builder) {
|
|
26
|
+
tmp = middleware.builder(tmp);
|
|
27
|
+
}
|
|
28
|
+
tmp.middleware(middleware.handler);
|
|
29
|
+
}
|
|
30
|
+
return tmp;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=yargs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["utils/yargs.js"],"sourcesContent":["import { Arguments, Argv, CommandModule } from 'yargs';\n\nimport { Awaitable } from '../types';\n\n// Types\nexport interface Middleware<T = unknown, U = unknown> {\n builder?: (yargs: Argv<T>) => Argv<U>;\n handler(args: Arguments<U>): Awaitable<void>;\n}\n\n// Command utils\nexport function defineCommand<T, U>(command: CommandModule<T, U>): CommandModule<T, U> {\n return command;\n}\n\n// Middleware utils\nexport function defineMiddleware<T, U>(middleware: Middleware<T, U>): Middleware<T, U> {\n return middleware;\n}\n\nexport function applyMiddlewares<T>(yargs: Argv<T>, middlewares: Middleware[]): Argv<T> {\n let tmp: Argv<unknown> = yargs;\n\n for (const middleware of middlewares) {\n if (middleware.builder) {\n tmp = middleware.builder(tmp);\n }\n\n tmp.middleware(middleware.handler);\n }\n\n return tmp as Argv<T>;\n}\n"],"names":["defineCommand","defineMiddleware","applyMiddlewares","command","middleware","yargs","middlewares","tmp","builder","handler"],"mappings":"AAAA;;;;;;;;;;;IAWgBA,aAAa,MAAbA;IAKAC,gBAAgB,MAAhBA;IAIAC,gBAAgB,MAAhBA;;AATT,SAASF,cAAoBG,OAA4B,EAAuB;IACrF,OAAOA;AACT;AAGO,SAASF,iBAAuBG,UAA4B,EAAoB;IACrF,OAAOA;AACT;AAEO,SAASF,iBAAoBG,KAAc,EAAEC,WAAyB,EAAW;IACtF,IAAIC,MAAqBF;IAEzB,KAAK,MAAMD,cAAcE,YAAa;QACpC,IAAIF,WAAWI,OAAO,EAAE;YACtBD,MAAMH,WAAWI,OAAO,CAACD;QAC3B,CAAC;QAEDA,IAAIH,UAAU,CAACA,WAAWK,OAAO;IACnC;IAEA,OAAOF;AACT","file":"yargs.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jujulego/jill",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -11,12 +11,7 @@
|
|
|
11
11
|
"dist"
|
|
12
12
|
],
|
|
13
13
|
"bin": "./bin/jill.js",
|
|
14
|
-
"main": "./dist/
|
|
15
|
-
"types": "./dist/index.d.ts",
|
|
16
|
-
"exports": {
|
|
17
|
-
"require": "./dist/index.js",
|
|
18
|
-
"types": "./dist/index.d.ts"
|
|
19
|
-
},
|
|
14
|
+
"main": "./dist/main.js",
|
|
20
15
|
"scripts": {
|
|
21
16
|
"lint": "eslint .",
|
|
22
17
|
"clean": "gulp clean",
|
|
@@ -28,8 +23,8 @@
|
|
|
28
23
|
"node": "^16"
|
|
29
24
|
},
|
|
30
25
|
"dependencies": {
|
|
31
|
-
"@jujulego/event-tree": "^1.1.0
|
|
32
|
-
"@jujulego/tasks": "^1.0.0
|
|
26
|
+
"@jujulego/event-tree": "^1.1.0",
|
|
27
|
+
"@jujulego/tasks": "^1.0.0",
|
|
33
28
|
"async-lock": "^1.3.1",
|
|
34
29
|
"chalk": "^4.1.2",
|
|
35
30
|
"ink": "^3.2.0",
|
|
@@ -38,7 +33,7 @@
|
|
|
38
33
|
"inversify-inject-decorators": "^3.1.0",
|
|
39
34
|
"log-symbols": "^4.1.0",
|
|
40
35
|
"ms": "^2.1.3",
|
|
41
|
-
"normalize-package-data": "^
|
|
36
|
+
"normalize-package-data": "^5.0.0",
|
|
42
37
|
"react": "^17.0.2",
|
|
43
38
|
"reflect-metadata": "^0.1.13",
|
|
44
39
|
"semver": "^7.3.5",
|
|
@@ -50,23 +45,23 @@
|
|
|
50
45
|
},
|
|
51
46
|
"devDependencies": {
|
|
52
47
|
"@jujulego/flow": "1.1.0",
|
|
53
|
-
"@swc/core": "1.3.
|
|
48
|
+
"@swc/core": "1.3.14",
|
|
54
49
|
"@swc/jest": "0.2.23",
|
|
55
|
-
"@types/async-lock": "1.
|
|
50
|
+
"@types/async-lock": "1.3.0",
|
|
56
51
|
"@types/gulp": "4.0.9",
|
|
57
52
|
"@types/gulp-sourcemaps": "0.0.35",
|
|
58
|
-
"@types/jest": "
|
|
53
|
+
"@types/jest": "29.2.2",
|
|
59
54
|
"@types/ms": "0.7.31",
|
|
60
|
-
"@types/node": "16.
|
|
55
|
+
"@types/node": "16.18.3",
|
|
61
56
|
"@types/normalize-package-data": "2.4.1",
|
|
62
|
-
"@types/react": "17.0.
|
|
63
|
-
"@types/semver": "7.3.
|
|
57
|
+
"@types/react": "17.0.52",
|
|
58
|
+
"@types/semver": "7.3.13",
|
|
64
59
|
"@types/yargs": "17.0.13",
|
|
65
|
-
"@typescript-eslint/eslint-plugin": "5.
|
|
66
|
-
"@typescript-eslint/parser": "5.
|
|
60
|
+
"@typescript-eslint/eslint-plugin": "5.42.0",
|
|
61
|
+
"@typescript-eslint/parser": "5.42.0",
|
|
67
62
|
"del": "6.1.1",
|
|
68
|
-
"eslint": "8.
|
|
69
|
-
"eslint-plugin-jest": "27.
|
|
63
|
+
"eslint": "8.26.0",
|
|
64
|
+
"eslint-plugin-jest": "27.1.4",
|
|
70
65
|
"eslint-plugin-react": "7.31.10",
|
|
71
66
|
"eslint-plugin-react-hooks": "4.6.0",
|
|
72
67
|
"eslint-plugin-workspaces": "0.7.0",
|
|
@@ -76,7 +71,7 @@
|
|
|
76
71
|
"gulp-swc": "1.2.3",
|
|
77
72
|
"gulp-typescript": "6.0.0-alpha.1",
|
|
78
73
|
"ink-testing-library": "2.1.0",
|
|
79
|
-
"jest": "
|
|
74
|
+
"jest": "29.2.2",
|
|
80
75
|
"ts-node": "10.9.1",
|
|
81
76
|
"typescript": "4.8.4",
|
|
82
77
|
"winston-transport": "4.5.0"
|
package/dist/index.d.ts
DELETED
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,MAAM,CAAC;AACrB,cAAc,SAAS,CAAC","file":"index.d.ts","sourcesContent":["export * from './filters';\nexport * from './git';\nexport * from './middlewares';\nexport * from './project';\nexport * from './services';\nexport * from './ui';\nexport * from './utils';\n"]}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["index.js"],"sourcesContent":["export * from './filters';\nexport * from './git';\nexport * from './middlewares';\nexport * from './project';\nexport * from './services';\nexport * from './ui';\nexport * from './utils';\n"],"names":[],"mappings":"AAAA;;;;oBAAc;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA","file":"index.js"}
|
package/dist/utils.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC,wBAAuB,OAAO,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAIvF;AAED,wBAAuB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC,CA6BnG;AAGD,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IAClD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;CAC9C;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAYtF;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAErF;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAErF;AAGD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C","file":"utils.d.ts","sourcesContent":["import { streamEvents } from '@jujulego/event-tree';\nimport { SpawnTask, SpawnTaskStream } from '@jujulego/tasks';\nimport { Arguments, Argv, CommandModule } from 'yargs';\nimport { Awaitable } from './types';\n\n// Stream utils\nexport async function* combine<T>(...generators: AsyncGenerator<T>[]): AsyncGenerator<T> {\n for (const gen of generators) {\n yield* gen;\n }\n}\n\nexport async function *streamLines(task: SpawnTask, stream: SpawnTaskStream): AsyncGenerator<string> {\n // Abort\n const ctrl = new AbortController();\n\n task.subscribe('completed', () => ctrl.abort());\n\n // Stream\n let current = '';\n\n try {\n for await (const chunk of streamEvents(task, `stream.${stream}`, { signal: ctrl.signal })) {\n const data = current + chunk.data.toString('utf-8');\n const lines = data.split(/\\r?\\n/g);\n\n current = lines.pop() ?? '';\n\n for (const line of lines) {\n yield line;\n }\n }\n } catch (err) {\n if (task.exitCode !== 0) {\n throw err;\n }\n\n if (current) {\n yield current;\n }\n }\n}\n\n// Command utils\nexport interface Middleware<T = unknown, U = unknown> {\n builder?: (yargs: Argv<T>) => Argv<U>;\n handler(args: Arguments<U>): Awaitable<void>;\n}\n\nexport function applyMiddlewares<T>(yargs: Argv<T>, middlewares: Middleware[]): Argv<T> {\n let tmp: Argv<unknown> = yargs;\n\n for (const middleware of middlewares) {\n if (middleware.builder) {\n tmp = middleware.builder(tmp);\n }\n\n tmp.middleware(middleware.handler);\n }\n\n return tmp as Argv<T>;\n}\n\nexport function defineCommand<T, U>(command: CommandModule<T, U>): CommandModule<T, U> {\n return command;\n}\n\nexport function defineMiddleware<T, U>(middleware: Middleware<T, U>): Middleware<T, U> {\n return middleware;\n}\n\n// String utils\nexport function capitalize(txt: string): string {\n return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();\n}\n"]}
|
package/dist/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["utils.js"],"sourcesContent":["import { streamEvents } from '@jujulego/event-tree';\nimport { SpawnTask, SpawnTaskStream } from '@jujulego/tasks';\nimport { Arguments, Argv, CommandModule } from 'yargs';\nimport { Awaitable } from './types';\n\n// Stream utils\nexport async function* combine<T>(...generators: AsyncGenerator<T>[]): AsyncGenerator<T> {\n for (const gen of generators) {\n yield* gen;\n }\n}\n\nexport async function *streamLines(task: SpawnTask, stream: SpawnTaskStream): AsyncGenerator<string> {\n // Abort\n const ctrl = new AbortController();\n\n task.subscribe('completed', () => ctrl.abort());\n\n // Stream\n let current = '';\n\n try {\n for await (const chunk of streamEvents(task, `stream.${stream}`, { signal: ctrl.signal })) {\n const data = current + chunk.data.toString('utf-8');\n const lines = data.split(/\\r?\\n/g);\n\n current = lines.pop() ?? '';\n\n for (const line of lines) {\n yield line;\n }\n }\n } catch (err) {\n if (task.exitCode !== 0) {\n throw err;\n }\n\n if (current) {\n yield current;\n }\n }\n}\n\n// Command utils\nexport interface Middleware<T = unknown, U = unknown> {\n builder?: (yargs: Argv<T>) => Argv<U>;\n handler(args: Arguments<U>): Awaitable<void>;\n}\n\nexport function applyMiddlewares<T>(yargs: Argv<T>, middlewares: Middleware[]): Argv<T> {\n let tmp: Argv<unknown> = yargs;\n\n for (const middleware of middlewares) {\n if (middleware.builder) {\n tmp = middleware.builder(tmp);\n }\n\n tmp.middleware(middleware.handler);\n }\n\n return tmp as Argv<T>;\n}\n\nexport function defineCommand<T, U>(command: CommandModule<T, U>): CommandModule<T, U> {\n return command;\n}\n\nexport function defineMiddleware<T, U>(middleware: Middleware<T, U>): Middleware<T, U> {\n return middleware;\n}\n\n// String utils\nexport function capitalize(txt: string): string {\n return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();\n}\n"],"names":["combine","streamLines","applyMiddlewares","defineCommand","defineMiddleware","capitalize","generators","gen","task","stream","ctrl","AbortController","subscribe","abort","current","chunk","streamEvents","signal","data","toString","lines","split","pop","line","err","exitCode","yargs","middlewares","tmp","middleware","builder","handler","command","txt","charAt","toUpperCase","substring","toLowerCase"],"mappings":"AAAA;;;;;;;;;;;IAMuBA,OAAO,MAAPA;IAMAC,WAAW,MAAXA;IAqCPC,gBAAgB,MAAhBA;IAcAC,aAAa,MAAbA;IAIAC,gBAAgB,MAAhBA;IAKAC,UAAU,MAAVA;;2BAxEa;AAMtB,gBAAgBL,QAAW,GAAGM,UAA+B,EAAqB;IACvF,KAAK,MAAMC,OAAOD,WAAY;QAC5B,OAAOC;IACT;AACF;AAEO,gBAAgBN,YAAYO,IAAe,EAAEC,MAAuB,EAA0B;IACnG,QAAQ;IACR,MAAMC,OAAO,IAAIC;IAEjBH,KAAKI,SAAS,CAAC,aAAa,IAAMF,KAAKG,KAAK;IAE5C,SAAS;IACT,IAAIC,UAAU;IAEd,IAAI;QACF,WAAW,MAAMC,SAASC,IAAAA,uBAAY,EAACR,MAAM,CAAC,OAAO,EAAEC,OAAO,CAAC,EAAE;YAAEQ,QAAQP,KAAKO,MAAM;QAAC,GAAI;YACzF,MAAMC,OAAOJ,UAAUC,MAAMG,IAAI,CAACC,QAAQ,CAAC;YAC3C,MAAMC,QAAQF,KAAKG,KAAK,CAAC;YAEzBP,UAAUM,MAAME,GAAG,MAAM;YAEzB,KAAK,MAAMC,QAAQH,MAAO;gBACxB,MAAMG;YACR;QACF;IACF,EAAE,OAAOC,KAAK;QACZ,IAAIhB,KAAKiB,QAAQ,KAAK,GAAG;YACvB,MAAMD,IAAI;QACZ,CAAC;QAED,IAAIV,SAAS;YACX,MAAMA;QACR,CAAC;IACH;AACF;AAQO,SAASZ,iBAAoBwB,KAAc,EAAEC,WAAyB,EAAW;IACtF,IAAIC,MAAqBF;IAEzB,KAAK,MAAMG,cAAcF,YAAa;QACpC,IAAIE,WAAWC,OAAO,EAAE;YACtBF,MAAMC,WAAWC,OAAO,CAACF;QAC3B,CAAC;QAEDA,IAAIC,UAAU,CAACA,WAAWE,OAAO;IACnC;IAEA,OAAOH;AACT;AAEO,SAASzB,cAAoB6B,OAA4B,EAAuB;IACrF,OAAOA;AACT;AAEO,SAAS5B,iBAAuByB,UAA4B,EAAoB;IACrF,OAAOA;AACT;AAGO,SAASxB,WAAW4B,GAAW,EAAU;IAC9C,OAAOA,IAAIC,MAAM,CAAC,GAAGC,WAAW,KAAKF,IAAIG,SAAS,CAAC,GAAGC,WAAW;AACnE","file":"utils.js"}
|