@jujulego/jill 2.0.0-beta.2 → 2.0.0-rc.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 (191) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +28 -0
  3. package/dist/commands/each.d.ts +16 -0
  4. package/dist/commands/each.d.ts.map +1 -0
  5. package/dist/commands/each.js +117 -0
  6. package/dist/commands/each.js.map +1 -0
  7. package/dist/commands/{list.command.d.ts → list.d.ts} +3 -5
  8. package/dist/commands/list.d.ts.map +1 -0
  9. package/dist/commands/list.js +170 -0
  10. package/dist/commands/list.js.map +1 -0
  11. package/dist/commands/run.d.ts +8 -0
  12. package/dist/commands/run.d.ts.map +1 -0
  13. package/dist/commands/run.js +59 -0
  14. package/dist/commands/run.js.map +1 -0
  15. package/dist/commands/tree.d.ts +3 -0
  16. package/dist/commands/tree.d.ts.map +1 -0
  17. package/dist/commands/tree.js +35 -0
  18. package/dist/commands/tree.js.map +1 -0
  19. package/dist/filters/affected.filter.d.ts +11 -0
  20. package/dist/filters/affected.filter.d.ts.map +1 -0
  21. package/dist/filters/affected.filter.js +82 -0
  22. package/dist/filters/affected.filter.js.map +1 -0
  23. package/dist/filters/index.d.ts +4 -0
  24. package/dist/filters/index.d.ts.map +1 -0
  25. package/dist/filters/index.js +21 -0
  26. package/dist/filters/index.js.map +1 -0
  27. package/dist/filters/pipeline.d.ts +11 -0
  28. package/dist/filters/pipeline.d.ts.map +1 -0
  29. package/dist/filters/pipeline.js +34 -0
  30. package/dist/filters/pipeline.js.map +1 -0
  31. package/dist/filters/private.filter.d.ts +7 -0
  32. package/dist/filters/private.filter.d.ts.map +1 -0
  33. package/dist/filters/private.filter.js +20 -0
  34. package/dist/filters/private.filter.js.map +1 -0
  35. package/dist/filters/scripts.filter.d.ts +7 -0
  36. package/dist/filters/scripts.filter.d.ts.map +1 -0
  37. package/dist/filters/scripts.filter.js +21 -0
  38. package/dist/filters/scripts.filter.js.map +1 -0
  39. package/dist/git.d.ts +16 -0
  40. package/dist/git.d.ts.map +1 -0
  41. package/dist/git.js +94 -0
  42. package/dist/git.js.map +1 -0
  43. package/dist/index.d.ts +7 -4
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +19 -33
  46. package/dist/index.js.map +1 -1
  47. package/dist/main.d.ts.map +1 -1
  48. package/dist/main.js +26 -62
  49. package/dist/main.js.map +1 -1
  50. package/dist/middlewares/global-config.d.ts +5 -0
  51. package/dist/middlewares/global-config.d.ts.map +1 -0
  52. package/dist/middlewares/global-config.js +29 -0
  53. package/dist/middlewares/global-config.js.map +1 -0
  54. package/dist/middlewares/index.d.ts +4 -0
  55. package/dist/middlewares/index.d.ts.map +1 -0
  56. package/dist/middlewares/index.js +21 -0
  57. package/dist/middlewares/index.js.map +1 -0
  58. package/dist/middlewares/load-project.d.ts +6 -0
  59. package/dist/middlewares/load-project.d.ts.map +1 -0
  60. package/dist/middlewares/load-project.js +41 -0
  61. package/dist/middlewares/load-project.js.map +1 -0
  62. package/dist/middlewares/load-workspace.d.ts +3 -0
  63. package/dist/middlewares/load-workspace.d.ts.map +1 -0
  64. package/dist/middlewares/load-workspace.js +42 -0
  65. package/dist/middlewares/load-workspace.js.map +1 -0
  66. package/dist/middlewares/setup-ink.d.ts +1 -0
  67. package/dist/middlewares/setup-ink.d.ts.map +1 -0
  68. package/dist/middlewares/setup-ink.js +22 -0
  69. package/dist/middlewares/setup-ink.js.map +1 -0
  70. package/dist/project/index.d.ts +2 -0
  71. package/dist/project/index.d.ts.map +1 -0
  72. package/dist/project/index.js +19 -0
  73. package/dist/project/index.js.map +1 -0
  74. package/dist/project/project.d.ts +25 -0
  75. package/dist/project/project.d.ts.map +1 -0
  76. package/dist/project/project.js +190 -0
  77. package/dist/project/project.js.map +1 -0
  78. package/dist/project/workspace.d.ts +34 -0
  79. package/dist/project/workspace.d.ts.map +1 -0
  80. package/dist/project/workspace.js +173 -0
  81. package/dist/project/workspace.js.map +1 -0
  82. package/dist/services/index.d.ts +4 -0
  83. package/dist/services/index.d.ts.map +1 -0
  84. package/dist/services/index.js +21 -0
  85. package/dist/services/index.js.map +1 -0
  86. package/dist/services/inversify.config.d.ts +11 -0
  87. package/dist/services/inversify.config.d.ts.map +1 -0
  88. package/dist/services/inversify.config.js +34 -0
  89. package/dist/services/inversify.config.js.map +1 -0
  90. package/dist/services/logger.service.d.ts +6 -0
  91. package/dist/services/logger.service.d.ts.map +1 -0
  92. package/dist/services/logger.service.js +75 -0
  93. package/dist/services/logger.service.js.map +1 -0
  94. package/dist/services/spinner.service.d.ts +18 -0
  95. package/dist/services/spinner.service.d.ts.map +1 -0
  96. package/dist/services/spinner.service.js +68 -0
  97. package/dist/services/spinner.service.js.map +1 -0
  98. package/dist/services/task-manager.service.d.ts +1 -0
  99. package/dist/services/task-manager.service.d.ts.map +1 -0
  100. package/dist/services/task-manager.service.js +18 -0
  101. package/dist/services/task-manager.service.js.map +1 -0
  102. package/dist/types.d.ts +1 -0
  103. package/dist/types.d.ts.map +1 -0
  104. package/dist/types.js +7 -0
  105. package/dist/types.js.map +1 -0
  106. package/dist/ui/global-spinner.d.ts +2 -0
  107. package/dist/ui/global-spinner.d.ts.map +1 -0
  108. package/dist/ui/global-spinner.js +65 -0
  109. package/dist/ui/global-spinner.js.map +1 -0
  110. package/dist/ui/index.d.ts +7 -0
  111. package/dist/ui/index.d.ts.map +1 -0
  112. package/dist/ui/index.js +24 -0
  113. package/dist/ui/index.js.map +1 -0
  114. package/dist/ui/layout.d.ts +2 -0
  115. package/dist/ui/layout.d.ts.map +1 -0
  116. package/dist/ui/layout.js +20 -0
  117. package/dist/ui/layout.js.map +1 -0
  118. package/dist/ui/list.d.ts +6 -0
  119. package/dist/ui/list.d.ts.map +1 -0
  120. package/dist/ui/list.js +30 -0
  121. package/dist/ui/list.js.map +1 -0
  122. package/dist/{components/StaticLogs.d.ts → ui/static-logs.d.ts} +0 -0
  123. package/dist/ui/static-logs.d.ts.map +1 -0
  124. package/dist/ui/static-logs.js +63 -0
  125. package/dist/ui/static-logs.js.map +1 -0
  126. package/dist/ui/task-name.d.ts +6 -0
  127. package/dist/ui/task-name.d.ts.map +1 -0
  128. package/dist/ui/task-name.js +35 -0
  129. package/dist/ui/task-name.js.map +1 -0
  130. package/dist/ui/task-spinner.d.ts +6 -0
  131. package/dist/ui/task-spinner.d.ts.map +1 -0
  132. package/dist/ui/task-spinner.js +143 -0
  133. package/dist/ui/task-spinner.js.map +1 -0
  134. package/dist/ui/tasks-spinner.d.ts +6 -0
  135. package/dist/ui/tasks-spinner.d.ts.map +1 -0
  136. package/dist/ui/tasks-spinner.js +17 -0
  137. package/dist/ui/tasks-spinner.js.map +1 -0
  138. package/dist/{components/WorkspaceTree.d.ts → ui/workspace-tree.d.ts} +1 -1
  139. package/dist/ui/workspace-tree.d.ts.map +1 -0
  140. package/dist/ui/workspace-tree.js +87 -0
  141. package/dist/ui/workspace-tree.js.map +1 -0
  142. package/dist/utils.d.ts +13 -0
  143. package/dist/utils.d.ts.map +1 -0
  144. package/dist/utils.js +72 -0
  145. package/dist/utils.js.map +1 -0
  146. package/package.json +55 -56
  147. package/dist/application.context.d.ts +0 -28
  148. package/dist/application.context.d.ts.map +0 -1
  149. package/dist/application.context.js +0 -30
  150. package/dist/application.context.js.map +0 -1
  151. package/dist/application.d.ts +0 -7
  152. package/dist/application.d.ts.map +0 -1
  153. package/dist/application.js +0 -125
  154. package/dist/application.js.map +0 -1
  155. package/dist/command.d.ts +0 -8
  156. package/dist/command.d.ts.map +0 -1
  157. package/dist/command.js +0 -24
  158. package/dist/command.js.map +0 -1
  159. package/dist/commands/each.command.d.ts +0 -18
  160. package/dist/commands/each.command.d.ts.map +0 -1
  161. package/dist/commands/each.command.js +0 -176
  162. package/dist/commands/each.command.js.map +0 -1
  163. package/dist/commands/list.command.d.ts.map +0 -1
  164. package/dist/commands/list.command.js +0 -252
  165. package/dist/commands/list.command.js.map +0 -1
  166. package/dist/commands/run.command.d.ts +0 -12
  167. package/dist/commands/run.command.d.ts.map +0 -1
  168. package/dist/commands/run.command.js +0 -94
  169. package/dist/commands/run.command.js.map +0 -1
  170. package/dist/commands/tree.command.d.ts +0 -7
  171. package/dist/commands/tree.command.d.ts.map +0 -1
  172. package/dist/commands/tree.command.js +0 -35
  173. package/dist/commands/tree.command.js.map +0 -1
  174. package/dist/components/StaticLogs.d.ts.map +0 -1
  175. package/dist/components/StaticLogs.js +0 -77
  176. package/dist/components/StaticLogs.js.map +0 -1
  177. package/dist/components/WorkspaceTree.d.ts.map +0 -1
  178. package/dist/components/WorkspaceTree.js +0 -151
  179. package/dist/components/WorkspaceTree.js.map +0 -1
  180. package/dist/wrapper.d.ts +0 -6
  181. package/dist/wrapper.d.ts.map +0 -1
  182. package/dist/wrapper.js +0 -30
  183. package/dist/wrapper.js.map +0 -1
  184. package/dist/wrappers/project.wrapper.d.ts +0 -7
  185. package/dist/wrappers/project.wrapper.d.ts.map +0 -1
  186. package/dist/wrappers/project.wrapper.js +0 -105
  187. package/dist/wrappers/project.wrapper.js.map +0 -1
  188. package/dist/wrappers/workspace.wrapper.d.ts +0 -5
  189. package/dist/wrappers/workspace.wrapper.d.ts.map +0 -1
  190. package/dist/wrappers/workspace.wrapper.js +0 -108
  191. package/dist/wrappers/workspace.wrapper.js.map +0 -1
@@ -1,7 +0,0 @@
1
- export declare const TreeCommand: import("../application.context").CommandComponent<Omit<Omit<{}, "workspace"> & {
2
- workspace: string | undefined;
3
- }, "project" | "package-manager"> & {
4
- project: string | undefined;
5
- } & {
6
- "package-manager": import("@jujulego/jill-core").PackageManager | undefined;
7
- }>;
@@ -1 +0,0 @@
1
- {"version":3,"sources":["commands/tree.command.tsx"],"names":[],"mappings":"AAaA,eAAO,MAAM,WAAW;;;;;;EAOtB,CAAC","file":"tree.command.d.ts","sourcesContent":["import { command } from '../command';\nimport { withProject } from '../wrappers/project.wrapper';\nimport { useWorkspace, withWorkspace } from '../wrappers/workspace.wrapper';\nimport { WorkspaceTree } from '../components/WorkspaceTree';\n\n// Command\nconst { wrapper } = withProject(withWorkspace(command({\n name: 'tree',\n description: 'Print workspace dependency tree',\n builder: (yargs) => yargs\n})));\n\n// Component\nexport const TreeCommand = wrapper(function InfoCommand() {\n const wks = useWorkspace();\n\n // Render\n return (\n <WorkspaceTree workspace={wks} />\n );\n});\n"]}
@@ -1,35 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.TreeCommand = void 0;
7
-
8
- var _jsxRuntime = require("react/jsx-runtime");
9
-
10
- var _command = require("../command");
11
-
12
- var _project = require("../wrappers/project.wrapper");
13
-
14
- var _workspace = require("../wrappers/workspace.wrapper");
15
-
16
- var _WorkspaceTree = require("../components/WorkspaceTree");
17
-
18
- // Command
19
- const {
20
- wrapper
21
- } = (0, _project.withProject)((0, _workspace.withWorkspace)((0, _command.command)({
22
- name: 'tree',
23
- description: 'Print workspace dependency tree',
24
- builder: yargs => yargs
25
- }))); // Component
26
-
27
- const TreeCommand = wrapper(function InfoCommand() {
28
- const wks = (0, _workspace.useWorkspace)(); // Render
29
-
30
- return (0, _jsxRuntime.jsx)(_WorkspaceTree.WorkspaceTree, {
31
- workspace: wks
32
- });
33
- });
34
- exports.TreeCommand = TreeCommand;
35
- //# sourceMappingURL=tree.command.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["commands/tree.command.js","commands/tree.command.tsx"],"names":["wrapper","name","description","builder","yargs","TreeCommand","InfoCommand","wks","WorkspaceTree","workspace"],"mappings":";;;;;;;AAAA;;ACAA;;AACA;;AACA;;AACA;;AAEA;AACA,MAAM;AAAEA,EAAAA;AAAF,IAAc,0BAAY,8BAAc,sBAAQ;AACpDC,EAAAA,IAAI,EAAE,MAD8C;AAEpDC,EAAAA,WAAW,EAAE,iCAFuC;AAGpDC,EAAAA,OAAO,EAAGC,KAAD,IAAWA;AAHgC,CAAR,CAAd,CAAZ,CAApB,C,CAMA;;AACO,MAAMC,WAAW,GAAGL,OAAO,CAAC,SAASM,WAAT,GAAoB;AACrD,QAAMC,GAAG,GAAG,8BAAZ,CADqD,CAGrD;;AACA,SACE,qBAACC,4BAAD,EAAc;AAACC,IAAAA,SAAS,EAAEF;AAAZ,GAAd,CADF;AAGD,CAPiC,CAA3B","file":"tree.command.js","sourcesContent":["import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { command } from '../command';\nimport { withProject } from '../wrappers/project.wrapper';\nimport { useWorkspace, withWorkspace } from '../wrappers/workspace.wrapper';\nimport { WorkspaceTree } from '../components/WorkspaceTree';\n// Command\nconst { wrapper } = withProject(withWorkspace(command({\n name: 'tree',\n description: 'Print workspace dependency tree',\n builder: (yargs) => yargs\n})));\n// Component\nexport const TreeCommand = wrapper(function InfoCommand() {\n const wks = useWorkspace();\n // Render\n return (_jsx(WorkspaceTree, { workspace: wks }));\n});","import { command } from '../command';\nimport { withProject } from '../wrappers/project.wrapper';\nimport { useWorkspace, withWorkspace } from '../wrappers/workspace.wrapper';\nimport { WorkspaceTree } from '../components/WorkspaceTree';\n\n// Command\nconst { wrapper } = withProject(withWorkspace(command({\n name: 'tree',\n description: 'Print workspace dependency tree',\n builder: (yargs) => yargs\n})));\n\n// Component\nexport const TreeCommand = wrapper(function InfoCommand() {\n const wks = useWorkspace();\n\n // Render\n return (\n <WorkspaceTree workspace={wks} />\n );\n});\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["components/StaticLogs.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAuB,MAAM,OAAO,CAAC;AAWhD,eAAO,MAAM,UAAU,EAAE,EAqCxB,CAAC","file":"StaticLogs.d.ts","sourcesContent":["import { logger } from '@jujulego/jill-core';\nimport { Static, Text } from 'ink';\nimport { FC, useEffect, useState } from 'react';\nimport { format } from 'winston';\nimport Transport from 'winston-transport';\n\n// Types\ninterface Log {\n label?: string;\n message: string;\n}\n\n// Components\nexport const StaticLogs: FC = () => {\n // State\n const [logs, setLogs] = useState<Log[]>([]);\n\n // Effects\n useEffect(() => {\n const transport = new class extends Transport {\n // Constructor\n constructor() {\n super({\n format: format.combine(\n format.errors(),\n format.colorize({ message: true, colors: { debug: 'grey', verbose: 'blue', info: 'white', error: 'red' } }),\n )\n });\n }\n\n // Methods\n log(log: Log, next: () => void): void {\n setLogs((old) => [...old, log]);\n next();\n }\n };\n\n logger.add(transport);\n\n return () => void logger.remove(transport);\n }, []);\n\n // Render\n return (\n <Static items={logs} style={{ height: 1 }}>\n { ({ label, message }, idx) => (\n <Text key={idx}><Text color=\"grey\">jill: { label && `[${label}] ` }</Text>{ message }</Text>\n ) }\n </Static>\n );\n};\n"]}
@@ -1,77 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.StaticLogs = void 0;
7
-
8
- var _jsxRuntime = require("react/jsx-runtime");
9
-
10
- var _jillCore = require("@jujulego/jill-core");
11
-
12
- var _ink = require("ink");
13
-
14
- var _react = require("react");
15
-
16
- var _winston = require("winston");
17
-
18
- var _winstonTransport = _interopRequireDefault(require("winston-transport"));
19
-
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
-
22
- // Components
23
- const StaticLogs = () => {
24
- // State
25
- const [logs, setLogs] = (0, _react.useState)([]); // Effects
26
-
27
- (0, _react.useEffect)(() => {
28
- const transport = new class extends _winstonTransport.default {
29
- // Constructor
30
- constructor() {
31
- super({
32
- format: _winston.format.combine(_winston.format.errors(), _winston.format.colorize({
33
- message: true,
34
- colors: {
35
- debug: 'grey',
36
- verbose: 'blue',
37
- info: 'white',
38
- error: 'red'
39
- }
40
- }))
41
- });
42
- } // Methods
43
-
44
-
45
- log(log, next) {
46
- setLogs(old => [...old, log]);
47
- next();
48
- }
49
-
50
- }();
51
-
52
- _jillCore.logger.add(transport);
53
-
54
- return () => void _jillCore.logger.remove(transport);
55
- }, []); // Render
56
-
57
- return (0, _jsxRuntime.jsx)(_ink.Static, Object.assign({
58
- items: logs,
59
- style: {
60
- height: 1
61
- }
62
- }, {
63
- children: ({
64
- label,
65
- message
66
- }, idx) => (0, _jsxRuntime.jsxs)(_ink.Text, {
67
- children: [(0, _jsxRuntime.jsxs)(_ink.Text, Object.assign({
68
- color: "grey"
69
- }, {
70
- children: ["jill: ", label && `[${label}] `]
71
- })), message]
72
- }, idx)
73
- }));
74
- };
75
-
76
- exports.StaticLogs = StaticLogs;
77
- //# sourceMappingURL=StaticLogs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["components/StaticLogs.js","components/StaticLogs.tsx"],"names":["StaticLogs","logs","setLogs","transport","Transport","constructor","format","combine","errors","colorize","message","colors","debug","verbose","info","error","log","next","old","logger","add","remove","Static","Object","assign","items","style","height","children","label","idx","Text","color"],"mappings":";;;;;;;AAAA;;ACAA;;AACA;;AACA;;AACA;;AACA;;;;AAQA;AACO,MAAMA,UAAU,GAAO,MAAK;AACjC;AACA,QAAM,CAACC,IAAD,EAAOC,OAAP,IAAkB,qBAAgB,EAAhB,CAAxB,CAFiC,CAIjC;;AACA,wBAAU,MAAK;AACb,UAAMC,SAAS,GAAG,IAAI,cAAcC,yBAAd,CAAuB;AAC3C;AACAC,MAAAA,WAAA,GAAA;AACE,cAAM;AACJC,UAAAA,MAAM,EAAEA,gBAAOC,OAAP,CACND,gBAAOE,MAAP,EADM,EAENF,gBAAOG,QAAP,CAAgB;AAAEC,YAAAA,OAAO,EAAE,IAAX;AAAiBC,YAAAA,MAAM,EAAE;AAAEC,cAAAA,KAAK,EAAE,MAAT;AAAiBC,cAAAA,OAAO,EAAE,MAA1B;AAAkCC,cAAAA,IAAI,EAAE,OAAxC;AAAiDC,cAAAA,KAAK,EAAE;AAAxD;AAAzB,WAAhB,CAFM;AADJ,SAAN;AAMD,OAT0C,CAW3C;;;AACAC,MAAAA,GAAG,CAACA,GAAD,EAAWC,IAAX,EAA2B;AAC5Bf,QAAAA,OAAO,CAAEgB,GAAD,IAAS,CAAC,GAAGA,GAAJ,EAASF,GAAT,CAAV,CAAP;AACAC,QAAAA,IAAI;AACL;;AAf0C,KAA3B,EAAlB;;AAkBAE,qBAAOC,GAAP,CAAWjB,SAAX;;AAEA,WAAO,MAAM,KAAKgB,iBAAOE,MAAP,CAAclB,SAAd,CAAlB;AACD,GAtBD,EAsBG,EAtBH,EALiC,CA6BjC;;AACA,SACE,qBAACmB,WAAD,EAAOC,MAAA,CAAAC,MAAA,CAAA;AAACC,IAAAA,KAAK,EAAExB,IAAR;AAAcyB,IAAAA,KAAK,EAAE;AAAEC,MAAAA,MAAM,EAAE;AAAV;AAArB,GAAA,EAAkC;AAAAC,IAAAA,QAAA,EACrC,CAAC;AAAEC,MAAAA,KAAF;AAASnB,MAAAA;AAAT,KAAD,EAAqBoB,GAArB,KACA,sBAACC,SAAD,EAAK;AAAAH,MAAAA,QAAA,EAAA,CAAW,sBAACG,SAAD,EAAKR,MAAA,CAAAC,MAAA,CAAA;AAACQ,QAAAA,KAAK,EAAC;AAAP,OAAA,EAAa;AAAAJ,QAAAA,QAAA,EAAA,CAAA,QAAA,EAASC,KAAK,IAAI,IAAIA,KAAK,IAA3B;AAAA,OAAb,CAAL,CAAX,EAAuEnB,OAAvE;AAAA,KAAL,EAAWoB,GAAX;AAFqC,GAAlC,CAAP,CADF;AAOD,CArCM","file":"StaticLogs.js","sourcesContent":["import { jsxs as _jsxs, jsx as _jsx } from \"react/jsx-runtime\";\nimport { logger } from '@jujulego/jill-core';\nimport { Static, Text } from 'ink';\nimport { useEffect, useState } from 'react';\nimport { format } from 'winston';\nimport Transport from 'winston-transport';\n// Components\nexport const StaticLogs = () => {\n // State\n const [logs, setLogs] = useState([]);\n // Effects\n useEffect(() => {\n const transport = new class extends Transport {\n // Constructor\n constructor() {\n super({\n format: format.combine(format.errors(), format.colorize({ message: true, colors: { debug: 'grey', verbose: 'blue', info: 'white', error: 'red' } }))\n });\n }\n // Methods\n log(log, next) {\n setLogs((old) => [...old, log]);\n next();\n }\n };\n logger.add(transport);\n return () => void logger.remove(transport);\n }, []);\n // Render\n return (_jsx(Static, Object.assign({ items: logs, style: { height: 1 } }, { children: ({ label, message }, idx) => (_jsxs(Text, { children: [_jsxs(Text, Object.assign({ color: \"grey\" }, { children: [\"jill: \", label && `[${label}] `] })), message] }, idx)) })));\n};","import { logger } from '@jujulego/jill-core';\nimport { Static, Text } from 'ink';\nimport { FC, useEffect, useState } from 'react';\nimport { format } from 'winston';\nimport Transport from 'winston-transport';\n\n// Types\ninterface Log {\n label?: string;\n message: string;\n}\n\n// Components\nexport const StaticLogs: FC = () => {\n // State\n const [logs, setLogs] = useState<Log[]>([]);\n\n // Effects\n useEffect(() => {\n const transport = new class extends Transport {\n // Constructor\n constructor() {\n super({\n format: format.combine(\n format.errors(),\n format.colorize({ message: true, colors: { debug: 'grey', verbose: 'blue', info: 'white', error: 'red' } }),\n )\n });\n }\n\n // Methods\n log(log: Log, next: () => void): void {\n setLogs((old) => [...old, log]);\n next();\n }\n };\n\n logger.add(transport);\n\n return () => void logger.remove(transport);\n }, []);\n\n // Render\n return (\n <Static items={logs} style={{ height: 1 }}>\n { ({ label, message }, idx) => (\n <Text key={idx}><Text color=\"grey\">jill: { label && `[${label}] ` }</Text>{ message }</Text>\n ) }\n </Static>\n );\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["components/WorkspaceTree.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,EAAE,EAAE,YAAY,EAAuB,MAAM,OAAO,CAAC;AAG9D,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,SAAS,CAAC;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAMD,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAuChD,CAAC","file":"WorkspaceTree.d.ts","sourcesContent":["import { WorkspaceName } from '@jujulego/jill-common';\nimport { Workspace } from '@jujulego/jill-core';\nimport { Newline, Text, TextProps } from 'ink';\nimport { FC, ReactElement, useEffect, useState } from 'react';\n\n// Types\nexport interface WorkspaceTreeProps {\n workspace: Workspace;\n dev?: boolean;\n level?: ReactElement;\n}\n\n// Utils\nconst style = (dev: boolean): TextProps => ({ color: dev ? 'blue' : '' });\n\n// Component\nexport const WorkspaceTree: FC<WorkspaceTreeProps> = (props) => {\n const { workspace: wks, dev = false, level = '' } = props;\n\n // State\n const [deps, setDeps] = useState<[Workspace, boolean][]>([]);\n\n // Effects\n useEffect(() => void (async () => {\n const deps: [Workspace, boolean][] = [];\n\n for await (const dep of wks.dependencies()) {\n deps.push([dep, dev]);\n }\n\n for await (const dep of wks.devDependencies()) {\n deps.push([dep, true]);\n }\n\n setDeps(deps);\n })(), [dev, wks]);\n\n // Render\n return (\n <Text>\n <WorkspaceName {...style(dev)} workspace={wks} />\n <Newline />\n\n { deps.map(([dep, isDev], idx) => (\n <Text key={dep.name}>\n { level }<Text {...style(dev)}>{ idx === deps.length - 1 ? '└' : '├'}─{' '}</Text>\n <WorkspaceTree\n workspace={dep}\n dev={isDev}\n level={<>{ level }<Text {...style(dev)}>{ idx === deps.length - 1 ? ' ' : '│' }{' '}</Text></>}\n />\n </Text>\n )) }\n </Text>\n );\n};\n"]}
@@ -1,151 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.WorkspaceTree = void 0;
7
-
8
- var _jsxRuntime = require("react/jsx-runtime");
9
-
10
- var _jillCommon = require("@jujulego/jill-common");
11
-
12
- var _ink = require("ink");
13
-
14
- var _react = require("react");
15
-
16
- var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
17
- function adopt(value) {
18
- return value instanceof P ? value : new P(function (resolve) {
19
- resolve(value);
20
- });
21
- }
22
-
23
- return new (P || (P = Promise))(function (resolve, reject) {
24
- function fulfilled(value) {
25
- try {
26
- step(generator.next(value));
27
- } catch (e) {
28
- reject(e);
29
- }
30
- }
31
-
32
- function rejected(value) {
33
- try {
34
- step(generator["throw"](value));
35
- } catch (e) {
36
- reject(e);
37
- }
38
- }
39
-
40
- function step(result) {
41
- result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
42
- }
43
-
44
- step((generator = generator.apply(thisArg, _arguments || [])).next());
45
- });
46
- };
47
-
48
- var __asyncValues = void 0 && (void 0).__asyncValues || function (o) {
49
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
50
- var m = o[Symbol.asyncIterator],
51
- i;
52
- return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () {
53
- return this;
54
- }, i);
55
-
56
- function verb(n) {
57
- i[n] = o[n] && function (v) {
58
- return new Promise(function (resolve, reject) {
59
- v = o[n](v), settle(resolve, reject, v.done, v.value);
60
- });
61
- };
62
- }
63
-
64
- function settle(resolve, reject, d, v) {
65
- Promise.resolve(v).then(function (v) {
66
- resolve({
67
- value: v,
68
- done: d
69
- });
70
- }, reject);
71
- }
72
- };
73
-
74
- // Utils
75
- const style = dev => ({
76
- color: dev ? 'blue' : ''
77
- }); // Component
78
-
79
-
80
- const WorkspaceTree = props => {
81
- const {
82
- workspace: wks,
83
- dev = false,
84
- level = ''
85
- } = props; // State
86
-
87
- const [deps, setDeps] = (0, _react.useState)([]); // Effects
88
-
89
- (0, _react.useEffect)(() => void (() => __awaiter(void 0, void 0, void 0, function* () {
90
- var e_1, _a, e_2, _b;
91
-
92
- const deps = [];
93
-
94
- try {
95
- for (var _c = __asyncValues(wks.dependencies()), _d; _d = yield _c.next(), !_d.done;) {
96
- const dep = _d.value;
97
- deps.push([dep, dev]);
98
- }
99
- } catch (e_1_1) {
100
- e_1 = {
101
- error: e_1_1
102
- };
103
- } finally {
104
- try {
105
- if (_d && !_d.done && (_a = _c.return)) yield _a.call(_c);
106
- } finally {
107
- if (e_1) throw e_1.error;
108
- }
109
- }
110
-
111
- try {
112
- for (var _e = __asyncValues(wks.devDependencies()), _f; _f = yield _e.next(), !_f.done;) {
113
- const dep = _f.value;
114
- deps.push([dep, true]);
115
- }
116
- } catch (e_2_1) {
117
- e_2 = {
118
- error: e_2_1
119
- };
120
- } finally {
121
- try {
122
- if (_f && !_f.done && (_b = _e.return)) yield _b.call(_e);
123
- } finally {
124
- if (e_2) throw e_2.error;
125
- }
126
- }
127
-
128
- setDeps(deps);
129
- }))(), [dev, wks]); // Render
130
-
131
- return (0, _jsxRuntime.jsxs)(_ink.Text, {
132
- children: [(0, _jsxRuntime.jsx)(_jillCommon.WorkspaceName, Object.assign({}, style(dev), {
133
- workspace: wks
134
- })), (0, _jsxRuntime.jsx)(_ink.Newline, {}), deps.map(([dep, isDev], idx) => (0, _jsxRuntime.jsxs)(_ink.Text, {
135
- children: [level, (0, _jsxRuntime.jsxs)(_ink.Text, Object.assign({}, style(dev), {
136
- children: [idx === deps.length - 1 ? '└' : '├', "\u2500", ' ']
137
- })), (0, _jsxRuntime.jsx)(WorkspaceTree, {
138
- workspace: dep,
139
- dev: isDev,
140
- level: (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
141
- children: [level, (0, _jsxRuntime.jsxs)(_ink.Text, Object.assign({}, style(dev), {
142
- children: [idx === deps.length - 1 ? ' ' : '│', ' ']
143
- }))]
144
- })
145
- })]
146
- }, dep.name))]
147
- });
148
- };
149
-
150
- exports.WorkspaceTree = WorkspaceTree;
151
- //# sourceMappingURL=WorkspaceTree.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["components/WorkspaceTree.js","components/WorkspaceTree.tsx"],"names":["__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__asyncValues","o","Symbol","asyncIterator","TypeError","m","i","call","__values","iterator","verb","n","v","settle","d","style","dev","color","WorkspaceTree","props","workspace","wks","level","deps","setDeps","e_1","_a","e_2","_b","_c","dependencies","_d","dep","push","e_1_1","error","return","_e","devDependencies","_f","e_2_1","Text","children","WorkspaceName","Object","assign","Newline","map","isDev","idx","length","_Fragment","name"],"mappings":"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","file":"WorkspaceTree.js","sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { WorkspaceName } from '@jujulego/jill-common';\nimport { Newline, Text } from 'ink';\nimport { useEffect, useState } from 'react';\n// Utils\nconst style = (dev) => ({ color: dev ? 'blue' : '' });\n// Component\nexport const WorkspaceTree = (props) => {\n const { workspace: wks, dev = false, level = '' } = props;\n // State\n const [deps, setDeps] = useState([]);\n // Effects\n useEffect(() => void (() => __awaiter(void 0, void 0, void 0, function* () {\n var e_1, _a, e_2, _b;\n const deps = [];\n try {\n for (var _c = __asyncValues(wks.dependencies()), _d; _d = yield _c.next(), !_d.done;) {\n const dep = _d.value;\n deps.push([dep, dev]);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) yield _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n try {\n for (var _e = __asyncValues(wks.devDependencies()), _f; _f = yield _e.next(), !_f.done;) {\n const dep = _f.value;\n deps.push([dep, true]);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) yield _b.call(_e);\n }\n finally { if (e_2) throw e_2.error; }\n }\n setDeps(deps);\n }))(), [dev, wks]);\n // Render\n return (_jsxs(Text, { children: [_jsx(WorkspaceName, Object.assign({}, style(dev), { workspace: wks })), _jsx(Newline, {}), deps.map(([dep, isDev], idx) => (_jsxs(Text, { children: [level, _jsxs(Text, Object.assign({}, style(dev), { children: [idx === deps.length - 1 ? '└' : '├', \"\\u2500\", ' '] })), _jsx(WorkspaceTree, { workspace: dep, dev: isDev, level: _jsxs(_Fragment, { children: [level, _jsxs(Text, Object.assign({}, style(dev), { children: [idx === deps.length - 1 ? ' ' : '│', ' '] }))] }) })] }, dep.name)))] }));\n};","import { WorkspaceName } from '@jujulego/jill-common';\nimport { Workspace } from '@jujulego/jill-core';\nimport { Newline, Text, TextProps } from 'ink';\nimport { FC, ReactElement, useEffect, useState } from 'react';\n\n// Types\nexport interface WorkspaceTreeProps {\n workspace: Workspace;\n dev?: boolean;\n level?: ReactElement;\n}\n\n// Utils\nconst style = (dev: boolean): TextProps => ({ color: dev ? 'blue' : '' });\n\n// Component\nexport const WorkspaceTree: FC<WorkspaceTreeProps> = (props) => {\n const { workspace: wks, dev = false, level = '' } = props;\n\n // State\n const [deps, setDeps] = useState<[Workspace, boolean][]>([]);\n\n // Effects\n useEffect(() => void (async () => {\n const deps: [Workspace, boolean][] = [];\n\n for await (const dep of wks.dependencies()) {\n deps.push([dep, dev]);\n }\n\n for await (const dep of wks.devDependencies()) {\n deps.push([dep, true]);\n }\n\n setDeps(deps);\n })(), [dev, wks]);\n\n // Render\n return (\n <Text>\n <WorkspaceName {...style(dev)} workspace={wks} />\n <Newline />\n\n { deps.map(([dep, isDev], idx) => (\n <Text key={dep.name}>\n { level }<Text {...style(dev)}>{ idx === deps.length - 1 ? '└' : '├'}─{' '}</Text>\n <WorkspaceTree\n workspace={dep}\n dev={isDev}\n level={<>{ level }<Text {...style(dev)}>{ idx === deps.length - 1 ? ' ' : '│' }{' '}</Text></>}\n />\n </Text>\n )) }\n </Text>\n );\n};\n"]}
package/dist/wrapper.d.ts DELETED
@@ -1,6 +0,0 @@
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>;
@@ -1 +0,0 @@
1
- {"version":3,"sources":["wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,YAAY,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAW,gBAAgB,EAAW,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACxG,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,oBAAY,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3G,oBAAY,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,YAAY,CAAC;AAGnH,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAoB3H","file":"wrapper.d.ts","sourcesContent":["import { FC, ReactElement } from 'react';\n\nimport { BuilderWrapper, Command, CommandComponent, useArgs, UseArgsHook } from './application.context';\nimport { CommandUtils } from './command';\n\n// Types\nexport type CommandWrapper<A> = <Args>(utils: CommandUtils<Args>) => CommandUtils<Omit<Args, keyof A> & A>;\nexport type WrapperComponent<A> = <Args>(useArgs: UseArgsHook<A>, Wrapped: CommandComponent<Args>) => ReactElement;\n\n// Wrapper generator\nexport function commandWrapper<A>(name: string, builder: BuilderWrapper<A>, wrapper: WrapperComponent<A>): CommandWrapper<A> {\n return <Args>(utils: CommandUtils<Args>): CommandUtils<Omit<Args, keyof A> & A> => ({\n useArgs: () => useArgs<Args & A>(),\n wrapper: (Component: FC): CommandComponent<Omit<Args, keyof A> & A> => {\n const Wrapped = utils.wrapper(Component);\n\n // Update builder\n const command: Command<Omit<Args, keyof A> & A> = {\n ...Wrapped.command,\n builder: (yargs) => builder(Wrapped.command.builder(yargs))\n };\n\n // Component wrapper\n const Wrapper: FC = () => wrapper(useArgs, Wrapped);\n\n Wrapper.displayName = `${name}(${Wrapped.displayName || Wrapped.name})`;\n\n return Object.assign(Wrapper, { command });\n },\n });\n}\n"]}
package/dist/wrapper.js DELETED
@@ -1,30 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"sources":["wrapper.ts"],"names":["commandWrapper","name","builder","wrapper","utils","useArgs","Component","Wrapped","command","Object","assign","yargs","Wrapper","displayName"],"mappings":";;;;;;;AAEA;;AAOA;AACM,SAAUA,cAAV,CAA4BC,IAA5B,EAA0CC,OAA1C,EAAsEC,OAAtE,EAAkG;AACtG,SAAcC,KAAP,KAA6E;AAClFC,IAAAA,OAAO,EAAE,MAAM,2BADmE;AAElFF,IAAAA,OAAO,EAAGG,SAAD,IAA6D;AACpE,YAAMC,OAAO,GAAGH,KAAK,CAACD,OAAN,CAAcG,SAAd,CAAhB,CADoE,CAGpE;;AACA,YAAME,OAAO,GAAAC,MAAA,CAAAC,MAAA,CAAAD,MAAA,CAAAC,MAAA,CAAA,EAAA,EACRH,OAAO,CAACC,OADA,CAAA,EACO;AAClBN,QAAAA,OAAO,EAAGS,KAAD,IAAWT,OAAO,CAACK,OAAO,CAACC,OAAR,CAAgBN,OAAhB,CAAwBS,KAAxB,CAAD;AADT,OADP,CAAb,CAJoE,CASpE;;AACA,YAAMC,OAAO,GAAO,MAAMT,OAAO,CAACE,oBAAD,EAAUE,OAAV,CAAjC;;AAEAK,MAAAA,OAAO,CAACC,WAAR,GAAsB,GAAGZ,IAAI,IAAIM,OAAO,CAACM,WAAR,IAAuBN,OAAO,CAACN,IAAI,GAApE;AAEA,aAAOQ,MAAM,CAACC,MAAP,CAAcE,OAAd,EAAuB;AAAEJ,QAAAA;AAAF,OAAvB,CAAP;AACD;AAjBiF,GAA7E,CAAP;AAmBD","file":"wrapper.js","sourcesContent":["import { FC, ReactElement } from 'react';\n\nimport { BuilderWrapper, Command, CommandComponent, useArgs, UseArgsHook } from './application.context';\nimport { CommandUtils } from './command';\n\n// Types\nexport type CommandWrapper<A> = <Args>(utils: CommandUtils<Args>) => CommandUtils<Omit<Args, keyof A> & A>;\nexport type WrapperComponent<A> = <Args>(useArgs: UseArgsHook<A>, Wrapped: CommandComponent<Args>) => ReactElement;\n\n// Wrapper generator\nexport function commandWrapper<A>(name: string, builder: BuilderWrapper<A>, wrapper: WrapperComponent<A>): CommandWrapper<A> {\n return <Args>(utils: CommandUtils<Args>): CommandUtils<Omit<Args, keyof A> & A> => ({\n useArgs: () => useArgs<Args & A>(),\n wrapper: (Component: FC): CommandComponent<Omit<Args, keyof A> & A> => {\n const Wrapped = utils.wrapper(Component);\n\n // Update builder\n const command: Command<Omit<Args, keyof A> & A> = {\n ...Wrapped.command,\n builder: (yargs) => builder(Wrapped.command.builder(yargs))\n };\n\n // Component wrapper\n const Wrapper: FC = () => wrapper(useArgs, Wrapped);\n\n Wrapper.displayName = `${name}(${Wrapped.displayName || Wrapped.name})`;\n\n return Object.assign(Wrapper, { command });\n },\n });\n}\n"]}
@@ -1,7 +0,0 @@
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
- }>;
@@ -1 +0,0 @@
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"]}
@@ -1,105 +0,0 @@
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
@@ -1 +0,0 @@
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"]}
@@ -1,5 +0,0 @@
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
- }>;
@@ -1 +0,0 @@
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"]}
@@ -1,108 +0,0 @@
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