@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.
- package/README.md +523 -0
- package/dist/constants.d.ts +82 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +82 -0
- package/dist/constants.js.map +1 -0
- package/dist/errors/certificate-error.d.ts +95 -0
- package/dist/errors/certificate-error.d.ts.map +1 -0
- package/dist/errors/certificate-error.js +111 -0
- package/dist/errors/certificate-error.js.map +1 -0
- package/dist/errors/deployment-error.d.ts +122 -0
- package/dist/errors/deployment-error.d.ts.map +1 -0
- package/dist/errors/deployment-error.js +185 -0
- package/dist/errors/deployment-error.js.map +1 -0
- package/dist/errors/index.d.ts +13 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +18 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/profile-error.d.ts +106 -0
- package/dist/errors/profile-error.d.ts.map +1 -0
- package/dist/errors/profile-error.js +127 -0
- package/dist/errors/profile-error.js.map +1 -0
- package/dist/errors/provider-error.d.ts +104 -0
- package/dist/errors/provider-error.d.ts.map +1 -0
- package/dist/errors/provider-error.js +120 -0
- package/dist/errors/provider-error.js.map +1 -0
- package/dist/errors/wallet-error.d.ts +131 -0
- package/dist/errors/wallet-error.d.ts.map +1 -0
- package/dist/errors/wallet-error.js +154 -0
- package/dist/errors/wallet-error.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/targets/akash/bid-selectors.d.ts +251 -0
- package/dist/targets/akash/bid-selectors.d.ts.map +1 -0
- package/dist/targets/akash/bid-selectors.js +322 -0
- package/dist/targets/akash/bid-selectors.js.map +1 -0
- package/dist/targets/akash/bid-types.d.ts +297 -0
- package/dist/targets/akash/bid-types.d.ts.map +1 -0
- package/dist/targets/akash/bid-types.js +89 -0
- package/dist/targets/akash/bid-types.js.map +1 -0
- package/dist/targets/akash/blockchain-client.d.ts +577 -0
- package/dist/targets/akash/blockchain-client.d.ts.map +1 -0
- package/dist/targets/akash/blockchain-client.js +803 -0
- package/dist/targets/akash/blockchain-client.js.map +1 -0
- package/dist/targets/akash/certificate-manager.d.ts +228 -0
- package/dist/targets/akash/certificate-manager.d.ts.map +1 -0
- package/dist/targets/akash/certificate-manager.js +395 -0
- package/dist/targets/akash/certificate-manager.js.map +1 -0
- package/dist/targets/akash/constants.d.ts +231 -0
- package/dist/targets/akash/constants.d.ts.map +1 -0
- package/dist/targets/akash/constants.js +225 -0
- package/dist/targets/akash/constants.js.map +1 -0
- package/dist/targets/akash/deployer.d.ts +136 -0
- package/dist/targets/akash/deployer.d.ts.map +1 -0
- package/dist/targets/akash/deployer.js +599 -0
- package/dist/targets/akash/deployer.js.map +1 -0
- package/dist/targets/akash/environment.d.ts +241 -0
- package/dist/targets/akash/environment.d.ts.map +1 -0
- package/dist/targets/akash/environment.js +245 -0
- package/dist/targets/akash/environment.js.map +1 -0
- package/dist/targets/akash/index.d.ts +1113 -0
- package/dist/targets/akash/index.d.ts.map +1 -0
- package/dist/targets/akash/index.js +909 -0
- package/dist/targets/akash/index.js.map +1 -0
- package/dist/targets/akash/lease-monitor.d.ts +51 -0
- package/dist/targets/akash/lease-monitor.d.ts.map +1 -0
- package/dist/targets/akash/lease-monitor.js +110 -0
- package/dist/targets/akash/lease-monitor.js.map +1 -0
- package/dist/targets/akash/logs.d.ts +71 -0
- package/dist/targets/akash/logs.d.ts.map +1 -0
- package/dist/targets/akash/logs.js +311 -0
- package/dist/targets/akash/logs.js.map +1 -0
- package/dist/targets/akash/logs.types.d.ts +102 -0
- package/dist/targets/akash/logs.types.d.ts.map +1 -0
- package/dist/targets/akash/logs.types.js +9 -0
- package/dist/targets/akash/logs.types.js.map +1 -0
- package/dist/targets/akash/pricing.d.ts +247 -0
- package/dist/targets/akash/pricing.d.ts.map +1 -0
- package/dist/targets/akash/pricing.js +246 -0
- package/dist/targets/akash/pricing.js.map +1 -0
- package/dist/targets/akash/provider-client.d.ts +114 -0
- package/dist/targets/akash/provider-client.d.ts.map +1 -0
- package/dist/targets/akash/provider-client.js +318 -0
- package/dist/targets/akash/provider-client.js.map +1 -0
- package/dist/targets/akash/provider-metadata.d.ts +228 -0
- package/dist/targets/akash/provider-metadata.d.ts.map +1 -0
- package/dist/targets/akash/provider-metadata.js +14 -0
- package/dist/targets/akash/provider-metadata.js.map +1 -0
- package/dist/targets/akash/provider-service.d.ts +133 -0
- package/dist/targets/akash/provider-service.d.ts.map +1 -0
- package/dist/targets/akash/provider-service.js +391 -0
- package/dist/targets/akash/provider-service.js.map +1 -0
- package/dist/targets/akash/query-client.d.ts +125 -0
- package/dist/targets/akash/query-client.d.ts.map +1 -0
- package/dist/targets/akash/query-client.js +332 -0
- package/dist/targets/akash/query-client.js.map +1 -0
- package/dist/targets/akash/sdl-generator.d.ts +31 -0
- package/dist/targets/akash/sdl-generator.d.ts.map +1 -0
- package/dist/targets/akash/sdl-generator.js +279 -0
- package/dist/targets/akash/sdl-generator.js.map +1 -0
- package/dist/targets/akash/types.d.ts +285 -0
- package/dist/targets/akash/types.d.ts.map +1 -0
- package/dist/targets/akash/types.js +54 -0
- package/dist/targets/akash/types.js.map +1 -0
- package/dist/targets/akash/wallet-manager.d.ts +526 -0
- package/dist/targets/akash/wallet-manager.d.ts.map +1 -0
- package/dist/targets/akash/wallet-manager.js +953 -0
- package/dist/targets/akash/wallet-manager.js.map +1 -0
- package/dist/targets/local/compose-generator.d.ts +244 -0
- package/dist/targets/local/compose-generator.d.ts.map +1 -0
- package/dist/targets/local/compose-generator.js +324 -0
- package/dist/targets/local/compose-generator.js.map +1 -0
- package/dist/targets/local/deployer.d.ts +82 -0
- package/dist/targets/local/deployer.d.ts.map +1 -0
- package/dist/targets/local/deployer.js +367 -0
- package/dist/targets/local/deployer.js.map +1 -0
- package/dist/targets/local/engine-manager.d.ts +155 -0
- package/dist/targets/local/engine-manager.d.ts.map +1 -0
- package/dist/targets/local/engine-manager.js +250 -0
- package/dist/targets/local/engine-manager.js.map +1 -0
- package/dist/targets/local/index.d.ts +40 -0
- package/dist/targets/local/index.d.ts.map +1 -0
- package/dist/targets/local/index.js +43 -0
- package/dist/targets/local/index.js.map +1 -0
- package/dist/targets/local/network-manager.d.ts +160 -0
- package/dist/targets/local/network-manager.d.ts.map +1 -0
- package/dist/targets/local/network-manager.js +337 -0
- package/dist/targets/local/network-manager.js.map +1 -0
- package/dist/targets/local/types.d.ts +327 -0
- package/dist/targets/local/types.d.ts.map +1 -0
- package/dist/targets/local/types.js +9 -0
- package/dist/targets/local/types.js.map +1 -0
- package/dist/types/common.d.ts +585 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +13 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +12 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/options.d.ts +329 -0
- package/dist/types/options.d.ts.map +1 -0
- package/dist/types/options.js +10 -0
- package/dist/types/options.js.map +1 -0
- package/dist/types/profiles.d.ts +329 -0
- package/dist/types/profiles.d.ts.map +1 -0
- package/dist/types/profiles.js +27 -0
- package/dist/types/profiles.js.map +1 -0
- package/dist/types/results.d.ts +443 -0
- package/dist/types/results.d.ts.map +1 -0
- package/dist/types/results.js +64 -0
- package/dist/types/results.js.map +1 -0
- package/dist/types/validators.d.ts +118 -0
- package/dist/types/validators.d.ts.map +1 -0
- package/dist/types/validators.js +198 -0
- package/dist/types/validators.js.map +1 -0
- package/dist/utils/command-runner.d.ts +128 -0
- package/dist/utils/command-runner.d.ts.map +1 -0
- package/dist/utils/command-runner.js +210 -0
- package/dist/utils/command-runner.js.map +1 -0
- package/dist/utils/index.d.ts +10 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +10 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +68 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +93 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/profile-loader.d.ts +76 -0
- package/dist/utils/profile-loader.d.ts.map +1 -0
- package/dist/utils/profile-loader.js +194 -0
- package/dist/utils/profile-loader.js.map +1 -0
- package/dist/utils/registry/index.d.ts +27 -0
- package/dist/utils/registry/index.d.ts.map +1 -0
- package/dist/utils/registry/index.js +29 -0
- package/dist/utils/registry/index.js.map +1 -0
- package/dist/utils/registry/manager.d.ts +319 -0
- package/dist/utils/registry/manager.d.ts.map +1 -0
- package/dist/utils/registry/manager.js +671 -0
- package/dist/utils/registry/manager.js.map +1 -0
- package/dist/utils/registry/setup.d.ts +135 -0
- package/dist/utils/registry/setup.d.ts.map +1 -0
- package/dist/utils/registry/setup.js +207 -0
- package/dist/utils/registry/setup.js.map +1 -0
- package/dist/utils/registry/transformer.d.ts +92 -0
- package/dist/utils/registry/transformer.d.ts.map +1 -0
- package/dist/utils/registry/transformer.js +131 -0
- package/dist/utils/registry/transformer.js.map +1 -0
- package/dist/utils/registry/types.d.ts +241 -0
- package/dist/utils/registry/types.d.ts.map +1 -0
- package/dist/utils/registry/types.js +10 -0
- package/dist/utils/registry/types.js.map +1 -0
- package/docs/EXAMPLES.md +293 -0
- package/docs/PLACEMENT.md +433 -0
- package/docs/STORAGE.md +318 -0
- package/docs/building-provider-reliability-tracker.md +2581 -0
- 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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"}
|