@therealtinhtute/baroiplayer 1.2.1 → 2.0.0-beta.1
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 +90 -71
- package/dist/components/icons/index.d.ts +36 -0
- package/dist/components/icons/index.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/ArrowLeftIcon.d.ts +4 -0
- package/dist/components/icons/svg-icons/ArrowLeftIcon.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/ArrowRightIcon.d.ts +5 -0
- package/dist/components/icons/svg-icons/ArrowRightIcon.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/AudioIcon.d.ts +5 -0
- package/dist/components/icons/svg-icons/AudioIcon.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/BackwardIcon.d.ts +5 -0
- package/dist/components/icons/svg-icons/BackwardIcon.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/CameraIcon.d.ts +5 -0
- package/dist/components/icons/svg-icons/CameraIcon.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/CheckIcon.d.ts +5 -0
- package/dist/components/icons/svg-icons/CheckIcon.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/EnablePiPIcon.d.ts +4 -0
- package/dist/components/icons/svg-icons/EnablePiPIcon.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/ForwardIcon.d.ts +5 -0
- package/dist/components/icons/svg-icons/ForwardIcon.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/FullscreenEnterIcon.d.ts +5 -0
- package/dist/components/icons/svg-icons/FullscreenEnterIcon.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/FullscreenExitIcon.d.ts +5 -0
- package/dist/components/icons/svg-icons/FullscreenExitIcon.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/LoadingIcon.d.ts +5 -0
- package/dist/components/icons/svg-icons/LoadingIcon.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/PauseIcon.d.ts +5 -0
- package/dist/components/icons/svg-icons/PauseIcon.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/PlayIcon.d.ts +5 -0
- package/dist/components/icons/svg-icons/PlayIcon.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/PlaybackSpeedIcon.d.ts +5 -0
- package/dist/components/icons/svg-icons/PlaybackSpeedIcon.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/QualityIcon.d.ts +5 -0
- package/dist/components/icons/svg-icons/QualityIcon.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/SettingsIcon.d.ts +5 -0
- package/dist/components/icons/svg-icons/SettingsIcon.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/SliderIcon.d.ts +5 -0
- package/dist/components/icons/svg-icons/SliderIcon.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/SubtitleIcon.d.ts +5 -0
- package/dist/components/icons/svg-icons/SubtitleIcon.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/SubtitleOffIcon.d.ts +5 -0
- package/dist/components/icons/svg-icons/SubtitleOffIcon.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/UnPiPIcon.d.ts +4 -0
- package/dist/components/icons/svg-icons/UnPiPIcon.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/VolumeMutedIcon.d.ts +5 -0
- package/dist/components/icons/svg-icons/VolumeMutedIcon.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/VolumeOneIcon.d.ts +5 -0
- package/dist/components/icons/svg-icons/VolumeOneIcon.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/VolumeThreeIcon.d.ts +5 -0
- package/dist/components/icons/svg-icons/VolumeThreeIcon.d.ts.map +1 -0
- package/dist/components/icons/svg-icons/VolumeTwoIcon.d.ts +5 -0
- package/dist/components/icons/svg-icons/VolumeTwoIcon.d.ts.map +1 -0
- package/dist/components/variants/gradient/gradient-audio.d.ts +13 -0
- package/dist/components/variants/gradient/gradient-audio.d.ts.map +1 -0
- package/dist/components/variants/gradient/gradient-controls.d.ts +4 -0
- package/dist/components/variants/gradient/gradient-controls.d.ts.map +1 -0
- package/dist/components/variants/gradient/gradient-glyphs.d.ts +30 -0
- package/dist/components/variants/gradient/gradient-glyphs.d.ts.map +1 -0
- package/dist/components/variants/gradient/gradient-video.d.ts +16 -0
- package/dist/components/variants/gradient/gradient-video.d.ts.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -41
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +750 -5640
- package/dist/index.mjs.map +1 -1
- package/dist/package.json +3 -0
- package/package.json +110 -114
- package/src/components/variants/gradient/gradient-audio.tsx +47 -0
- package/src/components/variants/gradient/gradient-controls.tsx +254 -0
- package/src/components/variants/gradient/gradient-glyphs.test.tsx +69 -0
- package/src/components/variants/gradient/gradient-glyphs.tsx +129 -0
- package/src/components/variants/gradient/gradient-skin.css +211 -0
- package/src/components/variants/gradient/gradient-video.tsx +70 -0
- package/src/index.ts +5 -198
- package/src/test/accessibility-utils.ts +0 -59
- package/dist/context/media.js +0 -1
- package/dist/context/media.mjs +0 -3
- package/dist/context/store.js +0 -1
- package/dist/context/store.mjs +0 -3
- package/dist/context-Bzd5QCKM.cjs +0 -7
- package/dist/context-Bzd5QCKM.cjs.map +0 -1
- package/dist/context-DD_SH4tT.js +0 -1053
- package/dist/context-DD_SH4tT.js.map +0 -1
- package/dist/core-events-BRnLMB7s.cjs +0 -2
- package/dist/core-events-BRnLMB7s.cjs.map +0 -1
- package/dist/core-events-v_mKdj5p.js +0 -417
- package/dist/core-events-v_mKdj5p.js.map +0 -1
- package/dist/core-plugins-CMBv-yVh.cjs +0 -2
- package/dist/core-plugins-CMBv-yVh.cjs.map +0 -1
- package/dist/core-plugins-CqCxLkbd.js +0 -754
- package/dist/core-plugins-CqCxLkbd.js.map +0 -1
- package/dist/core.js +0 -15
- package/dist/core.js.map +0 -1
- package/dist/core.mjs +0 -960
- package/dist/core.mjs.map +0 -1
- package/dist/enhanced-components-BwjBqSA1.js +0 -2858
- package/dist/enhanced-components-BwjBqSA1.js.map +0 -1
- package/dist/enhanced-components-C-ka-XLp.cjs +0 -2
- package/dist/enhanced-components-C-ka-XLp.cjs.map +0 -1
- package/dist/hooks-B-IIWPJr.js +0 -1842
- package/dist/hooks-B-IIWPJr.js.map +0 -1
- package/dist/hooks-DcHzmBwA.cjs +0 -4
- package/dist/hooks-DcHzmBwA.cjs.map +0 -1
- package/dist/minimal-components-BYsMQde5.js +0 -1610
- package/dist/minimal-components-BYsMQde5.js.map +0 -1
- package/dist/minimal-components-CsxQbDp7.cjs +0 -2
- package/dist/minimal-components-CsxQbDp7.cjs.map +0 -1
- package/dist/minimal-components.css +0 -1
- package/dist/mona-loading.gif +0 -0
- package/dist/performance-monitor-DCSijLJg.js +0 -312
- package/dist/performance-monitor-DCSijLJg.js.map +0 -1
- package/dist/performance-monitor-wNFKmqMr.cjs +0 -2
- package/dist/performance-monitor-wNFKmqMr.cjs.map +0 -1
- package/dist/rolldown-runtime-BmowowmI.js +0 -14
- package/dist/rolldown-runtime-mLOUI7ql.cjs +0 -1
- package/dist/utils-D2gQ7c2R.js +0 -64
- package/dist/utils-D2gQ7c2R.js.map +0 -1
- package/dist/utils-DJaAwiZ9.cjs +0 -2
- package/dist/utils-DJaAwiZ9.cjs.map +0 -1
- package/dist/utils.js +0 -1
- package/dist/utils.mjs +0 -3
- package/src/adapters/videojs-adapter.tsx +0 -470
- package/src/assets/mona-loading.gif +0 -0
- package/src/components/AnimateLoading.tsx +0 -111
- package/src/components/LoadingState.tsx +0 -239
- package/src/components/__tests__/media-player-accessibility.test.tsx +0 -510
- package/src/components/__tests__/media-player-react19.test.tsx +0 -457
- package/src/components/accessibility/keyboard-help-overlay.tsx +0 -207
- package/src/components/audio-player.tsx +0 -85
- package/src/components/basic/index.ts +0 -37
- package/src/components/enhanced/advanced-features.tsx +0 -311
- package/src/components/enhanced/debug-panel.tsx +0 -448
- package/src/components/enhanced/enhanced-controls.tsx +0 -597
- package/src/components/enhanced/enhanced-media-player.tsx +0 -566
- package/src/components/enhanced/error-handling.tsx +0 -338
- package/src/components/enhanced/index.ts +0 -39
- package/src/components/enhanced/media-player-enhanced.tsx +0 -383
- package/src/components/examples/basic-video-player.tsx +0 -50
- package/src/components/examples/custom-controls-example.tsx +0 -63
- package/src/components/examples/enhanced-controls-example.tsx +0 -100
- package/src/components/examples/enhanced-media-player-example.tsx +0 -302
- package/src/components/examples/loading-states-demo.tsx +0 -141
- package/src/components/examples/react-19-demo.tsx +0 -349
- package/src/components/examples/volume-orientation-demo.tsx +0 -105
- package/src/components/icon-demo.tsx +0 -196
- package/src/components/legacy.tsx +0 -87
- package/src/components/media-metadata-display.tsx +0 -99
- package/src/components/media-player-audio.tsx +0 -39
- package/src/components/media-player-controls.tsx +0 -223
- package/src/components/media-player-error.tsx +0 -163
- package/src/components/media-player-fullscreen.tsx +0 -109
- package/src/components/media-player-hls.tsx +0 -111
- package/src/components/media-player-loading.tsx +0 -76
- package/src/components/media-player-play.tsx +0 -75
- package/src/components/media-player-root.tsx +0 -338
- package/src/components/media-player-seek.tsx +0 -168
- package/src/components/media-player-time.tsx +0 -99
- package/src/components/media-player-tooltip.tsx +0 -58
- package/src/components/media-player-video.tsx +0 -54
- package/src/components/media-player-volume.tsx +0 -155
- package/src/components/media-player.tsx +0 -292
- package/src/components/media-suspense.tsx +0 -344
- package/src/components/player-settings-form.tsx +0 -158
- package/src/components/react-player-wrapper.tsx +0 -651
- package/src/components/simple-video-player.tsx +0 -62
- package/src/components/ui/blur-poster.tsx +0 -96
- package/src/components/ui/empty-state.tsx +0 -91
- package/src/components/ui/enhanced-seek-bar.tsx +0 -254
- package/src/components/ui/error-state.tsx +0 -124
- package/src/components/ui/fullscreen-button.tsx +0 -81
- package/src/components/ui/loading-skeleton.tsx +0 -107
- package/src/components/ui/media-resource-preloader.tsx +0 -458
- package/src/components/ui/offline-message.tsx +0 -98
- package/src/components/ui/play-button.tsx +0 -99
- package/src/components/ui/seek-bar.tsx +0 -191
- package/src/components/ui/time-display.tsx +0 -61
- package/src/components/ui/volume-control.tsx +0 -190
- package/src/components/unified/base-media-player.tsx +0 -252
- package/src/components/unified/media-player.tsx +0 -75
- package/src/components/variants/minimal/AccessibleMinimalPlayer.tsx +0 -587
- package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.tsx +0 -573
- package/src/components/variants/minimal/MinimalControls.tsx +0 -124
- package/src/components/variants/minimal/MinimalLoading.tsx +0 -28
- package/src/components/variants/minimal/MinimalMediaPlayer.tsx +0 -318
- package/src/components/variants/minimal/MinimalOverlay.tsx +0 -58
- package/src/components/variants/minimal/MinimalPlayButton.tsx +0 -56
- package/src/components/variants/minimal/MinimalSeekBar.tsx +0 -140
- package/src/components/variants/minimal/MinimalVolumeControl.tsx +0 -75
- package/src/components/variants/minimal/SimpleMinimalPlayer.tsx +0 -206
- package/src/components/variants/minimal/components/CenterPlayButton.tsx +0 -22
- package/src/components/variants/minimal/components/ControlBar.tsx +0 -142
- package/src/components/variants/minimal/components/EnhancedSettingsMenu.tsx +0 -412
- package/src/components/variants/minimal/components/PlaybackControls.tsx +0 -46
- package/src/components/variants/minimal/components/RightControls.tsx +0 -164
- package/src/components/variants/minimal/components/SeekBar.tsx +0 -127
- package/src/components/variants/minimal/components/SettingsDropdown.tsx +0 -68
- package/src/components/variants/minimal/components/SubtitleDisplay.tsx +0 -21
- package/src/components/variants/minimal/components/TimeDisplay.tsx +0 -15
- package/src/components/variants/minimal/components/VideoElement.tsx +0 -35
- package/src/components/variants/minimal/components/VolumeControl.tsx +0 -220
- package/src/components/variants/minimal/index.ts +0 -23
- package/src/components/video-player.tsx +0 -100
- package/src/context/__tests__/media-store.test.ts +0 -509
- package/src/context/error-handling.ts +0 -398
- package/src/context/media-context.tsx +0 -254
- package/src/context/media-provider.tsx +0 -264
- package/src/context/media-store.ts +0 -387
- package/src/context/persistence.ts +0 -462
- package/src/core/events/event-system.ts +0 -448
- package/src/core/events/hooks.ts +0 -325
- package/src/core/events/index.ts +0 -22
- package/src/core/events/middleware.ts +0 -286
- package/src/core/index.ts +0 -22
- package/src/core/optimization/bundle-optimizer.tsx +0 -312
- package/src/core/performance/cicd.ts +0 -98
- package/src/core/performance/index.ts +0 -38
- package/src/core/performance/media-loading-optimizer.ts +0 -545
- package/src/core/performance/performance-budgets.ts +0 -437
- package/src/core/performance/performance-monitor.tsx +0 -488
- package/src/core/performance/performance-testing.ts +0 -461
- package/src/core/plugins/__tests__/registry.test.ts +0 -595
- package/src/core/plugins/base-plugin.ts +0 -225
- package/src/core/plugins/enhanced-plugin-system.ts +0 -435
- package/src/core/plugins/examples/analytics-plugin.ts +0 -241
- package/src/core/plugins/index.ts +0 -39
- package/src/core/plugins/registry.ts +0 -546
- package/src/core/plugins/types.ts +0 -169
- package/src/core/plugins/utils.ts +0 -317
- package/src/core/progressive-loading.tsx +0 -331
- package/src/core/providers/enhanced-hls-provider.ts +0 -307
- package/src/core/providers/lazy-provider.tsx +0 -14
- package/src/core/providers/service-provider.tsx +0 -164
- package/src/core/utils.tsx +0 -34
- package/src/features/media-session/media-session-manager.ts +0 -411
- package/src/features/picture-in-picture/pip-manager.ts +0 -428
- package/src/features/playlist/playlist-manager.ts +0 -626
- package/src/features/subtitles/subtitle-manager.ts +0 -435
- package/src/features/subtitles/subtitle-parser.ts +0 -284
- package/src/features/thumbnails/thumbnail-generator.ts +0 -528
- package/src/hooks/__tests__/currentTime-fix.test.ts +0 -149
- package/src/hooks/__tests__/use-media-player.test.ts +0 -712
- package/src/hooks/__tests__/use-media-state.test.tsx +0 -316
- package/src/hooks/accessibility/index.ts +0 -27
- package/src/hooks/accessibility/use-accessibility-preferences.ts +0 -190
- package/src/hooks/accessibility/use-focus-management.ts +0 -183
- package/src/hooks/accessibility/use-keyboard-shortcuts.ts +0 -152
- package/src/hooks/accessibility/use-screen-reader.ts +0 -212
- package/src/hooks/core/index.ts +0 -47
- package/src/hooks/legacy.ts +0 -21
- package/src/hooks/use-buffer-health.ts +0 -218
- package/src/hooks/use-enhanced-media-player.ts +0 -575
- package/src/hooks/use-focus-trap.tsx +0 -162
- package/src/hooks/use-intelligent-preloading.ts +0 -387
- package/src/hooks/use-keyboard-controls.ts +0 -115
- package/src/hooks/use-keyboard-shortcuts.ts +0 -255
- package/src/hooks/use-media-actions.ts +0 -184
- package/src/hooks/use-media-metadata.ts +0 -91
- package/src/hooks/use-media-optimistic.ts +0 -264
- package/src/hooks/use-media-player.ts +0 -343
- package/src/hooks/use-media-state.ts +0 -194
- package/src/hooks/use-memory-optimization.ts +0 -360
- package/src/hooks/use-network-status.ts +0 -124
- package/src/hooks/use-optimistic-controls.ts +0 -95
- package/src/hooks/use-optimized-media.ts +0 -283
- package/src/hooks/use-smart-preload.ts +0 -229
- package/src/hooks/use-touch-gestures.ts +0 -461
- package/src/hooks/useEnhancedSubtitles.ts +0 -258
- package/src/hooks/useKeyboardShortcuts.ts +0 -106
- package/src/hooks/useMediaControls.ts +0 -52
- package/src/hooks/useScreenshot.ts +0 -77
- package/src/hooks/useSubtitles.ts +0 -91
- package/src/hooks/useVideoPlayer.ts +0 -278
- package/src/icons/components/FullscreenIcon.tsx +0 -36
- package/src/icons/components/SettingsIcon.tsx +0 -37
- package/src/icons/components/animated/LoadingIcon.tsx +0 -27
- package/src/icons/components/animated/PlayPauseIcon.tsx +0 -42
- package/src/icons/components/media/PauseIcon.tsx +0 -38
- package/src/icons/components/media/PlayIcon.tsx +0 -37
- package/src/icons/components/volume/VolumeIcon.tsx +0 -38
- package/src/icons/components/volume/VolumeOffIcon.tsx +0 -38
- package/src/icons/index.ts +0 -56
- package/src/icons/provider.tsx +0 -58
- package/src/icons/types.ts +0 -60
- package/src/index-enhanced.ts +0 -35
- package/src/index-legacy.ts +0 -324
- package/src/index.css +0 -102
- package/src/lib/__tests__/async-utils.test.ts +0 -291
- package/src/lib/async-utils.ts +0 -194
- package/src/lib/deprecation.ts +0 -51
- package/src/lib/format-time.ts +0 -37
- package/src/lib/index.ts +0 -4
- package/src/lib/utils.ts +0 -6
- package/src/styles/globals.css +0 -462
- package/src/styles/minimal-player.css +0 -621
- package/src/styles/pixel-art.css +0 -41
- package/src/styles/videojs.css +0 -100
- package/src/types/assets.d.ts +0 -29
- package/src/types/events.ts +0 -47
- package/src/types/formats.ts +0 -79
- package/src/types/index.ts +0 -203
- package/src/types/videojs-plugins.d.ts +0 -14
package/src/core/events/hooks.ts
DELETED
|
@@ -1,325 +0,0 @@
|
|
|
1
|
-
import React, { useEffect, useRef, useCallback, useMemo, useState } from "react"
|
|
2
|
-
import {
|
|
3
|
-
EventBus,
|
|
4
|
-
type EventHandler,
|
|
5
|
-
type EventOptions,
|
|
6
|
-
type EventUnsubscriber,
|
|
7
|
-
type MediaEvents
|
|
8
|
-
} from "./event-system"
|
|
9
|
-
|
|
10
|
-
// Hook to use event bus with React
|
|
11
|
-
export function useEventBus(eventBus?: EventBus): EventBus {
|
|
12
|
-
const [eventBusInstance, setEventBusInstance] = useState(() => eventBus || new EventBus())
|
|
13
|
-
|
|
14
|
-
useEffect(() => {
|
|
15
|
-
// If an external eventBus is provided, we don't manage its lifecycle
|
|
16
|
-
if (eventBus) {
|
|
17
|
-
setEventBusInstance(eventBus)
|
|
18
|
-
return () => {
|
|
19
|
-
// Don't destroy externally provided event bus
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
return () => {
|
|
24
|
-
// Cleanup internally created event bus on unmount
|
|
25
|
-
eventBusInstance.destroy()
|
|
26
|
-
}
|
|
27
|
-
}, [eventBus, eventBusInstance])
|
|
28
|
-
|
|
29
|
-
return eventBusInstance
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// Hook to listen to events
|
|
33
|
-
export function useEventListener<K extends keyof MediaEvents>(
|
|
34
|
-
eventBus: EventBus,
|
|
35
|
-
type: K,
|
|
36
|
-
handler: EventHandler<MediaEvents[K]>,
|
|
37
|
-
options?: EventOptions,
|
|
38
|
-
deps?: React.DependencyList
|
|
39
|
-
): void {
|
|
40
|
-
const handlerRef = useRef(handler)
|
|
41
|
-
const optionsRef = useRef(options)
|
|
42
|
-
|
|
43
|
-
// Update refs when dependencies change
|
|
44
|
-
useEffect(() => {
|
|
45
|
-
handlerRef.current = handler
|
|
46
|
-
optionsRef.current = options
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
useEffect(() => {
|
|
50
|
-
const unsubscribe = eventBus.on(type, handlerRef.current, optionsRef.current)
|
|
51
|
-
return unsubscribe
|
|
52
|
-
}, [eventBus, type])
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// Hook to emit events
|
|
56
|
-
export function useEventEmitter(eventBus: EventBus) {
|
|
57
|
-
return useCallback(
|
|
58
|
-
<K extends keyof MediaEvents>(
|
|
59
|
-
type: K,
|
|
60
|
-
detail?: MediaEvents[K],
|
|
61
|
-
options?: Partial<MediaEvents[K]>
|
|
62
|
-
) => {
|
|
63
|
-
return eventBus.emit(type, detail, options)
|
|
64
|
-
},
|
|
65
|
-
[eventBus]
|
|
66
|
-
)
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
// Hook for one-time event listeners
|
|
70
|
-
export function useEventOnce<K extends keyof MediaEvents>(
|
|
71
|
-
eventBus: EventBus,
|
|
72
|
-
type: K,
|
|
73
|
-
handler: EventHandler<MediaEvents[K]>,
|
|
74
|
-
deps?: React.DependencyList
|
|
75
|
-
): void {
|
|
76
|
-
useEventListener(eventBus, type, handler, { once: true }, deps)
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
// Hook to create event handlers with automatic cleanup
|
|
80
|
-
export function useEventHandlers(eventBus: EventBus) {
|
|
81
|
-
const handlersRef = useRef<EventUnsubscriber[]>([])
|
|
82
|
-
|
|
83
|
-
const addHandler = useCallback(
|
|
84
|
-
<K extends keyof MediaEvents>(
|
|
85
|
-
type: K,
|
|
86
|
-
handler: EventHandler<MediaEvents[K]>,
|
|
87
|
-
options?: EventOptions
|
|
88
|
-
) => {
|
|
89
|
-
const unsubscribe = eventBus.on(type, handler, options)
|
|
90
|
-
handlersRef.current.push(unsubscribe)
|
|
91
|
-
return unsubscribe
|
|
92
|
-
},
|
|
93
|
-
[eventBus]
|
|
94
|
-
)
|
|
95
|
-
|
|
96
|
-
const removeAllHandlers = useCallback(() => {
|
|
97
|
-
handlersRef.current.forEach((unsubscribe) => unsubscribe())
|
|
98
|
-
handlersRef.current = []
|
|
99
|
-
}, [])
|
|
100
|
-
|
|
101
|
-
useEffect(() => {
|
|
102
|
-
return removeAllHandlers
|
|
103
|
-
}, [removeAllHandlers])
|
|
104
|
-
|
|
105
|
-
return {
|
|
106
|
-
on: addHandler,
|
|
107
|
-
removeAll: removeAllHandlers
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
// Hook for event history
|
|
112
|
-
export function useEventHistory(
|
|
113
|
-
eventBus: EventBus,
|
|
114
|
-
filter?: (event: any) => boolean,
|
|
115
|
-
maxSize = 100
|
|
116
|
-
) {
|
|
117
|
-
const [history, setHistory] = useState<any[]>([])
|
|
118
|
-
|
|
119
|
-
useEffect(() => {
|
|
120
|
-
const unsubscribe = eventBus.addEventListener("*", (event) => {
|
|
121
|
-
if (!filter || filter(event)) {
|
|
122
|
-
setHistory((prevHistory) => {
|
|
123
|
-
const newHistory = [...prevHistory, event]
|
|
124
|
-
|
|
125
|
-
// Limit history size
|
|
126
|
-
if (newHistory.length > maxSize) {
|
|
127
|
-
return newHistory.slice(-maxSize)
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
return newHistory
|
|
131
|
-
})
|
|
132
|
-
}
|
|
133
|
-
})
|
|
134
|
-
|
|
135
|
-
return unsubscribe
|
|
136
|
-
}, [eventBus, filter, maxSize])
|
|
137
|
-
|
|
138
|
-
const clearHistory = useCallback(() => {
|
|
139
|
-
setHistory([])
|
|
140
|
-
}, [])
|
|
141
|
-
|
|
142
|
-
return {
|
|
143
|
-
history,
|
|
144
|
-
clearHistory
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
// Hook for event metrics/analytics
|
|
149
|
-
export function useEventMetrics(eventBus: EventBus) {
|
|
150
|
-
const metricsRef = useRef<
|
|
151
|
-
Map<
|
|
152
|
-
string,
|
|
153
|
-
{
|
|
154
|
-
count: number
|
|
155
|
-
lastTimestamp: number
|
|
156
|
-
frequency: number // events per second
|
|
157
|
-
}
|
|
158
|
-
>
|
|
159
|
-
>(new Map())
|
|
160
|
-
|
|
161
|
-
useEffect(() => {
|
|
162
|
-
const updateMetrics = (event: any) => {
|
|
163
|
-
const existing = metricsRef.current.get(event.type) || {
|
|
164
|
-
count: 0,
|
|
165
|
-
lastTimestamp: 0,
|
|
166
|
-
frequency: 0
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
existing.count++
|
|
170
|
-
|
|
171
|
-
if (existing.lastTimestamp > 0) {
|
|
172
|
-
const timeDiff = (event.timestamp - existing.lastTimestamp) / 1000 // seconds
|
|
173
|
-
existing.frequency = timeDiff > 0 ? 1 / timeDiff : 0
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
existing.lastTimestamp = event.timestamp
|
|
177
|
-
metricsRef.current.set(event.type, existing)
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
const unsubscribe = eventBus.addEventListener("*", updateMetrics)
|
|
181
|
-
return unsubscribe
|
|
182
|
-
}, [eventBus])
|
|
183
|
-
|
|
184
|
-
const getMetrics = useCallback(() => {
|
|
185
|
-
return Object.fromEntries(metricsRef.current.entries())
|
|
186
|
-
}, [])
|
|
187
|
-
|
|
188
|
-
const resetMetrics = useCallback(() => {
|
|
189
|
-
metricsRef.current.clear()
|
|
190
|
-
}, [])
|
|
191
|
-
|
|
192
|
-
return {
|
|
193
|
-
getMetrics,
|
|
194
|
-
resetMetrics
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
// Hook for event debugging
|
|
199
|
-
export function useEventDebugger(
|
|
200
|
-
eventBus: EventBus,
|
|
201
|
-
options: {
|
|
202
|
-
logEvents?: boolean
|
|
203
|
-
logMetrics?: boolean
|
|
204
|
-
filterEventTypes?: string[]
|
|
205
|
-
} = {}
|
|
206
|
-
) {
|
|
207
|
-
const { logEvents = true, logMetrics = false, filterEventTypes } = options
|
|
208
|
-
|
|
209
|
-
useEffect(() => {
|
|
210
|
-
if (!logEvents) return
|
|
211
|
-
|
|
212
|
-
const unsubscribe = eventBus.addEventListener("*", (event) => {
|
|
213
|
-
if (filterEventTypes && !filterEventTypes.includes(event.type)) {
|
|
214
|
-
return
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
console.group(`🎯 Event: ${event.type}`)
|
|
218
|
-
console.log("Timestamp:", new Date(event.timestamp).toISOString())
|
|
219
|
-
console.log("Detail:", event.detail)
|
|
220
|
-
console.log("Bubbles:", event.bubbles)
|
|
221
|
-
console.log("Cancelable:", event.cancelable)
|
|
222
|
-
console.groupEnd()
|
|
223
|
-
})
|
|
224
|
-
|
|
225
|
-
return unsubscribe
|
|
226
|
-
}, [eventBus, logEvents, filterEventTypes])
|
|
227
|
-
|
|
228
|
-
useEffect(() => {
|
|
229
|
-
if (!logMetrics) return
|
|
230
|
-
|
|
231
|
-
const interval = setInterval(() => {
|
|
232
|
-
const listenerCount = eventBus.getListenerCount()
|
|
233
|
-
const eventTypes = eventBus.getEventTypes()
|
|
234
|
-
|
|
235
|
-
console.group("📊 Event Metrics")
|
|
236
|
-
console.log("Total Listeners:", listenerCount)
|
|
237
|
-
console.log("Event Types:", eventTypes.length)
|
|
238
|
-
console.log("Active Types:", eventTypes)
|
|
239
|
-
console.groupEnd()
|
|
240
|
-
}, 5000)
|
|
241
|
-
|
|
242
|
-
return () => clearInterval(interval)
|
|
243
|
-
}, [eventBus, logMetrics])
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
// Hook for conditional event handling
|
|
247
|
-
export function useConditionalEventListener<K extends keyof MediaEvents>(
|
|
248
|
-
eventBus: EventBus,
|
|
249
|
-
type: K,
|
|
250
|
-
handler: EventHandler<MediaEvents[K]>,
|
|
251
|
-
condition: boolean | (() => boolean),
|
|
252
|
-
options?: EventOptions,
|
|
253
|
-
deps?: React.DependencyList
|
|
254
|
-
): void {
|
|
255
|
-
const shouldListen = useMemo(() => {
|
|
256
|
-
return typeof condition === "function" ? condition() : condition
|
|
257
|
-
}, [condition])
|
|
258
|
-
|
|
259
|
-
useEffect(() => {
|
|
260
|
-
if (!shouldListen) return
|
|
261
|
-
|
|
262
|
-
const unsubscribe = eventBus.on(type, handler, options)
|
|
263
|
-
return unsubscribe
|
|
264
|
-
}, [eventBus, type, shouldListen])
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
// Hook for event state synchronization
|
|
268
|
-
export function useEventState<T>(
|
|
269
|
-
eventBus: EventBus,
|
|
270
|
-
initialValue: T,
|
|
271
|
-
eventMapping: Record<string, (detail: any, currentValue: T) => T>
|
|
272
|
-
) {
|
|
273
|
-
const [state, setState] = useState<T>(initialValue)
|
|
274
|
-
|
|
275
|
-
useEffect(() => {
|
|
276
|
-
const unsubscribers: EventUnsubscriber[] = []
|
|
277
|
-
|
|
278
|
-
Object.entries(eventMapping).forEach(([eventType, updater]) => {
|
|
279
|
-
const unsubscribe = eventBus.addEventListener(eventType, (event) => {
|
|
280
|
-
setState((current) => updater(event.detail, current))
|
|
281
|
-
})
|
|
282
|
-
unsubscribers.push(unsubscribe)
|
|
283
|
-
})
|
|
284
|
-
|
|
285
|
-
return () => {
|
|
286
|
-
unsubscribers.forEach((unsubscribe) => unsubscribe())
|
|
287
|
-
}
|
|
288
|
-
}, [eventBus, eventMapping])
|
|
289
|
-
|
|
290
|
-
return state
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
// Hook for creating event-driven effects
|
|
294
|
-
export function useEventEffect<K extends keyof MediaEvents>(
|
|
295
|
-
eventBus: EventBus,
|
|
296
|
-
type: K,
|
|
297
|
-
effect: (detail: MediaEvents[K]) => void | (() => void),
|
|
298
|
-
deps?: React.DependencyList
|
|
299
|
-
): void {
|
|
300
|
-
const cleanupRef = useRef<(() => void) | void>(undefined)
|
|
301
|
-
|
|
302
|
-
useEventListener(
|
|
303
|
-
eventBus,
|
|
304
|
-
type,
|
|
305
|
-
useCallback((event) => {
|
|
306
|
-
// Clean up previous effect
|
|
307
|
-
if (typeof cleanupRef.current === "function") {
|
|
308
|
-
cleanupRef.current()
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
// Run new effect
|
|
312
|
-
cleanupRef.current = effect(event.detail)
|
|
313
|
-
}, []),
|
|
314
|
-
undefined,
|
|
315
|
-
deps
|
|
316
|
-
)
|
|
317
|
-
|
|
318
|
-
useEffect(() => {
|
|
319
|
-
return () => {
|
|
320
|
-
if (typeof cleanupRef.current === "function") {
|
|
321
|
-
cleanupRef.current()
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
}, [])
|
|
325
|
-
}
|
package/src/core/events/index.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
// Event system exports
|
|
2
|
-
export {
|
|
3
|
-
EventBus,
|
|
4
|
-
EventDelegator,
|
|
5
|
-
defaultEventBus
|
|
6
|
-
} from "./event-system"
|
|
7
|
-
|
|
8
|
-
export type {
|
|
9
|
-
MediaPlayerEvent,
|
|
10
|
-
EventHandler,
|
|
11
|
-
EventUnsubscriber,
|
|
12
|
-
EventOptions,
|
|
13
|
-
EventCategory,
|
|
14
|
-
MediaEvents
|
|
15
|
-
} from "./event-system"
|
|
16
|
-
|
|
17
|
-
// Event utilities
|
|
18
|
-
export * from "./middleware"
|
|
19
|
-
export * from "./hooks"
|
|
20
|
-
|
|
21
|
-
// Version
|
|
22
|
-
export const EVENT_SYSTEM_VERSION = "1.0.0"
|
|
@@ -1,286 +0,0 @@
|
|
|
1
|
-
import type { MediaPlayerEvent } from "./event-system"
|
|
2
|
-
|
|
3
|
-
// Middleware function type
|
|
4
|
-
export type EventMiddleware = (event: MediaPlayerEvent) => MediaPlayerEvent | null
|
|
5
|
-
|
|
6
|
-
// Common middleware implementations
|
|
7
|
-
export const eventMiddlewares = {
|
|
8
|
-
// Logging middleware
|
|
9
|
-
logger:
|
|
10
|
-
(prefix = "[Event]"): EventMiddleware =>
|
|
11
|
-
(event) => {
|
|
12
|
-
if (process.env.NODE_ENV === "development") {
|
|
13
|
-
console.log(`${prefix} ${event.type}`, event.detail)
|
|
14
|
-
}
|
|
15
|
-
return event
|
|
16
|
-
},
|
|
17
|
-
|
|
18
|
-
// Throttling middleware
|
|
19
|
-
throttle: (eventTypes: string[], delay = 100): EventMiddleware => {
|
|
20
|
-
const lastTimes = new Map<string, number>()
|
|
21
|
-
|
|
22
|
-
return (event) => {
|
|
23
|
-
if (eventTypes.includes(event.type)) {
|
|
24
|
-
const lastTime = lastTimes.get(event.type) || 0
|
|
25
|
-
const now = event.timestamp
|
|
26
|
-
|
|
27
|
-
if (now - lastTime < delay) {
|
|
28
|
-
return null // Throttle this event
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
lastTimes.set(event.type, now)
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return event
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
|
|
38
|
-
// Debouncing middleware
|
|
39
|
-
debounce: (eventTypes: string[], delay = 100): EventMiddleware => {
|
|
40
|
-
const timeouts = new Map<string, NodeJS.Timeout>()
|
|
41
|
-
const eventQueue = new Map<string, MediaPlayerEvent>()
|
|
42
|
-
|
|
43
|
-
return (event) => {
|
|
44
|
-
if (eventTypes.includes(event.type)) {
|
|
45
|
-
// Clear existing timeout
|
|
46
|
-
const existingTimeout = timeouts.get(event.type)
|
|
47
|
-
if (existingTimeout) {
|
|
48
|
-
clearTimeout(existingTimeout)
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
// Store the latest event
|
|
52
|
-
eventQueue.set(event.type, event)
|
|
53
|
-
|
|
54
|
-
// Set new timeout
|
|
55
|
-
const timeout = setTimeout(() => {
|
|
56
|
-
const queuedEvent = eventQueue.get(event.type)
|
|
57
|
-
if (queuedEvent) {
|
|
58
|
-
// Process the debounced event
|
|
59
|
-
// Note: This is a simplified approach - in a real implementation,
|
|
60
|
-
// you'd need to re-inject the event into the processing pipeline
|
|
61
|
-
eventQueue.delete(event.type)
|
|
62
|
-
timeouts.delete(event.type)
|
|
63
|
-
}
|
|
64
|
-
}, delay)
|
|
65
|
-
|
|
66
|
-
timeouts.set(event.type, timeout)
|
|
67
|
-
|
|
68
|
-
return null // Don't process immediately
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return event
|
|
72
|
-
}
|
|
73
|
-
},
|
|
74
|
-
|
|
75
|
-
// Filtering middleware
|
|
76
|
-
filter:
|
|
77
|
-
(predicate: (event: MediaPlayerEvent) => boolean): EventMiddleware =>
|
|
78
|
-
(event) => {
|
|
79
|
-
return predicate(event) ? event : null
|
|
80
|
-
},
|
|
81
|
-
|
|
82
|
-
// Event transformation middleware
|
|
83
|
-
transform:
|
|
84
|
-
(transformer: (event: MediaPlayerEvent) => MediaPlayerEvent): EventMiddleware =>
|
|
85
|
-
(event) => {
|
|
86
|
-
try {
|
|
87
|
-
return transformer(event)
|
|
88
|
-
} catch (error) {
|
|
89
|
-
console.error("Error in event transformer:", error)
|
|
90
|
-
return event
|
|
91
|
-
}
|
|
92
|
-
},
|
|
93
|
-
|
|
94
|
-
// Performance monitoring middleware
|
|
95
|
-
performance: (): EventMiddleware => {
|
|
96
|
-
const metrics = new Map<string, { count: number; totalTime: number }>()
|
|
97
|
-
|
|
98
|
-
return (event) => {
|
|
99
|
-
const startTime = performance.now()
|
|
100
|
-
|
|
101
|
-
// Update metrics
|
|
102
|
-
const existing = metrics.get(event.type) || { count: 0, totalTime: 0 }
|
|
103
|
-
existing.count++
|
|
104
|
-
existing.totalTime += performance.now() - startTime
|
|
105
|
-
metrics.set(event.type, existing)
|
|
106
|
-
|
|
107
|
-
// Log metrics periodically (every 100 events)
|
|
108
|
-
if (existing.count % 100 === 0) {
|
|
109
|
-
const avgTime = existing.totalTime / existing.count
|
|
110
|
-
console.log(`Event ${event.type}: ${existing.count} calls, avg ${avgTime.toFixed(2)}ms`)
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
return event
|
|
114
|
-
}
|
|
115
|
-
},
|
|
116
|
-
|
|
117
|
-
// Error handling middleware
|
|
118
|
-
errorHandler:
|
|
119
|
-
(onError?: (error: Error, event: MediaPlayerEvent) => void): EventMiddleware =>
|
|
120
|
-
(event) => {
|
|
121
|
-
try {
|
|
122
|
-
// Validate event structure
|
|
123
|
-
if (!event.type || typeof event.type !== "string") {
|
|
124
|
-
throw new Error("Invalid event: missing or invalid type")
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
if (!event.timestamp || typeof event.timestamp !== "number") {
|
|
128
|
-
throw new Error("Invalid event: missing or invalid timestamp")
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
return event
|
|
132
|
-
} catch (error) {
|
|
133
|
-
if (onError) {
|
|
134
|
-
onError(error as Error, event)
|
|
135
|
-
} else {
|
|
136
|
-
console.error("Event validation error:", error)
|
|
137
|
-
}
|
|
138
|
-
return null
|
|
139
|
-
}
|
|
140
|
-
},
|
|
141
|
-
|
|
142
|
-
// Security middleware (prevent certain events or sanitize data)
|
|
143
|
-
security:
|
|
144
|
-
(
|
|
145
|
-
options: {
|
|
146
|
-
blockedEventTypes?: string[]
|
|
147
|
-
sanitizeDetail?: boolean
|
|
148
|
-
maxDetailSize?: number
|
|
149
|
-
} = {}
|
|
150
|
-
): EventMiddleware =>
|
|
151
|
-
(event) => {
|
|
152
|
-
const { blockedEventTypes = [], sanitizeDetail = true, maxDetailSize = 10000 } = options
|
|
153
|
-
|
|
154
|
-
// Block certain event types
|
|
155
|
-
if (blockedEventTypes.includes(event.type)) {
|
|
156
|
-
console.warn(`Blocked event type: ${event.type}`)
|
|
157
|
-
return null
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
// Sanitize detail if needed
|
|
161
|
-
if (sanitizeDetail && event.detail) {
|
|
162
|
-
try {
|
|
163
|
-
const detailStr = JSON.stringify(event.detail)
|
|
164
|
-
if (detailStr.length > maxDetailSize) {
|
|
165
|
-
console.warn(`Event detail too large, truncating: ${event.type}`)
|
|
166
|
-
event.detail = { ...event.detail, _truncated: true }
|
|
167
|
-
}
|
|
168
|
-
} catch (error) {
|
|
169
|
-
console.warn(`Failed to serialize event detail: ${event.type}`)
|
|
170
|
-
event.detail = { _serializationError: true }
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
return event
|
|
175
|
-
},
|
|
176
|
-
|
|
177
|
-
// Conditional middleware
|
|
178
|
-
when:
|
|
179
|
-
(
|
|
180
|
-
condition: (event: MediaPlayerEvent) => boolean,
|
|
181
|
-
middleware: EventMiddleware
|
|
182
|
-
): EventMiddleware =>
|
|
183
|
-
(event) => {
|
|
184
|
-
return condition(event) ? middleware(event) : event
|
|
185
|
-
},
|
|
186
|
-
|
|
187
|
-
// Chain multiple middleware
|
|
188
|
-
chain:
|
|
189
|
-
(...middlewares: EventMiddleware[]): EventMiddleware =>
|
|
190
|
-
(event) => {
|
|
191
|
-
let currentEvent: MediaPlayerEvent | null = event
|
|
192
|
-
|
|
193
|
-
for (const middleware of middlewares) {
|
|
194
|
-
if (currentEvent === null) break
|
|
195
|
-
currentEvent = middleware(currentEvent)
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
return currentEvent
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
// Middleware builder class
|
|
203
|
-
export class MiddlewareBuilder {
|
|
204
|
-
private middlewares: EventMiddleware[] = []
|
|
205
|
-
|
|
206
|
-
// Add middleware
|
|
207
|
-
use(middleware: EventMiddleware): this {
|
|
208
|
-
this.middlewares.push(middleware)
|
|
209
|
-
return this
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
// Add logging
|
|
213
|
-
log(prefix?: string): this {
|
|
214
|
-
return this.use(eventMiddlewares.logger(prefix))
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
// Add throttling
|
|
218
|
-
throttle(eventTypes: string[], delay?: number): this {
|
|
219
|
-
return this.use(eventMiddlewares.throttle(eventTypes, delay))
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
// Add debouncing
|
|
223
|
-
debounce(eventTypes: string[], delay?: number): this {
|
|
224
|
-
return this.use(eventMiddlewares.debounce(eventTypes, delay))
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
// Add filtering
|
|
228
|
-
filter(predicate: (event: MediaPlayerEvent) => boolean): this {
|
|
229
|
-
return this.use(eventMiddlewares.filter(predicate))
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
// Add transformation
|
|
233
|
-
transform(transformer: (event: MediaPlayerEvent) => MediaPlayerEvent): this {
|
|
234
|
-
return this.use(eventMiddlewares.transform(transformer))
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
// Add performance monitoring
|
|
238
|
-
performance(): this {
|
|
239
|
-
return this.use(eventMiddlewares.performance())
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
// Add error handling
|
|
243
|
-
errorHandler(onError?: (error: Error, event: MediaPlayerEvent) => void): this {
|
|
244
|
-
return this.use(eventMiddlewares.errorHandler(onError))
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
// Add security
|
|
248
|
-
security(options?: Parameters<typeof eventMiddlewares.security>[0]): this {
|
|
249
|
-
return this.use(eventMiddlewares.security(options))
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
// Add conditional middleware
|
|
253
|
-
when(condition: (event: MediaPlayerEvent) => boolean, middleware: EventMiddleware): this {
|
|
254
|
-
return this.use(eventMiddlewares.when(condition, middleware))
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
// Build the final middleware
|
|
258
|
-
build(): EventMiddleware {
|
|
259
|
-
return eventMiddlewares.chain(...this.middlewares)
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
// Helper to create middleware builder
|
|
264
|
-
export const createMiddleware = () => new MiddlewareBuilder()
|
|
265
|
-
|
|
266
|
-
// Export commonly used middleware combinations
|
|
267
|
-
export const commonMiddlewares = {
|
|
268
|
-
// Development middleware stack
|
|
269
|
-
development: () => createMiddleware().log("[Dev Event]").performance().errorHandler().build(),
|
|
270
|
-
|
|
271
|
-
// Production middleware stack
|
|
272
|
-
production: () =>
|
|
273
|
-
createMiddleware()
|
|
274
|
-
.security()
|
|
275
|
-
.errorHandler()
|
|
276
|
-
.throttle(["media:timeupdate", "user:mousemove"], 16) // ~60fps
|
|
277
|
-
.build(),
|
|
278
|
-
|
|
279
|
-
// Testing middleware stack
|
|
280
|
-
testing: () =>
|
|
281
|
-
createMiddleware()
|
|
282
|
-
.errorHandler((error, event) => {
|
|
283
|
-
throw new Error(`Event error in test: ${error.message} for event ${event.type}`)
|
|
284
|
-
})
|
|
285
|
-
.build()
|
|
286
|
-
}
|
package/src/core/index.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
// Core architecture exports
|
|
2
|
-
|
|
3
|
-
// Plugin system
|
|
4
|
-
export * from "./plugins"
|
|
5
|
-
|
|
6
|
-
// Event system
|
|
7
|
-
export * from "./events"
|
|
8
|
-
|
|
9
|
-
// Service providers
|
|
10
|
-
export * from "./providers/service-provider"
|
|
11
|
-
|
|
12
|
-
// Version
|
|
13
|
-
export const CORE_ARCHITECTURE_VERSION = "1.0.0"
|
|
14
|
-
|
|
15
|
-
// Architecture utilities
|
|
16
|
-
export { createArchitecture } from "./utils"
|
|
17
|
-
|
|
18
|
-
// Progressive loading system
|
|
19
|
-
export * from "./progressive-loading"
|
|
20
|
-
|
|
21
|
-
// Performance monitoring and testing
|
|
22
|
-
export * from "./performance"
|