@angular/material 9.1.3 → 9.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/autocomplete/index.metadata.json +1 -1
- package/autocomplete/testing/autocomplete-harness.d.ts +4 -1
- package/badge/index.metadata.json +1 -1
- package/bottom-sheet/bottom-sheet.d.ts +2 -1
- package/bundles/material-autocomplete-testing.umd.js +55 -8
- package/bundles/material-autocomplete-testing.umd.js.map +1 -1
- package/bundles/material-autocomplete-testing.umd.min.js +4 -5
- package/bundles/material-autocomplete-testing.umd.min.js.map +1 -1
- package/bundles/material-autocomplete.umd.js +23 -24
- package/bundles/material-autocomplete.umd.js.map +1 -1
- package/bundles/material-autocomplete.umd.min.js +5 -5
- package/bundles/material-autocomplete.umd.min.js.map +1 -1
- package/bundles/material-badge.umd.js +1 -1
- package/bundles/material-badge.umd.js.map +1 -1
- package/bundles/material-badge.umd.min.js +1 -1
- package/bundles/material-badge.umd.min.js.map +1 -1
- package/bundles/material-bottom-sheet.umd.js +3 -2
- package/bundles/material-bottom-sheet.umd.js.map +1 -1
- package/bundles/material-bottom-sheet.umd.min.js +1 -1
- package/bundles/material-bottom-sheet.umd.min.js.map +1 -1
- package/bundles/material-button-toggle.umd.js +16 -6
- package/bundles/material-button-toggle.umd.js.map +1 -1
- package/bundles/material-button-toggle.umd.min.js +3 -3
- package/bundles/material-button-toggle.umd.min.js.map +1 -1
- package/bundles/material-chips.umd.js +3 -0
- package/bundles/material-chips.umd.js.map +1 -1
- package/bundles/material-chips.umd.min.js +1 -1
- package/bundles/material-chips.umd.min.js.map +1 -1
- package/bundles/material-core.umd.js +96 -73
- package/bundles/material-core.umd.js.map +1 -1
- package/bundles/material-core.umd.min.js +10 -10
- package/bundles/material-core.umd.min.js.map +1 -1
- package/bundles/material-datepicker.umd.js +23 -10
- package/bundles/material-datepicker.umd.js.map +1 -1
- package/bundles/material-datepicker.umd.min.js +7 -7
- package/bundles/material-datepicker.umd.min.js.map +1 -1
- package/bundles/material-dialog.umd.js +43 -23
- package/bundles/material-dialog.umd.js.map +1 -1
- package/bundles/material-dialog.umd.min.js +6 -6
- package/bundles/material-dialog.umd.min.js.map +1 -1
- package/bundles/material-expansion.umd.js +3 -3
- package/bundles/material-expansion.umd.js.map +1 -1
- package/bundles/material-expansion.umd.min.js +1 -1
- package/bundles/material-expansion.umd.min.js.map +1 -1
- package/bundles/material-form-field.umd.js +12 -2
- package/bundles/material-form-field.umd.js.map +1 -1
- package/bundles/material-form-field.umd.min.js +2 -2
- package/bundles/material-form-field.umd.min.js.map +1 -1
- package/bundles/material-input.umd.js +14 -4
- package/bundles/material-input.umd.js.map +1 -1
- package/bundles/material-input.umd.min.js +1 -1
- package/bundles/material-input.umd.min.js.map +1 -1
- package/bundles/material-list.umd.js +7 -6
- package/bundles/material-list.umd.js.map +1 -1
- package/bundles/material-list.umd.min.js +2 -2
- package/bundles/material-list.umd.min.js.map +1 -1
- package/bundles/material-menu.umd.js +5 -5
- package/bundles/material-menu.umd.js.map +1 -1
- package/bundles/material-menu.umd.min.js +6 -6
- package/bundles/material-menu.umd.min.js.map +1 -1
- package/bundles/material-radio.umd.js +62 -47
- package/bundles/material-radio.umd.js.map +1 -1
- package/bundles/material-radio.umd.min.js +10 -2
- package/bundles/material-radio.umd.min.js.map +1 -1
- package/bundles/material-select-testing.umd.js +45 -10
- package/bundles/material-select-testing.umd.js.map +1 -1
- package/bundles/material-select-testing.umd.min.js +2 -3
- package/bundles/material-select-testing.umd.min.js.map +1 -1
- package/bundles/material-select.umd.js +24 -15
- package/bundles/material-select.umd.js.map +1 -1
- package/bundles/material-select.umd.min.js +3 -3
- package/bundles/material-select.umd.min.js.map +1 -1
- package/bundles/material-sidenav.umd.js +2 -1
- package/bundles/material-sidenav.umd.js.map +1 -1
- package/bundles/material-sidenav.umd.min.js +2 -2
- package/bundles/material-sidenav.umd.min.js.map +1 -1
- package/bundles/material-slider.umd.js +14 -12
- package/bundles/material-slider.umd.js.map +1 -1
- package/bundles/material-slider.umd.min.js +1 -1
- package/bundles/material-slider.umd.min.js.map +1 -1
- package/bundles/material-snack-bar-testing.umd.js +24 -2
- package/bundles/material-snack-bar-testing.umd.js.map +1 -1
- package/bundles/material-snack-bar-testing.umd.min.js +3 -3
- package/bundles/material-snack-bar-testing.umd.min.js.map +1 -1
- package/bundles/material-snack-bar.umd.js +4 -0
- package/bundles/material-snack-bar.umd.js.map +1 -1
- package/bundles/material-snack-bar.umd.min.js +2 -2
- package/bundles/material-snack-bar.umd.min.js.map +1 -1
- package/bundles/material-table.umd.js +5 -2
- package/bundles/material-table.umd.js.map +1 -1
- package/bundles/material-table.umd.min.js +2 -2
- package/bundles/material-table.umd.min.js.map +1 -1
- package/bundles/material-tabs.umd.js +5 -4
- package/bundles/material-tabs.umd.js.map +1 -1
- package/bundles/material-tabs.umd.min.js +1 -1
- package/bundles/material-tabs.umd.min.js.map +1 -1
- package/bundles/material-tooltip.umd.js +5 -5
- package/bundles/material-tooltip.umd.js.map +1 -1
- package/bundles/material-tooltip.umd.min.js +3 -3
- package/bundles/material-tooltip.umd.min.js.map +1 -1
- package/bundles/material-tree.umd.js +1 -1
- package/bundles/material-tree.umd.js.map +1 -1
- package/bundles/material-tree.umd.min.js +1 -1
- package/bundles/material-tree.umd.min.js.map +1 -1
- package/button-toggle/index.metadata.json +1 -1
- package/core/index.metadata.json +1 -1
- package/core/ripple/ripple-renderer.d.ts +10 -3
- package/core/ripple/ripple.d.ts +2 -1
- package/datepicker/datepicker-input.d.ts +5 -2
- package/datepicker/index.metadata.json +1 -1
- package/dialog/dialog-container.d.ts +6 -0
- package/dialog/dialog-ref.d.ts +5 -0
- package/dialog/index.metadata.json +1 -1
- package/esm2015/autocomplete/autocomplete-module.js +3 -1
- package/esm2015/autocomplete/autocomplete-trigger.js +21 -22
- package/esm2015/autocomplete/testing/autocomplete-harness.js +18 -7
- package/esm2015/badge/badge-module.js +2 -2
- package/esm2015/bottom-sheet/bottom-sheet.js +5 -3
- package/esm2015/button-toggle/button-toggle.js +18 -7
- package/esm2015/chips/chip-list.js +4 -1
- package/esm2015/core/common-behaviors/common-module.js +3 -4
- package/esm2015/core/ripple/ripple-renderer.js +140 -119
- package/esm2015/core/ripple/ripple.js +10 -7
- package/esm2015/core/version.js +1 -1
- package/esm2015/datepicker/calendar-body.js +1 -1
- package/esm2015/datepicker/calendar.js +3 -3
- package/esm2015/datepicker/datepicker-input.js +19 -4
- package/esm2015/datepicker/datepicker-module.js +3 -1
- package/esm2015/datepicker/datepicker.js +8 -2
- package/esm2015/dialog/dialog-container.js +40 -13
- package/esm2015/dialog/dialog-ref.js +24 -6
- package/esm2015/dialog/dialog.js +1 -12
- package/esm2015/expansion/expansion-panel-header.js +3 -3
- package/esm2015/expansion/expansion-panel.js +1 -1
- package/esm2015/form-field/form-field.js +13 -3
- package/esm2015/form-field/public-api.js +2 -2
- package/esm2015/input/input.js +16 -6
- package/esm2015/list/list.js +2 -2
- package/esm2015/list/selection-list.js +9 -6
- package/esm2015/menu/menu-module.js +3 -2
- package/esm2015/radio/public-api.js +2 -2
- package/esm2015/radio/radio.js +70 -59
- package/esm2015/select/select-module.js +10 -2
- package/esm2015/select/select.js +14 -12
- package/esm2015/select/testing/select-harness.js +11 -6
- package/esm2015/sidenav/sidenav-module.js +4 -3
- package/esm2015/slider/slider.js +17 -15
- package/esm2015/snack-bar/snack-bar-container.js +5 -1
- package/esm2015/snack-bar/testing/snack-bar-harness.js +18 -3
- package/esm2015/table/table-module.js +2 -2
- package/esm2015/table/table.js +6 -3
- package/esm2015/tabs/paginated-tab-header.js +3 -2
- package/esm2015/tabs/tab-header.js +1 -1
- package/esm2015/tabs/tab-nav-bar/tab-nav-bar.js +3 -3
- package/esm2015/tooltip/tooltip-module.js +3 -2
- package/esm2015/tree/tree-module.js +2 -2
- package/esm5/autocomplete/autocomplete-module.js +3 -1
- package/esm5/autocomplete/autocomplete-trigger.js +20 -22
- package/esm5/autocomplete/testing/autocomplete-harness.js +56 -9
- package/esm5/badge/badge-module.js +2 -2
- package/esm5/bottom-sheet/bottom-sheet.js +4 -3
- package/esm5/button-toggle/button-toggle.js +17 -7
- package/esm5/chips/chip-list.js +4 -1
- package/esm5/core/common-behaviors/common-module.js +3 -4
- package/esm5/core/ripple/ripple-renderer.js +91 -65
- package/esm5/core/ripple/ripple.js +4 -6
- package/esm5/core/version.js +1 -1
- package/esm5/datepicker/calendar-body.js +1 -1
- package/esm5/datepicker/calendar.js +3 -3
- package/esm5/datepicker/datepicker-input.js +10 -4
- package/esm5/datepicker/datepicker-module.js +3 -1
- package/esm5/datepicker/datepicker.js +8 -2
- package/esm5/dialog/dialog-container.js +26 -11
- package/esm5/dialog/dialog-ref.js +19 -6
- package/esm5/dialog/dialog.js +1 -9
- package/esm5/expansion/expansion-panel-header.js +3 -3
- package/esm5/expansion/expansion-panel.js +1 -1
- package/esm5/form-field/form-field.js +12 -3
- package/esm5/input/input.js +16 -6
- package/esm5/list/list.js +2 -2
- package/esm5/list/selection-list.js +6 -5
- package/esm5/menu/menu-module.js +3 -2
- package/esm5/radio/radio.js +63 -48
- package/esm5/select/select-module.js +10 -2
- package/esm5/select/select.js +14 -12
- package/esm5/select/testing/select-harness.js +46 -11
- package/esm5/sidenav/sidenav-module.js +4 -3
- package/esm5/slider/slider.js +15 -13
- package/esm5/snack-bar/snack-bar-container.js +5 -1
- package/esm5/snack-bar/testing/snack-bar-harness.js +26 -4
- package/esm5/table/table-module.js +2 -2
- package/esm5/table/table.js +6 -3
- package/esm5/tabs/paginated-tab-header.js +3 -2
- package/esm5/tabs/tab-header.js +1 -1
- package/esm5/tabs/tab-nav-bar/tab-nav-bar.js +3 -3
- package/esm5/tooltip/tooltip-module.js +3 -2
- package/esm5/tree/tree-module.js +2 -2
- package/expansion/index.metadata.json +1 -1
- package/fesm2015/autocomplete/testing.js +17 -6
- package/fesm2015/autocomplete/testing.js.map +1 -1
- package/fesm2015/autocomplete.js +22 -22
- package/fesm2015/autocomplete.js.map +1 -1
- package/fesm2015/badge.js +1 -1
- package/fesm2015/badge.js.map +1 -1
- package/fesm2015/bottom-sheet.js +4 -2
- package/fesm2015/bottom-sheet.js.map +1 -1
- package/fesm2015/button-toggle.js +17 -6
- package/fesm2015/button-toggle.js.map +1 -1
- package/fesm2015/chips.js +3 -0
- package/fesm2015/chips.js.map +1 -1
- package/fesm2015/core.js +151 -128
- package/fesm2015/core.js.map +1 -1
- package/fesm2015/datepicker.js +30 -7
- package/fesm2015/datepicker.js.map +1 -1
- package/fesm2015/dialog.js +62 -28
- package/fesm2015/dialog.js.map +1 -1
- package/fesm2015/expansion.js +3 -3
- package/fesm2015/expansion.js.map +1 -1
- package/fesm2015/form-field.js +13 -3
- package/fesm2015/form-field.js.map +1 -1
- package/fesm2015/input.js +15 -5
- package/fesm2015/input.js.map +1 -1
- package/fesm2015/list.js +10 -7
- package/fesm2015/list.js.map +1 -1
- package/fesm2015/menu.js +2 -1
- package/fesm2015/menu.js.map +1 -1
- package/fesm2015/radio.js +71 -60
- package/fesm2015/radio.js.map +1 -1
- package/fesm2015/select/testing.js +10 -5
- package/fesm2015/select/testing.js.map +1 -1
- package/fesm2015/select.js +23 -14
- package/fesm2015/select.js.map +1 -1
- package/fesm2015/sidenav.js +3 -2
- package/fesm2015/sidenav.js.map +1 -1
- package/fesm2015/slider.js +16 -14
- package/fesm2015/slider.js.map +1 -1
- package/fesm2015/snack-bar/testing.js +17 -2
- package/fesm2015/snack-bar/testing.js.map +1 -1
- package/fesm2015/snack-bar.js +4 -0
- package/fesm2015/snack-bar.js.map +1 -1
- package/fesm2015/table.js +6 -3
- package/fesm2015/table.js.map +1 -1
- package/fesm2015/tabs.js +5 -4
- package/fesm2015/tabs.js.map +1 -1
- package/fesm2015/tooltip.js +2 -2
- package/fesm2015/tooltip.js.map +1 -1
- package/fesm2015/tree.js +1 -1
- package/fesm2015/tree.js.map +1 -1
- package/fesm5/autocomplete/testing.js +55 -8
- package/fesm5/autocomplete/testing.js.map +1 -1
- package/fesm5/autocomplete.js +21 -22
- package/fesm5/autocomplete.js.map +1 -1
- package/fesm5/badge.js +1 -1
- package/fesm5/badge.js.map +1 -1
- package/fesm5/bottom-sheet.js +3 -2
- package/fesm5/bottom-sheet.js.map +1 -1
- package/fesm5/button-toggle.js +16 -6
- package/fesm5/button-toggle.js.map +1 -1
- package/fesm5/chips.js +3 -0
- package/fesm5/chips.js.map +1 -1
- package/fesm5/core.js +96 -73
- package/fesm5/core.js.map +1 -1
- package/fesm5/datepicker.js +21 -7
- package/fesm5/datepicker.js.map +1 -1
- package/fesm5/dialog.js +43 -23
- package/fesm5/dialog.js.map +1 -1
- package/fesm5/expansion.js +3 -3
- package/fesm5/expansion.js.map +1 -1
- package/fesm5/form-field.js +12 -3
- package/fesm5/form-field.js.map +1 -1
- package/fesm5/input.js +15 -5
- package/fesm5/input.js.map +1 -1
- package/fesm5/list.js +7 -6
- package/fesm5/list.js.map +1 -1
- package/fesm5/menu.js +2 -1
- package/fesm5/menu.js.map +1 -1
- package/fesm5/radio.js +63 -49
- package/fesm5/radio.js.map +1 -1
- package/fesm5/select/testing.js +45 -10
- package/fesm5/select/testing.js.map +1 -1
- package/fesm5/select.js +23 -14
- package/fesm5/select.js.map +1 -1
- package/fesm5/sidenav.js +3 -2
- package/fesm5/sidenav.js.map +1 -1
- package/fesm5/slider.js +14 -12
- package/fesm5/slider.js.map +1 -1
- package/fesm5/snack-bar/testing.js +25 -3
- package/fesm5/snack-bar/testing.js.map +1 -1
- package/fesm5/snack-bar.js +4 -0
- package/fesm5/snack-bar.js.map +1 -1
- package/fesm5/table.js +6 -3
- package/fesm5/table.js.map +1 -1
- package/fesm5/tabs.js +5 -4
- package/fesm5/tabs.js.map +1 -1
- package/fesm5/tooltip.js +2 -2
- package/fesm5/tooltip.js.map +1 -1
- package/fesm5/tree.js +1 -1
- package/fesm5/tree.js.map +1 -1
- package/form-field/form-field.d.ts +6 -0
- package/form-field/index.metadata.json +1 -1
- package/input/index.metadata.json +1 -1
- package/list/index.metadata.json +1 -1
- package/menu/index.metadata.json +1 -1
- package/package.json +2 -2
- package/radio/index.metadata.json +1 -1
- package/radio/radio.d.ts +8 -2
- package/schematics/collection.json +0 -7
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/index.js +23 -23
- package/schematics/ng-update/{upgrade-rules → migrations}/hammer-gestures-v9/find-hammer-script-tags.d.ts +1 -1
- package/schematics/ng-update/migrations/hammer-gestures-v9/find-hammer-script-tags.js +51 -0
- package/schematics/ng-update/{upgrade-rules → migrations}/hammer-gestures-v9/find-main-module.d.ts +1 -1
- package/schematics/ng-update/migrations/hammer-gestures-v9/find-main-module.js +41 -0
- package/schematics/ng-update/{upgrade-rules → migrations}/hammer-gestures-v9/gesture-config.template +0 -0
- package/schematics/ng-update/{upgrade-rules/hammer-gestures-v9/hammer-gestures-rule.d.ts → migrations/hammer-gestures-v9/hammer-gestures-migration.d.ts} +6 -6
- package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-gestures-migration.js +784 -0
- package/schematics/ng-update/{upgrade-rules → migrations}/hammer-gestures-v9/hammer-template-check.d.ts +1 -1
- package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-template-check.js +65 -0
- package/schematics/ng-update/{upgrade-rules → migrations}/hammer-gestures-v9/import-manager.d.ts +4 -4
- package/schematics/ng-update/migrations/hammer-gestures-v9/import-manager.js +379 -0
- package/schematics/ng-update/{upgrade-rules → migrations}/hammer-gestures-v9/remove-array-element.d.ts +1 -1
- package/schematics/ng-update/migrations/hammer-gestures-v9/remove-array-element.js +75 -0
- package/schematics/ng-update/{upgrade-rules → migrations}/hammer-gestures-v9/remove-element-from-html.d.ts +1 -1
- package/schematics/ng-update/migrations/hammer-gestures-v9/remove-element-from-html.js +37 -0
- package/schematics/ng-update/migrations/misc-checks/misc-class-inheritance.d.ts +19 -0
- package/schematics/ng-update/migrations/misc-checks/misc-class-inheritance.js +57 -0
- package/schematics/ng-update/{upgrade-rules/misc-checks/misc-class-names-rule.d.ts → migrations/misc-checks/misc-class-names.d.ts} +5 -5
- package/schematics/ng-update/migrations/misc-checks/misc-class-names.js +52 -0
- package/schematics/ng-update/{upgrade-rules/misc-checks/misc-imports-rule.d.ts → migrations/misc-checks/misc-imports.d.ts} +5 -5
- package/schematics/ng-update/migrations/misc-checks/misc-imports.js +63 -0
- package/schematics/ng-update/{upgrade-rules/misc-checks/misc-property-names-rule.d.ts → migrations/misc-checks/misc-property-names.d.ts} +5 -5
- package/schematics/ng-update/migrations/misc-checks/misc-property-names.js +56 -0
- package/schematics/ng-update/migrations/misc-checks/misc-template.d.ts +17 -0
- package/schematics/ng-update/migrations/misc-checks/misc-template.js +69 -0
- package/schematics/ng-update/{upgrade-rules/misc-ripples-v7/ripple-speed-factor-rule.d.ts → migrations/misc-ripples-v7/ripple-speed-factor-migration.d.ts} +5 -5
- package/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor-migration.js +147 -0
- package/schematics/ng-update/{upgrade-rules → migrations}/misc-ripples-v7/ripple-speed-factor.d.ts +1 -1
- package/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor.js +39 -0
- package/schematics/ng-update/{upgrade-rules → migrations}/package-imports-v8/material-symbols.json +0 -0
- package/schematics/ng-update/{upgrade-rules/package-imports-v8/secondary-entry-points-rule.d.ts → migrations/package-imports-v8/secondary-entry-points-migration.d.ts} +5 -5
- package/schematics/ng-update/migrations/package-imports-v8/secondary-entry-points-migration.js +177 -0
- package/schematics/ng-update/upgrade-data.d.ts +2 -2
- package/schematics/ng-update/upgrade-data.js +1 -1
- package/select/index.metadata.json +1 -1
- package/select/testing/select-harness.d.ts +2 -1
- package/sidenav/index.metadata.json +1 -1
- package/snack-bar/testing/snack-bar-harness.d.ts +2 -0
- package/table/index.metadata.json +1 -1
- package/tabs/_tabs-common.scss +5 -3
- package/tabs/index.metadata.json +1 -1
- package/tooltip/index.metadata.json +1 -1
- package/tree/index.metadata.json +1 -1
- package/schematics/ng-update/upgrade-rules/hammer-gestures-v9/find-hammer-script-tags.js +0 -51
- package/schematics/ng-update/upgrade-rules/hammer-gestures-v9/find-main-module.js +0 -41
- package/schematics/ng-update/upgrade-rules/hammer-gestures-v9/hammer-gestures-rule.js +0 -781
- package/schematics/ng-update/upgrade-rules/hammer-gestures-v9/hammer-template-check.js +0 -65
- package/schematics/ng-update/upgrade-rules/hammer-gestures-v9/import-manager.js +0 -379
- package/schematics/ng-update/upgrade-rules/hammer-gestures-v9/remove-array-element.js +0 -75
- package/schematics/ng-update/upgrade-rules/hammer-gestures-v9/remove-element-from-html.js +0 -37
- package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-inheritance-rule.d.ts +0 -19
- package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-inheritance-rule.js +0 -57
- package/schematics/ng-update/upgrade-rules/misc-checks/misc-class-names-rule.js +0 -52
- package/schematics/ng-update/upgrade-rules/misc-checks/misc-imports-rule.js +0 -63
- package/schematics/ng-update/upgrade-rules/misc-checks/misc-property-names-rule.js +0 -56
- package/schematics/ng-update/upgrade-rules/misc-checks/misc-template-rule.d.ts +0 -17
- package/schematics/ng-update/upgrade-rules/misc-checks/misc-template-rule.js +0 -69
- package/schematics/ng-update/upgrade-rules/misc-ripples-v7/ripple-speed-factor-rule.js +0 -147
- package/schematics/ng-update/upgrade-rules/misc-ripples-v7/ripple-speed-factor.js +0 -39
- package/schematics/ng-update/upgrade-rules/package-imports-v8/secondary-entry-points-rule.js +0 -177
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
(function (factory) {
|
|
9
|
-
if (typeof module === "object" && typeof module.exports === "object") {
|
|
10
|
-
var v = factory(require, exports);
|
|
11
|
-
if (v !== undefined) module.exports = v;
|
|
12
|
-
}
|
|
13
|
-
else if (typeof define === "function" && define.amd) {
|
|
14
|
-
define("@angular/material/schematics/ng-update/upgrade-rules/hammer-gestures-v9/remove-element-from-html", ["require", "exports"], factory);
|
|
15
|
-
}
|
|
16
|
-
})(function (require, exports) {
|
|
17
|
-
"use strict";
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
/**
|
|
20
|
-
* Removes the specified element. Additionally, preceding whitespace will be removed
|
|
21
|
-
* to not leave empty lines in the resulting HTML.
|
|
22
|
-
*/
|
|
23
|
-
function removeElementFromHtml(element, recorder) {
|
|
24
|
-
// sourceCodeLocation is always set since we parse with location info enabled.
|
|
25
|
-
const { startOffset, endOffset } = element.sourceCodeLocation;
|
|
26
|
-
const parentIndex = element.parentNode.childNodes.indexOf(element);
|
|
27
|
-
const precedingTextSibling = element.parentNode.childNodes.find((f, i) => f.nodeName === '#text' && i === parentIndex - 1);
|
|
28
|
-
recorder.remove(startOffset, endOffset - startOffset);
|
|
29
|
-
// If we found a preceding text node which just consists of whitespace, remove it.
|
|
30
|
-
if (precedingTextSibling && /^\s+$/.test(precedingTextSibling.value)) {
|
|
31
|
-
const textSiblingLocation = precedingTextSibling.sourceCodeLocation;
|
|
32
|
-
recorder.remove(textSiblingLocation.startOffset, textSiblingLocation.endOffset - textSiblingLocation.startOffset);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
exports.removeElementFromHtml = removeElementFromHtml;
|
|
36
|
-
});
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLWVsZW1lbnQtZnJvbS1odG1sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL3NjaGVtYXRpY3MvbmctdXBkYXRlL3VwZ3JhZGUtcnVsZXMvaGFtbWVyLWdlc3R1cmVzLXY5L3JlbW92ZS1lbGVtZW50LWZyb20taHRtbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7OztJQUtIOzs7T0FHRztJQUNILFNBQWdCLHFCQUFxQixDQUNqQyxPQUFrQyxFQUFFLFFBQXdCO1FBQzlELDhFQUE4RTtRQUM5RSxNQUFNLEVBQUMsV0FBVyxFQUFFLFNBQVMsRUFBQyxHQUFHLE9BQU8sQ0FBQyxrQkFBbUIsQ0FBQztRQUM3RCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkUsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQzNELENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBbUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssT0FBTyxJQUFJLENBQUMsS0FBSyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFaEcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsU0FBUyxHQUFHLFdBQVcsQ0FBQyxDQUFDO1FBRXRELGtGQUFrRjtRQUNsRixJQUFJLG9CQUFvQixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDcEUsTUFBTSxtQkFBbUIsR0FBRyxvQkFBb0IsQ0FBQyxrQkFBbUIsQ0FBQztZQUNyRSxRQUFRLENBQUMsTUFBTSxDQUNYLG1CQUFtQixDQUFDLFdBQVcsRUFDL0IsbUJBQW1CLENBQUMsU0FBUyxHQUFHLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3RFO0lBQ0gsQ0FBQztJQWpCRCxzREFpQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtVcGRhdGVSZWNvcmRlcn0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L3NjaGVtYXRpY3MnO1xuaW1wb3J0IHtwYXJzZTV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY2hlbWF0aWNzJztcblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBzcGVjaWZpZWQgZWxlbWVudC4gQWRkaXRpb25hbGx5LCBwcmVjZWRpbmcgd2hpdGVzcGFjZSB3aWxsIGJlIHJlbW92ZWRcbiAqIHRvIG5vdCBsZWF2ZSBlbXB0eSBsaW5lcyBpbiB0aGUgcmVzdWx0aW5nIEhUTUwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVFbGVtZW50RnJvbUh0bWwoXG4gICAgZWxlbWVudDogcGFyc2U1LkRlZmF1bHRUcmVlRWxlbWVudCwgcmVjb3JkZXI6IFVwZGF0ZVJlY29yZGVyKSB7XG4gIC8vIHNvdXJjZUNvZGVMb2NhdGlvbiBpcyBhbHdheXMgc2V0IHNpbmNlIHdlIHBhcnNlIHdpdGggbG9jYXRpb24gaW5mbyBlbmFibGVkLlxuICBjb25zdCB7c3RhcnRPZmZzZXQsIGVuZE9mZnNldH0gPSBlbGVtZW50LnNvdXJjZUNvZGVMb2NhdGlvbiE7XG4gIGNvbnN0IHBhcmVudEluZGV4ID0gZWxlbWVudC5wYXJlbnROb2RlLmNoaWxkTm9kZXMuaW5kZXhPZihlbGVtZW50KTtcbiAgY29uc3QgcHJlY2VkaW5nVGV4dFNpYmxpbmcgPSBlbGVtZW50LnBhcmVudE5vZGUuY2hpbGROb2Rlcy5maW5kKFxuICAgICAgKGYsIGkpOiBmIGlzIHBhcnNlNS5EZWZhdWx0VHJlZVRleHROb2RlID0+IGYubm9kZU5hbWUgPT09ICcjdGV4dCcgJiYgaSA9PT0gcGFyZW50SW5kZXggLSAxKTtcblxuICByZWNvcmRlci5yZW1vdmUoc3RhcnRPZmZzZXQsIGVuZE9mZnNldCAtIHN0YXJ0T2Zmc2V0KTtcblxuICAvLyBJZiB3ZSBmb3VuZCBhIHByZWNlZGluZyB0ZXh0IG5vZGUgd2hpY2gganVzdCBjb25zaXN0cyBvZiB3aGl0ZXNwYWNlLCByZW1vdmUgaXQuXG4gIGlmIChwcmVjZWRpbmdUZXh0U2libGluZyAmJiAvXlxccyskLy50ZXN0KHByZWNlZGluZ1RleHRTaWJsaW5nLnZhbHVlKSkge1xuICAgIGNvbnN0IHRleHRTaWJsaW5nTG9jYXRpb24gPSBwcmVjZWRpbmdUZXh0U2libGluZy5zb3VyY2VDb2RlTG9jYXRpb24hO1xuICAgIHJlY29yZGVyLnJlbW92ZShcbiAgICAgICAgdGV4dFNpYmxpbmdMb2NhdGlvbi5zdGFydE9mZnNldCxcbiAgICAgICAgdGV4dFNpYmxpbmdMb2NhdGlvbi5lbmRPZmZzZXQgLSB0ZXh0U2libGluZ0xvY2F0aW9uLnN0YXJ0T2Zmc2V0KTtcbiAgfVxufVxuIl19
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
/// <amd-module name="@angular/material/schematics/ng-update/upgrade-rules/misc-checks/misc-class-inheritance-rule" />
|
|
9
|
-
import { MigrationRule } from '@angular/cdk/schematics';
|
|
10
|
-
import * as ts from 'typescript';
|
|
11
|
-
/**
|
|
12
|
-
* Rule that checks for classes that extend Angular Material classes which
|
|
13
|
-
* have changed their API.
|
|
14
|
-
*/
|
|
15
|
-
export declare class MiscClassInheritanceRule extends MigrationRule<null> {
|
|
16
|
-
ruleEnabled: boolean;
|
|
17
|
-
visitNode(node: ts.Node): void;
|
|
18
|
-
private _visitClassDeclaration;
|
|
19
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
(function (factory) {
|
|
9
|
-
if (typeof module === "object" && typeof module.exports === "object") {
|
|
10
|
-
var v = factory(require, exports);
|
|
11
|
-
if (v !== undefined) module.exports = v;
|
|
12
|
-
}
|
|
13
|
-
else if (typeof define === "function" && define.amd) {
|
|
14
|
-
define("@angular/material/schematics/ng-update/upgrade-rules/misc-checks/misc-class-inheritance-rule", ["require", "exports", "@angular/cdk/schematics", "typescript"], factory);
|
|
15
|
-
}
|
|
16
|
-
})(function (require, exports) {
|
|
17
|
-
"use strict";
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
const schematics_1 = require("@angular/cdk/schematics");
|
|
20
|
-
const ts = require("typescript");
|
|
21
|
-
/**
|
|
22
|
-
* Rule that checks for classes that extend Angular Material classes which
|
|
23
|
-
* have changed their API.
|
|
24
|
-
*/
|
|
25
|
-
class MiscClassInheritanceRule extends schematics_1.MigrationRule {
|
|
26
|
-
constructor() {
|
|
27
|
-
super(...arguments);
|
|
28
|
-
// Only enable this rule if the migration targets version 6. The rule
|
|
29
|
-
// currently only includes migrations for V6 deprecations.
|
|
30
|
-
this.ruleEnabled = this.targetVersion === schematics_1.TargetVersion.V6;
|
|
31
|
-
}
|
|
32
|
-
visitNode(node) {
|
|
33
|
-
if (ts.isClassDeclaration(node)) {
|
|
34
|
-
this._visitClassDeclaration(node);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
_visitClassDeclaration(node) {
|
|
38
|
-
const baseTypes = schematics_1.determineBaseTypes(node);
|
|
39
|
-
const className = node.name ? node.name.text : '{unknown-name}';
|
|
40
|
-
if (!baseTypes) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
// Migration for: https://github.com/angular/components/pull/10293 (v6)
|
|
44
|
-
if (baseTypes.includes('MatFormFieldControl')) {
|
|
45
|
-
const hasFloatLabelMember = node.members.filter(member => member.name)
|
|
46
|
-
.find(member => member.name.getText() === 'shouldLabelFloat');
|
|
47
|
-
if (!hasFloatLabelMember) {
|
|
48
|
-
this.createFailureAtNode(node, `Found class "${className}" which extends ` +
|
|
49
|
-
`"${'MatFormFieldControl'}". This class must define ` +
|
|
50
|
-
`"${'shouldLabelFloat'}" which is now a required property.`);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
exports.MiscClassInheritanceRule = MiscClassInheritanceRule;
|
|
56
|
-
});
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzYy1jbGFzcy1pbmhlcml0YW5jZS1ydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL3NjaGVtYXRpY3MvbmctdXBkYXRlL3VwZ3JhZGUtcnVsZXMvbWlzYy1jaGVja3MvbWlzYy1jbGFzcy1pbmhlcml0YW5jZS1ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7O0lBRUgsd0RBQXlGO0lBQ3pGLGlDQUFpQztJQUVqQzs7O09BR0c7SUFDSCxNQUFhLHdCQUF5QixTQUFRLDBCQUFtQjtRQUFqRTs7WUFFRSxxRUFBcUU7WUFDckUsMERBQTBEO1lBQzFELGdCQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsS0FBSywwQkFBYSxDQUFDLEVBQUUsQ0FBQztRQStCeEQsQ0FBQztRQTdCQyxTQUFTLENBQUMsSUFBYTtZQUNyQixJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25DO1FBQ0gsQ0FBQztRQUVPLHNCQUFzQixDQUFDLElBQXlCO1lBQ3RELE1BQU0sU0FBUyxHQUFHLCtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztZQUVoRSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNkLE9BQU87YUFDUjtZQUVELHVFQUF1RTtZQUN2RSxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxtQkFBbUIsR0FDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO3FCQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixDQUFDLENBQUM7Z0JBRXZFLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtvQkFDeEIsSUFBSSxDQUFDLG1CQUFtQixDQUNwQixJQUFJLEVBQ0osZ0JBQWdCLFNBQVMsa0JBQWtCO3dCQUN2QyxJQUFJLHFCQUFxQiw0QkFBNEI7d0JBQ3JELElBQUksa0JBQWtCLHFDQUFxQyxDQUFDLENBQUM7aUJBQ3RFO2FBQ0Y7UUFDSCxDQUFDO0tBQ0Y7SUFuQ0QsNERBbUNDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7ZGV0ZXJtaW5lQmFzZVR5cGVzLCBNaWdyYXRpb25SdWxlLCBUYXJnZXRWZXJzaW9ufSBmcm9tICdAYW5ndWxhci9jZGsvc2NoZW1hdGljcyc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuLyoqXG4gKiBSdWxlIHRoYXQgY2hlY2tzIGZvciBjbGFzc2VzIHRoYXQgZXh0ZW5kIEFuZ3VsYXIgTWF0ZXJpYWwgY2xhc3NlcyB3aGljaFxuICogaGF2ZSBjaGFuZ2VkIHRoZWlyIEFQSS5cbiAqL1xuZXhwb3J0IGNsYXNzIE1pc2NDbGFzc0luaGVyaXRhbmNlUnVsZSBleHRlbmRzIE1pZ3JhdGlvblJ1bGU8bnVsbD4ge1xuXG4gIC8vIE9ubHkgZW5hYmxlIHRoaXMgcnVsZSBpZiB0aGUgbWlncmF0aW9uIHRhcmdldHMgdmVyc2lvbiA2LiBUaGUgcnVsZVxuICAvLyBjdXJyZW50bHkgb25seSBpbmNsdWRlcyBtaWdyYXRpb25zIGZvciBWNiBkZXByZWNhdGlvbnMuXG4gIHJ1bGVFbmFibGVkID0gdGhpcy50YXJnZXRWZXJzaW9uID09PSBUYXJnZXRWZXJzaW9uLlY2O1xuXG4gIHZpc2l0Tm9kZShub2RlOiB0cy5Ob2RlKTogdm9pZCB7XG4gICAgaWYgKHRzLmlzQ2xhc3NEZWNsYXJhdGlvbihub2RlKSkge1xuICAgICAgdGhpcy5fdmlzaXRDbGFzc0RlY2xhcmF0aW9uKG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Zpc2l0Q2xhc3NEZWNsYXJhdGlvbihub2RlOiB0cy5DbGFzc0RlY2xhcmF0aW9uKSB7XG4gICAgY29uc3QgYmFzZVR5cGVzID0gZGV0ZXJtaW5lQmFzZVR5cGVzKG5vZGUpO1xuICAgIGNvbnN0IGNsYXNzTmFtZSA9IG5vZGUubmFtZSA/IG5vZGUubmFtZS50ZXh0IDogJ3t1bmtub3duLW5hbWV9JztcblxuICAgIGlmICghYmFzZVR5cGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTWlncmF0aW9uIGZvcjogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9wdWxsLzEwMjkzICh2NilcbiAgICBpZiAoYmFzZVR5cGVzLmluY2x1ZGVzKCdNYXRGb3JtRmllbGRDb250cm9sJykpIHtcbiAgICAgIGNvbnN0IGhhc0Zsb2F0TGFiZWxNZW1iZXIgPVxuICAgICAgICAgIG5vZGUubWVtYmVycy5maWx0ZXIobWVtYmVyID0+IG1lbWJlci5uYW1lKVxuICAgICAgICAgICAgICAuZmluZChtZW1iZXIgPT4gbWVtYmVyLm5hbWUhLmdldFRleHQoKSA9PT0gJ3Nob3VsZExhYmVsRmxvYXQnKTtcblxuICAgICAgaWYgKCFoYXNGbG9hdExhYmVsTWVtYmVyKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlRmFpbHVyZUF0Tm9kZShcbiAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICBgRm91bmQgY2xhc3MgXCIke2NsYXNzTmFtZX1cIiB3aGljaCBleHRlbmRzIGAgK1xuICAgICAgICAgICAgICAgIGBcIiR7J01hdEZvcm1GaWVsZENvbnRyb2wnfVwiLiBUaGlzIGNsYXNzIG11c3QgZGVmaW5lIGAgK1xuICAgICAgICAgICAgICAgIGBcIiR7J3Nob3VsZExhYmVsRmxvYXQnfVwiIHdoaWNoIGlzIG5vdyBhIHJlcXVpcmVkIHByb3BlcnR5LmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
(function (factory) {
|
|
9
|
-
if (typeof module === "object" && typeof module.exports === "object") {
|
|
10
|
-
var v = factory(require, exports);
|
|
11
|
-
if (v !== undefined) module.exports = v;
|
|
12
|
-
}
|
|
13
|
-
else if (typeof define === "function" && define.amd) {
|
|
14
|
-
define("@angular/material/schematics/ng-update/upgrade-rules/misc-checks/misc-class-names-rule", ["require", "exports", "@angular/cdk/schematics", "typescript"], factory);
|
|
15
|
-
}
|
|
16
|
-
})(function (require, exports) {
|
|
17
|
-
"use strict";
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
const schematics_1 = require("@angular/cdk/schematics");
|
|
20
|
-
const ts = require("typescript");
|
|
21
|
-
/**
|
|
22
|
-
* Rule that looks for class name identifiers that have been removed but
|
|
23
|
-
* cannot be automatically migrated.
|
|
24
|
-
*/
|
|
25
|
-
class MiscClassNamesRule extends schematics_1.MigrationRule {
|
|
26
|
-
constructor() {
|
|
27
|
-
super(...arguments);
|
|
28
|
-
// Only enable this rule if the migration targets version 6. The rule
|
|
29
|
-
// currently only includes migrations for V6 deprecations.
|
|
30
|
-
this.ruleEnabled = this.targetVersion === schematics_1.TargetVersion.V6;
|
|
31
|
-
}
|
|
32
|
-
visitNode(node) {
|
|
33
|
-
if (ts.isIdentifier(node)) {
|
|
34
|
-
this._visitIdentifier(node);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
_visitIdentifier(identifier) {
|
|
38
|
-
// Migration for: https://github.com/angular/components/pull/10279 (v6)
|
|
39
|
-
if (identifier.getText() === 'MatDrawerToggleResult') {
|
|
40
|
-
this.createFailureAtNode(identifier, `Found "MatDrawerToggleResult" which has changed from a class type to a string ` +
|
|
41
|
-
`literal type. Your code may need to be updated.`);
|
|
42
|
-
}
|
|
43
|
-
// Migration for: https://github.com/angular/components/pull/10398 (v6)
|
|
44
|
-
if (identifier.getText() === 'MatListOptionChange') {
|
|
45
|
-
this.createFailureAtNode(identifier, `Found usage of "MatListOptionChange" which has been removed. Please listen for ` +
|
|
46
|
-
`"selectionChange" on "MatSelectionList" instead.`);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
exports.MiscClassNamesRule = MiscClassNamesRule;
|
|
51
|
-
});
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzYy1jbGFzcy1uYW1lcy1ydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL3NjaGVtYXRpY3MvbmctdXBkYXRlL3VwZ3JhZGUtcnVsZXMvbWlzYy1jaGVja3MvbWlzYy1jbGFzcy1uYW1lcy1ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7O0lBRUgsd0RBQXFFO0lBQ3JFLGlDQUFpQztJQUVqQzs7O09BR0c7SUFDSCxNQUFhLGtCQUFtQixTQUFRLDBCQUFtQjtRQUEzRDs7WUFFRSxxRUFBcUU7WUFDckUsMERBQTBEO1lBQzFELGdCQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsS0FBSywwQkFBYSxDQUFDLEVBQUUsQ0FBQztRQXlCeEQsQ0FBQztRQXZCQyxTQUFTLENBQUMsSUFBYTtZQUNyQixJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM3QjtRQUNILENBQUM7UUFFTyxnQkFBZ0IsQ0FBQyxVQUF5QjtZQUNoRCx1RUFBdUU7WUFDdkUsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssdUJBQXVCLEVBQUU7Z0JBQ3BELElBQUksQ0FBQyxtQkFBbUIsQ0FDcEIsVUFBVSxFQUNWLGdGQUFnRjtvQkFDNUUsaURBQWlELENBQUMsQ0FBQzthQUM1RDtZQUVELHVFQUF1RTtZQUN2RSxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxxQkFBcUIsRUFBRTtnQkFDbEQsSUFBSSxDQUFDLG1CQUFtQixDQUNwQixVQUFVLEVBQ1YsaUZBQWlGO29CQUM3RSxrREFBa0QsQ0FBQyxDQUFDO2FBQzdEO1FBQ0gsQ0FBQztLQUNGO0lBN0JELGdEQTZCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge01pZ3JhdGlvblJ1bGUsIFRhcmdldFZlcnNpb259IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY2hlbWF0aWNzJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG4vKipcbiAqIFJ1bGUgdGhhdCBsb29rcyBmb3IgY2xhc3MgbmFtZSBpZGVudGlmaWVycyB0aGF0IGhhdmUgYmVlbiByZW1vdmVkIGJ1dFxuICogY2Fubm90IGJlIGF1dG9tYXRpY2FsbHkgbWlncmF0ZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBNaXNjQ2xhc3NOYW1lc1J1bGUgZXh0ZW5kcyBNaWdyYXRpb25SdWxlPG51bGw+IHtcblxuICAvLyBPbmx5IGVuYWJsZSB0aGlzIHJ1bGUgaWYgdGhlIG1pZ3JhdGlvbiB0YXJnZXRzIHZlcnNpb24gNi4gVGhlIHJ1bGVcbiAgLy8gY3VycmVudGx5IG9ubHkgaW5jbHVkZXMgbWlncmF0aW9ucyBmb3IgVjYgZGVwcmVjYXRpb25zLlxuICBydWxlRW5hYmxlZCA9IHRoaXMudGFyZ2V0VmVyc2lvbiA9PT0gVGFyZ2V0VmVyc2lvbi5WNjtcblxuICB2aXNpdE5vZGUobm9kZTogdHMuTm9kZSk6IHZvaWQge1xuICAgIGlmICh0cy5pc0lkZW50aWZpZXIobm9kZSkpIHtcbiAgICAgIHRoaXMuX3Zpc2l0SWRlbnRpZmllcihub2RlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF92aXNpdElkZW50aWZpZXIoaWRlbnRpZmllcjogdHMuSWRlbnRpZmllcikge1xuICAgIC8vIE1pZ3JhdGlvbiBmb3I6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvcHVsbC8xMDI3OSAodjYpXG4gICAgaWYgKGlkZW50aWZpZXIuZ2V0VGV4dCgpID09PSAnTWF0RHJhd2VyVG9nZ2xlUmVzdWx0Jykge1xuICAgICAgdGhpcy5jcmVhdGVGYWlsdXJlQXROb2RlKFxuICAgICAgICAgIGlkZW50aWZpZXIsXG4gICAgICAgICAgYEZvdW5kIFwiTWF0RHJhd2VyVG9nZ2xlUmVzdWx0XCIgd2hpY2ggaGFzIGNoYW5nZWQgZnJvbSBhIGNsYXNzIHR5cGUgdG8gYSBzdHJpbmcgYCArXG4gICAgICAgICAgICAgIGBsaXRlcmFsIHR5cGUuIFlvdXIgY29kZSBtYXkgbmVlZCB0byBiZSB1cGRhdGVkLmApO1xuICAgIH1cblxuICAgIC8vIE1pZ3JhdGlvbiBmb3I6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvcHVsbC8xMDM5OCAodjYpXG4gICAgaWYgKGlkZW50aWZpZXIuZ2V0VGV4dCgpID09PSAnTWF0TGlzdE9wdGlvbkNoYW5nZScpIHtcbiAgICAgIHRoaXMuY3JlYXRlRmFpbHVyZUF0Tm9kZShcbiAgICAgICAgICBpZGVudGlmaWVyLFxuICAgICAgICAgIGBGb3VuZCB1c2FnZSBvZiBcIk1hdExpc3RPcHRpb25DaGFuZ2VcIiB3aGljaCBoYXMgYmVlbiByZW1vdmVkLiBQbGVhc2UgbGlzdGVuIGZvciBgICtcbiAgICAgICAgICAgICAgYFwic2VsZWN0aW9uQ2hhbmdlXCIgb24gXCJNYXRTZWxlY3Rpb25MaXN0XCIgaW5zdGVhZC5gKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
(function (factory) {
|
|
9
|
-
if (typeof module === "object" && typeof module.exports === "object") {
|
|
10
|
-
var v = factory(require, exports);
|
|
11
|
-
if (v !== undefined) module.exports = v;
|
|
12
|
-
}
|
|
13
|
-
else if (typeof define === "function" && define.amd) {
|
|
14
|
-
define("@angular/material/schematics/ng-update/upgrade-rules/misc-checks/misc-imports-rule", ["require", "exports", "@angular/cdk/schematics", "typescript"], factory);
|
|
15
|
-
}
|
|
16
|
-
})(function (require, exports) {
|
|
17
|
-
"use strict";
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
const schematics_1 = require("@angular/cdk/schematics");
|
|
20
|
-
const ts = require("typescript");
|
|
21
|
-
/**
|
|
22
|
-
* Rule that detects import declarations that refer to outdated identifiers from
|
|
23
|
-
* Angular Material which cannot be updated automatically.
|
|
24
|
-
*/
|
|
25
|
-
class MiscImportsRule extends schematics_1.MigrationRule {
|
|
26
|
-
constructor() {
|
|
27
|
-
super(...arguments);
|
|
28
|
-
// Only enable this rule if the migration targets version 6. The rule
|
|
29
|
-
// currently only includes migrations for V6 deprecations.
|
|
30
|
-
this.ruleEnabled = this.targetVersion === schematics_1.TargetVersion.V6;
|
|
31
|
-
}
|
|
32
|
-
visitNode(node) {
|
|
33
|
-
if (ts.isImportDeclaration(node)) {
|
|
34
|
-
this._visitImportDeclaration(node);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
_visitImportDeclaration(node) {
|
|
38
|
-
if (!schematics_1.isMaterialImportDeclaration(node) || !node.importClause ||
|
|
39
|
-
!node.importClause.namedBindings) {
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
const namedBindings = node.importClause.namedBindings;
|
|
43
|
-
if (ts.isNamedImports(namedBindings)) {
|
|
44
|
-
// Migration for: https://github.com/angular/components/pull/10405 (v6)
|
|
45
|
-
this._checkAnimationConstants(namedBindings);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Checks for named imports that refer to the deleted animation constants.
|
|
50
|
-
* https://github.com/angular/components/commit/9f3bf274c4f15f0b0fbd8ab7dbf1a453076e66d9
|
|
51
|
-
*/
|
|
52
|
-
_checkAnimationConstants(namedImports) {
|
|
53
|
-
namedImports.elements.filter(element => ts.isIdentifier(element.name)).forEach(element => {
|
|
54
|
-
const importName = element.name.text;
|
|
55
|
-
if (importName === 'SHOW_ANIMATION' || importName === 'HIDE_ANIMATION') {
|
|
56
|
-
this.createFailureAtNode(element, `Found deprecated symbol "${importName}" which has been removed`);
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
exports.MiscImportsRule = MiscImportsRule;
|
|
62
|
-
});
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzYy1pbXBvcnRzLXJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvc2NoZW1hdGljcy9uZy11cGRhdGUvdXBncmFkZS1ydWxlcy9taXNjLWNoZWNrcy9taXNjLWltcG9ydHMtcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7OztJQUVILHdEQUFrRztJQUNsRyxpQ0FBaUM7SUFFakM7OztPQUdHO0lBQ0gsTUFBYSxlQUFnQixTQUFRLDBCQUFtQjtRQUF4RDs7WUFFRSxxRUFBcUU7WUFDckUsMERBQTBEO1lBQzFELGdCQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsS0FBSywwQkFBYSxDQUFDLEVBQUUsQ0FBQztRQW9DeEQsQ0FBQztRQWxDQyxTQUFTLENBQUMsSUFBYTtZQUNyQixJQUFJLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3BDO1FBQ0gsQ0FBQztRQUVPLHVCQUF1QixDQUFDLElBQTBCO1lBQ3hELElBQUksQ0FBQyx3Q0FBMkIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO2dCQUN4RCxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFO2dCQUNwQyxPQUFPO2FBQ1I7WUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQztZQUV0RCxJQUFJLEVBQUUsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0JBQ3BDLHVFQUF1RTtnQkFDdkUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQzlDO1FBQ0gsQ0FBQztRQUVEOzs7V0FHRztRQUNLLHdCQUF3QixDQUFDLFlBQTZCO1lBQzVELFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3ZGLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUVyQyxJQUFJLFVBQVUsS0FBSyxnQkFBZ0IsSUFBSSxVQUFVLEtBQUssZ0JBQWdCLEVBQUU7b0JBQ3RFLElBQUksQ0FBQyxtQkFBbUIsQ0FDcEIsT0FBTyxFQUFFLDRCQUE0QixVQUFVLDBCQUEwQixDQUFDLENBQUM7aUJBQ2hGO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0tBQ0Y7SUF4Q0QsMENBd0NDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7aXNNYXRlcmlhbEltcG9ydERlY2xhcmF0aW9uLCBNaWdyYXRpb25SdWxlLCBUYXJnZXRWZXJzaW9ufSBmcm9tICdAYW5ndWxhci9jZGsvc2NoZW1hdGljcyc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuLyoqXG4gKiBSdWxlIHRoYXQgZGV0ZWN0cyBpbXBvcnQgZGVjbGFyYXRpb25zIHRoYXQgcmVmZXIgdG8gb3V0ZGF0ZWQgaWRlbnRpZmllcnMgZnJvbVxuICogQW5ndWxhciBNYXRlcmlhbCB3aGljaCBjYW5ub3QgYmUgdXBkYXRlZCBhdXRvbWF0aWNhbGx5LlxuICovXG5leHBvcnQgY2xhc3MgTWlzY0ltcG9ydHNSdWxlIGV4dGVuZHMgTWlncmF0aW9uUnVsZTxudWxsPiB7XG5cbiAgLy8gT25seSBlbmFibGUgdGhpcyBydWxlIGlmIHRoZSBtaWdyYXRpb24gdGFyZ2V0cyB2ZXJzaW9uIDYuIFRoZSBydWxlXG4gIC8vIGN1cnJlbnRseSBvbmx5IGluY2x1ZGVzIG1pZ3JhdGlvbnMgZm9yIFY2IGRlcHJlY2F0aW9ucy5cbiAgcnVsZUVuYWJsZWQgPSB0aGlzLnRhcmdldFZlcnNpb24gPT09IFRhcmdldFZlcnNpb24uVjY7XG5cbiAgdmlzaXROb2RlKG5vZGU6IHRzLk5vZGUpOiB2b2lkIHtcbiAgICBpZiAodHMuaXNJbXBvcnREZWNsYXJhdGlvbihub2RlKSkge1xuICAgICAgdGhpcy5fdmlzaXRJbXBvcnREZWNsYXJhdGlvbihub2RlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF92aXNpdEltcG9ydERlY2xhcmF0aW9uKG5vZGU6IHRzLkltcG9ydERlY2xhcmF0aW9uKSB7XG4gICAgaWYgKCFpc01hdGVyaWFsSW1wb3J0RGVjbGFyYXRpb24obm9kZSkgfHwgIW5vZGUuaW1wb3J0Q2xhdXNlIHx8XG4gICAgICAgICFub2RlLmltcG9ydENsYXVzZS5uYW1lZEJpbmRpbmdzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbmFtZWRCaW5kaW5ncyA9IG5vZGUuaW1wb3J0Q2xhdXNlLm5hbWVkQmluZGluZ3M7XG5cbiAgICBpZiAodHMuaXNOYW1lZEltcG9ydHMobmFtZWRCaW5kaW5ncykpIHtcbiAgICAgIC8vIE1pZ3JhdGlvbiBmb3I6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvcHVsbC8xMDQwNSAodjYpXG4gICAgICB0aGlzLl9jaGVja0FuaW1hdGlvbkNvbnN0YW50cyhuYW1lZEJpbmRpbmdzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGZvciBuYW1lZCBpbXBvcnRzIHRoYXQgcmVmZXIgdG8gdGhlIGRlbGV0ZWQgYW5pbWF0aW9uIGNvbnN0YW50cy5cbiAgICogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9jb21taXQvOWYzYmYyNzRjNGYxNWYwYjBmYmQ4YWI3ZGJmMWE0NTMwNzZlNjZkOVxuICAgKi9cbiAgcHJpdmF0ZSBfY2hlY2tBbmltYXRpb25Db25zdGFudHMobmFtZWRJbXBvcnRzOiB0cy5OYW1lZEltcG9ydHMpIHtcbiAgICBuYW1lZEltcG9ydHMuZWxlbWVudHMuZmlsdGVyKGVsZW1lbnQgPT4gdHMuaXNJZGVudGlmaWVyKGVsZW1lbnQubmFtZSkpLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBjb25zdCBpbXBvcnROYW1lID0gZWxlbWVudC5uYW1lLnRleHQ7XG5cbiAgICAgIGlmIChpbXBvcnROYW1lID09PSAnU0hPV19BTklNQVRJT04nIHx8IGltcG9ydE5hbWUgPT09ICdISURFX0FOSU1BVElPTicpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVGYWlsdXJlQXROb2RlKFxuICAgICAgICAgICAgZWxlbWVudCwgYEZvdW5kIGRlcHJlY2F0ZWQgc3ltYm9sIFwiJHtpbXBvcnROYW1lfVwiIHdoaWNoIGhhcyBiZWVuIHJlbW92ZWRgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
(function (factory) {
|
|
9
|
-
if (typeof module === "object" && typeof module.exports === "object") {
|
|
10
|
-
var v = factory(require, exports);
|
|
11
|
-
if (v !== undefined) module.exports = v;
|
|
12
|
-
}
|
|
13
|
-
else if (typeof define === "function" && define.amd) {
|
|
14
|
-
define("@angular/material/schematics/ng-update/upgrade-rules/misc-checks/misc-property-names-rule", ["require", "exports", "@angular/cdk/schematics", "typescript"], factory);
|
|
15
|
-
}
|
|
16
|
-
})(function (require, exports) {
|
|
17
|
-
"use strict";
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
const schematics_1 = require("@angular/cdk/schematics");
|
|
20
|
-
const ts = require("typescript");
|
|
21
|
-
/**
|
|
22
|
-
* Rule that walks through every property access expression and and reports a failure if
|
|
23
|
-
* a given property name no longer exists but cannot be automatically migrated.
|
|
24
|
-
*/
|
|
25
|
-
class MiscPropertyNamesRule extends schematics_1.MigrationRule {
|
|
26
|
-
constructor() {
|
|
27
|
-
super(...arguments);
|
|
28
|
-
// Only enable this rule if the migration targets version 6. The rule
|
|
29
|
-
// currently only includes migrations for V6 deprecations.
|
|
30
|
-
this.ruleEnabled = this.targetVersion === schematics_1.TargetVersion.V6;
|
|
31
|
-
}
|
|
32
|
-
visitNode(node) {
|
|
33
|
-
if (ts.isPropertyAccessExpression(node)) {
|
|
34
|
-
this._visitPropertyAccessExpression(node);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
_visitPropertyAccessExpression(node) {
|
|
38
|
-
const hostType = this.typeChecker.getTypeAtLocation(node.expression);
|
|
39
|
-
const typeName = hostType && hostType.symbol && hostType.symbol.getName();
|
|
40
|
-
// Migration for: https://github.com/angular/components/pull/10398 (v6)
|
|
41
|
-
if (typeName === 'MatListOption' && node.name.text === 'selectionChange') {
|
|
42
|
-
this.createFailureAtNode(node, `Found deprecated property "selectionChange" of ` +
|
|
43
|
-
`class "MatListOption". Use the "selectionChange" property on the ` +
|
|
44
|
-
`parent "MatSelectionList" instead.`);
|
|
45
|
-
}
|
|
46
|
-
// Migration for: https://github.com/angular/components/pull/10413 (v6)
|
|
47
|
-
if (typeName === 'MatDatepicker' && node.name.text === 'selectedChanged') {
|
|
48
|
-
this.createFailureAtNode(node, `Found deprecated property "selectedChanged" of ` +
|
|
49
|
-
`class "MatDatepicker". Use the "dateChange" or "dateInput" methods ` +
|
|
50
|
-
`on "MatDatepickerInput" instead.`);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
exports.MiscPropertyNamesRule = MiscPropertyNamesRule;
|
|
55
|
-
});
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzYy1wcm9wZXJ0eS1uYW1lcy1ydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL3NjaGVtYXRpY3MvbmctdXBkYXRlL3VwZ3JhZGUtcnVsZXMvbWlzYy1jaGVja3MvbWlzYy1wcm9wZXJ0eS1uYW1lcy1ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7O0lBRUgsd0RBQXFFO0lBQ3JFLGlDQUFpQztJQUVqQzs7O09BR0c7SUFDSCxNQUFhLHFCQUFzQixTQUFRLDBCQUFtQjtRQUE5RDs7WUFFRSxxRUFBcUU7WUFDckUsMERBQTBEO1lBQzFELGdCQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsS0FBSywwQkFBYSxDQUFDLEVBQUUsQ0FBQztRQThCeEQsQ0FBQztRQTVCQyxTQUFTLENBQUMsSUFBYTtZQUNyQixJQUFJLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzNDO1FBQ0gsQ0FBQztRQUVPLDhCQUE4QixDQUFDLElBQWlDO1lBQ3RFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sUUFBUSxHQUFHLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFMUUsdUVBQXVFO1lBQ3ZFLElBQUksUUFBUSxLQUFLLGVBQWUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxpQkFBaUIsRUFBRTtnQkFDeEUsSUFBSSxDQUFDLG1CQUFtQixDQUNwQixJQUFJLEVBQ0osaURBQWlEO29CQUM3QyxtRUFBbUU7b0JBQ25FLG9DQUFvQyxDQUFDLENBQUM7YUFDL0M7WUFFRCx1RUFBdUU7WUFDdkUsSUFBSSxRQUFRLEtBQUssZUFBZSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLGlCQUFpQixFQUFFO2dCQUN4RSxJQUFJLENBQUMsbUJBQW1CLENBQ3BCLElBQUksRUFDSixpREFBaUQ7b0JBQzdDLHFFQUFxRTtvQkFDckUsa0NBQWtDLENBQUMsQ0FBQzthQUM3QztRQUNILENBQUM7S0FDRjtJQWxDRCxzREFrQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtNaWdyYXRpb25SdWxlLCBUYXJnZXRWZXJzaW9ufSBmcm9tICdAYW5ndWxhci9jZGsvc2NoZW1hdGljcyc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuLyoqXG4gKiBSdWxlIHRoYXQgd2Fsa3MgdGhyb3VnaCBldmVyeSBwcm9wZXJ0eSBhY2Nlc3MgZXhwcmVzc2lvbiBhbmQgYW5kIHJlcG9ydHMgYSBmYWlsdXJlIGlmXG4gKiBhIGdpdmVuIHByb3BlcnR5IG5hbWUgbm8gbG9uZ2VyIGV4aXN0cyBidXQgY2Fubm90IGJlIGF1dG9tYXRpY2FsbHkgbWlncmF0ZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBNaXNjUHJvcGVydHlOYW1lc1J1bGUgZXh0ZW5kcyBNaWdyYXRpb25SdWxlPG51bGw+IHtcblxuICAvLyBPbmx5IGVuYWJsZSB0aGlzIHJ1bGUgaWYgdGhlIG1pZ3JhdGlvbiB0YXJnZXRzIHZlcnNpb24gNi4gVGhlIHJ1bGVcbiAgLy8gY3VycmVudGx5IG9ubHkgaW5jbHVkZXMgbWlncmF0aW9ucyBmb3IgVjYgZGVwcmVjYXRpb25zLlxuICBydWxlRW5hYmxlZCA9IHRoaXMudGFyZ2V0VmVyc2lvbiA9PT0gVGFyZ2V0VmVyc2lvbi5WNjtcblxuICB2aXNpdE5vZGUobm9kZTogdHMuTm9kZSk6IHZvaWQge1xuICAgIGlmICh0cy5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihub2RlKSkge1xuICAgICAgdGhpcy5fdmlzaXRQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24obm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdmlzaXRQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24obm9kZTogdHMuUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKSB7XG4gICAgY29uc3QgaG9zdFR5cGUgPSB0aGlzLnR5cGVDaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKG5vZGUuZXhwcmVzc2lvbik7XG4gICAgY29uc3QgdHlwZU5hbWUgPSBob3N0VHlwZSAmJiBob3N0VHlwZS5zeW1ib2wgJiYgaG9zdFR5cGUuc3ltYm9sLmdldE5hbWUoKTtcblxuICAgIC8vIE1pZ3JhdGlvbiBmb3I6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvcHVsbC8xMDM5OCAodjYpXG4gICAgaWYgKHR5cGVOYW1lID09PSAnTWF0TGlzdE9wdGlvbicgJiYgbm9kZS5uYW1lLnRleHQgPT09ICdzZWxlY3Rpb25DaGFuZ2UnKSB7XG4gICAgICB0aGlzLmNyZWF0ZUZhaWx1cmVBdE5vZGUoXG4gICAgICAgICAgbm9kZSxcbiAgICAgICAgICBgRm91bmQgZGVwcmVjYXRlZCBwcm9wZXJ0eSBcInNlbGVjdGlvbkNoYW5nZVwiIG9mIGAgK1xuICAgICAgICAgICAgICBgY2xhc3MgXCJNYXRMaXN0T3B0aW9uXCIuIFVzZSB0aGUgXCJzZWxlY3Rpb25DaGFuZ2VcIiBwcm9wZXJ0eSBvbiB0aGUgYCArXG4gICAgICAgICAgICAgIGBwYXJlbnQgXCJNYXRTZWxlY3Rpb25MaXN0XCIgaW5zdGVhZC5gKTtcbiAgICB9XG5cbiAgICAvLyBNaWdyYXRpb24gZm9yOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL3B1bGwvMTA0MTMgKHY2KVxuICAgIGlmICh0eXBlTmFtZSA9PT0gJ01hdERhdGVwaWNrZXInICYmIG5vZGUubmFtZS50ZXh0ID09PSAnc2VsZWN0ZWRDaGFuZ2VkJykge1xuICAgICAgdGhpcy5jcmVhdGVGYWlsdXJlQXROb2RlKFxuICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgYEZvdW5kIGRlcHJlY2F0ZWQgcHJvcGVydHkgXCJzZWxlY3RlZENoYW5nZWRcIiBvZiBgICtcbiAgICAgICAgICAgICAgYGNsYXNzIFwiTWF0RGF0ZXBpY2tlclwiLiBVc2UgdGhlIFwiZGF0ZUNoYW5nZVwiIG9yIFwiZGF0ZUlucHV0XCIgbWV0aG9kcyBgICtcbiAgICAgICAgICAgICAgYG9uIFwiTWF0RGF0ZXBpY2tlcklucHV0XCIgaW5zdGVhZC5gKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
/// <amd-module name="@angular/material/schematics/ng-update/upgrade-rules/misc-checks/misc-template-rule" />
|
|
9
|
-
import { MigrationRule, ResolvedResource } from '@angular/cdk/schematics';
|
|
10
|
-
/**
|
|
11
|
-
* Rule that walks through every inline or external template and reports if there
|
|
12
|
-
* are outdated usages of the Angular Material API that needs to be updated manually.
|
|
13
|
-
*/
|
|
14
|
-
export declare class MiscTemplateRule extends MigrationRule<null> {
|
|
15
|
-
ruleEnabled: boolean;
|
|
16
|
-
visitTemplate(template: ResolvedResource): void;
|
|
17
|
-
}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
(function (factory) {
|
|
9
|
-
if (typeof module === "object" && typeof module.exports === "object") {
|
|
10
|
-
var v = factory(require, exports);
|
|
11
|
-
if (v !== undefined) module.exports = v;
|
|
12
|
-
}
|
|
13
|
-
else if (typeof define === "function" && define.amd) {
|
|
14
|
-
define("@angular/material/schematics/ng-update/upgrade-rules/misc-checks/misc-template-rule", ["require", "exports", "@angular/cdk/schematics"], factory);
|
|
15
|
-
}
|
|
16
|
-
})(function (require, exports) {
|
|
17
|
-
"use strict";
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
const schematics_1 = require("@angular/cdk/schematics");
|
|
20
|
-
/**
|
|
21
|
-
* Rule that walks through every inline or external template and reports if there
|
|
22
|
-
* are outdated usages of the Angular Material API that needs to be updated manually.
|
|
23
|
-
*/
|
|
24
|
-
class MiscTemplateRule extends schematics_1.MigrationRule {
|
|
25
|
-
constructor() {
|
|
26
|
-
super(...arguments);
|
|
27
|
-
// Only enable this rule if the migration targets version 6. The rule
|
|
28
|
-
// currently only includes migrations for V6 deprecations.
|
|
29
|
-
this.ruleEnabled = this.targetVersion === schematics_1.TargetVersion.V6;
|
|
30
|
-
}
|
|
31
|
-
visitTemplate(template) {
|
|
32
|
-
// Migration for: https://github.com/angular/components/pull/10398 (v6)
|
|
33
|
-
schematics_1.findOutputsOnElementWithTag(template.content, 'selectionChange', [
|
|
34
|
-
'mat-list-option'
|
|
35
|
-
]).forEach(offset => {
|
|
36
|
-
this.failures.push({
|
|
37
|
-
filePath: template.filePath,
|
|
38
|
-
position: template.getCharacterAndLineOfPosition(template.start + offset),
|
|
39
|
-
message: `Found deprecated "selectionChange" output binding on "mat-list-option". ` +
|
|
40
|
-
`Use "selectionChange" on "mat-selection-list" instead.`
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
// Migration for: https://github.com/angular/components/pull/10413 (v6)
|
|
44
|
-
schematics_1.findOutputsOnElementWithTag(template.content, 'selectedChanged', [
|
|
45
|
-
'mat-datepicker'
|
|
46
|
-
]).forEach(offset => {
|
|
47
|
-
this.failures.push({
|
|
48
|
-
filePath: template.filePath,
|
|
49
|
-
position: template.getCharacterAndLineOfPosition(template.start + offset),
|
|
50
|
-
message: `Found deprecated "selectedChanged" output binding on "mat-datepicker". ` +
|
|
51
|
-
`Use "dateChange" or "dateInput" on "<input [matDatepicker]>" instead.`
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
// Migration for: https://github.com/angular/components/commit/f0bf6e7 (v6)
|
|
55
|
-
schematics_1.findInputsOnElementWithTag(template.content, 'selected', [
|
|
56
|
-
'mat-button-toggle-group'
|
|
57
|
-
]).forEach(offset => {
|
|
58
|
-
this.failures.push({
|
|
59
|
-
filePath: template.filePath,
|
|
60
|
-
position: template.getCharacterAndLineOfPosition(template.start + offset),
|
|
61
|
-
message: `Found deprecated "selected" input binding on "mat-radio-button-group". ` +
|
|
62
|
-
`Use "value" instead.`
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
exports.MiscTemplateRule = MiscTemplateRule;
|
|
68
|
-
});
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzYy10ZW1wbGF0ZS1ydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL3NjaGVtYXRpY3MvbmctdXBkYXRlL3VwZ3JhZGUtcnVsZXMvbWlzYy1jaGVja3MvbWlzYy10ZW1wbGF0ZS1ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7O0lBRUgsd0RBTWlDO0lBRWpDOzs7T0FHRztJQUNILE1BQWEsZ0JBQWlCLFNBQVEsMEJBQW1CO1FBQXpEOztZQUVFLHFFQUFxRTtZQUNyRSwwREFBMEQ7WUFDMUQsZ0JBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxLQUFLLDBCQUFhLENBQUMsRUFBRSxDQUFDO1FBd0N4RCxDQUFDO1FBdENDLGFBQWEsQ0FBQyxRQUEwQjtZQUV0Qyx1RUFBdUU7WUFDdkUsd0NBQTJCLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRTtnQkFDL0QsaUJBQWlCO2FBQ2xCLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO29CQUNqQixRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVE7b0JBQzNCLFFBQVEsRUFBRSxRQUFRLENBQUMsNkJBQTZCLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7b0JBQ3pFLE9BQU8sRUFBRSwwRUFBMEU7d0JBQy9FLHdEQUF3RDtpQkFDN0QsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFFSCx1RUFBdUU7WUFDdkUsd0NBQTJCLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRTtnQkFDL0QsZ0JBQWdCO2FBQ2pCLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO29CQUNqQixRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVE7b0JBQzNCLFFBQVEsRUFBRSxRQUFRLENBQUMsNkJBQTZCLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7b0JBQ3pFLE9BQU8sRUFBRSx5RUFBeUU7d0JBQzlFLHVFQUF1RTtpQkFDNUUsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFFSCwyRUFBMkU7WUFDM0UsdUNBQTBCLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUU7Z0JBQ3ZELHlCQUF5QjthQUMxQixDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztvQkFDakIsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRO29CQUMzQixRQUFRLEVBQUUsUUFBUSxDQUFDLDZCQUE2QixDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO29CQUN6RSxPQUFPLEVBQUUseUVBQXlFO3dCQUM5RSxzQkFBc0I7aUJBQzNCLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUNGO0lBNUNELDRDQTRDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1xuICBmaW5kSW5wdXRzT25FbGVtZW50V2l0aFRhZyxcbiAgZmluZE91dHB1dHNPbkVsZW1lbnRXaXRoVGFnLFxuICBNaWdyYXRpb25SdWxlLFxuICBSZXNvbHZlZFJlc291cmNlLFxuICBUYXJnZXRWZXJzaW9uLFxufSBmcm9tICdAYW5ndWxhci9jZGsvc2NoZW1hdGljcyc7XG5cbi8qKlxuICogUnVsZSB0aGF0IHdhbGtzIHRocm91Z2ggZXZlcnkgaW5saW5lIG9yIGV4dGVybmFsIHRlbXBsYXRlIGFuZCByZXBvcnRzIGlmIHRoZXJlXG4gKiBhcmUgb3V0ZGF0ZWQgdXNhZ2VzIG9mIHRoZSBBbmd1bGFyIE1hdGVyaWFsIEFQSSB0aGF0IG5lZWRzIHRvIGJlIHVwZGF0ZWQgbWFudWFsbHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBNaXNjVGVtcGxhdGVSdWxlIGV4dGVuZHMgTWlncmF0aW9uUnVsZTxudWxsPiB7XG5cbiAgLy8gT25seSBlbmFibGUgdGhpcyBydWxlIGlmIHRoZSBtaWdyYXRpb24gdGFyZ2V0cyB2ZXJzaW9uIDYuIFRoZSBydWxlXG4gIC8vIGN1cnJlbnRseSBvbmx5IGluY2x1ZGVzIG1pZ3JhdGlvbnMgZm9yIFY2IGRlcHJlY2F0aW9ucy5cbiAgcnVsZUVuYWJsZWQgPSB0aGlzLnRhcmdldFZlcnNpb24gPT09IFRhcmdldFZlcnNpb24uVjY7XG5cbiAgdmlzaXRUZW1wbGF0ZSh0ZW1wbGF0ZTogUmVzb2x2ZWRSZXNvdXJjZSk6IHZvaWQge1xuXG4gICAgLy8gTWlncmF0aW9uIGZvcjogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9wdWxsLzEwMzk4ICh2NilcbiAgICBmaW5kT3V0cHV0c09uRWxlbWVudFdpdGhUYWcodGVtcGxhdGUuY29udGVudCwgJ3NlbGVjdGlvbkNoYW5nZScsIFtcbiAgICAgICdtYXQtbGlzdC1vcHRpb24nXG4gICAgXSkuZm9yRWFjaChvZmZzZXQgPT4ge1xuICAgICAgdGhpcy5mYWlsdXJlcy5wdXNoKHtcbiAgICAgICAgZmlsZVBhdGg6IHRlbXBsYXRlLmZpbGVQYXRoLFxuICAgICAgICBwb3NpdGlvbjogdGVtcGxhdGUuZ2V0Q2hhcmFjdGVyQW5kTGluZU9mUG9zaXRpb24odGVtcGxhdGUuc3RhcnQgKyBvZmZzZXQpLFxuICAgICAgICBtZXNzYWdlOiBgRm91bmQgZGVwcmVjYXRlZCBcInNlbGVjdGlvbkNoYW5nZVwiIG91dHB1dCBiaW5kaW5nIG9uIFwibWF0LWxpc3Qtb3B0aW9uXCIuIGAgK1xuICAgICAgICAgICAgYFVzZSBcInNlbGVjdGlvbkNoYW5nZVwiIG9uIFwibWF0LXNlbGVjdGlvbi1saXN0XCIgaW5zdGVhZC5gXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8vIE1pZ3JhdGlvbiBmb3I6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvcHVsbC8xMDQxMyAodjYpXG4gICAgZmluZE91dHB1dHNPbkVsZW1lbnRXaXRoVGFnKHRlbXBsYXRlLmNvbnRlbnQsICdzZWxlY3RlZENoYW5nZWQnLCBbXG4gICAgICAnbWF0LWRhdGVwaWNrZXInXG4gICAgXSkuZm9yRWFjaChvZmZzZXQgPT4ge1xuICAgICAgdGhpcy5mYWlsdXJlcy5wdXNoKHtcbiAgICAgICAgZmlsZVBhdGg6IHRlbXBsYXRlLmZpbGVQYXRoLFxuICAgICAgICBwb3NpdGlvbjogdGVtcGxhdGUuZ2V0Q2hhcmFjdGVyQW5kTGluZU9mUG9zaXRpb24odGVtcGxhdGUuc3RhcnQgKyBvZmZzZXQpLFxuICAgICAgICBtZXNzYWdlOiBgRm91bmQgZGVwcmVjYXRlZCBcInNlbGVjdGVkQ2hhbmdlZFwiIG91dHB1dCBiaW5kaW5nIG9uIFwibWF0LWRhdGVwaWNrZXJcIi4gYCArXG4gICAgICAgICAgICBgVXNlIFwiZGF0ZUNoYW5nZVwiIG9yIFwiZGF0ZUlucHV0XCIgb24gXCI8aW5wdXQgW21hdERhdGVwaWNrZXJdPlwiIGluc3RlYWQuYFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvLyBNaWdyYXRpb24gZm9yOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2NvbW1pdC9mMGJmNmU3ICh2NilcbiAgICBmaW5kSW5wdXRzT25FbGVtZW50V2l0aFRhZyh0ZW1wbGF0ZS5jb250ZW50LCAnc2VsZWN0ZWQnLCBbXG4gICAgICAnbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAnXG4gICAgXSkuZm9yRWFjaChvZmZzZXQgPT4ge1xuICAgICAgdGhpcy5mYWlsdXJlcy5wdXNoKHtcbiAgICAgICAgZmlsZVBhdGg6IHRlbXBsYXRlLmZpbGVQYXRoLFxuICAgICAgICBwb3NpdGlvbjogdGVtcGxhdGUuZ2V0Q2hhcmFjdGVyQW5kTGluZU9mUG9zaXRpb24odGVtcGxhdGUuc3RhcnQgKyBvZmZzZXQpLFxuICAgICAgICBtZXNzYWdlOiBgRm91bmQgZGVwcmVjYXRlZCBcInNlbGVjdGVkXCIgaW5wdXQgYmluZGluZyBvbiBcIm1hdC1yYWRpby1idXR0b24tZ3JvdXBcIi4gYCArXG4gICAgICAgICAgICBgVXNlIFwidmFsdWVcIiBpbnN0ZWFkLmBcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
(function (factory) {
|
|
9
|
-
if (typeof module === "object" && typeof module.exports === "object") {
|
|
10
|
-
var v = factory(require, exports);
|
|
11
|
-
if (v !== undefined) module.exports = v;
|
|
12
|
-
}
|
|
13
|
-
else if (typeof define === "function" && define.amd) {
|
|
14
|
-
define("@angular/material/schematics/ng-update/upgrade-rules/misc-ripples-v7/ripple-speed-factor-rule", ["require", "exports", "@angular/cdk/schematics", "typescript", "@angular/material/schematics/ng-update/upgrade-rules/misc-ripples-v7/ripple-speed-factor"], factory);
|
|
15
|
-
}
|
|
16
|
-
})(function (require, exports) {
|
|
17
|
-
"use strict";
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
const schematics_1 = require("@angular/cdk/schematics");
|
|
20
|
-
const ts = require("typescript");
|
|
21
|
-
const ripple_speed_factor_1 = require("@angular/material/schematics/ng-update/upgrade-rules/misc-ripples-v7/ripple-speed-factor");
|
|
22
|
-
/** Regular expression that matches [matRippleSpeedFactor]="$NUMBER" in templates. */
|
|
23
|
-
const speedFactorNumberRegex = /\[matRippleSpeedFactor]="(\d+(?:\.\d+)?)"/g;
|
|
24
|
-
/** Regular expression that matches [matRippleSpeedFactor]="$NOT_A_NUMBER" in templates. */
|
|
25
|
-
const speedFactorNotParseable = /\[matRippleSpeedFactor]="(?!\d+(?:\.\d+)?")(.*)"/g;
|
|
26
|
-
/**
|
|
27
|
-
* Note that will be added whenever a speed factor expression has been converted to calculate
|
|
28
|
-
* the according duration. This note should encourage people to clean up their code by switching
|
|
29
|
-
* away from the speed factors to explicit durations.
|
|
30
|
-
*/
|
|
31
|
-
const removeNote = `TODO: Cleanup duration calculation.`;
|
|
32
|
-
/**
|
|
33
|
-
* Rule that walks through every property assignment and switches the global `baseSpeedFactor`
|
|
34
|
-
* ripple option to the new global animation config. Also updates every class member assignment
|
|
35
|
-
* that refers to MatRipple#speedFactor.
|
|
36
|
-
*/
|
|
37
|
-
class RippleSpeedFactorRule extends schematics_1.MigrationRule {
|
|
38
|
-
constructor() {
|
|
39
|
-
super(...arguments);
|
|
40
|
-
// Only enable this rule if the migration targets version 7 as the ripple
|
|
41
|
-
// speed factor has been removed in that version.
|
|
42
|
-
this.ruleEnabled = this.targetVersion === schematics_1.TargetVersion.V7;
|
|
43
|
-
}
|
|
44
|
-
visitNode(node) {
|
|
45
|
-
if (ts.isBinaryExpression(node)) {
|
|
46
|
-
this._visitBinaryExpression(node);
|
|
47
|
-
}
|
|
48
|
-
else if (ts.isPropertyAssignment(node)) {
|
|
49
|
-
this._visitPropertyAssignment(node);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
visitTemplate(template) {
|
|
53
|
-
let match;
|
|
54
|
-
while ((match = speedFactorNumberRegex.exec(template.content)) !== null) {
|
|
55
|
-
const newEnterDuration = ripple_speed_factor_1.convertSpeedFactorToDuration(parseFloat(match[1]));
|
|
56
|
-
this._replaceText(template.filePath, template.start + match.index, match[0].length, `[matRippleAnimation]="{enterDuration: ${newEnterDuration}}"`);
|
|
57
|
-
}
|
|
58
|
-
while ((match = speedFactorNotParseable.exec(template.content)) !== null) {
|
|
59
|
-
const newDurationExpression = ripple_speed_factor_1.createSpeedFactorConvertExpression(match[1]);
|
|
60
|
-
this._replaceText(template.filePath, template.start + match.index, match[0].length, `[matRippleAnimation]="{enterDuration: (${newDurationExpression})}"`);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
/** Switches binary expressions (e.g. myRipple.speedFactor = 0.5) to the new animation config. */
|
|
64
|
-
_visitBinaryExpression(expression) {
|
|
65
|
-
if (!ts.isPropertyAccessExpression(expression.left)) {
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
// Left side expression consists of target object and property name (e.g. myInstance.val)
|
|
69
|
-
const leftExpression = expression.left;
|
|
70
|
-
const targetTypeNode = this.typeChecker.getTypeAtLocation(leftExpression.expression);
|
|
71
|
-
if (!targetTypeNode.symbol) {
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
const targetTypeName = targetTypeNode.symbol.getName();
|
|
75
|
-
const propertyName = leftExpression.name.getText();
|
|
76
|
-
const filePath = leftExpression.getSourceFile().fileName;
|
|
77
|
-
if (targetTypeName === 'MatRipple' && propertyName === 'speedFactor') {
|
|
78
|
-
if (ts.isNumericLiteral(expression.right)) {
|
|
79
|
-
const numericValue = parseFloat(expression.right.text);
|
|
80
|
-
const newEnterDurationValue = ripple_speed_factor_1.convertSpeedFactorToDuration(numericValue);
|
|
81
|
-
// Replace the `speedFactor` property name with `animation`.
|
|
82
|
-
this._replaceText(filePath, leftExpression.name.getStart(), leftExpression.name.getWidth(), 'animation');
|
|
83
|
-
// Replace the value assignment with the new animation config.
|
|
84
|
-
this._replaceText(filePath, expression.right.getStart(), expression.right.getWidth(), `{enterDuration: ${newEnterDurationValue}}`);
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
// Handle the right expression differently if the previous speed factor value can't
|
|
88
|
-
// be resolved statically. In that case, we just create a TypeScript expression that
|
|
89
|
-
// calculates the explicit duration based on the non-static speed factor expression.
|
|
90
|
-
const newExpression = ripple_speed_factor_1.createSpeedFactorConvertExpression(expression.right.getText());
|
|
91
|
-
// Replace the `speedFactor` property name with `animation`.
|
|
92
|
-
this._replaceText(filePath, leftExpression.name.getStart(), leftExpression.name.getWidth(), 'animation');
|
|
93
|
-
// Replace the value assignment with the new animation config and remove TODO.
|
|
94
|
-
this._replaceText(filePath, expression.right.getStart(), expression.right.getWidth(), `/** ${removeNote} */ {enterDuration: ${newExpression}}`);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Switches the global option `baseSpeedFactor` to the new animation config. For this
|
|
100
|
-
* we assume that the `baseSpeedFactor` is not used in combination with individual
|
|
101
|
-
* speed factors.
|
|
102
|
-
*/
|
|
103
|
-
_visitPropertyAssignment(assignment) {
|
|
104
|
-
// For switching the `baseSpeedFactor` global option we expect the property assignment
|
|
105
|
-
// to be inside of a normal object literal. Custom ripple global options cannot be
|
|
106
|
-
// witched automatically.
|
|
107
|
-
if (!ts.isObjectLiteralExpression(assignment.parent)) {
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
// The assignment consists of a name (key) and initializer (value).
|
|
111
|
-
if (assignment.name.getText() !== 'baseSpeedFactor') {
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
// We could technically lazily check for the MAT_RIPPLE_GLOBAL_OPTIONS injection token to
|
|
115
|
-
// be present, but it's not right to assume that everyone sets the ripple global options
|
|
116
|
-
// immediately in the provider object (e.g. it can happen that someone just imports the
|
|
117
|
-
// config from a separate file).
|
|
118
|
-
const { initializer, name } = assignment;
|
|
119
|
-
const filePath = assignment.getSourceFile().fileName;
|
|
120
|
-
if (ts.isNumericLiteral(initializer)) {
|
|
121
|
-
const numericValue = parseFloat(initializer.text);
|
|
122
|
-
const newEnterDurationValue = ripple_speed_factor_1.convertSpeedFactorToDuration(numericValue);
|
|
123
|
-
// Replace the `baseSpeedFactor` property name with `animation`.
|
|
124
|
-
this._replaceText(filePath, name.getStart(), name.getWidth(), 'animation');
|
|
125
|
-
// Replace the value assignment initializer with the new animation config.
|
|
126
|
-
this._replaceText(filePath, initializer.getStart(), initializer.getWidth(), `{enterDuration: ${newEnterDurationValue}}`);
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
// Handle the right expression differently if the previous speed factor value can't
|
|
130
|
-
// be resolved statically. In that case, we just create a TypeScript expression that
|
|
131
|
-
// calculates the explicit duration based on the non-static speed factor expression.
|
|
132
|
-
const newExpression = ripple_speed_factor_1.createSpeedFactorConvertExpression(initializer.getText());
|
|
133
|
-
// Replace the `baseSpeedFactor` property name with `animation`.
|
|
134
|
-
this._replaceText(filePath, name.getStart(), name.getWidth(), 'animation');
|
|
135
|
-
// Replace the value assignment with the new animation config and remove TODO.
|
|
136
|
-
this._replaceText(filePath, initializer.getStart(), initializer.getWidth(), `/** ${removeNote} */ {enterDuration: ${newExpression}}`);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
_replaceText(filePath, start, width, newText) {
|
|
140
|
-
const recorder = this.getUpdateRecorder(filePath);
|
|
141
|
-
recorder.remove(start, width);
|
|
142
|
-
recorder.insertRight(start, newText);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
exports.RippleSpeedFactorRule = RippleSpeedFactorRule;
|
|
146
|
-
});
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlwcGxlLXNwZWVkLWZhY3Rvci1ydWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL3NjaGVtYXRpY3MvbmctdXBkYXRlL3VwZ3JhZGUtcnVsZXMvbWlzYy1yaXBwbGVzLXY3L3JpcHBsZS1zcGVlZC1mYWN0b3ItcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7OztJQUVILHdEQUF1RjtJQUN2RixpQ0FBaUM7SUFDakMsa0lBRytCO0lBRS9CLHFGQUFxRjtJQUNyRixNQUFNLHNCQUFzQixHQUFHLDRDQUE0QyxDQUFDO0lBRTVFLDJGQUEyRjtJQUMzRixNQUFNLHVCQUF1QixHQUFHLG1EQUFtRCxDQUFDO0lBRXBGOzs7O09BSUc7SUFDSCxNQUFNLFVBQVUsR0FBRyxxQ0FBcUMsQ0FBQztJQUV6RDs7OztPQUlHO0lBQ0gsTUFBYSxxQkFBc0IsU0FBUSwwQkFBbUI7UUFBOUQ7O1lBRUUseUVBQXlFO1lBQ3pFLGlEQUFpRDtZQUNqRCxnQkFBVyxHQUFHLElBQUksQ0FBQyxhQUFhLEtBQUssMEJBQWEsQ0FBQyxFQUFFLENBQUM7UUF1SXhELENBQUM7UUFySUMsU0FBUyxDQUFDLElBQWE7WUFDckIsSUFBSSxFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNuQztpQkFBTSxJQUFJLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDeEMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQztRQUVELGFBQWEsQ0FBQyxRQUEwQjtZQUN0QyxJQUFJLEtBQTRCLENBQUM7WUFFakMsT0FBTyxDQUFDLEtBQUssR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFD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QUEwRTtnQkFDMUUsSUFBSSxDQUFDLFlBQVksQ0FDYixRQUFRLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsRUFDeEQsbUJBQW1CLHFCQUFxQixHQUFHLENBQUMsQ0FBQzthQUNsRDtpQkFBTTtnQkFDTCxtRkFBbUY7Z0JBQ25GLG9GQUFvRjtnQkFDcEYsb0ZBQW9GO2dCQUNwRixNQUFNLGFBQWEsR0FBRyx3REFBa0MsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztnQkFFaEYsZ0VBQWdFO2dCQUNoRSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUUzRSw4RUFBOEU7Z0JBQzlFLElBQUksQ0FBQyxZQUFZLENBQ2IsUUFBUSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLEVBQ3hELE9BQU8sVUFBVSx1QkFBdUIsYUFBYSxHQUFHLENBQUMsQ0FBQzthQUMvRDtRQUNILENBQUM7UUFFTyxZQUFZLENBQUMsUUFBZ0IsRUFBRSxLQUFhLEVBQUUsS0FBYSxFQUFFLE9BQWU7WUFDbEYsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xELFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzlCLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7S0FDRjtJQTNJRCxzREEySUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtNaWdyYXRpb25SdWxlLCBSZXNvbHZlZFJlc291cmNlLCBUYXJnZXRWZXJzaW9ufSBmcm9tICdAYW5ndWxhci9jZGsvc2NoZW1hdGljcyc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7XG4gIGNvbnZlcnRTcGVlZEZhY3RvclRvRHVyYXRpb24sXG4gIGNyZWF0ZVNwZWVkRmFjdG9yQ29udmVydEV4cHJlc3Npb24sXG59IGZyb20gJy4vcmlwcGxlLXNwZWVkLWZhY3Rvcic7XG5cbi8qKiBSZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBtYXRjaGVzIFttYXRSaXBwbGVTcGVlZEZhY3Rvcl09XCIkTlVNQkVSXCIgaW4gdGVtcGxhdGVzLiAqL1xuY29uc3Qgc3BlZWRGYWN0b3JOdW1iZXJSZWdleCA9IC9cXFttYXRSaXBwbGVTcGVlZEZhY3Rvcl09XCIoXFxkKyg/OlxcLlxcZCspPylcIi9nO1xuXG4vKiogUmVndWxhciBleHByZXNzaW9uIHRoYXQgbWF0Y2hlcyBbbWF0UmlwcGxlU3BlZWRGYWN0b3JdPVwiJE5PVF9BX05VTUJFUlwiIGluIHRlbXBsYXRlcy4gKi9cbmNvbnN0IHNwZWVkRmFjdG9yTm90UGFyc2VhYmxlID0gL1xcW21hdFJpcHBsZVNwZWVkRmFjdG9yXT1cIig/IVxcZCsoPzpcXC5cXGQrKT9cIikoLiopXCIvZztcblxuLyoqXG4gKiBOb3RlIHRoYXQgd2lsbCBiZSBhZGRlZCB3aGVuZXZlciBhIHNwZWVkIGZhY3RvciBleHByZXNzaW9uIGhhcyBiZWVuIGNvbnZlcnRlZCB0byBjYWxjdWxhdGVcbiAqIHRoZSBhY2NvcmRpbmcgZHVyYXRpb24uIFRoaXMgbm90ZSBzaG91bGQgZW5jb3VyYWdlIHBlb3BsZSB0byBjbGVhbiB1cCB0aGVpciBjb2RlIGJ5IHN3aXRjaGluZ1xuICogYXdheSBmcm9tIHRoZSBzcGVlZCBmYWN0b3JzIHRvIGV4cGxpY2l0IGR1cmF0aW9ucy5cbiAqL1xuY29uc3QgcmVtb3ZlTm90ZSA9IGBUT0RPOiBDbGVhbnVwIGR1cmF0aW9uIGNhbGN1bGF0aW9uLmA7XG5cbi8qKlxuICogUnVsZSB0aGF0IHdhbGtzIHRocm91Z2ggZXZlcnkgcHJvcGVydHkgYXNzaWdubWVudCBhbmQgc3dpdGNoZXMgdGhlIGdsb2JhbCBgYmFzZVNwZWVkRmFjdG9yYFxuICogcmlwcGxlIG9wdGlvbiB0byB0aGUgbmV3IGdsb2JhbCBhbmltYXRpb24gY29uZmlnLiBBbHNvIHVwZGF0ZXMgZXZlcnkgY2xhc3MgbWVtYmVyIGFzc2lnbm1lbnRcbiAqIHRoYXQgcmVmZXJzIHRvIE1hdFJpcHBsZSNzcGVlZEZhY3Rvci5cbiAqL1xuZXhwb3J0IGNsYXNzIFJpcHBsZVNwZWVkRmFjdG9yUnVsZSBleHRlbmRzIE1pZ3JhdGlvblJ1bGU8bnVsbD4ge1xuXG4gIC8vIE9ubHkgZW5hYmxlIHRoaXMgcnVsZSBpZiB0aGUgbWlncmF0aW9uIHRhcmdldHMgdmVyc2lvbiA3IGFzIHRoZSByaXBwbGVcbiAgLy8gc3BlZWQgZmFjdG9yIGhhcyBiZWVuIHJlbW92ZWQgaW4gdGhhdCB2ZXJzaW9uLlxuICBydWxlRW5hYmxlZCA9IHRoaXMudGFyZ2V0VmVyc2lvbiA9PT0gVGFyZ2V0VmVyc2lvbi5WNztcblxuICB2aXNpdE5vZGUobm9kZTogdHMuTm9kZSk6IHZvaWQge1xuICAgIGlmICh0cy5pc0JpbmFyeUV4cHJlc3Npb24obm9kZSkpIHtcbiAgICAgIHRoaXMuX3Zpc2l0QmluYXJ5RXhwcmVzc2lvbihub2RlKTtcbiAgICB9IGVsc2UgaWYgKHRzLmlzUHJvcGVydHlBc3NpZ25tZW50KG5vZGUpKSB7XG4gICAgICB0aGlzLl92aXNpdFByb3BlcnR5QXNzaWdubWVudChub2RlKTtcbiAgICB9XG4gIH1cblxuICB2aXNpdFRlbXBsYXRlKHRlbXBsYXRlOiBSZXNvbHZlZFJlc291cmNlKTogdm9pZCB7XG4gICAgbGV0IG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5fG51bGw7XG5cbiAgICB3aGlsZSAoKG1hdGNoID0gc3BlZWRGYWN0b3JOdW1iZXJSZWdleC5leGVjKHRlbXBsYXRlLmNvbnRlbnQpKSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgbmV3RW50ZXJEdXJhdGlvbiA9IGNvbnZlcnRTcGVlZEZhY3RvclRvRHVyYXRpb24ocGFyc2VGbG9hdChtYXRjaFsxXSkpO1xuXG4gICAgICB0aGlzLl9yZXBsYWNlVGV4dChcbiAgICAgICAgICB0ZW1wbGF0ZS5maWxlUGF0aCwgdGVtcGxhdGUuc3RhcnQgKyBtYXRjaC5pbmRleCEsIG1hdGNoWzBdLmxlbmd0aCxcbiAgICAgICAgICBgW21hdFJpcHBsZUFuaW1hdGlvbl09XCJ7ZW50ZXJEdXJhdGlvbjogJHtuZXdFbnRlckR1cmF0aW9ufX1cImApO1xuICAgIH1cblxuICAgIHdoaWxlICgobWF0Y2ggPSBzcGVlZEZhY3Rvck5vdFBhcnNlYWJsZS5leGVjKHRlbXBsYXRlLmNvbnRlbnQpKSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgbmV3RHVyYXRpb25FeHByZXNzaW9uID0gY3JlYXRlU3BlZWRGYWN0b3JDb252ZXJ0RXhwcmVzc2lvbihtYXRjaFsxXSk7XG4gICAgICB0aGlzLl9yZXBsYWNlVGV4dChcbiAgICAgICAgICB0ZW1wbGF0ZS5maWxlUGF0aCwgdGVtcGxhdGUuc3RhcnQgKyBtYXRjaC5pbmRleCEsIG1hdGNoWzBdLmxlbmd0aCxcbiAgICAgICAgICBgW21hdFJpcHBsZUFuaW1hdGlvbl09XCJ7ZW50ZXJEdXJhdGlvbjogKCR7bmV3RHVyYXRpb25FeHByZXNzaW9ufSl9XCJgKTtcbiAgICB9XG4gIH1cblxuICAvKiogU3dpdGNoZXMgYmluYXJ5IGV4cHJlc3Npb25zIChlLmcuIG15UmlwcGxlLnNwZWVkRmFjdG9yID0gMC41KSB0byB0aGUgbmV3IGFuaW1hdGlvbiBjb25maWcuICovXG4gIHByaXZhdGUgX3Zpc2l0QmluYXJ5RXhwcmVzc2lvbihleHByZXNzaW9uOiB0cy5CaW5hcnlFeHByZXNzaW9uKSB7XG4gICAgaWYgKCF0cy5pc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihleHByZXNzaW9uLmxlZnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTGVmdCBzaWRlIGV4cHJlc3Npb24gY29uc2lzdHMgb2YgdGFyZ2V0IG9iamVjdCBhbmQgcHJvcGVydHkgbmFtZSAoZS5nLiBteUluc3RhbmNlLnZhbClcbiAgICBjb25zdCBsZWZ0RXhwcmVzc2lvbiA9IGV4cHJlc3Npb24ubGVmdCBhcyB0cy5Qcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb247XG4gICAgY29uc3QgdGFyZ2V0VHlwZU5vZGUgPSB0aGlzLnR5cGVDaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKGxlZnRFeHByZXNzaW9uLmV4cHJlc3Npb24pO1xuXG4gICAgaWYgKCF0YXJnZXRUeXBlTm9kZS5zeW1ib2wpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRUeXBlTmFtZSA9IHRhcmdldFR5cGVOb2RlLnN5bWJvbC5nZXROYW1lKCk7XG4gICAgY29uc3QgcHJvcGVydHlOYW1lID0gbGVmdEV4cHJlc3Npb24ubmFtZS5nZXRUZXh0KCk7XG4gICAgY29uc3QgZmlsZVBhdGggPSBsZWZ0RXhwcmVzc2lvbi5nZXRTb3VyY2VGaWxlKCkuZmlsZU5hbWU7XG5cbiAgICBpZiAodGFyZ2V0VHlwZU5hbWUgPT09ICdNYXRSaXBwbGUnICYmIHByb3BlcnR5TmFtZSA9PT0gJ3NwZWVkRmFjdG9yJykge1xuICAgICAgaWYgKHRzLmlzTnVtZXJpY0xpdGVyYWwoZXhwcmVzc2lvbi5yaWdodCkpIHtcbiAgICAgICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gcGFyc2VGbG9hdChleHByZXNzaW9uLnJpZ2h0LnRleHQpO1xuICAgICAgICBjb25zdCBuZXdFbnRlckR1cmF0aW9uVmFsdWUgPSBjb252ZXJ0U3BlZWRGYWN0b3JUb0R1cmF0aW9uKG51bWVyaWNWYWx1ZSk7XG5cbiAgICAgICAgLy8gUmVwbGFjZSB0aGUgYHNwZWVkRmFjdG9yYCBwcm9wZXJ0eSBuYW1lIHdpdGggYGFuaW1hdGlvbmAuXG4gICAgICAgIHRoaXMuX3JlcGxhY2VUZXh0KFxuICAgICAgICAgICAgZmlsZVBhdGgsIGxlZnRFeHByZXNzaW9uLm5hbWUuZ2V0U3RhcnQoKSwgbGVmdEV4cHJlc3Npb24ubmFtZS5nZXRXaWR0aCgpLCAnYW5pbWF0aW9uJyk7XG5cbiAgICAgICAgLy8gUmVwbGFjZSB0aGUgdmFsdWUgYXNzaWdubWVudCB3aXRoIHRoZSBuZXcgYW5pbWF0aW9uIGNvbmZpZy5cbiAgICAgICAgdGhpcy5fcmVwbGFjZVRleHQoXG4gICAgICAgICAgICBmaWxlUGF0aCwgZXhwcmVzc2lvbi5yaWdodC5nZXRTdGFydCgpLCBleHByZXNzaW9uLnJpZ2h0LmdldFdpZHRoKCksXG4gICAgICAgICAgICBge2VudGVyRHVyYXRpb246ICR7bmV3RW50ZXJEdXJhdGlvblZhbHVlfX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEhhbmRsZSB0aGUgcmlnaHQgZXhwcmVzc2lvbiBkaWZmZXJlbnRseSBpZiB0aGUgcHJldmlvdXMgc3BlZWQgZmFjdG9yIHZhbHVlIGNhbid0XG4gICAgICAgIC8vIGJlIHJlc29sdmVkIHN0YXRpY2FsbHkuIEluIHRoYXQgY2FzZSwgd2UganVzdCBjcmVhdGUgYSBUeXBlU2NyaXB0IGV4cHJlc3Npb24gdGhhdFxuICAgICAgICAvLyBjYWxjdWxhdGVzIHRoZSBleHBsaWNpdCBkdXJhdGlvbiBiYXNlZCBvbiB0aGUgbm9uLXN0YXRpYyBzcGVlZCBmYWN0b3IgZXhwcmVzc2lvbi5cbiAgICAgICAgY29uc3QgbmV3RXhwcmVzc2lvbiA9IGNyZWF0ZVNwZWVkRmFjdG9yQ29udmVydEV4cHJlc3Npb24oZXhwcmVzc2lvbi5yaWdodC5nZXRUZXh0KCkpO1xuXG4gICAgICAgIC8vIFJlcGxhY2UgdGhlIGBzcGVlZEZhY3RvcmAgcHJvcGVydHkgbmFtZSB3aXRoIGBhbmltYXRpb25gLlxuICAgICAgICB0aGlzLl9yZXBsYWNlVGV4dChcbiAgICAgICAgICAgIGZpbGVQYXRoLCBsZWZ0RXhwcmVzc2lvbi5uYW1lLmdldFN0YXJ0KCksIGxlZnRFeHByZXNzaW9uLm5hbWUuZ2V0V2lkdGgoKSwgJ2FuaW1hdGlvbicpO1xuXG4gICAgICAgIC8vIFJlcGxhY2UgdGhlIHZhbHVlIGFzc2lnbm1lbnQgd2l0aCB0aGUgbmV3IGFuaW1hdGlvbiBjb25maWcgYW5kIHJlbW92ZSBUT0RPLlxuICAgICAgICB0aGlzLl9yZXBsYWNlVGV4dChcbiAgICAgICAgICAgIGZpbGVQYXRoLCBleHByZXNzaW9uLnJpZ2h0LmdldFN0YXJ0KCksIGV4cHJlc3Npb24ucmlnaHQuZ2V0V2lkdGgoKSxcbiAgICAgICAgICAgIGAvKiogJHtyZW1vdmVOb3RlfSAqLyB7ZW50ZXJEdXJhdGlvbjogJHtuZXdFeHByZXNzaW9ufX1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3dpdGNoZXMgdGhlIGdsb2JhbCBvcHRpb24gYGJhc2VTcGVlZEZhY3RvcmAgdG8gdGhlIG5ldyBhbmltYXRpb24gY29uZmlnLiBGb3IgdGhpc1xuICAgKiB3ZSBhc3N1bWUgdGhhdCB0aGUgYGJhc2VTcGVlZEZhY3RvcmAgaXMgbm90IHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBpbmRpdmlkdWFsXG4gICAqIHNwZWVkIGZhY3RvcnMuXG4gICAqL1xuICBwcml2YXRlIF92aXNpdFByb3BlcnR5QXNzaWdubWVudChhc3NpZ25tZW50OiB0cy5Qcm9wZXJ0eUFzc2lnbm1lbnQpIHtcbiAgICAvLyBGb3Igc3dpdGNoaW5nIHRoZSBgYmFzZVNwZWVkRmFjdG9yYCBnbG9iYWwgb3B0aW9uIHdlIGV4cGVjdCB0aGUgcHJvcGVydHkgYXNzaWdubWVudFxuICAgIC8vIHRvIGJlIGluc2lkZSBvZiBhIG5vcm1hbCBvYmplY3QgbGl0ZXJhbC4gQ3VzdG9tIHJpcHBsZSBnbG9iYWwgb3B0aW9ucyBjYW5ub3QgYmVcbiAgICAvLyB3aXRjaGVkIGF1dG9tYXRpY2FsbHkuXG4gICAgaWYgKCF0cy5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKGFzc2lnbm1lbnQucGFyZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFRoZSBhc3NpZ25tZW50IGNvbnNpc3RzIG9mIGEgbmFtZSAoa2V5KSBhbmQgaW5pdGlhbGl6ZXIgKHZhbHVlKS5cbiAgICBpZiAoYXNzaWdubWVudC5uYW1lLmdldFRleHQoKSAhPT0gJ2Jhc2VTcGVlZEZhY3RvcicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBXZSBjb3VsZCB0ZWNobmljYWxseSBsYXppbHkgY2hlY2sgZm9yIHRoZSBNQVRfUklQUExFX0dMT0JBTF9PUFRJT05TIGluamVjdGlvbiB0b2tlbiB0b1xuICAgIC8vIGJlIHByZXNlbnQsIGJ1dCBpdCdzIG5vdCByaWdodCB0byBhc3N1bWUgdGhhdCBldmVyeW9uZSBzZXRzIHRoZSByaXBwbGUgZ2xvYmFsIG9wdGlvbnNcbiAgICAvLyBpbW1lZGlhdGVseSBpbiB0aGUgcHJvdmlkZXIgb2JqZWN0IChlLmcuIGl0IGNhbiBoYXBwZW4gdGhhdCBzb21lb25lIGp1c3QgaW1wb3J0cyB0aGVcbiAgICAvLyBjb25maWcgZnJvbSBhIHNlcGFyYXRlIGZpbGUpLlxuXG4gICAgY29uc3Qge2luaXRpYWxpemVyLCBuYW1lfSA9IGFzc2lnbm1lbnQ7XG4gICAgY29uc3QgZmlsZVBhdGggPSBhc3NpZ25tZW50LmdldFNvdXJjZUZpbGUoKS5maWxlTmFtZTtcblxuICAgIGlmICh0cy5pc051bWVyaWNMaXRlcmFsKGluaXRpYWxpemVyKSkge1xuICAgICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gcGFyc2VGbG9hdChpbml0aWFsaXplci50ZXh0KTtcbiAgICAgIGNvbnN0IG5ld0VudGVyRHVyYXRpb25WYWx1ZSA9IGNvbnZlcnRTcGVlZEZhY3RvclRvRHVyYXRpb24obnVtZXJpY1ZhbHVlKTtcblxuICAgICAgLy8gUmVwbGFjZSB0aGUgYGJhc2VTcGVlZEZhY3RvcmAgcHJvcGVydHkgbmFtZSB3aXRoIGBhbmltYXRpb25gLlxuICAgICAgdGhpcy5fcmVwbGFjZVRleHQoZmlsZVBhdGgsIG5hbWUuZ2V0U3RhcnQoKSwgbmFtZS5nZXRXaWR0aCgpLCAnYW5pbWF0aW9uJyk7XG4gICAgICAvLyBSZXBsYWNlIHRoZSB2YWx1ZSBhc3NpZ25tZW50IGluaXRpYWxpemVyIHdpdGggdGhlIG5ldyBhbmltYXRpb24gY29uZmlnLlxuICAgICAgdGhpcy5fcmVwbGFjZVRleHQoXG4gICAgICAgICAgZmlsZVBhdGgsIGluaXRpYWxpemVyLmdldFN0YXJ0KCksIGluaXRpYWxpemVyLmdldFdpZHRoKCksXG4gICAgICAgICAgYHtlbnRlckR1cmF0aW9uOiAke25ld0VudGVyRHVyYXRpb25WYWx1ZX19YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEhhbmRsZSB0aGUgcmlnaHQgZXhwcmVzc2lvbiBkaWZmZXJlbnRseSBpZiB0aGUgcHJldmlvdXMgc3BlZWQgZmFjdG9yIHZhbHVlIGNhbid0XG4gICAgICAvLyBiZSByZXNvbHZlZCBzdGF0aWNhbGx5LiBJbiB0aGF0IGNhc2UsIHdlIGp1c3QgY3JlYXRlIGEgVHlwZVNjcmlwdCBleHByZXNzaW9uIHRoYXRcbiAgICAgIC8vIGNhbGN1bGF0ZXMgdGhlIGV4cGxpY2l0IGR1cmF0aW9uIGJhc2VkIG9uIHRoZSBub24tc3RhdGljIHNwZWVkIGZhY3RvciBleHByZXNzaW9uLlxuICAgICAgY29uc3QgbmV3RXhwcmVzc2lvbiA9IGNyZWF0ZVNwZWVkRmFjdG9yQ29udmVydEV4cHJlc3Npb24oaW5pdGlhbGl6ZXIuZ2V0VGV4dCgpKTtcblxuICAgICAgLy8gUmVwbGFjZSB0aGUgYGJhc2VTcGVlZEZhY3RvcmAgcHJvcGVydHkgbmFtZSB3aXRoIGBhbmltYXRpb25gLlxuICAgICAgdGhpcy5fcmVwbGFjZVRleHQoZmlsZVBhdGgsIG5hbWUuZ2V0U3RhcnQoKSwgbmFtZS5nZXRXaWR0aCgpLCAnYW5pbWF0aW9uJyk7XG5cbiAgICAgIC8vIFJlcGxhY2UgdGhlIHZhbHVlIGFzc2lnbm1lbnQgd2l0aCB0aGUgbmV3IGFuaW1hdGlvbiBjb25maWcgYW5kIHJlbW92ZSBUT0RPLlxuICAgICAgdGhpcy5fcmVwbGFjZVRleHQoXG4gICAgICAgICAgZmlsZVBhdGgsIGluaXRpYWxpemVyLmdldFN0YXJ0KCksIGluaXRpYWxpemVyLmdldFdpZHRoKCksXG4gICAgICAgICAgYC8qKiAke3JlbW92ZU5vdGV9ICovIHtlbnRlckR1cmF0aW9uOiAke25ld0V4cHJlc3Npb259fWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3JlcGxhY2VUZXh0KGZpbGVQYXRoOiBzdHJpbmcsIHN0YXJ0OiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIG5ld1RleHQ6IHN0cmluZykge1xuICAgIGNvbnN0IHJlY29yZGVyID0gdGhpcy5nZXRVcGRhdGVSZWNvcmRlcihmaWxlUGF0aCk7XG4gICAgcmVjb3JkZXIucmVtb3ZlKHN0YXJ0LCB3aWR0aCk7XG4gICAgcmVjb3JkZXIuaW5zZXJ0UmlnaHQoc3RhcnQsIG5ld1RleHQpO1xuICB9XG59XG4iXX0=
|