mtrl 0.3.8 → 0.4.0
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/dist/LICENSE +21 -0
- package/dist/README.md +324 -0
- package/dist/components/badge/api.d.ts +48 -0
- package/{src/components/badge/badge.ts → dist/components/badge/badge.d.ts} +14 -57
- package/dist/components/badge/config.d.ts +79 -0
- package/dist/components/badge/constants.d.ts +35 -0
- package/dist/components/badge/features.d.ts +36 -0
- package/dist/components/badge/index.d.ts +8 -0
- package/dist/components/badge/types.d.ts +256 -0
- package/dist/components/bottom-app-bar/bottom-app-bar.d.ts +12 -0
- package/dist/components/bottom-app-bar/config.d.ts +16 -0
- package/dist/components/bottom-app-bar/constants.d.ts +22 -0
- package/{src/components/bottom-app-bar/index.ts → dist/components/bottom-app-bar/index.d.ts} +0 -9
- package/dist/components/bottom-app-bar/types.d.ts +96 -0
- package/dist/components/button/api.d.ts +47 -0
- package/dist/components/button/button.d.ts +25 -0
- package/dist/components/button/config.d.ts +59 -0
- package/dist/components/button/constants.d.ts +43 -0
- package/dist/components/button/index.d.ts +6 -0
- package/dist/components/button/types.d.ts +265 -0
- package/dist/components/card/api.d.ts +11 -0
- package/{src/components/card/card.ts → dist/components/card/card.d.ts} +10 -58
- package/dist/components/card/config.d.ts +105 -0
- package/dist/components/card/constants.d.ts +85 -0
- package/dist/components/card/content.d.ts +92 -0
- package/dist/components/card/features.d.ts +131 -0
- package/{src/components/card/index.ts → dist/components/card/index.d.ts} +13 -74
- package/dist/components/card/types.d.ts +471 -0
- package/dist/components/carousel/api.d.ts +33 -0
- package/dist/components/carousel/carousel.d.ts +75 -0
- package/dist/components/carousel/config.d.ts +45 -0
- package/dist/components/carousel/constants.d.ts +165 -0
- package/dist/components/carousel/features/drag.d.ts +8 -0
- package/{src/components/carousel/features/index.ts → dist/components/carousel/features/index.d.ts} +1 -4
- package/dist/components/carousel/features/slides.d.ts +8 -0
- package/{src/components/carousel/index.ts → dist/components/carousel/index.d.ts} +10 -29
- package/dist/components/carousel/types.d.ts +276 -0
- package/dist/components/checkbox/api.d.ts +7 -0
- package/dist/components/checkbox/checkbox.d.ts +65 -0
- package/dist/components/checkbox/config.d.ts +44 -0
- package/dist/components/checkbox/constants.d.ts +63 -0
- package/{src/components/checkbox/index.ts → dist/components/checkbox/index.d.ts} +8 -25
- package/dist/components/checkbox/types.d.ts +242 -0
- package/dist/components/chips/api.d.ts +49 -0
- package/dist/components/chips/chip/api.d.ts +23 -0
- package/dist/components/chips/chip/chip.d.ts +8 -0
- package/dist/components/chips/chip/config.d.ts +57 -0
- package/dist/components/chips/chip/constants.d.ts +38 -0
- package/dist/components/chips/chip/index.d.ts +2 -0
- package/dist/components/chips/chip/types.d.ts +11 -0
- package/dist/components/chips/chips.d.ts +17 -0
- package/dist/components/chips/config.d.ts +67 -0
- package/dist/components/chips/constants.d.ts +46 -0
- package/dist/components/chips/features/chip-items.d.ts +8 -0
- package/dist/components/chips/features/container.d.ts +8 -0
- package/dist/components/chips/features/controller.d.ts +9 -0
- package/{src/components/chips/features/index.ts → dist/components/chips/features/index.d.ts} +1 -2
- package/dist/components/chips/features/label.d.ts +8 -0
- package/dist/components/chips/index.d.ts +4 -0
- package/dist/components/chips/schema.d.ts +34 -0
- package/dist/components/chips/types.d.ts +398 -0
- package/dist/components/datepicker/api.d.ts +9 -0
- package/dist/components/datepicker/config.d.ts +79 -0
- package/dist/components/datepicker/constants.d.ts +97 -0
- package/dist/components/datepicker/datepicker.d.ts +8 -0
- package/dist/components/datepicker/index.d.ts +3 -0
- package/dist/components/datepicker/render.d.ts +43 -0
- package/dist/components/datepicker/types.d.ts +321 -0
- package/dist/components/datepicker/utils.d.ts +84 -0
- package/dist/components/dialog/api.d.ts +59 -0
- package/dist/components/dialog/config.d.ts +91 -0
- package/dist/components/dialog/constants.d.ts +116 -0
- package/{src/components/dialog/dialog.ts → dist/components/dialog/dialog.d.ts} +16 -69
- package/dist/components/dialog/features.d.ts +37 -0
- package/dist/components/dialog/index.d.ts +14 -0
- package/dist/components/dialog/types.d.ts +483 -0
- package/dist/components/divider/config.d.ts +143 -0
- package/dist/components/divider/constants.d.ts +45 -0
- package/{src/components/divider/divider.ts → dist/components/divider/divider.d.ts} +9 -37
- package/dist/components/divider/features.d.ts +50 -0
- package/{src/components/divider/index.ts → dist/components/divider/index.d.ts} +6 -12
- package/dist/components/divider/types.d.ts +124 -0
- package/dist/components/extended-fab/api.d.ts +83 -0
- package/dist/components/extended-fab/config.d.ts +75 -0
- package/dist/components/extended-fab/constants.d.ts +82 -0
- package/dist/components/extended-fab/extended-fab.d.ts +61 -0
- package/{src/components/extended-fab/index.ts → dist/components/extended-fab/index.d.ts} +6 -15
- package/dist/components/extended-fab/types.d.ts +703 -0
- package/dist/components/fab/api.d.ts +64 -0
- package/dist/components/fab/config.d.ts +71 -0
- package/dist/components/fab/constants.d.ts +75 -0
- package/{src/components/fab/fab.ts → dist/components/fab/fab.d.ts} +10 -46
- package/{src/components/fab/index.ts → dist/components/fab/index.d.ts} +6 -15
- package/dist/components/fab/types.d.ts +577 -0
- package/dist/components/index.d.ts +76 -0
- package/dist/components/list/api.d.ts +106 -0
- package/dist/components/list/config.d.ts +61 -0
- package/dist/components/list/constants.d.ts +76 -0
- package/dist/components/list/features/index.d.ts +2 -0
- package/dist/components/list/features/listmanager.d.ts +9 -0
- package/dist/components/list/features/selection.d.ts +9 -0
- package/dist/components/list/index.d.ts +12 -0
- package/dist/components/list/list.d.ts +11 -0
- package/dist/components/list/types.d.ts +294 -0
- package/dist/components/menu/api.d.ts +58 -0
- package/dist/components/menu/config.d.ts +78 -0
- package/dist/components/menu/constants.d.ts +106 -0
- package/dist/components/menu/features/controller.d.ts +10 -0
- package/dist/components/menu/features/index.d.ts +6 -0
- package/dist/components/menu/features/keyboard.d.ts +26 -0
- package/dist/components/menu/features/opener.d.ts +10 -0
- package/dist/components/menu/features/position.d.ts +18 -0
- package/dist/components/menu/features/submenu.d.ts +10 -0
- package/{src/components/menu/index.ts → dist/components/menu/index.d.ts} +11 -27
- package/dist/components/menu/menu.d.ts +29 -0
- package/dist/components/menu/types.d.ts +338 -0
- package/dist/components/navigation/api.d.ts +8 -0
- package/dist/components/navigation/config.d.ts +34 -0
- package/dist/components/navigation/constants.d.ts +137 -0
- package/dist/components/navigation/features/controller.d.ts +30 -0
- package/dist/components/navigation/features/items.d.ts +32 -0
- package/dist/components/navigation/index.d.ts +3 -0
- package/dist/components/navigation/nav-item.d.ts +30 -0
- package/dist/components/navigation/navigation.d.ts +8 -0
- package/dist/components/navigation/system/core.d.ts +72 -0
- package/dist/components/navigation/system/events.d.ts +35 -0
- package/dist/components/navigation/system/index.d.ts +10 -0
- package/dist/components/navigation/system/mobile.d.ts +52 -0
- package/dist/components/navigation/system/state.d.ts +22 -0
- package/dist/components/navigation/system/types.d.ts +305 -0
- package/dist/components/navigation/types.d.ts +216 -0
- package/dist/components/progress/api.d.ts +46 -0
- package/dist/components/progress/config.d.ts +72 -0
- package/dist/components/progress/constants.d.ts +139 -0
- package/dist/components/progress/features/canvas.d.ts +32 -0
- package/dist/components/progress/features/circular.d.ts +9 -0
- package/dist/components/progress/features/index.d.ts +8 -0
- package/dist/components/progress/features/linear.d.ts +9 -0
- package/dist/components/progress/features/resize-observer.d.ts +5 -0
- package/dist/components/progress/features/state.d.ts +38 -0
- package/dist/components/progress/features.d.ts +40 -0
- package/dist/components/progress/index.d.ts +3 -0
- package/dist/components/progress/progress.d.ts +24 -0
- package/dist/components/progress/types.d.ts +272 -0
- package/dist/components/radios/api.d.ts +37 -0
- package/dist/components/radios/config.d.ts +42 -0
- package/dist/components/radios/constants.d.ts +114 -0
- package/dist/components/radios/index.d.ts +3 -0
- package/dist/components/radios/radio.d.ts +8 -0
- package/dist/components/radios/radios.d.ts +8 -0
- package/dist/components/radios/types.d.ts +189 -0
- package/dist/components/search/api.d.ts +55 -0
- package/dist/components/search/config.d.ts +73 -0
- package/dist/components/search/constants.d.ts +128 -0
- package/{src/components/search/features/index.ts → dist/components/search/features/index.d.ts} +1 -2
- package/dist/components/search/features/search.d.ts +7 -0
- package/dist/components/search/features/states.d.ts +8 -0
- package/dist/components/search/features/structure.d.ts +7 -0
- package/dist/components/search/index.d.ts +3 -0
- package/dist/components/search/search.d.ts +8 -0
- package/dist/components/search/types.d.ts +132 -0
- package/dist/components/segmented-button/config.d.ts +65 -0
- package/dist/components/segmented-button/constants.d.ts +85 -0
- package/dist/components/segmented-button/index.d.ts +4 -0
- package/dist/components/segmented-button/segment.d.ts +15 -0
- package/dist/components/segmented-button/segmented-button.d.ts +49 -0
- package/dist/components/segmented-button/types.d.ts +257 -0
- package/dist/components/select/api.d.ts +8 -0
- package/dist/components/select/config.d.ts +18 -0
- package/dist/components/select/constants.d.ts +113 -0
- package/dist/components/select/features.d.ts +13 -0
- package/{src/components/select/index.ts → dist/components/select/index.d.ts} +7 -20
- package/dist/components/select/select.d.ts +36 -0
- package/dist/components/select/types.d.ts +302 -0
- package/dist/components/sheet/api.d.ts +37 -0
- package/dist/components/sheet/config.d.ts +42 -0
- package/dist/components/sheet/constants.d.ts +136 -0
- package/dist/components/sheet/features/content.d.ts +6 -0
- package/dist/components/sheet/features/gestures.d.ts +6 -0
- package/{src/components/sheet/features/index.ts → dist/components/sheet/features/index.d.ts} +1 -2
- package/dist/components/sheet/features/position.d.ts +7 -0
- package/dist/components/sheet/features/state.d.ts +6 -0
- package/dist/components/sheet/features/title.d.ts +6 -0
- package/dist/components/sheet/index.d.ts +3 -0
- package/dist/components/sheet/sheet.d.ts +8 -0
- package/dist/components/sheet/types.d.ts +250 -0
- package/dist/components/slider/api.d.ts +57 -0
- package/dist/components/slider/config.d.ts +75 -0
- package/dist/components/slider/constants.d.ts +138 -0
- package/dist/components/slider/features/controller.d.ts +9 -0
- package/dist/components/slider/features/handlers.d.ts +25 -0
- package/dist/components/slider/features/index.d.ts +3 -0
- package/dist/components/slider/features/range.d.ts +8 -0
- package/dist/components/slider/features/states.d.ts +9 -0
- package/dist/components/slider/index.d.ts +3 -0
- package/dist/components/slider/schema.d.ts +108 -0
- package/dist/components/slider/slider.d.ts +18 -0
- package/dist/components/slider/types.d.ts +170 -0
- package/dist/components/snackbar/api.d.ts +7 -0
- package/dist/components/snackbar/config.d.ts +55 -0
- package/dist/components/snackbar/constants.d.ts +88 -0
- package/dist/components/snackbar/features.d.ts +13 -0
- package/dist/components/snackbar/index.d.ts +3 -0
- package/dist/components/snackbar/position.d.ts +15 -0
- package/dist/components/snackbar/queue.d.ts +7 -0
- package/dist/components/snackbar/snackbar.d.ts +8 -0
- package/dist/components/snackbar/types.d.ts +172 -0
- package/dist/components/switch/api.d.ts +7 -0
- package/dist/components/switch/config.d.ts +34 -0
- package/dist/components/switch/constants.d.ts +88 -0
- package/dist/components/switch/features.d.ts +59 -0
- package/dist/components/switch/index.d.ts +4 -0
- package/dist/components/switch/switch.d.ts +8 -0
- package/dist/components/switch/types.d.ts +131 -0
- package/dist/components/tabs/api.d.ts +52 -0
- package/dist/components/tabs/config.d.ts +39 -0
- package/dist/components/tabs/constants.d.ts +142 -0
- package/dist/components/tabs/features.d.ts +133 -0
- package/dist/components/tabs/index.d.ts +11 -0
- package/dist/components/tabs/indicator.d.ts +49 -0
- package/dist/components/tabs/responsive.d.ts +38 -0
- package/dist/components/tabs/scroll-indicators.d.ts +18 -0
- package/dist/components/tabs/state.d.ts +53 -0
- package/dist/components/tabs/tab-api.d.ts +43 -0
- package/dist/components/tabs/tab.d.ts +7 -0
- package/dist/components/tabs/tabs.d.ts +27 -0
- package/dist/components/tabs/types.d.ts +390 -0
- package/dist/components/tabs/utils.d.ts +17 -0
- package/dist/components/textfield/api.d.ts +8 -0
- package/dist/components/textfield/config.d.ts +34 -0
- package/dist/components/textfield/constants.d.ts +148 -0
- package/{src/components/textfield/features/index.ts → dist/components/textfield/features/index.d.ts} +1 -6
- package/dist/components/textfield/features/leading-icon.d.ts +55 -0
- package/dist/components/textfield/features/placement.d.ts +28 -0
- package/dist/components/textfield/features/prefix-text.d.ts +54 -0
- package/dist/components/textfield/features/suffix-text.d.ts +54 -0
- package/dist/components/textfield/features/supporting-text.d.ts +59 -0
- package/dist/components/textfield/features/trailing-icon.d.ts +55 -0
- package/dist/components/textfield/index.d.ts +3 -0
- package/dist/components/textfield/textfield.d.ts +36 -0
- package/dist/components/textfield/types.d.ts +217 -0
- package/dist/components/timepicker/api.d.ts +24 -0
- package/dist/components/timepicker/clockdial.d.ts +34 -0
- package/dist/components/timepicker/config.d.ts +75 -0
- package/dist/components/timepicker/constants.d.ts +266 -0
- package/dist/components/timepicker/index.d.ts +4 -0
- package/dist/components/timepicker/render.d.ts +9 -0
- package/dist/components/timepicker/timepicker.d.ts +8 -0
- package/dist/components/timepicker/types.d.ts +284 -0
- package/dist/components/timepicker/utils.d.ts +74 -0
- package/dist/components/tooltip/api.d.ts +18 -0
- package/dist/components/tooltip/config.d.ts +38 -0
- package/dist/components/tooltip/constants.d.ts +108 -0
- package/dist/components/tooltip/index.d.ts +3 -0
- package/dist/components/tooltip/tooltip.d.ts +8 -0
- package/dist/components/tooltip/types.d.ts +188 -0
- package/dist/components/top-app-bar/config.d.ts +16 -0
- package/dist/components/top-app-bar/constants.d.ts +74 -0
- package/{src/components/top-app-bar/index.ts → dist/components/top-app-bar/index.d.ts} +2 -4
- package/dist/components/top-app-bar/top-app-bar.d.ts +68 -0
- package/dist/components/top-app-bar/types.d.ts +118 -0
- package/dist/constants.d.ts +30 -0
- package/dist/core/canvas/index.d.ts +5 -0
- package/dist/core/canvas/resize.d.ts +14 -0
- package/dist/core/collection/adapters/base.d.ts +47 -0
- package/dist/core/collection/adapters/route.d.ts +149 -0
- package/dist/core/collection/collection.d.ts +131 -0
- package/dist/core/collection/index.d.ts +10 -0
- package/dist/core/collection/list-manager/config.d.ts +29 -0
- package/dist/core/collection/list-manager/dom-elements.d.ts +30 -0
- package/dist/core/collection/list-manager/index.d.ts +61 -0
- package/dist/core/collection/list-manager/item-measurement.d.ts +91 -0
- package/dist/core/collection/list-manager/renderer.d.ts +31 -0
- package/dist/core/collection/list-manager/scroll-tracker.d.ts +20 -0
- package/dist/core/collection/list-manager/state.d.ts +60 -0
- package/dist/core/collection/list-manager/types.d.ts +361 -0
- package/dist/core/collection/list-manager/utils/recycling.d.ts +34 -0
- package/dist/core/collection/list-manager/utils/visibility.d.ts +45 -0
- package/dist/core/compose/base.d.ts +31 -0
- package/dist/core/compose/component.d.ts +61 -0
- package/dist/core/compose/features/badge.d.ts +43 -0
- package/dist/core/compose/features/checkable.d.ts +59 -0
- package/dist/core/compose/features/constants.d.ts +45 -0
- package/dist/core/compose/features/debounce.d.ts +84 -0
- package/dist/core/compose/features/disabled.d.ts +47 -0
- package/dist/core/compose/features/events.d.ts +37 -0
- package/dist/core/compose/features/gestures/longpress.d.ts +85 -0
- package/dist/core/compose/features/gestures/pan.d.ts +108 -0
- package/dist/core/compose/features/gestures/pinch.d.ts +111 -0
- package/dist/core/compose/features/gestures/rotate.d.ts +111 -0
- package/dist/core/compose/features/gestures/swipe.d.ts +149 -0
- package/dist/core/compose/features/gestures/tap.d.ts +79 -0
- package/dist/core/compose/features/gestures.d.ts +86 -0
- package/dist/core/compose/features/icon.d.ts +71 -0
- package/{src/core/compose/features/index.ts → dist/core/compose/features/index.d.ts} +7 -8
- package/dist/core/compose/features/input.d.ts +71 -0
- package/dist/core/compose/features/lifecycle.d.ts +61 -0
- package/dist/core/compose/features/position.d.ts +51 -0
- package/dist/core/compose/features/ripple.d.ts +61 -0
- package/dist/core/compose/features/size.d.ts +17 -0
- package/dist/core/compose/features/style.d.ts +16 -0
- package/dist/core/compose/features/text.d.ts +63 -0
- package/dist/core/compose/features/textinput.d.ts +93 -0
- package/dist/core/compose/features/textlabel.d.ts +57 -0
- package/dist/core/compose/features/throttle.d.ts +75 -0
- package/dist/core/compose/features/track.d.ts +42 -0
- package/dist/core/compose/features/variant.d.ts +17 -0
- package/dist/core/compose/features/withEvents.d.ts +45 -0
- package/dist/core/compose/index.d.ts +17 -0
- package/{src/core/compose/pipe.ts → dist/core/compose/pipe.d.ts} +4 -20
- package/dist/core/compose/utils/type-guards.d.ts +27 -0
- package/dist/core/composition/features/dom.d.ts +19 -0
- package/dist/core/composition/features/icon.d.ts +45 -0
- package/{src/core/composition/features/index.ts → dist/core/composition/features/index.d.ts} +1 -6
- package/dist/core/composition/features/label.d.ts +49 -0
- package/{src/core/composition/features/layout.ts → dist/core/composition/features/layout.d.ts} +8 -24
- package/{src/core/composition/index.ts → dist/core/composition/index.d.ts} +4 -14
- package/{src/core/config/component-config.ts → dist/core/config/component.d.ts} +35 -83
- package/dist/core/config.d.ts +130 -0
- package/dist/core/dom/attributes.d.ts +20 -0
- package/dist/core/dom/classes.d.ts +52 -0
- package/dist/core/dom/create.d.ts +154 -0
- package/dist/core/dom/events.d.ts +69 -0
- package/dist/core/dom/index.d.ts +6 -0
- package/dist/core/dom/utils.d.ts +42 -0
- package/dist/core/gestures/index.d.ts +12 -0
- package/dist/core/gestures/longpress.d.ts +23 -0
- package/dist/core/gestures/manager.d.ts +14 -0
- package/dist/core/gestures/pan.d.ts +12 -0
- package/dist/core/gestures/pinch.d.ts +14 -0
- package/dist/core/gestures/rotate.d.ts +14 -0
- package/dist/core/gestures/swipe.d.ts +20 -0
- package/dist/core/gestures/tap.d.ts +12 -0
- package/dist/core/gestures/types.d.ts +320 -0
- package/dist/core/gestures/utils.d.ts +57 -0
- package/dist/core/index.d.ts +29 -0
- package/dist/core/layout/array.d.ts +15 -0
- package/dist/core/layout/config.d.ts +32 -0
- package/dist/core/layout/create.d.ts +14 -0
- package/dist/core/layout/index.d.ts +13 -0
- package/dist/core/layout/jsx.d.ts +13 -0
- package/dist/core/layout/object.d.ts +14 -0
- package/dist/core/layout/processor.d.ts +28 -0
- package/dist/core/layout/result.d.ts +12 -0
- package/dist/core/layout/template.d.ts +12 -0
- package/dist/core/layout/types.d.ts +137 -0
- package/dist/core/layout/utils.d.ts +38 -0
- package/dist/core/state/disabled.d.ts +32 -0
- package/dist/core/state/emitter.d.ts +40 -0
- package/dist/core/state/events.d.ts +36 -0
- package/{src/core/state/index.ts → dist/core/state/index.d.ts} +1 -7
- package/dist/core/state/lifecycle.d.ts +57 -0
- package/dist/core/state/store.d.ts +82 -0
- package/dist/core/utils/background.d.ts +40 -0
- package/dist/core/utils/index.d.ts +18 -0
- package/dist/core/utils/mobile.d.ts +54 -0
- package/dist/core/utils/object.d.ts +13 -0
- package/dist/core/utils/performance.d.ts +79 -0
- package/dist/core/utils/theme.d.ts +38 -0
- package/dist/core/utils/validate.d.ts +73 -0
- package/dist/index.cjs +64 -0
- package/dist/index.cjs.map +291 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +53 -14854
- package/dist/index.js.map +291 -0
- package/dist/package.json +39 -0
- package/dist/styles.css +7 -0
- package/package.json +23 -4
- package/.env +0 -15
- package/.typedocignore +0 -11
- package/CONTRIBUTING.md +0 -218
- package/DOCS.md +0 -153
- package/TESTING.md +0 -214
- package/git-user-stats.js +0 -545
- package/index.ts +0 -10
- package/src/components/badge/api.ts +0 -313
- package/src/components/badge/config.ts +0 -153
- package/src/components/badge/features.ts +0 -194
- package/src/components/badge/index.ts +0 -90
- package/src/components/badge/types.ts +0 -279
- package/src/components/bottom-app-bar/bottom-app-bar.ts +0 -154
- package/src/components/bottom-app-bar/config.ts +0 -29
- package/src/components/bottom-app-bar/types.ts +0 -114
- package/src/components/button/api.ts +0 -172
- package/src/components/button/button.ts +0 -112
- package/src/components/button/config.ts +0 -96
- package/src/components/button/index.ts +0 -37
- package/src/components/button/types.ts +0 -290
- package/src/components/card/api.ts +0 -222
- package/src/components/card/config.ts +0 -304
- package/src/components/card/content.ts +0 -343
- package/src/components/card/features.ts +0 -407
- package/src/components/card/types.ts +0 -497
- package/src/components/carousel/api.ts +0 -147
- package/src/components/carousel/carousel.ts +0 -242
- package/src/components/carousel/config.ts +0 -91
- package/src/components/carousel/constants.ts +0 -181
- package/src/components/carousel/features/drag.ts +0 -388
- package/src/components/carousel/features/slides.ts +0 -682
- package/src/components/carousel/types.ts +0 -327
- package/src/components/checkbox/api.ts +0 -82
- package/src/components/checkbox/checkbox.ts +0 -142
- package/src/components/checkbox/config.ts +0 -89
- package/src/components/checkbox/types.ts +0 -342
- package/src/components/chips/api.ts +0 -194
- package/src/components/chips/chip/api.ts +0 -233
- package/src/components/chips/chip/chip.ts +0 -131
- package/src/components/chips/chip/config.ts +0 -91
- package/src/components/chips/chip/index.ts +0 -3
- package/src/components/chips/chips.md +0 -481
- package/src/components/chips/chips.ts +0 -75
- package/src/components/chips/config.ts +0 -109
- package/src/components/chips/constants.ts +0 -61
- package/src/components/chips/features/chip-items.ts +0 -33
- package/src/components/chips/features/container.ts +0 -77
- package/src/components/chips/features/controller.ts +0 -448
- package/src/components/chips/features/label.ts +0 -108
- package/src/components/chips/index.ts +0 -11
- package/src/components/chips/schema.ts +0 -61
- package/src/components/chips/types.ts +0 -469
- package/src/components/datepicker/api.ts +0 -265
- package/src/components/datepicker/config.ts +0 -141
- package/src/components/datepicker/datepicker.ts +0 -341
- package/src/components/datepicker/index.ts +0 -12
- package/src/components/datepicker/render.ts +0 -450
- package/src/components/datepicker/types.ts +0 -397
- package/src/components/datepicker/utils.ts +0 -289
- package/src/components/dialog/api.ts +0 -317
- package/src/components/dialog/config.ts +0 -116
- package/src/components/dialog/features.ts +0 -907
- package/src/components/dialog/index.ts +0 -141
- package/src/components/dialog/types.ts +0 -553
- package/src/components/divider/config.ts +0 -165
- package/src/components/divider/features.ts +0 -233
- package/src/components/divider/types.ts +0 -132
- package/src/components/extended-fab/api.ts +0 -193
- package/src/components/extended-fab/config.ts +0 -140
- package/src/components/extended-fab/extended-fab.ts +0 -153
- package/src/components/extended-fab/types.ts +0 -749
- package/src/components/fab/api.ts +0 -137
- package/src/components/fab/config.ts +0 -121
- package/src/components/fab/types.ts +0 -615
- package/src/components/list/api.ts +0 -82
- package/src/components/list/config.ts +0 -63
- package/src/components/list/features.ts +0 -229
- package/src/components/list/index.ts +0 -67
- package/src/components/list/list-item.ts +0 -163
- package/src/components/list/list.ts +0 -108
- package/src/components/list/types.ts +0 -396
- package/src/components/list/utils.ts +0 -98
- package/src/components/menu/api.ts +0 -230
- package/src/components/menu/config.ts +0 -127
- package/src/components/menu/features/anchor.ts +0 -394
- package/src/components/menu/features/controller.ts +0 -1423
- package/src/components/menu/features/index.ts +0 -13
- package/src/components/menu/features/position.ts +0 -353
- package/src/components/menu/menu.ts +0 -121
- package/src/components/menu/types.ts +0 -392
- package/src/components/navigation/api.ts +0 -142
- package/src/components/navigation/config.ts +0 -73
- package/src/components/navigation/features/controller.ts +0 -273
- package/src/components/navigation/features/items.ts +0 -353
- package/src/components/navigation/index.ts +0 -11
- package/src/components/navigation/nav-item.ts +0 -196
- package/src/components/navigation/navigation.ts +0 -115
- package/src/components/navigation/system/core.ts +0 -302
- package/src/components/navigation/system/events.ts +0 -240
- package/src/components/navigation/system/index.ts +0 -184
- package/src/components/navigation/system/mobile.ts +0 -278
- package/src/components/navigation/system/state.ts +0 -77
- package/src/components/navigation/system/types.ts +0 -364
- package/src/components/navigation/types.ts +0 -292
- package/src/components/progress/api.ts +0 -178
- package/src/components/progress/config.ts +0 -122
- package/src/components/progress/index.ts +0 -4
- package/src/components/progress/progress.ts +0 -159
- package/src/components/progress/types.ts +0 -255
- package/src/components/radios/api.ts +0 -125
- package/src/components/radios/config.ts +0 -59
- package/src/components/radios/constants.ts +0 -19
- package/src/components/radios/index.ts +0 -3
- package/src/components/radios/radio.ts +0 -292
- package/src/components/radios/radios.ts +0 -43
- package/src/components/radios/types.ts +0 -219
- package/src/components/search/api.ts +0 -203
- package/src/components/search/config.ts +0 -86
- package/src/components/search/features/search.ts +0 -717
- package/src/components/search/features/states.ts +0 -169
- package/src/components/search/features/structure.ts +0 -197
- package/src/components/search/index.ts +0 -7
- package/src/components/search/search.ts +0 -52
- package/src/components/search/types.ts +0 -175
- package/src/components/segmented-button/config.ts +0 -119
- package/src/components/segmented-button/index.ts +0 -4
- package/src/components/segmented-button/segment.ts +0 -108
- package/src/components/segmented-button/segmented-button.ts +0 -361
- package/src/components/segmented-button/types.ts +0 -306
- package/src/components/select/api.ts +0 -78
- package/src/components/select/config.ts +0 -76
- package/src/components/select/features.ts +0 -331
- package/src/components/select/select.ts +0 -73
- package/src/components/select/types.ts +0 -355
- package/src/components/sheet/api.ts +0 -96
- package/src/components/sheet/config.ts +0 -65
- package/src/components/sheet/features/content.ts +0 -51
- package/src/components/sheet/features/gestures.ts +0 -177
- package/src/components/sheet/features/position.ts +0 -41
- package/src/components/sheet/features/state.ts +0 -116
- package/src/components/sheet/features/title.ts +0 -86
- package/src/components/sheet/index.ts +0 -12
- package/src/components/sheet/sheet.ts +0 -56
- package/src/components/sheet/types.ts +0 -294
- package/src/components/slider/accessibility.md +0 -59
- package/src/components/slider/api.ts +0 -192
- package/src/components/slider/config.ts +0 -118
- package/src/components/slider/features/controller.ts +0 -737
- package/src/components/slider/features/handlers.ts +0 -497
- package/src/components/slider/features/index.ts +0 -5
- package/src/components/slider/features/range.ts +0 -104
- package/src/components/slider/features/states.ts +0 -195
- package/src/components/slider/index.ts +0 -17
- package/src/components/slider/schema.ts +0 -141
- package/src/components/slider/slider.ts +0 -76
- package/src/components/slider/types.ts +0 -223
- package/src/components/snackbar/api.ts +0 -162
- package/src/components/snackbar/config.ts +0 -61
- package/src/components/snackbar/features.ts +0 -76
- package/src/components/snackbar/index.ts +0 -9
- package/src/components/snackbar/position.ts +0 -79
- package/src/components/snackbar/queue.ts +0 -76
- package/src/components/snackbar/snackbar.ts +0 -60
- package/src/components/snackbar/types.ts +0 -159
- package/src/components/switch/api.ts +0 -93
- package/src/components/switch/config.ts +0 -56
- package/src/components/switch/features.ts +0 -198
- package/src/components/switch/index.ts +0 -8
- package/src/components/switch/switch.ts +0 -52
- package/src/components/switch/types.ts +0 -168
- package/src/components/tabs/api.ts +0 -221
- package/src/components/tabs/config.ts +0 -73
- package/src/components/tabs/features.ts +0 -403
- package/src/components/tabs/index.ts +0 -46
- package/src/components/tabs/indicator.ts +0 -285
- package/src/components/tabs/responsive.ts +0 -144
- package/src/components/tabs/scroll-indicators.ts +0 -149
- package/src/components/tabs/state.ts +0 -186
- package/src/components/tabs/tab-api.ts +0 -266
- package/src/components/tabs/tab.ts +0 -267
- package/src/components/tabs/tabs.ts +0 -71
- package/src/components/tabs/types.ts +0 -461
- package/src/components/tabs/utils.ts +0 -107
- package/src/components/textfield/api.ts +0 -197
- package/src/components/textfield/config.ts +0 -52
- package/src/components/textfield/features/leading-icon.ts +0 -127
- package/src/components/textfield/features/placement.ts +0 -149
- package/src/components/textfield/features/prefix-text.ts +0 -107
- package/src/components/textfield/features/suffix-text.ts +0 -100
- package/src/components/textfield/features/supporting-text.ts +0 -113
- package/src/components/textfield/features/trailing-icon.ts +0 -108
- package/src/components/textfield/index.ts +0 -9
- package/src/components/textfield/textfield.ts +0 -92
- package/src/components/textfield/types.ts +0 -265
- package/src/components/timepicker/README.md +0 -277
- package/src/components/timepicker/api.ts +0 -632
- package/src/components/timepicker/clockdial.ts +0 -479
- package/src/components/timepicker/config.ts +0 -228
- package/src/components/timepicker/index.ts +0 -3
- package/src/components/timepicker/render.ts +0 -613
- package/src/components/timepicker/timepicker.ts +0 -117
- package/src/components/timepicker/types.ts +0 -336
- package/src/components/timepicker/utils.ts +0 -241
- package/src/components/tooltip/api.ts +0 -415
- package/src/components/tooltip/config.ts +0 -80
- package/src/components/tooltip/index.ts +0 -12
- package/src/components/tooltip/tooltip.ts +0 -60
- package/src/components/tooltip/types.ts +0 -223
- package/src/components/top-app-bar/config.ts +0 -83
- package/src/components/top-app-bar/top-app-bar.ts +0 -316
- package/src/components/top-app-bar/types.ts +0 -140
- package/src/core/build/constants.ts +0 -48
- package/src/core/build/icon.ts +0 -137
- package/src/core/build/ripple.ts +0 -193
- package/src/core/build/text.ts +0 -91
- package/src/core/collection/adapters/base.ts +0 -62
- package/src/core/collection/adapters/route.ts +0 -201
- package/src/core/collection/collection.ts +0 -300
- package/src/core/collection/index.ts +0 -57
- package/src/core/collection/list-manager.ts +0 -333
- package/src/core/compose/base.ts +0 -43
- package/src/core/compose/component.ts +0 -255
- package/src/core/compose/features/badge.ts +0 -79
- package/src/core/compose/features/checkable.ts +0 -155
- package/src/core/compose/features/disabled.ts +0 -116
- package/src/core/compose/features/events.ts +0 -65
- package/src/core/compose/features/icon.ts +0 -71
- package/src/core/compose/features/input.ts +0 -174
- package/src/core/compose/features/lifecycle.ts +0 -139
- package/src/core/compose/features/position.ts +0 -94
- package/src/core/compose/features/ripple.ts +0 -58
- package/src/core/compose/features/size.ts +0 -29
- package/src/core/compose/features/style.ts +0 -31
- package/src/core/compose/features/text.ts +0 -44
- package/src/core/compose/features/textinput.ts +0 -238
- package/src/core/compose/features/textlabel.ts +0 -113
- package/src/core/compose/features/track.ts +0 -84
- package/src/core/compose/features/variant.ts +0 -29
- package/src/core/compose/features/withEvents.ts +0 -137
- package/src/core/compose/index.ts +0 -54
- package/src/core/composition/features/dom.ts +0 -45
- package/src/core/composition/features/icon.ts +0 -131
- package/src/core/composition/features/label.ts +0 -155
- package/src/core/config.ts +0 -211
- package/src/core/dom/attributes.ts +0 -33
- package/src/core/dom/classes.ts +0 -132
- package/src/core/dom/create.ts +0 -273
- package/src/core/dom/events.ts +0 -209
- package/src/core/dom/index.ts +0 -10
- package/src/core/dom/utils.ts +0 -97
- package/src/core/index.ts +0 -111
- package/src/core/layout/README.md +0 -715
- package/src/core/layout/array.ts +0 -180
- package/src/core/layout/config.ts +0 -193
- package/src/core/layout/create.ts +0 -54
- package/src/core/layout/index.ts +0 -36
- package/src/core/layout/object.ts +0 -123
- package/src/core/layout/processor.ts +0 -106
- package/src/core/layout/result.ts +0 -84
- package/src/core/layout/types.ts +0 -180
- package/src/core/layout/utils.ts +0 -144
- package/src/core/state/disabled.ts +0 -81
- package/src/core/state/emitter.ts +0 -94
- package/src/core/state/events.ts +0 -88
- package/src/core/state/lifecycle.ts +0 -131
- package/src/core/state/store.ts +0 -197
- package/src/core/utils/index.ts +0 -45
- package/src/core/utils/mobile.ts +0 -98
- package/src/core/utils/object.ts +0 -41
- package/src/core/utils/validate.ts +0 -234
- package/src/index.ts +0 -90
- package/src/styles/abstract/_base.scss +0 -2
- package/src/styles/abstract/_config.scss +0 -28
- package/src/styles/abstract/_functions.scss +0 -124
- package/src/styles/abstract/_mixins.scss +0 -352
- package/src/styles/abstract/_theme.scss +0 -269
- package/src/styles/abstract/_variables.scss +0 -305
- package/src/styles/base/_reset.scss +0 -86
- package/src/styles/base/_typography.scss +0 -155
- package/src/styles/components/_badge.scss +0 -182
- package/src/styles/components/_bottom-app-bar.scss +0 -103
- package/src/styles/components/_button.scss +0 -224
- package/src/styles/components/_card.scss +0 -401
- package/src/styles/components/_carousel.scss +0 -645
- package/src/styles/components/_checkbox.scss +0 -231
- package/src/styles/components/_chips.scss +0 -638
- package/src/styles/components/_datepicker.scss +0 -358
- package/src/styles/components/_dialog.scss +0 -259
- package/src/styles/components/_divider.scss +0 -57
- package/src/styles/components/_extended-fab.scss +0 -267
- package/src/styles/components/_fab.scss +0 -225
- package/src/styles/components/_list.scss +0 -248
- package/src/styles/components/_menu.scss +0 -242
- package/src/styles/components/_navigation-mobile.scss +0 -244
- package/src/styles/components/_navigation-system.scss +0 -151
- package/src/styles/components/_navigation.scss +0 -407
- package/src/styles/components/_progress.scss +0 -151
- package/src/styles/components/_radios.scss +0 -187
- package/src/styles/components/_search.scss +0 -306
- package/src/styles/components/_segmented-button.scss +0 -227
- package/src/styles/components/_select.scss +0 -272
- package/src/styles/components/_sheet.scss +0 -236
- package/src/styles/components/_slider.scss +0 -489
- package/src/styles/components/_snackbar.scss +0 -211
- package/src/styles/components/_switch.scss +0 -298
- package/src/styles/components/_tabs.scss +0 -416
- package/src/styles/components/_textfield.scss +0 -773
- package/src/styles/components/_timepicker.scss +0 -451
- package/src/styles/components/_tooltip.scss +0 -241
- package/src/styles/components/_top-app-bar.scss +0 -225
- package/src/styles/main.scss +0 -175
- package/src/styles/themes/_autumn.scss +0 -105
- package/src/styles/themes/_base-theme.scss +0 -85
- package/src/styles/themes/_baseline.scss +0 -173
- package/src/styles/themes/_bluekhaki.scss +0 -125
- package/src/styles/themes/_brownbeige.scss +0 -125
- package/src/styles/themes/_browngreen.scss +0 -125
- package/src/styles/themes/_forest.scss +0 -77
- package/src/styles/themes/_greenbeige.scss +0 -125
- package/src/styles/themes/_index.scss +0 -6
- package/src/styles/themes/_material.scss +0 -125
- package/src/styles/themes/_ocean.scss +0 -77
- package/src/styles/themes/_sageivory.scss +0 -125
- package/src/styles/themes/_spring.scss +0 -77
- package/src/styles/themes/_summer.scss +0 -87
- package/src/styles/themes/_sunset.scss +0 -60
- package/src/styles/themes/_tealcaramel.scss +0 -125
- package/src/styles/themes/_winter.scss +0 -77
- package/src/styles/utilities/_colors.scss +0 -154
- package/src/styles/utilities/_flexbox.scss +0 -194
- package/src/styles/utilities/_layout.scss +0 -665
- package/src/styles/utilities/_ripple.scss +0 -79
- package/src/styles/utilities/_spacing.scss +0 -139
- package/src/styles/utilities/_typography.scss +0 -178
- package/src/styles/utilities/_visibility.scss +0 -142
package/git-user-stats.js
DELETED
|
@@ -1,545 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Git Work Time Estimation Script
|
|
5
|
-
* ==============================
|
|
6
|
-
*
|
|
7
|
-
* This script analyzes git commit history to estimate the time spent working on a project.
|
|
8
|
-
* It combines several methodologies for estimation:
|
|
9
|
-
*
|
|
10
|
-
* 1. COCOMO II Model (Constructive Cost Model)
|
|
11
|
-
* - Modified for commit-level analysis
|
|
12
|
-
* - Uses different approaches for small vs large changes
|
|
13
|
-
* - Incorporates effort multipliers based on commit types
|
|
14
|
-
*
|
|
15
|
-
* 2. Git Metadata Analysis
|
|
16
|
-
* - Analyzes commit messages for type classification
|
|
17
|
-
* - Processes line addition/deletion statistics
|
|
18
|
-
* - Optionally analyzes across all branches
|
|
19
|
-
*
|
|
20
|
-
* 3. Time Constraints and Reality Checks
|
|
21
|
-
* - Enforces daily work hour limits
|
|
22
|
-
* - Accounts for minimum overhead time per commit
|
|
23
|
-
* - Caps maximum time per individual commit
|
|
24
|
-
*
|
|
25
|
-
* Theory and Methodology
|
|
26
|
-
* =====================
|
|
27
|
-
*
|
|
28
|
-
* COCOMO II Adaptation:
|
|
29
|
-
* Traditional COCOMO II formula: Effort = A × Size^B
|
|
30
|
-
* where:
|
|
31
|
-
* - A is the base effort coefficient (typically 2.94)
|
|
32
|
-
* - B is the scale factor (typically 0.91)
|
|
33
|
-
* - Size is measured in thousands of lines of code (KLOC)
|
|
34
|
-
*
|
|
35
|
-
* Our modifications:
|
|
36
|
-
* 1. Reduced base coefficient for commit-level granularity
|
|
37
|
-
* 2. Different calculation for small changes (<100 lines)
|
|
38
|
-
* 3. Weighted treatment of deletions vs additions
|
|
39
|
-
* 4. Additional effort multipliers based on commit type
|
|
40
|
-
*
|
|
41
|
-
* Usage Examples
|
|
42
|
-
* =============
|
|
43
|
-
*
|
|
44
|
-
* Basic usage:
|
|
45
|
-
* bun git-user-stats.js --authors "Author Name"
|
|
46
|
-
*
|
|
47
|
-
* Multiple authors:
|
|
48
|
-
* bun git-user-stats.js --authors "Author One" "author.one@email.com" "Author Two"
|
|
49
|
-
*
|
|
50
|
-
* Date range:
|
|
51
|
-
* bun git-user-stats.js --authors "Author" --since "2024-01-01" --until "2024-02-01"
|
|
52
|
-
*
|
|
53
|
-
* Branch analysis:
|
|
54
|
-
* bun git-user-stats.js --authors "Author" --all-branches
|
|
55
|
-
* bun git-user-stats.js --authors "Author" --branch main
|
|
56
|
-
*
|
|
57
|
-
* Combined options:
|
|
58
|
-
* bun git-user-stats.js --authors "Author" --all-branches --since "1 month ago" --no-merges
|
|
59
|
-
*
|
|
60
|
-
* Command Line Options
|
|
61
|
-
* ===================
|
|
62
|
-
*
|
|
63
|
-
* Required:
|
|
64
|
-
* --authors One or more author identifiers (names or emails)
|
|
65
|
-
*
|
|
66
|
-
* Optional:
|
|
67
|
-
* --since Start date (YYYY-MM-DD or git-compatible date)
|
|
68
|
-
* --until End date
|
|
69
|
-
* --all-branches Include commits from all branches
|
|
70
|
-
* --branch Analyze specific branch only
|
|
71
|
-
* --no-merges Exclude merge commits
|
|
72
|
-
*
|
|
73
|
-
* Date Format Options:
|
|
74
|
-
* - ISO dates: "2024-01-01"
|
|
75
|
-
* - Relative: "1 month ago", "2 weeks ago"
|
|
76
|
-
* - Named: "yesterday", "last monday"
|
|
77
|
-
*/
|
|
78
|
-
|
|
79
|
-
import { exec } from 'child_process'
|
|
80
|
-
import { promisify } from 'util'
|
|
81
|
-
import progress from '../radiooooo/monorepo/packages/script/src/module/progress.js'
|
|
82
|
-
|
|
83
|
-
const execAsync = promisify(exec)
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Command line argument parser
|
|
87
|
-
* Processes arguments and provides defaults for optional parameters
|
|
88
|
-
* @returns {Object} Parsed arguments with default values
|
|
89
|
-
*/
|
|
90
|
-
const parseArgs = () => {
|
|
91
|
-
const args = {
|
|
92
|
-
authors: [],
|
|
93
|
-
since: null,
|
|
94
|
-
until: null,
|
|
95
|
-
allBranches: false,
|
|
96
|
-
branch: null,
|
|
97
|
-
noMerges: false
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
for (let i = 2; i < process.argv.length; i++) {
|
|
101
|
-
const arg = process.argv[i]
|
|
102
|
-
switch (arg) {
|
|
103
|
-
case '--authors':
|
|
104
|
-
while (i + 1 < process.argv.length && !process.argv[i + 1].startsWith('--')) {
|
|
105
|
-
args.authors.push(process.argv[++i])
|
|
106
|
-
}
|
|
107
|
-
break
|
|
108
|
-
case '--since':
|
|
109
|
-
args.since = process.argv[++i]
|
|
110
|
-
break
|
|
111
|
-
case '--until':
|
|
112
|
-
args.until = process.argv[++i]
|
|
113
|
-
break
|
|
114
|
-
case '--all-branches':
|
|
115
|
-
args.allBranches = true
|
|
116
|
-
break
|
|
117
|
-
case '--branch':
|
|
118
|
-
args.branch = process.argv[++i]
|
|
119
|
-
break
|
|
120
|
-
case '--no-merges':
|
|
121
|
-
args.noMerges = true
|
|
122
|
-
break
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
return args
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
const args = parseArgs()
|
|
130
|
-
|
|
131
|
-
// Input validation with detailed help
|
|
132
|
-
if (args.authors.length === 0) {
|
|
133
|
-
console.error('Usage: bun git-user-stats.js --authors "Author Name" ["Author Email"...]')
|
|
134
|
-
console.error('\nOptions:')
|
|
135
|
-
console.error(' --authors One or more author identifiers (names or emails)')
|
|
136
|
-
console.error(' --since Start date (YYYY-MM-DD or "1 month ago")')
|
|
137
|
-
console.error(' --until End date')
|
|
138
|
-
console.error(' --all-branches Include commits from all branches')
|
|
139
|
-
console.error(' --branch Analyze specific branch only')
|
|
140
|
-
console.error(' --no-merges Exclude merge commits')
|
|
141
|
-
console.error('\nExamples:')
|
|
142
|
-
console.error(' bun git-user-stats.js --authors "John Doe" --since "2024-01-01"')
|
|
143
|
-
console.error(' bun git-user-stats.js --authors "john@doe.com" --all-branches')
|
|
144
|
-
console.error(' bun git-user-stats.js --authors "John Doe" "john@doe.com" --branch main')
|
|
145
|
-
process.exit(1)
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
* COCOMO Model Configuration
|
|
150
|
-
* -------------------------
|
|
151
|
-
* Modified version of COCOMO II for commit-level analysis
|
|
152
|
-
*
|
|
153
|
-
* Key differences from standard COCOMO II:
|
|
154
|
-
* 1. Lower base coefficient for smaller units of work
|
|
155
|
-
* 2. Hybrid approach for different sized changes
|
|
156
|
-
* 3. Additional effort multipliers for commit types
|
|
157
|
-
*/
|
|
158
|
-
const COCOMO = {
|
|
159
|
-
// Base effort coefficient (reduced from standard 2.94)
|
|
160
|
-
A: 0.91,
|
|
161
|
-
|
|
162
|
-
// Scale factor (standard COCOMO II value)
|
|
163
|
-
B: 0.91,
|
|
164
|
-
|
|
165
|
-
// Industry standard work month
|
|
166
|
-
PERSON_MONTH_HOURS: 152,
|
|
167
|
-
|
|
168
|
-
// Realistic daily limit including overtime
|
|
169
|
-
MAX_HOURS_PER_DAY: 10,
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* Effort multipliers based on commit type
|
|
173
|
-
* Derived from COCOMO II cost drivers:
|
|
174
|
-
* - CPLX (Product Complexity)
|
|
175
|
-
* - RUSE (Required Reusability)
|
|
176
|
-
* - PDIF (Platform Difficulty)
|
|
177
|
-
*/
|
|
178
|
-
TYPE_MULTIPLIERS: {
|
|
179
|
-
refactor: 1.24, // High complexity
|
|
180
|
-
fix: 1.15, // High attention to detail
|
|
181
|
-
test: 1.12, // Medium complexity
|
|
182
|
-
merge: 0.82, // Low complexity
|
|
183
|
-
update: 0.87, // Simple changes
|
|
184
|
-
cleanup: 0.85, // Very low complexity
|
|
185
|
-
default: 1.0 // Nominal case
|
|
186
|
-
},
|
|
187
|
-
|
|
188
|
-
/**
|
|
189
|
-
* Effort estimation function
|
|
190
|
-
* Uses different approaches based on change size:
|
|
191
|
-
* - COCOMO II for large changes
|
|
192
|
-
* - Linear estimation for small changes
|
|
193
|
-
*
|
|
194
|
-
* @param {number} kloc - Size in thousands of lines of code
|
|
195
|
-
* @returns {number} Estimated minutes of effort
|
|
196
|
-
*/
|
|
197
|
-
estimateEffort: (kloc) => {
|
|
198
|
-
if (kloc >= 0.1) { // More than 100 lines
|
|
199
|
-
const personMonths = COCOMO.A * Math.pow(kloc, COCOMO.B)
|
|
200
|
-
return personMonths * COCOMO.PERSON_MONTH_HOURS * 60
|
|
201
|
-
} else {
|
|
202
|
-
// Linear estimation for small changes (3 minutes per line)
|
|
203
|
-
return kloc * 1000 * 3
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
/**
|
|
209
|
-
* Time Formatting Helper
|
|
210
|
-
* Converts minutes to human-readable duration
|
|
211
|
-
* @param {number} minutes - Total minutes to format
|
|
212
|
-
* @returns {string} Formatted string like "5h30m"
|
|
213
|
-
*/
|
|
214
|
-
const formatHours = minutes => {
|
|
215
|
-
const hours = Math.floor(minutes / 60)
|
|
216
|
-
const remainingMinutes = Math.round(minutes % 60)
|
|
217
|
-
return `${hours}h${remainingMinutes}m`
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
/**
|
|
221
|
-
* Git Line Statistics Analyzer
|
|
222
|
-
* Retrieves the number of lines added and deleted for a commit
|
|
223
|
-
* Uses git show --numstat for detailed change information
|
|
224
|
-
*
|
|
225
|
-
* @param {string} hash - Git commit hash
|
|
226
|
-
* @returns {Promise<Object>} Object containing added and deleted line counts
|
|
227
|
-
*/
|
|
228
|
-
const getLineStats = async hash => {
|
|
229
|
-
try {
|
|
230
|
-
const { stdout } = await execAsync(`git show --numstat ${hash}`)
|
|
231
|
-
const stats = stdout.split('\n')
|
|
232
|
-
.filter(line => /^\d+\t\d+\t/.test(line))
|
|
233
|
-
.reduce((acc, line) => {
|
|
234
|
-
const [added, deleted] = line.split('\t').map(Number)
|
|
235
|
-
return {
|
|
236
|
-
added: acc.added + (added || 0),
|
|
237
|
-
deleted: acc.deleted + (deleted || 0)
|
|
238
|
-
}
|
|
239
|
-
}, { added: 0, deleted: 0 })
|
|
240
|
-
return stats
|
|
241
|
-
} catch (err) {
|
|
242
|
-
return { added: 0, deleted: 0 }
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
/**
|
|
247
|
-
* Commit Type Analyzer
|
|
248
|
-
* Determines the effort multiplier based on commit message content
|
|
249
|
-
* Uses keyword analysis to categorize the type of change
|
|
250
|
-
*
|
|
251
|
-
* @param {string} message - Git commit message
|
|
252
|
-
* @returns {number} Effort multiplier value
|
|
253
|
-
*/
|
|
254
|
-
const getCommitMultiplier = message => {
|
|
255
|
-
const msg = message.toLowerCase()
|
|
256
|
-
for (const [type, multiplier] of Object.entries(COCOMO.TYPE_MULTIPLIERS)) {
|
|
257
|
-
if (msg.includes(type)) return multiplier
|
|
258
|
-
}
|
|
259
|
-
return COCOMO.TYPE_MULTIPLIERS.default
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
/**
|
|
263
|
-
* Time Estimation Function
|
|
264
|
-
* Calculates estimated time for a single commit
|
|
265
|
-
*
|
|
266
|
-
* Factors considered:
|
|
267
|
-
* - Lines added (full weight)
|
|
268
|
-
* - Lines deleted (partial weight)
|
|
269
|
-
* - Commit type multiplier
|
|
270
|
-
* - Minimum overhead time
|
|
271
|
-
* - Maximum time cap
|
|
272
|
-
*
|
|
273
|
-
* @param {number} added - Lines added
|
|
274
|
-
* @param {number} deleted - Lines deleted
|
|
275
|
-
* @param {string} message - Commit message
|
|
276
|
-
* @returns {number} Estimated minutes for this commit
|
|
277
|
-
*/
|
|
278
|
-
const estimateCommitTime = (added, deleted, message) => {
|
|
279
|
-
// Weight deletions as 20% of additions
|
|
280
|
-
const kloc = (added + (deleted * 0.2)) / 1000
|
|
281
|
-
|
|
282
|
-
// Get base effort estimate
|
|
283
|
-
let minutes = COCOMO.estimateEffort(kloc)
|
|
284
|
-
|
|
285
|
-
// Apply type-based multiplier
|
|
286
|
-
const multiplier = getCommitMultiplier(message)
|
|
287
|
-
minutes *= multiplier
|
|
288
|
-
|
|
289
|
-
// Enforce minimum and maximum bounds
|
|
290
|
-
minutes = Math.max(minutes + 5, 10) // At least 10 minutes
|
|
291
|
-
return Math.min(minutes, 240) // Cap at 4 hours
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
/**
|
|
295
|
-
* Git Log Retriever
|
|
296
|
-
* Gets commit history for a specific author
|
|
297
|
-
* Handles branch selection and date range filtering
|
|
298
|
-
*
|
|
299
|
-
* @param {string} author - Author name or email
|
|
300
|
-
* @returns {Promise<string>} Git log output
|
|
301
|
-
*/
|
|
302
|
-
const getGitLog = async author => {
|
|
303
|
-
const cmd = ['git log']
|
|
304
|
-
|
|
305
|
-
// Branch selection
|
|
306
|
-
if (args.allBranches) {
|
|
307
|
-
cmd.push('--all')
|
|
308
|
-
} else if (args.branch) {
|
|
309
|
-
cmd.push(args.branch)
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
// Additional flags
|
|
313
|
-
if (args.noMerges) cmd.push('--no-merges')
|
|
314
|
-
cmd.push(`--author="${author}"`)
|
|
315
|
-
cmd.push('--date=iso')
|
|
316
|
-
cmd.push('--format="%ad|%h|%ae|%s|%D"')
|
|
317
|
-
|
|
318
|
-
// Date range
|
|
319
|
-
if (args.since) cmd.push(`--since="${args.since}"`)
|
|
320
|
-
if (args.until) cmd.push(`--until="${args.until}"`)
|
|
321
|
-
|
|
322
|
-
const { stdout } = await execAsync(cmd.join(' '))
|
|
323
|
-
return stdout.trim()
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
/**
|
|
327
|
-
* Main Analysis Function
|
|
328
|
-
* Processes git history and generates time estimates
|
|
329
|
-
*
|
|
330
|
-
* Steps:
|
|
331
|
-
* 1. Fetches commit history
|
|
332
|
-
* 2. Analyzes each commit
|
|
333
|
-
* 3. Groups by date
|
|
334
|
-
* 4. Applies time constraints
|
|
335
|
-
* 5. Generates statistics
|
|
336
|
-
*
|
|
337
|
-
* @param {string[]} authors - List of author identifiers
|
|
338
|
-
*/
|
|
339
|
-
const getCommitStats = async authors => {
|
|
340
|
-
try {
|
|
341
|
-
// Initial status message
|
|
342
|
-
if (args.allBranches) {
|
|
343
|
-
console.log('Fetching git history from all branches...')
|
|
344
|
-
} else if (args.branch) {
|
|
345
|
-
console.log(`Fetching git history from branch: ${args.branch}`)
|
|
346
|
-
} else {
|
|
347
|
-
console.log('Fetching git history from current branch...')
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
const allLogs = await Promise.all(authors.map(getGitLog))
|
|
351
|
-
|
|
352
|
-
// Parse commit information
|
|
353
|
-
const commits = allLogs
|
|
354
|
-
.join('\n')
|
|
355
|
-
.split('\n')
|
|
356
|
-
.filter(line => line.length > 0)
|
|
357
|
-
.map(line => {
|
|
358
|
-
const [datetime, hash, email, message, refs] = line.split('|')
|
|
359
|
-
return {
|
|
360
|
-
date: datetime.split(' ')[0],
|
|
361
|
-
timestamp: new Date(datetime),
|
|
362
|
-
hash,
|
|
363
|
-
email,
|
|
364
|
-
message,
|
|
365
|
-
branch: refs ? refs.split(',')[0].trim() : 'main'
|
|
366
|
-
}
|
|
367
|
-
})
|
|
368
|
-
.sort((a, b) => b.timestamp - a.timestamp)
|
|
369
|
-
|
|
370
|
-
if (commits.length === 0) {
|
|
371
|
-
console.log('No commits found for the specified author(s)')
|
|
372
|
-
return
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
console.log(`Processing ${commits.length} commits...`)
|
|
376
|
-
|
|
377
|
-
// Initialize tracking variables
|
|
378
|
-
let processedCount = 0
|
|
379
|
-
const startTime = Date.now()
|
|
380
|
-
const totalCommits = commits.length
|
|
381
|
-
const commitsByDate = {}
|
|
382
|
-
const totalLines = { added: 0, deleted: 0 }
|
|
383
|
-
|
|
384
|
-
// Process each commit
|
|
385
|
-
for (const commit of commits) {
|
|
386
|
-
processedCount++
|
|
387
|
-
progress(processedCount, totalCommits, startTime, commit.hash.substring(0, 7))
|
|
388
|
-
|
|
389
|
-
const lines = await getLineStats(commit.hash)
|
|
390
|
-
const estimatedMinutes = estimateCommitTime(lines.added, lines.deleted, commit.message)
|
|
391
|
-
|
|
392
|
-
// Group by date
|
|
393
|
-
if (!commitsByDate[commit.date]) {
|
|
394
|
-
commitsByDate[commit.date] = {
|
|
395
|
-
commits: [],
|
|
396
|
-
lines: { added: 0, deleted: 0 },
|
|
397
|
-
estimatedMinutes: 0
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
// Accumulate statistics
|
|
402
|
-
commitsByDate[commit.date].commits.push(commit)
|
|
403
|
-
commitsByDate[commit.date].lines.added += lines.added
|
|
404
|
-
commitsByDate[commit.date].lines.deleted += lines.deleted
|
|
405
|
-
commitsByDate[commit.date].estimatedMinutes += estimatedMinutes
|
|
406
|
-
|
|
407
|
-
totalLines.added += lines.added
|
|
408
|
-
totalLines.deleted += lines.deleted
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
// Apply daily work limits
|
|
412
|
-
Object.values(commitsByDate).forEach(day => {
|
|
413
|
-
day.estimatedMinutes = Math.min(day.estimatedMinutes, COCOMO.MAX_HOURS_PER_DAY * 60)
|
|
414
|
-
})
|
|
415
|
-
|
|
416
|
-
progress(null)
|
|
417
|
-
|
|
418
|
-
// Branch statistics (only if analyzing all branches)
|
|
419
|
-
if (args.allBranches) {
|
|
420
|
-
const branchStats = commits.reduce((acc, commit) => {
|
|
421
|
-
if (commit.branch && commit.branch !== '') {
|
|
422
|
-
acc[commit.branch] = (acc[commit.branch] || 0) + 1
|
|
423
|
-
}
|
|
424
|
-
return acc
|
|
425
|
-
}, {})
|
|
426
|
-
|
|
427
|
-
console.log('\nCommits by branch:')
|
|
428
|
-
Object.entries(branchStats)
|
|
429
|
-
.sort(([, a], [, b]) => b - a)
|
|
430
|
-
.forEach(([branch, count]) => {
|
|
431
|
-
console.log(`${branch}: ${count} commits`)
|
|
432
|
-
})
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
/**
|
|
436
|
-
* Display daily breakdown of work
|
|
437
|
-
* Shows for each day:
|
|
438
|
-
* - Number of commits
|
|
439
|
-
* - Lines changed
|
|
440
|
-
* - Estimated work time
|
|
441
|
-
*/
|
|
442
|
-
console.log('\nWork time estimation per date:')
|
|
443
|
-
Object.entries(commitsByDate)
|
|
444
|
-
.sort(([a], [b]) => new Date(b) - new Date(a))
|
|
445
|
-
.forEach(([date, stats]) => {
|
|
446
|
-
console.log(
|
|
447
|
-
`${date}: ${stats.commits.length} commits, ` +
|
|
448
|
-
`+${stats.lines.added}/-${stats.lines.deleted} lines, ` +
|
|
449
|
-
`≈ ${formatHours(stats.estimatedMinutes)}`
|
|
450
|
-
)
|
|
451
|
-
})
|
|
452
|
-
|
|
453
|
-
/**
|
|
454
|
-
* Calculate summary statistics
|
|
455
|
-
* Includes:
|
|
456
|
-
* - Total metrics (commits, lines, days)
|
|
457
|
-
* - Averages (per day, per commit)
|
|
458
|
-
* - Time estimations
|
|
459
|
-
*/
|
|
460
|
-
const totalCommitCount = Object.values(commitsByDate)
|
|
461
|
-
.reduce((sum, { commits }) => sum + commits.length, 0)
|
|
462
|
-
const totalMinutes = Object.values(commitsByDate)
|
|
463
|
-
.reduce((sum, { estimatedMinutes }) => sum + estimatedMinutes, 0)
|
|
464
|
-
const uniqueEmails = [...new Set(commits.map(c => c.email))]
|
|
465
|
-
const totalDays = Object.keys(commitsByDate).length
|
|
466
|
-
const avgHoursPerDay = (totalMinutes / 60 / totalDays)
|
|
467
|
-
const avgCommitsPerDay = totalCommitCount / totalDays
|
|
468
|
-
const avgTimePerCommit = totalMinutes / totalCommitCount
|
|
469
|
-
|
|
470
|
-
/**
|
|
471
|
-
* Display comprehensive summary
|
|
472
|
-
* Shows overall project statistics and averages
|
|
473
|
-
*/
|
|
474
|
-
console.log('\nSummary:')
|
|
475
|
-
console.log(`Total commits: ${totalCommitCount}`)
|
|
476
|
-
console.log(`Total lines added: ${totalLines.added}`)
|
|
477
|
-
console.log(`Total lines deleted: ${totalLines.deleted}`)
|
|
478
|
-
console.log(`Total active days: ${totalDays}`)
|
|
479
|
-
console.log(`Estimated total work time: ${formatHours(totalMinutes)}`)
|
|
480
|
-
console.log(`Average hours per active day: ${avgHoursPerDay.toFixed(1)}h`)
|
|
481
|
-
console.log(`Average commits per day: ${avgCommitsPerDay.toFixed(1)}`)
|
|
482
|
-
console.log(`Average time per commit: ${formatHours(Math.round(avgTimePerCommit))}`)
|
|
483
|
-
console.log(`Identified email addresses: ${uniqueEmails.join(', ')}`)
|
|
484
|
-
|
|
485
|
-
/**
|
|
486
|
-
* Display analysis configuration
|
|
487
|
-
* Shows all parameters used for the analysis
|
|
488
|
-
*/
|
|
489
|
-
console.log('\nAnalysis Configuration:')
|
|
490
|
-
console.log('Repository Analysis:')
|
|
491
|
-
if (args.allBranches) {
|
|
492
|
-
console.log('- Analyzing all branches')
|
|
493
|
-
} else if (args.branch) {
|
|
494
|
-
console.log(`- Analyzing branch: ${args.branch}`)
|
|
495
|
-
} else {
|
|
496
|
-
console.log('- Analyzing current branch only')
|
|
497
|
-
}
|
|
498
|
-
if (args.noMerges) console.log('- Excluding merge commits')
|
|
499
|
-
if (args.since) console.log(`- Since: ${args.since}`)
|
|
500
|
-
if (args.until) console.log(`- Until: ${args.until}`)
|
|
501
|
-
|
|
502
|
-
/**
|
|
503
|
-
* Display estimation model details
|
|
504
|
-
* Shows all factors and multipliers used in calculations
|
|
505
|
-
*/
|
|
506
|
-
console.log('\nEstimation Model Details:')
|
|
507
|
-
console.log('Time Calculation:')
|
|
508
|
-
console.log('- Using modified COCOMO II for large changes (>100 lines)')
|
|
509
|
-
console.log('- Linear estimation for small changes (3 min/line)')
|
|
510
|
-
console.log(`- Maximum ${COCOMO.MAX_HOURS_PER_DAY} hours per day`)
|
|
511
|
-
console.log('- Maximum 4 hours per commit')
|
|
512
|
-
console.log('- Minimum 10 minutes per commit')
|
|
513
|
-
console.log('- Deletions counted as 20% of additions')
|
|
514
|
-
|
|
515
|
-
console.log('\nCOCOMO II Parameters:')
|
|
516
|
-
console.log(`- Base effort coefficient (A): ${COCOMO.A}`)
|
|
517
|
-
console.log(`- Scale factor (B): ${COCOMO.B}`)
|
|
518
|
-
console.log(`- Person-month: ${COCOMO.PERSON_MONTH_HOURS} hours`)
|
|
519
|
-
|
|
520
|
-
console.log('\nEffort Multipliers:')
|
|
521
|
-
Object.entries(COCOMO.TYPE_MULTIPLIERS)
|
|
522
|
-
.sort(([, a], [, b]) => b - a)
|
|
523
|
-
.forEach(([type, mult]) => {
|
|
524
|
-
console.log(` * ${type}: ${mult}x`)
|
|
525
|
-
})
|
|
526
|
-
} catch (err) {
|
|
527
|
-
progress(null)
|
|
528
|
-
console.error('Error analyzing git log:', err)
|
|
529
|
-
process.exit(1)
|
|
530
|
-
}
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
/**
|
|
534
|
-
* Signal Handler
|
|
535
|
-
* Ensures clean exit on interrupt
|
|
536
|
-
* Restores cursor and terminal state
|
|
537
|
-
*/
|
|
538
|
-
process.on('SIGINT', () => {
|
|
539
|
-
console.log('\nCaught interrupt signal')
|
|
540
|
-
progress(null)
|
|
541
|
-
process.exit()
|
|
542
|
-
})
|
|
543
|
-
|
|
544
|
-
// Start the analysis
|
|
545
|
-
getCommitStats(args.authors)
|