@ngtools/webpack 17.0.0-next.0 → 17.0.0-next.3

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngtools/webpack",
3
- "version": "17.0.0-next.0",
3
+ "version": "17.0.0-next.3",
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",
@@ -37,20 +37,21 @@ function removeIvyJitSupportCalls(classMetadata, ngModuleScope, getTypeChecker)
37
37
  return (context) => {
38
38
  const removedNodes = [];
39
39
  const visitNode = (node) => {
40
- const innerStatement = ts.isExpressionStatement(node) && getIifeStatement(node);
41
- if (innerStatement) {
40
+ const innerExpression = ts.isExpressionStatement(node) ? getIifeExpression(node) : null;
41
+ if (innerExpression) {
42
42
  if (ngModuleScope &&
43
- ts.isBinaryExpression(innerStatement.expression) &&
44
- isIvyPrivateCallExpression(innerStatement.expression.right, 'ɵɵsetNgModuleScope')) {
45
- removedNodes.push(innerStatement);
43
+ ts.isBinaryExpression(innerExpression) &&
44
+ isIvyPrivateCallExpression(innerExpression.right, 'ɵɵsetNgModuleScope')) {
45
+ removedNodes.push(innerExpression);
46
46
  return undefined;
47
47
  }
48
48
  if (classMetadata) {
49
- const expression = ts.isBinaryExpression(innerStatement.expression)
50
- ? innerStatement.expression.right
51
- : innerStatement.expression;
52
- if (isIvyPrivateCallExpression(expression, 'ɵsetClassMetadata')) {
53
- removedNodes.push(innerStatement);
49
+ const expression = ts.isBinaryExpression(innerExpression)
50
+ ? innerExpression.right
51
+ : innerExpression;
52
+ if (isIvyPrivateCallExpression(expression, 'ɵsetClassMetadata') ||
53
+ isIvyPrivateCallExpression(expression, 'ɵsetClassMetadataAsync')) {
54
+ removedNodes.push(innerExpression);
54
55
  return undefined;
55
56
  }
56
57
  }
@@ -76,7 +77,7 @@ function removeIvyJitSupportCalls(classMetadata, ngModuleScope, getTypeChecker)
76
77
  }
77
78
  exports.removeIvyJitSupportCalls = removeIvyJitSupportCalls;
78
79
  // Each Ivy private call expression is inside an IIFE
79
- function getIifeStatement(exprStmt) {
80
+ function getIifeExpression(exprStmt) {
80
81
  const expression = exprStmt.expression;
81
82
  if (!expression || !ts.isCallExpression(expression) || expression.arguments.length !== 0) {
82
83
  return null;
@@ -86,9 +87,12 @@ function getIifeStatement(exprStmt) {
86
87
  return null;
87
88
  }
88
89
  const funExpr = parenExpr.expression.expression;
89
- if (!ts.isFunctionExpression(funExpr)) {
90
+ if (!ts.isFunctionExpression(funExpr) && !ts.isArrowFunction(funExpr)) {
90
91
  return null;
91
92
  }
93
+ if (!ts.isBlock(funExpr.body)) {
94
+ return funExpr.body;
95
+ }
92
96
  const innerStmts = funExpr.body.statements;
93
97
  if (innerStmts.length !== 1) {
94
98
  return null;
@@ -97,7 +101,7 @@ function getIifeStatement(exprStmt) {
97
101
  if (!ts.isExpressionStatement(innerExprStmt)) {
98
102
  return null;
99
103
  }
100
- return innerExprStmt;
104
+ return innerExprStmt.expression;
101
105
  }
102
106
  function isIvyPrivateCallExpression(expression, name) {
103
107
  // Now we're in the IIFE and have the inner expression statement. We can check if it matches
@@ -109,9 +113,9 @@ function isIvyPrivateCallExpression(expression, name) {
109
113
  if (!ts.isPropertyAccessExpression(propAccExpr)) {
110
114
  return false;
111
115
  }
112
- if (propAccExpr.name.text != name) {
116
+ if (propAccExpr.name.text !== name) {
113
117
  return false;
114
118
  }
115
119
  return true;
116
120
  }
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLWl2eS1qaXQtc3VwcG9ydC1jYWxscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25ndG9vbHMvd2VicGFjay9zcmMvdHJhbnNmb3JtZXJzL3JlbW92ZS1pdnktaml0LXN1cHBvcnQtY2FsbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCwrQ0FBaUM7QUFDakMsbURBQStDO0FBRS9DLFNBQWdCLHdCQUF3QixDQUN0QyxhQUFzQixFQUN0QixhQUFzQixFQUN0QixjQUFvQztJQUVwQyxPQUFPLENBQUMsT0FBaUMsRUFBRSxFQUFFO1FBQzNDLE1BQU0sWUFBWSxHQUFjLEVBQUUsQ0FBQztRQUVuQyxNQUFNLFNBQVMsR0FBZSxDQUFDLElBQWEsRUFBRSxFQUFFO1lBQzlDLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoRixJQUFJLGNBQWMsRUFBRTtnQkFDbEIsSUFDRSxhQUFhO29CQUNiLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO29CQUNoRCwwQkFBMEIsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxvQkFBb0IsQ0FBQyxFQUNqRjtvQkFDQSxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO29CQUVsQyxPQUFPLFNBQVMsQ0FBQztpQkFDbEI7Z0JBRUQsSUFBSSxhQUFhLEVBQUU7b0JBQ2pCLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO3dCQUNqRSxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxLQUFLO3dCQUNqQyxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FB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QUEwQixDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQy9DLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRTtRQUNqQyxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgZWxpZGVJbXBvcnRzIH0gZnJvbSAnLi9lbGlkZV9pbXBvcnRzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUl2eUppdFN1cHBvcnRDYWxscyhcbiAgY2xhc3NNZXRhZGF0YTogYm9vbGVhbixcbiAgbmdNb2R1bGVTY29wZTogYm9vbGVhbixcbiAgZ2V0VHlwZUNoZWNrZXI6ICgpID0+IHRzLlR5cGVDaGVja2VyLFxuKTogdHMuVHJhbnNmb3JtZXJGYWN0b3J5PHRzLlNvdXJjZUZpbGU+IHtcbiAgcmV0dXJuIChjb250ZXh0OiB0cy5UcmFuc2Zvcm1hdGlvbkNvbnRleHQpID0+IHtcbiAgICBjb25zdCByZW1vdmVkTm9kZXM6IHRzLk5vZGVbXSA9IFtdO1xuXG4gICAgY29uc3QgdmlzaXROb2RlOiB0cy5WaXNpdG9yID0gKG5vZGU6IHRzLk5vZGUpID0+IHtcbiAgICAgIGNvbnN0IGlubmVyU3RhdGVtZW50ID0gdHMuaXNFeHByZXNzaW9uU3RhdGVtZW50KG5vZGUpICYmIGdldElpZmVTdGF0ZW1lbnQobm9kZSk7XG4gICAgICBpZiAoaW5uZXJTdGF0ZW1lbnQpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG5nTW9kdWxlU2NvcGUgJiZcbiAgICAgICAgICB0cy5pc0JpbmFyeUV4cHJlc3Npb24oaW5uZXJTdGF0ZW1lbnQuZXhwcmVzc2lvbikgJiZcbiAgICAgICAgICBpc0l2eVByaXZhdGVDYWxsRXhwcmVzc2lvbihpbm5lclN0YXRlbWVudC5leHByZXNzaW9uLnJpZ2h0LCAnybXJtXNldE5nTW9kdWxlU2NvcGUnKVxuICAgICAgICApIHtcbiAgICAgICAgICByZW1vdmVkTm9kZXMucHVzaChpbm5lclN0YXRlbWVudCk7XG5cbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNsYXNzTWV0YWRhdGEpIHtcbiAgICAgICAgICBjb25zdCBleHByZXNzaW9uID0gdHMuaXNCaW5hcnlFeHByZXNzaW9uKGlubmVyU3RhdGVtZW50LmV4cHJlc3Npb24pXG4gICAgICAgICAgICA/IGlubmVyU3RhdGVtZW50LmV4cHJlc3Npb24ucmlnaHRcbiAgICAgICAgICAgIDogaW5uZXJTdGF0ZW1lbnQuZXhwcmVzc2lvbjtcbiAgICAgICAgICBpZiAoaXNJdnlQcml2YXRlQ2FsbEV4cHJlc3Npb24oZXhwcmVzc2lvbiwgJ8m1c2V0Q2xhc3NNZXRhZGF0YScpKSB7XG4gICAgICAgICAgICByZW1vdmVkTm9kZXMucHVzaChpbm5lclN0YXRlbWVudCk7XG5cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cy52aXNpdEVhY2hDaGlsZChub2RlLCB2aXNpdE5vZGUsIGNvbnRleHQpO1xuICAgIH07XG5cbiAgICByZXR1cm4gKHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUpID0+IHtcbiAgICAgIGxldCB1cGRhdGVkU291cmNlRmlsZSA9IHRzLnZpc2l0RWFjaENoaWxkKHNvdXJjZUZpbGUsIHZpc2l0Tm9kZSwgY29udGV4dCk7XG5cbiAgICAgIGlmIChyZW1vdmVkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAvLyBSZW1vdmUgYW55IHVudXNlZCBpbXBvcnRzXG4gICAgICAgIGNvbnN0IGltcG9ydFJlbW92YWxzID0gZWxpZGVJbXBvcnRzKFxuICAgICAgICAgIHVwZGF0ZWRTb3VyY2VGaWxlLFxuICAgICAgICAgIHJlbW92ZWROb2RlcyxcbiAgICAgICAgICBnZXRUeXBlQ2hlY2tlcixcbiAgICAgICAgICBjb250ZXh0LmdldENvbXBpbGVyT3B0aW9ucygpLFxuICAgICAgICApO1xuICAgICAgICBpZiAoaW1wb3J0UmVtb3ZhbHMuc2l6ZSA+IDApIHtcbiAgICAgICAgICB1cGRhdGVkU291cmNlRmlsZSA9IHRzLnZpc2l0RWFjaENoaWxkKFxuICAgICAgICAgICAgdXBkYXRlZFNvdXJjZUZpbGUsXG4gICAgICAgICAgICBmdW5jdGlvbiB2aXNpdEZvclJlbW92YWwobm9kZSk6IHRzLk5vZGUgfCB1bmRlZmluZWQge1xuICAgICAgICAgICAgICByZXR1cm4gaW1wb3J0UmVtb3ZhbHMuaGFzKG5vZGUpXG4gICAgICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA6IHRzLnZpc2l0RWFjaENoaWxkKG5vZGUsIHZpc2l0Rm9yUmVtb3ZhbCwgY29udGV4dCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB1cGRhdGVkU291cmNlRmlsZTtcbiAgICB9O1xuICB9O1xufVxuXG4vLyBFYWNoIEl2eSBwcml2YXRlIGNhbGwgZXhwcmVzc2lvbiBpcyBpbnNpZGUgYW4gSUlGRVxuZnVuY3Rpb24gZ2V0SWlmZVN0YXRlbWVudChleHByU3RtdDogdHMuRXhwcmVzc2lvblN0YXRlbWVudCk6IG51bGwgfCB0cy5FeHByZXNzaW9uU3RhdGVtZW50IHtcbiAgY29uc3QgZXhwcmVzc2lvbiA9IGV4cHJTdG10LmV4cHJlc3Npb247XG4gIGlmICghZXhwcmVzc2lvbiB8fCAhdHMuaXNDYWxsRXhwcmVzc2lvbihleHByZXNzaW9uKSB8fCBleHByZXNzaW9uLmFyZ3VtZW50cy5sZW5ndGggIT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHBhcmVuRXhwciA9IGV4cHJlc3Npb247XG4gIGlmICghdHMuaXNQYXJlbnRoZXNpemVkRXhwcmVzc2lvbihwYXJlbkV4cHIuZXhwcmVzc2lvbikpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGZ1bkV4cHIgPSBwYXJlbkV4cHIuZXhwcmVzc2lvbi5leHByZXNzaW9uO1xuICBpZiAoIXRzLmlzRnVuY3Rpb25FeHByZXNzaW9uKGZ1bkV4cHIpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBpbm5lclN0bXRzID0gZnVuRXhwci5ib2R5LnN0YXRlbWVudHM7XG4gIGlmIChpbm5lclN0bXRzLmxlbmd0aCAhPT0gMSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgaW5uZXJFeHByU3RtdCA9IGlubmVyU3RtdHNbMF07XG4gIGlmICghdHMuaXNFeHByZXNzaW9uU3RhdGVtZW50KGlubmVyRXhwclN0bXQpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gaW5uZXJFeHByU3RtdDtcbn1cblxuZnVuY3Rpb24gaXNJdnlQcml2YXRlQ2FsbEV4cHJlc3Npb24oZXhwcmVzc2lvbjogdHMuRXhwcmVzc2lvbiwgbmFtZTogc3RyaW5nKSB7XG4gIC8vIE5vdyB3ZSdyZSBpbiB0aGUgSUlGRSBhbmQgaGF2ZSB0aGUgaW5uZXIgZXhwcmVzc2lvbiBzdGF0ZW1lbnQuIFdlIGNhbiBjaGVjayBpZiBpdCBtYXRjaGVzXG4gIC8vIGEgcHJpdmF0ZSBJdnkgY2FsbC5cbiAgaWYgKCF0cy5pc0NhbGxFeHByZXNzaW9uKGV4cHJlc3Npb24pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgcHJvcEFjY0V4cHIgPSBleHByZXNzaW9uLmV4cHJlc3Npb247XG4gIGlmICghdHMuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24ocHJvcEFjY0V4cHIpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKHByb3BBY2NFeHByLm5hbWUudGV4dCAhPSBuYW1lKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG4iXX0=
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLWl2eS1qaXQtc3VwcG9ydC1jYWxscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25ndG9vbHMvd2VicGFjay9zcmMvdHJhbnNmb3JtZXJzL3JlbW92ZS1pdnktaml0LXN1cHBvcnQtY2FsbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCwrQ0FBaUM7QUFDakMsbURBQStDO0FBRS9DLFNBQWdCLHdCQUF3QixDQUN0QyxhQUFzQixFQUN0QixhQUFzQixFQUN0QixjQUFvQztJQUVwQyxPQUFPLENBQUMsT0FBaUMsRUFBRSxFQUFFO1FBQzNDLE1BQU0sWUFBWSxHQUFjLEVBQUUsQ0FBQztRQUVuQyxNQUFNLFNBQVMsR0FBZSxDQUFDLElBQWEsRUFBRSxFQUFFO1lBQzlDLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUN4RixJQUFJLGVBQWUsRUFBRTtnQkFDbkIsSUFDRSxhQUFhO29CQUNiLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUM7b0JBQ3RDLDBCQUEwQixDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsb0JBQW9CLENBQUMsRUFDdkU7b0JBQ0EsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFFbkMsT0FBTyxTQUFTLENBQUM7aUJBQ2xCO2dCQUVELElBQUksYUFBYSxFQUFFO29CQUNqQixNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDO3dCQUN2RCxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUs7d0JBQ3ZCLENBQUMsQ0FBQyxlQUFlLENBQUM7b0JBQ3BCLElBQ0UsMEJBQTBC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LDRGQUE0RjtJQUM1RixzQkFBc0I7SUFDdEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUNwQyxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQztJQUMxQyxJQUFJLENBQUMsRUFBRSxDQUFDLDBCQUEwQixDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQy9DLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtRQUNsQyxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgZWxpZGVJbXBvcnRzIH0gZnJvbSAnLi9lbGlkZV9pbXBvcnRzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUl2eUppdFN1cHBvcnRDYWxscyhcbiAgY2xhc3NNZXRhZGF0YTogYm9vbGVhbixcbiAgbmdNb2R1bGVTY29wZTogYm9vbGVhbixcbiAgZ2V0VHlwZUNoZWNrZXI6ICgpID0+IHRzLlR5cGVDaGVja2VyLFxuKTogdHMuVHJhbnNmb3JtZXJGYWN0b3J5PHRzLlNvdXJjZUZpbGU+IHtcbiAgcmV0dXJuIChjb250ZXh0OiB0cy5UcmFuc2Zvcm1hdGlvbkNvbnRleHQpID0+IHtcbiAgICBjb25zdCByZW1vdmVkTm9kZXM6IHRzLk5vZGVbXSA9IFtdO1xuXG4gICAgY29uc3QgdmlzaXROb2RlOiB0cy5WaXNpdG9yID0gKG5vZGU6IHRzLk5vZGUpID0+IHtcbiAgICAgIGNvbnN0IGlubmVyRXhwcmVzc2lvbiA9IHRzLmlzRXhwcmVzc2lvblN0YXRlbWVudChub2RlKSA/IGdldElpZmVFeHByZXNzaW9uKG5vZGUpIDogbnVsbDtcbiAgICAgIGlmIChpbm5lckV4cHJlc3Npb24pIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG5nTW9kdWxlU2NvcGUgJiZcbiAgICAgICAgICB0cy5pc0JpbmFyeUV4cHJlc3Npb24oaW5uZXJFeHByZXNzaW9uKSAmJlxuICAgICAgICAgIGlzSXZ5UHJpdmF0ZUNhbGxFeHByZXNzaW9uKGlubmVyRXhwcmVzc2lvbi5yaWdodCwgJ8m1ybVzZXROZ01vZHVsZVNjb3BlJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmVtb3ZlZE5vZGVzLnB1c2goaW5uZXJFeHByZXNzaW9uKTtcblxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2xhc3NNZXRhZGF0YSkge1xuICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSB0cy5pc0JpbmFyeUV4cHJlc3Npb24oaW5uZXJFeHByZXNzaW9uKVxuICAgICAgICAgICAgPyBpbm5lckV4cHJlc3Npb24ucmlnaHRcbiAgICAgICAgICAgIDogaW5uZXJFeHByZXNzaW9uO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGlzSXZ5UHJpdmF0ZUNhbGxFeHByZXNzaW9uKGV4cHJlc3Npb24sICfJtXNldENsYXNzTWV0YWRhdGEnKSB8fFxuICAgICAgICAgICAgaXNJdnlQcml2YXRlQ2FsbEV4cHJlc3Npb24oZXhwcmVzc2lvbiwgJ8m1c2V0Q2xhc3NNZXRhZGF0YUFzeW5jJylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJlbW92ZWROb2Rlcy5wdXNoKGlubmVyRXhwcmVzc2lvbik7XG5cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cy52aXNpdEVhY2hDaGlsZChub2RlLCB2aXNpdE5vZGUsIGNvbnRleHQpO1xuICAgIH07XG5cbiAgICByZXR1cm4gKHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUpID0+IHtcbiAgICAgIGxldCB1cGRhdGVkU291cmNlRmlsZSA9IHRzLnZpc2l0RWFjaENoaWxkKHNvdXJjZUZpbGUsIHZpc2l0Tm9kZSwgY29udGV4dCk7XG5cbiAgICAgIGlmIChyZW1vdmVkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAvLyBSZW1vdmUgYW55IHVudXNlZCBpbXBvcnRzXG4gICAgICAgIGNvbnN0IGltcG9ydFJlbW92YWxzID0gZWxpZGVJbXBvcnRzKFxuICAgICAgICAgIHVwZGF0ZWRTb3VyY2VGaWxlLFxuICAgICAgICAgIHJlbW92ZWROb2RlcyxcbiAgICAgICAgICBnZXRUeXBlQ2hlY2tlcixcbiAgICAgICAgICBjb250ZXh0LmdldENvbXBpbGVyT3B0aW9ucygpLFxuICAgICAgICApO1xuICAgICAgICBpZiAoaW1wb3J0UmVtb3ZhbHMuc2l6ZSA+IDApIHtcbiAgICAgICAgICB1cGRhdGVkU291cmNlRmlsZSA9IHRzLnZpc2l0RWFjaENoaWxkKFxuICAgICAgICAgICAgdXBkYXRlZFNvdXJjZUZpbGUsXG4gICAgICAgICAgICBmdW5jdGlvbiB2aXNpdEZvclJlbW92YWwobm9kZSk6IHRzLk5vZGUgfCB1bmRlZmluZWQge1xuICAgICAgICAgICAgICByZXR1cm4gaW1wb3J0UmVtb3ZhbHMuaGFzKG5vZGUpXG4gICAgICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA6IHRzLnZpc2l0RWFjaENoaWxkKG5vZGUsIHZpc2l0Rm9yUmVtb3ZhbCwgY29udGV4dCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB1cGRhdGVkU291cmNlRmlsZTtcbiAgICB9O1xuICB9O1xufVxuXG4vLyBFYWNoIEl2eSBwcml2YXRlIGNhbGwgZXhwcmVzc2lvbiBpcyBpbnNpZGUgYW4gSUlGRVxuZnVuY3Rpb24gZ2V0SWlmZUV4cHJlc3Npb24oZXhwclN0bXQ6IHRzLkV4cHJlc3Npb25TdGF0ZW1lbnQpOiBudWxsIHwgdHMuRXhwcmVzc2lvbiB7XG4gIGNvbnN0IGV4cHJlc3Npb24gPSBleHByU3RtdC5leHByZXNzaW9uO1xuICBpZiAoIWV4cHJlc3Npb24gfHwgIXRzLmlzQ2FsbEV4cHJlc3Npb24oZXhwcmVzc2lvbikgfHwgZXhwcmVzc2lvbi5hcmd1bWVudHMubGVuZ3RoICE9PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBwYXJlbkV4cHIgPSBleHByZXNzaW9uO1xuICBpZiAoIXRzLmlzUGFyZW50aGVzaXplZEV4cHJlc3Npb24ocGFyZW5FeHByLmV4cHJlc3Npb24pKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBmdW5FeHByID0gcGFyZW5FeHByLmV4cHJlc3Npb24uZXhwcmVzc2lvbjtcbiAgaWYgKCF0cy5pc0Z1bmN0aW9uRXhwcmVzc2lvbihmdW5FeHByKSAmJiAhdHMuaXNBcnJvd0Z1bmN0aW9uKGZ1bkV4cHIpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoIXRzLmlzQmxvY2soZnVuRXhwci5ib2R5KSkge1xuICAgIHJldHVybiBmdW5FeHByLmJvZHk7XG4gIH1cblxuICBjb25zdCBpbm5lclN0bXRzID0gZnVuRXhwci5ib2R5LnN0YXRlbWVudHM7XG4gIGlmIChpbm5lclN0bXRzLmxlbmd0aCAhPT0gMSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgaW5uZXJFeHByU3RtdCA9IGlubmVyU3RtdHNbMF07XG4gIGlmICghdHMuaXNFeHByZXNzaW9uU3RhdGVtZW50KGlubmVyRXhwclN0bXQpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gaW5uZXJFeHByU3RtdC5leHByZXNzaW9uO1xufVxuXG5mdW5jdGlvbiBpc0l2eVByaXZhdGVDYWxsRXhwcmVzc2lvbihleHByZXNzaW9uOiB0cy5FeHByZXNzaW9uLCBuYW1lOiBzdHJpbmcpIHtcbiAgLy8gTm93IHdlJ3JlIGluIHRoZSBJSUZFIGFuZCBoYXZlIHRoZSBpbm5lciBleHByZXNzaW9uIHN0YXRlbWVudC4gV2UgY2FuIGNoZWNrIGlmIGl0IG1hdGNoZXNcbiAgLy8gYSBwcml2YXRlIEl2eSBjYWxsLlxuICBpZiAoIXRzLmlzQ2FsbEV4cHJlc3Npb24oZXhwcmVzc2lvbikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBwcm9wQWNjRXhwciA9IGV4cHJlc3Npb24uZXhwcmVzc2lvbjtcbiAgaWYgKCF0cy5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihwcm9wQWNjRXhwcikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAocHJvcEFjY0V4cHIubmFtZS50ZXh0ICE9PSBuYW1lKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG4iXX0=