@angular-devkit/build-optimizer 0.803.0-rc.0 → 0.803.3

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,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular-devkit/build-optimizer",
3
- "version": "0.803.0-rc.0",
3
+ "version": "0.803.3",
4
4
  "description": "Angular Build Optimizer",
5
5
  "experimental": true,
6
6
  "main": "src/index.js",
@@ -3,3 +3,13 @@ export declare function collectDeepNodes<T extends ts.Node>(node: ts.Node, kind:
3
3
  export declare function addPureComment<T extends ts.Node>(node: T): T;
4
4
  export declare function hasPureComment(node: ts.Node): boolean;
5
5
  export declare function isHelperName(name: string): boolean;
6
+ /**
7
+ * In FESM's when not using `importHelpers` there might be multiple in the same file.
8
+ @example
9
+ ```
10
+ var __decorate$1 = '';
11
+ var __decorate$2 = '';
12
+ ```
13
+ * @returns Helper name without the '$' and number suffix or `undefined` if it's not a helper.
14
+ */
15
+ export declare function getCleanHelperName(name: string): string | undefined;
@@ -42,3 +42,21 @@ function isHelperName(name) {
42
42
  return tslibHelpers.has(name);
43
43
  }
44
44
  exports.isHelperName = isHelperName;
45
+ /**
46
+ * In FESM's when not using `importHelpers` there might be multiple in the same file.
47
+ @example
48
+ ```
49
+ var __decorate$1 = '';
50
+ var __decorate$2 = '';
51
+ ```
52
+ * @returns Helper name without the '$' and number suffix or `undefined` if it's not a helper.
53
+ */
54
+ function getCleanHelperName(name) {
55
+ const parts = name.split('$');
56
+ const cleanName = parts[0];
57
+ if (parts.length > 2 || (parts.length === 2 && isNaN(+parts[1]))) {
58
+ return undefined;
59
+ }
60
+ return isHelperName(cleanName) ? cleanName : undefined;
61
+ }
62
+ exports.getCleanHelperName = getCleanHelperName;
@@ -13,7 +13,7 @@ const ast_utils_1 = require("../helpers/ast-utils");
13
13
  * @deprecated From 0.9.0
14
14
  */
15
15
  function testImportTslib(content) {
16
- const regex = /var (__extends|__decorate|__metadata|__param) = \(.*\r?\n\s+(.*\r?\n)*\s*\};/;
16
+ const regex = /var (__extends|__decorate|__metadata|__param)(\$\d+)? = \(.*\r?\n\s+(.*\r?\n)*\s*\};/;
17
17
  return regex.test(content);
18
18
  }
19
19
  exports.testImportTslib = testImportTslib;
@@ -29,9 +29,11 @@ function getImportTslibTransformer() {
29
29
  const declarations = node.declarationList.declarations;
30
30
  if (declarations.length === 1 && ts.isIdentifier(declarations[0].name)) {
31
31
  const name = declarations[0].name.text;
32
- if (ast_utils_1.isHelperName(name)) {
32
+ const helperName = ast_utils_1.getCleanHelperName(name);
33
+ if (helperName) {
33
34
  // TODO: maybe add a few more checks, like checking the first part of the assignment.
34
- const tslibImport = createTslibImport(name, useRequire);
35
+ const alias = name === helperName ? undefined : name;
36
+ const tslibImport = createTslibImport(helperName, alias, useRequire);
35
37
  tslibImports.push(tslibImport);
36
38
  return undefined;
37
39
  }
@@ -52,19 +54,21 @@ function getImportTslibTransformer() {
52
54
  };
53
55
  }
54
56
  exports.getImportTslibTransformer = getImportTslibTransformer;
55
- function createTslibImport(name, useRequire = false) {
57
+ function createTslibImport(name, aliases, useRequire = false) {
56
58
  if (useRequire) {
57
59
  // Use `var __helper = /*@__PURE__*/ require("tslib").__helper`.
58
60
  const requireCall = ts.createCall(ts.createIdentifier('require'), undefined, [ts.createLiteral('tslib')]);
59
61
  const pureRequireCall = ts.addSyntheticLeadingComment(requireCall, ts.SyntaxKind.MultiLineCommentTrivia, '@__PURE__', false);
60
62
  const helperAccess = ts.createPropertyAccess(pureRequireCall, name);
61
- const variableDeclaration = ts.createVariableDeclaration(name, undefined, helperAccess);
63
+ const variableDeclaration = ts.createVariableDeclaration(aliases || name, undefined, helperAccess);
62
64
  const variableStatement = ts.createVariableStatement(undefined, [variableDeclaration]);
63
65
  return variableStatement;
64
66
  }
65
67
  else {
66
68
  // Use `import { __helper } from "tslib"`.
67
- const namedImports = ts.createNamedImports([ts.createImportSpecifier(undefined, ts.createIdentifier(name))]);
69
+ const namedImports = ts.createNamedImports([
70
+ ts.createImportSpecifier(aliases ? ts.createIdentifier(name) : undefined, ts.createIdentifier(aliases || name)),
71
+ ]);
68
72
  const importClause = ts.createImportClause(undefined, namedImports);
69
73
  const newNode = ts.createImportDeclaration(undefined, undefined, importClause, ts.createLiteral('tslib'));
70
74
  return newNode;
@@ -66,7 +66,7 @@ function findTopLevelFunctions(parentNode) {
66
66
  }
67
67
  else if (ts.isCallExpression(innerNode)) {
68
68
  let expression = innerNode.expression;
69
- if (ts.isIdentifier(expression) && ast_utils_1.isHelperName(expression.text)) {
69
+ if (ts.isIdentifier(expression) && ast_utils_1.getCleanHelperName(expression.text)) {
70
70
  return;
71
71
  }
72
72
  while (expression && ts.isParenthesizedExpression(expression)) {