@angular-devkit/build-angular 14.0.0-next.6 → 14.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/package.json CHANGED
@@ -1,39 +1,38 @@
1
1
  {
2
2
  "name": "@angular-devkit/build-angular",
3
- "version": "14.0.0-next.6",
3
+ "version": "14.0.0-next.7",
4
4
  "description": "Angular Webpack Build Facade",
5
5
  "main": "src/index.js",
6
6
  "typings": "src/index.d.ts",
7
7
  "builders": "builders.json",
8
8
  "dependencies": {
9
9
  "@ampproject/remapping": "2.1.2",
10
- "@angular-devkit/architect": "0.1400.0-next.6",
11
- "@angular-devkit/build-webpack": "0.1400.0-next.6",
12
- "@angular-devkit/core": "14.0.0-next.6",
13
- "@babel/core": "7.17.7",
10
+ "@angular-devkit/architect": "0.1400.0-next.7",
11
+ "@angular-devkit/build-webpack": "0.1400.0-next.7",
12
+ "@angular-devkit/core": "14.0.0-next.7",
13
+ "@babel/core": "7.17.8",
14
14
  "@babel/generator": "7.17.7",
15
15
  "@babel/helper-annotate-as-pure": "7.16.7",
16
16
  "@babel/plugin-proposal-async-generator-functions": "7.16.8",
17
17
  "@babel/plugin-transform-async-to-generator": "7.16.8",
18
18
  "@babel/plugin-transform-runtime": "7.17.0",
19
19
  "@babel/preset-env": "7.16.11",
20
- "@babel/runtime": "7.17.7",
20
+ "@babel/runtime": "7.17.8",
21
21
  "@babel/template": "7.16.7",
22
22
  "@discoveryjs/json-ext": "0.5.7",
23
- "@ngtools/webpack": "14.0.0-next.6",
23
+ "@ngtools/webpack": "14.0.0-next.7",
24
24
  "ansi-colors": "4.1.1",
25
- "babel-loader": "8.2.3",
25
+ "babel-loader": "8.2.4",
26
26
  "babel-plugin-istanbul": "6.1.1",
27
27
  "browserslist": "^4.9.1",
28
- "cacache": "16.0.1",
28
+ "cacache": "16.0.3",
29
29
  "copy-webpack-plugin": "10.2.4",
30
- "core-js": "3.21.1",
31
30
  "critters": "0.0.16",
32
31
  "css-loader": "6.7.1",
33
- "esbuild-wasm": "0.14.27",
32
+ "esbuild-wasm": "0.14.29",
34
33
  "glob": "7.2.0",
35
34
  "https-proxy-agent": "5.0.0",
36
- "inquirer": "8.2.1",
35
+ "inquirer": "8.2.2",
37
36
  "jsonc-parser": "3.0.0",
38
37
  "karma-source-map-support": "1.4.0",
39
38
  "less": "4.1.2",
@@ -47,9 +46,9 @@
47
46
  "parse5-html-rewriting-stream": "6.0.1",
48
47
  "piscina": "3.2.0",
49
48
  "postcss": "8.4.12",
50
- "postcss-import": "14.0.2",
49
+ "postcss-import": "14.1.0",
51
50
  "postcss-loader": "6.2.1",
52
- "postcss-preset-env": "7.4.2",
51
+ "postcss-preset-env": "7.4.3",
53
52
  "regenerator-runtime": "0.13.9",
54
53
  "resolve-url-loader": "5.0.0",
55
54
  "rxjs": "6.6.7",
@@ -58,7 +57,7 @@
58
57
  "semver": "7.3.5",
59
58
  "source-map-loader": "3.0.1",
60
59
  "source-map-support": "0.5.21",
61
- "stylus": "0.56.0",
60
+ "stylus": "0.57.0",
62
61
  "stylus-loader": "6.2.0",
63
62
  "terser": "5.12.1",
64
63
  "text-table": "0.2.0",
@@ -71,7 +70,7 @@
71
70
  "webpack-subresource-integrity": "5.1.0"
72
71
  },
73
72
  "optionalDependencies": {
74
- "esbuild": "0.14.27"
73
+ "esbuild": "0.14.29"
75
74
  },
76
75
  "peerDependencies": {
77
76
  "@angular/compiler-cli": "^14.0.0 || ^14.0.0-next",
@@ -81,7 +80,7 @@
81
80
  "ng-packagr": "^14.0.0 || ^14.0.0-next",
82
81
  "protractor": "^7.0.0",
83
82
  "tailwindcss": "^2.0.0 || ^3.0.0",
84
- "typescript": "^4.6.2"
83
+ "typescript": "~4.6.2"
85
84
  },
86
85
  "peerDependenciesMeta": {
87
86
  "@angular/localize": {
package/src/typings.d.ts CHANGED
@@ -6,10 +6,6 @@
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
8
 
9
- declare module '@discoveryjs/json-ext' {
10
- export function stringifyStream(value: unknown): import('stream').Readable;
11
- }
12
-
13
9
  declare module '@babel/helper-annotate-as-pure' {
14
10
  export default function annotateAsPure(
15
11
  pathOrNode: import('@babel/types').Node | { node: import('@babel/types').Node },
@@ -31,7 +31,6 @@ var __importStar = (this && this.__importStar) || function (mod) {
31
31
  };
32
32
  Object.defineProperty(exports, "__esModule", { value: true });
33
33
  exports.checkPort = void 0;
34
- const inquirer_1 = require("inquirer");
35
34
  const net = __importStar(require("net"));
36
35
  const tty_1 = require("./tty");
37
36
  function createInUseError(port) {
@@ -53,12 +52,13 @@ async function checkPort(port, host) {
53
52
  reject(createInUseError(port));
54
53
  return;
55
54
  }
56
- (0, inquirer_1.prompt)({
55
+ Promise.resolve().then(() => __importStar(require('inquirer'))).then(({ prompt }) => prompt({
57
56
  type: 'confirm',
58
57
  name: 'useDifferent',
59
58
  message: `Port ${port} is already in use.\nWould you like to use a different port?`,
60
59
  default: true,
61
- }).then((answers) => (answers.useDifferent ? resolve(0) : reject(createInUseError(port))), () => reject(createInUseError(port)));
60
+ }))
61
+ .then((answers) => (answers.useDifferent ? resolve(0) : reject(createInUseError(port))), () => reject(createInUseError(port)));
62
62
  })
63
63
  .once('listening', () => {
64
64
  server.close();
@@ -129,7 +129,7 @@ async function inlineLocales(options) {
129
129
  // Same errors will contain the full content of the file as the error message
130
130
  // Which makes it hard to find the actual error message.
131
131
  const index = error.message.indexOf(')\n');
132
- const msg = index !== -1 ? error.message.substr(0, index + 1) : error.message;
132
+ const msg = index !== -1 ? error.message.slice(0, index + 1) : error.message;
133
133
  throw new Error(`${msg}\nAn error occurred inlining file "${options.filename}"`);
134
134
  }
135
135
  }
@@ -27,10 +27,9 @@ async function purgeStaleBuildCache(context) {
27
27
  .filter((d) => (0, path_1.join)(basePath, d.name) !== path && d.isDirectory())
28
28
  .map((d) => {
29
29
  const subPath = (0, path_1.join)(basePath, d.name);
30
- try {
31
- return fs_1.promises.rm(subPath, { force: true, recursive: true, maxRetries: 3 });
32
- }
33
- catch { }
30
+ return fs_1.promises
31
+ .rm(subPath, { force: true, recursive: true, maxRetries: 3 })
32
+ .catch(() => void 0);
34
33
  });
35
34
  await Promise.all(entriesToDelete);
36
35
  }
@@ -10,7 +10,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.getAnalyticsConfig = void 0;
11
11
  const analytics_1 = require("../plugins/analytics");
12
12
  function getAnalyticsConfig(wco, context) {
13
- var _a;
14
13
  if (!context.analytics) {
15
14
  return {};
16
15
  }
@@ -22,9 +21,7 @@ function getAnalyticsConfig(wco, context) {
22
21
  }
23
22
  // The category is the builder name if it's an angular builder.
24
23
  return {
25
- plugins: [
26
- new analytics_1.NgBuildAnalyticsPlugin(wco.projectRoot, context.analytics, category, (_a = wco.buildOptions.aot) !== null && _a !== void 0 ? _a : false),
27
- ],
24
+ plugins: [new analytics_1.NgBuildAnalyticsPlugin(wco.projectRoot, context.analytics, category)],
28
25
  };
29
26
  }
30
27
  exports.getAnalyticsConfig = getAnalyticsConfig;
@@ -84,15 +84,6 @@ async function getCommonConfig(wco) {
84
84
  entryPoints['polyfills'] = [projectPolyfills];
85
85
  }
86
86
  }
87
- if (!buildOptions.aot) {
88
- const jitPolyfills = require.resolve('core-js/proposals/reflect-metadata');
89
- if (entryPoints['polyfills']) {
90
- entryPoints['polyfills'].push(jitPolyfills);
91
- }
92
- else {
93
- entryPoints['polyfills'] = [jitPolyfills];
94
- }
95
- }
96
87
  }
97
88
  if (allowedCommonJsDependencies) {
98
89
  // When this is not defined it means the builder doesn't support showing common js usages.
@@ -183,7 +174,9 @@ async function getCommonConfig(wco) {
183
174
  test: tsConfig.options.allowJs ? /\.[cm]?[tj]sx?$/ : /\.[cm]?tsx?$/,
184
175
  loader: webpack_1.AngularWebpackLoaderPath,
185
176
  // The below are known paths that are not part of the TypeScript compilation even when allowJs is enabled.
186
- exclude: [/[/\\](?:css-loader|mini-css-extract-plugin|webpack-dev-server|webpack)[/\\]/],
177
+ exclude: [
178
+ /[\\/]node_modules[/\\](?:css-loader|mini-css-extract-plugin|webpack-dev-server|webpack)[/\\]/,
179
+ ],
187
180
  });
188
181
  extraPlugins.push((0, typescript_2.createIvyPlugin)(wco, aot, tsConfigPath));
189
182
  }
@@ -297,7 +290,7 @@ async function getCommonConfig(wco) {
297
290
  // The below is needed due to a bug in `@babel/runtime`. See: https://github.com/babel/babel/issues/12824
298
291
  resolve: { fullySpecified: false },
299
292
  exclude: [
300
- /[/\\](?:core-js|@babel|tslib|web-animations-js|web-streams-polyfill|whatwg-url)[/\\]/,
293
+ /[\\/]node_modules[/\\](?:core-js|@babel|tslib|web-animations-js|web-streams-polyfill|whatwg-url)[/\\]/,
301
294
  ],
302
295
  use: [
303
296
  {
@@ -118,7 +118,7 @@ function buildServePath(options, logger) {
118
118
  servePath = defaultPath || '';
119
119
  }
120
120
  if (servePath.endsWith('/')) {
121
- servePath = servePath.substr(0, servePath.length - 1);
121
+ servePath = servePath.slice(0, -1);
122
122
  }
123
123
  if (!servePath.startsWith('/')) {
124
124
  servePath = `/${servePath}`;
@@ -98,16 +98,14 @@ function getStylesConfig(wco) {
98
98
  wco.logger.warn('Stylus usage is deprecated and will be removed in a future major version. ' +
99
99
  'To opt-out of the deprecated behaviour, please migrate to another stylesheet language.');
100
100
  }
101
- const sassImplementation = getSassImplementation();
102
- if (sassImplementation instanceof sass_service_1.SassWorkerImplementation) {
103
- extraPlugins.push({
104
- apply(compiler) {
105
- compiler.hooks.shutdown.tap('sass-worker', () => {
106
- sassImplementation === null || sassImplementation === void 0 ? void 0 : sassImplementation.close();
107
- });
108
- },
109
- });
110
- }
101
+ const sassImplementation = new sass_service_1.SassWorkerImplementation();
102
+ extraPlugins.push({
103
+ apply(compiler) {
104
+ compiler.hooks.shutdown.tap('sass-worker', () => {
105
+ sassImplementation.close();
106
+ });
107
+ },
108
+ });
111
109
  const assetNameTemplate = (0, helpers_1.assetNameTemplateFactory)(hashFormat);
112
110
  const extraPostcssPlugins = [];
113
111
  // Attempt to setup Tailwind CSS
@@ -155,7 +153,7 @@ function getStylesConfig(wco) {
155
153
  : undefined,
156
154
  plugins: [
157
155
  postcssImports({
158
- resolve: (url) => (url.startsWith('~') ? url.substr(1) : url),
156
+ resolve: (url) => (url.startsWith('~') ? url.slice(1) : url),
159
157
  load: (filename) => {
160
158
  return new Promise((resolve, reject) => {
161
159
  loader.fs.readFile(filename, (err, data) => {
@@ -375,12 +373,3 @@ function getStylesConfig(wco) {
375
373
  };
376
374
  }
377
375
  exports.getStylesConfig = getStylesConfig;
378
- function getSassImplementation() {
379
- const { webcontainer } = process.versions;
380
- // When `webcontainer` is a truthy it means that we are running in a StackBlitz webcontainer.
381
- // `SassWorkerImplementation` uses `receiveMessageOnPort` Node.js `worker_thread` API to ensure sync behavior which is ~2x faster.
382
- // However, it is non trivial to support this in a webcontainer and while slower we choose to use `dart-sass`
383
- // which in Webpack uses the slower async path.
384
- // We should periodically check with StackBlitz folks (Mark Whitfeld / Dominic Elm) to determine if this workaround is still needed.
385
- return webcontainer ? require('sass') : new sass_service_1.SassWorkerImplementation();
386
- }
@@ -40,10 +40,9 @@ export declare class NgBuildAnalyticsPlugin {
40
40
  protected _projectRoot: string;
41
41
  protected _analytics: analytics.Analytics;
42
42
  protected _category: string;
43
- private aotEnabled;
44
43
  protected _built: boolean;
45
44
  protected _stats: AnalyticsBuildStats;
46
- constructor(_projectRoot: string, _analytics: analytics.Analytics, _category: string, aotEnabled: boolean);
45
+ constructor(_projectRoot: string, _analytics: analytics.Analytics, _category: string);
47
46
  protected _reset(): void;
48
47
  protected _getMetrics(stats: Stats): (string | number)[];
49
48
  protected _getDimensions(): (string | number | boolean)[];
@@ -73,11 +73,10 @@ class AnalyticsBuildStats {
73
73
  * Analytics plugin that reports the analytics we want from the CLI.
74
74
  */
75
75
  class NgBuildAnalyticsPlugin {
76
- constructor(_projectRoot, _analytics, _category, aotEnabled) {
76
+ constructor(_projectRoot, _analytics, _category) {
77
77
  this._projectRoot = _projectRoot;
78
78
  this._analytics = _analytics;
79
79
  this._category = _category;
80
- this.aotEnabled = aotEnabled;
81
80
  this._built = false;
82
81
  this._stats = new AnalyticsBuildStats();
83
82
  }
@@ -108,7 +107,6 @@ class NgBuildAnalyticsPlugin {
108
107
  // Adding commas before and after so the regex are easier to define filters.
109
108
  dimensions[core_1.analytics.NgCliAnalyticsDimensions.BuildErrors] = `,${this._stats.errors.join()},`;
110
109
  }
111
- dimensions[core_1.analytics.NgCliAnalyticsDimensions.AotEnabled] = this.aotEnabled;
112
110
  return dimensions;
113
111
  }
114
112
  _reportBuildMetrics(stats) {
@@ -52,9 +52,10 @@ class CssOptimizerPlugin {
52
52
  const cachedOutput = await cacheItem.getPromise();
53
53
  if (cachedOutput) {
54
54
  await this.addWarnings(compilation, cachedOutput.warnings);
55
- compilation.updateAsset(name, cachedOutput.source, {
55
+ compilation.updateAsset(name, cachedOutput.source, (assetInfo) => ({
56
+ ...assetInfo,
56
57
  minimized: true,
57
- });
58
+ }));
58
59
  continue;
59
60
  }
60
61
  }
@@ -65,7 +66,10 @@ class CssOptimizerPlugin {
65
66
  const optimizedAsset = map
66
67
  ? new SourceMapSource(code, name, map)
67
68
  : new OriginalSource(code, name);
68
- compilation.updateAsset(name, optimizedAsset, { minimized: true });
69
+ compilation.updateAsset(name, optimizedAsset, (assetInfo) => ({
70
+ ...assetInfo,
71
+ minimized: true,
72
+ }));
69
73
  await (cacheItem === null || cacheItem === void 0 ? void 0 : cacheItem.storePromise({
70
74
  source: optimizedAsset,
71
75
  warnings,
@@ -28,9 +28,9 @@ export declare class EsbuildExecutor implements Pick<typeof import('esbuild'), '
28
28
  /**
29
29
  * Determines whether the native variant of esbuild can be used on the current platform.
30
30
  *
31
- * @returns True, if the native variant of esbuild is support; False, if the WASM variant is required.
31
+ * @returns A promise which resolves to `true`, if the native variant of esbuild is support or `false`, if the WASM variant is required.
32
32
  */
33
- static hasNativeSupport(): boolean;
33
+ static hasNativeSupport(): Promise<boolean>;
34
34
  /**
35
35
  * Initializes the esbuild transform and format messages functions.
36
36
  *
@@ -31,8 +31,6 @@ var __importStar = (this && this.__importStar) || function (mod) {
31
31
  };
32
32
  Object.defineProperty(exports, "__esModule", { value: true });
33
33
  exports.EsbuildExecutor = void 0;
34
- const child_process_1 = require("child_process");
35
- const path = __importStar(require("path"));
36
34
  /**
37
35
  * Provides the ability to execute esbuild regardless of the current platform's support
38
36
  * for using the native variant of esbuild. The native variant will be preferred (assuming
@@ -57,22 +55,14 @@ class EsbuildExecutor {
57
55
  /**
58
56
  * Determines whether the native variant of esbuild can be used on the current platform.
59
57
  *
60
- * @returns True, if the native variant of esbuild is support; False, if the WASM variant is required.
58
+ * @returns A promise which resolves to `true`, if the native variant of esbuild is support or `false`, if the WASM variant is required.
61
59
  */
62
- static hasNativeSupport() {
60
+ static async hasNativeSupport() {
63
61
  // Try to use native variant to ensure it is functional for the platform.
64
- // Spawning a separate esbuild check process is used to determine if the native
65
- // variant is viable. If check fails, the WASM variant is initialized instead.
66
- // Attempting to call one of the native esbuild functions is not a viable test
67
- // currently since esbuild spawn errors are currently not propagated through the
68
- // call stack for the esbuild function. If this limitation is removed in the future
69
- // then the separate process spawn check can be removed in favor of a direct function
70
- // call check.
71
62
  try {
72
- const { status, error } = (0, child_process_1.spawnSync)(process.execPath, [
73
- path.join(__dirname, '../../../esbuild-check.js'),
74
- ]);
75
- return status === 0 && error === undefined;
63
+ const { formatMessages } = await Promise.resolve().then(() => __importStar(require('esbuild')));
64
+ await formatMessages([], { kind: 'error' });
65
+ return true;
76
66
  }
77
67
  catch {
78
68
  return false;
@@ -88,7 +78,7 @@ class EsbuildExecutor {
88
78
  return;
89
79
  }
90
80
  // If the WASM variant was preferred at class construction or native is not supported, use WASM
91
- if (this.alwaysUseWasm || !EsbuildExecutor.hasNativeSupport()) {
81
+ if (this.alwaysUseWasm || !(await EsbuildExecutor.hasNativeSupport())) {
92
82
  await this.useWasm();
93
83
  this.initialized = true;
94
84
  return;
@@ -61,9 +61,10 @@ class JavaScriptOptimizerPlugin {
61
61
  cacheItem = cache.getItemCache(name, eTag);
62
62
  const cachedOutput = await cacheItem.getPromise();
63
63
  if (cachedOutput) {
64
- compilation.updateAsset(name, cachedOutput.source, {
64
+ compilation.updateAsset(name, cachedOutput.source, (assetInfo) => ({
65
+ ...assetInfo,
65
66
  minimized: true,
66
- });
67
+ }));
67
68
  continue;
68
69
  }
69
70
  }
@@ -110,7 +111,7 @@ class JavaScriptOptimizerPlugin {
110
111
  // Perform a single native esbuild support check.
111
112
  // This removes the need for each worker to perform the check which would
112
113
  // otherwise require spawning a separate process per worker.
113
- alwaysUseWasm: !esbuild_executor_1.EsbuildExecutor.hasNativeSupport(),
114
+ alwaysUseWasm: !(await esbuild_executor_1.EsbuildExecutor.hasNativeSupport()),
114
115
  };
115
116
  // Sort scripts so larger scripts start first - worker pool uses a FIFO queue
116
117
  scriptsToOptimize.sort((a, b) => a.code.length - b.code.length);
@@ -137,7 +138,10 @@ class JavaScriptOptimizerPlugin {
137
138
  const optimizedAsset = map
138
139
  ? new SourceMapSource(code, name, map)
139
140
  : new OriginalSource(code, name);
140
- compilation.updateAsset(name, optimizedAsset, { minimized: true });
141
+ compilation.updateAsset(name, optimizedAsset, (assetInfo) => ({
142
+ ...assetInfo,
143
+ minimized: true,
144
+ }));
141
145
  return cacheItem === null || cacheItem === void 0 ? void 0 : cacheItem.storePromise({
142
146
  source: optimizedAsset,
143
147
  });
@@ -70,7 +70,7 @@ function default_1(options) {
70
70
  // If starts with a caret, remove and return remainder
71
71
  // this supports bypassing asset processing
72
72
  if (inputUrl.startsWith('^')) {
73
- return inputUrl.substr(1);
73
+ return inputUrl.slice(1);
74
74
  }
75
75
  const cacheKey = path.resolve(context, inputUrl);
76
76
  const cachedUrl = resourceCache.get(cacheKey);
@@ -78,7 +78,7 @@ function default_1(options) {
78
78
  return cachedUrl;
79
79
  }
80
80
  if (inputUrl.startsWith('~')) {
81
- inputUrl = inputUrl.substr(1);
81
+ inputUrl = inputUrl.slice(1);
82
82
  }
83
83
  const { pathname, hash, search } = url.parse(inputUrl.replace(/\\/g, '/'));
84
84
  const resolver = (file, base) => new Promise((resolve, reject) => {
@@ -31,9 +31,10 @@ class TransferSizePlugin {
31
31
  }
32
32
  actions.push(brotliCompressAsync(scriptAsset.source.source())
33
33
  .then((result) => {
34
- compilation.updateAsset(assetName, (s) => s, {
34
+ compilation.updateAsset(assetName, (s) => s, (assetInfo) => ({
35
+ ...assetInfo,
35
36
  estimatedTransferSize: result.length,
36
- });
37
+ }));
37
38
  })
38
39
  .catch((error) => {
39
40
  compilation.warnings.push(new compilation.compiler.webpack.WebpackError(`Unable to calculate estimated transfer size for '${assetName}'. Reason: ${error.message}`));
package/esbuild-check.js DELETED
@@ -1,16 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
-
9
- // If the platform does not support the native variant of esbuild, this will crash.
10
- // This script can then be spawned by the CLI to determine if native usage is supported.
11
- require('esbuild')
12
- .formatMessages([], { kind: 'error ' })
13
- .then(
14
- () => {},
15
- () => {},
16
- );