@angular/cdk 20.0.0-next.2 → 20.0.0-next.4

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 (315) hide show
  1. package/dialog/index.d.ts +8 -3
  2. package/drag-drop/index.d.ts +2 -1
  3. package/fesm2022/{a11y-module-e6996d20.mjs → a11y-module-b228dc71.mjs} +29 -29
  4. package/fesm2022/{a11y-module-e6996d20.mjs.map → a11y-module-b228dc71.mjs.map} +1 -1
  5. package/fesm2022/a11y.mjs +20 -20
  6. package/fesm2022/accordion.mjs +12 -12
  7. package/fesm2022/{array-ee3b4bab.mjs → array-88e1bec3.mjs} +1 -1
  8. package/fesm2022/array-88e1bec3.mjs.map +1 -0
  9. package/fesm2022/{bidi-module-0726b65c.mjs → bidi-module-e73b8776.mjs} +9 -9
  10. package/fesm2022/{bidi-module-0726b65c.mjs.map → bidi-module-e73b8776.mjs.map} +1 -1
  11. package/fesm2022/bidi.mjs +2 -2
  12. package/fesm2022/{breakpoints-observer-d4584b66.mjs → breakpoints-observer-9432a91b.mjs} +9 -9
  13. package/fesm2022/{breakpoints-observer-d4584b66.mjs.map → breakpoints-observer-9432a91b.mjs.map} +1 -1
  14. package/fesm2022/cdk.mjs +1 -1
  15. package/fesm2022/cdk.mjs.map +1 -1
  16. package/fesm2022/clipboard.mjs +10 -10
  17. package/fesm2022/coercion.mjs +3 -3
  18. package/fesm2022/coercion.mjs.map +1 -1
  19. package/fesm2022/collections.mjs +1 -1
  20. package/fesm2022/{css-pixel-value-286c9a60.mjs → css-pixel-value-447bbfe8.mjs} +1 -1
  21. package/fesm2022/css-pixel-value-447bbfe8.mjs.map +1 -0
  22. package/fesm2022/dialog.mjs +32 -26
  23. package/fesm2022/dialog.mjs.map +1 -1
  24. package/fesm2022/{directionality-7ea26429.mjs → directionality-ea6ab987.mjs} +4 -4
  25. package/fesm2022/{directionality-7ea26429.mjs.map → directionality-ea6ab987.mjs.map} +1 -1
  26. package/fesm2022/drag-drop.mjs +40 -39
  27. package/fesm2022/drag-drop.mjs.map +1 -1
  28. package/fesm2022/{element-705567fe.mjs → element-08c51fcd.mjs} +1 -1
  29. package/fesm2022/element-08c51fcd.mjs.map +1 -0
  30. package/fesm2022/{focus-monitor-cebaa0d1.mjs → focus-monitor-69f9c0f9.mjs} +12 -12
  31. package/fesm2022/{focus-monitor-cebaa0d1.mjs.map → focus-monitor-69f9c0f9.mjs.map} +1 -1
  32. package/fesm2022/{id-generator-fba495fb.mjs → id-generator-ec45a122.mjs} +4 -4
  33. package/fesm2022/{id-generator-fba495fb.mjs.map → id-generator-ec45a122.mjs.map} +1 -1
  34. package/fesm2022/layout.mjs +7 -7
  35. package/fesm2022/listbox.mjs +14 -14
  36. package/fesm2022/menu.mjs +64 -62
  37. package/fesm2022/menu.mjs.map +1 -1
  38. package/fesm2022/{observe-content-d2a6b5a0.mjs → observe-content-459e1d12.mjs} +15 -15
  39. package/fesm2022/{observe-content-d2a6b5a0.mjs.map → observe-content-459e1d12.mjs.map} +1 -1
  40. package/fesm2022/observers/private.mjs +3 -3
  41. package/fesm2022/observers.mjs +2 -2
  42. package/fesm2022/{overlay-module-863b82c9.mjs → overlay-module-6e7b742f.mjs} +47 -45
  43. package/fesm2022/overlay-module-6e7b742f.mjs.map +1 -0
  44. package/fesm2022/overlay.mjs +15 -15
  45. package/fesm2022/{platform-1be098b0.mjs → platform-2be6a529.mjs} +4 -4
  46. package/fesm2022/{platform-1be098b0.mjs.map → platform-2be6a529.mjs.map} +1 -1
  47. package/fesm2022/platform.mjs +5 -5
  48. package/fesm2022/{portal-directives-c88fea11.mjs → portal-directives-9cd98881.mjs} +18 -18
  49. package/fesm2022/{portal-directives-c88fea11.mjs.map → portal-directives-9cd98881.mjs.map} +1 -1
  50. package/fesm2022/portal.mjs +1 -1
  51. package/fesm2022/private.mjs +2 -2
  52. package/fesm2022/{scrolling-module-aa9eeac5.mjs → scrolling-module-72941c9f.mjs} +41 -41
  53. package/fesm2022/{scrolling-module-aa9eeac5.mjs.map → scrolling-module-72941c9f.mjs.map} +1 -1
  54. package/fesm2022/scrolling.mjs +5 -5
  55. package/fesm2022/stepper.mjs +25 -25
  56. package/fesm2022/{style-loader-e14dc585.mjs → style-loader-9fc0a4d2.mjs} +4 -4
  57. package/fesm2022/{style-loader-e14dc585.mjs.map → style-loader-9fc0a4d2.mjs.map} +1 -1
  58. package/fesm2022/table.mjs +81 -81
  59. package/fesm2022/testing/selenium-webdriver.mjs +1 -1
  60. package/fesm2022/testing/selenium-webdriver.mjs.map +1 -1
  61. package/fesm2022/testing/testbed.mjs +1 -1
  62. package/fesm2022/testing/testbed.mjs.map +1 -1
  63. package/fesm2022/testing.mjs +1 -1
  64. package/fesm2022/text-field.mjs +19 -19
  65. package/fesm2022/{text-filtering-b60ba8a2.mjs → text-filtering-0c6de6d6.mjs} +1 -1
  66. package/fesm2022/text-filtering-0c6de6d6.mjs.map +1 -0
  67. package/fesm2022/tree.mjs +41 -28
  68. package/fesm2022/tree.mjs.map +1 -1
  69. package/fesm2022/{unique-selection-dispatcher-1d6f91d8.mjs → unique-selection-dispatcher-d0d5176e.mjs} +4 -4
  70. package/fesm2022/{unique-selection-dispatcher-1d6f91d8.mjs.map → unique-selection-dispatcher-d0d5176e.mjs.map} +1 -1
  71. package/fesm2022/{visually-hidden-83aea4a0.mjs → visually-hidden-a6df546a.mjs} +4 -4
  72. package/fesm2022/{visually-hidden-83aea4a0.mjs.map → visually-hidden-a6df546a.mjs.map} +1 -1
  73. package/menu/index.d.ts +3 -3
  74. package/overlay/index.d.ts +6 -6
  75. package/{overlay-module.d-5d06db8a.d.ts → overlay-module.d-46197115.d.ts} +4 -2
  76. package/package.json +2 -4
  77. package/portal/index.d.ts +2 -2
  78. package/{portal-directives.d-d345bd53.d.ts → portal-directives.d-fefec9d6.d.ts} +1 -1
  79. package/schematics/index.js +1 -1
  80. package/schematics/index.js.map +1 -0
  81. package/schematics/ng-add/index.js +2 -2
  82. package/schematics/ng-add/index.js.map +1 -0
  83. package/schematics/ng-add/package-config.js +1 -1
  84. package/schematics/ng-add/package-config.js.map +1 -0
  85. package/schematics/ng-add/schema.js +1 -1
  86. package/schematics/ng-add/schema.js.map +1 -0
  87. package/schematics/ng-generate/drag-drop/index.js +15 -6
  88. package/schematics/ng-generate/drag-drop/index.js.map +1 -0
  89. package/schematics/ng-generate/drag-drop/schema.js +1 -1
  90. package/schematics/ng-generate/drag-drop/schema.js.map +1 -0
  91. package/schematics/ng-update/data/attribute-selectors.js +1 -1
  92. package/schematics/ng-update/data/attribute-selectors.js.map +1 -0
  93. package/schematics/ng-update/data/class-names.js +1 -1
  94. package/schematics/ng-update/data/class-names.js.map +1 -0
  95. package/schematics/ng-update/data/constructor-checks.js +1 -1
  96. package/schematics/ng-update/data/constructor-checks.js.map +1 -0
  97. package/schematics/ng-update/data/css-selectors.js +1 -1
  98. package/schematics/ng-update/data/css-selectors.js.map +1 -0
  99. package/schematics/ng-update/data/css-tokens.js +1 -1
  100. package/schematics/ng-update/data/css-tokens.js.map +1 -0
  101. package/schematics/ng-update/data/element-selectors.js +1 -1
  102. package/schematics/ng-update/data/element-selectors.js.map +1 -0
  103. package/schematics/ng-update/data/index.js +1 -1
  104. package/schematics/ng-update/data/index.js.map +1 -0
  105. package/schematics/ng-update/data/input-names.js +1 -1
  106. package/schematics/ng-update/data/input-names.js.map +1 -0
  107. package/schematics/ng-update/data/method-call-checks.js +1 -1
  108. package/schematics/ng-update/data/method-call-checks.js.map +1 -0
  109. package/schematics/ng-update/data/output-names.js +1 -1
  110. package/schematics/ng-update/data/output-names.js.map +1 -0
  111. package/schematics/ng-update/data/property-names.js +1 -1
  112. package/schematics/ng-update/data/property-names.js.map +1 -0
  113. package/schematics/ng-update/data/symbol-removal.js +1 -1
  114. package/schematics/ng-update/data/symbol-removal.js.map +1 -0
  115. package/schematics/ng-update/devkit-file-system.js +2 -3
  116. package/schematics/ng-update/devkit-file-system.js.map +1 -0
  117. package/schematics/ng-update/devkit-migration-rule.js +13 -4
  118. package/schematics/ng-update/devkit-migration-rule.js.map +1 -0
  119. package/schematics/ng-update/devkit-migration.js +1 -1
  120. package/schematics/ng-update/devkit-migration.js.map +1 -0
  121. package/schematics/ng-update/find-stylesheets.js +1 -1
  122. package/schematics/ng-update/find-stylesheets.js.map +1 -0
  123. package/schematics/ng-update/html-parsing/angular.js +1 -1
  124. package/schematics/ng-update/html-parsing/angular.js.map +1 -0
  125. package/schematics/ng-update/html-parsing/elements.js +3 -2
  126. package/schematics/ng-update/html-parsing/elements.js.map +1 -0
  127. package/schematics/ng-update/index.js +1 -1
  128. package/schematics/ng-update/index.js.map +1 -0
  129. package/schematics/ng-update/migrations/attribute-selectors.js +8 -5
  130. package/schematics/ng-update/migrations/attribute-selectors.js.map +1 -0
  131. package/schematics/ng-update/migrations/class-inheritance.js +11 -8
  132. package/schematics/ng-update/migrations/class-inheritance.js.map +1 -0
  133. package/schematics/ng-update/migrations/class-names.js +15 -12
  134. package/schematics/ng-update/migrations/class-names.js.map +1 -0
  135. package/schematics/ng-update/migrations/constructor-signature.js +10 -7
  136. package/schematics/ng-update/migrations/constructor-signature.js.map +1 -0
  137. package/schematics/ng-update/migrations/css-selectors.js +8 -5
  138. package/schematics/ng-update/migrations/css-selectors.js.map +1 -0
  139. package/schematics/ng-update/migrations/css-tokens.js +8 -5
  140. package/schematics/ng-update/migrations/css-tokens.js.map +1 -0
  141. package/schematics/ng-update/migrations/element-selectors.js +8 -5
  142. package/schematics/ng-update/migrations/element-selectors.js.map +1 -0
  143. package/schematics/ng-update/migrations/input-names.js +8 -5
  144. package/schematics/ng-update/migrations/input-names.js.map +1 -0
  145. package/schematics/ng-update/migrations/method-call-arguments.js +8 -5
  146. package/schematics/ng-update/migrations/method-call-arguments.js.map +1 -0
  147. package/schematics/ng-update/migrations/misc-template.js +6 -3
  148. package/schematics/ng-update/migrations/misc-template.js.map +1 -0
  149. package/schematics/ng-update/migrations/output-names.js +8 -5
  150. package/schematics/ng-update/migrations/output-names.js.map +1 -0
  151. package/schematics/ng-update/migrations/property-names.js +8 -5
  152. package/schematics/ng-update/migrations/property-names.js.map +1 -0
  153. package/schematics/ng-update/migrations/symbol-removal.js +10 -6
  154. package/schematics/ng-update/migrations/symbol-removal.js.map +1 -0
  155. package/schematics/ng-update/public-api.js +1 -1
  156. package/schematics/ng-update/public-api.js.map +1 -0
  157. package/schematics/ng-update/typescript/base-types.js +1 -1
  158. package/schematics/ng-update/typescript/base-types.js.map +1 -0
  159. package/schematics/ng-update/typescript/imports.js +1 -1
  160. package/schematics/ng-update/typescript/imports.js.map +1 -0
  161. package/schematics/ng-update/typescript/literal.js +1 -1
  162. package/schematics/ng-update/typescript/literal.js.map +1 -0
  163. package/schematics/ng-update/typescript/module-specifiers.js +1 -1
  164. package/schematics/ng-update/typescript/module-specifiers.js.map +1 -0
  165. package/schematics/ng-update/upgrade-data.js +1 -1
  166. package/schematics/ng-update/upgrade-data.js.map +1 -0
  167. package/schematics/paths.js +1 -1
  168. package/schematics/paths.js.map +1 -0
  169. package/schematics/update-tool/component-resource-collector.js +3 -5
  170. package/schematics/update-tool/component-resource-collector.js.map +1 -0
  171. package/schematics/update-tool/file-system.js +1 -1
  172. package/schematics/update-tool/file-system.js.map +1 -0
  173. package/schematics/update-tool/index.js +2 -8
  174. package/schematics/update-tool/index.js.map +1 -0
  175. package/schematics/update-tool/logger.js +1 -1
  176. package/schematics/update-tool/logger.js.map +1 -0
  177. package/schematics/update-tool/migration.js +3 -10
  178. package/schematics/update-tool/migration.js.map +1 -0
  179. package/schematics/update-tool/public-api.js +1 -1
  180. package/schematics/update-tool/public-api.js.map +1 -0
  181. package/schematics/update-tool/target-version.js +1 -1
  182. package/schematics/update-tool/target-version.js.map +1 -0
  183. package/schematics/update-tool/update-recorder.js +1 -1
  184. package/schematics/update-tool/update-recorder.js.map +1 -0
  185. package/schematics/update-tool/utils/decorators.js +1 -1
  186. package/schematics/update-tool/utils/decorators.js.map +1 -0
  187. package/schematics/update-tool/utils/diagnostics.js +1 -1
  188. package/schematics/update-tool/utils/diagnostics.js.map +1 -0
  189. package/schematics/update-tool/utils/functions.js +1 -1
  190. package/schematics/update-tool/utils/functions.js.map +1 -0
  191. package/schematics/update-tool/utils/imports.js +1 -1
  192. package/schematics/update-tool/utils/imports.js.map +1 -0
  193. package/schematics/update-tool/utils/line-mappings.js +1 -1
  194. package/schematics/update-tool/utils/line-mappings.js.map +1 -0
  195. package/schematics/update-tool/utils/parse-tsconfig.js +1 -1
  196. package/schematics/update-tool/utils/parse-tsconfig.js.map +1 -0
  197. package/schematics/update-tool/utils/property-name.js +1 -1
  198. package/schematics/update-tool/utils/property-name.js.map +1 -0
  199. package/schematics/update-tool/utils/virtual-host.js +2 -3
  200. package/schematics/update-tool/utils/virtual-host.js.map +1 -0
  201. package/schematics/update-tool/version-changes.js +1 -1
  202. package/schematics/update-tool/version-changes.js.map +1 -0
  203. package/schematics/utils/ast/ng-module-imports.js +1 -1
  204. package/schematics/utils/ast/ng-module-imports.js.map +1 -0
  205. package/schematics/utils/ast.js +22 -11
  206. package/schematics/utils/ast.js.map +1 -0
  207. package/schematics/utils/build-component.js +16 -11
  208. package/schematics/utils/build-component.js.map +1 -0
  209. package/schematics/utils/get-project.js +1 -1
  210. package/schematics/utils/get-project.js.map +1 -0
  211. package/schematics/utils/html-manipulation.js +1 -1
  212. package/schematics/utils/html-manipulation.js.map +1 -0
  213. package/schematics/utils/index.js +1 -1
  214. package/schematics/utils/index.js.map +1 -0
  215. package/schematics/utils/parse5-element.js +1 -1
  216. package/schematics/utils/parse5-element.js.map +1 -0
  217. package/schematics/utils/project-index-file.js +2 -2
  218. package/schematics/utils/project-index-file.js.map +1 -0
  219. package/schematics/utils/project-main-file.js +1 -1
  220. package/schematics/utils/project-main-file.js.map +1 -0
  221. package/schematics/utils/project-style-file.js +1 -1
  222. package/schematics/utils/project-style-file.js.map +1 -0
  223. package/schematics/utils/project-targets.js +4 -3
  224. package/schematics/utils/project-targets.js.map +1 -0
  225. package/schematics/utils/project-tsconfig-paths.js +25 -13
  226. package/schematics/utils/project-tsconfig-paths.js.map +1 -0
  227. package/schematics/utils/schematic-options.js +26 -14
  228. package/schematics/utils/schematic-options.js.map +1 -0
  229. package/scrolling/index.d.ts +2 -2
  230. package/{scrolling-module.d-a08a462d.d.ts → scrolling-module.d-e4f8e471.d.ts} +1 -1
  231. package/table/index.d.ts +1 -1
  232. package/tree/index.d.ts +2 -0
  233. package/fesm2022/array-ee3b4bab.mjs.map +0 -1
  234. package/fesm2022/css-pixel-value-286c9a60.mjs.map +0 -1
  235. package/fesm2022/element-705567fe.mjs.map +0 -1
  236. package/fesm2022/overlay-module-863b82c9.mjs.map +0 -1
  237. package/fesm2022/text-filtering-b60ba8a2.mjs.map +0 -1
  238. package/schematics/index.mjs +0 -37
  239. package/schematics/ng-add/index.mjs +0 -39
  240. package/schematics/ng-add/package-config.mjs +0 -51
  241. package/schematics/ng-add/schema.mjs +0 -10
  242. package/schematics/ng-generate/drag-drop/index.mjs +0 -33
  243. package/schematics/ng-generate/drag-drop/schema.mjs +0 -10
  244. package/schematics/ng-update/data/attribute-selectors.mjs +0 -12
  245. package/schematics/ng-update/data/class-names.mjs +0 -12
  246. package/schematics/ng-update/data/constructor-checks.mjs +0 -17
  247. package/schematics/ng-update/data/css-selectors.mjs +0 -12
  248. package/schematics/ng-update/data/css-tokens.mjs +0 -12
  249. package/schematics/ng-update/data/element-selectors.mjs +0 -12
  250. package/schematics/ng-update/data/index.mjs +0 -35
  251. package/schematics/ng-update/data/input-names.mjs +0 -12
  252. package/schematics/ng-update/data/method-call-checks.mjs +0 -12
  253. package/schematics/ng-update/data/output-names.mjs +0 -12
  254. package/schematics/ng-update/data/property-names.mjs +0 -12
  255. package/schematics/ng-update/data/symbol-removal.mjs +0 -12
  256. package/schematics/ng-update/devkit-file-system.mjs +0 -84
  257. package/schematics/ng-update/devkit-migration-rule.mjs +0 -133
  258. package/schematics/ng-update/devkit-migration.mjs +0 -20
  259. package/schematics/ng-update/find-stylesheets.mjs +0 -41
  260. package/schematics/ng-update/html-parsing/angular.mjs +0 -51
  261. package/schematics/ng-update/html-parsing/elements.mjs +0 -62
  262. package/schematics/ng-update/index.mjs +0 -29
  263. package/schematics/ng-update/migrations/attribute-selectors.mjs +0 -68
  264. package/schematics/ng-update/migrations/class-inheritance.mjs +0 -55
  265. package/schematics/ng-update/migrations/class-names.mjs +0 -88
  266. package/schematics/ng-update/migrations/constructor-signature.mjs +0 -136
  267. package/schematics/ng-update/migrations/css-selectors.mjs +0 -72
  268. package/schematics/ng-update/migrations/css-tokens.mjs +0 -80
  269. package/schematics/ng-update/migrations/element-selectors.mjs +0 -63
  270. package/schematics/ng-update/migrations/input-names.mjs +0 -56
  271. package/schematics/ng-update/migrations/method-call-arguments.mjs +0 -59
  272. package/schematics/ng-update/migrations/misc-template.mjs +0 -22
  273. package/schematics/ng-update/migrations/output-names.mjs +0 -43
  274. package/schematics/ng-update/migrations/property-names.mjs +0 -57
  275. package/schematics/ng-update/migrations/symbol-removal.mjs +0 -43
  276. package/schematics/ng-update/public-api.mjs +0 -36
  277. package/schematics/ng-update/typescript/base-types.mjs +0 -23
  278. package/schematics/ng-update/typescript/imports.mjs +0 -53
  279. package/schematics/ng-update/typescript/literal.mjs +0 -32
  280. package/schematics/ng-update/typescript/module-specifiers.mjs +0 -35
  281. package/schematics/ng-update/upgrade-data.mjs +0 -40
  282. package/schematics/paths.mjs +0 -16
  283. package/schematics/schematics.externs.js +0 -0
  284. package/schematics/tsconfig.json +0 -29
  285. package/schematics/update-tool/component-resource-collector.mjs +0 -166
  286. package/schematics/update-tool/file-system.mjs +0 -18
  287. package/schematics/update-tool/index.mjs +0 -178
  288. package/schematics/update-tool/logger.mjs +0 -18
  289. package/schematics/update-tool/migration.mjs +0 -77
  290. package/schematics/update-tool/public-api.mjs +0 -33
  291. package/schematics/update-tool/target-version.mjs +0 -27
  292. package/schematics/update-tool/update-recorder.mjs +0 -10
  293. package/schematics/update-tool/update-tool.externs.js +0 -0
  294. package/schematics/update-tool/utils/decorators.mjs +0 -41
  295. package/schematics/update-tool/utils/diagnostics.mjs +0 -18
  296. package/schematics/update-tool/utils/functions.mjs +0 -20
  297. package/schematics/update-tool/utils/imports.mjs +0 -110
  298. package/schematics/update-tool/utils/line-mappings.mjs +0 -75
  299. package/schematics/update-tool/utils/parse-tsconfig.mjs +0 -45
  300. package/schematics/update-tool/utils/property-name.mjs +0 -27
  301. package/schematics/update-tool/utils/virtual-host.mjs +0 -72
  302. package/schematics/update-tool/version-changes.mjs +0 -38
  303. package/schematics/utils/ast/ng-module-imports.mjs +0 -82
  304. package/schematics/utils/ast.mjs +0 -68
  305. package/schematics/utils/build-component.mjs +0 -183
  306. package/schematics/utils/get-project.mjs +0 -28
  307. package/schematics/utils/html-manipulation.mjs +0 -91
  308. package/schematics/utils/index.mjs +0 -36
  309. package/schematics/utils/parse5-element.mjs +0 -30
  310. package/schematics/utils/project-index-file.mjs +0 -20
  311. package/schematics/utils/project-main-file.mjs +0 -25
  312. package/schematics/utils/project-style-file.mjs +0 -42
  313. package/schematics/utils/project-targets.mjs +0 -39
  314. package/schematics/utils/project-tsconfig-paths.mjs +0 -34
  315. package/schematics/utils/schematic-options.mjs +0 -77
@@ -1,55 +0,0 @@
1
- "use strict";
2
- /**
3
- * @license
4
- * Copyright Google LLC All Rights Reserved.
5
- *
6
- * Use of this source code is governed by an MIT-style license that can be
7
- * found in the LICENSE file at https://angular.dev/license
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.ClassInheritanceMigration = void 0;
11
- const ts = require("typescript");
12
- const migration_1 = require("../../update-tool/migration");
13
- const base_types_1 = require("../typescript/base-types");
14
- const upgrade_data_1 = require("../upgrade-data");
15
- /**
16
- * Migration that identifies class declarations that extend CDK or Material classes
17
- * which had a public property change.
18
- */
19
- class ClassInheritanceMigration extends migration_1.Migration {
20
- /**
21
- * Map of classes that have been updated. Each class name maps to the according property
22
- * change data.
23
- */
24
- propertyNames = new Map();
25
- // Only enable the migration rule if there is upgrade data.
26
- enabled = this.propertyNames.size !== 0;
27
- init() {
28
- (0, upgrade_data_1.getVersionUpgradeData)(this, 'propertyNames')
29
- .filter(data => data.limitedTo && data.limitedTo.classes)
30
- .forEach(data => data.limitedTo.classes.forEach(name => this.propertyNames.set(name, data)));
31
- }
32
- visitNode(node) {
33
- if (ts.isClassDeclaration(node)) {
34
- this._visitClassDeclaration(node);
35
- }
36
- }
37
- _visitClassDeclaration(node) {
38
- const baseTypes = (0, base_types_1.determineBaseTypes)(node);
39
- const className = node.name ? node.name.text : '{unknown-name}';
40
- if (!baseTypes) {
41
- return;
42
- }
43
- baseTypes.forEach(typeName => {
44
- const data = this.propertyNames.get(typeName);
45
- if (data) {
46
- this.createFailureAtNode(node, `Found class "${className}" which extends class ` +
47
- `"${typeName}". Please note that the base class property ` +
48
- `"${data.replace}" has changed to "${data.replaceWith}". ` +
49
- `You may need to update your class as well.`);
50
- }
51
- });
52
- }
53
- }
54
- exports.ClassInheritanceMigration = ClassInheritanceMigration;
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3MtaW5oZXJpdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL3NjaGVtYXRpY3MvbmctdXBkYXRlL21pZ3JhdGlvbnMvY2xhc3MtaW5oZXJpdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsaUNBQWlDO0FBQ2pDLDJEQUFzRDtBQUV0RCx5REFBNEQ7QUFDNUQsa0RBQW1FO0FBRW5FOzs7R0FHRztBQUNILE1BQWEseUJBQTBCLFNBQVEscUJBQXNCO0lBQ25FOzs7T0FHRztJQUNILGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBbUMsQ0FBQztJQUUzRCwyREFBMkQ7SUFDM0QsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztJQUUvQixJQUFJO1FBQ1gsSUFBQSxvQ0FBcUIsRUFBQyxJQUFJLEVBQUUsZUFBZSxDQUFDO2FBQ3pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7YUFDeEQsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRVEsU0FBUyxDQUFDLElBQWE7UUFDOUIsSUFBSSxFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxJQUF5QjtRQUN0RCxNQUFNLFNBQVMsR0FBRyxJQUFBLCtCQUFrQixFQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztRQUVoRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixPQUFPO1FBQ1QsQ0FBQztRQUVELFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDM0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFOUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVCxJQUFJLENBQUMsbUJBQW1CLENBQ3RCLElBQUksRUFDSixnQkFBZ0IsU0FBUyx3QkFBd0I7b0JBQy9DLElBQUksUUFBUSw4Q0FBOEM7b0JBQzFELElBQUksSUFBSSxDQUFDLE9BQU8scUJBQXFCLElBQUksQ0FBQyxXQUFXLEtBQUs7b0JBQzFELDRDQUE0QyxDQUMvQyxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBNUNELDhEQTRDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmRldi9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQge01pZ3JhdGlvbn0gZnJvbSAnLi4vLi4vdXBkYXRlLXRvb2wvbWlncmF0aW9uJztcbmltcG9ydCB7UHJvcGVydHlOYW1lVXBncmFkZURhdGF9IGZyb20gJy4uL2RhdGEvcHJvcGVydHktbmFtZXMnO1xuaW1wb3J0IHtkZXRlcm1pbmVCYXNlVHlwZXN9IGZyb20gJy4uL3R5cGVzY3JpcHQvYmFzZS10eXBlcyc7XG5pbXBvcnQge2dldFZlcnNpb25VcGdyYWRlRGF0YSwgVXBncmFkZURhdGF9IGZyb20gJy4uL3VwZ3JhZGUtZGF0YSc7XG5cbi8qKlxuICogTWlncmF0aW9uIHRoYXQgaWRlbnRpZmllcyBjbGFzcyBkZWNsYXJhdGlvbnMgdGhhdCBleHRlbmQgQ0RLIG9yIE1hdGVyaWFsIGNsYXNzZXNcbiAqIHdoaWNoIGhhZCBhIHB1YmxpYyBwcm9wZXJ0eSBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBDbGFzc0luaGVyaXRhbmNlTWlncmF0aW9uIGV4dGVuZHMgTWlncmF0aW9uPFVwZ3JhZGVEYXRhPiB7XG4gIC8qKlxuICAgKiBNYXAgb2YgY2xhc3NlcyB0aGF0IGhhdmUgYmVlbiB1cGRhdGVkLiBFYWNoIGNsYXNzIG5hbWUgbWFwcyB0byB0aGUgYWNjb3JkaW5nIHByb3BlcnR5XG4gICAqIGNoYW5nZSBkYXRhLlxuICAgKi9cbiAgcHJvcGVydHlOYW1lcyA9IG5ldyBNYXA8c3RyaW5nLCBQcm9wZXJ0eU5hbWVVcGdyYWRlRGF0YT4oKTtcblxuICAvLyBPbmx5IGVuYWJsZSB0aGUgbWlncmF0aW9uIHJ1bGUgaWYgdGhlcmUgaXMgdXBncmFkZSBkYXRhLlxuICBlbmFibGVkID0gdGhpcy5wcm9wZXJ0eU5hbWVzLnNpemUgIT09IDA7XG5cbiAgb3ZlcnJpZGUgaW5pdCgpOiB2b2lkIHtcbiAgICBnZXRWZXJzaW9uVXBncmFkZURhdGEodGhpcywgJ3Byb3BlcnR5TmFtZXMnKVxuICAgICAgLmZpbHRlcihkYXRhID0+IGRhdGEubGltaXRlZFRvICYmIGRhdGEubGltaXRlZFRvLmNsYXNzZXMpXG4gICAgICAuZm9yRWFjaChkYXRhID0+IGRhdGEubGltaXRlZFRvLmNsYXNzZXMuZm9yRWFjaChuYW1lID0+IHRoaXMucHJvcGVydHlOYW1lcy5zZXQobmFtZSwgZGF0YSkpKTtcbiAgfVxuXG4gIG92ZXJyaWRlIHZpc2l0Tm9kZShub2RlOiB0cy5Ob2RlKTogdm9pZCB7XG4gICAgaWYgKHRzLmlzQ2xhc3NEZWNsYXJhdGlvbihub2RlKSkge1xuICAgICAgdGhpcy5fdmlzaXRDbGFzc0RlY2xhcmF0aW9uKG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Zpc2l0Q2xhc3NEZWNsYXJhdGlvbihub2RlOiB0cy5DbGFzc0RlY2xhcmF0aW9uKSB7XG4gICAgY29uc3QgYmFzZVR5cGVzID0gZGV0ZXJtaW5lQmFzZVR5cGVzKG5vZGUpO1xuICAgIGNvbnN0IGNsYXNzTmFtZSA9IG5vZGUubmFtZSA/IG5vZGUubmFtZS50ZXh0IDogJ3t1bmtub3duLW5hbWV9JztcblxuICAgIGlmICghYmFzZVR5cGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYmFzZVR5cGVzLmZvckVhY2godHlwZU5hbWUgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMucHJvcGVydHlOYW1lcy5nZXQodHlwZU5hbWUpO1xuXG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICB0aGlzLmNyZWF0ZUZhaWx1cmVBdE5vZGUoXG4gICAgICAgICAgbm9kZSxcbiAgICAgICAgICBgRm91bmQgY2xhc3MgXCIke2NsYXNzTmFtZX1cIiB3aGljaCBleHRlbmRzIGNsYXNzIGAgK1xuICAgICAgICAgICAgYFwiJHt0eXBlTmFtZX1cIi4gUGxlYXNlIG5vdGUgdGhhdCB0aGUgYmFzZSBjbGFzcyBwcm9wZXJ0eSBgICtcbiAgICAgICAgICAgIGBcIiR7ZGF0YS5yZXBsYWNlfVwiIGhhcyBjaGFuZ2VkIHRvIFwiJHtkYXRhLnJlcGxhY2VXaXRofVwiLiBgICtcbiAgICAgICAgICAgIGBZb3UgbWF5IG5lZWQgdG8gdXBkYXRlIHlvdXIgY2xhc3MgYXMgd2VsbC5gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,88 +0,0 @@
1
- "use strict";
2
- /**
3
- * @license
4
- * Copyright Google LLC All Rights Reserved.
5
- *
6
- * Use of this source code is governed by an MIT-style license that can be
7
- * found in the LICENSE file at https://angular.dev/license
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.ClassNamesMigration = void 0;
11
- const ts = require("typescript");
12
- const migration_1 = require("../../update-tool/migration");
13
- const imports_1 = require("../typescript/imports");
14
- const module_specifiers_1 = require("../typescript/module-specifiers");
15
- const upgrade_data_1 = require("../upgrade-data");
16
- /**
17
- * Migration that walks through every identifier that is part of Angular Material or thr CDK
18
- * and replaces the outdated name with the new one if specified in the upgrade data.
19
- */
20
- // TODO: rework this rule to identify symbols using the import identifier resolver. This
21
- // makes it more robust, less AST convoluted and is more TypeScript AST idiomatic. COMP-300.
22
- class ClassNamesMigration extends migration_1.Migration {
23
- /** Change data that upgrades to the specified target version. */
24
- data = (0, upgrade_data_1.getVersionUpgradeData)(this, 'classNames');
25
- /**
26
- * List of identifier names that have been imported from `@angular/material` or `@angular/cdk`
27
- * in the current source file and therefore can be considered trusted.
28
- */
29
- trustedIdentifiers = new Set();
30
- /** List of namespaces that have been imported from `@angular/material` or `@angular/cdk`. */
31
- trustedNamespaces = new Set();
32
- // Only enable the migration rule if there is upgrade data.
33
- enabled = this.data.length !== 0;
34
- visitNode(node) {
35
- if (ts.isIdentifier(node)) {
36
- this._visitIdentifier(node);
37
- }
38
- }
39
- /** Method that is called for every identifier inside of the specified project. */
40
- _visitIdentifier(identifier) {
41
- // For identifiers that aren't listed in the className data, the whole check can be
42
- // skipped safely.
43
- if (!this.data.some(data => data.replace === identifier.text)) {
44
- return;
45
- }
46
- // For namespace imports that are referring to Angular Material or the CDK, we store the
47
- // namespace name in order to be able to safely find identifiers that don't belong to the
48
- // developer's application.
49
- if ((0, imports_1.isNamespaceImportNode)(identifier) && (0, module_specifiers_1.isMaterialImportDeclaration)(identifier)) {
50
- this.trustedNamespaces.add(identifier.text);
51
- return this._createFailureWithReplacement(identifier);
52
- }
53
- // For export declarations that are referring to Angular Material or the CDK, the identifier
54
- // can be immediately updated to the new name.
55
- if ((0, imports_1.isExportSpecifierNode)(identifier) && (0, module_specifiers_1.isMaterialExportDeclaration)(identifier)) {
56
- return this._createFailureWithReplacement(identifier);
57
- }
58
- // For import declarations that are referring to Angular Material or the CDK, the name of
59
- // the import identifiers. This allows us to identify identifiers that belong to Material and
60
- // the CDK, and we won't accidentally touch a developer's identifier.
61
- if ((0, imports_1.isImportSpecifierNode)(identifier) && (0, module_specifiers_1.isMaterialImportDeclaration)(identifier)) {
62
- this.trustedIdentifiers.add(identifier.text);
63
- return this._createFailureWithReplacement(identifier);
64
- }
65
- // In case the identifier is part of a property access expression, we need to verify that the
66
- // property access originates from a namespace that has been imported from Material or the CDK.
67
- if (ts.isPropertyAccessExpression(identifier.parent)) {
68
- const expression = identifier.parent.expression;
69
- if (ts.isIdentifier(expression) && this.trustedNamespaces.has(expression.text)) {
70
- return this._createFailureWithReplacement(identifier);
71
- }
72
- }
73
- else if (this.trustedIdentifiers.has(identifier.text)) {
74
- return this._createFailureWithReplacement(identifier);
75
- }
76
- }
77
- /** Creates a failure and replacement for the specified identifier. */
78
- _createFailureWithReplacement(identifier) {
79
- const classData = this.data.find(data => data.replace === identifier.text);
80
- const filePath = this.fileSystem.resolve(identifier.getSourceFile().fileName);
81
- this.fileSystem
82
- .edit(filePath)
83
- .remove(identifier.getStart(), identifier.getWidth())
84
- .insertRight(identifier.getStart(), classData.replaceWith);
85
- }
86
- }
87
- exports.ClassNamesMigration = ClassNamesMigration;
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3MtbmFtZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL3NjaGVtYXRpY3MvbmctdXBkYXRlL21pZ3JhdGlvbnMvY2xhc3MtbmFtZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsaUNBQWlDO0FBQ2pDLDJEQUFzRDtBQUd0RCxtREFJK0I7QUFDL0IsdUVBR3lDO0FBQ3pDLGtEQUFtRTtBQUVuRTs7O0dBR0c7QUFDSCx3RkFBd0Y7QUFDeEYsNEZBQTRGO0FBQzVGLE1BQWEsbUJBQW9CLFNBQVEscUJBQXNCO0lBQzdELGlFQUFpRTtJQUNqRSxJQUFJLEdBQTJCLElBQUEsb0NBQXFCLEVBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBRXpFOzs7T0FHRztJQUNILGtCQUFrQixHQUFnQixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRTVDLDZGQUE2RjtJQUM3RixpQkFBaUIsR0FBZ0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUUzQywyREFBMkQ7SUFDM0QsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUV4QixTQUFTLENBQUMsSUFBYTtRQUM5QixJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRCxrRkFBa0Y7SUFDMUUsZ0JBQWdCLENBQUMsVUFBeUI7UUFDaEQsbUZBQW1GO1FBQ25GLGtCQUFrQjtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzlELE9BQU87UUFDVCxDQUFDO1FBRUQsd0ZBQXdGO1FBQ3hGLHlGQUF5RjtRQUN6RiwyQkFBMkI7UUFDM0IsSUFBSSxJQUFBLCtCQUFxQixFQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUEsK0NBQTJCLEVBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNqRixJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUU1QyxPQUFPLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBRUQsNEZBQTRGO1FBQzVGLDhDQUE4QztRQUM5QyxJQUFJLElBQUEsK0JBQXFCLEVBQUMsVUFBVSxDQUFDLElBQUksSUFBQSwrQ0FBMkIsRUFBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ2pGLE9BQU8sSUFBSSxDQUFDLDZCQUE2QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFFRCx5RkFBeUY7UUFDekYsNkZBQTZGO1FBQzdGLHFFQUFxRTtRQUNyRSxJQUFJLElBQUEsK0JBQXFCLEVBQUMsVUFBVSxDQUFDLElBQUksSUFBQSwrQ0FBMkIsRUFBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ2pGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRTdDLE9BQU8sSUFBSSxDQUFDLDZCQUE2QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFFRCw2RkFBNkY7UUFDN0YsK0ZBQStGO1FBQy9GLElBQUksRUFBRSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3JELE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1lBRWhELElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUMvRSxPQUFPLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN4RCxDQUFDO1FBQ0gsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN4RCxPQUFPLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4RCxDQUFDO0lBQ0gsQ0FBQztJQUVELHNFQUFzRTtJQUM5RCw2QkFBNkIsQ0FBQyxVQUF5QjtRQUM3RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEtBQUssVUFBVSxDQUFDLElBQUksQ0FBRSxDQUFDO1FBQzVFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU5RSxJQUFJLENBQUMsVUFBVTthQUNaLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDZCxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUNwRCxXQUFXLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxFQUFFLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvRCxDQUFDO0NBQ0Y7QUE3RUQsa0RBNkVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuZGV2L2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7TWlncmF0aW9ufSBmcm9tICcuLi8uLi91cGRhdGUtdG9vbC9taWdyYXRpb24nO1xuXG5pbXBvcnQge0NsYXNzTmFtZVVwZ3JhZGVEYXRhfSBmcm9tICcuLi9kYXRhJztcbmltcG9ydCB7XG4gIGlzRXhwb3J0U3BlY2lmaWVyTm9kZSxcbiAgaXNJbXBvcnRTcGVjaWZpZXJOb2RlLFxuICBpc05hbWVzcGFjZUltcG9ydE5vZGUsXG59IGZyb20gJy4uL3R5cGVzY3JpcHQvaW1wb3J0cyc7XG5pbXBvcnQge1xuICBpc01hdGVyaWFsRXhwb3J0RGVjbGFyYXRpb24sXG4gIGlzTWF0ZXJpYWxJbXBvcnREZWNsYXJhdGlvbixcbn0gZnJvbSAnLi4vdHlwZXNjcmlwdC9tb2R1bGUtc3BlY2lmaWVycyc7XG5pbXBvcnQge2dldFZlcnNpb25VcGdyYWRlRGF0YSwgVXBncmFkZURhdGF9IGZyb20gJy4uL3VwZ3JhZGUtZGF0YSc7XG5cbi8qKlxuICogTWlncmF0aW9uIHRoYXQgd2Fsa3MgdGhyb3VnaCBldmVyeSBpZGVudGlmaWVyIHRoYXQgaXMgcGFydCBvZiBBbmd1bGFyIE1hdGVyaWFsIG9yIHRociBDREtcbiAqIGFuZCByZXBsYWNlcyB0aGUgb3V0ZGF0ZWQgbmFtZSB3aXRoIHRoZSBuZXcgb25lIGlmIHNwZWNpZmllZCBpbiB0aGUgdXBncmFkZSBkYXRhLlxuICovXG4vLyBUT0RPOiByZXdvcmsgdGhpcyBydWxlIHRvIGlkZW50aWZ5IHN5bWJvbHMgdXNpbmcgdGhlIGltcG9ydCBpZGVudGlmaWVyIHJlc29sdmVyLiBUaGlzXG4vLyBtYWtlcyBpdCBtb3JlIHJvYnVzdCwgbGVzcyBBU1QgY29udm9sdXRlZCBhbmQgaXMgbW9yZSBUeXBlU2NyaXB0IEFTVCBpZGlvbWF0aWMuIENPTVAtMzAwLlxuZXhwb3J0IGNsYXNzIENsYXNzTmFtZXNNaWdyYXRpb24gZXh0ZW5kcyBNaWdyYXRpb248VXBncmFkZURhdGE+IHtcbiAgLyoqIENoYW5nZSBkYXRhIHRoYXQgdXBncmFkZXMgdG8gdGhlIHNwZWNpZmllZCB0YXJnZXQgdmVyc2lvbi4gKi9cbiAgZGF0YTogQ2xhc3NOYW1lVXBncmFkZURhdGFbXSA9IGdldFZlcnNpb25VcGdyYWRlRGF0YSh0aGlzLCAnY2xhc3NOYW1lcycpO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGlkZW50aWZpZXIgbmFtZXMgdGhhdCBoYXZlIGJlZW4gaW1wb3J0ZWQgZnJvbSBgQGFuZ3VsYXIvbWF0ZXJpYWxgIG9yIGBAYW5ndWxhci9jZGtgXG4gICAqIGluIHRoZSBjdXJyZW50IHNvdXJjZSBmaWxlIGFuZCB0aGVyZWZvcmUgY2FuIGJlIGNvbnNpZGVyZWQgdHJ1c3RlZC5cbiAgICovXG4gIHRydXN0ZWRJZGVudGlmaWVyczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG5cbiAgLyoqIExpc3Qgb2YgbmFtZXNwYWNlcyB0aGF0IGhhdmUgYmVlbiBpbXBvcnRlZCBmcm9tIGBAYW5ndWxhci9tYXRlcmlhbGAgb3IgYEBhbmd1bGFyL2Nka2AuICovXG4gIHRydXN0ZWROYW1lc3BhY2VzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcblxuICAvLyBPbmx5IGVuYWJsZSB0aGUgbWlncmF0aW9uIHJ1bGUgaWYgdGhlcmUgaXMgdXBncmFkZSBkYXRhLlxuICBlbmFibGVkID0gdGhpcy5kYXRhLmxlbmd0aCAhPT0gMDtcblxuICBvdmVycmlkZSB2aXNpdE5vZGUobm9kZTogdHMuTm9kZSk6IHZvaWQge1xuICAgIGlmICh0cy5pc0lkZW50aWZpZXIobm9kZSkpIHtcbiAgICAgIHRoaXMuX3Zpc2l0SWRlbnRpZmllcihub2RlKTtcbiAgICB9XG4gIH1cblxuICAvKiogTWV0aG9kIHRoYXQgaXMgY2FsbGVkIGZvciBldmVyeSBpZGVudGlmaWVyIGluc2lkZSBvZiB0aGUgc3BlY2lmaWVkIHByb2plY3QuICovXG4gIHByaXZhdGUgX3Zpc2l0SWRlbnRpZmllcihpZGVudGlmaWVyOiB0cy5JZGVudGlmaWVyKSB7XG4gICAgLy8gRm9yIGlkZW50aWZpZXJzIHRoYXQgYXJlbid0IGxpc3RlZCBpbiB0aGUgY2xhc3NOYW1lIGRhdGEsIHRoZSB3aG9sZSBjaGVjayBjYW4gYmVcbiAgICAvLyBza2lwcGVkIHNhZmVseS5cbiAgICBpZiAoIXRoaXMuZGF0YS5zb21lKGRhdGEgPT4gZGF0YS5yZXBsYWNlID09PSBpZGVudGlmaWVyLnRleHQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRm9yIG5hbWVzcGFjZSBpbXBvcnRzIHRoYXQgYXJlIHJlZmVycmluZyB0byBBbmd1bGFyIE1hdGVyaWFsIG9yIHRoZSBDREssIHdlIHN0b3JlIHRoZVxuICAgIC8vIG5hbWVzcGFjZSBuYW1lIGluIG9yZGVyIHRvIGJlIGFibGUgdG8gc2FmZWx5IGZpbmQgaWRlbnRpZmllcnMgdGhhdCBkb24ndCBiZWxvbmcgdG8gdGhlXG4gICAgLy8gZGV2ZWxvcGVyJ3MgYXBwbGljYXRpb24uXG4gICAgaWYgKGlzTmFtZXNwYWNlSW1wb3J0Tm9kZShpZGVudGlmaWVyKSAmJiBpc01hdGVyaWFsSW1wb3J0RGVjbGFyYXRpb24oaWRlbnRpZmllcikpIHtcbiAgICAgIHRoaXMudHJ1c3RlZE5hbWVzcGFjZXMuYWRkKGlkZW50aWZpZXIudGV4dCk7XG5cbiAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVGYWlsdXJlV2l0aFJlcGxhY2VtZW50KGlkZW50aWZpZXIpO1xuICAgIH1cblxuICAgIC8vIEZvciBleHBvcnQgZGVjbGFyYXRpb25zIHRoYXQgYXJlIHJlZmVycmluZyB0byBBbmd1bGFyIE1hdGVyaWFsIG9yIHRoZSBDREssIHRoZSBpZGVudGlmaWVyXG4gICAgLy8gY2FuIGJlIGltbWVkaWF0ZWx5IHVwZGF0ZWQgdG8gdGhlIG5ldyBuYW1lLlxuICAgIGlmIChpc0V4cG9ydFNwZWNpZmllck5vZGUoaWRlbnRpZmllcikgJiYgaXNNYXRlcmlhbEV4cG9ydERlY2xhcmF0aW9uKGlkZW50aWZpZXIpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fY3JlYXRlRmFpbHVyZVdpdGhSZXBsYWNlbWVudChpZGVudGlmaWVyKTtcbiAgICB9XG5cbiAgICAvLyBGb3IgaW1wb3J0IGRlY2xhcmF0aW9ucyB0aGF0IGFyZSByZWZlcnJpbmcgdG8gQW5ndWxhciBNYXRlcmlhbCBvciB0aGUgQ0RLLCB0aGUgbmFtZSBvZlxuICAgIC8vIHRoZSBpbXBvcnQgaWRlbnRpZmllcnMuIFRoaXMgYWxsb3dzIHVzIHRvIGlkZW50aWZ5IGlkZW50aWZpZXJzIHRoYXQgYmVsb25nIHRvIE1hdGVyaWFsIGFuZFxuICAgIC8vIHRoZSBDREssIGFuZCB3ZSB3b24ndCBhY2NpZGVudGFsbHkgdG91Y2ggYSBkZXZlbG9wZXIncyBpZGVudGlmaWVyLlxuICAgIGlmIChpc0ltcG9ydFNwZWNpZmllck5vZGUoaWRlbnRpZmllcikgJiYgaXNNYXRlcmlhbEltcG9ydERlY2xhcmF0aW9uKGlkZW50aWZpZXIpKSB7XG4gICAgICB0aGlzLnRydXN0ZWRJZGVudGlmaWVycy5hZGQoaWRlbnRpZmllci50ZXh0KTtcblxuICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUZhaWx1cmVXaXRoUmVwbGFjZW1lbnQoaWRlbnRpZmllcik7XG4gICAgfVxuXG4gICAgLy8gSW4gY2FzZSB0aGUgaWRlbnRpZmllciBpcyBwYXJ0IG9mIGEgcHJvcGVydHkgYWNjZXNzIGV4cHJlc3Npb24sIHdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhlXG4gICAgLy8gcHJvcGVydHkgYWNjZXNzIG9yaWdpbmF0ZXMgZnJvbSBhIG5hbWVzcGFjZSB0aGF0IGhhcyBiZWVuIGltcG9ydGVkIGZyb20gTWF0ZXJpYWwgb3IgdGhlIENESy5cbiAgICBpZiAodHMuaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oaWRlbnRpZmllci5wYXJlbnQpKSB7XG4gICAgICBjb25zdCBleHByZXNzaW9uID0gaWRlbnRpZmllci5wYXJlbnQuZXhwcmVzc2lvbjtcblxuICAgICAgaWYgKHRzLmlzSWRlbnRpZmllcihleHByZXNzaW9uKSAmJiB0aGlzLnRydXN0ZWROYW1lc3BhY2VzLmhhcyhleHByZXNzaW9uLnRleHQpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVGYWlsdXJlV2l0aFJlcGxhY2VtZW50KGlkZW50aWZpZXIpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy50cnVzdGVkSWRlbnRpZmllcnMuaGFzKGlkZW50aWZpZXIudGV4dCkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVGYWlsdXJlV2l0aFJlcGxhY2VtZW50KGlkZW50aWZpZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDcmVhdGVzIGEgZmFpbHVyZSBhbmQgcmVwbGFjZW1lbnQgZm9yIHRoZSBzcGVjaWZpZWQgaWRlbnRpZmllci4gKi9cbiAgcHJpdmF0ZSBfY3JlYXRlRmFpbHVyZVdpdGhSZXBsYWNlbWVudChpZGVudGlmaWVyOiB0cy5JZGVudGlmaWVyKSB7XG4gICAgY29uc3QgY2xhc3NEYXRhID0gdGhpcy5kYXRhLmZpbmQoZGF0YSA9PiBkYXRhLnJlcGxhY2UgPT09IGlkZW50aWZpZXIudGV4dCkhO1xuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5maWxlU3lzdGVtLnJlc29sdmUoaWRlbnRpZmllci5nZXRTb3VyY2VGaWxlKCkuZmlsZU5hbWUpO1xuXG4gICAgdGhpcy5maWxlU3lzdGVtXG4gICAgICAuZWRpdChmaWxlUGF0aClcbiAgICAgIC5yZW1vdmUoaWRlbnRpZmllci5nZXRTdGFydCgpLCBpZGVudGlmaWVyLmdldFdpZHRoKCkpXG4gICAgICAuaW5zZXJ0UmlnaHQoaWRlbnRpZmllci5nZXRTdGFydCgpLCBjbGFzc0RhdGEucmVwbGFjZVdpdGgpO1xuICB9XG59XG4iXX0=
@@ -1,136 +0,0 @@
1
- "use strict";
2
- /**
3
- * @license
4
- * Copyright Google LLC All Rights Reserved.
5
- *
6
- * Use of this source code is governed by an MIT-style license that can be
7
- * found in the LICENSE file at https://angular.dev/license
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.ConstructorSignatureMigration = void 0;
11
- const ts = require("typescript");
12
- const migration_1 = require("../../update-tool/migration");
13
- const version_changes_1 = require("../../update-tool/version-changes");
14
- /**
15
- * List of diagnostic codes that refer to pre-emit diagnostics which indicate invalid
16
- * new expression or super call signatures. See the list of diagnostics here:
17
- *
18
- * https://github.com/Microsoft/TypeScript/blob/master/src/compiler/diagnosticMessages.json
19
- */
20
- const signatureErrorDiagnostics = [
21
- // Type not assignable error diagnostic.
22
- 2345,
23
- // Constructor argument length invalid diagnostics
24
- 2554, 2555, 2556, 2557,
25
- ];
26
- /**
27
- * Migration that visits every TypeScript new expression or super call and checks if
28
- * the parameter type signature is invalid and needs to be updated manually.
29
- */
30
- class ConstructorSignatureMigration extends migration_1.Migration {
31
- // Note that the data for this rule is not distinguished based on the target version because
32
- // we don't keep track of the new signature and don't want to update incrementally.
33
- // See: https://github.com/angular/components/pull/12970#issuecomment-418337566
34
- data = (0, version_changes_1.getAllChanges)(this.upgradeData.constructorChecks);
35
- // Only enable the migration rule if there is upgrade data.
36
- enabled = this.data.length !== 0;
37
- visitNode(node) {
38
- if (ts.isSourceFile(node)) {
39
- this._visitSourceFile(node);
40
- }
41
- }
42
- /**
43
- * Method that will be called for each source file of the upgrade project. In order to
44
- * properly determine invalid constructor signatures, we take advantage of the pre-emit
45
- * diagnostics from TypeScript.
46
- *
47
- * By using the diagnostics, the migration can handle type assignability. Not using
48
- * diagnostics would mean that we need to use simple type equality checking which is
49
- * too strict. See related issue: https://github.com/Microsoft/TypeScript/issues/9879
50
- */
51
- _visitSourceFile(sourceFile) {
52
- // List of classes of which the constructor signature has changed.
53
- const diagnostics = ts
54
- .getPreEmitDiagnostics(this.program, sourceFile)
55
- .filter(diagnostic => signatureErrorDiagnostics.includes(diagnostic.code))
56
- .filter(diagnostic => diagnostic.start !== undefined);
57
- for (const diagnostic of diagnostics) {
58
- const node = findConstructorNode(diagnostic, sourceFile);
59
- if (!node) {
60
- continue;
61
- }
62
- const classType = this.typeChecker.getTypeAtLocation(node.expression);
63
- const className = classType.symbol && classType.symbol.name;
64
- const isNewExpression = ts.isNewExpression(node);
65
- // Determine the class names of the actual construct signatures because we cannot assume that
66
- // the diagnostic refers to a constructor of the actual expression. In case the constructor
67
- // is inherited, we need to detect that the owner-class of the constructor is added to the
68
- // constructor checks upgrade data. e.g. `class CustomCalendar extends MatCalendar {}`.
69
- const signatureClassNames = classType
70
- .getConstructSignatures()
71
- .map(signature => getClassDeclarationOfSignature(signature))
72
- .map(declaration => (declaration && declaration.name ? declaration.name.text : null))
73
- .filter(Boolean);
74
- // Besides checking the signature class names, we need to check the actual class name because
75
- // there can be classes without an explicit constructor.
76
- if (!this.data.includes(className) &&
77
- !signatureClassNames.some(name => this.data.includes(name))) {
78
- continue;
79
- }
80
- const classSignatures = classType
81
- .getConstructSignatures()
82
- .map(signature => getParameterTypesFromSignature(signature, this.typeChecker));
83
- const expressionName = isNewExpression ? `new ${className}` : 'super';
84
- const signatures = classSignatures
85
- .map(signature => signature.map(t => (t === null ? 'any' : this.typeChecker.typeToString(t))))
86
- .map(signature => `${expressionName}(${signature.join(', ')})`)
87
- .join(' or ');
88
- this.createFailureAtNode(node, `Found "${className}" constructed with ` +
89
- `an invalid signature. Please manually update the ${expressionName} expression to ` +
90
- `match the new signature${classSignatures.length > 1 ? 's' : ''}: ${signatures}`);
91
- }
92
- }
93
- }
94
- exports.ConstructorSignatureMigration = ConstructorSignatureMigration;
95
- /** Resolves the type for each parameter in the specified signature. */
96
- function getParameterTypesFromSignature(signature, typeChecker) {
97
- return signature
98
- .getParameters()
99
- .map(param => param.declarations ? typeChecker.getTypeAtLocation(param.declarations[0]) : null);
100
- }
101
- /**
102
- * Walks through each node of a source file in order to find a new-expression node or super-call
103
- * expression node that is captured by the specified diagnostic.
104
- */
105
- function findConstructorNode(diagnostic, sourceFile) {
106
- let resolvedNode = null;
107
- const _visitNode = (node) => {
108
- // Check whether the current node contains the diagnostic. If the node contains the diagnostic,
109
- // walk deeper in order to find all constructor expression nodes.
110
- if (node.getStart() <= diagnostic.start && node.getEnd() >= diagnostic.start) {
111
- if (ts.isNewExpression(node) ||
112
- (ts.isCallExpression(node) && node.expression.kind === ts.SyntaxKind.SuperKeyword)) {
113
- resolvedNode = node;
114
- }
115
- ts.forEachChild(node, _visitNode);
116
- }
117
- };
118
- ts.forEachChild(sourceFile, _visitNode);
119
- return resolvedNode;
120
- }
121
- /** Determines the class declaration of the specified construct signature. */
122
- function getClassDeclarationOfSignature(signature) {
123
- let node = signature.getDeclaration();
124
- // Handle signatures which don't have an actual declaration. This happens if a class
125
- // does not have an explicitly written constructor.
126
- if (!node) {
127
- return null;
128
- }
129
- while (!ts.isSourceFile((node = node.parent))) {
130
- if (ts.isClassDeclaration(node)) {
131
- return node;
132
- }
133
- }
134
- return null;
135
- }
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RydWN0b3Itc2lnbmF0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay9zY2hlbWF0aWNzL25nLXVwZGF0ZS9taWdyYXRpb25zL2NvbnN0cnVjdG9yLXNpZ25hdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOzs7QUFFSCxpQ0FBaUM7QUFDakMsMkRBQXNEO0FBQ3RELHVFQUFnRTtBQUdoRTs7Ozs7R0FLRztBQUNILE1BQU0seUJBQXlCLEdBQUc7SUFDaEMsd0NBQXdDO0lBQ3hDLElBQUk7SUFDSixrREFBa0Q7SUFDbEQsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtDQUN2QixDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBYSw2QkFBOEIsU0FBUSxxQkFBc0I7SUFDdkUsNEZBQTRGO0lBQzVGLG1GQUFtRjtJQUNuRiwrRUFBK0U7SUFDL0UsSUFBSSxHQUFHLElBQUEsK0JBQWEsRUFBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFekQsMkRBQTJEO0lBQzNELE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFFeEIsU0FBUyxDQUFDLElBQWE7UUFDOUIsSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSyxnQkFBZ0IsQ0FBQyxVQUF5QjtRQUNoRCxrRUFBa0U7UUFDbEUsTUFBTSxXQUFXLEdBQUcsRUFBRTthQUNuQixxQkFBcUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQzthQUMvQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxR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R0FBWSxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDL0Msb0ZBQW9GO0lBQ3BGLG1EQUFtRDtJQUNuRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDVixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxPQUFPLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzlDLElBQUksRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDaEMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmRldi9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQge01pZ3JhdGlvbn0gZnJvbSAnLi4vLi4vdXBkYXRlLXRvb2wvbWlncmF0aW9uJztcbmltcG9ydCB7Z2V0QWxsQ2hhbmdlc30gZnJvbSAnLi4vLi4vdXBkYXRlLXRvb2wvdmVyc2lvbi1jaGFuZ2VzJztcbmltcG9ydCB7VXBncmFkZURhdGF9IGZyb20gJy4uL3VwZ3JhZGUtZGF0YSc7XG5cbi8qKlxuICogTGlzdCBvZiBkaWFnbm9zdGljIGNvZGVzIHRoYXQgcmVmZXIgdG8gcHJlLWVtaXQgZGlhZ25vc3RpY3Mgd2hpY2ggaW5kaWNhdGUgaW52YWxpZFxuICogbmV3IGV4cHJlc3Npb24gb3Igc3VwZXIgY2FsbCBzaWduYXR1cmVzLiBTZWUgdGhlIGxpc3Qgb2YgZGlhZ25vc3RpY3MgaGVyZTpcbiAqXG4gKiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQvYmxvYi9tYXN0ZXIvc3JjL2NvbXBpbGVyL2RpYWdub3N0aWNNZXNzYWdlcy5qc29uXG4gKi9cbmNvbnN0IHNpZ25hdHVyZUVycm9yRGlhZ25vc3RpY3MgPSBbXG4gIC8vIFR5cGUgbm90IGFzc2lnbmFibGUgZXJyb3IgZGlhZ25vc3RpYy5cbiAgMjM0NSxcbiAgLy8gQ29uc3RydWN0b3IgYXJndW1lbnQgbGVuZ3RoIGludmFsaWQgZGlhZ25vc3RpY3NcbiAgMjU1NCwgMjU1NSwgMjU1NiwgMjU1Nyxcbl07XG5cbi8qKlxuICogTWlncmF0aW9uIHRoYXQgdmlzaXRzIGV2ZXJ5IFR5cGVTY3JpcHQgbmV3IGV4cHJlc3Npb24gb3Igc3VwZXIgY2FsbCBhbmQgY2hlY2tzIGlmXG4gKiB0aGUgcGFyYW1ldGVyIHR5cGUgc2lnbmF0dXJlIGlzIGludmFsaWQgYW5kIG5lZWRzIHRvIGJlIHVwZGF0ZWQgbWFudWFsbHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb25zdHJ1Y3RvclNpZ25hdHVyZU1pZ3JhdGlvbiBleHRlbmRzIE1pZ3JhdGlvbjxVcGdyYWRlRGF0YT4ge1xuICAvLyBOb3RlIHRoYXQgdGhlIGRhdGEgZm9yIHRoaXMgcnVsZSBpcyBub3QgZGlzdGluZ3Vpc2hlZCBiYXNlZCBvbiB0aGUgdGFyZ2V0IHZlcnNpb24gYmVjYXVzZVxuICAvLyB3ZSBkb24ndCBrZWVwIHRyYWNrIG9mIHRoZSBuZXcgc2lnbmF0dXJlIGFuZCBkb24ndCB3YW50IHRvIHVwZGF0ZSBpbmNyZW1lbnRhbGx5LlxuICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvcHVsbC8xMjk3MCNpc3N1ZWNvbW1lbnQtNDE4MzM3NTY2XG4gIGRhdGEgPSBnZXRBbGxDaGFuZ2VzKHRoaXMudXBncmFkZURhdGEuY29uc3RydWN0b3JDaGVja3MpO1xuXG4gIC8vIE9ubHkgZW5hYmxlIHRoZSBtaWdyYXRpb24gcnVsZSBpZiB0aGVyZSBpcyB1cGdyYWRlIGRhdGEuXG4gIGVuYWJsZWQgPSB0aGlzLmRhdGEubGVuZ3RoICE9PSAwO1xuXG4gIG92ZXJyaWRlIHZpc2l0Tm9kZShub2RlOiB0cy5Ob2RlKTogdm9pZCB7XG4gICAgaWYgKHRzLmlzU291cmNlRmlsZShub2RlKSkge1xuICAgICAgdGhpcy5fdmlzaXRTb3VyY2VGaWxlKG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdGhhdCB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaCBzb3VyY2UgZmlsZSBvZiB0aGUgdXBncmFkZSBwcm9qZWN0LiBJbiBvcmRlciB0b1xuICAgKiBwcm9wZXJseSBkZXRlcm1pbmUgaW52YWxpZCBjb25zdHJ1Y3RvciBzaWduYXR1cmVzLCB3ZSB0YWtlIGFkdmFudGFnZSBvZiB0aGUgcHJlLWVtaXRcbiAgICogZGlhZ25vc3RpY3MgZnJvbSBUeXBlU2NyaXB0LlxuICAgKlxuICAgKiBCeSB1c2luZyB0aGUgZGlhZ25vc3RpY3MsIHRoZSBtaWdyYXRpb24gY2FuIGhhbmRsZSB0eXBlIGFzc2lnbmFiaWxpdHkuIE5vdCB1c2luZ1xuICAgKiBkaWFnbm9zdGljcyB3b3VsZCBtZWFuIHRoYXQgd2UgbmVlZCB0byB1c2Ugc2ltcGxlIHR5cGUgZXF1YWxpdHkgY2hlY2tpbmcgd2hpY2ggaXNcbiAgICogdG9vIHN0cmljdC4gU2VlIHJlbGF0ZWQgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvOTg3OVxuICAgKi9cbiAgcHJpdmF0ZSBfdmlzaXRTb3VyY2VGaWxlKHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUpIHtcbiAgICAvLyBMaXN0IG9mIGNsYXNzZXMgb2Ygd2hpY2ggdGhlIGNvbnN0cnVjdG9yIHNpZ25hdHVyZSBoYXMgY2hhbmdlZC5cbiAgICBjb25zdCBkaWFnbm9zdGljcyA9IHRzXG4gICAgICAuZ2V0UHJlRW1pdERpYWdub3N0aWNzKHRoaXMucHJvZ3JhbSwgc291cmNlRmlsZSlcbiAgICAgIC5maWx0ZXIoZGlhZ25vc3RpYyA9PiBzaWduYXR1cmVFcnJvckRpYWdub3N0aWNzLmluY2x1ZGVzKGRpYWdub3N0aWMuY29kZSkpXG4gICAgICAuZmlsdGVyKGRpYWdub3N0aWMgPT4gZGlhZ25vc3RpYy5zdGFydCAhPT0gdW5kZWZpbmVkKTtcblxuICAgIGZvciAoY29uc3QgZGlhZ25vc3RpYyBvZiBkaWFnbm9zdGljcykge1xuICAgICAgY29uc3Qgbm9kZSA9IGZpbmRDb25zdHJ1Y3Rvck5vZGUoZGlhZ25vc3RpYywgc291cmNlRmlsZSk7XG5cbiAgICAgIGlmICghbm9kZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2xhc3NUeXBlID0gdGhpcy50eXBlQ2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihub2RlLmV4cHJlc3Npb24pO1xuICAgICAgY29uc3QgY2xhc3NOYW1lID0gY2xhc3NUeXBlLnN5bWJvbCAmJiBjbGFzc1R5cGUuc3ltYm9sLm5hbWU7XG4gICAgICBjb25zdCBpc05ld0V4cHJlc3Npb24gPSB0cy5pc05ld0V4cHJlc3Npb24obm9kZSk7XG5cbiAgICAgIC8vIERldGVybWluZSB0aGUgY2xhc3MgbmFtZXMgb2YgdGhlIGFjdHVhbCBjb25zdHJ1Y3Qgc2lnbmF0dXJlcyBiZWNhdXNlIHdlIGNhbm5vdCBhc3N1bWUgdGhhdFxuICAgICAgLy8gdGhlIGRpYWdub3N0aWMgcmVmZXJzIHRvIGEgY29uc3RydWN0b3Igb2YgdGhlIGFjdHVhbCBleHByZXNzaW9uLiBJbiBjYXNlIHRoZSBjb25zdHJ1Y3RvclxuICAgICAgLy8gaXMgaW5oZXJpdGVkLCB3ZSBuZWVkIHRvIGRldGVjdCB0aGF0IHRoZSBvd25lci1jbGFzcyBvZiB0aGUgY29uc3RydWN0b3IgaXMgYWRkZWQgdG8gdGhlXG4gICAgICAvLyBjb25zdHJ1Y3RvciBjaGVja3MgdXBncmFkZSBkYXRhLiBlLmcuIGBjbGFzcyBDdXN0b21DYWxlbmRhciBleHRlbmRzIE1hdENhbGVuZGFyIHt9YC5cbiAgICAgIGNvbnN0IHNpZ25hdHVyZUNsYXNzTmFtZXMgPSBjbGFzc1R5cGVcbiAgICAgICAgLmdldENvbnN0cnVjdFNpZ25hdHVyZXMoKVxuICAgICAgICAubWFwKHNpZ25hdHVyZSA9PiBnZXRDbGFzc0RlY2xhcmF0aW9uT2ZTaWduYXR1cmUoc2lnbmF0dXJlKSlcbiAgICAgICAgLm1hcChkZWNsYXJhdGlvbiA9PiAoZGVjbGFyYXRpb24gJiYgZGVjbGFyYXRpb24ubmFtZSA/IGRlY2xhcmF0aW9uLm5hbWUudGV4dCA6IG51bGwpKVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgICAvLyBCZXNpZGVzIGNoZWNraW5nIHRoZSBzaWduYXR1cmUgY2xhc3MgbmFtZXMsIHdlIG5lZWQgdG8gY2hlY2sgdGhlIGFjdHVhbCBjbGFzcyBuYW1lIGJlY2F1c2VcbiAgICAgIC8vIHRoZXJlIGNhbiBiZSBjbGFzc2VzIHdpdGhvdXQgYW4gZXhwbGljaXQgY29uc3RydWN0b3IuXG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLmRhdGEuaW5jbHVkZXMoY2xhc3NOYW1lKSAmJlxuICAgICAgICAhc2lnbmF0dXJlQ2xhc3NOYW1lcy5zb21lKG5hbWUgPT4gdGhpcy5kYXRhLmluY2x1ZGVzKG5hbWUhKSlcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2xhc3NTaWduYXR1cmVzID0gY2xhc3NUeXBlXG4gICAgICAgIC5nZXRDb25zdHJ1Y3RTaWduYXR1cmVzKClcbiAgICAgICAgLm1hcChzaWduYXR1cmUgPT4gZ2V0UGFyYW1ldGVyVHlwZXNGcm9tU2lnbmF0dXJlKHNpZ25hdHVyZSwgdGhpcy50eXBlQ2hlY2tlcikpO1xuXG4gICAgICBjb25zdCBleHByZXNzaW9uTmFtZSA9IGlzTmV3RXhwcmVzc2lvbiA/IGBuZXcgJHtjbGFzc05hbWV9YCA6ICdzdXBlcic7XG4gICAgICBjb25zdCBzaWduYXR1cmVzID0gY2xhc3NTaWduYXR1cmVzXG4gICAgICAgIC5tYXAoc2lnbmF0dXJlID0+XG4gICAgICAgICAgc2lnbmF0dXJlLm1hcCh0ID0+ICh0ID09PSBudWxsID8gJ2FueScgOiB0aGlzLnR5cGVDaGVja2VyLnR5cGVUb1N0cmluZyh0KSkpLFxuICAgICAgICApXG4gICAgICAgIC5tYXAoc2lnbmF0dXJlID0+IGAke2V4cHJlc3Npb25OYW1lfSgke3NpZ25hdHVyZS5qb2luKCcsICcpfSlgKVxuICAgICAgICAuam9pbignIG9yICcpO1xuXG4gICAgICB0aGlzLmNyZWF0ZUZhaWx1cmVBdE5vZGUoXG4gICAgICAgIG5vZGUsXG4gICAgICAgIGBGb3VuZCBcIiR7Y2xhc3NOYW1lfVwiIGNvbnN0cnVjdGVkIHdpdGggYCArXG4gICAgICAgICAgYGFuIGludmFsaWQgc2lnbmF0dXJlLiBQbGVhc2UgbWFudWFsbHkgdXBkYXRlIHRoZSAke2V4cHJlc3Npb25OYW1lfSBleHByZXNzaW9uIHRvIGAgK1xuICAgICAgICAgIGBtYXRjaCB0aGUgbmV3IHNpZ25hdHVyZSR7Y2xhc3NTaWduYXR1cmVzLmxlbmd0aCA+IDEgPyAncycgOiAnJ306ICR7c2lnbmF0dXJlc31gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIFJlc29sdmVzIHRoZSB0eXBlIGZvciBlYWNoIHBhcmFtZXRlciBpbiB0aGUgc3BlY2lmaWVkIHNpZ25hdHVyZS4gKi9cbmZ1bmN0aW9uIGdldFBhcmFtZXRlclR5cGVzRnJvbVNpZ25hdHVyZShcbiAgc2lnbmF0dXJlOiB0cy5TaWduYXR1cmUsXG4gIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlcixcbik6ICh0cy5UeXBlIHwgbnVsbClbXSB7XG4gIHJldHVybiBzaWduYXR1cmVcbiAgICAuZ2V0UGFyYW1ldGVycygpXG4gICAgLm1hcChwYXJhbSA9PlxuICAgICAgcGFyYW0uZGVjbGFyYXRpb25zID8gdHlwZUNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24ocGFyYW0uZGVjbGFyYXRpb25zWzBdKSA6IG51bGwsXG4gICAgKTtcbn1cblxuLyoqXG4gKiBXYWxrcyB0aHJvdWdoIGVhY2ggbm9kZSBvZiBhIHNvdXJjZSBmaWxlIGluIG9yZGVyIHRvIGZpbmQgYSBuZXctZXhwcmVzc2lvbiBub2RlIG9yIHN1cGVyLWNhbGxcbiAqIGV4cHJlc3Npb24gbm9kZSB0aGF0IGlzIGNhcHR1cmVkIGJ5IHRoZSBzcGVjaWZpZWQgZGlhZ25vc3RpYy5cbiAqL1xuZnVuY3Rpb24gZmluZENvbnN0cnVjdG9yTm9kZShcbiAgZGlhZ25vc3RpYzogdHMuRGlhZ25vc3RpYyxcbiAgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSxcbik6IHRzLkNhbGxFeHByZXNzaW9uIHwgdHMuTmV3RXhwcmVzc2lvbiB8IG51bGwge1xuICBsZXQgcmVzb2x2ZWROb2RlOiB0cy5Ob2RlIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3QgX3Zpc2l0Tm9kZSA9IChub2RlOiB0cy5Ob2RlKSA9PiB7XG4gICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgY3VycmVudCBub2RlIGNvbnRhaW5zIHRoZSBkaWFnbm9zdGljLiBJZiB0aGUgbm9kZSBjb250YWlucyB0aGUgZGlhZ25vc3RpYyxcbiAgICAvLyB3YWxrIGRlZXBlciBpbiBvcmRlciB0byBmaW5kIGFsbCBjb25zdHJ1Y3RvciBleHByZXNzaW9uIG5vZGVzLlxuICAgIGlmIChub2RlLmdldFN0YXJ0KCkgPD0gZGlhZ25vc3RpYy5zdGFydCEgJiYgbm9kZS5nZXRFbmQoKSA+PSBkaWFnbm9zdGljLnN0YXJ0ISkge1xuICAgICAgaWYgKFxuICAgICAgICB0cy5pc05ld0V4cHJlc3Npb24obm9kZSkgfHxcbiAgICAgICAgKHRzLmlzQ2FsbEV4cHJlc3Npb24obm9kZSkgJiYgbm9kZS5leHByZXNzaW9uLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuU3VwZXJLZXl3b3JkKVxuICAgICAgKSB7XG4gICAgICAgIHJlc29sdmVkTm9kZSA9IG5vZGU7XG4gICAgICB9XG5cbiAgICAgIHRzLmZvckVhY2hDaGlsZChub2RlLCBfdmlzaXROb2RlKTtcbiAgICB9XG4gIH07XG5cbiAgdHMuZm9yRWFjaENoaWxkKHNvdXJjZUZpbGUsIF92aXNpdE5vZGUpO1xuXG4gIHJldHVybiByZXNvbHZlZE5vZGU7XG59XG5cbi8qKiBEZXRlcm1pbmVzIHRoZSBjbGFzcyBkZWNsYXJhdGlvbiBvZiB0aGUgc3BlY2lmaWVkIGNvbnN0cnVjdCBzaWduYXR1cmUuICovXG5mdW5jdGlvbiBnZXRDbGFzc0RlY2xhcmF0aW9uT2ZTaWduYXR1cmUoc2lnbmF0dXJlOiB0cy5TaWduYXR1cmUpOiB0cy5DbGFzc0RlY2xhcmF0aW9uIHwgbnVsbCB7XG4gIGxldCBub2RlOiB0cy5Ob2RlID0gc2lnbmF0dXJlLmdldERlY2xhcmF0aW9uKCk7XG4gIC8vIEhhbmRsZSBzaWduYXR1cmVzIHdoaWNoIGRvbid0IGhhdmUgYW4gYWN0dWFsIGRlY2xhcmF0aW9uLiBUaGlzIGhhcHBlbnMgaWYgYSBjbGFzc1xuICAvLyBkb2VzIG5vdCBoYXZlIGFuIGV4cGxpY2l0bHkgd3JpdHRlbiBjb25zdHJ1Y3Rvci5cbiAgaWYgKCFub2RlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgd2hpbGUgKCF0cy5pc1NvdXJjZUZpbGUoKG5vZGUgPSBub2RlLnBhcmVudCkpKSB7XG4gICAgaWYgKHRzLmlzQ2xhc3NEZWNsYXJhdGlvbihub2RlKSkge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuIl19
@@ -1,72 +0,0 @@
1
- "use strict";
2
- /**
3
- * @license
4
- * Copyright Google LLC All Rights Reserved.
5
- *
6
- * Use of this source code is governed by an MIT-style license that can be
7
- * found in the LICENSE file at https://angular.dev/license
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.CssSelectorsMigration = void 0;
11
- const ts = require("typescript");
12
- const migration_1 = require("../../update-tool/migration");
13
- const literal_1 = require("../typescript/literal");
14
- const upgrade_data_1 = require("../upgrade-data");
15
- /**
16
- * Migration that walks through every string literal, template and stylesheet in
17
- * order to migrate outdated CSS selectors to the new selector.
18
- */
19
- class CssSelectorsMigration extends migration_1.Migration {
20
- /** Change data that upgrades to the specified target version. */
21
- data = (0, upgrade_data_1.getVersionUpgradeData)(this, 'cssSelectors');
22
- // Only enable the migration rule if there is upgrade data.
23
- enabled = this.data.length !== 0;
24
- visitNode(node) {
25
- if (ts.isStringLiteralLike(node)) {
26
- this._visitStringLiteralLike(node);
27
- }
28
- }
29
- visitTemplate(template) {
30
- this.data.forEach(data => {
31
- if (data.replaceIn && !data.replaceIn.html) {
32
- return;
33
- }
34
- (0, literal_1.findAllSubstringIndices)(template.content, data.replace)
35
- .map(offset => template.start + offset)
36
- .forEach(start => this._replaceSelector(template.filePath, start, data));
37
- });
38
- }
39
- visitStylesheet(stylesheet) {
40
- this.data.forEach(data => {
41
- if (data.replaceIn && !data.replaceIn.stylesheet) {
42
- return;
43
- }
44
- (0, literal_1.findAllSubstringIndices)(stylesheet.content, data.replace)
45
- .map(offset => stylesheet.start + offset)
46
- .forEach(start => this._replaceSelector(stylesheet.filePath, start, data));
47
- });
48
- }
49
- _visitStringLiteralLike(node) {
50
- if (node.parent && node.parent.kind !== ts.SyntaxKind.CallExpression) {
51
- return;
52
- }
53
- const textContent = node.getText();
54
- const filePath = this.fileSystem.resolve(node.getSourceFile().fileName);
55
- this.data.forEach(data => {
56
- if (data.replaceIn && !data.replaceIn.tsStringLiterals) {
57
- return;
58
- }
59
- (0, literal_1.findAllSubstringIndices)(textContent, data.replace)
60
- .map(offset => node.getStart() + offset)
61
- .forEach(start => this._replaceSelector(filePath, start, data));
62
- });
63
- }
64
- _replaceSelector(filePath, start, data) {
65
- this.fileSystem
66
- .edit(filePath)
67
- .remove(start, data.replace.length)
68
- .insertRight(start, data.replaceWith);
69
- }
70
- }
71
- exports.CssSelectorsMigration = CssSelectorsMigration;
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLXNlbGVjdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvc2NoZW1hdGljcy9uZy11cGRhdGUvbWlncmF0aW9ucy9jc3Mtc2VsZWN0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILGlDQUFpQztBQUdqQywyREFBc0Q7QUFFdEQsbURBQThEO0FBQzlELGtEQUFtRTtBQUVuRTs7O0dBR0c7QUFDSCxNQUFhLHFCQUFzQixTQUFRLHFCQUFzQjtJQUMvRCxpRUFBaUU7SUFDakUsSUFBSSxHQUE2QixJQUFBLG9DQUFxQixFQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztJQUU3RSwyREFBMkQ7SUFDM0QsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUV4QixTQUFTLENBQUMsSUFBYTtRQUM5QixJQUFJLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVRLGFBQWEsQ0FBQyxRQUEwQjtRQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN2QixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQyxPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUEsaUNBQXVCLEVBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO2lCQUNwRCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztpQkFDdEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDN0UsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVEsZUFBZSxDQUFDLFVBQTRCO1FBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3ZCLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2pELE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBQSxpQ0FBdUIsRUFBQyxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7aUJBQ3RELEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO2lCQUN4QyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMvRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxJQUEwQjtRQUN4RCxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNyRSxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFeEUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdkIsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN2RCxPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUEsaUNBQXVCLEVBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7aUJBQy9DLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUM7aUJBQ3ZDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDcEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsUUFBdUIsRUFBRSxLQUFhLEVBQUUsSUFBNEI7UUFDM0YsSUFBSSxDQUFDLFVBQVU7YUFDWixJQUFJLENBQUMsUUFBUSxDQUFDO2FBQ2QsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQzthQUNsQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMxQyxDQUFDO0NBQ0Y7QUE5REQsc0RBOERDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuZGV2L2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7V29ya3NwYWNlUGF0aH0gZnJvbSAnLi4vLi4vdXBkYXRlLXRvb2wvZmlsZS1zeXN0ZW0nO1xuaW1wb3J0IHtSZXNvbHZlZFJlc291cmNlfSBmcm9tICcuLi8uLi91cGRhdGUtdG9vbC9jb21wb25lbnQtcmVzb3VyY2UtY29sbGVjdG9yJztcbmltcG9ydCB7TWlncmF0aW9ufSBmcm9tICcuLi8uLi91cGRhdGUtdG9vbC9taWdyYXRpb24nO1xuaW1wb3J0IHtDc3NTZWxlY3RvclVwZ3JhZGVEYXRhfSBmcm9tICcuLi9kYXRhL2Nzcy1zZWxlY3RvcnMnO1xuaW1wb3J0IHtmaW5kQWxsU3Vic3RyaW5nSW5kaWNlc30gZnJvbSAnLi4vdHlwZXNjcmlwdC9saXRlcmFsJztcbmltcG9ydCB7Z2V0VmVyc2lvblVwZ3JhZGVEYXRhLCBVcGdyYWRlRGF0YX0gZnJvbSAnLi4vdXBncmFkZS1kYXRhJztcblxuLyoqXG4gKiBNaWdyYXRpb24gdGhhdCB3YWxrcyB0aHJvdWdoIGV2ZXJ5IHN0cmluZyBsaXRlcmFsLCB0ZW1wbGF0ZSBhbmQgc3R5bGVzaGVldCBpblxuICogb3JkZXIgdG8gbWlncmF0ZSBvdXRkYXRlZCBDU1Mgc2VsZWN0b3JzIHRvIHRoZSBuZXcgc2VsZWN0b3IuXG4gKi9cbmV4cG9ydCBjbGFzcyBDc3NTZWxlY3RvcnNNaWdyYXRpb24gZXh0ZW5kcyBNaWdyYXRpb248VXBncmFkZURhdGE+IHtcbiAgLyoqIENoYW5nZSBkYXRhIHRoYXQgdXBncmFkZXMgdG8gdGhlIHNwZWNpZmllZCB0YXJnZXQgdmVyc2lvbi4gKi9cbiAgZGF0YTogQ3NzU2VsZWN0b3JVcGdyYWRlRGF0YVtdID0gZ2V0VmVyc2lvblVwZ3JhZGVEYXRhKHRoaXMsICdjc3NTZWxlY3RvcnMnKTtcblxuICAvLyBPbmx5IGVuYWJsZSB0aGUgbWlncmF0aW9uIHJ1bGUgaWYgdGhlcmUgaXMgdXBncmFkZSBkYXRhLlxuICBlbmFibGVkID0gdGhpcy5kYXRhLmxlbmd0aCAhPT0gMDtcblxuICBvdmVycmlkZSB2aXNpdE5vZGUobm9kZTogdHMuTm9kZSk6IHZvaWQge1xuICAgIGlmICh0cy5pc1N0cmluZ0xpdGVyYWxMaWtlKG5vZGUpKSB7XG4gICAgICB0aGlzLl92aXNpdFN0cmluZ0xpdGVyYWxMaWtlKG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIHZpc2l0VGVtcGxhdGUodGVtcGxhdGU6IFJlc29sdmVkUmVzb3VyY2UpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGEuZm9yRWFjaChkYXRhID0+IHtcbiAgICAgIGlmIChkYXRhLnJlcGxhY2VJbiAmJiAhZGF0YS5yZXBsYWNlSW4uaHRtbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGZpbmRBbGxTdWJzdHJpbmdJbmRpY2VzKHRlbXBsYXRlLmNvbnRlbnQsIGRhdGEucmVwbGFjZSlcbiAgICAgICAgLm1hcChvZmZzZXQgPT4gdGVtcGxhdGUuc3RhcnQgKyBvZmZzZXQpXG4gICAgICAgIC5mb3JFYWNoKHN0YXJ0ID0+IHRoaXMuX3JlcGxhY2VTZWxlY3Rvcih0ZW1wbGF0ZS5maWxlUGF0aCwgc3RhcnQsIGRhdGEpKTtcbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIHZpc2l0U3R5bGVzaGVldChzdHlsZXNoZWV0OiBSZXNvbHZlZFJlc291cmNlKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhLmZvckVhY2goZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YS5yZXBsYWNlSW4gJiYgIWRhdGEucmVwbGFjZUluLnN0eWxlc2hlZXQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBmaW5kQWxsU3Vic3RyaW5nSW5kaWNlcyhzdHlsZXNoZWV0LmNvbnRlbnQsIGRhdGEucmVwbGFjZSlcbiAgICAgICAgLm1hcChvZmZzZXQgPT4gc3R5bGVzaGVldC5zdGFydCArIG9mZnNldClcbiAgICAgICAgLmZvckVhY2goc3RhcnQgPT4gdGhpcy5fcmVwbGFjZVNlbGVjdG9yKHN0eWxlc2hlZXQuZmlsZVBhdGgsIHN0YXJ0LCBkYXRhKSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF92aXNpdFN0cmluZ0xpdGVyYWxMaWtlKG5vZGU6IHRzLlN0cmluZ0xpdGVyYWxMaWtlKSB7XG4gICAgaWYgKG5vZGUucGFyZW50ICYmIG5vZGUucGFyZW50LmtpbmQgIT09IHRzLlN5bnRheEtpbmQuQ2FsbEV4cHJlc3Npb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0ZXh0Q29udGVudCA9IG5vZGUuZ2V0VGV4dCgpO1xuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5maWxlU3lzdGVtLnJlc29sdmUobm9kZS5nZXRTb3VyY2VGaWxlKCkuZmlsZU5hbWUpO1xuXG4gICAgdGhpcy5kYXRhLmZvckVhY2goZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YS5yZXBsYWNlSW4gJiYgIWRhdGEucmVwbGFjZUluLnRzU3RyaW5nTGl0ZXJhbHMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBmaW5kQWxsU3Vic3RyaW5nSW5kaWNlcyh0ZXh0Q29udGVudCwgZGF0YS5yZXBsYWNlKVxuICAgICAgICAubWFwKG9mZnNldCA9PiBub2RlLmdldFN0YXJ0KCkgKyBvZmZzZXQpXG4gICAgICAgIC5mb3JFYWNoKHN0YXJ0ID0+IHRoaXMuX3JlcGxhY2VTZWxlY3RvcihmaWxlUGF0aCwgc3RhcnQsIGRhdGEpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlcGxhY2VTZWxlY3RvcihmaWxlUGF0aDogV29ya3NwYWNlUGF0aCwgc3RhcnQ6IG51bWJlciwgZGF0YTogQ3NzU2VsZWN0b3JVcGdyYWRlRGF0YSkge1xuICAgIHRoaXMuZmlsZVN5c3RlbVxuICAgICAgLmVkaXQoZmlsZVBhdGgpXG4gICAgICAucmVtb3ZlKHN0YXJ0LCBkYXRhLnJlcGxhY2UubGVuZ3RoKVxuICAgICAgLmluc2VydFJpZ2h0KHN0YXJ0LCBkYXRhLnJlcGxhY2VXaXRoKTtcbiAgfVxufVxuIl19
@@ -1,80 +0,0 @@
1
- "use strict";
2
- /**
3
- * @license
4
- * Copyright Google LLC All Rights Reserved.
5
- *
6
- * Use of this source code is governed by an MIT-style license that can be
7
- * found in the LICENSE file at https://angular.dev/license
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.CssTokensMigration = void 0;
11
- const ts = require("typescript");
12
- const migration_1 = require("../../update-tool/migration");
13
- const literal_1 = require("../typescript/literal");
14
- const upgrade_data_1 = require("../upgrade-data");
15
- /** Characters that can be part of a valid token name. */
16
- const TOKEN_CHARACTER = /[-_a-z0-9]/i;
17
- /**
18
- * Migration that walks through every string literal, template and stylesheet in
19
- * order to migrate outdated CSS tokens to their new name.
20
- */
21
- class CssTokensMigration extends migration_1.Migration {
22
- /** Change data that upgrades to the specified target version. */
23
- data = (0, upgrade_data_1.getVersionUpgradeData)(this, 'cssTokens');
24
- // Only enable the migration rule if there is upgrade data.
25
- enabled = this.data.length !== 0;
26
- visitNode(node) {
27
- if (ts.isStringLiteralLike(node)) {
28
- this._visitStringLiteralLike(node);
29
- }
30
- }
31
- visitTemplate(template) {
32
- this.data.forEach(data => {
33
- if (data.replaceIn && !data.replaceIn.html) {
34
- return;
35
- }
36
- (0, literal_1.findAllSubstringIndices)(template.content, data.replace)
37
- .map(offset => template.start + offset)
38
- // Filter out matches that are followed by a valid token character, so that we don't match
39
- // partial token names.
40
- .filter(start => !TOKEN_CHARACTER.test(template.content[start + data.replace.length] || ''))
41
- .forEach(start => this._replaceSelector(template.filePath, start, data));
42
- });
43
- }
44
- visitStylesheet(stylesheet) {
45
- this.data.forEach(data => {
46
- if (data.replaceIn && !data.replaceIn.stylesheet) {
47
- return;
48
- }
49
- (0, literal_1.findAllSubstringIndices)(stylesheet.content, data.replace)
50
- .map(offset => stylesheet.start + offset)
51
- // Filter out matches that are followed by a valid token character, so that we don't match
52
- // partial token names.
53
- .filter(start => !TOKEN_CHARACTER.test(stylesheet.content[start + data.replace.length] || ''))
54
- .forEach(start => this._replaceSelector(stylesheet.filePath, start, data));
55
- });
56
- }
57
- _visitStringLiteralLike(node) {
58
- const textContent = node.getText();
59
- const filePath = this.fileSystem.resolve(node.getSourceFile().fileName);
60
- this.data.forEach(data => {
61
- if (data.replaceIn && !data.replaceIn.tsStringLiterals) {
62
- return;
63
- }
64
- (0, literal_1.findAllSubstringIndices)(textContent, data.replace)
65
- .map(offset => node.getStart() + offset)
66
- // Filter out matches that are followed by a valid token character, so that we don't match
67
- // partial token names.
68
- .filter(start => !TOKEN_CHARACTER.test(textContent[start + data.replace.length] || ''))
69
- .forEach(start => this._replaceSelector(filePath, start, data));
70
- });
71
- }
72
- _replaceSelector(filePath, start, data) {
73
- this.fileSystem
74
- .edit(filePath)
75
- .remove(start, data.replace.length)
76
- .insertRight(start, data.replaceWith);
77
- }
78
- }
79
- exports.CssTokensMigration = CssTokensMigration;
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLXRva2Vucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGsvc2NoZW1hdGljcy9uZy11cGRhdGUvbWlncmF0aW9ucy9jc3MtdG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILGlDQUFpQztBQUdqQywyREFBc0Q7QUFFdEQsbURBQThEO0FBQzlELGtEQUFtRTtBQUVuRSx5REFBeUQ7QUFDekQsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDO0FBRXRDOzs7R0FHRztBQUNILE1BQWEsa0JBQW1CLFNBQVEscUJBQXNCO0lBQzVELGlFQUFpRTtJQUNqRSxJQUFJLEdBQTBCLElBQUEsb0NBQXFCLEVBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBRXZFLDJEQUEyRDtJQUMzRCxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBRXhCLFNBQVMsQ0FBQyxJQUFhO1FBQzlCLElBQUksRUFBRSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDO0lBRVEsYUFBYSxDQUFDLFFBQTBCO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3ZCLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNDLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBQSxpQ0FBdUIsRUFBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7aUJBQ3BELEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO2dCQUN2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SUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDRjtBQXJFRCxnREFxRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5kZXYvbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHtSZXNvbHZlZFJlc291cmNlfSBmcm9tICcuLi8uLi91cGRhdGUtdG9vbC9jb21wb25lbnQtcmVzb3VyY2UtY29sbGVjdG9yJztcbmltcG9ydCB7V29ya3NwYWNlUGF0aH0gZnJvbSAnLi4vLi4vdXBkYXRlLXRvb2wvZmlsZS1zeXN0ZW0nO1xuaW1wb3J0IHtNaWdyYXRpb259IGZyb20gJy4uLy4uL3VwZGF0ZS10b29sL21pZ3JhdGlvbic7XG5pbXBvcnQge0Nzc1Rva2VuVXBncmFkZURhdGF9IGZyb20gJy4uL2RhdGEvY3NzLXRva2Vucyc7XG5pbXBvcnQge2ZpbmRBbGxTdWJzdHJpbmdJbmRpY2VzfSBmcm9tICcuLi90eXBlc2NyaXB0L2xpdGVyYWwnO1xuaW1wb3J0IHtnZXRWZXJzaW9uVXBncmFkZURhdGEsIFVwZ3JhZGVEYXRhfSBmcm9tICcuLi91cGdyYWRlLWRhdGEnO1xuXG4vKiogQ2hhcmFjdGVycyB0aGF0IGNhbiBiZSBwYXJ0IG9mIGEgdmFsaWQgdG9rZW4gbmFtZS4gKi9cbmNvbnN0IFRPS0VOX0NIQVJBQ1RFUiA9IC9bLV9hLXowLTldL2k7XG5cbi8qKlxuICogTWlncmF0aW9uIHRoYXQgd2Fsa3MgdGhyb3VnaCBldmVyeSBzdHJpbmcgbGl0ZXJhbCwgdGVtcGxhdGUgYW5kIHN0eWxlc2hlZXQgaW5cbiAqIG9yZGVyIHRvIG1pZ3JhdGUgb3V0ZGF0ZWQgQ1NTIHRva2VucyB0byB0aGVpciBuZXcgbmFtZS5cbiAqL1xuZXhwb3J0IGNsYXNzIENzc1Rva2Vuc01pZ3JhdGlvbiBleHRlbmRzIE1pZ3JhdGlvbjxVcGdyYWRlRGF0YT4ge1xuICAvKiogQ2hhbmdlIGRhdGEgdGhhdCB1cGdyYWRlcyB0byB0aGUgc3BlY2lmaWVkIHRhcmdldCB2ZXJzaW9uLiAqL1xuICBkYXRhOiBDc3NUb2tlblVwZ3JhZGVEYXRhW10gPSBnZXRWZXJzaW9uVXBncmFkZURhdGEodGhpcywgJ2Nzc1Rva2VucycpO1xuXG4gIC8vIE9ubHkgZW5hYmxlIHRoZSBtaWdyYXRpb24gcnVsZSBpZiB0aGVyZSBpcyB1cGdyYWRlIGRhdGEuXG4gIGVuYWJsZWQgPSB0aGlzLmRhdGEubGVuZ3RoICE9PSAwO1xuXG4gIG92ZXJyaWRlIHZpc2l0Tm9kZShub2RlOiB0cy5Ob2RlKTogdm9pZCB7XG4gICAgaWYgKHRzLmlzU3RyaW5nTGl0ZXJhbExpa2Uobm9kZSkpIHtcbiAgICAgIHRoaXMuX3Zpc2l0U3RyaW5nTGl0ZXJhbExpa2Uobm9kZSk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgdmlzaXRUZW1wbGF0ZSh0ZW1wbGF0ZTogUmVzb2x2ZWRSZXNvdXJjZSk6IHZvaWQge1xuICAgIHRoaXMuZGF0YS5mb3JFYWNoKGRhdGEgPT4ge1xuICAgICAgaWYgKGRhdGEucmVwbGFjZUluICYmICFkYXRhLnJlcGxhY2VJbi5odG1sKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZmluZEFsbFN1YnN0cmluZ0luZGljZXModGVtcGxhdGUuY29udGVudCwgZGF0YS5yZXBsYWNlKVxuICAgICAgICAubWFwKG9mZnNldCA9PiB0ZW1wbGF0ZS5zdGFydCArIG9mZnNldClcbiAgICAgICAgLy8gRmlsdGVyIG91dCBtYXRjaGVzIHRoYXQgYXJlIGZvbGxvd2VkIGJ5IGEgdmFsaWQgdG9rZW4gY2hhcmFjdGVyLCBzbyB0aGF0IHdlIGRvbid0IG1hdGNoXG4gICAgICAgIC8vIHBhcnRpYWwgdG9rZW4gbmFtZXMuXG4gICAgICAgIC5maWx0ZXIoc3RhcnQgPT4gIVRPS0VOX0NIQVJBQ1RFUi50ZXN0KHRlbXBsYXRlLmNvbnRlbnRbc3RhcnQgKyBkYXRhLnJlcGxhY2UubGVuZ3RoXSB8fCAnJykpXG4gICAgICAgIC5mb3JFYWNoKHN0YXJ0ID0+IHRoaXMuX3JlcGxhY2VTZWxlY3Rvcih0ZW1wbGF0ZS5maWxlUGF0aCwgc3RhcnQsIGRhdGEpKTtcbiAgICB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIHZpc2l0U3R5bGVzaGVldChzdHlsZXNoZWV0OiBSZXNvbHZlZFJlc291cmNlKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhLmZvckVhY2goZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YS5yZXBsYWNlSW4gJiYgIWRhdGEucmVwbGFjZUluLnN0eWxlc2hlZXQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBmaW5kQWxsU3Vic3RyaW5nSW5kaWNlcyhzdHlsZXNoZWV0LmNvbnRlbnQsIGRhdGEucmVwbGFjZSlcbiAgICAgICAgLm1hcChvZmZzZXQgPT4gc3R5bGVzaGVldC5zdGFydCArIG9mZnNldClcbiAgICAgICAgLy8gRmlsdGVyIG91dCBtYXRjaGVzIHRoYXQgYXJlIGZvbGxvd2VkIGJ5IGEgdmFsaWQgdG9rZW4gY2hhcmFjdGVyLCBzbyB0aGF0IHdlIGRvbid0IG1hdGNoXG4gICAgICAgIC8vIHBhcnRpYWwgdG9rZW4gbmFtZXMuXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgc3RhcnQgPT4gIVRPS0VOX0NIQVJBQ1RFUi50ZXN0KHN0eWxlc2hlZXQuY29udGVudFtzdGFydCArIGRhdGEucmVwbGFjZS5sZW5ndGhdIHx8ICcnKSxcbiAgICAgICAgKVxuICAgICAgICAuZm9yRWFjaChzdGFydCA9PiB0aGlzLl9yZXBsYWNlU2VsZWN0b3Ioc3R5bGVzaGVldC5maWxlUGF0aCwgc3RhcnQsIGRhdGEpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3Zpc2l0U3RyaW5nTGl0ZXJhbExpa2Uobm9kZTogdHMuU3RyaW5nTGl0ZXJhbExpa2UpIHtcbiAgICBjb25zdCB0ZXh0Q29udGVudCA9IG5vZGUuZ2V0VGV4dCgpO1xuICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5maWxlU3lzdGVtLnJlc29sdmUobm9kZS5nZXRTb3VyY2VGaWxlKCkuZmlsZU5hbWUpO1xuXG4gICAgdGhpcy5kYXRhLmZvckVhY2goZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YS5yZXBsYWNlSW4gJiYgIWRhdGEucmVwbGFjZUluLnRzU3RyaW5nTGl0ZXJhbHMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBmaW5kQWxsU3Vic3RyaW5nSW5kaWNlcyh0ZXh0Q29udGVudCwgZGF0YS5yZXBsYWNlKVxuICAgICAgICAubWFwKG9mZnNldCA9PiBub2RlLmdldFN0YXJ0KCkgKyBvZmZzZXQpXG4gICAgICAgIC8vIEZpbHRlciBvdXQgbWF0Y2hlcyB0aGF0IGFyZSBmb2xsb3dlZCBieSBhIHZhbGlkIHRva2VuIGNoYXJhY3Rlciwgc28gdGhhdCB3ZSBkb24ndCBtYXRjaFxuICAgICAgICAvLyBwYXJ0aWFsIHRva2VuIG5hbWVzLlxuICAgICAgICAuZmlsdGVyKHN0YXJ0ID0+ICFUT0tFTl9DSEFSQUNURVIudGVzdCh0ZXh0Q29udGVudFtzdGFydCArIGRhdGEucmVwbGFjZS5sZW5ndGhdIHx8ICcnKSlcbiAgICAgICAgLmZvckVhY2goc3RhcnQgPT4gdGhpcy5fcmVwbGFjZVNlbGVjdG9yKGZpbGVQYXRoLCBzdGFydCwgZGF0YSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVwbGFjZVNlbGVjdG9yKGZpbGVQYXRoOiBXb3Jrc3BhY2VQYXRoLCBzdGFydDogbnVtYmVyLCBkYXRhOiBDc3NUb2tlblVwZ3JhZGVEYXRhKSB7XG4gICAgdGhpcy5maWxlU3lzdGVtXG4gICAgICAuZWRpdChmaWxlUGF0aClcbiAgICAgIC5yZW1vdmUoc3RhcnQsIGRhdGEucmVwbGFjZS5sZW5ndGgpXG4gICAgICAuaW5zZXJ0UmlnaHQoc3RhcnQsIGRhdGEucmVwbGFjZVdpdGgpO1xuICB9XG59XG4iXX0=
@@ -1,63 +0,0 @@
1
- "use strict";
2
- /**
3
- * @license
4
- * Copyright Google LLC All Rights Reserved.
5
- *
6
- * Use of this source code is governed by an MIT-style license that can be
7
- * found in the LICENSE file at https://angular.dev/license
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.ElementSelectorsMigration = void 0;
11
- const ts = require("typescript");
12
- const migration_1 = require("../../update-tool/migration");
13
- const literal_1 = require("../typescript/literal");
14
- const upgrade_data_1 = require("../upgrade-data");
15
- /**
16
- * Migration that walks through every string literal, template and stylesheet in order
17
- * to migrate outdated element selectors to the new one.
18
- */
19
- class ElementSelectorsMigration extends migration_1.Migration {
20
- /** Change data that upgrades to the specified target version. */
21
- data = (0, upgrade_data_1.getVersionUpgradeData)(this, 'elementSelectors');
22
- // Only enable the migration rule if there is upgrade data.
23
- enabled = this.data.length !== 0;
24
- visitNode(node) {
25
- if (ts.isStringLiteralLike(node)) {
26
- this._visitStringLiteralLike(node);
27
- }
28
- }
29
- visitTemplate(template) {
30
- this.data.forEach(selector => {
31
- (0, literal_1.findAllSubstringIndices)(template.content, selector.replace)
32
- .map(offset => template.start + offset)
33
- .forEach(start => this._replaceSelector(template.filePath, start, selector));
34
- });
35
- }
36
- visitStylesheet(stylesheet) {
37
- this.data.forEach(selector => {
38
- (0, literal_1.findAllSubstringIndices)(stylesheet.content, selector.replace)
39
- .map(offset => stylesheet.start + offset)
40
- .forEach(start => this._replaceSelector(stylesheet.filePath, start, selector));
41
- });
42
- }
43
- _visitStringLiteralLike(node) {
44
- if (node.parent && node.parent.kind !== ts.SyntaxKind.CallExpression) {
45
- return;
46
- }
47
- const textContent = node.getText();
48
- const filePath = this.fileSystem.resolve(node.getSourceFile().fileName);
49
- this.data.forEach(selector => {
50
- (0, literal_1.findAllSubstringIndices)(textContent, selector.replace)
51
- .map(offset => node.getStart() + offset)
52
- .forEach(start => this._replaceSelector(filePath, start, selector));
53
- });
54
- }
55
- _replaceSelector(filePath, start, data) {
56
- this.fileSystem
57
- .edit(filePath)
58
- .remove(start, data.replace.length)
59
- .insertRight(start, data.replaceWith);
60
- }
61
- }
62
- exports.ElementSelectorsMigration = ElementSelectorsMigration;
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1zZWxlY3RvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL3NjaGVtYXRpY3MvbmctdXBkYXRlL21pZ3JhdGlvbnMvZWxlbWVudC1zZWxlY3RvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsaUNBQWlDO0FBR2pDLDJEQUFzRDtBQUV0RCxtREFBOEQ7QUFDOUQsa0RBQW1FO0FBRW5FOzs7R0FHRztBQUNILE1BQWEseUJBQTBCLFNBQVEscUJBQXNCO0lBQ25FLGlFQUFpRTtJQUNqRSxJQUFJLEdBQUcsSUFBQSxvQ0FBcUIsRUFBQyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUV2RCwyREFBMkQ7SUFDM0QsT0FBTyxHQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUVqQyxTQUFTLENBQUMsSUFBYTtRQUM5QixJQUFJLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVRLGFBQWEsQ0FBQyxRQUEwQjtRQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMzQixJQUFBLGlDQUF1QixFQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQztpQkFDeEQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7aUJBQ3RDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ2pGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVRLGVBQWUsQ0FBQyxVQUE0QjtRQUNuRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMzQixJQUFBLGlDQUF1QixFQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQztpQkFDMUQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7aUJBQ3hDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ25GLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLHVCQUF1QixDQUFDLElBQTBCO1FBQ3hELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3JFLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25DLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV4RSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMzQixJQUFBLGlDQUF1QixFQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDO2lCQUNuRCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDO2lCQUN2QyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGdCQUFnQixDQUN0QixRQUF1QixFQUN2QixLQUFhLEVBQ2IsSUFBZ0M7UUFFaEMsSUFBSSxDQUFDLFVBQVU7YUFDWixJQUFJLENBQUMsUUFBUSxDQUFDO2FBQ2QsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQzthQUNsQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMxQyxDQUFDO0NBQ0Y7QUF0REQsOERBc0RDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuZGV2L2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7UmVzb2x2ZWRSZXNvdXJjZX0gZnJvbSAnLi4vLi4vdXBkYXRlLXRvb2wvY29tcG9uZW50LXJlc291cmNlLWNvbGxlY3Rvcic7XG5pbXBvcnQge1dvcmtzcGFjZVBhdGh9IGZyb20gJy4uLy4uL3VwZGF0ZS10b29sL2ZpbGUtc3lzdGVtJztcbmltcG9ydCB7TWlncmF0aW9ufSBmcm9tICcuLi8uLi91cGRhdGUtdG9vbC9taWdyYXRpb24nO1xuaW1wb3J0IHtFbGVtZW50U2VsZWN0b3JVcGdyYWRlRGF0YX0gZnJvbSAnLi4vZGF0YS9lbGVtZW50LXNlbGVjdG9ycyc7XG5pbXBvcnQge2ZpbmRBbGxTdWJzdHJpbmdJbmRpY2VzfSBmcm9tICcuLi90eXBlc2NyaXB0L2xpdGVyYWwnO1xuaW1wb3J0IHtnZXRWZXJzaW9uVXBncmFkZURhdGEsIFVwZ3JhZGVEYXRhfSBmcm9tICcuLi91cGdyYWRlLWRhdGEnO1xuXG4vKipcbiAqIE1pZ3JhdGlvbiB0aGF0IHdhbGtzIHRocm91Z2ggZXZlcnkgc3RyaW5nIGxpdGVyYWwsIHRlbXBsYXRlIGFuZCBzdHlsZXNoZWV0IGluIG9yZGVyXG4gKiB0byBtaWdyYXRlIG91dGRhdGVkIGVsZW1lbnQgc2VsZWN0b3JzIHRvIHRoZSBuZXcgb25lLlxuICovXG5leHBvcnQgY2xhc3MgRWxlbWVudFNlbGVjdG9yc01pZ3JhdGlvbiBleHRlbmRzIE1pZ3JhdGlvbjxVcGdyYWRlRGF0YT4ge1xuICAvKiogQ2hhbmdlIGRhdGEgdGhhdCB1cGdyYWRlcyB0byB0aGUgc3BlY2lmaWVkIHRhcmdldCB2ZXJzaW9uLiAqL1xuICBkYXRhID0gZ2V0VmVyc2lvblVwZ3JhZGVEYXRhKHRoaXMsICdlbGVtZW50U2VsZWN0b3JzJyk7XG5cbiAgLy8gT25seSBlbmFibGUgdGhlIG1pZ3JhdGlvbiBydWxlIGlmIHRoZXJlIGlzIHVwZ3JhZGUgZGF0YS5cbiAgZW5hYmxlZDogYm9vbGVhbiA9IHRoaXMuZGF0YS5sZW5ndGggIT09IDA7XG5cbiAgb3ZlcnJpZGUgdmlzaXROb2RlKG5vZGU6IHRzLk5vZGUpOiB2b2lkIHtcbiAgICBpZiAodHMuaXNTdHJpbmdMaXRlcmFsTGlrZShub2RlKSkge1xuICAgICAgdGhpcy5fdmlzaXRTdHJpbmdMaXRlcmFsTGlrZShub2RlKTtcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSB2aXNpdFRlbXBsYXRlKHRlbXBsYXRlOiBSZXNvbHZlZFJlc291cmNlKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhLmZvckVhY2goc2VsZWN0b3IgPT4ge1xuICAgICAgZmluZEFsbFN1YnN0cmluZ0luZGljZXModGVtcGxhdGUuY29udGVudCwgc2VsZWN0b3IucmVwbGFjZSlcbiAgICAgICAgLm1hcChvZmZzZXQgPT4gdGVtcGxhdGUuc3RhcnQgKyBvZmZzZXQpXG4gICAgICAgIC5mb3JFYWNoKHN0YXJ0ID0+IHRoaXMuX3JlcGxhY2VTZWxlY3Rvcih0ZW1wbGF0ZS5maWxlUGF0aCwgc3RhcnQsIHNlbGVjdG9yKSk7XG4gICAgfSk7XG4gIH1cblxuICBvdmVycmlkZSB2aXNpdFN0eWxlc2hlZXQoc3R5bGVzaGVldDogUmVzb2x2ZWRSZXNvdXJjZSk6IHZvaWQge1xuICAgIHRoaXMuZGF0YS5mb3JFYWNoKHNlbGVjdG9yID0+IHtcbiAgICAgIGZpbmRBbGxTdWJzdHJpbmdJbmRpY2VzKHN0eWxlc2hlZXQuY29udGVudCwgc2VsZWN0b3IucmVwbGFjZSlcbiAgICAgICAgLm1hcChvZmZzZXQgPT4gc3R5bGVzaGVldC5zdGFydCArIG9mZnNldClcbiAgICAgICAgLmZvckVhY2goc3RhcnQgPT4gdGhpcy5fcmVwbGFjZVNlbGVjdG9yKHN0eWxlc2hlZXQuZmlsZVBhdGgsIHN0YXJ0LCBzZWxlY3RvcikpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfdmlzaXRTdHJpbmdMaXRlcmFsTGlrZShub2RlOiB0cy5TdHJpbmdMaXRlcmFsTGlrZSkge1xuICAgIGlmIChub2RlLnBhcmVudCAmJiBub2RlLnBhcmVudC5raW5kICE9PSB0cy5TeW50YXhLaW5kLkNhbGxFeHByZXNzaW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGV4dENvbnRlbnQgPSBub2RlLmdldFRleHQoKTtcbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZmlsZVN5c3RlbS5yZXNvbHZlKG5vZGUuZ2V0U291cmNlRmlsZSgpLmZpbGVOYW1lKTtcblxuICAgIHRoaXMuZGF0YS5mb3JFYWNoKHNlbGVjdG9yID0+IHtcbiAgICAgIGZpbmRBbGxTdWJzdHJpbmdJbmRpY2VzKHRleHRDb250ZW50LCBzZWxlY3Rvci5yZXBsYWNlKVxuICAgICAgICAubWFwKG9mZnNldCA9PiBub2RlLmdldFN0YXJ0KCkgKyBvZmZzZXQpXG4gICAgICAgIC5mb3JFYWNoKHN0YXJ0ID0+IHRoaXMuX3JlcGxhY2VTZWxlY3RvcihmaWxlUGF0aCwgc3RhcnQsIHNlbGVjdG9yKSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9yZXBsYWNlU2VsZWN0b3IoXG4gICAgZmlsZVBhdGg6IFdvcmtzcGFjZVBhdGgsXG4gICAgc3RhcnQ6IG51bWJlcixcbiAgICBkYXRhOiBFbGVtZW50U2VsZWN0b3JVcGdyYWRlRGF0YSxcbiAgKSB7XG4gICAgdGhpcy5maWxlU3lzdGVtXG4gICAgICAuZWRpdChmaWxlUGF0aClcbiAgICAgIC5yZW1vdmUoc3RhcnQsIGRhdGEucmVwbGFjZS5sZW5ndGgpXG4gICAgICAuaW5zZXJ0UmlnaHQoc3RhcnQsIGRhdGEucmVwbGFjZVdpdGgpO1xuICB9XG59XG4iXX0=