taro-uno-ui 1.0.1 → 1.0.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/README.md +67 -30
- package/dist/js/{index-CDFsvu80.js → index-QpKiGsEQ.js} +39026 -28023
- package/dist/js/index-QpKiGsEQ.js.map +1 -0
- package/dist/js/{index-JffnTUrv.js → index-nnTHNhwl.js} +38743 -27720
- package/dist/js/index-nnTHNhwl.js.map +1 -0
- package/package.json +4 -4
- package/dist/js/index-CDFsvu80.js.map +0 -1
- package/dist/js/index-DFdcksbe.js +0 -1165
- package/dist/js/index-DFdcksbe.js.map +0 -1
- package/dist/js/index-DXRIkWX1.js +0 -1148
- package/dist/js/index-DXRIkWX1.js.map +0 -1
- package/dist/js/index-JffnTUrv.js.map +0 -1
- package/dist/utils/http/request.d.ts +0 -280
- package/src/app.config.ts +0 -55
- package/src/app.scss +0 -508
- package/src/app.tsx +0 -44
- package/src/components/basic/Button/Button.styles.ts +0 -130
- package/src/components/basic/Button/Button.test.tsx +0 -154
- package/src/components/basic/Button/Button.tsx +0 -133
- package/src/components/basic/Button/Button.types.ts +0 -81
- package/src/components/basic/Button/index.tsx +0 -6
- package/src/components/basic/Divider/Divider.styles.ts +0 -488
- package/src/components/basic/Divider/Divider.test.tsx +0 -551
- package/src/components/basic/Divider/Divider.tsx +0 -392
- package/src/components/basic/Divider/Divider.types.ts +0 -261
- package/src/components/basic/Divider/index.tsx +0 -25
- package/src/components/basic/Icon/Icon.data.ts +0 -474
- package/src/components/basic/Icon/Icon.styles.ts +0 -359
- package/src/components/basic/Icon/Icon.test.tsx +0 -357
- package/src/components/basic/Icon/Icon.tsx +0 -167
- package/src/components/basic/Icon/Icon.types.ts +0 -210
- package/src/components/basic/Icon/IconManager.ts +0 -229
- package/src/components/basic/Icon/index.tsx +0 -22
- package/src/components/basic/Text/Text.styles.ts +0 -500
- package/src/components/basic/Text/Text.test.tsx +0 -299
- package/src/components/basic/Text/Text.tsx +0 -340
- package/src/components/basic/Text/Text.types.ts +0 -329
- package/src/components/basic/Text/index.tsx +0 -27
- package/src/components/basic/Typography/Typography.styles.ts +0 -347
- package/src/components/basic/Typography/Typography.tsx +0 -207
- package/src/components/basic/Typography/Typography.types.ts +0 -296
- package/src/components/basic/Typography/index.tsx +0 -14
- package/src/components/basic/Video/Video.styles.ts +0 -777
- package/src/components/basic/Video/Video.test.tsx +0 -490
- package/src/components/basic/Video/Video.tsx +0 -1468
- package/src/components/basic/Video/Video.types.ts +0 -500
- package/src/components/basic/Video/index.tsx +0 -26
- package/src/components/basic/index.tsx +0 -300
- package/src/components/common/ErrorBoundary.tsx +0 -87
- package/src/components/common/LazyComponent.tsx +0 -247
- package/src/components/common/ResponsiveContainer.tsx +0 -93
- package/src/components/common/ResponsiveGrid.tsx +0 -183
- package/src/components/common/SecurityProvider.tsx +0 -98
- package/src/components/common/ThemeProvider.tsx +0 -115
- package/src/components/common/VirtualList.tsx +0 -350
- package/src/components/common/__tests__/ErrorBoundary.test.tsx +0 -249
- package/src/components/common/index.tsx +0 -32
- package/src/components/display/Avatar/Avatar.styles.ts +0 -62
- package/src/components/display/Avatar/Avatar.test.tsx +0 -390
- package/src/components/display/Avatar/Avatar.tsx +0 -66
- package/src/components/display/Avatar/Avatar.types.ts +0 -40
- package/src/components/display/Avatar/index.ts +0 -3
- package/src/components/display/Badge/Badge.tsx +0 -29
- package/src/components/display/Badge/Badge.types.ts +0 -29
- package/src/components/display/Badge/index.ts +0 -2
- package/src/components/display/Calendar/Calendar.styles.ts +0 -255
- package/src/components/display/Calendar/Calendar.test.tsx +0 -42
- package/src/components/display/Calendar/Calendar.tsx +0 -358
- package/src/components/display/Calendar/Calendar.types.ts +0 -91
- package/src/components/display/Calendar/index.ts +0 -3
- package/src/components/display/Card/Card.styles.ts +0 -89
- package/src/components/display/Card/Card.test.tsx +0 -182
- package/src/components/display/Card/Card.tsx +0 -135
- package/src/components/display/Card/Card.types.ts +0 -55
- package/src/components/display/Card/index.ts +0 -3
- package/src/components/display/Carousel/Carousel.styles.ts +0 -206
- package/src/components/display/Carousel/Carousel.tsx +0 -290
- package/src/components/display/Carousel/Carousel.types.ts +0 -57
- package/src/components/display/Carousel/index.ts +0 -3
- package/src/components/display/List/List.styles.ts +0 -79
- package/src/components/display/List/List.tsx +0 -114
- package/src/components/display/List/List.types.ts +0 -68
- package/src/components/display/List/index.ts +0 -3
- package/src/components/display/Rate/Rate.styles.ts +0 -254
- package/src/components/display/Rate/Rate.tsx +0 -324
- package/src/components/display/Rate/Rate.types.ts +0 -112
- package/src/components/display/Rate/index.ts +0 -20
- package/src/components/display/Table/Table.styles.ts +0 -269
- package/src/components/display/Table/Table.test.tsx +0 -345
- package/src/components/display/Table/Table.tsx +0 -426
- package/src/components/display/Table/Table.types.ts +0 -256
- package/src/components/display/Table/index.tsx +0 -16
- package/src/components/display/Tag/Tag.styles.ts +0 -197
- package/src/components/display/Tag/Tag.test.tsx +0 -541
- package/src/components/display/Tag/Tag.tsx +0 -139
- package/src/components/display/Tag/Tag.types.ts +0 -49
- package/src/components/display/Tag/index.ts +0 -3
- package/src/components/display/Timeline/Timeline.styles.ts +0 -211
- package/src/components/display/Timeline/Timeline.tsx +0 -220
- package/src/components/display/Timeline/Timeline.types.ts +0 -56
- package/src/components/display/Timeline/index.ts +0 -3
- package/src/components/display/index.tsx +0 -147
- package/src/components/feedback/Loading/Loading.styles.ts +0 -117
- package/src/components/feedback/Loading/Loading.test.tsx +0 -534
- package/src/components/feedback/Loading/Loading.tsx +0 -132
- package/src/components/feedback/Loading/Loading.types.ts +0 -33
- package/src/components/feedback/Loading/index.ts +0 -6
- package/src/components/feedback/Message/Message.styles.ts +0 -41
- package/src/components/feedback/Message/Message.test.tsx +0 -234
- package/src/components/feedback/Message/Message.tsx +0 -96
- package/src/components/feedback/Message/Message.types.ts +0 -37
- package/src/components/feedback/Message/index.ts +0 -6
- package/src/components/feedback/Modal/Modal.styles.ts +0 -21
- package/src/components/feedback/Modal/Modal.test.tsx +0 -11
- package/src/components/feedback/Modal/Modal.tsx +0 -269
- package/src/components/feedback/Modal/Modal.types.ts +0 -151
- package/src/components/feedback/Modal/index.tsx +0 -11
- package/src/components/feedback/Notification/Notification.styles.ts +0 -453
- package/src/components/feedback/Notification/Notification.test.tsx +0 -401
- package/src/components/feedback/Notification/Notification.tsx +0 -347
- package/src/components/feedback/Notification/Notification.types.ts +0 -339
- package/src/components/feedback/Notification/NotificationManager.tsx +0 -405
- package/src/components/feedback/Notification/index.ts +0 -40
- package/src/components/feedback/Notification/index.tsx +0 -154
- package/src/components/feedback/Progress/Progress.styles.ts +0 -469
- package/src/components/feedback/Progress/Progress.test.simple.tsx +0 -14
- package/src/components/feedback/Progress/Progress.test.tsx +0 -312
- package/src/components/feedback/Progress/Progress.tsx +0 -488
- package/src/components/feedback/Progress/Progress.types.ts +0 -163
- package/src/components/feedback/Progress/index.ts +0 -3
- package/src/components/feedback/Progress/index.tsx +0 -38
- package/src/components/feedback/Progress/utils/animation.ts +0 -193
- package/src/components/feedback/Progress/utils/index.ts +0 -26
- package/src/components/feedback/Progress/utils/progress-calculator.ts +0 -199
- package/src/components/feedback/Result/Result.styles.ts +0 -139
- package/src/components/feedback/Result/Result.tsx +0 -221
- package/src/components/feedback/Result/Result.types.ts +0 -128
- package/src/components/feedback/Result/index.tsx +0 -3
- package/src/components/feedback/Toast/Toast.styles.ts +0 -17
- package/src/components/feedback/Toast/Toast.test.tsx +0 -10
- package/src/components/feedback/Toast/Toast.tsx +0 -384
- package/src/components/feedback/Toast/Toast.types.ts +0 -86
- package/src/components/feedback/Toast/index.tsx +0 -3
- package/src/components/feedback/Tooltip/Tooltip.examples.tsx +0 -435
- package/src/components/feedback/Tooltip/Tooltip.styles.ts +0 -340
- package/src/components/feedback/Tooltip/Tooltip.test.tsx +0 -446
- package/src/components/feedback/Tooltip/Tooltip.tsx +0 -302
- package/src/components/feedback/Tooltip/Tooltip.types.ts +0 -166
- package/src/components/feedback/Tooltip/index.ts +0 -3
- package/src/components/feedback/Tooltip/index.tsx +0 -246
- package/src/components/feedback/index.tsx +0 -176
- package/src/components/form/Cascader/Cascader.styles.ts +0 -526
- package/src/components/form/Cascader/Cascader.test.tsx +0 -77
- package/src/components/form/Cascader/Cascader.tsx +0 -581
- package/src/components/form/Cascader/Cascader.types.ts +0 -581
- package/src/components/form/Cascader/hooks/index.ts +0 -3
- package/src/components/form/Cascader/hooks/useCascaderFieldNames.ts +0 -19
- package/src/components/form/Cascader/hooks/useCascaderOptions.ts +0 -127
- package/src/components/form/Cascader/hooks/useCascaderState.ts +0 -139
- package/src/components/form/Cascader/index.ts +0 -25
- package/src/components/form/Cascader/utils/formatDisplayValue.ts +0 -19
- package/src/components/form/Cascader/utils/index.ts +0 -1
- package/src/components/form/Checkbox/Checkbox.styles.ts +0 -607
- package/src/components/form/Checkbox/Checkbox.test.tsx +0 -1140
- package/src/components/form/Checkbox/Checkbox.tsx +0 -489
- package/src/components/form/Checkbox/Checkbox.types.ts +0 -472
- package/src/components/form/Checkbox/CheckboxGroup.tsx +0 -444
- package/src/components/form/Checkbox/index.tsx +0 -27
- package/src/components/form/DatePicker/DatePicker.styles.ts +0 -393
- package/src/components/form/DatePicker/DatePicker.test.tsx +0 -407
- package/src/components/form/DatePicker/DatePicker.tsx +0 -376
- package/src/components/form/DatePicker/DatePicker.types.ts +0 -250
- package/src/components/form/DatePicker/index.tsx +0 -15
- package/src/components/form/Form/Form.styles.ts +0 -357
- package/src/components/form/Form/Form.test.tsx +0 -122
- package/src/components/form/Form/Form.tsx +0 -257
- package/src/components/form/Form/Form.types.ts +0 -422
- package/src/components/form/Form/index.tsx +0 -31
- package/src/components/form/Form/useFormLogic.ts +0 -497
- package/src/components/form/Input/Input.styles.ts +0 -445
- package/src/components/form/Input/Input.test.tsx +0 -494
- package/src/components/form/Input/Input.tsx +0 -305
- package/src/components/form/Input/Input.types.ts +0 -297
- package/src/components/form/Input/index.tsx +0 -26
- package/src/components/form/Input/useInputLogic.test.ts +0 -82
- package/src/components/form/Input/useInputLogic.ts +0 -260
- package/src/components/form/InputNumber/InputNumber.styles.ts +0 -716
- package/src/components/form/InputNumber/InputNumber.tsx +0 -402
- package/src/components/form/InputNumber/InputNumber.types.ts +0 -336
- package/src/components/form/InputNumber/components/InputNumberClearButton.tsx +0 -24
- package/src/components/form/InputNumber/components/InputNumberControls.tsx +0 -33
- package/src/components/form/InputNumber/components/index.ts +0 -2
- package/src/components/form/InputNumber/hooks/index.ts +0 -4
- package/src/components/form/InputNumber/hooks/useInputNumberState.ts +0 -313
- package/src/components/form/InputNumber/hooks/useInputNumberValidation.ts +0 -148
- package/src/components/form/InputNumber/index.ts +0 -25
- package/src/components/form/Radio/Radio.styles.ts +0 -451
- package/src/components/form/Radio/Radio.test.tsx +0 -547
- package/src/components/form/Radio/Radio.tsx +0 -277
- package/src/components/form/Radio/Radio.types.ts +0 -414
- package/src/components/form/Radio/index.tsx +0 -21
- package/src/components/form/Select/Select.styles.ts +0 -518
- package/src/components/form/Select/Select.test.tsx +0 -648
- package/src/components/form/Select/Select.tsx +0 -474
- package/src/components/form/Select/Select.types.ts +0 -429
- package/src/components/form/Select/index.tsx +0 -30
- package/src/components/form/Slider/Slider.styles.ts +0 -139
- package/src/components/form/Slider/Slider.test.tsx +0 -553
- package/src/components/form/Slider/Slider.tsx +0 -312
- package/src/components/form/Slider/Slider.types.ts +0 -110
- package/src/components/form/Slider/index.tsx +0 -3
- package/src/components/form/Switch/Switch.styles.ts +0 -534
- package/src/components/form/Switch/Switch.test.tsx +0 -345
- package/src/components/form/Switch/Switch.tsx +0 -458
- package/src/components/form/Switch/Switch.types.ts +0 -386
- package/src/components/form/Switch/index.tsx +0 -26
- package/src/components/form/Textarea/Textarea.styles.ts +0 -592
- package/src/components/form/Textarea/Textarea.test.tsx +0 -1075
- package/src/components/form/Textarea/Textarea.tsx +0 -608
- package/src/components/form/Textarea/Textarea.types.ts +0 -374
- package/src/components/form/Textarea/index.tsx +0 -26
- package/src/components/form/TimePicker/TimePicker.styles.ts +0 -434
- package/src/components/form/TimePicker/TimePicker.test.tsx +0 -306
- package/src/components/form/TimePicker/TimePicker.tsx +0 -250
- package/src/components/form/TimePicker/TimePicker.types.ts +0 -385
- package/src/components/form/TimePicker/index.ts +0 -21
- package/src/components/form/Transfer/Transfer.styles.ts +0 -490
- package/src/components/form/Transfer/Transfer.test.tsx +0 -316
- package/src/components/form/Transfer/Transfer.tsx +0 -414
- package/src/components/form/Transfer/Transfer.types.ts +0 -565
- package/src/components/form/Transfer/components/TransferItem.tsx +0 -94
- package/src/components/form/Transfer/components/TransferList.tsx +0 -298
- package/src/components/form/Transfer/components/TransferOperations.tsx +0 -81
- package/src/components/form/Transfer/components/TransferPagination.tsx +0 -139
- package/src/components/form/Transfer/components/TransferSearch.tsx +0 -85
- package/src/components/form/Transfer/components/index.ts +0 -6
- package/src/components/form/Transfer/hooks/index.ts +0 -3
- package/src/components/form/Transfer/hooks/useTransferData.ts +0 -202
- package/src/components/form/Transfer/hooks/useTransferState.ts +0 -120
- package/src/components/form/Transfer/index.ts +0 -27
- package/src/components/form/Upload/Upload.styles.ts +0 -145
- package/src/components/form/Upload/Upload.test.tsx +0 -10
- package/src/components/form/Upload/Upload.tsx +0 -498
- package/src/components/form/Upload/Upload.types.ts +0 -200
- package/src/components/form/Upload/index.tsx +0 -12
- package/src/components/form/index.tsx +0 -152
- package/src/components/index.tsx +0 -145
- package/src/components/layout/Affix/Affix.styles.ts +0 -42
- package/src/components/layout/Affix/Affix.test.tsx +0 -10
- package/src/components/layout/Affix/Affix.tsx +0 -83
- package/src/components/layout/Affix/Affix.types.ts +0 -29
- package/src/components/layout/Affix/index.tsx +0 -3
- package/src/components/layout/Col/Col.styles.ts +0 -185
- package/src/components/layout/Col/Col.test.tsx +0 -537
- package/src/components/layout/Col/Col.tsx +0 -97
- package/src/components/layout/Col/Col.types.ts +0 -59
- package/src/components/layout/Col/index.tsx +0 -3
- package/src/components/layout/Container/Container.styles.ts +0 -163
- package/src/components/layout/Container/Container.test.tsx +0 -380
- package/src/components/layout/Container/Container.tsx +0 -123
- package/src/components/layout/Container/Container.types.ts +0 -63
- package/src/components/layout/Container/index.tsx +0 -3
- package/src/components/layout/Grid/Grid.styles.ts +0 -183
- package/src/components/layout/Grid/Grid.test.tsx +0 -637
- package/src/components/layout/Grid/Grid.tsx +0 -123
- package/src/components/layout/Grid/Grid.types.ts +0 -78
- package/src/components/layout/Grid/index.tsx +0 -3
- package/src/components/layout/Layout/Content.tsx +0 -30
- package/src/components/layout/Layout/Footer.tsx +0 -30
- package/src/components/layout/Layout/Header.tsx +0 -30
- package/src/components/layout/Layout/Layout.styles.ts +0 -84
- package/src/components/layout/Layout/Layout.test.tsx +0 -10
- package/src/components/layout/Layout/Layout.tsx +0 -28
- package/src/components/layout/Layout/Layout.types.ts +0 -58
- package/src/components/layout/Layout/Sider.tsx +0 -44
- package/src/components/layout/Layout/index.tsx +0 -22
- package/src/components/layout/Row/Row.styles.ts +0 -159
- package/src/components/layout/Row/Row.test.tsx +0 -467
- package/src/components/layout/Row/Row.tsx +0 -111
- package/src/components/layout/Row/Row.types.ts +0 -60
- package/src/components/layout/Row/index.tsx +0 -3
- package/src/components/layout/Space/Space.styles.ts +0 -255
- package/src/components/layout/Space/Space.test.tsx +0 -682
- package/src/components/layout/Space/Space.tsx +0 -203
- package/src/components/layout/Space/Space.types.ts +0 -92
- package/src/components/layout/Space/index.tsx +0 -12
- package/src/components/layout/index.tsx +0 -78
- package/src/components/navigation/Menu/Menu.constants.ts +0 -69
- package/src/components/navigation/Menu/Menu.stories.tsx +0 -107
- package/src/components/navigation/Menu/Menu.styles.ts +0 -767
- package/src/components/navigation/Menu/Menu.tsx +0 -352
- package/src/components/navigation/Menu/Menu.types.ts +0 -231
- package/src/components/navigation/Menu/Menu.utils.ts +0 -187
- package/src/components/navigation/Menu/MenuItem.tsx +0 -124
- package/src/components/navigation/Menu/SubMenu.tsx +0 -150
- package/src/components/navigation/Menu/index.tsx +0 -59
- package/src/components/navigation/NavBar/NavBar.styles.ts +0 -129
- package/src/components/navigation/NavBar/NavBar.test.tsx +0 -287
- package/src/components/navigation/NavBar/NavBar.tsx +0 -228
- package/src/components/navigation/NavBar/NavBar.types.ts +0 -54
- package/src/components/navigation/NavBar/index.tsx +0 -3
- package/src/components/navigation/Pagination/Pagination.styles.ts +0 -187
- package/src/components/navigation/Pagination/Pagination.test.tsx +0 -672
- package/src/components/navigation/Pagination/Pagination.tsx +0 -395
- package/src/components/navigation/Pagination/Pagination.types.ts +0 -87
- package/src/components/navigation/Pagination/index.ts +0 -24
- package/src/components/navigation/Pagination/index.tsx +0 -9
- package/src/components/navigation/Steps/Step.tsx +0 -36
- package/src/components/navigation/Steps/Steps.styles.ts +0 -169
- package/src/components/navigation/Steps/Steps.test.tsx +0 -14
- package/src/components/navigation/Steps/Steps.tsx +0 -112
- package/src/components/navigation/Steps/Steps.types.ts +0 -47
- package/src/components/navigation/Steps/index.tsx +0 -3
- package/src/components/navigation/Tabs/Tabs.styles.ts +0 -199
- package/src/components/navigation/Tabs/Tabs.test.tsx +0 -662
- package/src/components/navigation/Tabs/Tabs.tsx +0 -253
- package/src/components/navigation/Tabs/Tabs.types.ts +0 -115
- package/src/components/navigation/Tabs/index.tsx +0 -3
- package/src/components/navigation/index.tsx +0 -88
- package/src/constants/index.ts +0 -785
- package/src/hooks/index.ts +0 -60
- package/src/hooks/types.ts +0 -9
- package/src/hooks/useAsync.ts +0 -64
- package/src/hooks/useClickOutside.ts +0 -52
- package/src/hooks/useCounter.ts +0 -87
- package/src/hooks/useDebounce.ts +0 -150
- package/src/hooks/useDeepCompareEffect.ts +0 -88
- package/src/hooks/useEventHandling.ts +0 -444
- package/src/hooks/useEventListener.ts +0 -77
- package/src/hooks/useLifecycle.ts +0 -399
- package/src/hooks/useMediaQuery.ts +0 -75
- package/src/hooks/useMutation.ts +0 -233
- package/src/hooks/usePerformance.ts +0 -378
- package/src/hooks/usePerformanceMonitor.ts +0 -348
- package/src/hooks/usePlatform.ts +0 -64
- package/src/hooks/usePrevious.ts +0 -25
- package/src/hooks/useRequest.test.ts +0 -11
- package/src/hooks/useRequest.ts +0 -140
- package/src/hooks/useStateManagement.ts +0 -300
- package/src/hooks/useStorage.ts +0 -169
- package/src/hooks/useStyle.ts +0 -543
- package/src/hooks/useTheme.ts +0 -347
- package/src/hooks/useToggle.ts +0 -54
- package/src/hooks/useVirtualScroll.ts +0 -331
- package/src/index.ts +0 -323
- package/src/platform/index.ts +0 -1188
- package/src/providers/AppProvider.test.tsx +0 -63
- package/src/providers/AppProvider.tsx +0 -155
- package/src/providers/index.ts +0 -1
- package/src/theme/ThemeProvider.tsx +0 -279
- package/src/theme/ThemeProvider.types.ts +0 -26
- package/src/theme/animations.tsx +0 -660
- package/src/theme/defaults.ts +0 -188
- package/src/theme/design-system.ts +0 -562
- package/src/theme/design-tokens.ts +0 -1122
- package/src/theme/generated/dark-theme.scss +0 -120
- package/src/theme/generated/tokens.css +0 -441
- package/src/theme/generated/tokens.scss +0 -384
- package/src/theme/index.ts +0 -99
- package/src/theme/responsive.tsx +0 -195
- package/src/theme/styles/mixins.scss +0 -612
- package/src/theme/styles/variables.scss +0 -295
- package/src/theme/styles.ts +0 -403
- package/src/theme/tokens/colors.ts +0 -256
- package/src/theme/tokens/effects.ts +0 -260
- package/src/theme/tokens/index.ts +0 -217
- package/src/theme/tokens/spacing.ts +0 -137
- package/src/theme/tokens/typography.ts +0 -186
- package/src/theme/types.ts +0 -188
- package/src/theme/useThemeUtils.ts +0 -313
- package/src/theme/utils.ts +0 -501
- package/src/theme/variables.ts +0 -602
- package/src/types/accessibility.ts +0 -50
- package/src/types/button.ts +0 -560
- package/src/types/component-props.ts +0 -322
- package/src/types/env.d.ts +0 -20
- package/src/types/glob.d.ts +0 -4
- package/src/types/index.ts +0 -427
- package/src/types/modules.d.ts +0 -40
- package/src/types/standardized-components.ts +0 -550
- package/src/types/taro-adapter.d.ts +0 -174
- package/src/types/taro-components.d.ts +0 -73
- package/src/types/utils.ts +0 -400
- package/src/utils/__tests__/inputValidator.test.ts +0 -338
- package/src/utils/__tests__/responsiveUtils.test.ts +0 -311
- package/src/utils/__tests__/xssProtection.test.ts +0 -268
- package/src/utils/abort-controller.ts +0 -48
- package/src/utils/cache.ts +0 -79
- package/src/utils/createNamespace.ts +0 -24
- package/src/utils/environment.ts +0 -115
- package/src/utils/error-handler.ts +0 -88
- package/src/utils/errorLogger.ts +0 -193
- package/src/utils/formatUtils.ts +0 -412
- package/src/utils/http/error-codes.ts +0 -314
- package/src/utils/http/http-client.test.ts +0 -63
- package/src/utils/http/http-client.ts +0 -161
- package/src/utils/http/request-cache.ts +0 -127
- package/src/utils/http/request.ts +0 -954
- package/src/utils/http/taro-adapter.test.ts +0 -74
- package/src/utils/http/taro-adapter.ts +0 -24
- package/src/utils/http/types.ts +0 -414
- package/src/utils/http/web-adapter.ts +0 -33
- package/src/utils/index.ts +0 -112
- package/src/utils/inputValidator.ts +0 -264
- package/src/utils/performance/performance.ts +0 -839
- package/src/utils/responsiveUtils.ts +0 -348
- package/src/utils/rtl-support.ts +0 -354
- package/src/utils/security/api-security.ts +0 -394
- package/src/utils/security/xss-protection.ts +0 -69
- package/src/utils/securityHeaders.ts +0 -308
- package/src/utils/typeHelpers.ts +0 -16
- package/src/utils/types/dataProcessing.ts +0 -544
- package/src/utils/types/typeHelpers.ts +0 -197
- package/src/utils/xssProtection.ts +0 -468
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Taro 组件无障碍属性扩展
|
|
3
|
-
* 为 Taro 组件添加无障碍属性支持
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import type { AccessibilityProps, AccessibilityState } from './accessibility';
|
|
7
|
-
|
|
8
|
-
// 扩展 Taro 基础组件属性
|
|
9
|
-
declare module '@tarojs/components' {
|
|
10
|
-
// 扩展 StandardProps 接口,所有组件都会继承这些属性
|
|
11
|
-
interface StandardProps {
|
|
12
|
-
// 添加无障碍属性到基础接口
|
|
13
|
-
accessible?: boolean;
|
|
14
|
-
accessibilityLabel?: string;
|
|
15
|
-
accessibilityRole?: string;
|
|
16
|
-
accessibilityHint?: string;
|
|
17
|
-
accessibilityState?: AccessibilityState;
|
|
18
|
-
accessibilityValue?: {
|
|
19
|
-
min?: number;
|
|
20
|
-
max?: number;
|
|
21
|
-
now?: number;
|
|
22
|
-
text?: string;
|
|
23
|
-
};
|
|
24
|
-
accessibilityId?: string;
|
|
25
|
-
accessibilityLiveRegion?: 'none' | 'polite' | 'assertive';
|
|
26
|
-
onAccessibilityTap?: () => void;
|
|
27
|
-
onAccessibilityEscape?: () => void;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// View 组件已经继承了 StandardProps,无需单独扩展
|
|
31
|
-
// Text 组件已经继承了 StandardProps,无需单独扩展
|
|
32
|
-
|
|
33
|
-
// 扩展特定组件的事件接口
|
|
34
|
-
interface ViewProps {
|
|
35
|
-
// 保留原有的事件类型
|
|
36
|
-
onClick?: (event: ITouchEvent) => void;
|
|
37
|
-
onTouchStart?: (event: ITouchEvent) => void;
|
|
38
|
-
onTouchMove?: (event: ITouchEvent) => void;
|
|
39
|
-
onTouchEnd?: (event: ITouchEvent) => void;
|
|
40
|
-
onTouchCancel?: (event: ITouchEvent) => void;
|
|
41
|
-
onLongPress?: (event: ITouchEvent) => void;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
interface TextProps {
|
|
45
|
-
// 保留原有的事件类型
|
|
46
|
-
onClick?: (event: ITouchEvent) => void;
|
|
47
|
-
onTouchStart?: (event: ITouchEvent) => void;
|
|
48
|
-
onTouchMove?: (event: ITouchEvent) => void;
|
|
49
|
-
onTouchEnd?: (event: ITouchEvent) => void;
|
|
50
|
-
onTouchCancel?: (event: ITouchEvent) => void;
|
|
51
|
-
onLongPress?: (event: ITouchEvent) => void;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
interface ButtonProps {
|
|
55
|
-
// 保留原有的事件类型
|
|
56
|
-
onClick?: (event: ITouchEvent) => void;
|
|
57
|
-
onTouchStart?: (event: ITouchEvent) => void;
|
|
58
|
-
onTouchMove?: (event: ITouchEvent) => void;
|
|
59
|
-
onTouchEnd?: (event: ITouchEvent) => void;
|
|
60
|
-
onTouchCancel?: (event: ITouchEvent) => void;
|
|
61
|
-
onLongPress?: (event: ITouchEvent) => void;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
interface ImageProps {
|
|
65
|
-
// 保留原有的事件类型
|
|
66
|
-
onClick?: (event: ITouchEvent) => void;
|
|
67
|
-
onTouchStart?: (event: ITouchEvent) => void;
|
|
68
|
-
onTouchMove?: (event: ITouchEvent) => void;
|
|
69
|
-
onTouchEnd?: (event: ITouchEvent) => void;
|
|
70
|
-
onTouchCancel?: (event: ITouchEvent) => void;
|
|
71
|
-
onLongPress?: (event: ITouchEvent) => void;
|
|
72
|
-
}
|
|
73
|
-
}
|
package/src/types/utils.ts
DELETED
|
@@ -1,400 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 通用工具类型定义
|
|
3
|
-
* 提供类型安全的工具函数和类型守卫
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import * as React from 'react';
|
|
7
|
-
|
|
8
|
-
// ==================== 基础工具类型 ====================
|
|
9
|
-
|
|
10
|
-
/** 可选类型 */
|
|
11
|
-
export type Optional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
|
|
12
|
-
|
|
13
|
-
/** 必选类型 */
|
|
14
|
-
export type RequiredFields<T, K extends keyof T> = T & Required<Pick<T, K>>;
|
|
15
|
-
|
|
16
|
-
/** 深度可选类型 */
|
|
17
|
-
export type DeepOptional<T> = {
|
|
18
|
-
[P in keyof T]?: T[P] extends object ? DeepOptional<T[P]> : T[P];
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
/** 深度必选类型 */
|
|
22
|
-
export type DeepRequired<T> = {
|
|
23
|
-
[P in keyof T]-?: T[P] extends object ? DeepRequired<T[P]> : T[P];
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
/** 深度只读类型 */
|
|
27
|
-
export type DeepReadonly<T> = {
|
|
28
|
-
readonly [P in keyof T]: T[P] extends object ? DeepReadonly<T[P]> : T[P];
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
/** 深度可写类型 */
|
|
32
|
-
export type DeepWriteable<T> = {
|
|
33
|
-
-readonly [P in keyof T]: T[P] extends object ? DeepWriteable<T[P]> : T[P];
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
/** 递归排除类型 */
|
|
37
|
-
export type RecursiveExclude<T, E> = T extends object
|
|
38
|
-
? {
|
|
39
|
-
[P in keyof T as T[P] extends E ? never : P]: RecursiveExclude<T[P], E>;
|
|
40
|
-
}
|
|
41
|
-
: T;
|
|
42
|
-
|
|
43
|
-
/** 递归选择类型 */
|
|
44
|
-
export type RecursivePick<T, K extends string> = T extends object
|
|
45
|
-
? {
|
|
46
|
-
[P in keyof T as P extends K ? P : never]: RecursivePick<T[P], K>;
|
|
47
|
-
}
|
|
48
|
-
: T;
|
|
49
|
-
|
|
50
|
-
// ==================== 条件类型 ====================
|
|
51
|
-
|
|
52
|
-
/** 提取Promise返回类型 */
|
|
53
|
-
export type PromiseType<T> = T extends Promise<infer U> ? U : never;
|
|
54
|
-
|
|
55
|
-
/** 提取函数参数类型 */
|
|
56
|
-
export type FunctionArgs<T> = T extends (...args: infer A) => any ? A : never;
|
|
57
|
-
|
|
58
|
-
/** 提取函数返回类型 */
|
|
59
|
-
export type FunctionReturn<T> = T extends (...args: any) => infer R ? R : never;
|
|
60
|
-
|
|
61
|
-
/** 提取React组件Props类型 */
|
|
62
|
-
export type ComponentProps<T> = T extends React.ComponentType<infer P> ? P : never;
|
|
63
|
-
|
|
64
|
-
/** 提取React组件Ref类型 */
|
|
65
|
-
export type ComponentRef<T> = T extends React.Ref<infer R> ? R : never;
|
|
66
|
-
|
|
67
|
-
/** 过滤掉undefined和null的类型 */
|
|
68
|
-
export type NonNullable<T> = T extends null | undefined ? never : T;
|
|
69
|
-
|
|
70
|
-
/** 过滤掉falsy值的类型 */
|
|
71
|
-
export type Truthy<T> = T extends false | 0 | '' | null | undefined ? never : T;
|
|
72
|
-
|
|
73
|
-
// ==================== 字符串工具类型 ====================
|
|
74
|
-
|
|
75
|
-
/** 首字母大写 */
|
|
76
|
-
export type Capitalize<S extends string> = S extends `${infer First}${infer Rest}` ? `${Uppercase<First>}${Rest}` : S;
|
|
77
|
-
|
|
78
|
-
/** 首字母小写 */
|
|
79
|
-
export type Uncapitalize<S extends string> = S extends `${infer First}${infer Rest}` ? `${Lowercase<First>}${Rest}` : S;
|
|
80
|
-
|
|
81
|
-
/** 转换为连字符格式 */
|
|
82
|
-
export type KebabCase<S> = S extends `${infer First}${infer Rest}`
|
|
83
|
-
? Rest extends Uncapitalize<Rest>
|
|
84
|
-
? `${Lowercase<First>}${KebabCase<Rest>}`
|
|
85
|
-
: `${Lowercase<First>}-${KebabCase<Rest>}`
|
|
86
|
-
: S;
|
|
87
|
-
|
|
88
|
-
/** 转换为驼峰格式 */
|
|
89
|
-
export type CamelCase<S> = S extends `${infer First}-${infer Rest}` ? `${First}${Capitalize<CamelCase<Rest>>}` : S;
|
|
90
|
-
|
|
91
|
-
// ==================== 对象工具类型 ====================
|
|
92
|
-
|
|
93
|
-
/** 合并两个对象类型 */
|
|
94
|
-
export type Merge<T, U> = Omit<T, keyof U> & U;
|
|
95
|
-
|
|
96
|
-
/** 深度合并两个对象类型 */
|
|
97
|
-
export type DeepMerge<T, U> = T extends object
|
|
98
|
-
? U extends object
|
|
99
|
-
? {
|
|
100
|
-
[K in keyof T | keyof U]: K extends keyof T
|
|
101
|
-
? K extends keyof U
|
|
102
|
-
? DeepMerge<T[K], U[K]>
|
|
103
|
-
: T[K]
|
|
104
|
-
: K extends keyof U
|
|
105
|
-
? U[K]
|
|
106
|
-
: never;
|
|
107
|
-
}
|
|
108
|
-
: T
|
|
109
|
-
: U;
|
|
110
|
-
|
|
111
|
-
/** 选择对象中的部分属性 */
|
|
112
|
-
export type PickPartial<T, K extends keyof T> = Pick<T, K> & Partial<T>;
|
|
113
|
-
|
|
114
|
-
/** 选择对象中的必选属性 */
|
|
115
|
-
export type PickRequired<T, K extends keyof T> = Pick<T, K> & Required<Pick<T, K>>;
|
|
116
|
-
|
|
117
|
-
// ==================== 数组工具类型 ====================
|
|
118
|
-
|
|
119
|
-
/** 数组元素类型 */
|
|
120
|
-
export type ArrayElement<T> = T extends readonly (infer U)[] ? U : never;
|
|
121
|
-
|
|
122
|
-
/** 过滤数组中的特定类型 */
|
|
123
|
-
export type FilterArray<T, U> = T extends [infer First, ...infer Rest]
|
|
124
|
-
? First extends U
|
|
125
|
-
? [First, ...FilterArray<Rest, U>]
|
|
126
|
-
: FilterArray<Rest, U>
|
|
127
|
-
: [];
|
|
128
|
-
|
|
129
|
-
// ==================== 函数工具类型 ====================
|
|
130
|
-
|
|
131
|
-
/** 可选参数函数类型 */
|
|
132
|
-
export type OptionalArgs<T extends (...args: any) => any> = (
|
|
133
|
-
...args: Partial<FunctionArgs<T>> & []
|
|
134
|
-
) => FunctionReturn<T>;
|
|
135
|
-
|
|
136
|
-
/** 柯里化函数类型 */
|
|
137
|
-
export type Curried<T> = T extends (...args: infer A) => infer R
|
|
138
|
-
? A extends [infer First, ...infer Rest]
|
|
139
|
-
? (arg: First) => Curried<(...args: Rest) => R>
|
|
140
|
-
: R
|
|
141
|
-
: never;
|
|
142
|
-
|
|
143
|
-
/** 防抖函数类型 */
|
|
144
|
-
export type Debounced<T extends (...args: any) => any> = {
|
|
145
|
-
(...args: Parameters<T>): ReturnType<T> | undefined;
|
|
146
|
-
cancel: () => void;
|
|
147
|
-
flush: () => ReturnType<T> | undefined;
|
|
148
|
-
};
|
|
149
|
-
|
|
150
|
-
/** 节流函数类型 */
|
|
151
|
-
export type Throttled<T extends (...args: any) => any> = {
|
|
152
|
-
(...args: Parameters<T>): ReturnType<T> | undefined;
|
|
153
|
-
cancel: () => void;
|
|
154
|
-
};
|
|
155
|
-
|
|
156
|
-
// ==================== 类型守卫 ====================
|
|
157
|
-
|
|
158
|
-
/** 类型守卫:检查是否为字符串 */
|
|
159
|
-
export function isString(value: unknown): value is string {
|
|
160
|
-
return typeof value === 'string';
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/** 类型守卫:检查是否为数字 */
|
|
164
|
-
export function isNumber(value: unknown): value is number {
|
|
165
|
-
return typeof value === 'number' && !isNaN(value);
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
/** 类型守卫:检查是否为布尔值 */
|
|
169
|
-
export function isBoolean(value: unknown): value is boolean {
|
|
170
|
-
return typeof value === 'boolean';
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
/** 类型守卫:检查是否为数组 */
|
|
174
|
-
export function isArray<T>(value: unknown): value is T[] {
|
|
175
|
-
return Array.isArray(value);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
/** 类型守卫:检查是否为对象 */
|
|
179
|
-
export function isObject<T extends object>(value: unknown): value is T {
|
|
180
|
-
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
/** 类型守卫:检查是否为函数 */
|
|
184
|
-
export function isFunction<T extends (...args: any) => any>(value: unknown): value is T {
|
|
185
|
-
return typeof value === 'function';
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
/** 类型守卫:检查是否为Promise */
|
|
189
|
-
export function isPromise<T>(value: unknown): value is Promise<T> {
|
|
190
|
-
return value instanceof Promise;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
/** 类型守卫:检查是否为React元素 */
|
|
194
|
-
export function isReactElement(value: unknown): value is React.ReactElement {
|
|
195
|
-
return React.isValidElement(value);
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
/** 类型守卫:检查是否为React组件 */
|
|
199
|
-
export function isReactComponent<T extends React.ComponentType<any>>(value: unknown): value is T {
|
|
200
|
-
return isFunction(value);
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
/** 类型守卫:检查是否为undefined */
|
|
204
|
-
export function isUndefined(value: unknown): value is undefined {
|
|
205
|
-
return value === undefined;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
/** 类型守卫:检查是否为null */
|
|
209
|
-
export function isNull(value: unknown): value is null {
|
|
210
|
-
return value === null;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
/** 类型守卫:检查是否为空值 */
|
|
214
|
-
export function isEmpty(value: unknown): value is null | undefined | '' | 0 | false {
|
|
215
|
-
return value === null || value === undefined || value === '' || value === 0 || value === false;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
/** 类型守卫:检查是否为非空值 */
|
|
219
|
-
export function isNotEmpty<T>(value: T | null | undefined): value is T {
|
|
220
|
-
return value !== null && value !== undefined;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
// ==================== 验证工具类型 ====================
|
|
224
|
-
|
|
225
|
-
/** 验证结果类型 */
|
|
226
|
-
export type ValidationResult<T> = { success: true; data: T } | { success: false; error: string };
|
|
227
|
-
|
|
228
|
-
/** 验证函数类型 */
|
|
229
|
-
export type Validator<T> = (value: unknown) => ValidationResult<T>;
|
|
230
|
-
|
|
231
|
-
/** 创建验证器 */
|
|
232
|
-
export function createValidator<T>(
|
|
233
|
-
validate: (value: unknown) => value is T,
|
|
234
|
-
errorMessage: string = 'Invalid value',
|
|
235
|
-
): Validator<T> {
|
|
236
|
-
return (value: unknown): ValidationResult<T> => {
|
|
237
|
-
if (validate(value)) {
|
|
238
|
-
return { success: true, data: value };
|
|
239
|
-
}
|
|
240
|
-
return { success: false, error: errorMessage };
|
|
241
|
-
};
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
// ==================== 事件处理工具类型 ====================
|
|
245
|
-
|
|
246
|
-
/** 通用事件处理器类型 */
|
|
247
|
-
export type EventHandler<T = any> = (event: T) => void;
|
|
248
|
-
|
|
249
|
-
/** 阻止默认行为的事件处理器 */
|
|
250
|
-
export type PreventDefaultHandler<T = any> = (event: T) => void;
|
|
251
|
-
|
|
252
|
-
/** 停止传播的事件处理器 */
|
|
253
|
-
export type StopPropagationHandler<T = any> = (event: T) => void;
|
|
254
|
-
|
|
255
|
-
/** 创建阻止默认行为的事件处理器 */
|
|
256
|
-
export function createPreventDefaultHandler<T extends { preventDefault: () => void }>(
|
|
257
|
-
handler: EventHandler<T>,
|
|
258
|
-
): PreventDefaultHandler<T> {
|
|
259
|
-
return (event: T) => {
|
|
260
|
-
event.preventDefault();
|
|
261
|
-
handler(event);
|
|
262
|
-
};
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
/** 创建停止传播的事件处理器 */
|
|
266
|
-
export function createStopPropagationHandler<T extends { stopPropagation: () => void }>(
|
|
267
|
-
handler: EventHandler<T>,
|
|
268
|
-
): StopPropagationHandler<T> {
|
|
269
|
-
return (event: T) => {
|
|
270
|
-
event.stopPropagation();
|
|
271
|
-
handler(event);
|
|
272
|
-
};
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
// ==================== 样式工具类型 ====================
|
|
276
|
-
|
|
277
|
-
/** CSS属性类型 */
|
|
278
|
-
export type CSSProperties = React.CSSProperties;
|
|
279
|
-
|
|
280
|
-
/** 样式对象类型 */
|
|
281
|
-
export type StyleObject = CSSProperties;
|
|
282
|
-
|
|
283
|
-
/** 类名类型 */
|
|
284
|
-
export type ClassName = string | string[] | { [key: string]: boolean } | undefined;
|
|
285
|
-
|
|
286
|
-
/** 合并类名 */
|
|
287
|
-
export function classNames(...classes: ClassName[]): string {
|
|
288
|
-
return classes
|
|
289
|
-
.filter(Boolean)
|
|
290
|
-
.map((cls) => {
|
|
291
|
-
if (typeof cls === 'string') return cls;
|
|
292
|
-
if (Array.isArray(cls)) return cls.filter(Boolean).join(' ');
|
|
293
|
-
if (typeof cls === 'object') {
|
|
294
|
-
return Object.entries(cls)
|
|
295
|
-
.filter(([, value]) => Boolean(value))
|
|
296
|
-
.map(([key]) => key)
|
|
297
|
-
.join(' ');
|
|
298
|
-
}
|
|
299
|
-
return '';
|
|
300
|
-
})
|
|
301
|
-
.join(' ')
|
|
302
|
-
.trim();
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
/** 合并样式对象 */
|
|
306
|
-
export function mergeStyles(...styles: (StyleObject | undefined)[]): StyleObject {
|
|
307
|
-
return Object.assign({}, ...styles.filter(Boolean));
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
// ==================== 异步工具类型 ====================
|
|
311
|
-
|
|
312
|
-
/** 异步状态类型 */
|
|
313
|
-
export type AsyncState<T> =
|
|
314
|
-
| { status: 'idle' }
|
|
315
|
-
| { status: 'loading' }
|
|
316
|
-
| { status: 'success'; data: T }
|
|
317
|
-
| { status: 'error'; error: string };
|
|
318
|
-
|
|
319
|
-
/** 异步操作类型 */
|
|
320
|
-
export type AsyncOperation<T> = Promise<T> & {
|
|
321
|
-
cancel: () => void;
|
|
322
|
-
};
|
|
323
|
-
|
|
324
|
-
/** 创建可取消的Promise */
|
|
325
|
-
export function createCancellablePromise<T>(promise: Promise<T>): AsyncOperation<T> {
|
|
326
|
-
let cancelled = false;
|
|
327
|
-
|
|
328
|
-
const cancellablePromise = promise.then(
|
|
329
|
-
(data) => {
|
|
330
|
-
if (cancelled) {
|
|
331
|
-
throw new Error('Promise was cancelled');
|
|
332
|
-
}
|
|
333
|
-
return data;
|
|
334
|
-
},
|
|
335
|
-
(error) => {
|
|
336
|
-
if (cancelled) {
|
|
337
|
-
throw new Error('Promise was cancelled');
|
|
338
|
-
}
|
|
339
|
-
throw error;
|
|
340
|
-
},
|
|
341
|
-
) as AsyncOperation<T>;
|
|
342
|
-
|
|
343
|
-
cancellablePromise.cancel = () => {
|
|
344
|
-
cancelled = true;
|
|
345
|
-
};
|
|
346
|
-
|
|
347
|
-
return cancellablePromise;
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
// ==================== 导出工具类型 ====================
|
|
351
|
-
|
|
352
|
-
/** 通用键值对类型 */
|
|
353
|
-
export type KeyValuePair<K = string, V = any> = [K, V];
|
|
354
|
-
|
|
355
|
-
/** 通用记录类型 */
|
|
356
|
-
export type RecordType<K extends string, V> = Record<K, V>;
|
|
357
|
-
|
|
358
|
-
/** 通用映射类型 */
|
|
359
|
-
export type MapType<K, V> = Map<K, V>;
|
|
360
|
-
|
|
361
|
-
/** 通用集合类型 */
|
|
362
|
-
export type SetType<T> = Set<T>;
|
|
363
|
-
|
|
364
|
-
// ==================== 类型安全工具函数 ====================
|
|
365
|
-
|
|
366
|
-
/** 类型安全的Object.keys */
|
|
367
|
-
export function keys<T extends object>(obj: T): (keyof T)[] {
|
|
368
|
-
return Object.keys(obj) as (keyof T)[];
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
/** 类型安全的Object.values */
|
|
372
|
-
export function values<T extends object>(obj: T): T[keyof T][] {
|
|
373
|
-
return Object.values(obj) as T[keyof T][];
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
/** 类型安全的Object.entries */
|
|
377
|
-
export function entries<T extends object>(obj: T): [keyof T, T[keyof T]][] {
|
|
378
|
-
return Object.entries(obj) as [keyof T, T[keyof T]][];
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
/** 类型安全的Object.fromEntries */
|
|
382
|
-
export function fromEntries<K extends string, V>(entries: [K, V][]): Record<K, V> {
|
|
383
|
-
return Object.fromEntries(entries) as Record<K, V>;
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
// ==================== 类型推断工具 ====================
|
|
387
|
-
|
|
388
|
-
/** 推断数组元素类型 */
|
|
389
|
-
export type InferArray<T> = T extends (infer U)[] ? U : never;
|
|
390
|
-
|
|
391
|
-
/** 推断Promise返回类型 */
|
|
392
|
-
export type InferPromise<T> = T extends Promise<infer U> ? U : never;
|
|
393
|
-
|
|
394
|
-
/** 推断函数参数类型 */
|
|
395
|
-
export type InferArgs<T> = T extends (...args: infer A) => any ? A : never;
|
|
396
|
-
|
|
397
|
-
/** 推断函数返回类型 */
|
|
398
|
-
export type InferReturn<T> = T extends (...args: any) => infer R ? R : never;
|
|
399
|
-
|
|
400
|
-
// ==================== 默认导出 ====================
|