Files
drop/server/server/internal/config/sys-conf.ts
T
DecDuck d7fffe59f9 OIDC & store fixes (#358)
* fix: typos

* fix: platform filtering

* feat: fix tags and create option
2026-02-27 09:15:19 +11:00

95 lines
2.2 KiB
TypeScript

import normalizeUrl from "normalize-url";
class SystemConfig {
private libraryFolder = process.env.LIBRARY ?? "./.data/library";
private dataFolder = process.env.DATA ?? "./.data/data";
private metadataTimeout = parseInt(process.env.METADATA_TIMEOUT ?? "5000");
private externalUrl = normalizeUrl(
process.env.EXTERNAL_URL ?? "http://localhost:3000",
{ stripWWW: false },
);
private dropVersion: string;
private gitRef: string;
private oidcRequireHttps;
private checkForUpdates = getUpdateCheckConfig();
constructor() {
// get drop version and git ref from nuxt config
const config = useRuntimeConfig();
this.dropVersion = config.dropVersion;
this.gitRef = config.gitRef;
const oidcRequireHttps = process.env.OIDC_REQUIRE_HTTPS as
| string
| undefined;
// default to true if not set
this.oidcRequireHttps =
oidcRequireHttps !== undefined &&
oidcRequireHttps.toLocaleLowerCase() === "false"
? false
: true;
}
getLibraryFolder() {
return this.libraryFolder;
}
getDataFolder() {
return this.dataFolder;
}
getMetadataTimeout() {
return this.metadataTimeout;
}
getDropVersion() {
return this.dropVersion;
}
getGitRef() {
return this.gitRef;
}
shouldCheckForUpdates() {
return this.checkForUpdates;
}
getExternalUrl() {
return this.externalUrl;
}
// if oidc should require https for endpoints
shouldOidcRequireHttps() {
return this.oidcRequireHttps;
}
}
export const systemConfig = new SystemConfig();
/**
* Gets the configuration for checking updates based on various conditions
* @returns true if updates should be checked, false otherwise.
*/
function getUpdateCheckConfig(): boolean {
const envCheckUpdates = process.env.CHECK_FOR_UPDATES;
// Check environment variable
if (envCheckUpdates !== undefined) {
// if explicitly set to true or false, return that value
if (envCheckUpdates.toLocaleLowerCase() === "true") {
return true;
} else if (envCheckUpdates.toLocaleLowerCase() === "false") {
return false;
}
} else if (process.env.NODE_ENV === "production") {
// default to true in production
return true;
}
return false;
}