From 42f3341e6ebf082df04c634b5686c129412485ed Mon Sep 17 00:00:00 2001 From: "Joshua J." <31038284+joshuajaco@users.noreply.github.com> Date: Wed, 14 Jan 2026 19:30:03 +0100 Subject: [PATCH] feat: string-compiler ESM support (#9465) --- .../string-compiler/src/stringCompiler.d.ts | 10 +++++++++- .../string-compiler/src/stringCompiler.js | 4 ++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/@internationalized/string-compiler/src/stringCompiler.d.ts b/packages/@internationalized/string-compiler/src/stringCompiler.d.ts index f350e42c1b3..bccd32a8587 100644 --- a/packages/@internationalized/string-compiler/src/stringCompiler.d.ts +++ b/packages/@internationalized/string-compiler/src/stringCompiler.d.ts @@ -10,8 +10,16 @@ * governing permissions and limitations under the License. */ +interface Options { + /** + * Output module format. + * @default 'cjs' + */ + format?: 'cjs' | 'esm' +} + /** Compiles an object containing ICU message strings to a JavaScript module. */ -export function compileStrings(messages: Record): string; +export function compileStrings(messages: Record, options?: Options): string; /** Compiles a single ICU message string to JavaScript source code. */ export function compileString(message: string): string; diff --git a/packages/@internationalized/string-compiler/src/stringCompiler.js b/packages/@internationalized/string-compiler/src/stringCompiler.js index 42743bb6541..c9a04c749d1 100644 --- a/packages/@internationalized/string-compiler/src/stringCompiler.js +++ b/packages/@internationalized/string-compiler/src/stringCompiler.js @@ -12,8 +12,8 @@ const {parse, TYPE} = require('@formatjs/icu-messageformat-parser'); -function compileStrings(messages) { - let res = 'module.exports = {'; +function compileStrings(messages, options) { + let res = options?.format === 'esm' ? 'export default {' : 'module.exports = {'; for (let key in messages) { res += ' ' + JSON.stringify(key) + ': ' + compileString(messages[key]) + ',\n'; }