cdd-cli 3.1.6 → 3.1.9

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 (96) hide show
  1. package/.eslintrc.json +1 -1
  2. package/.github/workflows/ci.yml +3 -0
  3. package/.github/workflows/docs.yml +8 -1
  4. package/CHANGELOG.md +23 -0
  5. package/CONTRIBUTING.md +28 -15
  6. package/README.md +56 -88
  7. package/babel.config.cjs +18 -1
  8. package/dist/components/ContainerRow.js +5 -78
  9. package/dist/components/LogViewer.js +4 -9
  10. package/dist/helpers/containerOptionsBuilder.js +58 -0
  11. package/dist/hooks/creation/useContainerCreation.js +16 -1
  12. package/dist/hooks/debug/useDebugLogs.js +46 -0
  13. package/dist/hooks/navigation/useContainerSelection.js +36 -0
  14. package/dist/hooks/useContainerCommandRouter.js +151 -0
  15. package/dist/{helpers/actionHelpers.js → hooks/useContainerStats.js} +76 -78
  16. package/dist/hooks/useControls.js +83 -342
  17. package/dist/hooks/useEraseConfirmation.js +47 -0
  18. package/dist/hooks/useExitHandler.js +68 -0
  19. package/jest.config.cjs +1 -1
  20. package/package.json +4 -5
  21. package/src/components/ContainerRow.jsx +3 -38
  22. package/src/components/LogViewer.jsx +4 -10
  23. package/src/helpers/containerOptionsBuilder.js +42 -0
  24. package/src/hooks/creation/useContainerCreation.js +15 -0
  25. package/src/hooks/debug/useDebugLogs.js +29 -0
  26. package/src/hooks/navigation/useContainerSelection.js +25 -0
  27. package/src/hooks/useContainerCommandRouter.js +110 -0
  28. package/src/hooks/useContainerStats.js +44 -0
  29. package/src/hooks/useControls.js +68 -272
  30. package/src/hooks/useEraseConfirmation.js +39 -0
  31. package/src/hooks/useExitHandler.js +66 -0
  32. package/test/useContainerCreation.dom.test.js +3 -0
  33. package/.babelrc +0 -6
  34. package/FIXES_APPLIED.md +0 -419
  35. package/SECURITY.md +0 -5
  36. package/dist/hooks/useLogsStream.js +0 -41
  37. package/docs/_config.yml +0 -13
  38. package/docs/components_ContainerCreationPrompt.jsx.html +0 -114
  39. package/docs/components_ContainerRow.jsx.html +0 -151
  40. package/docs/components_ContainerSection.jsx.html +0 -75
  41. package/docs/components_Footer.jsx.html +0 -66
  42. package/docs/components_Header.jsx.html +0 -84
  43. package/docs/components_LogViewer.jsx.html +0 -91
  44. package/docs/components_MessageFeedback.jsx.html +0 -76
  45. package/docs/components_PromptField.jsx.html +0 -99
  46. package/docs/components_StatsBar.jsx.html +0 -105
  47. package/docs/components_UsageMenu.jsx.html +0 -73
  48. package/docs/fonts/OpenSans-Bold-webfont.eot +0 -0
  49. package/docs/fonts/OpenSans-Bold-webfont.svg +0 -1830
  50. package/docs/fonts/OpenSans-Bold-webfont.woff +0 -0
  51. package/docs/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  52. package/docs/fonts/OpenSans-BoldItalic-webfont.svg +0 -1830
  53. package/docs/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  54. package/docs/fonts/OpenSans-Italic-webfont.eot +0 -0
  55. package/docs/fonts/OpenSans-Italic-webfont.svg +0 -1830
  56. package/docs/fonts/OpenSans-Italic-webfont.woff +0 -0
  57. package/docs/fonts/OpenSans-Light-webfont.eot +0 -0
  58. package/docs/fonts/OpenSans-Light-webfont.svg +0 -1831
  59. package/docs/fonts/OpenSans-Light-webfont.woff +0 -0
  60. package/docs/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  61. package/docs/fonts/OpenSans-LightItalic-webfont.svg +0 -1835
  62. package/docs/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  63. package/docs/fonts/OpenSans-Regular-webfont.eot +0 -0
  64. package/docs/fonts/OpenSans-Regular-webfont.svg +0 -1831
  65. package/docs/fonts/OpenSans-Regular-webfont.woff +0 -0
  66. package/docs/global.html +0 -6145
  67. package/docs/helpers_actionHelpers.js.html +0 -94
  68. package/docs/helpers_constants.js.html +0 -81
  69. package/docs/helpers_dockerService_dockerService.js.html +0 -79
  70. package/docs/helpers_dockerService_serviceComponents_containerActions.js.html +0 -153
  71. package/docs/helpers_dockerService_serviceComponents_containerList.js.html +0 -81
  72. package/docs/helpers_dockerService_serviceComponents_containerLogs.js.html +0 -85
  73. package/docs/helpers_dockerService_serviceComponents_containerStats.js.html +0 -107
  74. package/docs/helpers_dockerService_serviceComponents_imageUtils.js.html +0 -82
  75. package/docs/helpers_exitWithMessage.js.html +0 -77
  76. package/docs/helpers_safeCall.js.html +0 -68
  77. package/docs/helpers_validationHelpers.js.html +0 -96
  78. package/docs/hooks_creation_useContainerActions.js.html +0 -120
  79. package/docs/hooks_creation_useContainerCreation.js.html +0 -152
  80. package/docs/hooks_creation_useLogsViewer.js.html +0 -102
  81. package/docs/hooks_useControls.js.html +0 -298
  82. package/docs/hooks_useLogsStream.js.html +0 -82
  83. package/docs/index.html +0 -65
  84. package/docs/index.js.html +0 -65
  85. package/docs/module-index.html +0 -171
  86. package/docs/scripts/linenumber.js +0 -25
  87. package/docs/scripts/prettify/Apache-License-2.0.txt +0 -202
  88. package/docs/scripts/prettify/lang-css.js +0 -2
  89. package/docs/scripts/prettify/prettify.js +0 -28
  90. package/docs/styles/jsdoc-default.css +0 -358
  91. package/docs/styles/prettify-jsdoc.css +0 -111
  92. package/docs/styles/prettify-tomorrow.css +0 -132
  93. package/esbuild.config.cjs +0 -11
  94. package/src/helpers/actionHelpers.js +0 -52
  95. package/src/hooks/useLogsStream.js +0 -31
  96. package/test/actionHelpers.test.js +0 -106
@@ -1,106 +0,0 @@
1
- import { jest } from '@jest/globals';
2
- import { handleAction } from '../src/helpers/actionHelpers.js';
3
- import { MESSAGE_TIMEOUTS } from '../src/helpers/constants.js';
4
-
5
- describe('handleAction', () => {
6
- beforeEach(() => {
7
- jest.useFakeTimers();
8
- });
9
-
10
- afterEach(() => {
11
- jest.useRealTimers();
12
- jest.clearAllMocks();
13
- });
14
-
15
- test('returns early when no container selected', async () => {
16
- const setMessage = jest.fn();
17
- const setMessageColor = jest.fn();
18
- const actionFn = jest.fn();
19
-
20
- await handleAction({
21
- containers: [],
22
- selected: 0,
23
- actionFn,
24
- actionLabel: 'Start',
25
- setMessage,
26
- setMessageColor,
27
- });
28
-
29
- expect(actionFn).not.toHaveBeenCalled();
30
- expect(setMessage).not.toHaveBeenCalled();
31
- expect(setMessageColor).not.toHaveBeenCalled();
32
- });
33
-
34
- test('uses stateCheck and shows error then clears message after SHORT timeout', async () => {
35
- const setMessage = jest.fn();
36
- const setMessageColor = jest.fn();
37
- const actionFn = jest.fn();
38
-
39
- const containers = [{ id: 'c1', name: 'one' }];
40
-
41
- const stateCheck = (_c) => 'Already running';
42
-
43
- await handleAction({
44
- containers,
45
- selected: 0,
46
- actionFn,
47
- actionLabel: 'Start',
48
- setMessage,
49
- setMessageColor,
50
- stateCheck,
51
- });
52
-
53
- expect(setMessage).toHaveBeenCalledWith('Already running');
54
- expect(setMessageColor).toHaveBeenCalledWith('red');
55
- expect(actionFn).not.toHaveBeenCalled();
56
-
57
- // advance timers to allow message clear
58
- jest.advanceTimersByTime(MESSAGE_TIMEOUTS.SHORT + 10);
59
- expect(setMessage).toHaveBeenCalledWith('');
60
- });
61
-
62
- test('on success sets success message and clears after DEFAULT timeout', async () => {
63
- const setMessage = jest.fn();
64
- const setMessageColor = jest.fn();
65
- const actionFn = jest.fn().mockResolvedValue(undefined);
66
-
67
- const containers = [{ id: 'c1', name: 'one' }];
68
-
69
- await handleAction({
70
- containers,
71
- selected: 0,
72
- actionFn,
73
- actionLabel: 'Start',
74
- setMessage,
75
- setMessageColor,
76
- });
77
-
78
- expect(actionFn).toHaveBeenCalledWith('c1');
79
- expect(setMessage).toHaveBeenCalledWith('Start container completed successfully');
80
- expect(setMessageColor).toHaveBeenCalledWith('green');
81
-
82
- jest.advanceTimersByTime(MESSAGE_TIMEOUTS.DEFAULT + 10);
83
- expect(setMessage).toHaveBeenCalledWith('');
84
- });
85
-
86
- test('on failure sets failed message and color red', async () => {
87
- const setMessage = jest.fn();
88
- const setMessageColor = jest.fn();
89
- const actionFn = jest.fn().mockRejectedValue(new Error('boom'));
90
-
91
- const containers = [{ id: 'c1', name: 'one' }];
92
-
93
- await handleAction({
94
- containers,
95
- selected: 0,
96
- actionFn,
97
- actionLabel: 'Stop',
98
- setMessage,
99
- setMessageColor,
100
- });
101
-
102
- expect(actionFn).toHaveBeenCalledWith('c1');
103
- expect(setMessage).toHaveBeenCalledWith('Failed to stop container.');
104
- expect(setMessageColor).toHaveBeenCalledWith('red');
105
- });
106
- });