@angular/core 14.0.0-next.0 → 14.0.0-next.1

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.
Files changed (33) hide show
  1. package/core.d.ts +31 -7
  2. package/esm2020/src/di/r3_injector.mjs +5 -15
  3. package/esm2020/src/di/reflective_injector.mjs +1 -1
  4. package/esm2020/src/errors.mjs +22 -5
  5. package/esm2020/src/metadata/directives.mjs +14 -5
  6. package/esm2020/src/render3/instructions/shared.mjs +2 -2
  7. package/esm2020/src/version.mjs +1 -1
  8. package/esm2020/testing/src/logger.mjs +3 -3
  9. package/esm2020/testing/src/ng_zone_mock.mjs +3 -3
  10. package/esm2020/testing/src/r3_test_bed.mjs +6 -1
  11. package/fesm2015/core.mjs +41 -25
  12. package/fesm2015/core.mjs.map +1 -1
  13. package/fesm2015/testing.mjs +6 -1
  14. package/fesm2015/testing.mjs.map +1 -1
  15. package/fesm2020/core.mjs +41 -25
  16. package/fesm2020/core.mjs.map +1 -1
  17. package/fesm2020/testing.mjs +6 -1
  18. package/fesm2020/testing.mjs.map +1 -1
  19. package/package.json +1 -1
  20. package/schematics/migrations/typed-forms/index.js +2 -2
  21. package/schematics/migrations/typed-forms/util.js +3 -8
  22. package/schematics/migrations.json +6 -16
  23. package/testing/testing.d.ts +1 -1
  24. package/schematics/migrations/router-link-empty-expression/analyze_template.d.ts +0 -11
  25. package/schematics/migrations/router-link-empty-expression/analyze_template.js +0 -34
  26. package/schematics/migrations/router-link-empty-expression/angular/html_routerlink_empty_expr_visitor.d.ts +0 -20
  27. package/schematics/migrations/router-link-empty-expression/angular/html_routerlink_empty_expr_visitor.js +0 -47
  28. package/schematics/migrations/router-link-empty-expression/index.d.ts +0 -11
  29. package/schematics/migrations/router-link-empty-expression/index.js +0 -170
  30. package/schematics/migrations/testbed-teardown/index.d.ts +0 -11
  31. package/schematics/migrations/testbed-teardown/index.js +0 -92
  32. package/schematics/migrations/testbed-teardown/util.d.ts +0 -35
  33. package/schematics/migrations/testbed-teardown/util.js +0 -188
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/core",
3
- "version": "14.0.0-next.0",
3
+ "version": "14.0.0-next.1",
4
4
  "description": "Angular - the core framework",
5
5
  "author": "angular",
6
6
  "license": "MIT",
@@ -54,7 +54,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
54
54
  const formBuilderImport = (0, util_1.getFormBuilderImport)(sourceFile);
55
55
  // If no relevant classes are imported, we can exit early.
56
56
  if (controlClassImports.length === 0 && formBuilderImport === null)
57
- return;
57
+ continue;
58
58
  const update = tree.beginUpdate((0, path_1.relative)(basePath, sourceFile.fileName));
59
59
  // For each control class, migrate all of its uses.
60
60
  for (const importSpecifier of controlClassImports) {
@@ -87,4 +87,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
87
87
  }
88
88
  exports.insertAnyImport = insertAnyImport;
89
89
  });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NjaGVtYXRpY3MvbWlncmF0aW9ucy90eXBlZC1mb3Jtcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFSCwyREFBMkY7SUFDM0YsK0JBQThCO0lBRzlCLGtHQUEyRTtJQUMzRSwyRkFBNEY7SUFFNUYsK0VBQStKO0lBRS9KO1FBQ0UsT0FBTyxDQUFPLElBQVUsRUFBRSxFQUFFO1lBQzFCLE1BQU0sRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFDLEdBQUcsTUFBTSxJQUFBLGdEQUF1QixFQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMvQixNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsVUFBVSxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUM7WUFFL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3BCLE1BQU0sSUFBSSxnQ0FBbUIsQ0FDekIsa0VBQWtFLENBQUMsQ0FBQzthQUN6RTtZQUVELEtBQUssTUFBTSxZQUFZLElBQUksUUFBUSxFQUFFO2dCQUNuQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQ3REO1FBQ0gsQ0FBQyxDQUFBLENBQUM7SUFDSixDQUFDO0lBZkQsNEJBZUM7SUFFRCxTQUFTLHNCQUFzQixDQUFDLElBQVUsRUFBRSxZQUFvQixFQUFFLFFBQWdCO1FBQ2hGLE1BQU0sRUFBQyxPQUFPLEVBQUMsR0FBRyxJQUFBLHNDQUFzQixFQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkUsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzdDLE1BQU0sV0FBVyxHQUNiLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFBLDhCQUFjLEVBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRWpHLEtBQUssTUFBTSxVQUFVLElBQUksV0FBVyxFQUFFO1lBQ3BDLE1BQU0sbUJBQW1CLEdBQUcsSUFBQSw2QkFBc0IsRUFBQyxVQUFVLENBQUMsQ0FBQztZQUMvRCxNQUFNLGlCQUFpQixHQUFHLElBQUEsMkJBQW9CLEVBQUMsVUFBVSxDQUFDLENBQUM7WUFFM0QsMERBQTBEO1lBQzFELElBQUksbUJBQW1CLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxpQkFBaUIsS0FBSyxJQUFJO2dCQUFFLE9BQU87WUFFM0UsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFBLGVBQVEsRUFBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFFekUsbURBQW1EO1lBQ25ELEtBQUssTUFBTSxlQUFlLElBQUksbUJBQW1CLEVBQUU7Z0JBQ2pELE1BQU0sTUFBTSxHQUFHLElBQUEsNkJBQXNCLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxlQUFlLENBQUMsQ0FBQztnQkFDaEYsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLEVBQUU7b0JBQ3pCLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO2lCQUM1QzthQUNGO1lBRUQsd0RBQXdEO1lBQ3hELE1BQU0sS0FBSyxHQUFHLElBQUEsMkJBQW9CLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBQy9FLEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFO2dCQUNyQixXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO2FBQzNDO1lBRUQsaURBQWlEO1lBQ2pELElBQUksSUFBQSxtQkFBWSxFQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDckMsTUFBTSxxQkFBcUIsR0FDdkIsQ0FBQyxHQUFHLG1CQUFtQixFQUFFLGlCQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDO2dCQUNuRixlQUFlLENBQUMsTUFBTSxFQUFFLHFCQUFxQixDQUFDLENBQUM7YUFDaEQ7WUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELFNBQWdCLFdBQVcsQ0FDdkIsTUFBc0IsRUFBRSxJQUFvQixFQUFFLE9BQWdDO1FBQ2hGLElBQUksT0FBTyxLQUFLLElBQUk7WUFBRSxPQUFPO1FBQzdCLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUpELGtDQUlDO0lBRUQsU0FBZ0IsZUFBZSxDQUFDLE1BQXNCLEVBQUUsT0FBMkI7UUFDakYsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsR0FBRyxvQkFBYSxJQUFJLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRkQsMENBRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtSdWxlLCBTY2hlbWF0aWNzRXhjZXB0aW9uLCBUcmVlLCBVcGRhdGVSZWNvcmRlcn0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuaW1wb3J0IHtyZWxhdGl2ZX0gZnJvbSAncGF0aCc7XG5pbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7Z2V0UHJvamVjdFRzQ29uZmlnUGF0aHN9IGZyb20gJy4uLy4uL3V0aWxzL3Byb2plY3RfdHNjb25maWdfcGF0aHMnO1xuaW1wb3J0IHtjYW5NaWdyYXRlRmlsZSwgY3JlYXRlTWlncmF0aW9uUHJvZ3JhbX0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9jb21waWxlcl9ob3N0JztcblxuaW1wb3J0IHthbnlTeW1ib2xOYW1lLCBmaW5kQ29udHJvbENsYXNzVXNhZ2VzLCBmaW5kRm9ybUJ1aWxkZXJDYWxscywgZ2V0QW55SW1wb3J0LCBnZXRDb250cm9sQ2xhc3NJbXBvcnRzLCBnZXRGb3JtQnVpbGRlckltcG9ydCwgTWlncmF0YWJsZU5vZGV9IGZyb20gJy4vdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCk6IFJ1bGUge1xuICByZXR1cm4gYXN5bmMgKHRyZWU6IFRyZWUpID0+IHtcbiAgICBjb25zdCB7YnVpbGRQYXRocywgdGVzdFBhdGhzfSA9IGF3YWl0IGdldFByb2plY3RUc0NvbmZpZ1BhdGhzKHRyZWUpO1xuICAgIGNvbnN0IGJhc2VQYXRoID0gcHJvY2Vzcy5jd2QoKTtcbiAgICBjb25zdCBhbGxQYXRocyA9IFsuLi5idWlsZFBhdGhzLCAuLi50ZXN0UGF0aHNdO1xuXG4gICAgaWYgKCFhbGxQYXRocy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBTY2hlbWF0aWNzRXhjZXB0aW9uKFxuICAgICAgICAgICdDb3VsZCBub3QgZmluZCBhbnkgdHNjb25maWcgZmlsZS4gQ2Fubm90IG1pZ3JhdGUgdG8gVHlwZWQgRm9ybXMuJyk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB0c2NvbmZpZ1BhdGggb2YgYWxsUGF0aHMpIHtcbiAgICAgIHJ1blR5cGVkRm9ybXNNaWdyYXRpb24odHJlZSwgdHNjb25maWdQYXRoLCBiYXNlUGF0aCk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBydW5UeXBlZEZvcm1zTWlncmF0aW9uKHRyZWU6IFRyZWUsIHRzY29uZmlnUGF0aDogc3RyaW5nLCBiYXNlUGF0aDogc3RyaW5nKSB7XG4gIGNvbnN0IHtwcm9ncmFtfSA9IGNyZWF0ZU1pZ3JhdGlvblByb2dyYW0odHJlZSwgdHNjb25maWdQYXRoLCBiYXNlUGF0aCk7XG4gIGNvbnN0IHR5cGVDaGVja2VyID0gcHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpO1xuICBjb25zdCBzb3VyY2VGaWxlcyA9XG4gICAgICBwcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkuZmlsdGVyKHNvdXJjZUZpbGUgPT4gY2FuTWlncmF0ZUZpbGUoYmFzZVBhdGgsIHNvdXJjZUZpbGUsIHByb2dyYW0pKTtcblxuICBmb3IgKGNvbnN0IHNvdXJjZUZpbGUgb2Ygc291cmNlRmlsZXMpIHtcbiAgICBjb25zdCBjb250cm9sQ2xhc3NJbXBvcnRzID0gZ2V0Q29udHJvbENsYXNzSW1wb3J0cyhzb3VyY2VGaWxlKTtcbiAgICBjb25zdCBmb3JtQnVpbGRlckltcG9ydCA9IGdldEZvcm1CdWlsZGVySW1wb3J0KHNvdXJjZUZpbGUpO1xuXG4gICAgLy8gSWYgbm8gcmVsZXZhbnQgY2xhc3NlcyBhcmUgaW1wb3J0ZWQsIHdlIGNhbiBleGl0IGVhcmx5LlxuICAgIGlmIChjb250cm9sQ2xhc3NJbXBvcnRzLmxlbmd0aCA9PT0gMCAmJiBmb3JtQnVpbGRlckltcG9ydCA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgY29uc3QgdXBkYXRlID0gdHJlZS5iZWdpblVwZGF0ZShyZWxhdGl2ZShiYXNlUGF0aCwgc291cmNlRmlsZS5maWxlTmFtZSkpO1xuXG4gICAgLy8gRm9yIGVhY2ggY29udHJvbCBjbGFzcywgbWlncmF0ZSBhbGwgb2YgaXRzIHVzZXMuXG4gICAgZm9yIChjb25zdCBpbXBvcnRTcGVjaWZpZXIgb2YgY29udHJvbENsYXNzSW1wb3J0cykge1xuICAgICAgY29uc3QgdXNhZ2VzID0gZmluZENvbnRyb2xDbGFzc1VzYWdlcyhzb3VyY2VGaWxlLCB0eXBlQ2hlY2tlciwgaW1wb3J0U3BlY2lmaWVyKTtcbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiB1c2FnZXMpIHtcbiAgICAgICAgbWlncmF0ZU5vZGUodXBkYXRlLCBub2RlLCBpbXBvcnRTcGVjaWZpZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZvciBlYWNoIEZvcm1CdWlsZGVyIG1ldGhvZCwgbWlncmF0ZSBhbGwgb2YgaXRzIHVzZXMuXG4gICAgY29uc3Qgbm9kZXMgPSBmaW5kRm9ybUJ1aWxkZXJDYWxscyhzb3VyY2VGaWxlLCB0eXBlQ2hlY2tlciwgZm9ybUJ1aWxkZXJJbXBvcnQpO1xuICAgIGZvciAoY29uc3QgbiBvZiBub2Rlcykge1xuICAgICAgbWlncmF0ZU5vZGUodXBkYXRlLCBuLCBmb3JtQnVpbGRlckltcG9ydCk7XG4gICAgfVxuXG4gICAgLy8gQWRkIHRoZSBhbnkgc3ltYm9sIHVzZWQgYnkgdGhlIG1pZ3JhdGVkIGNhbGxzLlxuICAgIGlmIChnZXRBbnlJbXBvcnQoc291cmNlRmlsZSkgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGZpcnN0VmFsaWRGb3Jtc0ltcG9ydCA9XG4gICAgICAgICAgWy4uLmNvbnRyb2xDbGFzc0ltcG9ydHMsIGZvcm1CdWlsZGVySW1wb3J0XS5zb3J0KCkuZmlsdGVyKGkgPT4gaSAhPT0gbnVsbClbMF0hO1xuICAgICAgaW5zZXJ0QW55SW1wb3J0KHVwZGF0ZSwgZmlyc3RWYWxpZEZvcm1zSW1wb3J0KTtcbiAgICB9XG5cbiAgICB0cmVlLmNvbW1pdFVwZGF0ZSh1cGRhdGUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaWdyYXRlTm9kZShcbiAgICB1cGRhdGU6IFVwZGF0ZVJlY29yZGVyLCBub2RlOiBNaWdyYXRhYmxlTm9kZSwgaW1wb3J0ZDogdHMuSW1wb3J0U3BlY2lmaWVyfG51bGwpIHtcbiAgaWYgKGltcG9ydGQgPT09IG51bGwpIHJldHVybjtcbiAgdXBkYXRlLmluc2VydFJpZ2h0KG5vZGUubm9kZS5nZXRFbmQoKSwgbm9kZS5nZW5lcmljKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEFueUltcG9ydCh1cGRhdGU6IFVwZGF0ZVJlY29yZGVyLCBpbXBvcnRkOiB0cy5JbXBvcnRTcGVjaWZpZXIpIHtcbiAgdXBkYXRlLmluc2VydExlZnQoaW1wb3J0ZC5nZXRTdGFydCgpLCBgJHthbnlTeW1ib2xOYW1lfSwgYCk7XG59XG4iXX0=
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NjaGVtYXRpY3MvbWlncmF0aW9ucy90eXBlZC1mb3Jtcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFSCwyREFBMkY7SUFDM0YsK0JBQThCO0lBRzlCLGtHQUEyRTtJQUMzRSwyRkFBNEY7SUFFNUYsK0VBQStKO0lBRS9KO1FBQ0UsT0FBTyxDQUFPLElBQVUsRUFBRSxFQUFFO1lBQzFCLE1BQU0sRUFBQyxVQUFVLEVBQUUsU0FBUyxFQUFDLEdBQUcsTUFBTSxJQUFBLGdEQUF1QixFQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMvQixNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsVUFBVSxFQUFFLEdBQUcsU0FBUyxDQUFDLENBQUM7WUFFL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3BCLE1BQU0sSUFBSSxnQ0FBbUIsQ0FDekIsa0VBQWtFLENBQUMsQ0FBQzthQUN6RTtZQUVELEtBQUssTUFBTSxZQUFZLElBQUksUUFBUSxFQUFFO2dCQUNuQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQ3REO1FBQ0gsQ0FBQyxDQUFBLENBQUM7SUFDSixDQUFDO0lBZkQsNEJBZUM7SUFFRCxTQUFTLHNCQUFzQixDQUFDLElBQVUsRUFBRSxZQUFvQixFQUFFLFFBQWdCO1FBQ2hGLE1BQU0sRUFBQyxPQUFPLEVBQUMsR0FBRyxJQUFBLHNDQUFzQixFQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkUsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzdDLE1BQU0sV0FBVyxHQUNiLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFBLDhCQUFjLEVBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRWpHLEtBQUssTUFBTSxVQUFVLElBQUksV0FBVyxFQUFFO1lBQ3BDLE1BQU0sbUJBQW1CLEdBQUcsSUFBQSw2QkFBc0IsRUFBQyxVQUFVLENBQUMsQ0FBQztZQUMvRCxNQUFNLGlCQUFpQixHQUFHLElBQUEsMkJBQW9CLEVBQUMsVUFBVSxDQUFDLENBQUM7WUFFM0QsMERBQTBEO1lBQzFELElBQUksbUJBQW1CLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxpQkFBaUIsS0FBSyxJQUFJO2dCQUFFLFNBQVM7WUFFN0UsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFBLGVBQVEsRUFBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFFekUsbURBQW1EO1lBQ25ELEtBQUssTUFBTSxlQUFlLElBQUksbUJBQW1CLEVBQUU7Z0JBQ2pELE1BQU0sTUFBTSxHQUFHLElBQUEsNkJBQXNCLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxlQUFlLENBQUMsQ0FBQztnQkFDaEYsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLEVBQUU7b0JBQ3pCLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO2lCQUM1QzthQUNGO1lBRUQsd0RBQXdEO1lBQ3hELE1BQU0sS0FBSyxHQUFHLElBQUEsMkJBQW9CLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBQy9FLEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFO2dCQUNyQixXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO2FBQzNDO1lBRUQsaURBQWlEO1lBQ2pELElBQUksSUFBQSxtQkFBWSxFQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDckMsTUFBTSxxQkFBcUIsR0FDdkIsQ0FBQyxHQUFHLG1CQUFtQixFQUFFLGlCQUFpQixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDO2dCQUNuRixlQUFlLENBQUMsTUFBTSxFQUFFLHFCQUFxQixDQUFDLENBQUM7YUFDaEQ7WUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELFNBQWdCLFdBQVcsQ0FDdkIsTUFBc0IsRUFBRSxJQUFvQixFQUFFLE9BQWdDO1FBQ2hGLElBQUksT0FBTyxLQUFLLElBQUk7WUFBRSxPQUFPO1FBQzdCLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUpELGtDQUlDO0lBRUQsU0FBZ0IsZUFBZSxDQUFDLE1BQXNCLEVBQUUsT0FBMkI7UUFDakYsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsR0FBRyxvQkFBYSxJQUFJLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRkQsMENBRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtSdWxlLCBTY2hlbWF0aWNzRXhjZXB0aW9uLCBUcmVlLCBVcGRhdGVSZWNvcmRlcn0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuaW1wb3J0IHtyZWxhdGl2ZX0gZnJvbSAncGF0aCc7XG5pbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7Z2V0UHJvamVjdFRzQ29uZmlnUGF0aHN9IGZyb20gJy4uLy4uL3V0aWxzL3Byb2plY3RfdHNjb25maWdfcGF0aHMnO1xuaW1wb3J0IHtjYW5NaWdyYXRlRmlsZSwgY3JlYXRlTWlncmF0aW9uUHJvZ3JhbX0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9jb21waWxlcl9ob3N0JztcblxuaW1wb3J0IHthbnlTeW1ib2xOYW1lLCBmaW5kQ29udHJvbENsYXNzVXNhZ2VzLCBmaW5kRm9ybUJ1aWxkZXJDYWxscywgZ2V0QW55SW1wb3J0LCBnZXRDb250cm9sQ2xhc3NJbXBvcnRzLCBnZXRGb3JtQnVpbGRlckltcG9ydCwgTWlncmF0YWJsZU5vZGV9IGZyb20gJy4vdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCk6IFJ1bGUge1xuICByZXR1cm4gYXN5bmMgKHRyZWU6IFRyZWUpID0+IHtcbiAgICBjb25zdCB7YnVpbGRQYXRocywgdGVzdFBhdGhzfSA9IGF3YWl0IGdldFByb2plY3RUc0NvbmZpZ1BhdGhzKHRyZWUpO1xuICAgIGNvbnN0IGJhc2VQYXRoID0gcHJvY2Vzcy5jd2QoKTtcbiAgICBjb25zdCBhbGxQYXRocyA9IFsuLi5idWlsZFBhdGhzLCAuLi50ZXN0UGF0aHNdO1xuXG4gICAgaWYgKCFhbGxQYXRocy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBTY2hlbWF0aWNzRXhjZXB0aW9uKFxuICAgICAgICAgICdDb3VsZCBub3QgZmluZCBhbnkgdHNjb25maWcgZmlsZS4gQ2Fubm90IG1pZ3JhdGUgdG8gVHlwZWQgRm9ybXMuJyk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB0c2NvbmZpZ1BhdGggb2YgYWxsUGF0aHMpIHtcbiAgICAgIHJ1blR5cGVkRm9ybXNNaWdyYXRpb24odHJlZSwgdHNjb25maWdQYXRoLCBiYXNlUGF0aCk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBydW5UeXBlZEZvcm1zTWlncmF0aW9uKHRyZWU6IFRyZWUsIHRzY29uZmlnUGF0aDogc3RyaW5nLCBiYXNlUGF0aDogc3RyaW5nKSB7XG4gIGNvbnN0IHtwcm9ncmFtfSA9IGNyZWF0ZU1pZ3JhdGlvblByb2dyYW0odHJlZSwgdHNjb25maWdQYXRoLCBiYXNlUGF0aCk7XG4gIGNvbnN0IHR5cGVDaGVja2VyID0gcHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpO1xuICBjb25zdCBzb3VyY2VGaWxlcyA9XG4gICAgICBwcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkuZmlsdGVyKHNvdXJjZUZpbGUgPT4gY2FuTWlncmF0ZUZpbGUoYmFzZVBhdGgsIHNvdXJjZUZpbGUsIHByb2dyYW0pKTtcblxuICBmb3IgKGNvbnN0IHNvdXJjZUZpbGUgb2Ygc291cmNlRmlsZXMpIHtcbiAgICBjb25zdCBjb250cm9sQ2xhc3NJbXBvcnRzID0gZ2V0Q29udHJvbENsYXNzSW1wb3J0cyhzb3VyY2VGaWxlKTtcbiAgICBjb25zdCBmb3JtQnVpbGRlckltcG9ydCA9IGdldEZvcm1CdWlsZGVySW1wb3J0KHNvdXJjZUZpbGUpO1xuXG4gICAgLy8gSWYgbm8gcmVsZXZhbnQgY2xhc3NlcyBhcmUgaW1wb3J0ZWQsIHdlIGNhbiBleGl0IGVhcmx5LlxuICAgIGlmIChjb250cm9sQ2xhc3NJbXBvcnRzLmxlbmd0aCA9PT0gMCAmJiBmb3JtQnVpbGRlckltcG9ydCA9PT0gbnVsbCkgY29udGludWU7XG5cbiAgICBjb25zdCB1cGRhdGUgPSB0cmVlLmJlZ2luVXBkYXRlKHJlbGF0aXZlKGJhc2VQYXRoLCBzb3VyY2VGaWxlLmZpbGVOYW1lKSk7XG5cbiAgICAvLyBGb3IgZWFjaCBjb250cm9sIGNsYXNzLCBtaWdyYXRlIGFsbCBvZiBpdHMgdXNlcy5cbiAgICBmb3IgKGNvbnN0IGltcG9ydFNwZWNpZmllciBvZiBjb250cm9sQ2xhc3NJbXBvcnRzKSB7XG4gICAgICBjb25zdCB1c2FnZXMgPSBmaW5kQ29udHJvbENsYXNzVXNhZ2VzKHNvdXJjZUZpbGUsIHR5cGVDaGVja2VyLCBpbXBvcnRTcGVjaWZpZXIpO1xuICAgICAgZm9yIChjb25zdCBub2RlIG9mIHVzYWdlcykge1xuICAgICAgICBtaWdyYXRlTm9kZSh1cGRhdGUsIG5vZGUsIGltcG9ydFNwZWNpZmllcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRm9yIGVhY2ggRm9ybUJ1aWxkZXIgbWV0aG9kLCBtaWdyYXRlIGFsbCBvZiBpdHMgdXNlcy5cbiAgICBjb25zdCBub2RlcyA9IGZpbmRGb3JtQnVpbGRlckNhbGxzKHNvdXJjZUZpbGUsIHR5cGVDaGVja2VyLCBmb3JtQnVpbGRlckltcG9ydCk7XG4gICAgZm9yIChjb25zdCBuIG9mIG5vZGVzKSB7XG4gICAgICBtaWdyYXRlTm9kZSh1cGRhdGUsIG4sIGZvcm1CdWlsZGVySW1wb3J0KTtcbiAgICB9XG5cbiAgICAvLyBBZGQgdGhlIGFueSBzeW1ib2wgdXNlZCBieSB0aGUgbWlncmF0ZWQgY2FsbHMuXG4gICAgaWYgKGdldEFueUltcG9ydChzb3VyY2VGaWxlKSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgZmlyc3RWYWxpZEZvcm1zSW1wb3J0ID1cbiAgICAgICAgICBbLi4uY29udHJvbENsYXNzSW1wb3J0cywgZm9ybUJ1aWxkZXJJbXBvcnRdLnNvcnQoKS5maWx0ZXIoaSA9PiBpICE9PSBudWxsKVswXSE7XG4gICAgICBpbnNlcnRBbnlJbXBvcnQodXBkYXRlLCBmaXJzdFZhbGlkRm9ybXNJbXBvcnQpO1xuICAgIH1cblxuICAgIHRyZWUuY29tbWl0VXBkYXRlKHVwZGF0ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1pZ3JhdGVOb2RlKFxuICAgIHVwZGF0ZTogVXBkYXRlUmVjb3JkZXIsIG5vZGU6IE1pZ3JhdGFibGVOb2RlLCBpbXBvcnRkOiB0cy5JbXBvcnRTcGVjaWZpZXJ8bnVsbCkge1xuICBpZiAoaW1wb3J0ZCA9PT0gbnVsbCkgcmV0dXJuO1xuICB1cGRhdGUuaW5zZXJ0UmlnaHQobm9kZS5ub2RlLmdldEVuZCgpLCBub2RlLmdlbmVyaWMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QW55SW1wb3J0KHVwZGF0ZTogVXBkYXRlUmVjb3JkZXIsIGltcG9ydGQ6IHRzLkltcG9ydFNwZWNpZmllcikge1xuICB1cGRhdGUuaW5zZXJ0TGVmdChpbXBvcnRkLmdldFN0YXJ0KCksIGAke2FueVN5bWJvbE5hbWV9LCBgKTtcbn1cbiJdfQ==
@@ -40,14 +40,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
40
40
  }
41
41
  exports.getAnyImport = getAnyImport;
42
42
  function findControlClassUsages(sourceFile, typeChecker, importSpecifier) {
43
- var _a;
44
43
  if (importSpecifier === null)
45
44
  return [];
46
- let generic = `<${exports.anySymbolName}>`;
47
- if (importSpecifier.name.getText() === 'FormArray' ||
48
- ((_a = importSpecifier.propertyName) === null || _a === void 0 ? void 0 : _a.getText()) === 'FormArray') {
49
- generic = `<${exports.anySymbolName}[]>`;
50
- }
45
+ const generic = `<${exports.anySymbolName}>`;
51
46
  const usages = [];
52
47
  const visitNode = (node) => {
53
48
  // Look for a `new` expression with no type arguments which references an import we care about:
@@ -71,7 +66,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
71
66
  if (typescript_1.default.isCallExpression(node) && !node.typeArguments &&
72
67
  typescript_1.default.isPropertyAccessExpression(node.expression) && typescript_1.default.isIdentifier(node.expression.name) &&
73
68
  exports.builderMethodNames.includes(node.expression.name.text)) {
74
- const generic = node.expression.name.text === 'array' ? `<${exports.anySymbolName}[]>` : `<${exports.anySymbolName}>`;
69
+ const generic = `<${exports.anySymbolName}>`;
75
70
  // Check whether the type of the object on which the function is called refers to the
76
71
  // provided import.
77
72
  if ((0, symbol_1.isReferenceToImport)(typeChecker, node.expression.expression, importSpecifier)) {
@@ -84,4 +79,4 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
84
79
  }
85
80
  exports.findFormBuilderCalls = findFormBuilderCalls;
86
81
  });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL3R5cGVkLWZvcm1zL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7O0lBRUgsNERBQTRCO0lBRTVCLCtFQUFrRTtJQUNsRSw2RUFBa0U7SUFFckQsUUFBQSxpQkFBaUIsR0FBRyxDQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDakYsUUFBQSxrQkFBa0IsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkQsUUFBQSxhQUFhLEdBQUcsb0JBQW9CLENBQUM7SUFPbEQsU0FBZ0Isc0JBQXNCLENBQUMsVUFBeUI7UUFDOUQsT0FBTyx5QkFBaUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFBLDRCQUFrQixFQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUMzRixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUhELHdEQUdDO0lBRUQsU0FBZ0Isb0JBQW9CLENBQUMsVUFBeUI7UUFDNUQsT0FBTyxJQUFBLDRCQUFrQixFQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRkQsb0RBRUM7SUFFRCxTQUFnQixZQUFZLENBQUMsVUFBeUI7UUFDcEQsT0FBTyxJQUFBLDRCQUFrQixFQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBYSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUZELG9DQUVDO0lBRUQsU0FBZ0Isc0JBQXNCLENBQ2xDLFVBQXlCLEVBQUUsV0FBMkIsRUFDdEQsZUFBd0M7O1FBQzFDLElBQUksZUFBZSxLQUFLLElBQUk7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUN4QyxJQUFJLE9BQU8sR0FBRyxJQUFJLHFCQUFhLEdBQUcsQ0FBQztRQUNuQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssV0FBVztZQUM5QyxDQUFBLE1BQUEsZUFBZSxDQUFDLFlBQVksMENBQUUsT0FBTyxFQUFFLE1BQUssV0FBVyxFQUFFO1lBQzNELE9BQU8sR0FBRyxJQUFJLHFCQUFhLEtBQUssQ0FBQztTQUNsQztRQUNELE1BQU0sTUFBTSxHQUFxQixFQUFFLENBQUM7UUFDcEMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFhLEVBQUUsRUFBRTtZQUNsQywrRkFBK0Y7WUFDL0Ysc0JBQXNCO1lBQ3RCLElBQUksb0JBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtnQkFDL0MsSUFBQSw0QkFBbUIsRUFBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUMsRUFBRTtnQkFDdEUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUM7YUFDL0M7WUFDRCxvQkFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDO1FBQ0Ysb0JBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFyQkQsd0RBcUJDO0lBRUQsU0FBZ0Isb0JBQW9CLENBQ2hDLFVBQXlCLEVBQUUsV0FBMkIsRUFDdEQsZUFBd0M7UUFDMUMsSUFBSSxDQUFDLGVBQWU7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssRUFBa0IsQ0FBQztRQUMzQyxvQkFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsU0FBUyxTQUFTLENBQUMsSUFBYTtZQUMxRCwyREFBMkQ7WUFDM0QsSUFBSSxvQkFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7Z0JBQ2hELG9CQUFFLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLG9CQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO2dCQUN2RiwwQkFBa0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzFELE1BQU0sT0FBTyxHQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUkscUJBQWEsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLHFCQUFhLEdBQUcsQ0FBQztnQkFDMUYscUZBQXFGO2dCQUNyRixtQkFBbUI7Z0JBQ25CLElBQUksSUFBQSw0QkFBbUIsRUFBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsZUFBZSxDQUFDLEVBQUU7b0JBQ2pGLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDO2lCQUMvQzthQUNGO1lBQ0Qsb0JBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQXJCRCxvREFxQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge2dldEltcG9ydFNwZWNpZmllcn0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9pbXBvcnRzJztcbmltcG9ydCB7aXNSZWZlcmVuY2VUb0ltcG9ydH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXNjcmlwdC9zeW1ib2wnO1xuXG5leHBvcnQgY29uc3QgY29udHJvbENsYXNzTmFtZXMgPSBbJ0Fic3RyYWN0Q29udHJvbCcsICdGb3JtQXJyYXknLCAnRm9ybUNvbnRyb2wnLCAnRm9ybUdyb3VwJ107XG5leHBvcnQgY29uc3QgYnVpbGRlck1ldGhvZE5hbWVzID0gWydjb250cm9sJywgJ2dyb3VwJywgJ2FycmF5J107XG5leHBvcnQgY29uc3QgYW55U3ltYm9sTmFtZSA9ICdBbnlGb3JVbnR5cGVkRm9ybXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1pZ3JhdGFibGVOb2RlIHtcbiAgbm9kZTogdHMuRXhwcmVzc2lvbjtcbiAgZ2VuZXJpYzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29udHJvbENsYXNzSW1wb3J0cyhzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlKSB7XG4gIHJldHVybiBjb250cm9sQ2xhc3NOYW1lcy5tYXAoY2NsYXNzID0+IGdldEltcG9ydFNwZWNpZmllcihzb3VyY2VGaWxlLCAnQGFuZ3VsYXIvZm9ybXMnLCBjY2xhc3MpKVxuICAgICAgLmZpbHRlcih2ID0+IHYgIT0gbnVsbCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtQnVpbGRlckltcG9ydChzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlKSB7XG4gIHJldHVybiBnZXRJbXBvcnRTcGVjaWZpZXIoc291cmNlRmlsZSwgJ0Bhbmd1bGFyL2Zvcm1zJywgJ0Zvcm1CdWlsZGVyJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbnlJbXBvcnQoc291cmNlRmlsZTogdHMuU291cmNlRmlsZSkge1xuICByZXR1cm4gZ2V0SW1wb3J0U3BlY2lmaWVyKHNvdXJjZUZpbGUsICdAYW5ndWxhci9mb3JtcycsIGFueVN5bWJvbE5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZENvbnRyb2xDbGFzc1VzYWdlcyhcbiAgICBzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLCB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsXG4gICAgaW1wb3J0U3BlY2lmaWVyOiB0cy5JbXBvcnRTcGVjaWZpZXJ8bnVsbCk6IE1pZ3JhdGFibGVOb2RlW10ge1xuICBpZiAoaW1wb3J0U3BlY2lmaWVyID09PSBudWxsKSByZXR1cm4gW107XG4gIGxldCBnZW5lcmljID0gYDwke2FueVN5bWJvbE5hbWV9PmA7XG4gIGlmIChpbXBvcnRTcGVjaWZpZXIubmFtZS5nZXRUZXh0KCkgPT09ICdGb3JtQXJyYXknIHx8XG4gICAgICBpbXBvcnRTcGVjaWZpZXIucHJvcGVydHlOYW1lPy5nZXRUZXh0KCkgPT09ICdGb3JtQXJyYXknKSB7XG4gICAgZ2VuZXJpYyA9IGA8JHthbnlTeW1ib2xOYW1lfVtdPmA7XG4gIH1cbiAgY29uc3QgdXNhZ2VzOiBNaWdyYXRhYmxlTm9kZVtdID0gW107XG4gIGNvbnN0IHZpc2l0Tm9kZSA9IChub2RlOiB0cy5Ob2RlKSA9PiB7XG4gICAgLy8gTG9vayBmb3IgYSBgbmV3YCBleHByZXNzaW9uIHdpdGggbm8gdHlwZSBhcmd1bWVudHMgd2hpY2ggcmVmZXJlbmNlcyBhbiBpbXBvcnQgd2UgY2FyZSBhYm91dDpcbiAgICAvLyBgbmV3IEZvcm1Db250cm9sKClgXG4gICAgaWYgKHRzLmlzTmV3RXhwcmVzc2lvbihub2RlKSAmJiAhbm9kZS50eXBlQXJndW1lbnRzICYmXG4gICAgICAgIGlzUmVmZXJlbmNlVG9JbXBvcnQodHlwZUNoZWNrZXIsIG5vZGUuZXhwcmVzc2lvbiwgaW1wb3J0U3BlY2lmaWVyKSkge1xuICAgICAgdXNhZ2VzLnB1c2goe25vZGU6IG5vZGUuZXhwcmVzc2lvbiwgZ2VuZXJpY30pO1xuICAgIH1cbiAgICB0cy5mb3JFYWNoQ2hpbGQobm9kZSwgdmlzaXROb2RlKTtcbiAgfTtcbiAgdHMuZm9yRWFjaENoaWxkKHNvdXJjZUZpbGUsIHZpc2l0Tm9kZSk7XG4gIHJldHVybiB1c2FnZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRm9ybUJ1aWxkZXJDYWxscyhcbiAgICBzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlLCB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsXG4gICAgaW1wb3J0U3BlY2lmaWVyOiB0cy5JbXBvcnRTcGVjaWZpZXJ8bnVsbCk6IE1pZ3JhdGFibGVOb2RlW10ge1xuICBpZiAoIWltcG9ydFNwZWNpZmllcikgcmV0dXJuIFtdO1xuICBjb25zdCB1c2FnZXMgPSBuZXcgQXJyYXk8TWlncmF0YWJsZU5vZGU+KCk7XG4gIHRzLmZvckVhY2hDaGlsZChzb3VyY2VGaWxlLCBmdW5jdGlvbiB2aXNpdE5vZGUobm9kZTogdHMuTm9kZSkge1xuICAgIC8vIExvb2sgZm9yIGNhbGxzIHRoYXQgbG9vayBsaWtlIGBmb28uPG1ldGhvZCB0byBtaWdyYXRlPmAuXG4gICAgaWYgKHRzLmlzQ2FsbEV4cHJlc3Npb24obm9kZSkgJiYgIW5vZGUudHlwZUFyZ3VtZW50cyAmJlxuICAgICAgICB0cy5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihub2RlLmV4cHJlc3Npb24pICYmIHRzLmlzSWRlbnRpZmllcihub2RlLmV4cHJlc3Npb24ubmFtZSkgJiZcbiAgICAgICAgYnVpbGRlck1ldGhvZE5hbWVzLmluY2x1ZGVzKG5vZGUuZXhwcmVzc2lvbi5uYW1lLnRleHQpKSB7XG4gICAgICBjb25zdCBnZW5lcmljID1cbiAgICAgICAgICBub2RlLmV4cHJlc3Npb24ubmFtZS50ZXh0ID09PSAnYXJyYXknID8gYDwke2FueVN5bWJvbE5hbWV9W10+YCA6IGA8JHthbnlTeW1ib2xOYW1lfT5gO1xuICAgICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgdHlwZSBvZiB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgcmVmZXJzIHRvIHRoZVxuICAgICAgLy8gcHJvdmlkZWQgaW1wb3J0LlxuICAgICAgaWYgKGlzUmVmZXJlbmNlVG9JbXBvcnQodHlwZUNoZWNrZXIsIG5vZGUuZXhwcmVzc2lvbi5leHByZXNzaW9uLCBpbXBvcnRTcGVjaWZpZXIpKSB7XG4gICAgICAgIHVzYWdlcy5wdXNoKHtub2RlOiBub2RlLmV4cHJlc3Npb24sIGdlbmVyaWN9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdHMuZm9yRWFjaENoaWxkKG5vZGUsIHZpc2l0Tm9kZSk7XG4gIH0pO1xuICByZXR1cm4gdXNhZ2VzO1xufVxuIl19
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL3R5cGVkLWZvcm1zL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7O0lBRUgsNERBQTRCO0lBRTVCLCtFQUFrRTtJQUNsRSw2RUFBa0U7SUFFckQsUUFBQSxpQkFBaUIsR0FBRyxDQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDakYsUUFBQSxrQkFBa0IsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkQsUUFBQSxhQUFhLEdBQUcsb0JBQW9CLENBQUM7SUFPbEQsU0FBZ0Isc0JBQXNCLENBQUMsVUFBeUI7UUFDOUQsT0FBTyx5QkFBaUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFBLDRCQUFrQixFQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUMzRixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUhELHdEQUdDO0lBRUQsU0FBZ0Isb0JBQW9CLENBQUMsVUFBeUI7UUFDNUQsT0FBTyxJQUFBLDRCQUFrQixFQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRkQsb0RBRUM7SUFFRCxTQUFnQixZQUFZLENBQUMsVUFBeUI7UUFDcEQsT0FBTyxJQUFBLDRCQUFrQixFQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBYSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUZELG9DQUVDO0lBRUQsU0FBZ0Isc0JBQXNCLENBQ2xDLFVBQXlCLEVBQUUsV0FBMkIsRUFDdEQsZUFBd0M7UUFDMUMsSUFBSSxlQUFlLEtBQUssSUFBSTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3hDLE1BQU0sT0FBTyxHQUFHLElBQUkscUJBQWEsR0FBRyxDQUFDO1FBQ3JDLE1BQU0sTUFBTSxHQUFxQixFQUFFLENBQUM7UUFDcEMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFhLEVBQUUsRUFBRTtZQUNsQywrRkFBK0Y7WUFDL0Ysc0JBQXNCO1lBQ3RCLElBQUksb0JBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtnQkFDL0MsSUFBQSw0QkFBbUIsRUFBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUMsRUFBRTtnQkFDdEUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUM7YUFDL0M7WUFDRCxvQkFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDO1FBQ0Ysb0JBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFqQkQsd0RBaUJDO0lBRUQsU0FBZ0Isb0JBQW9CLENBQ2hDLFVBQXlCLEVBQUUsV0FBMkIsRUFDdEQsZUFBd0M7UUFDMUMsSUFBSSxDQUFDLGVBQWU7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssRUFBa0IsQ0FBQztRQUMzQyxvQkFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsU0FBUyxTQUFTLENBQUMsSUFBYTtZQUMxRCwyREFBMkQ7WUFDM0QsSUFBSSxvQkFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7Z0JBQ2hELG9CQUFFLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLG9CQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO2dCQUN2RiwwQkFBa0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzFELE1BQU0sT0FBTyxHQUFHLElBQUkscUJBQWEsR0FBRyxDQUFDO2dCQUNyQyxxRkFBcUY7Z0JBQ3JGLG1CQUFtQjtnQkFDbkIsSUFBSSxJQUFBLDRCQUFtQixFQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUMsRUFBRTtvQkFDakYsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUM7aUJBQy9DO2FBQ0Y7WUFDRCxvQkFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBcEJELG9EQW9CQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7Z2V0SW1wb3J0U3BlY2lmaWVyfSBmcm9tICcuLi8uLi91dGlscy90eXBlc2NyaXB0L2ltcG9ydHMnO1xuaW1wb3J0IHtpc1JlZmVyZW5jZVRvSW1wb3J0fSBmcm9tICcuLi8uLi91dGlscy90eXBlc2NyaXB0L3N5bWJvbCc7XG5cbmV4cG9ydCBjb25zdCBjb250cm9sQ2xhc3NOYW1lcyA9IFsnQWJzdHJhY3RDb250cm9sJywgJ0Zvcm1BcnJheScsICdGb3JtQ29udHJvbCcsICdGb3JtR3JvdXAnXTtcbmV4cG9ydCBjb25zdCBidWlsZGVyTWV0aG9kTmFtZXMgPSBbJ2NvbnRyb2wnLCAnZ3JvdXAnLCAnYXJyYXknXTtcbmV4cG9ydCBjb25zdCBhbnlTeW1ib2xOYW1lID0gJ0FueUZvclVudHlwZWRGb3Jtcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWlncmF0YWJsZU5vZGUge1xuICBub2RlOiB0cy5FeHByZXNzaW9uO1xuICBnZW5lcmljOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb250cm9sQ2xhc3NJbXBvcnRzKHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUpIHtcbiAgcmV0dXJuIGNvbnRyb2xDbGFzc05hbWVzLm1hcChjY2xhc3MgPT4gZ2V0SW1wb3J0U3BlY2lmaWVyKHNvdXJjZUZpbGUsICdAYW5ndWxhci9mb3JtcycsIGNjbGFzcykpXG4gICAgICAuZmlsdGVyKHYgPT4gdiAhPSBudWxsKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1CdWlsZGVySW1wb3J0KHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUpIHtcbiAgcmV0dXJuIGdldEltcG9ydFNwZWNpZmllcihzb3VyY2VGaWxlLCAnQGFuZ3VsYXIvZm9ybXMnLCAnRm9ybUJ1aWxkZXInKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFueUltcG9ydChzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlKSB7XG4gIHJldHVybiBnZXRJbXBvcnRTcGVjaWZpZXIoc291cmNlRmlsZSwgJ0Bhbmd1bGFyL2Zvcm1zJywgYW55U3ltYm9sTmFtZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kQ29udHJvbENsYXNzVXNhZ2VzKFxuICAgIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlcixcbiAgICBpbXBvcnRTcGVjaWZpZXI6IHRzLkltcG9ydFNwZWNpZmllcnxudWxsKTogTWlncmF0YWJsZU5vZGVbXSB7XG4gIGlmIChpbXBvcnRTcGVjaWZpZXIgPT09IG51bGwpIHJldHVybiBbXTtcbiAgY29uc3QgZ2VuZXJpYyA9IGA8JHthbnlTeW1ib2xOYW1lfT5gO1xuICBjb25zdCB1c2FnZXM6IE1pZ3JhdGFibGVOb2RlW10gPSBbXTtcbiAgY29uc3QgdmlzaXROb2RlID0gKG5vZGU6IHRzLk5vZGUpID0+IHtcbiAgICAvLyBMb29rIGZvciBhIGBuZXdgIGV4cHJlc3Npb24gd2l0aCBubyB0eXBlIGFyZ3VtZW50cyB3aGljaCByZWZlcmVuY2VzIGFuIGltcG9ydCB3ZSBjYXJlIGFib3V0OlxuICAgIC8vIGBuZXcgRm9ybUNvbnRyb2woKWBcbiAgICBpZiAodHMuaXNOZXdFeHByZXNzaW9uKG5vZGUpICYmICFub2RlLnR5cGVBcmd1bWVudHMgJiZcbiAgICAgICAgaXNSZWZlcmVuY2VUb0ltcG9ydCh0eXBlQ2hlY2tlciwgbm9kZS5leHByZXNzaW9uLCBpbXBvcnRTcGVjaWZpZXIpKSB7XG4gICAgICB1c2FnZXMucHVzaCh7bm9kZTogbm9kZS5leHByZXNzaW9uLCBnZW5lcmljfSk7XG4gICAgfVxuICAgIHRzLmZvckVhY2hDaGlsZChub2RlLCB2aXNpdE5vZGUpO1xuICB9O1xuICB0cy5mb3JFYWNoQ2hpbGQoc291cmNlRmlsZSwgdmlzaXROb2RlKTtcbiAgcmV0dXJuIHVzYWdlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRGb3JtQnVpbGRlckNhbGxzKFxuICAgIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlcixcbiAgICBpbXBvcnRTcGVjaWZpZXI6IHRzLkltcG9ydFNwZWNpZmllcnxudWxsKTogTWlncmF0YWJsZU5vZGVbXSB7XG4gIGlmICghaW1wb3J0U3BlY2lmaWVyKSByZXR1cm4gW107XG4gIGNvbnN0IHVzYWdlcyA9IG5ldyBBcnJheTxNaWdyYXRhYmxlTm9kZT4oKTtcbiAgdHMuZm9yRWFjaENoaWxkKHNvdXJjZUZpbGUsIGZ1bmN0aW9uIHZpc2l0Tm9kZShub2RlOiB0cy5Ob2RlKSB7XG4gICAgLy8gTG9vayBmb3IgY2FsbHMgdGhhdCBsb29rIGxpa2UgYGZvby48bWV0aG9kIHRvIG1pZ3JhdGU+YC5cbiAgICBpZiAodHMuaXNDYWxsRXhwcmVzc2lvbihub2RlKSAmJiAhbm9kZS50eXBlQXJndW1lbnRzICYmXG4gICAgICAgIHRzLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKG5vZGUuZXhwcmVzc2lvbikgJiYgdHMuaXNJZGVudGlmaWVyKG5vZGUuZXhwcmVzc2lvbi5uYW1lKSAmJlxuICAgICAgICBidWlsZGVyTWV0aG9kTmFtZXMuaW5jbHVkZXMobm9kZS5leHByZXNzaW9uLm5hbWUudGV4dCkpIHtcbiAgICAgIGNvbnN0IGdlbmVyaWMgPSBgPCR7YW55U3ltYm9sTmFtZX0+YDtcbiAgICAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIHR5cGUgb2YgdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIHJlZmVycyB0byB0aGVcbiAgICAgIC8vIHByb3ZpZGVkIGltcG9ydC5cbiAgICAgIGlmIChpc1JlZmVyZW5jZVRvSW1wb3J0KHR5cGVDaGVja2VyLCBub2RlLmV4cHJlc3Npb24uZXhwcmVzc2lvbiwgaW1wb3J0U3BlY2lmaWVyKSkge1xuICAgICAgICB1c2FnZXMucHVzaCh7bm9kZTogbm9kZS5leHByZXNzaW9uLCBnZW5lcmljfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRzLmZvckVhY2hDaGlsZChub2RlLCB2aXNpdE5vZGUpO1xuICB9KTtcbiAgcmV0dXJuIHVzYWdlcztcbn1cbiJdfQ==
@@ -1,24 +1,14 @@
1
1
  {
2
2
  "schematics": {
3
- "migration-v13-router-link-empty-expression": {
4
- "version": "13.0.0-beta",
5
- "description": "Migrates `[routerLink]=\"\"` in templates to `[routerLink]=\"[]\"` because these links are likely intended to route to the current page with updated fragment/query params.",
6
- "factory": "./migrations/router-link-empty-expression/index"
7
- },
8
- "migration-v13-testbed-teardown": {
9
- "version": "13.0.0-beta",
10
- "description": "In Angular version 13, the `teardown` flag in `TestBed` will be enabled by default. This migration automatically opts out existing apps from the new teardown behavior.",
11
- "factory": "./migrations/testbed-teardown/index"
12
- },
13
- "migration-v13.1-entry-components": {
14
- "version": "13.1.0-beta",
15
- "description": "As of Angular version 13, `entryComponents` are no longer necessary.",
16
- "factory": "./migrations/entry-components/index"
17
- },
18
- "migration-v14-entry-components": {
3
+ "migration-entry-components": {
19
4
  "version": "14.0.0-beta",
20
5
  "description": "As of Angular version 13, `entryComponents` are no longer necessary.",
21
6
  "factory": "./migrations/entry-components/index"
7
+ },
8
+ "migration-v14-typed-forms": {
9
+ "version": "9999.0.0",
10
+ "description": "Experimental migration that adds <any>s for Typed Forms.",
11
+ "factory": "./migrations/typed-forms/index"
22
12
  }
23
13
  }
24
14
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v14.0.0-next.0
2
+ * @license Angular v14.0.0-next.1
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -1,11 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- /// <amd-module name="@angular/core/schematics/migrations/router-link-empty-expression/analyze_template" />
9
- import type { TmplAstBoundAttribute } from '@angular/compiler';
10
- import { ResolvedTemplate } from '../../utils/ng_component_template';
11
- export declare function analyzeResolvedTemplate(template: ResolvedTemplate, compilerModule: typeof import('@angular/compiler')): TmplAstBoundAttribute[] | null;
@@ -1,34 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- (function (factory) {
9
- if (typeof module === "object" && typeof module.exports === "object") {
10
- var v = factory(require, exports);
11
- if (v !== undefined) module.exports = v;
12
- }
13
- else if (typeof define === "function" && define.amd) {
14
- define("@angular/core/schematics/migrations/router-link-empty-expression/analyze_template", ["require", "exports", "@angular/core/schematics/utils/parse_html", "@angular/core/schematics/migrations/router-link-empty-expression/angular/html_routerlink_empty_expr_visitor"], factory);
15
- }
16
- })(function (require, exports) {
17
- "use strict";
18
- Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.analyzeResolvedTemplate = void 0;
20
- const parse_html_1 = require("@angular/core/schematics/utils/parse_html");
21
- const html_routerlink_empty_expr_visitor_1 = require("@angular/core/schematics/migrations/router-link-empty-expression/angular/html_routerlink_empty_expr_visitor");
22
- function analyzeResolvedTemplate(template, compilerModule) {
23
- const templateNodes = (0, parse_html_1.parseHtmlGracefully)(template.content, template.filePath, compilerModule);
24
- if (!templateNodes) {
25
- return null;
26
- }
27
- const visitor = new html_routerlink_empty_expr_visitor_1.RouterLinkEmptyExprVisitor(compilerModule);
28
- // Analyze the Angular Render3 HTML AST and collect all template variable assignments.
29
- visitor.visitAll(templateNodes);
30
- return visitor.emptyRouterLinkExpressions;
31
- }
32
- exports.analyzeResolvedTemplate = analyzeResolvedTemplate;
33
- });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl6ZV90ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL3JvdXRlci1saW5rLWVtcHR5LWV4cHJlc3Npb24vYW5hbHl6ZV90ZW1wbGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7Ozs7SUFLSCwwRUFBMkQ7SUFFM0Qsb0tBQXdGO0lBRXhGLFNBQWdCLHVCQUF1QixDQUNuQyxRQUEwQixFQUMxQixjQUFrRDtRQUNwRCxNQUFNLGFBQWEsR0FBRyxJQUFBLGdDQUFtQixFQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUUvRixJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2xCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLCtEQUEwQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRS9ELHNGQUFzRjtRQUN0RixPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWhDLE9BQU8sT0FBTyxDQUFDLDBCQUEwQixDQUFDO0lBQzVDLENBQUM7SUFmRCwwREFlQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgdHlwZSB7VG1wbEFzdEJvdW5kQXR0cmlidXRlfSBmcm9tICdAYW5ndWxhci9jb21waWxlcic7XG5cbmltcG9ydCB7UmVzb2x2ZWRUZW1wbGF0ZX0gZnJvbSAnLi4vLi4vdXRpbHMvbmdfY29tcG9uZW50X3RlbXBsYXRlJztcbmltcG9ydCB7cGFyc2VIdG1sR3JhY2VmdWxseX0gZnJvbSAnLi4vLi4vdXRpbHMvcGFyc2VfaHRtbCc7XG5cbmltcG9ydCB7Um91dGVyTGlua0VtcHR5RXhwclZpc2l0b3J9IGZyb20gJy4vYW5ndWxhci9odG1sX3JvdXRlcmxpbmtfZW1wdHlfZXhwcl92aXNpdG9yJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFuYWx5emVSZXNvbHZlZFRlbXBsYXRlKFxuICAgIHRlbXBsYXRlOiBSZXNvbHZlZFRlbXBsYXRlLFxuICAgIGNvbXBpbGVyTW9kdWxlOiB0eXBlb2YgaW1wb3J0KCdAYW5ndWxhci9jb21waWxlcicpKTogVG1wbEFzdEJvdW5kQXR0cmlidXRlW118bnVsbCB7XG4gIGNvbnN0IHRlbXBsYXRlTm9kZXMgPSBwYXJzZUh0bWxHcmFjZWZ1bGx5KHRlbXBsYXRlLmNvbnRlbnQsIHRlbXBsYXRlLmZpbGVQYXRoLCBjb21waWxlck1vZHVsZSk7XG5cbiAgaWYgKCF0ZW1wbGF0ZU5vZGVzKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCB2aXNpdG9yID0gbmV3IFJvdXRlckxpbmtFbXB0eUV4cHJWaXNpdG9yKGNvbXBpbGVyTW9kdWxlKTtcblxuICAvLyBBbmFseXplIHRoZSBBbmd1bGFyIFJlbmRlcjMgSFRNTCBBU1QgYW5kIGNvbGxlY3QgYWxsIHRlbXBsYXRlIHZhcmlhYmxlIGFzc2lnbm1lbnRzLlxuICB2aXNpdG9yLnZpc2l0QWxsKHRlbXBsYXRlTm9kZXMpO1xuXG4gIHJldHVybiB2aXNpdG9yLmVtcHR5Um91dGVyTGlua0V4cHJlc3Npb25zO1xufVxuIl19
@@ -1,20 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- /// <amd-module name="@angular/core/schematics/migrations/router-link-empty-expression/angular/html_routerlink_empty_expr_visitor" />
9
- import type { TmplAstBoundAttribute, TmplAstElement, TmplAstTemplate } from '@angular/compiler';
10
- import { TemplateAstVisitor } from '../../../utils/template_ast_visitor';
11
- /**
12
- * HTML AST visitor that traverses the Render3 HTML AST in order to find all
13
- * undefined routerLink asssignment ([routerLink]="").
14
- */
15
- export declare class RouterLinkEmptyExprVisitor extends TemplateAstVisitor {
16
- readonly emptyRouterLinkExpressions: TmplAstBoundAttribute[];
17
- visitElement(element: TmplAstElement): void;
18
- visitTemplate(t: TmplAstTemplate): void;
19
- visitBoundAttribute(node: TmplAstBoundAttribute): void;
20
- }
@@ -1,47 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- (function (factory) {
9
- if (typeof module === "object" && typeof module.exports === "object") {
10
- var v = factory(require, exports);
11
- if (v !== undefined) module.exports = v;
12
- }
13
- else if (typeof define === "function" && define.amd) {
14
- define("@angular/core/schematics/migrations/router-link-empty-expression/angular/html_routerlink_empty_expr_visitor", ["require", "exports", "@angular/core/schematics/utils/template_ast_visitor"], factory);
15
- }
16
- })(function (require, exports) {
17
- "use strict";
18
- Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.RouterLinkEmptyExprVisitor = void 0;
20
- const template_ast_visitor_1 = require("@angular/core/schematics/utils/template_ast_visitor");
21
- /**
22
- * HTML AST visitor that traverses the Render3 HTML AST in order to find all
23
- * undefined routerLink asssignment ([routerLink]="").
24
- */
25
- class RouterLinkEmptyExprVisitor extends template_ast_visitor_1.TemplateAstVisitor {
26
- constructor() {
27
- super(...arguments);
28
- this.emptyRouterLinkExpressions = [];
29
- }
30
- visitElement(element) {
31
- this.visitAll(element.inputs);
32
- this.visitAll(element.children);
33
- }
34
- visitTemplate(t) {
35
- this.visitAll(t.inputs);
36
- this.visitAll(t.children);
37
- }
38
- visitBoundAttribute(node) {
39
- if (node.name === 'routerLink' && node.value instanceof this.compilerModule.ASTWithSource &&
40
- node.value.ast instanceof this.compilerModule.EmptyExpr) {
41
- this.emptyRouterLinkExpressions.push(node);
42
- }
43
- }
44
- }
45
- exports.RouterLinkEmptyExprVisitor = RouterLinkEmptyExprVisitor;
46
- });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbF9yb3V0ZXJsaW5rX2VtcHR5X2V4cHJfdmlzaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL3JvdXRlci1saW5rLWVtcHR5LWV4cHJlc3Npb24vYW5ndWxhci9odG1sX3JvdXRlcmxpbmtfZW1wdHlfZXhwcl92aXNpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7OztJQUdILDhGQUF1RTtJQUV2RTs7O09BR0c7SUFDSCxNQUFhLDBCQUEyQixTQUFRLHlDQUFrQjtRQUFsRTs7WUFDVywrQkFBMEIsR0FBNEIsRUFBRSxDQUFDO1FBa0JwRSxDQUFDO1FBaEJVLFlBQVksQ0FBQyxPQUF1QjtZQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBRVEsYUFBYSxDQUFDLENBQWtCO1lBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFFUSxtQkFBbUIsQ0FBQyxJQUEyQjtZQUN0RCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxJQUFJLElBQUksQ0FBQyxLQUFLLFlBQVksSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhO2dCQUNyRixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsWUFBWSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRTtnQkFDM0QsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM1QztRQUNILENBQUM7S0FDRjtJQW5CRCxnRUFtQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHR5cGUge1RtcGxBc3RCb3VuZEF0dHJpYnV0ZSwgVG1wbEFzdEVsZW1lbnQsIFRtcGxBc3RUZW1wbGF0ZX0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IHtUZW1wbGF0ZUFzdFZpc2l0b3J9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3RlbXBsYXRlX2FzdF92aXNpdG9yJztcblxuLyoqXG4gKiBIVE1MIEFTVCB2aXNpdG9yIHRoYXQgdHJhdmVyc2VzIHRoZSBSZW5kZXIzIEhUTUwgQVNUIGluIG9yZGVyIHRvIGZpbmQgYWxsXG4gKiB1bmRlZmluZWQgcm91dGVyTGluayBhc3NzaWdubWVudCAoW3JvdXRlckxpbmtdPVwiXCIpLlxuICovXG5leHBvcnQgY2xhc3MgUm91dGVyTGlua0VtcHR5RXhwclZpc2l0b3IgZXh0ZW5kcyBUZW1wbGF0ZUFzdFZpc2l0b3Ige1xuICByZWFkb25seSBlbXB0eVJvdXRlckxpbmtFeHByZXNzaW9uczogVG1wbEFzdEJvdW5kQXR0cmlidXRlW10gPSBbXTtcblxuICBvdmVycmlkZSB2aXNpdEVsZW1lbnQoZWxlbWVudDogVG1wbEFzdEVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0QWxsKGVsZW1lbnQuaW5wdXRzKTtcbiAgICB0aGlzLnZpc2l0QWxsKGVsZW1lbnQuY2hpbGRyZW4pO1xuICB9XG5cbiAgb3ZlcnJpZGUgdmlzaXRUZW1wbGF0ZSh0OiBUbXBsQXN0VGVtcGxhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2l0QWxsKHQuaW5wdXRzKTtcbiAgICB0aGlzLnZpc2l0QWxsKHQuY2hpbGRyZW4pO1xuICB9XG5cbiAgb3ZlcnJpZGUgdmlzaXRCb3VuZEF0dHJpYnV0ZShub2RlOiBUbXBsQXN0Qm91bmRBdHRyaWJ1dGUpIHtcbiAgICBpZiAobm9kZS5uYW1lID09PSAncm91dGVyTGluaycgJiYgbm9kZS52YWx1ZSBpbnN0YW5jZW9mIHRoaXMuY29tcGlsZXJNb2R1bGUuQVNUV2l0aFNvdXJjZSAmJlxuICAgICAgICBub2RlLnZhbHVlLmFzdCBpbnN0YW5jZW9mIHRoaXMuY29tcGlsZXJNb2R1bGUuRW1wdHlFeHByKSB7XG4gICAgICB0aGlzLmVtcHR5Um91dGVyTGlua0V4cHJlc3Npb25zLnB1c2gobm9kZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,11 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- /// <amd-module name="@angular/core/schematics/migrations/router-link-empty-expression" />
9
- import { Rule } from '@angular-devkit/schematics';
10
- /** Entry point for the RouterLink empty expression migration. */
11
- export default function (): Rule;
@@ -1,170 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
- return new (P || (P = Promise))(function (resolve, reject) {
11
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
- step((generator = generator.apply(thisArg, _arguments || [])).next());
15
- });
16
- };
17
- (function (factory) {
18
- if (typeof module === "object" && typeof module.exports === "object") {
19
- var v = factory(require, exports);
20
- if (v !== undefined) module.exports = v;
21
- }
22
- else if (typeof define === "function" && define.amd) {
23
- define("@angular/core/schematics/migrations/router-link-empty-expression", ["require", "exports", "@angular-devkit/core", "@angular-devkit/schematics", "path", "@angular/core/schematics/utils/load_esm", "@angular/core/schematics/utils/ng_component_template", "@angular/core/schematics/utils/project_tsconfig_paths", "@angular/core/schematics/utils/typescript/compiler_host", "@angular/core/schematics/migrations/router-link-empty-expression/analyze_template"], factory);
24
- }
25
- })(function (require, exports) {
26
- "use strict";
27
- Object.defineProperty(exports, "__esModule", { value: true });
28
- const core_1 = require("@angular-devkit/core");
29
- const schematics_1 = require("@angular-devkit/schematics");
30
- const path_1 = require("path");
31
- const load_esm_1 = require("@angular/core/schematics/utils/load_esm");
32
- const ng_component_template_1 = require("@angular/core/schematics/utils/ng_component_template");
33
- const project_tsconfig_paths_1 = require("@angular/core/schematics/utils/project_tsconfig_paths");
34
- const compiler_host_1 = require("@angular/core/schematics/utils/typescript/compiler_host");
35
- const analyze_template_1 = require("@angular/core/schematics/migrations/router-link-empty-expression/analyze_template");
36
- const README_URL = 'https://github.com/angular/angular/blob/master/packages/core/schematics/migrations/router-link-empty-expression/README.md';
37
- /** Entry point for the RouterLink empty expression migration. */
38
- function default_1() {
39
- return (tree, context) => __awaiter(this, void 0, void 0, function* () {
40
- const { buildPaths, testPaths } = yield (0, project_tsconfig_paths_1.getProjectTsConfigPaths)(tree);
41
- const basePath = process.cwd();
42
- if (!buildPaths.length && !testPaths.length) {
43
- throw new schematics_1.SchematicsException('Could not find any tsconfig file. Cannot check templates for empty routerLinks.');
44
- }
45
- let compilerModule;
46
- try {
47
- // Load ESM `@angular/compiler` using the TypeScript dynamic import workaround.
48
- // Once TypeScript provides support for keeping the dynamic import this workaround can be
49
- // changed to a direct dynamic import.
50
- compilerModule = yield (0, load_esm_1.loadEsmModule)('@angular/compiler');
51
- }
52
- catch (e) {
53
- throw new schematics_1.SchematicsException(`Unable to load the '@angular/compiler' package. Details: ${e.message}`);
54
- }
55
- for (const tsconfigPath of [...buildPaths, ...testPaths]) {
56
- runEmptyRouterLinkExpressionMigration(tree, tsconfigPath, basePath, context.logger, compilerModule);
57
- }
58
- });
59
- }
60
- exports.default = default_1;
61
- /**
62
- * Runs the routerLink migration, changing routerLink="" to routerLink="[]" and notifying developers
63
- * which templates received updates.
64
- */
65
- function runEmptyRouterLinkExpressionMigration(tree, tsconfigPath, basePath, logger, compilerModule) {
66
- const { program } = (0, compiler_host_1.createMigrationProgram)(tree, tsconfigPath, basePath);
67
- const typeChecker = program.getTypeChecker();
68
- const templateVisitor = new ng_component_template_1.NgComponentTemplateVisitor(typeChecker, basePath, tree);
69
- const sourceFiles = program.getSourceFiles().filter(sourceFile => (0, compiler_host_1.canMigrateFile)(basePath, sourceFile, program));
70
- // Analyze source files by detecting HTML templates.
71
- sourceFiles.forEach(sourceFile => templateVisitor.visitNode(sourceFile));
72
- const { resolvedTemplates } = templateVisitor;
73
- fixEmptyRouterlinks(resolvedTemplates, tree, logger, compilerModule);
74
- }
75
- function fixEmptyRouterlinks(resolvedTemplates, tree, logger, compilerModule) {
76
- var _a;
77
- const basePath = process.cwd();
78
- const collectedFixes = [];
79
- const fixesByFile = getFixesByFile(resolvedTemplates, compilerModule);
80
- for (const [absFilePath, templateFixes] of fixesByFile) {
81
- const treeFilePath = (0, path_1.relative)((0, core_1.normalize)(basePath), (0, core_1.normalize)(absFilePath));
82
- const originalFileContent = (_a = tree.read(treeFilePath)) === null || _a === void 0 ? void 0 : _a.toString();
83
- if (originalFileContent === undefined) {
84
- logger.error(`Failed to read file containing template; cannot apply fixes for empty routerLink expressions in ${treeFilePath}.`);
85
- continue;
86
- }
87
- const updater = tree.beginUpdate(treeFilePath);
88
- for (const templateFix of templateFixes) {
89
- // Sort backwards so string replacements do not conflict
90
- templateFix.replacements.sort((a, b) => b.start - a.start);
91
- for (const replacement of templateFix.replacements) {
92
- updater.remove(replacement.start, replacement.end - replacement.start);
93
- updater.insertLeft(replacement.start, replacement.newContent);
94
- }
95
- const displayFilePath = (0, core_1.normalize)((0, path_1.relative)(basePath, templateFix.originalTemplate.filePath));
96
- for (const n of templateFix.emptyRouterlinkExpressions) {
97
- const { line, character } = templateFix.originalTemplate.getCharacterAndLineOfPosition(n.sourceSpan.start.offset);
98
- collectedFixes.push(`${displayFilePath}@${line + 1}:${character + 1}`);
99
- }
100
- tree.commitUpdate(updater);
101
- }
102
- }
103
- if (collectedFixes.length > 0) {
104
- logger.info('---- RouterLink empty assignment schematic ----');
105
- logger.info('The behavior of empty/`undefined` inputs for `routerLink` has changed');
106
- logger.info('from linking to the current page to instead completely disable the link.');
107
- logger.info(`Read more about this change here: ${README_URL}`);
108
- logger.info('');
109
- logger.info('The following empty `routerLink` inputs were found and fixed:');
110
- collectedFixes.forEach(fix => logger.warn(`⮑ ${fix}`));
111
- }
112
- }
113
- /**
114
- * Returns fixes for nodes in templates which contain empty routerLink assignments, grouped by file.
115
- */
116
- function getFixesByFile(templates, compilerModule) {
117
- const fixesByFile = new Map();
118
- for (const template of templates) {
119
- const templateFix = fixEmptyRouterlinksInTemplate(template, compilerModule);
120
- if (templateFix === null) {
121
- continue;
122
- }
123
- const file = template.filePath;
124
- if (fixesByFile.has(file)) {
125
- if (template.inline) {
126
- // External templates may be referenced multiple times in the project
127
- // (e.g. if shared between components), but we only want to record them
128
- // once. On the other hand, an inline template resides in a TS file that
129
- // may contain multiple inline templates.
130
- fixesByFile.get(file).push(templateFix);
131
- }
132
- }
133
- else {
134
- fixesByFile.set(file, [templateFix]);
135
- }
136
- }
137
- return fixesByFile;
138
- }
139
- function fixEmptyRouterlinksInTemplate(template, compilerModule) {
140
- const emptyRouterlinkExpressions = (0, analyze_template_1.analyzeResolvedTemplate)(template, compilerModule);
141
- if (!emptyRouterlinkExpressions || emptyRouterlinkExpressions.length === 0) {
142
- return null;
143
- }
144
- const replacements = [];
145
- for (const expr of emptyRouterlinkExpressions) {
146
- let replacement;
147
- if (expr.valueSpan) {
148
- replacement = {
149
- start: template.start + expr.value.sourceSpan.start,
150
- end: template.start + expr.value.sourceSpan.end,
151
- newContent: '[]',
152
- };
153
- }
154
- else {
155
- const spanLength = expr.sourceSpan.end.offset - expr.sourceSpan.start.offset;
156
- // `expr.value.sourceSpan.start` is the start of the very beginning of the binding since there
157
- // is no value
158
- const endOfExpr = template.start + expr.value.sourceSpan.start + spanLength;
159
- replacement = {
160
- start: endOfExpr,
161
- end: endOfExpr,
162
- newContent: '="[]"',
163
- };
164
- }
165
- replacements.push(replacement);
166
- }
167
- return { originalTemplate: template, replacements, emptyRouterlinkExpressions };
168
- }
169
- });
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NjaGVtYXRpY3MvbWlncmF0aW9ucy9yb3V0ZXItbGluay1lbXB0eS1leHByZXNzaW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRUgsK0NBQXdEO0lBQ3hELDJEQUE2RjtJQUU3RiwrQkFBOEI7SUFDOUIsc0VBQW1EO0lBRW5ELGdHQUErRjtJQUMvRixrR0FBMkU7SUFDM0UsMkZBQTRGO0lBRTVGLHdIQUEyRDtJQUkzRCxNQUFNLFVBQVUsR0FDWiwySEFBMkgsQ0FBQztJQWFoSSxpRUFBaUU7SUFDakU7UUFDRSxPQUFPLENBQU8sSUFBVSxFQUFFLE9BQXlCLEVBQUUsRUFBRTtZQUNyRCxNQUFNLEVBQUMsVUFBVSxFQUFFLFNBQVMsRUFBQyxHQUFHLE1BQU0sSUFBQSxnREFBdUIsRUFBQyxJQUFJLENBQUMsQ0FBQztZQUNwRSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO2dCQUMzQyxNQUFNLElBQUksZ0NBQW1CLENBQ3pCLGlGQUFpRixDQUFDLENBQUM7YUFDeEY7WUFFRCxJQUFJLGNBQWMsQ0FBQztZQUNuQixJQUFJO2dCQUNGLCtFQUErRTtnQkFDL0UseUZBQXlGO2dCQUN6RixzQ0FBc0M7Z0JBQ3RDLGNBQWMsR0FBRyxNQUFNLElBQUEsd0JBQWEsRUFBcUMsbUJBQW1CLENBQUMsQ0FBQzthQUMvRjtZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLE1BQU0sSUFBSSxnQ0FBbUIsQ0FDekIsNERBQTRELENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2FBQzlFO1lBRUQsS0FBSyxNQUFNLFlBQVksSUFBSSxDQUFDLEdBQUcsVUFBVSxFQUFFLEdBQUcsU0FBUyxDQUFDLEVBQUU7Z0JBQ3hELHFDQUFxQyxDQUNqQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO2FBQ25FO1FBQ0gsQ0FBQyxDQUFBLENBQUM7SUFDSixDQUFDO0lBMUJELDRCQTBCQztJQUVEOzs7T0FHRztJQUNILFNBQVMscUNBQXFDLENBQzFDLElBQVUsRUFBRSxZQUFvQixFQUFFLFFBQWdCLEVBQUUsTUFBYyxFQUNsRSxjQUFrRDtRQUNwRCxNQUFNLEVBQUMsT0FBTyxFQUFDLEdBQUcsSUFBQSxzQ0FBc0IsRUFBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM3QyxNQUFNLGVBQWUsR0FBRyxJQUFJLGtEQUEwQixDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEYsTUFBTSxXQUFXLEdBQ2IsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUEsOEJBQWMsRUFBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFakcsb0RBQW9EO1FBQ3BELFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFekUsTUFBTSxFQUFDLGlCQUFpQixFQUFDLEdBQUcsZUFBZSxDQUFDO1FBQzVDLG1CQUFtQixDQUFDLGlCQUFpQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELFNBQVMsbUJBQW1CLENBQ3hCLGlCQUFxQyxFQUFFLElBQVUsRUFBRSxNQUFjLEVBQ2pFLGNBQWtEOztRQUNwRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDL0IsTUFBTSxjQUFjLEdBQWEsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUV0RSxLQUFLLE1BQU0sQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLElBQUksV0FBVyxFQUFFO1lBQ3RELE1BQU0sWUFBWSxHQUFHLElBQUEsZUFBUSxFQUFDLElBQUEsZ0JBQVMsRUFBQyxRQUFRLENBQUMsRUFBRSxJQUFBLGdCQUFTLEVBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUMzRSxNQUFNLG1CQUFtQixHQUFHLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsMENBQUUsUUFBUSxFQUFFLENBQUM7WUFDaEUsSUFBSSxtQkFBbUIsS0FBSyxTQUFTLEVBQUU7Z0JBQ3JDLE1BQU0sQ0FBQyxLQUFLLENBQ1IsbUdBQ0ksWUFBWSxHQUFHLENBQUMsQ0FBQztnQkFDekIsU0FBUzthQUNWO1lBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMvQyxLQUFLLE1BQU0sV0FBVyxJQUFJLGFBQWEsRUFBRTtnQkFDdkMsd0RBQXdEO2dCQUN4RCxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzRCxLQUFLLE1BQU0sV0FBVyxJQUFJLFdBQVcsQ0FBQyxZQUFZLEVBQUU7b0JBQ2xELE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDdkUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDL0Q7Z0JBQ0QsTUFBTSxlQUFlLEdBQUcsSUFBQSxnQkFBUyxFQUFDLElBQUEsZUFBUSxFQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDN0YsS0FBSyxNQUFNLENBQUMsSUFBSSxXQUFXLENBQUMsMEJBQTBCLEVBQUU7b0JBQ3RELE1BQU0sRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFDLEdBQ25CLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDMUYsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLGVBQWUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUN4RTtnQkFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzVCO1NBQ0Y7UUFFRCxJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsaURBQWlELENBQUMsQ0FBQztZQUMvRCxNQUFNLENBQUMsSUFBSSxDQUFDLHVFQUF1RSxDQUFDLENBQUM7WUFDckYsTUFBTSxDQUFDLElBQUksQ0FBQywwRUFBMEUsQ0FBQyxDQUFDO1lBQ3hGLE1BQU0sQ0FBQyxJQUFJLENBQUMscUNBQXFDLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDL0QsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLCtEQUErRCxDQUFDLENBQUM7WUFDN0UsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDMUQ7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTLGNBQWMsQ0FDbkIsU0FBNkIsRUFDN0IsY0FBa0Q7UUFDcEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQTJCLENBQUM7UUFDdkQsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLEVBQUU7WUFDaEMsTUFBTSxXQUFXLEdBQUcsNkJBQTZCLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQzVFLElBQUksV0FBVyxLQUFLLElBQUksRUFBRTtnQkFDeEIsU0FBUzthQUNWO1lBRUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUMvQixJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3pCLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRTtvQkFDbkIscUVBQXFFO29CQUNyRSx1RUFBdUU7b0JBQ3ZFLHdFQUF3RTtvQkFDeEUseUNBQXlDO29CQUN6QyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztpQkFDMUM7YUFDRjtpQkFBTTtnQkFDTCxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7YUFDdEM7U0FDRjtRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxTQUFTLDZCQUE2QixDQUNsQyxRQUEwQixFQUFFLGNBQWtEO1FBRWhGLE1BQU0sMEJBQTBCLEdBQUcsSUFBQSwwQ0FBdUIsRUFBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFckYsSUFBSSxDQUFDLDBCQUEwQixJQUFJLDBCQUEwQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDMUUsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE1BQU0sWUFBWSxHQUFrQixFQUFFLENBQUM7UUFDdkMsS0FBSyxNQUFNLElBQUksSUFBSSwwQkFBMEIsRUFBRTtZQUM3QyxJQUFJLFdBQXdCLENBQUM7WUFDN0IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNsQixXQUFXLEdBQUc7b0JBQ1osS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSztvQkFDbkQsR0FBRyxFQUFFLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRztvQkFDL0MsVUFBVSxFQUFFLElBQUk7aUJBQ2pCLENBQUM7YUFDSDtpQkFBTTtnQkFDTCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO2dCQUM3RSw4RkFBOEY7Z0JBQzlGLGNBQWM7Z0JBQ2QsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDO2dCQUM1RSxXQUFXLEdBQUc7b0JBQ1osS0FBSyxFQUFFLFNBQVM7b0JBQ2hCLEdBQUcsRUFBRSxTQUFTO29CQUNkLFVBQVUsRUFBRSxPQUFPO2lCQUNwQixDQUFDO2FBQ0g7WUFDRCxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2hDO1FBRUQsT0FBTyxFQUFDLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsMEJBQTBCLEVBQUMsQ0FBQztJQUNoRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7bG9nZ2luZywgbm9ybWFsaXplfSBmcm9tICdAYW5ndWxhci1kZXZraXQvY29yZSc7XG5pbXBvcnQge1J1bGUsIFNjaGVtYXRpY0NvbnRleHQsIFNjaGVtYXRpY3NFeGNlcHRpb24sIFRyZWV9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9zY2hlbWF0aWNzJztcbmltcG9ydCB0eXBlIHtUbXBsQXN0Qm91bmRBdHRyaWJ1dGV9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcbmltcG9ydCB7cmVsYXRpdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtsb2FkRXNtTW9kdWxlfSBmcm9tICcuLi8uLi91dGlscy9sb2FkX2VzbSc7XG5cbmltcG9ydCB7TmdDb21wb25lbnRUZW1wbGF0ZVZpc2l0b3IsIFJlc29sdmVkVGVtcGxhdGV9IGZyb20gJy4uLy4uL3V0aWxzL25nX2NvbXBvbmVudF90ZW1wbGF0ZSc7XG5pbXBvcnQge2dldFByb2plY3RUc0NvbmZpZ1BhdGhzfSBmcm9tICcuLi8uLi91dGlscy9wcm9qZWN0X3RzY29uZmlnX3BhdGhzJztcbmltcG9ydCB7Y2FuTWlncmF0ZUZpbGUsIGNyZWF0ZU1pZ3JhdGlvblByb2dyYW19IGZyb20gJy4uLy4uL3V0aWxzL3R5cGVzY3JpcHQvY29tcGlsZXJfaG9zdCc7XG5cbmltcG9ydCB7YW5hbHl6ZVJlc29sdmVkVGVtcGxhdGV9IGZyb20gJy4vYW5hbHl6ZV90ZW1wbGF0ZSc7XG5cbnR5cGUgTG9nZ2VyID0gbG9nZ2luZy5Mb2dnZXJBcGk7XG5cbmNvbnN0IFJFQURNRV9VUkwgPVxuICAgICdodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL2NvcmUvc2NoZW1hdGljcy9taWdyYXRpb25zL3JvdXRlci1saW5rLWVtcHR5LWV4cHJlc3Npb24vUkVBRE1FLm1kJztcblxuaW50ZXJmYWNlIFJlcGxhY2VtZW50IHtcbiAgc3RhcnQ6IG51bWJlcjtcbiAgZW5kOiBudW1iZXI7XG4gIG5ld0NvbnRlbnQ6IHN0cmluZztcbn1cbmludGVyZmFjZSBGaXhlZFRlbXBsYXRlIHtcbiAgb3JpZ2luYWxUZW1wbGF0ZTogUmVzb2x2ZWRUZW1wbGF0ZTtcbiAgcmVwbGFjZW1lbnRzOiBSZXBsYWNlbWVudFtdO1xuICBlbXB0eVJvdXRlcmxpbmtFeHByZXNzaW9uczogVG1wbEFzdEJvdW5kQXR0cmlidXRlW107XG59XG5cbi8qKiBFbnRyeSBwb2ludCBmb3IgdGhlIFJvdXRlckxpbmsgZW1wdHkgZXhwcmVzc2lvbiBtaWdyYXRpb24uICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpOiBSdWxlIHtcbiAgcmV0dXJuIGFzeW5jICh0cmVlOiBUcmVlLCBjb250ZXh0OiBTY2hlbWF0aWNDb250ZXh0KSA9PiB7XG4gICAgY29uc3Qge2J1aWxkUGF0aHMsIHRlc3RQYXRoc30gPSBhd2FpdCBnZXRQcm9qZWN0VHNDb25maWdQYXRocyh0cmVlKTtcbiAgICBjb25zdCBiYXNlUGF0aCA9IHByb2Nlc3MuY3dkKCk7XG5cbiAgICBpZiAoIWJ1aWxkUGF0aHMubGVuZ3RoICYmICF0ZXN0UGF0aHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgU2NoZW1hdGljc0V4Y2VwdGlvbihcbiAgICAgICAgICAnQ291bGQgbm90IGZpbmQgYW55IHRzY29uZmlnIGZpbGUuIENhbm5vdCBjaGVjayB0ZW1wbGF0ZXMgZm9yIGVtcHR5IHJvdXRlckxpbmtzLicpO1xuICAgIH1cblxuICAgIGxldCBjb21waWxlck1vZHVsZTtcbiAgICB0cnkge1xuICAgICAgLy8gTG9hZCBFU00gYEBhbmd1bGFyL2NvbXBpbGVyYCB1c2luZyB0aGUgVHlwZVNjcmlwdCBkeW5hbWljIGltcG9ydCB3b3JrYXJvdW5kLlxuICAgICAgLy8gT25jZSBUeXBlU2NyaXB0IHByb3ZpZGVzIHN1cHBvcnQgZm9yIGtlZXBpbmcgdGhlIGR5bmFtaWMgaW1wb3J0IHRoaXMgd29ya2Fyb3VuZCBjYW4gYmVcbiAgICAgIC8vIGNoYW5nZWQgdG8gYSBkaXJlY3QgZHluYW1pYyBpbXBvcnQuXG4gICAgICBjb21waWxlck1vZHVsZSA9IGF3YWl0IGxvYWRFc21Nb2R1bGU8dHlwZW9mIGltcG9ydCgnQGFuZ3VsYXIvY29tcGlsZXInKT4oJ0Bhbmd1bGFyL2NvbXBpbGVyJyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IFNjaGVtYXRpY3NFeGNlcHRpb24oXG4gICAgICAgICAgYFVuYWJsZSB0byBsb2FkIHRoZSAnQGFuZ3VsYXIvY29tcGlsZXInIHBhY2thZ2UuIERldGFpbHM6ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgdHNjb25maWdQYXRoIG9mIFsuLi5idWlsZFBhdGhzLCAuLi50ZXN0UGF0aHNdKSB7XG4gICAgICBydW5FbXB0eVJvdXRlckxpbmtFeHByZXNzaW9uTWlncmF0aW9uKFxuICAgICAgICAgIHRyZWUsIHRzY29uZmlnUGF0aCwgYmFzZVBhdGgsIGNvbnRleHQubG9nZ2VyLCBjb21waWxlck1vZHVsZSk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFJ1bnMgdGhlIHJvdXRlckxpbmsgbWlncmF0aW9uLCBjaGFuZ2luZyByb3V0ZXJMaW5rPVwiXCIgdG8gcm91dGVyTGluaz1cIltdXCIgYW5kIG5vdGlmeWluZyBkZXZlbG9wZXJzXG4gKiB3aGljaCB0ZW1wbGF0ZXMgcmVjZWl2ZWQgdXBkYXRlcy5cbiAqL1xuZnVuY3Rpb24gcnVuRW1wdHlSb3V0ZXJMaW5rRXhwcmVzc2lvbk1pZ3JhdGlvbihcbiAgICB0cmVlOiBUcmVlLCB0c2NvbmZpZ1BhdGg6IHN0cmluZywgYmFzZVBhdGg6IHN0cmluZywgbG9nZ2VyOiBMb2dnZXIsXG4gICAgY29tcGlsZXJNb2R1bGU6IHR5cGVvZiBpbXBvcnQoJ0Bhbmd1bGFyL2NvbXBpbGVyJykpIHtcbiAgY29uc3Qge3Byb2dyYW19ID0gY3JlYXRlTWlncmF0aW9uUHJvZ3JhbSh0cmVlLCB0c2NvbmZpZ1BhdGgsIGJhc2VQYXRoKTtcbiAgY29uc3QgdHlwZUNoZWNrZXIgPSBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCk7XG4gIGNvbnN0IHRlbXBsYXRlVmlzaXRvciA9IG5ldyBOZ0NvbXBvbmVudFRlbXBsYXRlVmlzaXRvcih0eXBlQ2hlY2tlciwgYmFzZVBhdGgsIHRyZWUpO1xuICBjb25zdCBzb3VyY2VGaWxlcyA9XG4gICAgICBwcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkuZmlsdGVyKHNvdXJjZUZpbGUgPT4gY2FuTWlncmF0ZUZpbGUoYmFzZVBhdGgsIHNvdXJjZUZpbGUsIHByb2dyYW0pKTtcblxuICAvLyBBbmFseXplIHNvdXJjZSBmaWxlcyBieSBkZXRlY3RpbmcgSFRNTCB0ZW1wbGF0ZXMuXG4gIHNvdXJjZUZpbGVzLmZvckVhY2goc291cmNlRmlsZSA9PiB0ZW1wbGF0ZVZpc2l0b3IudmlzaXROb2RlKHNvdXJjZUZpbGUpKTtcblxuICBjb25zdCB7cmVzb2x2ZWRUZW1wbGF0ZXN9ID0gdGVtcGxhdGVWaXNpdG9yO1xuICBmaXhFbXB0eVJvdXRlcmxpbmtzKHJlc29sdmVkVGVtcGxhdGVzLCB0cmVlLCBsb2dnZXIsIGNvbXBpbGVyTW9kdWxlKTtcbn1cblxuZnVuY3Rpb24gZml4RW1wdHlSb3V0ZXJsaW5rcyhcbiAgICByZXNvbHZlZFRlbXBsYXRlczogUmVzb2x2ZWRUZW1wbGF0ZVtdLCB0cmVlOiBUcmVlLCBsb2dnZXI6IExvZ2dlcixcbiAgICBjb21waWxlck1vZHVsZTogdHlwZW9mIGltcG9ydCgnQGFuZ3VsYXIvY29tcGlsZXInKSkge1xuICBjb25zdCBiYXNlUGF0aCA9IHByb2Nlc3MuY3dkKCk7XG4gIGNvbnN0IGNvbGxlY3RlZEZpeGVzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBmaXhlc0J5RmlsZSA9IGdldEZpeGVzQnlGaWxlKHJlc29sdmVkVGVtcGxhdGVzLCBjb21waWxlck1vZHVsZSk7XG5cbiAgZm9yIChjb25zdCBbYWJzRmlsZVBhdGgsIHRlbXBsYXRlRml4ZXNdIG9mIGZpeGVzQnlGaWxlKSB7XG4gICAgY29uc3QgdHJlZUZpbGVQYXRoID0gcmVsYXRpdmUobm9ybWFsaXplKGJhc2VQYXRoKSwgbm9ybWFsaXplKGFic0ZpbGVQYXRoKSk7XG4gICAgY29uc3Qgb3JpZ2luYWxGaWxlQ29udGVudCA9IHRyZWUucmVhZCh0cmVlRmlsZVBhdGgpPy50b1N0cmluZygpO1xuICAgIGlmIChvcmlnaW5hbEZpbGVDb250ZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGxvZ2dlci5lcnJvcihcbiAgICAgICAgICBgRmFpbGVkIHRvIHJlYWQgZmlsZSBjb250YWluaW5nIHRlbXBsYXRlOyBjYW5ub3QgYXBwbHkgZml4ZXMgZm9yIGVtcHR5IHJvdXRlckxpbmsgZXhwcmVzc2lvbnMgaW4gJHtcbiAgICAgICAgICAgICAgdHJlZUZpbGVQYXRofS5gKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZXIgPSB0cmVlLmJlZ2luVXBkYXRlKHRyZWVGaWxlUGF0aCk7XG4gICAgZm9yIChjb25zdCB0ZW1wbGF0ZUZpeCBvZiB0ZW1wbGF0ZUZpeGVzKSB7XG4gICAgICAvLyBTb3J0IGJhY2t3YXJkcyBzbyBzdHJpbmcgcmVwbGFjZW1lbnRzIGRvIG5vdCBjb25mbGljdFxuICAgICAgdGVtcGxhdGVGaXgucmVwbGFjZW1lbnRzLnNvcnQoKGEsIGIpID0+IGIuc3RhcnQgLSBhLnN0YXJ0KTtcbiAgICAgIGZvciAoY29uc3QgcmVwbGFjZW1lbnQgb2YgdGVtcGxhdGVGaXgucmVwbGFjZW1lbnRzKSB7XG4gICAgICAgIHVwZGF0ZXIucmVtb3ZlKHJlcGxhY2VtZW50LnN0YXJ0LCByZXBsYWNlbWVudC5lbmQgLSByZXBsYWNlbWVudC5zdGFydCk7XG4gICAgICAgIHVwZGF0ZXIuaW5zZXJ0TGVmdChyZXBsYWNlbWVudC5zdGFydCwgcmVwbGFjZW1lbnQubmV3Q29udGVudCk7XG4gICAgICB9XG4gICAgICBjb25zdCBkaXNwbGF5RmlsZVBhdGggPSBub3JtYWxpemUocmVsYXRpdmUoYmFzZVBhdGgsIHRlbXBsYXRlRml4Lm9yaWdpbmFsVGVtcGxhdGUuZmlsZVBhdGgpKTtcbiAgICAgIGZvciAoY29uc3QgbiBvZiB0ZW1wbGF0ZUZpeC5lbXB0eVJvdXRlcmxpbmtFeHByZXNzaW9ucykge1xuICAgICAgICBjb25zdCB7bGluZSwgY2hhcmFjdGVyfSA9XG4gICAgICAgICAgICB0ZW1wbGF0ZUZpeC5vcmlnaW5hbFRlbXBsYXRlLmdldENoYXJhY3RlckFuZExpbmVPZlBvc2l0aW9uKG4uc291cmNlU3Bhbi5zdGFydC5vZmZzZXQpO1xuICAgICAgICBjb2xsZWN0ZWRGaXhlcy5wdXNoKGAke2Rpc3BsYXlGaWxlUGF0aH1AJHtsaW5lICsgMX06JHtjaGFyYWN0ZXIgKyAxfWApO1xuICAgICAgfVxuICAgICAgdHJlZS5jb21taXRVcGRhdGUodXBkYXRlcik7XG4gICAgfVxuICB9XG5cbiAgaWYgKGNvbGxlY3RlZEZpeGVzLmxlbmd0aCA+IDApIHtcbiAgICBsb2dnZXIuaW5mbygnLS0tLSBSb3V0ZXJMaW5rIGVtcHR5IGFzc2lnbm1lbnQgc2NoZW1hdGljIC0tLS0nKTtcbiAgICBsb2dnZXIuaW5mbygnVGhlIGJlaGF2aW9yIG9mIGVtcHR5L2B1bmRlZmluZWRgIGlucHV0cyBmb3IgYHJvdXRlckxpbmtgIGhhcyBjaGFuZ2VkJyk7XG4gICAgbG9nZ2VyLmluZm8oJ2Zyb20gbGlua2luZyB0byB0aGUgY3VycmVudCBwYWdlIHRvIGluc3RlYWQgY29tcGxldGVseSBkaXNhYmxlIHRoZSBsaW5rLicpO1xuICAgIGxvZ2dlci5pbmZvKGBSZWFkIG1vcmUgYWJvdXQgdGhpcyBjaGFuZ2UgaGVyZTogJHtSRUFETUVfVVJMfWApO1xuICAgIGxvZ2dlci5pbmZvKCcnKTtcbiAgICBsb2dnZXIuaW5mbygnVGhlIGZvbGxvd2luZyBlbXB0eSBgcm91dGVyTGlua2AgaW5wdXRzIHdlcmUgZm91bmQgYW5kIGZpeGVkOicpO1xuICAgIGNvbGxlY3RlZEZpeGVzLmZvckVhY2goZml4ID0+IGxvZ2dlci53YXJuKGDirpEgICAke2ZpeH1gKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIGZpeGVzIGZvciBub2RlcyBpbiB0ZW1wbGF0ZXMgd2hpY2ggY29udGFpbiBlbXB0eSByb3V0ZXJMaW5rIGFzc2lnbm1lbnRzLCBncm91cGVkIGJ5IGZpbGUuXG4gKi9cbmZ1bmN0aW9uIGdldEZpeGVzQnlGaWxlKFxuICAgIHRlbXBsYXRlczogUmVzb2x2ZWRUZW1wbGF0ZVtdLFxuICAgIGNvbXBpbGVyTW9kdWxlOiB0eXBlb2YgaW1wb3J0KCdAYW5ndWxhci9jb21waWxlcicpKTogTWFwPHN0cmluZywgRml4ZWRUZW1wbGF0ZVtdPiB7XG4gIGNvbnN0IGZpeGVzQnlGaWxlID0gbmV3IE1hcDxzdHJpbmcsIEZpeGVkVGVtcGxhdGVbXT4oKTtcbiAgZm9yIChjb25zdCB0ZW1wbGF0ZSBvZiB0ZW1wbGF0ZXMpIHtcbiAgICBjb25zdCB0ZW1wbGF0ZUZpeCA9IGZpeEVtcHR5Um91dGVybGlua3NJblRlbXBsYXRlKHRlbXBsYXRlLCBjb21waWxlck1vZHVsZSk7XG4gICAgaWYgKHRlbXBsYXRlRml4ID09PSBudWxsKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWxlID0gdGVtcGxhdGUuZmlsZVBhdGg7XG4gICAgaWYgKGZpeGVzQnlGaWxlLmhhcyhmaWxlKSkge1xuICAgICAgaWYgKHRlbXBsYXRlLmlubGluZSkge1xuICAgICAgICAvLyBFeHRlcm5hbCB0ZW1wbGF0ZXMgbWF5IGJlIHJlZmVyZW5jZWQgbXVsdGlwbGUgdGltZXMgaW4gdGhlIHByb2plY3RcbiAgICAgICAgLy8gKGUuZy4gaWYgc2hhcmVkIGJldHdlZW4gY29tcG9uZW50cyksIGJ1dCB3ZSBvbmx5IHdhbnQgdG8gcmVjb3JkIHRoZW1cbiAgICAgICAgLy8gb25jZS4gT24gdGhlIG90aGVyIGhhbmQsIGFuIGlubGluZSB0ZW1wbGF0ZSByZXNpZGVzIGluIGEgVFMgZmlsZSB0aGF0XG4gICAgICAgIC8vIG1heSBjb250YWluIG11bHRpcGxlIGlubGluZSB0ZW1wbGF0ZXMuXG4gICAgICAgIGZpeGVzQnlGaWxlLmdldChmaWxlKSEucHVzaCh0ZW1wbGF0ZUZpeCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpeGVzQnlGaWxlLnNldChmaWxlLCBbdGVtcGxhdGVGaXhdKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZml4ZXNCeUZpbGU7XG59XG5cbmZ1bmN0aW9uIGZpeEVtcHR5Um91dGVybGlua3NJblRlbXBsYXRlKFxuICAgIHRlbXBsYXRlOiBSZXNvbHZlZFRlbXBsYXRlLCBjb21waWxlck1vZHVsZTogdHlwZW9mIGltcG9ydCgnQGFuZ3VsYXIvY29tcGlsZXInKSk6IEZpeGVkVGVtcGxhdGV8XG4gICAgbnVsbCB7XG4gIGNvbnN0IGVtcHR5Um91dGVybGlua0V4cHJlc3Npb25zID0gYW5hbHl6ZVJlc29sdmVkVGVtcGxhdGUodGVtcGxhdGUsIGNvbXBpbGVyTW9kdWxlKTtcblxuICBpZiAoIWVtcHR5Um91dGVybGlua0V4cHJlc3Npb25zIHx8IGVtcHR5Um91dGVybGlua0V4cHJlc3Npb25zLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgcmVwbGFjZW1lbnRzOiBSZXBsYWNlbWVudFtdID0gW107XG4gIGZvciAoY29uc3QgZXhwciBvZiBlbXB0eVJvdXRlcmxpbmtFeHByZXNzaW9ucykge1xuICAgIGxldCByZXBsYWNlbWVudDogUmVwbGFjZW1lbnQ7XG4gICAgaWYgKGV4cHIudmFsdWVTcGFuKSB7XG4gICAgICByZXBsYWNlbWVudCA9IHtcbiAgICAgICAgc3RhcnQ6IHRlbXBsYXRlLnN0YXJ0ICsgZXhwci52YWx1ZS5zb3VyY2VTcGFuLnN0YXJ0LFxuICAgICAgICBlbmQ6IHRlbXBsYXRlLnN0YXJ0ICsgZXhwci52YWx1ZS5zb3VyY2VTcGFuLmVuZCxcbiAgICAgICAgbmV3Q29udGVudDogJ1tdJyxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNwYW5MZW5ndGggPSBleHByLnNvdXJjZVNwYW4uZW5kLm9mZnNldCAtIGV4cHIuc291cmNlU3Bhbi5zdGFydC5vZmZzZXQ7XG4gICAgICAvLyBgZXhwci52YWx1ZS5zb3VyY2VTcGFuLnN0YXJ0YCBpcyB0aGUgc3RhcnQgb2YgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSBiaW5kaW5nIHNpbmNlIHRoZXJlXG4gICAgICAvLyBpcyBubyB2YWx1ZVxuICAgICAgY29uc3QgZW5kT2ZFeHByID0gdGVtcGxhdGUuc3RhcnQgKyBleHByLnZhbHVlLnNvdXJjZVNwYW4uc3RhcnQgKyBzcGFuTGVuZ3RoO1xuICAgICAgcmVwbGFjZW1lbnQgPSB7XG4gICAgICAgIHN0YXJ0OiBlbmRPZkV4cHIsXG4gICAgICAgIGVuZDogZW5kT2ZFeHByLFxuICAgICAgICBuZXdDb250ZW50OiAnPVwiW11cIicsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXBsYWNlbWVudHMucHVzaChyZXBsYWNlbWVudCk7XG4gIH1cblxuICByZXR1cm4ge29yaWdpbmFsVGVtcGxhdGU6IHRlbXBsYXRlLCByZXBsYWNlbWVudHMsIGVtcHR5Um91dGVybGlua0V4cHJlc3Npb25zfTtcbn1cbiJdfQ==
@@ -1,11 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- /// <amd-module name="@angular/core/schematics/migrations/testbed-teardown" />
9
- import { Rule } from '@angular-devkit/schematics';
10
- /** Migration that adds the `teardown` flag to `TestBed` calls. */
11
- export default function (): Rule;