feat: add durable asset synchronization worker
This commit is contained in:
@@ -12,9 +12,11 @@ export interface VaultProject {
|
||||
export const BOOTSTRAP_KEYS = ['INFISICAL_UNIVERSAL_AUTH_CLIENT_ID', 'INFISICAL_UNIVERSAL_AUTH_CLIENT_SECRET'] as const;
|
||||
export const APPLICATION_KEYS = [
|
||||
'EVE_CLIENT_ID', 'EVE_CLIENT_SECRET', 'TYPESAFE_API_KEY', 'TOKEN_ENCRYPTION_KEY',
|
||||
'CONVEX_BRIDGE_SECRET', 'APP_AUTH_PRIVATE_KEY', 'APP_AUTH_JWKS',
|
||||
'CONVEX_BRIDGE_SECRET', 'CONVEX_SYNC_WORKER_SECRET', 'APP_AUTH_PRIVATE_KEY', 'APP_AUTH_JWKS',
|
||||
] as const;
|
||||
export const REQUIRED_KEYS = ['EVE_CLIENT_ID', 'TOKEN_ENCRYPTION_KEY', 'CONVEX_BRIDGE_SECRET', 'APP_AUTH_PRIVATE_KEY', 'APP_AUTH_JWKS'] as const;
|
||||
export const WORKER_APPLICATION_KEYS = ['EVE_CLIENT_ID', 'EVE_CLIENT_SECRET', 'TOKEN_ENCRYPTION_KEY', 'CONVEX_SYNC_WORKER_SECRET'] as const;
|
||||
export const CONFIGURE_APPLICATION_KEYS = ['CONVEX_BRIDGE_SECRET', 'CONVEX_SYNC_WORKER_SECRET', 'APP_AUTH_JWKS'] as const;
|
||||
export const REQUIRED_KEYS = ['EVE_CLIENT_ID', 'TOKEN_ENCRYPTION_KEY', 'CONVEX_BRIDGE_SECRET', 'CONVEX_SYNC_WORKER_SECRET', 'APP_AUTH_PRIVATE_KEY', 'APP_AUTH_JWKS'] as const;
|
||||
export const ADMIN_KEY = 'CONVEX_SELF_HOSTED_ADMIN_KEY';
|
||||
export type Environment = Record<string, string | undefined>;
|
||||
export type CliRunner = (args: string[], env: Environment) => Promise<string>;
|
||||
@@ -157,7 +159,7 @@ const PUBLIC_KEYS = new Set([
|
||||
'WEB_BIND_ADDRESS', 'CONVEX_BIND_ADDRESS', 'WEB_PORT', 'CONVEX_PORT', 'CONVEX_SITE_PORT',
|
||||
'CONVEX_IMAGE', 'CONVEX_DASHBOARD_IMAGE', 'RELEASE_ENV',
|
||||
]);
|
||||
export function applicationEnvironment(base: Environment, secrets: Record<string, string>, publicConfig: Environment, deployment = false): Environment {
|
||||
export function applicationEnvironment(base: Environment, secrets: Record<string, string>, publicConfig: Environment, deployment = false, target: 'web' | 'worker' | 'configure' = 'web'): Environment {
|
||||
const env = cleanEnvironment(base);
|
||||
// Public file is the configured deployment, not defaults inherited from Bun's .env.local.
|
||||
for (const [key, value] of Object.entries(publicConfig)) {
|
||||
@@ -165,10 +167,9 @@ export function applicationEnvironment(base: Environment, secrets: Record<string
|
||||
env[key] = value;
|
||||
}
|
||||
// Managed app keys must come from the selected vault, never a stale ambient .env.
|
||||
for (const key of APPLICATION_KEYS) {
|
||||
delete env[key];
|
||||
if (secrets[key] !== undefined) env[key] = secrets[key];
|
||||
}
|
||||
for (const key of APPLICATION_KEYS) delete env[key];
|
||||
const allowedKeys = target === 'worker' ? WORKER_APPLICATION_KEYS : target === 'configure' ? CONFIGURE_APPLICATION_KEYS : APPLICATION_KEYS.filter((key) => key !== 'CONVEX_SYNC_WORKER_SECRET');
|
||||
for (const key of allowedKeys) if (secrets[key] !== undefined) env[key] = secrets[key];
|
||||
if (deployment && secrets[ADMIN_KEY]) env[ADMIN_KEY] = secrets[ADMIN_KEY];
|
||||
return env;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user