From 691c012be79f8e078884452010c8b0e6c12322b1 Mon Sep 17 00:00:00 2001 From: David Michon Date: Tue, 4 Feb 2025 03:12:59 +0000 Subject: [PATCH 1/3] [webpack5-localization-plugin] Streamline processing --- ...ization-plugin-cache_2025-02-03-23-39.json | 10 + .../api/webpack5-localization-plugin.api.md | 4 +- .../src/AssetProcessor.ts | 249 ++++++++++++------ .../src/LocalizationPlugin.ts | 240 +++++++++-------- .../LocalizedAsyncDynamic.test.ts.snap | 44 ++-- ...micFormatWithNoLocaleFallback.test.ts.snap | 68 ++--- .../LocalizedNoAsync.test.ts.snap | 16 +- .../LocalizedRuntime.test.ts.snap | 16 +- ...edRuntimeDifferentHashLengths.test.ts.snap | 16 +- .../__snapshots__/MixedAsync.test.ts.snap | 24 +- .../MixedAsyncDynamic.test.ts.snap | 44 ++-- .../MixedAsyncNonHashed.test.ts.snap | 8 +- .../src/trueHashes.ts | 8 +- .../src/utilities/Constants.ts | 8 +- 14 files changed, 443 insertions(+), 312 deletions(-) create mode 100644 common/changes/@rushstack/webpack5-localization-plugin/localization-plugin-cache_2025-02-03-23-39.json diff --git a/common/changes/@rushstack/webpack5-localization-plugin/localization-plugin-cache_2025-02-03-23-39.json b/common/changes/@rushstack/webpack5-localization-plugin/localization-plugin-cache_2025-02-03-23-39.json new file mode 100644 index 00000000000..4ffa8afb5dd --- /dev/null +++ b/common/changes/@rushstack/webpack5-localization-plugin/localization-plugin-cache_2025-02-03-23-39.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@rushstack/webpack5-localization-plugin", + "comment": "Leverage webpack caching layer for localized and nonlocalized asset generation. Reduce unnecessary work.", + "type": "minor" + } + ], + "packageName": "@rushstack/webpack5-localization-plugin" +} \ No newline at end of file diff --git a/common/reviews/api/webpack5-localization-plugin.api.md b/common/reviews/api/webpack5-localization-plugin.api.md index ac5be7e80e6..5870ff56ae1 100644 --- a/common/reviews/api/webpack5-localization-plugin.api.md +++ b/common/reviews/api/webpack5-localization-plugin.api.md @@ -125,8 +125,8 @@ export interface _IStringPlaceholder { locFilePath: string; stringName: string; suffix: string; + translations: ReadonlyMap>; value: string; - valuesByLocale: Map; } // @public (undocumented) @@ -147,8 +147,6 @@ export class LocalizationPlugin implements WebpackPluginInstance { getPlaceholder(localizedFileKey: string, stringName: string): _IStringPlaceholder | undefined; // @internal (undocumented) readonly _options: ILocalizationPluginOptions; - // (undocumented) - readonly stringKeys: Map; } // @public (undocumented) diff --git a/webpack/webpack5-localization-plugin/src/AssetProcessor.ts b/webpack/webpack5-localization-plugin/src/AssetProcessor.ts index 9a52310e145..3c45475af66 100644 --- a/webpack/webpack5-localization-plugin/src/AssetProcessor.ts +++ b/webpack/webpack5-localization-plugin/src/AssetProcessor.ts @@ -19,7 +19,6 @@ interface IDynamicReconstructionElement { kind: 'dynamic'; start: number; end: number; - escapedBackslash: string; valueFn: (locale: string) => string; } @@ -44,12 +43,14 @@ interface INonLocalizedReconstructionResult { export interface IProcessAssetOptionsBase { plugin: LocalizationPlugin; compilation: Compilation; + cache: ReturnType; chunk: Chunk; asset: Asset; } export interface IProcessNonLocalizedAssetOptions extends IProcessAssetOptionsBase { fileName: string; + hasUrlGenerator: boolean; noStringsLocaleName: string; formatLocaleForFilenameFn: FormatLocaleForFilenameFn; } @@ -58,6 +59,7 @@ export interface IProcessLocalizedAssetOptions extends IProcessAssetOptionsBase locales: Set; fillMissingTranslationStrings: boolean; defaultLocale: string; + passthroughLocaleName: string | undefined; filenameTemplate: Parameters[0]; formatLocaleForFilenameFn: FormatLocaleForFilenameFn; } @@ -68,16 +70,66 @@ export interface IProcessAssetResult { } export const PLACEHOLDER_REGEX: RegExp = new RegExp( - `${Constants.STRING_PLACEHOLDER_PREFIX}_(\\\\*)_([A-C])_([0-9a-f]+)`, + `${Constants.STRING_PLACEHOLDER_PREFIX}_([A-C])_(\\\\*)_([0-9a-f$]+)_`, 'g' ); -export function processLocalizedAsset(options: IProcessLocalizedAssetOptions): Record { +export interface IProcessedAsset { + filename: string; + source: sources.CachedSource; + info: AssetInfo; +} + +export interface IProcessLocalizedAssetResult { + localizedFiles: Record; + processedAssets: IProcessedAsset[]; +} + +type ItemCacheFacade = ReturnType['getItemCache']>; + +export async function processLocalizedAssetCachedAsync( + options: IProcessLocalizedAssetOptions +): Promise> { + const { compilation, asset, cache } = options; + const { source: originalSource } = asset; + + type ETag = NonNullable>; + const eTag: ETag | null = cache.getLazyHashedEtag(originalSource); + const { name: originName } = asset; + const cacheItem: ItemCacheFacade = cache.getItemCache(originName, eTag); + let output: IProcessLocalizedAssetResult | undefined = await cacheItem.getPromise(); + + if (!output) { + output = processLocalizedAsset(options); + await cacheItem.storePromise(output); + } + + for (const { filename, source, info } of output.processedAssets) { + if (originName === filename) { + // This helper throws if the asset doesn't already exist + // Use the function form so that the object identity of `related` is preserved. + // Since we already read the original info, we don't need fancy merge logic. + compilation.updateAsset(filename, source, () => info); + } else { + // This helper throws if the asset already exists + compilation.emitAsset(filename, source, info); + } + } + + return output.localizedFiles; +} + +export function processLocalizedAsset(options: IProcessLocalizedAssetOptions): IProcessLocalizedAssetResult { const { compilation, asset, chunk, filenameTemplate, locales, formatLocaleForFilenameFn } = options; const { sources, WebpackError } = compilation.compiler.webpack; - const rawSource: sources.CachedSource = new sources.CachedSource(asset.source); + const { source: originalSource } = asset; + + const rawSource: sources.CachedSource = + originalSource instanceof sources.CachedSource + ? originalSource + : new sources.CachedSource(originalSource); const assetSource: string = rawSource.source().toString(); const parsedAsset: IParseResult = _parseStringToReconstructionSequence( @@ -91,6 +143,8 @@ export function processLocalizedAsset(options: IProcessLocalizedAssetOptions): R const localizedFiles: Record = {}; (chunk as ILocalizedWebpackChunk).localizedFiles = localizedFiles; + const processedAssets: IProcessedAsset[] = []; + const { info: originInfo, name: originName } = asset; if (!originInfo.related) { originInfo.related = {}; @@ -101,7 +155,8 @@ export function processLocalizedAsset(options: IProcessLocalizedAssetOptions): R new sources.ReplaceSource(rawSource, locale), parsedAsset.reconstructionSeries, locale, - options.fillMissingTranslationStrings ? options.defaultLocale : undefined + options.fillMissingTranslationStrings ? options.defaultLocale : undefined, + options.passthroughLocaleName ); for (const issue of localeIssues) { @@ -117,7 +172,7 @@ export function processLocalizedAsset(options: IProcessLocalizedAssetOptions): R const fileName: string = compilation.getAssetPath(filenameTemplate, data); - const info: AssetInfo = { + const info: AssetInfo & { locale: string } = { ...originInfo, locale }; @@ -125,20 +180,19 @@ export function processLocalizedAsset(options: IProcessLocalizedAssetOptions): R const wrapped: sources.CachedSource = new sources.CachedSource(localeResult); localizedFiles[locale] = fileName; + processedAssets.push({ + filename: fileName, + source: wrapped, + info + }); + // If file already exists - if (originName === fileName) { - // This helper throws if the asset doesn't already exist - // Use the function form so that the object identity of `related` is preserved. - // Since we already read the original info, we don't need fancy merge logic. - compilation.updateAsset(fileName, wrapped, () => info); - } else { + if (originName !== fileName) { // If A.related points to B, B.related can't point to A or the stats emitter explodes // So just strip the related object for the localized assets info.related = undefined; // We omit the `related` property that does a self-reference. originInfo.related[locale] = fileName; - // This helper throws if the asset already exists - compilation.emitAsset(fileName, wrapped, info); } } @@ -148,35 +202,78 @@ export function processLocalizedAsset(options: IProcessLocalizedAssetOptions): R ); } - return localizedFiles; + return { + localizedFiles, + processedAssets + }; } -export function processNonLocalizedAsset(options: IProcessNonLocalizedAssetOptions): void { - const { asset, fileName, compilation, formatLocaleForFilenameFn } = options; +export async function processNonLocalizedAssetCachedAsync( + options: IProcessNonLocalizedAssetOptions +): Promise { + const { compilation, asset, cache } = options; + const { source: originalSource } = asset; + + type ETag = NonNullable>; + const eTag: ETag | null = cache.getLazyHashedEtag(originalSource); + const { name: originName } = asset; + const cacheItem: ItemCacheFacade = cache.getItemCache(originName, eTag); + let output: IProcessedAsset | undefined = await cacheItem.getPromise(); + + if (!output) { + output = processNonLocalizedAsset(options); + await cacheItem.storePromise(output); + } - const { sources, WebpackError } = compilation.compiler.webpack; + const { filename, source, info } = output; + compilation.updateAsset(originName, source, info); + if (originName !== filename) { + compilation.renameAsset(originName, filename); + } +} - const rawSource: sources.CachedSource = new sources.CachedSource(asset.source); - const assetSource: string = rawSource.source().toString(); +export function processNonLocalizedAsset(options: IProcessNonLocalizedAssetOptions): IProcessedAsset { + const { asset, fileName, compilation, formatLocaleForFilenameFn, hasUrlGenerator: hasJsonP } = options; - const parsedAsset: IParseResult = _parseStringToReconstructionSequence( - options.plugin, - assetSource, - formatLocaleForFilenameFn - ); + const { sources, WebpackError } = compilation.compiler.webpack; - const { info: originInfo } = asset; - const { issues } = parsedAsset; + const rawSource: sources.Source = asset.source; + let cachedSource: sources.CachedSource = + rawSource instanceof sources.CachedSource ? rawSource : new sources.CachedSource(rawSource); + const { info: originInfo } = asset; const locale: string = options.noStringsLocaleName; - const { issues: localeIssues, result } = _reconstructNonLocalized( - new sources.ReplaceSource(rawSource, locale), - parsedAsset.reconstructionSeries, - locale - ); - for (const issue of localeIssues) { - issues.push(issue); + if (hasJsonP) { + const assetSource: string = cachedSource.source().toString(); + const parsedAsset: IParseResult = _parseStringToReconstructionSequence( + options.plugin, + assetSource, + formatLocaleForFilenameFn + ); + + const { issues } = parsedAsset; + + const { issues: localeIssues, result } = _reconstructNonLocalized( + new sources.ReplaceSource(cachedSource, locale), + parsedAsset.reconstructionSeries, + locale + ); + + for (const issue of localeIssues) { + issues.push(issue); + } + + if (issues.length > 0) { + options.compilation.errors.push( + new WebpackError(`localization:\n${issues.map((issue) => ` ${issue}`).join('\n')}`) + ); + } + + cachedSource = new sources.CachedSource(result); + } else { + // Force the CachedSource to cache the concatenated *string*, so that the subsequent ask for the buffer is fast + cachedSource.source(); } const info: AssetInfo = { @@ -184,14 +281,11 @@ export function processNonLocalizedAsset(options: IProcessNonLocalizedAssetOptio locale }; - const wrapped: sources.CachedSource = new sources.CachedSource(result); - compilation.updateAsset(fileName, wrapped, info); - - if (issues.length > 0) { - options.compilation.errors.push( - new WebpackError(`localization:\n${issues.map((issue) => ` ${issue}`).join('\n')}`) - ); - } + return { + filename: fileName, + source: cachedSource, + info + }; } const ESCAPE_MAP: Map = new Map([ @@ -209,7 +303,8 @@ function _reconstructLocalized( result: sources.ReplaceSource, reconstructionSeries: IReconstructionElement[], locale: string, - fallbackLocale: string | undefined + fallbackLocale: string | undefined, + passthroughLocale: string | undefined ): ILocalizedReconstructionResult { const issues: string[] = []; @@ -217,18 +312,19 @@ function _reconstructLocalized( switch (element.kind) { case 'localized': { const { data } = element; - let newValue: string | undefined = data.valuesByLocale.get(locale); + const { stringName, translations } = data; + let newValue: string | undefined = + locale === passthroughLocale ? stringName : translations.get(locale)?.get(stringName); + if (fallbackLocale && newValue === undefined) { + newValue = translations.get(fallbackLocale)?.get(stringName); + } + if (newValue === undefined) { - if (fallbackLocale) { - newValue = data.valuesByLocale.get(fallbackLocale)!; - } else { - issues.push( - `The string "${data.stringName}" in "${data.locFilePath}" is missing in ` + - `the locale ${locale}` - ); - - newValue = '-- MISSING STRING --'; - } + issues.push( + `The string "${stringName}" in "${data.locFilePath}" is missing in ` + `the locale ${locale}` + ); + + newValue = '-- MISSING STRING --'; } const escapedBackslash: string = element.escapedBackslash || '\\'; @@ -313,22 +409,28 @@ function _parseStringToReconstructionSequence( const issues: string[] = []; const reconstructionSeries: IReconstructionElement[] = []; - const jsonStringifyFormatLocaleForFilenameFn: FormatLocaleForFilenameFn = (locale: string) => - JSON.stringify(formatLocaleForFilenameFn(locale)); + let jsonStringifyFormatLocaleForFilenameFn: FormatLocaleForFilenameFn | undefined; - for (const regexResult of source.matchAll(PLACEHOLDER_REGEX)) { - const [placeholder, escapedBackslash, elementLabel, placeholderSerialNumber] = regexResult; - const start: number = regexResult.index; - const end: number = start + placeholder.length; + let index: number = source.indexOf(Constants.STRING_PLACEHOLDER_PREFIX); + const increment: number = Constants.STRING_PLACEHOLDER_PREFIX.length + 1; + while (index >= 0) { + const start: number = index; + const elementStart: number = index + increment; + const elementLabel: string = source.charAt(elementStart); + let end: number = elementStart + 2; - let localizedReconstructionElement: IReconstructionElement; switch (elementLabel) { case Constants.STRING_PLACEHOLDER_LABEL: { - const stringData: IStringPlaceholder | undefined = - plugin.getDataForSerialNumber(placeholderSerialNumber); + const backslashEnd: number = source.indexOf('_', end); + const escapedBackslash: string = source.slice(end, backslashEnd); + end = backslashEnd + 1; + const serialEnd: number = source.indexOf('_', end); + const serial: string = source.slice(end, serialEnd); + end = serialEnd + 1; + + const stringData: IStringPlaceholder | undefined = plugin.getDataForSerialNumber(serial); if (!stringData) { - issues.push(`Missing placeholder ${placeholder}`); - continue; + issues.push(`Missing placeholder ${serial}`); } else { const localizedElement: ILocalizedReconstructionElement = { kind: 'localized', @@ -337,41 +439,38 @@ function _parseStringToReconstructionSequence( escapedBackslash, data: stringData }; - localizedReconstructionElement = localizedElement; + reconstructionSeries.push(localizedElement); } break; } - case Constants.LOCALE_NAME_PLACEHOLDER_LABEL: { const dynamicElement: IDynamicReconstructionElement = { kind: 'dynamic', start, end, - escapedBackslash, valueFn: formatLocaleForFilenameFn }; - localizedReconstructionElement = dynamicElement; + reconstructionSeries.push(dynamicElement); break; } - case Constants.JSONP_PLACEHOLDER_LABEL: { + jsonStringifyFormatLocaleForFilenameFn ||= (locale: string) => + JSON.stringify(formatLocaleForFilenameFn(locale)); const dynamicElement: IDynamicReconstructionElement = { kind: 'dynamic', start, end, - escapedBackslash, valueFn: jsonStringifyFormatLocaleForFilenameFn }; - localizedReconstructionElement = dynamicElement; + reconstructionSeries.push(dynamicElement); break; } - default: { - throw new Error(`Unexpected label ${elementLabel}`); + throw new Error(`Unexpected label ${elementLabel} in pattern ${source.slice(start, end)}`); } } - reconstructionSeries.push(localizedReconstructionElement); + index = source.indexOf(Constants.STRING_PLACEHOLDER_PREFIX, end); } return { diff --git a/webpack/webpack5-localization-plugin/src/LocalizationPlugin.ts b/webpack/webpack5-localization-plugin/src/LocalizationPlugin.ts index d51c2ce7f12..8af635859fa 100644 --- a/webpack/webpack5-localization-plugin/src/LocalizationPlugin.ts +++ b/webpack/webpack5-localization-plugin/src/LocalizationPlugin.ts @@ -17,6 +17,7 @@ import type { } from 'webpack'; import { getPseudolocalizer, type ILocalizationFile, parseResJson } from '@rushstack/localization-utilities'; +import { Async } from '@rushstack/node-core-library/lib/Async'; import * as Constants from './utilities/Constants'; import type { @@ -28,7 +29,7 @@ import type { } from './interfaces'; import type { IAssetPathOptions } from './webpackInterfaces'; import { markEntity, getMark } from './utilities/EntityMarker'; -import { processLocalizedAsset, processNonLocalizedAsset } from './AssetProcessor'; +import { processLocalizedAssetCachedAsync, processNonLocalizedAssetCachedAsync } from './AssetProcessor'; import { getHashFunction, type HashFn, updateAssetHashes } from './trueHashes'; import { chunkIsJs } from './utilities/chunkUtilities'; @@ -47,7 +48,7 @@ export interface IStringPlaceholder { /** * The values of this string in each output locale. */ - valuesByLocale: Map; + translations: ReadonlyMap>; /** * The key used to identify the source file containing the string. */ @@ -58,6 +59,12 @@ export interface IStringPlaceholder { stringName: string; } +export interface IFileTranslationInfo { + placeholders: Map; + translations: Map>; + renderedPlacholders: Record; +} + const PLUGIN_NAME: 'localization' = 'localization'; const pluginForCompiler: WeakMap = new WeakMap(); @@ -80,7 +87,7 @@ export function getPluginInstance(compiler: Compiler | undefined): LocalizationP * @public */ export class LocalizationPlugin implements WebpackPluginInstance { - public readonly stringKeys: Map = new Map(); + private readonly _locFiles: Map = new Map(); /** * @internal @@ -90,7 +97,6 @@ export class LocalizationPlugin implements WebpackPluginInstance { string, Map> > = new Map(); - private _stringPlaceholderCounter: number = 0; private readonly _stringPlaceholderMap: Map = new Map(); private _passthroughLocaleName!: string; private _defaultLocale!: string; @@ -100,11 +106,9 @@ export class LocalizationPlugin implements WebpackPluginInstance { private readonly _pseudolocalizers: Map string> = new Map(); /** - * The outermost map's keys are the locale names. - * The middle map's keys are the resolved, file names. - * The innermost map's keys are the string identifiers and its values are the string values. + * The set of locales that have translations provided. */ - private _resolvedLocalizedStrings: Map>> = new Map(); + private _translatedLocales: Set = new Set(); public constructor(options: ILocalizationPluginOptions) { this._options = options; @@ -184,6 +188,8 @@ export class LocalizationPlugin implements WebpackPluginInstance { ); } + const chunksWithUrlGenerators: WeakSet = new WeakSet(); + compilation.hooks.assetPath.tap( PLUGIN_NAME, (assetPath: string, options: IAssetPathOptions): string => { @@ -198,14 +204,16 @@ export class LocalizationPlugin implements WebpackPluginInstance { const chunkIdsWithStrings: Set = new Set(); const chunkIdsWithoutStrings: Set = new Set(); - if (!chunkWithAsyncURLGenerator) { + const activeChunkWithAsyncUrlGenerator: Chunk | undefined = chunkWithAsyncURLGenerator; + + if (!activeChunkWithAsyncUrlGenerator) { compilation.errors.push( new WebpackError(`No active chunk while constructing async chunk URL generator!`) ); return assetPath; } - const asyncChunks: Set = chunkWithAsyncURLGenerator!.getAllAsyncChunks(); + const asyncChunks: Set = activeChunkWithAsyncUrlGenerator.getAllAsyncChunks(); for (const asyncChunk of asyncChunks) { const chunkId: number | string | null = asyncChunk.id; @@ -228,11 +236,14 @@ export class LocalizationPlugin implements WebpackPluginInstance { const localeExpression: string = (!_chunkHasLocalizedModules( chunkGraph, - chunkWithAsyncURLGenerator!, + activeChunkWithAsyncUrlGenerator, runtimeLocaleExpression ) && runtimeLocaleExpression) || Constants.JSONP_PLACEHOLDER; + if (localeExpression === Constants.JSONP_PLACEHOLDER) { + chunksWithUrlGenerators.add(activeChunkWithAsyncUrlGenerator); + } if (chunkIdsWithStrings.size === 0) { return this._formatLocaleForFilename(this._noStringsLocaleName); @@ -298,7 +309,7 @@ export class LocalizationPlugin implements WebpackPluginInstance { stage: compiler.webpack.Compilation.PROCESS_ASSETS_STAGE_DEV_TOOLING - 1 }, async (): Promise => { - const locales: Set = new Set(this._resolvedLocalizedStrings.keys()); + const locales: Set = this._translatedLocales; const { chunkGraph, chunks } = compilation; const { localizationStats: statsOptions } = this._options; @@ -309,66 +320,80 @@ export class LocalizationPlugin implements WebpackPluginInstance { const localizedEntryPointNames: string[] = []; const localizedChunkNames: string[] = []; - for (const chunk of chunks) { - if (!chunkIsJs(chunk, chunkGraph)) { - continue; - } - - const isLocalized: boolean = _chunkHasLocalizedModules( - chunkGraph, - chunk, - runtimeLocaleExpression - ); + type CacheFacade = ReturnType; + const cache: CacheFacade = compilation.getCache(PLUGIN_NAME); - const template: Parameters[0] = - chunk.filenameTemplate || - (chunk.hasRuntime() ? outputOptions.filename : outputOptions.chunkFilename)!; + await Async.forEachAsync( + chunks, + async (chunk: Chunk) => { + if (!chunkIsJs(chunk, chunkGraph)) { + return; + } - const defaultAssetName: string = compilation.getPath(template, { - chunk, - contentHashType: 'javascript' - // Without locale this should return the name of the default asset - }); + const isLocalized: boolean = _chunkHasLocalizedModules( + chunkGraph, + chunk, + runtimeLocaleExpression + ); - const asset: Asset | undefined = compilation.getAsset(defaultAssetName); - if (!asset) { - compilation.errors.push(new WebpackError(`Missing expected chunk asset ${defaultAssetName}`)); - continue; - } + const template: Parameters[0] = + chunk.filenameTemplate || + (chunk.hasRuntime() ? outputOptions.filename : outputOptions.chunkFilename)!; - if (isLocalized) { - const localizedAssets: Record = processLocalizedAsset({ - // Global values - plugin: this, - compilation, - locales, - defaultLocale: this._defaultLocale, - fillMissingTranslationStrings: this._fillMissingTranslationStrings, - formatLocaleForFilenameFn: this._formatLocaleForFilename, - // Chunk-specific values + const defaultAssetName: string = compilation.getPath(template, { chunk, - asset, - filenameTemplate: template + contentHashType: 'javascript' + // Without locale this should return the name of the default asset }); - if (filesByChunkName && chunk.name) { - filesByChunkName.set(chunk.name, localizedAssets); - (chunk.hasRuntime() ? localizedEntryPointNames : localizedChunkNames).push(chunk.name); + const asset: Asset | undefined = compilation.getAsset(defaultAssetName); + if (!asset) { + compilation.errors.push(new WebpackError(`Missing expected chunk asset ${defaultAssetName}`)); + return; } - } else { - processNonLocalizedAsset({ - // Global values - plugin: this, - compilation, - noStringsLocaleName: this._noStringsLocaleName, - formatLocaleForFilenameFn: this._formatLocaleForFilename, - // Chunk-specific values - chunk, - asset, - fileName: defaultAssetName - }); + + if (isLocalized) { + const localizedAssets: Record = await processLocalizedAssetCachedAsync({ + // Global values + plugin: this, + compilation, + cache, + locales, + defaultLocale: this._defaultLocale, + passthroughLocaleName: this._passthroughLocaleName, + fillMissingTranslationStrings: this._fillMissingTranslationStrings, + formatLocaleForFilenameFn: this._formatLocaleForFilename, + // Chunk-specific values + chunk, + asset, + filenameTemplate: template + }); + + if (filesByChunkName && chunk.name) { + filesByChunkName.set(chunk.name, localizedAssets); + (chunk.hasRuntime() ? localizedEntryPointNames : localizedChunkNames).push(chunk.name); + } + } else { + await processNonLocalizedAssetCachedAsync({ + // Global values + plugin: this, + compilation, + cache, + hasUrlGenerator: chunksWithUrlGenerators.has(chunk), + noStringsLocaleName: this._noStringsLocaleName, + formatLocaleForFilenameFn: this._formatLocaleForFilename, + // Chunk-specific values + chunk, + asset, + fileName: defaultAssetName + }); + } + }, + { + // Only async component is the cache layer + concurrency: 20 } - } + ); if (hashFn) { updateAssetHashes({ @@ -435,7 +460,7 @@ export class LocalizationPlugin implements WebpackPluginInstance { localizedResourceData: ILocalizationFile ): Promise> { const locFileData: ReadonlyMap = convertLocalizationFileToLocData(localizedResourceData); - const resultObject: Record = this._addLocFileAndGetPlaceholders( + const fileInfo: IFileTranslationInfo = this._addLocFileAndGetPlaceholders( this._defaultLocale, localizedFileKey, locFileData @@ -449,11 +474,11 @@ export class LocalizationPlugin implements WebpackPluginInstance { if (!translatedLocFileFromOptions) { missingLocales.push(translatedLocaleName); } else { - const translatedLocFileData: ReadonlyMap = await normalizeLocalizedData( + const translatedLocFileData: ReadonlyMap = await normalizeLocalizedDataAsync( context, translatedLocFileFromOptions ); - this._addTranslations(translatedLocaleName, localizedFileKey, translatedLocFileData); + fileInfo.translations.set(translatedLocaleName, translatedLocFileData); } } @@ -478,11 +503,11 @@ export class LocalizationPlugin implements WebpackPluginInstance { : Object.entries(resolvedTranslatedData); for (const [resolvedLocaleName, resolvedLocaleData] of iterable) { if (resolvedLocaleData) { - const translatedLocFileData: ReadonlyMap = await normalizeLocalizedData( + const translatedLocFileData: ReadonlyMap = await normalizeLocalizedDataAsync( context, resolvedLocaleData ); - this._addTranslations(resolvedLocaleName, localizedFileKey, translatedLocFileData); + fileInfo.translations.set(resolvedLocaleName, translatedLocFileData); } } } @@ -495,20 +520,23 @@ export class LocalizationPlugin implements WebpackPluginInstance { pseudolocFileData.set(stringName, pseudolocalizer(stringValue)); } - this._addTranslations(pseudolocaleName, localizedFileKey, pseudolocFileData); + fileInfo.translations.set(pseudolocaleName, pseudolocFileData); } markEntity(context._module!, true); - return resultObject; + return fileInfo.renderedPlacholders; } /** * @public */ public getPlaceholder(localizedFileKey: string, stringName: string): IStringPlaceholder | undefined { - const stringKey: string = `${localizedFileKey}?${stringName}`; - return this.stringKeys.get(stringKey); + const file: IFileTranslationInfo | undefined = this._locFiles.get(localizedFileKey); + if (!file) { + return undefined; + } + return file.placeholders.get(stringName); } /** @@ -522,56 +550,52 @@ export class LocalizationPlugin implements WebpackPluginInstance { localeName: string, localizedFileKey: string, localizedFileData: ReadonlyMap - ): Record { - const filesMap: Map> = this._resolvedLocalizedStrings.get( - localeName - )!; - - filesMap.set(localizedFileKey, localizedFileData); + ): IFileTranslationInfo { + let fileInfo: IFileTranslationInfo | undefined = this._locFiles.get(localizedFileKey); + if (!fileInfo) { + fileInfo = { + placeholders: new Map(), + translations: new Map(), + renderedPlacholders: {} + }; + this._locFiles.set(localizedFileKey, fileInfo); + } + const { placeholders, translations } = fileInfo; + const locFilePrefix: string = Buffer.from(localizedFileKey, 'utf-8').toString('hex') + '$'; const resultObject: Record = {}; - for (const [stringName, stringValue] of localizedFileData) { - const stringKey: string = `${localizedFileKey}?${stringName}`; - let placeholder: IStringPlaceholder | undefined = this.stringKeys.get(stringKey); + for (const stringName of localizedFileData.keys()) { + let placeholder: IStringPlaceholder | undefined = placeholders.get(stringName); if (!placeholder) { - // TODO: This may need to be a deterministic identifier to support watch / incremental compilation - const suffix: string = `${this._stringPlaceholderCounter++}`; - - const values: Map = new Map(); - values.set(this._passthroughLocaleName, stringName); + const suffix: string = `${locFilePrefix}${Buffer.from(stringName, 'utf-8').toString('hex')}`; placeholder = { - value: `${Constants.STRING_PLACEHOLDER_PREFIX}_\\_${Constants.STRING_PLACEHOLDER_LABEL}_${suffix}`, + value: `${Constants.STRING_PLACEHOLDER_PREFIX}_${Constants.STRING_PLACEHOLDER_LABEL}_\\_${suffix}_`, suffix, - valuesByLocale: values, + translations, locFilePath: localizedFileKey, stringName }; - this.stringKeys.set(stringKey, placeholder); + placeholders.set(stringName, placeholder); this._stringPlaceholderMap.set(suffix, placeholder); } resultObject[stringName] = placeholder.value; - - placeholder.valuesByLocale.set(localeName, stringValue); } - return resultObject; + translations.set(localeName, localizedFileData); + fileInfo.renderedPlacholders = resultObject; + + return fileInfo; } private _addTranslations( localeName: string, - localizedFileKey: string, + fileInfo: IFileTranslationInfo, localizedFileData: ReadonlyMap ): void { - for (const [stringName, stringValue] of localizedFileData) { - const stringKey: string = `${localizedFileKey}?${stringName}`; - const placeholder: IStringPlaceholder | undefined = this.stringKeys.get(stringKey); - if (placeholder) { - placeholder.valuesByLocale.set(localeName, stringValue); - } - } + fileInfo.translations.set(localeName, localizedFileData); } private _initializeAndValidateOptions( @@ -624,7 +648,7 @@ export class LocalizationPlugin implements WebpackPluginInstance { const { usePassthroughLocale, passthroughLocaleName = 'passthrough' } = passthroughLocale; if (usePassthroughLocale) { this._passthroughLocaleName = passthroughLocaleName; - this._resolvedLocalizedStrings.set(passthroughLocaleName, new Map()); + this._translatedLocales.add(passthroughLocaleName); } } // END options.localizedData.passthroughLocale @@ -637,7 +661,7 @@ export class LocalizationPlugin implements WebpackPluginInstance { this._resolvedTranslatedStringsFromOptions.clear(); if (translatedStrings) { for (const [localeName, locale] of Object.entries(translatedStrings)) { - if (this._resolvedLocalizedStrings.has(localeName)) { + if (this._translatedLocales.has(localeName)) { errors.push( new WebpackError( `The locale "${localeName}" appears multiple times. ` + @@ -651,7 +675,7 @@ export class LocalizationPlugin implements WebpackPluginInstance { return { errors, warnings }; } - this._resolvedLocalizedStrings.set(localeName, new Map()); + this._translatedLocales.add(localeName); const resolvedFromOptionsForLocale: Map = new Map(); this._resolvedTranslatedStringsFromOptions.set(localeName, resolvedFromOptionsForLocale); @@ -684,14 +708,14 @@ export class LocalizationPlugin implements WebpackPluginInstance { if (defaultLocale) { const { localeName, fillMissingTranslationStrings } = defaultLocale; if (localeName) { - if (this._resolvedLocalizedStrings.has(localeName)) { + if (this._translatedLocales.has(localeName)) { errors.push(new WebpackError('The default locale is also specified in the translated strings.')); return { errors, warnings }; } else if (!ensureValidLocaleName(localeName)) { return { errors, warnings }; } - this._resolvedLocalizedStrings.set(localeName, new Map()); + this._translatedLocales.add(localeName); this._defaultLocale = localeName; this._fillMissingTranslationStrings = !!fillMissingTranslationStrings; } else { @@ -715,7 +739,7 @@ export class LocalizationPlugin implements WebpackPluginInstance { return { errors, warnings }; } - if (this._resolvedLocalizedStrings.has(pseudolocaleName)) { + if (this._translatedLocales.has(pseudolocaleName)) { errors.push( new WebpackError( `A pseudolocale (${pseudolocaleName}) name is also specified in the translated strings.` @@ -725,7 +749,7 @@ export class LocalizationPlugin implements WebpackPluginInstance { } this._pseudolocalizers.set(pseudolocaleName, getPseudolocalizer(pseudoLocaleOpts)); - this._resolvedLocalizedStrings.set(pseudolocaleName, new Map>()); + this._translatedLocales.add(pseudolocaleName); } } // END options.localizedData.pseudoLocales @@ -821,7 +845,7 @@ function convertLocalizationFileToLocData(locFile: ILocalizationFile): ReadonlyM return locFileData; } -async function normalizeLocalizedData( +async function normalizeLocalizedDataAsync( context: LoaderContext<{}>, localizedData: ILocaleFileData ): Promise> { diff --git a/webpack/webpack5-localization-plugin/src/test/__snapshots__/LocalizedAsyncDynamic.test.ts.snap b/webpack/webpack5-localization-plugin/src/test/__snapshots__/LocalizedAsyncDynamic.test.ts.snap index 018c8cb1115..fe7e026ffc8 100644 --- a/webpack/webpack5-localization-plugin/src/test/__snapshots__/LocalizedAsyncDynamic.test.ts.snap +++ b/webpack/webpack5-localization-plugin/src/test/__snapshots__/LocalizedAsyncDynamic.test.ts.snap @@ -2,12 +2,12 @@ exports[`LocalizationPlugin Handles async localized chunks with a runtime locale expression (minified): Content 1`] = ` Object { - "/release/chunks/async1-LOCALE1-2541dae452be32eb2f84.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[230],{\\"./a/async1.js\\":(s,_,e)=>{e.r(_);var r=e(\\"./a/strings1.resjson\\"),n=e(\\"./a/strings2.resjson\\");console.log(r.t,n.S)},\\"./a/strings1.resjson\\":s=>{s.exports=JSON.parse('{\\"t\\":\\"blah\\"}')},\\"./a/strings2.resjson\\":s=>{s.exports=JSON.parse('{\\"S\\":\\"something else\\"}')}}]);", - "/release/chunks/async1-LOCALE2-2541dae452be32eb2f84.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[230],{\\"./a/async1.js\\":(s,_,e)=>{e.r(_);var r=e(\\"./a/strings1.resjson\\"),n=e(\\"./a/strings2.resjson\\");console.log(r.t,n.S)},\\"./a/strings1.resjson\\":s=>{s.exports=JSON.parse('{\\"t\\":\\"baz\\"}')},\\"./a/strings2.resjson\\":s=>{s.exports=JSON.parse('{\\"S\\":\\"some random translation\\"}')}}]);", - "/release/chunks/async2-LOCALE1-0ebe0de081c0cabfb2ba.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[421],{\\"./a/async2.js\\":(s,_,e)=>{e.r(_);var r=e(\\"./a/strings1.resjson\\"),n=e(\\"./a/strings2.resjson\\");console.log(r.t+n.S)},\\"./a/strings1.resjson\\":s=>{s.exports=JSON.parse('{\\"t\\":\\"blah\\"}')},\\"./a/strings2.resjson\\":s=>{s.exports=JSON.parse('{\\"S\\":\\"something else\\"}')}}]);", - "/release/chunks/async2-LOCALE2-0ebe0de081c0cabfb2ba.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[421],{\\"./a/async2.js\\":(s,_,e)=>{e.r(_);var r=e(\\"./a/strings1.resjson\\"),n=e(\\"./a/strings2.resjson\\");console.log(r.t+n.S)},\\"./a/strings1.resjson\\":s=>{s.exports=JSON.parse('{\\"t\\":\\"baz\\"}')},\\"./a/strings2.resjson\\":s=>{s.exports=JSON.parse('{\\"S\\":\\"some random translation\\"}')}}]);", - "/release/mainSingleChunk-none-6beb5feb0c56936cef12.js": "(()=>{var e,r={},t={};function o(e){var n=t[e];if(void 0!==n)return n.exports;var a=t[e]={exports:{}};return r[e](a,a.exports,o),a.exports}o.m=r,o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((r,t)=>(o.f[t](e,r),r)),[])),o.u=e=>\\"chunks/async1-\\"+self.__locale+\\"-2541dae452be32eb2f84.js\\",o.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},o.l=(r,t,n,a)=>{if(e[r])e[r].push(t);else{var i,l;if(void 0!==n)for(var s=document.getElementsByTagName(\\"script\\"),c=0;c{i.onerror=i.onload=null,clearTimeout(d);var n=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),n&&n.forEach((e=>e(o))),t)return t(o)},d=setTimeout(p.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),l&&document.head.appendChild(i)}},o.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;o.g.importScripts&&(e=o.g.location+\\"\\");var r=o.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),o.p=e})(),(()=>{var e={331:0};o.f.j=(r,t)=>{var n=o.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else{var a=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=a);var i=o.p+o.u(r),l=new Error;o.l(i,(t=>{if(o.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var a=t&&(\\"load\\"===t.type?\\"missing\\":t.type),i=t&&t.target&&t.target.src;l.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+a+\\": \\"+i+\\")\\",l.name=\\"ChunkLoadError\\",l.type=a,l.request=i,n[1](l)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var n,a,[i,l,s]=t,c=0;if(i.some((r=>0!==e[r]))){for(n in l)o.o(l,n)&&(o.m[n]=l[n]);s&&s(o)}for(r&&r(t);c{var e,r={},t={};function n(e){var o=t[e];if(void 0!==o)return o.exports;var a=t[e]={exports:{}};return r[e](a,a.exports,n),a.exports}n.m=r,n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,t)=>(n.f[t](e,r),r)),[])),n.u=e=>\\"chunks/\\"+{230:\\"async1\\",421:\\"async2\\"}[e]+\\"-\\"+self.__locale+\\"-\\"+{230:\\"2541dae452be32eb2f84\\",421:\\"0ebe0de081c0cabfb2ba\\"}[e]+\\".js\\",n.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},n.l=(r,t,o,a)=>{if(e[r])e[r].push(t);else{var i,c;if(void 0!==o)for(var s=document.getElementsByTagName(\\"script\\"),l=0;l{i.onerror=i.onload=null,clearTimeout(d);var o=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),t)return t(n)},d=setTimeout(p.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),c&&document.head.appendChild(i)}},n.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;n.g.importScripts&&(e=n.g.location+\\"\\");var r=n.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var o=t.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=t[o--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),n.p=e})(),(()=>{var e={580:0};n.f.j=(r,t)=>{var o=n.o(e,r)?e[r]:void 0;if(0!==o)if(o)t.push(o[2]);else{var a=new Promise(((t,n)=>o=e[r]=[t,n]));t.push(o[2]=a);var i=n.p+n.u(r),c=new Error;n.l(i,(t=>{if(n.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var a=t&&(\\"load\\"===t.type?\\"missing\\":t.type),i=t&&t.target&&t.target.src;c.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+a+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=a,c.request=i,o[1](c)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var o,a,[i,c,s]=t,l=0;if(i.some((r=>0!==e[r]))){for(o in c)n.o(c,o)&&(n.m[o]=c[o]);s&&s(n)}for(r&&r(t);l{_.r(e);var a=_(\\"./a/strings1.resjson\\"),r=_(\\"./a/strings2.resjson\\");console.log(a.t,r.S)},\\"./a/strings1.resjson\\":s=>{s.exports=JSON.parse('{\\"t\\":\\"blah\\"}')},\\"./a/strings2.resjson\\":s=>{s.exports=JSON.parse('{\\"S\\":\\"something else\\"}')}}]);", + "/release/chunks/async1-LOCALE2-003b7f97496dc06982b3.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[230],{\\"./a/async1.js\\":(s,e,_)=>{_.r(e);var a=_(\\"./a/strings1.resjson\\"),r=_(\\"./a/strings2.resjson\\");console.log(a.t,r.S)},\\"./a/strings1.resjson\\":s=>{s.exports=JSON.parse('{\\"t\\":\\"baz\\"}')},\\"./a/strings2.resjson\\":s=>{s.exports=JSON.parse('{\\"S\\":\\"some random translation\\"}')}}]);", + "/release/chunks/async2-LOCALE1-91ee0b2c621efc85066f.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[421],{\\"./a/async2.js\\":(s,e,_)=>{_.r(e);var a=_(\\"./a/strings1.resjson\\"),r=_(\\"./a/strings2.resjson\\");console.log(a.t+r.S)},\\"./a/strings1.resjson\\":s=>{s.exports=JSON.parse('{\\"t\\":\\"blah\\"}')},\\"./a/strings2.resjson\\":s=>{s.exports=JSON.parse('{\\"S\\":\\"something else\\"}')}}]);", + "/release/chunks/async2-LOCALE2-91ee0b2c621efc85066f.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[421],{\\"./a/async2.js\\":(s,e,_)=>{_.r(e);var a=_(\\"./a/strings1.resjson\\"),r=_(\\"./a/strings2.resjson\\");console.log(a.t+r.S)},\\"./a/strings1.resjson\\":s=>{s.exports=JSON.parse('{\\"t\\":\\"baz\\"}')},\\"./a/strings2.resjson\\":s=>{s.exports=JSON.parse('{\\"S\\":\\"some random translation\\"}')}}]);", + "/release/mainSingleChunk-none-31f37462fb56db575561.js": "(()=>{var e,r={},t={};function o(e){var n=t[e];if(void 0!==n)return n.exports;var a=t[e]={exports:{}};return r[e](a,a.exports,o),a.exports}o.m=r,o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((r,t)=>(o.f[t](e,r),r)),[])),o.u=e=>\\"chunks/async1-\\"+self.__locale+\\"-003b7f97496dc06982b3.js\\",o.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},o.l=(r,t,n,a)=>{if(e[r])e[r].push(t);else{var i,l;if(void 0!==n)for(var c=document.getElementsByTagName(\\"script\\"),s=0;s{i.onerror=i.onload=null,clearTimeout(d);var n=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),n&&n.forEach((e=>e(o))),t)return t(o)},d=setTimeout(p.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),l&&document.head.appendChild(i)}},o.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;o.g.importScripts&&(e=o.g.location+\\"\\");var r=o.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),o.p=e})(),(()=>{var e={331:0};o.f.j=(r,t)=>{var n=o.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else{var a=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=a);var i=o.p+o.u(r),l=new Error;o.l(i,(t=>{if(o.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var a=t&&(\\"load\\"===t.type?\\"missing\\":t.type),i=t&&t.target&&t.target.src;l.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+a+\\": \\"+i+\\")\\",l.name=\\"ChunkLoadError\\",l.type=a,l.request=i,n[1](l)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var n,a,[i,l,c]=t,s=0;if(i.some((r=>0!==e[r]))){for(n in l)o.o(l,n)&&(o.m[n]=l[n]);c&&c(o)}for(r&&r(t);s{var e,r={},t={};function n(e){var o=t[e];if(void 0!==o)return o.exports;var a=t[e]={exports:{}};return r[e](a,a.exports,n),a.exports}n.m=r,n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,t)=>(n.f[t](e,r),r)),[])),n.u=e=>\\"chunks/\\"+{230:\\"async1\\",421:\\"async2\\"}[e]+\\"-\\"+self.__locale+\\"-\\"+{230:\\"003b7f97496dc06982b3\\",421:\\"91ee0b2c621efc85066f\\"}[e]+\\".js\\",n.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},n.l=(r,t,o,a)=>{if(e[r])e[r].push(t);else{var i,c;if(void 0!==o)for(var s=document.getElementsByTagName(\\"script\\"),l=0;l{i.onerror=i.onload=null,clearTimeout(d);var o=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),t)return t(n)},d=setTimeout(p.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),c&&document.head.appendChild(i)}},n.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;n.g.importScripts&&(e=n.g.location+\\"\\");var r=n.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var o=t.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=t[o--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),n.p=e})(),(()=>{var e={580:0};n.f.j=(r,t)=>{var o=n.o(e,r)?e[r]:void 0;if(0!==o)if(o)t.push(o[2]);else{var a=new Promise(((t,n)=>o=e[r]=[t,n]));t.push(o[2]=a);var i=n.p+n.u(r),c=new Error;n.l(i,(t=>{if(n.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var a=t&&(\\"load\\"===t.type?\\"missing\\":t.type),i=t&&t.target&&t.target.src;c.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+a+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=a,c.request=i,o[1](c)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var o,a,[i,c,s]=t,l=0;if(i.some((r=>0!==e[r]))){for(o in c)n.o(c,o)&&(n.m[o]=c[o]);s&&s(n)}for(r&&r(t);l { // webpackBootstrap + "/release/mainSingleChunk-none-c06788adfdf4c6796f71.js": "/******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({}); /************************************************************************/ /******/ // The module cache @@ -198,7 +198,7 @@ module.exports = /*#__PURE__*/JSON.parse('{\\"S\\":\\"some random translation\\" /******/ // This function allow to reference async chunks /******/ __webpack_require__.u = (chunkId) => { /******/ // return url for filenames based on template -/******/ return \\"chunks/\\" + \\"async1\\" + \\"-\\" + self.__locale + \\"-\\" + \\"5998804d6f516289023d\\" + \\".js\\"; +/******/ return \\"chunks/\\" + \\"async1\\" + \\"-\\" + self.__locale + \\"-\\" + \\"276405669810f9fc3a39\\" + \\".js\\"; /******/ }; /******/ })(); /******/ @@ -394,7 +394,7 @@ var __webpack_exports__ = {}; __webpack_require__.e(/* import() | async1 */ 230).then(__webpack_require__.bind(__webpack_require__, \\"./a/async1.js\\")); /******/ })() ;", - "/release/mainTwoChunks-none-19466a4656ab45c400f3.js": "/******/ (() => { // webpackBootstrap + "/release/mainTwoChunks-none-540e60ee32d5fcf66ab0.js": "/******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({}); /************************************************************************/ /******/ // The module cache @@ -443,7 +443,7 @@ __webpack_require__.e(/* import() | async1 */ 230).then(__webpack_require__.bind /******/ // This function allow to reference async chunks /******/ __webpack_require__.u = (chunkId) => { /******/ // return url for filenames based on template -/******/ return \\"chunks/\\" + {\\"230\\":\\"async1\\",\\"421\\":\\"async2\\"}[chunkId] + \\"-\\" + self.__locale + \\"-\\" + {\\"230\\":\\"5998804d6f516289023d\\",\\"421\\":\\"795c03eb7d09694f4c50\\"}[chunkId] + \\".js\\"; +/******/ return \\"chunks/\\" + {\\"230\\":\\"async1\\",\\"421\\":\\"async2\\"}[chunkId] + \\"-\\" + self.__locale + \\"-\\" + {\\"230\\":\\"276405669810f9fc3a39\\",\\"421\\":\\"4886e85e3e8dd2d558bf\\"}[chunkId] + \\".js\\"; /******/ }; /******/ })(); /******/ @@ -650,14 +650,14 @@ Object { "namedChunkGroups": Object { "async1": Object { "localizedAssets": Object { - "LOCALE1": "chunks/async1-LOCALE1-5998804d6f516289023d.js", - "LOCALE2": "chunks/async1-LOCALE2-5998804d6f516289023d.js", + "LOCALE1": "chunks/async1-LOCALE1-276405669810f9fc3a39.js", + "LOCALE2": "chunks/async1-LOCALE2-276405669810f9fc3a39.js", }, }, "async2": Object { "localizedAssets": Object { - "LOCALE1": "chunks/async2-LOCALE1-795c03eb7d09694f4c50.js", - "LOCALE2": "chunks/async2-LOCALE2-795c03eb7d09694f4c50.js", + "LOCALE1": "chunks/async2-LOCALE1-4886e85e3e8dd2d558bf.js", + "LOCALE2": "chunks/async2-LOCALE2-4886e85e3e8dd2d558bf.js", }, }, }, diff --git a/webpack/webpack5-localization-plugin/src/test/__snapshots__/LocalizedAsyncDynamicFormatWithNoLocaleFallback.test.ts.snap b/webpack/webpack5-localization-plugin/src/test/__snapshots__/LocalizedAsyncDynamicFormatWithNoLocaleFallback.test.ts.snap index a16e1b8fe74..ec09ff2de25 100644 --- a/webpack/webpack5-localization-plugin/src/test/__snapshots__/LocalizedAsyncDynamicFormatWithNoLocaleFallback.test.ts.snap +++ b/webpack/webpack5-localization-plugin/src/test/__snapshots__/LocalizedAsyncDynamicFormatWithNoLocaleFallback.test.ts.snap @@ -2,22 +2,22 @@ exports[`LocalizationPlugin Handles async localized chunks with a runtime locale expression (minified): Assets 1`] = ` Object { - "chunks/async1-LOCALE1/-2541dae452be32eb2f84.js": SizeOnlySource { + "chunks/async1-LOCALE1/-003b7f97496dc06982b3.js": SizeOnlySource { "_size": 326, }, - "chunks/async1-LOCALE2/-2541dae452be32eb2f84.js": SizeOnlySource { + "chunks/async1-LOCALE2/-003b7f97496dc06982b3.js": SizeOnlySource { "_size": 334, }, - "chunks/async2-LOCALE1/-0ebe0de081c0cabfb2ba.js": SizeOnlySource { + "chunks/async2-LOCALE1/-91ee0b2c621efc85066f.js": SizeOnlySource { "_size": 326, }, - "chunks/async2-LOCALE2/-0ebe0de081c0cabfb2ba.js": SizeOnlySource { + "chunks/async2-LOCALE2/-91ee0b2c621efc85066f.js": SizeOnlySource { "_size": 334, }, - "mainSingleChunk--a8d7fba1f43d5695a68a.js": SizeOnlySource { + "mainSingleChunk--dc9173b26dd8e0b7f0d0.js": SizeOnlySource { "_size": 2533, }, - "mainTwoChunks--96b17c3434c23d7295c7.js": SizeOnlySource { + "mainTwoChunks--bae97eb0880c20aae207.js": SizeOnlySource { "_size": 2644, }, "other--78916591a7145a0e87d7.js": SizeOnlySource { @@ -28,12 +28,12 @@ Object { exports[`LocalizationPlugin Handles async localized chunks with a runtime locale expression (minified): Content 1`] = ` Object { - "/release/chunks/async1-LOCALE1/-2541dae452be32eb2f84.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[230],{\\"./a/async1.js\\":(s,_,e)=>{e.r(_);var r=e(\\"./a/strings1.resjson\\"),n=e(\\"./a/strings2.resjson\\");console.log(r.t,n.S)},\\"./a/strings1.resjson\\":s=>{s.exports=JSON.parse('{\\"t\\":\\"blah\\"}')},\\"./a/strings2.resjson\\":s=>{s.exports=JSON.parse('{\\"S\\":\\"something else\\"}')}}]);", - "/release/chunks/async1-LOCALE2/-2541dae452be32eb2f84.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[230],{\\"./a/async1.js\\":(s,_,e)=>{e.r(_);var r=e(\\"./a/strings1.resjson\\"),n=e(\\"./a/strings2.resjson\\");console.log(r.t,n.S)},\\"./a/strings1.resjson\\":s=>{s.exports=JSON.parse('{\\"t\\":\\"baz\\"}')},\\"./a/strings2.resjson\\":s=>{s.exports=JSON.parse('{\\"S\\":\\"some random translation\\"}')}}]);", - "/release/chunks/async2-LOCALE1/-0ebe0de081c0cabfb2ba.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[421],{\\"./a/async2.js\\":(s,_,e)=>{e.r(_);var r=e(\\"./a/strings1.resjson\\"),n=e(\\"./a/strings2.resjson\\");console.log(r.t+n.S)},\\"./a/strings1.resjson\\":s=>{s.exports=JSON.parse('{\\"t\\":\\"blah\\"}')},\\"./a/strings2.resjson\\":s=>{s.exports=JSON.parse('{\\"S\\":\\"something else\\"}')}}]);", - "/release/chunks/async2-LOCALE2/-0ebe0de081c0cabfb2ba.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[421],{\\"./a/async2.js\\":(s,_,e)=>{e.r(_);var r=e(\\"./a/strings1.resjson\\"),n=e(\\"./a/strings2.resjson\\");console.log(r.t+n.S)},\\"./a/strings1.resjson\\":s=>{s.exports=JSON.parse('{\\"t\\":\\"baz\\"}')},\\"./a/strings2.resjson\\":s=>{s.exports=JSON.parse('{\\"S\\":\\"some random translation\\"}')}}]);", - "/release/mainSingleChunk--a8d7fba1f43d5695a68a.js": "(()=>{var e,r={},t={};function o(e){var n=t[e];if(void 0!==n)return n.exports;var a=t[e]={exports:{}};return r[e](a,a.exports,o),a.exports}o.m=r,o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((r,t)=>(o.f[t](e,r),r)),[])),o.u=e=>\\"chunks/async1-\\"+self.__locale+\\"/-2541dae452be32eb2f84.js\\",o.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},o.l=(r,t,n,a)=>{if(e[r])e[r].push(t);else{var i,l;if(void 0!==n)for(var s=document.getElementsByTagName(\\"script\\"),c=0;c{i.onerror=i.onload=null,clearTimeout(d);var n=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),n&&n.forEach((e=>e(o))),t)return t(o)},d=setTimeout(p.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),l&&document.head.appendChild(i)}},o.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;o.g.importScripts&&(e=o.g.location+\\"\\");var r=o.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),o.p=e})(),(()=>{var e={331:0};o.f.j=(r,t)=>{var n=o.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else{var a=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=a);var i=o.p+o.u(r),l=new Error;o.l(i,(t=>{if(o.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var a=t&&(\\"load\\"===t.type?\\"missing\\":t.type),i=t&&t.target&&t.target.src;l.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+a+\\": \\"+i+\\")\\",l.name=\\"ChunkLoadError\\",l.type=a,l.request=i,n[1](l)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var n,a,[i,l,s]=t,c=0;if(i.some((r=>0!==e[r]))){for(n in l)o.o(l,n)&&(o.m[n]=l[n]);s&&s(o)}for(r&&r(t);c{var e,r={},t={};function n(e){var o=t[e];if(void 0!==o)return o.exports;var a=t[e]={exports:{}};return r[e](a,a.exports,n),a.exports}n.m=r,n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,t)=>(n.f[t](e,r),r)),[])),n.u=e=>\\"chunks/\\"+{230:\\"async1\\",421:\\"async2\\"}[e]+\\"-\\"+self.__locale+\\"/-\\"+{230:\\"2541dae452be32eb2f84\\",421:\\"0ebe0de081c0cabfb2ba\\"}[e]+\\".js\\",n.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},n.l=(r,t,o,a)=>{if(e[r])e[r].push(t);else{var i,c;if(void 0!==o)for(var s=document.getElementsByTagName(\\"script\\"),l=0;l{i.onerror=i.onload=null,clearTimeout(d);var o=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),t)return t(n)},d=setTimeout(p.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),c&&document.head.appendChild(i)}},n.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;n.g.importScripts&&(e=n.g.location+\\"\\");var r=n.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var o=t.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=t[o--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),n.p=e})(),(()=>{var e={580:0};n.f.j=(r,t)=>{var o=n.o(e,r)?e[r]:void 0;if(0!==o)if(o)t.push(o[2]);else{var a=new Promise(((t,n)=>o=e[r]=[t,n]));t.push(o[2]=a);var i=n.p+n.u(r),c=new Error;n.l(i,(t=>{if(n.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var a=t&&(\\"load\\"===t.type?\\"missing\\":t.type),i=t&&t.target&&t.target.src;c.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+a+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=a,c.request=i,o[1](c)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var o,a,[i,c,s]=t,l=0;if(i.some((r=>0!==e[r]))){for(o in c)n.o(c,o)&&(n.m[o]=c[o]);s&&s(n)}for(r&&r(t);l{_.r(e);var a=_(\\"./a/strings1.resjson\\"),r=_(\\"./a/strings2.resjson\\");console.log(a.t,r.S)},\\"./a/strings1.resjson\\":s=>{s.exports=JSON.parse('{\\"t\\":\\"blah\\"}')},\\"./a/strings2.resjson\\":s=>{s.exports=JSON.parse('{\\"S\\":\\"something else\\"}')}}]);", + "/release/chunks/async1-LOCALE2/-003b7f97496dc06982b3.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[230],{\\"./a/async1.js\\":(s,e,_)=>{_.r(e);var a=_(\\"./a/strings1.resjson\\"),r=_(\\"./a/strings2.resjson\\");console.log(a.t,r.S)},\\"./a/strings1.resjson\\":s=>{s.exports=JSON.parse('{\\"t\\":\\"baz\\"}')},\\"./a/strings2.resjson\\":s=>{s.exports=JSON.parse('{\\"S\\":\\"some random translation\\"}')}}]);", + "/release/chunks/async2-LOCALE1/-91ee0b2c621efc85066f.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[421],{\\"./a/async2.js\\":(s,e,_)=>{_.r(e);var a=_(\\"./a/strings1.resjson\\"),r=_(\\"./a/strings2.resjson\\");console.log(a.t+r.S)},\\"./a/strings1.resjson\\":s=>{s.exports=JSON.parse('{\\"t\\":\\"blah\\"}')},\\"./a/strings2.resjson\\":s=>{s.exports=JSON.parse('{\\"S\\":\\"something else\\"}')}}]);", + "/release/chunks/async2-LOCALE2/-91ee0b2c621efc85066f.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[421],{\\"./a/async2.js\\":(s,e,_)=>{_.r(e);var a=_(\\"./a/strings1.resjson\\"),r=_(\\"./a/strings2.resjson\\");console.log(a.t+r.S)},\\"./a/strings1.resjson\\":s=>{s.exports=JSON.parse('{\\"t\\":\\"baz\\"}')},\\"./a/strings2.resjson\\":s=>{s.exports=JSON.parse('{\\"S\\":\\"some random translation\\"}')}}]);", + "/release/mainSingleChunk--dc9173b26dd8e0b7f0d0.js": "(()=>{var e,r={},t={};function o(e){var n=t[e];if(void 0!==n)return n.exports;var a=t[e]={exports:{}};return r[e](a,a.exports,o),a.exports}o.m=r,o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((r,t)=>(o.f[t](e,r),r)),[])),o.u=e=>\\"chunks/async1-\\"+self.__locale+\\"/-003b7f97496dc06982b3.js\\",o.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},o.l=(r,t,n,a)=>{if(e[r])e[r].push(t);else{var i,l;if(void 0!==n)for(var c=document.getElementsByTagName(\\"script\\"),s=0;s{i.onerror=i.onload=null,clearTimeout(d);var n=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),n&&n.forEach((e=>e(o))),t)return t(o)},d=setTimeout(p.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),l&&document.head.appendChild(i)}},o.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;o.g.importScripts&&(e=o.g.location+\\"\\");var r=o.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),o.p=e})(),(()=>{var e={331:0};o.f.j=(r,t)=>{var n=o.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else{var a=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=a);var i=o.p+o.u(r),l=new Error;o.l(i,(t=>{if(o.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var a=t&&(\\"load\\"===t.type?\\"missing\\":t.type),i=t&&t.target&&t.target.src;l.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+a+\\": \\"+i+\\")\\",l.name=\\"ChunkLoadError\\",l.type=a,l.request=i,n[1](l)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var n,a,[i,l,c]=t,s=0;if(i.some((r=>0!==e[r]))){for(n in l)o.o(l,n)&&(o.m[n]=l[n]);c&&c(o)}for(r&&r(t);s{var e,r={},t={};function n(e){var o=t[e];if(void 0!==o)return o.exports;var a=t[e]={exports:{}};return r[e](a,a.exports,n),a.exports}n.m=r,n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,t)=>(n.f[t](e,r),r)),[])),n.u=e=>\\"chunks/\\"+{230:\\"async1\\",421:\\"async2\\"}[e]+\\"-\\"+self.__locale+\\"/-\\"+{230:\\"003b7f97496dc06982b3\\",421:\\"91ee0b2c621efc85066f\\"}[e]+\\".js\\",n.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},n.l=(r,t,o,a)=>{if(e[r])e[r].push(t);else{var i,c;if(void 0!==o)for(var s=document.getElementsByTagName(\\"script\\"),l=0;l{i.onerror=i.onload=null,clearTimeout(d);var o=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),t)return t(n)},d=setTimeout(p.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),c&&document.head.appendChild(i)}},n.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;n.g.importScripts&&(e=n.g.location+\\"\\");var r=n.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var o=t.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=t[o--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),n.p=e})(),(()=>{var e={580:0};n.f.j=(r,t)=>{var o=n.o(e,r)?e[r]:void 0;if(0!==o)if(o)t.push(o[2]);else{var a=new Promise(((t,n)=>o=e[r]=[t,n]));t.push(o[2]=a);var i=n.p+n.u(r),c=new Error;n.l(i,(t=>{if(n.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var a=t&&(\\"load\\"===t.type?\\"missing\\":t.type),i=t&&t.target&&t.target.src;c.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+a+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=a,c.request=i,o[1](c)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var o,a,[i,c,s]=t,l=0;if(i.some((r=>0!==e[r]))){for(o in c)n.o(c,o)&&(n.m[o]=c[o]);s&&s(n)}for(r&&r(t);l { // webpackBootstrap + "/release/mainSingleChunk--14b4cf197e712a09ff44.js": "/******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({}); /************************************************************************/ /******/ // The module cache @@ -251,7 +251,7 @@ module.exports = /*#__PURE__*/JSON.parse('{\\"S\\":\\"some random translation\\" /******/ // This function allow to reference async chunks /******/ __webpack_require__.u = (chunkId) => { /******/ // return url for filenames based on template -/******/ return \\"chunks/\\" + \\"async1\\" + \\"-\\" + self.__locale + \\"/\\" + \\"-\\" + \\"5998804d6f516289023d\\" + \\".js\\"; +/******/ return \\"chunks/\\" + \\"async1\\" + \\"-\\" + self.__locale + \\"/\\" + \\"-\\" + \\"276405669810f9fc3a39\\" + \\".js\\"; /******/ }; /******/ })(); /******/ @@ -447,7 +447,7 @@ var __webpack_exports__ = {}; __webpack_require__.e(/* import() | async1 */ 230).then(__webpack_require__.bind(__webpack_require__, \\"./a/async1.js\\")); /******/ })() ;", - "/release/mainTwoChunks--33b2a60ff181515a41f3.js": "/******/ (() => { // webpackBootstrap + "/release/mainTwoChunks--342f5cc71bcd129baca4.js": "/******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({}); /************************************************************************/ /******/ // The module cache @@ -496,7 +496,7 @@ __webpack_require__.e(/* import() | async1 */ 230).then(__webpack_require__.bind /******/ // This function allow to reference async chunks /******/ __webpack_require__.u = (chunkId) => { /******/ // return url for filenames based on template -/******/ return \\"chunks/\\" + {\\"230\\":\\"async1\\",\\"421\\":\\"async2\\"}[chunkId] + \\"-\\" + self.__locale + \\"/\\" + \\"-\\" + {\\"230\\":\\"5998804d6f516289023d\\",\\"421\\":\\"795c03eb7d09694f4c50\\"}[chunkId] + \\".js\\"; +/******/ return \\"chunks/\\" + {\\"230\\":\\"async1\\",\\"421\\":\\"async2\\"}[chunkId] + \\"-\\" + self.__locale + \\"/\\" + \\"-\\" + {\\"230\\":\\"276405669810f9fc3a39\\",\\"421\\":\\"4886e85e3e8dd2d558bf\\"}[chunkId] + \\".js\\"; /******/ }; /******/ })(); /******/ @@ -707,14 +707,14 @@ Object { "namedChunkGroups": Object { "async1": Object { "localizedAssets": Object { - "LOCALE1": "chunks/async1-LOCALE1/-5998804d6f516289023d.js", - "LOCALE2": "chunks/async1-LOCALE2/-5998804d6f516289023d.js", + "LOCALE1": "chunks/async1-LOCALE1/-276405669810f9fc3a39.js", + "LOCALE2": "chunks/async1-LOCALE2/-276405669810f9fc3a39.js", }, }, "async2": Object { "localizedAssets": Object { - "LOCALE1": "chunks/async2-LOCALE1/-795c03eb7d09694f4c50.js", - "LOCALE2": "chunks/async2-LOCALE2/-795c03eb7d09694f4c50.js", + "LOCALE1": "chunks/async2-LOCALE1/-4886e85e3e8dd2d558bf.js", + "LOCALE2": "chunks/async2-LOCALE2/-4886e85e3e8dd2d558bf.js", }, }, }, diff --git a/webpack/webpack5-localization-plugin/src/test/__snapshots__/LocalizedNoAsync.test.ts.snap b/webpack/webpack5-localization-plugin/src/test/__snapshots__/LocalizedNoAsync.test.ts.snap index 513c6c6abce..c8ae8179d1a 100644 --- a/webpack/webpack5-localization-plugin/src/test/__snapshots__/LocalizedNoAsync.test.ts.snap +++ b/webpack/webpack5-localization-plugin/src/test/__snapshots__/LocalizedNoAsync.test.ts.snap @@ -4,13 +4,13 @@ exports[`LocalizationPlugin Handles localized compilation with no async chunks ( Object { "/release/localization-stats.json": "{\\"entrypoints\\":{\\"main\\":{\\"localizedAssets\\":{\\"default\\":\\"main-default-83f4ee1ad53822d08923.js\\",\\"LOCALE2\\":\\"main-LOCALE2-53db16ce65a171b2d58d.js\\",\\"LOCALE1\\":\\"main-LOCALE1-d0826e06031981558e87.js\\",\\"qps-ploc\\":\\"main-qps-ploc-d917b232cbcc8f9aec8d.js\\"}}},\\"namedChunkGroups\\":{}}", "/release/main-LOCALE1-d0826e06031981558e87.js": "(()=>{\\"use strict\\";console.log(\\"blah\\\\r\\\\n\\\\t\\\\\\\\\\\\u0027\\\\u0022\\",\\"something else\\")})();", - "/release/main-LOCALE1-d0826e06031981558e87.js.map": "{\\"version\\":3,\\"file\\":\\"main-LOCALE1-d0826e06031981558e87.js\\",\\"mappings\\":\\"mBAAsFA,QAAQC,ICAtE,CAAC,wBAA6D,ECA3D,CAAC,cAA6D,E\\",\\"sources\\":[\\"source:///./a/entry.js\\",\\"source:///./a/strings1.resjson\\",\\"source:///./a/strings2.resjson\\"],\\"sourcesContent\\":[\\"import strings1 from './strings1.resjson'; import strings2 from './strings2.resjson'; console.log(strings1.test, strings2.another);\\",\\"const strings = {\\\\\\"test\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_\\\\\\\\\\\\\\\\_A_0\\\\\\"};\\\\nexport default strings;\\",\\"const strings = {\\\\\\"another\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_\\\\\\\\\\\\\\\\_A_1\\\\\\"};\\\\nexport default strings;\\"],\\"names\\":[\\"console\\",\\"log\\"],\\"sourceRoot\\":\\"\\"}", + "/release/main-LOCALE1-d0826e06031981558e87.js.map": "{\\"version\\":3,\\"file\\":\\"main-LOCALE1-d0826e06031981558e87.js\\",\\"mappings\\":\\"mBAAsFA,QAAQC,ICAtE,CAAC,wBAA4G,ECA1G,CAAC,cAAkH,E\\",\\"sources\\":[\\"source:///./a/entry.js\\",\\"source:///./a/strings1.resjson\\",\\"source:///./a/strings2.resjson\\"],\\"sourcesContent\\":[\\"import strings1 from './strings1.resjson'; import strings2 from './strings2.resjson'; console.log(strings1.test, strings2.another);\\",\\"const strings = {\\\\\\"test\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_A_\\\\\\\\\\\\\\\\_2f612f737472696e6773312e7265736a736f6e$74657374_\\\\\\"};\\\\nexport default strings;\\",\\"const strings = {\\\\\\"another\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_A_\\\\\\\\\\\\\\\\_2f612f737472696e6773322e7265736a736f6e$616e6f74686572_\\\\\\"};\\\\nexport default strings;\\"],\\"names\\":[\\"console\\",\\"log\\"],\\"sourceRoot\\":\\"\\"}", "/release/main-LOCALE2-53db16ce65a171b2d58d.js": "(()=>{\\"use strict\\";console.log(\\"return:\\\\r,newline:\\\\n,tab:\\\\t,backslash:\\\\\\\\,apos:\\\\u0027,quote:\\\\u0022\\",\\"something else\\")})();", - "/release/main-LOCALE2-53db16ce65a171b2d58d.js.map": "{\\"version\\":3,\\"file\\":\\"main-LOCALE2-53db16ce65a171b2d58d.js\\",\\"mappings\\":\\"mBAAsFA,QAAQC,ICAtE,CAAC,iEAA6D,ECA3D,CAAC,cAA6D,E\\",\\"sources\\":[\\"source:///./a/entry.js\\",\\"source:///./a/strings1.resjson\\",\\"source:///./a/strings2.resjson\\"],\\"sourcesContent\\":[\\"import strings1 from './strings1.resjson'; import strings2 from './strings2.resjson'; console.log(strings1.test, strings2.another);\\",\\"const strings = {\\\\\\"test\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_\\\\\\\\\\\\\\\\_A_0\\\\\\"};\\\\nexport default strings;\\",\\"const strings = {\\\\\\"another\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_\\\\\\\\\\\\\\\\_A_1\\\\\\"};\\\\nexport default strings;\\"],\\"names\\":[\\"console\\",\\"log\\"],\\"sourceRoot\\":\\"\\"}", + "/release/main-LOCALE2-53db16ce65a171b2d58d.js.map": "{\\"version\\":3,\\"file\\":\\"main-LOCALE2-53db16ce65a171b2d58d.js\\",\\"mappings\\":\\"mBAAsFA,QAAQC,ICAtE,CAAC,iEAA4G,ECA1G,CAAC,cAAkH,E\\",\\"sources\\":[\\"source:///./a/entry.js\\",\\"source:///./a/strings1.resjson\\",\\"source:///./a/strings2.resjson\\"],\\"sourcesContent\\":[\\"import strings1 from './strings1.resjson'; import strings2 from './strings2.resjson'; console.log(strings1.test, strings2.another);\\",\\"const strings = {\\\\\\"test\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_A_\\\\\\\\\\\\\\\\_2f612f737472696e6773312e7265736a736f6e$74657374_\\\\\\"};\\\\nexport default strings;\\",\\"const strings = {\\\\\\"another\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_A_\\\\\\\\\\\\\\\\_2f612f737472696e6773322e7265736a736f6e$616e6f74686572_\\\\\\"};\\\\nexport default strings;\\"],\\"names\\":[\\"console\\",\\"log\\"],\\"sourceRoot\\":\\"\\"}", "/release/main-default-83f4ee1ad53822d08923.js": "(()=>{\\"use strict\\";console.log(\\"test\\",\\"another\\")})();", - "/release/main-default-83f4ee1ad53822d08923.js.map": "{\\"version\\":3,\\"file\\":\\"main-default-83f4ee1ad53822d08923.js\\",\\"mappings\\":\\"mBAAsFA,QAAQC,ICAtE,CAAC,IAA6D,ECA3D,CAAC,OAA6D,E\\",\\"sources\\":[\\"source:///./a/entry.js\\",\\"source:///./a/strings1.resjson\\",\\"source:///./a/strings2.resjson\\"],\\"sourcesContent\\":[\\"import strings1 from './strings1.resjson'; import strings2 from './strings2.resjson'; console.log(strings1.test, strings2.another);\\",\\"const strings = {\\\\\\"test\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_\\\\\\\\\\\\\\\\_A_0\\\\\\"};\\\\nexport default strings;\\",\\"const strings = {\\\\\\"another\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_\\\\\\\\\\\\\\\\_A_1\\\\\\"};\\\\nexport default strings;\\"],\\"names\\":[\\"console\\",\\"log\\"],\\"sourceRoot\\":\\"\\"}", + "/release/main-default-83f4ee1ad53822d08923.js.map": "{\\"version\\":3,\\"file\\":\\"main-default-83f4ee1ad53822d08923.js\\",\\"mappings\\":\\"mBAAsFA,QAAQC,ICAtE,CAAC,IAA4G,ECA1G,CAAC,OAAkH,E\\",\\"sources\\":[\\"source:///./a/entry.js\\",\\"source:///./a/strings1.resjson\\",\\"source:///./a/strings2.resjson\\"],\\"sourcesContent\\":[\\"import strings1 from './strings1.resjson'; import strings2 from './strings2.resjson'; console.log(strings1.test, strings2.another);\\",\\"const strings = {\\\\\\"test\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_A_\\\\\\\\\\\\\\\\_2f612f737472696e6773312e7265736a736f6e$74657374_\\\\\\"};\\\\nexport default strings;\\",\\"const strings = {\\\\\\"another\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_A_\\\\\\\\\\\\\\\\_2f612f737472696e6773322e7265736a736f6e$616e6f74686572_\\\\\\"};\\\\nexport default strings;\\"],\\"names\\":[\\"console\\",\\"log\\"],\\"sourceRoot\\":\\"\\"}", "/release/main-qps-ploc-d917b232cbcc8f9aec8d.js": "(()=>{\\"use strict\\";console.log(\\"!--ƀĺàĥ\\\\r\\\\n\\\\t\\\\\\\\\\\\u0027\\\\u0022-|-\\",\\"!--śōmēţĥĩńĝ ēĺśē-|-\\")})();", - "/release/main-qps-ploc-d917b232cbcc8f9aec8d.js.map": "{\\"version\\":3,\\"file\\":\\"main-qps-ploc-d917b232cbcc8f9aec8d.js\\",\\"mappings\\":\\"mBAAsFA,QAAQC,ICAtE,CAAC,8BAA6D,ECA3D,CAAC,oBAA6D,E\\",\\"sources\\":[\\"source:///./a/entry.js\\",\\"source:///./a/strings1.resjson\\",\\"source:///./a/strings2.resjson\\"],\\"sourcesContent\\":[\\"import strings1 from './strings1.resjson'; import strings2 from './strings2.resjson'; console.log(strings1.test, strings2.another);\\",\\"const strings = {\\\\\\"test\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_\\\\\\\\\\\\\\\\_A_0\\\\\\"};\\\\nexport default strings;\\",\\"const strings = {\\\\\\"another\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_\\\\\\\\\\\\\\\\_A_1\\\\\\"};\\\\nexport default strings;\\"],\\"names\\":[\\"console\\",\\"log\\"],\\"sourceRoot\\":\\"\\"}", + "/release/main-qps-ploc-d917b232cbcc8f9aec8d.js.map": "{\\"version\\":3,\\"file\\":\\"main-qps-ploc-d917b232cbcc8f9aec8d.js\\",\\"mappings\\":\\"mBAAsFA,QAAQC,ICAtE,CAAC,8BAA4G,ECA1G,CAAC,oBAAkH,E\\",\\"sources\\":[\\"source:///./a/entry.js\\",\\"source:///./a/strings1.resjson\\",\\"source:///./a/strings2.resjson\\"],\\"sourcesContent\\":[\\"import strings1 from './strings1.resjson'; import strings2 from './strings2.resjson'; console.log(strings1.test, strings2.another);\\",\\"const strings = {\\\\\\"test\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_A_\\\\\\\\\\\\\\\\_2f612f737472696e6773312e7265736a736f6e$74657374_\\\\\\"};\\\\nexport default strings;\\",\\"const strings = {\\\\\\"another\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_A_\\\\\\\\\\\\\\\\_2f612f737472696e6773322e7265736a736f6e$616e6f74686572_\\\\\\"};\\\\nexport default strings;\\"],\\"names\\":[\\"console\\",\\"log\\"],\\"sourceRoot\\":\\"\\"}", } `; @@ -34,7 +34,7 @@ const strings2_resjson_strings = {\\"another\\":\\"something else\\"}; console.log(strings1_resjson.test, strings2_resjson.another); /******/ })() ;", - "/release/main-LOCALE1-f13c9f8d1301f4e49d62.js.map": "{\\"version\\":3,\\"file\\":\\"main-LOCALE1-f13c9f8d1301f4e49d62.js\\",\\"mappings\\":\\";;;;AAAA,iBAAiB,QAAQ,wBAA6D;AACtF,uDAAe,OAAO,E;;ACDtB,MAAM,wBAAO,IAAI,WAAW,cAA6D;AACzF,uDAAe,wBAAO,E;;ACDoB,CAA2C,CAAC,YAAY,gBAAQ,OAAO,gBAAQ,U\\",\\"sources\\":[\\"source:///./a/strings1.resjson\\",\\"source:///./a/strings2.resjson\\",\\"source:///./a/entry.js\\"],\\"sourcesContent\\":[\\"const strings = {\\\\\\"test\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_\\\\\\\\\\\\\\\\_A_0\\\\\\"};\\\\nexport default strings;\\",\\"const strings = {\\\\\\"another\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_\\\\\\\\\\\\\\\\_A_1\\\\\\"};\\\\nexport default strings;\\",\\"import strings1 from './strings1.resjson'; import strings2 from './strings2.resjson'; console.log(strings1.test, strings2.another);\\"],\\"names\\":[],\\"sourceRoot\\":\\"\\"}", + "/release/main-LOCALE1-f13c9f8d1301f4e49d62.js.map": "{\\"version\\":3,\\"file\\":\\"main-LOCALE1-f13c9f8d1301f4e49d62.js\\",\\"mappings\\":\\";;;;AAAA,iBAAiB,QAAQ,wBAA4G;AACrI,uDAAe,OAAO,E;;ACDtB,MAAM,wBAAO,IAAI,WAAW,cAAkH;AAC9I,uDAAe,wBAAO,E;;ACDoB,CAA2C,CAAC,YAAY,gBAAQ,OAAO,gBAAQ,U\\",\\"sources\\":[\\"source:///./a/strings1.resjson\\",\\"source:///./a/strings2.resjson\\",\\"source:///./a/entry.js\\"],\\"sourcesContent\\":[\\"const strings = {\\\\\\"test\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_A_\\\\\\\\\\\\\\\\_2f612f737472696e6773312e7265736a736f6e$74657374_\\\\\\"};\\\\nexport default strings;\\",\\"const strings = {\\\\\\"another\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_A_\\\\\\\\\\\\\\\\_2f612f737472696e6773322e7265736a736f6e$616e6f74686572_\\\\\\"};\\\\nexport default strings;\\",\\"import strings1 from './strings1.resjson'; import strings2 from './strings2.resjson'; console.log(strings1.test, strings2.another);\\"],\\"names\\":[],\\"sourceRoot\\":\\"\\"}", "/release/main-LOCALE2-41498f590539983b4243.js": "/******/ (() => { // webpackBootstrap /******/ \\"use strict\\"; @@ -48,7 +48,7 @@ const strings2_resjson_strings = {\\"another\\":\\"something else\\"}; console.log(strings1_resjson.test, strings2_resjson.another); /******/ })() ;", - "/release/main-LOCALE2-41498f590539983b4243.js.map": "{\\"version\\":3,\\"file\\":\\"main-LOCALE2-41498f590539983b4243.js\\",\\"mappings\\":\\";;;;AAAA,iBAAiB,QAAQ,iEAA6D;AACtF,uDAAe,OAAO,E;;ACDtB,MAAM,wBAAO,IAAI,WAAW,cAA6D;AACzF,uDAAe,wBAAO,E;;ACDoB,CAA2C,CAAC,YAAY,gBAAQ,OAAO,gBAAQ,U\\",\\"sources\\":[\\"source:///./a/strings1.resjson\\",\\"source:///./a/strings2.resjson\\",\\"source:///./a/entry.js\\"],\\"sourcesContent\\":[\\"const strings = {\\\\\\"test\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_\\\\\\\\\\\\\\\\_A_0\\\\\\"};\\\\nexport default strings;\\",\\"const strings = {\\\\\\"another\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_\\\\\\\\\\\\\\\\_A_1\\\\\\"};\\\\nexport default strings;\\",\\"import strings1 from './strings1.resjson'; import strings2 from './strings2.resjson'; console.log(strings1.test, strings2.another);\\"],\\"names\\":[],\\"sourceRoot\\":\\"\\"}", + "/release/main-LOCALE2-41498f590539983b4243.js.map": "{\\"version\\":3,\\"file\\":\\"main-LOCALE2-41498f590539983b4243.js\\",\\"mappings\\":\\";;;;AAAA,iBAAiB,QAAQ,iEAA4G;AACrI,uDAAe,OAAO,E;;ACDtB,MAAM,wBAAO,IAAI,WAAW,cAAkH;AAC9I,uDAAe,wBAAO,E;;ACDoB,CAA2C,CAAC,YAAY,gBAAQ,OAAO,gBAAQ,U\\",\\"sources\\":[\\"source:///./a/strings1.resjson\\",\\"source:///./a/strings2.resjson\\",\\"source:///./a/entry.js\\"],\\"sourcesContent\\":[\\"const strings = {\\\\\\"test\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_A_\\\\\\\\\\\\\\\\_2f612f737472696e6773312e7265736a736f6e$74657374_\\\\\\"};\\\\nexport default strings;\\",\\"const strings = {\\\\\\"another\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_A_\\\\\\\\\\\\\\\\_2f612f737472696e6773322e7265736a736f6e$616e6f74686572_\\\\\\"};\\\\nexport default strings;\\",\\"import strings1 from './strings1.resjson'; import strings2 from './strings2.resjson'; console.log(strings1.test, strings2.another);\\"],\\"names\\":[],\\"sourceRoot\\":\\"\\"}", "/release/main-default-d7e97cf591a7391fb602.js": "/******/ (() => { // webpackBootstrap /******/ \\"use strict\\"; @@ -62,7 +62,7 @@ const strings2_resjson_strings = {\\"another\\":\\"another\\"}; console.log(strings1_resjson.test, strings2_resjson.another); /******/ })() ;", - "/release/main-default-d7e97cf591a7391fb602.js.map": "{\\"version\\":3,\\"file\\":\\"main-default-d7e97cf591a7391fb602.js\\",\\"mappings\\":\\";;;;AAAA,iBAAiB,QAAQ,IAA6D;AACtF,uDAAe,OAAO,E;;ACDtB,MAAM,wBAAO,IAAI,WAAW,OAA6D;AACzF,uDAAe,wBAAO,E;;ACDoB,CAA2C,CAAC,YAAY,gBAAQ,OAAO,gBAAQ,U\\",\\"sources\\":[\\"source:///./a/strings1.resjson\\",\\"source:///./a/strings2.resjson\\",\\"source:///./a/entry.js\\"],\\"sourcesContent\\":[\\"const strings = {\\\\\\"test\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_\\\\\\\\\\\\\\\\_A_0\\\\\\"};\\\\nexport default strings;\\",\\"const strings = {\\\\\\"another\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_\\\\\\\\\\\\\\\\_A_1\\\\\\"};\\\\nexport default strings;\\",\\"import strings1 from './strings1.resjson'; import strings2 from './strings2.resjson'; console.log(strings1.test, strings2.another);\\"],\\"names\\":[],\\"sourceRoot\\":\\"\\"}", + "/release/main-default-d7e97cf591a7391fb602.js.map": "{\\"version\\":3,\\"file\\":\\"main-default-d7e97cf591a7391fb602.js\\",\\"mappings\\":\\";;;;AAAA,iBAAiB,QAAQ,IAA4G;AACrI,uDAAe,OAAO,E;;ACDtB,MAAM,wBAAO,IAAI,WAAW,OAAkH;AAC9I,uDAAe,wBAAO,E;;ACDoB,CAA2C,CAAC,YAAY,gBAAQ,OAAO,gBAAQ,U\\",\\"sources\\":[\\"source:///./a/strings1.resjson\\",\\"source:///./a/strings2.resjson\\",\\"source:///./a/entry.js\\"],\\"sourcesContent\\":[\\"const strings = {\\\\\\"test\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_A_\\\\\\\\\\\\\\\\_2f612f737472696e6773312e7265736a736f6e$74657374_\\\\\\"};\\\\nexport default strings;\\",\\"const strings = {\\\\\\"another\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_A_\\\\\\\\\\\\\\\\_2f612f737472696e6773322e7265736a736f6e$616e6f74686572_\\\\\\"};\\\\nexport default strings;\\",\\"import strings1 from './strings1.resjson'; import strings2 from './strings2.resjson'; console.log(strings1.test, strings2.another);\\"],\\"names\\":[],\\"sourceRoot\\":\\"\\"}", "/release/main-qps-ploc-1086de10c00dc424a3f9.js": "/******/ (() => { // webpackBootstrap /******/ \\"use strict\\"; @@ -76,7 +76,7 @@ const strings2_resjson_strings = {\\"another\\":\\"!--śōmēţĥĩńĝ ēĺśē console.log(strings1_resjson.test, strings2_resjson.another); /******/ })() ;", - "/release/main-qps-ploc-1086de10c00dc424a3f9.js.map": "{\\"version\\":3,\\"file\\":\\"main-qps-ploc-1086de10c00dc424a3f9.js\\",\\"mappings\\":\\";;;;AAAA,iBAAiB,QAAQ,8BAA6D;AACtF,uDAAe,OAAO,E;;ACDtB,MAAM,wBAAO,IAAI,WAAW,oBAA6D;AACzF,uDAAe,wBAAO,E;;ACDoB,CAA2C,CAAC,YAAY,gBAAQ,OAAO,gBAAQ,U\\",\\"sources\\":[\\"source:///./a/strings1.resjson\\",\\"source:///./a/strings2.resjson\\",\\"source:///./a/entry.js\\"],\\"sourcesContent\\":[\\"const strings = {\\\\\\"test\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_\\\\\\\\\\\\\\\\_A_0\\\\\\"};\\\\nexport default strings;\\",\\"const strings = {\\\\\\"another\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_\\\\\\\\\\\\\\\\_A_1\\\\\\"};\\\\nexport default strings;\\",\\"import strings1 from './strings1.resjson'; import strings2 from './strings2.resjson'; console.log(strings1.test, strings2.another);\\"],\\"names\\":[],\\"sourceRoot\\":\\"\\"}", + "/release/main-qps-ploc-1086de10c00dc424a3f9.js.map": "{\\"version\\":3,\\"file\\":\\"main-qps-ploc-1086de10c00dc424a3f9.js\\",\\"mappings\\":\\";;;;AAAA,iBAAiB,QAAQ,8BAA4G;AACrI,uDAAe,OAAO,E;;ACDtB,MAAM,wBAAO,IAAI,WAAW,oBAAkH;AAC9I,uDAAe,wBAAO,E;;ACDoB,CAA2C,CAAC,YAAY,gBAAQ,OAAO,gBAAQ,U\\",\\"sources\\":[\\"source:///./a/strings1.resjson\\",\\"source:///./a/strings2.resjson\\",\\"source:///./a/entry.js\\"],\\"sourcesContent\\":[\\"const strings = {\\\\\\"test\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_A_\\\\\\\\\\\\\\\\_2f612f737472696e6773312e7265736a736f6e$74657374_\\\\\\"};\\\\nexport default strings;\\",\\"const strings = {\\\\\\"another\\\\\\":\\\\\\"_LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_A_\\\\\\\\\\\\\\\\_2f612f737472696e6773322e7265736a736f6e$616e6f74686572_\\\\\\"};\\\\nexport default strings;\\",\\"import strings1 from './strings1.resjson'; import strings2 from './strings2.resjson'; console.log(strings1.test, strings2.another);\\"],\\"names\\":[],\\"sourceRoot\\":\\"\\"}", } `; diff --git a/webpack/webpack5-localization-plugin/src/test/__snapshots__/LocalizedRuntime.test.ts.snap b/webpack/webpack5-localization-plugin/src/test/__snapshots__/LocalizedRuntime.test.ts.snap index 41617f8995b..89eb230ac69 100644 --- a/webpack/webpack5-localization-plugin/src/test/__snapshots__/LocalizedRuntime.test.ts.snap +++ b/webpack/webpack5-localization-plugin/src/test/__snapshots__/LocalizedRuntime.test.ts.snap @@ -2,14 +2,14 @@ exports[`LocalizationPlugin Handles async localized chunks (minified): Content 1`] = ` Object { - "/release/chunks/async1-LOCALE1-80e0dd4d45c56d8a211b.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[230],{\\"./a/async1.js\\":(s,_,n)=>{n.r(_);var e=n(\\"./a/strings1.resjson\\"),t=n(\\"./a/strings2.resjson\\");console.log(e.A.test,t.A.another)},\\"./a/strings1.resjson\\":(s,_,n)=>{n.d(_,{A:()=>e});const e={test:\\"blah\\"}},\\"./a/strings2.resjson\\":(s,_,n)=>{n.d(_,{A:()=>e});const e={another:\\"something else\\"}}}]);", - "/release/chunks/async1-LOCALE2-539451936e40bfe8c639.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[230],{\\"./a/async1.js\\":(s,_,n)=>{n.r(_);var e=n(\\"./a/strings1.resjson\\"),t=n(\\"./a/strings2.resjson\\");console.log(e.A.test,t.A.another)},\\"./a/strings1.resjson\\":(s,_,n)=>{n.d(_,{A:()=>e});const e={test:\\"baz\\"}},\\"./a/strings2.resjson\\":(s,_,n)=>{n.d(_,{A:()=>e});const e={another:\\"some random translation\\"}}}]);", - "/release/chunks/async2-LOCALE1-e8d38de88030c68b142d.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[421],{\\"./a/async2.js\\":(s,_,n)=>{n.r(_);var e=n(\\"./a/strings1.resjson\\"),t=n(\\"./a/strings2.resjson\\");console.log(e.A.test+t.A.another)},\\"./a/strings1.resjson\\":(s,_,n)=>{n.d(_,{A:()=>e});const e={test:\\"blah\\"}},\\"./a/strings2.resjson\\":(s,_,n)=>{n.d(_,{A:()=>e});const e={another:\\"something else\\"}}}]);", - "/release/chunks/async2-LOCALE2-fce466dd85fa8aca1670.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[421],{\\"./a/async2.js\\":(s,_,n)=>{n.r(_);var e=n(\\"./a/strings1.resjson\\"),t=n(\\"./a/strings2.resjson\\");console.log(e.A.test+t.A.another)},\\"./a/strings1.resjson\\":(s,_,n)=>{n.d(_,{A:()=>e});const e={test:\\"baz\\"}},\\"./a/strings2.resjson\\":(s,_,n)=>{n.d(_,{A:()=>e});const e={another:\\"some random translation\\"}}}]);", - "/release/mainSingleChunk-LOCALE1-7135752c60135c524f7d.js": "(()=>{var e,r={},t={};function o(e){var n=t[e];if(void 0!==n)return n.exports;var i=t[e]={exports:{}};return r[e](i,i.exports,o),i.exports}o.m=r,o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((r,t)=>(o.f[t](e,r),r)),[])),o.u=e=>\\"chunks/async1-\\"+\\"LOCALE1\\"+\\"-80e0dd4d45c56d8a211b.js\\",o.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},o.l=(r,t,n,i)=>{if(e[r])e[r].push(t);else{var a,c;if(void 0!==n)for(var s=document.getElementsByTagName(\\"script\\"),l=0;l{a.onerror=a.onload=null,clearTimeout(d);var n=e[r];if(delete e[r],a.parentNode&&a.parentNode.removeChild(a),n&&n.forEach((e=>e(o))),t)return t(o)},d=setTimeout(p.bind(null,void 0,{type:\\"timeout\\",target:a}),12e4);a.onerror=p.bind(null,a.onerror),a.onload=p.bind(null,a.onload),c&&document.head.appendChild(a)}},o.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;o.g.importScripts&&(e=o.g.location+\\"\\");var r=o.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),o.p=e})(),(()=>{var e={331:0};o.f.j=(r,t)=>{var n=o.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else{var i=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=i);var a=o.p+o.u(r),c=new Error;o.l(a,(t=>{if(o.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var i=t&&(\\"load\\"===t.type?\\"missing\\":t.type),a=t&&t.target&&t.target.src;c.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+i+\\": \\"+a+\\")\\",c.name=\\"ChunkLoadError\\",c.type=i,c.request=a,n[1](c)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var n,i,[a,c,s]=t,l=0;if(a.some((r=>0!==e[r]))){for(n in c)o.o(c,n)&&(o.m[n]=c[n]);s&&s(o)}for(r&&r(t);l{var e,r={},t={};function o(e){var n=t[e];if(void 0!==n)return n.exports;var i=t[e]={exports:{}};return r[e](i,i.exports,o),i.exports}o.m=r,o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((r,t)=>(o.f[t](e,r),r)),[])),o.u=e=>\\"chunks/async1-\\"+\\"LOCALE2\\"+\\"-539451936e40bfe8c639.js\\",o.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},o.l=(r,t,n,i)=>{if(e[r])e[r].push(t);else{var a,c;if(void 0!==n)for(var s=document.getElementsByTagName(\\"script\\"),l=0;l{a.onerror=a.onload=null,clearTimeout(d);var n=e[r];if(delete e[r],a.parentNode&&a.parentNode.removeChild(a),n&&n.forEach((e=>e(o))),t)return t(o)},d=setTimeout(p.bind(null,void 0,{type:\\"timeout\\",target:a}),12e4);a.onerror=p.bind(null,a.onerror),a.onload=p.bind(null,a.onload),c&&document.head.appendChild(a)}},o.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;o.g.importScripts&&(e=o.g.location+\\"\\");var r=o.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),o.p=e})(),(()=>{var e={331:0};o.f.j=(r,t)=>{var n=o.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else{var i=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=i);var a=o.p+o.u(r),c=new Error;o.l(a,(t=>{if(o.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var i=t&&(\\"load\\"===t.type?\\"missing\\":t.type),a=t&&t.target&&t.target.src;c.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+i+\\": \\"+a+\\")\\",c.name=\\"ChunkLoadError\\",c.type=i,c.request=a,n[1](c)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var n,i,[a,c,s]=t,l=0;if(a.some((r=>0!==e[r]))){for(n in c)o.o(c,n)&&(o.m[n]=c[n]);s&&s(o)}for(r&&r(t);l{var e,r={},t={};function n(e){var o=t[e];if(void 0!==o)return o.exports;var a=t[e]={exports:{}};return r[e](a,a.exports,n),a.exports}n.m=r,n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,t)=>(n.f[t](e,r),r)),[])),n.u=e=>\\"chunks/\\"+{230:\\"async1\\",421:\\"async2\\"}[e]+\\"-\\"+\\"LOCALE1\\"+\\"-\\"+{230:\\"80e0dd4d45c56d8a211b\\",421:\\"e8d38de88030c68b142d\\"}[e]+\\".js\\",n.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},n.l=(r,t,o,a)=>{if(e[r])e[r].push(t);else{var i,c;if(void 0!==o)for(var s=document.getElementsByTagName(\\"script\\"),l=0;l{i.onerror=i.onload=null,clearTimeout(p);var o=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),t)return t(n)},p=setTimeout(d.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)}},n.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;n.g.importScripts&&(e=n.g.location+\\"\\");var r=n.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var o=t.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=t[o--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),n.p=e})(),(()=>{var e={580:0};n.f.j=(r,t)=>{var o=n.o(e,r)?e[r]:void 0;if(0!==o)if(o)t.push(o[2]);else{var a=new Promise(((t,n)=>o=e[r]=[t,n]));t.push(o[2]=a);var i=n.p+n.u(r),c=new Error;n.l(i,(t=>{if(n.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var a=t&&(\\"load\\"===t.type?\\"missing\\":t.type),i=t&&t.target&&t.target.src;c.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+a+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=a,c.request=i,o[1](c)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var o,a,[i,c,s]=t,l=0;if(i.some((r=>0!==e[r]))){for(o in c)n.o(c,o)&&(n.m[o]=c[o]);s&&s(n)}for(r&&r(t);l{var e,r={},t={};function n(e){var o=t[e];if(void 0!==o)return o.exports;var a=t[e]={exports:{}};return r[e](a,a.exports,n),a.exports}n.m=r,n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,t)=>(n.f[t](e,r),r)),[])),n.u=e=>\\"chunks/\\"+{230:\\"async1\\",421:\\"async2\\"}[e]+\\"-\\"+\\"LOCALE2\\"+\\"-\\"+{230:\\"539451936e40bfe8c639\\",421:\\"fce466dd85fa8aca1670\\"}[e]+\\".js\\",n.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},n.l=(r,t,o,a)=>{if(e[r])e[r].push(t);else{var i,c;if(void 0!==o)for(var s=document.getElementsByTagName(\\"script\\"),l=0;l{i.onerror=i.onload=null,clearTimeout(p);var o=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),t)return t(n)},p=setTimeout(d.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)}},n.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;n.g.importScripts&&(e=n.g.location+\\"\\");var r=n.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var o=t.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=t[o--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),n.p=e})(),(()=>{var e={580:0};n.f.j=(r,t)=>{var o=n.o(e,r)?e[r]:void 0;if(0!==o)if(o)t.push(o[2]);else{var a=new Promise(((t,n)=>o=e[r]=[t,n]));t.push(o[2]=a);var i=n.p+n.u(r),c=new Error;n.l(i,(t=>{if(n.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var a=t&&(\\"load\\"===t.type?\\"missing\\":t.type),i=t&&t.target&&t.target.src;c.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+a+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=a,c.request=i,o[1](c)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var o,a,[i,c,s]=t,l=0;if(i.some((r=>0!==e[r]))){for(o in c)n.o(c,o)&&(n.m[o]=c[o]);s&&s(n)}for(r&&r(t);l{_.r(e);var n=_(\\"./a/strings1.resjson\\"),a=_(\\"./a/strings2.resjson\\");console.log(n.A.test,a.A.another)},\\"./a/strings1.resjson\\":(s,e,_)=>{_.d(e,{A:()=>n});const n={test:\\"blah\\"}},\\"./a/strings2.resjson\\":(s,e,_)=>{_.d(e,{A:()=>n});const n={another:\\"something else\\"}}}]);", + "/release/chunks/async1-LOCALE2-1e57833357912f77511d.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[230],{\\"./a/async1.js\\":(s,e,_)=>{_.r(e);var n=_(\\"./a/strings1.resjson\\"),a=_(\\"./a/strings2.resjson\\");console.log(n.A.test,a.A.another)},\\"./a/strings1.resjson\\":(s,e,_)=>{_.d(e,{A:()=>n});const n={test:\\"baz\\"}},\\"./a/strings2.resjson\\":(s,e,_)=>{_.d(e,{A:()=>n});const n={another:\\"some random translation\\"}}}]);", + "/release/chunks/async2-LOCALE1-0c2f434469639436732a.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[421],{\\"./a/async2.js\\":(s,e,_)=>{_.r(e);var n=_(\\"./a/strings1.resjson\\"),a=_(\\"./a/strings2.resjson\\");console.log(n.A.test+a.A.another)},\\"./a/strings1.resjson\\":(s,e,_)=>{_.d(e,{A:()=>n});const n={test:\\"blah\\"}},\\"./a/strings2.resjson\\":(s,e,_)=>{_.d(e,{A:()=>n});const n={another:\\"something else\\"}}}]);", + "/release/chunks/async2-LOCALE2-664388d6b7aa642fc965.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[421],{\\"./a/async2.js\\":(s,e,_)=>{_.r(e);var n=_(\\"./a/strings1.resjson\\"),a=_(\\"./a/strings2.resjson\\");console.log(n.A.test+a.A.another)},\\"./a/strings1.resjson\\":(s,e,_)=>{_.d(e,{A:()=>n});const n={test:\\"baz\\"}},\\"./a/strings2.resjson\\":(s,e,_)=>{_.d(e,{A:()=>n});const n={another:\\"some random translation\\"}}}]);", + "/release/mainSingleChunk-LOCALE1-b5298ec5dbc6d720c511.js": "(()=>{var e,r={},t={};function o(e){var n=t[e];if(void 0!==n)return n.exports;var a=t[e]={exports:{}};return r[e](a,a.exports,o),a.exports}o.m=r,o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((r,t)=>(o.f[t](e,r),r)),[])),o.u=e=>\\"chunks/async1-\\"+\\"LOCALE1\\"+\\"-44d1a3fadec3f8385e08.js\\",o.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},o.l=(r,t,n,a)=>{if(e[r])e[r].push(t);else{var i,c;if(void 0!==n)for(var s=document.getElementsByTagName(\\"script\\"),l=0;l{i.onerror=i.onload=null,clearTimeout(d);var n=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),n&&n.forEach((e=>e(o))),t)return t(o)},d=setTimeout(p.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),c&&document.head.appendChild(i)}},o.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;o.g.importScripts&&(e=o.g.location+\\"\\");var r=o.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),o.p=e})(),(()=>{var e={331:0};o.f.j=(r,t)=>{var n=o.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else{var a=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=a);var i=o.p+o.u(r),c=new Error;o.l(i,(t=>{if(o.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var a=t&&(\\"load\\"===t.type?\\"missing\\":t.type),i=t&&t.target&&t.target.src;c.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+a+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=a,c.request=i,n[1](c)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var n,a,[i,c,s]=t,l=0;if(i.some((r=>0!==e[r]))){for(n in c)o.o(c,n)&&(o.m[n]=c[n]);s&&s(o)}for(r&&r(t);l{var e,r={},t={};function o(e){var n=t[e];if(void 0!==n)return n.exports;var a=t[e]={exports:{}};return r[e](a,a.exports,o),a.exports}o.m=r,o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((r,t)=>(o.f[t](e,r),r)),[])),o.u=e=>\\"chunks/async1-\\"+\\"LOCALE2\\"+\\"-1e57833357912f77511d.js\\",o.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},o.l=(r,t,n,a)=>{if(e[r])e[r].push(t);else{var i,c;if(void 0!==n)for(var s=document.getElementsByTagName(\\"script\\"),l=0;l{i.onerror=i.onload=null,clearTimeout(d);var n=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),n&&n.forEach((e=>e(o))),t)return t(o)},d=setTimeout(p.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),c&&document.head.appendChild(i)}},o.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;o.g.importScripts&&(e=o.g.location+\\"\\");var r=o.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),o.p=e})(),(()=>{var e={331:0};o.f.j=(r,t)=>{var n=o.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else{var a=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=a);var i=o.p+o.u(r),c=new Error;o.l(i,(t=>{if(o.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var a=t&&(\\"load\\"===t.type?\\"missing\\":t.type),i=t&&t.target&&t.target.src;c.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+a+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=a,c.request=i,n[1](c)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var n,a,[i,c,s]=t,l=0;if(i.some((r=>0!==e[r]))){for(n in c)o.o(c,n)&&(o.m[n]=c[n]);s&&s(o)}for(r&&r(t);l{var e,r={},t={};function n(e){var o=t[e];if(void 0!==o)return o.exports;var a=t[e]={exports:{}};return r[e](a,a.exports,n),a.exports}n.m=r,n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,t)=>(n.f[t](e,r),r)),[])),n.u=e=>\\"chunks/\\"+{230:\\"async1\\",421:\\"async2\\"}[e]+\\"-\\"+\\"LOCALE1\\"+\\"-\\"+{230:\\"44d1a3fadec3f8385e08\\",421:\\"0c2f434469639436732a\\"}[e]+\\".js\\",n.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},n.l=(r,t,o,a)=>{if(e[r])e[r].push(t);else{var i,c;if(void 0!==o)for(var s=document.getElementsByTagName(\\"script\\"),l=0;l{i.onerror=i.onload=null,clearTimeout(p);var o=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),t)return t(n)},p=setTimeout(d.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)}},n.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;n.g.importScripts&&(e=n.g.location+\\"\\");var r=n.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var o=t.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=t[o--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),n.p=e})(),(()=>{var e={580:0};n.f.j=(r,t)=>{var o=n.o(e,r)?e[r]:void 0;if(0!==o)if(o)t.push(o[2]);else{var a=new Promise(((t,n)=>o=e[r]=[t,n]));t.push(o[2]=a);var i=n.p+n.u(r),c=new Error;n.l(i,(t=>{if(n.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var a=t&&(\\"load\\"===t.type?\\"missing\\":t.type),i=t&&t.target&&t.target.src;c.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+a+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=a,c.request=i,o[1](c)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var o,a,[i,c,s]=t,l=0;if(i.some((r=>0!==e[r]))){for(o in c)n.o(c,o)&&(n.m[o]=c[o]);s&&s(n)}for(r&&r(t);l{var e,r={},t={};function n(e){var o=t[e];if(void 0!==o)return o.exports;var a=t[e]={exports:{}};return r[e](a,a.exports,n),a.exports}n.m=r,n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,t)=>(n.f[t](e,r),r)),[])),n.u=e=>\\"chunks/\\"+{230:\\"async1\\",421:\\"async2\\"}[e]+\\"-\\"+\\"LOCALE2\\"+\\"-\\"+{230:\\"1e57833357912f77511d\\",421:\\"664388d6b7aa642fc965\\"}[e]+\\".js\\",n.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},n.l=(r,t,o,a)=>{if(e[r])e[r].push(t);else{var i,c;if(void 0!==o)for(var s=document.getElementsByTagName(\\"script\\"),l=0;l{i.onerror=i.onload=null,clearTimeout(p);var o=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),t)return t(n)},p=setTimeout(d.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)}},n.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;n.g.importScripts&&(e=n.g.location+\\"\\");var r=n.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var o=t.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=t[o--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),n.p=e})(),(()=>{var e={580:0};n.f.j=(r,t)=>{var o=n.o(e,r)?e[r]:void 0;if(0!==o)if(o)t.push(o[2]);else{var a=new Promise(((t,n)=>o=e[r]=[t,n]));t.push(o[2]=a);var i=n.p+n.u(r),c=new Error;n.l(i,(t=>{if(n.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var a=t&&(\\"load\\"===t.type?\\"missing\\":t.type),i=t&&t.target&&t.target.src;c.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+a+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=a,c.request=i,o[1](c)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var o,a,[i,c,s]=t,l=0;if(i.some((r=>0!==e[r]))){for(o in c)n.o(c,o)&&(n.m[o]=c[o]);s&&s(n)}for(r&&r(t);l{n.r(_);var e=n(\\"./a/strings1.resjson\\"),t=n(\\"./a/strings2.resjson\\");console.log(e.A.test,t.A.another)},\\"./a/strings1.resjson\\":(s,_,n)=>{n.d(_,{A:()=>e});const e={test:\\"blah\\"}},\\"./a/strings2.resjson\\":(s,_,n)=>{n.d(_,{A:()=>e});const e={another:\\"something else\\"}}}]);", - "/release/chunks/async1-LOCALE2-b2985647a6b5d7bbf49569bf30fcdd43a24880bc495950452a35e352b37066b8.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[230],{\\"./a/async1.js\\":(s,_,n)=>{n.r(_);var e=n(\\"./a/strings1.resjson\\"),t=n(\\"./a/strings2.resjson\\");console.log(e.A.test,t.A.another)},\\"./a/strings1.resjson\\":(s,_,n)=>{n.d(_,{A:()=>e});const e={test:\\"baz\\"}},\\"./a/strings2.resjson\\":(s,_,n)=>{n.d(_,{A:()=>e});const e={another:\\"some random translation\\"}}}]);", - "/release/chunks/async2-LOCALE1-641cd42180255703e525fa56d1b32de341db100fe8d8b27448e94e818c088d1d.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[421],{\\"./a/async2.js\\":(s,_,n)=>{n.r(_);var e=n(\\"./a/strings1.resjson\\"),t=n(\\"./a/strings2.resjson\\");console.log(e.A.test+t.A.another)},\\"./a/strings1.resjson\\":(s,_,n)=>{n.d(_,{A:()=>e});const e={test:\\"blah\\"}},\\"./a/strings2.resjson\\":(s,_,n)=>{n.d(_,{A:()=>e});const e={another:\\"something else\\"}}}]);", - "/release/chunks/async2-LOCALE2-14a540e591fb82dcb6c9f99427cb521656b0ee8de540319e56e76afb7ebd396c.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[421],{\\"./a/async2.js\\":(s,_,n)=>{n.r(_);var e=n(\\"./a/strings1.resjson\\"),t=n(\\"./a/strings2.resjson\\");console.log(e.A.test+t.A.another)},\\"./a/strings1.resjson\\":(s,_,n)=>{n.d(_,{A:()=>e});const e={test:\\"baz\\"}},\\"./a/strings2.resjson\\":(s,_,n)=>{n.d(_,{A:()=>e});const e={another:\\"some random translation\\"}}}]);", - "/release/mainSingleChunk-LOCALE1-88a389921d55b9999439cd5075753ed9d3a35961dbb7cafe5c560cd5dabcef0c.js": "(()=>{var e,r={},t={};function o(e){var n=t[e];if(void 0!==n)return n.exports;var i=t[e]={exports:{}};return r[e](i,i.exports,o),i.exports}o.m=r,o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((r,t)=>(o.f[t](e,r),r)),[])),o.u=e=>\\"chunks/async1-\\"+\\"LOCALE1\\"+\\"-70fe0b509d7345abfb68a752ab94e284aaae4c59509529d675429ef3e00e786b.js\\",o.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},o.l=(r,t,n,i)=>{if(e[r])e[r].push(t);else{var a,c;if(void 0!==n)for(var s=document.getElementsByTagName(\\"script\\"),l=0;l{a.onerror=a.onload=null,clearTimeout(d);var n=e[r];if(delete e[r],a.parentNode&&a.parentNode.removeChild(a),n&&n.forEach((e=>e(o))),t)return t(o)},d=setTimeout(p.bind(null,void 0,{type:\\"timeout\\",target:a}),12e4);a.onerror=p.bind(null,a.onerror),a.onload=p.bind(null,a.onload),c&&document.head.appendChild(a)}},o.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;o.g.importScripts&&(e=o.g.location+\\"\\");var r=o.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),o.p=e})(),(()=>{var e={331:0};o.f.j=(r,t)=>{var n=o.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else{var i=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=i);var a=o.p+o.u(r),c=new Error;o.l(a,(t=>{if(o.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var i=t&&(\\"load\\"===t.type?\\"missing\\":t.type),a=t&&t.target&&t.target.src;c.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+i+\\": \\"+a+\\")\\",c.name=\\"ChunkLoadError\\",c.type=i,c.request=a,n[1](c)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var n,i,[a,c,s]=t,l=0;if(a.some((r=>0!==e[r]))){for(n in c)o.o(c,n)&&(o.m[n]=c[n]);s&&s(o)}for(r&&r(t);l{var e,r={},t={};function o(e){var n=t[e];if(void 0!==n)return n.exports;var i=t[e]={exports:{}};return r[e](i,i.exports,o),i.exports}o.m=r,o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((r,t)=>(o.f[t](e,r),r)),[])),o.u=e=>\\"chunks/async1-\\"+\\"LOCALE2\\"+\\"-b2985647a6b5d7bbf49569bf30fcdd43a24880bc495950452a35e352b37066b8.js\\",o.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},o.l=(r,t,n,i)=>{if(e[r])e[r].push(t);else{var a,c;if(void 0!==n)for(var s=document.getElementsByTagName(\\"script\\"),l=0;l{a.onerror=a.onload=null,clearTimeout(d);var n=e[r];if(delete e[r],a.parentNode&&a.parentNode.removeChild(a),n&&n.forEach((e=>e(o))),t)return t(o)},d=setTimeout(p.bind(null,void 0,{type:\\"timeout\\",target:a}),12e4);a.onerror=p.bind(null,a.onerror),a.onload=p.bind(null,a.onload),c&&document.head.appendChild(a)}},o.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;o.g.importScripts&&(e=o.g.location+\\"\\");var r=o.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),o.p=e})(),(()=>{var e={331:0};o.f.j=(r,t)=>{var n=o.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else{var i=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=i);var a=o.p+o.u(r),c=new Error;o.l(a,(t=>{if(o.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var i=t&&(\\"load\\"===t.type?\\"missing\\":t.type),a=t&&t.target&&t.target.src;c.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+i+\\": \\"+a+\\")\\",c.name=\\"ChunkLoadError\\",c.type=i,c.request=a,n[1](c)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var n,i,[a,c,s]=t,l=0;if(a.some((r=>0!==e[r]))){for(n in c)o.o(c,n)&&(o.m[n]=c[n]);s&&s(o)}for(r&&r(t);l{var e,r={},t={};function n(e){var o=t[e];if(void 0!==o)return o.exports;var a=t[e]={exports:{}};return r[e](a,a.exports,n),a.exports}n.m=r,n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,t)=>(n.f[t](e,r),r)),[])),n.u=e=>\\"chunks/\\"+{230:\\"async1\\",421:\\"async2\\"}[e]+\\"-\\"+\\"LOCALE1\\"+\\"-\\"+{230:\\"70fe0b509d7345abfb68a752ab94e284aaae4c59509529d675429ef3e00e786b\\",421:\\"641cd42180255703e525fa56d1b32de341db100fe8d8b27448e94e818c088d1d\\"}[e]+\\".js\\",n.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},n.l=(r,t,o,a)=>{if(e[r])e[r].push(t);else{var i,c;if(void 0!==o)for(var s=document.getElementsByTagName(\\"script\\"),l=0;l{i.onerror=i.onload=null,clearTimeout(p);var o=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),t)return t(n)},p=setTimeout(d.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)}},n.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;n.g.importScripts&&(e=n.g.location+\\"\\");var r=n.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var o=t.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=t[o--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),n.p=e})(),(()=>{var e={580:0};n.f.j=(r,t)=>{var o=n.o(e,r)?e[r]:void 0;if(0!==o)if(o)t.push(o[2]);else{var a=new Promise(((t,n)=>o=e[r]=[t,n]));t.push(o[2]=a);var i=n.p+n.u(r),c=new Error;n.l(i,(t=>{if(n.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var a=t&&(\\"load\\"===t.type?\\"missing\\":t.type),i=t&&t.target&&t.target.src;c.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+a+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=a,c.request=i,o[1](c)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var o,a,[i,c,s]=t,l=0;if(i.some((r=>0!==e[r]))){for(o in c)n.o(c,o)&&(n.m[o]=c[o]);s&&s(n)}for(r&&r(t);l{var e,r={},t={};function n(e){var o=t[e];if(void 0!==o)return o.exports;var a=t[e]={exports:{}};return r[e](a,a.exports,n),a.exports}n.m=r,n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,t)=>(n.f[t](e,r),r)),[])),n.u=e=>\\"chunks/\\"+{230:\\"async1\\",421:\\"async2\\"}[e]+\\"-\\"+\\"LOCALE2\\"+\\"-\\"+{230:\\"b2985647a6b5d7bbf49569bf30fcdd43a24880bc495950452a35e352b37066b8\\",421:\\"14a540e591fb82dcb6c9f99427cb521656b0ee8de540319e56e76afb7ebd396c\\"}[e]+\\".js\\",n.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},n.l=(r,t,o,a)=>{if(e[r])e[r].push(t);else{var i,c;if(void 0!==o)for(var s=document.getElementsByTagName(\\"script\\"),l=0;l{i.onerror=i.onload=null,clearTimeout(p);var o=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),t)return t(n)},p=setTimeout(d.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)}},n.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;n.g.importScripts&&(e=n.g.location+\\"\\");var r=n.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var o=t.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=t[o--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),n.p=e})(),(()=>{var e={580:0};n.f.j=(r,t)=>{var o=n.o(e,r)?e[r]:void 0;if(0!==o)if(o)t.push(o[2]);else{var a=new Promise(((t,n)=>o=e[r]=[t,n]));t.push(o[2]=a);var i=n.p+n.u(r),c=new Error;n.l(i,(t=>{if(n.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var a=t&&(\\"load\\"===t.type?\\"missing\\":t.type),i=t&&t.target&&t.target.src;c.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+a+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=a,c.request=i,o[1](c)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var o,a,[i,c,s]=t,l=0;if(i.some((r=>0!==e[r]))){for(o in c)n.o(c,o)&&(n.m[o]=c[o]);s&&s(n)}for(r&&r(t);l{_.r(e);var n=_(\\"./a/strings1.resjson\\"),a=_(\\"./a/strings2.resjson\\");console.log(n.A.test,a.A.another)},\\"./a/strings1.resjson\\":(s,e,_)=>{_.d(e,{A:()=>n});const n={test:\\"blah\\"}},\\"./a/strings2.resjson\\":(s,e,_)=>{_.d(e,{A:()=>n});const n={another:\\"something else\\"}}}]);", + "/release/chunks/async1-LOCALE2-fa6798298a8e8fb0d1bfe76c5e91205c5fed97626fa266ba799a906a58a693e8.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[230],{\\"./a/async1.js\\":(s,e,_)=>{_.r(e);var n=_(\\"./a/strings1.resjson\\"),a=_(\\"./a/strings2.resjson\\");console.log(n.A.test,a.A.another)},\\"./a/strings1.resjson\\":(s,e,_)=>{_.d(e,{A:()=>n});const n={test:\\"baz\\"}},\\"./a/strings2.resjson\\":(s,e,_)=>{_.d(e,{A:()=>n});const n={another:\\"some random translation\\"}}}]);", + "/release/chunks/async2-LOCALE1-2878fc254efcf861ebdb1de8ffe2da978f78d90bdb657ca96126fe284386851a.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[421],{\\"./a/async2.js\\":(s,e,_)=>{_.r(e);var n=_(\\"./a/strings1.resjson\\"),a=_(\\"./a/strings2.resjson\\");console.log(n.A.test+a.A.another)},\\"./a/strings1.resjson\\":(s,e,_)=>{_.d(e,{A:()=>n});const n={test:\\"blah\\"}},\\"./a/strings2.resjson\\":(s,e,_)=>{_.d(e,{A:()=>n});const n={another:\\"something else\\"}}}]);", + "/release/chunks/async2-LOCALE2-c2b6b66a1486798af745222597d7f7f64daf16f5566e28a3e34dda6da6f41f87.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[421],{\\"./a/async2.js\\":(s,e,_)=>{_.r(e);var n=_(\\"./a/strings1.resjson\\"),a=_(\\"./a/strings2.resjson\\");console.log(n.A.test+a.A.another)},\\"./a/strings1.resjson\\":(s,e,_)=>{_.d(e,{A:()=>n});const n={test:\\"baz\\"}},\\"./a/strings2.resjson\\":(s,e,_)=>{_.d(e,{A:()=>n});const n={another:\\"some random translation\\"}}}]);", + "/release/mainSingleChunk-LOCALE1-2243164524db296ff4600237f995d3d1a1a185b543dd737e2982c3ef524de443.js": "(()=>{var e,r={},t={};function o(e){var n=t[e];if(void 0!==n)return n.exports;var a=t[e]={exports:{}};return r[e](a,a.exports,o),a.exports}o.m=r,o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((r,t)=>(o.f[t](e,r),r)),[])),o.u=e=>\\"chunks/async1-\\"+\\"LOCALE1\\"+\\"-9bd32294abc47c2bd95cbd4f4a64ac12f94cfd89dbb3cc1056c8ca83c94b3f83.js\\",o.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},o.l=(r,t,n,a)=>{if(e[r])e[r].push(t);else{var i,c;if(void 0!==n)for(var s=document.getElementsByTagName(\\"script\\"),l=0;l{i.onerror=i.onload=null,clearTimeout(d);var n=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),n&&n.forEach((e=>e(o))),t)return t(o)},d=setTimeout(p.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),c&&document.head.appendChild(i)}},o.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;o.g.importScripts&&(e=o.g.location+\\"\\");var r=o.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),o.p=e})(),(()=>{var e={331:0};o.f.j=(r,t)=>{var n=o.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else{var a=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=a);var i=o.p+o.u(r),c=new Error;o.l(i,(t=>{if(o.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var a=t&&(\\"load\\"===t.type?\\"missing\\":t.type),i=t&&t.target&&t.target.src;c.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+a+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=a,c.request=i,n[1](c)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var n,a,[i,c,s]=t,l=0;if(i.some((r=>0!==e[r]))){for(n in c)o.o(c,n)&&(o.m[n]=c[n]);s&&s(o)}for(r&&r(t);l{var e,r={},t={};function o(e){var n=t[e];if(void 0!==n)return n.exports;var a=t[e]={exports:{}};return r[e](a,a.exports,o),a.exports}o.m=r,o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((r,t)=>(o.f[t](e,r),r)),[])),o.u=e=>\\"chunks/async1-\\"+\\"LOCALE2\\"+\\"-fa6798298a8e8fb0d1bfe76c5e91205c5fed97626fa266ba799a906a58a693e8.js\\",o.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},o.l=(r,t,n,a)=>{if(e[r])e[r].push(t);else{var i,c;if(void 0!==n)for(var s=document.getElementsByTagName(\\"script\\"),l=0;l{i.onerror=i.onload=null,clearTimeout(d);var n=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),n&&n.forEach((e=>e(o))),t)return t(o)},d=setTimeout(p.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),c&&document.head.appendChild(i)}},o.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;o.g.importScripts&&(e=o.g.location+\\"\\");var r=o.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),o.p=e})(),(()=>{var e={331:0};o.f.j=(r,t)=>{var n=o.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else{var a=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=a);var i=o.p+o.u(r),c=new Error;o.l(i,(t=>{if(o.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var a=t&&(\\"load\\"===t.type?\\"missing\\":t.type),i=t&&t.target&&t.target.src;c.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+a+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=a,c.request=i,n[1](c)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var n,a,[i,c,s]=t,l=0;if(i.some((r=>0!==e[r]))){for(n in c)o.o(c,n)&&(o.m[n]=c[n]);s&&s(o)}for(r&&r(t);l{var e,r={},t={};function n(e){var o=t[e];if(void 0!==o)return o.exports;var a=t[e]={exports:{}};return r[e](a,a.exports,n),a.exports}n.m=r,n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,t)=>(n.f[t](e,r),r)),[])),n.u=e=>\\"chunks/\\"+{230:\\"async1\\",421:\\"async2\\"}[e]+\\"-\\"+\\"LOCALE1\\"+\\"-\\"+{230:\\"9bd32294abc47c2bd95cbd4f4a64ac12f94cfd89dbb3cc1056c8ca83c94b3f83\\",421:\\"2878fc254efcf861ebdb1de8ffe2da978f78d90bdb657ca96126fe284386851a\\"}[e]+\\".js\\",n.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},n.l=(r,t,o,a)=>{if(e[r])e[r].push(t);else{var i,c;if(void 0!==o)for(var s=document.getElementsByTagName(\\"script\\"),l=0;l{i.onerror=i.onload=null,clearTimeout(p);var o=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),t)return t(n)},p=setTimeout(d.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)}},n.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;n.g.importScripts&&(e=n.g.location+\\"\\");var r=n.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var o=t.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=t[o--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),n.p=e})(),(()=>{var e={580:0};n.f.j=(r,t)=>{var o=n.o(e,r)?e[r]:void 0;if(0!==o)if(o)t.push(o[2]);else{var a=new Promise(((t,n)=>o=e[r]=[t,n]));t.push(o[2]=a);var i=n.p+n.u(r),c=new Error;n.l(i,(t=>{if(n.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var a=t&&(\\"load\\"===t.type?\\"missing\\":t.type),i=t&&t.target&&t.target.src;c.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+a+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=a,c.request=i,o[1](c)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var o,a,[i,c,s]=t,l=0;if(i.some((r=>0!==e[r]))){for(o in c)n.o(c,o)&&(n.m[o]=c[o]);s&&s(n)}for(r&&r(t);l{var e,r={},t={};function n(e){var o=t[e];if(void 0!==o)return o.exports;var a=t[e]={exports:{}};return r[e](a,a.exports,n),a.exports}n.m=r,n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,t)=>(n.f[t](e,r),r)),[])),n.u=e=>\\"chunks/\\"+{230:\\"async1\\",421:\\"async2\\"}[e]+\\"-\\"+\\"LOCALE2\\"+\\"-\\"+{230:\\"fa6798298a8e8fb0d1bfe76c5e91205c5fed97626fa266ba799a906a58a693e8\\",421:\\"c2b6b66a1486798af745222597d7f7f64daf16f5566e28a3e34dda6da6f41f87\\"}[e]+\\".js\\",n.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},n.l=(r,t,o,a)=>{if(e[r])e[r].push(t);else{var i,c;if(void 0!==o)for(var s=document.getElementsByTagName(\\"script\\"),l=0;l{i.onerror=i.onload=null,clearTimeout(p);var o=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),t)return t(n)},p=setTimeout(d.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)}},n.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;n.g.importScripts&&(e=n.g.location+\\"\\");var r=n.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var o=t.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=t[o--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),n.p=e})(),(()=>{var e={580:0};n.f.j=(r,t)=>{var o=n.o(e,r)?e[r]:void 0;if(0!==o)if(o)t.push(o[2]);else{var a=new Promise(((t,n)=>o=e[r]=[t,n]));t.push(o[2]=a);var i=n.p+n.u(r),c=new Error;n.l(i,(t=>{if(n.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var a=t&&(\\"load\\"===t.type?\\"missing\\":t.type),i=t&&t.target&&t.target.src;c.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+a+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=a,c.request=i,o[1](c)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var o,a,[i,c,s]=t,l=0;if(i.some((r=>0!==e[r]))){for(o in c)n.o(c,o)&&(n.m[o]=c[o]);s&&s(n)}for(r&&r(t);l{console.log(\\"blah1\\")}}]);", "/release/chunks/async2-none-1b365930b3b55b3e7daf.js": "(self.webpackChunk=self.webpackChunk||[]).push([[421],{\\"./a/async2.js\\":()=>{console.log(\\"blah2\\")}}]);", - "/release/chunks/asyncLoc1-LOCALE1-11284a1030c0b96a0d4a.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[410],{\\"./a/asyncLoc1.js\\":(s,_,n)=>{n.r(_);var o=n(\\"./a/strings1.loc.json\\"),t=n(\\"./a/strings2.loc.json\\");console.log(o.A.test,t.A.another)},\\"./a/strings1.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={test:\\"blah\\"}},\\"./a/strings2.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={another:\\"something else\\"}}}]);", - "/release/chunks/asyncLoc1-LOCALE2-732c0329cde51769598f.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[410],{\\"./a/asyncLoc1.js\\":(s,_,n)=>{n.r(_);var o=n(\\"./a/strings1.loc.json\\"),t=n(\\"./a/strings2.loc.json\\");console.log(o.A.test,t.A.another)},\\"./a/strings1.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={test:\\"baz\\"}},\\"./a/strings2.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={another:\\"some random translation\\"}}}]);", - "/release/chunks/asyncLoc2-LOCALE1-0a0dcdf1f01e840045bb.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[17],{\\"./a/asyncLoc2.js\\":(s,_,n)=>{n.r(_);var o=n(\\"./a/strings1.loc.json\\"),t=n(\\"./a/strings2.loc.json\\");console.log(o.A.test+t.A.another)},\\"./a/strings1.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={test:\\"blah\\"}},\\"./a/strings2.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={another:\\"something else\\"}}}]);", - "/release/chunks/asyncLoc2-LOCALE2-b7bf7b922103768fdca2.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[17],{\\"./a/asyncLoc2.js\\":(s,_,n)=>{n.r(_);var o=n(\\"./a/strings1.loc.json\\"),t=n(\\"./a/strings2.loc.json\\");console.log(o.A.test+t.A.another)},\\"./a/strings1.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={test:\\"baz\\"}},\\"./a/strings2.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={another:\\"some random translation\\"}}}]);", - "/release/main-LOCALE1-13cabae54d71324e68b9.js": "(()=>{var e,t,r,n={},o={};function a(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}};return n[e](r,r.exports,a),r.exports}a.m=n,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,a.t=function(r,n){if(1&n&&(r=this(r)),8&n)return r;if(\\"object\\"==typeof r&&r){if(4&n&&r.__esModule)return r;if(16&n&&\\"function\\"==typeof r.then)return r}var o=Object.create(null);a.r(o);var i={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&r;\\"object\\"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>i[e]=()=>r[e]));return i.default=()=>r,a.d(o,i),o},a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((t,r)=>(a.f[r](e,t),t)),[])),a.u=e=>\\"chunks/\\"+{17:\\"asyncLoc2\\",230:\\"async1\\",410:\\"asyncLoc1\\",421:\\"async2\\"}[e]+\\"-\\"+({17:1,410:1}[e]?\\"LOCALE1\\":\\"none\\")+\\"-\\"+{17:\\"0a0dcdf1f01e840045bb\\",230:\\"dcecbe55134f94f9aee7\\",410:\\"11284a1030c0b96a0d4a\\",421:\\"1b365930b3b55b3e7daf\\"}[e]+\\".js\\",a.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},a.l=(e,t,n,o)=>{if(r[e])r[e].push(t);else{var i,c;if(void 0!==n)for(var s=document.getElementsByTagName(\\"script\\"),f=0;f{i.onerror=i.onload=null,clearTimeout(d);var o=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),t)return t(n)},d=setTimeout(l.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=l.bind(null,i.onerror),i.onload=l.bind(null,i.onload),c&&document.head.appendChild(i)}},a.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;a.g.importScripts&&(e=a.g.location+\\"\\");var t=a.g.document;if(!e&&t&&(t.currentScript&&\\"SCRIPT\\"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName(\\"script\\");if(r.length)for(var n=r.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=r[n--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),a.p=e})(),(()=>{var e={792:0};a.f.j=(t,r)=>{var n=a.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,o)=>n=e[t]=[r,o]));r.push(n[2]=o);var i=a.p+a.u(t),c=new Error;a.l(i,(r=>{if(a.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&(\\"load\\"===r.type?\\"missing\\":r.type),i=r&&r.target&&r.target.src;c.message=\\"Loading chunk \\"+t+\\" failed.\\\\n(\\"+o+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=o,c.request=i,n[1](c)}}),\\"chunk-\\"+t,t)}};var t=(t,r)=>{var n,o,[i,c,s]=r,f=0;if(i.some((t=>0!==e[t]))){for(n in c)a.o(c,n)&&(a.m[n]=c[n]);s&&s(a)}for(t&&t(r);f{var e,t,r,n={},o={};function a(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}};return n[e](r,r.exports,a),r.exports}a.m=n,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,a.t=function(r,n){if(1&n&&(r=this(r)),8&n)return r;if(\\"object\\"==typeof r&&r){if(4&n&&r.__esModule)return r;if(16&n&&\\"function\\"==typeof r.then)return r}var o=Object.create(null);a.r(o);var i={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&r;\\"object\\"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>i[e]=()=>r[e]));return i.default=()=>r,a.d(o,i),o},a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((t,r)=>(a.f[r](e,t),t)),[])),a.u=e=>\\"chunks/\\"+{17:\\"asyncLoc2\\",230:\\"async1\\",410:\\"asyncLoc1\\",421:\\"async2\\"}[e]+\\"-\\"+({17:1,410:1}[e]?\\"LOCALE2\\":\\"none\\")+\\"-\\"+{17:\\"b7bf7b922103768fdca2\\",230:\\"dcecbe55134f94f9aee7\\",410:\\"732c0329cde51769598f\\",421:\\"1b365930b3b55b3e7daf\\"}[e]+\\".js\\",a.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},a.l=(e,t,n,o)=>{if(r[e])r[e].push(t);else{var i,c;if(void 0!==n)for(var s=document.getElementsByTagName(\\"script\\"),f=0;f{i.onerror=i.onload=null,clearTimeout(d);var o=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),t)return t(n)},d=setTimeout(l.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=l.bind(null,i.onerror),i.onload=l.bind(null,i.onload),c&&document.head.appendChild(i)}},a.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;a.g.importScripts&&(e=a.g.location+\\"\\");var t=a.g.document;if(!e&&t&&(t.currentScript&&\\"SCRIPT\\"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName(\\"script\\");if(r.length)for(var n=r.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=r[n--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),a.p=e})(),(()=>{var e={792:0};a.f.j=(t,r)=>{var n=a.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,o)=>n=e[t]=[r,o]));r.push(n[2]=o);var i=a.p+a.u(t),c=new Error;a.l(i,(r=>{if(a.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&(\\"load\\"===r.type?\\"missing\\":r.type),i=r&&r.target&&r.target.src;c.message=\\"Loading chunk \\"+t+\\" failed.\\\\n(\\"+o+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=o,c.request=i,n[1](c)}}),\\"chunk-\\"+t,t)}};var t=(t,r)=>{var n,o,[i,c,s]=r,f=0;if(i.some((t=>0!==e[t]))){for(n in c)a.o(c,n)&&(a.m[n]=c[n]);s&&s(a)}for(t&&t(r);f{e.r(_);var n=e(\\"./a/strings1.loc.json\\"),o=e(\\"./a/strings2.loc.json\\");console.log(n.A.test,o.A.another)},\\"./a/strings1.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={test:\\"blah\\"}},\\"./a/strings2.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={another:\\"something else\\"}}}]);", + "/release/chunks/asyncLoc1-LOCALE2-05a985dae698da8962f5.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[410],{\\"./a/asyncLoc1.js\\":(s,_,e)=>{e.r(_);var n=e(\\"./a/strings1.loc.json\\"),o=e(\\"./a/strings2.loc.json\\");console.log(n.A.test,o.A.another)},\\"./a/strings1.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={test:\\"baz\\"}},\\"./a/strings2.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={another:\\"some random translation\\"}}}]);", + "/release/chunks/asyncLoc2-LOCALE1-ba4e327105557c561da1.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[17],{\\"./a/asyncLoc2.js\\":(s,_,e)=>{e.r(_);var n=e(\\"./a/strings1.loc.json\\"),o=e(\\"./a/strings2.loc.json\\");console.log(n.A.test+o.A.another)},\\"./a/strings1.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={test:\\"blah\\"}},\\"./a/strings2.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={another:\\"something else\\"}}}]);", + "/release/chunks/asyncLoc2-LOCALE2-751acb3501e81e642678.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[17],{\\"./a/asyncLoc2.js\\":(s,_,e)=>{e.r(_);var n=e(\\"./a/strings1.loc.json\\"),o=e(\\"./a/strings2.loc.json\\");console.log(n.A.test+o.A.another)},\\"./a/strings1.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={test:\\"baz\\"}},\\"./a/strings2.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={another:\\"some random translation\\"}}}]);", + "/release/main-LOCALE1-3256015a74af7ab49a92.js": "(()=>{var e,t,r,n={},o={};function a(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}};return n[e](r,r.exports,a),r.exports}a.m=n,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,a.t=function(r,n){if(1&n&&(r=this(r)),8&n)return r;if(\\"object\\"==typeof r&&r){if(4&n&&r.__esModule)return r;if(16&n&&\\"function\\"==typeof r.then)return r}var o=Object.create(null);a.r(o);var i={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&r;\\"object\\"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>i[e]=()=>r[e]));return i.default=()=>r,a.d(o,i),o},a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((t,r)=>(a.f[r](e,t),t)),[])),a.u=e=>\\"chunks/\\"+{17:\\"asyncLoc2\\",230:\\"async1\\",410:\\"asyncLoc1\\",421:\\"async2\\"}[e]+\\"-\\"+({17:1,410:1}[e]?\\"LOCALE1\\":\\"none\\")+\\"-\\"+{17:\\"ba4e327105557c561da1\\",230:\\"dcecbe55134f94f9aee7\\",410:\\"0b2f66791f51dbf42d4c\\",421:\\"1b365930b3b55b3e7daf\\"}[e]+\\".js\\",a.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},a.l=(e,t,n,o)=>{if(r[e])r[e].push(t);else{var i,c;if(void 0!==n)for(var s=document.getElementsByTagName(\\"script\\"),u=0;u{i.onerror=i.onload=null,clearTimeout(f);var o=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),t)return t(n)},f=setTimeout(d.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)}},a.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;a.g.importScripts&&(e=a.g.location+\\"\\");var t=a.g.document;if(!e&&t&&(t.currentScript&&\\"SCRIPT\\"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName(\\"script\\");if(r.length)for(var n=r.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=r[n--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),a.p=e})(),(()=>{var e={792:0};a.f.j=(t,r)=>{var n=a.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,o)=>n=e[t]=[r,o]));r.push(n[2]=o);var i=a.p+a.u(t),c=new Error;a.l(i,(r=>{if(a.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&(\\"load\\"===r.type?\\"missing\\":r.type),i=r&&r.target&&r.target.src;c.message=\\"Loading chunk \\"+t+\\" failed.\\\\n(\\"+o+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=o,c.request=i,n[1](c)}}),\\"chunk-\\"+t,t)}};var t=(t,r)=>{var n,o,[i,c,s]=r,u=0;if(i.some((t=>0!==e[t]))){for(n in c)a.o(c,n)&&(a.m[n]=c[n]);s&&s(a)}for(t&&t(r);u{var e,t,r,n={},o={};function a(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}};return n[e](r,r.exports,a),r.exports}a.m=n,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,a.t=function(r,n){if(1&n&&(r=this(r)),8&n)return r;if(\\"object\\"==typeof r&&r){if(4&n&&r.__esModule)return r;if(16&n&&\\"function\\"==typeof r.then)return r}var o=Object.create(null);a.r(o);var i={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&r;\\"object\\"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>i[e]=()=>r[e]));return i.default=()=>r,a.d(o,i),o},a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((t,r)=>(a.f[r](e,t),t)),[])),a.u=e=>\\"chunks/\\"+{17:\\"asyncLoc2\\",230:\\"async1\\",410:\\"asyncLoc1\\",421:\\"async2\\"}[e]+\\"-\\"+({17:1,410:1}[e]?\\"LOCALE2\\":\\"none\\")+\\"-\\"+{17:\\"751acb3501e81e642678\\",230:\\"dcecbe55134f94f9aee7\\",410:\\"05a985dae698da8962f5\\",421:\\"1b365930b3b55b3e7daf\\"}[e]+\\".js\\",a.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},a.l=(e,t,n,o)=>{if(r[e])r[e].push(t);else{var i,c;if(void 0!==n)for(var s=document.getElementsByTagName(\\"script\\"),u=0;u{i.onerror=i.onload=null,clearTimeout(f);var o=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),t)return t(n)},f=setTimeout(d.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),c&&document.head.appendChild(i)}},a.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;a.g.importScripts&&(e=a.g.location+\\"\\");var t=a.g.document;if(!e&&t&&(t.currentScript&&\\"SCRIPT\\"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName(\\"script\\");if(r.length)for(var n=r.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=r[n--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),a.p=e})(),(()=>{var e={792:0};a.f.j=(t,r)=>{var n=a.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,o)=>n=e[t]=[r,o]));r.push(n[2]=o);var i=a.p+a.u(t),c=new Error;a.l(i,(r=>{if(a.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&(\\"load\\"===r.type?\\"missing\\":r.type),i=r&&r.target&&r.target.src;c.message=\\"Loading chunk \\"+t+\\" failed.\\\\n(\\"+o+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=o,c.request=i,n[1](c)}}),\\"chunk-\\"+t,t)}};var t=(t,r)=>{var n,o,[i,c,s]=r,u=0;if(i.some((t=>0!==e[t]))){for(n in c)a.o(c,n)&&(a.m[n]=c[n]);s&&s(a)}for(t&&t(r);u{console.log(\\"blah1\\")}}]);", "/release/chunks/async2-none-b0e67657a0022cfa7b25.js": "(self.webpackChunk=self.webpackChunk||[]).push([[421],{\\"./a/async2.js\\":()=>{console.log(\\"blah2\\")}}]);", - "/release/chunks/asyncLoc1-LOCALE1-c33a4f630d3803dd424a.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[410],{\\"./a/asyncLoc1.js\\":(s,_,n)=>{n.r(_);var o=n(\\"./a/strings1.loc.json\\"),t=n(\\"./a/strings2.loc.json\\");console.log(o.A.test,t.A.another)},\\"./a/strings1.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={test:\\"blah\\"}},\\"./a/strings2.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={another:\\"something else\\"}}}]);", - "/release/chunks/asyncLoc1-LOCALE2-c33a4f630d3803dd424a.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[410],{\\"./a/asyncLoc1.js\\":(s,_,n)=>{n.r(_);var o=n(\\"./a/strings1.loc.json\\"),t=n(\\"./a/strings2.loc.json\\");console.log(o.A.test,t.A.another)},\\"./a/strings1.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={test:\\"baz\\"}},\\"./a/strings2.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={another:\\"some random translation\\"}}}]);", - "/release/chunks/asyncLoc2-LOCALE1-ec1a97b2f8911e9363be.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[17],{\\"./a/asyncLoc2.js\\":(s,_,n)=>{n.r(_);var o=n(\\"./a/strings1.loc.json\\"),t=n(\\"./a/strings2.loc.json\\");console.log(o.A.test+t.A.another)},\\"./a/strings1.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={test:\\"blah\\"}},\\"./a/strings2.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={another:\\"something else\\"}}}]);", - "/release/chunks/asyncLoc2-LOCALE2-ec1a97b2f8911e9363be.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[17],{\\"./a/asyncLoc2.js\\":(s,_,n)=>{n.r(_);var o=n(\\"./a/strings1.loc.json\\"),t=n(\\"./a/strings2.loc.json\\");console.log(o.A.test+t.A.another)},\\"./a/strings1.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={test:\\"baz\\"}},\\"./a/strings2.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={another:\\"some random translation\\"}}}]);", - "/release/mainFourChunks-none-3d0708d071494f845896.js": "(()=>{var e,t,r,n={},o={};function a(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}};return n[e](r,r.exports,a),r.exports}a.m=n,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,a.t=function(r,n){if(1&n&&(r=this(r)),8&n)return r;if(\\"object\\"==typeof r&&r){if(4&n&&r.__esModule)return r;if(16&n&&\\"function\\"==typeof r.then)return r}var o=Object.create(null);a.r(o);var i={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&r;\\"object\\"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>i[e]=()=>r[e]));return i.default=()=>r,a.d(o,i),o},a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((t,r)=>(a.f[r](e,t),t)),[])),a.u=e=>\\"chunks/\\"+{17:\\"asyncLoc2\\",230:\\"async1\\",410:\\"asyncLoc1\\",421:\\"async2\\"}[e]+\\"-\\"+({17:1,410:1}[e]?self.__locale:\\"none\\")+\\"-\\"+{17:\\"ec1a97b2f8911e9363be\\",230:\\"11eb287e6b7e894591c1\\",410:\\"c33a4f630d3803dd424a\\",421:\\"b0e67657a0022cfa7b25\\"}[e]+\\".js\\",a.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},a.l=(e,t,n,o)=>{if(r[e])r[e].push(t);else{var i,c;if(void 0!==n)for(var s=document.getElementsByTagName(\\"script\\"),l=0;l{i.onerror=i.onload=null,clearTimeout(p);var o=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),t)return t(n)},p=setTimeout(f.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=f.bind(null,i.onerror),i.onload=f.bind(null,i.onload),c&&document.head.appendChild(i)}},a.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;a.g.importScripts&&(e=a.g.location+\\"\\");var t=a.g.document;if(!e&&t&&(t.currentScript&&\\"SCRIPT\\"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName(\\"script\\");if(r.length)for(var n=r.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=r[n--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),a.p=e})(),(()=>{var e={882:0};a.f.j=(t,r)=>{var n=a.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,o)=>n=e[t]=[r,o]));r.push(n[2]=o);var i=a.p+a.u(t),c=new Error;a.l(i,(r=>{if(a.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&(\\"load\\"===r.type?\\"missing\\":r.type),i=r&&r.target&&r.target.src;c.message=\\"Loading chunk \\"+t+\\" failed.\\\\n(\\"+o+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=o,c.request=i,n[1](c)}}),\\"chunk-\\"+t,t)}};var t=(t,r)=>{var n,o,[i,c,s]=r,l=0;if(i.some((t=>0!==e[t]))){for(n in c)a.o(c,n)&&(a.m[n]=c[n]);s&&s(a)}for(t&&t(r);l{var e,r={},t={};function o(e){var n=t[e];if(void 0!==n)return n.exports;var a=t[e]={exports:{}};return r[e](a,a.exports,o),a.exports}o.m=r,o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((r,t)=>(o.f[t](e,r),r)),[])),o.u=e=>\\"chunks/\\"+{17:\\"asyncLoc2\\",410:\\"asyncLoc1\\"}[e]+\\"-\\"+self.__locale+\\"-\\"+{17:\\"ec1a97b2f8911e9363be\\",410:\\"c33a4f630d3803dd424a\\"}[e]+\\".js\\",o.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},o.l=(r,t,n,a)=>{if(e[r])e[r].push(t);else{var i,c;if(void 0!==n)for(var l=document.getElementsByTagName(\\"script\\"),s=0;s{i.onerror=i.onload=null,clearTimeout(d);var n=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),n&&n.forEach((e=>e(o))),t)return t(o)},d=setTimeout(p.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),c&&document.head.appendChild(i)}},o.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;o.g.importScripts&&(e=o.g.location+\\"\\");var r=o.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),o.p=e})(),(()=>{var e={580:0};o.f.j=(r,t)=>{var n=o.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else{var a=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=a);var i=o.p+o.u(r),c=new Error;o.l(i,(t=>{if(o.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var a=t&&(\\"load\\"===t.type?\\"missing\\":t.type),i=t&&t.target&&t.target.src;c.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+a+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=a,c.request=i,n[1](c)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var n,a,[i,c,l]=t,s=0;if(i.some((r=>0!==e[r]))){for(n in c)o.o(c,n)&&(o.m[n]=c[n]);l&&l(o)}for(r&&r(t);s{e.r(_);var n=e(\\"./a/strings1.loc.json\\"),o=e(\\"./a/strings2.loc.json\\");console.log(n.A.test,o.A.another)},\\"./a/strings1.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={test:\\"blah\\"}},\\"./a/strings2.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={another:\\"something else\\"}}}]);", + "/release/chunks/asyncLoc1-LOCALE2-83c92c41225d693967f9.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[410],{\\"./a/asyncLoc1.js\\":(s,_,e)=>{e.r(_);var n=e(\\"./a/strings1.loc.json\\"),o=e(\\"./a/strings2.loc.json\\");console.log(n.A.test,o.A.another)},\\"./a/strings1.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={test:\\"baz\\"}},\\"./a/strings2.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={another:\\"some random translation\\"}}}]);", + "/release/chunks/asyncLoc2-LOCALE1-bb4f1a3cec3f2e87d95d.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[17],{\\"./a/asyncLoc2.js\\":(s,_,e)=>{e.r(_);var n=e(\\"./a/strings1.loc.json\\"),o=e(\\"./a/strings2.loc.json\\");console.log(n.A.test+o.A.another)},\\"./a/strings1.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={test:\\"blah\\"}},\\"./a/strings2.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={another:\\"something else\\"}}}]);", + "/release/chunks/asyncLoc2-LOCALE2-bb4f1a3cec3f2e87d95d.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[17],{\\"./a/asyncLoc2.js\\":(s,_,e)=>{e.r(_);var n=e(\\"./a/strings1.loc.json\\"),o=e(\\"./a/strings2.loc.json\\");console.log(n.A.test+o.A.another)},\\"./a/strings1.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={test:\\"baz\\"}},\\"./a/strings2.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={another:\\"some random translation\\"}}}]);", + "/release/mainFourChunks-none-3cf0c8bd161ae004499e.js": "(()=>{var e,t,r,n={},o={};function a(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}};return n[e](r,r.exports,a),r.exports}a.m=n,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,a.t=function(r,n){if(1&n&&(r=this(r)),8&n)return r;if(\\"object\\"==typeof r&&r){if(4&n&&r.__esModule)return r;if(16&n&&\\"function\\"==typeof r.then)return r}var o=Object.create(null);a.r(o);var i={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&r;\\"object\\"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>i[e]=()=>r[e]));return i.default=()=>r,a.d(o,i),o},a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((t,r)=>(a.f[r](e,t),t)),[])),a.u=e=>\\"chunks/\\"+{17:\\"asyncLoc2\\",230:\\"async1\\",410:\\"asyncLoc1\\",421:\\"async2\\"}[e]+\\"-\\"+({17:1,410:1}[e]?self.__locale:\\"none\\")+\\"-\\"+{17:\\"bb4f1a3cec3f2e87d95d\\",230:\\"11eb287e6b7e894591c1\\",410:\\"83c92c41225d693967f9\\",421:\\"b0e67657a0022cfa7b25\\"}[e]+\\".js\\",a.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},a.l=(e,t,n,o)=>{if(r[e])r[e].push(t);else{var i,c;if(void 0!==n)for(var s=document.getElementsByTagName(\\"script\\"),l=0;l{i.onerror=i.onload=null,clearTimeout(p);var o=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),t)return t(n)},p=setTimeout(f.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=f.bind(null,i.onerror),i.onload=f.bind(null,i.onload),c&&document.head.appendChild(i)}},a.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;a.g.importScripts&&(e=a.g.location+\\"\\");var t=a.g.document;if(!e&&t&&(t.currentScript&&\\"SCRIPT\\"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName(\\"script\\");if(r.length)for(var n=r.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=r[n--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),a.p=e})(),(()=>{var e={882:0};a.f.j=(t,r)=>{var n=a.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,o)=>n=e[t]=[r,o]));r.push(n[2]=o);var i=a.p+a.u(t),c=new Error;a.l(i,(r=>{if(a.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&(\\"load\\"===r.type?\\"missing\\":r.type),i=r&&r.target&&r.target.src;c.message=\\"Loading chunk \\"+t+\\" failed.\\\\n(\\"+o+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=o,c.request=i,n[1](c)}}),\\"chunk-\\"+t,t)}};var t=(t,r)=>{var n,o,[i,c,s]=r,l=0;if(i.some((t=>0!==e[t]))){for(n in c)a.o(c,n)&&(a.m[n]=c[n]);s&&s(a)}for(t&&t(r);l{var e,r={},t={};function o(e){var n=t[e];if(void 0!==n)return n.exports;var a=t[e]={exports:{}};return r[e](a,a.exports,o),a.exports}o.m=r,o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((r,t)=>(o.f[t](e,r),r)),[])),o.u=e=>\\"chunks/\\"+{17:\\"asyncLoc2\\",410:\\"asyncLoc1\\"}[e]+\\"-\\"+self.__locale+\\"-\\"+{17:\\"bb4f1a3cec3f2e87d95d\\",410:\\"83c92c41225d693967f9\\"}[e]+\\".js\\",o.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},o.l=(r,t,n,a)=>{if(e[r])e[r].push(t);else{var i,c;if(void 0!==n)for(var l=document.getElementsByTagName(\\"script\\"),s=0;s{i.onerror=i.onload=null,clearTimeout(d);var n=e[r];if(delete e[r],i.parentNode&&i.parentNode.removeChild(i),n&&n.forEach((e=>e(o))),t)return t(o)},d=setTimeout(p.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),c&&document.head.appendChild(i)}},o.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;o.g.importScripts&&(e=o.g.location+\\"\\");var r=o.g.document;if(!e&&r&&(r.currentScript&&\\"SCRIPT\\"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName(\\"script\\");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),o.p=e})(),(()=>{var e={580:0};o.f.j=(r,t)=>{var n=o.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else{var a=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=a);var i=o.p+o.u(r),c=new Error;o.l(i,(t=>{if(o.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var a=t&&(\\"load\\"===t.type?\\"missing\\":t.type),i=t&&t.target&&t.target.src;c.message=\\"Loading chunk \\"+r+\\" failed.\\\\n(\\"+a+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=a,c.request=i,n[1](c)}}),\\"chunk-\\"+r,r)}};var r=(r,t)=>{var n,a,[i,c,l]=t,s=0;if(i.some((r=>0!==e[r]))){for(n in c)o.o(c,n)&&(o.m[n]=c[n]);l&&l(o)}for(r&&r(t);s { // webpackBootstrap + "/release/mainFourChunks-none-2cb04125de011f53ae03.js": "/******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({}); /************************************************************************/ /******/ // The module cache @@ -294,7 +294,7 @@ const strings = {\\"another\\":\\"some random translation\\"}; /******/ // This function allow to reference async chunks /******/ __webpack_require__.u = (chunkId) => { /******/ // return url for filenames based on template -/******/ return \\"chunks/\\" + {\\"17\\":\\"asyncLoc2\\",\\"230\\":\\"async1\\",\\"410\\":\\"asyncLoc1\\",\\"421\\":\\"async2\\"}[chunkId] + \\"-\\" + ({\\"17\\":1,\\"410\\":1}[chunkId]?self.__locale:\\"none\\") + \\"-\\" + {\\"17\\":\\"c746718e12997bb66895\\",\\"230\\":\\"0b9a18e34a186770e865\\",\\"410\\":\\"e8c35834e182d57fab45\\",\\"421\\":\\"403f7af31493ef9e3d3b\\"}[chunkId] + \\".js\\"; +/******/ return \\"chunks/\\" + {\\"17\\":\\"asyncLoc2\\",\\"230\\":\\"async1\\",\\"410\\":\\"asyncLoc1\\",\\"421\\":\\"async2\\"}[chunkId] + \\"-\\" + ({\\"17\\":1,\\"410\\":1}[chunkId]?self.__locale:\\"none\\") + \\"-\\" + {\\"17\\":\\"ec0512268756941c4c69\\",\\"230\\":\\"0b9a18e34a186770e865\\",\\"410\\":\\"1e30c626bc07e02e5b94\\",\\"421\\":\\"403f7af31493ef9e3d3b\\"}[chunkId] + \\".js\\"; /******/ }; /******/ })(); /******/ @@ -490,7 +490,7 @@ var __webpack_exports__ = {}; __webpack_require__.e(/* import() | asyncLoc1 */ 410).then(__webpack_require__.bind(__webpack_require__, \\"./a/asyncLoc1.js\\"));__webpack_require__.e(/* import() | asyncLoc2 */ 17).then(__webpack_require__.bind(__webpack_require__, \\"./a/asyncLoc2.js\\"));__webpack_require__.e(/* import() | async1 */ 230).then(__webpack_require__.t.bind(__webpack_require__, \\"./a/async1.js\\", 23));__webpack_require__.e(/* import() | async2 */ 421).then(__webpack_require__.t.bind(__webpack_require__, \\"./a/async2.js\\", 23)); /******/ })() ;", - "/release/mainTwoChunks-none-9dd8fba1d3b19bce31b9.js": "/******/ (() => { // webpackBootstrap + "/release/mainTwoChunks-none-875e1b1f0531ec0a6154.js": "/******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({}); /************************************************************************/ /******/ // The module cache @@ -551,7 +551,7 @@ __webpack_require__.e(/* import() | asyncLoc1 */ 410).then(__webpack_require__.b /******/ // This function allow to reference async chunks /******/ __webpack_require__.u = (chunkId) => { /******/ // return url for filenames based on template -/******/ return \\"chunks/\\" + {\\"17\\":\\"asyncLoc2\\",\\"410\\":\\"asyncLoc1\\"}[chunkId] + \\"-\\" + self.__locale + \\"-\\" + {\\"17\\":\\"c746718e12997bb66895\\",\\"410\\":\\"e8c35834e182d57fab45\\"}[chunkId] + \\".js\\"; +/******/ return \\"chunks/\\" + {\\"17\\":\\"asyncLoc2\\",\\"410\\":\\"asyncLoc1\\"}[chunkId] + \\"-\\" + self.__locale + \\"-\\" + {\\"17\\":\\"ec0512268756941c4c69\\",\\"410\\":\\"1e30c626bc07e02e5b94\\"}[chunkId] + \\".js\\"; /******/ }; /******/ })(); /******/ @@ -758,14 +758,14 @@ Object { "namedChunkGroups": Object { "asyncLoc1": Object { "localizedAssets": Object { - "LOCALE1": "chunks/asyncLoc1-LOCALE1-e8c35834e182d57fab45.js", - "LOCALE2": "chunks/asyncLoc1-LOCALE2-e8c35834e182d57fab45.js", + "LOCALE1": "chunks/asyncLoc1-LOCALE1-1e30c626bc07e02e5b94.js", + "LOCALE2": "chunks/asyncLoc1-LOCALE2-1e30c626bc07e02e5b94.js", }, }, "asyncLoc2": Object { "localizedAssets": Object { - "LOCALE1": "chunks/asyncLoc2-LOCALE1-c746718e12997bb66895.js", - "LOCALE2": "chunks/asyncLoc2-LOCALE2-c746718e12997bb66895.js", + "LOCALE1": "chunks/asyncLoc2-LOCALE1-ec0512268756941c4c69.js", + "LOCALE2": "chunks/asyncLoc2-LOCALE2-ec0512268756941c4c69.js", }, }, }, diff --git a/webpack/webpack5-localization-plugin/src/test/__snapshots__/MixedAsyncNonHashed.test.ts.snap b/webpack/webpack5-localization-plugin/src/test/__snapshots__/MixedAsyncNonHashed.test.ts.snap index 657add971f3..a21c0256498 100644 --- a/webpack/webpack5-localization-plugin/src/test/__snapshots__/MixedAsyncNonHashed.test.ts.snap +++ b/webpack/webpack5-localization-plugin/src/test/__snapshots__/MixedAsyncNonHashed.test.ts.snap @@ -4,10 +4,10 @@ exports[`LocalizationPlugin Handles async localized and non-localized chunks wit Object { "/release/chunks/async1-none.js": "(self.webpackChunk=self.webpackChunk||[]).push([[230],{\\"./a/async1.js\\":()=>{console.log(\\"blah1\\")}}]);", "/release/chunks/async2-none.js": "(self.webpackChunk=self.webpackChunk||[]).push([[421],{\\"./a/async2.js\\":()=>{console.log(\\"blah2\\")}}]);", - "/release/chunks/asyncLoc1-LOCALE1.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[410],{\\"./a/asyncLoc1.js\\":(s,_,n)=>{n.r(_);var o=n(\\"./a/strings1.loc.json\\"),t=n(\\"./a/strings2.loc.json\\");console.log(o.A.test,t.A.another)},\\"./a/strings1.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={test:\\"blah\\"}},\\"./a/strings2.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={another:\\"something else\\"}}}]);", - "/release/chunks/asyncLoc1-LOCALE2.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[410],{\\"./a/asyncLoc1.js\\":(s,_,n)=>{n.r(_);var o=n(\\"./a/strings1.loc.json\\"),t=n(\\"./a/strings2.loc.json\\");console.log(o.A.test,t.A.another)},\\"./a/strings1.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={test:\\"baz\\"}},\\"./a/strings2.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={another:\\"some random translation\\"}}}]);", - "/release/chunks/asyncLoc2-LOCALE1.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[17],{\\"./a/asyncLoc2.js\\":(s,_,n)=>{n.r(_);var o=n(\\"./a/strings1.loc.json\\"),t=n(\\"./a/strings2.loc.json\\");console.log(o.A.test+t.A.another)},\\"./a/strings1.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={test:\\"blah\\"}},\\"./a/strings2.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={another:\\"something else\\"}}}]);", - "/release/chunks/asyncLoc2-LOCALE2.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[17],{\\"./a/asyncLoc2.js\\":(s,_,n)=>{n.r(_);var o=n(\\"./a/strings1.loc.json\\"),t=n(\\"./a/strings2.loc.json\\");console.log(o.A.test+t.A.another)},\\"./a/strings1.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={test:\\"baz\\"}},\\"./a/strings2.loc.json\\":(s,_,n)=>{n.d(_,{A:()=>o});const o={another:\\"some random translation\\"}}}]);", + "/release/chunks/asyncLoc1-LOCALE1.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[410],{\\"./a/asyncLoc1.js\\":(s,_,e)=>{e.r(_);var n=e(\\"./a/strings1.loc.json\\"),o=e(\\"./a/strings2.loc.json\\");console.log(n.A.test,o.A.another)},\\"./a/strings1.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={test:\\"blah\\"}},\\"./a/strings2.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={another:\\"something else\\"}}}]);", + "/release/chunks/asyncLoc1-LOCALE2.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[410],{\\"./a/asyncLoc1.js\\":(s,_,e)=>{e.r(_);var n=e(\\"./a/strings1.loc.json\\"),o=e(\\"./a/strings2.loc.json\\");console.log(n.A.test,o.A.another)},\\"./a/strings1.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={test:\\"baz\\"}},\\"./a/strings2.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={another:\\"some random translation\\"}}}]);", + "/release/chunks/asyncLoc2-LOCALE1.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[17],{\\"./a/asyncLoc2.js\\":(s,_,e)=>{e.r(_);var n=e(\\"./a/strings1.loc.json\\"),o=e(\\"./a/strings2.loc.json\\");console.log(n.A.test+o.A.another)},\\"./a/strings1.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={test:\\"blah\\"}},\\"./a/strings2.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={another:\\"something else\\"}}}]);", + "/release/chunks/asyncLoc2-LOCALE2.js": "\\"use strict\\";(self.webpackChunk=self.webpackChunk||[]).push([[17],{\\"./a/asyncLoc2.js\\":(s,_,e)=>{e.r(_);var n=e(\\"./a/strings1.loc.json\\"),o=e(\\"./a/strings2.loc.json\\");console.log(n.A.test+o.A.another)},\\"./a/strings1.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={test:\\"baz\\"}},\\"./a/strings2.loc.json\\":(s,_,e)=>{e.d(_,{A:()=>n});const n={another:\\"some random translation\\"}}}]);", "/release/main-LOCALE1.js": "(()=>{var e,t,r,n={},o={};function a(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}};return n[e](r,r.exports,a),r.exports}a.m=n,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,a.t=function(r,n){if(1&n&&(r=this(r)),8&n)return r;if(\\"object\\"==typeof r&&r){if(4&n&&r.__esModule)return r;if(16&n&&\\"function\\"==typeof r.then)return r}var o=Object.create(null);a.r(o);var i={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&r;\\"object\\"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>i[e]=()=>r[e]));return i.default=()=>r,a.d(o,i),o},a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((t,r)=>(a.f[r](e,t),t)),[])),a.u=e=>\\"chunks/\\"+{17:\\"asyncLoc2\\",230:\\"async1\\",410:\\"asyncLoc1\\",421:\\"async2\\"}[e]+\\"-\\"+({17:1,410:1}[e]?\\"LOCALE1\\":\\"none\\")+\\".js\\",a.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},a.l=(e,t,n,o)=>{if(r[e])r[e].push(t);else{var i,c;if(void 0!==n)for(var s=document.getElementsByTagName(\\"script\\"),u=0;u{i.onerror=i.onload=null,clearTimeout(p);var o=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),t)return t(n)},p=setTimeout(f.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=f.bind(null,i.onerror),i.onload=f.bind(null,i.onload),c&&document.head.appendChild(i)}},a.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;a.g.importScripts&&(e=a.g.location+\\"\\");var t=a.g.document;if(!e&&t&&(t.currentScript&&\\"SCRIPT\\"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName(\\"script\\");if(r.length)for(var n=r.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=r[n--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),a.p=e})(),(()=>{var e={792:0};a.f.j=(t,r)=>{var n=a.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,o)=>n=e[t]=[r,o]));r.push(n[2]=o);var i=a.p+a.u(t),c=new Error;a.l(i,(r=>{if(a.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&(\\"load\\"===r.type?\\"missing\\":r.type),i=r&&r.target&&r.target.src;c.message=\\"Loading chunk \\"+t+\\" failed.\\\\n(\\"+o+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=o,c.request=i,n[1](c)}}),\\"chunk-\\"+t,t)}};var t=(t,r)=>{var n,o,[i,c,s]=r,u=0;if(i.some((t=>0!==e[t]))){for(n in c)a.o(c,n)&&(a.m[n]=c[n]);s&&s(a)}for(t&&t(r);u{var e,t,r,n={},o={};function a(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}};return n[e](r,r.exports,a),r.exports}a.m=n,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,a.t=function(r,n){if(1&n&&(r=this(r)),8&n)return r;if(\\"object\\"==typeof r&&r){if(4&n&&r.__esModule)return r;if(16&n&&\\"function\\"==typeof r.then)return r}var o=Object.create(null);a.r(o);var i={};e=e||[null,t({}),t([]),t(t)];for(var c=2&n&&r;\\"object\\"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>i[e]=()=>r[e]));return i.default=()=>r,a.d(o,i),o},a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((t,r)=>(a.f[r](e,t),t)),[])),a.u=e=>\\"chunks/\\"+{17:\\"asyncLoc2\\",230:\\"async1\\",410:\\"asyncLoc1\\",421:\\"async2\\"}[e]+\\"-\\"+({17:1,410:1}[e]?\\"LOCALE2\\":\\"none\\")+\\".js\\",a.g=function(){if(\\"object\\"==typeof globalThis)return globalThis;try{return this||new Function(\\"return this\\")()}catch(e){if(\\"object\\"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},a.l=(e,t,n,o)=>{if(r[e])r[e].push(t);else{var i,c;if(void 0!==n)for(var s=document.getElementsByTagName(\\"script\\"),u=0;u{i.onerror=i.onload=null,clearTimeout(p);var o=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),t)return t(n)},p=setTimeout(f.bind(null,void 0,{type:\\"timeout\\",target:i}),12e4);i.onerror=f.bind(null,i.onerror),i.onload=f.bind(null,i.onload),c&&document.head.appendChild(i)}},a.r=e=>{\\"undefined\\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\\"Module\\"}),Object.defineProperty(e,\\"__esModule\\",{value:!0})},(()=>{var e;a.g.importScripts&&(e=a.g.location+\\"\\");var t=a.g.document;if(!e&&t&&(t.currentScript&&\\"SCRIPT\\"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName(\\"script\\");if(r.length)for(var n=r.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=r[n--].src}if(!e)throw new Error(\\"Automatic publicPath is not supported in this browser\\");e=e.replace(/#.*$/,\\"\\").replace(/\\\\?.*$/,\\"\\").replace(/\\\\/[^\\\\/]+$/,\\"/\\"),a.p=e})(),(()=>{var e={792:0};a.f.j=(t,r)=>{var n=a.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,o)=>n=e[t]=[r,o]));r.push(n[2]=o);var i=a.p+a.u(t),c=new Error;a.l(i,(r=>{if(a.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&(\\"load\\"===r.type?\\"missing\\":r.type),i=r&&r.target&&r.target.src;c.message=\\"Loading chunk \\"+t+\\" failed.\\\\n(\\"+o+\\": \\"+i+\\")\\",c.name=\\"ChunkLoadError\\",c.type=o,c.request=i,n[1](c)}}),\\"chunk-\\"+t,t)}};var t=(t,r)=>{var n,o,[i,c,s]=r,u=0;if(i.some((t=>0!==e[t]))){for(n in c)a.o(c,n)&&(a.m[n]=c[n]);s&&s(a)}for(t&&t(r);u Text.escapeRegExp(hashToReplace)) - .join('|'), + Array.from(relevantHashReplacements.keys(), (hashToReplace) => + Text.escapeRegExp(hashToReplace) + ).join('|'), 'g' ); let match: RegExpMatchArray | null; @@ -210,7 +210,7 @@ export function updateAssetHashes({ replaceSource.replace(matchStart, matchEnd, replacement); } - assetSource = replaceSource; + assetSource = new thisWebpack.sources.CachedSource(replaceSource); compilation.updateAsset(jsAssetName, assetSource); } } diff --git a/webpack/webpack5-localization-plugin/src/utilities/Constants.ts b/webpack/webpack5-localization-plugin/src/utilities/Constants.ts index 0661dccca5a..a8870b4453b 100644 --- a/webpack/webpack5-localization-plugin/src/utilities/Constants.ts +++ b/webpack/webpack5-localization-plugin/src/utilities/Constants.ts @@ -14,8 +14,8 @@ export const STRING_PLACEHOLDER_LABEL: 'A' = 'A'; export const LOCALE_NAME_PLACEHOLDER_LABEL: 'B' = 'B'; export const JSONP_PLACEHOLDER_LABEL: 'C' = 'C'; -// _LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9__B_0 -export const LOCALE_NAME_PLACEHOLDER: `${typeof STRING_PLACEHOLDER_PREFIX}__${typeof LOCALE_NAME_PLACEHOLDER_LABEL}_0` = `${STRING_PLACEHOLDER_PREFIX}__${LOCALE_NAME_PLACEHOLDER_LABEL}_0`; +// _LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_B_ +export const LOCALE_NAME_PLACEHOLDER: `${typeof STRING_PLACEHOLDER_PREFIX}_${typeof LOCALE_NAME_PLACEHOLDER_LABEL}_` = `${STRING_PLACEHOLDER_PREFIX}_${LOCALE_NAME_PLACEHOLDER_LABEL}_`; -// _LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9__C_0 -export const JSONP_PLACEHOLDER: `${typeof STRING_PLACEHOLDER_PREFIX}__${typeof JSONP_PLACEHOLDER_LABEL}_0` = `${STRING_PLACEHOLDER_PREFIX}__${JSONP_PLACEHOLDER_LABEL}_0`; +// _LOCALIZED_STRING_f12dy0i7_n4bo_dqwj_39gf_sasqehjmihz9_C_ +export const JSONP_PLACEHOLDER: `${typeof STRING_PLACEHOLDER_PREFIX}_${typeof JSONP_PLACEHOLDER_LABEL}_` = `${STRING_PLACEHOLDER_PREFIX}_${JSONP_PLACEHOLDER_LABEL}_`; From c143a134bbf97d26aa7fe4d1637a34e71ca70b86 Mon Sep 17 00:00:00 2001 From: David Michon Date: Wed, 5 Feb 2025 01:28:14 +0000 Subject: [PATCH 2/3] Fix formatting --- webpack/webpack5-localization-plugin/src/AssetProcessor.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webpack/webpack5-localization-plugin/src/AssetProcessor.ts b/webpack/webpack5-localization-plugin/src/AssetProcessor.ts index 3c45475af66..26d915cd8c3 100644 --- a/webpack/webpack5-localization-plugin/src/AssetProcessor.ts +++ b/webpack/webpack5-localization-plugin/src/AssetProcessor.ts @@ -321,7 +321,7 @@ function _reconstructLocalized( if (newValue === undefined) { issues.push( - `The string "${stringName}" in "${data.locFilePath}" is missing in ` + `the locale ${locale}` + `The string "${stringName}" in "${data.locFilePath}" is missing in the locale ${locale}` ); newValue = '-- MISSING STRING --'; From e3b5f8b84308769db4cc316d9a3cc3fa2294f9a0 Mon Sep 17 00:00:00 2001 From: David Michon Date: Wed, 5 Feb 2025 19:22:28 +0000 Subject: [PATCH 3/3] Fix variable --- webpack/webpack5-localization-plugin/src/AssetProcessor.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webpack/webpack5-localization-plugin/src/AssetProcessor.ts b/webpack/webpack5-localization-plugin/src/AssetProcessor.ts index 26d915cd8c3..1412c64080b 100644 --- a/webpack/webpack5-localization-plugin/src/AssetProcessor.ts +++ b/webpack/webpack5-localization-plugin/src/AssetProcessor.ts @@ -233,7 +233,7 @@ export async function processNonLocalizedAssetCachedAsync( } export function processNonLocalizedAsset(options: IProcessNonLocalizedAssetOptions): IProcessedAsset { - const { asset, fileName, compilation, formatLocaleForFilenameFn, hasUrlGenerator: hasJsonP } = options; + const { asset, fileName, compilation, formatLocaleForFilenameFn, hasUrlGenerator } = options; const { sources, WebpackError } = compilation.compiler.webpack; @@ -244,7 +244,7 @@ export function processNonLocalizedAsset(options: IProcessNonLocalizedAssetOptio const { info: originInfo } = asset; const locale: string = options.noStringsLocaleName; - if (hasJsonP) { + if (hasUrlGenerator) { const assetSource: string = cachedSource.source().toString(); const parsedAsset: IParseResult = _parseStringToReconstructionSequence( options.plugin,