@geekmidas/cli 1.4.0 → 1.5.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 +6 -0
- package/dist/{Route53Provider-xrWuBXih.cjs → Route53Provider-Bs7Arms9.cjs} +3 -2
- package/dist/Route53Provider-Bs7Arms9.cjs.map +1 -0
- package/dist/{Route53Provider-DOWmFnwN.mjs → Route53Provider-C8mS0zY6.mjs} +3 -2
- package/dist/Route53Provider-C8mS0zY6.mjs.map +1 -0
- package/dist/{config-C1bidhvG.mjs → config-DfCJ29PQ.mjs} +2 -2
- package/dist/{config-C1bidhvG.mjs.map → config-DfCJ29PQ.mjs.map} +1 -1
- package/dist/{config-C1dM7aZb.cjs → config-ZQM1vBoz.cjs} +2 -2
- package/dist/{config-C1dM7aZb.cjs.map → config-ZQM1vBoz.cjs.map} +1 -1
- package/dist/config.cjs +2 -2
- package/dist/config.d.cts +1 -1
- package/dist/config.d.mts +1 -1
- package/dist/config.mjs +2 -2
- package/dist/{index-DzmZ6SUW.d.cts → index-B58qjyBd.d.cts} +27 -1
- package/dist/index-B58qjyBd.d.cts.map +1 -0
- package/dist/{index-DvpWzLD7.d.mts → index-C0SpUT9Y.d.mts} +27 -1
- package/dist/index-C0SpUT9Y.d.mts.map +1 -0
- package/dist/index.cjs +105 -48
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +105 -48
- package/dist/index.mjs.map +1 -1
- package/dist/{openapi-9k6a6VA4.mjs → openapi-BcSjLfWq.mjs} +2 -2
- package/dist/{openapi-9k6a6VA4.mjs.map → openapi-BcSjLfWq.mjs.map} +1 -1
- package/dist/{openapi-Dcja4e1C.cjs → openapi-D6Hcfov0.cjs} +2 -2
- package/dist/{openapi-Dcja4e1C.cjs.map → openapi-D6Hcfov0.cjs.map} +1 -1
- package/dist/openapi.cjs +3 -3
- package/dist/openapi.mjs +3 -3
- package/dist/workspace/index.cjs +1 -1
- package/dist/workspace/index.d.cts +1 -1
- package/dist/workspace/index.d.mts +1 -1
- package/dist/workspace/index.mjs +1 -1
- package/dist/{workspace-CeFgIDC-.cjs → workspace-2Do2YcGZ.cjs} +5 -1
- package/dist/{workspace-CeFgIDC-.cjs.map → workspace-2Do2YcGZ.cjs.map} +1 -1
- package/dist/{workspace-Cb_I7oCJ.mjs → workspace-BW2iU37P.mjs} +5 -1
- package/dist/{workspace-Cb_I7oCJ.mjs.map → workspace-BW2iU37P.mjs.map} +1 -1
- package/package.json +4 -4
- package/src/deploy/__tests__/Route53Provider.spec.ts +23 -0
- package/src/deploy/__tests__/env-resolver.spec.ts +239 -0
- package/src/deploy/__tests__/sniffer.spec.ts +104 -93
- package/src/deploy/dns/Route53Provider.ts +4 -1
- package/src/deploy/env-resolver.ts +11 -1
- package/src/deploy/index.ts +72 -24
- package/src/deploy/sniffer.ts +39 -7
- package/src/init/generators/monorepo.ts +4 -0
- package/src/init/generators/web.ts +45 -2
- package/src/workspace/schema.ts +8 -0
- package/src/workspace/types.ts +23 -0
- package/dist/Route53Provider-DOWmFnwN.mjs.map +0 -1
- package/dist/Route53Provider-xrWuBXih.cjs.map +0 -1
- package/dist/index-DvpWzLD7.d.mts.map +0 -1
- package/dist/index-DzmZ6SUW.d.cts.map +0 -1
package/src/deploy/index.ts
CHANGED
|
@@ -73,12 +73,7 @@ import {
|
|
|
73
73
|
type DokployPostgres,
|
|
74
74
|
type DokployRedis,
|
|
75
75
|
} from './dokploy-api';
|
|
76
|
-
import {
|
|
77
|
-
generatePublicUrlBuildArgs,
|
|
78
|
-
getPublicUrlArgNames,
|
|
79
|
-
isMainFrontendApp,
|
|
80
|
-
resolveHost,
|
|
81
|
-
} from './domain.js';
|
|
76
|
+
import { isMainFrontendApp, resolveHost } from './domain.js';
|
|
82
77
|
import {
|
|
83
78
|
type EnvResolverContext,
|
|
84
79
|
formatMissingVarsError,
|
|
@@ -1576,13 +1571,71 @@ export async function workspaceDeployCommand(
|
|
|
1576
1571
|
// Store application ID in state
|
|
1577
1572
|
setApplicationId(state, appName, application.applicationId);
|
|
1578
1573
|
|
|
1579
|
-
//
|
|
1580
|
-
const
|
|
1574
|
+
// Build dependency URLs for frontend (same pattern as backend)
|
|
1575
|
+
const dependencyUrls: Record<string, string> = {};
|
|
1576
|
+
if (app.dependencies) {
|
|
1577
|
+
for (const dep of app.dependencies) {
|
|
1578
|
+
if (publicUrls[dep]) {
|
|
1579
|
+
dependencyUrls[dep] = publicUrls[dep];
|
|
1580
|
+
}
|
|
1581
|
+
}
|
|
1582
|
+
}
|
|
1583
|
+
|
|
1584
|
+
// Compute hostname for this frontend app
|
|
1585
|
+
const isMainFrontend = isMainFrontendApp(appName, app, workspace.apps);
|
|
1586
|
+
const frontendHost = resolveHost(
|
|
1587
|
+
appName,
|
|
1588
|
+
app,
|
|
1589
|
+
stage,
|
|
1590
|
+
dokployConfig,
|
|
1591
|
+
isMainFrontend,
|
|
1592
|
+
);
|
|
1593
|
+
|
|
1594
|
+
// Build env context for frontend
|
|
1595
|
+
const envContext: EnvResolverContext = {
|
|
1596
|
+
app,
|
|
1597
|
+
appName,
|
|
1598
|
+
stage,
|
|
1599
|
+
state,
|
|
1600
|
+
appHostname: frontendHost,
|
|
1601
|
+
frontendUrls: [],
|
|
1602
|
+
userSecrets: stageSecrets ?? undefined,
|
|
1603
|
+
dependencyUrls,
|
|
1604
|
+
};
|
|
1605
|
+
|
|
1606
|
+
// Resolve all env vars BEFORE Docker build (NEXT_PUBLIC_* must be present at build time)
|
|
1607
|
+
const sniffedVars = sniffedApps.get(appName)?.requiredEnvVars ?? [];
|
|
1608
|
+
const { valid, missing, resolved } = validateEnvVars(
|
|
1609
|
+
sniffedVars,
|
|
1610
|
+
envContext,
|
|
1611
|
+
);
|
|
1612
|
+
|
|
1613
|
+
if (!valid) {
|
|
1614
|
+
throw new Error(formatMissingVarsError(appName, missing, stage));
|
|
1615
|
+
}
|
|
1616
|
+
|
|
1617
|
+
if (Object.keys(resolved).length > 0) {
|
|
1618
|
+
logger.log(
|
|
1619
|
+
` Resolved ${Object.keys(resolved).length} env vars: ${Object.keys(resolved).join(', ')}`,
|
|
1620
|
+
);
|
|
1621
|
+
}
|
|
1622
|
+
|
|
1623
|
+
// Build args: all NEXT_PUBLIC_* vars must be present at Next.js build time
|
|
1624
|
+
const buildArgs: string[] = [];
|
|
1625
|
+
const publicUrlArgNames: string[] = [];
|
|
1626
|
+
|
|
1627
|
+
for (const [key, value] of Object.entries(resolved)) {
|
|
1628
|
+
if (key.startsWith('NEXT_PUBLIC_')) {
|
|
1629
|
+
buildArgs.push(`${key}=${value}`);
|
|
1630
|
+
publicUrlArgNames.push(key);
|
|
1631
|
+
}
|
|
1632
|
+
}
|
|
1633
|
+
|
|
1581
1634
|
if (buildArgs.length > 0) {
|
|
1582
|
-
logger.log(`
|
|
1635
|
+
logger.log(` Build args: ${publicUrlArgNames.join(', ')}`);
|
|
1583
1636
|
}
|
|
1584
1637
|
|
|
1585
|
-
// Build Docker image with
|
|
1638
|
+
// Build Docker image with NEXT_PUBLIC_* vars as build args
|
|
1586
1639
|
const imageName = `${workspace.name}-${appName}`;
|
|
1587
1640
|
const imageRef = registry
|
|
1588
1641
|
? `${registry}/${imageName}:${imageTag}`
|
|
@@ -1600,17 +1653,22 @@ export async function workspaceDeployCommand(
|
|
|
1600
1653
|
appName,
|
|
1601
1654
|
},
|
|
1602
1655
|
buildArgs,
|
|
1603
|
-
// Pass
|
|
1604
|
-
publicUrlArgs:
|
|
1656
|
+
// Pass arg names for Dockerfile ARG generation
|
|
1657
|
+
publicUrlArgs: publicUrlArgNames,
|
|
1605
1658
|
});
|
|
1606
1659
|
|
|
1607
|
-
// Prepare environment variables
|
|
1660
|
+
// Prepare runtime environment variables
|
|
1608
1661
|
const envVars: string[] = [
|
|
1609
1662
|
`NODE_ENV=production`,
|
|
1610
1663
|
`PORT=${app.port}`,
|
|
1611
1664
|
`STAGE=${stage}`,
|
|
1612
1665
|
];
|
|
1613
1666
|
|
|
1667
|
+
// Add all resolved vars as runtime env (for SSR and server components)
|
|
1668
|
+
for (const [key, value] of Object.entries(resolved)) {
|
|
1669
|
+
envVars.push(`${key}=${value}`);
|
|
1670
|
+
}
|
|
1671
|
+
|
|
1614
1672
|
// Configure and deploy application in Dokploy
|
|
1615
1673
|
await api.saveDockerProvider(application.applicationId, imageRef, {
|
|
1616
1674
|
registryId,
|
|
@@ -1624,17 +1682,7 @@ export async function workspaceDeployCommand(
|
|
|
1624
1682
|
logger.log(` Deploying to Dokploy...`);
|
|
1625
1683
|
await api.deployApplication(application.applicationId);
|
|
1626
1684
|
|
|
1627
|
-
//
|
|
1628
|
-
const isMainFrontend = isMainFrontendApp(appName, app, workspace.apps);
|
|
1629
|
-
const frontendHost = resolveHost(
|
|
1630
|
-
appName,
|
|
1631
|
-
app,
|
|
1632
|
-
stage,
|
|
1633
|
-
dokployConfig,
|
|
1634
|
-
isMainFrontend,
|
|
1635
|
-
);
|
|
1636
|
-
|
|
1637
|
-
// Check if domain already exists
|
|
1685
|
+
// Check if domain already exists (frontendHost computed earlier for env context)
|
|
1638
1686
|
const existingFrontendDomains = await api.getDomainsByApplicationId(
|
|
1639
1687
|
application.applicationId,
|
|
1640
1688
|
);
|
package/src/deploy/sniffer.ts
CHANGED
|
@@ -98,17 +98,49 @@ export async function sniffAppEnvironment(
|
|
|
98
98
|
): Promise<SniffedEnvironment> {
|
|
99
99
|
const { logWarnings = true } = options;
|
|
100
100
|
|
|
101
|
-
// 1. Frontend apps
|
|
101
|
+
// 1. Frontend apps - handle dependencies and config sniffing
|
|
102
102
|
if (app.type === 'frontend') {
|
|
103
|
-
|
|
104
|
-
|
|
103
|
+
// Auto-generate NEXT_PUBLIC_{DEP}_URL from dependencies
|
|
104
|
+
const depVars = (app.dependencies ?? []).map(
|
|
105
|
+
(dep) => `NEXT_PUBLIC_${dep.toUpperCase()}_URL`,
|
|
106
|
+
);
|
|
107
|
+
|
|
108
|
+
// If config specified, sniff by importing the file(s)
|
|
109
|
+
// The file calls .parse() at module load, which triggers sniffer to capture vars
|
|
110
|
+
if (app.config) {
|
|
111
|
+
const sniffedVars: string[] = [];
|
|
112
|
+
|
|
113
|
+
// Collect config paths to sniff
|
|
114
|
+
const configPaths: string[] = [];
|
|
115
|
+
if (app.config.client) configPaths.push(app.config.client);
|
|
116
|
+
if (app.config.server) configPaths.push(app.config.server);
|
|
117
|
+
|
|
118
|
+
// Sniff each config file
|
|
119
|
+
for (const configPath of configPaths) {
|
|
120
|
+
const result = await sniffEntryFile(
|
|
121
|
+
configPath,
|
|
122
|
+
app.path,
|
|
123
|
+
workspacePath,
|
|
124
|
+
);
|
|
125
|
+
|
|
126
|
+
if (logWarnings && result.error) {
|
|
127
|
+
console.warn(
|
|
128
|
+
`[sniffer] ${appName}: Config file "${configPath}" threw error during sniffing (env vars still captured): ${result.error.message}`,
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
sniffedVars.push(...result.envVars);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// Combine: dependency vars + sniffed vars (deduplicated)
|
|
136
|
+
const allVars = [...new Set([...depVars, ...sniffedVars])];
|
|
137
|
+
return { appName, requiredEnvVars: allVars };
|
|
138
|
+
}
|
|
105
139
|
|
|
106
|
-
|
|
107
|
-
if (app.requiredEnv && app.requiredEnv.length > 0) {
|
|
108
|
-
return { appName, requiredEnvVars: [...app.requiredEnv] };
|
|
140
|
+
return { appName, requiredEnvVars: depVars };
|
|
109
141
|
}
|
|
110
142
|
|
|
111
|
-
//
|
|
143
|
+
// 2. Entry apps - import entry file in subprocess to trigger config.parse()
|
|
112
144
|
if (app.entry) {
|
|
113
145
|
const result = await sniffEntryFile(app.entry, app.path, workspacePath);
|
|
114
146
|
|
|
@@ -373,6 +373,10 @@ export default defineWorkspace({
|
|
|
373
373
|
path: 'apps/web',
|
|
374
374
|
port: 3001,
|
|
375
375
|
dependencies: ['api', 'auth'],
|
|
376
|
+
config: {
|
|
377
|
+
client: './src/config/client.ts',
|
|
378
|
+
server: './src/config/server.ts',
|
|
379
|
+
},
|
|
376
380
|
client: {
|
|
377
381
|
output: './src/api',
|
|
378
382
|
},
|
|
@@ -133,12 +133,46 @@ export function getQueryClient() {
|
|
|
133
133
|
}
|
|
134
134
|
`;
|
|
135
135
|
|
|
136
|
+
// Client config - NEXT_PUBLIC_* vars (available in browser)
|
|
137
|
+
const clientConfigTs = `import { EnvironmentParser } from '@geekmidas/envkit';
|
|
138
|
+
|
|
139
|
+
// Client config - only NEXT_PUBLIC_* vars (available in browser)
|
|
140
|
+
// These values are inlined at build time by Next.js
|
|
141
|
+
const envParser = new EnvironmentParser({
|
|
142
|
+
NEXT_PUBLIC_API_URL: process.env.NEXT_PUBLIC_API_URL,
|
|
143
|
+
NEXT_PUBLIC_AUTH_URL: process.env.NEXT_PUBLIC_AUTH_URL,
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
export const clientConfig = envParser
|
|
147
|
+
.create((get) => ({
|
|
148
|
+
apiUrl: get('NEXT_PUBLIC_API_URL').string(),
|
|
149
|
+
authUrl: get('NEXT_PUBLIC_AUTH_URL').string(),
|
|
150
|
+
}))
|
|
151
|
+
.parse();
|
|
152
|
+
`;
|
|
153
|
+
|
|
154
|
+
// Server config - server-only vars (not available in browser)
|
|
155
|
+
const serverConfigTs = `import { EnvironmentParser } from '@geekmidas/envkit';
|
|
156
|
+
|
|
157
|
+
// Server config - all env vars (server-side only, not exposed to browser)
|
|
158
|
+
// Access these only in Server Components, Route Handlers, or Server Actions
|
|
159
|
+
const envParser = new EnvironmentParser({ ...process.env });
|
|
160
|
+
|
|
161
|
+
export const serverConfig = envParser
|
|
162
|
+
.create((get) => ({
|
|
163
|
+
// Add server-only secrets here
|
|
164
|
+
// Example: stripeSecretKey: get('STRIPE_SECRET_KEY').string(),
|
|
165
|
+
}))
|
|
166
|
+
.parse();
|
|
167
|
+
`;
|
|
168
|
+
|
|
136
169
|
// Auth client for better-auth
|
|
137
170
|
const authClientTs = `import { createAuthClient } from 'better-auth/react';
|
|
138
171
|
import { magicLinkClient } from 'better-auth/client/plugins';
|
|
172
|
+
import { clientConfig } from '~/config/client';
|
|
139
173
|
|
|
140
174
|
export const authClient = createAuthClient({
|
|
141
|
-
baseURL:
|
|
175
|
+
baseURL: clientConfig.authUrl,
|
|
142
176
|
plugins: [magicLinkClient()],
|
|
143
177
|
});
|
|
144
178
|
|
|
@@ -163,9 +197,10 @@ export function Providers({ children }: { children: React.ReactNode }) {
|
|
|
163
197
|
// API client setup - uses createApi with shared QueryClient
|
|
164
198
|
const apiIndexTs = `import { createApi } from './openapi';
|
|
165
199
|
import { getQueryClient } from '~/lib/query-client';
|
|
200
|
+
import { clientConfig } from '~/config/client';
|
|
166
201
|
|
|
167
202
|
export const api = createApi({
|
|
168
|
-
baseURL:
|
|
203
|
+
baseURL: clientConfig.apiUrl,
|
|
169
204
|
queryClient: getQueryClient(),
|
|
170
205
|
});
|
|
171
206
|
`;
|
|
@@ -295,6 +330,14 @@ node_modules/
|
|
|
295
330
|
path: 'apps/web/src/app/page.tsx',
|
|
296
331
|
content: pageTsx,
|
|
297
332
|
},
|
|
333
|
+
{
|
|
334
|
+
path: 'apps/web/src/config/client.ts',
|
|
335
|
+
content: clientConfigTs,
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
path: 'apps/web/src/config/server.ts',
|
|
339
|
+
content: serverConfigTs,
|
|
340
|
+
},
|
|
298
341
|
{
|
|
299
342
|
path: 'apps/web/src/lib/query-client.ts',
|
|
300
343
|
content: queryClientTs,
|
package/src/workspace/schema.ts
CHANGED
|
@@ -543,6 +543,14 @@ const AppConfigSchema = z
|
|
|
543
543
|
framework: FrameworkSchema.optional(),
|
|
544
544
|
client: ClientConfigSchema.optional(),
|
|
545
545
|
|
|
546
|
+
// Frontend-specific: config file paths for env sniffing (calls .parse() at import)
|
|
547
|
+
config: z
|
|
548
|
+
.object({
|
|
549
|
+
client: z.string().optional(),
|
|
550
|
+
server: z.string().optional(),
|
|
551
|
+
})
|
|
552
|
+
.optional(),
|
|
553
|
+
|
|
546
554
|
// Auth-specific
|
|
547
555
|
provider: AuthProviderSchema.optional(),
|
|
548
556
|
})
|
package/src/workspace/types.ts
CHANGED
|
@@ -614,6 +614,29 @@ interface AppConfigBase {
|
|
|
614
614
|
*/
|
|
615
615
|
client?: ClientConfig;
|
|
616
616
|
|
|
617
|
+
/**
|
|
618
|
+
* Config file paths for frontend environment sniffing.
|
|
619
|
+
*
|
|
620
|
+
* Points to file(s) that call EnvironmentParser.parse() at import time.
|
|
621
|
+
* The sniffer imports these files and captures all env vars accessed.
|
|
622
|
+
*
|
|
623
|
+
* Dependencies are auto-generated as NEXT_PUBLIC_{DEP}_URL variables.
|
|
624
|
+
*
|
|
625
|
+
* @example
|
|
626
|
+
* ```ts
|
|
627
|
+
* config: {
|
|
628
|
+
* client: './src/config/client.ts', // NEXT_PUBLIC_* vars for browser
|
|
629
|
+
* server: './src/config/server.ts', // Server-only vars for SSR
|
|
630
|
+
* }
|
|
631
|
+
* ```
|
|
632
|
+
*/
|
|
633
|
+
config?: {
|
|
634
|
+
/** Client-side config (NEXT_PUBLIC_* vars, available in browser) */
|
|
635
|
+
client?: string;
|
|
636
|
+
/** Server-side config (all env vars, for SSR/API routes) */
|
|
637
|
+
server?: string;
|
|
638
|
+
};
|
|
639
|
+
|
|
617
640
|
// ─────────────────────────────────────────────────────────────────
|
|
618
641
|
// Deployment
|
|
619
642
|
// ─────────────────────────────────────────────────────────────────
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Route53Provider-DOWmFnwN.mjs","names":["options: Route53ProviderOptions","domain: string","type: string","validTypes: DnsRecordType[]","recordName: string","records: DnsRecord[]","nextRecordName: string | undefined","nextRecordType: RRType | undefined","records: UpsertDnsRecord[]","results: UpsertResult[]"],"sources":["../src/deploy/dns/Route53Provider.ts"],"sourcesContent":["/**\n * Route53 DNS Provider\n *\n * Implements DnsProvider interface using AWS Route53.\n */\n\nimport {\n\tChangeResourceRecordSetsCommand,\n\tListHostedZonesByNameCommand,\n\tListResourceRecordSetsCommand,\n\tRoute53Client,\n\ttype RRType,\n} from '@aws-sdk/client-route-53';\nimport { fromIni } from '@aws-sdk/credential-providers';\nimport type {\n\tDnsProvider,\n\tDnsRecord,\n\tDnsRecordType,\n\tUpsertDnsRecord,\n\tUpsertResult,\n} from './DnsProvider';\n\nexport interface Route53ProviderOptions {\n\t/** AWS region (optional - uses AWS_REGION env var if not provided) */\n\tregion?: string;\n\t/** AWS profile name (optional - uses default credential chain if not provided) */\n\tprofile?: string;\n\t/** Hosted zone ID (optional - auto-detected from domain if not provided) */\n\thostedZoneId?: string;\n\t/** Custom endpoint for testing with localstack */\n\tendpoint?: string;\n}\n\n/**\n * Route53 DNS provider implementation.\n *\n * Uses AWS default credential chain for authentication.\n * Region can be specified or will use AWS_REGION/AWS_DEFAULT_REGION env vars.\n * Profile can be specified to use a named profile from ~/.aws/credentials.\n */\nexport class Route53Provider implements DnsProvider {\n\treadonly name = 'route53';\n\tprivate client: Route53Client;\n\tprivate hostedZoneId?: string;\n\tprivate hostedZoneCache: Map<string, string> = new Map();\n\n\tconstructor(options: Route53ProviderOptions = {}) {\n\t\tthis.client = new Route53Client({\n\t\t\t...(options.region && { region: options.region }),\n\t\t\t...(options.endpoint && { endpoint: options.endpoint }),\n\t\t\t...(options.profile && {\n\t\t\t\tcredentials: fromIni({ profile: options.profile }),\n\t\t\t}),\n\t\t});\n\t\tthis.hostedZoneId = options.hostedZoneId;\n\t}\n\n\t/**\n\t * Get the hosted zone ID for a domain.\n\t * Uses cache to avoid repeated API calls.\n\t */\n\tprivate async getHostedZoneId(domain: string): Promise<string> {\n\t\t// Use configured zone ID if provided\n\t\tif (this.hostedZoneId) {\n\t\t\treturn this.hostedZoneId;\n\t\t}\n\n\t\t// Check cache\n\t\tif (this.hostedZoneCache.has(domain)) {\n\t\t\treturn this.hostedZoneCache.get(domain)!;\n\t\t}\n\n\t\t// Auto-detect from domain\n\t\tconst command = new ListHostedZonesByNameCommand({\n\t\t\tDNSName: domain,\n\t\t\tMaxItems: 1,\n\t\t});\n\n\t\tconst response = await this.client.send(command);\n\t\tconst zones = response.HostedZones ?? [];\n\n\t\t// Find exact match (domain with trailing dot)\n\t\tconst normalizedDomain = domain.endsWith('.') ? domain : `${domain}.`;\n\t\tconst zone = zones.find((z) => z.Name === normalizedDomain);\n\n\t\tif (!zone?.Id) {\n\t\t\tthrow new Error(\n\t\t\t\t`No hosted zone found for domain: ${domain}. Create one in Route53 or provide hostedZoneId in config.`,\n\t\t\t);\n\t\t}\n\n\t\t// Zone ID comes as \"/hostedzone/Z1234567890\" - extract just the ID\n\t\tconst zoneId = zone.Id.replace('/hostedzone/', '');\n\t\tthis.hostedZoneCache.set(domain, zoneId);\n\t\treturn zoneId;\n\t}\n\n\t/**\n\t * Convert Route53 record type to our DnsRecordType.\n\t * Excludes NS and SOA which are auto-managed by Route53 for the zone.\n\t */\n\tprivate toRecordType(type: string): DnsRecordType | null {\n\t\t// Exclude NS and SOA which are auto-managed zone records\n\t\tconst managedTypes = ['NS', 'SOA'];\n\t\tif (managedTypes.includes(type)) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst validTypes: DnsRecordType[] = [\n\t\t\t'A',\n\t\t\t'AAAA',\n\t\t\t'CNAME',\n\t\t\t'MX',\n\t\t\t'TXT',\n\t\t\t'SRV',\n\t\t\t'CAA',\n\t\t];\n\t\treturn validTypes.includes(type as DnsRecordType)\n\t\t\t? (type as DnsRecordType)\n\t\t\t: null;\n\t}\n\n\t/**\n\t * Extract subdomain from full record name relative to domain.\n\t */\n\tprivate extractSubdomain(recordName: string, domain: string): string {\n\t\tconst normalizedDomain = domain.endsWith('.') ? domain : `${domain}.`;\n\t\tconst normalizedName = recordName.endsWith('.')\n\t\t\t? recordName\n\t\t\t: `${recordName}.`;\n\n\t\tif (normalizedName === normalizedDomain) {\n\t\t\treturn '@';\n\t\t}\n\n\t\t// Remove the domain suffix\n\t\tconst subdomain = normalizedName.replace(`.${normalizedDomain}`, '');\n\t\treturn subdomain.replace(/\\.$/, ''); // Remove trailing dot if any\n\t}\n\n\tasync getRecords(domain: string): Promise<DnsRecord[]> {\n\t\tconst zoneId = await this.getHostedZoneId(domain);\n\t\tconst records: DnsRecord[] = [];\n\n\t\tlet nextRecordName: string | undefined;\n\t\tlet nextRecordType: RRType | undefined;\n\n\t\t// Paginate through all records\n\t\tdo {\n\t\t\tconst command = new ListResourceRecordSetsCommand({\n\t\t\t\tHostedZoneId: zoneId,\n\t\t\t\tStartRecordName: nextRecordName,\n\t\t\t\tStartRecordType: nextRecordType,\n\t\t\t\tMaxItems: 100,\n\t\t\t});\n\n\t\t\tconst response = await this.client.send(command);\n\n\t\t\tfor (const recordSet of response.ResourceRecordSets ?? []) {\n\t\t\t\tconst type = this.toRecordType(recordSet.Type ?? '');\n\t\t\t\tif (!type || !recordSet.Name) continue;\n\n\t\t\t\tconst values = (recordSet.ResourceRecords ?? [])\n\t\t\t\t\t.map((r) => r.Value)\n\t\t\t\t\t.filter((v): v is string => !!v);\n\n\t\t\t\trecords.push({\n\t\t\t\t\tname: this.extractSubdomain(recordSet.Name, domain),\n\t\t\t\t\ttype,\n\t\t\t\t\tttl: recordSet.TTL ?? 300,\n\t\t\t\t\tvalues,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (response.IsTruncated) {\n\t\t\t\tnextRecordName = response.NextRecordName;\n\t\t\t\tnextRecordType = response.NextRecordType;\n\t\t\t} else {\n\t\t\t\tnextRecordName = undefined;\n\t\t\t}\n\t\t} while (nextRecordName);\n\n\t\treturn records;\n\t}\n\n\tasync upsertRecords(\n\t\tdomain: string,\n\t\trecords: UpsertDnsRecord[],\n\t): Promise<UpsertResult[]> {\n\t\tconst zoneId = await this.getHostedZoneId(domain);\n\t\tconst results: UpsertResult[] = [];\n\n\t\t// Get existing records to determine if creating or updating\n\t\tconst existingRecords = await this.getRecords(domain);\n\n\t\t// Process records in batches (Route53 allows max 1000 changes per request)\n\t\tconst batchSize = 100;\n\t\tfor (let i = 0; i < records.length; i += batchSize) {\n\t\t\tconst batch = records.slice(i, i + batchSize);\n\t\t\tconst changes = [];\n\n\t\t\tfor (const record of batch) {\n\t\t\t\tconst existing = existingRecords.find(\n\t\t\t\t\t(r) => r.name === record.name && r.type === record.type,\n\t\t\t\t);\n\n\t\t\t\tconst existingValue = existing?.values?.[0];\n\n\t\t\t\tif (existing && existingValue === record.value) {\n\t\t\t\t\t// Record exists with same value - unchanged\n\t\t\t\t\tresults.push({\n\t\t\t\t\t\trecord,\n\t\t\t\t\t\tcreated: false,\n\t\t\t\t\t\tunchanged: true,\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Build full record name\n\t\t\t\tconst recordName =\n\t\t\t\t\trecord.name === '@' ? domain : `${record.name}.${domain}`;\n\n\t\t\t\tchanges.push({\n\t\t\t\t\tAction: 'UPSERT' as const,\n\t\t\t\t\tResourceRecordSet: {\n\t\t\t\t\t\tName: recordName,\n\t\t\t\t\t\tType: record.type,\n\t\t\t\t\t\tTTL: record.ttl,\n\t\t\t\t\t\tResourceRecords: [{ Value: record.value }],\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresults.push({\n\t\t\t\t\trecord,\n\t\t\t\t\tcreated: !existing,\n\t\t\t\t\tunchanged: false,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Execute batch if there are changes\n\t\t\tif (changes.length > 0) {\n\t\t\t\tconst command = new ChangeResourceRecordSetsCommand({\n\t\t\t\t\tHostedZoneId: zoneId,\n\t\t\t\t\tChangeBatch: {\n\t\t\t\t\t\tComment: 'Upsert by gkm deploy',\n\t\t\t\t\t\tChanges: changes,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tawait this.client.send(command);\n\t\t\t}\n\t\t}\n\n\t\treturn results;\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Route53Provider-xrWuBXih.cjs","names":["options: Route53ProviderOptions","Route53Client","domain: string","ListHostedZonesByNameCommand","type: string","validTypes: DnsRecordType[]","recordName: string","records: DnsRecord[]","nextRecordName: string | undefined","nextRecordType: RRType | undefined","ListResourceRecordSetsCommand","records: UpsertDnsRecord[]","results: UpsertResult[]","ChangeResourceRecordSetsCommand"],"sources":["../src/deploy/dns/Route53Provider.ts"],"sourcesContent":["/**\n * Route53 DNS Provider\n *\n * Implements DnsProvider interface using AWS Route53.\n */\n\nimport {\n\tChangeResourceRecordSetsCommand,\n\tListHostedZonesByNameCommand,\n\tListResourceRecordSetsCommand,\n\tRoute53Client,\n\ttype RRType,\n} from '@aws-sdk/client-route-53';\nimport { fromIni } from '@aws-sdk/credential-providers';\nimport type {\n\tDnsProvider,\n\tDnsRecord,\n\tDnsRecordType,\n\tUpsertDnsRecord,\n\tUpsertResult,\n} from './DnsProvider';\n\nexport interface Route53ProviderOptions {\n\t/** AWS region (optional - uses AWS_REGION env var if not provided) */\n\tregion?: string;\n\t/** AWS profile name (optional - uses default credential chain if not provided) */\n\tprofile?: string;\n\t/** Hosted zone ID (optional - auto-detected from domain if not provided) */\n\thostedZoneId?: string;\n\t/** Custom endpoint for testing with localstack */\n\tendpoint?: string;\n}\n\n/**\n * Route53 DNS provider implementation.\n *\n * Uses AWS default credential chain for authentication.\n * Region can be specified or will use AWS_REGION/AWS_DEFAULT_REGION env vars.\n * Profile can be specified to use a named profile from ~/.aws/credentials.\n */\nexport class Route53Provider implements DnsProvider {\n\treadonly name = 'route53';\n\tprivate client: Route53Client;\n\tprivate hostedZoneId?: string;\n\tprivate hostedZoneCache: Map<string, string> = new Map();\n\n\tconstructor(options: Route53ProviderOptions = {}) {\n\t\tthis.client = new Route53Client({\n\t\t\t...(options.region && { region: options.region }),\n\t\t\t...(options.endpoint && { endpoint: options.endpoint }),\n\t\t\t...(options.profile && {\n\t\t\t\tcredentials: fromIni({ profile: options.profile }),\n\t\t\t}),\n\t\t});\n\t\tthis.hostedZoneId = options.hostedZoneId;\n\t}\n\n\t/**\n\t * Get the hosted zone ID for a domain.\n\t * Uses cache to avoid repeated API calls.\n\t */\n\tprivate async getHostedZoneId(domain: string): Promise<string> {\n\t\t// Use configured zone ID if provided\n\t\tif (this.hostedZoneId) {\n\t\t\treturn this.hostedZoneId;\n\t\t}\n\n\t\t// Check cache\n\t\tif (this.hostedZoneCache.has(domain)) {\n\t\t\treturn this.hostedZoneCache.get(domain)!;\n\t\t}\n\n\t\t// Auto-detect from domain\n\t\tconst command = new ListHostedZonesByNameCommand({\n\t\t\tDNSName: domain,\n\t\t\tMaxItems: 1,\n\t\t});\n\n\t\tconst response = await this.client.send(command);\n\t\tconst zones = response.HostedZones ?? [];\n\n\t\t// Find exact match (domain with trailing dot)\n\t\tconst normalizedDomain = domain.endsWith('.') ? domain : `${domain}.`;\n\t\tconst zone = zones.find((z) => z.Name === normalizedDomain);\n\n\t\tif (!zone?.Id) {\n\t\t\tthrow new Error(\n\t\t\t\t`No hosted zone found for domain: ${domain}. Create one in Route53 or provide hostedZoneId in config.`,\n\t\t\t);\n\t\t}\n\n\t\t// Zone ID comes as \"/hostedzone/Z1234567890\" - extract just the ID\n\t\tconst zoneId = zone.Id.replace('/hostedzone/', '');\n\t\tthis.hostedZoneCache.set(domain, zoneId);\n\t\treturn zoneId;\n\t}\n\n\t/**\n\t * Convert Route53 record type to our DnsRecordType.\n\t * Excludes NS and SOA which are auto-managed by Route53 for the zone.\n\t */\n\tprivate toRecordType(type: string): DnsRecordType | null {\n\t\t// Exclude NS and SOA which are auto-managed zone records\n\t\tconst managedTypes = ['NS', 'SOA'];\n\t\tif (managedTypes.includes(type)) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst validTypes: DnsRecordType[] = [\n\t\t\t'A',\n\t\t\t'AAAA',\n\t\t\t'CNAME',\n\t\t\t'MX',\n\t\t\t'TXT',\n\t\t\t'SRV',\n\t\t\t'CAA',\n\t\t];\n\t\treturn validTypes.includes(type as DnsRecordType)\n\t\t\t? (type as DnsRecordType)\n\t\t\t: null;\n\t}\n\n\t/**\n\t * Extract subdomain from full record name relative to domain.\n\t */\n\tprivate extractSubdomain(recordName: string, domain: string): string {\n\t\tconst normalizedDomain = domain.endsWith('.') ? domain : `${domain}.`;\n\t\tconst normalizedName = recordName.endsWith('.')\n\t\t\t? recordName\n\t\t\t: `${recordName}.`;\n\n\t\tif (normalizedName === normalizedDomain) {\n\t\t\treturn '@';\n\t\t}\n\n\t\t// Remove the domain suffix\n\t\tconst subdomain = normalizedName.replace(`.${normalizedDomain}`, '');\n\t\treturn subdomain.replace(/\\.$/, ''); // Remove trailing dot if any\n\t}\n\n\tasync getRecords(domain: string): Promise<DnsRecord[]> {\n\t\tconst zoneId = await this.getHostedZoneId(domain);\n\t\tconst records: DnsRecord[] = [];\n\n\t\tlet nextRecordName: string | undefined;\n\t\tlet nextRecordType: RRType | undefined;\n\n\t\t// Paginate through all records\n\t\tdo {\n\t\t\tconst command = new ListResourceRecordSetsCommand({\n\t\t\t\tHostedZoneId: zoneId,\n\t\t\t\tStartRecordName: nextRecordName,\n\t\t\t\tStartRecordType: nextRecordType,\n\t\t\t\tMaxItems: 100,\n\t\t\t});\n\n\t\t\tconst response = await this.client.send(command);\n\n\t\t\tfor (const recordSet of response.ResourceRecordSets ?? []) {\n\t\t\t\tconst type = this.toRecordType(recordSet.Type ?? '');\n\t\t\t\tif (!type || !recordSet.Name) continue;\n\n\t\t\t\tconst values = (recordSet.ResourceRecords ?? [])\n\t\t\t\t\t.map((r) => r.Value)\n\t\t\t\t\t.filter((v): v is string => !!v);\n\n\t\t\t\trecords.push({\n\t\t\t\t\tname: this.extractSubdomain(recordSet.Name, domain),\n\t\t\t\t\ttype,\n\t\t\t\t\tttl: recordSet.TTL ?? 300,\n\t\t\t\t\tvalues,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (response.IsTruncated) {\n\t\t\t\tnextRecordName = response.NextRecordName;\n\t\t\t\tnextRecordType = response.NextRecordType;\n\t\t\t} else {\n\t\t\t\tnextRecordName = undefined;\n\t\t\t}\n\t\t} while (nextRecordName);\n\n\t\treturn records;\n\t}\n\n\tasync upsertRecords(\n\t\tdomain: string,\n\t\trecords: UpsertDnsRecord[],\n\t): Promise<UpsertResult[]> {\n\t\tconst zoneId = await this.getHostedZoneId(domain);\n\t\tconst results: UpsertResult[] = [];\n\n\t\t// Get existing records to determine if creating or updating\n\t\tconst existingRecords = await this.getRecords(domain);\n\n\t\t// Process records in batches (Route53 allows max 1000 changes per request)\n\t\tconst batchSize = 100;\n\t\tfor (let i = 0; i < records.length; i += batchSize) {\n\t\t\tconst batch = records.slice(i, i + batchSize);\n\t\t\tconst changes = [];\n\n\t\t\tfor (const record of batch) {\n\t\t\t\tconst existing = existingRecords.find(\n\t\t\t\t\t(r) => r.name === record.name && r.type === record.type,\n\t\t\t\t);\n\n\t\t\t\tconst existingValue = existing?.values?.[0];\n\n\t\t\t\tif (existing && existingValue === record.value) {\n\t\t\t\t\t// Record exists with same value - unchanged\n\t\t\t\t\tresults.push({\n\t\t\t\t\t\trecord,\n\t\t\t\t\t\tcreated: false,\n\t\t\t\t\t\tunchanged: true,\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Build full record name\n\t\t\t\tconst recordName =\n\t\t\t\t\trecord.name === '@' ? domain : `${record.name}.${domain}`;\n\n\t\t\t\tchanges.push({\n\t\t\t\t\tAction: 'UPSERT' as const,\n\t\t\t\t\tResourceRecordSet: {\n\t\t\t\t\t\tName: recordName,\n\t\t\t\t\t\tType: record.type,\n\t\t\t\t\t\tTTL: record.ttl,\n\t\t\t\t\t\tResourceRecords: [{ Value: record.value }],\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresults.push({\n\t\t\t\t\trecord,\n\t\t\t\t\tcreated: !existing,\n\t\t\t\t\tunchanged: false,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Execute batch if there are changes\n\t\t\tif (changes.length > 0) {\n\t\t\t\tconst command = new ChangeResourceRecordSetsCommand({\n\t\t\t\t\tHostedZoneId: zoneId,\n\t\t\t\t\tChangeBatch: {\n\t\t\t\t\t\tComment: 'Upsert by gkm deploy',\n\t\t\t\t\t\tChanges: changes,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tawait this.client.send(command);\n\t\t\t}\n\t\t}\n\n\t\treturn results;\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-DvpWzLD7.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-DzmZ6SUW.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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"}
|