@@ -9,13 +9,19 @@ import { tags } from '@angular-devkit/core'; // tslint:disable-line:no-implicit
9
9
import { createTypescriptContext , transformTypescript } from './ast_helpers' ;
10
10
import { replaceResources } from './replace_resources' ;
11
11
12
- function transform ( input : string , shouldTransform = true , directTemplateLoading = true ) {
13
- const { program } = createTypescriptContext ( input ) ;
12
+ function transform (
13
+ input : string ,
14
+ shouldTransform = true ,
15
+ directTemplateLoading = true ,
16
+ importHelpers = true ,
17
+ ) {
18
+ const { program, compilerHost } =
19
+ createTypescriptContext ( input , undefined , undefined , importHelpers ) ;
14
20
const getTypeChecker = ( ) => program . getTypeChecker ( ) ;
15
21
const transformer = replaceResources (
16
22
( ) => shouldTransform , getTypeChecker , directTemplateLoading ) ;
17
23
18
- return transformTypescript ( input , [ transformer ] ) ;
24
+ return transformTypescript ( input , [ transformer ] , program , compilerHost ) ;
19
25
}
20
26
21
27
// tslint:disable-next-line:no-big-function
@@ -58,6 +64,49 @@ describe('@ngtools/webpack transformers', () => {
58
64
expect ( tags . oneLine `${ result } ` ) . toEqual ( tags . oneLine `${ output } ` ) ;
59
65
} ) ;
60
66
67
+ it ( `should replace resources and add helper when 'importHelpers' is false` , ( ) => {
68
+ const input = tags . stripIndent `
69
+ import { Component } from '@angular/core';
70
+
71
+ @Component({
72
+ selector: 'app-root',
73
+ templateUrl: './app.component.html',
74
+ styleUrls: ['./app.component.css', './app.component.2.css']
75
+ })
76
+ export class AppComponent {
77
+ title = 'app';
78
+ }
79
+ ` ;
80
+ const output = tags . stripIndent `
81
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null
82
+ ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object"
83
+ && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
84
+ else for (var i = decorators.length - 1; i >= 0; i--)
85
+ if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; };
86
+
87
+ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; };
88
+
89
+ import { Component } from '@angular/core';
90
+
91
+ let AppComponent = class AppComponent {
92
+ constructor() {
93
+ this.title = 'app';
94
+ }
95
+ };
96
+ AppComponent = __decorate([
97
+ Component({
98
+ selector: 'app-root',
99
+ template: __importDefault(require("!raw-loader!./app.component.html")).default,
100
+ styles: [__importDefault(require("./app.component.css")).default, __importDefault(require("./app.component.2.css")).default]
101
+ })
102
+ ], AppComponent);
103
+ export { AppComponent };
104
+ ` ;
105
+
106
+ const result = transform ( input , undefined , undefined , false ) ;
107
+ expect ( tags . oneLine `${ result } ` ) . toEqual ( tags . oneLine `${ output } ` ) ;
108
+ } ) ;
109
+
61
110
it ( 'should not replace resources when directTemplateLoading is false' , ( ) => {
62
111
const input = tags . stripIndent `
63
112
import { Component } from '@angular/core';
0 commit comments