diff --git a/packages/twenty-server/src/engine/core-modules/application/pre-installed-apps/pre-installed-apps.service.ts b/packages/twenty-server/src/engine/core-modules/application/pre-installed-apps/pre-installed-apps.service.ts index 83c7b65af7a..a0cdd18936a 100644 --- a/packages/twenty-server/src/engine/core-modules/application/pre-installed-apps/pre-installed-apps.service.ts +++ b/packages/twenty-server/src/engine/core-modules/application/pre-installed-apps/pre-installed-apps.service.ts @@ -10,6 +10,7 @@ import { ApplicationRegistrationVariableEntity } from 'src/engine/core-modules/a import { ApplicationRegistrationEntity } from 'src/engine/core-modules/application/application-registration/application-registration.entity'; import { ApplicationRegistrationSourceType } from 'src/engine/core-modules/application/application-registration/enums/application-registration-source-type.enum'; import { ApplicationRegistrationService } from 'src/engine/core-modules/application/application-registration/application-registration.service'; +import { parsePreInstalledApps } from 'src/engine/core-modules/application/pre-installed-apps/utils/parse-pre-installed-apps.util'; import { SecretEncryptionService } from 'src/engine/core-modules/secret-encryption/secret-encryption.service'; import { TwentyConfigService } from 'src/engine/core-modules/twenty-config/twenty-config.service'; @@ -49,12 +50,9 @@ export class PreInstalledAppsService implements OnApplicationBootstrap { } getPreInstalledPackageNames(): string[] { - const raw = this.twentyConfigService.get('PRE_INSTALLED_APPS') ?? ''; - - return raw - .split(',') - .map((name) => name.trim()) - .filter((name) => name.length > 0); + return parsePreInstalledApps( + this.twentyConfigService.get('PRE_INSTALLED_APPS'), + ); } // Idempotent: fetches each pre-installed package's manifest from the diff --git a/packages/twenty-server/src/engine/core-modules/application/pre-installed-apps/utils/parse-pre-installed-apps.util.ts b/packages/twenty-server/src/engine/core-modules/application/pre-installed-apps/utils/parse-pre-installed-apps.util.ts new file mode 100644 index 00000000000..274d1a244d8 --- /dev/null +++ b/packages/twenty-server/src/engine/core-modules/application/pre-installed-apps/utils/parse-pre-installed-apps.util.ts @@ -0,0 +1,9 @@ +// Parses the `PRE_INSTALLED_APPS` env string into a list of npm package +// names. Shared between the config validator (at startup-time) and +// PreInstalledAppsService (at runtime) so the two code paths can't drift +// on whitespace/empty handling. +export const parsePreInstalledApps = (raw: string | undefined): string[] => + (raw ?? '') + .split(',') + .map((name) => name.trim()) + .filter((name) => name.length > 0);