@jujulego/jill 1.1.19 → 2.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/dist/application.context.d.ts +28 -0
  2. package/dist/application.context.d.ts.map +1 -0
  3. package/dist/application.context.js +30 -0
  4. package/dist/application.context.js.map +1 -0
  5. package/dist/application.d.ts +7 -0
  6. package/dist/application.d.ts.map +1 -0
  7. package/dist/application.js +125 -0
  8. package/dist/application.js.map +1 -0
  9. package/dist/command.d.ts +8 -0
  10. package/dist/command.d.ts.map +1 -0
  11. package/dist/command.js +24 -0
  12. package/dist/command.js.map +1 -0
  13. package/dist/commands/each.command.d.ts +14 -12
  14. package/dist/commands/each.command.d.ts.map +1 -1
  15. package/dist/commands/each.command.js +89 -116
  16. package/dist/commands/each.command.js.map +1 -1
  17. package/dist/commands/list.command.d.ts +17 -13
  18. package/dist/commands/list.command.d.ts.map +1 -1
  19. package/dist/commands/list.command.js +146 -145
  20. package/dist/commands/list.command.js.map +1 -1
  21. package/dist/commands/run.command.d.ts +10 -10
  22. package/dist/commands/run.command.d.ts.map +1 -1
  23. package/dist/commands/run.command.js +45 -62
  24. package/dist/commands/run.command.js.map +1 -1
  25. package/dist/commands/tree.command.d.ts +7 -0
  26. package/dist/commands/tree.command.d.ts.map +1 -0
  27. package/dist/commands/tree.command.js +35 -0
  28. package/dist/commands/tree.command.js.map +1 -0
  29. package/dist/components/StaticLogs.d.ts +2 -0
  30. package/dist/components/StaticLogs.d.ts.map +1 -0
  31. package/dist/components/StaticLogs.js +77 -0
  32. package/dist/components/StaticLogs.js.map +1 -0
  33. package/dist/components/WorkspaceTree.d.ts +8 -0
  34. package/dist/components/WorkspaceTree.d.ts.map +1 -0
  35. package/dist/components/WorkspaceTree.js +151 -0
  36. package/dist/components/WorkspaceTree.js.map +1 -0
  37. package/dist/index.d.ts +1 -1
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +7 -7
  40. package/dist/index.js.map +1 -1
  41. package/dist/main.d.ts.map +1 -1
  42. package/dist/main.js +16 -21
  43. package/dist/main.js.map +1 -1
  44. package/dist/wrapper.d.ts +6 -0
  45. package/dist/wrapper.d.ts.map +1 -0
  46. package/dist/wrapper.js +30 -0
  47. package/dist/wrapper.js.map +1 -0
  48. package/dist/wrappers/project.wrapper.d.ts +7 -0
  49. package/dist/wrappers/project.wrapper.d.ts.map +1 -0
  50. package/dist/wrappers/project.wrapper.js +105 -0
  51. package/dist/wrappers/project.wrapper.js.map +1 -0
  52. package/dist/wrappers/workspace.wrapper.d.ts +5 -0
  53. package/dist/wrappers/workspace.wrapper.d.ts.map +1 -0
  54. package/dist/wrappers/workspace.wrapper.js +108 -0
  55. package/dist/wrappers/workspace.wrapper.js.map +1 -0
  56. package/package.json +44 -25
  57. package/dist/commands/info.command.d.ts +0 -8
  58. package/dist/commands/info.command.d.ts.map +0 -1
  59. package/dist/commands/info.command.js +0 -178
  60. package/dist/commands/info.command.js.map +0 -1
  61. package/dist/myr/commands/kill.command.d.ts +0 -10
  62. package/dist/myr/commands/kill.command.d.ts.map +0 -1
  63. package/dist/myr/commands/kill.command.js +0 -89
  64. package/dist/myr/commands/kill.command.js.map +0 -1
  65. package/dist/myr/commands/list.command.d.ts +0 -17
  66. package/dist/myr/commands/list.command.d.ts.map +0 -1
  67. package/dist/myr/commands/list.command.js +0 -167
  68. package/dist/myr/commands/list.command.js.map +0 -1
  69. package/dist/myr/commands/logs.command.d.ts +0 -10
  70. package/dist/myr/commands/logs.command.d.ts.map +0 -1
  71. package/dist/myr/commands/logs.command.js +0 -165
  72. package/dist/myr/commands/logs.command.js.map +0 -1
  73. package/dist/myr/commands/spawn.command.d.ts +0 -10
  74. package/dist/myr/commands/spawn.command.d.ts.map +0 -1
  75. package/dist/myr/commands/spawn.command.js +0 -84
  76. package/dist/myr/commands/spawn.command.js.map +0 -1
  77. package/dist/myr/commands/stop.command.d.ts +0 -6
  78. package/dist/myr/commands/stop.command.d.ts.map +0 -1
  79. package/dist/myr/commands/stop.command.js +0 -80
  80. package/dist/myr/commands/stop.command.js.map +0 -1
  81. package/dist/myr/myr-client.d.ts +0 -22
  82. package/dist/myr/myr-client.d.ts.map +0 -1
  83. package/dist/myr/myr-client.js +0 -378
  84. package/dist/myr/myr-client.js.map +0 -1
  85. package/dist/myr/myr.command.d.ts +0 -8
  86. package/dist/myr/myr.command.d.ts.map +0 -1
  87. package/dist/myr/myr.command.js +0 -42
  88. package/dist/myr/myr.command.js.map +0 -1
  89. package/dist/myr/myr.process.d.ts +0 -1
  90. package/dist/myr/myr.process.d.ts.map +0 -1
  91. package/dist/myr/myr.process.js +0 -77
  92. package/dist/myr/myr.process.js.map +0 -1
  93. package/dist/myr/watch.command.d.ts +0 -12
  94. package/dist/myr/watch.command.d.ts.map +0 -1
  95. package/dist/myr/watch.command.js +0 -169
  96. package/dist/myr/watch.command.js.map +0 -1
  97. package/dist/task-logger.d.ts +0 -14
  98. package/dist/task-logger.d.ts.map +0 -1
  99. package/dist/task-logger.js +0 -76
  100. package/dist/task-logger.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["main.ts"],"names":[],"mappings":"","file":"main.d.ts","sourcesContent":["import { Plugin } from '@jujulego/jill-common';\nimport { hideBin } from 'yargs/helpers';\nimport yargs from 'yargs';\n\nimport { EachCommand } from './commands/each.command';\nimport { InfoCommand } from './commands/info.command';\nimport { ListCommand } from './commands/list.command';\nimport { RunCommand } from './commands/run.command';\nimport { MyrCommand } from './myr/myr.command';\nimport { WatchCommand } from './myr/watch.command';\n\n// Bootstrap\n(async () => {\n // Options\n const parser = await yargs(hideBin(process.argv))\n .scriptName('jill')\n .parserConfiguration({\n 'populate--': true,\n })\n .strictCommands()\n .help();\n\n const core = Plugin.createPlugin('core', [\n InfoCommand,\n ListCommand,\n RunCommand,\n EachCommand,\n ]);\n\n const myr = Plugin.createPlugin('myr', [\n MyrCommand,\n WatchCommand,\n ]);\n\n core.setup(parser);\n myr.setup(parser);\n\n await parser.parse();\n})();\n"]}
1
+ {"version":3,"sources":["main.tsx"],"names":[],"mappings":"","file":"main.d.ts","sourcesContent":["import { render } from 'ink';\nimport { StrictMode } from 'react';\n\nimport { Application } from './application';\nimport { EachCommand } from './commands/each.command';\nimport { ListCommand } from './commands/list.command';\nimport { RunCommand } from './commands/run.command';\nimport { TreeCommand } from './commands/tree.command';\nimport { StaticLogs } from './components/StaticLogs';\n\n// Bootstrap\n(async () => {\n const { waitUntilExit } = render(\n <StrictMode>\n <StaticLogs />\n <Application name=\"jill\" commands={[\n EachCommand,\n ListCommand,\n RunCommand,\n TreeCommand\n ]} />\n </StrictMode>\n );\n\n await waitUntilExit();\n})();\n"]}
package/dist/main.js CHANGED
@@ -1,24 +1,22 @@
1
1
  "use strict";
2
2
 
3
- var _jillCommon = require("@jujulego/jill-common");
3
+ var _jsxRuntime = require("react/jsx-runtime");
4
4
 
5
- var _helpers = require("yargs/helpers");
5
+ var _ink = require("ink");
6
6
 
7
- var _yargs = _interopRequireDefault(require("yargs"));
7
+ var _react = require("react");
8
8
 
9
- var _each = require("./commands/each.command");
9
+ var _application = require("./application");
10
10
 
11
- var _info = require("./commands/info.command");
11
+ var _each = require("./commands/each.command");
12
12
 
13
13
  var _list = require("./commands/list.command");
14
14
 
15
15
  var _run = require("./commands/run.command");
16
16
 
17
- var _myr = require("./myr/myr.command");
18
-
19
- var _watch = require("./myr/watch.command");
17
+ var _tree = require("./commands/tree.command");
20
18
 
21
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+ var _StaticLogs = require("./components/StaticLogs");
22
20
 
23
21
  var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
24
22
  function adopt(value) {
@@ -54,17 +52,14 @@ var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P
54
52
 
55
53
  // Bootstrap
56
54
  (() => __awaiter(void 0, void 0, void 0, function* () {
57
- // Options
58
- const parser = yield (0, _yargs.default)((0, _helpers.hideBin)(process.argv)).scriptName('jill').parserConfiguration({
59
- 'populate--': true
60
- }).strictCommands().help();
61
-
62
- const core = _jillCommon.Plugin.createPlugin('core', [_info.InfoCommand, _list.ListCommand, _run.RunCommand, _each.EachCommand]);
63
-
64
- const myr = _jillCommon.Plugin.createPlugin('myr', [_myr.MyrCommand, _watch.WatchCommand]);
65
-
66
- core.setup(parser);
67
- myr.setup(parser);
68
- yield parser.parse();
55
+ const {
56
+ waitUntilExit
57
+ } = (0, _ink.render)((0, _jsxRuntime.jsxs)(_react.StrictMode, {
58
+ children: [(0, _jsxRuntime.jsx)(_StaticLogs.StaticLogs, {}), (0, _jsxRuntime.jsx)(_application.Application, {
59
+ name: "jill",
60
+ commands: [_each.EachCommand, _list.ListCommand, _run.RunCommand, _tree.TreeCommand]
61
+ })]
62
+ }));
63
+ yield waitUntilExit();
69
64
  }))();
70
65
  //# sourceMappingURL=main.js.map
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["main.ts","main.js"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","parser","process","argv","scriptName","parserConfiguration","strictCommands","help","core","Plugin","createPlugin","InfoCommand","ListCommand","RunCommand","EachCommand","myr","MyrCommand","WatchCommand","setup","parse"],"mappings":";;AAAA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;ACTA,IAAIA,SAAS,GAAI,UAAQ,SAAKA,SAAd,IAA4B,UAAUC,OAAV,EAAmBC,UAAnB,EAA+BC,CAA/B,EAAkCC,SAAlC,EAA6C;AACrF,WAASC,KAAT,CAAeC,KAAf,EAAsB;AAAE,WAAOA,KAAK,YAAYH,CAAjB,GAAqBG,KAArB,GAA6B,IAAIH,CAAJ,CAAM,UAAUI,OAAV,EAAmB;AAAEA,MAAAA,OAAO,CAACD,KAAD,CAAP;AAAiB,KAA5C,CAApC;AAAoF;;AAC5G,SAAO,KAAKH,CAAC,KAAKA,CAAC,GAAGK,OAAT,CAAN,EAAyB,UAAUD,OAAV,EAAmBE,MAAnB,EAA2B;AACvD,aAASC,SAAT,CAAmBJ,KAAnB,EAA0B;AAAE,UAAI;AAAEK,QAAAA,IAAI,CAACP,SAAS,CAACQ,IAAV,CAAeN,KAAf,CAAD,CAAJ;AAA8B,OAApC,CAAqC,OAAOO,CAAP,EAAU;AAAEJ,QAAAA,MAAM,CAACI,CAAD,CAAN;AAAY;AAAE;;AAC3F,aAASC,QAAT,CAAkBR,KAAlB,EAAyB;AAAE,UAAI;AAAEK,QAAAA,IAAI,CAACP,SAAS,CAAC,OAAD,CAAT,CAAmBE,KAAnB,CAAD,CAAJ;AAAkC,OAAxC,CAAyC,OAAOO,CAAP,EAAU;AAAEJ,QAAAA,MAAM,CAACI,CAAD,CAAN;AAAY;AAAE;;AAC9F,aAASF,IAAT,CAAcI,MAAd,EAAsB;AAAEA,MAAAA,MAAM,CAACC,IAAP,GAAcT,OAAO,CAACQ,MAAM,CAACT,KAAR,CAArB,GAAsCD,KAAK,CAACU,MAAM,CAACT,KAAR,CAAL,CAAoBW,IAApB,CAAyBP,SAAzB,EAAoCI,QAApC,CAAtC;AAAsF;;AAC9GH,IAAAA,IAAI,CAAC,CAACP,SAAS,GAAGA,SAAS,CAACc,KAAV,CAAgBjB,OAAhB,EAAyBC,UAAU,IAAI,EAAvC,CAAb,EAAyDU,IAAzD,EAAD,CAAJ;AACH,GALM,CAAP;AAMH,CARD;;ADWA;AACA,CAAC,MAAWZ,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACV;AACA,QAAMmB,MAAM,GAAG,MAAM,oBAAM,sBAAQC,OAAO,CAACC,IAAhB,CAAN,EAClBC,UADkB,CACP,MADO,EAElBC,mBAFkB,CAEE;AACnB,kBAAc;AADK,GAFF,EAKlBC,cALkB,GAMlBC,IANkB,EAArB;;AAQA,QAAMC,IAAI,GAAGC,mBAAOC,YAAP,CAAoB,MAApB,EAA4B,CACvCC,iBADuC,EAEvCC,iBAFuC,EAGvCC,eAHuC,EAIvCC,iBAJuC,CAA5B,CAAb;;AAOA,QAAMC,GAAG,GAAGN,mBAAOC,YAAP,CAAoB,KAApB,EAA2B,CACrCM,eADqC,EAErCC,mBAFqC,CAA3B,CAAZ;;AAKAT,EAAAA,IAAI,CAACU,KAAL,CAAWjB,MAAX;AACAc,EAAAA,GAAG,CAACG,KAAJ,CAAUjB,MAAV;AAEA,QAAMA,MAAM,CAACkB,KAAP,EAAN;AACD,CA1BW,CAAZ","file":"main.js","sourcesContent":["import { Plugin } from '@jujulego/jill-common';\nimport { hideBin } from 'yargs/helpers';\nimport yargs from 'yargs';\n\nimport { EachCommand } from './commands/each.command';\nimport { InfoCommand } from './commands/info.command';\nimport { ListCommand } from './commands/list.command';\nimport { RunCommand } from './commands/run.command';\nimport { MyrCommand } from './myr/myr.command';\nimport { WatchCommand } from './myr/watch.command';\n\n// Bootstrap\n(async () => {\n // Options\n const parser = await yargs(hideBin(process.argv))\n .scriptName('jill')\n .parserConfiguration({\n 'populate--': true,\n })\n .strictCommands()\n .help();\n\n const core = Plugin.createPlugin('core', [\n InfoCommand,\n ListCommand,\n RunCommand,\n EachCommand,\n ]);\n\n const myr = Plugin.createPlugin('myr', [\n MyrCommand,\n WatchCommand,\n ]);\n\n core.setup(parser);\n myr.setup(parser);\n\n await parser.parse();\n})();\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Plugin } from '@jujulego/jill-common';\nimport { hideBin } from 'yargs/helpers';\nimport yargs from 'yargs';\nimport { EachCommand } from './commands/each.command';\nimport { InfoCommand } from './commands/info.command';\nimport { ListCommand } from './commands/list.command';\nimport { RunCommand } from './commands/run.command';\nimport { MyrCommand } from './myr/myr.command';\nimport { WatchCommand } from './myr/watch.command';\n// Bootstrap\n(() => __awaiter(void 0, void 0, void 0, function* () {\n // Options\n const parser = yield yargs(hideBin(process.argv))\n .scriptName('jill')\n .parserConfiguration({\n 'populate--': true,\n })\n .strictCommands()\n .help();\n const core = Plugin.createPlugin('core', [\n InfoCommand,\n ListCommand,\n RunCommand,\n EachCommand,\n ]);\n const myr = Plugin.createPlugin('myr', [\n MyrCommand,\n WatchCommand,\n ]);\n core.setup(parser);\n myr.setup(parser);\n yield parser.parse();\n}))();"]}
1
+ {"version":3,"sources":["main.js","main.tsx"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","waitUntilExit","StrictMode","children","StaticLogs","Application","name","commands","EachCommand","ListCommand","RunCommand","TreeCommand"],"mappings":";;AASA;;ACTA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;ADRA,IAAIA,SAAS,GAAI,UAAQ,SAAKA,SAAd,IAA4B,UAAUC,OAAV,EAAmBC,UAAnB,EAA+BC,CAA/B,EAAkCC,SAAlC,EAA6C;AACrF,WAASC,KAAT,CAAeC,KAAf,EAAsB;AAAE,WAAOA,KAAK,YAAYH,CAAjB,GAAqBG,KAArB,GAA6B,IAAIH,CAAJ,CAAM,UAAUI,OAAV,EAAmB;AAAEA,MAAAA,OAAO,CAACD,KAAD,CAAP;AAAiB,KAA5C,CAApC;AAAoF;;AAC5G,SAAO,KAAKH,CAAC,KAAKA,CAAC,GAAGK,OAAT,CAAN,EAAyB,UAAUD,OAAV,EAAmBE,MAAnB,EAA2B;AACvD,aAASC,SAAT,CAAmBJ,KAAnB,EAA0B;AAAE,UAAI;AAAEK,QAAAA,IAAI,CAACP,SAAS,CAACQ,IAAV,CAAeN,KAAf,CAAD,CAAJ;AAA8B,OAApC,CAAqC,OAAOO,CAAP,EAAU;AAAEJ,QAAAA,MAAM,CAACI,CAAD,CAAN;AAAY;AAAE;;AAC3F,aAASC,QAAT,CAAkBR,KAAlB,EAAyB;AAAE,UAAI;AAAEK,QAAAA,IAAI,CAACP,SAAS,CAAC,OAAD,CAAT,CAAmBE,KAAnB,CAAD,CAAJ;AAAkC,OAAxC,CAAyC,OAAOO,CAAP,EAAU;AAAEJ,QAAAA,MAAM,CAACI,CAAD,CAAN;AAAY;AAAE;;AAC9F,aAASF,IAAT,CAAcI,MAAd,EAAsB;AAAEA,MAAAA,MAAM,CAACC,IAAP,GAAcT,OAAO,CAACQ,MAAM,CAACT,KAAR,CAArB,GAAsCD,KAAK,CAACU,MAAM,CAACT,KAAR,CAAL,CAAoBW,IAApB,CAAyBP,SAAzB,EAAoCI,QAApC,CAAtC;AAAsF;;AAC9GH,IAAAA,IAAI,CAAC,CAACP,SAAS,GAAGA,SAAS,CAACc,KAAV,CAAgBjB,OAAhB,EAAyBC,UAAU,IAAI,EAAvC,CAAb,EAAyDU,IAAzD,EAAD,CAAJ;AACH,GALM,CAAP;AAMH,CARD;;ACUA;AACA,CAAC,MAAWZ,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACV,QAAM;AAAEmB,IAAAA;AAAF,MAAoB,iBACxB,sBAACC,iBAAD,EAAW;AAAAC,IAAAA,QAAA,EAAA,CACT,qBAACC,sBAAD,EAAW,EAAX,CADS,EAET,qBAACC,wBAAD,EAAY;AAACC,MAAAA,IAAI,EAAC,MAAN;AAAaC,MAAAA,QAAQ,EAAE,CACjCC,iBADiC,EAEjCC,iBAFiC,EAGjCC,eAHiC,EAIjCC,iBAJiC;AAAvB,KAAZ,CAFS;AAAA,GAAX,CADwB,CAA1B;AAYA,QAAMV,aAAa,EAAnB;AACD,CAdW,CAAZ","file":"main.js","sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { render } from 'ink';\nimport { StrictMode } from 'react';\nimport { Application } from './application';\nimport { EachCommand } from './commands/each.command';\nimport { ListCommand } from './commands/list.command';\nimport { RunCommand } from './commands/run.command';\nimport { TreeCommand } from './commands/tree.command';\nimport { StaticLogs } from './components/StaticLogs';\n// Bootstrap\n(() => __awaiter(void 0, void 0, void 0, function* () {\n const { waitUntilExit } = render(_jsxs(StrictMode, { children: [_jsx(StaticLogs, {}), _jsx(Application, { name: \"jill\", commands: [\n EachCommand,\n ListCommand,\n RunCommand,\n TreeCommand\n ] })] }));\n yield waitUntilExit();\n}))();","import { render } from 'ink';\nimport { StrictMode } from 'react';\n\nimport { Application } from './application';\nimport { EachCommand } from './commands/each.command';\nimport { ListCommand } from './commands/list.command';\nimport { RunCommand } from './commands/run.command';\nimport { TreeCommand } from './commands/tree.command';\nimport { StaticLogs } from './components/StaticLogs';\n\n// Bootstrap\n(async () => {\n const { waitUntilExit } = render(\n <StrictMode>\n <StaticLogs />\n <Application name=\"jill\" commands={[\n EachCommand,\n ListCommand,\n RunCommand,\n TreeCommand\n ]} />\n </StrictMode>\n );\n\n await waitUntilExit();\n})();\n"]}
@@ -0,0 +1,6 @@
1
+ import { ReactElement } from 'react';
2
+ import { BuilderWrapper, CommandComponent, UseArgsHook } from './application.context';
3
+ import { CommandUtils } from './command';
4
+ export declare type CommandWrapper<A> = <Args>(utils: CommandUtils<Args>) => CommandUtils<Omit<Args, keyof A> & A>;
5
+ export declare type WrapperComponent<A> = <Args>(useArgs: UseArgsHook<A>, Wrapped: CommandComponent<Args>) => ReactElement;
6
+ export declare function commandWrapper<A>(name: string, builder: BuilderWrapper<A>, wrapper: WrapperComponent<A>): CommandWrapper<A>;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,YAAY,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAW,gBAAgB,EAAW,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACxG,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,oBAAY,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3G,oBAAY,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,YAAY,CAAC;AAGnH,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAoB3H","file":"wrapper.d.ts","sourcesContent":["import { FC, ReactElement } from 'react';\n\nimport { BuilderWrapper, Command, CommandComponent, useArgs, UseArgsHook } from './application.context';\nimport { CommandUtils } from './command';\n\n// Types\nexport type CommandWrapper<A> = <Args>(utils: CommandUtils<Args>) => CommandUtils<Omit<Args, keyof A> & A>;\nexport type WrapperComponent<A> = <Args>(useArgs: UseArgsHook<A>, Wrapped: CommandComponent<Args>) => ReactElement;\n\n// Wrapper generator\nexport function commandWrapper<A>(name: string, builder: BuilderWrapper<A>, wrapper: WrapperComponent<A>): CommandWrapper<A> {\n return <Args>(utils: CommandUtils<Args>): CommandUtils<Omit<Args, keyof A> & A> => ({\n useArgs: () => useArgs<Args & A>(),\n wrapper: (Component: FC): CommandComponent<Omit<Args, keyof A> & A> => {\n const Wrapped = utils.wrapper(Component);\n\n // Update builder\n const command: Command<Omit<Args, keyof A> & A> = {\n ...Wrapped.command,\n builder: (yargs) => builder(Wrapped.command.builder(yargs))\n };\n\n // Component wrapper\n const Wrapper: FC = () => wrapper(useArgs, Wrapped);\n\n Wrapper.displayName = `${name}(${Wrapped.displayName || Wrapped.name})`;\n\n return Object.assign(Wrapper, { command });\n },\n });\n}\n"]}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.commandWrapper = commandWrapper;
7
+
8
+ var _application = require("./application.context");
9
+
10
+ // Wrapper generator
11
+ function commandWrapper(name, builder, wrapper) {
12
+ return utils => ({
13
+ useArgs: () => (0, _application.useArgs)(),
14
+ wrapper: Component => {
15
+ const Wrapped = utils.wrapper(Component); // Update builder
16
+
17
+ const command = Object.assign(Object.assign({}, Wrapped.command), {
18
+ builder: yargs => builder(Wrapped.command.builder(yargs))
19
+ }); // Component wrapper
20
+
21
+ const Wrapper = () => wrapper(_application.useArgs, Wrapped);
22
+
23
+ Wrapper.displayName = `${name}(${Wrapped.displayName || Wrapped.name})`;
24
+ return Object.assign(Wrapper, {
25
+ command
26
+ });
27
+ }
28
+ });
29
+ }
30
+ //# sourceMappingURL=wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["wrapper.ts"],"names":["commandWrapper","name","builder","wrapper","utils","useArgs","Component","Wrapped","command","Object","assign","yargs","Wrapper","displayName"],"mappings":";;;;;;;AAEA;;AAOA;AACM,SAAUA,cAAV,CAA4BC,IAA5B,EAA0CC,OAA1C,EAAsEC,OAAtE,EAAkG;AACtG,SAAcC,KAAP,KAA6E;AAClFC,IAAAA,OAAO,EAAE,MAAM,2BADmE;AAElFF,IAAAA,OAAO,EAAGG,SAAD,IAA6D;AACpE,YAAMC,OAAO,GAAGH,KAAK,CAACD,OAAN,CAAcG,SAAd,CAAhB,CADoE,CAGpE;;AACA,YAAME,OAAO,GAAAC,MAAA,CAAAC,MAAA,CAAAD,MAAA,CAAAC,MAAA,CAAA,EAAA,EACRH,OAAO,CAACC,OADA,CAAA,EACO;AAClBN,QAAAA,OAAO,EAAGS,KAAD,IAAWT,OAAO,CAACK,OAAO,CAACC,OAAR,CAAgBN,OAAhB,CAAwBS,KAAxB,CAAD;AADT,OADP,CAAb,CAJoE,CASpE;;AACA,YAAMC,OAAO,GAAO,MAAMT,OAAO,CAACE,oBAAD,EAAUE,OAAV,CAAjC;;AAEAK,MAAAA,OAAO,CAACC,WAAR,GAAsB,GAAGZ,IAAI,IAAIM,OAAO,CAACM,WAAR,IAAuBN,OAAO,CAACN,IAAI,GAApE;AAEA,aAAOQ,MAAM,CAACC,MAAP,CAAcE,OAAd,EAAuB;AAAEJ,QAAAA;AAAF,OAAvB,CAAP;AACD;AAjBiF,GAA7E,CAAP;AAmBD","file":"wrapper.js","sourcesContent":["import { FC, ReactElement } from 'react';\n\nimport { BuilderWrapper, Command, CommandComponent, useArgs, UseArgsHook } from './application.context';\nimport { CommandUtils } from './command';\n\n// Types\nexport type CommandWrapper<A> = <Args>(utils: CommandUtils<Args>) => CommandUtils<Omit<Args, keyof A> & A>;\nexport type WrapperComponent<A> = <Args>(useArgs: UseArgsHook<A>, Wrapped: CommandComponent<Args>) => ReactElement;\n\n// Wrapper generator\nexport function commandWrapper<A>(name: string, builder: BuilderWrapper<A>, wrapper: WrapperComponent<A>): CommandWrapper<A> {\n return <Args>(utils: CommandUtils<Args>): CommandUtils<Omit<Args, keyof A> & A> => ({\n useArgs: () => useArgs<Args & A>(),\n wrapper: (Component: FC): CommandComponent<Omit<Args, keyof A> & A> => {\n const Wrapped = utils.wrapper(Component);\n\n // Update builder\n const command: Command<Omit<Args, keyof A> & A> = {\n ...Wrapped.command,\n builder: (yargs) => builder(Wrapped.command.builder(yargs))\n };\n\n // Component wrapper\n const Wrapper: FC = () => wrapper(useArgs, Wrapped);\n\n Wrapper.displayName = `${name}(${Wrapped.displayName || Wrapped.name})`;\n\n return Object.assign(Wrapper, { command });\n },\n });\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import { PackageManager, Project } from '@jujulego/jill-core';
2
+ export declare function useProject(): Project;
3
+ export declare const withProject: import("../wrapper").CommandWrapper<{
4
+ project: string | undefined;
5
+ } & {
6
+ "package-manager": PackageManager | undefined;
7
+ }>;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["wrappers/project.wrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAW9D,wBAAgB,UAAU,IAAI,OAAO,CAQpC;AAGD,eAAO,MAAM,WAAW;;;;EAwCvB,CAAC","file":"project.wrapper.d.ts","sourcesContent":["import { PackageManager, Project } from '@jujulego/jill-core';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport { createContext, useContext, useEffect, useState } from 'react';\n\nimport { commandWrapper } from '../wrapper';\n\n// Context\nconst ProjectContext = createContext<Project | null>(null);\n\n// Hooks\nexport function useProject(): Project {\n const prj = useContext(ProjectContext);\n\n if (!prj) {\n throw new Error('To use the useProject hook you must wrap your command with the withProject wrapper');\n }\n\n return prj;\n}\n\n// Wrapper\nexport const withProject = commandWrapper(\n 'withProject',\n (yargs) => yargs\n .option('project', {\n alias: 'p',\n type: 'string',\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 (useArgs, Wrapped) => {\n const args = useArgs();\n\n // State\n const [project, setProject] = useState<Project>();\n\n // Effects\n useEffect(() => void (async () => {\n const dir = args.project ?? await Project.searchProjectRoot(process.cwd());\n\n setProject(await new Project(dir, {\n packageManager: args['package-manager']\n }));\n })(), [args]);\n\n // Render\n if (!project) {\n return <Text><Spinner /> Loading project ...</Text>;\n }\n\n return (\n <ProjectContext.Provider value={project}>\n <Wrapped />\n </ProjectContext.Provider>\n );\n }\n);\n"]}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useProject = useProject;
7
+ exports.withProject = void 0;
8
+
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+
11
+ var _jillCore = require("@jujulego/jill-core");
12
+
13
+ var _ink = require("ink");
14
+
15
+ var _inkSpinner = _interopRequireDefault(require("ink-spinner"));
16
+
17
+ var _react = require("react");
18
+
19
+ var _wrapper = require("../wrapper");
20
+
21
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
+
23
+ var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
24
+ function adopt(value) {
25
+ return value instanceof P ? value : new P(function (resolve) {
26
+ resolve(value);
27
+ });
28
+ }
29
+
30
+ return new (P || (P = Promise))(function (resolve, reject) {
31
+ function fulfilled(value) {
32
+ try {
33
+ step(generator.next(value));
34
+ } catch (e) {
35
+ reject(e);
36
+ }
37
+ }
38
+
39
+ function rejected(value) {
40
+ try {
41
+ step(generator["throw"](value));
42
+ } catch (e) {
43
+ reject(e);
44
+ }
45
+ }
46
+
47
+ function step(result) {
48
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
49
+ }
50
+
51
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
52
+ });
53
+ };
54
+
55
+ // Context
56
+ const ProjectContext = /*#__PURE__*/(0, _react.createContext)(null); // Hooks
57
+
58
+ function useProject() {
59
+ const prj = (0, _react.useContext)(ProjectContext);
60
+
61
+ if (!prj) {
62
+ throw new Error('To use the useProject hook you must wrap your command with the withProject wrapper');
63
+ }
64
+
65
+ return prj;
66
+ } // Wrapper
67
+
68
+
69
+ const withProject = (0, _wrapper.commandWrapper)('withProject', yargs => yargs.option('project', {
70
+ alias: 'p',
71
+ type: 'string',
72
+ description: 'Project root directory'
73
+ }).option('package-manager', {
74
+ choices: ['yarn', 'npm'],
75
+ default: undefined,
76
+ type: 'string',
77
+ description: 'Force package manager'
78
+ }), (useArgs, Wrapped) => {
79
+ const args = useArgs(); // State
80
+
81
+ const [project, setProject] = (0, _react.useState)(); // Effects
82
+
83
+ (0, _react.useEffect)(() => void (() => __awaiter(void 0, void 0, void 0, function* () {
84
+ var _a;
85
+
86
+ const dir = (_a = args.project) !== null && _a !== void 0 ? _a : yield _jillCore.Project.searchProjectRoot(process.cwd());
87
+ setProject(yield new _jillCore.Project(dir, {
88
+ packageManager: args['package-manager']
89
+ }));
90
+ }))(), [args]); // Render
91
+
92
+ if (!project) {
93
+ return (0, _jsxRuntime.jsxs)(_ink.Text, {
94
+ children: [(0, _jsxRuntime.jsx)(_inkSpinner.default, {}), " Loading project ..."]
95
+ });
96
+ }
97
+
98
+ return (0, _jsxRuntime.jsx)(ProjectContext.Provider, Object.assign({
99
+ value: project
100
+ }, {
101
+ children: (0, _jsxRuntime.jsx)(Wrapped, {})
102
+ }));
103
+ });
104
+ exports.withProject = withProject;
105
+ //# sourceMappingURL=project.wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["wrappers/project.wrapper.js","wrappers/project.wrapper.tsx"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","ProjectContext","useProject","prj","Error","withProject","yargs","option","alias","type","description","choices","default","undefined","useArgs","Wrapped","args","project","setProject","_a","dir","Project","searchProjectRoot","process","cwd","packageManager","Text","children","Spinner","Provider","Object","assign"],"mappings":"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","file":"project.wrapper.js","sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Project } from '@jujulego/jill-core';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport { createContext, useContext, useEffect, useState } from 'react';\nimport { commandWrapper } from '../wrapper';\n// Context\nconst ProjectContext = createContext(null);\n// Hooks\nexport function useProject() {\n const prj = useContext(ProjectContext);\n if (!prj) {\n throw new Error('To use the useProject hook you must wrap your command with the withProject wrapper');\n }\n return prj;\n}\n// Wrapper\nexport const withProject = commandWrapper('withProject', (yargs) => yargs\n .option('project', {\n alias: 'p',\n type: 'string',\n description: 'Project root directory'\n})\n .option('package-manager', {\n choices: ['yarn', 'npm'],\n default: undefined,\n type: 'string',\n description: 'Force package manager'\n}), (useArgs, Wrapped) => {\n const args = useArgs();\n // State\n const [project, setProject] = useState();\n // Effects\n useEffect(() => void (() => __awaiter(void 0, void 0, void 0, function* () {\n var _a;\n const dir = (_a = args.project) !== null && _a !== void 0 ? _a : yield Project.searchProjectRoot(process.cwd());\n setProject(yield new Project(dir, {\n packageManager: args['package-manager']\n }));\n }))(), [args]);\n // Render\n if (!project) {\n return _jsxs(Text, { children: [_jsx(Spinner, {}), \" Loading project ...\"] });\n }\n return (_jsx(ProjectContext.Provider, Object.assign({ value: project }, { children: _jsx(Wrapped, {}) })));\n});","import { PackageManager, Project } from '@jujulego/jill-core';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport { createContext, useContext, useEffect, useState } from 'react';\n\nimport { commandWrapper } from '../wrapper';\n\n// Context\nconst ProjectContext = createContext<Project | null>(null);\n\n// Hooks\nexport function useProject(): Project {\n const prj = useContext(ProjectContext);\n\n if (!prj) {\n throw new Error('To use the useProject hook you must wrap your command with the withProject wrapper');\n }\n\n return prj;\n}\n\n// Wrapper\nexport const withProject = commandWrapper(\n 'withProject',\n (yargs) => yargs\n .option('project', {\n alias: 'p',\n type: 'string',\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 (useArgs, Wrapped) => {\n const args = useArgs();\n\n // State\n const [project, setProject] = useState<Project>();\n\n // Effects\n useEffect(() => void (async () => {\n const dir = args.project ?? await Project.searchProjectRoot(process.cwd());\n\n setProject(await new Project(dir, {\n packageManager: args['package-manager']\n }));\n })(), [args]);\n\n // Render\n if (!project) {\n return <Text><Spinner /> Loading project ...</Text>;\n }\n\n return (\n <ProjectContext.Provider value={project}>\n <Wrapped />\n </ProjectContext.Provider>\n );\n }\n);\n"]}
@@ -0,0 +1,5 @@
1
+ import { Workspace } from '@jujulego/jill-core';
2
+ export declare function useWorkspace(): Workspace;
3
+ export declare const withWorkspace: import("../wrapper").CommandWrapper<{
4
+ workspace: string | undefined;
5
+ }>;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["wrappers/workspace.wrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAahD,wBAAgB,YAAY,IAAI,SAAS,CAQxC;AAGD,eAAO,MAAM,aAAa;;EAmCzB,CAAC","file":"workspace.wrapper.d.ts","sourcesContent":["import { Workspace } from '@jujulego/jill-core';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport { createContext, useContext, useEffect, useState } from 'react';\n\nimport { commandWrapper } from '../wrapper';\nimport { useProject } from './project.wrapper';\nimport logSymbols from 'log-symbols';\n\n// Context\nconst WorkspaceContext = createContext<Workspace | null>(null);\n\n// Hooks\nexport function useWorkspace(): Workspace {\n const wks = useContext(WorkspaceContext);\n\n if (!wks) {\n throw new Error('To use the useWorkspace hook you must wrap your command with the withWorkspace wrapper');\n }\n\n return wks;\n}\n\n// Wrapper\nexport const withWorkspace = commandWrapper(\n 'withWorkspace',\n (yargs) => yargs\n .option('workspace', {\n alias: 'w',\n type: 'string',\n desc: 'Workspace to use'\n }),\n (useArgs, Wrapped) => {\n const { workspace } = useArgs();\n const project = useProject();\n\n // State\n const [wks, setWks] = useState<Workspace | null>();\n\n // Effects\n useEffect(() => void (async () => {\n setWks(await (workspace ? project.workspace(workspace) : project.currentWorkspace()));\n })(), [project, workspace]);\n\n // Render\n if (wks === undefined) {\n return <Text><Spinner /> Loading &quot;{workspace || '.'}&quot; workspace</Text>;\n }\n\n if (wks === null) {\n return <Text color=\"red\">{logSymbols.error} Workspace &quot;{workspace || '.'}&quot; not found</Text>;\n }\n\n return (\n <WorkspaceContext.Provider value={wks}>\n <Wrapped />\n </WorkspaceContext.Provider>\n );\n }\n);\n"]}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useWorkspace = useWorkspace;
7
+ exports.withWorkspace = void 0;
8
+
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+
11
+ var _ink = require("ink");
12
+
13
+ var _inkSpinner = _interopRequireDefault(require("ink-spinner"));
14
+
15
+ var _react = require("react");
16
+
17
+ var _wrapper = require("../wrapper");
18
+
19
+ var _project = require("./project.wrapper");
20
+
21
+ var _logSymbols = _interopRequireDefault(require("log-symbols"));
22
+
23
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
+
25
+ var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) {
27
+ return value instanceof P ? value : new P(function (resolve) {
28
+ resolve(value);
29
+ });
30
+ }
31
+
32
+ return new (P || (P = Promise))(function (resolve, reject) {
33
+ function fulfilled(value) {
34
+ try {
35
+ step(generator.next(value));
36
+ } catch (e) {
37
+ reject(e);
38
+ }
39
+ }
40
+
41
+ function rejected(value) {
42
+ try {
43
+ step(generator["throw"](value));
44
+ } catch (e) {
45
+ reject(e);
46
+ }
47
+ }
48
+
49
+ function step(result) {
50
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
51
+ }
52
+
53
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
54
+ });
55
+ };
56
+
57
+ // Context
58
+ const WorkspaceContext = /*#__PURE__*/(0, _react.createContext)(null); // Hooks
59
+
60
+ function useWorkspace() {
61
+ const wks = (0, _react.useContext)(WorkspaceContext);
62
+
63
+ if (!wks) {
64
+ throw new Error('To use the useWorkspace hook you must wrap your command with the withWorkspace wrapper');
65
+ }
66
+
67
+ return wks;
68
+ } // Wrapper
69
+
70
+
71
+ const withWorkspace = (0, _wrapper.commandWrapper)('withWorkspace', yargs => yargs.option('workspace', {
72
+ alias: 'w',
73
+ type: 'string',
74
+ desc: 'Workspace to use'
75
+ }), (useArgs, Wrapped) => {
76
+ const {
77
+ workspace
78
+ } = useArgs();
79
+ const project = (0, _project.useProject)(); // State
80
+
81
+ const [wks, setWks] = (0, _react.useState)(); // Effects
82
+
83
+ (0, _react.useEffect)(() => void (() => __awaiter(void 0, void 0, void 0, function* () {
84
+ setWks(yield workspace ? project.workspace(workspace) : project.currentWorkspace());
85
+ }))(), [project, workspace]); // Render
86
+
87
+ if (wks === undefined) {
88
+ return (0, _jsxRuntime.jsxs)(_ink.Text, {
89
+ children: [(0, _jsxRuntime.jsx)(_inkSpinner.default, {}), " Loading \"", workspace || '.', "\" workspace"]
90
+ });
91
+ }
92
+
93
+ if (wks === null) {
94
+ return (0, _jsxRuntime.jsxs)(_ink.Text, Object.assign({
95
+ color: "red"
96
+ }, {
97
+ children: [_logSymbols.default.error, " Workspace \"", workspace || '.', "\" not found"]
98
+ }));
99
+ }
100
+
101
+ return (0, _jsxRuntime.jsx)(WorkspaceContext.Provider, Object.assign({
102
+ value: wks
103
+ }, {
104
+ children: (0, _jsxRuntime.jsx)(Wrapped, {})
105
+ }));
106
+ });
107
+ exports.withWorkspace = withWorkspace;
108
+ //# sourceMappingURL=workspace.wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["wrappers/workspace.wrapper.js","wrappers/workspace.wrapper.tsx"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","WorkspaceContext","useWorkspace","wks","Error","withWorkspace","yargs","option","alias","type","desc","useArgs","Wrapped","workspace","project","setWks","currentWorkspace","undefined","Text","children","Spinner","Object","assign","color","logSymbols","error","Provider"],"mappings":"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","file":"workspace.wrapper.js","sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport { createContext, useContext, useEffect, useState } from 'react';\nimport { commandWrapper } from '../wrapper';\nimport { useProject } from './project.wrapper';\nimport logSymbols from 'log-symbols';\n// Context\nconst WorkspaceContext = createContext(null);\n// Hooks\nexport function useWorkspace() {\n const wks = useContext(WorkspaceContext);\n if (!wks) {\n throw new Error('To use the useWorkspace hook you must wrap your command with the withWorkspace wrapper');\n }\n return wks;\n}\n// Wrapper\nexport const withWorkspace = commandWrapper('withWorkspace', (yargs) => yargs\n .option('workspace', {\n alias: 'w',\n type: 'string',\n desc: 'Workspace to use'\n}), (useArgs, Wrapped) => {\n const { workspace } = useArgs();\n const project = useProject();\n // State\n const [wks, setWks] = useState();\n // Effects\n useEffect(() => void (() => __awaiter(void 0, void 0, void 0, function* () {\n setWks(yield (workspace ? project.workspace(workspace) : project.currentWorkspace()));\n }))(), [project, workspace]);\n // Render\n if (wks === undefined) {\n return _jsxs(Text, { children: [_jsx(Spinner, {}), \" Loading \\\"\", workspace || '.', \"\\\" workspace\"] });\n }\n if (wks === null) {\n return _jsxs(Text, Object.assign({ color: \"red\" }, { children: [logSymbols.error, \" Workspace \\\"\", workspace || '.', \"\\\" not found\"] }));\n }\n return (_jsx(WorkspaceContext.Provider, Object.assign({ value: wks }, { children: _jsx(Wrapped, {}) })));\n});","import { Workspace } from '@jujulego/jill-core';\nimport { Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport { createContext, useContext, useEffect, useState } from 'react';\n\nimport { commandWrapper } from '../wrapper';\nimport { useProject } from './project.wrapper';\nimport logSymbols from 'log-symbols';\n\n// Context\nconst WorkspaceContext = createContext<Workspace | null>(null);\n\n// Hooks\nexport function useWorkspace(): Workspace {\n const wks = useContext(WorkspaceContext);\n\n if (!wks) {\n throw new Error('To use the useWorkspace hook you must wrap your command with the withWorkspace wrapper');\n }\n\n return wks;\n}\n\n// Wrapper\nexport const withWorkspace = commandWrapper(\n 'withWorkspace',\n (yargs) => yargs\n .option('workspace', {\n alias: 'w',\n type: 'string',\n desc: 'Workspace to use'\n }),\n (useArgs, Wrapped) => {\n const { workspace } = useArgs();\n const project = useProject();\n\n // State\n const [wks, setWks] = useState<Workspace | null>();\n\n // Effects\n useEffect(() => void (async () => {\n setWks(await (workspace ? project.workspace(workspace) : project.currentWorkspace()));\n })(), [project, workspace]);\n\n // Render\n if (wks === undefined) {\n return <Text><Spinner /> Loading &quot;{workspace || '.'}&quot; workspace</Text>;\n }\n\n if (wks === null) {\n return <Text color=\"red\">{logSymbols.error} Workspace &quot;{workspace || '.'}&quot; not found</Text>;\n }\n\n return (\n <WorkspaceContext.Provider value={wks}>\n <Wrapped />\n </WorkspaceContext.Provider>\n );\n }\n);\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jujulego/jill",
3
- "version": "1.1.19",
3
+ "version": "2.0.0-beta.2",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -18,23 +18,34 @@
18
18
  "clean": "gulp clean",
19
19
  "build": "gulp build",
20
20
  "watch": "gulp watch",
21
- "start": "ts-node src/main.ts",
21
+ "start": "ts-node src/main.tsx",
22
22
  "test": "jest"
23
23
  },
24
24
  "engines": {
25
25
  "node": "^14"
26
26
  },
27
+ "peerDependencies": {
28
+ "@jujulego/jill-myr": "1.2.1"
29
+ },
30
+ "peerDependenciesMeta": {
31
+ "@jujulego/jill-myr": {
32
+ "optional": true
33
+ }
34
+ },
27
35
  "dependencies": {
28
- "@jujulego/jill-common": "^1.0.0",
29
- "@jujulego/jill-core": "^1.1.12",
30
- "@jujulego/jill-myr": "^0.1.0",
36
+ "@jujulego/jill-common": "^2.0.0-beta.2",
37
+ "@jujulego/jill-core": "^2.0.0-beta.1",
31
38
  "@repeaterjs/repeater": "^3.0.4",
32
39
  "chalk": "^4.1.1",
33
- "graphql": "^15.7.2",
34
- "graphql-request": "^3.6.1",
40
+ "graphql": "^16.0.0",
41
+ "graphql-request": "^4.0.0",
35
42
  "graphql-tag": "^2.12.6",
36
43
  "graphql-ws": "^5.5.5",
44
+ "ink": "^3.2.0",
45
+ "ink-spinner": "^4.0.3",
46
+ "log-symbols": "^4.1.0",
37
47
  "ora": "^5.4.1",
48
+ "react": "^17.0.2",
38
49
  "slugify": "^1.6.0",
39
50
  "winston": "^3.3.3",
40
51
  "winston-transport": "^4.4.0",
@@ -42,28 +53,36 @@
42
53
  "yargs": "^17.0.1"
43
54
  },
44
55
  "devDependencies": {
45
- "@babel/core": "7.16.5",
46
- "@babel/plugin-proposal-class-properties": "7.16.5",
47
- "@babel/preset-env": "7.16.5",
48
- "@babel/runtime": "7.16.5",
56
+ "@babel/core": "7.17.8",
57
+ "@babel/plugin-proposal-class-properties": "7.16.7",
58
+ "@babel/preset-env": "7.16.11",
59
+ "@babel/preset-react": "7.16.7",
60
+ "@babel/runtime": "7.17.8",
49
61
  "@types/gulp": "4.0.9",
50
- "@types/jest": "27.0.3",
51
- "@types/node": "14.18.3",
52
- "@types/ws": "8.2.1",
53
- "@types/yargs": "17.0.8",
54
- "@typescript-eslint/eslint-plugin": "5.8.1",
55
- "@typescript-eslint/parser": "5.8.1",
62
+ "@types/jest": "27.4.1",
63
+ "@types/node": "14.18.12",
64
+ "@types/normalize-package-data": "2.4.1",
65
+ "@types/react": "17.0.39",
66
+ "@types/ws": "8.5.3",
67
+ "@types/yargs": "17.0.10",
68
+ "@typescript-eslint/eslint-plugin": "5.16.0",
69
+ "@typescript-eslint/parser": "5.16.0",
56
70
  "del": "6.0.0",
57
- "eslint": "7.32.0",
58
- "eslint-plugin-jest": "25.3.2",
71
+ "eslint": "8.11.0",
72
+ "eslint-plugin-jest": "26.1.3",
73
+ "eslint-plugin-react": "7.29.4",
74
+ "eslint-plugin-react-hooks": "4.3.0",
59
75
  "eslint-plugin-workspaces": "0.7.0",
60
76
  "gulp": "4.0.2",
61
77
  "gulp-cli": "2.3.0",
62
- "jest": "27.4.5",
78
+ "ink-testing-library": "2.1.0",
79
+ "jest": "27.5.1",
63
80
  "jill-tools": "0.0.0",
64
- "msw": "0.36.3",
65
- "ts-jest": "27.1.1",
66
- "ts-node": "10.4.0",
67
- "typescript": "4.5.4"
68
- }
81
+ "msw": "0.39.2",
82
+ "normalize-package-data": "3.0.3",
83
+ "ts-jest": "27.1.4",
84
+ "ts-node": "10.7.0",
85
+ "typescript": "4.6.2"
86
+ },
87
+ "stableVersion": "2.0.0-beta.1"
69
88
  }
@@ -1,8 +0,0 @@
1
- import { Arguments, WorkspaceArgs, WorkspaceCommand } from '@jujulego/jill-common';
2
- export declare class InfoCommand extends WorkspaceCommand {
3
- readonly name = "info";
4
- readonly description = "Print workspace data";
5
- protected run(args: Arguments<WorkspaceArgs>): Promise<number | void>;
6
- private printDepsTree;
7
- private printTree;
8
- }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["commands/info.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAMnF,qBAAa,WAAY,SAAQ,gBAAgB;IAE/C,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,WAAW,0BAA0B;cAG9B,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;YAY7D,aAAa;YAWb,SAAS;CAiCxB","file":"info.command.d.ts","sourcesContent":["import { Arguments, WorkspaceArgs, WorkspaceCommand } from '@jujulego/jill-common';\nimport { Workspace } from '@jujulego/jill-core';\nimport chalk from 'chalk';\nimport path from 'path';\n\n// Command\nexport class InfoCommand extends WorkspaceCommand {\n // Attributes\n readonly name = 'info';\n readonly description = 'Print workspace data';\n\n // Methods\n protected async run(args: Arguments<WorkspaceArgs>): Promise<number | void> {\n await super.run(args);\n this.spinner.stop();\n\n // Print data\n this.log(chalk`Workspace {bold ${this.workspace.name}}:`);\n this.log(chalk`{bold Version:} ${this.workspace.manifest.version || chalk.grey('unset')}`);\n this.log(chalk`{bold Directory:} ${path.relative(process.cwd(), this.workspace.cwd) || '.'}`);\n this.log('');\n await this.printDepsTree();\n }\n\n private async printDepsTree(): Promise<void> {\n this.log(chalk`{bold Dependencies:}`);\n const printed = new Set([this.workspace.name]);\n\n await this.printTree(this.workspace, '', false, printed);\n\n if (printed.size === 1) {\n this.log(chalk.grey(` No dependencies for ${this.workspace.name}`));\n }\n }\n\n private async printTree(wks: Workspace, level: string, dev: boolean, printed: Set<string>) {\n const workspaces: [Workspace, boolean][] = [];\n\n for await (const dep of wks.dependencies()) {\n workspaces.push([dep, dev]);\n }\n\n for await (const dep of wks.devDependencies()) {\n workspaces.push([dep, true]);\n }\n\n for (let i = 0; i < workspaces.length; ++i) {\n const [dep, isDev] = workspaces[i];\n const isPrinted = printed.has(dep.cwd);\n const isLast = i === workspaces.length - 1;\n\n // Format\n let name = dep.name;\n if (dep.version) name = chalk`${name}{grey @${dep.version}}`;\n if (isDev) name = chalk.blue(`${name} (dev)`);\n if (isPrinted) name = chalk.italic(name);\n\n const branchFmt = dev ? chalk.blue : (s: string) => s;\n\n this.log(`${level}${branchFmt(`${isLast ? '└' : '├' }─ `)}${name}`);\n\n // Print deps of dep\n if (!isPrinted) {\n printed.add(dep.cwd);\n await this.printTree(dep, level + (isLast ? ' ' : branchFmt('│ ')), isDev, printed);\n }\n }\n }\n}\n"]}