@@ -9,13 +9,19 @@ import { tags } from '@angular-devkit/core'; // tslint:disable-line:no-implicit
99import { createTypescriptContext , transformTypescript } from './ast_helpers' ;
1010import { replaceResources } from './replace_resources' ;
1111
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 ) ;
1420 const getTypeChecker = ( ) => program . getTypeChecker ( ) ;
1521 const transformer = replaceResources (
1622 ( ) => shouldTransform , getTypeChecker , directTemplateLoading ) ;
1723
18- return transformTypescript ( input , [ transformer ] ) ;
24+ return transformTypescript ( input , [ transformer ] , program , compilerHost ) ;
1925}
2026
2127// tslint:disable-next-line:no-big-function
@@ -58,6 +64,49 @@ describe('@ngtools/webpack transformers', () => {
5864 expect ( tags . oneLine `${ result } ` ) . toEqual ( tags . oneLine `${ output } ` ) ;
5965 } ) ;
6066
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+
61110 it ( 'should not replace resources when directTemplateLoading is false' , ( ) => {
62111 const input = tags . stripIndent `
63112 import { Component } from '@angular/core';
0 commit comments