Skip to content

Commit 8ce8e4e

Browse files
committed
refactor(@ngtools/webpack): remove deprecated inlineStyleMimeType option
BREAKING CHANGE: Deprecated `inlineStyleMimeType` option has been removed from `AngularWebpackPluginOptions`. Use `inlineStyleFileExtension` instead.
1 parent 76d6d88 commit 8ce8e4e

File tree

7 files changed

+2
-76
lines changed

7 files changed

+2
-76
lines changed

goldens/public-api/ngtools/webpack/src/index.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,6 @@ export interface AngularWebpackPluginOptions {
3838
fileReplacements: Record<string, string>;
3939
// (undocumented)
4040
inlineStyleFileExtension?: string;
41-
// @deprecated (undocumented)
42-
inlineStyleMimeType?: string;
4341
// (undocumented)
4442
jitMode: boolean;
4543
// (undocumented)

packages/ngtools/webpack/src/ivy/host.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ export function augmentHostWithResources(
2020
resourceLoader: WebpackResourceLoader,
2121
options: {
2222
directTemplateLoading?: boolean;
23-
inlineStyleMimeType?: string;
2423
inlineStyleFileExtension?: string;
2524
} = {},
2625
) {
@@ -60,10 +59,9 @@ export function augmentHostWithResources(
6059
return null;
6160
}
6261

63-
if (options.inlineStyleMimeType || options.inlineStyleFileExtension) {
62+
if (options.inlineStyleFileExtension) {
6463
const content = await resourceLoader.process(
6564
data,
66-
options.inlineStyleMimeType,
6765
options.inlineStyleFileExtension,
6866
context.type,
6967
context.containingFile,

packages/ngtools/webpack/src/ivy/plugin.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,6 @@ export interface AngularWebpackPluginOptions {
5151
emitClassMetadata: boolean;
5252
emitNgModuleScope: boolean;
5353
jitMode: boolean;
54-
/** @deprecated use `inlineStyleFileExtension` instead. */
55-
inlineStyleMimeType?: string;
5654
inlineStyleFileExtension?: string;
5755
}
5856

@@ -237,7 +235,6 @@ export class AngularWebpackPlugin {
237235
resourceLoader.update(compilation, changedFiles);
238236
augmentHostWithResources(host, resourceLoader, {
239237
directTemplateLoading: this.pluginOptions.directTemplateLoading,
240-
inlineStyleMimeType: this.pluginOptions.inlineStyleMimeType,
241238
inlineStyleFileExtension: this.pluginOptions.inlineStyleFileExtension,
242239
});
243240

packages/ngtools/webpack/src/ivy/transformation.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ export function createJitTransformers(
3838
builder: ts.BuilderProgram,
3939
options: {
4040
directTemplateLoading?: boolean;
41-
inlineStyleMimeType?: string;
4241
inlineStyleFileExtension?: string;
4342
},
4443
): ts.CustomTransformers {
@@ -50,7 +49,6 @@ export function createJitTransformers(
5049
() => true,
5150
getTypeChecker,
5251
options.directTemplateLoading,
53-
options.inlineStyleMimeType,
5452
options.inlineStyleFileExtension,
5553
),
5654
constructorParametersDownlevelTransform(builder.getProgram()),

packages/ngtools/webpack/src/resource_loader.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,6 @@ export class WebpackResourceLoader {
102102
private async _compile(
103103
filePath?: string,
104104
data?: string,
105-
mimeType?: string,
106105
fileExtension?: string,
107106
resourceType?: 'style' | 'template',
108107
containingFile?: string,
@@ -169,10 +168,6 @@ export class WebpackResourceLoader {
169168
resourceData.resource = filePath;
170169
}
171170

172-
if (mimeType) {
173-
resourceData.data.mimetype = mimeType;
174-
}
175-
176171
return true;
177172
});
178173
NormalModule.getCompilationHooks(compilation)
@@ -334,7 +329,6 @@ export class WebpackResourceLoader {
334329

335330
async process(
336331
data: string,
337-
mimeType: string | undefined,
338332
fileExtension: string | undefined,
339333
resourceType: 'template' | 'style',
340334
containingFile?: string,
@@ -346,7 +340,6 @@ export class WebpackResourceLoader {
346340
const compilationResult = await this._compile(
347341
undefined,
348342
data,
349-
mimeType,
350343
fileExtension,
351344
resourceType,
352345
containingFile,

packages/ngtools/webpack/src/transformers/replace_resources.ts

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,8 @@ export function replaceResources(
1414
shouldTransform: (fileName: string) => boolean,
1515
getTypeChecker: () => ts.TypeChecker,
1616
directTemplateLoading = false,
17-
inlineStyleMimeType?: string,
1817
inlineStyleFileExtension?: string,
1918
): ts.TransformerFactory<ts.SourceFile> {
20-
if (inlineStyleMimeType && !/^text\/[-.\w]+$/.test(inlineStyleMimeType)) {
21-
throw new Error('Invalid inline style MIME type.');
22-
}
23-
2419
return (context: ts.TransformationContext) => {
2520
const typeChecker = getTypeChecker();
2621
const resourceImportDeclarations: ts.ImportDeclaration[] = [];
@@ -38,7 +33,6 @@ export function replaceResources(
3833
directTemplateLoading,
3934
resourceImportDeclarations,
4035
moduleKind,
41-
inlineStyleMimeType,
4236
inlineStyleFileExtension,
4337
)
4438
: node,
@@ -90,7 +84,6 @@ function visitDecorator(
9084
directTemplateLoading: boolean,
9185
resourceImportDeclarations: ts.ImportDeclaration[],
9286
moduleKind?: ts.ModuleKind,
93-
inlineStyleMimeType?: string,
9487
inlineStyleFileExtension?: string,
9588
): ts.Decorator {
9689
if (!isComponentDecorator(node, typeChecker)) {
@@ -121,7 +114,6 @@ function visitDecorator(
121114
directTemplateLoading,
122115
resourceImportDeclarations,
123116
moduleKind,
124-
inlineStyleMimeType,
125117
inlineStyleFileExtension,
126118
)
127119
: node,
@@ -155,7 +147,6 @@ function visitComponentMetadata(
155147
directTemplateLoading: boolean,
156148
resourceImportDeclarations: ts.ImportDeclaration[],
157149
moduleKind?: ts.ModuleKind,
158-
inlineStyleMimeType?: string,
159150
inlineStyleFileExtension?: string,
160151
): ts.ObjectLiteralElementLike | undefined {
161152
if (!ts.isPropertyAssignment(node) || ts.isComputedPropertyName(node.name)) {
@@ -205,10 +196,7 @@ function visitComponentMetadata(
205196

206197
let url;
207198
if (isInlineStyle) {
208-
if (inlineStyleMimeType) {
209-
const data = Buffer.from(node.text).toString('base64');
210-
url = `data:${inlineStyleMimeType};charset=utf-8;base64,${data}`;
211-
} else if (inlineStyleFileExtension) {
199+
if (inlineStyleFileExtension) {
212200
const data = Buffer.from(node.text).toString('base64');
213201
const containingFile = node.getSourceFile().fileName;
214202
url = `${containingFile}.${inlineStyleFileExtension}!=!${InlineAngularResourceLoaderPath}?data=${encodeURIComponent(

packages/ngtools/webpack/src/transformers/replace_resources_spec.ts

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ function transform(
1818
directTemplateLoading = true,
1919
importHelpers = true,
2020
module: ts.ModuleKind = ts.ModuleKind.ES2020,
21-
inlineStyleMimeType?: string,
2221
) {
2322
const { program, compilerHost } = createTypescriptContext(input, undefined, undefined, {
2423
importHelpers,
@@ -29,7 +28,6 @@ function transform(
2928
() => shouldTransform,
3029
getTypeChecker,
3130
directTemplateLoading,
32-
inlineStyleMimeType,
3331
);
3432

3533
return transformTypescript(input, [transformer], program, compilerHost);
@@ -226,50 +224,6 @@ describe('@ngtools/webpack transformers', () => {
226224
expect(tags.oneLine`${result}`).toEqual(tags.oneLine`${output}`);
227225
});
228226

229-
it('should create data URIs for inline styles when inlineStyleMimeType is set', () => {
230-
const input = tags.stripIndent`
231-
import { Component } from '@angular/core';
232-
233-
@Component({
234-
selector: 'app-root',
235-
templateUrl: './app.component.html',
236-
styles: ['a { color: red }'],
237-
})
238-
export class AppComponent {
239-
title = 'app';
240-
}
241-
`;
242-
const output = tags.stripIndent`
243-
import { __decorate } from "tslib";
244-
import __NG_CLI_RESOURCE__0 from "!${DirectAngularResourceLoaderPath}!./app.component.html";
245-
import __NG_CLI_RESOURCE__1 from "data:text/css;charset=utf-8;base64,YSB7IGNvbG9yOiByZWQgfQ==";
246-
import { Component } from '@angular/core';
247-
248-
let AppComponent = class AppComponent {
249-
constructor() {
250-
this.title = 'app';
251-
}
252-
};
253-
AppComponent = __decorate([
254-
Component({
255-
selector: 'app-root',
256-
template: __NG_CLI_RESOURCE__0,
257-
styles: [__NG_CLI_RESOURCE__1]
258-
})
259-
], AppComponent);
260-
export { AppComponent };
261-
`;
262-
263-
const result = transform(input, true, true, true, ts.ModuleKind.ESNext, 'text/css');
264-
expect(tags.oneLine`${result}`).toEqual(tags.oneLine`${output}`);
265-
});
266-
267-
it('should throw error if inlineStyleMimeType value has invalid format', () => {
268-
expect(() =>
269-
transform('', true, true, true, ts.ModuleKind.ESNext, 'asdfsd;sdfsd//sdfsdf'),
270-
).toThrowError('Invalid inline style MIME type.');
271-
});
272-
273227
it('should replace resources with backticks', () => {
274228
const input = `
275229
import { Component } from '@angular/core';

0 commit comments

Comments
 (0)