@tdk-landscape/tdk-cli-core 1.3.14

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 (212) hide show
  1. package/README.md +293 -0
  2. package/bin/tdk.js +14 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +64 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/completion.d.ts +3 -0
  8. package/dist/commands/completion.d.ts.map +1 -0
  9. package/dist/commands/completion.js +294 -0
  10. package/dist/commands/completion.js.map +1 -0
  11. package/dist/commands/config.d.ts +3 -0
  12. package/dist/commands/config.d.ts.map +1 -0
  13. package/dist/commands/config.js +220 -0
  14. package/dist/commands/config.js.map +1 -0
  15. package/dist/commands/doctor.d.ts +3 -0
  16. package/dist/commands/doctor.d.ts.map +1 -0
  17. package/dist/commands/doctor.js +176 -0
  18. package/dist/commands/doctor.js.map +1 -0
  19. package/dist/commands/down.d.ts +3 -0
  20. package/dist/commands/down.d.ts.map +1 -0
  21. package/dist/commands/down.js +32 -0
  22. package/dist/commands/down.js.map +1 -0
  23. package/dist/commands/help.d.ts +2 -0
  24. package/dist/commands/help.d.ts.map +1 -0
  25. package/dist/commands/help.js +130 -0
  26. package/dist/commands/help.js.map +1 -0
  27. package/dist/commands/networks.d.ts +3 -0
  28. package/dist/commands/networks.d.ts.map +1 -0
  29. package/dist/commands/networks.js +260 -0
  30. package/dist/commands/networks.js.map +1 -0
  31. package/dist/commands/project.d.ts +3 -0
  32. package/dist/commands/project.d.ts.map +1 -0
  33. package/dist/commands/project.js +360 -0
  34. package/dist/commands/project.js.map +1 -0
  35. package/dist/commands/projects.d.ts +3 -0
  36. package/dist/commands/projects.d.ts.map +1 -0
  37. package/dist/commands/projects.js +71 -0
  38. package/dist/commands/projects.js.map +1 -0
  39. package/dist/commands/resource.d.ts +69 -0
  40. package/dist/commands/resource.d.ts.map +1 -0
  41. package/dist/commands/resource.js +572 -0
  42. package/dist/commands/resource.js.map +1 -0
  43. package/dist/commands/resources.d.ts +3 -0
  44. package/dist/commands/resources.d.ts.map +1 -0
  45. package/dist/commands/resources.js +73 -0
  46. package/dist/commands/resources.js.map +1 -0
  47. package/dist/commands/stack.d.ts +3 -0
  48. package/dist/commands/stack.d.ts.map +1 -0
  49. package/dist/commands/stack.js +103 -0
  50. package/dist/commands/stack.js.map +1 -0
  51. package/dist/commands/stacks.d.ts +3 -0
  52. package/dist/commands/stacks.d.ts.map +1 -0
  53. package/dist/commands/stacks.js +43 -0
  54. package/dist/commands/stacks.js.map +1 -0
  55. package/dist/commands/status.d.ts +3 -0
  56. package/dist/commands/status.d.ts.map +1 -0
  57. package/dist/commands/status.js +71 -0
  58. package/dist/commands/status.js.map +1 -0
  59. package/dist/commands/ui.d.ts +3 -0
  60. package/dist/commands/ui.d.ts.map +1 -0
  61. package/dist/commands/ui.js +446 -0
  62. package/dist/commands/ui.js.map +1 -0
  63. package/dist/commands/up.d.ts +3 -0
  64. package/dist/commands/up.d.ts.map +1 -0
  65. package/dist/commands/up.js +149 -0
  66. package/dist/commands/up.js.map +1 -0
  67. package/dist/commands/upgrade.d.ts +3 -0
  68. package/dist/commands/upgrade.d.ts.map +1 -0
  69. package/dist/commands/upgrade.js +454 -0
  70. package/dist/commands/upgrade.js.map +1 -0
  71. package/dist/commands/version.d.ts +3 -0
  72. package/dist/commands/version.d.ts.map +1 -0
  73. package/dist/commands/version.js +9 -0
  74. package/dist/commands/version.js.map +1 -0
  75. package/dist/components/Accessible.d.ts +8 -0
  76. package/dist/components/Accessible.d.ts.map +1 -0
  77. package/dist/components/Accessible.js +10 -0
  78. package/dist/components/Accessible.js.map +1 -0
  79. package/dist/components/BaseTooltip.d.ts +4 -0
  80. package/dist/components/BaseTooltip.d.ts.map +1 -0
  81. package/dist/components/BaseTooltip.js +28 -0
  82. package/dist/components/BaseTooltip.js.map +1 -0
  83. package/dist/components/DetailPanel.d.ts +4 -0
  84. package/dist/components/DetailPanel.d.ts.map +1 -0
  85. package/dist/components/DetailPanel.js +18 -0
  86. package/dist/components/DetailPanel.js.map +1 -0
  87. package/dist/components/FileTree.d.ts +4 -0
  88. package/dist/components/FileTree.d.ts.map +1 -0
  89. package/dist/components/FileTree.js +47 -0
  90. package/dist/components/FileTree.js.map +1 -0
  91. package/dist/components/ResourceSelectInput.d.ts +4 -0
  92. package/dist/components/ResourceSelectInput.d.ts.map +1 -0
  93. package/dist/components/ResourceSelectInput.js +7 -0
  94. package/dist/components/ResourceSelectInput.js.map +1 -0
  95. package/dist/components/ResourceTable.d.ts +4 -0
  96. package/dist/components/ResourceTable.d.ts.map +1 -0
  97. package/dist/components/ResourceTable.js +18 -0
  98. package/dist/components/ResourceTable.js.map +1 -0
  99. package/dist/components/TabBar.d.ts +4 -0
  100. package/dist/components/TabBar.d.ts.map +1 -0
  101. package/dist/components/TabBar.js +17 -0
  102. package/dist/components/TabBar.js.map +1 -0
  103. package/dist/components/Tooltip.d.ts +12 -0
  104. package/dist/components/Tooltip.d.ts.map +1 -0
  105. package/dist/components/Tooltip.js +12 -0
  106. package/dist/components/Tooltip.js.map +1 -0
  107. package/dist/components/index.d.ts +8 -0
  108. package/dist/components/index.d.ts.map +1 -0
  109. package/dist/components/index.js +8 -0
  110. package/dist/components/index.js.map +1 -0
  111. package/dist/config/platform-standards.d.ts +159 -0
  112. package/dist/config/platform-standards.d.ts.map +1 -0
  113. package/dist/config/platform-standards.js +181 -0
  114. package/dist/config/platform-standards.js.map +1 -0
  115. package/dist/generator/extension-fetch.d.ts +9 -0
  116. package/dist/generator/extension-fetch.d.ts.map +1 -0
  117. package/dist/generator/extension-fetch.js +153 -0
  118. package/dist/generator/extension-fetch.js.map +1 -0
  119. package/dist/generator/template-engine.d.ts +60 -0
  120. package/dist/generator/template-engine.d.ts.map +1 -0
  121. package/dist/generator/template-engine.js +416 -0
  122. package/dist/generator/template-engine.js.map +1 -0
  123. package/dist/index.d.ts +11 -0
  124. package/dist/index.d.ts.map +1 -0
  125. package/dist/index.js +11 -0
  126. package/dist/index.js.map +1 -0
  127. package/dist/types/index.d.ts +236 -0
  128. package/dist/types/index.d.ts.map +1 -0
  129. package/dist/types/index.js +17 -0
  130. package/dist/types/index.js.map +1 -0
  131. package/dist/utils/cache.d.ts +19 -0
  132. package/dist/utils/cache.d.ts.map +1 -0
  133. package/dist/utils/cache.js +64 -0
  134. package/dist/utils/cache.js.map +1 -0
  135. package/dist/utils/command-helpers.d.ts +17 -0
  136. package/dist/utils/command-helpers.d.ts.map +1 -0
  137. package/dist/utils/command-helpers.js +48 -0
  138. package/dist/utils/command-helpers.js.map +1 -0
  139. package/dist/utils/constants.d.ts +50 -0
  140. package/dist/utils/constants.d.ts.map +1 -0
  141. package/dist/utils/constants.js +100 -0
  142. package/dist/utils/constants.js.map +1 -0
  143. package/dist/utils/discovery-context.d.ts +4 -0
  144. package/dist/utils/discovery-context.d.ts.map +1 -0
  145. package/dist/utils/discovery-context.js +39 -0
  146. package/dist/utils/discovery-context.js.map +1 -0
  147. package/dist/utils/docker.d.ts +3 -0
  148. package/dist/utils/docker.d.ts.map +1 -0
  149. package/dist/utils/docker.js +13 -0
  150. package/dist/utils/docker.js.map +1 -0
  151. package/dist/utils/env-validator.d.ts +15 -0
  152. package/dist/utils/env-validator.d.ts.map +1 -0
  153. package/dist/utils/env-validator.js +95 -0
  154. package/dist/utils/env-validator.js.map +1 -0
  155. package/dist/utils/errors.d.ts +28 -0
  156. package/dist/utils/errors.d.ts.map +1 -0
  157. package/dist/utils/errors.js +127 -0
  158. package/dist/utils/errors.js.map +1 -0
  159. package/dist/utils/file-helpers.d.ts +14 -0
  160. package/dist/utils/file-helpers.d.ts.map +1 -0
  161. package/dist/utils/file-helpers.js +45 -0
  162. package/dist/utils/file-helpers.js.map +1 -0
  163. package/dist/utils/formatting.d.ts +30 -0
  164. package/dist/utils/formatting.d.ts.map +1 -0
  165. package/dist/utils/formatting.js +164 -0
  166. package/dist/utils/formatting.js.map +1 -0
  167. package/dist/utils/paths.d.ts +3 -0
  168. package/dist/utils/paths.d.ts.map +1 -0
  169. package/dist/utils/paths.js +41 -0
  170. package/dist/utils/paths.js.map +1 -0
  171. package/dist/utils/port-assignment.d.ts +6 -0
  172. package/dist/utils/port-assignment.d.ts.map +1 -0
  173. package/dist/utils/port-assignment.js +75 -0
  174. package/dist/utils/port-assignment.js.map +1 -0
  175. package/dist/utils/project-features.d.ts +23 -0
  176. package/dist/utils/project-features.d.ts.map +1 -0
  177. package/dist/utils/project-features.js +98 -0
  178. package/dist/utils/project-features.js.map +1 -0
  179. package/dist/utils/project-templates.d.ts +7 -0
  180. package/dist/utils/project-templates.d.ts.map +1 -0
  181. package/dist/utils/project-templates.js +24 -0
  182. package/dist/utils/project-templates.js.map +1 -0
  183. package/dist/utils/resource-features.d.ts +28 -0
  184. package/dist/utils/resource-features.d.ts.map +1 -0
  185. package/dist/utils/resource-features.js +148 -0
  186. package/dist/utils/resource-features.js.map +1 -0
  187. package/dist/utils/services.d.ts +18 -0
  188. package/dist/utils/services.d.ts.map +1 -0
  189. package/dist/utils/services.js +291 -0
  190. package/dist/utils/services.js.map +1 -0
  191. package/dist/utils/stack-features.d.ts +22 -0
  192. package/dist/utils/stack-features.d.ts.map +1 -0
  193. package/dist/utils/stack-features.js +13 -0
  194. package/dist/utils/stack-features.js.map +1 -0
  195. package/dist/utils/tar.d.ts +7 -0
  196. package/dist/utils/tar.d.ts.map +1 -0
  197. package/dist/utils/tar.js +21 -0
  198. package/dist/utils/tar.js.map +1 -0
  199. package/dist/utils/tilt.d.ts +18 -0
  200. package/dist/utils/tilt.d.ts.map +1 -0
  201. package/dist/utils/tilt.js +77 -0
  202. package/dist/utils/tilt.js.map +1 -0
  203. package/dist/utils/validation.d.ts +9 -0
  204. package/dist/utils/validation.d.ts.map +1 -0
  205. package/dist/utils/validation.js +49 -0
  206. package/dist/utils/validation.js.map +1 -0
  207. package/package.json +72 -0
  208. package/templates/.tiltignore.hbs +73 -0
  209. package/templates/TILT_RESOURCE_DEFAULTS.star.hbs +221 -0
  210. package/templates/TILT_TECH_STACK.star.hbs +150 -0
  211. package/templates/Tiltfile.hbs +295 -0
  212. package/templates/spec.master.hbs +186 -0
@@ -0,0 +1,291 @@
1
+ import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import { Cache, createCacheValidator } from "./cache.js";
4
+ import { AUTOGENERATED_FILE_PATTERNS, SKIP_DIRECTORIES } from "./constants.js";
5
+ import { formatCount } from "./formatting.js";
6
+ import { findProjectRoot } from "./paths.js";
7
+ import { includes } from "./validation.js";
8
+ const RESOURCE_JSON_FILENAME = "service.json";
9
+ function findServiceJsonFiles(dir, maxDepth = 5, currentDepth = 0) {
10
+ const results = [];
11
+ if (currentDepth > maxDepth) {
12
+ return results;
13
+ }
14
+ const entries = readdirSync(dir, { withFileTypes: true });
15
+ for (const entry of entries) {
16
+ const fullPath = join(dir, entry.name);
17
+ if (entry.isDirectory()) {
18
+ if (shouldSkipDirectory(entry.name))
19
+ continue;
20
+ results.push(...findServiceJsonFiles(fullPath, maxDepth, currentDepth + 1));
21
+ }
22
+ else if (entry.isFile() && entry.name === RESOURCE_JSON_FILENAME) {
23
+ results.push(fullPath);
24
+ }
25
+ }
26
+ return results;
27
+ }
28
+ function shouldSkipDirectory(name) {
29
+ return includes(SKIP_DIRECTORIES, name) || name.startsWith(".");
30
+ }
31
+ function isValidResourceConfig(value) {
32
+ if (!value || typeof value !== "object")
33
+ return false;
34
+ const config = value;
35
+ // Accept runtime, appType, or type (for backward compatibility with existing service.json files)
36
+ const hasRuntimeOrAppType = typeof config.runtime === "string" ||
37
+ typeof config.appType === "string" ||
38
+ typeof config.type === "string";
39
+ return typeof config.appName === "string" && hasRuntimeOrAppType;
40
+ }
41
+ function parseResource(serviceJsonPath) {
42
+ const content = readFileSync(serviceJsonPath, "utf-8");
43
+ const parsed = JSON.parse(content);
44
+ if (!isValidResourceConfig(parsed)) {
45
+ throw new Error(`Invalid service.json at ${serviceJsonPath}: missing required fields (appName, runtime or appType)`);
46
+ }
47
+ const parsedConfig = parsed;
48
+ const config = {
49
+ ...parsedConfig,
50
+ appType: (parsedConfig.appType || parsedConfig.type),
51
+ };
52
+ const resourceDir = dirname(serviceJsonPath);
53
+ return {
54
+ name: config.appName,
55
+ path: resourceDir,
56
+ configPath: serviceJsonPath,
57
+ config,
58
+ stack: config.stack,
59
+ };
60
+ }
61
+ export function discoverResourcesFromRoot(projectRoot) {
62
+ const serviceJsonPaths = findServiceJsonFiles(projectRoot);
63
+ const resources = [];
64
+ for (const path of serviceJsonPaths) {
65
+ resources.push(parseResource(path));
66
+ }
67
+ return resources;
68
+ }
69
+ export function discoverResources() {
70
+ const projectRoot = findProjectRoot();
71
+ if (!projectRoot) {
72
+ throw new Error("Could not find project root (no Tiltfile found). Make sure you're in a root project.");
73
+ }
74
+ return discoverResourcesFromRoot(projectRoot);
75
+ }
76
+ /**
77
+ * Unique, sorted `stack` values across discovered service.json files under `projectRoot`.
78
+ * Tilt's discovery groups services by this same field (see tdk-cli-extensions
79
+ * discovery_orchestrator.star), so these are the names that must appear in a
80
+ * stack's `services` list in .tdk/project.json for that group to be enabled.
81
+ */
82
+ export function discoverStackNames(projectRoot) {
83
+ const resources = discoverResourcesFromRoot(projectRoot);
84
+ const stacks = new Set();
85
+ for (const resource of resources) {
86
+ if (resource.stack) {
87
+ stacks.add(resource.stack);
88
+ }
89
+ }
90
+ return Array.from(stacks).sort();
91
+ }
92
+ export function getAllStacks(resources) {
93
+ const resourcesToScan = resources || discoverResources();
94
+ const stacks = new Set();
95
+ for (const resource of resourcesToScan) {
96
+ if (resource.stack) {
97
+ stacks.add(resource.stack);
98
+ }
99
+ }
100
+ return Array.from(stacks).sort();
101
+ }
102
+ export function discoverStacks() {
103
+ const resources = discoverResources();
104
+ const stackMap = new Map();
105
+ for (const resource of resources) {
106
+ if (resource.stack) {
107
+ const stackResources = stackMap.get(resource.stack);
108
+ if (stackResources) {
109
+ stackResources.push(resource);
110
+ }
111
+ else {
112
+ stackMap.set(resource.stack, [resource]);
113
+ }
114
+ }
115
+ }
116
+ const stacks = [];
117
+ for (const [name, stackResources] of stackMap) {
118
+ stacks.push({
119
+ name,
120
+ description: formatCount(stackResources.length, "resource"),
121
+ resources: stackResources,
122
+ resourceCount: stackResources.length,
123
+ });
124
+ }
125
+ return stacks.sort((a, b) => a.name.localeCompare(b.name));
126
+ }
127
+ export function getResourcesForStack(stackName) {
128
+ const allResources = discoverResources();
129
+ return allResources.filter((r) => r.stack === stackName);
130
+ }
131
+ export function stackExists(stackName) {
132
+ const resources = getResourcesForStack(stackName);
133
+ return resources.length > 0;
134
+ }
135
+ /**
136
+ * Cache TTL in milliseconds
137
+ */
138
+ const CACHE_TTL_MS = 5000;
139
+ const resourcesCache = new Cache({ ttlMs: CACHE_TTL_MS });
140
+ const stacksCache = new Cache({ ttlMs: CACHE_TTL_MS });
141
+ const cacheValidator = createCacheValidator(CACHE_TTL_MS);
142
+ export function clearMetadataCache() {
143
+ resourcesCache.clear();
144
+ stacksCache.clear();
145
+ cacheValidator.reset();
146
+ }
147
+ function detectFileType(filename, content) {
148
+ if (filename === "Dockerfile" || filename.startsWith("docker-compose")) {
149
+ return "docker";
150
+ }
151
+ if (filename === "Tiltfile" || filename.endsWith(".star")) {
152
+ return "tilt";
153
+ }
154
+ if (filename === "vite.config.ts" ||
155
+ filename === "tsconfig.json" ||
156
+ filename === "package.json") {
157
+ return "config";
158
+ }
159
+ if (filename === "schema.prisma" || filename.includes("migration")) {
160
+ return "prisma";
161
+ }
162
+ if (content) {
163
+ const firstLines = content.split("\n").slice(0, 10).join("\n");
164
+ if (firstLines.includes("GENERATED BY TDK") || firstLines.includes("AUTOGENERATED")) {
165
+ return "generated";
166
+ }
167
+ }
168
+ return "unknown";
169
+ }
170
+ export function getResourceMetadata(resource) {
171
+ const cacheKey = resource.configPath;
172
+ if (cacheValidator.isValid()) {
173
+ const cached = resourcesCache.get(cacheKey);
174
+ if (cached) {
175
+ return cached;
176
+ }
177
+ }
178
+ const resourceDir = resource.path;
179
+ const stats = statSync(resource.configPath);
180
+ const createdAt = stats.mtime.toISOString();
181
+ const lastModified = stats.mtime.toISOString();
182
+ const autogeneratedFiles = discoverAutogeneratedFiles(resourceDir);
183
+ const hasDockerfile = existsSync(join(resourceDir, "Dockerfile"));
184
+ const hasTiltfile = existsSync(join(resourceDir, "Tiltfile"));
185
+ const hasDockerCompose = existsSync(join(resourceDir, "docker-compose.yml")) ||
186
+ existsSync(join(resourceDir, "docker-compose.yaml"));
187
+ const configType = resource.config?.appType;
188
+ let type = configType || "backend";
189
+ if (!configType) {
190
+ if (resource.name.includes("frontend")) {
191
+ type = "frontend";
192
+ }
193
+ else if (resource.name.includes("sdk") ||
194
+ resource.name.includes("lib") ||
195
+ resource.name.includes("infra")) {
196
+ type = "library";
197
+ }
198
+ }
199
+ const metadata = {
200
+ name: resource.name,
201
+ stack: resource.stack,
202
+ type,
203
+ port: resource.config?.port,
204
+ createdAt,
205
+ lastModified,
206
+ dependencies: resource.config?.dependsOn ?? [],
207
+ hasDockerfile,
208
+ hasTiltfile,
209
+ hasDockerCompose,
210
+ autogeneratedFiles,
211
+ status: "unknown",
212
+ };
213
+ resourcesCache.set(cacheKey, metadata);
214
+ cacheValidator.markUpdated();
215
+ return metadata;
216
+ }
217
+ function discoverAutogeneratedFiles(resourceDir) {
218
+ const files = [];
219
+ for (const pattern of AUTOGENERATED_FILE_PATTERNS) {
220
+ const filePath = join(resourceDir, pattern);
221
+ if (existsSync(filePath)) {
222
+ const stats = statSync(filePath);
223
+ const content = readFileSync(filePath, "utf-8");
224
+ files.push({
225
+ name: pattern,
226
+ path: filePath,
227
+ type: detectFileType(pattern, content),
228
+ size: stats.size,
229
+ lastModified: stats.mtime.toISOString(),
230
+ });
231
+ }
232
+ }
233
+ const prismaDir = join(resourceDir, "prisma");
234
+ if (existsSync(prismaDir)) {
235
+ const entries = readdirSync(prismaDir);
236
+ for (const entry of entries) {
237
+ if (entry === "schema.prisma" || entry.includes("migration")) {
238
+ const filePath = join(prismaDir, entry);
239
+ const stats = statSync(filePath);
240
+ files.push({
241
+ name: `prisma/${entry}`,
242
+ path: filePath,
243
+ type: "prisma",
244
+ size: stats.size,
245
+ lastModified: stats.mtime.toISOString(),
246
+ });
247
+ }
248
+ }
249
+ }
250
+ return files.sort((a, b) => a.name.localeCompare(b.name));
251
+ }
252
+ export function getStackMetadata(stack) {
253
+ const cacheKey = stack.name;
254
+ if (cacheValidator.isValid()) {
255
+ const cached = stacksCache.get(cacheKey);
256
+ if (cached) {
257
+ return cached;
258
+ }
259
+ }
260
+ const resourcesMetadata = stack.resources.map((r) => getResourceMetadata(r));
261
+ const timestamps = resourcesMetadata.map((r) => new Date(r.createdAt).getTime());
262
+ const earliestTimestamp = Math.min(...timestamps);
263
+ const latestTimestamp = Math.max(...timestamps);
264
+ const totalResources = resourcesMetadata.length;
265
+ let overallStatus = "unknown";
266
+ if (totalResources > 0) {
267
+ const readyCount = resourcesMetadata.filter((r) => r.status === "ready").length;
268
+ const ratio = readyCount / totalResources;
269
+ if (ratio > 0.9) {
270
+ overallStatus = "healthy";
271
+ }
272
+ else if (ratio > 0.5) {
273
+ overallStatus = "degraded";
274
+ }
275
+ else {
276
+ overallStatus = "error";
277
+ }
278
+ }
279
+ const metadata = {
280
+ name: stack.name,
281
+ resourceCount: resourcesMetadata.length,
282
+ createdAt: new Date(earliestTimestamp).toISOString(),
283
+ lastModified: new Date(latestTimestamp).toISOString(),
284
+ resources: resourcesMetadata,
285
+ overallStatus,
286
+ };
287
+ stacksCache.set(cacheKey, metadata);
288
+ cacheValidator.markUpdated();
289
+ return metadata;
290
+ }
291
+ //# sourceMappingURL=services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../../src/utils/services.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAW1C,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,MAAM,sBAAsB,GAAG,cAAc,CAAC;AAE9C,SAAS,oBAAoB,CAC3B,GAAW,EACX,QAAQ,GAAW,CAAC,EACpB,YAAY,GAAW,CAAC;IAExB,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,YAAY,GAAG,QAAQ,EAAE,CAAC;QAC5B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEvC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC9C,OAAO,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9E,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACvC,OAAO,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,iGAAiG;IACjG,MAAM,mBAAmB,GACvB,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;QAClC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;QAClC,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC;IAClC,OAAO,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,mBAAmB,CAAC;AACnE,CAAC;AAED,SAAS,aAAa,CAAC,eAAuB;IAC5C,MAAM,OAAO,GAAG,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE5C,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,2BAA2B,eAAe,yDAAyD,CACpG,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,MAAmC,CAAC;IACzD,MAAM,MAAM,GAAmB;QAC7B,GAAG,YAAY;QACf,OAAO,EAAE,CAAC,YAAY,CAAC,OAAO,IAAK,YAAoB,CAAC,IAAI,CAA8B;KAC3F,CAAC;IACF,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAE7C,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,OAAO;QACpB,IAAI,EAAE,WAAW;QACjB,UAAU,EAAE,eAAe;QAC3B,MAAM;QACN,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,WAAmB;IAC3D,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAyB,EAAE,CAAC;IAE3C,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;QACpC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,MAAM,WAAW,GAAG,eAAe,EAAE,CAAC;IAEtC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAC;IACJ,CAAC;IAED,OAAO,yBAAyB,CAAC,WAAW,CAAC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAmB;IACpD,MAAM,SAAS,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,SAAgC;IAC3D,MAAM,eAAe,GAAG,SAAS,IAAI,iBAAiB,EAAE,CAAC;IACzD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjC,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;QACvC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAgC,CAAC;IAEzD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACpD,IAAI,cAAc,EAAE,CAAC;gBACnB,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC;YACV,IAAI;YACJ,WAAW,EAAE,WAAW,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC;YAC3D,SAAS,EAAE,cAAc;YACzB,aAAa,EAAE,cAAc,CAAC,MAAM;SACrC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,MAAM,YAAY,GAAG,iBAAiB,EAAE,CAAC;IACzC,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,MAAM,SAAS,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAClD,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B,MAAM,cAAc,GAAG,IAAI,KAAK,CAAmB,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;AAC5E,MAAM,WAAW,GAAG,IAAI,KAAK,CAAgB,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;AACtE,MAAM,cAAc,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;AAE1D,MAAM,UAAU,kBAAkB;IAChC,cAAc,CAAC,KAAK,EAAE,CAAC;IACvB,WAAW,CAAC,KAAK,EAAE,CAAC;IACpB,cAAc,CAAC,KAAK,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB,EAAE,OAAgB;IACxD,IAAI,QAAQ,KAAK,YAAY,IAAI,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACvE,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,QAAQ,KAAK,UAAU,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1D,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IACE,QAAQ,KAAK,gBAAgB;QAC7B,QAAQ,KAAK,eAAe;QAC5B,QAAQ,KAAK,cAAc,EAC3B,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,QAAQ,KAAK,eAAe,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACnE,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACpF,OAAO,WAAW,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAA4B;IAC9D,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC;IAErC,IAAI,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;IAElC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAE/C,MAAM,kBAAkB,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAC;IACnE,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IAC9D,MAAM,gBAAgB,GACpB,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;QACnD,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAEvD,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAC5C,IAAI,IAAI,GAAiB,UAAU,IAAI,SAAS,CAAC;IACjD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACvC,IAAI,GAAG,UAAU,CAAC;QACpB,CAAC;aAAM,IACL,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAC/B,CAAC;YACD,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAqB;QACjC,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,IAAI;QACJ,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI;QAC3B,SAAS;QACT,YAAY;QACZ,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE;QAC9C,aAAa;QACb,WAAW;QACX,gBAAgB;QAChB,kBAAkB;QAClB,MAAM,EAAE,SAAS;KAClB,CAAC;IAEF,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACvC,cAAc,CAAC,WAAW,EAAE,CAAC;IAE7B,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,0BAA0B,CAAC,WAAmB;IACrD,MAAM,KAAK,GAAwB,EAAE,CAAC;IAEtC,KAAK,MAAM,OAAO,IAAI,2BAA2B,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACjC,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAEhD,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC;gBACtC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE;aACxC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC9C,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACvC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,KAAK,eAAe,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACjC,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,UAAU,KAAK,EAAE;oBACvB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE;iBACxC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAsB;IACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;IAE5B,IAAI,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED,MAAM,iBAAiB,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACjF,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;IAClD,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC;IAEhD,IAAI,aAAa,GAAmC,SAAS,CAAC;IAC9D,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;QAChF,MAAM,KAAK,GAAG,UAAU,GAAG,cAAc,CAAC;QAC1C,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;YAChB,aAAa,GAAG,SAAS,CAAC;QAC5B,CAAC;aAAM,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;YACvB,aAAa,GAAG,UAAU,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,OAAO,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAkB;QAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,aAAa,EAAE,iBAAiB,CAAC,MAAM;QACvC,SAAS,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,WAAW,EAAE;QACpD,YAAY,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE;QACrD,SAAS,EAAE,iBAAiB;QAC5B,aAAa;KACd,CAAC;IAEF,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpC,cAAc,CAAC,WAAW,EAAE,CAAC;IAE7B,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,22 @@
1
+ export interface StackFeature {
2
+ name: string;
3
+ description: string;
4
+ generatedFiles: string[];
5
+ }
6
+ export declare const STACK_FEATURES: Record<string, StackFeature>;
7
+ export interface StackFeaturePhaseConfig {
8
+ pre_alpha?: {
9
+ services?: string[];
10
+ };
11
+ alpha?: {
12
+ services?: string[];
13
+ };
14
+ beta?: {
15
+ services?: string[];
16
+ };
17
+ out_of_scope?: {
18
+ services?: string[];
19
+ };
20
+ }
21
+ export declare function isStackFeatureEnabledInStacks(stacks: StackFeaturePhaseConfig, featureName: string): boolean;
22
+ //# sourceMappingURL=stack-features.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-features.d.ts","sourceRoot":"","sources":["../../src/utils/stack-features.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAMvD,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACpC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAChC,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC/B,YAAY,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACxC;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,uBAAuB,EAC/B,WAAW,EAAE,MAAM,GAClB,OAAO,CAKT"}
@@ -0,0 +1,13 @@
1
+ export const STACK_FEATURES = {
2
+ "database-management": {
3
+ name: "database-management",
4
+ description: "Generate and load the stack-level PostgreSQL docker-compose file",
5
+ generatedFiles: ["services/platform/database-management/docker-compose.yml"],
6
+ },
7
+ };
8
+ export function isStackFeatureEnabledInStacks(stacks, featureName) {
9
+ if (!STACK_FEATURES[featureName])
10
+ return false;
11
+ return ["pre_alpha", "alpha", "beta"].some((phase) => stacks[phase]?.services?.includes(featureName));
12
+ }
13
+ //# sourceMappingURL=stack-features.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-features.js","sourceRoot":"","sources":["../../src/utils/stack-features.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,cAAc,GAAiC;IAC1D,qBAAqB,EAAE;QACrB,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,kEAAkE;QAC/E,cAAc,EAAE,CAAC,0DAA0D,CAAC;KAC7E;CACF,CAAC;AASF,MAAM,UAAU,6BAA6B,CAC3C,MAA+B,EAC/B,WAAmB;IAEnB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CACnD,MAAM,CAAC,KAAsC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,CAChF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Extracts a gzipped tarball (as an in-memory buffer) into destDir.
3
+ * Shells out to the system `tar` binary rather than pulling in a JS tar
4
+ * implementation - available by default on macOS and Linux.
5
+ */
6
+ export declare function extractTarball(data: Buffer, destDir: string): void;
7
+ //# sourceMappingURL=tar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tar.d.ts","sourceRoot":"","sources":["../../src/utils/tar.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAalE"}
@@ -0,0 +1,21 @@
1
+ import { spawnSync } from "child_process";
2
+ import { mkdtempSync, rmSync, writeFileSync } from "fs";
3
+ import { tmpdir } from "os";
4
+ import { join } from "path";
5
+ /**
6
+ * Extracts a gzipped tarball (as an in-memory buffer) into destDir.
7
+ * Shells out to the system `tar` binary rather than pulling in a JS tar
8
+ * implementation - available by default on macOS and Linux.
9
+ */
10
+ export function extractTarball(data, destDir) {
11
+ const tmpFile = join(mkdtempSync(join(tmpdir(), "tdk-ext-")), "bundle.tar.gz");
12
+ writeFileSync(tmpFile, data);
13
+ const result = spawnSync("tar", ["xzf", tmpFile, "-C", destDir, "--strip-components=1"], {
14
+ stdio: "pipe",
15
+ });
16
+ rmSync(join(tmpFile, ".."), { recursive: true, force: true });
17
+ if (result.status !== 0) {
18
+ throw new Error(`tar extraction failed: ${result.stderr?.toString() || "unknown error"}`);
19
+ }
20
+ }
21
+ //# sourceMappingURL=tar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tar.js","sourceRoot":"","sources":["../../src/utils/tar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,OAAe;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IAC/E,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAE7B,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,sBAAsB,CAAC,EAAE;QACvF,KAAK,EAAE,MAAM;KACd,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,eAAe,EAAE,CAAC,CAAC;IAC5F,CAAC;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { TiltCommandResult } from "../types/index.js";
2
+ export declare function runTilt(command: string, args?: string[], options?: {
3
+ verbose?: boolean;
4
+ quiet?: boolean;
5
+ inheritStdio?: boolean;
6
+ }): Promise<TiltCommandResult>;
7
+ export declare function isTiltAvailable(): Promise<boolean>;
8
+ export declare function getTiltfilePath(): string;
9
+ export declare function buildTiltUpArgs(serviceNames: string[], options?: {
10
+ verbose?: boolean;
11
+ quiet?: boolean;
12
+ force?: boolean;
13
+ watch?: boolean;
14
+ }): string[];
15
+ export declare function buildTiltDownArgs(options?: {
16
+ force?: boolean;
17
+ }): string[];
18
+ //# sourceMappingURL=tilt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tilt.d.ts","sourceRoot":"","sources":["../../src/utils/tilt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,wBAAgB,OAAO,CACrB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;CACnB,GACL,OAAO,CAAC,iBAAiB,CAAC,CAsC5B;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAQxD;AAED,wBAAgB,eAAe,IAAI,MAAM,CAOxC;AAOD,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACZ,GACL,MAAM,EAAE,CAcV;AAED,wBAAgB,iBAAiB,CAAC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,EAAE,CAS7E"}
@@ -0,0 +1,77 @@
1
+ import { spawn } from "node:child_process";
2
+ import { join } from "node:path";
3
+ import { findProjectRoot } from "./paths.js";
4
+ export function runTilt(command, args = [], options = {}) {
5
+ return new Promise((resolve, reject) => {
6
+ const tiltArgs = [command, ...args];
7
+ if (options.verbose) {
8
+ console.log(`Executing: tilt ${tiltArgs.join(" ")}`);
9
+ }
10
+ const child = spawn("tilt", tiltArgs, {
11
+ stdio: options.inheritStdio ? "inherit" : "pipe",
12
+ shell: false,
13
+ });
14
+ let stdout = "";
15
+ let stderr = "";
16
+ if (!options.inheritStdio) {
17
+ child.stdout?.on("data", (data) => {
18
+ stdout += data.toString();
19
+ });
20
+ child.stderr?.on("data", (data) => {
21
+ stderr += data.toString();
22
+ });
23
+ }
24
+ child.on("close", (code) => {
25
+ resolve({
26
+ exitCode: code ?? 1,
27
+ stdout,
28
+ stderr,
29
+ });
30
+ });
31
+ child.on("error", (err) => {
32
+ reject(new Error(`Failed to spawn tilt: ${err.message}`));
33
+ });
34
+ });
35
+ }
36
+ export async function isTiltAvailable() {
37
+ try {
38
+ const result = await runTilt("version", [], { inheritStdio: false });
39
+ return result.exitCode === 0;
40
+ }
41
+ catch {
42
+ // tilt binary not found (or not spawnable) - treat as unavailable
43
+ return false;
44
+ }
45
+ }
46
+ export function getTiltfilePath() {
47
+ const projectRoot = findProjectRoot();
48
+ if (!projectRoot) {
49
+ throw new Error("Not in a TDK project (no .tdk/project.json found)");
50
+ }
51
+ return join(projectRoot, ".tdk", ".tdk-out", "Tiltfile");
52
+ }
53
+ function addTiltfilePath(args) {
54
+ const tiltfilePath = getTiltfilePath();
55
+ args.push("-f", tiltfilePath);
56
+ }
57
+ export function buildTiltUpArgs(serviceNames, options = {}) {
58
+ const args = [];
59
+ addTiltfilePath(args);
60
+ args.push(...serviceNames);
61
+ if (options.verbose && !options.quiet) {
62
+ args.push("--verbose");
63
+ }
64
+ if (options.watch) {
65
+ args.push("--watch");
66
+ }
67
+ return args;
68
+ }
69
+ export function buildTiltDownArgs(options = {}) {
70
+ const args = [];
71
+ addTiltfilePath(args);
72
+ if (options.force) {
73
+ args.push("--force");
74
+ }
75
+ return args;
76
+ }
77
+ //# sourceMappingURL=tilt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tilt.js","sourceRoot":"","sources":["../../src/utils/tilt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ValidationResult } from "../types/index.js";
2
+ export declare const KEBAB_CASE_REGEX: RegExp;
3
+ export declare function validateResourceName(name: string): ValidationResult;
4
+ export declare function createKebabCaseValidator(context: "resource" | "stack"): (input: string) => true | string;
5
+ export declare function validateOptionalInfraService(service: string): ValidationResult;
6
+ export declare function isValidPort(port: number): boolean;
7
+ export declare function sanitizeForShell(value: string, replacement?: string): string;
8
+ export declare function includes<T extends readonly string[]>(array: T, value: string): value is T[number];
9
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG1D,eAAO,MAAM,gBAAgB,QAAiB,CAAC;AAM/C,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAWnE;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,WACrD,MAAM,KAAG,IAAI,GAAG,MAAM,CAWtC;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAQ9E;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,GAAE,MAAY,GAAG,MAAM,CAEjF;AAED,wBAAgB,QAAQ,CAAC,CAAC,SAAS,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,CAEjG"}
@@ -0,0 +1,49 @@
1
+ import { OPTIONAL_INFRA_SERVICES } from "./constants.js";
2
+ export const KEBAB_CASE_REGEX = /^[a-z0-9-]+$/;
3
+ function isKebabCase(value) {
4
+ return KEBAB_CASE_REGEX.test(value);
5
+ }
6
+ export function validateResourceName(name) {
7
+ if (!name.trim()) {
8
+ return { valid: false, error: "Resource name is required" };
9
+ }
10
+ if (!isKebabCase(name)) {
11
+ return {
12
+ valid: false,
13
+ error: "Use lowercase letters, numbers, and hyphens only",
14
+ };
15
+ }
16
+ return { valid: true };
17
+ }
18
+ export function createKebabCaseValidator(context) {
19
+ return (input) => {
20
+ if (!input.trim()) {
21
+ return context === "resource" ? "Resource name is required" : "Stack name is required";
22
+ }
23
+ if (!isKebabCase(input)) {
24
+ return context === "resource"
25
+ ? "Use lowercase letters, numbers, and hyphens only"
26
+ : "Use kebab-case (lowercase, numbers, hyphens only)";
27
+ }
28
+ return true;
29
+ };
30
+ }
31
+ export function validateOptionalInfraService(service) {
32
+ if (includes(OPTIONAL_INFRA_SERVICES, service)) {
33
+ return { valid: true };
34
+ }
35
+ return {
36
+ valid: false,
37
+ error: `Invalid service. Must be one of: ${OPTIONAL_INFRA_SERVICES.join(", ")}`,
38
+ };
39
+ }
40
+ export function isValidPort(port) {
41
+ return Number.isInteger(port) && port > 0 && port <= 65535;
42
+ }
43
+ export function sanitizeForShell(value, replacement = "_") {
44
+ return value.replace(/[^a-zA-Z0-9-]/g, replacement).substring(0, 100);
45
+ }
46
+ export function includes(array, value) {
47
+ return array.includes(value);
48
+ }
49
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAE/C,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACjB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC;IAC9D,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,kDAAkD;SAC1D,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAA6B;IACpE,OAAO,CAAC,KAAa,EAAiB,EAAE;QACtC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,wBAAwB,CAAC;QACzF,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,OAAO,KAAK,UAAU;gBAC3B,CAAC,CAAC,kDAAkD;gBACpD,CAAC,CAAC,mDAAmD,CAAC;QAC1D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,OAAe;IAC1D,IAAI,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC,EAAE,CAAC;QAC/C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IACD,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,oCAAoC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;KAChF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,WAAW,GAAW,GAAG;IACvE,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,QAAQ,CAA8B,KAAQ,EAAE,KAAa;IAC3E,OAAQ,KAA2B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACtD,CAAC"}
package/package.json ADDED
@@ -0,0 +1,72 @@
1
+ {
2
+ "name": "@tdk-landscape/tdk-cli-core",
3
+ "version": "1.3.14",
4
+ "description": "TDK CLI - Tilt Development Kit command line interface",
5
+ "keywords": [
6
+ "tdk",
7
+ "tilt",
8
+ "cli",
9
+ "local-dev",
10
+ "microservices"
11
+ ],
12
+ "homepage": "https://github.com/tdk-landscape/tdk-cli#readme",
13
+ "bugs": {
14
+ "url": "https://github.com/tdk-landscape/tdk-cli/issues"
15
+ },
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/tdk-landscape/tdk-cli.git",
19
+ "directory": "cli"
20
+ },
21
+ "license": "MIT",
22
+ "author": "TDK Team",
23
+ "type": "module",
24
+ "main": "./dist/index.js",
25
+ "types": "./dist/index.d.ts",
26
+ "bin": {
27
+ "tdk": "bin/tdk.js",
28
+ "tdk-cli": "bin/tdk.js"
29
+ },
30
+ "files": [
31
+ "dist",
32
+ "bin",
33
+ "templates",
34
+ "README.md"
35
+ ],
36
+ "scripts": {
37
+ "build": "tsc",
38
+ "build:watch": "tsc --watch",
39
+ "lint": "biome check .",
40
+ "lint:fix": "biome check . --write",
41
+ "typecheck": "tsc --noEmit",
42
+ "clean": "rm -rf dist",
43
+ "dev": "bun run build:watch",
44
+ "test": "vitest run",
45
+ "test:watch": "vitest",
46
+ "prepublishOnly": "npm run build"
47
+ },
48
+ "dependencies": {
49
+ "@types/react": "^19.2.14",
50
+ "chalk": "^5.3.0",
51
+ "commander": "^12.0.0",
52
+ "handlebars": "^4.7.8",
53
+ "ink": "^7.0.1",
54
+ "ink-select-input": "^6.2.0",
55
+ "inquirer": "^9.2.0",
56
+ "ora": "^8.0.0",
57
+ "react": "^19.2.5",
58
+ "react-devtools-core": "^8.0.0"
59
+ },
60
+ "devDependencies": {
61
+ "@biomejs/biome": "^2.5.13",
62
+ "@types/inquirer": "^9.0.0",
63
+ "@types/node": "^20.0.0",
64
+ "knip": "^6.35.1",
65
+ "typescript": "^7.0.2",
66
+ "vite": "^6.0.0",
67
+ "vitest": "^5.0.0"
68
+ },
69
+ "engines": {
70
+ "node": ">=20.0.0"
71
+ }
72
+ }