@angular-devkit/build-angular 13.0.0-next.3 → 13.0.0-next.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esbuild-check.js +16 -0
- package/package.json +32 -29
- package/src/babel/plugins/adjust-static-class-members.js +2 -2
- package/src/babel/plugins/adjust-typescript-enums.js +8 -2
- package/src/babel/plugins/pure-toplevel-functions.js +2 -2
- package/src/babel/presets/application.d.ts +14 -0
- package/src/babel/presets/application.js +42 -36
- package/src/babel/webpack-loader.js +50 -5
- package/src/builders/app-shell/index.js +9 -9
- package/src/builders/browser/index.js +42 -52
- package/src/builders/dev-server/index.js +23 -23
- package/src/builders/extract-i18n/index.js +33 -21
- package/src/builders/extract-i18n/ivy-extract-loader.js +34 -8
- package/src/builders/karma/find-tests.js +5 -5
- package/src/builders/karma/index.js +14 -14
- package/src/builders/ng-packagr/index.js +4 -4
- package/src/builders/protractor/index.js +4 -4
- package/src/builders/server/index.js +16 -16
- package/src/sass/worker.js +2 -2
- package/src/utils/build-browser-features.js +2 -2
- package/src/utils/build-options.d.ts +1 -1
- package/src/utils/bundle-calculator.js +4 -4
- package/src/utils/cache-path.js +2 -2
- package/src/utils/check-port.js +1 -1
- package/src/utils/color.js +25 -2
- package/src/utils/copy-assets.js +1 -1
- package/src/utils/delete-output-dir.js +1 -1
- package/src/utils/i18n-inlining.js +1 -1
- package/src/utils/i18n-options.js +26 -50
- package/src/utils/index-file/augment-index-html.js +2 -2
- package/src/utils/index-file/index-html-generator.js +3 -3
- package/src/utils/index-file/inline-fonts.js +4 -4
- package/src/utils/load-esm.d.ts +22 -0
- package/src/utils/load-esm.js +37 -0
- package/src/utils/load-translations.js +21 -8
- package/src/utils/normalize-asset-patterns.js +8 -8
- package/src/utils/normalize-builder-schema.js +4 -4
- package/src/utils/normalize-file-replacements.js +10 -10
- package/src/utils/output-paths.js +3 -3
- package/src/utils/package-chunk-sort.js +1 -1
- package/src/utils/process-bundle.d.ts +0 -1
- package/src/utils/process-bundle.js +44 -12
- package/src/utils/read-tsconfig.d.ts +2 -2
- package/src/utils/read-tsconfig.js +11 -6
- package/src/utils/run-module-as-observable-fork.js +2 -2
- package/src/utils/service-worker.js +16 -9
- package/src/utils/spinner.js +2 -2
- package/src/utils/version.js +1 -1
- package/src/utils/webpack-browser-config.d.ts +4 -3
- package/src/utils/webpack-browser-config.js +12 -11
- package/src/webpack/configs/browser.js +1 -1
- package/src/webpack/configs/common.d.ts +1 -1
- package/src/webpack/configs/common.js +24 -16
- package/src/webpack/configs/dev-server.d.ts +1 -1
- package/src/webpack/configs/dev-server.js +22 -10
- package/src/webpack/configs/server.js +2 -2
- package/src/webpack/configs/styles.js +4 -4
- package/src/webpack/configs/test.js +2 -2
- package/src/webpack/configs/typescript.js +1 -1
- package/src/webpack/configs/worker.js +1 -1
- package/src/webpack/plugins/any-component-style-budget-checker.js +4 -4
- package/src/webpack/plugins/common-js-usage-warn-plugin.js +2 -2
- package/src/webpack/plugins/css-optimizer-plugin.d.ts +12 -0
- package/src/webpack/plugins/css-optimizer-plugin.js +43 -17
- package/src/webpack/plugins/dedupe-module-resolve-plugin.js +1 -1
- package/src/webpack/plugins/esbuild-executor.d.ts +46 -0
- package/src/webpack/plugins/esbuild-executor.js +126 -0
- package/src/webpack/plugins/hmr/hmr-accept.js +3 -3
- package/src/webpack/plugins/hmr/hmr-loader.js +1 -1
- package/src/webpack/plugins/index-html-webpack-plugin.js +6 -6
- package/src/webpack/plugins/javascript-optimizer-plugin.js +5 -0
- package/src/webpack/plugins/javascript-optimizer-worker.d.ts +42 -0
- package/src/webpack/plugins/javascript-optimizer-worker.js +63 -27
- package/src/webpack/plugins/karma/karma.js +4 -4
- package/src/webpack/plugins/postcss-cli-resources.js +1 -1
- package/src/webpack/plugins/scripts-webpack-plugin.js +1 -1
- package/src/webpack/plugins/single-test-transform.js +1 -1
- package/src/webpack/utils/stats.js +6 -6
|
@@ -56,18 +56,18 @@ async function initialize(options, context, webpackConfigurationTransform) {
|
|
|
56
56
|
const originalOutputPath = options.outputPath;
|
|
57
57
|
// Assets are processed directly by the builder except when watching
|
|
58
58
|
const adjustedOptions = options.watch ? options : { ...options, assets: [] };
|
|
59
|
-
const { config, projectRoot, projectSourceRoot, i18n, target } = await webpack_browser_config_1.generateI18nBrowserWebpackConfigFromContext(adjustedOptions, context, (wco) => [
|
|
60
|
-
configs_1.getCommonConfig(wco),
|
|
61
|
-
configs_1.getBrowserConfig(wco),
|
|
62
|
-
configs_1.getStylesConfig(wco),
|
|
63
|
-
configs_1.getStatsConfig(wco),
|
|
64
|
-
configs_1.getAnalyticsConfig(wco, context),
|
|
65
|
-
configs_1.getTypeScriptConfig(wco),
|
|
66
|
-
wco.buildOptions.webWorkerTsConfig ? configs_1.getWorkerConfig(wco) : {},
|
|
59
|
+
const { config, projectRoot, projectSourceRoot, i18n, target } = await (0, webpack_browser_config_1.generateI18nBrowserWebpackConfigFromContext)(adjustedOptions, context, (wco) => [
|
|
60
|
+
(0, configs_1.getCommonConfig)(wco),
|
|
61
|
+
(0, configs_1.getBrowserConfig)(wco),
|
|
62
|
+
(0, configs_1.getStylesConfig)(wco),
|
|
63
|
+
(0, configs_1.getStatsConfig)(wco),
|
|
64
|
+
(0, configs_1.getAnalyticsConfig)(wco, context),
|
|
65
|
+
(0, configs_1.getTypeScriptConfig)(wco),
|
|
66
|
+
wco.buildOptions.webWorkerTsConfig ? (0, configs_1.getWorkerConfig)(wco) : {},
|
|
67
67
|
]);
|
|
68
68
|
// Validate asset option values if processed directly
|
|
69
69
|
if (((_a = options.assets) === null || _a === void 0 ? void 0 : _a.length) && !((_b = adjustedOptions.assets) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
70
|
-
utils_1.normalizeAssetPatterns(options.assets, core_1.normalize(context.workspaceRoot), core_1.normalize(projectRoot), projectSourceRoot === undefined ? undefined : core_1.normalize(projectSourceRoot)).forEach(({ output }) => {
|
|
70
|
+
(0, utils_1.normalizeAssetPatterns)(options.assets, (0, core_1.normalize)(context.workspaceRoot), (0, core_1.normalize)(projectRoot), projectSourceRoot === undefined ? undefined : (0, core_1.normalize)(projectSourceRoot)).forEach(({ output }) => {
|
|
71
71
|
if (output.startsWith('..')) {
|
|
72
72
|
throw new Error('An asset cannot be written to a location outside of the output path.');
|
|
73
73
|
}
|
|
@@ -78,7 +78,7 @@ async function initialize(options, context, webpackConfigurationTransform) {
|
|
|
78
78
|
transformedConfig = await webpackConfigurationTransform(config);
|
|
79
79
|
}
|
|
80
80
|
if (options.deleteOutputPath) {
|
|
81
|
-
utils_1.deleteOutputDir(context.workspaceRoot, originalOutputPath);
|
|
81
|
+
(0, utils_1.deleteOutputDir)(context.workspaceRoot, originalOutputPath);
|
|
82
82
|
}
|
|
83
83
|
return { config: transformedConfig || config, projectRoot, projectSourceRoot, i18n, target };
|
|
84
84
|
}
|
|
@@ -88,7 +88,7 @@ async function initialize(options, context, webpackConfigurationTransform) {
|
|
|
88
88
|
// eslint-disable-next-line max-lines-per-function
|
|
89
89
|
function buildWebpackBrowser(options, context, transforms = {}) {
|
|
90
90
|
var _a;
|
|
91
|
-
const root = core_1.normalize(context.workspaceRoot);
|
|
91
|
+
const root = (0, core_1.normalize)(context.workspaceRoot);
|
|
92
92
|
const projectName = (_a = context.target) === null || _a === void 0 ? void 0 : _a.project;
|
|
93
93
|
if (!projectName) {
|
|
94
94
|
throw new Error('The builder requires a target.');
|
|
@@ -96,18 +96,18 @@ function buildWebpackBrowser(options, context, transforms = {}) {
|
|
|
96
96
|
const baseOutputPath = path.resolve(context.workspaceRoot, options.outputPath);
|
|
97
97
|
let outputPaths;
|
|
98
98
|
// Check Angular version.
|
|
99
|
-
version_1.assertCompatibleAngularVersion(context.workspaceRoot);
|
|
100
|
-
return rxjs_1.from(context.getProjectMetadata(projectName)).pipe(operators_1.switchMap(async (projectMetadata) => {
|
|
99
|
+
(0, version_1.assertCompatibleAngularVersion)(context.workspaceRoot);
|
|
100
|
+
return (0, rxjs_1.from)(context.getProjectMetadata(projectName)).pipe((0, operators_1.switchMap)(async (projectMetadata) => {
|
|
101
101
|
var _a;
|
|
102
|
-
const sysProjectRoot = core_1.getSystemPath(core_1.resolve(core_1.normalize(context.workspaceRoot), core_1.normalize((_a = projectMetadata.root) !== null && _a !== void 0 ? _a : '')));
|
|
102
|
+
const sysProjectRoot = (0, core_1.getSystemPath)((0, core_1.resolve)((0, core_1.normalize)(context.workspaceRoot), (0, core_1.normalize)((_a = projectMetadata.root) !== null && _a !== void 0 ? _a : '')));
|
|
103
103
|
const buildBrowserFeatures = new utils_1.BuildBrowserFeatures(sysProjectRoot);
|
|
104
104
|
checkInternetExplorerSupport(buildBrowserFeatures.supportedBrowsers, context.logger);
|
|
105
105
|
return initialize(options, context, transforms.webpackConfiguration);
|
|
106
|
-
}), operators_1.switchMap(
|
|
106
|
+
}), (0, operators_1.switchMap)(
|
|
107
107
|
// eslint-disable-next-line max-lines-per-function
|
|
108
108
|
({ config, projectRoot, projectSourceRoot, i18n, target }) => {
|
|
109
|
-
const normalizedOptimization = utils_1.normalizeOptimization(options.optimization);
|
|
110
|
-
return build_webpack_1.runWebpack(config, context, {
|
|
109
|
+
const normalizedOptimization = (0, utils_1.normalizeOptimization)(options.optimization);
|
|
110
|
+
return (0, build_webpack_1.runWebpack)(config, context, {
|
|
111
111
|
webpackFactory: require('webpack'),
|
|
112
112
|
logging: transforms.logging ||
|
|
113
113
|
((stats, config) => {
|
|
@@ -115,7 +115,7 @@ function buildWebpackBrowser(options, context, transforms = {}) {
|
|
|
115
115
|
context.logger.info(stats.toString(config.stats));
|
|
116
116
|
}
|
|
117
117
|
}),
|
|
118
|
-
}).pipe(operators_1.concatMap(async (buildEvent) => {
|
|
118
|
+
}).pipe((0, operators_1.concatMap)(async (buildEvent) => {
|
|
119
119
|
var _a, _b, _c, _d, _e;
|
|
120
120
|
const spinner = new spinner_1.Spinner();
|
|
121
121
|
spinner.enabled = options.progress !== false;
|
|
@@ -126,29 +126,29 @@ function buildWebpackBrowser(options, context, transforms = {}) {
|
|
|
126
126
|
}
|
|
127
127
|
// Fix incorrectly set `initial` value on chunks.
|
|
128
128
|
const extraEntryPoints = [
|
|
129
|
-
...helpers_1.normalizeExtraEntryPoints(options.styles || [], 'styles'),
|
|
130
|
-
...helpers_1.normalizeExtraEntryPoints(options.scripts || [], 'scripts'),
|
|
129
|
+
...(0, helpers_1.normalizeExtraEntryPoints)(options.styles || [], 'styles'),
|
|
130
|
+
...(0, helpers_1.normalizeExtraEntryPoints)(options.scripts || [], 'scripts'),
|
|
131
131
|
];
|
|
132
132
|
const webpackStats = {
|
|
133
133
|
...webpackRawStats,
|
|
134
|
-
chunks: async_chunks_1.markAsyncChunksNonInitial(webpackRawStats, extraEntryPoints),
|
|
134
|
+
chunks: (0, async_chunks_1.markAsyncChunksNonInitial)(webpackRawStats, extraEntryPoints),
|
|
135
135
|
};
|
|
136
136
|
if (!success) {
|
|
137
137
|
// If using bundle downleveling then there is only one build
|
|
138
138
|
// If it fails show any diagnostic messages and bail
|
|
139
|
-
if (stats_1.statsHasWarnings(webpackStats)) {
|
|
140
|
-
context.logger.warn(stats_1.statsWarningsToString(webpackStats, { colors: true }));
|
|
139
|
+
if ((0, stats_1.statsHasWarnings)(webpackStats)) {
|
|
140
|
+
context.logger.warn((0, stats_1.statsWarningsToString)(webpackStats, { colors: true }));
|
|
141
141
|
}
|
|
142
|
-
if (stats_1.statsHasErrors(webpackStats)) {
|
|
143
|
-
context.logger.error(stats_1.statsErrorsToString(webpackStats, { colors: true }));
|
|
142
|
+
if ((0, stats_1.statsHasErrors)(webpackStats)) {
|
|
143
|
+
context.logger.error((0, stats_1.statsErrorsToString)(webpackStats, { colors: true }));
|
|
144
144
|
}
|
|
145
145
|
return { success };
|
|
146
146
|
}
|
|
147
147
|
else {
|
|
148
|
-
outputPaths = output_paths_1.ensureOutputPaths(baseOutputPath, i18n);
|
|
149
|
-
const scriptsEntryPointName = helpers_1.normalizeExtraEntryPoints(options.scripts || [], 'scripts').map((x) => x.bundleName);
|
|
148
|
+
outputPaths = (0, output_paths_1.ensureOutputPaths)(baseOutputPath, i18n);
|
|
149
|
+
const scriptsEntryPointName = (0, helpers_1.normalizeExtraEntryPoints)(options.scripts || [], 'scripts').map((x) => x.bundleName);
|
|
150
150
|
if (i18n.shouldInline) {
|
|
151
|
-
const success = await i18n_inlining_1.i18nInlineEmittedFiles(context, emittedFiles, i18n, baseOutputPath, Array.from(outputPaths.values()), scriptsEntryPointName, webpackOutputPath, target <= typescript_1.ScriptTarget.ES5, options.i18nMissingTranslation);
|
|
151
|
+
const success = await (0, i18n_inlining_1.i18nInlineEmittedFiles)(context, emittedFiles, i18n, baseOutputPath, Array.from(outputPaths.values()), scriptsEntryPointName, webpackOutputPath, target <= typescript_1.ScriptTarget.ES5, options.i18nMissingTranslation);
|
|
152
152
|
if (!success) {
|
|
153
153
|
return { success: false };
|
|
154
154
|
}
|
|
@@ -156,7 +156,7 @@ function buildWebpackBrowser(options, context, transforms = {}) {
|
|
|
156
156
|
// Check for budget errors and display them to the user.
|
|
157
157
|
const budgets = options.budgets;
|
|
158
158
|
if (budgets === null || budgets === void 0 ? void 0 : budgets.length) {
|
|
159
|
-
const budgetFailures = bundle_calculator_1.checkBudgets(budgets, webpackStats);
|
|
159
|
+
const budgetFailures = (0, bundle_calculator_1.checkBudgets)(budgets, webpackStats);
|
|
160
160
|
for (const { severity, message } of budgetFailures) {
|
|
161
161
|
switch (severity) {
|
|
162
162
|
case bundle_calculator_1.ThresholdSeverity.Warning:
|
|
@@ -170,13 +170,13 @@ function buildWebpackBrowser(options, context, transforms = {}) {
|
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
|
-
const buildSuccess = success && !stats_1.statsHasErrors(webpackStats);
|
|
173
|
+
const buildSuccess = success && !(0, stats_1.statsHasErrors)(webpackStats);
|
|
174
174
|
if (buildSuccess) {
|
|
175
175
|
// Copy assets
|
|
176
176
|
if (!options.watch && ((_c = options.assets) === null || _c === void 0 ? void 0 : _c.length)) {
|
|
177
177
|
spinner.start('Copying assets...');
|
|
178
178
|
try {
|
|
179
|
-
await copy_assets_1.copyAssets(utils_1.normalizeAssetPatterns(options.assets, root, core_1.normalize(projectRoot), projectSourceRoot === undefined ? undefined : core_1.normalize(projectSourceRoot)), Array.from(outputPaths.values()), context.workspaceRoot);
|
|
179
|
+
await (0, copy_assets_1.copyAssets)((0, utils_1.normalizeAssetPatterns)(options.assets, root, (0, core_1.normalize)(projectRoot), projectSourceRoot === undefined ? undefined : (0, core_1.normalize)(projectSourceRoot)), Array.from(outputPaths.values()), context.workspaceRoot);
|
|
180
180
|
spinner.succeed('Copying assets complete.');
|
|
181
181
|
}
|
|
182
182
|
catch (err) {
|
|
@@ -186,12 +186,12 @@ function buildWebpackBrowser(options, context, transforms = {}) {
|
|
|
186
186
|
}
|
|
187
187
|
if (options.index) {
|
|
188
188
|
spinner.start('Generating index html...');
|
|
189
|
-
const entrypoints = package_chunk_sort_1.generateEntryPoints({
|
|
189
|
+
const entrypoints = (0, package_chunk_sort_1.generateEntryPoints)({
|
|
190
190
|
scripts: (_d = options.scripts) !== null && _d !== void 0 ? _d : [],
|
|
191
191
|
styles: (_e = options.styles) !== null && _e !== void 0 ? _e : [],
|
|
192
192
|
});
|
|
193
193
|
const indexHtmlGenerator = new index_html_generator_1.IndexHtmlGenerator({
|
|
194
|
-
indexPath: path.join(context.workspaceRoot, webpack_browser_config_1.getIndexInputFile(options.index)),
|
|
194
|
+
indexPath: path.join(context.workspaceRoot, (0, webpack_browser_config_1.getIndexInputFile)(options.index)),
|
|
195
195
|
entrypoints,
|
|
196
196
|
deployUrl: options.deployUrl,
|
|
197
197
|
sri: options.subresourceIntegrity,
|
|
@@ -218,7 +218,7 @@ function buildWebpackBrowser(options, context, transforms = {}) {
|
|
|
218
218
|
});
|
|
219
219
|
spinner.start();
|
|
220
220
|
}
|
|
221
|
-
const indexOutput = path.join(outputPath, webpack_browser_config_1.getIndexOutputFile(options.index));
|
|
221
|
+
const indexOutput = path.join(outputPath, (0, webpack_browser_config_1.getIndexOutputFile)(options.index));
|
|
222
222
|
await fs.promises.mkdir(path.dirname(indexOutput), { recursive: true });
|
|
223
223
|
await fs.promises.writeFile(indexOutput, content);
|
|
224
224
|
}
|
|
@@ -239,7 +239,7 @@ function buildWebpackBrowser(options, context, transforms = {}) {
|
|
|
239
239
|
spinner.start('Generating service worker...');
|
|
240
240
|
for (const [locale, outputPath] of outputPaths.entries()) {
|
|
241
241
|
try {
|
|
242
|
-
await service_worker_1.augmentAppWithServiceWorker(root, core_1.normalize(projectRoot), core_1.normalize(outputPath), getLocaleBaseHref(i18n, locale) || options.baseHref || '/', options.ngswConfigPath);
|
|
242
|
+
await (0, service_worker_1.augmentAppWithServiceWorker)(root, (0, core_1.normalize)(projectRoot), (0, core_1.normalize)(outputPath), getLocaleBaseHref(i18n, locale) || options.baseHref || '/', options.ngswConfigPath);
|
|
243
243
|
}
|
|
244
244
|
catch (error) {
|
|
245
245
|
spinner.fail('Service worker generation failed.');
|
|
@@ -249,10 +249,10 @@ function buildWebpackBrowser(options, context, transforms = {}) {
|
|
|
249
249
|
spinner.succeed('Service worker generation complete.');
|
|
250
250
|
}
|
|
251
251
|
}
|
|
252
|
-
stats_1.webpackStatsLogger(context.logger, webpackStats, config);
|
|
252
|
+
(0, stats_1.webpackStatsLogger)(context.logger, webpackStats, config);
|
|
253
253
|
return { success: buildSuccess };
|
|
254
254
|
}
|
|
255
|
-
}), operators_1.map((event) => ({
|
|
255
|
+
}), (0, operators_1.map)((event) => ({
|
|
256
256
|
...event,
|
|
257
257
|
baseOutputPath,
|
|
258
258
|
outputPath: baseOutputPath,
|
|
@@ -262,7 +262,7 @@ function buildWebpackBrowser(options, context, transforms = {}) {
|
|
|
262
262
|
function getLocaleBaseHref(i18n, locale) {
|
|
263
263
|
var _a, _b;
|
|
264
264
|
if (i18n.locales[locale] && ((_a = i18n.locales[locale]) === null || _a === void 0 ? void 0 : _a.baseHref) !== '') {
|
|
265
|
-
return utils_1.urlJoin(options.baseHref || '', (_b = i18n.locales[locale].baseHref) !== null && _b !== void 0 ? _b : `/${locale}/`);
|
|
265
|
+
return (0, utils_1.urlJoin)(options.baseHref || '', (_b = i18n.locales[locale].baseHref) !== null && _b !== void 0 ? _b : `/${locale}/`);
|
|
266
266
|
}
|
|
267
267
|
return undefined;
|
|
268
268
|
}
|
|
@@ -290,20 +290,10 @@ function mapEmittedFilesToFileInfo(files = []) {
|
|
|
290
290
|
return filteredFiles;
|
|
291
291
|
}
|
|
292
292
|
function checkInternetExplorerSupport(supportedBrowsers, logger) {
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
if (hasIE9 || hasIE10) {
|
|
297
|
-
const browsers = (hasIE9 ? 'IE 9' + (hasIE10 ? ' & ' : '') : '') + (hasIE10 ? 'IE 10' : '');
|
|
298
|
-
logger.warn(`Warning: Support was requested for ${browsers} in the project's browserslist configuration. ` +
|
|
299
|
-
(hasIE9 && hasIE10 ? 'These browsers are' : 'This browser is') +
|
|
300
|
-
' no longer officially supported with Angular v11 and higher.' +
|
|
301
|
-
'\nFor more information, see https://v10.angular.io/guide/deprecations#ie-9-10-and-mobile');
|
|
302
|
-
}
|
|
303
|
-
if (hasIE11) {
|
|
304
|
-
logger.warn(`Warning: Support was requested for IE 11 in the project's browserslist configuration. ` +
|
|
305
|
-
'IE 11 support is deprecated since Angular v12.' +
|
|
293
|
+
if (supportedBrowsers.some((b) => b === 'ie 9' || b === 'ie 10' || b === 'ie 11')) {
|
|
294
|
+
logger.warn(`Warning: Support was requested for Internet Explorer in the project's browserslist configuration. ` +
|
|
295
|
+
'Internet Explorer is no longer officially supported.' +
|
|
306
296
|
'\nFor more information, see https://angular.io/guide/browser-support');
|
|
307
297
|
}
|
|
308
298
|
}
|
|
309
|
-
exports.default = architect_1.createBuilder(buildWebpackBrowser);
|
|
299
|
+
exports.default = (0, architect_1.createBuilder)(buildWebpackBrowser);
|
|
@@ -71,13 +71,13 @@ const devServerBuildOverriddenKeys = [
|
|
|
71
71
|
function serveWebpackBrowser(options, context, transforms = {}) {
|
|
72
72
|
// Check Angular version.
|
|
73
73
|
const { logger, workspaceRoot } = context;
|
|
74
|
-
version_1.assertCompatibleAngularVersion(workspaceRoot);
|
|
75
|
-
const browserTarget = architect_1.targetFromTargetString(options.browserTarget);
|
|
74
|
+
(0, version_1.assertCompatibleAngularVersion)(workspaceRoot);
|
|
75
|
+
const browserTarget = (0, architect_1.targetFromTargetString)(options.browserTarget);
|
|
76
76
|
async function setup() {
|
|
77
77
|
var _a, _b;
|
|
78
78
|
// Get the browser configuration from the target name.
|
|
79
79
|
const rawBrowserOptions = (await context.getTargetOptions(browserTarget));
|
|
80
|
-
options.port = await check_port_1.checkPort((_a = options.port) !== null && _a !== void 0 ? _a : 4200, options.host || 'localhost');
|
|
80
|
+
options.port = await (0, check_port_1.checkPort)((_a = options.port) !== null && _a !== void 0 ? _a : 4200, options.host || 'localhost');
|
|
81
81
|
// Override options we need to override, if defined.
|
|
82
82
|
const overrides = Object.keys(options)
|
|
83
83
|
.filter((key) => options[key] !== undefined && devServerBuildOverriddenKeys.includes(key))
|
|
@@ -129,7 +129,7 @@ function serveWebpackBrowser(options, context, transforms = {}) {
|
|
|
129
129
|
rawBrowserOptions.allowedCommonJsDependencies.push('strip-ansi');
|
|
130
130
|
const browserName = await context.getBuilderNameForTarget(browserTarget);
|
|
131
131
|
const browserOptions = (await context.validateOptions({ ...rawBrowserOptions, ...overrides }, browserName));
|
|
132
|
-
const { styles, scripts } = utils_1.normalizeOptimization(browserOptions.optimization);
|
|
132
|
+
const { styles, scripts } = (0, utils_1.normalizeOptimization)(browserOptions.optimization);
|
|
133
133
|
if (scripts || styles.minify) {
|
|
134
134
|
logger.error(core_1.tags.stripIndents `
|
|
135
135
|
****************************************************************************************
|
|
@@ -140,15 +140,15 @@ function serveWebpackBrowser(options, context, transforms = {}) {
|
|
|
140
140
|
****************************************************************************************
|
|
141
141
|
`);
|
|
142
142
|
}
|
|
143
|
-
const { config, projectRoot, i18n } = await webpack_browser_config_1.generateI18nBrowserWebpackConfigFromContext(browserOptions, context, (wco) => [
|
|
144
|
-
configs_1.getDevServerConfig(wco),
|
|
145
|
-
configs_1.getCommonConfig(wco),
|
|
146
|
-
configs_1.getBrowserConfig(wco),
|
|
147
|
-
configs_1.getStylesConfig(wco),
|
|
148
|
-
configs_1.getStatsConfig(wco),
|
|
149
|
-
configs_1.getAnalyticsConfig(wco, context),
|
|
150
|
-
configs_1.getTypeScriptConfig(wco),
|
|
151
|
-
browserOptions.webWorkerTsConfig ? configs_1.getWorkerConfig(wco) : {},
|
|
143
|
+
const { config, projectRoot, i18n } = await (0, webpack_browser_config_1.generateI18nBrowserWebpackConfigFromContext)(browserOptions, context, (wco) => [
|
|
144
|
+
(0, configs_1.getDevServerConfig)(wco),
|
|
145
|
+
(0, configs_1.getCommonConfig)(wco),
|
|
146
|
+
(0, configs_1.getBrowserConfig)(wco),
|
|
147
|
+
(0, configs_1.getStylesConfig)(wco),
|
|
148
|
+
(0, configs_1.getStatsConfig)(wco),
|
|
149
|
+
(0, configs_1.getAnalyticsConfig)(wco, context),
|
|
150
|
+
(0, configs_1.getTypeScriptConfig)(wco),
|
|
151
|
+
browserOptions.webWorkerTsConfig ? (0, configs_1.getWorkerConfig)(wco) : {},
|
|
152
152
|
], devServerOptions);
|
|
153
153
|
if (!config.devServer) {
|
|
154
154
|
throw new Error('Webpack Dev Server configuration was not set.');
|
|
@@ -180,11 +180,11 @@ function serveWebpackBrowser(options, context, transforms = {}) {
|
|
|
180
180
|
locale,
|
|
181
181
|
};
|
|
182
182
|
}
|
|
183
|
-
return rxjs_1.from(setup()).pipe(operators_1.switchMap(({ browserOptions, webpackConfig, locale }) => {
|
|
183
|
+
return (0, rxjs_1.from)(setup()).pipe((0, operators_1.switchMap)(({ browserOptions, webpackConfig, locale }) => {
|
|
184
184
|
var _a, _b;
|
|
185
185
|
if (browserOptions.index) {
|
|
186
186
|
const { scripts = [], styles = [], baseHref } = browserOptions;
|
|
187
|
-
const entrypoints = package_chunk_sort_1.generateEntryPoints({
|
|
187
|
+
const entrypoints = (0, package_chunk_sort_1.generateEntryPoints)({
|
|
188
188
|
scripts,
|
|
189
189
|
styles,
|
|
190
190
|
// The below is needed as otherwise HMR for CSS will break.
|
|
@@ -194,23 +194,23 @@ function serveWebpackBrowser(options, context, transforms = {}) {
|
|
|
194
194
|
});
|
|
195
195
|
(_b = webpackConfig.plugins) !== null && _b !== void 0 ? _b : (webpackConfig.plugins = []);
|
|
196
196
|
webpackConfig.plugins.push(new index_html_webpack_plugin_1.IndexHtmlWebpackPlugin({
|
|
197
|
-
indexPath: path.resolve(workspaceRoot, webpack_browser_config_1.getIndexInputFile(browserOptions.index)),
|
|
198
|
-
outputPath: webpack_browser_config_1.getIndexOutputFile(browserOptions.index),
|
|
197
|
+
indexPath: path.resolve(workspaceRoot, (0, webpack_browser_config_1.getIndexInputFile)(browserOptions.index)),
|
|
198
|
+
outputPath: (0, webpack_browser_config_1.getIndexOutputFile)(browserOptions.index),
|
|
199
199
|
baseHref,
|
|
200
200
|
entrypoints,
|
|
201
201
|
deployUrl: browserOptions.deployUrl,
|
|
202
202
|
sri: browserOptions.subresourceIntegrity,
|
|
203
203
|
postTransform: transforms.indexHtml,
|
|
204
|
-
optimization: utils_1.normalizeOptimization(browserOptions.optimization),
|
|
204
|
+
optimization: (0, utils_1.normalizeOptimization)(browserOptions.optimization),
|
|
205
205
|
crossOrigin: browserOptions.crossOrigin,
|
|
206
206
|
lang: locale,
|
|
207
207
|
}));
|
|
208
208
|
}
|
|
209
|
-
return build_webpack_1.runWebpackDevServer(webpackConfig, context, {
|
|
210
|
-
logging: transforms.logging || stats_1.createWebpackLoggingCallback(browserOptions, logger),
|
|
209
|
+
return (0, build_webpack_1.runWebpackDevServer)(webpackConfig, context, {
|
|
210
|
+
logging: transforms.logging || (0, stats_1.createWebpackLoggingCallback)(browserOptions, logger),
|
|
211
211
|
webpackFactory: require('webpack'),
|
|
212
212
|
webpackDevServerFactory: require('webpack-dev-server'),
|
|
213
|
-
}).pipe(operators_1.concatMap(async (buildEvent, index) => {
|
|
213
|
+
}).pipe((0, operators_1.concatMap)(async (buildEvent, index) => {
|
|
214
214
|
var _a, _b;
|
|
215
215
|
// Resolve serve address.
|
|
216
216
|
const serverAddress = url.format({
|
|
@@ -277,7 +277,7 @@ async function setupLocalize(locale, i18n, browserOptions, webpackConfig) {
|
|
|
277
277
|
{
|
|
278
278
|
loader: require.resolve('../../babel/webpack-loader'),
|
|
279
279
|
options: {
|
|
280
|
-
cacheDirectory: cache_path_1.findCachePath('babel-dev-server-i18n'),
|
|
280
|
+
cacheDirectory: (0, cache_path_1.findCachePath)('babel-dev-server-i18n'),
|
|
281
281
|
cacheIdentifier: JSON.stringify({
|
|
282
282
|
locale,
|
|
283
283
|
translationIntegrity: localeDescription === null || localeDescription === void 0 ? void 0 : localeDescription.files.map((file) => file.integrity),
|
|
@@ -297,4 +297,4 @@ async function setupLocalize(locale, i18n, browserOptions, webpackConfig) {
|
|
|
297
297
|
}
|
|
298
298
|
rules.push(i18nRule);
|
|
299
299
|
}
|
|
300
|
-
exports.default = architect_1.createBuilder(serveWebpackBrowser);
|
|
300
|
+
exports.default = (0, architect_1.createBuilder)(serveWebpackBrowser);
|
|
@@ -36,6 +36,7 @@ const fs = __importStar(require("fs"));
|
|
|
36
36
|
const path = __importStar(require("path"));
|
|
37
37
|
const webpack_1 = __importDefault(require("webpack"));
|
|
38
38
|
const i18n_options_1 = require("../../utils/i18n-options");
|
|
39
|
+
const load_esm_1 = require("../../utils/load-esm");
|
|
39
40
|
const version_1 = require("../../utils/version");
|
|
40
41
|
const webpack_browser_config_1 = require("../../utils/webpack-browser-config");
|
|
41
42
|
const configs_1 = require("../../webpack/configs");
|
|
@@ -61,31 +62,31 @@ function getI18nOutfile(format) {
|
|
|
61
62
|
throw new Error(`Unsupported format "${format}"`);
|
|
62
63
|
}
|
|
63
64
|
}
|
|
64
|
-
async function getSerializer(format, sourceLocale, basePath, useLegacyIds, diagnostics) {
|
|
65
|
+
async function getSerializer(localizeToolsModule, format, sourceLocale, basePath, useLegacyIds, diagnostics) {
|
|
65
66
|
switch (format) {
|
|
66
67
|
case schema_2.Format.Xmb:
|
|
67
|
-
const { XmbTranslationSerializer } = await Promise.resolve().then(() => __importStar(require('@angular/localize/src/tools/src/extract/translation_files/xmb_translation_serializer')));
|
|
68
|
+
const { XmbTranslationSerializer } = localizeToolsModule !== null && localizeToolsModule !== void 0 ? localizeToolsModule : (await Promise.resolve().then(() => __importStar(require('@angular/localize/src/tools/src/extract/translation_files/xmb_translation_serializer'))));
|
|
68
69
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
69
70
|
return new XmbTranslationSerializer(basePath, useLegacyIds);
|
|
70
71
|
case schema_2.Format.Xlf:
|
|
71
72
|
case schema_2.Format.Xlif:
|
|
72
73
|
case schema_2.Format.Xliff:
|
|
73
|
-
const { Xliff1TranslationSerializer } = await Promise.resolve().then(() => __importStar(require('@angular/localize/src/tools/src/extract/translation_files/xliff1_translation_serializer')));
|
|
74
|
+
const { Xliff1TranslationSerializer } = localizeToolsModule !== null && localizeToolsModule !== void 0 ? localizeToolsModule : (await Promise.resolve().then(() => __importStar(require('@angular/localize/src/tools/src/extract/translation_files/xliff1_translation_serializer'))));
|
|
74
75
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
75
76
|
return new Xliff1TranslationSerializer(sourceLocale, basePath, useLegacyIds, {});
|
|
76
77
|
case schema_2.Format.Xlf2:
|
|
77
78
|
case schema_2.Format.Xliff2:
|
|
78
|
-
const { Xliff2TranslationSerializer } = await Promise.resolve().then(() => __importStar(require('@angular/localize/src/tools/src/extract/translation_files/xliff2_translation_serializer')));
|
|
79
|
+
const { Xliff2TranslationSerializer } = localizeToolsModule !== null && localizeToolsModule !== void 0 ? localizeToolsModule : (await Promise.resolve().then(() => __importStar(require('@angular/localize/src/tools/src/extract/translation_files/xliff2_translation_serializer'))));
|
|
79
80
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
80
81
|
return new Xliff2TranslationSerializer(sourceLocale, basePath, useLegacyIds, {});
|
|
81
82
|
case schema_2.Format.Json:
|
|
82
|
-
const { SimpleJsonTranslationSerializer } = await Promise.resolve().then(() => __importStar(require('@angular/localize/src/tools/src/extract/translation_files/json_translation_serializer')));
|
|
83
|
+
const { SimpleJsonTranslationSerializer } = localizeToolsModule !== null && localizeToolsModule !== void 0 ? localizeToolsModule : (await Promise.resolve().then(() => __importStar(require('@angular/localize/src/tools/src/extract/translation_files/json_translation_serializer'))));
|
|
83
84
|
return new SimpleJsonTranslationSerializer(sourceLocale);
|
|
84
85
|
case schema_2.Format.LegacyMigrate:
|
|
85
|
-
const { LegacyMessageIdMigrationSerializer } = await Promise.resolve().then(() => __importStar(require('@angular/localize/src/tools/src/extract/translation_files/legacy_message_id_migration_serializer')));
|
|
86
|
+
const { LegacyMessageIdMigrationSerializer } = localizeToolsModule !== null && localizeToolsModule !== void 0 ? localizeToolsModule : (await Promise.resolve().then(() => __importStar(require('@angular/localize/src/tools/src/extract/translation_files/legacy_message_id_migration_serializer'))));
|
|
86
87
|
return new LegacyMessageIdMigrationSerializer(diagnostics);
|
|
87
88
|
case schema_2.Format.Arb:
|
|
88
|
-
const { ArbTranslationSerializer } = await Promise.resolve().then(() => __importStar(require('@angular/localize/src/tools/src/extract/translation_files/arb_translation_serializer')));
|
|
89
|
+
const { ArbTranslationSerializer } = localizeToolsModule !== null && localizeToolsModule !== void 0 ? localizeToolsModule : (await Promise.resolve().then(() => __importStar(require('@angular/localize/src/tools/src/extract/translation_files/arb_translation_serializer'))));
|
|
89
90
|
const fileSystem = {
|
|
90
91
|
relative(from, to) {
|
|
91
92
|
return path.relative(from, to);
|
|
@@ -122,8 +123,8 @@ class NoEmitPlugin {
|
|
|
122
123
|
async function execute(options, context, transforms) {
|
|
123
124
|
var _a;
|
|
124
125
|
// Check Angular version.
|
|
125
|
-
version_1.assertCompatibleAngularVersion(context.workspaceRoot);
|
|
126
|
-
const browserTarget = architect_1.targetFromTargetString(options.browserTarget);
|
|
126
|
+
(0, version_1.assertCompatibleAngularVersion)(context.workspaceRoot);
|
|
127
|
+
const browserTarget = (0, architect_1.targetFromTargetString)(options.browserTarget);
|
|
127
128
|
const browserOptions = await context.validateOptions(await context.getTargetOptions(browserTarget), await context.getBuilderNameForTarget(browserTarget));
|
|
128
129
|
const format = normalizeFormatOption(options);
|
|
129
130
|
// We need to determine the outFile name so that AngularCompiler can retrieve it.
|
|
@@ -137,7 +138,7 @@ async function execute(options, context, transforms) {
|
|
|
137
138
|
throw new Error('The builder requires a target.');
|
|
138
139
|
}
|
|
139
140
|
const metadata = await context.getProjectMetadata(context.target);
|
|
140
|
-
const i18n = i18n_options_1.createI18nOptions(metadata);
|
|
141
|
+
const i18n = (0, i18n_options_1.createI18nOptions)(metadata);
|
|
141
142
|
let useLegacyIds = true;
|
|
142
143
|
const ivyMessages = [];
|
|
143
144
|
const builderOptions = {
|
|
@@ -161,17 +162,17 @@ async function execute(options, context, transforms) {
|
|
|
161
162
|
outputHashing: schema_1.OutputHashing.None,
|
|
162
163
|
namedChunks: true,
|
|
163
164
|
};
|
|
164
|
-
const { config, projectRoot } = await webpack_browser_config_1.generateBrowserWebpackConfigFromContext(builderOptions, context, (wco) => {
|
|
165
|
+
const { config, projectRoot } = await (0, webpack_browser_config_1.generateBrowserWebpackConfigFromContext)(builderOptions, context, (wco) => {
|
|
165
166
|
var _a;
|
|
166
167
|
// Default value for legacy message ids is currently true
|
|
167
168
|
useLegacyIds = (_a = wco.tsConfig.options.enableI18nLegacyMessageIdFormat) !== null && _a !== void 0 ? _a : true;
|
|
168
169
|
const partials = [
|
|
169
170
|
{ plugins: [new NoEmitPlugin()] },
|
|
170
|
-
configs_1.getCommonConfig(wco),
|
|
171
|
-
configs_1.getBrowserConfig(wco),
|
|
172
|
-
configs_1.getTypeScriptConfig(wco),
|
|
173
|
-
configs_1.getWorkerConfig(wco),
|
|
174
|
-
configs_1.getStatsConfig(wco),
|
|
171
|
+
(0, configs_1.getCommonConfig)(wco),
|
|
172
|
+
(0, configs_1.getBrowserConfig)(wco),
|
|
173
|
+
(0, configs_1.getTypeScriptConfig)(wco),
|
|
174
|
+
(0, configs_1.getWorkerConfig)(wco),
|
|
175
|
+
(0, configs_1.getStatsConfig)(wco),
|
|
175
176
|
];
|
|
176
177
|
// Add Ivy application file extractor support
|
|
177
178
|
partials.unshift({
|
|
@@ -210,8 +211,19 @@ async function execute(options, context, transforms) {
|
|
|
210
211
|
outputPath: outFile,
|
|
211
212
|
};
|
|
212
213
|
}
|
|
213
|
-
|
|
214
|
-
|
|
214
|
+
// All the localize usages are setup to first try the ESM entry point then fallback to the deep imports.
|
|
215
|
+
// This provides interim compatibility while the framework is transitioned to bundled ESM packages.
|
|
216
|
+
// TODO_ESM: Remove all deep imports once `@angular/localize` is published with the `tools` entry point
|
|
217
|
+
let localizeToolsModule;
|
|
218
|
+
try {
|
|
219
|
+
// Load ESM `@angular/localize/tools` using the TypeScript dynamic import workaround.
|
|
220
|
+
// Once TypeScript provides support for keeping the dynamic import this workaround can be
|
|
221
|
+
// changed to a direct dynamic import.
|
|
222
|
+
localizeToolsModule = await (0, load_esm_1.loadEsmModule)('@angular/localize/tools');
|
|
223
|
+
}
|
|
224
|
+
catch { }
|
|
225
|
+
const webpackResult = await (0, build_webpack_1.runWebpack)((await ((_a = transforms === null || transforms === void 0 ? void 0 : transforms.webpackConfiguration) === null || _a === void 0 ? void 0 : _a.call(transforms, config))) || config, context, {
|
|
226
|
+
logging: (0, stats_1.createWebpackLoggingCallback)(builderOptions, context.logger),
|
|
215
227
|
webpackFactory: webpack_1.default,
|
|
216
228
|
}).toPromise();
|
|
217
229
|
// Set the outputPath to the extraction output location for downstream consumers
|
|
@@ -221,7 +233,7 @@ async function execute(options, context, transforms) {
|
|
|
221
233
|
return webpackResult;
|
|
222
234
|
}
|
|
223
235
|
const basePath = config.context || projectRoot;
|
|
224
|
-
const { checkDuplicateMessages } = await Promise.resolve().then(() => __importStar(require('@angular/localize/src/tools/src/extract/duplicates')));
|
|
236
|
+
const { checkDuplicateMessages } = localizeToolsModule !== null && localizeToolsModule !== void 0 ? localizeToolsModule : (await Promise.resolve().then(() => __importStar(require('@angular/localize/src/tools/src/extract/duplicates'))));
|
|
225
237
|
// The filesystem is used to create a relative path for each file
|
|
226
238
|
// from the basePath. This relative path is then used in the error message.
|
|
227
239
|
const checkFileSystem = {
|
|
@@ -238,7 +250,7 @@ async function execute(options, context, transforms) {
|
|
|
238
250
|
context.logger.warn(diagnostics.formatDiagnostics(''));
|
|
239
251
|
}
|
|
240
252
|
// Serialize all extracted messages
|
|
241
|
-
const serializer = await getSerializer(format, i18n.sourceLocale, basePath, useLegacyIds, diagnostics);
|
|
253
|
+
const serializer = await getSerializer(localizeToolsModule, format, i18n.sourceLocale, basePath, useLegacyIds, diagnostics);
|
|
242
254
|
const content = serializer.serialize(ivyMessages);
|
|
243
255
|
// Ensure directory exists
|
|
244
256
|
const outputPath = path.dirname(outFile);
|
|
@@ -250,4 +262,4 @@ async function execute(options, context, transforms) {
|
|
|
250
262
|
return webpackResult;
|
|
251
263
|
}
|
|
252
264
|
exports.execute = execute;
|
|
253
|
-
exports.default = architect_1.createBuilder(execute);
|
|
265
|
+
exports.default = (0, architect_1.createBuilder)(execute);
|
|
@@ -26,12 +26,41 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
26
26
|
return result;
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
const extraction_1 = require("@angular/localize/src/tools/src/extract/extraction");
|
|
30
29
|
const nodePath = __importStar(require("path"));
|
|
30
|
+
const load_esm_1 = require("../../utils/load-esm");
|
|
31
31
|
function localizeExtractLoader(content, map) {
|
|
32
|
-
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
33
|
-
const loaderContext = this;
|
|
34
32
|
const options = this.getOptions();
|
|
33
|
+
const callback = this.async();
|
|
34
|
+
extract(this, content, map, options).then(() => {
|
|
35
|
+
// Pass through the original content now that messages have been extracted
|
|
36
|
+
callback(undefined, content, map);
|
|
37
|
+
}, (error) => {
|
|
38
|
+
callback(error);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
exports.default = localizeExtractLoader;
|
|
42
|
+
async function extract(loaderContext, content, map, options) {
|
|
43
|
+
// Try to load the `@angular/localize` message extractor.
|
|
44
|
+
// All the localize usages are setup to first try the ESM entry point then fallback to the deep imports.
|
|
45
|
+
// This provides interim compatibility while the framework is transitioned to bundled ESM packages.
|
|
46
|
+
// TODO_ESM: Remove all deep imports once `@angular/localize` is published with the `tools` entry point
|
|
47
|
+
let MessageExtractor;
|
|
48
|
+
try {
|
|
49
|
+
try {
|
|
50
|
+
// Load ESM `@angular/localize/tools` using the TypeScript dynamic import workaround.
|
|
51
|
+
// Once TypeScript provides support for keeping the dynamic import this workaround can be
|
|
52
|
+
// changed to a direct dynamic import.
|
|
53
|
+
const localizeToolsModule = await (0, load_esm_1.loadEsmModule)('@angular/localize/tools');
|
|
54
|
+
MessageExtractor = localizeToolsModule.MessageExtractor;
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
MessageExtractor = (await Promise.resolve().then(() => __importStar(require('@angular/localize/src/tools/src/extract/extraction'))))
|
|
58
|
+
.MessageExtractor;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
throw new Error(`Unable to load message extractor. Please ensure '@angular/localize' is installed.`);
|
|
63
|
+
}
|
|
35
64
|
// Setup a Webpack-based logger instance
|
|
36
65
|
const logger = {
|
|
37
66
|
// level 2 is warnings
|
|
@@ -85,16 +114,13 @@ function localizeExtractLoader(content, map) {
|
|
|
85
114
|
},
|
|
86
115
|
};
|
|
87
116
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
88
|
-
const extractor = new
|
|
117
|
+
const extractor = new MessageExtractor(filesystem, logger, {
|
|
89
118
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
90
|
-
basePath:
|
|
119
|
+
basePath: loaderContext.rootContext,
|
|
91
120
|
useSourceMaps: !!map,
|
|
92
121
|
});
|
|
93
122
|
const messages = extractor.extractMessages(filename);
|
|
94
123
|
if (messages.length > 0) {
|
|
95
124
|
options === null || options === void 0 ? void 0 : options.messageHandler(messages);
|
|
96
125
|
}
|
|
97
|
-
// Pass through the original content now that messages have been extracted
|
|
98
|
-
this.callback(undefined, content, map);
|
|
99
126
|
}
|
|
100
|
-
exports.default = localizeExtractLoader;
|
|
@@ -56,15 +56,15 @@ function findMatchingTests(pattern, cwd, relativePathToMain) {
|
|
|
56
56
|
}
|
|
57
57
|
// special logic when pattern does not look like a glob
|
|
58
58
|
if (!glob.hasMagic(pattern)) {
|
|
59
|
-
if (is_directory_1.isDirectory(path_1.join(cwd, pattern))) {
|
|
59
|
+
if ((0, is_directory_1.isDirectory)((0, path_1.join)(cwd, pattern))) {
|
|
60
60
|
pattern = `${pattern}/**/*.spec.@(ts|tsx)`;
|
|
61
61
|
}
|
|
62
62
|
else {
|
|
63
63
|
// see if matching spec file exists
|
|
64
|
-
const extension = path_1.extname(pattern);
|
|
65
|
-
const matchingSpec = `${path_1.basename(pattern, extension)}.spec${extension}`;
|
|
66
|
-
if (fs_1.existsSync(path_1.join(cwd, path_1.dirname(pattern), matchingSpec))) {
|
|
67
|
-
pattern = path_1.join(path_1.dirname(pattern), matchingSpec).replace(/\\/g, '/');
|
|
64
|
+
const extension = (0, path_1.extname)(pattern);
|
|
65
|
+
const matchingSpec = `${(0, path_1.basename)(pattern, extension)}.spec${extension}`;
|
|
66
|
+
if ((0, fs_1.existsSync)((0, path_1.join)(cwd, (0, path_1.dirname)(pattern), matchingSpec))) {
|
|
67
|
+
pattern = (0, path_1.join)((0, path_1.dirname)(pattern), matchingSpec).replace(/\\/g, '/');
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
}
|
|
@@ -39,7 +39,7 @@ const single_test_transform_1 = require("../../webpack/plugins/single-test-trans
|
|
|
39
39
|
const schema_1 = require("../browser/schema");
|
|
40
40
|
const find_tests_1 = require("./find-tests");
|
|
41
41
|
async function initialize(options, context, webpackConfigurationTransformer) {
|
|
42
|
-
const { config } = await webpack_browser_config_1.generateBrowserWebpackConfigFromContext(
|
|
42
|
+
const { config } = await (0, webpack_browser_config_1.generateBrowserWebpackConfigFromContext)(
|
|
43
43
|
// only two properties are missing:
|
|
44
44
|
// * `outputPath` which is fixed for tests
|
|
45
45
|
// * `budgets` which might be incorrect due to extra dev libs
|
|
@@ -60,11 +60,11 @@ async function initialize(options, context, webpackConfigurationTransformer) {
|
|
|
60
60
|
// https://github.com/webpack/webpack/blob/cde1b73e12eb8a77eb9ba42e7920c9ec5d29c2c9/lib/Compiler.js#L379-L388
|
|
61
61
|
watch: true,
|
|
62
62
|
}, context, (wco) => [
|
|
63
|
-
configs_1.getCommonConfig(wco),
|
|
64
|
-
configs_1.getStylesConfig(wco),
|
|
65
|
-
configs_1.getTypeScriptConfig(wco),
|
|
66
|
-
configs_1.getTestConfig(wco),
|
|
67
|
-
configs_1.getWorkerConfig(wco),
|
|
63
|
+
(0, configs_1.getCommonConfig)(wco),
|
|
64
|
+
(0, configs_1.getStylesConfig)(wco),
|
|
65
|
+
(0, configs_1.getTypeScriptConfig)(wco),
|
|
66
|
+
(0, configs_1.getTestConfig)(wco),
|
|
67
|
+
(0, configs_1.getWorkerConfig)(wco),
|
|
68
68
|
]);
|
|
69
69
|
const karma = await Promise.resolve().then(() => __importStar(require('karma')));
|
|
70
70
|
return [
|
|
@@ -77,12 +77,12 @@ async function initialize(options, context, webpackConfigurationTransformer) {
|
|
|
77
77
|
*/
|
|
78
78
|
function execute(options, context, transforms = {}) {
|
|
79
79
|
// Check Angular version.
|
|
80
|
-
version_1.assertCompatibleAngularVersion(context.workspaceRoot);
|
|
80
|
+
(0, version_1.assertCompatibleAngularVersion)(context.workspaceRoot);
|
|
81
81
|
let singleRun;
|
|
82
82
|
if (options.watch !== undefined) {
|
|
83
83
|
singleRun = !options.watch;
|
|
84
84
|
}
|
|
85
|
-
return rxjs_1.from(initialize(options, context, transforms.webpackConfiguration)).pipe(operators_1.switchMap(async ([karma, webpackConfig]) => {
|
|
85
|
+
return (0, rxjs_1.from)(initialize(options, context, transforms.webpackConfiguration)).pipe((0, operators_1.switchMap)(async ([karma, webpackConfig]) => {
|
|
86
86
|
var _a;
|
|
87
87
|
const karmaOptions = {
|
|
88
88
|
singleRun,
|
|
@@ -102,8 +102,8 @@ function execute(options, context, transforms = {}) {
|
|
|
102
102
|
}
|
|
103
103
|
// prepend special webpack loader that will transform test.ts
|
|
104
104
|
if (options.include && options.include.length > 0) {
|
|
105
|
-
const mainFilePath = core_1.getSystemPath(core_1.join(core_1.normalize(context.workspaceRoot), options.main));
|
|
106
|
-
const files = find_tests_1.findTests(options.include, path_1.dirname(mainFilePath), context.workspaceRoot);
|
|
105
|
+
const mainFilePath = (0, core_1.getSystemPath)((0, core_1.join)((0, core_1.normalize)(context.workspaceRoot), options.main));
|
|
106
|
+
const files = (0, find_tests_1.findTests)(options.include, (0, path_1.dirname)(mainFilePath), context.workspaceRoot);
|
|
107
107
|
// early exit, no reason to start karma
|
|
108
108
|
if (!files.length) {
|
|
109
109
|
throw new Error(`Specified patterns: "${options.include.join(', ')}" did not match any spec files.`);
|
|
@@ -133,9 +133,9 @@ function execute(options, context, transforms = {}) {
|
|
|
133
133
|
webpackConfig,
|
|
134
134
|
logger: context.logger,
|
|
135
135
|
};
|
|
136
|
-
const config = await karma.config.parseConfig(path_1.resolve(context.workspaceRoot, options.karmaConfig), transforms.karmaOptions ? transforms.karmaOptions(karmaOptions) : karmaOptions, { promiseConfig: true, throwErrors: true });
|
|
136
|
+
const config = await karma.config.parseConfig((0, path_1.resolve)(context.workspaceRoot, options.karmaConfig), transforms.karmaOptions ? transforms.karmaOptions(karmaOptions) : karmaOptions, { promiseConfig: true, throwErrors: true });
|
|
137
137
|
return [karma, config];
|
|
138
|
-
}), operators_1.switchMap(([karma, karmaConfig]) => new rxjs_1.Observable((subscriber) => {
|
|
138
|
+
}), (0, operators_1.switchMap)(([karma, karmaConfig]) => new rxjs_1.Observable((subscriber) => {
|
|
139
139
|
var _a, _b, _c;
|
|
140
140
|
var _d, _e;
|
|
141
141
|
// Pass onto Karma to emit BuildEvents.
|
|
@@ -154,7 +154,7 @@ function execute(options, context, transforms = {}) {
|
|
|
154
154
|
const karmaStart = karmaServer.start();
|
|
155
155
|
// Cleanup, signal Karma to exit.
|
|
156
156
|
return () => karmaStart.then(() => karmaServer.stop());
|
|
157
|
-
})), operators_1.defaultIfEmpty({ success: false }));
|
|
157
|
+
})), (0, operators_1.defaultIfEmpty)({ success: false }));
|
|
158
158
|
}
|
|
159
159
|
exports.execute = execute;
|
|
160
|
-
exports.default = architect_1.createBuilder(execute);
|
|
160
|
+
exports.default = (0, architect_1.createBuilder)(execute);
|