@geekmidas/cli 1.10.15 → 1.10.17
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/CHANGELOG.md +12 -0
- package/dist/{bundler-BWsVDer6.mjs → bundler-B4AackW5.mjs} +2 -2
- package/dist/{bundler-BWsVDer6.mjs.map → bundler-B4AackW5.mjs.map} +1 -1
- package/dist/{bundler-Drh5KoN5.cjs → bundler-BhhfkI9T.cjs} +2 -2
- package/dist/{bundler-Drh5KoN5.cjs.map → bundler-BhhfkI9T.cjs.map} +1 -1
- package/dist/config.d.cts +2 -2
- package/dist/config.d.mts +2 -2
- package/dist/{fullstack-secrets-D9rjTNyx.cjs → fullstack-secrets-DOHBU4Rp.cjs} +110 -4
- package/dist/fullstack-secrets-DOHBU4Rp.cjs.map +1 -0
- package/dist/{fullstack-secrets-BIFFv4UZ.mjs → fullstack-secrets-x2Kffx7-.mjs} +99 -5
- package/dist/fullstack-secrets-x2Kffx7-.mjs.map +1 -0
- package/dist/{index-UCsZ_Vkw.d.cts → index-BkibYzso.d.cts} +15 -4
- package/dist/index-BkibYzso.d.cts.map +1 -0
- package/dist/{index-gXAGDSGu.d.mts → index-CY-ieuRp.d.mts} +15 -4
- package/dist/index-CY-ieuRp.d.mts.map +1 -0
- package/dist/index.cjs +332 -62
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +332 -62
- package/dist/index.mjs.map +1 -1
- package/dist/openapi-BYxAWwok.cjs.map +1 -1
- package/dist/openapi-DenF-okj.mjs.map +1 -1
- package/dist/openapi.d.cts +1 -1
- package/dist/openapi.d.mts +1 -1
- package/dist/{reconcile-DxTEausy.mjs → reconcile-BLh6rswz.mjs} +2 -2
- package/dist/{reconcile-DxTEausy.mjs.map → reconcile-BLh6rswz.mjs.map} +1 -1
- package/dist/{reconcile-LaaJkFlO.cjs → reconcile-Ch7sIcf8.cjs} +2 -2
- package/dist/{reconcile-LaaJkFlO.cjs.map → reconcile-Ch7sIcf8.cjs.map} +1 -1
- package/dist/{storage-Bu44pwPJ.cjs → storage-B1wvztiJ.cjs} +11 -1
- package/dist/{storage-clMAp4sc.mjs.map → storage-B1wvztiJ.cjs.map} +1 -1
- package/dist/{storage-CauTheT9.mjs → storage-Cs4WBsc4.mjs} +1 -1
- package/dist/{storage-DpqzcjQ5.cjs → storage-DOEtT2Hr.cjs} +1 -1
- package/dist/{storage-clMAp4sc.mjs → storage-dbb9RyBl.mjs} +11 -1
- package/dist/{storage-Bu44pwPJ.cjs.map → storage-dbb9RyBl.mjs.map} +1 -1
- package/dist/{sync-BkalF65h.mjs → sync-COnAugP-.mjs} +1 -1
- package/dist/sync-D1Pa30oV.cjs +4 -0
- package/dist/{sync-BeiI5rFC.cjs → sync-DGXXSk2v.cjs} +2 -2
- package/dist/{sync-BeiI5rFC.cjs.map → sync-DGXXSk2v.cjs.map} +1 -1
- package/dist/{sync-CWJ6tL0s.mjs → sync-D_NowTkZ.mjs} +2 -2
- package/dist/{sync-CWJ6tL0s.mjs.map → sync-D_NowTkZ.mjs.map} +1 -1
- package/dist/{types-DiV9Mbvc.d.mts → types-DdHfUbxk.d.cts} +13 -3
- package/dist/types-DdHfUbxk.d.cts.map +1 -0
- package/dist/{types-JvWj5Ckc.d.cts → types-OszPdw9m.d.mts} +13 -3
- package/dist/types-OszPdw9m.d.mts.map +1 -0
- package/dist/workspace/index.d.cts +2 -2
- package/dist/workspace/index.d.mts +2 -2
- package/dist/workspace-4SP3Gx4Y.cjs.map +1 -1
- package/dist/workspace-D4z4A4cq.mjs.map +1 -1
- package/package.json +4 -4
- package/src/dev/__tests__/entry.spec.ts +3 -5
- package/src/dev/__tests__/index.spec.ts +73 -5
- package/src/dev/index.ts +33 -25
- package/src/docker/compose.ts +130 -2
- package/src/init/__tests__/generators.spec.ts +84 -0
- package/src/init/generators/docker.ts +128 -16
- package/src/init/index.ts +26 -1
- package/src/init/templates/index.ts +28 -0
- package/src/init/versions.ts +1 -1
- package/src/secrets/__tests__/generator.spec.ts +183 -0
- package/src/secrets/generator.ts +116 -4
- package/src/secrets/storage.ts +12 -0
- package/src/secrets/types.ts +11 -1
- package/src/setup/__tests__/reconcile-secrets.spec.ts +86 -0
- package/src/setup/index.ts +64 -1
- package/src/test/__tests__/index.spec.ts +1 -4
- package/src/types.ts +13 -1
- package/src/workspace/types.ts +13 -2
- package/dist/fullstack-secrets-BIFFv4UZ.mjs.map +0 -1
- package/dist/fullstack-secrets-D9rjTNyx.cjs.map +0 -1
- package/dist/index-UCsZ_Vkw.d.cts.map +0 -1
- package/dist/index-gXAGDSGu.d.mts.map +0 -1
- package/dist/sync-Bp8xRcuQ.cjs +0 -4
- package/dist/types-DiV9Mbvc.d.mts.map +0 -1
- package/dist/types-JvWj5Ckc.d.cts.map +0 -1
package/src/secrets/generator.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { randomBytes } from 'node:crypto';
|
|
2
|
-
import type { ComposeServiceName } from '../types';
|
|
2
|
+
import type { ComposeServiceName, EventsBackend } from '../types';
|
|
3
3
|
import type { ServiceCredentials, StageSecrets } from './types';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -45,6 +45,20 @@ const SERVICE_DEFAULTS: Record<
|
|
|
45
45
|
port: 1025,
|
|
46
46
|
username: 'app',
|
|
47
47
|
},
|
|
48
|
+
localstack: {
|
|
49
|
+
host: 'localhost',
|
|
50
|
+
port: 4566,
|
|
51
|
+
username: 'localstack',
|
|
52
|
+
region: 'us-east-1',
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
/** Default credentials for pgboss (not a Docker service, reuses postgres) */
|
|
57
|
+
const PGBOSS_DEFAULTS: Omit<ServiceCredentials, 'password'> = {
|
|
58
|
+
host: 'localhost',
|
|
59
|
+
port: 5432,
|
|
60
|
+
username: 'pgboss',
|
|
61
|
+
database: 'app',
|
|
48
62
|
};
|
|
49
63
|
|
|
50
64
|
/**
|
|
@@ -108,11 +122,72 @@ export function generateMinioEndpoint(creds: ServiceCredentials): string {
|
|
|
108
122
|
return `http://${host}:${port}`;
|
|
109
123
|
}
|
|
110
124
|
|
|
125
|
+
/**
|
|
126
|
+
* Generate a LocalStack-compatible access key ID.
|
|
127
|
+
* Must start with 'LSIA' prefix and be at least 20 characters.
|
|
128
|
+
* @see https://docs.localstack.cloud/aws/capabilities/config/credentials/
|
|
129
|
+
*/
|
|
130
|
+
export function generateLocalStackAccessKeyId(): string {
|
|
131
|
+
const suffix = randomBytes(12).toString('base64url').slice(0, 16);
|
|
132
|
+
return `LSIA${suffix}`;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Generate connection URL for pg-boss (uses PostgreSQL protocol).
|
|
137
|
+
* Format: pgboss://user:pass@host:port/db?schema=pgboss
|
|
138
|
+
*/
|
|
139
|
+
export function generatePgBossUrl(creds: ServiceCredentials): string {
|
|
140
|
+
const { username, password, host, port, database } = creds;
|
|
141
|
+
return `pgboss://${username}:${encodeURIComponent(password)}@${host}:${port}/${database}?schema=pgboss`;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Generate event connection strings based on the events backend.
|
|
146
|
+
*/
|
|
147
|
+
export function generateEventConnectionStrings(
|
|
148
|
+
eventsBackend: EventsBackend,
|
|
149
|
+
services: StageSecrets['services'],
|
|
150
|
+
): { publisher: string; subscriber: string } {
|
|
151
|
+
switch (eventsBackend) {
|
|
152
|
+
case 'pgboss': {
|
|
153
|
+
const creds = services.pgboss;
|
|
154
|
+
if (!creds) {
|
|
155
|
+
throw new Error('pgboss credentials required for pgboss events');
|
|
156
|
+
}
|
|
157
|
+
const url = generatePgBossUrl(creds);
|
|
158
|
+
return { publisher: url, subscriber: url };
|
|
159
|
+
}
|
|
160
|
+
case 'sns': {
|
|
161
|
+
const creds = services.localstack;
|
|
162
|
+
if (!creds) {
|
|
163
|
+
throw new Error('localstack credentials required for sns events');
|
|
164
|
+
}
|
|
165
|
+
const endpoint = `http://${creds.host}:${creds.port}`;
|
|
166
|
+
const region = creds.region ?? 'us-east-1';
|
|
167
|
+
const accessKeyId = creds.accessKeyId ?? creds.username;
|
|
168
|
+
const secretKey = encodeURIComponent(creds.password);
|
|
169
|
+
return {
|
|
170
|
+
publisher: `sns://${accessKeyId}:${secretKey}@${creds.host}:${creds.port}?region=${region}&endpoint=${encodeURIComponent(endpoint)}`,
|
|
171
|
+
subscriber: `sqs://${accessKeyId}:${secretKey}@${creds.host}:${creds.port}?region=${region}&endpoint=${encodeURIComponent(endpoint)}`,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
case 'rabbitmq': {
|
|
175
|
+
const creds = services.rabbitmq;
|
|
176
|
+
if (!creds) {
|
|
177
|
+
throw new Error('rabbitmq credentials required for rabbitmq events');
|
|
178
|
+
}
|
|
179
|
+
const url = generateRabbitmqUrl(creds);
|
|
180
|
+
return { publisher: url, subscriber: url };
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
111
185
|
/**
|
|
112
186
|
* Generate connection URLs from service credentials.
|
|
113
187
|
*/
|
|
114
188
|
export function generateConnectionUrls(
|
|
115
189
|
services: StageSecrets['services'],
|
|
190
|
+
eventsBackend?: EventsBackend,
|
|
116
191
|
): StageSecrets['urls'] {
|
|
117
192
|
const urls: StageSecrets['urls'] = {};
|
|
118
193
|
|
|
@@ -132,6 +207,12 @@ export function generateConnectionUrls(
|
|
|
132
207
|
urls.STORAGE_ENDPOINT = generateMinioEndpoint(services.minio);
|
|
133
208
|
}
|
|
134
209
|
|
|
210
|
+
if (eventsBackend) {
|
|
211
|
+
const eventUrls = generateEventConnectionStrings(eventsBackend, services);
|
|
212
|
+
urls.EVENT_PUBLISHER_CONNECTION_STRING = eventUrls.publisher;
|
|
213
|
+
urls.EVENT_SUBSCRIBER_CONNECTION_STRING = eventUrls.subscriber;
|
|
214
|
+
}
|
|
215
|
+
|
|
135
216
|
if (services.mailpit) {
|
|
136
217
|
urls.SMTP_HOST = services.mailpit.host;
|
|
137
218
|
urls.SMTP_PORT = String(services.mailpit.port);
|
|
@@ -140,17 +221,30 @@ export function generateConnectionUrls(
|
|
|
140
221
|
return urls;
|
|
141
222
|
}
|
|
142
223
|
|
|
224
|
+
/**
|
|
225
|
+
* Generate LocalStack service credentials with LSIA-prefixed access key.
|
|
226
|
+
*/
|
|
227
|
+
export function generateLocalStackCredentials(): ServiceCredentials {
|
|
228
|
+
const defaults = SERVICE_DEFAULTS.localstack;
|
|
229
|
+
return {
|
|
230
|
+
...defaults,
|
|
231
|
+
password: generateSecurePassword(),
|
|
232
|
+
accessKeyId: generateLocalStackAccessKeyId(),
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
|
|
143
236
|
/**
|
|
144
237
|
* Create a new StageSecrets object with generated credentials.
|
|
145
238
|
* @param stage - The deployment stage (e.g., 'development', 'production')
|
|
146
239
|
* @param services - List of services to generate credentials for
|
|
147
240
|
* @param options - Optional configuration
|
|
148
241
|
* @param options.projectName - Project name used to derive the database name (e.g., 'myapp' → 'myapp_dev')
|
|
242
|
+
* @param options.eventsBackend - Event backend type (pgboss, sns, rabbitmq)
|
|
149
243
|
*/
|
|
150
244
|
export function createStageSecrets(
|
|
151
245
|
stage: string,
|
|
152
246
|
services: ComposeServiceName[],
|
|
153
|
-
options?: { projectName?: string },
|
|
247
|
+
options?: { projectName?: string; eventsBackend?: EventsBackend },
|
|
154
248
|
): StageSecrets {
|
|
155
249
|
const now = new Date().toISOString();
|
|
156
250
|
const serviceCredentials = generateServicesCredentials(services);
|
|
@@ -166,12 +260,30 @@ export function createStageSecrets(
|
|
|
166
260
|
}
|
|
167
261
|
}
|
|
168
262
|
|
|
169
|
-
|
|
263
|
+
// Generate event-specific credentials
|
|
264
|
+
const eventsBackend = options?.eventsBackend;
|
|
265
|
+
if (eventsBackend === 'pgboss' && serviceCredentials.postgres) {
|
|
266
|
+
// pgboss reuses postgres host/port/database but with dedicated user
|
|
267
|
+
serviceCredentials.pgboss = {
|
|
268
|
+
...PGBOSS_DEFAULTS,
|
|
269
|
+
password: generateSecurePassword(),
|
|
270
|
+
host: serviceCredentials.postgres.host,
|
|
271
|
+
port: serviceCredentials.postgres.port,
|
|
272
|
+
database: serviceCredentials.postgres.database,
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
if (eventsBackend === 'sns') {
|
|
276
|
+
// LocalStack credentials with LSIA-prefixed access key
|
|
277
|
+
serviceCredentials.localstack = generateLocalStackCredentials();
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
const urls = generateConnectionUrls(serviceCredentials, eventsBackend);
|
|
170
281
|
|
|
171
282
|
return {
|
|
172
283
|
stage,
|
|
173
284
|
createdAt: now,
|
|
174
285
|
updatedAt: now,
|
|
286
|
+
eventsBackend,
|
|
175
287
|
services: serviceCredentials,
|
|
176
288
|
urls,
|
|
177
289
|
custom: {},
|
|
@@ -204,6 +316,6 @@ export function rotateServicePassword(
|
|
|
204
316
|
...secrets,
|
|
205
317
|
updatedAt: new Date().toISOString(),
|
|
206
318
|
services: newServices,
|
|
207
|
-
urls: generateConnectionUrls(newServices),
|
|
319
|
+
urls: generateConnectionUrls(newServices, secrets.eventsBackend),
|
|
208
320
|
};
|
|
209
321
|
}
|
package/src/secrets/storage.ts
CHANGED
|
@@ -223,6 +223,18 @@ export function toEmbeddableSecrets(secrets: StageSecrets): EmbeddableSecrets {
|
|
|
223
223
|
SMTP_SECURE: 'false',
|
|
224
224
|
MAIL_FROM: 'noreply@localhost',
|
|
225
225
|
}),
|
|
226
|
+
...(secrets.services.localstack && {
|
|
227
|
+
AWS_ACCESS_KEY_ID:
|
|
228
|
+
secrets.services.localstack.accessKeyId ??
|
|
229
|
+
secrets.services.localstack.username,
|
|
230
|
+
AWS_SECRET_ACCESS_KEY: secrets.services.localstack.password,
|
|
231
|
+
AWS_REGION: secrets.services.localstack.region ?? 'us-east-1',
|
|
232
|
+
AWS_ENDPOINT_URL: `http://${secrets.services.localstack.host}:${secrets.services.localstack.port}`,
|
|
233
|
+
}),
|
|
234
|
+
...(secrets.services.pgboss && {
|
|
235
|
+
PGBOSS_DB_USER: secrets.services.pgboss.username,
|
|
236
|
+
PGBOSS_DB_PASSWORD: secrets.services.pgboss.password,
|
|
237
|
+
}),
|
|
226
238
|
};
|
|
227
239
|
}
|
|
228
240
|
|
package/src/secrets/types.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ComposeServiceName } from '../types';
|
|
1
|
+
import type { ComposeServiceName, EventsBackend } from '../types';
|
|
2
2
|
|
|
3
3
|
/** Credentials for a specific service */
|
|
4
4
|
export interface ServiceCredentials {
|
|
@@ -12,6 +12,10 @@ export interface ServiceCredentials {
|
|
|
12
12
|
vhost?: string;
|
|
13
13
|
/** Bucket name (for minio) */
|
|
14
14
|
bucket?: string;
|
|
15
|
+
/** Access key ID (for localstack) */
|
|
16
|
+
accessKeyId?: string;
|
|
17
|
+
/** Region (for localstack) */
|
|
18
|
+
region?: string;
|
|
15
19
|
}
|
|
16
20
|
|
|
17
21
|
/** Stage secrets configuration */
|
|
@@ -22,6 +26,8 @@ export interface StageSecrets {
|
|
|
22
26
|
createdAt: string;
|
|
23
27
|
/** ISO timestamp when secrets were last updated */
|
|
24
28
|
updatedAt: string;
|
|
29
|
+
/** Event backend type (if events are enabled) */
|
|
30
|
+
eventsBackend?: EventsBackend;
|
|
25
31
|
/** Service-specific credentials */
|
|
26
32
|
services: {
|
|
27
33
|
postgres?: ServiceCredentials;
|
|
@@ -29,6 +35,8 @@ export interface StageSecrets {
|
|
|
29
35
|
rabbitmq?: ServiceCredentials;
|
|
30
36
|
minio?: ServiceCredentials;
|
|
31
37
|
mailpit?: ServiceCredentials;
|
|
38
|
+
localstack?: ServiceCredentials;
|
|
39
|
+
pgboss?: ServiceCredentials;
|
|
32
40
|
};
|
|
33
41
|
/** Generated connection URLs */
|
|
34
42
|
urls: {
|
|
@@ -38,6 +46,8 @@ export interface StageSecrets {
|
|
|
38
46
|
STORAGE_ENDPOINT?: string;
|
|
39
47
|
SMTP_HOST?: string;
|
|
40
48
|
SMTP_PORT?: string;
|
|
49
|
+
EVENT_PUBLISHER_CONNECTION_STRING?: string;
|
|
50
|
+
EVENT_SUBSCRIBER_CONNECTION_STRING?: string;
|
|
41
51
|
};
|
|
42
52
|
/** Custom user-defined secrets */
|
|
43
53
|
custom: Record<string, string>;
|
|
@@ -340,3 +340,89 @@ describe('generateFullstackCustomSecrets', () => {
|
|
|
340
340
|
expect(result.BETTER_AUTH_TRUSTED_ORIGINS).toBeUndefined();
|
|
341
341
|
});
|
|
342
342
|
});
|
|
343
|
+
|
|
344
|
+
describe('reconcileSecrets - events', () => {
|
|
345
|
+
it('should add pgboss credentials when events is pgboss', () => {
|
|
346
|
+
const workspace = createWorkspace({
|
|
347
|
+
services: { db: true, cache: false, events: 'pgboss' },
|
|
348
|
+
});
|
|
349
|
+
const secrets = createSecrets();
|
|
350
|
+
|
|
351
|
+
const result = reconcileSecrets(secrets, workspace);
|
|
352
|
+
|
|
353
|
+
expect(result).not.toBeNull();
|
|
354
|
+
expect(result!.eventsBackend).toBe('pgboss');
|
|
355
|
+
expect(result!.services.pgboss).toBeDefined();
|
|
356
|
+
expect(result!.services.pgboss!.username).toBe('pgboss');
|
|
357
|
+
expect(result!.services.pgboss!.host).toBe('localhost');
|
|
358
|
+
expect(result!.services.pgboss!.database).toBe('test_dev');
|
|
359
|
+
expect(result!.urls.EVENT_PUBLISHER_CONNECTION_STRING).toContain(
|
|
360
|
+
'pgboss://',
|
|
361
|
+
);
|
|
362
|
+
expect(result!.urls.EVENT_SUBSCRIBER_CONNECTION_STRING).toContain(
|
|
363
|
+
'pgboss://',
|
|
364
|
+
);
|
|
365
|
+
});
|
|
366
|
+
|
|
367
|
+
it('should add localstack credentials when events is sns', () => {
|
|
368
|
+
const workspace = createWorkspace({
|
|
369
|
+
services: { db: true, cache: false, events: 'sns' },
|
|
370
|
+
});
|
|
371
|
+
const secrets = createSecrets();
|
|
372
|
+
|
|
373
|
+
const result = reconcileSecrets(secrets, workspace);
|
|
374
|
+
|
|
375
|
+
expect(result).not.toBeNull();
|
|
376
|
+
expect(result!.eventsBackend).toBe('sns');
|
|
377
|
+
expect(result!.services.localstack).toBeDefined();
|
|
378
|
+
expect(result!.services.localstack!.accessKeyId).toMatch(/^LSIA/);
|
|
379
|
+
expect(result!.urls.EVENT_PUBLISHER_CONNECTION_STRING).toContain('sns://');
|
|
380
|
+
expect(result!.urls.EVENT_SUBSCRIBER_CONNECTION_STRING).toContain('sqs://');
|
|
381
|
+
});
|
|
382
|
+
|
|
383
|
+
it('should add rabbitmq credentials when events is rabbitmq', () => {
|
|
384
|
+
const workspace = createWorkspace({
|
|
385
|
+
services: { db: true, cache: false, events: 'rabbitmq' },
|
|
386
|
+
});
|
|
387
|
+
const secrets = createSecrets();
|
|
388
|
+
|
|
389
|
+
const result = reconcileSecrets(secrets, workspace);
|
|
390
|
+
|
|
391
|
+
expect(result).not.toBeNull();
|
|
392
|
+
expect(result!.eventsBackend).toBe('rabbitmq');
|
|
393
|
+
expect(result!.services.rabbitmq).toBeDefined();
|
|
394
|
+
expect(result!.urls.EVENT_PUBLISHER_CONNECTION_STRING).toContain('amqp://');
|
|
395
|
+
});
|
|
396
|
+
|
|
397
|
+
it('should not add duplicate pgboss credentials when already present', () => {
|
|
398
|
+
const workspace = createWorkspace({
|
|
399
|
+
services: { db: true, cache: false, events: 'pgboss' },
|
|
400
|
+
});
|
|
401
|
+
const secrets: StageSecrets = {
|
|
402
|
+
...createSecrets(),
|
|
403
|
+
eventsBackend: 'pgboss',
|
|
404
|
+
services: {
|
|
405
|
+
...createSecrets().services,
|
|
406
|
+
pgboss: {
|
|
407
|
+
host: 'localhost',
|
|
408
|
+
port: 5432,
|
|
409
|
+
username: 'pgboss',
|
|
410
|
+
password: 'existing-pass',
|
|
411
|
+
database: 'test_dev',
|
|
412
|
+
},
|
|
413
|
+
},
|
|
414
|
+
urls: {
|
|
415
|
+
...createSecrets().urls,
|
|
416
|
+
EVENT_PUBLISHER_CONNECTION_STRING: 'pgboss://existing',
|
|
417
|
+
EVENT_SUBSCRIBER_CONNECTION_STRING: 'pgboss://existing',
|
|
418
|
+
},
|
|
419
|
+
};
|
|
420
|
+
|
|
421
|
+
const result = reconcileSecrets(secrets, workspace);
|
|
422
|
+
|
|
423
|
+
// pgboss credentials should be preserved (not regenerated)
|
|
424
|
+
if (result) {
|
|
425
|
+
expect(result.services.pgboss!.password).toBe('existing-pass');
|
|
426
|
+
}
|
|
427
|
+
});
|
|
428
|
+
});
|
package/src/setup/index.ts
CHANGED
|
@@ -6,6 +6,8 @@ import { resolveServicePorts, startWorkspaceServices } from '../dev/index.js';
|
|
|
6
6
|
import {
|
|
7
7
|
createStageSecrets,
|
|
8
8
|
generateConnectionUrls,
|
|
9
|
+
generateLocalStackCredentials,
|
|
10
|
+
generateSecurePassword,
|
|
9
11
|
generateServiceCredentials,
|
|
10
12
|
} from '../secrets/generator.js';
|
|
11
13
|
import {
|
|
@@ -183,12 +185,70 @@ export function reconcileSecrets(
|
|
|
183
185
|
...result,
|
|
184
186
|
services: { ...result.services, [name]: creds },
|
|
185
187
|
};
|
|
186
|
-
result.urls = generateConnectionUrls(
|
|
188
|
+
result.urls = generateConnectionUrls(
|
|
189
|
+
result.services,
|
|
190
|
+
result.eventsBackend,
|
|
191
|
+
);
|
|
187
192
|
logger.log(` 🔄 Adding missing service credentials: ${name}`);
|
|
188
193
|
changed = true;
|
|
189
194
|
}
|
|
190
195
|
}
|
|
191
196
|
|
|
197
|
+
// Reconcile events backend
|
|
198
|
+
const eventsBackend = workspace.services.events;
|
|
199
|
+
if (eventsBackend && result.eventsBackend !== eventsBackend) {
|
|
200
|
+
result.eventsBackend = eventsBackend;
|
|
201
|
+
|
|
202
|
+
// Add pgboss credentials if needed
|
|
203
|
+
if (eventsBackend === 'pgboss' && !result.services.pgboss) {
|
|
204
|
+
result = {
|
|
205
|
+
...result,
|
|
206
|
+
services: {
|
|
207
|
+
...result.services,
|
|
208
|
+
pgboss: {
|
|
209
|
+
host: result.services.postgres?.host ?? 'localhost',
|
|
210
|
+
port: result.services.postgres?.port ?? 5432,
|
|
211
|
+
username: 'pgboss',
|
|
212
|
+
password: generateSecurePassword(),
|
|
213
|
+
database: result.services.postgres?.database ?? 'app',
|
|
214
|
+
},
|
|
215
|
+
},
|
|
216
|
+
};
|
|
217
|
+
logger.log(' 🔄 Adding missing service credentials: pgboss');
|
|
218
|
+
changed = true;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// Add localstack credentials if needed
|
|
222
|
+
if (eventsBackend === 'sns' && !result.services.localstack) {
|
|
223
|
+
result = {
|
|
224
|
+
...result,
|
|
225
|
+
services: {
|
|
226
|
+
...result.services,
|
|
227
|
+
localstack: generateLocalStackCredentials(),
|
|
228
|
+
},
|
|
229
|
+
};
|
|
230
|
+
logger.log(' 🔄 Adding missing service credentials: localstack');
|
|
231
|
+
changed = true;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// Add rabbitmq credentials if needed (for rabbitmq events)
|
|
235
|
+
if (eventsBackend === 'rabbitmq' && !result.services.rabbitmq) {
|
|
236
|
+
result = {
|
|
237
|
+
...result,
|
|
238
|
+
services: {
|
|
239
|
+
...result.services,
|
|
240
|
+
rabbitmq: generateServiceCredentials('rabbitmq'),
|
|
241
|
+
},
|
|
242
|
+
};
|
|
243
|
+
logger.log(' 🔄 Adding missing service credentials: rabbitmq');
|
|
244
|
+
changed = true;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// Regenerate URLs with new events backend
|
|
248
|
+
result.urls = generateConnectionUrls(result.services, eventsBackend);
|
|
249
|
+
changed = true;
|
|
250
|
+
}
|
|
251
|
+
|
|
192
252
|
// Reconcile custom secrets for multi-app workspaces
|
|
193
253
|
const isMultiApp = Object.keys(workspace.apps).length > 1;
|
|
194
254
|
if (isMultiApp) {
|
|
@@ -237,10 +297,13 @@ async function generateFreshSecrets(
|
|
|
237
297
|
if (workspace.services.cache) serviceNames.push('redis');
|
|
238
298
|
if (workspace.services.storage) serviceNames.push('minio');
|
|
239
299
|
if (workspace.services.mail) serviceNames.push('mailpit');
|
|
300
|
+
if (workspace.services.events === 'sns') serviceNames.push('localstack');
|
|
301
|
+
if (workspace.services.events === 'rabbitmq') serviceNames.push('rabbitmq');
|
|
240
302
|
|
|
241
303
|
// Create base secrets with service credentials
|
|
242
304
|
const secrets = createStageSecrets(stage, serviceNames, {
|
|
243
305
|
projectName: workspace.name,
|
|
306
|
+
eventsBackend: workspace.services.events,
|
|
244
307
|
});
|
|
245
308
|
|
|
246
309
|
// Generate fullstack-aware custom secrets
|
|
@@ -274,10 +274,7 @@ services:
|
|
|
274
274
|
// Verify preload script was created with correct content
|
|
275
275
|
expect(existsSync(preloadPath)).toBe(true);
|
|
276
276
|
const preloadContent = readFileSync(preloadPath, 'utf-8');
|
|
277
|
-
expect(preloadContent).toContain(
|
|
278
|
-
"import { Credentials } from '@geekmidas/envkit/credentials'",
|
|
279
|
-
);
|
|
280
|
-
expect(preloadContent).toContain('Object.assign(Credentials');
|
|
277
|
+
expect(preloadContent).toContain('__gkm_credentials__');
|
|
281
278
|
expect(preloadContent).toContain('Object.assign(process.env');
|
|
282
279
|
expect(preloadContent).toContain(secretsJsonPath);
|
|
283
280
|
});
|
package/src/types.ts
CHANGED
|
@@ -77,13 +77,25 @@ export interface ServiceConfig {
|
|
|
77
77
|
version?: string;
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
+
/**
|
|
81
|
+
* Supported event backend types.
|
|
82
|
+
*
|
|
83
|
+
* - `pgboss`: Reuses PostgreSQL with a dedicated user/schema. Auto-enables db service.
|
|
84
|
+
* - `sns`: Adds LocalStack container with SNS+SQS services.
|
|
85
|
+
* - `rabbitmq`: Adds RabbitMQ container.
|
|
86
|
+
*
|
|
87
|
+
* All backends generate EVENT_PUBLISHER_CONNECTION_STRING and EVENT_SUBSCRIBER_CONNECTION_STRING.
|
|
88
|
+
*/
|
|
89
|
+
export type EventsBackend = 'pgboss' | 'sns' | 'rabbitmq';
|
|
90
|
+
|
|
80
91
|
/** Supported docker-compose service names */
|
|
81
92
|
export type ComposeServiceName =
|
|
82
93
|
| 'postgres'
|
|
83
94
|
| 'redis'
|
|
84
95
|
| 'rabbitmq'
|
|
85
96
|
| 'minio'
|
|
86
|
-
| 'mailpit'
|
|
97
|
+
| 'mailpit'
|
|
98
|
+
| 'localstack';
|
|
87
99
|
|
|
88
100
|
/** Services configuration - can be boolean (use defaults) or object with version */
|
|
89
101
|
export type ComposeServicesConfig = {
|
package/src/workspace/types.ts
CHANGED
|
@@ -159,6 +159,15 @@ export interface MailServiceConfig extends ServiceImageConfig {
|
|
|
159
159
|
* cache: true,
|
|
160
160
|
* mail: true, // Mailpit in dev
|
|
161
161
|
* }
|
|
162
|
+
*
|
|
163
|
+
* // With event backend
|
|
164
|
+
* services: {
|
|
165
|
+
* db: true,
|
|
166
|
+
* cache: true,
|
|
167
|
+
* events: 'pgboss', // reuses postgres (auto-enables db)
|
|
168
|
+
* // events: 'sns', // adds LocalStack container
|
|
169
|
+
* // events: 'rabbitmq', // adds RabbitMQ container
|
|
170
|
+
* }
|
|
162
171
|
* ```
|
|
163
172
|
*/
|
|
164
173
|
export interface ServicesConfig {
|
|
@@ -170,6 +179,8 @@ export interface ServicesConfig {
|
|
|
170
179
|
mail?: boolean | MailServiceConfig;
|
|
171
180
|
/** MinIO S3-compatible object storage (default: minio/minio:latest) */
|
|
172
181
|
storage?: boolean | ServiceImageConfig;
|
|
182
|
+
/** Event backend: pgboss (reuses postgres), sns (LocalStack), or rabbitmq */
|
|
183
|
+
events?: import('../types.js').EventsBackend;
|
|
173
184
|
}
|
|
174
185
|
|
|
175
186
|
/**
|
|
@@ -752,7 +763,7 @@ export type WorkspaceInput<TApps extends AppsRecord> = {
|
|
|
752
763
|
shared?: SharedConfig;
|
|
753
764
|
/** Deployment configuration */
|
|
754
765
|
deploy?: DeployConfig;
|
|
755
|
-
/** Development services (db, cache, mail) */
|
|
766
|
+
/** Development services (db, cache, mail, storage, events) */
|
|
756
767
|
services?: ServicesConfig;
|
|
757
768
|
/** Encrypted secrets configuration */
|
|
758
769
|
secrets?: SecretsConfig;
|
|
@@ -887,7 +898,7 @@ export interface WorkspaceConfig {
|
|
|
887
898
|
/** Default deployment configuration */
|
|
888
899
|
deploy?: DeployConfig;
|
|
889
900
|
|
|
890
|
-
/** Development services (db, cache, mail) */
|
|
901
|
+
/** Development services (db, cache, mail, storage, events) */
|
|
891
902
|
services?: ServicesConfig;
|
|
892
903
|
|
|
893
904
|
/** Encrypted secrets configuration */
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fullstack-secrets-BIFFv4UZ.mjs","names":["SERVICE_DEFAULTS: Record<\n\tComposeServiceName,\n\tOmit<ServiceCredentials, 'password'>\n>","service: ComposeServiceName","services: ComposeServiceName[]","result: StageSecrets['services']","creds: ServiceCredentials","services: StageSecrets['services']","urls: StageSecrets['urls']","stage: string","options?: { projectName?: string }","secrets: StageSecrets","newCreds: ServiceCredentials","appName: string","password: string","projectName: string","workspace: NormalizedWorkspace","customs: Record<string, string>","frontendPorts: number[]","upperName","secrets: StageSecrets","workspaceRoot: string"],"sources":["../src/secrets/generator.ts","../src/setup/fullstack-secrets.ts"],"sourcesContent":["import { randomBytes } from 'node:crypto';\nimport type { ComposeServiceName } from '../types';\nimport type { ServiceCredentials, StageSecrets } from './types';\n\n/**\n * Generate a secure random password using URL-safe base64 characters.\n * @param length Password length (default: 32)\n */\nexport function generateSecurePassword(length = 32): string {\n\treturn randomBytes(Math.ceil((length * 3) / 4))\n\t\t.toString('base64url')\n\t\t.slice(0, length);\n}\n\n/** Default service configurations (localhost for local dev via Docker port mapping) */\nconst SERVICE_DEFAULTS: Record<\n\tComposeServiceName,\n\tOmit<ServiceCredentials, 'password'>\n> = {\n\tpostgres: {\n\t\thost: 'localhost',\n\t\tport: 5432,\n\t\tusername: 'app',\n\t\tdatabase: 'app',\n\t},\n\tredis: {\n\t\thost: 'localhost',\n\t\tport: 6379,\n\t\tusername: 'default',\n\t},\n\trabbitmq: {\n\t\thost: 'localhost',\n\t\tport: 5672,\n\t\tusername: 'app',\n\t\tvhost: '/',\n\t},\n\tminio: {\n\t\thost: 'localhost',\n\t\tport: 9000,\n\t\tusername: 'app',\n\t\tbucket: 'app',\n\t},\n\tmailpit: {\n\t\thost: 'localhost',\n\t\tport: 1025,\n\t\tusername: 'app',\n\t},\n};\n\n/**\n * Generate credentials for a specific service.\n */\nexport function generateServiceCredentials(\n\tservice: ComposeServiceName,\n): ServiceCredentials {\n\tconst defaults = SERVICE_DEFAULTS[service];\n\treturn {\n\t\t...defaults,\n\t\tpassword: generateSecurePassword(),\n\t};\n}\n\n/**\n * Generate credentials for multiple services.\n */\nexport function generateServicesCredentials(\n\tservices: ComposeServiceName[],\n): StageSecrets['services'] {\n\tconst result: StageSecrets['services'] = {};\n\n\tfor (const service of services) {\n\t\tresult[service] = generateServiceCredentials(service);\n\t}\n\n\treturn result;\n}\n\n/**\n * Generate connection URL for PostgreSQL.\n */\nexport function generatePostgresUrl(creds: ServiceCredentials): string {\n\tconst { username, password, host, port, database } = creds;\n\treturn `postgresql://${username}:${encodeURIComponent(password)}@${host}:${port}/${database}`;\n}\n\n/**\n * Generate connection URL for Redis.\n */\nexport function generateRedisUrl(creds: ServiceCredentials): string {\n\tconst { password, host, port } = creds;\n\treturn `redis://:${encodeURIComponent(password)}@${host}:${port}`;\n}\n\n/**\n * Generate connection URL for RabbitMQ.\n */\nexport function generateRabbitmqUrl(creds: ServiceCredentials): string {\n\tconst { username, password, host, port, vhost } = creds;\n\tconst encodedVhost = encodeURIComponent(vhost ?? '/');\n\treturn `amqp://${username}:${encodeURIComponent(password)}@${host}:${port}/${encodedVhost}`;\n}\n\n/**\n * Generate endpoint URL for MinIO (S3-compatible).\n */\nexport function generateMinioEndpoint(creds: ServiceCredentials): string {\n\tconst { host, port } = creds;\n\treturn `http://${host}:${port}`;\n}\n\n/**\n * Generate connection URLs from service credentials.\n */\nexport function generateConnectionUrls(\n\tservices: StageSecrets['services'],\n): StageSecrets['urls'] {\n\tconst urls: StageSecrets['urls'] = {};\n\n\tif (services.postgres) {\n\t\turls.DATABASE_URL = generatePostgresUrl(services.postgres);\n\t}\n\n\tif (services.redis) {\n\t\turls.REDIS_URL = generateRedisUrl(services.redis);\n\t}\n\n\tif (services.rabbitmq) {\n\t\turls.RABBITMQ_URL = generateRabbitmqUrl(services.rabbitmq);\n\t}\n\n\tif (services.minio) {\n\t\turls.STORAGE_ENDPOINT = generateMinioEndpoint(services.minio);\n\t}\n\n\tif (services.mailpit) {\n\t\turls.SMTP_HOST = services.mailpit.host;\n\t\turls.SMTP_PORT = String(services.mailpit.port);\n\t}\n\n\treturn urls;\n}\n\n/**\n * Create a new StageSecrets object with generated credentials.\n * @param stage - The deployment stage (e.g., 'development', 'production')\n * @param services - List of services to generate credentials for\n * @param options - Optional configuration\n * @param options.projectName - Project name used to derive the database name (e.g., 'myapp' → 'myapp_dev')\n */\nexport function createStageSecrets(\n\tstage: string,\n\tservices: ComposeServiceName[],\n\toptions?: { projectName?: string },\n): StageSecrets {\n\tconst now = new Date().toISOString();\n\tconst serviceCredentials = generateServicesCredentials(services);\n\n\t// Override service defaults with project-derived names if provided\n\tif (options?.projectName) {\n\t\tif (serviceCredentials.postgres) {\n\t\t\tserviceCredentials.postgres.database = `${options.projectName.replace(/-/g, '_')}_dev`;\n\t\t}\n\t\tif (serviceCredentials.minio) {\n\t\t\tserviceCredentials.minio.bucket = options.projectName;\n\t\t\tserviceCredentials.minio.username = options.projectName;\n\t\t}\n\t}\n\n\tconst urls = generateConnectionUrls(serviceCredentials);\n\n\treturn {\n\t\tstage,\n\t\tcreatedAt: now,\n\t\tupdatedAt: now,\n\t\tservices: serviceCredentials,\n\t\turls,\n\t\tcustom: {},\n\t};\n}\n\n/**\n * Rotate password for a specific service.\n */\nexport function rotateServicePassword(\n\tsecrets: StageSecrets,\n\tservice: ComposeServiceName,\n): StageSecrets {\n\tconst currentCreds = secrets.services[service];\n\tif (!currentCreds) {\n\t\tthrow new Error(`Service \"${service}\" not configured in secrets`);\n\t}\n\n\tconst newCreds: ServiceCredentials = {\n\t\t...currentCreds,\n\t\tpassword: generateSecurePassword(),\n\t};\n\n\tconst newServices = {\n\t\t...secrets.services,\n\t\t[service]: newCreds,\n\t};\n\n\treturn {\n\t\t...secrets,\n\t\tupdatedAt: new Date().toISOString(),\n\t\tservices: newServices,\n\t\turls: generateConnectionUrls(newServices),\n\t};\n}\n","import { mkdir, writeFile } from 'node:fs/promises';\nimport { dirname, join } from 'node:path';\nimport { generateSecurePassword } from '../secrets/generator.js';\nimport type { StageSecrets } from '../secrets/types.js';\nimport type { NormalizedWorkspace } from '../workspace/types.js';\n\n/**\n * Generate a secure random password for database users.\n * Uses a combination of timestamp and random bytes for uniqueness.\n */\nexport function generateDbPassword(): string {\n\treturn `${Date.now().toString(36)}${Math.random().toString(36).slice(2)}${Math.random().toString(36).slice(2)}`;\n}\n\n/**\n * Generate database URL for an app.\n * All apps connect to the same database, but use different users/schemas.\n */\nexport function generateDbUrl(\n\tappName: string,\n\tpassword: string,\n\tprojectName: string,\n\thost = 'localhost',\n\tport = 5432,\n): string {\n\tconst userName = appName.replace(/-/g, '_');\n\tconst dbName = `${projectName.replace(/-/g, '_')}_dev`;\n\treturn `postgresql://${userName}:${password}@${host}:${port}/${dbName}`;\n}\n\n/**\n * Generate fullstack-aware custom secrets for a workspace.\n *\n * Generates:\n * - Common secrets: NODE_ENV, PORT, LOG_LEVEL, JWT_SECRET\n * - Per-app database passwords and URLs for backend apps with db service\n * - Better-auth secrets for apps using the better-auth framework\n */\nexport function generateFullstackCustomSecrets(\n\tworkspace: NormalizedWorkspace,\n): Record<string, string> {\n\tconst hasDb = !!workspace.services.db;\n\tconst customs: Record<string, string> = {\n\t\tNODE_ENV: 'development',\n\t\tPORT: '3000',\n\t\tLOG_LEVEL: 'debug',\n\t\tJWT_SECRET: `dev-${Date.now()}-${Math.random().toString(36).slice(2)}`,\n\t};\n\n\tif (!hasDb) {\n\t\treturn customs;\n\t}\n\n\t// Collect all frontend ports for trusted origins\n\tconst frontendPorts: number[] = [];\n\n\tfor (const [appName, appConfig] of Object.entries(workspace.apps)) {\n\t\tif (appConfig.type === 'frontend') {\n\t\t\tfrontendPorts.push(appConfig.port);\n\t\t\tconst upperName = appName.toUpperCase();\n\t\t\tcustoms[`${upperName}_URL`] = `http://localhost:${appConfig.port}`;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Backend apps with database: generate per-app DB passwords and URLs\n\t\tconst password = generateDbPassword();\n\t\tconst upperName = appName.toUpperCase();\n\n\t\tcustoms[`${upperName}_DATABASE_URL`] = generateDbUrl(\n\t\t\tappName,\n\t\t\tpassword,\n\t\t\tworkspace.name,\n\t\t);\n\t\tcustoms[`${upperName}_DB_PASSWORD`] = password;\n\n\t\t// Better-auth framework secrets\n\t\tif (appConfig.framework === 'better-auth') {\n\t\t\tcustoms.AUTH_PORT = String(appConfig.port);\n\t\t\tcustoms.AUTH_URL = `http://localhost:${appConfig.port}`;\n\t\t\tcustoms.BETTER_AUTH_SECRET = `better-auth-${Date.now()}-${generateSecurePassword(16)}`;\n\t\t\tcustoms.BETTER_AUTH_URL = `http://localhost:${appConfig.port}`;\n\t\t}\n\t}\n\n\t// Generate trusted origins for better-auth (all app ports)\n\tif (customs.BETTER_AUTH_SECRET) {\n\t\tconst allPorts = Object.values(workspace.apps).map((a) => a.port);\n\t\tcustoms.BETTER_AUTH_TRUSTED_ORIGINS = allPorts\n\t\t\t.map((p) => `http://localhost:${p}`)\n\t\t\t.join(',');\n\t}\n\n\treturn customs;\n}\n\n/**\n * Extract *_DB_PASSWORD keys from secrets and write docker/.env.\n *\n * The docker/.env file contains database passwords that the PostgreSQL\n * init script reads to create per-app database users.\n */\nexport async function writeDockerEnvFromSecrets(\n\tsecrets: StageSecrets,\n\tworkspaceRoot: string,\n): Promise<void> {\n\tconst dbPasswordEntries = Object.entries(secrets.custom).filter(([key]) =>\n\t\tkey.endsWith('_DB_PASSWORD'),\n\t);\n\n\tif (dbPasswordEntries.length === 0) {\n\t\treturn;\n\t}\n\n\tconst envContent = `# Auto-generated docker environment file\n# Contains database passwords for docker-compose postgres init\n# This file is gitignored - do not commit to version control\n${dbPasswordEntries.map(([key, value]) => `${key}=${value}`).join('\\n')}\n`;\n\n\tconst envPath = join(workspaceRoot, 'docker', '.env');\n\tawait mkdir(dirname(envPath), { recursive: true });\n\tawait writeFile(envPath, envContent);\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fullstack-secrets-D9rjTNyx.cjs","names":["SERVICE_DEFAULTS: Record<\n\tComposeServiceName,\n\tOmit<ServiceCredentials, 'password'>\n>","service: ComposeServiceName","services: ComposeServiceName[]","result: StageSecrets['services']","creds: ServiceCredentials","services: StageSecrets['services']","urls: StageSecrets['urls']","stage: string","options?: { projectName?: string }","secrets: StageSecrets","newCreds: ServiceCredentials","appName: string","password: string","projectName: string","workspace: NormalizedWorkspace","customs: Record<string, string>","frontendPorts: number[]","upperName","secrets: StageSecrets","workspaceRoot: string"],"sources":["../src/secrets/generator.ts","../src/setup/fullstack-secrets.ts"],"sourcesContent":["import { randomBytes } from 'node:crypto';\nimport type { ComposeServiceName } from '../types';\nimport type { ServiceCredentials, StageSecrets } from './types';\n\n/**\n * Generate a secure random password using URL-safe base64 characters.\n * @param length Password length (default: 32)\n */\nexport function generateSecurePassword(length = 32): string {\n\treturn randomBytes(Math.ceil((length * 3) / 4))\n\t\t.toString('base64url')\n\t\t.slice(0, length);\n}\n\n/** Default service configurations (localhost for local dev via Docker port mapping) */\nconst SERVICE_DEFAULTS: Record<\n\tComposeServiceName,\n\tOmit<ServiceCredentials, 'password'>\n> = {\n\tpostgres: {\n\t\thost: 'localhost',\n\t\tport: 5432,\n\t\tusername: 'app',\n\t\tdatabase: 'app',\n\t},\n\tredis: {\n\t\thost: 'localhost',\n\t\tport: 6379,\n\t\tusername: 'default',\n\t},\n\trabbitmq: {\n\t\thost: 'localhost',\n\t\tport: 5672,\n\t\tusername: 'app',\n\t\tvhost: '/',\n\t},\n\tminio: {\n\t\thost: 'localhost',\n\t\tport: 9000,\n\t\tusername: 'app',\n\t\tbucket: 'app',\n\t},\n\tmailpit: {\n\t\thost: 'localhost',\n\t\tport: 1025,\n\t\tusername: 'app',\n\t},\n};\n\n/**\n * Generate credentials for a specific service.\n */\nexport function generateServiceCredentials(\n\tservice: ComposeServiceName,\n): ServiceCredentials {\n\tconst defaults = SERVICE_DEFAULTS[service];\n\treturn {\n\t\t...defaults,\n\t\tpassword: generateSecurePassword(),\n\t};\n}\n\n/**\n * Generate credentials for multiple services.\n */\nexport function generateServicesCredentials(\n\tservices: ComposeServiceName[],\n): StageSecrets['services'] {\n\tconst result: StageSecrets['services'] = {};\n\n\tfor (const service of services) {\n\t\tresult[service] = generateServiceCredentials(service);\n\t}\n\n\treturn result;\n}\n\n/**\n * Generate connection URL for PostgreSQL.\n */\nexport function generatePostgresUrl(creds: ServiceCredentials): string {\n\tconst { username, password, host, port, database } = creds;\n\treturn `postgresql://${username}:${encodeURIComponent(password)}@${host}:${port}/${database}`;\n}\n\n/**\n * Generate connection URL for Redis.\n */\nexport function generateRedisUrl(creds: ServiceCredentials): string {\n\tconst { password, host, port } = creds;\n\treturn `redis://:${encodeURIComponent(password)}@${host}:${port}`;\n}\n\n/**\n * Generate connection URL for RabbitMQ.\n */\nexport function generateRabbitmqUrl(creds: ServiceCredentials): string {\n\tconst { username, password, host, port, vhost } = creds;\n\tconst encodedVhost = encodeURIComponent(vhost ?? '/');\n\treturn `amqp://${username}:${encodeURIComponent(password)}@${host}:${port}/${encodedVhost}`;\n}\n\n/**\n * Generate endpoint URL for MinIO (S3-compatible).\n */\nexport function generateMinioEndpoint(creds: ServiceCredentials): string {\n\tconst { host, port } = creds;\n\treturn `http://${host}:${port}`;\n}\n\n/**\n * Generate connection URLs from service credentials.\n */\nexport function generateConnectionUrls(\n\tservices: StageSecrets['services'],\n): StageSecrets['urls'] {\n\tconst urls: StageSecrets['urls'] = {};\n\n\tif (services.postgres) {\n\t\turls.DATABASE_URL = generatePostgresUrl(services.postgres);\n\t}\n\n\tif (services.redis) {\n\t\turls.REDIS_URL = generateRedisUrl(services.redis);\n\t}\n\n\tif (services.rabbitmq) {\n\t\turls.RABBITMQ_URL = generateRabbitmqUrl(services.rabbitmq);\n\t}\n\n\tif (services.minio) {\n\t\turls.STORAGE_ENDPOINT = generateMinioEndpoint(services.minio);\n\t}\n\n\tif (services.mailpit) {\n\t\turls.SMTP_HOST = services.mailpit.host;\n\t\turls.SMTP_PORT = String(services.mailpit.port);\n\t}\n\n\treturn urls;\n}\n\n/**\n * Create a new StageSecrets object with generated credentials.\n * @param stage - The deployment stage (e.g., 'development', 'production')\n * @param services - List of services to generate credentials for\n * @param options - Optional configuration\n * @param options.projectName - Project name used to derive the database name (e.g., 'myapp' → 'myapp_dev')\n */\nexport function createStageSecrets(\n\tstage: string,\n\tservices: ComposeServiceName[],\n\toptions?: { projectName?: string },\n): StageSecrets {\n\tconst now = new Date().toISOString();\n\tconst serviceCredentials = generateServicesCredentials(services);\n\n\t// Override service defaults with project-derived names if provided\n\tif (options?.projectName) {\n\t\tif (serviceCredentials.postgres) {\n\t\t\tserviceCredentials.postgres.database = `${options.projectName.replace(/-/g, '_')}_dev`;\n\t\t}\n\t\tif (serviceCredentials.minio) {\n\t\t\tserviceCredentials.minio.bucket = options.projectName;\n\t\t\tserviceCredentials.minio.username = options.projectName;\n\t\t}\n\t}\n\n\tconst urls = generateConnectionUrls(serviceCredentials);\n\n\treturn {\n\t\tstage,\n\t\tcreatedAt: now,\n\t\tupdatedAt: now,\n\t\tservices: serviceCredentials,\n\t\turls,\n\t\tcustom: {},\n\t};\n}\n\n/**\n * Rotate password for a specific service.\n */\nexport function rotateServicePassword(\n\tsecrets: StageSecrets,\n\tservice: ComposeServiceName,\n): StageSecrets {\n\tconst currentCreds = secrets.services[service];\n\tif (!currentCreds) {\n\t\tthrow new Error(`Service \"${service}\" not configured in secrets`);\n\t}\n\n\tconst newCreds: ServiceCredentials = {\n\t\t...currentCreds,\n\t\tpassword: generateSecurePassword(),\n\t};\n\n\tconst newServices = {\n\t\t...secrets.services,\n\t\t[service]: newCreds,\n\t};\n\n\treturn {\n\t\t...secrets,\n\t\tupdatedAt: new Date().toISOString(),\n\t\tservices: newServices,\n\t\turls: generateConnectionUrls(newServices),\n\t};\n}\n","import { mkdir, writeFile } from 'node:fs/promises';\nimport { dirname, join } from 'node:path';\nimport { generateSecurePassword } from '../secrets/generator.js';\nimport type { StageSecrets } from '../secrets/types.js';\nimport type { NormalizedWorkspace } from '../workspace/types.js';\n\n/**\n * Generate a secure random password for database users.\n * Uses a combination of timestamp and random bytes for uniqueness.\n */\nexport function generateDbPassword(): string {\n\treturn `${Date.now().toString(36)}${Math.random().toString(36).slice(2)}${Math.random().toString(36).slice(2)}`;\n}\n\n/**\n * Generate database URL for an app.\n * All apps connect to the same database, but use different users/schemas.\n */\nexport function generateDbUrl(\n\tappName: string,\n\tpassword: string,\n\tprojectName: string,\n\thost = 'localhost',\n\tport = 5432,\n): string {\n\tconst userName = appName.replace(/-/g, '_');\n\tconst dbName = `${projectName.replace(/-/g, '_')}_dev`;\n\treturn `postgresql://${userName}:${password}@${host}:${port}/${dbName}`;\n}\n\n/**\n * Generate fullstack-aware custom secrets for a workspace.\n *\n * Generates:\n * - Common secrets: NODE_ENV, PORT, LOG_LEVEL, JWT_SECRET\n * - Per-app database passwords and URLs for backend apps with db service\n * - Better-auth secrets for apps using the better-auth framework\n */\nexport function generateFullstackCustomSecrets(\n\tworkspace: NormalizedWorkspace,\n): Record<string, string> {\n\tconst hasDb = !!workspace.services.db;\n\tconst customs: Record<string, string> = {\n\t\tNODE_ENV: 'development',\n\t\tPORT: '3000',\n\t\tLOG_LEVEL: 'debug',\n\t\tJWT_SECRET: `dev-${Date.now()}-${Math.random().toString(36).slice(2)}`,\n\t};\n\n\tif (!hasDb) {\n\t\treturn customs;\n\t}\n\n\t// Collect all frontend ports for trusted origins\n\tconst frontendPorts: number[] = [];\n\n\tfor (const [appName, appConfig] of Object.entries(workspace.apps)) {\n\t\tif (appConfig.type === 'frontend') {\n\t\t\tfrontendPorts.push(appConfig.port);\n\t\t\tconst upperName = appName.toUpperCase();\n\t\t\tcustoms[`${upperName}_URL`] = `http://localhost:${appConfig.port}`;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Backend apps with database: generate per-app DB passwords and URLs\n\t\tconst password = generateDbPassword();\n\t\tconst upperName = appName.toUpperCase();\n\n\t\tcustoms[`${upperName}_DATABASE_URL`] = generateDbUrl(\n\t\t\tappName,\n\t\t\tpassword,\n\t\t\tworkspace.name,\n\t\t);\n\t\tcustoms[`${upperName}_DB_PASSWORD`] = password;\n\n\t\t// Better-auth framework secrets\n\t\tif (appConfig.framework === 'better-auth') {\n\t\t\tcustoms.AUTH_PORT = String(appConfig.port);\n\t\t\tcustoms.AUTH_URL = `http://localhost:${appConfig.port}`;\n\t\t\tcustoms.BETTER_AUTH_SECRET = `better-auth-${Date.now()}-${generateSecurePassword(16)}`;\n\t\t\tcustoms.BETTER_AUTH_URL = `http://localhost:${appConfig.port}`;\n\t\t}\n\t}\n\n\t// Generate trusted origins for better-auth (all app ports)\n\tif (customs.BETTER_AUTH_SECRET) {\n\t\tconst allPorts = Object.values(workspace.apps).map((a) => a.port);\n\t\tcustoms.BETTER_AUTH_TRUSTED_ORIGINS = allPorts\n\t\t\t.map((p) => `http://localhost:${p}`)\n\t\t\t.join(',');\n\t}\n\n\treturn customs;\n}\n\n/**\n * Extract *_DB_PASSWORD keys from secrets and write docker/.env.\n *\n * The docker/.env file contains database passwords that the PostgreSQL\n * init script reads to create per-app database users.\n */\nexport async function writeDockerEnvFromSecrets(\n\tsecrets: StageSecrets,\n\tworkspaceRoot: string,\n): Promise<void> {\n\tconst dbPasswordEntries = Object.entries(secrets.custom).filter(([key]) =>\n\t\tkey.endsWith('_DB_PASSWORD'),\n\t);\n\n\tif (dbPasswordEntries.length === 0) {\n\t\treturn;\n\t}\n\n\tconst envContent = `# Auto-generated docker environment file\n# Contains database passwords for docker-compose postgres init\n# This file is gitignored - do not commit to version control\n${dbPasswordEntries.map(([key, value]) => `${key}=${value}`).join('\\n')}\n`;\n\n\tconst envPath = join(workspaceRoot, 'docker', '.env');\n\tawait mkdir(dirname(envPath), { recursive: true });\n\tawait writeFile(envPath, envContent);\n}\n"],"mappings":";;;;;;;;;;AAQA,SAAgB,uBAAuB,SAAS,IAAY;AAC3D,QAAO,6BAAY,KAAK,KAAM,SAAS,IAAK,EAAE,CAAC,CAC7C,SAAS,YAAY,CACrB,MAAM,GAAG,OAAO;AAClB;;AAGD,MAAMA,mBAGF;CACH,UAAU;EACT,MAAM;EACN,MAAM;EACN,UAAU;EACV,UAAU;CACV;CACD,OAAO;EACN,MAAM;EACN,MAAM;EACN,UAAU;CACV;CACD,UAAU;EACT,MAAM;EACN,MAAM;EACN,UAAU;EACV,OAAO;CACP;CACD,OAAO;EACN,MAAM;EACN,MAAM;EACN,UAAU;EACV,QAAQ;CACR;CACD,SAAS;EACR,MAAM;EACN,MAAM;EACN,UAAU;CACV;AACD;;;;AAKD,SAAgB,2BACfC,SACqB;CACrB,MAAM,WAAW,iBAAiB;AAClC,QAAO;EACN,GAAG;EACH,UAAU,wBAAwB;CAClC;AACD;;;;AAKD,SAAgB,4BACfC,UAC2B;CAC3B,MAAMC,SAAmC,CAAE;AAE3C,MAAK,MAAM,WAAW,SACrB,QAAO,WAAW,2BAA2B,QAAQ;AAGtD,QAAO;AACP;;;;AAKD,SAAgB,oBAAoBC,OAAmC;CACtE,MAAM,EAAE,UAAU,UAAU,MAAM,MAAM,UAAU,GAAG;AACrD,SAAQ,eAAe,SAAS,GAAG,mBAAmB,SAAS,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS;AAC5F;;;;AAKD,SAAgB,iBAAiBA,OAAmC;CACnE,MAAM,EAAE,UAAU,MAAM,MAAM,GAAG;AACjC,SAAQ,WAAW,mBAAmB,SAAS,CAAC,GAAG,KAAK,GAAG,KAAK;AAChE;;;;AAKD,SAAgB,oBAAoBA,OAAmC;CACtE,MAAM,EAAE,UAAU,UAAU,MAAM,MAAM,OAAO,GAAG;CAClD,MAAM,eAAe,mBAAmB,SAAS,IAAI;AACrD,SAAQ,SAAS,SAAS,GAAG,mBAAmB,SAAS,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,aAAa;AAC1F;;;;AAKD,SAAgB,sBAAsBA,OAAmC;CACxE,MAAM,EAAE,MAAM,MAAM,GAAG;AACvB,SAAQ,SAAS,KAAK,GAAG,KAAK;AAC9B;;;;AAKD,SAAgB,uBACfC,UACuB;CACvB,MAAMC,OAA6B,CAAE;AAErC,KAAI,SAAS,SACZ,MAAK,eAAe,oBAAoB,SAAS,SAAS;AAG3D,KAAI,SAAS,MACZ,MAAK,YAAY,iBAAiB,SAAS,MAAM;AAGlD,KAAI,SAAS,SACZ,MAAK,eAAe,oBAAoB,SAAS,SAAS;AAG3D,KAAI,SAAS,MACZ,MAAK,mBAAmB,sBAAsB,SAAS,MAAM;AAG9D,KAAI,SAAS,SAAS;AACrB,OAAK,YAAY,SAAS,QAAQ;AAClC,OAAK,YAAY,OAAO,SAAS,QAAQ,KAAK;CAC9C;AAED,QAAO;AACP;;;;;;;;AASD,SAAgB,mBACfC,OACAL,UACAM,SACe;CACf,MAAM,MAAM,qBAAI,QAAO,aAAa;CACpC,MAAM,qBAAqB,4BAA4B,SAAS;AAGhE,KAAI,SAAS,aAAa;AACzB,MAAI,mBAAmB,SACtB,oBAAmB,SAAS,YAAY,EAAE,QAAQ,YAAY,QAAQ,MAAM,IAAI,CAAC;AAElF,MAAI,mBAAmB,OAAO;AAC7B,sBAAmB,MAAM,SAAS,QAAQ;AAC1C,sBAAmB,MAAM,WAAW,QAAQ;EAC5C;CACD;CAED,MAAM,OAAO,uBAAuB,mBAAmB;AAEvD,QAAO;EACN;EACA,WAAW;EACX,WAAW;EACX,UAAU;EACV;EACA,QAAQ,CAAE;CACV;AACD;;;;AAKD,SAAgB,sBACfC,SACAR,SACe;CACf,MAAM,eAAe,QAAQ,SAAS;AACtC,MAAK,aACJ,OAAM,IAAI,OAAO,WAAW,QAAQ;CAGrC,MAAMS,WAA+B;EACpC,GAAG;EACH,UAAU,wBAAwB;CAClC;CAED,MAAM,cAAc;EACnB,GAAG,QAAQ;GACV,UAAU;CACX;AAED,QAAO;EACN,GAAG;EACH,WAAW,qBAAI,QAAO,aAAa;EACnC,UAAU;EACV,MAAM,uBAAuB,YAAY;CACzC;AACD;;;;;;;;ACtMD,SAAgB,qBAA6B;AAC5C,SAAQ,EAAE,KAAK,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,CAAC;AAC9G;;;;;AAMD,SAAgB,cACfC,SACAC,UACAC,aACA,OAAO,aACP,OAAO,MACE;CACT,MAAM,WAAW,QAAQ,QAAQ,MAAM,IAAI;CAC3C,MAAM,UAAU,EAAE,YAAY,QAAQ,MAAM,IAAI,CAAC;AACjD,SAAQ,eAAe,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO;AACtE;;;;;;;;;AAUD,SAAgB,+BACfC,WACyB;CACzB,MAAM,UAAU,UAAU,SAAS;CACnC,MAAMC,UAAkC;EACvC,UAAU;EACV,MAAM;EACN,WAAW;EACX,aAAa,MAAM,KAAK,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,CAAC;CACrE;AAED,MAAK,MACJ,QAAO;CAIR,MAAMC,gBAA0B,CAAE;AAElC,MAAK,MAAM,CAAC,SAAS,UAAU,IAAI,OAAO,QAAQ,UAAU,KAAK,EAAE;AAClE,MAAI,UAAU,SAAS,YAAY;AAClC,iBAAc,KAAK,UAAU,KAAK;GAClC,MAAMC,cAAY,QAAQ,aAAa;AACvC,YAAS,EAAEA,YAAU,UAAU,mBAAmB,UAAU,KAAK;AACjE;EACA;EAGD,MAAM,WAAW,oBAAoB;EACrC,MAAM,YAAY,QAAQ,aAAa;AAEvC,WAAS,EAAE,UAAU,kBAAkB,cACtC,SACA,UACA,UAAU,KACV;AACD,WAAS,EAAE,UAAU,iBAAiB;AAGtC,MAAI,UAAU,cAAc,eAAe;AAC1C,WAAQ,YAAY,OAAO,UAAU,KAAK;AAC1C,WAAQ,YAAY,mBAAmB,UAAU,KAAK;AACtD,WAAQ,sBAAsB,cAAc,KAAK,KAAK,CAAC,GAAG,uBAAuB,GAAG,CAAC;AACrF,WAAQ,mBAAmB,mBAAmB,UAAU,KAAK;EAC7D;CACD;AAGD,KAAI,QAAQ,oBAAoB;EAC/B,MAAM,WAAW,OAAO,OAAO,UAAU,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK;AACjE,UAAQ,8BAA8B,SACpC,IAAI,CAAC,OAAO,mBAAmB,EAAE,EAAE,CACnC,KAAK,IAAI;CACX;AAED,QAAO;AACP;;;;;;;AAQD,eAAsB,0BACrBC,SACAC,eACgB;CAChB,MAAM,oBAAoB,OAAO,QAAQ,QAAQ,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,KACrE,IAAI,SAAS,eAAe,CAC5B;AAED,KAAI,kBAAkB,WAAW,EAChC;CAGD,MAAM,cAAc;;;EAGnB,kBAAkB,IAAI,CAAC,CAAC,KAAK,MAAM,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,KAAK,CAAC;;CAGvE,MAAM,UAAU,oBAAK,eAAe,UAAU,OAAO;AACrD,OAAM,4BAAM,uBAAQ,QAAQ,EAAE,EAAE,WAAW,KAAM,EAAC;AAClD,OAAM,gCAAU,SAAS,WAAW;AACpC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-UCsZ_Vkw.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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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-gXAGDSGu.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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"}
|
package/dist/sync-Bp8xRcuQ.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types-DiV9Mbvc.d.mts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":";;AAYY,UALK,iBAAA,CAKwB;EAaxB,KAAA,EAAA,MAAA,GAAA,MAAc,EAAA;EAKd,SAAA,EAAA,CAAA,QAAA,EAAoB,MAAA,EAAA,GAAQ,MAAA;AAI7C;AAIiB,KA1BL,MAAA,GA0BK,MAAgB,GAAA,MAAA,EAAA,GA1BQ,iBA0BR;AA0CrB,UAvDK,cAAA,CAuDa;EAQlB,OAAA,CAAA,EAAA,OAAA;EAAqB,SAAA,CAAA,EAAA,MAAA;;AACM,UA3DtB,mBAAA,SAA4B,cA2DN,CAAA,CAAa;AAGnC,UA1DA,eAAA,SAAwB,cA0DZ,CAAA;AAwBhB,UA9EI,gBAAA,CA8EJ;EAAqB;EAAqB,OAAA,CAAA,EAAA,OAAA;EAItC;EAAa,MAAA,CAAA,EAAA,OAAA;EAAA;EAIA,MAJQ,CAAA,EAAA,OAAA;EAAc;EAOxC,WAAO,CAAA,EAAA,MAAA;EAEF;EAiBA,gBAAY,CAAA,EAAA,OAAA;EASZ;EAWA,QAAA,CAAA,EAAA,MAAW,EAAA;EA6BX;EAaA,WAAA,CAAA,EAAA,SAAe,GAAA,SAAA;EAAA;EAAA,OAGd,CAAA,EAAA,OAAA;EAAmB;;;;;AAUK;AAG1C;EAA0B,iBAAA,CAAA,EAAA,OAAA;;;AAGjB,UAjKQ,aAAA,CAiKR;EAAM;;;;EAsBgC,KAUlB,CAAA,EAAA,MAAA;EAAY;;;AAiDnB;;;;KApOV,kBAAA;;KAQA,qBAAA,WACL,gCAAgC;UAGtB,YAAA;;;;;;;;;;;;;;;;;;;;;;;;eAwBJ,wBAAwB;;;UAIpB,YAAA,SAAqB;;;;eAIxB;;KAGF,OAAA;UAEK,eAAA;;;;;;;;;;;;;;;;UAiBA,YAAA;;;;;;;;UASA,aAAA;;;;;;;;;;UAWA,WAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA6BA,qBAAA;;;;;;;;;;;;UAaA,eAAA;;;qBAGC;qBACA;;;4BAGO;wBACJ;;;qBAGD;;sBAEC;;UAGJ,SAAA;UACR;cACI;UACJ;gBACM;;;cAGF;;;;;;;;;;UAUJ;;;;;;;;iCAQuB;;;;;;;;;;8BAUH;;;;;;;;;;;;;;;;;;;sBAmBR;;YAEV;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA4BD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types-JvWj5Ckc.d.cts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":";;AAYY,UALK,iBAAA,CAKwB;EAaxB,KAAA,EAAA,MAAA,GAAA,MAAc,EAAA;EAKd,SAAA,EAAA,CAAA,QAAA,EAAoB,MAAA,EAAA,GAAQ,MAAA;AAI7C;AAIiB,KA1BL,MAAA,GA0BK,MAAgB,GAAA,MAAA,EAAA,GA1BQ,iBA0BR;AA0CrB,UAvDK,cAAA,CAuDa;EAQlB,OAAA,CAAA,EAAA,OAAA;EAAqB,SAAA,CAAA,EAAA,MAAA;;AACM,UA3DtB,mBAAA,SAA4B,cA2DN,CAAA,CAAa;AAGnC,UA1DA,eAAA,SAAwB,cA0DZ,CAAA;AAwBhB,UA9EI,gBAAA,CA8EJ;EAAqB;EAAqB,OAAA,CAAA,EAAA,OAAA;EAItC;EAAa,MAAA,CAAA,EAAA,OAAA;EAAA;EAIA,MAJQ,CAAA,EAAA,OAAA;EAAc;EAOxC,WAAO,CAAA,EAAA,MAAA;EAEF;EAiBA,gBAAY,CAAA,EAAA,OAAA;EASZ;EAWA,QAAA,CAAA,EAAA,MAAW,EAAA;EA6BX;EAaA,WAAA,CAAA,EAAA,SAAe,GAAA,SAAA;EAAA;EAAA,OAGd,CAAA,EAAA,OAAA;EAAmB;;;;;AAUK;AAG1C;EAA0B,iBAAA,CAAA,EAAA,OAAA;;;AAGjB,UAjKQ,aAAA,CAiKR;EAAM;;;;EAsBgC,KAUlB,CAAA,EAAA,MAAA;EAAY;;;AAiDnB;;;;KApOV,kBAAA;;KAQA,qBAAA,WACL,gCAAgC;UAGtB,YAAA;;;;;;;;;;;;;;;;;;;;;;;;eAwBJ,wBAAwB;;;UAIpB,YAAA,SAAqB;;;;eAIxB;;KAGF,OAAA;UAEK,eAAA;;;;;;;;;;;;;;;;UAiBA,YAAA;;;;;;;;UASA,aAAA;;;;;;;;;;UAWA,WAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA6BA,qBAAA;;;;;;;;;;;;UAaA,eAAA;;;qBAGC;qBACA;;;4BAGO;wBACJ;;;qBAGD;;sBAEC;;UAGJ,SAAA;UACR;cACI;UACJ;gBACM;;;cAGF;;;;;;;;;;UAUJ;;;;;;;;iCAQuB;;;;;;;;;;8BAUH;;;;;;;;;;;;;;;;;;;sBAmBR;;YAEV;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA4BD"}
|