From f383f3201b69d28f8755c0bd63134619f9da408d Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Thu, 30 Sep 2021 12:01:27 +0200 Subject: [PATCH] fix(@angular-devkit/build-angular): ESM-interop loaded plugin creators of `@angular/localize/tools` not respected This is a follow-up to fb210e5b747ce0351dd9ee7d482770b9cfa71133 which added support for the ESM-variant of the `@angular/localize` package, and also prepared for the `tools/` secondary entry-point we will expose as of v13. Unfortunately this change currently does not pass-through the ESM-loaded plugin creators as the option (which is passed to the Babel plugin) is incorrect. This was hidden due to a type cast. This commit fixes the issue and also ensures TS would complain in the future if the option names differ. --- .../build_angular/src/babel/webpack-loader.ts | 6 +++--- .../build_angular/src/utils/process-bundle.ts | 8 +++----- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/babel/webpack-loader.ts b/packages/angular_devkit/build_angular/src/babel/webpack-loader.ts index b9b5f35b9f55..04fd3d0f7fb7 100644 --- a/packages/angular_devkit/build_angular/src/babel/webpack-loader.ts +++ b/packages/angular_devkit/build_angular/src/babel/webpack-loader.ts @@ -138,9 +138,9 @@ export default custom(() => { } customOptions.i18n = { - ...(i18n as ApplicationPresetOptions['i18n']), - i18nPluginCreators, - } as ApplicationPresetOptions['i18n']; + ...(i18n as NonNullable), + pluginCreators: i18nPluginCreators, + }; shouldProcess = true; } diff --git a/packages/angular_devkit/build_angular/src/utils/process-bundle.ts b/packages/angular_devkit/build_angular/src/utils/process-bundle.ts index 47ec5475b907..e81070dbd5dc 100644 --- a/packages/angular_devkit/build_angular/src/utils/process-bundle.ts +++ b/packages/angular_devkit/build_angular/src/utils/process-bundle.ts @@ -24,8 +24,6 @@ import { allowMinify, shouldBeautify } from './environment-options'; import { I18nOptions } from './i18n-options'; import { loadEsmModule } from './load-esm'; -type LocalizeUtilities = typeof import('@angular/localize/src/tools/src/source_file_utils'); - // Extract Sourcemap input type from the remapping function since it is not currently exported type SourceMapInput = Exclude[0], unknown[]>; @@ -386,7 +384,7 @@ function inlineCopyOnly(options: InlineOptions) { function findLocalizePositions( ast: ParseResult, options: InlineOptions, - utils: LocalizeUtilities, + utils: LocalizeUtilityModule, ): LocalizePosition[] { const positions: LocalizePosition[] = []; @@ -438,7 +436,7 @@ function findLocalizePositions( function unwrapTemplateLiteral( path: NodePath, - utils: LocalizeUtilities, + utils: LocalizeUtilityModule, ): [TemplateStringsArray, types.Expression[]] { const [messageParts] = utils.unwrapMessagePartsFromTemplateLiteral( path.get('quasi').get('quasis'), @@ -450,7 +448,7 @@ function unwrapTemplateLiteral( function unwrapLocalizeCall( path: NodePath, - utils: LocalizeUtilities, + utils: LocalizeUtilityModule, ): [TemplateStringsArray, types.Expression[]] { const [messageParts] = utils.unwrapMessagePartsFromLocalizeCall(path); const [expressions] = utils.unwrapSubstitutionsFromLocalizeCall(path);