@geekmidas/cli 0.54.0 → 1.0.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.
- package/CHANGELOG.md +17 -0
- package/README.md +26 -5
- package/dist/CachedStateProvider-D73dCqfH.cjs +60 -0
- package/dist/CachedStateProvider-D73dCqfH.cjs.map +1 -0
- package/dist/CachedStateProvider-DVyKfaMm.mjs +54 -0
- package/dist/CachedStateProvider-DVyKfaMm.mjs.map +1 -0
- package/dist/CachedStateProvider-D_uISMmJ.cjs +3 -0
- package/dist/CachedStateProvider-OiFUGr7p.mjs +3 -0
- package/dist/HostingerProvider-DUV9-Tzg.cjs +210 -0
- package/dist/HostingerProvider-DUV9-Tzg.cjs.map +1 -0
- package/dist/HostingerProvider-DqUq6e9i.mjs +210 -0
- package/dist/HostingerProvider-DqUq6e9i.mjs.map +1 -0
- package/dist/LocalStateProvider-CdspeSVL.cjs +43 -0
- package/dist/LocalStateProvider-CdspeSVL.cjs.map +1 -0
- package/dist/LocalStateProvider-DxoSaWUV.mjs +42 -0
- package/dist/LocalStateProvider-DxoSaWUV.mjs.map +1 -0
- package/dist/Route53Provider-CpRIqu69.cjs +157 -0
- package/dist/Route53Provider-CpRIqu69.cjs.map +1 -0
- package/dist/Route53Provider-KUAX3vz9.mjs +156 -0
- package/dist/Route53Provider-KUAX3vz9.mjs.map +1 -0
- package/dist/SSMStateProvider-BxAPU99a.cjs +53 -0
- package/dist/SSMStateProvider-BxAPU99a.cjs.map +1 -0
- package/dist/SSMStateProvider-C4wp4AZe.mjs +52 -0
- package/dist/SSMStateProvider-C4wp4AZe.mjs.map +1 -0
- package/dist/{bundler-DGry2vaR.mjs → bundler-BqTN5Dj5.mjs} +3 -3
- package/dist/{bundler-DGry2vaR.mjs.map → bundler-BqTN5Dj5.mjs.map} +1 -1
- package/dist/{bundler-BB-kETMd.cjs → bundler-tHLLwYuU.cjs} +3 -3
- package/dist/{bundler-BB-kETMd.cjs.map → bundler-tHLLwYuU.cjs.map} +1 -1
- package/dist/{config-HYiM3iQJ.cjs → config-BGeJsW1r.cjs} +2 -2
- package/dist/{config-HYiM3iQJ.cjs.map → config-BGeJsW1r.cjs.map} +1 -1
- package/dist/{config-C3LSBNSl.mjs → config-C6awcFBx.mjs} +2 -2
- package/dist/{config-C3LSBNSl.mjs.map → config-C6awcFBx.mjs.map} +1 -1
- package/dist/config.cjs +2 -2
- package/dist/config.d.cts +1 -1
- package/dist/config.d.mts +2 -2
- package/dist/config.mjs +2 -2
- package/dist/credentials-C8DWtnMY.cjs +174 -0
- package/dist/credentials-C8DWtnMY.cjs.map +1 -0
- package/dist/credentials-DT1dSxIx.mjs +126 -0
- package/dist/credentials-DT1dSxIx.mjs.map +1 -0
- package/dist/deploy/sniffer-envkit-patch.cjs.map +1 -1
- package/dist/deploy/sniffer-envkit-patch.mjs.map +1 -1
- package/dist/deploy/sniffer-loader.cjs +1 -1
- package/dist/{dokploy-api-94KzmTVf.mjs → dokploy-api-7k3t7_zd.mjs} +1 -1
- package/dist/{dokploy-api-94KzmTVf.mjs.map → dokploy-api-7k3t7_zd.mjs.map} +1 -1
- package/dist/dokploy-api-CHa8G51l.mjs +3 -0
- package/dist/{dokploy-api-YD8WCQfW.cjs → dokploy-api-CQvhV6Hd.cjs} +1 -1
- package/dist/{dokploy-api-YD8WCQfW.cjs.map → dokploy-api-CQvhV6Hd.cjs.map} +1 -1
- package/dist/dokploy-api-CWc02yyg.cjs +3 -0
- package/dist/{encryption-DaCB_NmS.cjs → encryption-BE0UOb8j.cjs} +1 -1
- package/dist/{encryption-DaCB_NmS.cjs.map → encryption-BE0UOb8j.cjs.map} +1 -1
- package/dist/{encryption-Biq0EZ4m.cjs → encryption-Cv3zips0.cjs} +1 -1
- package/dist/{encryption-BC4MAODn.mjs → encryption-JtMsiGNp.mjs} +1 -1
- package/dist/{encryption-BC4MAODn.mjs.map → encryption-JtMsiGNp.mjs.map} +1 -1
- package/dist/encryption-UUmaWAmz.mjs +3 -0
- package/dist/{index-pOA56MWT.d.cts → index-B5rGIc4g.d.cts} +553 -196
- package/dist/index-B5rGIc4g.d.cts.map +1 -0
- package/dist/{index-A70abJ1m.d.mts → index-KFEbMIRa.d.mts} +554 -197
- package/dist/index-KFEbMIRa.d.mts.map +1 -0
- package/dist/index.cjs +2223 -606
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +2200 -583
- package/dist/index.mjs.map +1 -1
- package/dist/{openapi-C3C-BzIZ.mjs → openapi-BMFmLnX6.mjs} +51 -7
- package/dist/openapi-BMFmLnX6.mjs.map +1 -0
- package/dist/{openapi-D7WwlpPF.cjs → openapi-D1KXv2Ml.cjs} +51 -7
- package/dist/openapi-D1KXv2Ml.cjs.map +1 -0
- package/dist/{openapi-react-query-C_MxpBgF.cjs → openapi-react-query-BeXvk-wa.cjs} +1 -1
- package/dist/{openapi-react-query-C_MxpBgF.cjs.map → openapi-react-query-BeXvk-wa.cjs.map} +1 -1
- package/dist/{openapi-react-query-ZoP9DPbY.mjs → openapi-react-query-DGEkD39r.mjs} +1 -1
- package/dist/{openapi-react-query-ZoP9DPbY.mjs.map → openapi-react-query-DGEkD39r.mjs.map} +1 -1
- package/dist/openapi-react-query.cjs +1 -1
- package/dist/openapi-react-query.mjs +1 -1
- package/dist/openapi.cjs +3 -3
- package/dist/openapi.d.cts +1 -1
- package/dist/openapi.d.mts +2 -2
- package/dist/openapi.mjs +3 -3
- package/dist/{storage-Dhst7BhI.mjs → storage-BMW6yLu3.mjs} +1 -1
- package/dist/{storage-Dhst7BhI.mjs.map → storage-BMW6yLu3.mjs.map} +1 -1
- package/dist/{storage-fOR8dMu5.cjs → storage-C7pmBq1u.cjs} +1 -1
- package/dist/{storage-BPRgh3DU.cjs → storage-CoCNe0Pt.cjs} +1 -1
- package/dist/{storage-BPRgh3DU.cjs.map → storage-CoCNe0Pt.cjs.map} +1 -1
- package/dist/{storage-DNj_I11J.mjs → storage-D8XzjVaO.mjs} +1 -1
- package/dist/{types-BtGL-8QS.d.mts → types-BldpmqQX.d.mts} +1 -1
- package/dist/{types-BtGL-8QS.d.mts.map → types-BldpmqQX.d.mts.map} +1 -1
- package/dist/workspace/index.cjs +1 -1
- package/dist/workspace/index.d.cts +1 -1
- package/dist/workspace/index.d.mts +2 -2
- package/dist/workspace/index.mjs +1 -1
- package/dist/{workspace-CaVW6j2q.cjs → workspace-BFRUOOrh.cjs} +309 -25
- package/dist/workspace-BFRUOOrh.cjs.map +1 -0
- package/dist/{workspace-DLFRaDc-.mjs → workspace-DAxG3_H2.mjs} +309 -25
- package/dist/workspace-DAxG3_H2.mjs.map +1 -0
- package/package.json +12 -8
- package/src/build/__tests__/handler-templates.spec.ts +115 -47
- package/src/deploy/CachedStateProvider.ts +86 -0
- package/src/deploy/LocalStateProvider.ts +57 -0
- package/src/deploy/SSMStateProvider.ts +93 -0
- package/src/deploy/StateProvider.ts +171 -0
- package/src/deploy/__tests__/CachedStateProvider.spec.ts +228 -0
- package/src/deploy/__tests__/HostingerProvider.spec.ts +347 -0
- package/src/deploy/__tests__/LocalStateProvider.spec.ts +126 -0
- package/src/deploy/__tests__/Route53Provider.spec.ts +402 -0
- package/src/deploy/__tests__/SSMStateProvider.spec.ts +177 -0
- package/src/deploy/__tests__/__fixtures__/env-parsers/throwing-env-parser.ts +1 -3
- package/src/deploy/__tests__/__fixtures__/route-apps/services.ts +28 -19
- package/src/deploy/__tests__/createDnsProvider.spec.ts +172 -0
- package/src/deploy/__tests__/createStateProvider.spec.ts +116 -0
- package/src/deploy/__tests__/dns-orchestration.spec.ts +192 -0
- package/src/deploy/__tests__/dns-verification.spec.ts +2 -2
- package/src/deploy/__tests__/env-resolver.spec.ts +37 -15
- package/src/deploy/__tests__/sniffer.spec.ts +4 -20
- package/src/deploy/__tests__/state.spec.ts +13 -5
- package/src/deploy/dns/DnsProvider.ts +163 -0
- package/src/deploy/dns/HostingerProvider.ts +100 -0
- package/src/deploy/dns/Route53Provider.ts +256 -0
- package/src/deploy/dns/index.ts +257 -165
- package/src/deploy/env-resolver.ts +12 -5
- package/src/deploy/index.ts +16 -13
- package/src/deploy/sniffer-envkit-patch.ts +3 -1
- package/src/deploy/sniffer-routes-worker.ts +104 -0
- package/src/deploy/sniffer.ts +77 -55
- package/src/deploy/state-commands.ts +274 -0
- package/src/dev/__tests__/entry.spec.ts +8 -2
- package/src/dev/__tests__/index.spec.ts +1 -3
- package/src/dev/index.ts +9 -3
- package/src/docker/__tests__/templates.spec.ts +3 -1
- package/src/index.ts +88 -0
- package/src/init/__tests__/generators.spec.ts +273 -0
- package/src/init/__tests__/init.spec.ts +3 -3
- package/src/init/generators/auth.ts +1 -0
- package/src/init/generators/config.ts +2 -0
- package/src/init/generators/models.ts +6 -1
- package/src/init/generators/monorepo.ts +3 -0
- package/src/init/generators/ui.ts +1472 -0
- package/src/init/generators/web.ts +134 -87
- package/src/init/index.ts +22 -3
- package/src/init/templates/api.ts +109 -3
- package/src/openapi.ts +99 -13
- package/src/workspace/__tests__/schema.spec.ts +107 -0
- package/src/workspace/schema.ts +314 -4
- package/src/workspace/types.ts +22 -36
- package/dist/dokploy-api-CItuaWTq.mjs +0 -3
- package/dist/dokploy-api-DBNE8MDt.cjs +0 -3
- package/dist/encryption-CQXBZGkt.mjs +0 -3
- package/dist/index-A70abJ1m.d.mts.map +0 -1
- package/dist/index-pOA56MWT.d.cts.map +0 -1
- package/dist/openapi-C3C-BzIZ.mjs.map +0 -1
- package/dist/openapi-D7WwlpPF.cjs.map +0 -1
- package/dist/workspace-CaVW6j2q.cjs.map +0 -1
- package/dist/workspace-DLFRaDc-.mjs.map +0 -1
- package/tsconfig.tsbuildinfo +0 -1
|
@@ -592,6 +592,113 @@ describe('WorkspaceConfigSchema', () => {
|
|
|
592
592
|
});
|
|
593
593
|
});
|
|
594
594
|
|
|
595
|
+
describe('DNS configuration', () => {
|
|
596
|
+
it('should accept multi-domain DNS config', () => {
|
|
597
|
+
const config = {
|
|
598
|
+
apps: {
|
|
599
|
+
api: {
|
|
600
|
+
type: 'backend' as const,
|
|
601
|
+
path: 'apps/api',
|
|
602
|
+
port: 3000,
|
|
603
|
+
routes: './src/**/*.ts',
|
|
604
|
+
},
|
|
605
|
+
},
|
|
606
|
+
deploy: {
|
|
607
|
+
default: 'dokploy' as const,
|
|
608
|
+
dns: {
|
|
609
|
+
'geekmidas.dev': { provider: 'hostinger' as const },
|
|
610
|
+
'geekmidas.com': {
|
|
611
|
+
provider: 'route53' as const,
|
|
612
|
+
region: 'us-east-1' as const,
|
|
613
|
+
},
|
|
614
|
+
},
|
|
615
|
+
},
|
|
616
|
+
};
|
|
617
|
+
|
|
618
|
+
const result = validateWorkspaceConfig(config);
|
|
619
|
+
|
|
620
|
+
expect(result.deploy?.dns).toEqual({
|
|
621
|
+
'geekmidas.dev': { provider: 'hostinger' },
|
|
622
|
+
'geekmidas.com': { provider: 'route53', region: 'us-east-1' },
|
|
623
|
+
});
|
|
624
|
+
});
|
|
625
|
+
|
|
626
|
+
it('should accept legacy single-domain DNS config', () => {
|
|
627
|
+
const config = {
|
|
628
|
+
apps: {
|
|
629
|
+
api: {
|
|
630
|
+
type: 'backend' as const,
|
|
631
|
+
path: 'apps/api',
|
|
632
|
+
port: 3000,
|
|
633
|
+
routes: './src/**/*.ts',
|
|
634
|
+
},
|
|
635
|
+
},
|
|
636
|
+
deploy: {
|
|
637
|
+
default: 'dokploy' as const,
|
|
638
|
+
dns: {
|
|
639
|
+
provider: 'hostinger' as const,
|
|
640
|
+
domain: 'example.com',
|
|
641
|
+
},
|
|
642
|
+
},
|
|
643
|
+
};
|
|
644
|
+
|
|
645
|
+
const result = validateWorkspaceConfig(config);
|
|
646
|
+
|
|
647
|
+
expect(result.deploy?.dns).toEqual({
|
|
648
|
+
provider: 'hostinger',
|
|
649
|
+
domain: 'example.com',
|
|
650
|
+
});
|
|
651
|
+
});
|
|
652
|
+
|
|
653
|
+
it('should accept DNS config with manual provider', () => {
|
|
654
|
+
const config = {
|
|
655
|
+
apps: {
|
|
656
|
+
api: {
|
|
657
|
+
type: 'backend' as const,
|
|
658
|
+
path: 'apps/api',
|
|
659
|
+
port: 3000,
|
|
660
|
+
routes: './src/**/*.ts',
|
|
661
|
+
},
|
|
662
|
+
},
|
|
663
|
+
deploy: {
|
|
664
|
+
default: 'dokploy' as const,
|
|
665
|
+
dns: {
|
|
666
|
+
'example.com': { provider: 'manual' as const },
|
|
667
|
+
},
|
|
668
|
+
},
|
|
669
|
+
};
|
|
670
|
+
|
|
671
|
+
const result = validateWorkspaceConfig(config);
|
|
672
|
+
|
|
673
|
+
expect(result.deploy?.dns).toEqual({
|
|
674
|
+
'example.com': { provider: 'manual' },
|
|
675
|
+
});
|
|
676
|
+
});
|
|
677
|
+
|
|
678
|
+
it('should accept DNS config with TTL', () => {
|
|
679
|
+
const config = {
|
|
680
|
+
apps: {
|
|
681
|
+
api: {
|
|
682
|
+
type: 'backend' as const,
|
|
683
|
+
path: 'apps/api',
|
|
684
|
+
port: 3000,
|
|
685
|
+
routes: './src/**/*.ts',
|
|
686
|
+
},
|
|
687
|
+
},
|
|
688
|
+
deploy: {
|
|
689
|
+
default: 'dokploy' as const,
|
|
690
|
+
dns: {
|
|
691
|
+
'example.com': { provider: 'hostinger' as const, ttl: 600 },
|
|
692
|
+
},
|
|
693
|
+
},
|
|
694
|
+
};
|
|
695
|
+
|
|
696
|
+
const result = validateWorkspaceConfig(config);
|
|
697
|
+
|
|
698
|
+
expect((result.deploy?.dns as any)['example.com'].ttl).toBe(600);
|
|
699
|
+
});
|
|
700
|
+
});
|
|
701
|
+
|
|
595
702
|
describe('deploy target helpers', () => {
|
|
596
703
|
it('isDeployTargetSupported should return true for dokploy', () => {
|
|
597
704
|
expect(isDeployTargetSupported('dokploy')).toBe(true);
|
package/src/workspace/schema.ts
CHANGED
|
@@ -75,7 +75,10 @@ const FrontendFrameworkSchema = z.enum(['nextjs', 'remix', 'vite']);
|
|
|
75
75
|
/**
|
|
76
76
|
* Combined framework schema (backend or frontend).
|
|
77
77
|
*/
|
|
78
|
-
const FrameworkSchema = z.union([
|
|
78
|
+
const FrameworkSchema = z.union([
|
|
79
|
+
BackendFrameworkSchema,
|
|
80
|
+
FrontendFrameworkSchema,
|
|
81
|
+
]);
|
|
79
82
|
|
|
80
83
|
/**
|
|
81
84
|
* Deploy target schema.
|
|
@@ -164,12 +167,251 @@ const DokployWorkspaceConfigSchema = z.object({
|
|
|
164
167
|
registryId: z.string().optional(),
|
|
165
168
|
});
|
|
166
169
|
|
|
170
|
+
// =============================================================================
|
|
171
|
+
// AWS Regions (needed by DNS and State providers)
|
|
172
|
+
// =============================================================================
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Valid AWS regions.
|
|
176
|
+
*/
|
|
177
|
+
const AwsRegionSchema = z.enum([
|
|
178
|
+
'us-east-1',
|
|
179
|
+
'us-east-2',
|
|
180
|
+
'us-west-1',
|
|
181
|
+
'us-west-2',
|
|
182
|
+
'af-south-1',
|
|
183
|
+
'ap-east-1',
|
|
184
|
+
'ap-south-1',
|
|
185
|
+
'ap-south-2',
|
|
186
|
+
'ap-southeast-1',
|
|
187
|
+
'ap-southeast-2',
|
|
188
|
+
'ap-southeast-3',
|
|
189
|
+
'ap-southeast-4',
|
|
190
|
+
'ap-northeast-1',
|
|
191
|
+
'ap-northeast-2',
|
|
192
|
+
'ap-northeast-3',
|
|
193
|
+
'ca-central-1',
|
|
194
|
+
'eu-central-1',
|
|
195
|
+
'eu-central-2',
|
|
196
|
+
'eu-west-1',
|
|
197
|
+
'eu-west-2',
|
|
198
|
+
'eu-west-3',
|
|
199
|
+
'eu-south-1',
|
|
200
|
+
'eu-south-2',
|
|
201
|
+
'eu-north-1',
|
|
202
|
+
'me-south-1',
|
|
203
|
+
'me-central-1',
|
|
204
|
+
'sa-east-1',
|
|
205
|
+
]);
|
|
206
|
+
|
|
207
|
+
// =============================================================================
|
|
208
|
+
// DNS Record Types (used by DnsProvider interface)
|
|
209
|
+
// =============================================================================
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* DNS record types supported across providers.
|
|
213
|
+
*/
|
|
214
|
+
export const DnsRecordTypeSchema = z.enum([
|
|
215
|
+
'A',
|
|
216
|
+
'AAAA',
|
|
217
|
+
'CNAME',
|
|
218
|
+
'MX',
|
|
219
|
+
'TXT',
|
|
220
|
+
'NS',
|
|
221
|
+
'SRV',
|
|
222
|
+
'CAA',
|
|
223
|
+
]);
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* A DNS record as returned by the provider.
|
|
227
|
+
*/
|
|
228
|
+
export const DnsRecordSchema = z.object({
|
|
229
|
+
/** Subdomain name (e.g., 'api' for api.example.com, '@' for root) */
|
|
230
|
+
name: z.string(),
|
|
231
|
+
/** Record type */
|
|
232
|
+
type: DnsRecordTypeSchema,
|
|
233
|
+
/** TTL in seconds */
|
|
234
|
+
ttl: z.number().int().positive(),
|
|
235
|
+
/** Record values */
|
|
236
|
+
values: z.array(z.string()),
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* A DNS record to create or update.
|
|
241
|
+
*/
|
|
242
|
+
export const UpsertDnsRecordSchema = z.object({
|
|
243
|
+
/** Subdomain name (e.g., 'api' for api.example.com, '@' for root) */
|
|
244
|
+
name: z.string(),
|
|
245
|
+
/** Record type */
|
|
246
|
+
type: DnsRecordTypeSchema,
|
|
247
|
+
/** TTL in seconds */
|
|
248
|
+
ttl: z.number().int().positive(),
|
|
249
|
+
/** Record value (IP address, hostname, etc.) */
|
|
250
|
+
value: z.string(),
|
|
251
|
+
});
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Result of an upsert operation.
|
|
255
|
+
*/
|
|
256
|
+
export const UpsertResultSchema = z.object({
|
|
257
|
+
/** The record that was upserted */
|
|
258
|
+
record: UpsertDnsRecordSchema,
|
|
259
|
+
/** Whether the record was created (true) or updated (false) */
|
|
260
|
+
created: z.boolean(),
|
|
261
|
+
/** Whether the record already existed with the same value */
|
|
262
|
+
unchanged: z.boolean(),
|
|
263
|
+
});
|
|
264
|
+
|
|
265
|
+
// =============================================================================
|
|
266
|
+
// DNS Provider Configuration
|
|
267
|
+
// =============================================================================
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Hostinger DNS provider config (without domain - domain is the record key).
|
|
271
|
+
*/
|
|
272
|
+
export const HostingerDnsProviderSchema = z.object({
|
|
273
|
+
provider: z.literal('hostinger'),
|
|
274
|
+
/** TTL in seconds (default: 300) */
|
|
275
|
+
ttl: z.number().int().positive().optional(),
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* Route53 DNS provider config (without domain - domain is the record key).
|
|
280
|
+
*/
|
|
281
|
+
export const Route53DnsProviderSchema = z.object({
|
|
282
|
+
provider: z.literal('route53'),
|
|
283
|
+
/** AWS region (optional - uses AWS_REGION env var if not provided) */
|
|
284
|
+
region: AwsRegionSchema.optional(),
|
|
285
|
+
/** AWS profile name (optional - uses default credential chain if not provided) */
|
|
286
|
+
profile: z.string().optional(),
|
|
287
|
+
/** Hosted zone ID (optional - auto-detected from domain if not provided) */
|
|
288
|
+
hostedZoneId: z.string().optional(),
|
|
289
|
+
/** TTL in seconds (default: 300) */
|
|
290
|
+
ttl: z.number().int().positive().optional(),
|
|
291
|
+
});
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Cloudflare DNS provider config (placeholder for future).
|
|
295
|
+
*/
|
|
296
|
+
export const CloudflareDnsProviderSchema = z.object({
|
|
297
|
+
provider: z.literal('cloudflare'),
|
|
298
|
+
/** TTL in seconds (default: 300) */
|
|
299
|
+
ttl: z.number().int().positive().optional(),
|
|
300
|
+
});
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Manual DNS configuration (user handles DNS themselves).
|
|
304
|
+
*/
|
|
305
|
+
export const ManualDnsProviderSchema = z.object({
|
|
306
|
+
provider: z.literal('manual'),
|
|
307
|
+
});
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* Custom DNS provider config (user-provided implementation).
|
|
311
|
+
*/
|
|
312
|
+
export const CustomDnsProviderSchema = z.object({
|
|
313
|
+
/** Custom DnsProvider implementation */
|
|
314
|
+
provider: z.custom<{
|
|
315
|
+
name: string;
|
|
316
|
+
getRecords: Function;
|
|
317
|
+
upsertRecords: Function;
|
|
318
|
+
}>(
|
|
319
|
+
(val) =>
|
|
320
|
+
typeof val === 'object' &&
|
|
321
|
+
val !== null &&
|
|
322
|
+
typeof (val as any).name === 'string' &&
|
|
323
|
+
typeof (val as any).getRecords === 'function' &&
|
|
324
|
+
typeof (val as any).upsertRecords === 'function',
|
|
325
|
+
{
|
|
326
|
+
message:
|
|
327
|
+
'Custom DNS provider must implement name, getRecords(), and upsertRecords() methods',
|
|
328
|
+
},
|
|
329
|
+
),
|
|
330
|
+
/** TTL in seconds (default: 300) */
|
|
331
|
+
ttl: z.number().int().positive().optional(),
|
|
332
|
+
});
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* Built-in DNS provider config (discriminated union).
|
|
336
|
+
*/
|
|
337
|
+
export const BuiltInDnsProviderSchema = z.discriminatedUnion('provider', [
|
|
338
|
+
HostingerDnsProviderSchema,
|
|
339
|
+
Route53DnsProviderSchema,
|
|
340
|
+
CloudflareDnsProviderSchema,
|
|
341
|
+
ManualDnsProviderSchema,
|
|
342
|
+
]);
|
|
343
|
+
|
|
344
|
+
/**
|
|
345
|
+
* Single DNS provider config (for one domain).
|
|
346
|
+
*/
|
|
347
|
+
export const DnsProviderSchema = z.union([
|
|
348
|
+
BuiltInDnsProviderSchema,
|
|
349
|
+
CustomDnsProviderSchema,
|
|
350
|
+
]);
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* DNS configuration schema.
|
|
354
|
+
*
|
|
355
|
+
* Maps root domains to their DNS provider configuration.
|
|
356
|
+
* Example:
|
|
357
|
+
* ```
|
|
358
|
+
* dns: {
|
|
359
|
+
* 'geekmidas.dev': { provider: 'hostinger' },
|
|
360
|
+
* 'geekmidas.com': { provider: 'route53' },
|
|
361
|
+
* }
|
|
362
|
+
* ```
|
|
363
|
+
*
|
|
364
|
+
* Supported providers:
|
|
365
|
+
* - 'hostinger': Use Hostinger DNS API
|
|
366
|
+
* - 'route53': Use AWS Route53
|
|
367
|
+
* - 'cloudflare': Use Cloudflare DNS API (future)
|
|
368
|
+
* - 'manual': Don't create records, just print required records
|
|
369
|
+
* - Custom: Provide a DnsProvider implementation
|
|
370
|
+
*/
|
|
371
|
+
export const DnsConfigSchema = z.record(z.string(), DnsProviderSchema);
|
|
372
|
+
|
|
373
|
+
// Legacy single-domain config schemas (for backwards compatibility)
|
|
374
|
+
export const HostingerDnsConfigSchema = HostingerDnsProviderSchema.extend({
|
|
375
|
+
domain: z.string().min(1, 'Domain is required'),
|
|
376
|
+
});
|
|
377
|
+
export const Route53DnsConfigSchema = Route53DnsProviderSchema.extend({
|
|
378
|
+
domain: z.string().min(1, 'Domain is required'),
|
|
379
|
+
});
|
|
380
|
+
export const CloudflareDnsConfigSchema = CloudflareDnsProviderSchema.extend({
|
|
381
|
+
domain: z.string().min(1, 'Domain is required'),
|
|
382
|
+
});
|
|
383
|
+
export const ManualDnsConfigSchema = ManualDnsProviderSchema.extend({
|
|
384
|
+
domain: z.string().min(1, 'Domain is required'),
|
|
385
|
+
});
|
|
386
|
+
export const CustomDnsConfigSchema = CustomDnsProviderSchema.extend({
|
|
387
|
+
domain: z.string().min(1, 'Domain is required'),
|
|
388
|
+
});
|
|
389
|
+
export const BuiltInDnsConfigSchema = z.discriminatedUnion('provider', [
|
|
390
|
+
HostingerDnsConfigSchema,
|
|
391
|
+
Route53DnsConfigSchema,
|
|
392
|
+
CloudflareDnsConfigSchema,
|
|
393
|
+
ManualDnsConfigSchema,
|
|
394
|
+
]);
|
|
395
|
+
export const LegacyDnsConfigSchema = z.union([
|
|
396
|
+
BuiltInDnsConfigSchema,
|
|
397
|
+
CustomDnsConfigSchema,
|
|
398
|
+
]);
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* Combined DNS config that supports both new multi-domain and legacy single-domain formats.
|
|
402
|
+
*/
|
|
403
|
+
export const DnsConfigWithLegacySchema = z.union([
|
|
404
|
+
DnsConfigSchema,
|
|
405
|
+
LegacyDnsConfigSchema,
|
|
406
|
+
]);
|
|
407
|
+
|
|
167
408
|
/**
|
|
168
409
|
* Deploy configuration schema.
|
|
169
410
|
*/
|
|
170
411
|
const DeployConfigSchema = z.object({
|
|
171
412
|
default: DeployTargetSchema.optional(),
|
|
172
413
|
dokploy: DokployWorkspaceConfigSchema.optional(),
|
|
414
|
+
dns: DnsConfigWithLegacySchema.optional(),
|
|
173
415
|
});
|
|
174
416
|
|
|
175
417
|
/**
|
|
@@ -197,6 +439,62 @@ const SecretsConfigSchema = z.object({
|
|
|
197
439
|
kdf: z.enum(['scrypt', 'pbkdf2']).optional(),
|
|
198
440
|
});
|
|
199
441
|
|
|
442
|
+
// =============================================================================
|
|
443
|
+
// State Provider Configuration
|
|
444
|
+
// =============================================================================
|
|
445
|
+
|
|
446
|
+
/**
|
|
447
|
+
* Local state provider config.
|
|
448
|
+
*/
|
|
449
|
+
const LocalStateConfigSchema = z.object({
|
|
450
|
+
provider: z.literal('local'),
|
|
451
|
+
});
|
|
452
|
+
|
|
453
|
+
/**
|
|
454
|
+
* SSM state provider config (requires region).
|
|
455
|
+
*/
|
|
456
|
+
const SSMStateConfigSchema = z.object({
|
|
457
|
+
provider: z.literal('ssm'),
|
|
458
|
+
/** AWS region (required for SSM provider) */
|
|
459
|
+
region: AwsRegionSchema,
|
|
460
|
+
});
|
|
461
|
+
|
|
462
|
+
/**
|
|
463
|
+
* Custom state provider config (user-provided implementation).
|
|
464
|
+
*/
|
|
465
|
+
const CustomStateConfigSchema = z.object({
|
|
466
|
+
/** Custom StateProvider implementation */
|
|
467
|
+
provider: z.custom<{ read: Function; write: Function }>(
|
|
468
|
+
(val) =>
|
|
469
|
+
typeof val === 'object' &&
|
|
470
|
+
val !== null &&
|
|
471
|
+
typeof (val as any).read === 'function' &&
|
|
472
|
+
typeof (val as any).write === 'function',
|
|
473
|
+
{ message: 'Custom provider must implement read() and write() methods' },
|
|
474
|
+
),
|
|
475
|
+
});
|
|
476
|
+
|
|
477
|
+
/**
|
|
478
|
+
* Built-in state provider config (discriminated union).
|
|
479
|
+
*/
|
|
480
|
+
const BuiltInStateConfigSchema = z.discriminatedUnion('provider', [
|
|
481
|
+
LocalStateConfigSchema,
|
|
482
|
+
SSMStateConfigSchema,
|
|
483
|
+
]);
|
|
484
|
+
|
|
485
|
+
/**
|
|
486
|
+
* State configuration schema.
|
|
487
|
+
*
|
|
488
|
+
* Configures how deployment state is stored.
|
|
489
|
+
* - 'local': Store in .gkm/deploy-{stage}.json (default)
|
|
490
|
+
* - 'ssm': Store in AWS SSM Parameter Store (requires region)
|
|
491
|
+
* - Custom: Provide a StateProvider implementation with read/write methods
|
|
492
|
+
*/
|
|
493
|
+
const StateConfigSchema = z.union([
|
|
494
|
+
BuiltInStateConfigSchema,
|
|
495
|
+
CustomStateConfigSchema,
|
|
496
|
+
]);
|
|
497
|
+
|
|
200
498
|
/**
|
|
201
499
|
* App configuration schema.
|
|
202
500
|
*/
|
|
@@ -248,7 +546,8 @@ const AppConfigSchema = z
|
|
|
248
546
|
return true;
|
|
249
547
|
},
|
|
250
548
|
{
|
|
251
|
-
message:
|
|
549
|
+
message:
|
|
550
|
+
'Frontend apps must have a valid frontend framework (nextjs, remix, vite)',
|
|
252
551
|
path: ['framework'],
|
|
253
552
|
},
|
|
254
553
|
)
|
|
@@ -281,6 +580,7 @@ export const WorkspaceConfigSchema = z
|
|
|
281
580
|
deploy: DeployConfigSchema.optional(),
|
|
282
581
|
services: ServicesConfigSchema.optional(),
|
|
283
582
|
secrets: SecretsConfigSchema.optional(),
|
|
583
|
+
state: StateConfigSchema.optional(),
|
|
284
584
|
})
|
|
285
585
|
.refine(
|
|
286
586
|
(data) => {
|
|
@@ -343,7 +643,7 @@ export const WorkspaceConfigSchema = z
|
|
|
343
643
|
const defaultTarget = data.deploy?.default;
|
|
344
644
|
if (defaultTarget && !isDeployTargetSupported(defaultTarget)) {
|
|
345
645
|
ctx.addIssue({
|
|
346
|
-
code:
|
|
646
|
+
code: 'custom',
|
|
347
647
|
message: getDeployTargetError(defaultTarget),
|
|
348
648
|
path: ['deploy', 'default'],
|
|
349
649
|
});
|
|
@@ -353,13 +653,23 @@ export const WorkspaceConfigSchema = z
|
|
|
353
653
|
for (const [appName, app] of Object.entries(data.apps)) {
|
|
354
654
|
if (app.deploy && !isDeployTargetSupported(app.deploy)) {
|
|
355
655
|
ctx.addIssue({
|
|
356
|
-
code:
|
|
656
|
+
code: 'custom',
|
|
357
657
|
message: getDeployTargetError(app.deploy, appName),
|
|
358
658
|
path: ['apps', appName, 'deploy'],
|
|
359
659
|
});
|
|
360
660
|
return;
|
|
361
661
|
}
|
|
362
662
|
}
|
|
663
|
+
|
|
664
|
+
// Validate workspace name is required for SSM state provider
|
|
665
|
+
if (data.state?.provider === 'ssm' && !data.name) {
|
|
666
|
+
ctx.addIssue({
|
|
667
|
+
code: 'custom',
|
|
668
|
+
message:
|
|
669
|
+
'Workspace name is required when using SSM state provider. Add "name" to your gkm.config.ts.',
|
|
670
|
+
path: ['name'],
|
|
671
|
+
});
|
|
672
|
+
}
|
|
363
673
|
});
|
|
364
674
|
|
|
365
675
|
/**
|
package/src/workspace/types.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { z } from 'zod/v4';
|
|
2
|
+
import type { StateConfig } from '../deploy/StateProvider.js';
|
|
1
3
|
import type {
|
|
2
4
|
GkmConfig,
|
|
3
5
|
HooksConfig,
|
|
@@ -8,6 +10,7 @@ import type {
|
|
|
8
10
|
StudioConfig,
|
|
9
11
|
TelescopeConfig,
|
|
10
12
|
} from '../types.js';
|
|
13
|
+
import type { DnsConfigWithLegacySchema, DnsProviderSchema } from './schema.js';
|
|
11
14
|
|
|
12
15
|
/**
|
|
13
16
|
* Deploy target for an app.
|
|
@@ -248,58 +251,40 @@ export interface DokployWorkspaceConfig {
|
|
|
248
251
|
/**
|
|
249
252
|
* DNS provider types for automatic DNS record creation.
|
|
250
253
|
*/
|
|
251
|
-
export type
|
|
254
|
+
export type DnsProviderType = 'hostinger' | 'route53' | 'cloudflare' | 'manual';
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* DNS provider configuration for a single domain.
|
|
258
|
+
*/
|
|
259
|
+
export type DnsProvider = z.infer<typeof DnsProviderSchema>;
|
|
252
260
|
|
|
253
261
|
/**
|
|
254
262
|
* DNS configuration for automatic record creation during deployment.
|
|
255
263
|
*
|
|
264
|
+
* Maps root domains to their DNS provider configuration.
|
|
256
265
|
* When configured, the deploy command will automatically create DNS
|
|
257
266
|
* A records pointing to your Dokploy server for each app's domain.
|
|
258
267
|
*
|
|
259
268
|
* @example
|
|
260
269
|
* ```ts
|
|
261
|
-
* //
|
|
270
|
+
* // Multi-domain with different providers
|
|
262
271
|
* dns: {
|
|
263
|
-
* provider: 'hostinger',
|
|
264
|
-
*
|
|
265
|
-
*
|
|
272
|
+
* 'geekmidas.dev': { provider: 'hostinger' },
|
|
273
|
+
* 'geekmidas.com': { provider: 'route53' },
|
|
274
|
+
* }
|
|
275
|
+
*
|
|
276
|
+
* // Single domain
|
|
277
|
+
* dns: {
|
|
278
|
+
* 'traflabs.io': { provider: 'hostinger', ttl: 300 },
|
|
266
279
|
* }
|
|
267
280
|
*
|
|
268
281
|
* // Manual mode - just print required records
|
|
269
282
|
* dns: {
|
|
270
|
-
* provider: 'manual',
|
|
271
|
-
* domain: 'traflabs.io',
|
|
283
|
+
* 'myapp.com': { provider: 'manual' },
|
|
272
284
|
* }
|
|
273
285
|
* ```
|
|
274
286
|
*/
|
|
275
|
-
export
|
|
276
|
-
/**
|
|
277
|
-
* DNS provider for automatic record creation.
|
|
278
|
-
* - 'hostinger': Use Hostinger DNS API
|
|
279
|
-
* - 'cloudflare': Use Cloudflare DNS API (future)
|
|
280
|
-
* - 'manual': Don't create records, just print required records
|
|
281
|
-
*/
|
|
282
|
-
provider: DnsProvider;
|
|
283
|
-
|
|
284
|
-
/**
|
|
285
|
-
* Root domain where records will be created.
|
|
286
|
-
* @example 'traflabs.io', 'example.com'
|
|
287
|
-
*/
|
|
288
|
-
domain: string;
|
|
289
|
-
|
|
290
|
-
/**
|
|
291
|
-
* Automatically create DNS records during deploy.
|
|
292
|
-
* If false, only prints required records for manual setup.
|
|
293
|
-
* @default true
|
|
294
|
-
*/
|
|
295
|
-
autoCreate?: boolean;
|
|
296
|
-
|
|
297
|
-
/**
|
|
298
|
-
* TTL for created DNS records in seconds.
|
|
299
|
-
* @default 300 (5 minutes)
|
|
300
|
-
*/
|
|
301
|
-
ttl?: number;
|
|
302
|
-
}
|
|
287
|
+
export type DnsConfig = z.infer<typeof DnsConfigWithLegacySchema>;
|
|
303
288
|
|
|
304
289
|
/**
|
|
305
290
|
* Deployment configuration for the workspace.
|
|
@@ -325,7 +310,6 @@ export interface DnsConfig {
|
|
|
325
310
|
* dns: {
|
|
326
311
|
* provider: 'hostinger',
|
|
327
312
|
* domain: 'myapp.com',
|
|
328
|
-
* autoCreate: true,
|
|
329
313
|
* },
|
|
330
314
|
* }
|
|
331
315
|
* ```
|
|
@@ -942,6 +926,8 @@ export interface NormalizedWorkspace {
|
|
|
942
926
|
shared: SharedConfig;
|
|
943
927
|
/** Secrets configuration (empty object if not specified) */
|
|
944
928
|
secrets: SecretsConfig;
|
|
929
|
+
/** State provider configuration (undefined = local filesystem) */
|
|
930
|
+
state?: StateConfig;
|
|
945
931
|
}
|
|
946
932
|
|
|
947
933
|
/**
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-A70abJ1m.d.mts","names":[],"sources":["../src/workspace/types.ts","../src/workspace/schema.ts","../src/workspace/index.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-pOA56MWT.d.cts","names":[],"sources":["../src/workspace/types.ts","../src/workspace/schema.ts","../src/workspace/index.ts"],"sourcesContent":[],"mappings":"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"}
|