cdd-cli 3.1.9 → 3.2.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.
- package/.atl/skill-registry.md +30 -0
- package/.editorconfig +12 -0
- package/.eslintrc.json +1 -1
- package/.prettierignore +4 -0
- package/.prettierrc +8 -0
- package/CHANGELOG.md +46 -0
- package/SECURITY.md +5 -0
- package/__mocks__/ink.cjs +17 -0
- package/coverage/clover.xml +694 -0
- package/coverage/coverage-final.json +21 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/components/ContainerCreationPrompt.jsx.html +376 -0
- package/coverage/lcov-report/components/PromptField.jsx.html +229 -0
- package/coverage/lcov-report/components/SuggestionPanel.jsx.html +244 -0
- package/coverage/lcov-report/components/index.html +146 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/helpers/constants.js.html +298 -0
- package/coverage/lcov-report/helpers/containerOptionsBuilder.js.html +244 -0
- package/coverage/lcov-report/helpers/dockerService/serviceComponents/containerActions.js.html +931 -0
- package/coverage/lcov-report/helpers/dockerService/serviceComponents/containerList.js.html +307 -0
- package/coverage/lcov-report/helpers/dockerService/serviceComponents/index.html +131 -0
- package/coverage/lcov-report/helpers/imageNameUtils.js.html +181 -0
- package/coverage/lcov-report/helpers/index.html +191 -0
- package/coverage/lcov-report/helpers/logger.js.html +424 -0
- package/coverage/lcov-report/helpers/safeCall.js.html +139 -0
- package/coverage/lcov-report/helpers/validationHelpers.js.html +346 -0
- package/coverage/lcov-report/hooks/creation/index.html +146 -0
- package/coverage/lcov-report/hooks/creation/useContainerActions.js.html +313 -0
- package/coverage/lcov-report/hooks/creation/useContainerCreation.js.html +805 -0
- package/coverage/lcov-report/hooks/creation/useLogsViewer.js.html +238 -0
- package/coverage/lcov-report/hooks/debug/index.html +116 -0
- package/coverage/lcov-report/hooks/debug/useDebugLogs.js.html +187 -0
- package/coverage/lcov-report/hooks/index.html +161 -0
- package/coverage/lcov-report/hooks/navigation/index.html +116 -0
- package/coverage/lcov-report/hooks/navigation/useContainerSelection.js.html +169 -0
- package/coverage/lcov-report/hooks/useContainerCommandRouter.js.html +454 -0
- package/coverage/lcov-report/hooks/useControls.js.html +826 -0
- package/coverage/lcov-report/hooks/useEraseConfirmation.js.html +202 -0
- package/coverage/lcov-report/hooks/useExitHandler.js.html +292 -0
- package/coverage/lcov-report/index.html +206 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +210 -0
- package/coverage/lcov.info +1402 -0
- package/dist/App.js +11 -11
- package/dist/components/ContainerCreationPrompt.js +31 -10
- package/dist/components/ContainerList.js +3 -3
- package/dist/components/ContainerRow.js +20 -20
- package/dist/components/ContainerSection.js +3 -3
- package/dist/components/Footer.js +2 -2
- package/dist/components/Header.js +7 -7
- package/dist/components/LogViewer.js +3 -3
- package/dist/components/MessageFeedback.js +2 -2
- package/dist/components/PromptField.js +4 -4
- package/dist/components/StatsBar.js +5 -5
- package/dist/components/SuggestionPanel.js +44 -0
- package/dist/components/UsageMenu.js +3 -3
- package/dist/helpers/appInfo.js +7 -7
- package/dist/helpers/constants.js +114 -0
- package/dist/helpers/containerOptionsBuilder.js +3 -3
- package/dist/helpers/dockerService/dockerService.js +1 -1
- package/dist/helpers/dockerService/serviceComponents/containerActions.js +99 -40
- package/dist/helpers/dockerService/serviceComponents/containerList.js +11 -11
- package/dist/helpers/dockerService/serviceComponents/containerLogs.js +9 -9
- package/dist/helpers/dockerService/serviceComponents/containerStats.js +5 -5
- package/dist/helpers/dockerService/serviceComponents/imageUtils.js +1 -1
- package/dist/helpers/exitWithMessage.js +10 -10
- package/dist/helpers/imageNameUtils.js +32 -0
- package/dist/helpers/logger.js +13 -13
- package/dist/helpers/safeCall.js +2 -2
- package/dist/helpers/validationHelpers.js +76 -21
- package/dist/hooks/creation/useContainerActions.js +9 -9
- package/dist/hooks/creation/useContainerCreation.js +138 -36
- package/dist/hooks/creation/useLogsViewer.js +2 -2
- package/dist/hooks/debug/useDebugLogs.js +4 -4
- package/dist/hooks/useContainerCommandRouter.js +13 -13
- package/dist/hooks/useContainers.js +3 -3
- package/dist/hooks/useControls.js +66 -35
- package/dist/hooks/useEraseConfirmation.js +3 -3
- package/dist/index.js +2 -2
- package/jest.config.cjs +7 -0
- package/package.json +7 -3
- package/src/App.jsx +33 -16
- package/src/components/ContainerCreationPrompt.jsx +43 -9
- package/src/components/ContainerList.jsx +3 -3
- package/src/components/ContainerRow.jsx +19 -16
- package/src/components/ContainerSection.jsx +3 -3
- package/src/components/Footer.jsx +2 -2
- package/src/components/Header.jsx +7 -7
- package/src/components/LogViewer.jsx +5 -3
- package/src/components/MessageFeedback.jsx +2 -2
- package/src/components/PromptField.jsx +4 -4
- package/src/components/StatsBar.jsx +11 -7
- package/src/components/SuggestionPanel.jsx +53 -0
- package/src/components/UsageMenu.jsx +18 -13
- package/src/helpers/appInfo.js +7 -7
- package/src/helpers/constants.js +41 -0
- package/src/helpers/containerOptionsBuilder.js +16 -5
- package/src/helpers/dockerService/dockerService.js +1 -1
- package/src/helpers/dockerService/serviceComponents/containerActions.js +116 -43
- package/src/helpers/dockerService/serviceComponents/containerList.js +31 -25
- package/src/helpers/dockerService/serviceComponents/containerLogs.js +41 -26
- package/src/helpers/dockerService/serviceComponents/containerStats.js +13 -11
- package/src/helpers/dockerService/serviceComponents/imageUtils.js +5 -4
- package/src/helpers/exitWithMessage.js +13 -7
- package/src/helpers/imageNameUtils.js +32 -0
- package/src/helpers/logger.js +15 -15
- package/src/helpers/safeCall.js +2 -2
- package/src/helpers/validationHelpers.js +62 -21
- package/src/hooks/creation/useContainerActions.js +19 -12
- package/src/hooks/creation/useContainerCreation.js +161 -37
- package/src/hooks/creation/useLogsViewer.js +2 -2
- package/src/hooks/debug/useDebugLogs.js +15 -10
- package/src/hooks/navigation/useContainerSelection.js +17 -14
- package/src/hooks/useContainerCommandRouter.js +71 -58
- package/src/hooks/useContainers.js +4 -4
- package/src/hooks/useControls.js +120 -68
- package/src/hooks/useEraseConfirmation.js +3 -3
- package/src/hooks/useExitHandler.js +29 -26
- package/src/index.js +4 -4
- package/test/ContainerCreationPrompt.dom.test.js +68 -0
- package/test/SuggestionPanel.dom.test.js +53 -0
- package/test/constants.test.js +34 -0
- package/test/containerActions.test.js +104 -13
- package/test/containerOptionsBuilder.test.js +36 -0
- package/test/useContainerCreation.dom.test.js +166 -2
- package/test/useControls.dom.test.js +313 -0
- package/test/validationHelpers.test.js +51 -0
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
let validatePorts;
|
|
2
2
|
let validateEnvVars;
|
|
3
|
+
let IMAGE_PROFILES;
|
|
3
4
|
|
|
4
5
|
beforeAll(async () => {
|
|
5
6
|
const mod = await import('../src/helpers/validationHelpers.js');
|
|
6
7
|
validatePorts = mod.validatePorts;
|
|
7
8
|
validateEnvVars = mod.validateEnvVars;
|
|
9
|
+
const constants = await import('../src/helpers/constants.js');
|
|
10
|
+
IMAGE_PROFILES = constants.IMAGE_PROFILES;
|
|
8
11
|
});
|
|
9
12
|
|
|
10
13
|
describe('validatePorts', () => {
|
|
@@ -58,3 +61,51 @@ describe('validateEnvVars', () => {
|
|
|
58
61
|
expect(validateEnvVars('MY-VAR=value')).toBe(false);
|
|
59
62
|
});
|
|
60
63
|
});
|
|
64
|
+
|
|
65
|
+
describe('validateEnvVars — contextual validation with IMAGE_PROFILES', () => {
|
|
66
|
+
test('mysql:8 — missing MYSQL_ROOT_PASSWORD is invalid', () => {
|
|
67
|
+
const result = validateEnvVars('FOO=bar', 'mysql:8', IMAGE_PROFILES);
|
|
68
|
+
expect(result.valid).toBe(false);
|
|
69
|
+
expect(result.errors.some(e => e.includes('MYSQL_ROOT_PASSWORD'))).toBe(true);
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
test('mysql:8 — with MYSQL_ROOT_PASSWORD is valid', () => {
|
|
73
|
+
const result = validateEnvVars('MYSQL_ROOT_PASSWORD=secret', 'mysql:8', IMAGE_PROFILES);
|
|
74
|
+
expect(result.valid).toBe(true);
|
|
75
|
+
expect(result.errors).toHaveLength(0);
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
test('docker.io/library/postgres:16 — missing POSTGRES_PASSWORD is invalid', () => {
|
|
79
|
+
const result = validateEnvVars('', 'docker.io/library/postgres:16', IMAGE_PROFILES);
|
|
80
|
+
expect(result.valid).toBe(false);
|
|
81
|
+
expect(result.errors.some(e => e.includes('POSTGRES_PASSWORD'))).toBe(true);
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
test('docker.io/library/postgres:16 — with POSTGRES_PASSWORD is valid', () => {
|
|
85
|
+
const result = validateEnvVars('POSTGRES_PASSWORD=pass', 'docker.io/library/postgres:16', IMAGE_PROFILES);
|
|
86
|
+
expect(result.valid).toBe(true);
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
test('TOKEN=a=b is preserved (split on first = only)', () => {
|
|
90
|
+
const result = validateEnvVars('TOKEN=a=b', 'nginx', IMAGE_PROFILES);
|
|
91
|
+
expect(result.valid).toBe(true);
|
|
92
|
+
expect(result.parsedEnv['TOKEN']).toBe('a=b');
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
test('image not in profiles — only syntactic validation applies', () => {
|
|
96
|
+
const result = validateEnvVars('FOO=bar', 'nginx', IMAGE_PROFILES);
|
|
97
|
+
expect(result.valid).toBe(true);
|
|
98
|
+
expect(result.parsedEnv['FOO']).toBe('bar');
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
test('empty input for image not in profiles — valid', () => {
|
|
102
|
+
const result = validateEnvVars('', 'nginx', IMAGE_PROFILES);
|
|
103
|
+
expect(result.valid).toBe(true);
|
|
104
|
+
expect(result.parsedEnv).toEqual({});
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
test('syntactically invalid var is still rejected', () => {
|
|
108
|
+
const result = validateEnvVars('INVALID-VAR=x', 'nginx', IMAGE_PROFILES);
|
|
109
|
+
expect(result.valid).toBe(false);
|
|
110
|
+
});
|
|
111
|
+
});
|