@jujulego/jill 2.0.0-alpha.2 → 2.0.0-alpha.3
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/list.d.ts.map +1 -1
- package/dist/commands/list.js +2 -1
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/tree.d.ts +3 -0
- package/dist/commands/tree.d.ts.map +1 -0
- package/dist/commands/tree.js +35 -0
- package/dist/commands/tree.js.map +1 -0
- package/dist/middlewares/global-config.d.ts.map +1 -1
- package/dist/middlewares/global-config.js +4 -1
- package/dist/middlewares/global-config.js.map +1 -1
- package/dist/middlewares/index.d.ts +2 -1
- package/dist/middlewares/index.d.ts.map +1 -1
- package/dist/middlewares/index.js +2 -1
- package/dist/middlewares/index.js.map +1 -1
- package/dist/middlewares/load-project.d.ts.map +1 -1
- package/dist/middlewares/load-project.js +2 -2
- package/dist/middlewares/load-project.js.map +1 -1
- package/dist/middlewares/load-workspace.d.ts +3 -0
- package/dist/middlewares/load-workspace.d.ts.map +1 -0
- package/dist/middlewares/load-workspace.js +42 -0
- package/dist/middlewares/load-workspace.js.map +1 -0
- package/dist/services/inversify.config.d.ts +1 -1
- package/dist/services/inversify.config.d.ts.map +1 -1
- package/dist/services/inversify.config.js +2 -2
- package/dist/services/inversify.config.js.map +1 -1
- package/dist/services/spinner.service.d.ts +6 -2
- package/dist/services/spinner.service.d.ts.map +1 -1
- package/dist/services/spinner.service.js +22 -9
- 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 +31 -9
- package/dist/ui/global-spinner.js.map +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +1 -1
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/static-logs.d.ts.map +1 -1
- package/dist/ui/static-logs.js +15 -8
- package/dist/ui/static-logs.js.map +1 -1
- package/dist/ui/workspace-tree.d.ts +8 -0
- package/dist/ui/workspace-tree.d.ts.map +1 -0
- package/dist/ui/workspace-tree.js +87 -0
- package/dist/ui/workspace-tree.js.map +1 -0
- package/package.json +2 -1
- package/dist/ui/cli-list.d.ts +0 -15
- package/dist/ui/cli-list.d.ts.map +0 -1
- package/dist/ui/cli-list.js +0 -66
- package/dist/ui/cli-list.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["commands/list.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;;;;;;;;;;;;;;;;;;;;AA8BtD,
|
|
1
|
+
{"version":3,"sources":["commands/list.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;;;;;;;;;;;;;;;;;;;;AA8BtD,wBAkIG","file":"list.d.ts","sourcesContent":["import chalk from 'chalk';\nimport path from 'node:path';\nimport ink from 'ink';\nimport slugify from 'slugify';\n\nimport { AffectedFilter, Pipeline, PrivateFilter, ScriptsFilter } from '../filters';\nimport { loadProject, setupInk } from '../middlewares';\nimport { Project, Workspace } from '../project';\nimport { container, CURRENT, INK_APP } from '../services';\nimport { Layout, List } from '../ui';\nimport { applyMiddlewares, defineCommand } from '../utils';\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, json) => wks.manifest.version || (json ? undefined : chalk.grey('unset')),\n root: wks => wks.cwd,\n slug: wks => slugify(wks.name)\n};\n\n// Utils\nfunction buildExtractor(attrs: Attribute[]): Extractor<Data> {\n return (wks, json: boolean) => {\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\nexport default defineCommand({\n command: ['list', 'ls'],\n describe: 'List workspaces',\n builder: (yargs) =>\n applyMiddlewares(yargs, [\n setupInk,\n loadProject,\n ])\n // Filters\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\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 .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 async handler(args) {\n // Setup pipeline\n const pipeline = new Pipeline();\n\n if (args.private !== undefined) {\n pipeline.add(new PrivateFilter(args.private));\n }\n\n if (args.withScript) {\n pipeline.add(new ScriptsFilter(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 // Load workspaces\n const project = container.getNamed(Project, CURRENT);\n const workspaces: Workspace[] = [];\n\n for await (const wks of pipeline.filter(project.workspaces())) {\n workspaces.push(wks);\n }\n\n // Build data\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 const data = workspaces.map(wks => buildExtractor(attrs)(wks, args.json || false));\n\n // Print list\n if (args.json) {\n if (process.stdout.isTTY) { // Pretty print for ttys\n console.log(JSON.stringify(data, null, 2));\n } else {\n console.log(JSON.stringify(data));\n }\n } else {\n const app = container.get<ink.Instance>(INK_APP);\n\n for (const d of data) {\n if (d.root) {\n d.root = path.relative(process.cwd(), d.root) ?? '.';\n }\n }\n\n app.rerender(\n <Layout>\n <List items={data} headers={args.headers ?? (attrs.length > 1)} />\n </Layout>\n );\n }\n }\n});\n"]}
|
package/dist/commands/list.js
CHANGED
|
@@ -13,6 +13,7 @@ const _nodePath = /*#__PURE__*/ _interopRequireDefault(require("node:path"));
|
|
|
13
13
|
const _slugify = /*#__PURE__*/ _interopRequireDefault(require("slugify"));
|
|
14
14
|
const _filters = require("../filters");
|
|
15
15
|
const _middlewares = require("../middlewares");
|
|
16
|
+
const _project = require("../project");
|
|
16
17
|
const _services = require("../services");
|
|
17
18
|
const _ui = require("../ui");
|
|
18
19
|
const _utils = require("../utils");
|
|
@@ -125,7 +126,7 @@ const _default = (0, _utils.defineCommand)({
|
|
|
125
126
|
pipeline.add(new _filters.AffectedFilter(args.affected, args.affectedRevFallback, args.affectedRevSort));
|
|
126
127
|
}
|
|
127
128
|
// Load workspaces
|
|
128
|
-
const project = _services.container.
|
|
129
|
+
const project = _services.container.getNamed(_project.Project, _services.CURRENT);
|
|
129
130
|
const workspaces = [];
|
|
130
131
|
for await (const wks of pipeline.filter(project.workspaces())){
|
|
131
132
|
workspaces.push(wks);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["commands/list.js"],"sourcesContent":["import chalk from 'chalk';\nimport path from 'node:path';\nimport ink from 'ink';\nimport slugify from 'slugify';\n\nimport { AffectedFilter, Pipeline, PrivateFilter, ScriptsFilter } from '../filters';\nimport { loadProject, setupInk } from '../middlewares';\nimport { Project, Workspace } from '../project';\nimport { container,
|
|
1
|
+
{"version":3,"sources":["commands/list.js"],"sourcesContent":["import chalk from 'chalk';\nimport path from 'node:path';\nimport ink from 'ink';\nimport slugify from 'slugify';\n\nimport { AffectedFilter, Pipeline, PrivateFilter, ScriptsFilter } from '../filters';\nimport { loadProject, setupInk } from '../middlewares';\nimport { Project, Workspace } from '../project';\nimport { container, CURRENT, INK_APP } from '../services';\nimport { Layout, List } from '../ui';\nimport { applyMiddlewares, defineCommand } from '../utils';\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, json) => wks.manifest.version || (json ? undefined : chalk.grey('unset')),\n root: wks => wks.cwd,\n slug: wks => slugify(wks.name)\n};\n\n// Utils\nfunction buildExtractor(attrs: Attribute[]): Extractor<Data> {\n return (wks, json: boolean) => {\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\nexport default defineCommand({\n command: ['list', 'ls'],\n describe: 'List workspaces',\n builder: (yargs) =>\n applyMiddlewares(yargs, [\n setupInk,\n loadProject,\n ])\n // Filters\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\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 .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 async handler(args) {\n // Setup pipeline\n const pipeline = new Pipeline();\n\n if (args.private !== undefined) {\n pipeline.add(new PrivateFilter(args.private));\n }\n\n if (args.withScript) {\n pipeline.add(new ScriptsFilter(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 // Load workspaces\n const project = container.getNamed(Project, CURRENT);\n const workspaces: Workspace[] = [];\n\n for await (const wks of pipeline.filter(project.workspaces())) {\n workspaces.push(wks);\n }\n\n // Build data\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 const data = workspaces.map(wks => buildExtractor(attrs)(wks, args.json || false));\n\n // Print list\n if (args.json) {\n if (process.stdout.isTTY) { // Pretty print for ttys\n console.log(JSON.stringify(data, null, 2));\n } else {\n console.log(JSON.stringify(data));\n }\n } else {\n const app = container.get<ink.Instance>(INK_APP);\n\n for (const d of data) {\n if (d.root) {\n d.root = path.relative(process.cwd(), d.root) ?? '.';\n }\n }\n\n app.rerender(\n <Layout>\n <List items={data} headers={args.headers ?? (attrs.length > 1)} />\n </Layout>\n );\n }\n }\n});\n"],"names":["LONG_ATTRIBUTES","JSON_ATTRIBUTES","DEFAULT_ATTRIBUTES","EXTRACTORS","name","wks","version","json","manifest","undefined","chalk","grey","root","cwd","slug","slugify","buildExtractor","attrs","data","attr","defineCommand","command","describe","builder","yargs","applyMiddlewares","setupInk","loadProject","option","type","group","desc","string","alias","coerce","rev","default","choices","handler","args","pipeline","Pipeline","private","add","PrivateFilter","withScript","ScriptsFilter","affected","AffectedFilter","affectedRevFallback","affectedRevSort","project","container","getNamed","Project","CURRENT","workspaces","filter","push","length","long","map","process","stdout","isTTY","console","log","JSON","stringify","app","get","INK_APP","d","path","relative","rerender","Layout","List","items","headers"],"mappings":"AAAA;;;;+BA2CA,UAAU;AACV;;aAAA;;;4DA5CkB;+DACD;8DAEG;yBAEmD;6BACjC;yBACH;0BACS;oBACf;uBACmB;;;;;;AAQhD,YAAY;AACZ,MAAMA,kBAA+B;IAAC;IAAQ;IAAW;CAAO;AAChE,MAAMC,kBAA+B;IAAC;IAAQ;IAAW;IAAQ;CAAO;AACxE,MAAMC,qBAAkC;IAAC;CAAO;AAEhD,MAAMC,aAA+D;IACnEC,MAAMC,CAAAA,MAAOA,IAAID,IAAI;IACrBE,SAAS,CAACD,KAAKE,OAASF,IAAIG,QAAQ,CAACF,OAAO,IAAKC,CAAAA,OAAOE,YAAYC,cAAK,CAACC,IAAI,CAAC,QAAQ,AAAD;IACtFC,MAAMP,CAAAA,MAAOA,IAAIQ,GAAG;IACpBC,MAAMT,CAAAA,MAAOU,IAAAA,gBAAO,EAACV,IAAID,IAAI;AAC/B;AAEA,QAAQ;AACR,SAASY,eAAeC,KAAkB,EAAmB;IAC3D,OAAO,CAACZ,KAAKE,OAAkB;QAC7B,MAAMW,OAAa,CAAC;QAEpB,KAAK,MAAMC,QAAQF,MAAO;YACxBC,IAAI,CAACC,KAAK,GAAGhB,UAAU,CAACgB,KAAK,CAACd,KAAKE;QACrC;QAEA,OAAOW;IACT;AACF;MAGA,WAAeE,IAAAA,oBAAa,EAAC;IAC3BC,SAAS;QAAC;QAAQ;KAAK;IACvBC,UAAU;IACVC,SAAS,CAACC,QACRC,IAAAA,uBAAgB,EAACD,OAAO;YACtBE,qBAAQ;YACRC,wBAAW;SACZ,CACD,UAAU;SACTC,MAAM,CAAC,WAAW;YACjBC,MAAM;YACNC,OAAO;YACPC,MAAM;QACR,GACCH,MAAM,CAAC,eAAe;YACrBC,MAAM;YACNG,QAAQ,IAAI;YACZF,OAAO;YACPC,MAAM;QACR,EAEA,kBAAkB;SACjBH,MAAM,CAAC,YAAY;YAClBK,OAAO;YACPJ,MAAM;YACNK,QAAQ,CAACC,MAAgBA,QAAQ,KAAK,WAAWA,GAAG;YACpDL,OAAO;YACPC,MAAM,wHACJ;QACJ,GACCH,MAAM,CAAC,qBAAqB;YAC3BC,MAAM;YACNC,OAAO;YACPC,MAAM;QACR,GACCH,MAAM,CAAC,yBAAyB;YAC/BC,MAAM;YACNO,SAAS;YACTN,OAAO;YACPC,MAAM;QACR,GACCH,MAAM,CAAC,SAAS;YACfC,MAAM;YACNQ,SAAS;gBAAC;gBAAQ;gBAAW;gBAAQ;aAAO;YAC5CD,SAAS,EAAE;YACXN,OAAO;YACPC,MAAM;QACR,GACCH,MAAM,CAAC,WAAW;YACjBC,MAAM;YACNC,OAAO;YACPC,MAAM;QACR,GACCH,MAAM,CAAC,QAAQ;YACdK,OAAO;YACPJ,MAAM;YACNC,OAAO;YACPC,MAAM;QACR,GACCH,MAAM,CAAC,QAAQ;YACdC,MAAM;YACNC,OAAO;YACPC,MAAM;QACR;IACF,MAAMO,SAAQC,IAAI,EAAE;QAClB,iBAAiB;QACjB,MAAMC,WAAW,IAAIC,iBAAQ;QAE7B,IAAIF,KAAKG,OAAO,KAAKjC,WAAW;YAC9B+B,SAASG,GAAG,CAAC,IAAIC,sBAAa,CAACL,KAAKG,OAAO;QAC7C,CAAC;QAED,IAAIH,KAAKM,UAAU,EAAE;YACnBL,SAASG,GAAG,CAAC,IAAIG,sBAAa,CAACP,KAAKM,UAAU;QAChD,CAAC;QAED,IAAIN,KAAKQ,QAAQ,KAAKtC,WAAW;YAC/B+B,SAASG,GAAG,CAAC,IAAIK,uBAAc,CAC7BT,KAAKQ,QAAQ,EACbR,KAAKU,mBAAmB,EACxBV,KAAKW,eAAe;QAExB,CAAC;QAED,kBAAkB;QAClB,MAAMC,UAAUC,mBAAS,CAACC,QAAQ,CAACC,gBAAO,EAAEC,iBAAO;QACnD,MAAMC,aAA0B,EAAE;QAElC,WAAW,MAAMnD,OAAOmC,SAASiB,MAAM,CAACN,QAAQK,UAAU,IAAK;YAC7DA,WAAWE,IAAI,CAACrD;QAClB;QAEA,aAAa;QACb,IAAIY,QAAQsB,KAAKtB,KAAK;QAEtB,IAAIsB,KAAKtB,KAAK,CAAC0C,MAAM,KAAK,GAAG;YAC3B,IAAIpB,KAAKqB,IAAI,EAAE;gBACb3C,QAAQjB;YACV,OAAO,IAAIuC,KAAKhC,IAAI,EAAE;gBACpBU,QAAQhB;YACV,OAAO;gBACLgB,QAAQf;YACV,CAAC;QACH,CAAC;QAED,MAAMgB,OAAOsC,WAAWK,GAAG,CAACxD,CAAAA,MAAOW,eAAeC,OAAOZ,KAAKkC,KAAKhC,IAAI,IAAI,KAAK;QAEhF,aAAa;QACb,IAAIgC,KAAKhC,IAAI,EAAE;YACb,IAAIuD,QAAQC,MAAM,CAACC,KAAK,EAAE;gBACxBC,QAAQC,GAAG,CAACC,KAAKC,SAAS,CAAClD,MAAM,IAAI,EAAE;YACzC,OAAO;gBACL+C,QAAQC,GAAG,CAACC,KAAKC,SAAS,CAAClD;YAC7B,CAAC;QACH,OAAO;YACL,MAAMmD,MAAMjB,mBAAS,CAACkB,GAAG,CAAeC,iBAAO;YAE/C,KAAK,MAAMC,KAAKtD,KAAM;gBACpB,IAAIsD,EAAE5D,IAAI,EAAE;oBACV4D,EAAE5D,IAAI,GAAG6D,iBAAI,CAACC,QAAQ,CAACZ,QAAQjD,GAAG,IAAI2D,EAAE5D,IAAI,KAAK;gBACnD,CAAC;YACH;YAEAyD,IAAIM,QAAQ,eACV,qBAACC,UAAM;0BACL,cAAA,qBAACC,QAAI;oBAACC,OAAO5D;oBAAM6D,SAASxC,KAAKwC,OAAO,IAAK9D,MAAM0C,MAAM,GAAG;;;QAGlE,CAAC;IACH;AACF","file":"list.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["commands/tree.tsx"],"names":[],"mappings":";;AASA,wBAmBG","file":"tree.d.ts","sourcesContent":["import ink from 'ink';\n\nimport { loadProject, loadWorkspace, setupInk } from '../middlewares';\nimport { Workspace } from '../project';\nimport { container, CURRENT, INK_APP } from '../services';\nimport { Layout, WorkspaceTree } from '../ui';\nimport { applyMiddlewares, defineCommand } from '../utils';\n\n// Command\nexport default defineCommand({\n command: 'tree',\n describe: 'Print workspace dependency tree',\n builder: (yargs) =>\n applyMiddlewares(yargs, [\n setupInk,\n loadProject,\n loadWorkspace\n ]),\n handler: () => {\n const app = container.get<ink.Instance>(INK_APP);\n const workspace = container.getNamed(Workspace, CURRENT);\n\n app.rerender(\n <Layout>\n <WorkspaceTree workspace={workspace} />\n </Layout>\n );\n }\n});\n"]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, // Command
|
|
6
|
+
"default", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: ()=>_default
|
|
9
|
+
});
|
|
10
|
+
const _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
+
const _middlewares = require("../middlewares");
|
|
12
|
+
const _project = require("../project");
|
|
13
|
+
const _services = require("../services");
|
|
14
|
+
const _ui = require("../ui");
|
|
15
|
+
const _utils = require("../utils");
|
|
16
|
+
const _default = (0, _utils.defineCommand)({
|
|
17
|
+
command: 'tree',
|
|
18
|
+
describe: 'Print workspace dependency tree',
|
|
19
|
+
builder: (yargs)=>(0, _utils.applyMiddlewares)(yargs, [
|
|
20
|
+
_middlewares.setupInk,
|
|
21
|
+
_middlewares.loadProject,
|
|
22
|
+
_middlewares.loadWorkspace
|
|
23
|
+
]),
|
|
24
|
+
handler: ()=>{
|
|
25
|
+
const app = _services.container.get(_services.INK_APP);
|
|
26
|
+
const workspace = _services.container.getNamed(_project.Workspace, _services.CURRENT);
|
|
27
|
+
app.rerender(/*#__PURE__*/ (0, _jsxRuntime.jsx)(_ui.Layout, {
|
|
28
|
+
children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_ui.WorkspaceTree, {
|
|
29
|
+
workspace: workspace
|
|
30
|
+
})
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["commands/tree.js"],"sourcesContent":["import ink from 'ink';\n\nimport { loadProject, loadWorkspace, setupInk } from '../middlewares';\nimport { Workspace } from '../project';\nimport { container, CURRENT, INK_APP } from '../services';\nimport { Layout, WorkspaceTree } from '../ui';\nimport { applyMiddlewares, defineCommand } from '../utils';\n\n// Command\nexport default defineCommand({\n command: 'tree',\n describe: 'Print workspace dependency tree',\n builder: (yargs) =>\n applyMiddlewares(yargs, [\n setupInk,\n loadProject,\n loadWorkspace\n ]),\n handler: () => {\n const app = container.get<ink.Instance>(INK_APP);\n const workspace = container.getNamed(Workspace, CURRENT);\n\n app.rerender(\n <Layout>\n <WorkspaceTree workspace={workspace} />\n </Layout>\n );\n }\n});\n"],"names":["defineCommand","command","describe","builder","yargs","applyMiddlewares","setupInk","loadProject","loadWorkspace","handler","app","container","get","INK_APP","workspace","getNamed","Workspace","CURRENT","rerender","Layout","WorkspaceTree"],"mappings":"AAAA;;;;+BAQA,UAAU;AACV;;aAAA;;;6BAPqD;yBAC3B;0BACkB;oBACN;uBACU;MAGhD,WAAeA,IAAAA,oBAAa,EAAC;IAC3BC,SAAS;IACTC,UAAU;IACVC,SAAS,CAACC,QACRC,IAAAA,uBAAgB,EAACD,OAAO;YACtBE,qBAAQ;YACRC,wBAAW;YACXC,0BAAa;SACd;IACHC,SAAS,IAAM;QACb,MAAMC,MAAMC,mBAAS,CAACC,GAAG,CAAeC,iBAAO;QAC/C,MAAMC,YAAYH,mBAAS,CAACI,QAAQ,CAACC,kBAAS,EAAEC,iBAAO;QAEvDP,IAAIQ,QAAQ,eACV,qBAACC,UAAM;sBACL,cAAA,qBAACC,iBAAa;gBAACN,WAAWA;;;IAGhC;AACF","file":"tree.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["middlewares/global-config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,YAAY;;;;
|
|
1
|
+
{"version":3,"sources":["middlewares/global-config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,YAAY;;;;EAkBvB,CAAC","file":"global-config.d.ts","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"]}
|
|
@@ -19,7 +19,10 @@ const globalConfig = (0, _utils.defineMiddleware)({
|
|
|
19
19
|
description: 'Set maximum parallel job number'
|
|
20
20
|
}),
|
|
21
21
|
handler (args) {
|
|
22
|
-
_services.container.bind(_services.GLOBAL_CONFIG).toConstantValue(
|
|
22
|
+
_services.container.bind(_services.GLOBAL_CONFIG).toConstantValue({
|
|
23
|
+
verbose: args.verbose,
|
|
24
|
+
jobs: args.jobs
|
|
25
|
+
});
|
|
23
26
|
}
|
|
24
27
|
});
|
|
25
28
|
|
|
@@ -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(args);\n }\n});\n"],"names":["globalConfig","defineMiddleware","builder","yargs","option","alias","type","description","handler","args","container","bind","GLOBAL_CONFIG","toConstantValue"],"mappings":"AAAA;;;;+BAIaA;;aAAAA;;0BAJ4B;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;YACNC,aAAa;QACf;IACFC,SAAQC,IAAI,EAAE;QACZC,mBAAS,CAACC,IAAI,CAACC,uBAAa,EAAEC,eAAe,
|
|
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;;;;+BAIaA;;aAAAA;;0BAJ4B;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;YACNC,aAAa;QACf;IACFC,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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["middlewares/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,
|
|
1
|
+
{"version":3,"sources":["middlewares/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC","file":"index.d.ts","sourcesContent":["export * from './global-config';\nexport * from './load-project';\nexport * from './load-workspace';\nexport * from './setup-ink';\n"]}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
_exportStar(require("./load-project"), exports);
|
|
6
5
|
_exportStar(require("./global-config"), exports);
|
|
6
|
+
_exportStar(require("./load-project"), exports);
|
|
7
|
+
_exportStar(require("./load-workspace"), exports);
|
|
7
8
|
_exportStar(require("./setup-ink"), exports);
|
|
8
9
|
function _exportStar(from, to) {
|
|
9
10
|
Object.keys(from).forEach(function(k) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["middlewares/index.js"],"sourcesContent":["export * from './load-project';\nexport * from './
|
|
1
|
+
{"version":3,"sources":["middlewares/index.js"],"sourcesContent":["export * from './global-config';\nexport * from './load-project';\nexport * from './load-workspace';\nexport * from './setup-ink';\n"],"names":[],"mappings":"AAAA;;;;oBAAc;oBACA;oBACA;oBACA","file":"index.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["middlewares/load-project.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAW,MAAM,YAAY,CAAC;AAIrD,eAAO,MAAM,WAAW;;;;
|
|
1
|
+
{"version":3,"sources":["middlewares/load-project.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAW,MAAM,YAAY,CAAC;AAIrD,eAAO,MAAM,WAAW;;;;EA8BtB,CAAC","file":"load-project.d.ts","sourcesContent":["import { container, CURRENT, SpinnerService } from '../services';\nimport { PackageManager, Project } from '../project';\nimport { defineMiddleware } from '../utils';\n\n// Middleware\nexport const loadProject = defineMiddleware({\n builder: (yargs) => yargs\n .option('project', {\n alias: 'p',\n type: 'string',\n default: process.cwd(),\n description: 'Project root directory'\n })\n .option('package-manager', {\n choices: ['yarn', 'npm'],\n default: undefined as PackageManager | undefined,\n type: 'string',\n description: 'Force package manager'\n }),\n async handler(args) {\n const spinner = container.get(SpinnerService);\n\n try {\n spinner.spin('Loading project ...');\n const root = args.project = await Project.searchProjectRoot(args.project);\n\n container.bind(Project)\n .toDynamicValue(() => new Project(root, {\n packageManager: args['package-manager']\n }))\n .whenTargetNamed(CURRENT);\n } finally {\n spinner.stop();\n }\n }\n});\n"]}
|
|
@@ -29,9 +29,9 @@ const loadProject = (0, _utils.defineMiddleware)({
|
|
|
29
29
|
try {
|
|
30
30
|
spinner.spin('Loading project ...');
|
|
31
31
|
const root = args.project = await _project.Project.searchProjectRoot(args.project);
|
|
32
|
-
_services.container.bind(
|
|
32
|
+
_services.container.bind(_project.Project).toDynamicValue(()=>new _project.Project(root, {
|
|
33
33
|
packageManager: args['package-manager']
|
|
34
|
-
}));
|
|
34
|
+
})).whenTargetNamed(_services.CURRENT);
|
|
35
35
|
} finally{
|
|
36
36
|
spinner.stop();
|
|
37
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["middlewares/load-project.js"],"sourcesContent":["import { container,
|
|
1
|
+
{"version":3,"sources":["middlewares/load-project.js"],"sourcesContent":["import { container, CURRENT, SpinnerService } from '../services';\nimport { PackageManager, Project } from '../project';\nimport { defineMiddleware } from '../utils';\n\n// Middleware\nexport const loadProject = defineMiddleware({\n builder: (yargs) => yargs\n .option('project', {\n alias: 'p',\n type: 'string',\n default: process.cwd(),\n description: 'Project root directory'\n })\n .option('package-manager', {\n choices: ['yarn', 'npm'],\n default: undefined as PackageManager | undefined,\n type: 'string',\n description: 'Force package manager'\n }),\n async handler(args) {\n const spinner = container.get(SpinnerService);\n\n try {\n spinner.spin('Loading project ...');\n const root = args.project = await Project.searchProjectRoot(args.project);\n\n container.bind(Project)\n .toDynamicValue(() => new Project(root, {\n packageManager: args['package-manager']\n }))\n .whenTargetNamed(CURRENT);\n } finally {\n spinner.stop();\n }\n }\n});\n"],"names":["loadProject","defineMiddleware","builder","yargs","option","alias","type","default","process","cwd","description","choices","undefined","handler","args","spinner","container","get","SpinnerService","spin","root","project","Project","searchProjectRoot","bind","toDynamicValue","packageManager","whenTargetNamed","CURRENT","stop"],"mappings":"AAAA;;;;+BAKaA;;aAAAA;;0BALsC;yBACX;uBACP;AAG1B,MAAMA,cAAcC,IAAAA,uBAAgB,EAAC;IAC1CC,SAAS,CAACC,QAAUA,MACjBC,MAAM,CAAC,WAAW;YACjBC,OAAO;YACPC,MAAM;YACNC,SAASC,QAAQC,GAAG;YACpBC,aAAa;QACf,GACCN,MAAM,CAAC,mBAAmB;YACzBO,SAAS;gBAAC;gBAAQ;aAAM;YACxBJ,SAASK;YACTN,MAAM;YACNI,aAAa;QACf;IACF,MAAMG,SAAQC,IAAI,EAAE;QAClB,MAAMC,UAAUC,mBAAS,CAACC,GAAG,CAACC,wBAAc;QAE5C,IAAI;YACFH,QAAQI,IAAI,CAAC;YACb,MAAMC,OAAON,KAAKO,OAAO,GAAG,MAAMC,gBAAO,CAACC,iBAAiB,CAACT,KAAKO,OAAO;YAExEL,mBAAS,CAACQ,IAAI,CAACF,gBAAO,EACnBG,cAAc,CAAC,IAAM,IAAIH,gBAAO,CAACF,MAAM;oBACtCM,gBAAgBZ,IAAI,CAAC,kBAAkB;gBACzC,IACCa,eAAe,CAACC,iBAAO;QAC5B,SAAU;YACRb,QAAQc,IAAI;QACd;IACF;AACF","file":"load-project.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["middlewares/load-workspace.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,aAAa;;EA2BxB,CAAC","file":"load-workspace.d.ts","sourcesContent":["import yargs from 'yargs';\n\nimport { container, CURRENT, SpinnerService } from '../services';\nimport { Project, Workspace } from '../project';\nimport { defineMiddleware } from '../utils';\n\n// Middleware\nexport const loadWorkspace = defineMiddleware({\n builder: (yargs) => yargs\n .option('workspace', {\n alias: 'w',\n type: 'string',\n desc: 'Workspace to use'\n }),\n async handler(args): Promise<void> {\n const spinner = container.get(SpinnerService);\n const project = container.getNamed(Project, CURRENT);\n\n try {\n spinner.spin(`Loading \"${args.workspace || '.'}\" workspace ...`);\n const workspace = await project.workspace(args.workspace);\n\n if (!workspace) {\n spinner.failed(`Workspace \"${args.workspace || '.'}\" not found`);\n yargs.exit(1, new Error('Workspace not found'));\n } else {\n container.bind(Workspace)\n .toConstantValue(workspace)\n .whenTargetNamed(CURRENT);\n }\n } finally {\n spinner.stop();\n }\n }\n});\n"]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "loadWorkspace", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: ()=>loadWorkspace
|
|
8
|
+
});
|
|
9
|
+
const _yargs = /*#__PURE__*/ _interopRequireDefault(require("yargs"));
|
|
10
|
+
const _services = require("../services");
|
|
11
|
+
const _project = require("../project");
|
|
12
|
+
const _utils = require("../utils");
|
|
13
|
+
function _interopRequireDefault(obj) {
|
|
14
|
+
return obj && obj.__esModule ? obj : {
|
|
15
|
+
default: obj
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
const loadWorkspace = (0, _utils.defineMiddleware)({
|
|
19
|
+
builder: (yargs)=>yargs.option('workspace', {
|
|
20
|
+
alias: 'w',
|
|
21
|
+
type: 'string',
|
|
22
|
+
desc: 'Workspace to use'
|
|
23
|
+
}),
|
|
24
|
+
async handler (args) {
|
|
25
|
+
const spinner = _services.container.get(_services.SpinnerService);
|
|
26
|
+
const project = _services.container.getNamed(_project.Project, _services.CURRENT);
|
|
27
|
+
try {
|
|
28
|
+
spinner.spin(`Loading "${args.workspace || '.'}" workspace ...`);
|
|
29
|
+
const workspace = await project.workspace(args.workspace);
|
|
30
|
+
if (!workspace) {
|
|
31
|
+
spinner.failed(`Workspace "${args.workspace || '.'}" not found`);
|
|
32
|
+
_yargs.default.exit(1, new Error('Workspace not found'));
|
|
33
|
+
} else {
|
|
34
|
+
_services.container.bind(_project.Workspace).toConstantValue(workspace).whenTargetNamed(_services.CURRENT);
|
|
35
|
+
}
|
|
36
|
+
} finally{
|
|
37
|
+
spinner.stop();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=load-workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["middlewares/load-workspace.js"],"sourcesContent":["import yargs from 'yargs';\n\nimport { container, CURRENT, SpinnerService } from '../services';\nimport { Project, Workspace } from '../project';\nimport { defineMiddleware } from '../utils';\n\n// Middleware\nexport const loadWorkspace = defineMiddleware({\n builder: (yargs) => yargs\n .option('workspace', {\n alias: 'w',\n type: 'string',\n desc: 'Workspace to use'\n }),\n async handler(args): Promise<void> {\n const spinner = container.get(SpinnerService);\n const project = container.getNamed(Project, CURRENT);\n\n try {\n spinner.spin(`Loading \"${args.workspace || '.'}\" workspace ...`);\n const workspace = await project.workspace(args.workspace);\n\n if (!workspace) {\n spinner.failed(`Workspace \"${args.workspace || '.'}\" not found`);\n yargs.exit(1, new Error('Workspace not found'));\n } else {\n container.bind(Workspace)\n .toConstantValue(workspace)\n .whenTargetNamed(CURRENT);\n }\n } finally {\n spinner.stop();\n }\n }\n});\n"],"names":["loadWorkspace","defineMiddleware","builder","yargs","option","alias","type","desc","handler","args","spinner","container","get","SpinnerService","project","getNamed","Project","CURRENT","spin","workspace","failed","exit","Error","bind","Workspace","toConstantValue","whenTargetNamed","stop"],"mappings":"AAAA;;;;+BAOaA;;aAAAA;;4DAPK;0BAEiC;yBAChB;uBACF;;;;;;AAG1B,MAAMA,gBAAgBC,IAAAA,uBAAgB,EAAC;IAC5CC,SAAS,CAACC,QAAUA,MACjBC,MAAM,CAAC,aAAa;YACnBC,OAAO;YACPC,MAAM;YACNC,MAAM;QACR;IACF,MAAMC,SAAQC,IAAI,EAAiB;QACjC,MAAMC,UAAUC,mBAAS,CAACC,GAAG,CAACC,wBAAc;QAC5C,MAAMC,UAAUH,mBAAS,CAACI,QAAQ,CAACC,gBAAO,EAAEC,iBAAO;QAEnD,IAAI;YACFP,QAAQQ,IAAI,CAAC,CAAC,SAAS,EAAET,KAAKU,SAAS,IAAI,IAAI,eAAe,CAAC;YAC/D,MAAMA,YAAY,MAAML,QAAQK,SAAS,CAACV,KAAKU,SAAS;YAExD,IAAI,CAACA,WAAW;gBACdT,QAAQU,MAAM,CAAC,CAAC,WAAW,EAAEX,KAAKU,SAAS,IAAI,IAAI,WAAW,CAAC;gBAC/DhB,cAAK,CAACkB,IAAI,CAAC,GAAG,IAAIC,MAAM;YAC1B,OAAO;gBACLX,mBAAS,CAACY,IAAI,CAACC,kBAAS,EACrBC,eAAe,CAACN,WAChBO,eAAe,CAACT,iBAAO;YAC5B,CAAC;QACH,SAAU;YACRP,QAAQiB,IAAI;QACd;IACF;AACF","file":"load-workspace.js"}
|
|
@@ -2,7 +2,7 @@ import { Container } from 'inversify';
|
|
|
2
2
|
import 'reflect-metadata';
|
|
3
3
|
export declare const INK_APP: unique symbol;
|
|
4
4
|
export declare const GLOBAL_CONFIG: unique symbol;
|
|
5
|
-
export declare const
|
|
5
|
+
export declare const CURRENT: unique symbol;
|
|
6
6
|
export interface GlobalConfig {
|
|
7
7
|
jobs?: number;
|
|
8
8
|
verbose: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["services/inversify.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,kBAAkB,CAAC;AAG1B,eAAO,MAAM,OAAO,eAAuB,CAAC;AAC5C,eAAO,MAAM,aAAa,eAA6B,CAAC;AACxD,eAAO,MAAM,
|
|
1
|
+
{"version":3,"sources":["services/inversify.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,kBAAkB,CAAC;AAG1B,eAAO,MAAM,OAAO,eAAuB,CAAC;AAC5C,eAAO,MAAM,aAAa,eAA6B,CAAC;AACxD,eAAO,MAAM,OAAO,eAAwB,CAAC;AAG7C,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,eAAO,MAAM,SAAS,WAEpB,CAAC;AAGH,eAAO,MAAQ,UAAU,4NAA6B,CAAC","file":"inversify.config.d.ts","sourcesContent":["import { Container } from 'inversify';\nimport getDecorators from 'inversify-inject-decorators';\n\nimport 'reflect-metadata';\n\n// Constants\nexport const INK_APP = Symbol.for('InkApp');\nexport const GLOBAL_CONFIG = Symbol.for('GlobalConfig');\nexport const CURRENT = Symbol.for('Current');\n\n// Types\nexport interface GlobalConfig {\n jobs?: number;\n verbose: number;\n}\n\n// Container\nexport const container = new Container({\n skipBaseClassChecks: true,\n});\n\n// Utilities\nexport const { lazyInject } = getDecorators(container);\n"]}
|
|
@@ -11,7 +11,7 @@ function _export(target, all) {
|
|
|
11
11
|
_export(exports, {
|
|
12
12
|
INK_APP: ()=>INK_APP,
|
|
13
13
|
GLOBAL_CONFIG: ()=>GLOBAL_CONFIG,
|
|
14
|
-
|
|
14
|
+
CURRENT: ()=>CURRENT,
|
|
15
15
|
container: ()=>container,
|
|
16
16
|
lazyInject: ()=>lazyInject
|
|
17
17
|
});
|
|
@@ -25,7 +25,7 @@ function _interopRequireDefault(obj) {
|
|
|
25
25
|
}
|
|
26
26
|
const INK_APP = Symbol.for('InkApp');
|
|
27
27
|
const GLOBAL_CONFIG = Symbol.for('GlobalConfig');
|
|
28
|
-
const
|
|
28
|
+
const CURRENT = Symbol.for('Current');
|
|
29
29
|
const container = new _inversify.Container({
|
|
30
30
|
skipBaseClassChecks: true
|
|
31
31
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["services/inversify.config.js"],"sourcesContent":["import { Container } from 'inversify';\nimport getDecorators from 'inversify-inject-decorators';\n\nimport 'reflect-metadata';\n\n// Constants\nexport const INK_APP = Symbol.for('InkApp');\nexport const GLOBAL_CONFIG = Symbol.for('GlobalConfig');\nexport const
|
|
1
|
+
{"version":3,"sources":["services/inversify.config.js"],"sourcesContent":["import { Container } from 'inversify';\nimport getDecorators from 'inversify-inject-decorators';\n\nimport 'reflect-metadata';\n\n// Constants\nexport const INK_APP = Symbol.for('InkApp');\nexport const GLOBAL_CONFIG = Symbol.for('GlobalConfig');\nexport const CURRENT = Symbol.for('Current');\n\n// Types\nexport interface GlobalConfig {\n jobs?: number;\n verbose: number;\n}\n\n// Container\nexport const container = new Container({\n skipBaseClassChecks: true,\n});\n\n// Utilities\nexport const { lazyInject } = getDecorators(container);\n"],"names":["INK_APP","GLOBAL_CONFIG","CURRENT","container","lazyInject","Symbol","for","Container","skipBaseClassChecks","getDecorators"],"mappings":"AAAA;;;;;;;;;;;IAMaA,OAAO,MAAPA;IACAC,aAAa,MAAbA;IACAC,OAAO,MAAPA;IASAC,SAAS,MAATA;IAKEC,UAAU,MAAVA;;2BAtBW;gFACA;QAEnB;;;;;;AAGA,MAAMJ,UAAUK,OAAOC,GAAG,CAAC;AAC3B,MAAML,gBAAgBI,OAAOC,GAAG,CAAC;AACjC,MAAMJ,UAAUG,OAAOC,GAAG,CAAC;AAS3B,MAAMH,YAAY,IAAII,oBAAS,CAAC;IACrCC,qBAAqB,IAAI;AAC3B;AAGO,MAAM,EAAEJ,WAAU,EAAE,GAAGK,IAAAA,kCAAa,EAACN","file":"inversify.config.js"}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
|
+
export declare type SpinnerStatus = 'spin' | 'stop' | 'success' | 'failed';
|
|
1
2
|
export interface SpinnerState {
|
|
2
|
-
|
|
3
|
+
status: SpinnerStatus;
|
|
3
4
|
label: string;
|
|
4
5
|
}
|
|
5
6
|
export declare type SpinnerStateListener = (state: SpinnerState) => void;
|
|
6
7
|
export declare class SpinnerService {
|
|
7
|
-
private
|
|
8
|
+
private _status;
|
|
8
9
|
private _label;
|
|
9
10
|
private readonly _listeners;
|
|
11
|
+
private _propagate;
|
|
10
12
|
subscribe(listener: SpinnerStateListener): () => void;
|
|
11
13
|
spin(label: string): void;
|
|
14
|
+
success(label: string): void;
|
|
15
|
+
failed(label: string): void;
|
|
12
16
|
stop(): void;
|
|
13
17
|
get state(): SpinnerState;
|
|
14
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["services/spinner.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["services/spinner.service.ts"],"names":[],"mappings":"AAKA,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,oBAAoB,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;AAGjE,qBACa,cAAc;IAEzB,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,MAAM,CAAM;IAEpB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmC;IAG9D,OAAO,CAAC,UAAU;IAMlB,SAAS,CAAC,QAAQ,EAAE,oBAAoB;IAQxC,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 { 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 SpinnerStateListener = (state: SpinnerState) => void;\n\n// Service\n@injectable()\nexport class SpinnerService {\n // Attributes\n private _status: SpinnerStatus = 'stop';\n private _label = '';\n\n private readonly _listeners = new Set<SpinnerStateListener>();\n\n // Methods\n private _propagate() {\n for (const listener of this._listeners) {\n listener(this.state);\n }\n }\n\n subscribe(listener: SpinnerStateListener) {\n this._listeners.add(listener);\n\n return () => {\n this._listeners.delete(listener);\n };\n }\n\n spin(label: string) {\n this._status = 'spin';\n this._label = label;\n\n this._propagate();\n }\n\n success(label: string) {\n this._status = 'success';\n this._label = label;\n\n this._propagate();\n }\n\n failed(label: string) {\n this._status = 'failed';\n this._label = label;\n\n this._propagate();\n }\n\n stop() {\n if (this._status === 'spin') {\n this._status = 'stop';\n\n this._propagate();\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"]}
|
|
@@ -16,10 +16,15 @@ var __decorate = (void 0) && (void 0).__decorate || function(decorators, target,
|
|
|
16
16
|
};
|
|
17
17
|
let SpinnerService = class SpinnerService {
|
|
18
18
|
// Attributes
|
|
19
|
-
|
|
19
|
+
_status = 'stop';
|
|
20
20
|
_label = '';
|
|
21
21
|
_listeners = new Set();
|
|
22
22
|
// Methods
|
|
23
|
+
_propagate() {
|
|
24
|
+
for (const listener of this._listeners){
|
|
25
|
+
listener(this.state);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
23
28
|
subscribe(listener) {
|
|
24
29
|
this._listeners.add(listener);
|
|
25
30
|
return ()=>{
|
|
@@ -27,22 +32,30 @@ let SpinnerService = class SpinnerService {
|
|
|
27
32
|
};
|
|
28
33
|
}
|
|
29
34
|
spin(label) {
|
|
30
|
-
this.
|
|
35
|
+
this._status = 'spin';
|
|
31
36
|
this._label = label;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
37
|
+
this._propagate();
|
|
38
|
+
}
|
|
39
|
+
success(label) {
|
|
40
|
+
this._status = 'success';
|
|
41
|
+
this._label = label;
|
|
42
|
+
this._propagate();
|
|
43
|
+
}
|
|
44
|
+
failed(label) {
|
|
45
|
+
this._status = 'failed';
|
|
46
|
+
this._label = label;
|
|
47
|
+
this._propagate();
|
|
35
48
|
}
|
|
36
49
|
stop() {
|
|
37
|
-
this.
|
|
38
|
-
|
|
39
|
-
|
|
50
|
+
if (this._status === 'spin') {
|
|
51
|
+
this._status = 'stop';
|
|
52
|
+
this._propagate();
|
|
40
53
|
}
|
|
41
54
|
}
|
|
42
55
|
// Properties
|
|
43
56
|
get state() {
|
|
44
57
|
return {
|
|
45
|
-
|
|
58
|
+
status: this._status,
|
|
46
59
|
label: this._label
|
|
47
60
|
};
|
|
48
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["services/spinner.service.js"],"sourcesContent":["import { injectable } from 'inversify';\nimport { container } from './inversify.config';\n\n// Interface\nexport interface SpinnerState {\n
|
|
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 SpinnerStateListener = (state: SpinnerState) => void;\n\n// Service\n@injectable()\nexport class SpinnerService {\n // Attributes\n private _status: SpinnerStatus = 'stop';\n private _label = '';\n\n private readonly _listeners = new Set<SpinnerStateListener>();\n\n // Methods\n private _propagate() {\n for (const listener of this._listeners) {\n listener(this.state);\n }\n }\n\n subscribe(listener: SpinnerStateListener) {\n this._listeners.add(listener);\n\n return () => {\n this._listeners.delete(listener);\n };\n }\n\n spin(label: string) {\n this._status = 'spin';\n this._label = label;\n\n this._propagate();\n }\n\n success(label: string) {\n this._status = 'success';\n this._label = label;\n\n this._propagate();\n }\n\n failed(label: string) {\n this._status = 'failed';\n this._label = label;\n\n this._propagate();\n }\n\n stop() {\n if (this._status === 'spin') {\n this._status = 'stop';\n\n this._propagate();\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","_status","_label","_listeners","Set","_propagate","listener","state","subscribe","add","delete","spin","label","success","failed","stop","status","injectable","container","bind","toSelf","inSingletonScope"],"mappings":"AAAA;;;;+BAeaA;;aAAAA;;2BAfc;iCAED;;;;;;;IAabA,iBAAN;IACL,aAAa;IACLC,UAAyB,OAAO;IAChCC,SAAS,GAAG;IAEHC,aAAa,IAAIC,MAA4B;IAE9D,UAAU;IACFC,aAAa;QACnB,KAAK,MAAMC,YAAY,IAAI,CAACH,UAAU,CAAE;YACtCG,SAAS,IAAI,CAACC,KAAK;QACrB;IACF;IAEAC,UAAUF,QAA8B,EAAE;QACxC,IAAI,CAACH,UAAU,CAACM,GAAG,CAACH;QAEpB,OAAO,IAAM;YACX,IAAI,CAACH,UAAU,CAACO,MAAM,CAACJ;QACzB;IACF;IAEAK,KAAKC,KAAa,EAAE;QAClB,IAAI,CAACX,OAAO,GAAG;QACf,IAAI,CAACC,MAAM,GAAGU;QAEd,IAAI,CAACP,UAAU;IACjB;IAEAQ,QAAQD,KAAa,EAAE;QACrB,IAAI,CAACX,OAAO,GAAG;QACf,IAAI,CAACC,MAAM,GAAGU;QAEd,IAAI,CAACP,UAAU;IACjB;IAEAS,OAAOF,KAAa,EAAE;QACpB,IAAI,CAACX,OAAO,GAAG;QACf,IAAI,CAACC,MAAM,GAAGU;QAEd,IAAI,CAACP,UAAU;IACjB;IAEAU,OAAO;QACL,IAAI,IAAI,CAACd,OAAO,KAAK,QAAQ;YAC3B,IAAI,CAACA,OAAO,GAAG;YAEf,IAAI,CAACI,UAAU;QACjB,CAAC;IACH;IAEA,aAAa;IACb,IAAIE,QAAsB;QACxB,OAAO;YACLS,QAAQ,IAAI,CAACf,OAAO;YACpBW,OAAO,IAAI,CAACV,MAAM;QACpB;IACF;AACF;AA1DaF;IADZiB,IAAAA,qBAAU;GACEjB;AA4DbkB,0BAAS,CAACC,IAAI,CAACnB,gBACZoB,MAAM,GACNC,gBAAgB","file":"spinner.service.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ui/global-spinner.tsx"],"names":[],"mappings":"
|
|
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"]}
|
|
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "GlobalSpinner", {
|
|
|
9
9
|
const _jsxRuntime = require("react/jsx-runtime");
|
|
10
10
|
const _ink = require("ink");
|
|
11
11
|
const _inkSpinner = /*#__PURE__*/ _interopRequireDefault(require("ink-spinner"));
|
|
12
|
+
const _logSymbols = /*#__PURE__*/ _interopRequireDefault(require("log-symbols"));
|
|
12
13
|
const _react = require("react");
|
|
13
14
|
const _services = require("../services");
|
|
14
15
|
function _interopRequireDefault(obj) {
|
|
@@ -19,7 +20,7 @@ function _interopRequireDefault(obj) {
|
|
|
19
20
|
const GlobalSpinner = ()=>{
|
|
20
21
|
// State
|
|
21
22
|
const [state, setState] = (0, _react.useState)({
|
|
22
|
-
|
|
23
|
+
status: 'stop',
|
|
23
24
|
label: ''
|
|
24
25
|
});
|
|
25
26
|
// Effect
|
|
@@ -29,15 +30,36 @@ const GlobalSpinner = ()=>{
|
|
|
29
30
|
return spinner.subscribe(setState);
|
|
30
31
|
}, []);
|
|
31
32
|
// Render
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
switch(state.status){
|
|
34
|
+
case 'spin':
|
|
35
|
+
return /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_ink.Text, {
|
|
36
|
+
children: [
|
|
37
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_inkSpinner.default, {}),
|
|
38
|
+
' ' + state.label
|
|
39
|
+
]
|
|
40
|
+
});
|
|
41
|
+
case 'success':
|
|
42
|
+
return /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_ink.Text, {
|
|
43
|
+
color: "green",
|
|
44
|
+
children: [
|
|
45
|
+
_logSymbols.default.success,
|
|
46
|
+
" ",
|
|
47
|
+
state.label
|
|
48
|
+
]
|
|
49
|
+
});
|
|
50
|
+
case 'failed':
|
|
51
|
+
return /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_ink.Text, {
|
|
52
|
+
color: "red",
|
|
53
|
+
children: [
|
|
54
|
+
_logSymbols.default.error,
|
|
55
|
+
" ",
|
|
56
|
+
state.label
|
|
57
|
+
]
|
|
58
|
+
});
|
|
59
|
+
case 'stop':
|
|
60
|
+
default:
|
|
61
|
+
return null;
|
|
39
62
|
}
|
|
40
|
-
return /*#__PURE__*/ (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {});
|
|
41
63
|
};
|
|
42
64
|
|
|
43
65
|
//# sourceMappingURL=global-spinner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ui/global-spinner.js"],"sourcesContent":["import { Text } from 'ink';\nimport Spinner from 'ink-spinner';\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>({
|
|
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,CAACT;IAC3B,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
package/dist/ui/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ui/index.ts"],"names":[],"mappings":"AAAA,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,kBAAkB,CAAC","file":"index.d.ts","sourcesContent":["export * from './global-spinner';\nexport * from './layout';\nexport * from './list';\nexport * from './static-logs';\nexport * from './workspace-tree';\n"]}
|
package/dist/ui/index.js
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
_exportStar(require("./cli-list"), exports);
|
|
6
5
|
_exportStar(require("./global-spinner"), exports);
|
|
7
6
|
_exportStar(require("./layout"), exports);
|
|
8
7
|
_exportStar(require("./list"), exports);
|
|
9
8
|
_exportStar(require("./static-logs"), exports);
|
|
9
|
+
_exportStar(require("./workspace-tree"), exports);
|
|
10
10
|
function _exportStar(from, to) {
|
|
11
11
|
Object.keys(from).forEach(function(k) {
|
|
12
12
|
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) Object.defineProperty(to, k, {
|
package/dist/ui/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ui/index.js"],"sourcesContent":["export * 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 './workspace-tree';\n"],"names":[],"mappings":"AAAA;;;;oBAAc;oBACA;oBACA;oBACA;oBACA","file":"index.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ui/static-logs.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAoB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"sources":["ui/static-logs.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAoB,MAAM,OAAO,CAAC;AAe7C,eAAO,MAAM,UAAU,EAAE,EA+CxB,CAAC","file":"static-logs.d.ts","sourcesContent":["import { useStderr } from 'ink';\nimport { FC, useLayoutEffect, } from 'react';\nimport Transport from 'winston-transport';\n\nimport { consoleFormat, container, Logger } from '../services';\nimport winston from 'winston';\n\n// Constants\nconst MESSAGE = Symbol.for('message');\n\n// Types\ninterface Info extends Record<string, unknown> {\n [MESSAGE]: string;\n}\n\n// Component\nexport const StaticLogs: FC = () => {\n // State\n const { write } = useStderr();\n\n // Effect\n useLayoutEffect(() => {\n const logger = container.get(Logger);\n\n // Remove Console transport\n for (const transport of logger.transports) {\n if (transport instanceof winston.transports.Console) {\n logger.remove(transport);\n }\n }\n\n // Add custom transport\n const transport = new class extends Transport {\n // Constructor\n constructor() {\n super({\n format: consoleFormat\n });\n }\n\n // Methods\n log(info: Info, next: () => void): void {\n setTimeout(() => {\n this.emit('logged', info);\n }, 0);\n\n write(info[MESSAGE] + '\\n');\n\n next();\n }\n };\n\n logger.add(transport);\n\n return () => {\n logger.remove(transport);\n logger.add(new winston.transports.Console({\n format: consoleFormat\n }));\n };\n }, [write]);\n\n return null;\n};\n"]}
|
package/dist/ui/static-logs.js
CHANGED
|
@@ -10,6 +10,7 @@ const _ink = require("ink");
|
|
|
10
10
|
const _react = require("react");
|
|
11
11
|
const _winstonTransport = /*#__PURE__*/ _interopRequireDefault(require("winston-transport"));
|
|
12
12
|
const _services = require("../services");
|
|
13
|
+
const _winston = /*#__PURE__*/ _interopRequireDefault(require("winston"));
|
|
13
14
|
function _interopRequireDefault(obj) {
|
|
14
15
|
return obj && obj.__esModule ? obj : {
|
|
15
16
|
default: obj
|
|
@@ -23,9 +24,14 @@ const StaticLogs = ()=>{
|
|
|
23
24
|
// Effect
|
|
24
25
|
(0, _react.useLayoutEffect)(()=>{
|
|
25
26
|
const logger = _services.container.get(_services.Logger);
|
|
26
|
-
|
|
27
|
-
logger.
|
|
28
|
-
|
|
27
|
+
// Remove Console transport
|
|
28
|
+
for (const transport of logger.transports){
|
|
29
|
+
if (transport instanceof _winston.default.transports.Console) {
|
|
30
|
+
logger.remove(transport);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// Add custom transport
|
|
34
|
+
const transport1 = new class extends _winstonTransport.default {
|
|
29
35
|
// Constructor
|
|
30
36
|
constructor(){
|
|
31
37
|
super({
|
|
@@ -40,12 +46,13 @@ const StaticLogs = ()=>{
|
|
|
40
46
|
write(info[MESSAGE] + '\n');
|
|
41
47
|
next();
|
|
42
48
|
}
|
|
43
|
-
}
|
|
49
|
+
};
|
|
50
|
+
logger.add(transport1);
|
|
44
51
|
return ()=>{
|
|
45
|
-
logger.
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
52
|
+
logger.remove(transport1);
|
|
53
|
+
logger.add(new _winston.default.transports.Console({
|
|
54
|
+
format: _services.consoleFormat
|
|
55
|
+
}));
|
|
49
56
|
};
|
|
50
57
|
}, [
|
|
51
58
|
write
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ui/static-logs.js"],"sourcesContent":["import { useStderr } from 'ink';\nimport { FC, useLayoutEffect, } from 'react';\nimport Transport from 'winston-transport';\n\nimport { consoleFormat, container, Logger } from '../services';\n\n// Constants\nconst MESSAGE = Symbol.for('message');\n\n// Types\ninterface Info extends Record<string, unknown> {\n [MESSAGE]: string;\n}\n\n// Component\nexport const StaticLogs: FC = () => {\n // State\n const { write } = useStderr();\n\n // Effect\n useLayoutEffect(() => {\n const logger = container.get(Logger);\n const
|
|
1
|
+
{"version":3,"sources":["ui/static-logs.js"],"sourcesContent":["import { useStderr } from 'ink';\nimport { FC, useLayoutEffect, } from 'react';\nimport Transport from 'winston-transport';\n\nimport { consoleFormat, container, Logger } from '../services';\nimport winston from 'winston';\n\n// Constants\nconst MESSAGE = Symbol.for('message');\n\n// Types\ninterface Info extends Record<string, unknown> {\n [MESSAGE]: string;\n}\n\n// Component\nexport const StaticLogs: FC = () => {\n // State\n const { write } = useStderr();\n\n // Effect\n useLayoutEffect(() => {\n const logger = container.get(Logger);\n\n // Remove Console transport\n for (const transport of logger.transports) {\n if (transport instanceof winston.transports.Console) {\n logger.remove(transport);\n }\n }\n\n // Add custom transport\n const transport = new class extends Transport {\n // Constructor\n constructor() {\n super({\n format: consoleFormat\n });\n }\n\n // Methods\n log(info: Info, next: () => void): void {\n setTimeout(() => {\n this.emit('logged', info);\n }, 0);\n\n write(info[MESSAGE] + '\\n');\n\n next();\n }\n };\n\n logger.add(transport);\n\n return () => {\n logger.remove(transport);\n logger.add(new winston.transports.Console({\n format: consoleFormat\n }));\n };\n }, [write]);\n\n return null;\n};\n"],"names":["StaticLogs","MESSAGE","Symbol","for","write","useStderr","useLayoutEffect","logger","container","get","Logger","transport","transports","winston","Console","remove","Transport","constructor","format","consoleFormat","log","info","next","setTimeout","emit","add"],"mappings":"AAAA;;;;+BAgBaA;;aAAAA;;qBAhBa;uBACW;uEACf;0BAE2B;8DAC7B;;;;;;AAEpB,YAAY;AACZ,MAAMC,UAAUC,OAAOC,GAAG,CAAC;AAQpB,MAAMH,aAAiB,IAAM;IAClC,QAAQ;IACR,MAAM,EAAEI,MAAK,EAAE,GAAGC,IAAAA,cAAS;IAE3B,SAAS;IACTC,IAAAA,sBAAe,EAAC,IAAM;QACpB,MAAMC,SAASC,mBAAS,CAACC,GAAG,CAACC,gBAAM;QAEnC,2BAA2B;QAC3B,KAAK,MAAMC,aAAaJ,OAAOK,UAAU,CAAE;YACzC,IAAID,qBAAqBE,gBAAO,CAACD,UAAU,CAACE,OAAO,EAAE;gBACnDP,OAAOQ,MAAM,CAACJ;YAChB,CAAC;QACH;QAEA,uBAAuB;QACvB,MAAMA,aAAY,IAAI,cAAcK,yBAAS;YAC3C,cAAc;YACdC,aAAc;gBACZ,KAAK,CAAC;oBACJC,QAAQC,uBAAa;gBACvB;YACF;YAEA,UAAU;YACVC,IAAIC,IAAU,EAAEC,IAAgB,EAAQ;gBACtCC,WAAW,IAAM;oBACf,IAAI,CAACC,IAAI,CAAC,UAAUH;gBACtB,GAAG;gBAEHjB,MAAMiB,IAAI,CAACpB,QAAQ,GAAG;gBAEtBqB;YACF;QACF;QAEAf,OAAOkB,GAAG,CAACd;QAEX,OAAO,IAAM;YACXJ,OAAOQ,MAAM,CAACJ;YACdJ,OAAOkB,GAAG,CAAC,IAAIZ,gBAAO,CAACD,UAAU,CAACE,OAAO,CAAC;gBACxCI,QAAQC,uBAAa;YACvB;QACF;IACF,GAAG;QAACf;KAAM;IAEV,OAAO,IAAI;AACb","file":"static-logs.js"}
|
|
@@ -0,0 +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,CAwChD,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 <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 </Text>\n )) }\n </Text>\n );\n};\n"]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "WorkspaceTree", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: ()=>WorkspaceTree
|
|
8
|
+
});
|
|
9
|
+
const _jsxRuntime = require("react/jsx-runtime");
|
|
10
|
+
const _ink = require("ink");
|
|
11
|
+
const _react = require("react");
|
|
12
|
+
// Utils
|
|
13
|
+
const style = (dev)=>({
|
|
14
|
+
color: dev ? 'blue' : ''
|
|
15
|
+
});
|
|
16
|
+
const WorkspaceTree = (props)=>{
|
|
17
|
+
const { workspace: wks , dev =false , level ='' } = props;
|
|
18
|
+
// State
|
|
19
|
+
const [deps, setDeps] = (0, _react.useState)([]);
|
|
20
|
+
// Effects
|
|
21
|
+
(0, _react.useEffect)(()=>void (async ()=>{
|
|
22
|
+
const deps = [];
|
|
23
|
+
for await (const dep of wks.dependencies()){
|
|
24
|
+
deps.push([
|
|
25
|
+
dep,
|
|
26
|
+
null
|
|
27
|
+
]);
|
|
28
|
+
}
|
|
29
|
+
for await (const dep1 of wks.devDependencies()){
|
|
30
|
+
deps.push([
|
|
31
|
+
dep1,
|
|
32
|
+
true
|
|
33
|
+
]);
|
|
34
|
+
}
|
|
35
|
+
setDeps(deps);
|
|
36
|
+
})(), [
|
|
37
|
+
wks
|
|
38
|
+
]);
|
|
39
|
+
// Render
|
|
40
|
+
return /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_ink.Text, {
|
|
41
|
+
children: [
|
|
42
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_ink.Text, {
|
|
43
|
+
...style(dev),
|
|
44
|
+
children: wks.name
|
|
45
|
+
}),
|
|
46
|
+
wks.version && /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_ink.Text, {
|
|
47
|
+
color: "grey",
|
|
48
|
+
children: [
|
|
49
|
+
"@",
|
|
50
|
+
wks.version
|
|
51
|
+
]
|
|
52
|
+
}),
|
|
53
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_ink.Newline, {}),
|
|
54
|
+
deps.map(([dep, isDev], idx)=>/*#__PURE__*/ (0, _jsxRuntime.jsxs)(_ink.Text, {
|
|
55
|
+
children: [
|
|
56
|
+
level,
|
|
57
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsxs)(_ink.Text, {
|
|
58
|
+
...style(dev),
|
|
59
|
+
children: [
|
|
60
|
+
idx === deps.length - 1 ? '└' : '├',
|
|
61
|
+
"─",
|
|
62
|
+
' '
|
|
63
|
+
]
|
|
64
|
+
}),
|
|
65
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(WorkspaceTree, {
|
|
66
|
+
workspace: dep,
|
|
67
|
+
dev: isDev ?? dev,
|
|
68
|
+
level: /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
69
|
+
children: [
|
|
70
|
+
level,
|
|
71
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsxs)(_ink.Text, {
|
|
72
|
+
...style(dev),
|
|
73
|
+
children: [
|
|
74
|
+
idx === deps.length - 1 ? ' ' : '│',
|
|
75
|
+
' '
|
|
76
|
+
]
|
|
77
|
+
})
|
|
78
|
+
]
|
|
79
|
+
})
|
|
80
|
+
})
|
|
81
|
+
]
|
|
82
|
+
}, dep.name))
|
|
83
|
+
]
|
|
84
|
+
});
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
//# sourceMappingURL=workspace-tree.js.map
|
|
@@ -0,0 +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 && (<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 ?? dev}\n level={<>{ level }<Text {...style(dev)}>{ idx === deps.length - 1 ? ' ' : '│' }{' '}</Text></>}\n />\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","Newline","map","isDev","idx","length"],"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,kBAAK,sBAACF,SAAI;gBAACb,OAAM;;oBAAO;oBAAGG,IAAIY,OAAO;;;0BACnD,qBAACC,YAAO;YAENX,KAAKY,GAAG,CAAC,CAAC,CAACR,KAAKS,MAAM,EAAEC,oBACxB,sBAACN,SAAI;;wBACDT;sCAAO,sBAACS,SAAI;4BAAE,GAAGf,MAAMC,IAAI;;gCAAIoB,QAAQd,KAAKe,MAAM,GAAG,IAAI,MAAM,GAAG;gCAAC;gCAAE;;;sCACvE,qBAACvB;4BACCK,WAAWO;4BACXV,KAAKmB,SAASnB;4BACdK,qBAAO;;oCAAIA;kDAAO,sBAACS,SAAI;wCAAE,GAAGf,MAAMC,IAAI;;4CAAIoB,QAAQd,KAAKe,MAAM,GAAG,IAAI,MAAM,GAAG;4CAAG;;;;;;;mBALzEX,IAAIK,IAAI;;;AAW3B","file":"workspace-tree.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jujulego/jill",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.3",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"ink-spinner": "^4.0.3",
|
|
38
38
|
"inversify": "^6.0.1",
|
|
39
39
|
"inversify-inject-decorators": "^3.1.0",
|
|
40
|
+
"log-symbols": "^4.1.0",
|
|
40
41
|
"normalize-package-data": "^4.0.0",
|
|
41
42
|
"react": "^17.0.2",
|
|
42
43
|
"reflect-metadata": "^0.1.13",
|
package/dist/ui/cli-list.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export declare class CliList {
|
|
2
|
-
private _headers?;
|
|
3
|
-
private readonly _data;
|
|
4
|
-
private readonly _columns;
|
|
5
|
-
private static _capitalize;
|
|
6
|
-
private static _length;
|
|
7
|
-
private _updateColumns;
|
|
8
|
-
private _formatValue;
|
|
9
|
-
setHeaders(headers: string[]): void;
|
|
10
|
-
add(data: string[]): void;
|
|
11
|
-
lines(): Generator<string, void>;
|
|
12
|
-
get columns(): number[];
|
|
13
|
-
get headers(): string[];
|
|
14
|
-
get data(): string[][];
|
|
15
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["ui/cli-list.ts"],"names":[],"mappings":"AAGA,qBAAa,OAAO;IAElB,OAAO,CAAC,QAAQ,CAAC,CAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IAGzC,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B,OAAO,CAAC,MAAM,CAAC,OAAO;IAItB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,YAAY;IAIpB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAKnC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAKxB,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC;IAajC,IAAI,OAAO,IAAI,MAAM,EAAE,CAEtB;IAED,IAAI,OAAO,IAAI,MAAM,EAAE,CAEtB;IAED,IAAI,IAAI,IAAI,MAAM,EAAE,EAAE,CAErB;CACF","file":"cli-list.d.ts","sourcesContent":["import chalk from 'chalk';\n\n// Class\nexport class CliList {\n // Attributes\n private _headers?: string[];\n private readonly _data: string[][] = [];\n private readonly _columns: number[] = [];\n\n // Methods\n private static _capitalize(txt: string): string {\n return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();\n }\n\n private static _length(txt: string): number {\n return txt.replace(/\\033\\[[^m]*m/g, '').length;\n }\n\n private _updateColumns(data: string[]): void {\n // Add missing columns\n while (data.length > this._columns.length) {\n this._columns.push(0);\n }\n\n // Update columns\n for (let i = 0; i < data.length; ++i) {\n this._columns[i] = Math.max(this._columns[i], CliList._length(data[i]));\n }\n }\n\n private _formatValue(value: string, idx: number): string {\n return value + ' '.repeat(this._columns[idx] - CliList._length(value));\n }\n \n setHeaders(headers: string[]): void {\n this._updateColumns(headers);\n this._headers = headers.map(CliList._capitalize);\n }\n \n add(data: string[]): void {\n this._updateColumns(data);\n this._data.push(data);\n }\n\n *lines(): Generator<string, void> {\n if (this._headers) {\n yield this._headers.map((v, i) => chalk.bold(this._formatValue(v, i)))\n .join(' ');\n }\n\n for (const data of this._data) {\n yield data.map((v, i) => this._formatValue(v, i))\n .join(' ');\n }\n }\n\n // Properties\n get columns(): number[] {\n return this._columns;\n }\n\n get headers(): string[] {\n return this._headers || [];\n }\n\n get data(): string[][] {\n return this._data;\n }\n}"]}
|
package/dist/ui/cli-list.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "CliList", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: ()=>CliList
|
|
8
|
-
});
|
|
9
|
-
const _chalk = /*#__PURE__*/ _interopRequireDefault(require("chalk"));
|
|
10
|
-
function _interopRequireDefault(obj) {
|
|
11
|
-
return obj && obj.__esModule ? obj : {
|
|
12
|
-
default: obj
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
class CliList {
|
|
16
|
-
_data = [];
|
|
17
|
-
_columns = [];
|
|
18
|
-
// Methods
|
|
19
|
-
static _capitalize(txt) {
|
|
20
|
-
return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();
|
|
21
|
-
}
|
|
22
|
-
static _length(txt) {
|
|
23
|
-
return txt.replace(/\033\[[^m]*m/g, '').length;
|
|
24
|
-
}
|
|
25
|
-
_updateColumns(data) {
|
|
26
|
-
// Add missing columns
|
|
27
|
-
while(data.length > this._columns.length){
|
|
28
|
-
this._columns.push(0);
|
|
29
|
-
}
|
|
30
|
-
// Update columns
|
|
31
|
-
for(let i = 0; i < data.length; ++i){
|
|
32
|
-
this._columns[i] = Math.max(this._columns[i], CliList._length(data[i]));
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
_formatValue(value, idx) {
|
|
36
|
-
return value + ' '.repeat(this._columns[idx] - CliList._length(value));
|
|
37
|
-
}
|
|
38
|
-
setHeaders(headers) {
|
|
39
|
-
this._updateColumns(headers);
|
|
40
|
-
this._headers = headers.map(CliList._capitalize);
|
|
41
|
-
}
|
|
42
|
-
add(data) {
|
|
43
|
-
this._updateColumns(data);
|
|
44
|
-
this._data.push(data);
|
|
45
|
-
}
|
|
46
|
-
*lines() {
|
|
47
|
-
if (this._headers) {
|
|
48
|
-
yield this._headers.map((v, i)=>_chalk.default.bold(this._formatValue(v, i))).join(' ');
|
|
49
|
-
}
|
|
50
|
-
for (const data of this._data){
|
|
51
|
-
yield data.map((v, i)=>this._formatValue(v, i)).join(' ');
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
// Properties
|
|
55
|
-
get columns() {
|
|
56
|
-
return this._columns;
|
|
57
|
-
}
|
|
58
|
-
get headers() {
|
|
59
|
-
return this._headers || [];
|
|
60
|
-
}
|
|
61
|
-
get data() {
|
|
62
|
-
return this._data;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
//# sourceMappingURL=cli-list.js.map
|
package/dist/ui/cli-list.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["ui/cli-list.js"],"sourcesContent":["import chalk from 'chalk';\n\n// Class\nexport class CliList {\n // Attributes\n private _headers?: string[];\n private readonly _data: string[][] = [];\n private readonly _columns: number[] = [];\n\n // Methods\n private static _capitalize(txt: string): string {\n return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();\n }\n\n private static _length(txt: string): number {\n return txt.replace(/\\033\\[[^m]*m/g, '').length;\n }\n\n private _updateColumns(data: string[]): void {\n // Add missing columns\n while (data.length > this._columns.length) {\n this._columns.push(0);\n }\n\n // Update columns\n for (let i = 0; i < data.length; ++i) {\n this._columns[i] = Math.max(this._columns[i], CliList._length(data[i]));\n }\n }\n\n private _formatValue(value: string, idx: number): string {\n return value + ' '.repeat(this._columns[idx] - CliList._length(value));\n }\n \n setHeaders(headers: string[]): void {\n this._updateColumns(headers);\n this._headers = headers.map(CliList._capitalize);\n }\n \n add(data: string[]): void {\n this._updateColumns(data);\n this._data.push(data);\n }\n\n *lines(): Generator<string, void> {\n if (this._headers) {\n yield this._headers.map((v, i) => chalk.bold(this._formatValue(v, i)))\n .join(' ');\n }\n\n for (const data of this._data) {\n yield data.map((v, i) => this._formatValue(v, i))\n .join(' ');\n }\n }\n\n // Properties\n get columns(): number[] {\n return this._columns;\n }\n\n get headers(): string[] {\n return this._headers || [];\n }\n\n get data(): string[][] {\n return this._data;\n }\n}"],"names":["CliList","_data","_columns","_capitalize","txt","charAt","toUpperCase","substring","toLowerCase","_length","replace","length","_updateColumns","data","push","i","Math","max","_formatValue","value","idx","repeat","setHeaders","headers","_headers","map","add","lines","v","chalk","bold","join","columns"],"mappings":"AAAA;;;;+BAGaA;;aAAAA;;4DAHK;;;;;;AAGX,MAAMA;IAGMC,QAAoB,EAAE,CAAC;IACvBC,WAAqB,EAAE,CAAC;IAEzC,UAAU;IACV,OAAeC,YAAYC,GAAW,EAAU;QAC9C,OAAOA,IAAIC,MAAM,CAAC,GAAGC,WAAW,KAAKF,IAAIG,SAAS,CAAC,GAAGC,WAAW;IACnE;IAEA,OAAeC,QAAQL,GAAW,EAAU;QAC1C,OAAOA,IAAIM,OAAO,CAAC,iBAAiB,IAAIC,MAAM;IAChD;IAEQC,eAAeC,IAAc,EAAQ;QAC3C,sBAAsB;QACtB,MAAOA,KAAKF,MAAM,GAAG,IAAI,CAACT,QAAQ,CAACS,MAAM,CAAE;YACzC,IAAI,CAACT,QAAQ,CAACY,IAAI,CAAC;QACrB;QAEA,iBAAiB;QACjB,IAAK,IAAIC,IAAI,GAAGA,IAAIF,KAAKF,MAAM,EAAE,EAAEI,EAAG;YACpC,IAAI,CAACb,QAAQ,CAACa,EAAE,GAAGC,KAAKC,GAAG,CAAC,IAAI,CAACf,QAAQ,CAACa,EAAE,EAAEf,QAAQS,OAAO,CAACI,IAAI,CAACE,EAAE;QACvE;IACF;IAEQG,aAAaC,KAAa,EAAEC,GAAW,EAAU;QACvD,OAAOD,QAAQ,IAAIE,MAAM,CAAC,IAAI,CAACnB,QAAQ,CAACkB,IAAI,GAAGpB,QAAQS,OAAO,CAACU;IACjE;IAEAG,WAAWC,OAAiB,EAAQ;QAClC,IAAI,CAACX,cAAc,CAACW;QACpB,IAAI,CAACC,QAAQ,GAAGD,QAAQE,GAAG,CAACzB,QAAQG,WAAW;IACjD;IAEAuB,IAAIb,IAAc,EAAQ;QACxB,IAAI,CAACD,cAAc,CAACC;QACpB,IAAI,CAACZ,KAAK,CAACa,IAAI,CAACD;IAClB;IAEA,CAACc,QAAiC;QAChC,IAAI,IAAI,CAACH,QAAQ,EAAE;YACjB,MAAM,IAAI,CAACA,QAAQ,CAACC,GAAG,CAAC,CAACG,GAAGb,IAAMc,cAAK,CAACC,IAAI,CAAC,IAAI,CAACZ,YAAY,CAACU,GAAGb,KAC7DgB,IAAI,CAAC;QACZ,CAAC;QAED,KAAK,MAAMlB,QAAQ,IAAI,CAACZ,KAAK,CAAE;YAC7B,MAAMY,KAAKY,GAAG,CAAC,CAACG,GAAGb,IAAM,IAAI,CAACG,YAAY,CAACU,GAAGb,IAC3CgB,IAAI,CAAC;QACV;IACF;IAEA,aAAa;IACb,IAAIC,UAAoB;QACtB,OAAO,IAAI,CAAC9B,QAAQ;IACtB;IAEA,IAAIqB,UAAoB;QACtB,OAAO,IAAI,CAACC,QAAQ,IAAI,EAAE;IAC5B;IAEA,IAAIX,OAAmB;QACrB,OAAO,IAAI,CAACZ,KAAK;IACnB;AACF","file":"cli-list.js"}
|