11import { PgpmOptions } from '@pgpmjs/types' ;
22
3- /**
4- * Extended env options that include GraphQL-related fields.
5- * These fields are parsed from environment variables but typed separately
6- * to avoid coupling @pgpmjs/types to GraphQL dependencies.
7- *
8- * For full type safety with GraphQL options, use LaunchQLOptions from @launchql/types
9- */
10- export interface EnvGraphQLOptions {
11- graphile ?: {
12- schema ?: string | string [ ] ;
13- } ;
14- features ?: {
15- simpleInflection ?: boolean ;
16- oppositeBaseNames ?: boolean ;
17- postgis ?: boolean ;
18- } ;
19- api ?: {
20- enableMetaApi ?: boolean ;
21- isPublic ?: boolean ;
22- exposedSchemas ?: string [ ] ;
23- metaSchemas ?: string [ ] ;
24- anonRole ?: string ;
25- roleName ?: string ;
26- defaultDatabaseId ?: string ;
27- } ;
28- }
29-
30- /**
31- * Combined environment options type that includes both PGPM core options
32- * and GraphQL-related options parsed from environment variables.
33- */
34- export type EnvOptions = PgpmOptions & EnvGraphQLOptions ;
35-
363const parseEnvNumber = ( val ?: string ) : number | undefined => {
374 const num = Number ( val ) ;
385 return ! isNaN ( num ) ? num : undefined ;
@@ -43,7 +10,11 @@ const parseEnvBoolean = (val?: string): boolean | undefined => {
4310 return [ 'true' , '1' , 'yes' ] . includes ( val . toLowerCase ( ) ) ;
4411} ;
4512
46- export const getEnvVars = ( ) : EnvOptions => {
13+ /**
14+ * Parse core PGPM environment variables.
15+ * GraphQL-related env vars (GRAPHILE_*, FEATURES_*, API_*) are handled by @launchql/env.
16+ */
17+ export const getEnvVars = ( ) : PgpmOptions => {
4718 const {
4819 PGROOTDATABASE ,
4920 PGTEMPLATE ,
@@ -66,19 +37,6 @@ export const getEnvVars = (): EnvOptions => {
6637 PGPASSWORD ,
6738 PGDATABASE ,
6839
69- GRAPHILE_SCHEMA ,
70-
71- FEATURES_SIMPLE_INFLECTION ,
72- FEATURES_OPPOSITE_BASE_NAMES ,
73- FEATURES_POSTGIS ,
74- API_ENABLE_META ,
75- API_IS_PUBLIC ,
76- API_EXPOSED_SCHEMAS ,
77- API_META_SCHEMAS ,
78- API_ANON_ROLE ,
79- API_ROLE_NAME ,
80- API_DEFAULT_DATABASE_ID ,
81-
8240 BUCKET_NAME ,
8341 AWS_REGION ,
8442 AWS_ACCESS_KEY ,
@@ -123,27 +81,6 @@ export const getEnvVars = (): EnvOptions => {
12381 ...( PGPASSWORD && { password : PGPASSWORD } ) ,
12482 ...( PGDATABASE && { database : PGDATABASE } ) ,
12583 } ,
126- graphile : {
127- ...( GRAPHILE_SCHEMA && {
128- schema : GRAPHILE_SCHEMA . includes ( ',' )
129- ? GRAPHILE_SCHEMA . split ( ',' ) . map ( s => s . trim ( ) )
130- : GRAPHILE_SCHEMA
131- } ) ,
132- } ,
133- features : {
134- ...( FEATURES_SIMPLE_INFLECTION && { simpleInflection : parseEnvBoolean ( FEATURES_SIMPLE_INFLECTION ) } ) ,
135- ...( FEATURES_OPPOSITE_BASE_NAMES && { oppositeBaseNames : parseEnvBoolean ( FEATURES_OPPOSITE_BASE_NAMES ) } ) ,
136- ...( FEATURES_POSTGIS && { postgis : parseEnvBoolean ( FEATURES_POSTGIS ) } ) ,
137- } ,
138- api : {
139- ...( API_ENABLE_META && { enableMetaApi : parseEnvBoolean ( API_ENABLE_META ) } ) ,
140- ...( API_IS_PUBLIC && { isPublic : parseEnvBoolean ( API_IS_PUBLIC ) } ) ,
141- ...( API_EXPOSED_SCHEMAS && { exposedSchemas : API_EXPOSED_SCHEMAS . split ( ',' ) . map ( s => s . trim ( ) ) } ) ,
142- ...( API_META_SCHEMAS && { metaSchemas : API_META_SCHEMAS . split ( ',' ) . map ( s => s . trim ( ) ) } ) ,
143- ...( API_ANON_ROLE && { anonRole : API_ANON_ROLE } ) ,
144- ...( API_ROLE_NAME && { roleName : API_ROLE_NAME } ) ,
145- ...( API_DEFAULT_DATABASE_ID && { defaultDatabaseId : API_DEFAULT_DATABASE_ID } ) ,
146- } ,
14784 cdn : {
14885 ...( BUCKET_NAME && { bucketName : BUCKET_NAME } ) ,
14986 ...( AWS_REGION && { awsRegion : AWS_REGION } ) ,
0 commit comments