@geekmidas/cli 1.2.2 → 1.3.0

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 (90) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/{CachedStateProvider-DVyKfaMm.mjs → CachedStateProvider-BDq5WqSy.mjs} +1 -1
  3. package/dist/{CachedStateProvider-DVyKfaMm.mjs.map → CachedStateProvider-BDq5WqSy.mjs.map} +1 -1
  4. package/dist/CachedStateProvider-CI61keQ1.mjs +3 -0
  5. package/dist/{HostingerProvider-DqUq6e9i.mjs → HostingerProvider-B9N-TKbp.mjs} +2 -2
  6. package/dist/{HostingerProvider-DqUq6e9i.mjs.map → HostingerProvider-B9N-TKbp.mjs.map} +1 -1
  7. package/dist/{LocalStateProvider-DxoSaWUV.mjs → LocalStateProvider-BDm7ZqJo.mjs} +1 -1
  8. package/dist/{LocalStateProvider-DxoSaWUV.mjs.map → LocalStateProvider-BDm7ZqJo.mjs.map} +1 -1
  9. package/dist/{Route53Provider-KUAX3vz9.mjs → Route53Provider-DOWmFnwN.mjs} +2 -2
  10. package/dist/{Route53Provider-KUAX3vz9.mjs.map → Route53Provider-DOWmFnwN.mjs.map} +1 -1
  11. package/dist/{Route53Provider-CpRIqu69.cjs → Route53Provider-xrWuBXih.cjs} +2 -2
  12. package/dist/{Route53Provider-CpRIqu69.cjs.map → Route53Provider-xrWuBXih.cjs.map} +1 -1
  13. package/dist/{SSMStateProvider-D79o_JjM.cjs → SSMStateProvider-DGrqYll0.cjs} +8 -4
  14. package/dist/SSMStateProvider-DGrqYll0.cjs.map +1 -0
  15. package/dist/{SSMStateProvider-BjCi_58g.mjs → SSMStateProvider-DT0WV-E_.mjs} +9 -4
  16. package/dist/SSMStateProvider-DT0WV-E_.mjs.map +1 -0
  17. package/dist/{bundler-BqTN5Dj5.mjs → bundler-DgXsOSxc.mjs} +3 -3
  18. package/dist/{bundler-BqTN5Dj5.mjs.map → bundler-DgXsOSxc.mjs.map} +1 -1
  19. package/dist/chunk-Duj1WY3L.mjs +7 -0
  20. package/dist/{config-BQ4a36Rq.mjs → config-C1bidhvG.mjs} +2 -2
  21. package/dist/{config-BQ4a36Rq.mjs.map → config-C1bidhvG.mjs.map} +1 -1
  22. package/dist/{config-Bayob8pB.cjs → config-C1dM7aZb.cjs} +2 -2
  23. package/dist/{config-Bayob8pB.cjs.map → config-C1dM7aZb.cjs.map} +1 -1
  24. package/dist/config.cjs +2 -2
  25. package/dist/config.d.cts +1 -1
  26. package/dist/config.d.mts +2 -2
  27. package/dist/config.mjs +2 -2
  28. package/dist/{credentials-DT1dSxIx.mjs → credentials-s1kLcIzK.mjs} +1 -1
  29. package/dist/{credentials-DT1dSxIx.mjs.map → credentials-s1kLcIzK.mjs.map} +1 -1
  30. package/dist/deploy/sniffer-routes-worker.cjs +65 -0
  31. package/dist/deploy/sniffer-routes-worker.cjs.map +1 -0
  32. package/dist/deploy/sniffer-routes-worker.d.cts +1 -0
  33. package/dist/deploy/sniffer-routes-worker.d.mts +1 -0
  34. package/dist/deploy/sniffer-routes-worker.mjs +64 -0
  35. package/dist/deploy/sniffer-routes-worker.mjs.map +1 -0
  36. package/dist/dokploy-api-DSJYNx88.mjs +3 -0
  37. package/dist/{dokploy-api-7k3t7_zd.mjs → dokploy-api-z0833e7r.mjs} +1 -1
  38. package/dist/{dokploy-api-7k3t7_zd.mjs.map → dokploy-api-z0833e7r.mjs.map} +1 -1
  39. package/dist/{encryption-JtMsiGNp.mjs → encryption-BOH5M-f-.mjs} +1 -1
  40. package/dist/{encryption-JtMsiGNp.mjs.map → encryption-BOH5M-f-.mjs.map} +1 -1
  41. package/dist/encryption-a9TNMWav.mjs +3 -0
  42. package/dist/{index-Bi9vGQJy.d.mts → index-DvpWzLD7.d.mts} +5 -2
  43. package/dist/index-DvpWzLD7.d.mts.map +1 -0
  44. package/dist/{index-CufAAnge.d.cts → index-DzmZ6SUW.d.cts} +4 -1
  45. package/dist/index-DzmZ6SUW.d.cts.map +1 -0
  46. package/dist/index.cjs +100 -170
  47. package/dist/index.cjs.map +1 -1
  48. package/dist/index.mjs +116 -185
  49. package/dist/index.mjs.map +1 -1
  50. package/dist/{openapi-BZ4Qik9w.mjs → openapi-9k6a6VA4.mjs} +3 -3
  51. package/dist/{openapi-BZ4Qik9w.mjs.map → openapi-9k6a6VA4.mjs.map} +1 -1
  52. package/dist/{openapi-CzfnHlhG.cjs → openapi-Dcja4e1C.cjs} +2 -8
  53. package/dist/{openapi-CzfnHlhG.cjs.map → openapi-Dcja4e1C.cjs.map} +1 -1
  54. package/dist/{openapi-react-query-DGEkD39r.mjs → openapi-react-query-DaTMSPD5.mjs} +1 -1
  55. package/dist/{openapi-react-query-DGEkD39r.mjs.map → openapi-react-query-DaTMSPD5.mjs.map} +1 -1
  56. package/dist/openapi-react-query.mjs +1 -1
  57. package/dist/openapi.cjs +3 -3
  58. package/dist/openapi.d.mts +1 -1
  59. package/dist/openapi.mjs +3 -3
  60. package/dist/{storage-BMW6yLu3.mjs → storage-DmCbr6DI.mjs} +1 -1
  61. package/dist/{storage-BMW6yLu3.mjs.map → storage-DmCbr6DI.mjs.map} +1 -1
  62. package/dist/{storage-D8XzjVaO.mjs → storage-Dx_jZbq6.mjs} +1 -1
  63. package/dist/{types-BldpmqQX.d.mts → types-B9UZ7fOG.d.mts} +1 -1
  64. package/dist/{types-BldpmqQX.d.mts.map → types-B9UZ7fOG.d.mts.map} +1 -1
  65. package/dist/workspace/index.cjs +1 -1
  66. package/dist/workspace/index.d.cts +1 -1
  67. package/dist/workspace/index.d.mts +2 -2
  68. package/dist/workspace/index.mjs +1 -1
  69. package/dist/{workspace-CASoZOjs.mjs → workspace-Cb_I7oCJ.mjs} +5 -8
  70. package/dist/{workspace-CASoZOjs.mjs.map → workspace-Cb_I7oCJ.mjs.map} +1 -1
  71. package/dist/{workspace-BMJE18LV.cjs → workspace-CeFgIDC-.cjs} +3 -2
  72. package/dist/{workspace-BMJE18LV.cjs.map → workspace-CeFgIDC-.cjs.map} +1 -1
  73. package/package.json +2 -2
  74. package/src/deploy/SSMStateProvider.ts +14 -3
  75. package/src/deploy/StateProvider.ts +5 -1
  76. package/src/deploy/__tests__/SSMStateProvider.spec.ts +12 -0
  77. package/src/deploy/__tests__/createStateProvider.spec.ts +10 -0
  78. package/src/dev/index.ts +69 -106
  79. package/src/init/generators/web.ts +6 -2
  80. package/src/workspace/__tests__/client-generator.spec.ts +330 -301
  81. package/src/workspace/client-generator.ts +139 -199
  82. package/src/workspace/schema.ts +2 -0
  83. package/tsdown.config.ts +1 -0
  84. package/dist/CachedStateProvider-OiFUGr7p.mjs +0 -3
  85. package/dist/SSMStateProvider-BjCi_58g.mjs.map +0 -1
  86. package/dist/SSMStateProvider-D79o_JjM.cjs.map +0 -1
  87. package/dist/dokploy-api-CHa8G51l.mjs +0 -3
  88. package/dist/encryption-UUmaWAmz.mjs +0 -3
  89. package/dist/index-Bi9vGQJy.d.mts.map +0 -1
  90. package/dist/index-CufAAnge.d.cts.map +0 -1
@@ -1,34 +1,20 @@
1
- import { createHash } from 'node:crypto';
2
- import { mkdir, writeFile } from 'node:fs/promises';
1
+ import { existsSync } from 'node:fs';
2
+ import { mkdir, readFile, writeFile } from 'node:fs/promises';
3
3
  import { dirname, join, relative } from 'node:path';
4
- import { EndpointGenerator } from '../generators/EndpointGenerator.js';
5
- import { OpenApiTsGenerator } from '../generators/OpenApiTsGenerator.js';
6
4
  import type { NormalizedWorkspace } from './types.js';
7
5
 
8
6
  const logger = console;
9
7
 
10
8
  /**
11
- * Result of generating a client for a frontend app.
9
+ * Result of copying a client to a frontend app.
12
10
  */
13
- export interface ClientGenerationResult {
11
+ export interface ClientCopyResult {
14
12
  frontendApp: string;
15
13
  backendApp: string;
16
14
  outputPath: string;
17
15
  endpointCount: number;
18
- generated: boolean;
19
- reason?: string;
20
- }
21
-
22
- /**
23
- * Cache of OpenAPI spec hashes to detect changes.
24
- */
25
- const specHashCache = new Map<string, string>();
26
-
27
- /**
28
- * Calculate hash of content for change detection.
29
- */
30
- function hashContent(content: string): string {
31
- return createHash('sha256').update(content).digest('hex').slice(0, 16);
16
+ success: boolean;
17
+ error?: string;
32
18
  }
33
19
 
34
20
  /**
@@ -54,128 +40,162 @@ export function getFirstRoute(
54
40
  }
55
41
 
56
42
  /**
57
- * Generate OpenAPI spec for a backend app.
58
- * Returns the spec content and endpoint count.
43
+ * Check if a file path matches endpoint patterns that could affect OpenAPI schema.
44
+ * Returns true for changes that should trigger client regeneration.
59
45
  */
60
- export async function generateBackendOpenApi(
61
- workspace: NormalizedWorkspace,
62
- appName: string,
63
- ): Promise<{ content: string; endpointCount: number } | null> {
64
- const app = workspace.apps[appName];
65
- if (!app || app.type !== 'backend' || !app.routes) {
66
- return null;
46
+ export function shouldRegenerateClient(
47
+ filePath: string,
48
+ routesPattern: string,
49
+ ): boolean {
50
+ // Normalize path separators
51
+ const normalizedPath = filePath.replace(/\\/g, '/');
52
+ const normalizedPattern = routesPattern.replace(/\\/g, '/');
53
+
54
+ // Check if the file matches the routes pattern
55
+ // This is a simple check - the file should be within the routes directory
56
+ const patternDir = normalizedPattern.split('*')[0] || '';
57
+
58
+ if (!normalizedPath.includes(patternDir.replace('./', ''))) {
59
+ return false;
67
60
  }
68
61
 
69
- const appPath = join(workspace.root, app.path);
70
- const routesPatterns = normalizeRoutes(app.routes);
62
+ // Check file extension - only TypeScript endpoint files
63
+ if (!normalizedPath.endsWith('.ts') && !normalizedPath.endsWith('.tsx')) {
64
+ return false;
65
+ }
71
66
 
72
- if (routesPatterns.length === 0) {
73
- return null;
67
+ return true;
68
+ }
69
+
70
+ /**
71
+ * Get backend apps that a frontend depends on.
72
+ */
73
+ export function getBackendDependencies(
74
+ workspace: NormalizedWorkspace,
75
+ frontendAppName: string,
76
+ ): string[] {
77
+ const frontendApp = workspace.apps[frontendAppName];
78
+ if (!frontendApp || frontendApp.type !== 'frontend') {
79
+ return [];
74
80
  }
75
81
 
76
- // Load endpoints from all routes patterns
77
- const endpointGenerator = new EndpointGenerator();
78
- const allLoadedEndpoints = [];
82
+ return frontendApp.dependencies.filter((dep) => {
83
+ const depApp = workspace.apps[dep];
84
+ return depApp?.type === 'backend' && depApp.routes;
85
+ });
86
+ }
79
87
 
80
- for (const pattern of routesPatterns) {
81
- const fullPattern = join(appPath, pattern);
82
- const loaded = await endpointGenerator.load(fullPattern);
83
- allLoadedEndpoints.push(...loaded);
88
+ /**
89
+ * Get frontend apps that depend on a backend app.
90
+ */
91
+ export function getDependentFrontends(
92
+ workspace: NormalizedWorkspace,
93
+ backendAppName: string,
94
+ ): string[] {
95
+ const dependentApps: string[] = [];
96
+
97
+ for (const [appName, app] of Object.entries(workspace.apps)) {
98
+ if (app.type === 'frontend' && app.dependencies.includes(backendAppName)) {
99
+ dependentApps.push(appName);
100
+ }
84
101
  }
85
102
 
86
- const loadedEndpoints = allLoadedEndpoints;
103
+ return dependentApps;
104
+ }
87
105
 
88
- if (loadedEndpoints.length === 0) {
106
+ /**
107
+ * Get the path to a backend's OpenAPI spec file.
108
+ */
109
+ export function getBackendOpenApiPath(
110
+ workspace: NormalizedWorkspace,
111
+ backendAppName: string,
112
+ ): string | null {
113
+ const app = workspace.apps[backendAppName];
114
+ if (!app || app.type !== 'backend') {
89
115
  return null;
90
116
  }
91
117
 
92
- const endpoints = loadedEndpoints.map(({ construct }) => construct);
93
-
94
- const tsGenerator = new OpenApiTsGenerator();
95
- const content = await tsGenerator.generate(endpoints, {
96
- title: `${appName} API`,
97
- version: '1.0.0',
98
- description: `Auto-generated API client for ${appName}`,
99
- });
118
+ return join(workspace.root, app.path, '.gkm', 'openapi.ts');
119
+ }
100
120
 
101
- return { content, endpointCount: loadedEndpoints.length };
121
+ /**
122
+ * Count endpoints in an OpenAPI spec content.
123
+ */
124
+ function countEndpoints(content: string): number {
125
+ const endpointMatches = content.match(
126
+ /'(GET|POST|PUT|PATCH|DELETE)\s+\/[^']+'/g,
127
+ );
128
+ return endpointMatches?.length ?? 0;
102
129
  }
103
130
 
104
131
  /**
105
- * Generate client for a frontend app from its backend dependencies.
106
- * Only regenerates if the OpenAPI spec has changed.
132
+ * Copy the OpenAPI client from a backend to all dependent frontend apps.
133
+ * Called when the backend's .gkm/openapi.ts file changes.
107
134
  */
108
- export async function generateClientForFrontend(
135
+ export async function copyClientToFrontends(
109
136
  workspace: NormalizedWorkspace,
110
- frontendAppName: string,
111
- options: { force?: boolean } = {},
112
- ): Promise<ClientGenerationResult[]> {
113
- const results: ClientGenerationResult[] = [];
114
- const frontendApp = workspace.apps[frontendAppName];
137
+ backendAppName: string,
138
+ options: { silent?: boolean } = {},
139
+ ): Promise<ClientCopyResult[]> {
140
+ const log = options.silent ? () => {} : logger.log.bind(logger);
141
+ const results: ClientCopyResult[] = [];
115
142
 
116
- if (!frontendApp || frontendApp.type !== 'frontend') {
143
+ const backendApp = workspace.apps[backendAppName];
144
+ if (!backendApp || backendApp.type !== 'backend') {
117
145
  return results;
118
146
  }
119
147
 
120
- const dependencies = frontendApp.dependencies || [];
121
- const backendDeps = dependencies.filter((dep) => {
122
- const depApp = workspace.apps[dep];
123
- return depApp?.type === 'backend' && depApp.routes;
124
- });
148
+ // Get the backend's OpenAPI spec
149
+ const openApiPath = join(
150
+ workspace.root,
151
+ backendApp.path,
152
+ '.gkm',
153
+ 'openapi.ts',
154
+ );
125
155
 
126
- if (backendDeps.length === 0) {
156
+ if (!existsSync(openApiPath)) {
127
157
  return results;
128
158
  }
129
159
 
130
- // Determine output directory
131
- const clientOutput = frontendApp.client?.output || 'src/api';
132
- const frontendPath = join(workspace.root, frontendApp.path);
133
- const outputDir = join(frontendPath, clientOutput);
160
+ const content = await readFile(openApiPath, 'utf-8');
161
+ const endpointCount = countEndpoints(content);
162
+
163
+ // Get all frontends that depend on this backend
164
+ const dependentFrontends = getDependentFrontends(workspace, backendAppName);
134
165
 
135
- for (const backendAppName of backendDeps) {
136
- const result: ClientGenerationResult = {
166
+ for (const frontendAppName of dependentFrontends) {
167
+ const frontendApp = workspace.apps[frontendAppName];
168
+ if (!frontendApp || frontendApp.type !== 'frontend') {
169
+ continue;
170
+ }
171
+
172
+ // Check if frontend has client output configured
173
+ const clientOutput = frontendApp.client?.output;
174
+ if (!clientOutput) {
175
+ continue;
176
+ }
177
+
178
+ const result: ClientCopyResult = {
137
179
  frontendApp: frontendAppName,
138
180
  backendApp: backendAppName,
139
181
  outputPath: '',
140
- endpointCount: 0,
141
- generated: false,
182
+ endpointCount,
183
+ success: false,
142
184
  };
143
185
 
144
186
  try {
145
- // Generate OpenAPI spec for backend
146
- const spec = await generateBackendOpenApi(workspace, backendAppName);
147
-
148
- if (!spec) {
149
- result.reason = 'No endpoints found in backend';
150
- results.push(result);
151
- continue;
152
- }
153
-
154
- result.endpointCount = spec.endpointCount;
155
-
156
- // Check if spec has changed (unless force)
157
- const cacheKey = `${backendAppName}:${frontendAppName}`;
158
- const newHash = hashContent(spec.content);
159
- const oldHash = specHashCache.get(cacheKey);
160
-
161
- if (!options.force && oldHash === newHash) {
162
- result.reason = 'No schema changes detected';
163
- results.push(result);
164
- continue;
165
- }
166
-
167
- // Generate client file
187
+ const frontendPath = join(workspace.root, frontendApp.path);
188
+ const outputDir = join(frontendPath, clientOutput);
168
189
  await mkdir(outputDir, { recursive: true });
169
190
 
170
- // For single dependency, use openapi.ts; for multiple, use {backend}-api.ts
171
- const fileName =
172
- backendDeps.length === 1 ? 'openapi.ts' : `${backendAppName}-api.ts`;
191
+ // Use backend app name as filename
192
+ const fileName = `${backendAppName}.ts`;
173
193
  const outputPath = join(outputDir, fileName);
174
194
 
175
195
  // Add header comment with backend reference
176
196
  const backendRelPath = relative(
177
197
  dirname(outputPath),
178
- join(workspace.root, workspace.apps[backendAppName]!.path),
198
+ join(workspace.root, backendApp.path),
179
199
  );
180
200
 
181
201
  const clientContent = `/**
@@ -185,123 +205,43 @@ export async function generateClientForFrontend(
185
205
  * DO NOT EDIT - This file is automatically regenerated when backend schemas change.
186
206
  */
187
207
 
188
- ${spec.content}
208
+ ${content}
189
209
  `;
190
210
 
191
211
  await writeFile(outputPath, clientContent);
192
212
 
193
- // Update cache
194
- specHashCache.set(cacheKey, newHash);
195
-
196
213
  result.outputPath = outputPath;
197
- result.generated = true;
198
- results.push(result);
214
+ result.success = true;
215
+
216
+ log(
217
+ `📦 Copied client to ${frontendAppName} from ${backendAppName} (${endpointCount} endpoints)`,
218
+ );
199
219
  } catch (error) {
200
- result.reason = `Error: ${(error as Error).message}`;
201
- results.push(result);
220
+ result.error = (error as Error).message;
202
221
  }
222
+
223
+ results.push(result);
203
224
  }
204
225
 
205
226
  return results;
206
227
  }
207
228
 
208
229
  /**
209
- * Generate clients for all frontend apps in the workspace.
230
+ * Copy clients from all backends to their dependent frontends.
231
+ * Useful for initial setup or force refresh.
210
232
  */
211
- export async function generateAllClients(
233
+ export async function copyAllClients(
212
234
  workspace: NormalizedWorkspace,
213
- options: { force?: boolean; silent?: boolean } = {},
214
- ): Promise<ClientGenerationResult[]> {
215
- const log = options.silent ? () => {} : logger.log.bind(logger);
216
- const allResults: ClientGenerationResult[] = [];
235
+ options: { silent?: boolean } = {},
236
+ ): Promise<ClientCopyResult[]> {
237
+ const allResults: ClientCopyResult[] = [];
217
238
 
218
239
  for (const [appName, app] of Object.entries(workspace.apps)) {
219
- if (app.type === 'frontend' && app.dependencies.length > 0) {
220
- const results = await generateClientForFrontend(workspace, appName, {
221
- force: options.force,
222
- });
223
-
224
- for (const result of results) {
225
- if (result.generated) {
226
- log(
227
- `📦 Generated client for ${result.frontendApp} from ${result.backendApp} (${result.endpointCount} endpoints)`,
228
- );
229
- }
230
- allResults.push(result);
231
- }
240
+ if (app.type === 'backend' && app.routes) {
241
+ const results = await copyClientToFrontends(workspace, appName, options);
242
+ allResults.push(...results);
232
243
  }
233
244
  }
234
245
 
235
246
  return allResults;
236
247
  }
237
-
238
- /**
239
- * Check if a file path matches endpoint patterns that could affect OpenAPI schema.
240
- * Returns true for changes that should trigger client regeneration.
241
- */
242
- export function shouldRegenerateClient(
243
- filePath: string,
244
- routesPattern: string,
245
- ): boolean {
246
- // Normalize path separators
247
- const normalizedPath = filePath.replace(/\\/g, '/');
248
- const normalizedPattern = routesPattern.replace(/\\/g, '/');
249
-
250
- // Check if the file matches the routes pattern
251
- // This is a simple check - the file should be within the routes directory
252
- const patternDir = normalizedPattern.split('*')[0] || '';
253
-
254
- if (!normalizedPath.includes(patternDir.replace('./', ''))) {
255
- return false;
256
- }
257
-
258
- // Check file extension - only TypeScript endpoint files
259
- if (!normalizedPath.endsWith('.ts') && !normalizedPath.endsWith('.tsx')) {
260
- return false;
261
- }
262
-
263
- return true;
264
- }
265
-
266
- /**
267
- * Get backend apps that a frontend depends on.
268
- */
269
- export function getBackendDependencies(
270
- workspace: NormalizedWorkspace,
271
- frontendAppName: string,
272
- ): string[] {
273
- const frontendApp = workspace.apps[frontendAppName];
274
- if (!frontendApp || frontendApp.type !== 'frontend') {
275
- return [];
276
- }
277
-
278
- return frontendApp.dependencies.filter((dep) => {
279
- const depApp = workspace.apps[dep];
280
- return depApp?.type === 'backend' && depApp.routes;
281
- });
282
- }
283
-
284
- /**
285
- * Get frontend apps that depend on a backend app.
286
- */
287
- export function getDependentFrontends(
288
- workspace: NormalizedWorkspace,
289
- backendAppName: string,
290
- ): string[] {
291
- const dependentApps: string[] = [];
292
-
293
- for (const [appName, app] of Object.entries(workspace.apps)) {
294
- if (app.type === 'frontend' && app.dependencies.includes(backendAppName)) {
295
- dependentApps.push(appName);
296
- }
297
- }
298
-
299
- return dependentApps;
300
- }
301
-
302
- /**
303
- * Clear the spec hash cache (useful for testing).
304
- */
305
- export function clearSpecHashCache(): void {
306
- specHashCache.clear();
307
- }
@@ -468,6 +468,8 @@ const SSMStateConfigSchema = z.object({
468
468
  provider: z.literal('ssm'),
469
469
  /** AWS region (required for SSM provider) */
470
470
  region: AwsRegionSchema,
471
+ /** AWS profile name (optional - uses default credential chain if not provided) */
472
+ profile: z.string().optional(),
471
473
  });
472
474
 
473
475
  /**
package/tsdown.config.ts CHANGED
@@ -10,6 +10,7 @@ export default defineConfig({
10
10
  // Sniffer files need to be standalone for subprocess loading via --import
11
11
  'src/deploy/sniffer-loader.ts',
12
12
  'src/deploy/sniffer-worker.ts',
13
+ 'src/deploy/sniffer-routes-worker.ts',
13
14
  'src/deploy/sniffer-hooks.ts',
14
15
  'src/deploy/sniffer-envkit-patch.ts',
15
16
  ],
@@ -1,3 +0,0 @@
1
- import { CachedStateProvider } from "./CachedStateProvider-DVyKfaMm.mjs";
2
-
3
- export { CachedStateProvider };
@@ -1 +0,0 @@
1
- {"version":3,"file":"SSMStateProvider-BjCi_58g.mjs","names":["workspaceName: string","client: SSMClient","options: SSMStateProviderOptions","stage: string","state: DokployStageState"],"sources":["../src/deploy/SSMStateProvider.ts"],"sourcesContent":["/**\n * AWS SSM Parameter Store State Provider\n *\n * Stores deployment state as SecureString parameters in AWS SSM.\n * Uses AWS-managed KMS key for encryption (free tier).\n *\n * Parameter naming: /gkm/{workspaceName}/{stage}/state\n */\n\nimport {\n\tGetParameterCommand,\n\tParameterNotFound,\n\tPutParameterCommand,\n\tSSMClient,\n\ttype SSMClientConfig,\n} from '@aws-sdk/client-ssm';\nimport type { AwsRegion, StateProvider } from './StateProvider';\nimport type { DokployStageState } from './state';\n\nexport interface SSMStateProviderOptions {\n\t/** Workspace name (used in parameter path) */\n\tworkspaceName: string;\n\t/** AWS region */\n\tregion?: AwsRegion;\n\t/** AWS credentials (optional - uses default credential chain if not provided) */\n\tcredentials?: SSMClientConfig['credentials'];\n\t/** Custom endpoint (for LocalStack or other S3-compatible services) */\n\tendpoint?: string;\n}\n\n/**\n * AWS SSM Parameter Store state provider.\n *\n * Stores state as encrypted SecureString parameters.\n * Parameter path: /gkm/{workspaceName}/{stage}/state\n */\nexport class SSMStateProvider implements StateProvider {\n\tconstructor(\n\t\treadonly workspaceName: string,\n\t\tprivate readonly client: SSMClient,\n\t) {}\n\n\t/**\n\t * Create an SSMStateProvider with a new SSMClient.\n\t */\n\tstatic create(options: SSMStateProviderOptions): SSMStateProvider {\n\t\tconst client = new SSMClient({\n\t\t\tregion: options.region,\n\t\t\tcredentials: options.credentials,\n\t\t\tendpoint: options.endpoint,\n\t\t});\n\n\t\treturn new SSMStateProvider(options.workspaceName, client);\n\t}\n\n\t/**\n\t * Get the SSM parameter name for a stage.\n\t */\n\tprivate getParameterName(stage: string): string {\n\t\treturn `/gkm/${this.workspaceName}/${stage}/state`;\n\t}\n\n\tasync read(stage: string): Promise<DokployStageState | null> {\n\t\tconst parameterName = this.getParameterName(stage);\n\n\t\ttry {\n\t\t\tconst response = await this.client.send(\n\t\t\t\tnew GetParameterCommand({\n\t\t\t\t\tName: parameterName,\n\t\t\t\t\tWithDecryption: true,\n\t\t\t\t}),\n\t\t\t);\n\n\t\t\tif (!response.Parameter?.Value) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn JSON.parse(response.Parameter.Value) as DokployStageState;\n\t\t} catch (error) {\n\t\t\t// Parameter doesn't exist - return null (new deployment)\n\t\t\tif (error instanceof ParameterNotFound) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Re-throw other errors (permission denied, network, etc.)\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync write(stage: string, state: DokployStageState): Promise<void> {\n\t\tconst parameterName = this.getParameterName(stage);\n\n\t\t// Update last deployed timestamp\n\t\tstate.lastDeployedAt = new Date().toISOString();\n\n\t\tawait this.client.send(\n\t\t\tnew PutParameterCommand({\n\t\t\t\tName: parameterName,\n\t\t\t\tValue: JSON.stringify(state),\n\t\t\t\tType: 'SecureString',\n\t\t\t\tOverwrite: true,\n\t\t\t\tDescription: `GKM deployment state for ${this.workspaceName}/${stage}`,\n\t\t\t}),\n\t\t);\n\t}\n}\n"],"mappings":";;;;;;;;;AAoCA,IAAa,mBAAb,MAAa,iBAA0C;CACtD,YACUA,eACQC,QAChB;EAFQ;EACQ;CACd;;;;CAKJ,OAAO,OAAOC,SAAoD;EACjE,MAAM,SAAS,IAAI,UAAU;GAC5B,QAAQ,QAAQ;GAChB,aAAa,QAAQ;GACrB,UAAU,QAAQ;EAClB;AAED,SAAO,IAAI,iBAAiB,QAAQ,eAAe;CACnD;;;;CAKD,AAAQ,iBAAiBC,OAAuB;AAC/C,UAAQ,OAAO,KAAK,cAAc,GAAG,MAAM;CAC3C;CAED,MAAM,KAAKA,OAAkD;EAC5D,MAAM,gBAAgB,KAAK,iBAAiB,MAAM;AAElD,MAAI;GACH,MAAM,WAAW,MAAM,KAAK,OAAO,KAClC,IAAI,oBAAoB;IACvB,MAAM;IACN,gBAAgB;GAChB,GACD;AAED,QAAK,SAAS,WAAW,MACxB,QAAO;AAGR,UAAO,KAAK,MAAM,SAAS,UAAU,MAAM;EAC3C,SAAQ,OAAO;AAEf,OAAI,iBAAiB,kBACpB,QAAO;AAIR,SAAM;EACN;CACD;CAED,MAAM,MAAMA,OAAeC,OAAyC;EACnE,MAAM,gBAAgB,KAAK,iBAAiB,MAAM;AAGlD,QAAM,iBAAiB,qBAAI,QAAO,aAAa;AAE/C,QAAM,KAAK,OAAO,KACjB,IAAI,oBAAoB;GACvB,MAAM;GACN,OAAO,KAAK,UAAU,MAAM;GAC5B,MAAM;GACN,WAAW;GACX,cAAc,2BAA2B,KAAK,cAAc,GAAG,MAAM;EACrE,GACD;CACD;AACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SSMStateProvider-D79o_JjM.cjs","names":["workspaceName: string","client: SSMClient","options: SSMStateProviderOptions","SSMClient","stage: string","GetParameterCommand","ParameterNotFound","state: DokployStageState","PutParameterCommand"],"sources":["../src/deploy/SSMStateProvider.ts"],"sourcesContent":["/**\n * AWS SSM Parameter Store State Provider\n *\n * Stores deployment state as SecureString parameters in AWS SSM.\n * Uses AWS-managed KMS key for encryption (free tier).\n *\n * Parameter naming: /gkm/{workspaceName}/{stage}/state\n */\n\nimport {\n\tGetParameterCommand,\n\tParameterNotFound,\n\tPutParameterCommand,\n\tSSMClient,\n\ttype SSMClientConfig,\n} from '@aws-sdk/client-ssm';\nimport type { AwsRegion, StateProvider } from './StateProvider';\nimport type { DokployStageState } from './state';\n\nexport interface SSMStateProviderOptions {\n\t/** Workspace name (used in parameter path) */\n\tworkspaceName: string;\n\t/** AWS region */\n\tregion?: AwsRegion;\n\t/** AWS credentials (optional - uses default credential chain if not provided) */\n\tcredentials?: SSMClientConfig['credentials'];\n\t/** Custom endpoint (for LocalStack or other S3-compatible services) */\n\tendpoint?: string;\n}\n\n/**\n * AWS SSM Parameter Store state provider.\n *\n * Stores state as encrypted SecureString parameters.\n * Parameter path: /gkm/{workspaceName}/{stage}/state\n */\nexport class SSMStateProvider implements StateProvider {\n\tconstructor(\n\t\treadonly workspaceName: string,\n\t\tprivate readonly client: SSMClient,\n\t) {}\n\n\t/**\n\t * Create an SSMStateProvider with a new SSMClient.\n\t */\n\tstatic create(options: SSMStateProviderOptions): SSMStateProvider {\n\t\tconst client = new SSMClient({\n\t\t\tregion: options.region,\n\t\t\tcredentials: options.credentials,\n\t\t\tendpoint: options.endpoint,\n\t\t});\n\n\t\treturn new SSMStateProvider(options.workspaceName, client);\n\t}\n\n\t/**\n\t * Get the SSM parameter name for a stage.\n\t */\n\tprivate getParameterName(stage: string): string {\n\t\treturn `/gkm/${this.workspaceName}/${stage}/state`;\n\t}\n\n\tasync read(stage: string): Promise<DokployStageState | null> {\n\t\tconst parameterName = this.getParameterName(stage);\n\n\t\ttry {\n\t\t\tconst response = await this.client.send(\n\t\t\t\tnew GetParameterCommand({\n\t\t\t\t\tName: parameterName,\n\t\t\t\t\tWithDecryption: true,\n\t\t\t\t}),\n\t\t\t);\n\n\t\t\tif (!response.Parameter?.Value) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn JSON.parse(response.Parameter.Value) as DokployStageState;\n\t\t} catch (error) {\n\t\t\t// Parameter doesn't exist - return null (new deployment)\n\t\t\tif (error instanceof ParameterNotFound) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Re-throw other errors (permission denied, network, etc.)\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync write(stage: string, state: DokployStageState): Promise<void> {\n\t\tconst parameterName = this.getParameterName(stage);\n\n\t\t// Update last deployed timestamp\n\t\tstate.lastDeployedAt = new Date().toISOString();\n\n\t\tawait this.client.send(\n\t\t\tnew PutParameterCommand({\n\t\t\t\tName: parameterName,\n\t\t\t\tValue: JSON.stringify(state),\n\t\t\t\tType: 'SecureString',\n\t\t\t\tOverwrite: true,\n\t\t\t\tDescription: `GKM deployment state for ${this.workspaceName}/${stage}`,\n\t\t\t}),\n\t\t);\n\t}\n}\n"],"mappings":";;;;;;;;;;AAoCA,IAAa,mBAAb,MAAa,iBAA0C;CACtD,YACUA,eACQC,QAChB;EAFQ;EACQ;CACd;;;;CAKJ,OAAO,OAAOC,SAAoD;EACjE,MAAM,SAAS,IAAIC,+BAAU;GAC5B,QAAQ,QAAQ;GAChB,aAAa,QAAQ;GACrB,UAAU,QAAQ;EAClB;AAED,SAAO,IAAI,iBAAiB,QAAQ,eAAe;CACnD;;;;CAKD,AAAQ,iBAAiBC,OAAuB;AAC/C,UAAQ,OAAO,KAAK,cAAc,GAAG,MAAM;CAC3C;CAED,MAAM,KAAKA,OAAkD;EAC5D,MAAM,gBAAgB,KAAK,iBAAiB,MAAM;AAElD,MAAI;GACH,MAAM,WAAW,MAAM,KAAK,OAAO,KAClC,IAAIC,yCAAoB;IACvB,MAAM;IACN,gBAAgB;GAChB,GACD;AAED,QAAK,SAAS,WAAW,MACxB,QAAO;AAGR,UAAO,KAAK,MAAM,SAAS,UAAU,MAAM;EAC3C,SAAQ,OAAO;AAEf,OAAI,iBAAiBC,uCACpB,QAAO;AAIR,SAAM;EACN;CACD;CAED,MAAM,MAAMF,OAAeG,OAAyC;EACnE,MAAM,gBAAgB,KAAK,iBAAiB,MAAM;AAGlD,QAAM,iBAAiB,qBAAI,QAAO,aAAa;AAE/C,QAAM,KAAK,OAAO,KACjB,IAAIC,yCAAoB;GACvB,MAAM;GACN,OAAO,KAAK,UAAU,MAAM;GAC5B,MAAM;GACN,WAAW;GACX,cAAc,2BAA2B,KAAK,cAAc,GAAG,MAAM;EACrE,GACD;CACD;AACD"}
@@ -1,3 +0,0 @@
1
- import { DokployApi, DokployApiError } from "./dokploy-api-7k3t7_zd.mjs";
2
-
3
- export { DokployApi };
@@ -1,3 +0,0 @@
1
- import { encryptSecrets, generateDefineOptions } from "./encryption-JtMsiGNp.mjs";
2
-
3
- export { encryptSecrets, generateDefineOptions };
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-Bi9vGQJy.d.mts","names":[],"sources":["../src/deploy/state.ts","../src/deploy/StateProvider.ts","../src/workspace/schema.ts","../src/workspace/types.ts","../src/workspace/index.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-CufAAnge.d.cts","names":[],"sources":["../src/deploy/state.ts","../src/deploy/StateProvider.ts","../src/workspace/schema.ts","../src/workspace/types.ts","../src/workspace/index.ts"],"sourcesContent":[],"mappings":"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"}