@kadi.build/deploy-ability 0.0.1

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 (198) hide show
  1. package/README.md +523 -0
  2. package/dist/constants.d.ts +82 -0
  3. package/dist/constants.d.ts.map +1 -0
  4. package/dist/constants.js +82 -0
  5. package/dist/constants.js.map +1 -0
  6. package/dist/errors/certificate-error.d.ts +95 -0
  7. package/dist/errors/certificate-error.d.ts.map +1 -0
  8. package/dist/errors/certificate-error.js +111 -0
  9. package/dist/errors/certificate-error.js.map +1 -0
  10. package/dist/errors/deployment-error.d.ts +122 -0
  11. package/dist/errors/deployment-error.d.ts.map +1 -0
  12. package/dist/errors/deployment-error.js +185 -0
  13. package/dist/errors/deployment-error.js.map +1 -0
  14. package/dist/errors/index.d.ts +13 -0
  15. package/dist/errors/index.d.ts.map +1 -0
  16. package/dist/errors/index.js +18 -0
  17. package/dist/errors/index.js.map +1 -0
  18. package/dist/errors/profile-error.d.ts +106 -0
  19. package/dist/errors/profile-error.d.ts.map +1 -0
  20. package/dist/errors/profile-error.js +127 -0
  21. package/dist/errors/profile-error.js.map +1 -0
  22. package/dist/errors/provider-error.d.ts +104 -0
  23. package/dist/errors/provider-error.d.ts.map +1 -0
  24. package/dist/errors/provider-error.js +120 -0
  25. package/dist/errors/provider-error.js.map +1 -0
  26. package/dist/errors/wallet-error.d.ts +131 -0
  27. package/dist/errors/wallet-error.d.ts.map +1 -0
  28. package/dist/errors/wallet-error.js +154 -0
  29. package/dist/errors/wallet-error.js.map +1 -0
  30. package/dist/index.d.ts +49 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +53 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/targets/akash/bid-selectors.d.ts +251 -0
  35. package/dist/targets/akash/bid-selectors.d.ts.map +1 -0
  36. package/dist/targets/akash/bid-selectors.js +322 -0
  37. package/dist/targets/akash/bid-selectors.js.map +1 -0
  38. package/dist/targets/akash/bid-types.d.ts +297 -0
  39. package/dist/targets/akash/bid-types.d.ts.map +1 -0
  40. package/dist/targets/akash/bid-types.js +89 -0
  41. package/dist/targets/akash/bid-types.js.map +1 -0
  42. package/dist/targets/akash/blockchain-client.d.ts +577 -0
  43. package/dist/targets/akash/blockchain-client.d.ts.map +1 -0
  44. package/dist/targets/akash/blockchain-client.js +803 -0
  45. package/dist/targets/akash/blockchain-client.js.map +1 -0
  46. package/dist/targets/akash/certificate-manager.d.ts +228 -0
  47. package/dist/targets/akash/certificate-manager.d.ts.map +1 -0
  48. package/dist/targets/akash/certificate-manager.js +395 -0
  49. package/dist/targets/akash/certificate-manager.js.map +1 -0
  50. package/dist/targets/akash/constants.d.ts +231 -0
  51. package/dist/targets/akash/constants.d.ts.map +1 -0
  52. package/dist/targets/akash/constants.js +225 -0
  53. package/dist/targets/akash/constants.js.map +1 -0
  54. package/dist/targets/akash/deployer.d.ts +136 -0
  55. package/dist/targets/akash/deployer.d.ts.map +1 -0
  56. package/dist/targets/akash/deployer.js +599 -0
  57. package/dist/targets/akash/deployer.js.map +1 -0
  58. package/dist/targets/akash/environment.d.ts +241 -0
  59. package/dist/targets/akash/environment.d.ts.map +1 -0
  60. package/dist/targets/akash/environment.js +245 -0
  61. package/dist/targets/akash/environment.js.map +1 -0
  62. package/dist/targets/akash/index.d.ts +1113 -0
  63. package/dist/targets/akash/index.d.ts.map +1 -0
  64. package/dist/targets/akash/index.js +909 -0
  65. package/dist/targets/akash/index.js.map +1 -0
  66. package/dist/targets/akash/lease-monitor.d.ts +51 -0
  67. package/dist/targets/akash/lease-monitor.d.ts.map +1 -0
  68. package/dist/targets/akash/lease-monitor.js +110 -0
  69. package/dist/targets/akash/lease-monitor.js.map +1 -0
  70. package/dist/targets/akash/logs.d.ts +71 -0
  71. package/dist/targets/akash/logs.d.ts.map +1 -0
  72. package/dist/targets/akash/logs.js +311 -0
  73. package/dist/targets/akash/logs.js.map +1 -0
  74. package/dist/targets/akash/logs.types.d.ts +102 -0
  75. package/dist/targets/akash/logs.types.d.ts.map +1 -0
  76. package/dist/targets/akash/logs.types.js +9 -0
  77. package/dist/targets/akash/logs.types.js.map +1 -0
  78. package/dist/targets/akash/pricing.d.ts +247 -0
  79. package/dist/targets/akash/pricing.d.ts.map +1 -0
  80. package/dist/targets/akash/pricing.js +246 -0
  81. package/dist/targets/akash/pricing.js.map +1 -0
  82. package/dist/targets/akash/provider-client.d.ts +114 -0
  83. package/dist/targets/akash/provider-client.d.ts.map +1 -0
  84. package/dist/targets/akash/provider-client.js +318 -0
  85. package/dist/targets/akash/provider-client.js.map +1 -0
  86. package/dist/targets/akash/provider-metadata.d.ts +228 -0
  87. package/dist/targets/akash/provider-metadata.d.ts.map +1 -0
  88. package/dist/targets/akash/provider-metadata.js +14 -0
  89. package/dist/targets/akash/provider-metadata.js.map +1 -0
  90. package/dist/targets/akash/provider-service.d.ts +133 -0
  91. package/dist/targets/akash/provider-service.d.ts.map +1 -0
  92. package/dist/targets/akash/provider-service.js +391 -0
  93. package/dist/targets/akash/provider-service.js.map +1 -0
  94. package/dist/targets/akash/query-client.d.ts +125 -0
  95. package/dist/targets/akash/query-client.d.ts.map +1 -0
  96. package/dist/targets/akash/query-client.js +332 -0
  97. package/dist/targets/akash/query-client.js.map +1 -0
  98. package/dist/targets/akash/sdl-generator.d.ts +31 -0
  99. package/dist/targets/akash/sdl-generator.d.ts.map +1 -0
  100. package/dist/targets/akash/sdl-generator.js +279 -0
  101. package/dist/targets/akash/sdl-generator.js.map +1 -0
  102. package/dist/targets/akash/types.d.ts +285 -0
  103. package/dist/targets/akash/types.d.ts.map +1 -0
  104. package/dist/targets/akash/types.js +54 -0
  105. package/dist/targets/akash/types.js.map +1 -0
  106. package/dist/targets/akash/wallet-manager.d.ts +526 -0
  107. package/dist/targets/akash/wallet-manager.d.ts.map +1 -0
  108. package/dist/targets/akash/wallet-manager.js +953 -0
  109. package/dist/targets/akash/wallet-manager.js.map +1 -0
  110. package/dist/targets/local/compose-generator.d.ts +244 -0
  111. package/dist/targets/local/compose-generator.d.ts.map +1 -0
  112. package/dist/targets/local/compose-generator.js +324 -0
  113. package/dist/targets/local/compose-generator.js.map +1 -0
  114. package/dist/targets/local/deployer.d.ts +82 -0
  115. package/dist/targets/local/deployer.d.ts.map +1 -0
  116. package/dist/targets/local/deployer.js +367 -0
  117. package/dist/targets/local/deployer.js.map +1 -0
  118. package/dist/targets/local/engine-manager.d.ts +155 -0
  119. package/dist/targets/local/engine-manager.d.ts.map +1 -0
  120. package/dist/targets/local/engine-manager.js +250 -0
  121. package/dist/targets/local/engine-manager.js.map +1 -0
  122. package/dist/targets/local/index.d.ts +40 -0
  123. package/dist/targets/local/index.d.ts.map +1 -0
  124. package/dist/targets/local/index.js +43 -0
  125. package/dist/targets/local/index.js.map +1 -0
  126. package/dist/targets/local/network-manager.d.ts +160 -0
  127. package/dist/targets/local/network-manager.d.ts.map +1 -0
  128. package/dist/targets/local/network-manager.js +337 -0
  129. package/dist/targets/local/network-manager.js.map +1 -0
  130. package/dist/targets/local/types.d.ts +327 -0
  131. package/dist/targets/local/types.d.ts.map +1 -0
  132. package/dist/targets/local/types.js +9 -0
  133. package/dist/targets/local/types.js.map +1 -0
  134. package/dist/types/common.d.ts +585 -0
  135. package/dist/types/common.d.ts.map +1 -0
  136. package/dist/types/common.js +13 -0
  137. package/dist/types/common.js.map +1 -0
  138. package/dist/types/index.d.ts +15 -0
  139. package/dist/types/index.d.ts.map +1 -0
  140. package/dist/types/index.js +12 -0
  141. package/dist/types/index.js.map +1 -0
  142. package/dist/types/options.d.ts +329 -0
  143. package/dist/types/options.d.ts.map +1 -0
  144. package/dist/types/options.js +10 -0
  145. package/dist/types/options.js.map +1 -0
  146. package/dist/types/profiles.d.ts +329 -0
  147. package/dist/types/profiles.d.ts.map +1 -0
  148. package/dist/types/profiles.js +27 -0
  149. package/dist/types/profiles.js.map +1 -0
  150. package/dist/types/results.d.ts +443 -0
  151. package/dist/types/results.d.ts.map +1 -0
  152. package/dist/types/results.js +64 -0
  153. package/dist/types/results.js.map +1 -0
  154. package/dist/types/validators.d.ts +118 -0
  155. package/dist/types/validators.d.ts.map +1 -0
  156. package/dist/types/validators.js +198 -0
  157. package/dist/types/validators.js.map +1 -0
  158. package/dist/utils/command-runner.d.ts +128 -0
  159. package/dist/utils/command-runner.d.ts.map +1 -0
  160. package/dist/utils/command-runner.js +210 -0
  161. package/dist/utils/command-runner.js.map +1 -0
  162. package/dist/utils/index.d.ts +10 -0
  163. package/dist/utils/index.d.ts.map +1 -0
  164. package/dist/utils/index.js +10 -0
  165. package/dist/utils/index.js.map +1 -0
  166. package/dist/utils/logger.d.ts +68 -0
  167. package/dist/utils/logger.d.ts.map +1 -0
  168. package/dist/utils/logger.js +93 -0
  169. package/dist/utils/logger.js.map +1 -0
  170. package/dist/utils/profile-loader.d.ts +76 -0
  171. package/dist/utils/profile-loader.d.ts.map +1 -0
  172. package/dist/utils/profile-loader.js +194 -0
  173. package/dist/utils/profile-loader.js.map +1 -0
  174. package/dist/utils/registry/index.d.ts +27 -0
  175. package/dist/utils/registry/index.d.ts.map +1 -0
  176. package/dist/utils/registry/index.js +29 -0
  177. package/dist/utils/registry/index.js.map +1 -0
  178. package/dist/utils/registry/manager.d.ts +319 -0
  179. package/dist/utils/registry/manager.d.ts.map +1 -0
  180. package/dist/utils/registry/manager.js +671 -0
  181. package/dist/utils/registry/manager.js.map +1 -0
  182. package/dist/utils/registry/setup.d.ts +135 -0
  183. package/dist/utils/registry/setup.d.ts.map +1 -0
  184. package/dist/utils/registry/setup.js +207 -0
  185. package/dist/utils/registry/setup.js.map +1 -0
  186. package/dist/utils/registry/transformer.d.ts +92 -0
  187. package/dist/utils/registry/transformer.d.ts.map +1 -0
  188. package/dist/utils/registry/transformer.js +131 -0
  189. package/dist/utils/registry/transformer.js.map +1 -0
  190. package/dist/utils/registry/types.d.ts +241 -0
  191. package/dist/utils/registry/types.d.ts.map +1 -0
  192. package/dist/utils/registry/types.js +10 -0
  193. package/dist/utils/registry/types.js.map +1 -0
  194. package/docs/EXAMPLES.md +293 -0
  195. package/docs/PLACEMENT.md +433 -0
  196. package/docs/STORAGE.md +318 -0
  197. package/docs/building-provider-reliability-tracker.md +2581 -0
  198. package/package.json +109 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-manager.js","sourceRoot":"","sources":["../../../src/targets/akash/wallet-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,244 @@
1
+ /**
2
+ * Docker Compose File Generation Module
3
+ *
4
+ * Generates docker-compose.yml files from KADI deployment profiles.
5
+ * Transforms service configurations into valid Docker Compose v3 format
6
+ * with proper type safety and validation.
7
+ *
8
+ * Key Features:
9
+ * - Type-safe generation with zero `any` types
10
+ * - Multi-service support
11
+ * - Port mapping transformation
12
+ * - Environment variable conversion
13
+ * - Network configuration
14
+ * - Command overrides
15
+ *
16
+ * @module targets/local/compose-generator
17
+ */
18
+ import { type Result } from '../../types/index.js';
19
+ import type { PortExposure } from '../../types/index.js';
20
+ import { DeploymentError } from '../../errors/index.js';
21
+ import type { ComposeFile, PortMapping, RestartPolicy } from './types.js';
22
+ /**
23
+ * Service configuration input (from agent.json profile)
24
+ *
25
+ * This represents the service format in agent.json deploy profiles,
26
+ * which is more flexible and user-friendly than the strict Docker Compose format.
27
+ */
28
+ export interface ServiceInput {
29
+ /**
30
+ * Docker image reference
31
+ */
32
+ readonly image: string;
33
+ /**
34
+ * Environment variables as array of KEY=VALUE strings
35
+ */
36
+ readonly env?: readonly string[];
37
+ /**
38
+ * Port exposure configurations
39
+ */
40
+ readonly expose?: readonly PortExposure[];
41
+ /**
42
+ * Command override
43
+ */
44
+ readonly command?: readonly string[];
45
+ /**
46
+ * Resource limits (informational for local)
47
+ *
48
+ * Note: For local deployments, these are primarily informational.
49
+ * Docker Compose doesn't enforce limits by default unless using deploy.resources.
50
+ * Persistent volumes should be configured using the `volumes` field.
51
+ */
52
+ readonly resources?: {
53
+ readonly cpu?: number;
54
+ readonly memory?: string;
55
+ readonly ephemeralStorage?: string;
56
+ readonly persistentVolumes?: readonly {
57
+ readonly name: string;
58
+ readonly size: string;
59
+ readonly mount: string;
60
+ readonly class?: string;
61
+ }[];
62
+ };
63
+ /**
64
+ * Restart policy
65
+ */
66
+ readonly restart?: RestartPolicy;
67
+ /**
68
+ * Service dependencies
69
+ */
70
+ readonly dependsOn?: readonly string[];
71
+ /**
72
+ * Working directory
73
+ */
74
+ readonly workingDir?: string;
75
+ /**
76
+ * Volumes to mount
77
+ */
78
+ readonly volumes?: readonly string[];
79
+ }
80
+ /**
81
+ * Options for compose generation
82
+ */
83
+ export interface ComposeGenerationOptions {
84
+ /**
85
+ * Docker Compose version to use
86
+ * @default '3.9'
87
+ */
88
+ readonly version?: string;
89
+ /**
90
+ * Network name for inter-service communication
91
+ * @default 'kadi-net'
92
+ */
93
+ readonly networkName?: string;
94
+ /**
95
+ * Container name prefix
96
+ * @default 'kadi'
97
+ */
98
+ readonly containerPrefix?: string;
99
+ /**
100
+ * Whether to enable TTY for all services
101
+ * @default true
102
+ */
103
+ readonly tty?: boolean;
104
+ /**
105
+ * Whether to keep stdin open for all services
106
+ * @default true
107
+ */
108
+ readonly stdinOpen?: boolean;
109
+ /**
110
+ * Default restart policy
111
+ * @default undefined (Docker default: no)
112
+ */
113
+ readonly defaultRestart?: RestartPolicy;
114
+ }
115
+ /**
116
+ * Converts environment variable array to Docker Compose format
117
+ *
118
+ * Transforms array of "KEY=value" strings into an object mapping.
119
+ * Handles values containing '=' characters correctly by only splitting
120
+ * on the first '=' found.
121
+ *
122
+ * @param envArray - Array of environment variables in KEY=VALUE format
123
+ * @returns Environment object for Docker Compose
124
+ *
125
+ * @example
126
+ * ```typescript
127
+ * const result = convertEnvArrayToObject([
128
+ * 'PORT=8080',
129
+ * 'DATABASE_URL=postgres://user:pass@host/db',
130
+ * 'API_KEY=abc=def=ghi'
131
+ * ]);
132
+ *
133
+ * // Returns:
134
+ * // {
135
+ * // PORT: '8080',
136
+ * // DATABASE_URL: 'postgres://user:pass@host/db',
137
+ * // API_KEY: 'abc=def=ghi'
138
+ * // }
139
+ * ```
140
+ */
141
+ export declare function convertEnvArrayToObject(envArray: readonly string[]): Record<string, string>;
142
+ /**
143
+ * Converts port exposure configs to Docker Compose port mapping format
144
+ *
145
+ * Transforms KADI port exposure format into Docker Compose "external:internal"
146
+ * string format. If `as` is not specified, uses the same port number for both.
147
+ *
148
+ * @param expose - Port exposure configurations
149
+ * @returns Array of port mappings in "external:internal" format
150
+ *
151
+ * @example
152
+ * ```typescript
153
+ * const result = convertPortsToComposeFormat([
154
+ * { port: 8080, as: 8080, to: ['local'] },
155
+ * { port: 3000, as: 3001, to: ['local'] },
156
+ * { port: 5432, to: ['local'] } // as defaults to port
157
+ * ]);
158
+ *
159
+ * // Returns: ['8080:8080', '3001:3000', '5432:5432']
160
+ * ```
161
+ */
162
+ export declare function convertPortsToComposeFormat(expose?: readonly PortExposure[]): readonly PortMapping[];
163
+ /**
164
+ * Generates a Docker Compose file from service configurations
165
+ *
166
+ * Takes a map of service configurations and generates a complete,
167
+ * valid Docker Compose file structure with network configuration.
168
+ *
169
+ * This is the main entry point for compose generation. Returns a
170
+ * strongly-typed ComposeFile structure (not YAML yet).
171
+ *
172
+ * @param services - Map of service name to service configuration
173
+ * @param options - Generation options
174
+ * @returns Result with ComposeFile structure or error
175
+ *
176
+ * @example
177
+ * ```typescript
178
+ * const result = await generateComposeFile(
179
+ * {
180
+ * gateway: {
181
+ * image: 'my-gateway:latest',
182
+ * env: ['PORT=8080'],
183
+ * expose: [{ port: 8080, as: 8080, to: ['local'] }]
184
+ * },
185
+ * database: {
186
+ * image: 'postgres:15',
187
+ * env: ['POSTGRES_PASSWORD=secret']
188
+ * }
189
+ * },
190
+ * { networkName: 'kadi-net' }
191
+ * );
192
+ *
193
+ * if (result.success) {
194
+ * console.log('Services:', Object.keys(result.data.services));
195
+ * }
196
+ * ```
197
+ */
198
+ export declare function generateComposeFile(services: Readonly<Record<string, ServiceInput>>, options?: ComposeGenerationOptions): Result<ComposeFile, DeploymentError>;
199
+ /**
200
+ * Converts a ComposeFile to YAML string
201
+ *
202
+ * Serializes a ComposeFile structure to a formatted YAML string
203
+ * suitable for writing to docker-compose.yml.
204
+ *
205
+ * @param composeFile - Compose file structure
206
+ * @returns YAML string
207
+ *
208
+ * @example
209
+ * ```typescript
210
+ * const yamlString = composeFileToYAML(composeFile);
211
+ * await fs.writeFile('docker-compose.yml', yamlString, 'utf8');
212
+ * ```
213
+ */
214
+ export declare function composeFileToYAML(composeFile: ComposeFile): string;
215
+ /**
216
+ * Generates Docker Compose YAML from service configurations
217
+ *
218
+ * Convenience function that combines generation and YAML serialization
219
+ * into a single call. Returns a formatted YAML string ready to write
220
+ * to docker-compose.yml.
221
+ *
222
+ * @param services - Map of service name to service configuration
223
+ * @param options - Generation options
224
+ * @returns Result with YAML string or error
225
+ *
226
+ * @example
227
+ * ```typescript
228
+ * const result = await generateComposeYAML(
229
+ * {
230
+ * app: {
231
+ * image: 'my-app:latest',
232
+ * env: ['NODE_ENV=production'],
233
+ * expose: [{ port: 3000, as: 3000, to: ['local'] }]
234
+ * }
235
+ * }
236
+ * );
237
+ *
238
+ * if (result.success) {
239
+ * await fs.writeFile('docker-compose.yml', result.data, 'utf8');
240
+ * }
241
+ * ```
242
+ */
243
+ export declare function generateComposeYAML(services: Readonly<Record<string, ServiceInput>>, options?: ComposeGenerationOptions): Result<string, DeploymentError>;
244
+ //# sourceMappingURL=compose-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-generator.d.ts","sourceRoot":"","sources":["../../../src/targets/local/compose-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,324 @@
1
+ /**
2
+ * Docker Compose File Generation Module
3
+ *
4
+ * Generates docker-compose.yml files from KADI deployment profiles.
5
+ * Transforms service configurations into valid Docker Compose v3 format
6
+ * with proper type safety and validation.
7
+ *
8
+ * Key Features:
9
+ * - Type-safe generation with zero `any` types
10
+ * - Multi-service support
11
+ * - Port mapping transformation
12
+ * - Environment variable conversion
13
+ * - Network configuration
14
+ * - Command overrides
15
+ *
16
+ * @module targets/local/compose-generator
17
+ */
18
+ import debug from 'debug';
19
+ import yaml from 'js-yaml';
20
+ import { success, failure } from '../../types/index.js';
21
+ import { DeploymentError } from '../../errors/index.js';
22
+ /**
23
+ * Debug logger for compose generation
24
+ */
25
+ const log = debug('deploy-ability:local:compose');
26
+ /**
27
+ * Converts environment variable array to Docker Compose format
28
+ *
29
+ * Transforms array of "KEY=value" strings into an object mapping.
30
+ * Handles values containing '=' characters correctly by only splitting
31
+ * on the first '=' found.
32
+ *
33
+ * @param envArray - Array of environment variables in KEY=VALUE format
34
+ * @returns Environment object for Docker Compose
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * const result = convertEnvArrayToObject([
39
+ * 'PORT=8080',
40
+ * 'DATABASE_URL=postgres://user:pass@host/db',
41
+ * 'API_KEY=abc=def=ghi'
42
+ * ]);
43
+ *
44
+ * // Returns:
45
+ * // {
46
+ * // PORT: '8080',
47
+ * // DATABASE_URL: 'postgres://user:pass@host/db',
48
+ * // API_KEY: 'abc=def=ghi'
49
+ * // }
50
+ * ```
51
+ */
52
+ export function convertEnvArrayToObject(envArray) {
53
+ log('Converting %d environment variables', envArray.length);
54
+ const envObject = {};
55
+ for (const envVar of envArray) {
56
+ // Split only on first '=' to handle values with '=' in them
57
+ const firstEqualIndex = envVar.indexOf('=');
58
+ if (firstEqualIndex === -1) {
59
+ log('Skipping invalid env var (no =): %s', envVar);
60
+ continue;
61
+ }
62
+ const key = envVar.substring(0, firstEqualIndex);
63
+ const value = envVar.substring(firstEqualIndex + 1);
64
+ if (!key) {
65
+ log('Skipping invalid env var (empty key): %s', envVar);
66
+ continue;
67
+ }
68
+ log('Added env var: %s', key);
69
+ envObject[key] = value;
70
+ }
71
+ return envObject;
72
+ }
73
+ /**
74
+ * Converts port exposure configs to Docker Compose port mapping format
75
+ *
76
+ * Transforms KADI port exposure format into Docker Compose "external:internal"
77
+ * string format. If `as` is not specified, uses the same port number for both.
78
+ *
79
+ * @param expose - Port exposure configurations
80
+ * @returns Array of port mappings in "external:internal" format
81
+ *
82
+ * @example
83
+ * ```typescript
84
+ * const result = convertPortsToComposeFormat([
85
+ * { port: 8080, as: 8080, to: ['local'] },
86
+ * { port: 3000, as: 3001, to: ['local'] },
87
+ * { port: 5432, to: ['local'] } // as defaults to port
88
+ * ]);
89
+ *
90
+ * // Returns: ['8080:8080', '3001:3000', '5432:5432']
91
+ * ```
92
+ */
93
+ export function convertPortsToComposeFormat(expose) {
94
+ if (!expose || expose.length === 0) {
95
+ log('No ports to convert');
96
+ return [];
97
+ }
98
+ log('Converting %d port mappings', expose.length);
99
+ const ports = [];
100
+ for (const portConfig of expose) {
101
+ const external = portConfig.as ?? portConfig.port;
102
+ const internal = portConfig.port;
103
+ const mapping = `${external}:${internal}`;
104
+ log('Port mapping: %s', mapping);
105
+ ports.push(mapping);
106
+ }
107
+ return ports;
108
+ }
109
+ /**
110
+ * Validates a service configuration
111
+ *
112
+ * Checks that the service has all required fields and valid values.
113
+ *
114
+ * @param serviceName - Name of the service
115
+ * @param service - Service configuration
116
+ * @returns Result indicating validity or error
117
+ *
118
+ * @internal
119
+ */
120
+ function validateService(serviceName, service) {
121
+ log('Validating service: %s', serviceName);
122
+ // Check required fields
123
+ if (!service.image) {
124
+ return failure(new DeploymentError(`Service "${serviceName}" is missing required "image" field`, 'SERVICE_INVALID', { serviceName, field: 'image' }, true, 'Add an "image" field to the service configuration', 'error'));
125
+ }
126
+ // Validate image format (basic check)
127
+ if (typeof service.image !== 'string' || service.image.trim().length === 0) {
128
+ return failure(new DeploymentError(`Service "${serviceName}" has invalid image reference`, 'SERVICE_INVALID', { serviceName, field: 'image', value: service.image }, true, 'Provide a valid Docker image reference (e.g., "nginx:latest")', 'error'));
129
+ }
130
+ // Validate environment variables format
131
+ if (service.env) {
132
+ for (const envVar of service.env) {
133
+ if (!envVar.includes('=')) {
134
+ return failure(new DeploymentError(`Service "${serviceName}" has invalid environment variable format: ${envVar}`, 'SERVICE_INVALID', { serviceName, field: 'env', value: envVar }, true, 'Environment variables must be in KEY=VALUE format', 'error'));
135
+ }
136
+ }
137
+ }
138
+ // Validate port numbers
139
+ if (service.expose) {
140
+ for (const portConfig of service.expose) {
141
+ if (portConfig.port < 1 || portConfig.port > 65535) {
142
+ return failure(new DeploymentError(`Service "${serviceName}" has invalid port number: ${portConfig.port}`, 'SERVICE_INVALID', { serviceName, field: 'expose.port', value: portConfig.port }, true, 'Port numbers must be between 1 and 65535', 'error'));
143
+ }
144
+ // Validate external port (as) if specified
145
+ // Use explicit undefined check to catch port 0
146
+ if (portConfig.as !== undefined && (portConfig.as < 1 || portConfig.as > 65535)) {
147
+ return failure(new DeploymentError(`Service "${serviceName}" has invalid external port number: ${portConfig.as}`, 'SERVICE_INVALID', { serviceName, field: 'expose.as', value: portConfig.as }, true, 'Port numbers must be between 1 and 65535', 'error'));
148
+ }
149
+ }
150
+ }
151
+ log('Service %s validated successfully', serviceName);
152
+ return success(undefined);
153
+ }
154
+ /**
155
+ * Converts a service input to Docker Compose service format
156
+ *
157
+ * Transforms KADI service configuration into a proper ComposeService
158
+ * with all necessary fields and proper formatting.
159
+ *
160
+ * @param serviceName - Name of the service
161
+ * @param service - Service input configuration
162
+ * @param options - Generation options
163
+ * @returns Compose service definition
164
+ *
165
+ * @internal
166
+ */
167
+ function convertServiceToComposeFormat(serviceName, service, options) {
168
+ const { networkName = 'kadi-net', containerPrefix = 'kadi', tty = true, stdinOpen = true, defaultRestart, } = options;
169
+ log('Converting service %s to compose format', serviceName);
170
+ // Prepare optional fields with proper typing
171
+ const envObject = service.env && service.env.length > 0
172
+ ? convertEnvArrayToObject(service.env)
173
+ : undefined;
174
+ const ports = convertPortsToComposeFormat(service.expose);
175
+ const restart = service.restart ?? defaultRestart;
176
+ // Build service object with conditional spreads - no any casts needed
177
+ const composeService = {
178
+ image: service.image,
179
+ container_name: `${containerPrefix}-${serviceName}`,
180
+ networks: [networkName],
181
+ tty,
182
+ stdin_open: stdinOpen,
183
+ // Conditionally include optional fields only if they have values
184
+ ...(envObject && Object.keys(envObject).length > 0 && { environment: envObject }),
185
+ ...(ports.length > 0 && { ports }),
186
+ ...(service.command && service.command.length > 0 && { command: service.command }),
187
+ ...(service.volumes && service.volumes.length > 0 && { volumes: service.volumes }),
188
+ ...(service.workingDir && { working_dir: service.workingDir }),
189
+ ...(restart && { restart }),
190
+ ...(service.dependsOn && service.dependsOn.length > 0 && { depends_on: service.dependsOn }),
191
+ };
192
+ log('Service %s converted successfully', serviceName);
193
+ return composeService;
194
+ }
195
+ /**
196
+ * Generates a Docker Compose file from service configurations
197
+ *
198
+ * Takes a map of service configurations and generates a complete,
199
+ * valid Docker Compose file structure with network configuration.
200
+ *
201
+ * This is the main entry point for compose generation. Returns a
202
+ * strongly-typed ComposeFile structure (not YAML yet).
203
+ *
204
+ * @param services - Map of service name to service configuration
205
+ * @param options - Generation options
206
+ * @returns Result with ComposeFile structure or error
207
+ *
208
+ * @example
209
+ * ```typescript
210
+ * const result = await generateComposeFile(
211
+ * {
212
+ * gateway: {
213
+ * image: 'my-gateway:latest',
214
+ * env: ['PORT=8080'],
215
+ * expose: [{ port: 8080, as: 8080, to: ['local'] }]
216
+ * },
217
+ * database: {
218
+ * image: 'postgres:15',
219
+ * env: ['POSTGRES_PASSWORD=secret']
220
+ * }
221
+ * },
222
+ * { networkName: 'kadi-net' }
223
+ * );
224
+ *
225
+ * if (result.success) {
226
+ * console.log('Services:', Object.keys(result.data.services));
227
+ * }
228
+ * ```
229
+ */
230
+ export function generateComposeFile(services, options = {}) {
231
+ const { version = '3.9', networkName = 'kadi-net' } = options;
232
+ log('Generating compose file with %d services', Object.keys(services).length);
233
+ // Validate all services first
234
+ for (const [serviceName, service] of Object.entries(services)) {
235
+ const validationResult = validateService(serviceName, service);
236
+ if (!validationResult.success) {
237
+ log('Service validation failed: %s', serviceName);
238
+ return failure(validationResult.error);
239
+ }
240
+ }
241
+ // Convert all services
242
+ const composeServices = {};
243
+ for (const [serviceName, service] of Object.entries(services)) {
244
+ composeServices[serviceName] = convertServiceToComposeFormat(serviceName, service, options);
245
+ }
246
+ // Create network configuration
247
+ const networks = {
248
+ [networkName]: {
249
+ driver: 'bridge',
250
+ },
251
+ };
252
+ // Build compose file
253
+ const composeFile = {
254
+ version,
255
+ services: composeServices,
256
+ networks,
257
+ };
258
+ log('Compose file generated successfully');
259
+ return success(composeFile);
260
+ }
261
+ /**
262
+ * Converts a ComposeFile to YAML string
263
+ *
264
+ * Serializes a ComposeFile structure to a formatted YAML string
265
+ * suitable for writing to docker-compose.yml.
266
+ *
267
+ * @param composeFile - Compose file structure
268
+ * @returns YAML string
269
+ *
270
+ * @example
271
+ * ```typescript
272
+ * const yamlString = composeFileToYAML(composeFile);
273
+ * await fs.writeFile('docker-compose.yml', yamlString, 'utf8');
274
+ * ```
275
+ */
276
+ export function composeFileToYAML(composeFile) {
277
+ log('Converting compose file to YAML');
278
+ return yaml.dump(composeFile, {
279
+ noRefs: true,
280
+ lineWidth: 120,
281
+ quotingType: '"',
282
+ forceQuotes: false,
283
+ sortKeys: false,
284
+ });
285
+ }
286
+ /**
287
+ * Generates Docker Compose YAML from service configurations
288
+ *
289
+ * Convenience function that combines generation and YAML serialization
290
+ * into a single call. Returns a formatted YAML string ready to write
291
+ * to docker-compose.yml.
292
+ *
293
+ * @param services - Map of service name to service configuration
294
+ * @param options - Generation options
295
+ * @returns Result with YAML string or error
296
+ *
297
+ * @example
298
+ * ```typescript
299
+ * const result = await generateComposeYAML(
300
+ * {
301
+ * app: {
302
+ * image: 'my-app:latest',
303
+ * env: ['NODE_ENV=production'],
304
+ * expose: [{ port: 3000, as: 3000, to: ['local'] }]
305
+ * }
306
+ * }
307
+ * );
308
+ *
309
+ * if (result.success) {
310
+ * await fs.writeFile('docker-compose.yml', result.data, 'utf8');
311
+ * }
312
+ * ```
313
+ */
314
+ export function generateComposeYAML(services, options = {}) {
315
+ log('Generating compose YAML');
316
+ const composeResult = generateComposeFile(services, options);
317
+ if (!composeResult.success) {
318
+ return failure(composeResult.error);
319
+ }
320
+ const yaml = composeFileToYAML(composeResult.data);
321
+ log('Compose YAML generated: %d bytes', yaml.length);
322
+ return success(yaml);
323
+ }
324
+ //# sourceMappingURL=compose-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-generator.js","sourceRoot":"","sources":["../../../src/targets/local/compose-generator.ts"],"names":[],"mappings":"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"}