@ngtools/webpack 17.0.0-rc.2 → 17.0.0-rc.4
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 +2 -2
- package/src/ivy/plugin.d.ts +1 -0
- package/src/ivy/transformation.d.ts +1 -0
- package/src/ivy/transformation.js +3 -2
- package/src/transformers/find_image_domains.js +30 -4
- package/src/transformers/remove-ivy-jit-support-calls.d.ts +1 -1
- package/src/transformers/remove-ivy-jit-support-calls.js +7 -1
- package/src/transformers/replace_resources.js +4 -0
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@ngtools/webpack",
|
3
|
-
"version": "17.0.0-rc.
|
3
|
+
"version": "17.0.0-rc.4",
|
4
4
|
"description": "Webpack plugin that AoT compiles your Angular components and modules.",
|
5
5
|
"main": "./src/index.js",
|
6
6
|
"typings": "src/index.d.ts",
|
@@ -31,7 +31,7 @@
|
|
31
31
|
"webpack": "^5.54.0"
|
32
32
|
},
|
33
33
|
"engines": {
|
34
|
-
"node": "
|
34
|
+
"node": "^18.13.0 || >=20.9.0",
|
35
35
|
"npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
|
36
36
|
"yarn": ">= 1.13.0"
|
37
37
|
}
|
package/src/ivy/plugin.d.ts
CHANGED
@@ -9,6 +9,7 @@ import * as ts from 'typescript';
|
|
9
9
|
export declare function createAotTransformers(builder: ts.BuilderProgram, options: {
|
10
10
|
emitClassMetadata?: boolean;
|
11
11
|
emitNgModuleScope?: boolean;
|
12
|
+
emitSetClassDebugInfo?: boolean;
|
12
13
|
}, imageDomains: Set<string>): ts.CustomTransformers;
|
13
14
|
export declare function createJitTransformers(builder: ts.BuilderProgram, compilerCli: typeof import('@angular/compiler-cli'), options: {
|
14
15
|
inlineStyleFileExtension?: string;
|
@@ -44,9 +44,10 @@ function createAotTransformers(builder, options, imageDomains) {
|
|
44
44
|
};
|
45
45
|
const removeClassMetadata = !options.emitClassMetadata;
|
46
46
|
const removeNgModuleScope = !options.emitNgModuleScope;
|
47
|
-
|
47
|
+
const removeSetClassDebugInfo = !options.emitSetClassDebugInfo;
|
48
|
+
if (removeClassMetadata || removeNgModuleScope || removeSetClassDebugInfo) {
|
48
49
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
49
|
-
transformers.before.push((0, remove_ivy_jit_support_calls_1.removeIvyJitSupportCalls)(removeClassMetadata, removeNgModuleScope, getTypeChecker));
|
50
|
+
transformers.before.push((0, remove_ivy_jit_support_calls_1.removeIvyJitSupportCalls)(removeClassMetadata, removeNgModuleScope, removeSetClassDebugInfo, getTypeChecker));
|
50
51
|
}
|
51
52
|
return transformers;
|
52
53
|
}
|
@@ -93,7 +93,7 @@ function findImageDomains(imageDomains) {
|
|
93
93
|
}
|
94
94
|
return node;
|
95
95
|
}
|
96
|
-
function
|
96
|
+
function findProvidersAssignment(node) {
|
97
97
|
if (ts.isPropertyAssignment(node)) {
|
98
98
|
if (ts.isIdentifier(node.name) && node.name.escapedText === 'providers') {
|
99
99
|
ts.visitEachChild(node.initializer, findImageLoaders, context);
|
@@ -101,18 +101,44 @@ function findImageDomains(imageDomains) {
|
|
101
101
|
}
|
102
102
|
return node;
|
103
103
|
}
|
104
|
+
function findFeaturesAssignment(node) {
|
105
|
+
if (ts.isPropertyAssignment(node)) {
|
106
|
+
if (ts.isIdentifier(node.name) &&
|
107
|
+
node.name.escapedText === 'features' &&
|
108
|
+
ts.isArrayLiteralExpression(node.initializer)) {
|
109
|
+
const providerElement = node.initializer.elements.find(isProvidersFeatureElement);
|
110
|
+
if (providerElement &&
|
111
|
+
ts.isCallExpression(providerElement) &&
|
112
|
+
providerElement.arguments[0]) {
|
113
|
+
ts.visitEachChild(providerElement.arguments[0], findImageLoaders, context);
|
114
|
+
}
|
115
|
+
}
|
116
|
+
}
|
117
|
+
return node;
|
118
|
+
}
|
119
|
+
function isProvidersFeatureElement(node) {
|
120
|
+
return (ts.isCallExpression(node) &&
|
121
|
+
ts.isPropertyAccessExpression(node.expression) &&
|
122
|
+
ts.isIdentifier(node.expression.expression) &&
|
123
|
+
node.expression.expression.escapedText === 'i0' &&
|
124
|
+
ts.isIdentifier(node.expression.name) &&
|
125
|
+
node.expression.name.escapedText === 'ɵɵProvidersFeature');
|
126
|
+
}
|
104
127
|
function findPropertyDeclaration(node) {
|
105
128
|
if (ts.isPropertyDeclaration(node) &&
|
106
129
|
ts.isIdentifier(node.name) &&
|
107
|
-
node.name.escapedText === 'ɵinj' &&
|
108
130
|
node.initializer &&
|
109
131
|
ts.isCallExpression(node.initializer) &&
|
110
132
|
node.initializer.arguments[0]) {
|
111
|
-
|
133
|
+
if (node.name.escapedText === 'ɵinj') {
|
134
|
+
ts.visitEachChild(node.initializer.arguments[0], findProvidersAssignment, context);
|
135
|
+
}
|
136
|
+
else if (node.name.escapedText === 'ɵcmp') {
|
137
|
+
ts.visitEachChild(node.initializer.arguments[0], findFeaturesAssignment, context);
|
138
|
+
}
|
112
139
|
}
|
113
140
|
return node;
|
114
141
|
}
|
115
|
-
// Continue traversal if node is ClassDeclaration and has name "AppModule"
|
116
142
|
function findClassDeclaration(node) {
|
117
143
|
if (ts.isClassDeclaration(node)) {
|
118
144
|
ts.visitEachChild(node, findPropertyDeclaration, context);
|
@@ -6,4 +6,4 @@
|
|
6
6
|
* found in the LICENSE file at https://angular.io/license
|
7
7
|
*/
|
8
8
|
import * as ts from 'typescript';
|
9
|
-
export declare function removeIvyJitSupportCalls(classMetadata: boolean, ngModuleScope: boolean, getTypeChecker: () => ts.TypeChecker): ts.TransformerFactory<ts.SourceFile>;
|
9
|
+
export declare function removeIvyJitSupportCalls(classMetadata: boolean, ngModuleScope: boolean, debugInfo: boolean, getTypeChecker: () => ts.TypeChecker): ts.TransformerFactory<ts.SourceFile>;
|
@@ -33,7 +33,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
33
|
exports.removeIvyJitSupportCalls = void 0;
|
34
34
|
const ts = __importStar(require("typescript"));
|
35
35
|
const elide_imports_1 = require("./elide_imports");
|
36
|
-
function removeIvyJitSupportCalls(classMetadata, ngModuleScope, getTypeChecker) {
|
36
|
+
function removeIvyJitSupportCalls(classMetadata, ngModuleScope, debugInfo, getTypeChecker) {
|
37
37
|
return (context) => {
|
38
38
|
const removedNodes = [];
|
39
39
|
const visitNode = (node) => {
|
@@ -55,6 +55,12 @@ function removeIvyJitSupportCalls(classMetadata, ngModuleScope, getTypeChecker)
|
|
55
55
|
return undefined;
|
56
56
|
}
|
57
57
|
}
|
58
|
+
if (debugInfo &&
|
59
|
+
ts.isBinaryExpression(innerExpression) &&
|
60
|
+
isIvyPrivateCallExpression(innerExpression.right, 'ɵsetClassDebugInfo')) {
|
61
|
+
removedNodes.push(innerExpression);
|
62
|
+
return undefined;
|
63
|
+
}
|
58
64
|
}
|
59
65
|
return ts.visitEachChild(node, visitNode, context);
|
60
66
|
};
|
@@ -146,6 +146,10 @@ function transformInlineStyleLiteral(node, nodeFactory, isInlineStyle, inlineSty
|
|
146
146
|
if (!ts.isStringLiteralLike(node)) {
|
147
147
|
return node;
|
148
148
|
}
|
149
|
+
// Don't transform empty strings as PostCSS will choke on them. No work to do anyways.
|
150
|
+
if (node.text === '') {
|
151
|
+
return node;
|
152
|
+
}
|
149
153
|
if (!isInlineStyle) {
|
150
154
|
const url = getResourceUrl(node);
|
151
155
|
return url
|