From 79ec279ce3600439d321f9df9f2840056f9394be Mon Sep 17 00:00:00 2001 From: Jakub Romanczyk Date: Mon, 18 Aug 2025 12:46:17 +0200 Subject: [PATCH] fix: validate JS identifier name --- packages/core/src/plugin/validate-options.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/packages/core/src/plugin/validate-options.ts b/packages/core/src/plugin/validate-options.ts index 2ecceab..d2e9596 100644 --- a/packages/core/src/plugin/validate-options.ts +++ b/packages/core/src/plugin/validate-options.ts @@ -1,6 +1,18 @@ import type { ModuleFederationConfig, Shared } from '../types'; import { ConfigError } from '../utils'; +function validateName(name: string) { + const validEcmaIdentifierRegex = + // biome-ignore lint/suspicious/noMisleadingCharacterClass: works + /^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u; + + if (!validEcmaIdentifierRegex.test(name)) { + throw new ConfigError( + `Invalid 'name': ${name}. The 'name' must be a valid JavaScript identifier.` + ); + } +} + function validateFilename(filename: string | undefined) { // filename is optional if (!filename) { @@ -66,6 +78,9 @@ function validateShared(shared: Shared | undefined) { } export function validateOptions(options: ModuleFederationConfig) { + // validate name + validateName(options.name); + // validate filename validateFilename(options.filename);