@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,82 +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.hasNgModuleImport = hasNgModuleImport;
11
- const schematics_1 = require("@angular-devkit/schematics");
12
- const ts = require("typescript");
13
- /**
14
- * Whether the Angular module in the given path imports the specified module class name.
15
- */
16
- function hasNgModuleImport(tree, modulePath, className) {
17
- const moduleFileContent = tree.read(modulePath);
18
- if (!moduleFileContent) {
19
- throw new schematics_1.SchematicsException(`Could not read Angular module file: ${modulePath}`);
20
- }
21
- const parsedFile = ts.createSourceFile(modulePath, moduleFileContent.toString(), ts.ScriptTarget.Latest, true);
22
- const ngModuleMetadata = findNgModuleMetadata(parsedFile);
23
- if (!ngModuleMetadata) {
24
- throw new schematics_1.SchematicsException(`Could not find NgModule declaration inside: "${modulePath}"`);
25
- }
26
- for (let property of ngModuleMetadata.properties) {
27
- if (!ts.isPropertyAssignment(property) ||
28
- property.name.getText() !== 'imports' ||
29
- !ts.isArrayLiteralExpression(property.initializer)) {
30
- continue;
31
- }
32
- if (property.initializer.elements.some(element => element.getText() === className)) {
33
- return true;
34
- }
35
- }
36
- return false;
37
- }
38
- /**
39
- * Resolves the last identifier that is part of the given expression. This helps resolving
40
- * identifiers of nested property access expressions (e.g. myNamespace.core.NgModule).
41
- */
42
- function resolveIdentifierOfExpression(expression) {
43
- if (ts.isIdentifier(expression)) {
44
- return expression;
45
- }
46
- else if (ts.isPropertyAccessExpression(expression) && ts.isIdentifier(expression.name)) {
47
- return expression.name;
48
- }
49
- return null;
50
- }
51
- /**
52
- * Finds a NgModule declaration within the specified TypeScript node and returns the
53
- * corresponding metadata for it. This function searches breadth first because
54
- * NgModule's are usually not nested within other expressions or declarations.
55
- */
56
- function findNgModuleMetadata(rootNode) {
57
- // Add immediate child nodes of the root node to the queue.
58
- const nodeQueue = [...rootNode.getChildren()];
59
- while (nodeQueue.length) {
60
- const node = nodeQueue.shift();
61
- if (ts.isDecorator(node) &&
62
- ts.isCallExpression(node.expression) &&
63
- isNgModuleCallExpression(node.expression)) {
64
- return node.expression.arguments[0];
65
- }
66
- else {
67
- nodeQueue.push(...node.getChildren());
68
- }
69
- }
70
- return null;
71
- }
72
- /** Whether the specified call expression is referring to a NgModule definition. */
73
- function isNgModuleCallExpression(callExpression) {
74
- if (!callExpression.arguments.length ||
75
- !ts.isObjectLiteralExpression(callExpression.arguments[0])) {
76
- return false;
77
- }
78
- // The `NgModule` call expression name is never referring to a `PrivateIdentifier`.
79
- const decoratorIdentifier = resolveIdentifierOfExpression(callExpression.expression);
80
- return decoratorIdentifier ? decoratorIdentifier.text === 'NgModule' : false;
81
- }
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctbW9kdWxlLWltcG9ydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL3NjaGVtYXRpY3MvdXRpbHMvYXN0L25nLW1vZHVsZS1pbXBvcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7O0FBUUgsOENBa0NDO0FBeENELDJEQUFxRTtBQUNyRSxpQ0FBaUM7QUFFakM7O0dBRUc7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxJQUFVLEVBQUUsVUFBa0IsRUFBRSxTQUFpQjtJQUNqRixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFaEQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLGdDQUFtQixDQUFDLHVDQUF1QyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQ3BDLFVBQVUsRUFDVixpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsRUFDNUIsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQ3RCLElBQUksQ0FDTCxDQUFDO0lBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUUxRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN0QixNQUFNLElBQUksZ0NBQW1CLENBQUMsZ0RBQWdELFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELEtBQUssSUFBSSxRQUFRLElBQUksZ0JBQWlCLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEQsSUFDRSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUM7WUFDbEMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxTQUFTO1lBQ3JDLENBQUMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFDbEQsQ0FBQztZQUNELFNBQVM7UUFDWCxDQUFDO1FBRUQsSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNuRixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyw2QkFBNkIsQ0FBQyxVQUF5QjtJQUM5RCxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUNoQyxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO1NBQU0sSUFBSSxFQUFFLENBQUMsMEJBQTBCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN6RixPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLG9CQUFvQixDQUFDLFFBQWlCO0lBQzdDLDJEQUEyRDtJQUMzRCxNQUFNLFNBQVMsR0FBYyxDQUFDLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFFekQsT0FBTyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDeEIsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRyxDQUFDO1FBRWhDLElBQ0UsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDcEIsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDcEMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUN6QyxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQStCLENBQUM7UUFDcEUsQ0FBQzthQUFNLENBQUM7WUFDTixTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxtRkFBbUY7QUFDbkYsU0FBUyx3QkFBd0IsQ0FBQyxjQUFpQztJQUNqRSxJQUNFLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxNQUFNO1FBQ2hDLENBQUMsRUFBRSxDQUFDLHlCQUF5QixDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDMUQsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELG1GQUFtRjtJQUNuRixNQUFNLG1CQUFtQixHQUFHLDZCQUE2QixDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyRixPQUFPLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDL0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmRldi9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtTY2hlbWF0aWNzRXhjZXB0aW9uLCBUcmVlfSBmcm9tICdAYW5ndWxhci1kZXZraXQvc2NoZW1hdGljcyc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBBbmd1bGFyIG1vZHVsZSBpbiB0aGUgZ2l2ZW4gcGF0aCBpbXBvcnRzIHRoZSBzcGVjaWZpZWQgbW9kdWxlIGNsYXNzIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNOZ01vZHVsZUltcG9ydCh0cmVlOiBUcmVlLCBtb2R1bGVQYXRoOiBzdHJpbmcsIGNsYXNzTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IG1vZHVsZUZpbGVDb250ZW50ID0gdHJlZS5yZWFkKG1vZHVsZVBhdGgpO1xuXG4gIGlmICghbW9kdWxlRmlsZUNvbnRlbnQpIHtcbiAgICB0aHJvdyBuZXcgU2NoZW1hdGljc0V4Y2VwdGlvbihgQ291bGQgbm90IHJlYWQgQW5ndWxhciBtb2R1bGUgZmlsZTogJHttb2R1bGVQYXRofWApO1xuICB9XG5cbiAgY29uc3QgcGFyc2VkRmlsZSA9IHRzLmNyZWF0ZVNvdXJjZUZpbGUoXG4gICAgbW9kdWxlUGF0aCxcbiAgICBtb2R1bGVGaWxlQ29udGVudC50b1N0cmluZygpLFxuICAgIHRzLlNjcmlwdFRhcmdldC5MYXRlc3QsXG4gICAgdHJ1ZSxcbiAgKTtcbiAgY29uc3QgbmdNb2R1bGVNZXRhZGF0YSA9IGZpbmROZ01vZHVsZU1ldGFkYXRhKHBhcnNlZEZpbGUpO1xuXG4gIGlmICghbmdNb2R1bGVNZXRhZGF0YSkge1xuICAgIHRocm93IG5ldyBTY2hlbWF0aWNzRXhjZXB0aW9uKGBDb3VsZCBub3QgZmluZCBOZ01vZHVsZSBkZWNsYXJhdGlvbiBpbnNpZGU6IFwiJHttb2R1bGVQYXRofVwiYCk7XG4gIH1cblxuICBmb3IgKGxldCBwcm9wZXJ0eSBvZiBuZ01vZHVsZU1ldGFkYXRhIS5wcm9wZXJ0aWVzKSB7XG4gICAgaWYgKFxuICAgICAgIXRzLmlzUHJvcGVydHlBc3NpZ25tZW50KHByb3BlcnR5KSB8fFxuICAgICAgcHJvcGVydHkubmFtZS5nZXRUZXh0KCkgIT09ICdpbXBvcnRzJyB8fFxuICAgICAgIXRzLmlzQXJyYXlMaXRlcmFsRXhwcmVzc2lvbihwcm9wZXJ0eS5pbml0aWFsaXplcilcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChwcm9wZXJ0eS5pbml0aWFsaXplci5lbGVtZW50cy5zb21lKGVsZW1lbnQgPT4gZWxlbWVudC5nZXRUZXh0KCkgPT09IGNsYXNzTmFtZSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgbGFzdCBpZGVudGlmaWVyIHRoYXQgaXMgcGFydCBvZiB0aGUgZ2l2ZW4gZXhwcmVzc2lvbi4gVGhpcyBoZWxwcyByZXNvbHZpbmdcbiAqIGlkZW50aWZpZXJzIG9mIG5lc3RlZCBwcm9wZXJ0eSBhY2Nlc3MgZXhwcmVzc2lvbnMgKGUuZy4gbXlOYW1lc3BhY2UuY29yZS5OZ01vZHVsZSkuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVJZGVudGlmaWVyT2ZFeHByZXNzaW9uKGV4cHJlc3Npb246IHRzLkV4cHJlc3Npb24pOiB0cy5JZGVudGlmaWVyIHwgbnVsbCB7XG4gIGlmICh0cy5pc0lkZW50aWZpZXIoZXhwcmVzc2lvbikpIHtcbiAgICByZXR1cm4gZXhwcmVzc2lvbjtcbiAgfSBlbHNlIGlmICh0cy5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihleHByZXNzaW9uKSAmJiB0cy5pc0lkZW50aWZpZXIoZXhwcmVzc2lvbi5uYW1lKSkge1xuICAgIHJldHVybiBleHByZXNzaW9uLm5hbWU7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogRmluZHMgYSBOZ01vZHVsZSBkZWNsYXJhdGlvbiB3aXRoaW4gdGhlIHNwZWNpZmllZCBUeXBlU2NyaXB0IG5vZGUgYW5kIHJldHVybnMgdGhlXG4gKiBjb3JyZXNwb25kaW5nIG1ldGFkYXRhIGZvciBpdC4gVGhpcyBmdW5jdGlvbiBzZWFyY2hlcyBicmVhZHRoIGZpcnN0IGJlY2F1c2VcbiAqIE5nTW9kdWxlJ3MgYXJlIHVzdWFsbHkgbm90IG5lc3RlZCB3aXRoaW4gb3RoZXIgZXhwcmVzc2lvbnMgb3IgZGVjbGFyYXRpb25zLlxuICovXG5mdW5jdGlvbiBmaW5kTmdNb2R1bGVNZXRhZGF0YShyb290Tm9kZTogdHMuTm9kZSk6IHRzLk9iamVjdExpdGVyYWxFeHByZXNzaW9uIHwgbnVsbCB7XG4gIC8vIEFkZCBpbW1lZGlhdGUgY2hpbGQgbm9kZXMgb2YgdGhlIHJvb3Qgbm9kZSB0byB0aGUgcXVldWUuXG4gIGNvbnN0IG5vZGVRdWV1ZTogdHMuTm9kZVtdID0gWy4uLnJvb3ROb2RlLmdldENoaWxkcmVuKCldO1xuXG4gIHdoaWxlIChub2RlUXVldWUubGVuZ3RoKSB7XG4gICAgY29uc3Qgbm9kZSA9IG5vZGVRdWV1ZS5zaGlmdCgpITtcblxuICAgIGlmIChcbiAgICAgIHRzLmlzRGVjb3JhdG9yKG5vZGUpICYmXG4gICAgICB0cy5pc0NhbGxFeHByZXNzaW9uKG5vZGUuZXhwcmVzc2lvbikgJiZcbiAgICAgIGlzTmdNb2R1bGVDYWxsRXhwcmVzc2lvbihub2RlLmV4cHJlc3Npb24pXG4gICAgKSB7XG4gICAgICByZXR1cm4gbm9kZS5leHByZXNzaW9uLmFyZ3VtZW50c1swXSBhcyB0cy5PYmplY3RMaXRlcmFsRXhwcmVzc2lvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZVF1ZXVlLnB1c2goLi4ubm9kZS5nZXRDaGlsZHJlbigpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqIFdoZXRoZXIgdGhlIHNwZWNpZmllZCBjYWxsIGV4cHJlc3Npb24gaXMgcmVmZXJyaW5nIHRvIGEgTmdNb2R1bGUgZGVmaW5pdGlvbi4gKi9cbmZ1bmN0aW9uIGlzTmdNb2R1bGVDYWxsRXhwcmVzc2lvbihjYWxsRXhwcmVzc2lvbjogdHMuQ2FsbEV4cHJlc3Npb24pOiBib29sZWFuIHtcbiAgaWYgKFxuICAgICFjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMubGVuZ3RoIHx8XG4gICAgIXRzLmlzT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24oY2FsbEV4cHJlc3Npb24uYXJndW1lbnRzWzBdKVxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBUaGUgYE5nTW9kdWxlYCBjYWxsIGV4cHJlc3Npb24gbmFtZSBpcyBuZXZlciByZWZlcnJpbmcgdG8gYSBgUHJpdmF0ZUlkZW50aWZpZXJgLlxuICBjb25zdCBkZWNvcmF0b3JJZGVudGlmaWVyID0gcmVzb2x2ZUlkZW50aWZpZXJPZkV4cHJlc3Npb24oY2FsbEV4cHJlc3Npb24uZXhwcmVzc2lvbik7XG4gIHJldHVybiBkZWNvcmF0b3JJZGVudGlmaWVyID8gZGVjb3JhdG9ySWRlbnRpZmllci50ZXh0ID09PSAnTmdNb2R1bGUnIDogZmFsc2U7XG59XG4iXX0=
@@ -1,68 +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.parseSourceFile = parseSourceFile;
11
- exports.addModuleImportToRootModule = addModuleImportToRootModule;
12
- exports.addModuleImportToModule = addModuleImportToModule;
13
- exports.findModuleFromOptions = findModuleFromOptions;
14
- const schematics_1 = require("@angular-devkit/schematics");
15
- const change_1 = require("@schematics/angular/utility/change");
16
- const workspace_1 = require("@schematics/angular/utility/workspace");
17
- const find_module_1 = require("@schematics/angular/utility/find-module");
18
- const ast_utils_1 = require("@schematics/angular/utility/ast-utils");
19
- const ng_ast_utils_1 = require("@schematics/angular/utility/ng-ast-utils");
20
- const ts = require("typescript");
21
- const project_main_file_1 = require("./project-main-file");
22
- /** Reads file given path and returns TypeScript source file. */
23
- function parseSourceFile(host, path) {
24
- const buffer = host.read(path);
25
- if (!buffer) {
26
- throw new schematics_1.SchematicsException(`Could not find file for path: ${path}`);
27
- }
28
- return ts.createSourceFile(path, buffer.toString(), ts.ScriptTarget.Latest, true);
29
- }
30
- /** Import and add module to root app module. */
31
- function addModuleImportToRootModule(host, moduleName, src, project) {
32
- const modulePath = (0, ng_ast_utils_1.getAppModulePath)(host, (0, project_main_file_1.getProjectMainFile)(project));
33
- addModuleImportToModule(host, modulePath, moduleName, src);
34
- }
35
- /**
36
- * Import and add module to specific module path.
37
- * @param host the tree we are updating
38
- * @param modulePath src location of the module to import
39
- * @param moduleName name of module to import
40
- * @param src src location to import
41
- */
42
- function addModuleImportToModule(host, modulePath, moduleName, src) {
43
- const moduleSource = parseSourceFile(host, modulePath);
44
- if (!moduleSource) {
45
- throw new schematics_1.SchematicsException(`Module not found: ${modulePath}`);
46
- }
47
- const changes = (0, ast_utils_1.addImportToModule)(moduleSource, modulePath, moduleName, src);
48
- const recorder = host.beginUpdate(modulePath);
49
- changes.forEach(change => {
50
- if (change instanceof change_1.InsertChange) {
51
- recorder.insertLeft(change.pos, change.toAdd);
52
- }
53
- });
54
- host.commitUpdate(recorder);
55
- }
56
- /** Wraps the internal find module from options with undefined path handling */
57
- async function findModuleFromOptions(host, options) {
58
- const workspace = await (0, workspace_1.getWorkspace)(host);
59
- if (!options.project) {
60
- options.project = Array.from(workspace.projects.keys())[0];
61
- }
62
- const project = workspace.projects.get(options.project);
63
- if (options.path === undefined) {
64
- options.path = `/${project.root}/src/app`;
65
- }
66
- return (0, find_module_1.findModuleFromOptions)(host, options);
67
- }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay9zY2hlbWF0aWNzL3V0aWxzL2FzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOztBQWNILDBDQU1DO0FBR0Qsa0VBUUM7QUFTRCwwREFzQkM7QUFHRCxzREFpQkM7QUFoRkQsMkRBQXFFO0FBRXJFLCtEQUFnRTtBQUNoRSxxRUFBbUU7QUFDbkUseUVBQW9HO0FBQ3BHLHFFQUF3RTtBQUN4RSwyRUFBMEU7QUFFMUUsaUNBQWlDO0FBQ2pDLDJEQUF1RDtBQUV2RCxnRUFBZ0U7QUFDaEUsU0FBZ0IsZUFBZSxDQUFDLElBQVUsRUFBRSxJQUFZO0lBQ3RELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osTUFBTSxJQUFJLGdDQUFtQixDQUFDLGlDQUFpQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3BGLENBQUM7QUFFRCxnREFBZ0Q7QUFDaEQsU0FBZ0IsMkJBQTJCLENBQ3pDLElBQVUsRUFDVixVQUFrQixFQUNsQixHQUFXLEVBQ1gsT0FBcUM7SUFFckMsTUFBTSxVQUFVLEdBQUcsSUFBQSwrQkFBZ0IsRUFBQyxJQUFJLEVBQUUsSUFBQSxzQ0FBa0IsRUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLHVCQUF1QixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQix1QkFBdUIsQ0FDckMsSUFBVSxFQUNWLFVBQWtCLEVBQ2xCLFVBQWtCLEVBQ2xCLEdBQVc7SUFFWCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRXZELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksZ0NBQW1CLENBQUMscUJBQXFCLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLElBQUEsNkJBQWlCLEVBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0UsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUU5QyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3ZCLElBQUksTUFBTSxZQUFZLHFCQUFZLEVBQUUsQ0FBQztZQUNuQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVELGdGQUFnRjtBQUN6RSxLQUFLLFVBQVUscUJBQXFCLENBQ3pDLElBQVUsRUFDVixPQUF5QjtJQUV6QixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUEsd0JBQVksRUFBQyxJQUFJLENBQUMsQ0FBQztJQUUzQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUUsQ0FBQztJQUV6RCxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDL0IsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLFVBQVUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsT0FBTyxJQUFBLG1DQUFrQixFQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMzQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuZGV2L2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1NjaGVtYXRpY3NFeGNlcHRpb24sIFRyZWV9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9zY2hlbWF0aWNzJztcbmltcG9ydCB7U2NoZW1hIGFzIENvbXBvbmVudE9wdGlvbnN9IGZyb20gJ0BzY2hlbWF0aWNzL2FuZ3VsYXIvY29tcG9uZW50L3NjaGVtYSc7XG5pbXBvcnQge0luc2VydENoYW5nZX0gZnJvbSAnQHNjaGVtYXRpY3MvYW5ndWxhci91dGlsaXR5L2NoYW5nZSc7XG5pbXBvcnQge2dldFdvcmtzcGFjZX0gZnJvbSAnQHNjaGVtYXRpY3MvYW5ndWxhci91dGlsaXR5L3dvcmtzcGFjZSc7XG5pbXBvcnQge2ZpbmRNb2R1bGVGcm9tT3B0aW9ucyBhcyBpbnRlcm5hbEZpbmRNb2R1bGV9IGZyb20gJ0BzY2hlbWF0aWNzL2FuZ3VsYXIvdXRpbGl0eS9maW5kLW1vZHVsZSc7XG5pbXBvcnQge2FkZEltcG9ydFRvTW9kdWxlfSBmcm9tICdAc2NoZW1hdGljcy9hbmd1bGFyL3V0aWxpdHkvYXN0LXV0aWxzJztcbmltcG9ydCB7Z2V0QXBwTW9kdWxlUGF0aH0gZnJvbSAnQHNjaGVtYXRpY3MvYW5ndWxhci91dGlsaXR5L25nLWFzdC11dGlscyc7XG5pbXBvcnQge3dvcmtzcGFjZXN9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHtnZXRQcm9qZWN0TWFpbkZpbGV9IGZyb20gJy4vcHJvamVjdC1tYWluLWZpbGUnO1xuXG4vKiogUmVhZHMgZmlsZSBnaXZlbiBwYXRoIGFuZCByZXR1cm5zIFR5cGVTY3JpcHQgc291cmNlIGZpbGUuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTb3VyY2VGaWxlKGhvc3Q6IFRyZWUsIHBhdGg6IHN0cmluZyk6IHRzLlNvdXJjZUZpbGUge1xuICBjb25zdCBidWZmZXIgPSBob3N0LnJlYWQocGF0aCk7XG4gIGlmICghYnVmZmVyKSB7XG4gICAgdGhyb3cgbmV3IFNjaGVtYXRpY3NFeGNlcHRpb24oYENvdWxkIG5vdCBmaW5kIGZpbGUgZm9yIHBhdGg6ICR7cGF0aH1gKTtcbiAgfVxuICByZXR1cm4gdHMuY3JlYXRlU291cmNlRmlsZShwYXRoLCBidWZmZXIudG9TdHJpbmcoKSwgdHMuU2NyaXB0VGFyZ2V0LkxhdGVzdCwgdHJ1ZSk7XG59XG5cbi8qKiBJbXBvcnQgYW5kIGFkZCBtb2R1bGUgdG8gcm9vdCBhcHAgbW9kdWxlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZE1vZHVsZUltcG9ydFRvUm9vdE1vZHVsZShcbiAgaG9zdDogVHJlZSxcbiAgbW9kdWxlTmFtZTogc3RyaW5nLFxuICBzcmM6IHN0cmluZyxcbiAgcHJvamVjdDogd29ya3NwYWNlcy5Qcm9qZWN0RGVmaW5pdGlvbixcbikge1xuICBjb25zdCBtb2R1bGVQYXRoID0gZ2V0QXBwTW9kdWxlUGF0aChob3N0LCBnZXRQcm9qZWN0TWFpbkZpbGUocHJvamVjdCkpO1xuICBhZGRNb2R1bGVJbXBvcnRUb01vZHVsZShob3N0LCBtb2R1bGVQYXRoLCBtb2R1bGVOYW1lLCBzcmMpO1xufVxuXG4vKipcbiAqIEltcG9ydCBhbmQgYWRkIG1vZHVsZSB0byBzcGVjaWZpYyBtb2R1bGUgcGF0aC5cbiAqIEBwYXJhbSBob3N0IHRoZSB0cmVlIHdlIGFyZSB1cGRhdGluZ1xuICogQHBhcmFtIG1vZHVsZVBhdGggc3JjIGxvY2F0aW9uIG9mIHRoZSBtb2R1bGUgdG8gaW1wb3J0XG4gKiBAcGFyYW0gbW9kdWxlTmFtZSBuYW1lIG9mIG1vZHVsZSB0byBpbXBvcnRcbiAqIEBwYXJhbSBzcmMgc3JjIGxvY2F0aW9uIHRvIGltcG9ydFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkTW9kdWxlSW1wb3J0VG9Nb2R1bGUoXG4gIGhvc3Q6IFRyZWUsXG4gIG1vZHVsZVBhdGg6IHN0cmluZyxcbiAgbW9kdWxlTmFtZTogc3RyaW5nLFxuICBzcmM6IHN0cmluZyxcbikge1xuICBjb25zdCBtb2R1bGVTb3VyY2UgPSBwYXJzZVNvdXJjZUZpbGUoaG9zdCwgbW9kdWxlUGF0aCk7XG5cbiAgaWYgKCFtb2R1bGVTb3VyY2UpIHtcbiAgICB0aHJvdyBuZXcgU2NoZW1hdGljc0V4Y2VwdGlvbihgTW9kdWxlIG5vdCBmb3VuZDogJHttb2R1bGVQYXRofWApO1xuICB9XG5cbiAgY29uc3QgY2hhbmdlcyA9IGFkZEltcG9ydFRvTW9kdWxlKG1vZHVsZVNvdXJjZSwgbW9kdWxlUGF0aCwgbW9kdWxlTmFtZSwgc3JjKTtcbiAgY29uc3QgcmVjb3JkZXIgPSBob3N0LmJlZ2luVXBkYXRlKG1vZHVsZVBhdGgpO1xuXG4gIGNoYW5nZXMuZm9yRWFjaChjaGFuZ2UgPT4ge1xuICAgIGlmIChjaGFuZ2UgaW5zdGFuY2VvZiBJbnNlcnRDaGFuZ2UpIHtcbiAgICAgIHJlY29yZGVyLmluc2VydExlZnQoY2hhbmdlLnBvcywgY2hhbmdlLnRvQWRkKTtcbiAgICB9XG4gIH0pO1xuXG4gIGhvc3QuY29tbWl0VXBkYXRlKHJlY29yZGVyKTtcbn1cblxuLyoqIFdyYXBzIHRoZSBpbnRlcm5hbCBmaW5kIG1vZHVsZSBmcm9tIG9wdGlvbnMgd2l0aCB1bmRlZmluZWQgcGF0aCBoYW5kbGluZyAgKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaW5kTW9kdWxlRnJvbU9wdGlvbnMoXG4gIGhvc3Q6IFRyZWUsXG4gIG9wdGlvbnM6IENvbXBvbmVudE9wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCB3b3Jrc3BhY2UgPSBhd2FpdCBnZXRXb3Jrc3BhY2UoaG9zdCk7XG5cbiAgaWYgKCFvcHRpb25zLnByb2plY3QpIHtcbiAgICBvcHRpb25zLnByb2plY3QgPSBBcnJheS5mcm9tKHdvcmtzcGFjZS5wcm9qZWN0cy5rZXlzKCkpWzBdO1xuICB9XG5cbiAgY29uc3QgcHJvamVjdCA9IHdvcmtzcGFjZS5wcm9qZWN0cy5nZXQob3B0aW9ucy5wcm9qZWN0KSE7XG5cbiAgaWYgKG9wdGlvbnMucGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgb3B0aW9ucy5wYXRoID0gYC8ke3Byb2plY3Qucm9vdH0vc3JjL2FwcGA7XG4gIH1cblxuICByZXR1cm4gaW50ZXJuYWxGaW5kTW9kdWxlKGhvc3QsIG9wdGlvbnMpO1xufVxuIl19
@@ -1,183 +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.buildComponent = buildComponent;
11
- const core_1 = require("@angular-devkit/core");
12
- const schematics_1 = require("@angular-devkit/schematics");
13
- const schema_1 = require("@schematics/angular/component/schema");
14
- const change_1 = require("@schematics/angular/utility/change");
15
- const workspace_1 = require("@schematics/angular/utility/workspace");
16
- const find_module_1 = require("@schematics/angular/utility/find-module");
17
- const parse_name_1 = require("@schematics/angular/utility/parse-name");
18
- const validation_1 = require("@schematics/angular/utility/validation");
19
- const workspace_models_1 = require("@schematics/angular/utility/workspace-models");
20
- const ast_utils_1 = require("@schematics/angular/utility/ast-utils");
21
- const fs_1 = require("fs");
22
- const path_1 = require("path");
23
- const ts = require("typescript");
24
- const get_project_1 = require("./get-project");
25
- const schematic_options_1 = require("./schematic-options");
26
- /**
27
- * Build a default project path for generating.
28
- * @param project The project to build the path for.
29
- */
30
- function buildDefaultPath(project) {
31
- const root = project.sourceRoot ? `/${project.sourceRoot}/` : `/${project.root}/src/`;
32
- const projectDirName = project.extensions['projectType'] === workspace_models_1.ProjectType.Application ? 'app' : 'lib';
33
- return `${root}${projectDirName}`;
34
- }
35
- /**
36
- * List of style extensions which are CSS compatible. All supported CLI style extensions can be
37
- * found here: angular/angular-cli/main/packages/schematics/angular/ng-new/schema.json#L118-L122
38
- */
39
- const supportedCssExtensions = ['css', 'scss', 'less'];
40
- function readIntoSourceFile(host, modulePath) {
41
- const text = host.read(modulePath);
42
- if (text === null) {
43
- throw new schematics_1.SchematicsException(`File ${modulePath} does not exist.`);
44
- }
45
- return ts.createSourceFile(modulePath, text.toString('utf-8'), ts.ScriptTarget.Latest, true);
46
- }
47
- function addDeclarationToNgModule(options) {
48
- return (host) => {
49
- if (options.skipImport || options.standalone || !options.module) {
50
- return host;
51
- }
52
- const modulePath = options.module;
53
- let source = readIntoSourceFile(host, modulePath);
54
- const componentPath = `/${options.path}/` +
55
- (options.flat ? '' : core_1.strings.dasherize(options.name) + '/') +
56
- core_1.strings.dasherize(options.name) +
57
- '.component';
58
- const relativePath = (0, find_module_1.buildRelativePath)(modulePath, componentPath);
59
- const classifiedName = core_1.strings.classify(`${options.name}Component`);
60
- const declarationChanges = (0, ast_utils_1.addDeclarationToModule)(source, modulePath, classifiedName, relativePath);
61
- const declarationRecorder = host.beginUpdate(modulePath);
62
- for (const change of declarationChanges) {
63
- if (change instanceof change_1.InsertChange) {
64
- declarationRecorder.insertLeft(change.pos, change.toAdd);
65
- }
66
- }
67
- host.commitUpdate(declarationRecorder);
68
- if (options.export) {
69
- // Need to refresh the AST because we overwrote the file in the host.
70
- source = readIntoSourceFile(host, modulePath);
71
- const exportRecorder = host.beginUpdate(modulePath);
72
- const exportChanges = (0, ast_utils_1.addExportToModule)(source, modulePath, core_1.strings.classify(`${options.name}Component`), relativePath);
73
- for (const change of exportChanges) {
74
- if (change instanceof change_1.InsertChange) {
75
- exportRecorder.insertLeft(change.pos, change.toAdd);
76
- }
77
- }
78
- host.commitUpdate(exportRecorder);
79
- }
80
- return host;
81
- };
82
- }
83
- function buildSelector(options, projectPrefix) {
84
- let selector = core_1.strings.dasherize(options.name);
85
- if (options.prefix) {
86
- selector = `${options.prefix}-${selector}`;
87
- }
88
- else if (options.prefix === undefined && projectPrefix) {
89
- selector = `${projectPrefix}-${selector}`;
90
- }
91
- return selector;
92
- }
93
- /**
94
- * Indents the text content with the amount of specified spaces. The spaces will be added after
95
- * every line-break. This utility function can be used inside of EJS templates to properly
96
- * include the additional files.
97
- */
98
- function indentTextContent(text, numSpaces) {
99
- // In the Material project there should be only LF line-endings, but the schematic files
100
- // are not being linted and therefore there can be also CRLF or just CR line-endings.
101
- return text.replace(/(\r\n|\r|\n)/g, `$1${' '.repeat(numSpaces)}`);
102
- }
103
- /**
104
- * Rule that copies and interpolates the files that belong to this schematic context. Additionally
105
- * a list of file paths can be passed to this rule in order to expose them inside the EJS
106
- * template context.
107
- *
108
- * This allows inlining the external template or stylesheet files in EJS without having
109
- * to manually duplicate the file content.
110
- */
111
- function buildComponent(options, additionalFiles = {}) {
112
- return async (host, ctx) => {
113
- const context = ctx;
114
- const workspace = await (0, workspace_1.getWorkspace)(host);
115
- const project = (0, get_project_1.getProjectFromWorkspace)(workspace, options.project);
116
- const defaultComponentOptions = (0, schematic_options_1.getDefaultComponentOptions)(project);
117
- // TODO(devversion): Remove if we drop support for older CLI versions.
118
- // This handles an unreported breaking change from the @angular-devkit/schematics. Previously
119
- // the description path resolved to the factory file, but starting from 6.2.0, it resolves
120
- // to the factory directory.
121
- const schematicPath = (0, fs_1.statSync)(context.schematic.description.path).isDirectory()
122
- ? context.schematic.description.path
123
- : (0, path_1.dirname)(context.schematic.description.path);
124
- const schematicFilesUrl = './files';
125
- const schematicFilesPath = (0, path_1.resolve)(schematicPath, schematicFilesUrl);
126
- // Add the default component option values to the options if an option is not explicitly
127
- // specified but a default component option is available.
128
- Object.keys(options)
129
- .filter(key => options[key] == null &&
130
- defaultComponentOptions[key])
131
- .forEach(key => (options[key] = defaultComponentOptions[key]));
132
- if (options.path === undefined) {
133
- options.path = buildDefaultPath(project);
134
- }
135
- options.standalone = await (0, schematic_options_1.isStandaloneSchematic)(host, options);
136
- if (!options.standalone) {
137
- options.module = (0, find_module_1.findModuleFromOptions)(host, options);
138
- }
139
- const parsedPath = (0, parse_name_1.parseName)(options.path, options.name);
140
- options.name = parsedPath.name;
141
- options.path = parsedPath.path;
142
- options.selector = options.selector || buildSelector(options, project.prefix);
143
- (0, validation_1.validateHtmlSelector)(options.selector);
144
- // In case the specified style extension is not part of the supported CSS supersets,
145
- // we generate the stylesheets with the "css" extension. This ensures that we don't
146
- // accidentally generate invalid stylesheets (e.g. drag-drop-comp.styl) which will
147
- // break the Angular CLI project. See: https://github.com/angular/components/issues/15164
148
- if (!supportedCssExtensions.includes(options.style)) {
149
- options.style = schema_1.Style.Css;
150
- }
151
- // Object that will be used as context for the EJS templates.
152
- const baseTemplateContext = {
153
- ...core_1.strings,
154
- 'if-flat': (s) => (options.flat ? '' : s),
155
- ...options,
156
- };
157
- // Key-value object that includes the specified additional files with their loaded content.
158
- // The resolved contents can be used inside EJS templates.
159
- const resolvedFiles = {};
160
- for (let key in additionalFiles) {
161
- if (additionalFiles[key]) {
162
- const fileContent = (0, fs_1.readFileSync)((0, path_1.join)(schematicFilesPath, additionalFiles[key]), 'utf-8');
163
- // Interpolate the additional files with the base EJS template context.
164
- resolvedFiles[key] = (0, core_1.template)(fileContent)(baseTemplateContext);
165
- }
166
- }
167
- const templateSource = (0, schematics_1.apply)((0, schematics_1.url)(schematicFilesUrl), [
168
- options.skipTests ? (0, schematics_1.filter)(path => !path.endsWith('.spec.ts.template')) : (0, schematics_1.noop)(),
169
- options.inlineStyle ? (0, schematics_1.filter)(path => !path.endsWith('.__style__.template')) : (0, schematics_1.noop)(),
170
- options.inlineTemplate ? (0, schematics_1.filter)(path => !path.endsWith('.html.template')) : (0, schematics_1.noop)(),
171
- // Treat the template options as any, because the type definition for the template options
172
- // is made unnecessarily explicit. Every type of object can be used in the EJS template.
173
- (0, schematics_1.applyTemplates)({ indentTextContent, resolvedFiles, ...baseTemplateContext }),
174
- // TODO(devversion): figure out why we cannot just remove the first parameter
175
- // See for example: angular-cli#schematics/angular/component/index.ts#L160
176
- (0, schematics_1.move)(null, parsedPath.path),
177
- ]);
178
- return () => (0, schematics_1.chain)([
179
- (0, schematics_1.branchAndMerge)((0, schematics_1.chain)([addDeclarationToNgModule(options), (0, schematics_1.mergeWith)(templateSource)])),
180
- ])(host, context);
181
- };
182
- }
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2Nkay9zY2hlbWF0aWNzL3V0aWxzL2J1aWxkLWNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOztBQWtKSCx3Q0FtR0M7QUFuUEQsK0NBQTBGO0FBQzFGLDJEQWFvQztBQUVwQyxpRUFBdUY7QUFDdkYsK0RBQWdFO0FBQ2hFLHFFQUFtRTtBQUNuRSx5RUFBaUc7QUFDakcsdUVBQWlFO0FBQ2pFLHVFQUE0RTtBQUM1RSxtRkFBeUU7QUFDekUscUVBQWdHO0FBQ2hHLDJCQUEwQztBQUMxQywrQkFBNEM7QUFDNUMsaUNBQWlDO0FBQ2pDLCtDQUFzRDtBQUN0RCwyREFBc0Y7QUFFdEY7OztHQUdHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxPQUFxQztJQUM3RCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUM7SUFFdEYsTUFBTSxjQUFjLEdBQ2xCLE9BQU8sQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssOEJBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBRWhGLE9BQU8sR0FBRyxJQUFJLEdBQUcsY0FBYyxFQUFFLENBQUM7QUFDcEMsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBRXZELFNBQVMsa0JBQWtCLENBQUMsSUFBVSxFQUFFLFVBQWtCO0lBQ3hELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkMsSUFBSSxJQUFJ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QUFBLHNCQUFTLEVBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3RGLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmRldi9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtzdHJpbmdzLCB0ZW1wbGF0ZSBhcyBpbnRlcnBvbGF0ZVRlbXBsYXRlLCB3b3Jrc3BhY2VzfSBmcm9tICdAYW5ndWxhci1kZXZraXQvY29yZSc7XG5pbXBvcnQge1xuICBhcHBseSxcbiAgYXBwbHlUZW1wbGF0ZXMsXG4gIGJyYW5jaEFuZE1lcmdlLFxuICBjaGFpbixcbiAgZmlsdGVyLFxuICBtZXJnZVdpdGgsXG4gIG1vdmUsXG4gIG5vb3AsXG4gIFJ1bGUsXG4gIFNjaGVtYXRpY3NFeGNlcHRpb24sXG4gIFRyZWUsXG4gIHVybCxcbn0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuaW1wb3J0IHtGaWxlU3lzdGVtU2NoZW1hdGljQ29udGV4dH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MvdG9vbHMnO1xuaW1wb3J0IHtTY2hlbWEgYXMgQ29tcG9uZW50T3B0aW9ucywgU3R5bGV9IGZyb20gJ0BzY2hlbWF0aWNzL2FuZ3VsYXIvY29tcG9uZW50L3NjaGVtYSc7XG5pbXBvcnQge0luc2VydENoYW5nZX0gZnJvbSAnQHNjaGVtYXRpY3MvYW5ndWxhci91dGlsaXR5L2NoYW5nZSc7XG5pbXBvcnQge2dldFdvcmtzcGFjZX0gZnJvbSAnQHNjaGVtYXRpY3MvYW5ndWxhci91dGlsaXR5L3dvcmtzcGFjZSc7XG5pbXBvcnQge2J1aWxkUmVsYXRpdmVQYXRoLCBmaW5kTW9kdWxlRnJvbU9wdGlvbnN9IGZyb20gJ0BzY2hlbWF0aWNzL2FuZ3VsYXIvdXRpbGl0eS9maW5kLW1vZHVsZSc7XG5pbXBvcnQge3BhcnNlTmFtZX0gZnJvbSAnQHNjaGVtYXRpY3MvYW5ndWxhci91dGlsaXR5L3BhcnNlLW5hbWUnO1xuaW1wb3J0IHt2YWxpZGF0ZUh0bWxTZWxlY3Rvcn0gZnJvbSAnQHNjaGVtYXRpY3MvYW5ndWxhci91dGlsaXR5L3ZhbGlkYXRpb24nO1xuaW1wb3J0IHtQcm9qZWN0VHlwZX0gZnJvbSAnQHNjaGVtYXRpY3MvYW5ndWxhci91dGlsaXR5L3dvcmtzcGFjZS1tb2RlbHMnO1xuaW1wb3J0IHthZGREZWNsYXJhdGlvblRvTW9kdWxlLCBhZGRFeHBvcnRUb01vZHVsZX0gZnJvbSAnQHNjaGVtYXRpY3MvYW5ndWxhci91dGlsaXR5L2FzdC11dGlscyc7XG5pbXBvcnQge3JlYWRGaWxlU3luYywgc3RhdFN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCB7ZGlybmFtZSwgam9pbiwgcmVzb2x2ZX0gZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7Z2V0UHJvamVjdEZyb21Xb3Jrc3BhY2V9IGZyb20gJy4vZ2V0LXByb2plY3QnO1xuaW1wb3J0IHtnZXREZWZhdWx0Q29tcG9uZW50T3B0aW9ucywgaXNTdGFuZGFsb25lU2NoZW1hdGljfSBmcm9tICcuL3NjaGVtYXRpYy1vcHRpb25zJztcblxuLyoqXG4gKiBCdWlsZCBhIGRlZmF1bHQgcHJvamVjdCBwYXRoIGZvciBnZW5lcmF0aW5nLlxuICogQHBhcmFtIHByb2plY3QgVGhlIHByb2plY3QgdG8gYnVpbGQgdGhlIHBhdGggZm9yLlxuICovXG5mdW5jdGlvbiBidWlsZERlZmF1bHRQYXRoKHByb2plY3Q6IHdvcmtzcGFjZXMuUHJvamVjdERlZmluaXRpb24pOiBzdHJpbmcge1xuICBjb25zdCByb290ID0gcHJvamVjdC5zb3VyY2VSb290ID8gYC8ke3Byb2plY3Quc291cmNlUm9vdH0vYCA6IGAvJHtwcm9qZWN0LnJvb3R9L3NyYy9gO1xuXG4gIGNvbnN0IHByb2plY3REaXJOYW1lID1cbiAgICBwcm9qZWN0LmV4dGVuc2lvbnNbJ3Byb2plY3RUeXBlJ10gPT09IFByb2plY3RUeXBlLkFwcGxpY2F0aW9uID8gJ2FwcCcgOiAnbGliJztcblxuICByZXR1cm4gYCR7cm9vdH0ke3Byb2plY3REaXJOYW1lfWA7XG59XG5cbi8qKlxuICogTGlzdCBvZiBzdHlsZSBleHRlbnNpb25zIHdoaWNoIGFyZSBDU1MgY29tcGF0aWJsZS4gQWxsIHN1cHBvcnRlZCBDTEkgc3R5bGUgZXh0ZW5zaW9ucyBjYW4gYmVcbiAqIGZvdW5kIGhlcmU6IGFuZ3VsYXIvYW5ndWxhci1jbGkvbWFpbi9wYWNrYWdlcy9zY2hlbWF0aWNzL2FuZ3VsYXIvbmctbmV3L3NjaGVtYS5qc29uI0wxMTgtTDEyMlxuICovXG5jb25zdCBzdXBwb3J0ZWRDc3NFeHRlbnNpb25zID0gWydjc3MnLCAnc2NzcycsICdsZXNzJ107XG5cbmZ1bmN0aW9uIHJlYWRJbnRvU291cmNlRmlsZShob3N0OiBUcmVlLCBtb2R1bGVQYXRoOiBzdHJpbmcpIHtcbiAgY29uc3QgdGV4dCA9IGhvc3QucmVhZChtb2R1bGVQYXRoKTtcbiAgaWYgKHRleHQgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgU2NoZW1hdGljc0V4Y2VwdGlvbihgRmlsZSAke21vZHVsZVBhdGh9IGRvZXMgbm90IGV4aXN0LmApO1xuICB9XG5cbiAgcmV0dXJuIHRzLmNyZWF0ZVNvdXJjZUZpbGUobW9kdWxlUGF0aCwgdGV4dC50b1N0cmluZygndXRmLTgnKSwgdHMuU2NyaXB0VGFyZ2V0LkxhdGVzdCwgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGFkZERlY2xhcmF0aW9uVG9OZ01vZHVsZShvcHRpb25zOiBDb21wb25lbnRPcHRpb25zKTogUnVsZSB7XG4gIHJldHVybiAoaG9zdDogVHJlZSkgPT4ge1xuICAgIGlmIChvcHRpb25zLnNraXBJbXBvcnQgfHwgb3B0aW9ucy5zdGFuZGFsb25lIHx8ICFvcHRpb25zLm1vZHVsZSkge1xuICAgICAgcmV0dXJuIGhvc3Q7XG4gICAgfVxuXG4gICAgY29uc3QgbW9kdWxlUGF0aCA9IG9wdGlvbnMubW9kdWxlO1xuICAgIGxldCBzb3VyY2UgPSByZWFkSW50b1NvdXJjZUZpbGUoaG9zdCwgbW9kdWxlUGF0aCk7XG5cbiAgICBjb25zdCBjb21wb25lbnRQYXRoID1cbiAgICAgIGAvJHtvcHRpb25zLnBhdGh9L2AgK1xuICAgICAgKG9wdGlvbnMuZmxhdCA/ICcnIDogc3RyaW5ncy5kYXNoZXJpemUob3B0aW9ucy5uYW1lKSArICcvJykgK1xuICAgICAgc3RyaW5ncy5kYXNoZXJpemUob3B0aW9ucy5uYW1lKSArXG4gICAgICAnLmNvbXBvbmVudCc7XG4gICAgY29uc3QgcmVsYXRpdmVQYXRoID0gYnVpbGRSZWxhdGl2ZVBhdGgobW9kdWxlUGF0aCwgY29tcG9uZW50UGF0aCk7XG4gICAgY29uc3QgY2xhc3NpZmllZE5hbWUgPSBzdHJpbmdzLmNsYXNzaWZ5KGAke29wdGlvbnMubmFtZX1Db21wb25lbnRgKTtcblxuICAgIGNvbnN0IGRlY2xhcmF0aW9uQ2hhbmdlcyA9IGFkZERlY2xhcmF0aW9uVG9Nb2R1bGUoXG4gICAgICBzb3VyY2UsXG4gICAgICBtb2R1bGVQYXRoLFxuICAgICAgY2xhc3NpZmllZE5hbWUsXG4gICAgICByZWxhdGl2ZVBhdGgsXG4gICAgKTtcblxuICAgIGNvbnN0IGRlY2xhcmF0aW9uUmVjb3JkZXIgPSBob3N0LmJlZ2luVXBkYXRlKG1vZHVsZVBhdGgpO1xuICAgIGZvciAoY29uc3QgY2hhbmdlIG9mIGRlY2xhcmF0aW9uQ2hhbmdlcykge1xuICAgICAgaWYgKGNoYW5nZSBpbnN0YW5jZW9mIEluc2VydENoYW5nZSkge1xuICAgICAgICBkZWNsYXJhdGlvblJlY29yZGVyLmluc2VydExlZnQoY2hhbmdlLnBvcywgY2hhbmdlLnRvQWRkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaG9zdC5jb21taXRVcGRhdGUoZGVjbGFyYXRpb25SZWNvcmRlcik7XG5cbiAgICBpZiAob3B0aW9ucy5leHBvcnQpIHtcbiAgICAgIC8vIE5lZWQgdG8gcmVmcmVzaCB0aGUgQVNUIGJlY2F1c2Ugd2Ugb3Zlcndyb3RlIHRoZSBmaWxlIGluIHRoZSBob3N0LlxuICAgICAgc291cmNlID0gcmVhZEludG9Tb3VyY2VGaWxlKGhvc3QsIG1vZHVsZVBhdGgpO1xuXG4gICAgICBjb25zdCBleHBvcnRSZWNvcmRlciA9IGhvc3QuYmVnaW5VcGRhdGUobW9kdWxlUGF0aCk7XG4gICAgICBjb25zdCBleHBvcnRDaGFuZ2VzID0gYWRkRXhwb3J0VG9Nb2R1bGUoXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgbW9kdWxlUGF0aCxcbiAgICAgICAgc3RyaW5ncy5jbGFzc2lmeShgJHtvcHRpb25zLm5hbWV9Q29tcG9uZW50YCksXG4gICAgICAgIHJlbGF0aXZlUGF0aCxcbiAgICAgICk7XG5cbiAgICAgIGZvciAoY29uc3QgY2hhbmdlIG9mIGV4cG9ydENoYW5nZXMpIHtcbiAgICAgICAgaWYgKGNoYW5nZSBpbnN0YW5jZW9mIEluc2VydENoYW5nZSkge1xuICAgICAgICAgIGV4cG9ydFJlY29yZGVyLmluc2VydExlZnQoY2hhbmdlLnBvcywgY2hhbmdlLnRvQWRkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaG9zdC5jb21taXRVcGRhdGUoZXhwb3J0UmVjb3JkZXIpO1xuICAgIH1cblxuICAgIHJldHVybiBob3N0O1xuICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZFNlbGVjdG9yKG9wdGlvbnM6IENvbXBvbmVudE9wdGlvbnMsIHByb2plY3RQcmVmaXg/OiBzdHJpbmcpIHtcbiAgbGV0IHNlbGVjdG9yID0gc3RyaW5ncy5kYXNoZXJpemUob3B0aW9ucy5uYW1lKTtcbiAgaWYgKG9wdGlvbnMucHJlZml4KSB7XG4gICAgc2VsZWN0b3IgPSBgJHtvcHRpb25zLnByZWZpeH0tJHtzZWxlY3Rvcn1gO1xuICB9IGVsc2UgaWYgKG9wdGlvbnMucHJlZml4ID09PSB1bmRlZmluZWQgJiYgcHJvamVjdFByZWZpeCkge1xuICAgIHNlbGVjdG9yID0gYCR7cHJvamVjdFByZWZpeH0tJHtzZWxlY3Rvcn1gO1xuICB9XG5cbiAgcmV0dXJuIHNlbGVjdG9yO1xufVxuXG4vKipcbiAqIEluZGVudHMgdGhlIHRleHQgY29udGVudCB3aXRoIHRoZSBhbW91bnQgb2Ygc3BlY2lmaWVkIHNwYWNlcy4gVGhlIHNwYWNlcyB3aWxsIGJlIGFkZGVkIGFmdGVyXG4gKiBldmVyeSBsaW5lLWJyZWFrLiBUaGlzIHV0aWxpdHkgZnVuY3Rpb24gY2FuIGJlIHVzZWQgaW5zaWRlIG9mIEVKUyB0ZW1wbGF0ZXMgdG8gcHJvcGVybHlcbiAqIGluY2x1ZGUgdGhlIGFkZGl0aW9uYWwgZmlsZXMuXG4gKi9cbmZ1bmN0aW9uIGluZGVudFRleHRDb250ZW50KHRleHQ6IHN0cmluZywgbnVtU3BhY2VzOiBudW1iZXIpOiBzdHJpbmcge1xuICAvLyBJbiB0aGUgTWF0ZXJpYWwgcHJvamVjdCB0aGVyZSBzaG91bGQgYmUgb25seSBMRiBsaW5lLWVuZGluZ3MsIGJ1dCB0aGUgc2NoZW1hdGljIGZpbGVzXG4gIC8vIGFyZSBub3QgYmVpbmcgbGludGVkIGFuZCB0aGVyZWZvcmUgdGhlcmUgY2FuIGJlIGFsc28gQ1JMRiBvciBqdXN0IENSIGxpbmUtZW5kaW5ncy5cbiAgcmV0dXJuIHRleHQucmVwbGFjZSgvKFxcclxcbnxcXHJ8XFxuKS9nLCBgJDEkeycgJy5yZXBlYXQobnVtU3BhY2VzKX1gKTtcbn1cblxuLyoqXG4gKiBSdWxlIHRoYXQgY29waWVzIGFuZCBpbnRlcnBvbGF0ZXMgdGhlIGZpbGVzIHRoYXQgYmVsb25nIHRvIHRoaXMgc2NoZW1hdGljIGNvbnRleHQuIEFkZGl0aW9uYWxseVxuICogYSBsaXN0IG9mIGZpbGUgcGF0aHMgY2FuIGJlIHBhc3NlZCB0byB0aGlzIHJ1bGUgaW4gb3JkZXIgdG8gZXhwb3NlIHRoZW0gaW5zaWRlIHRoZSBFSlNcbiAqIHRlbXBsYXRlIGNvbnRleHQuXG4gKlxuICogVGhpcyBhbGxvd3MgaW5saW5pbmcgdGhlIGV4dGVybmFsIHRlbXBsYXRlIG9yIHN0eWxlc2hlZXQgZmlsZXMgaW4gRUpTIHdpdGhvdXQgaGF2aW5nXG4gKiB0byBtYW51YWxseSBkdXBsaWNhdGUgdGhlIGZpbGUgY29udGVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQ29tcG9uZW50KFxuICBvcHRpb25zOiBDb21wb25lbnRPcHRpb25zLFxuICBhZGRpdGlvbmFsRmlsZXM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0ge30sXG4pOiBSdWxlIHtcbiAgcmV0dXJuIGFzeW5jIChob3N0LCBjdHgpID0+IHtcbiAgICBjb25zdCBjb250ZXh0ID0gY3R4IGFzIEZpbGVTeXN0ZW1TY2hlbWF0aWNDb250ZXh0O1xuICAgIGNvbnN0IHdvcmtzcGFjZSA9IGF3YWl0IGdldFdvcmtzcGFjZShob3N0KTtcbiAgICBjb25zdCBwcm9qZWN0ID0gZ2V0UHJvamVjdEZyb21Xb3Jrc3BhY2Uod29ya3NwYWNlLCBvcHRpb25zLnByb2plY3QpO1xuICAgIGNvbnN0IGRlZmF1bHRDb21wb25lbnRPcHRpb25zID0gZ2V0RGVmYXVsdENvbXBvbmVudE9wdGlvbnMocHJvamVjdCk7XG5cbiAgICAvLyBUT0RPKGRldnZlcnNpb24pOiBSZW1vdmUgaWYgd2UgZHJvcCBzdXBwb3J0IGZvciBvbGRlciBDTEkgdmVyc2lvbnMuXG4gICAgLy8gVGhpcyBoYW5kbGVzIGFuIHVucmVwb3J0ZWQgYnJlYWtpbmcgY2hhbmdlIGZyb20gdGhlIEBhbmd1bGFyLWRldmtpdC9zY2hlbWF0aWNzLiBQcmV2aW91c2x5XG4gICAgLy8gdGhlIGRlc2NyaXB0aW9uIHBhdGggcmVzb2x2ZWQgdG8gdGhlIGZhY3RvcnkgZmlsZSwgYnV0IHN0YXJ0aW5nIGZyb20gNi4yLjAsIGl0IHJlc29sdmVzXG4gICAgLy8gdG8gdGhlIGZhY3RvcnkgZGlyZWN0b3J5LlxuICAgIGNvbnN0IHNjaGVtYXRpY1BhdGggPSBzdGF0U3luYyhjb250ZXh0LnNjaGVtYXRpYy5kZXNjcmlwdGlvbi5wYXRoKS5pc0RpcmVjdG9yeSgpXG4gICAgICA/IGNvbnRleHQuc2NoZW1hdGljLmRlc2NyaXB0aW9uLnBhdGhcbiAgICAgIDogZGlybmFtZShjb250ZXh0LnNjaGVtYXRpYy5kZXNjcmlwdGlvbi5wYXRoKTtcblxuICAgIGNvbnN0IHNjaGVtYXRpY0ZpbGVzVXJsID0gJy4vZmlsZXMnO1xuICAgIGNvbnN0IHNjaGVtYXRpY0ZpbGVzUGF0aCA9IHJlc29sdmUoc2NoZW1hdGljUGF0aCwgc2NoZW1hdGljRmlsZXNVcmwpO1xuXG4gICAgLy8gQWRkIHRoZSBkZWZhdWx0IGNvbXBvbmVudCBvcHRpb24gdmFsdWVzIHRvIHRoZSBvcHRpb25zIGlmIGFuIG9wdGlvbiBpcyBub3QgZXhwbGljaXRseVxuICAgIC8vIHNwZWNpZmllZCBidXQgYSBkZWZhdWx0IGNvbXBvbmVudCBvcHRpb24gaXMgYXZhaWxhYmxlLlxuICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpXG4gICAgICAuZmlsdGVyKFxuICAgICAgICBrZXkgPT5cbiAgICAgICAgICBvcHRpb25zW2tleSBhcyBrZXlvZiBDb21wb25lbnRPcHRpb25zXSA9PSBudWxsICYmXG4gICAgICAgICAgZGVmYXVsdENvbXBvbmVudE9wdGlvbnNba2V5IGFzIGtleW9mIENvbXBvbmVudE9wdGlvbnNdLFxuICAgICAgKVxuICAgICAgLmZvckVhY2goXG4gICAgICAgIGtleSA9PlxuICAgICAgICAgICgob3B0aW9ucyBhcyBhbnkpW2tleV0gPSAoZGVmYXVsdENvbXBvbmVudE9wdGlvbnMgYXMgQ29tcG9uZW50T3B0aW9ucylbXG4gICAgICAgICAgICBrZXkgYXMga2V5b2YgQ29tcG9uZW50T3B0aW9uc1xuICAgICAgICAgIF0pLFxuICAgICAgKTtcblxuICAgIGlmIChvcHRpb25zLnBhdGggPT09IHVuZGVmaW5lZCkge1xuICAgICAgb3B0aW9ucy5wYXRoID0gYnVpbGREZWZhdWx0UGF0aChwcm9qZWN0KTtcbiAgICB9XG5cbiAgICBvcHRpb25zLnN0YW5kYWxvbmUgPSBhd2FpdCBpc1N0YW5kYWxvbmVTY2hlbWF0aWMoaG9zdCwgb3B0aW9ucyk7XG5cbiAgICBpZiAoIW9wdGlvbnMuc3RhbmRhbG9uZSkge1xuICAgICAgb3B0aW9ucy5tb2R1bGUgPSBmaW5kTW9kdWxlRnJvbU9wdGlvbnMoaG9zdCwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyc2VkUGF0aCA9IHBhcnNlTmFtZShvcHRpb25zLnBhdGghLCBvcHRpb25zLm5hbWUpO1xuXG4gICAgb3B0aW9ucy5uYW1lID0gcGFyc2VkUGF0aC5uYW1lO1xuICAgIG9wdGlvbnMucGF0aCA9IHBhcnNlZFBhdGgucGF0aDtcbiAgICBvcHRpb25zLnNlbGVjdG9yID0gb3B0aW9ucy5zZWxlY3RvciB8fCBidWlsZFNlbGVjdG9yKG9wdGlvbnMsIHByb2plY3QucHJlZml4KTtcblxuICAgIHZhbGlkYXRlSHRtbFNlbGVjdG9yKG9wdGlvbnMuc2VsZWN0b3IhKTtcblxuICAgIC8vIEluIGNhc2UgdGhlIHNwZWNpZmllZCBzdHlsZSBleHRlbnNpb24gaXMgbm90IHBhcnQgb2YgdGhlIHN1cHBvcnRlZCBDU1Mgc3VwZXJzZXRzLFxuICAgIC8vIHdlIGdlbmVyYXRlIHRoZSBzdHlsZXNoZWV0cyB3aXRoIHRoZSBcImNzc1wiIGV4dGVuc2lvbi4gVGhpcyBlbnN1cmVzIHRoYXQgd2UgZG9uJ3RcbiAgICAvLyBhY2NpZGVudGFsbHkgZ2VuZXJhdGUgaW52YWxpZCBzdHlsZXNoZWV0cyAoZS5nLiBkcmFnLWRyb3AtY29tcC5zdHlsKSB3aGljaCB3aWxsXG4gICAgLy8gYnJlYWsgdGhlIEFuZ3VsYXIgQ0xJIHByb2plY3QuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9pc3N1ZXMvMTUxNjRcbiAgICBpZiAoIXN1cHBvcnRlZENzc0V4dGVuc2lvbnMuaW5jbHVkZXMob3B0aW9ucy5zdHlsZSEpKSB7XG4gICAgICBvcHRpb25zLnN0eWxlID0gU3R5bGUuQ3NzO1xuICAgIH1cblxuICAgIC8vIE9iamVjdCB0aGF0IHdpbGwgYmUgdXNlZCBhcyBjb250ZXh0IGZvciB0aGUgRUpTIHRlbXBsYXRlcy5cbiAgICBjb25zdCBiYXNlVGVtcGxhdGVDb250ZXh0ID0ge1xuICAgICAgLi4uc3RyaW5ncyxcbiAgICAgICdpZi1mbGF0JzogKHM6IHN0cmluZykgPT4gKG9wdGlvbnMuZmxhdCA/ICcnIDogcyksXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG5cbiAgICAvLyBLZXktdmFsdWUgb2JqZWN0IHRoYXQgaW5jbHVkZXMgdGhlIHNwZWNpZmllZCBhZGRpdGlvbmFsIGZpbGVzIHdpdGggdGhlaXIgbG9hZGVkIGNvbnRlbnQuXG4gICAgLy8gVGhlIHJlc29sdmVkIGNvbnRlbnRzIGNhbiBiZSB1c2VkIGluc2lkZSBFSlMgdGVtcGxhdGVzLlxuICAgIGNvbnN0IHJlc29sdmVkRmlsZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICAgIGZvciAobGV0IGtleSBpbiBhZGRpdGlvbmFsRmlsZXMpIHtcbiAgICAgIGlmIChhZGRpdGlvbmFsRmlsZXNba2V5XSkge1xuICAgICAgICBjb25zdCBmaWxlQ29udGVudCA9IHJlYWRGaWxlU3luYyhqb2luKHNjaGVtYXRpY0ZpbGVzUGF0aCwgYWRkaXRpb25hbEZpbGVzW2tleV0pLCAndXRmLTgnKTtcblxuICAgICAgICAvLyBJbnRlcnBvbGF0ZSB0aGUgYWRkaXRpb25hbCBmaWxlcyB3aXRoIHRoZSBiYXNlIEVKUyB0ZW1wbGF0ZSBjb250ZXh0LlxuICAgICAgICByZXNvbHZlZEZpbGVzW2tleV0gPSBpbnRlcnBvbGF0ZVRlbXBsYXRlKGZpbGVDb250ZW50KShiYXNlVGVtcGxhdGVDb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB0ZW1wbGF0ZVNvdXJjZSA9IGFwcGx5KHVybChzY2hlbWF0aWNGaWxlc1VybCksIFtcbiAgICAgIG9wdGlvbnMuc2tpcFRlc3RzID8gZmlsdGVyKHBhdGggPT4gIXBhdGguZW5kc1dpdGgoJy5zcGVjLnRzLnRlbXBsYXRlJykpIDogbm9vcCgpLFxuICAgICAgb3B0aW9ucy5pbmxpbmVTdHlsZSA/IGZpbHRlcihwYXRoID0+ICFwYXRoLmVuZHNXaXRoKCcuX19zdHlsZV9fLnRlbXBsYXRlJykpIDogbm9vcCgpLFxuICAgICAgb3B0aW9ucy5pbmxpbmVUZW1wbGF0ZSA/IGZpbHRlcihwYXRoID0+ICFwYXRoLmVuZHNXaXRoKCcuaHRtbC50ZW1wbGF0ZScpKSA6IG5vb3AoKSxcbiAgICAgIC8vIFRyZWF0IHRoZSB0ZW1wbGF0ZSBvcHRpb25zIGFzIGFueSwgYmVjYXVzZSB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgdGVtcGxhdGUgb3B0aW9uc1xuICAgICAgLy8gaXMgbWFkZSB1bm5lY2Vzc2FyaWx5IGV4cGxpY2l0LiBFdmVyeSB0eXBlIG9mIG9iamVjdCBjYW4gYmUgdXNlZCBpbiB0aGUgRUpTIHRlbXBsYXRlLlxuICAgICAgYXBwbHlUZW1wbGF0ZXMoe2luZGVudFRleHRDb250ZW50LCByZXNvbHZlZEZpbGVzLCAuLi5iYXNlVGVtcGxhdGVDb250ZXh0fSBhcyBhbnkpLFxuICAgICAgLy8gVE9ETyhkZXZ2ZXJzaW9uKTogZmlndXJlIG91dCB3aHkgd2UgY2Fubm90IGp1c3QgcmVtb3ZlIHRoZSBmaXJzdCBwYXJhbWV0ZXJcbiAgICAgIC8vIFNlZSBmb3IgZXhhbXBsZTogYW5ndWxhci1jbGkjc2NoZW1hdGljcy9hbmd1bGFyL2NvbXBvbmVudC9pbmRleC50cyNMMTYwXG4gICAgICBtb3ZlKG51bGwgYXMgYW55LCBwYXJzZWRQYXRoLnBhdGgpLFxuICAgIF0pO1xuXG4gICAgcmV0dXJuICgpID0+XG4gICAgICBjaGFpbihbXG4gICAgICAgIGJyYW5jaEFuZE1lcmdlKGNoYWluKFthZGREZWNsYXJhdGlvblRvTmdNb2R1bGUob3B0aW9ucyksIG1lcmdlV2l0aCh0ZW1wbGF0ZVNvdXJjZSldKSksXG4gICAgICBdKShob3N0LCBjb250ZXh0KTtcbiAgfTtcbn1cbiJdfQ==
@@ -1,28 +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.getProjectFromWorkspace = getProjectFromWorkspace;
11
- const schematics_1 = require("@angular-devkit/schematics");
12
- /**
13
- * Finds the specified project configuration in the workspace. Throws an error if the project
14
- * couldn't be found.
15
- */
16
- function getProjectFromWorkspace(workspace, projectName) {
17
- if (!projectName) {
18
- // TODO(crisbeto): some schematics APIs have the project name as optional so for now it's
19
- // simpler to allow undefined and checking it at runtime. Eventually we should clean this up.
20
- throw new schematics_1.SchematicsException('Project name is required.');
21
- }
22
- const project = workspace.projects.get(projectName);
23
- if (!project) {
24
- throw new schematics_1.SchematicsException(`Could not find project in workspace: ${projectName}`);
25
- }
26
- return project;
27
- }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXByb2plY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL3NjaGVtYXRpY3MvdXRpbHMvZ2V0LXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7QUFTSCwwREFpQkM7QUF2QkQsMkRBQStEO0FBRS9EOzs7R0FHRztBQUNILFNBQWdCLHVCQUF1QixDQUNyQyxTQUF5QyxFQUN6QyxXQUErQjtJQUUvQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakIseUZBQXlGO1FBQ3pGLDZGQUE2RjtRQUM3RixNQUFNLElBQUksZ0NBQW1CLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFcEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLGdDQUFtQixDQUFDLHdDQUF3QyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuZGV2L2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge3dvcmtzcGFjZXN9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCB7U2NoZW1hdGljc0V4Y2VwdGlvbn0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuXG4vKipcbiAqIEZpbmRzIHRoZSBzcGVjaWZpZWQgcHJvamVjdCBjb25maWd1cmF0aW9uIGluIHRoZSB3b3Jrc3BhY2UuIFRocm93cyBhbiBlcnJvciBpZiB0aGUgcHJvamVjdFxuICogY291bGRuJ3QgYmUgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9qZWN0RnJvbVdvcmtzcGFjZShcbiAgd29ya3NwYWNlOiB3b3Jrc3BhY2VzLldvcmtzcGFjZURlZmluaXRpb24sXG4gIHByb2plY3ROYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4pOiB3b3Jrc3BhY2VzLlByb2plY3REZWZpbml0aW9uIHtcbiAgaWYgKCFwcm9qZWN0TmFtZSkge1xuICAgIC8vIFRPRE8oY3Jpc2JldG8pOiBzb21lIHNjaGVtYXRpY3MgQVBJcyBoYXZlIHRoZSBwcm9qZWN0IG5hbWUgYXMgb3B0aW9uYWwgc28gZm9yIG5vdyBpdCdzXG4gICAgLy8gc2ltcGxlciB0byBhbGxvdyB1bmRlZmluZWQgYW5kIGNoZWNraW5nIGl0IGF0IHJ1bnRpbWUuIEV2ZW50dWFsbHkgd2Ugc2hvdWxkIGNsZWFuIHRoaXMgdXAuXG4gICAgdGhyb3cgbmV3IFNjaGVtYXRpY3NFeGNlcHRpb24oJ1Byb2plY3QgbmFtZSBpcyByZXF1aXJlZC4nKTtcbiAgfVxuXG4gIGNvbnN0IHByb2plY3QgPSB3b3Jrc3BhY2UucHJvamVjdHMuZ2V0KHByb2plY3ROYW1lKTtcblxuICBpZiAoIXByb2plY3QpIHtcbiAgICB0aHJvdyBuZXcgU2NoZW1hdGljc0V4Y2VwdGlvbihgQ291bGQgbm90IGZpbmQgcHJvamVjdCBpbiB3b3Jrc3BhY2U6ICR7cHJvamVjdE5hbWV9YCk7XG4gIH1cblxuICByZXR1cm4gcHJvamVjdDtcbn1cbiJdfQ==
@@ -1,91 +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.appendHtmlElementToHead = appendHtmlElementToHead;
11
- exports.getHtmlHeadTagElement = getHtmlHeadTagElement;
12
- exports.addBodyClass = addBodyClass;
13
- const schematics_1 = require("@angular-devkit/schematics");
14
- const parse5_element_1 = require("./parse5-element");
15
- const parse5_1 = require("parse5");
16
- /** Appends the given element HTML fragment to the `<head>` element of the specified HTML file. */
17
- function appendHtmlElementToHead(host, htmlFilePath, elementHtml) {
18
- const htmlFileBuffer = host.read(htmlFilePath);
19
- if (!htmlFileBuffer) {
20
- throw new schematics_1.SchematicsException(`Could not read file for path: ${htmlFilePath}`);
21
- }
22
- const htmlContent = htmlFileBuffer.toString();
23
- if (htmlContent.includes(elementHtml)) {
24
- return;
25
- }
26
- const headTag = getHtmlHeadTagElement(htmlContent);
27
- if (!headTag) {
28
- throw Error(`Could not find '<head>' element in HTML file: ${htmlFileBuffer}`);
29
- }
30
- // We always have access to the source code location here because the `getHeadTagElement`
31
- // function explicitly has the `sourceCodeLocationInfo` option enabled.
32
- const endTagOffset = headTag.sourceCodeLocation.endTag.startOffset;
33
- const indentationOffset = (0, parse5_element_1.getChildElementIndentation)(headTag);
34
- const insertion = `${' '.repeat(indentationOffset)}${elementHtml}`;
35
- const recordedChange = host.beginUpdate(htmlFilePath).insertRight(endTagOffset, `${insertion}\n`);
36
- host.commitUpdate(recordedChange);
37
- }
38
- /** Parses the given HTML file and returns the head element if available. */
39
- function getHtmlHeadTagElement(htmlContent) {
40
- return getElementByTagName('head', htmlContent);
41
- }
42
- /** Adds a class to the body of the document. */
43
- function addBodyClass(host, htmlFilePath, className) {
44
- const htmlFileBuffer = host.read(htmlFilePath);
45
- if (!htmlFileBuffer) {
46
- throw new schematics_1.SchematicsException(`Could not read file for path: ${htmlFilePath}`);
47
- }
48
- const htmlContent = htmlFileBuffer.toString();
49
- const body = getElementByTagName('body', htmlContent);
50
- if (!body) {
51
- throw Error(`Could not find <body> element in HTML file: ${htmlFileBuffer}`);
52
- }
53
- const classAttribute = body.attrs.find(attribute => attribute.name === 'class');
54
- if (classAttribute) {
55
- const hasClass = classAttribute.value
56
- .split(' ')
57
- .map(part => part.trim())
58
- .includes(className);
59
- if (!hasClass) {
60
- // We have source code location info enabled, and we pre-checked that the element
61
- // has attributes, specifically the `class` attribute.
62
- const classAttributeLocation = body.sourceCodeLocation.attrs['class'];
63
- const recordedChange = host
64
- .beginUpdate(htmlFilePath)
65
- .insertRight(classAttributeLocation.endOffset - 1, ` ${className}`);
66
- host.commitUpdate(recordedChange);
67
- }
68
- }
69
- else {
70
- const recordedChange = host
71
- .beginUpdate(htmlFilePath)
72
- .insertRight(body.sourceCodeLocation.startTag.endOffset - 1, ` class="${className}"`);
73
- host.commitUpdate(recordedChange);
74
- }
75
- }
76
- /** Finds an element by its tag name. */
77
- function getElementByTagName(tagName, htmlContent) {
78
- const document = (0, parse5_1.parse)(htmlContent, { sourceCodeLocationInfo: true });
79
- const nodeQueue = [...document.childNodes];
80
- while (nodeQueue.length) {
81
- const node = nodeQueue.shift();
82
- if (node.nodeName.toLowerCase() === tagName) {
83
- return node;
84
- }
85
- else if (node.childNodes) {
86
- nodeQueue.push(...node.childNodes);
87
- }
88
- }
89
- return null;
90
- }
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1tYW5pcHVsYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL3NjaGVtYXRpY3MvdXRpbHMvaHRtbC1tYW5pcHVsYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7QUFPSCwwREE0QkM7QUFHRCxzREFFQztBQUdELG9DQXFDQztBQTlFRCwyREFBcUU7QUFDckUscURBQXFFO0FBQ3JFLG1DQUEwQztBQUUxQyxrR0FBa0c7QUFDbEcsU0FBZ0IsdUJBQXVCLENBQUMsSUFBVSxFQUFFLFlBQW9CLEVBQUUsV0FBbUI7SUFDM0YsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUUvQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEIsTUFBTSxJQUFJLGdDQUFtQixDQUFDLGlDQUFpQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFFOUMsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7UUFDdEMsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVuRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixNQUFNLEtBQUssQ0FBQyxpREFBaUQsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQseUZBQXlGO0lBQ3pGLHVFQUF1RTtJQUN2RSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsa0JBQW1CLENBQUMsTUFBTyxDQUFDLFdBQVcsQ0FBQztJQUNyRSxNQUFNLGlCQUFpQixHQUFHLElBQUEsMkNBQTBCLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUQsTUFBTSxTQUFTLEdBQUcsR0FBRyxHQUFHLENB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QUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUM1QyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMzQixTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuZGV2L2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1NjaGVtYXRpY3NFeGNlcHRpb24sIFRyZWV9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9zY2hlbWF0aWNzJztcbmltcG9ydCB7RWxlbWVudCwgZ2V0Q2hpbGRFbGVtZW50SW5kZW50YXRpb259IGZyb20gJy4vcGFyc2U1LWVsZW1lbnQnO1xuaW1wb3J0IHtwYXJzZSBhcyBwYXJzZUh0bWx9IGZyb20gJ3BhcnNlNSc7XG5cbi8qKiBBcHBlbmRzIHRoZSBnaXZlbiBlbGVtZW50IEhUTUwgZnJhZ21lbnQgdG8gdGhlIGA8aGVhZD5gIGVsZW1lbnQgb2YgdGhlIHNwZWNpZmllZCBIVE1MIGZpbGUuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kSHRtbEVsZW1lbnRUb0hlYWQoaG9zdDogVHJlZSwgaHRtbEZpbGVQYXRoOiBzdHJpbmcsIGVsZW1lbnRIdG1sOiBzdHJpbmcpIHtcbiAgY29uc3QgaHRtbEZpbGVCdWZmZXIgPSBob3N0LnJlYWQoaHRtbEZpbGVQYXRoKTtcblxuICBpZiAoIWh0bWxGaWxlQnVmZmVyKSB7XG4gICAgdGhyb3cgbmV3IFNjaGVtYXRpY3NFeGNlcHRpb24oYENvdWxkIG5vdCByZWFkIGZpbGUgZm9yIHBhdGg6ICR7aHRtbEZpbGVQYXRofWApO1xuICB9XG5cbiAgY29uc3QgaHRtbENvbnRlbnQgPSBodG1sRmlsZUJ1ZmZlci50b1N0cmluZygpO1xuXG4gIGlmIChodG1sQ29udGVudC5pbmNsdWRlcyhlbGVtZW50SHRtbCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBoZWFkVGFnID0gZ2V0SHRtbEhlYWRUYWdFbGVtZW50KGh0bWxDb250ZW50KTtcblxuICBpZiAoIWhlYWRUYWcpIHtcbiAgICB0aHJvdyBFcnJvcihgQ291bGQgbm90IGZpbmQgJzxoZWFkPicgZWxlbWVudCBpbiBIVE1MIGZpbGU6ICR7aHRtbEZpbGVCdWZmZXJ9YCk7XG4gIH1cblxuICAvLyBXZSBhbHdheXMgaGF2ZSBhY2Nlc3MgdG8gdGhlIHNvdXJjZSBjb2RlIGxvY2F0aW9uIGhlcmUgYmVjYXVzZSB0aGUgYGdldEhlYWRUYWdFbGVtZW50YFxuICAvLyBmdW5jdGlvbiBleHBsaWNpdGx5IGhhcyB0aGUgYHNvdXJjZUNvZGVMb2NhdGlvbkluZm9gIG9wdGlvbiBlbmFibGVkLlxuICBjb25zdCBlbmRUYWdPZmZzZXQgPSBoZWFkVGFnLnNvdXJjZUNvZGVMb2NhdGlvbiEuZW5kVGFnIS5zdGFydE9mZnNldDtcbiAgY29uc3QgaW5kZW50YXRpb25PZmZzZXQgPSBnZXRDaGlsZEVsZW1lbnRJbmRlbnRhdGlvbihoZWFkVGFnKTtcbiAgY29uc3QgaW5zZXJ0aW9uID0gYCR7JyAnLnJlcGVhdChpbmRlbnRhdGlvbk9mZnNldCl9JHtlbGVtZW50SHRtbH1gO1xuXG4gIGNvbnN0IHJlY29yZGVkQ2hhbmdlID0gaG9zdC5iZWdpblVwZGF0ZShodG1sRmlsZVBhdGgpLmluc2VydFJpZ2h0KGVuZFRhZ09mZnNldCwgYCR7aW5zZXJ0aW9ufVxcbmApO1xuXG4gIGhvc3QuY29tbWl0VXBkYXRlKHJlY29yZGVkQ2hhbmdlKTtcbn1cblxuLyoqIFBhcnNlcyB0aGUgZ2l2ZW4gSFRNTCBmaWxlIGFuZCByZXR1cm5zIHRoZSBoZWFkIGVsZW1lbnQgaWYgYXZhaWxhYmxlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEh0bWxIZWFkVGFnRWxlbWVudChodG1sQ29udGVudDogc3RyaW5nKTogRWxlbWVudCB8IG51bGwge1xuICByZXR1cm4gZ2V0RWxlbWVudEJ5VGFnTmFtZSgnaGVhZCcsIGh0bWxDb250ZW50KTtcbn1cblxuLyoqIEFkZHMgYSBjbGFzcyB0byB0aGUgYm9keSBvZiB0aGUgZG9jdW1lbnQuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkQm9keUNsYXNzKGhvc3Q6IFRyZWUsIGh0bWxGaWxlUGF0aDogc3RyaW5nLCBjbGFzc05hbWU6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBodG1sRmlsZUJ1ZmZlciA9IGhvc3QucmVhZChodG1sRmlsZVBhdGgpO1xuXG4gIGlmICghaHRtbEZpbGVCdWZmZXIpIHtcbiAgICB0aHJvdyBuZXcgU2NoZW1hdGljc0V4Y2VwdGlvbihgQ291bGQgbm90IHJlYWQgZmlsZSBmb3IgcGF0aDogJHtodG1sRmlsZVBhdGh9YCk7XG4gIH1cblxuICBjb25zdCBodG1sQ29udGVudCA9IGh0bWxGaWxlQnVmZmVyLnRvU3RyaW5nKCk7XG4gIGNvbnN0IGJvZHkgPSBnZXRFbGVtZW50QnlUYWdOYW1lKCdib2R5JywgaHRtbENvbnRlbnQpO1xuXG4gIGlmICghYm9keSkge1xuICAgIHRocm93IEVycm9yKGBDb3VsZCBub3QgZmluZCA8Ym9keT4gZWxlbWVudCBpbiBIVE1MIGZpbGU6ICR7aHRtbEZpbGVCdWZmZXJ9YCk7XG4gIH1cblxuICBjb25zdCBjbGFzc0F0dHJpYnV0ZSA9IGJvZHkuYXR0cnMuZmluZChhdHRyaWJ1dGUgPT4gYXR0cmlidXRlLm5hbWUgPT09ICdjbGFzcycpO1xuXG4gIGlmIChjbGFzc0F0dHJpYnV0ZSkge1xuICAgIGNvbnN0IGhhc0NsYXNzID0gY2xhc3NBdHRyaWJ1dGUudmFsdWVcbiAgICAgIC5zcGxpdCgnICcpXG4gICAgICAubWFwKHBhcnQgPT4gcGFydC50cmltKCkpXG4gICAgICAuaW5jbHVkZXMoY2xhc3NOYW1lKTtcblxuICAgIGlmICghaGFzQ2xhc3MpIHtcbiAgICAgIC8vIFdlIGhhdmUgc291cmNlIGNvZGUgbG9jYXRpb24gaW5mbyBlbmFibGVkLCBhbmQgd2UgcHJlLWNoZWNrZWQgdGhhdCB0aGUgZWxlbWVudFxuICAgICAgLy8gaGFzIGF0dHJpYnV0ZXMsIHNwZWNpZmljYWxseSB0aGUgYGNsYXNzYCBhdHRyaWJ1dGUuXG4gICAgICBjb25zdCBjbGFzc0F0dHJpYnV0ZUxvY2F0aW9uID0gYm9keS5zb3VyY2VDb2RlTG9jYXRpb24hLmF0dHJzIVsnY2xhc3MnXTtcbiAgICAgIGNvbnN0IHJlY29yZGVkQ2hhbmdlID0gaG9zdFxuICAgICAgICAuYmVnaW5VcGRhdGUoaHRtbEZpbGVQYXRoKVxuICAgICAgICAuaW5zZXJ0UmlnaHQoY2xhc3NBdHRyaWJ1dGVMb2NhdGlvbi5lbmRPZmZzZXQgLSAxLCBgICR7Y2xhc3NOYW1lfWApO1xuICAgICAgaG9zdC5jb21taXRVcGRhdGUocmVjb3JkZWRDaGFuZ2UpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCByZWNvcmRlZENoYW5nZSA9IGhvc3RcbiAgICAgIC5iZWdpblVwZGF0ZShodG1sRmlsZVBhdGgpXG4gICAgICAuaW5zZXJ0UmlnaHQoYm9keS5zb3VyY2VDb2RlTG9jYXRpb24hLnN0YXJ0VGFnIS5lbmRPZmZzZXQgLSAxLCBgIGNsYXNzPVwiJHtjbGFzc05hbWV9XCJgKTtcbiAgICBob3N0LmNvbW1pdFVwZGF0ZShyZWNvcmRlZENoYW5nZSk7XG4gIH1cbn1cblxuLyoqIEZpbmRzIGFuIGVsZW1lbnQgYnkgaXRzIHRhZyBuYW1lLiAqL1xuZnVuY3Rpb24gZ2V0RWxlbWVudEJ5VGFnTmFtZSh0YWdOYW1lOiBzdHJpbmcsIGh0bWxDb250ZW50OiBzdHJpbmcpOiBFbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IGRvY3VtZW50ID0gcGFyc2VIdG1sKGh0bWxDb250ZW50LCB7c291cmNlQ29kZUxvY2F0aW9uSW5mbzogdHJ1ZX0pO1xuICBjb25zdCBub2RlUXVldWUgPSBbLi4uZG9jdW1lbnQuY2hpbGROb2Rlc107XG5cbiAgd2hpbGUgKG5vZGVRdWV1ZS5sZW5ndGgpIHtcbiAgICBjb25zdCBub2RlID0gbm9kZVF1ZXVlLnNoaWZ0KCkgYXMgRWxlbWVudDtcblxuICAgIGlmIChub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHRhZ05hbWUpIHtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH0gZWxzZSBpZiAobm9kZS5jaGlsZE5vZGVzKSB7XG4gICAgICBub2RlUXVldWUucHVzaCguLi5ub2RlLmNoaWxkTm9kZXMpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuIl19
@@ -1,36 +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
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- var desc = Object.getOwnPropertyDescriptor(m, k);
12
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
- desc = { enumerable: true, get: function() { return m[k]; } };
14
- }
15
- Object.defineProperty(o, k2, desc);
16
- }) : (function(o, m, k, k2) {
17
- if (k2 === undefined) k2 = k;
18
- o[k2] = m[k];
19
- }));
20
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
21
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
22
- };
23
- Object.defineProperty(exports, "__esModule", { value: true });
24
- __exportStar(require("./ast"), exports);
25
- __exportStar(require("./ast/ng-module-imports"), exports);
26
- __exportStar(require("./build-component"), exports);
27
- __exportStar(require("./get-project"), exports);
28
- __exportStar(require("./html-manipulation"), exports);
29
- __exportStar(require("./parse5-element"), exports);
30
- __exportStar(require("./project-index-file"), exports);
31
- __exportStar(require("./project-main-file"), exports);
32
- __exportStar(require("./project-style-file"), exports);
33
- __exportStar(require("./project-targets"), exports);
34
- __exportStar(require("./project-tsconfig-paths"), exports);
35
- __exportStar(require("./schematic-options"), exports);
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL3NjaGVtYXRpY3MvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7OztBQUVILHdDQUFzQjtBQUN0QiwwREFBd0M7QUFDeEMsb0RBQWtDO0FBQ2xDLGdEQUE4QjtBQUM5QixzREFBb0M7QUFDcEMsbURBQWlDO0FBQ2pDLHVEQUFxQztBQUNyQyxzREFBb0M7QUFDcEMsdURBQXFDO0FBQ3JDLG9EQUFrQztBQUNsQywyREFBeUM7QUFDekMsc0RBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuZGV2L2xpY2Vuc2VcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2FzdCc7XG5leHBvcnQgKiBmcm9tICcuL2FzdC9uZy1tb2R1bGUtaW1wb3J0cyc7XG5leHBvcnQgKiBmcm9tICcuL2J1aWxkLWNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2dldC1wcm9qZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vaHRtbC1tYW5pcHVsYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9wYXJzZTUtZWxlbWVudCc7XG5leHBvcnQgKiBmcm9tICcuL3Byb2plY3QtaW5kZXgtZmlsZSc7XG5leHBvcnQgKiBmcm9tICcuL3Byb2plY3QtbWFpbi1maWxlJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvamVjdC1zdHlsZS1maWxlJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvamVjdC10YXJnZXRzJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvamVjdC10c2NvbmZpZy1wYXRocyc7XG5leHBvcnQgKiBmcm9tICcuL3NjaGVtYXRpYy1vcHRpb25zJztcbiJdfQ==
@@ -1,30 +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.getChildElementIndentation = getChildElementIndentation;
11
- const schematics_1 = require("@angular-devkit/schematics");
12
- /** Determines the indentation of child elements for the given Parse5 element. */
13
- function getChildElementIndentation(element) {
14
- const childElement = element.childNodes.find(node => node.tagName);
15
- if ((childElement && !childElement.sourceCodeLocation) || !element.sourceCodeLocation) {
16
- throw new schematics_1.SchematicsException('Cannot determine child element indentation because the ' +
17
- 'specified Parse5 element does not have any source code location metadata.');
18
- }
19
- const startColumns = childElement
20
- ? // In case there are child elements inside of the element, we assume that their
21
- // indentation is also applicable for other child elements.
22
- childElement.sourceCodeLocation.startCol
23
- : // In case there is no child element, we just assume that child elements should be indented
24
- // by two spaces.
25
- element.sourceCodeLocation.startCol + 2;
26
- // Since Parse5 does not set the `startCol` properties as zero-based, we need to subtract
27
- // one column in order to have a proper zero-based offset for the indentation.
28
- return startColumns - 1;
29
- }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2U1LWVsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2RrL3NjaGVtYXRpY3MvdXRpbHMvcGFyc2U1LWVsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7QUFXSCxnRUFxQkM7QUE5QkQsMkRBQStEO0FBUS9ELGlGQUFpRjtBQUNqRixTQUFnQiwwQkFBMEIsQ0FBQyxPQUFnQjtJQUN6RCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFFLElBQWdCLENBQUMsT0FBTyxDQUFtQixDQUFDO0lBRWxHLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3RGLE1BQU0sSUFBSSxnQ0FBbUIsQ0FDM0IseURBQXlEO1lBQ3ZELDJFQUEyRSxDQUM5RSxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLFlBQVk7UUFDL0IsQ0FBQyxDQUFDLCtFQUErRTtZQUMvRSwyREFBMkQ7WUFDM0QsWUFBWSxDQUFDLGtCQUFtQixDQUFDLFFBQVE7UUFDM0MsQ0FBQyxDQUFDLDJGQUEyRjtZQUMzRixpQkFBaUI7WUFDakIsT0FBTyxDQUFDLGtCQUFtQixDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFFN0MseUZBQXlGO0lBQ3pGLDhFQUE4RTtJQUM5RSxPQUFPLFlBQVksR0FBRyxDQUFDLENBQUM7QUFDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmRldi9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtTY2hlbWF0aWNzRXhjZXB0aW9ufSBmcm9tICdAYW5ndWxhci1kZXZraXQvc2NoZW1hdGljcyc7XG5pbXBvcnQge0RlZmF1bHRUcmVlQWRhcHRlck1hcH0gZnJvbSAncGFyc2U1JztcblxuLy8gQXQgdGhlIHRpbWUgb2Ygd3JpdGluZyBgcGFyc2U1YCBkb2Vzbid0IGV4cG9zZSB0aGUgbm9kZSBpbnRlcmZhY2VzIGRpcmVjdGx5LCBldmVuIHRob3VnaFxuLy8gdGhleSdyZSB1c2VkIGFzIHJldHVybiB0eXBlcywgYnV0IFdlIGNhbiBzdGlsbCBhY2Nlc3MgdGhlbSB0aHJvdWdoIGBEZWZhdWx0VHJlZUFkYXB0ZXJNYXBgLlxuZXhwb3J0IHR5cGUgRWxlbWVudCA9IERlZmF1bHRUcmVlQWRhcHRlck1hcFsnZWxlbWVudCddO1xuZXhwb3J0IHR5cGUgQ2hpbGROb2RlID0gRGVmYXVsdFRyZWVBZGFwdGVyTWFwWydjaGlsZE5vZGUnXTtcblxuLyoqIERldGVybWluZXMgdGhlIGluZGVudGF0aW9uIG9mIGNoaWxkIGVsZW1lbnRzIGZvciB0aGUgZ2l2ZW4gUGFyc2U1IGVsZW1lbnQuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hpbGRFbGVtZW50SW5kZW50YXRpb24oZWxlbWVudDogRWxlbWVudCkge1xuICBjb25zdCBjaGlsZEVsZW1lbnQgPSBlbGVtZW50LmNoaWxkTm9kZXMuZmluZChub2RlID0+IChub2RlIGFzIEVsZW1lbnQpLnRhZ05hbWUpIGFzIEVsZW1lbnQgfCBudWxsO1xuXG4gIGlmICgoY2hpbGRFbGVtZW50ICYmICFjaGlsZEVsZW1lbnQuc291cmNlQ29kZUxvY2F0aW9uKSB8fCAhZWxlbWVudC5zb3VyY2VDb2RlTG9jYXRpb24pIHtcbiAgICB0aHJvdyBuZXcgU2NoZW1hdGljc0V4Y2VwdGlvbihcbiAgICAgICdDYW5ub3QgZGV0ZXJtaW5lIGNoaWxkIGVsZW1lbnQgaW5kZW50YXRpb24gYmVjYXVzZSB0aGUgJyArXG4gICAgICAgICdzcGVjaWZpZWQgUGFyc2U1IGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhbnkgc291cmNlIGNvZGUgbG9jYXRpb24gbWV0YWRhdGEuJyxcbiAgICApO1xuICB9XG5cbiAgY29uc3Qgc3RhcnRDb2x1bW5zID0gY2hpbGRFbGVtZW50XG4gICAgPyAvLyBJbiBjYXNlIHRoZXJlIGFyZSBjaGlsZCBlbGVtZW50cyBpbnNpZGUgb2YgdGhlIGVsZW1lbnQsIHdlIGFzc3VtZSB0aGF0IHRoZWlyXG4gICAgICAvLyBpbmRlbnRhdGlvbiBpcyBhbHNvIGFwcGxpY2FibGUgZm9yIG90aGVyIGNoaWxkIGVsZW1lbnRzLlxuICAgICAgY2hpbGRFbGVtZW50LnNvdXJjZUNvZGVMb2NhdGlvbiEuc3RhcnRDb2xcbiAgICA6IC8vIEluIGNhc2UgdGhlcmUgaXMgbm8gY2hpbGQgZWxlbWVudCwgd2UganVzdCBhc3N1bWUgdGhhdCBjaGlsZCBlbGVtZW50cyBzaG91bGQgYmUgaW5kZW50ZWRcbiAgICAgIC8vIGJ5IHR3byBzcGFjZXMuXG4gICAgICBlbGVtZW50LnNvdXJjZUNvZGVMb2NhdGlvbiEuc3RhcnRDb2wgKyAyO1xuXG4gIC8vIFNpbmNlIFBhcnNlNSBkb2VzIG5vdCBzZXQgdGhlIGBzdGFydENvbGAgcHJvcGVydGllcyBhcyB6ZXJvLWJhc2VkLCB3ZSBuZWVkIHRvIHN1YnRyYWN0XG4gIC8vIG9uZSBjb2x1bW4gaW4gb3JkZXIgdG8gaGF2ZSBhIHByb3BlciB6ZXJvLWJhc2VkIG9mZnNldCBmb3IgdGhlIGluZGVudGF0aW9uLlxuICByZXR1cm4gc3RhcnRDb2x1bW5zIC0gMTtcbn1cbiJdfQ==