Share env vars client-side using @Public decorator (#6627)

* fix: public env vars using decorator

* fix: relocate

* fix: use env.public

* fix: register public env vars across plugins

* fix: test

* fix: tsc

* fix: mark remaining ones as public

* fix: move oidc ones to plugin

* fix: prevent overwrite

* fix: review
This commit is contained in:
Apoorv Mishra
2024-03-09 14:48:59 +05:30
committed by GitHub
parent 0983dd91b6
commit 34e8a64b50
13 changed files with 119 additions and 93 deletions

View File

@@ -1,5 +1,3 @@
import { PublicEnv } from "./types";
const env = typeof window === "undefined" ? process.env : window.env;
export default env as PublicEnv;
export default env as Record<string, any>;

View File

@@ -49,26 +49,7 @@ export enum MentionType {
}
export type PublicEnv = {
URL: string;
CDN_URL: string;
COLLABORATION_URL: string;
AWS_S3_UPLOAD_BUCKET_URL: string;
AWS_S3_ACCELERATE_URL: string;
ENVIRONMENT: string;
SENTRY_DSN: string | undefined;
SENTRY_TUNNEL: string | undefined;
SLACK_CLIENT_ID: string | undefined;
SLACK_APP_ID: string | undefined;
FILE_STORAGE_IMPORT_MAX_SIZE: number;
EMAIL_ENABLED: boolean;
PDF_EXPORT_ENABLED: boolean;
DEFAULT_LANGUAGE: string;
GOOGLE_ANALYTICS_ID: string | undefined;
RELEASE: string | undefined;
APP_NAME: string;
ROOT_SHARE_ID?: string;
OIDC_DISABLE_REDIRECT?: boolean;
OIDC_LOGOUT_URI?: string;
analytics: {
service?: IntegrationService | UserCreatableIntegrationService;
settings?: IntegrationSettings<IntegrationType.Analytics>;

View File

@@ -9,7 +9,7 @@ import { RESERVED_SUBDOMAINS, getBaseDomain, parseDomain } from "./domains";
* @returns The path with the CDN url prepended.
*/
export function cdnPath(path: string): string {
return `${env.CDN_URL}${path}`;
return `${env.CDN_URL ?? ""}${path}`;
}
/**