@jujulego/jill 2.0.0-alpha.1 → 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.
Files changed (88) hide show
  1. package/dist/commands/list.d.ts.map +1 -1
  2. package/dist/commands/list.js +16 -15
  3. package/dist/commands/list.js.map +1 -1
  4. package/dist/commands/tree.d.ts +3 -0
  5. package/dist/commands/tree.d.ts.map +1 -0
  6. package/dist/commands/tree.js +35 -0
  7. package/dist/commands/tree.js.map +1 -0
  8. package/dist/index.d.ts +1 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +1 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/main.d.ts.map +1 -1
  13. package/dist/main.js +5 -2
  14. package/dist/main.js.map +1 -1
  15. package/dist/middlewares/global-config.d.ts +5 -0
  16. package/dist/middlewares/global-config.d.ts.map +1 -0
  17. package/dist/middlewares/global-config.js +29 -0
  18. package/dist/middlewares/global-config.js.map +1 -0
  19. package/dist/{modifiers → middlewares}/index.d.ts +2 -1
  20. package/dist/middlewares/index.d.ts.map +1 -0
  21. package/dist/{modifiers → middlewares}/index.js +2 -1
  22. package/dist/middlewares/index.js.map +1 -0
  23. package/dist/{modifiers → middlewares}/load-project.d.ts +1 -2
  24. package/dist/middlewares/load-project.d.ts.map +1 -0
  25. package/dist/middlewares/load-project.js +41 -0
  26. package/dist/middlewares/load-project.js.map +1 -0
  27. package/dist/middlewares/load-workspace.d.ts +3 -0
  28. package/dist/middlewares/load-workspace.d.ts.map +1 -0
  29. package/dist/middlewares/load-workspace.js +42 -0
  30. package/dist/middlewares/load-workspace.js.map +1 -0
  31. package/dist/middlewares/setup-ink.d.ts +1 -0
  32. package/dist/middlewares/setup-ink.d.ts.map +1 -0
  33. package/dist/{modifiers → middlewares}/setup-ink.js +9 -6
  34. package/dist/middlewares/setup-ink.js.map +1 -0
  35. package/dist/services/inversify.config.d.ts +1 -1
  36. package/dist/services/inversify.config.d.ts.map +1 -1
  37. package/dist/services/inversify.config.js +2 -2
  38. package/dist/services/inversify.config.js.map +1 -1
  39. package/dist/services/logger.service.d.ts +3 -2
  40. package/dist/services/logger.service.d.ts.map +1 -1
  41. package/dist/services/logger.service.js +32 -15
  42. package/dist/services/logger.service.js.map +1 -1
  43. package/dist/services/spinner.service.d.ts +6 -2
  44. package/dist/services/spinner.service.d.ts.map +1 -1
  45. package/dist/services/spinner.service.js +22 -9
  46. package/dist/services/spinner.service.js.map +1 -1
  47. package/dist/ui/global-spinner.d.ts.map +1 -1
  48. package/dist/ui/global-spinner.js +31 -9
  49. package/dist/ui/global-spinner.js.map +1 -1
  50. package/dist/ui/index.d.ts +2 -1
  51. package/dist/ui/index.d.ts.map +1 -1
  52. package/dist/ui/index.js +2 -1
  53. package/dist/ui/index.js.map +1 -1
  54. package/dist/ui/layout.d.ts.map +1 -1
  55. package/dist/ui/layout.js +3 -2
  56. package/dist/ui/layout.js.map +1 -1
  57. package/dist/ui/list.d.ts +6 -0
  58. package/dist/ui/list.d.ts.map +1 -0
  59. package/dist/ui/list.js +30 -0
  60. package/dist/ui/list.js.map +1 -0
  61. package/dist/ui/static-logs.d.ts.map +1 -1
  62. package/dist/ui/static-logs.js +28 -44
  63. package/dist/ui/static-logs.js.map +1 -1
  64. package/dist/ui/workspace-tree.d.ts +8 -0
  65. package/dist/ui/workspace-tree.d.ts.map +1 -0
  66. package/dist/ui/workspace-tree.js +87 -0
  67. package/dist/ui/workspace-tree.js.map +1 -0
  68. package/dist/utils.d.ts +9 -3
  69. package/dist/utils.d.ts.map +1 -1
  70. package/dist/utils.js +16 -5
  71. package/dist/utils.js.map +1 -1
  72. package/package.json +3 -1
  73. package/dist/modifiers/global-config.d.ts +0 -6
  74. package/dist/modifiers/global-config.d.ts.map +0 -1
  75. package/dist/modifiers/global-config.js +0 -24
  76. package/dist/modifiers/global-config.js.map +0 -1
  77. package/dist/modifiers/index.d.ts.map +0 -1
  78. package/dist/modifiers/index.js.map +0 -1
  79. package/dist/modifiers/load-project.d.ts.map +0 -1
  80. package/dist/modifiers/load-project.js +0 -39
  81. package/dist/modifiers/load-project.js.map +0 -1
  82. package/dist/modifiers/setup-ink.d.ts +0 -2
  83. package/dist/modifiers/setup-ink.d.ts.map +0 -1
  84. package/dist/modifiers/setup-ink.js.map +0 -1
  85. package/dist/ui/cli-list.d.ts +0 -15
  86. package/dist/ui/cli-list.d.ts.map +0 -1
  87. package/dist/ui/cli-list.js +0 -66
  88. package/dist/ui/cli-list.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["commands/list.ts"],"names":[],"mappings":";AAYA,oBAAY,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAC7D,oBAAY,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;AA8BtD,wBAqIG","file":"list.d.ts","sourcesContent":["import chalk from 'chalk';\nimport path from 'node:path';\nimport slugify from 'slugify';\n\nimport { AffectedFilter, Pipeline, PrivateFilter, ScriptsFilter } from '../filters';\nimport { loadProject, setupInk } from '../modifiers';\nimport { Project, Workspace } from '../project';\nimport { container, CURRENT_PROJECT } from '../services';\nimport { applyModifiers, defineCommand } from '../utils';\nimport { CliList } from '../ui';\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) => applyModifiers(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.get<Project>(CURRENT_PROJECT);\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 list = new CliList();\n\n if (args.headers ?? (attrs.length > 1)) {\n list.setHeaders(attrs);\n }\n\n for (const d of data) {\n if (d.root) {\n d.root = path.relative(process.cwd(), d.root) || '.';\n }\n\n list.add(attrs.map(attr => d[attr] || ''));\n }\n\n for (const d of list.lines()) {\n console.log(d);\n }\n }\n }\n});\n"]}
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"]}
@@ -7,14 +7,16 @@ Object.defineProperty(exports, // Command
7
7
  enumerable: true,
8
8
  get: ()=>_default
9
9
  });
10
+ const _jsxRuntime = require("react/jsx-runtime");
10
11
  const _chalk = /*#__PURE__*/ _interopRequireDefault(require("chalk"));
11
12
  const _nodePath = /*#__PURE__*/ _interopRequireDefault(require("node:path"));
12
13
  const _slugify = /*#__PURE__*/ _interopRequireDefault(require("slugify"));
13
14
  const _filters = require("../filters");
14
- const _modifiers = require("../modifiers");
15
+ const _middlewares = require("../middlewares");
16
+ const _project = require("../project");
15
17
  const _services = require("../services");
16
- const _utils = require("../utils");
17
18
  const _ui = require("../ui");
19
+ const _utils = require("../utils");
18
20
  function _interopRequireDefault(obj) {
19
21
  return obj && obj.__esModule ? obj : {
20
22
  default: obj
@@ -57,9 +59,9 @@ const _default = (0, _utils.defineCommand)({
57
59
  'ls'
58
60
  ],
59
61
  describe: 'List workspaces',
60
- builder: (yargs)=>(0, _utils.applyModifiers)(yargs, [
61
- _modifiers.setupInk,
62
- _modifiers.loadProject
62
+ builder: (yargs)=>(0, _utils.applyMiddlewares)(yargs, [
63
+ _middlewares.setupInk,
64
+ _middlewares.loadProject
63
65
  ])// Filters
64
66
  .option('private', {
65
67
  type: 'boolean',
@@ -124,7 +126,7 @@ const _default = (0, _utils.defineCommand)({
124
126
  pipeline.add(new _filters.AffectedFilter(args.affected, args.affectedRevFallback, args.affectedRevSort));
125
127
  }
126
128
  // Load workspaces
127
- const project = _services.container.get(_services.CURRENT_PROJECT);
129
+ const project = _services.container.getNamed(_project.Project, _services.CURRENT);
128
130
  const workspaces = [];
129
131
  for await (const wks of pipeline.filter(project.workspaces())){
130
132
  workspaces.push(wks);
@@ -149,19 +151,18 @@ const _default = (0, _utils.defineCommand)({
149
151
  console.log(JSON.stringify(data));
150
152
  }
151
153
  } else {
152
- const list = new _ui.CliList();
153
- if (args.headers ?? attrs.length > 1) {
154
- list.setHeaders(attrs);
155
- }
154
+ const app = _services.container.get(_services.INK_APP);
156
155
  for (const d of data){
157
156
  if (d.root) {
158
- d.root = _nodePath.default.relative(process.cwd(), d.root) || '.';
157
+ d.root = _nodePath.default.relative(process.cwd(), d.root) ?? '.';
159
158
  }
160
- list.add(attrs.map((attr)=>d[attr] || ''));
161
- }
162
- for (const d1 of list.lines()){
163
- console.log(d1);
164
159
  }
160
+ app.rerender(/*#__PURE__*/ (0, _jsxRuntime.jsx)(_ui.Layout, {
161
+ children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_ui.List, {
162
+ items: data,
163
+ headers: args.headers ?? attrs.length > 1
164
+ })
165
+ }));
165
166
  }
166
167
  }
167
168
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["commands/list.js"],"sourcesContent":["import chalk from 'chalk';\nimport path from 'node:path';\nimport slugify from 'slugify';\n\nimport { AffectedFilter, Pipeline, PrivateFilter, ScriptsFilter } from '../filters';\nimport { loadProject, setupInk } from '../modifiers';\nimport { Project, Workspace } from '../project';\nimport { container, CURRENT_PROJECT } from '../services';\nimport { applyModifiers, defineCommand } from '../utils';\nimport { CliList } from '../ui';\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) => applyModifiers(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.get<Project>(CURRENT_PROJECT);\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 list = new CliList();\n\n if (args.headers ?? (attrs.length > 1)) {\n list.setHeaders(attrs);\n }\n\n for (const d of data) {\n if (d.root) {\n d.root = path.relative(process.cwd(), d.root) || '.';\n }\n\n list.add(attrs.map(attr => d[attr] || ''));\n }\n\n for (const d of list.lines()) {\n console.log(d);\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","applyModifiers","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","get","CURRENT_PROJECT","workspaces","filter","push","length","long","map","process","stdout","isTTY","console","log","JSON","stringify","list","CliList","headers","setHeaders","d","path","relative","lines"],"mappings":"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","file":"list.js"}
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":"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","file":"list.js"}
@@ -0,0 +1,3 @@
1
+ /// <reference types="yargs" />
2
+ declare const _default: import("yargs").CommandModule<unknown, unknown>;
3
+ export default _default;
@@ -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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export * from './filters';
2
2
  export * from './git';
3
- export * from './modifiers';
3
+ export * from './middlewares';
4
4
  export * from './project';
5
5
  export * from './services';
6
6
  export * from './ui';
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,aAAa,CAAC;AAC5B,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 './modifiers';\nexport * from './project';\nexport * from './services';\nexport * from './ui';\nexport * from './utils';\n"]}
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 CHANGED
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  _exportStar(require("./filters"), exports);
6
6
  _exportStar(require("./git"), exports);
7
- _exportStar(require("./modifiers"), exports);
7
+ _exportStar(require("./middlewares"), exports);
8
8
  _exportStar(require("./project"), exports);
9
9
  _exportStar(require("./services"), exports);
10
10
  _exportStar(require("./ui"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.js"],"sourcesContent":["export * from './filters';\nexport * from './git';\nexport * from './modifiers';\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"}
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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["main.ts"],"names":[],"mappings":"","file":"main.d.ts","sourcesContent":["import yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\n\nimport { globalConfig } from './modifiers';\nimport pkg from '../package.json';\n\n// Bootstrap\n(async () => {\n // Setup yargs\n const parser = yargs(hideBin(process.argv))\n .scriptName('jill')\n .completion('completion', 'Generate bash completion script')\n .help('help', 'Show help for a command')\n .version('version', 'Show version', pkg.version)\n .wrap(yargs.terminalWidth());\n\n // Middlewares\n globalConfig(parser);\n\n // Parse !\n await parser\n .commandDir('commands', {\n visit: obj => obj.default\n })\n .demandCommand()\n .recommendCommands()\n .strict()\n .parse();\n})();\n"]}
1
+ {"version":3,"sources":["main.ts"],"names":[],"mappings":"","file":"main.d.ts","sourcesContent":["import yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\n\nimport pkg from '../package.json';\nimport { globalConfig } from './middlewares';\nimport { applyMiddlewares } from './utils';\n\n// Bootstrap\n(async () => {\n // Setup yargs\n const parser = yargs(hideBin(process.argv))\n .scriptName('jill')\n .completion('completion', 'Generate bash completion script')\n .help('help', 'Show help for a command')\n .version('version', 'Show version', pkg.version)\n .wrap(yargs.terminalWidth());\n\n // Middlewares\n applyMiddlewares(parser, [globalConfig]);\n\n // Parse !\n await parser\n .commandDir('commands', {\n visit: obj => obj.default\n })\n .demandCommand()\n .recommendCommands()\n .strict()\n .parse();\n})();\n"]}
package/dist/main.js CHANGED
@@ -4,8 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  const _yargs = /*#__PURE__*/ _interopRequireDefault(require("yargs"));
6
6
  const _helpers = require("yargs/helpers");
7
- const _modifiers = require("./modifiers");
8
7
  const _packageJson = /*#__PURE__*/ _interopRequireDefault(require("../package.json"));
8
+ const _middlewares = require("./middlewares");
9
+ const _utils = require("./utils");
9
10
  function _interopRequireDefault(obj) {
10
11
  return obj && obj.__esModule ? obj : {
11
12
  default: obj
@@ -16,7 +17,9 @@ function _interopRequireDefault(obj) {
16
17
  // Setup yargs
17
18
  const parser = (0, _yargs.default)((0, _helpers.hideBin)(process.argv)).scriptName('jill').completion('completion', 'Generate bash completion script').help('help', 'Show help for a command').version('version', 'Show version', _packageJson.default.version).wrap(_yargs.default.terminalWidth());
18
19
  // Middlewares
19
- (0, _modifiers.globalConfig)(parser);
20
+ (0, _utils.applyMiddlewares)(parser, [
21
+ _middlewares.globalConfig
22
+ ]);
20
23
  // Parse !
21
24
  await parser.commandDir('commands', {
22
25
  visit: (obj)=>obj.default
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["main.js"],"sourcesContent":["import yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\n\nimport { globalConfig } from './modifiers';\nimport pkg from '../package.json';\n\n// Bootstrap\n(async () => {\n // Setup yargs\n const parser = yargs(hideBin(process.argv))\n .scriptName('jill')\n .completion('completion', 'Generate bash completion script')\n .help('help', 'Show help for a command')\n .version('version', 'Show version', pkg.version)\n .wrap(yargs.terminalWidth());\n\n // Middlewares\n globalConfig(parser);\n\n // Parse !\n await parser\n .commandDir('commands', {\n visit: obj => obj.default\n })\n .demandCommand()\n .recommendCommands()\n .strict()\n .parse();\n})();\n"],"names":["parser","yargs","hideBin","process","argv","scriptName","completion","help","version","pkg","wrap","terminalWidth","globalConfig","commandDir","visit","obj","default","demandCommand","recommendCommands","strict","parse"],"mappings":"AAAA;;;;4DAAkB;yBACM;2BAEK;kEACb;;;;;;AAEhB,YAAY;AACX,CAAA,UAAY;IACX,cAAc;IACd,MAAMA,SAASC,IAAAA,cAAK,EAACC,IAAAA,gBAAO,EAACC,QAAQC,IAAI,GACtCC,UAAU,CAAC,QACXC,UAAU,CAAC,cAAc,mCACzBC,IAAI,CAAC,QAAQ,2BACbC,OAAO,CAAC,WAAW,gBAAgBC,oBAAG,CAACD,OAAO,EAC9CE,IAAI,CAACT,cAAK,CAACU,aAAa;IAE3B,cAAc;IACdC,IAAAA,uBAAY,EAACZ;IAEb,UAAU;IACV,MAAMA,OACHa,UAAU,CAAC,YAAY;QACtBC,OAAOC,CAAAA,MAAOA,IAAIC,OAAO;IAC3B,GACCC,aAAa,GACbC,iBAAiB,GACjBC,MAAM,GACNC,KAAK;AACV,CAAA","file":"main.js"}
1
+ {"version":3,"sources":["main.js"],"sourcesContent":["import yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\n\nimport pkg from '../package.json';\nimport { globalConfig } from './middlewares';\nimport { applyMiddlewares } from './utils';\n\n// Bootstrap\n(async () => {\n // Setup yargs\n const parser = yargs(hideBin(process.argv))\n .scriptName('jill')\n .completion('completion', 'Generate bash completion script')\n .help('help', 'Show help for a command')\n .version('version', 'Show version', pkg.version)\n .wrap(yargs.terminalWidth());\n\n // Middlewares\n applyMiddlewares(parser, [globalConfig]);\n\n // Parse !\n await parser\n .commandDir('commands', {\n visit: obj => obj.default\n })\n .demandCommand()\n .recommendCommands()\n .strict()\n .parse();\n})();\n"],"names":["parser","yargs","hideBin","process","argv","scriptName","completion","help","version","pkg","wrap","terminalWidth","applyMiddlewares","globalConfig","commandDir","visit","obj","default","demandCommand","recommendCommands","strict","parse"],"mappings":"AAAA;;;;4DAAkB;yBACM;kEAER;6BACa;uBACI;;;;;;AAEjC,YAAY;AACX,CAAA,UAAY;IACX,cAAc;IACd,MAAMA,SAASC,IAAAA,cAAK,EAACC,IAAAA,gBAAO,EAACC,QAAQC,IAAI,GACtCC,UAAU,CAAC,QACXC,UAAU,CAAC,cAAc,mCACzBC,IAAI,CAAC,QAAQ,2BACbC,OAAO,CAAC,WAAW,gBAAgBC,oBAAG,CAACD,OAAO,EAC9CE,IAAI,CAACT,cAAK,CAACU,aAAa;IAE3B,cAAc;IACdC,IAAAA,uBAAgB,EAACZ,QAAQ;QAACa,yBAAY;KAAC;IAEvC,UAAU;IACV,MAAMb,OACHc,UAAU,CAAC,YAAY;QACtBC,OAAOC,CAAAA,MAAOA,IAAIC,OAAO;IAC3B,GACCC,aAAa,GACbC,iBAAiB,GACjBC,MAAM,GACNC,KAAK;AACV,CAAA","file":"main.js"}
@@ -0,0 +1,5 @@
1
+ export declare const globalConfig: import("../utils").Middleware<unknown, {
2
+ verbose: number;
3
+ } & {
4
+ jobs: number | undefined;
5
+ }>;
@@ -0,0 +1 @@
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"]}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "globalConfig", {
6
+ enumerable: true,
7
+ get: ()=>globalConfig
8
+ });
9
+ const _services = require("../services");
10
+ const _utils = require("../utils");
11
+ const globalConfig = (0, _utils.defineMiddleware)({
12
+ builder: (yargs)=>yargs.option('verbose', {
13
+ alias: 'v',
14
+ type: 'count',
15
+ description: 'Set verbosity level'
16
+ }).option('jobs', {
17
+ alias: 'j',
18
+ type: 'number',
19
+ description: 'Set maximum parallel job number'
20
+ }),
21
+ handler (args) {
22
+ _services.container.bind(_services.GLOBAL_CONFIG).toConstantValue({
23
+ verbose: args.verbose,
24
+ jobs: args.jobs
25
+ });
26
+ }
27
+ });
28
+
29
+ //# sourceMappingURL=global-config.js.map
@@ -0,0 +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;;;;+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,3 +1,4 @@
1
- export * from './load-project';
2
1
  export * from './global-config';
2
+ export * from './load-project';
3
+ export * from './load-workspace';
3
4
  export * from './setup-ink';
@@ -0,0 +1 @@
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) {
@@ -0,0 +1 @@
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,6 +1,5 @@
1
- import { Argv } from 'yargs';
2
1
  import { PackageManager } from '../project';
3
- export declare function loadProject<T>(yargs: Argv<T>): Argv<T & {
2
+ export declare const loadProject: import("../utils").Middleware<unknown, {
4
3
  project: string;
5
4
  } & {
6
5
  "package-manager": PackageManager | undefined;
@@ -0,0 +1 @@
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"]}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "loadProject", {
6
+ enumerable: true,
7
+ get: ()=>loadProject
8
+ });
9
+ const _services = require("../services");
10
+ const _project = require("../project");
11
+ const _utils = require("../utils");
12
+ const loadProject = (0, _utils.defineMiddleware)({
13
+ builder: (yargs)=>yargs.option('project', {
14
+ alias: 'p',
15
+ type: 'string',
16
+ default: process.cwd(),
17
+ description: 'Project root directory'
18
+ }).option('package-manager', {
19
+ choices: [
20
+ 'yarn',
21
+ 'npm'
22
+ ],
23
+ default: undefined,
24
+ type: 'string',
25
+ description: 'Force package manager'
26
+ }),
27
+ async handler (args) {
28
+ const spinner = _services.container.get(_services.SpinnerService);
29
+ try {
30
+ spinner.spin('Loading project ...');
31
+ const root = args.project = await _project.Project.searchProjectRoot(args.project);
32
+ _services.container.bind(_project.Project).toDynamicValue(()=>new _project.Project(root, {
33
+ packageManager: args['package-manager']
34
+ })).whenTargetNamed(_services.CURRENT);
35
+ } finally{
36
+ spinner.stop();
37
+ }
38
+ }
39
+ });
40
+
41
+ //# sourceMappingURL=load-project.js.map
@@ -0,0 +1 @@
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,3 @@
1
+ export declare const loadWorkspace: import("../utils").Middleware<unknown, {
2
+ workspace: string | undefined;
3
+ }>;
@@ -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"}
@@ -0,0 +1 @@
1
+ export declare const setupInk: import("../utils").Middleware<unknown, unknown>;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["middlewares/setup-ink.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,QAAQ,iDAOnB,CAAC","file":"setup-ink.d.ts","sourcesContent":["import { render } from 'ink';\n\nimport { container, INK_APP } from '../services';\nimport { Layout } from '../ui';\nimport { defineMiddleware } from '../utils';\n\n// Middleware\nexport const setupInk = defineMiddleware({\n handler() {\n container.bind(INK_APP)\n .toConstantValue(render(<Layout/>, {\n stdout: process.stdout.isTTY ? process.stdout : process.stderr,\n }));\n }\n});\n"]}
@@ -7,13 +7,16 @@ Object.defineProperty(exports, "setupInk", {
7
7
  get: ()=>setupInk
8
8
  });
9
9
  const _jsxRuntime = require("react/jsx-runtime");
10
+ const _ink = require("ink");
10
11
  const _services = require("../services");
11
12
  const _ui = require("../ui");
12
- const _ink = require("ink");
13
- function setupInk(yargs) {
14
- return yargs.middleware(async ()=>{
15
- _services.container.bind(_services.INK_APP).toConstantValue((0, _ink.render)(/*#__PURE__*/ (0, _jsxRuntime.jsx)(_ui.Layout, {})));
16
- });
17
- }
13
+ const _utils = require("../utils");
14
+ const setupInk = (0, _utils.defineMiddleware)({
15
+ handler () {
16
+ _services.container.bind(_services.INK_APP).toConstantValue((0, _ink.render)(/*#__PURE__*/ (0, _jsxRuntime.jsx)(_ui.Layout, {}), {
17
+ stdout: process.stdout.isTTY ? process.stdout : process.stderr
18
+ }));
19
+ }
20
+ });
18
21
 
19
22
  //# sourceMappingURL=setup-ink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["middlewares/setup-ink.js"],"sourcesContent":["import { render } from 'ink';\n\nimport { container, INK_APP } from '../services';\nimport { Layout } from '../ui';\nimport { defineMiddleware } from '../utils';\n\n// Middleware\nexport const setupInk = defineMiddleware({\n handler() {\n container.bind(INK_APP)\n .toConstantValue(render(<Layout/>, {\n stdout: process.stdout.isTTY ? process.stdout : process.stderr,\n }));\n }\n});\n"],"names":["setupInk","defineMiddleware","handler","container","bind","INK_APP","toConstantValue","render","Layout","stdout","process","isTTY","stderr"],"mappings":"AAAA;;;;+BAOaA;;aAAAA;;;qBAPU;0BAEY;oBACZ;uBACU;AAG1B,MAAMA,WAAWC,IAAAA,uBAAgB,EAAC;IACvCC,WAAU;QACRC,mBAAS,CAACC,IAAI,CAACC,iBAAO,EACnBC,eAAe,CAACC,IAAAA,WAAM,gBAAC,qBAACC,UAAM,OAAI;YACjCC,QAAQC,QAAQD,MAAM,CAACE,KAAK,GAAGD,QAAQD,MAAM,GAAGC,QAAQE,MAAM;QAChE;IACJ;AACF","file":"setup-ink.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 CURRENT_PROJECT: unique symbol;
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,eAAe,eAA+B,CAAC;AAG5D,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_PROJECT = Symbol.for('CurrentProject');\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"]}
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
- CURRENT_PROJECT: ()=>CURRENT_PROJECT,
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 CURRENT_PROJECT = Symbol.for('CurrentProject');
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 CURRENT_PROJECT = Symbol.for('CurrentProject');\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_PROJECT","container","lazyInject","Symbol","for","Container","skipBaseClassChecks","getDecorators"],"mappings":"AAAA;;;;;;;;;;;IAMaA,OAAO,MAAPA;IACAC,aAAa,MAAbA;IACAC,eAAe,MAAfA;IASAC,SAAS,MAATA;IAKEC,UAAU,MAAVA;;2BAtBW;gFACA;QAEnB;;;;;;AAGA,MAAMJ,UAAUK,OAAOC,GAAG,CAAC;AAC3B,MAAML,gBAAgBI,OAAOC,GAAG,CAAC;AACjC,MAAMJ,kBAAkBG,OAAOC,GAAG,CAAC;AASnC,MAAMH,YAAY,IAAII,oBAAS,CAAC;IACrCC,qBAAqB,IAAI;AAC3B;AAGO,MAAM,EAAEJ,WAAU,EAAE,GAAGK,IAAAA,kCAAa,EAACN","file":"inversify.config.js"}
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,5 +1,6 @@
1
1
  import winston from 'winston';
2
- export interface Logger extends winston.Logger {
3
- }
2
+ export declare const consoleFormat: winston.Logform.Format;
4
3
  export declare class Logger {
5
4
  }
5
+ export interface Logger extends winston.Logger {
6
+ }
@@ -1 +1 @@
1
- {"version":3,"sources":["services/logger.service.ts"],"names":[],"mappings":"AAEA,OAAO,OAAO,MAAM,SAAS,CAAC;AAY9B,MAAM,WAAW,MAAO,SAAQ,OAAO,CAAC,MAAM;CAAG;AAGjD,qBACa,MAAM;CAAG","file":"logger.service.d.ts","sourcesContent":["import chalk from 'chalk';\nimport { injectable } from 'inversify';\nimport winston from 'winston';\n\nimport { type GlobalConfig, GLOBAL_CONFIG, container } from './inversify.config';\n\n// Constants\nconst VERBOSITY_LEVEL: Record<number, string> = {\n 1: 'verbose',\n 2: 'debug',\n};\n\n// Types\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface Logger extends winston.Logger {}\n\n// Service\n@injectable()\nexport class Logger {}\n\ncontainer.bind(Logger)\n .toDynamicValue((context) => {\n const config = context.container.get<GlobalConfig>(GLOBAL_CONFIG);\n\n return winston.createLogger({\n level: VERBOSITY_LEVEL[Math.min(config.verbose, 2)],\n format: winston.format.combine(\n winston.format.timestamp(),\n winston.format.ms(),\n ),\n transports: [\n new winston.transports.Console({\n format: winston.format.combine(\n winston.format.errors(),\n winston.format.colorize({\n message: true,\n colors: { debug: 'grey', verbose: 'blue', info: 'white', error: 'red' }\n }),\n winston.format.printf(({ label, message }) => message.split('\\n').map(line => [label && chalk.grey(`[${label}]`), line].filter(p => p).join(' ')).join('\\n')),\n )\n })\n ]\n });\n })\n .inSingletonScope();\n"]}
1
+ {"version":3,"sources":["services/logger.service.ts"],"names":[],"mappings":"AAEA,OAAO,OAAO,MAAM,SAAS,CAAC;AAW9B,eAAO,MAAM,aAAa,wBAwBzB,CAAC;AAGF,qBACa,MAAM;CAAG;AAGtB,MAAM,WAAW,MAAO,SAAQ,OAAO,CAAC,MAAM;CAAG","file":"logger.service.d.ts","sourcesContent":["import chalk from 'chalk';\nimport { injectable } from 'inversify';\nimport winston from 'winston';\n\nimport { type GlobalConfig, GLOBAL_CONFIG, container } from './inversify.config';\n\n// Constants\nconst VERBOSITY_LEVEL: Record<number, string> = {\n 1: 'verbose',\n 2: 'debug',\n};\n\n// Utils\nexport const consoleFormat = winston.format.combine(\n winston.format.errors(),\n winston.format.colorize({\n message: true,\n colors: { debug: 'grey', verbose: 'blue', info: 'white', error: 'red' }\n }),\n winston.format.printf(({ label, message, ms }) => {\n const lines = message.split('\\n');\n\n // Format\n let spaces = '';\n let formatted = `${lines[0]} ${chalk.magenta(ms)}`;\n\n if (label) {\n spaces = ' '.repeat(label.length + 3);\n formatted = `${chalk.grey(`[${label}]`)} ${lines[0]} ${chalk.magenta(ms)}`;\n }\n\n for (let i = 1; i < lines.length; ++i) {\n formatted += `\\n${spaces}${lines[i]}`;\n }\n\n return formatted;\n }),\n);\n\n// Service\n@injectable()\nexport class Logger {}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface Logger extends winston.Logger {}\n\ncontainer.bind(Logger)\n .toDynamicValue((context) => {\n const config = context.container.get<GlobalConfig>(GLOBAL_CONFIG);\n\n return winston.createLogger({\n level: VERBOSITY_LEVEL[Math.min(config.verbose, 2)],\n format: winston.format.combine(\n winston.format.timestamp(),\n winston.format.ms(),\n ),\n transports: [\n new winston.transports.Console({\n format: consoleFormat\n })\n ]\n });\n })\n .inSingletonScope();\n"]}