Skip to content

Commit ed784bd

Browse files
authored
Component governance updates (#3011)
* Replaces angular2-template-loader Uses a local template loader without vulnerable dependencies. * Updates @babel/traverse to 7.23.6
1 parent a842a7c commit ed784bd

6 files changed

Lines changed: 112 additions & 531 deletions

File tree

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/**
2+
* Replacement for [angular2-template-loader](https://npmjs.org/package/angular2-template-loader) without `loader-utils`.
3+
*/
4+
5+
const templateUrlRegex = /templateUrl\s*:(\s*['"`](.*?)['"`]\s*([,}]))/gm;
6+
const stylesRegex = /styleUrls *:(\s*\[[^\]]*?\])/g;
7+
const stringRegex = /(['`"])((?:[^\\]\\\1|.)*?)\1/g;
8+
9+
function replaceStringsWithRequires(string) {
10+
return string.replace(stringRegex, function (match, quote, url) {
11+
if (url.charAt(0) !== ".") {
12+
url = "./" + url;
13+
}
14+
return "require('" + url + "')";
15+
});
16+
}
17+
18+
module.exports = function (source, sourcemap) {
19+
this.cacheable && this.cacheable();
20+
21+
const newSource = source
22+
.replace(templateUrlRegex, function (match, url) {
23+
// replace: templateUrl: './path/to/template.html'
24+
// with: template: require('./path/to/template.html')
25+
return "template:" + replaceStringsWithRequires(url);
26+
})
27+
.replace(stylesRegex, function (match, urls) {
28+
// replace: stylesUrl: ['./foo.css', "./baz.css", "./index.component.css"]
29+
// with: styles: [require('./foo.css'), require("./baz.css"), require("./index.component.css")]
30+
return "styles:" + replaceStringsWithRequires(urls);
31+
});
32+
33+
if (this.callback) {
34+
this.callback(null, newSource, sourcemap);
35+
} else {
36+
return newSource;
37+
}
38+
};

desktop/config/webpack.config.test.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
const config = require("./webpack.config.base");
22
const { commonRules, defineEnv } = require("./webpack.common");
3-
const ForkTsCheckerWebpackPlugin = require("fork-ts-checker-webpack-plugin");
43
const ENV = "test";
54

65
// We need to remove the app entry from the default config as this is defined in karma
@@ -11,7 +10,6 @@ config.devtool = "inline-source-map";
1110
// Karma webpack doesn't support CommonChunkPlugin yet https://github.com/webpack-contrib/karma-webpack/issues/24
1211
config.plugins = [
1312
defineEnv(ENV),
14-
new ForkTsCheckerWebpackPlugin(),
1513
];
1614
config.module.rules = config.module.rules = [
1715
{
@@ -24,7 +22,7 @@ config.module.rules = config.module.rules = [
2422
transpileOnly: true
2523
},
2624
},
27-
"angular2-template-loader",
25+
require.resolve("./angular-template-loader"),
2826
],
2927
exclude: [/node_modules/, /\.node\.spec\.ts/], // node.spec.ts are to be run in node environment
3028
},

0 commit comments

Comments
 (0)