@lowentry/react-redux 1.16.1 → 2.0.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/LICENSE +23 -0
- package/dist/index.d.ts +453 -0
- package/dist/index.js +1456 -0
- package/dist/index.js.map +1 -0
- package/package.json +77 -70
- package/api-extractor.json +0 -43
- package/index.d.ts +0 -3
- package/index.js +0 -1497
- package/index.js.map +0 -1
- package/src/LeRed.jsx +0 -1522
- package/src/index.js +0 -1
- package/tsconfig.d.ts +0 -1
- package/tsconfig.json +0 -39
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/LeRed.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as ReactRedux from 'react-redux';\nimport * as Redux from 'redux';\nimport * as RTK from '@reduxjs/toolkit';\nimport * as ReduxSaga from 'redux-saga';\nimport * as ReduxSagaEffects from 'redux-saga/effects';\nimport {LeUtils, STRING, ISSET, ARRAY, IS_OBJECT, IS_ARRAY, INT_LAX_ANY} from '@lowentry/utils';\n\n\n\n// --- Types & Interfaces ---\n\nexport type EffectCallback = React.EffectCallback;\nexport type DependencyList = React.DependencyList;\n\nexport interface StoreConfig\n{\n\tslices?: RTK.Slice[] | Record<string, RTK.Slice> | unknown[];\n\treducer?: Redux.Reducer | Redux.ReducersMapObject | unknown;\n\tstate?: unknown; // User-provided state\n\tpreloadedState?: unknown; // User-provided state\n\tmiddleware?: unknown[] | ((getDefaultMiddleware: unknown) => unknown); // RTK middleware array or function\n\tdevTools?: boolean | unknown; // RTK devTools config\n\tenhancers?: unknown[]; // RTK enhancers\n\t[key: string]: unknown; // Index signature for dynamic properties\n}\n\nexport interface SliceConfig\n{\n\tname?: string;\n\tstate: unknown | (() => unknown); // User-provided state\n\tactions?: Record<string, unknown>; // User-provided actions\n\treducers?: Record<string, unknown>; // Legacy support for internal use\n\tselectors?: Record<string, (state: unknown) => unknown>; // State selectors\n\tgetters?: Record<string, (...args: unknown[]) => (state: unknown) => unknown>; // Parameterized selectors\n\tsagaListeners?: Record<string, unknown>; // Internal use\n\tsagas?: Record<string, unknown>; // Internal use\n\t// eslint-disable-next-line @typescript-eslint/naming-convention -- Internal marker property\n\t__lowentry_unfinished_slice?: boolean;\n}\n\n\n// --- Internal Helpers ---\n\nconst fixEqualsComparator = (equalsComparator: unknown, errorMessage: string): ((a: unknown, b: unknown) => boolean) =>\n{\n\tif(ISSET(equalsComparator))\n\t{\n\t\tif(typeof equalsComparator !== 'function')\n\t\t{\n\t\t\tconsole.error(errorMessage);\n\t\t\tconsole.error(equalsComparator);\n\t\t\treturn LeUtils.equals;\n\t\t}\n\t\t// Type guard: verify equalsComparator is a function with correct signature\n\t\t// Use Function.prototype.call to invoke without type assertion\n\t\treturn (a: unknown, b: unknown): boolean => \n\t\t{\n\t\t\ttry \n\t\t\t{\n\t\t\t\treturn Boolean(equalsComparator(a, b));\n\t\t\t}\n\t\t\tcatch(e)\n\t\t\t{\n\t\t\t\tconsole.error('LeRed: equalsComparator threw an error', e);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t};\n\t}\n\treturn LeUtils.equals;\n};\n\n \nconst useCompareMemoize = (value: unknown, equalsComparator: (a: unknown, b: unknown) => boolean): unknown =>\n{\n\tconst ref = React.useRef<unknown>(null);\n\tif(!equalsComparator(value, ref.current))\n\t{\n\t\tref.current = value;\n\t}\n\treturn ref.current;\n};\n \n\n\n// --- React Exports ---\n\nexport const useState = React.useState;\n\nexport const leRedUseSelector = <TState = unknown, TSelected = unknown>(\n\tselector: (state: TState) => TSelected,\n\tequalsComparator?: unknown,\n): TSelected =>\n{\n\tif(typeof selector !== 'function')\n\t{\n\t\tconsole.error('LeRed.useSelector() was given an invalid selector:');\n\t\tconsole.error(selector);\n\t\t// Fallback returns undefined (like old JS)\n\t\tconst fallbackSelector = (): undefined => undefined;\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Fallback selector type compatibility\n\t\tselector = fallbackSelector as unknown as (state: TState) => TSelected;\n\t}\n\tconst validatedComparator = fixEqualsComparator(equalsComparator, 'LeRed.useSelector() was given an invalid comparator:');\n\t// No try-catch - let errors propagate naturally (like old JS)\n\t// eslint-disable-next-line react-hooks/rules-of-hooks -- leRedUseSelector is itself a valid hook\n\treturn ReactRedux.useSelector(selector, validatedComparator);\n};\n\n/* eslint-disable react-hooks/exhaustive-deps, react-hooks/rules-of-hooks */\nexport const leRedUseLayoutEffect = (callable: React.EffectCallback, comparingValues: unknown[], equalsComparator?: (a: unknown, b: unknown) => boolean): void =>\n{\n\tconst validatedComparator = fixEqualsComparator(equalsComparator, 'LeRed.useLayoutEffect() was given an invalid comparator:');\n\tconst values = ARRAY(comparingValues);\n\tconst memoizedValues = values.map((value: unknown) => useCompareMemoize(value, validatedComparator));\n\t \n\treturn React.useLayoutEffect(callable, memoizedValues as React.DependencyList);\n};\n\nexport const leRedUseEffect = (callable: React.EffectCallback, comparingValues: unknown[], equalsComparator?: (a: unknown, b: unknown) => boolean): void =>\n{\n\tconst validatedComparator = fixEqualsComparator(equalsComparator, 'LeRed.useEffect() was given an invalid comparator:');\n\tconst values = ARRAY(comparingValues);\n\tconst memoizedValues = values.map((value: unknown) => useCompareMemoize(value, validatedComparator));\n\t \n\treturn React.useEffect(callable, memoizedValues as React.DependencyList);\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint -- Explicit T extends unknown for JSX compatibility\nexport const leRedUseMemo = <T extends unknown>(callable: () => T, comparingValues: unknown[], equalsComparator?: (a: unknown, b: unknown) => boolean): T =>\n{\n\tconst validatedComparator = fixEqualsComparator(equalsComparator, 'LeRed.useMemo() was given an invalid comparator:');\n\tconst values = ARRAY(comparingValues);\n\tconst memoizedValues = values.map((value: unknown) => useCompareMemoize(value, validatedComparator));\n\t \n\treturn React.useMemo(callable, memoizedValues as React.DependencyList);\n};\n\n// Generic constraint uses any to preserve specific function signatures (e.g., (res: Response) => Promise<T>)\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const leRedUseCallback = <T extends (...args: any[]) => any>(callable: T, comparingValues: unknown[], equalsComparator?: (a: unknown, b: unknown) => boolean): T =>\n{\n\tconst validatedComparator = fixEqualsComparator(equalsComparator, 'LeRed.useCallback() was given an invalid comparator:');\n\tconst values = ARRAY(comparingValues);\n\tconst memoizedValues = values.map((value: unknown) => useCompareMemoize(value, validatedComparator));\n\t \n\treturn React.useCallback(callable, memoizedValues as React.DependencyList);\n};\n/* eslint-enable react-hooks/exhaustive-deps, react-hooks/rules-of-hooks */\n\nexport const useEffect = leRedUseEffect;\nexport const useLayoutEffect = leRedUseLayoutEffect;\nexport const useCallback = leRedUseCallback;\nexport const useMemo = leRedUseMemo;\n\nexport const useContext = React.useContext;\nexport const useReducer = React.useReducer;\nexport const useRef = React.useRef;\nexport const useDebugValue = React.useDebugValue;\n\n/* eslint-disable react-hooks/exhaustive-deps, react-hooks/rules-of-hooks */\nexport function useImperativeHandle<T>(\n\tref: React.Ref<T>,\n\tcreateHandle: () => T,\n\tcomparingValues?: unknown[],\n\tequalsComparator?: (a: unknown, b: unknown) => boolean,\n): void\n{\n\tconst validatedComparator = fixEqualsComparator(equalsComparator, 'LeRed.useImperativeHandle() was given an invalid comparator:');\n\tconst values = ARRAY(comparingValues ?? []);\n\tconst memoizedValues = values.map((value: unknown) => useCompareMemoize(value, validatedComparator));\n\t \n\treturn React.useImperativeHandle(ref, createHandle, memoizedValues as React.DependencyList);\n}\n\nexport function useDeferredValue<T>(value: T, equalsComparator?: (a: unknown, b: unknown) => boolean): T\n{\n\tconst validatedComparator = fixEqualsComparator(equalsComparator, 'LeRed.useDeferredValue() was given an invalid comparator:');\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- useCompareMemoize returns unknown, cast back to T\n\tconst stableValue = useCompareMemoize(value, validatedComparator) as T;\n\treturn React.useDeferredValue(stableValue);\n}\n\nexport const useTransition = React.useTransition;\nexport const useId = React.useId;\n\nexport const useInsertionEffect = (callable: React.EffectCallback, comparingValues: unknown[], equalsComparator?: (a: unknown, b: unknown) => boolean): void =>\n{\n\tconst validatedComparator = fixEqualsComparator(equalsComparator, 'LeRed.useInsertionEffect() was given an invalid comparator:');\n\tconst values = ARRAY(comparingValues);\n\tconst memoizedValues = values.map((value: unknown) => useCompareMemoize(value, validatedComparator));\n\t \n\treturn React.useInsertionEffect(callable, memoizedValues as React.DependencyList);\n};\n/* eslint-enable react-hooks/exhaustive-deps, react-hooks/rules-of-hooks */\nexport const useSyncExternalStore = React.useSyncExternalStore;\n\nexport const Children = React.Children;\nexport const createContext = React.createContext;\nexport const createElement = React.createElement;\nexport const cloneElement = React.cloneElement;\nexport const isValidElement = React.isValidElement;\nexport const lazy = React.lazy;\nexport const forwardRef = React.forwardRef;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- React.ComponentType accepts any props\nexport const leRedMemo = <T extends React.ComponentType<any>>(component: T, equalsComparator?: (a: unknown, b: unknown) => boolean): React.MemoExoticComponent<T> =>\n{\n\tconst validatedComparator = fixEqualsComparator(equalsComparator, 'LeRed.memo() was given an invalid comparator:');\n\treturn React.memo(component, validatedComparator);\n};\n\nexport const memo = leRedMemo;\nexport const startTransition = React.startTransition;\n\n\n// --- ReactDOM Exports ---\n\nexport const createPortal = ReactDOM.createPortal;\nexport const flushSync = ReactDOM.flushSync;\n\n\n// --- Redux / RTK Exports ---\n\nexport const createReducer = RTK.createReducer;\nexport const createAsyncThunk = RTK.createAsyncThunk;\nexport const createEntityAdapter = RTK.createEntityAdapter;\nexport const nanoid = RTK.nanoid;\n\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint -- Explicit T extends unknown for JSX compatibility\nexport const current = <T extends unknown>(obj: T): T =>\n{\n\ttry\n\t{\n\t\treturn RTK.current(obj);\n\t}\n\tcatch\n\t{\n\t\t// ignore\n\t}\n\treturn obj;\n};\n\nexport const isImmutableDefault = RTK.isImmutableDefault;\nexport const unwrapResult = RTK.unwrapResult;\n\nexport const createNextState: typeof RTK.createNextState = RTK.createNextState;\nexport const produce: typeof RTK.createNextState = RTK.createNextState;\nexport const freeze = RTK.freeze;\nexport const isDraft = RTK.isDraft;\nexport const original = RTK.original;\n\nexport const combineSlices = RTK.combineSlices;\nexport const createListenerMiddleware = RTK.createListenerMiddleware;\nexport const createDynamicMiddleware = RTK.createDynamicMiddleware;\nexport const autoBatchEnhancer = RTK.autoBatchEnhancer;\n\nexport const isAnyOf = RTK.isAnyOf;\nexport const isAllOf = RTK.isAllOf;\nexport const isPending = RTK.isPending;\nexport const isFulfilled = RTK.isFulfilled;\nexport const isRejected = RTK.isRejected;\nexport const isAsyncThunkAction = RTK.isAsyncThunkAction;\nexport const isRejectedWithValue = RTK.isRejectedWithValue;\n\nexport const combineReducers = Redux.combineReducers;\nexport const applyMiddleware = Redux.applyMiddleware;\nexport const compose = Redux.compose;\nexport const bindActionCreators = Redux.bindActionCreators;\n\nexport const configureStore = (storeData: StoreConfig): RTK.EnhancedStore =>\n{\n\tif(!storeData || typeof storeData !== 'object')\n\t{\n\t\tstoreData = {\n\t\t\treducer: (state: unknown = {}): unknown => state,\n\t\t};\n\t}\n\tif(storeData.__lowentry_store__ === true)\n\t{\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- RTK store type interop\n\t\treturn storeData as unknown as RTK.EnhancedStore;\n\t}\n\ttry\n\t{\n\t\tif(ISSET(storeData.slices))\n\t\t{\n\t\t\tstoreData.reducer = storeData.slices;\n\t\t\tdelete storeData.slices;\n\t\t}\n\t}\n\tcatch(e)\n\t{\n\t\tconsole.error('Failed to access slices on storeData:', e);\n\t}\n\tconst sagaListeners: ReduxSaga.Saga[] = [];\n\tconst initialState: Record<string, unknown> = {};\n\tif(ISSET(storeData.reducer))\n\t{\n\t\tlet slices = storeData.reducer;\n\t\tif(typeof slices === 'object' && slices !== null)\n\t\t{\n\t\t\t// Type guard: check if object has name or __lowentry_unfinished_slice property\n\t\t\tif(('name' in slices && slices.name) || ('__lowentry_unfinished_slice' in slices && slices.__lowentry_unfinished_slice))\n\t\t\t{\n\t\t\t\tslices = [slices];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst slicesArray: unknown[] = [];\n\t\t\t\tLeUtils.each(slices, (slice: unknown, index: unknown): void =>\n\t\t\t\t{\n\t\t\t\t\t// Type guard: ensure slice is an object or a function (for legacy reducer support)\n\t\t\t\t\tif(slice && (typeof slice === 'object' || typeof slice === 'function'))\n\t\t\t\t\t{\n\t\t\t\t\t\tif(typeof slice === 'function')\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tslice = {\n\t\t\t\t\t\t\t\tname: STRING(index),\n\t\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Legacy reducer function type\n\t\t\t\t\t\t\t\tstate: (slice as (state?: unknown, action?: unknown) => unknown)(undefined, {type: '@@INIT'}),\n\t\t\t\t\t\t\t\treducers: {\n\t\t\t\t\t\t\t\t\t[STRING(index)]: slice,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Type guard verified above\n\t\t\t\t\t\tconst recordSlice = slice as Record<string, unknown>;\n\t\t\t\t\t\tif(!('name' in recordSlice) || !recordSlice.name)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\trecordSlice.name = STRING(index);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tslicesArray.push(slice);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tslices = slicesArray;\n\t\t\t}\n\t\t}\n\t\tslices = ARRAY(slices);\n\n\t\tconst reducerArrays: Record<string, ((state: unknown, action: unknown) => void)[]> = {};\n\t\tLeUtils.each(slices, (slice: unknown, index: unknown): void =>\n\t\t{\n\t\t\t// Type guard: ensure slice is an object\n\t\t\tif(slice && typeof slice === 'object')\n\t\t\t{\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Type guard verified above\n\t\t\t\tconst recordSlice = slice as Record<string, unknown>;\n\t\t\t\tif(!('name' in recordSlice) || !recordSlice.name)\n\t\t\t\t{\n\t\t\t\t\trecordSlice.name = 'slice_' + STRING(index);\n\t\t\t\t}\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Type guard verified above\n\t\t\t\tconst typedSlice = slice as SliceConfig;\n\t\t\t\t \n\t\t\t\tinitialState[typedSlice.name!] = ((typeof typedSlice.state === 'function') ? typedSlice.state() : typedSlice.state);\n\t\t\t\tLeUtils.each(typedSlice.reducers, (reducer: unknown, reducerName: unknown): void =>\n\t\t\t\t{\n\t\t\t\t\tconst fullReducerName = STRING(reducerName).startsWith('lowentrystore/') ? STRING(reducerName).substring('lowentrystore/'.length) : (typedSlice.name + '/' + STRING(reducerName));\n\t\t\t\t\tif(typeof reducerArrays[fullReducerName] === 'undefined')\n\t\t\t\t\t{\n\t\t\t\t\t\treducerArrays[fullReducerName] = [];\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- RTK reducer type interop\n\t\t\t\t\treducerArrays[fullReducerName].push(reducer as (state: unknown, action: unknown) => void);\n\t\t\t\t});\n\t\t\t\tLeUtils.each(typedSlice.sagaListeners, (sagaListener: unknown, reducerName: unknown): void =>\n\t\t\t\t{\n\t\t\t\t\tLeUtils.each(LeUtils.flattenArray(sagaListener), (listener: unknown): void =>\n\t\t\t\t\t{\n\t\t\t\t\t\ttry\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (typeof listener === 'function')\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion -- Dynamic saga listener invocation\n\t\t\t\t\t\t\t\tsagaListeners.push((listener as any)());\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch(e)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconsole.error('an error was thrown by your saga code, in slice \"' + typedSlice.name + '\", action \"' + STRING(reducerName) + '\":');\n\t\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tconst reducers: Record<string, (state: unknown, action: unknown) => void> = {};\n\t\tLeUtils.each(reducerArrays, (reducerArray: unknown, reducerName: unknown): void =>\n\t\t{\n\t\t\tconst flattenedArray = LeUtils.flattenArray(reducerArray);\n\t\t\tconst firstReducer = flattenedArray[0];\n\t\t\tif(flattenedArray.length <= 1)\n\t\t\t{\n\t\t\t\tif (typeof firstReducer === 'function')\n\t\t\t\t{\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- RTK reducer type compatibility\n\t\t\t\t\treducers[STRING(reducerName)] = firstReducer as (state: unknown, action: unknown) => void;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treducers[STRING(reducerName)] = (...args: [unknown, unknown]): void =>\n\t\t\t\t{\n\t\t\t\t\tLeUtils.each(flattenedArray, (reducer: unknown): void =>\n\t\t\t\t\t{\n\t\t\t\t\t\ttry\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (typeof reducer === 'function')\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Type guard verified above\n\t\t\t\t\t\t\t\t(reducer as (...args: unknown[]) => void)(...args);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch(e)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\n\t\tstoreData.reducer = RTK.createSlice({\n\t\t\tname: 'lowentrystore',\n\t\t\tinitialState:initialState,\n\t\t\treducers: reducers,\n\t\t}).reducer;\n\t\tif(!ISSET(storeData.preloadedState))\n\t\t{\n\t\t\tstoreData.preloadedState = LeUtils.clone(initialState);\n\t\t}\n\t}\n\tif(ISSET(storeData.state))\n\t{\n\t\tstoreData.preloadedState = storeData.state;\n\t\tdelete storeData.state;\n\t}\n\tif(ISSET(storeData.preloadedState))\n\t{\n\t\tif(!storeData.reducer)\n\t\t{\n\t\t\t \n\t\t\tstoreData.reducer = (state: unknown): unknown => state;\n\t\t}\n\t\tstoreData.preloadedState = {reducer: storeData.preloadedState};\n\t}\n\telse\n\t{\n\t\tif(!storeData.reducer)\n\t\t{\n\t\t\t \n\t\t\tstoreData.reducer = (state: unknown): unknown => state;\n\t\t}\n\t\tstoreData.preloadedState = {reducer: LeUtils.clone(initialState)};\n\t}\n\n\tconst middleware = ARRAY(storeData.middleware);\n\tlet sagaMiddleware: ReduxSaga.SagaMiddleware | null = null;\n\tif(sagaListeners.length > 0)\n\t{\n\t\t \n\t\tsagaMiddleware = (ReduxSaga as {default: () => ReduxSaga.SagaMiddleware}).default();\n\t\tmiddleware.push(sagaMiddleware);\n\t}\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- RTK store type interop\n\tstoreData.middleware = (getDefaultMiddleware: any): any => (getDefaultMiddleware() as any).concat(...middleware);\n\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- RTK store configuration\n\tconst store = RTK.configureStore({\n\t\t...storeData,\n\t\treducer: {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- RTK reducer type\n\t\t\treducer: storeData.reducer as Redux.Reducer,\n\t\t},\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t} as any);\n\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion\n\t(store as any).__lowentry_store__ = true;\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion\n\t(store as any).state = (): unknown => (store.getState() as any).reducer;\n\n\tconst dispatch = store.dispatch;\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion\n\t(store as any).dispatch = ((action: {type: string, [key: string]: unknown}): unknown =>\n\t{\n\t\t \n\t\tconst typedAction = action as Record<string, unknown>;\n\t\ttypedAction.__lowentry_dispatch__ = true;\n\t\tif(STRING(action.type).startsWith('lowentrystore/'))\n\t\t{\n\t\t\ttypedAction.__lowentry_dispatch_result__ = [];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tdelete typedAction.__lowentry_dispatch_result__;\n\t\t}\n\t\t \n\t\tdispatch(action as RTK.UnknownAction);\n\t\tconst result = typedAction.__lowentry_dispatch_result__;\n\t\tdelete typedAction.__lowentry_dispatch_result__;\n\t\tdelete typedAction.__lowentry_dispatch__;\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion\n\t\treturn result as any;\n\t});\n\n\tif(sagaMiddleware !== null)\n\t{\n\t\tsagaMiddleware.run(function* ()\n\t\t{\n\t\t\tyield ReduxSagaEffects.all(sagaListeners);\n\t\t});\n\t}\n\treturn store;\n};\n\nexport const createSlice = (slice: SliceConfig): RTK.Slice =>\n{\n\tif(!slice)\n\t{\n\t\t// eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-unsafe-type-assertion -- RTK slice type interop, internal marker property\n\t\treturn {__lowentry_unfinished_slice: true} as unknown as RTK.Slice;\n\t}\n\tif(Array.isArray(slice))\n\t{\n\t\tconst e = new Error('the given slice is an array (instead of an object)');\n\t\tconsole.error('an error was thrown by your LeRed.createSlice(...) code:');\n\t\tconsole.error(e);\n\t\tthrow e;\n\t}\n\tif(slice.name)\n\t{\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- RTK action creator type compatibility\n\t\tconst actions: Record<string, RTK.ActionCreatorWithPayload<any>> = {};\n\t\tconst reducers: Record<string, ((state: unknown, action: unknown) => void)[]> = {};\n\t\tconst sagas: Record<string, unknown[][]> = {};\n\t\tconst sagaListeners: Record<string, (() => Generator)[]> = {};\n\t\t \n\t\t \n\t\tLeUtils.each(slice.actions, (reducer: unknown, reducerNames: unknown) =>\n\t\t{\n\t\t\t \n\t\t\tLeUtils.each(STRING(reducerNames).split(','), (reducerName: unknown) =>\n\t\t\t{\n\t\t\t\tif(STRING(reducerName).length <= 0)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst reducerAction = RTK.createAction((STRING(reducerName).startsWith('lowentrystore/') ? '' : ('lowentrystore/' + slice.name + '/')) + STRING(reducerName));\n\t\t\t\tactions[STRING(reducerName)] = reducerAction;\n\t\t\t\t \n\t\t\t\tLeUtils.each(LeUtils.flattenArray(reducer), (innerReducer: unknown) =>\n\t\t\t\t{\n\t\t\t\t\tif(LeUtils.isGeneratorFunction(innerReducer))\n\t\t\t\t\t{\n\t\t\t\t\t\tconst sagaListener = function* (): Generator\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tyield ReduxSagaEffects.takeEvery(reducerAction, function* (action: unknown): Generator\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlet promiseResolve: ((val: unknown) => void) | null = null;\n\t\t\t\t\t\t\t\tlet promiseReject: ((err: unknown) => void) | null = null;\n\t\t\t\t\t\t\t\ttry\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Custom action properties\n\t\t\t\t\t\t\t\t\tconst typedAction = action as Record<string, unknown>;\n\t\t\t\t\t\t\t\t\tif(typedAction.__lowentry_dispatch__ === true)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tconst promise = new Promise((resolve, reject) =>\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tpromiseResolve = resolve;\n\t\t\t\t\t\t\t\t\t\t\tpromiseReject = reject;\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\tif(Array.isArray(typedAction.__lowentry_dispatch_result__))\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tif(typeof promise !== 'undefined')\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t(typedAction.__lowentry_dispatch_result__ as unknown[]).push(promise);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\ttypedAction.__lowentry_dispatch_result__ = promise;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion\n\t\t\t\t\t\t\t\t\tconst result: unknown = yield (innerReducer as (...args: unknown[]) => Generator).apply(slice, [slice.state, typedAction.payload, typedAction]);\n\t\t\t\t\t\t\t\t\tif(promiseResolve !== null)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t(promiseResolve as (val: unknown) => void)(result);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcatch(e)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tconsole.error('an error was thrown by your LeRed.createSlice(...) code, by slice \"' + slice.name + '\", action \"' + STRING(reducerName) + '\":');\n\t\t\t\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\t\t\t\tif(promiseReject !== null)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\ttry\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t(promiseReject as (err: unknown) => void)(e);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcatch(e2)\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tconsole.error(e2);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif(IS_ARRAY(sagas[STRING(reducerName)]))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Type guard verified above\n\t\t\t\t\t\t\t(sagas[STRING(reducerName)] as unknown[][]).push(innerReducer as unknown[]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Generator function type\n\t\t\t\t\t\t\tsagas[STRING(reducerName)] = [innerReducer as unknown[]];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(IS_ARRAY(sagaListeners[STRING(reducerName)]))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t(sagaListeners[STRING(reducerName)] as (() => Generator)[]).push(sagaListener);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsagaListeners[STRING(reducerName)] = [sagaListener];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t \n\t\t\t\t\t\tconst reducerFunction = (state: unknown, action: unknown): void =>\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttry\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Custom action properties\n\t\t\t\t\t\t\t\tconst typedAction = action as Record<string, unknown>;\n\t\t\t\t\t\t\t\tif (typeof innerReducer === 'function')\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion\n\t\t\t\t\t\t\t\t\tconst result = (innerReducer as (...args: unknown[]) => unknown).apply(state, [(state as Record<string, unknown>)[slice.name!], typedAction.payload]);\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\tif(typedAction.__lowentry_dispatch__ === true)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\tif(Array.isArray(typedAction.__lowentry_dispatch_result__))\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tif(typeof result !== 'undefined')\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\t\t(typedAction.__lowentry_dispatch_result__ as unknown[]).push(result);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\ttypedAction.__lowentry_dispatch_result__ = result;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcatch(e)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tconsole.error('an error was thrown by your LeRed.createSlice(...) code, by slice \"' + slice.name + '\", action \"' + STRING(reducerName) + '\":');\n\t\t\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif(ISSET(reducers[STRING(reducerName)]))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treducers[STRING(reducerName)]!.push(reducerFunction);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treducers[STRING(reducerName)] = [reducerFunction];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t\tslice.actions = actions;\n\t\tslice.reducers = reducers;\n\t\tslice.sagas = sagas;\n\t\tslice.sagaListeners = sagaListeners;\n\n\t\tconst selectors: Record<string, (state: unknown) => unknown> = {};\n\t\t \n\t\tLeUtils.each(slice.selectors, (selector: unknown, selectorName: unknown) =>\n\t\t{\n\t\t\tselectors[STRING(selectorName)] = (state: unknown): unknown =>\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tif (typeof selector === 'function')\n\t\t\t\t\t{\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion\n\t\t\t\t\t\treturn (selector as (...args: unknown[]) => unknown).apply(state, [(state as Record<string, unknown>)[slice.name!]]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch(e)\n\t\t\t\t{\n\t\t\t\t\tconsole.error('an error was thrown by your LeRed.createSlice(...) code, by slice \"' + slice.name + '\", selector \"' + STRING(selectorName) + '\":');\n\t\t\t\t\tconsole.error(e);\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion -- RTK selector state parameter requires any\n\t\tslice.selectors = selectors as any;\n\n\t\tconst getters: Record<string, (...params: unknown[]) => (state: unknown) => unknown> = {};\n\t\tLeUtils.each(slice.getters, (getter: unknown, getterName: unknown) =>\n\t\t{\n\t\t\tgetters[STRING(getterName)] = (...params: unknown[]): (state: unknown) => unknown =>\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tif (typeof getter === 'function')\n\t\t\t\t\t{\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion -- Dynamic getter callback parameters\n\t\t\t\t\t\tconst selector = (getter as (...args: any[]) => unknown)(...params);\n\t\t\t\t\t\treturn (state: unknown): unknown =>\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttry\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (typeof selector === 'function')\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Dynamic selector function application\n\t\t\t\t\t\t\t\t\treturn (selector as (...args: unknown[]) => unknown).apply(state, [(state as Record<string, unknown>)[slice.name!]]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcatch(e)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tconsole.error('an error was thrown by your LeRed.createSlice(...) code, by slice \"' + slice.name + '\", getter \"' + STRING(getterName) + '\":');\n\t\t\t\t\t\t\t\tconsole.error(e);\n\t\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch(e)\n\t\t\t\t{\n\t\t\t\t\tconsole.error('an error was thrown by your LeRed.createSlice(...) code, by slice \"' + slice.name + '\", getter \"' + STRING(getterName) + '\":');\n\t\t\t\t\tconsole.error(e);\n\t\t\t\t\treturn (): unknown => undefined;\n\t\t\t\t}\n\t\t\t\treturn (): unknown => undefined;\n\t\t\t};\n\t\t});\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion -- RTK getter type compatibility\n\t\tslice.getters = getters as any;\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- RTK slice type interop\n\t\treturn slice as unknown as RTK.Slice;\n\t}\n\telse\n\t{\n\t\tslice.__lowentry_unfinished_slice = true;\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- RTK slice type interop\n\t\treturn slice as unknown as RTK.Slice;\n\t}\n};\n\nexport const createFastSlice = (slice: SliceConfig): RTK.Slice =>\n{\n\tif(!slice)\n\t{\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- RTK slice type interop\n\t\treturn {} as RTK.Slice;\n\t}\n\tif(Array.isArray(slice))\n\t{\n\t\tconst e = new Error('the given slice is an array (instead of an object)');\n\t\tconsole.error('an error was thrown by your LeRed.createFastSlice(...) code:');\n\t\tconsole.error(e);\n\t\tthrow e;\n\t}\n\n\tconst actions: Record<string, (...params: unknown[]) => unknown> = {};\n\tLeUtils.each(slice.actions, (reducer: unknown, reducerName: unknown) =>\n\t{\n\t\tactions[STRING(reducerName)] = (...params: unknown[]): unknown => \n\t\t{\n\t\t\tif (typeof reducer === 'function')\n\t\t\t{\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Dynamic reducer function\n\t\t\t\treturn (reducer as (...args: unknown[]) => unknown).apply(slice, [slice.state, ...params]);\n\t\t\t}\n\t\t\treturn undefined;\n\t\t};\n\t});\n\tslice.actions = actions;\n\n\tconst selectors: Record<string, () => unknown> = {};\n\tLeUtils.each(slice.selectors, (selector: unknown, selectorName: unknown) =>\n\t{\n\t\tselectors[STRING(selectorName)] = (): unknown => \n\t\t{\n\t\t\tif (typeof selector === 'function')\n\t\t\t{\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Dynamic selector function\n\t\t\t\treturn (selector as (...args: unknown[]) => unknown).apply(slice, [slice.state]);\n\t\t\t}\n\t\t\treturn undefined;\n\t\t};\n\t});\n\tslice.selectors = new Proxy(selectors, {\n\t\tget:(target, key: string): unknown =>\n\t\t{\n\t\t\tif (!(key in target))\n\t\t\t{\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\t \n\t\t\tconst targetRecord = target as Record<string, () => unknown>;\n\t\t\tconst getter = targetRecord[key];\n\t\t\tif (typeof getter === 'function')\n\t\t\t{\n\t\t\t\treturn getter();\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t});\n\n\tconst getters: Record<string, (...params: unknown[]) => unknown> = {};\n\tLeUtils.each(slice.getters, (selector: unknown, selectorName: unknown) =>\n\t{\n\t\tgetters[STRING(selectorName)] = (...params: unknown[]): unknown => \n\t\t{\n\t\t\tif (typeof selector === 'function')\n\t\t\t{\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Dynamic selector function\n\t\t\t\treturn (selector as (...args: unknown[]) => unknown).apply(slice, [slice.state, ...params]);\n\t\t\t}\n\t\t\treturn undefined;\n\t\t};\n\t});\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- RTK slice type interop\n\tslice.getters = getters as unknown as Record<string, (...args: unknown[]) => (state: unknown) => unknown>;\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- RTK slice type interop\n\treturn slice as unknown as RTK.Slice;\n};\n\nexport const leRedCreateAction = <TPayload = unknown>(id: string): RTK.ActionCreatorWithPayload<TPayload> =>\n{\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- RTK action type interop\n\treturn RTK.createAction<TPayload>('lowentrystore/lowentryaction/' + id) as RTK.ActionCreatorWithPayload<TPayload>;\n};\n\nexport const leRedCreateSelector = <TResult = unknown>(selectorsGenerator: (this: unknown, stateOfSlice: unknown) => unknown[]): ((this: unknown, stateOfSlice: unknown) => TResult) =>\n{\n\treturn function(this: unknown, stateOfSlice: unknown): TResult\n\t{\n\t\t// eslint-disable-next-line @typescript-eslint/no-this-alias\n\t\tconst state = this;\n\t\tconst selectors = selectorsGenerator.apply(state, [stateOfSlice]);\n\t\tconst selectorArgs: unknown[] = [];\n\n\t\tfor(let i = 0; i < selectors.length - 1; i++)\n\t\t{\n\t\t\tlet selectorsEntry = selectors[i];\n\t\t\tif(typeof selectorsEntry === 'function')\n\t\t\t{\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Dynamic selector function\n\t\t\t\tconst selectorFunc = selectorsEntry as (this: unknown, ...args: unknown[]) => unknown;\n\t\t\t\tselectorsEntry = selectorFunc.apply(state, [state]);\n\t\t\t}\n\t\t\tselectorArgs.push(selectorsEntry);\n\t\t}\n\n\t\tlet finalSelector: TResult | unknown = selectors[selectors.length - 1];\n\t\tif(typeof finalSelector === 'function')\n\t\t{\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Dynamic selector function\n\t\t\tconst finalSelectorFunc = finalSelector as (this: unknown, ...args: unknown[]) => TResult;\n\t\t\t \n\t\t\tfinalSelector = finalSelectorFunc.apply(state, selectorArgs) as TResult;\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Final selector result type\n\t\treturn finalSelector as TResult;\n\t};\n};\n\nexport const leRedCreateCachedSelector = <TResult = unknown>(selectorsGenerator: (this: unknown, stateOfSlice: unknown) => unknown[], equalsComparator: (a: unknown, b: unknown) => boolean): ((this: unknown, stateOfSlice: unknown) => TResult) | void =>\n{\n\tconst validatedComparator = fixEqualsComparator(equalsComparator, 'LeRed.createCachedSelector() was given an invalid comparator:');\n\tlet previousSelectorArgs: unknown[] | null = null;\n\tlet previousFinalSelectorResult: TResult | null = null;\n\treturn function(this: unknown, stateOfSlice: unknown): TResult\n\t{\n\t\t// eslint-disable-next-line @typescript-eslint/no-this-alias\n\t\tconst state = this;\n\t\tconst selectors = selectorsGenerator.apply(state, [stateOfSlice]);\n\t\tconst selectorArgs: unknown[] = [];\n\n\t\tfor(let i = 0; i < selectors.length - 1; i++)\n\t\t{\n\t\t\tlet selectorsEntry = selectors[i];\n\t\t\tif(typeof selectorsEntry === 'function')\n\t\t\t{\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Dynamic selector function\n\t\t\t\tconst selectorFunc = selectorsEntry as (this: unknown, ...args: unknown[]) => unknown;\n\t\t\t\tselectorsEntry = selectorFunc.apply(state, [state]);\n\t\t\t}\n\t\t\tselectorArgs.push(selectorsEntry);\n\t\t}\n\n\t\tlet finalSelector: TResult | unknown = selectors[selectors.length - 1];\n\t\tif(typeof finalSelector === 'function')\n\t\t{\n\t\t\tif(validatedComparator(previousSelectorArgs, selectorArgs) && previousFinalSelectorResult !== null)\n\t\t\t{\n\t\t\t\tfinalSelector = previousFinalSelectorResult;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Dynamic selector function\n\t\t\t\tconst finalSelectorFunc = finalSelector as (this: unknown, ...args: unknown[]) => TResult;\n\t\t\t\tconst result = finalSelectorFunc.apply(state, selectorArgs);\n\t\t\t\t \n\t\t\t\tfinalSelector = result as TResult;\n\t\t\t\tpreviousSelectorArgs = selectorArgs;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Generic result type\n\t\t\t\tpreviousFinalSelectorResult = finalSelector as TResult;\n\t\t\t}\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Final selector result type\n\t\treturn finalSelector as TResult;\n\t};\n};\n\n\n// --- React-Redux Exports ---\n\nexport const batch = ReactRedux.batch;\nexport const connect = ReactRedux.connect;\nexport const useSelector = leRedUseSelector;\nexport const useDispatch = ReactRedux.useDispatch;\nexport const useStore = ReactRedux.useStore;\nexport const shallowEqual = ReactRedux.shallowEqual;\n\n\n// --- Redux-Saga Exports ---\n\nexport const eventChannel = ReduxSaga.eventChannel;\nexport const buffers = ReduxSaga.buffers;\nexport const detach = ReduxSaga.detach;\nexport const END = ReduxSaga.END;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion -- ReduxSaga type export\nexport const isEnd = (ReduxSaga as any).isEnd;\nexport const channel = ReduxSaga.channel;\nexport const multicastChannel = ReduxSaga.multicastChannel;\nexport const stdChannel = ReduxSaga.stdChannel;\nexport const runSaga = ReduxSaga.runSaga;\n\n\n// --- LeRed Custom Hooks ---\n\nexport const useConfigureStore = (storeData: StoreConfig): RTK.EnhancedStore =>\n{\n\treturn leRedUseMemo(() => configureStore(storeData), [storeData], LeUtils.equals);\n};\n\nexport const useEffectInterval = (callable: () => void, comparingValues: unknown[], intervalMs: number, fireImmediately: boolean, equalsComparator?: (a: unknown, b: unknown) => boolean): void =>\n{\n\tconst callableRef = React.useRef(callable);\n\tcallableRef.current = callable;\n\tleRedUseEffect(() => LeUtils.setInterval(() => callableRef.current(), intervalMs, fireImmediately).remove, [comparingValues, intervalMs, fireImmediately, equalsComparator], LeUtils.equals);\n};\n\nexport const useEffectAnimationFrameInterval = (callable: () => void, comparingValues: unknown[], intervalFrames: number, fireImmediately: boolean, equalsComparator?: (a: unknown, b: unknown) => boolean): void =>\n{\n\tconst callableRef = React.useRef(callable);\n\tcallableRef.current = callable;\n\tleRedUseEffect(() => LeUtils.setAnimationFrameInterval(() => callableRef.current(), intervalFrames, fireImmediately).remove, [comparingValues, intervalFrames, fireImmediately, equalsComparator], LeUtils.equals);\n};\n\nexport const useEffectGenerator = (callable: () => Generator<Promise<unknown>>, comparingValues: unknown[], _intervalMs?: unknown, _fireImmediately?: unknown, equalsComparator?: (a: unknown, b: unknown) => boolean): void =>\n{\n\tconst callableRef = React.useRef(callable);\n\tcallableRef.current = callable;\n\tleRedUseEffect(() =>\n\t{\n\t\tlet stop = false;\n\n\t\t(async(): Promise<void> =>\n\t\t{\n\t\t\tfor(const promise of callableRef.current())\n\t\t\t{\n\t\t\t\tif(stop)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tawait promise;\n\t\t\t\tif(stop)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t})();\n\n\t\treturn (): void =>\n\t\t{\n\t\t\tstop = true;\n\t\t};\n\t}, [comparingValues, equalsComparator], LeUtils.equals);\n};\n\nexport const useEffectGeneratorLoop = (callable: () => Generator<Promise<unknown>>, comparingValues: unknown[], _intervalMs?: unknown, _fireImmediately?: unknown, equalsComparator?: (a: unknown, b: unknown) => boolean): void =>\n{\n\tconst callableRef = React.useRef(callable);\n\tcallableRef.current = callable;\n\tleRedUseEffect(() =>\n\t{\n\t\tlet stop = false;\n\n\t\t(async(): Promise<void> =>\n\t\t{\n\t\t\twhile(!stop)\n\t\t\t{\n\t\t\t\tfor(const promise of callableRef.current())\n\t\t\t\t{\n\t\t\t\t\tif(stop)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tawait promise;\n\t\t\t\t\tif(stop)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})();\n\n\t\treturn (): void =>\n\t\t{\n\t\t\tstop = true;\n\t\t};\n\t}, [comparingValues, equalsComparator], LeUtils.equals);\n};\n\nexport const useEffectShutdown = (callable: () => void, comparingValues: unknown[], equalsComparator?: (a: unknown, b: unknown) => boolean): void =>\n{\n\tleRedUseEffect(() =>\n\t{\n\t\tconst run = (): void =>\n\t\t{\n\t\t\tcallable();\n\t\t};\n\n\t\tglobalThis?.addEventListener?.('beforeunload', run, {capture:true});\n\t\treturn (): void =>\n\t\t{\n\t\t\tglobalThis?.removeEventListener?.('beforeunload', run, {capture:true});\n\t\t\trun();\n\t\t};\n\t}, [comparingValues, equalsComparator], LeUtils.equals);\n};\n\nexport const useEffectPageFocusLost = (callable: () => void, comparingValues: unknown[], equalsComparator?: (a: unknown, b: unknown) => boolean): void =>\n{\n\tconst events = ['pagehide', 'freeze', 'blur', 'visibilitychange'];\n\tleRedUseEffect(() =>\n\t{\n\t\tconst run = (): void =>\n\t\t{\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion -- Global document access\n\t\t\tif(((globalThis as any)?.document?.visibilityState !== 'hidden') && (globalThis as any)?.document?.hasFocus?.())\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcallable();\n\t\t};\n\n\t\tevents.forEach((type) =>\n\t\t{\n\t\t\tglobalThis?.addEventListener?.(type, run, {capture:true});\n\t\t});\n\t\treturn (): void =>\n\t\t{\n\t\t\tevents.forEach((type: string): void =>\n\t\t\t{\n\t\t\t\tglobalThis?.removeEventListener?.(type, run, {capture:true});\n\t\t\t});\n\t\t};\n\t}, [comparingValues, equalsComparator], LeUtils.equals);\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint -- Explicit T extends unknown for JSX compatibility\nexport const usePrevious = <T extends unknown>(value: T, initialValue: T): T =>\n{\n\tconst ref = React.useRef<T>(initialValue);\n\tleRedUseEffect(() =>\n\t{\n\t\tref.current = value;\n\t}, [value], LeUtils.equals);\n\treturn ref.current;\n};\n\nexport const useFont = (font: string): boolean =>\n{\n\tconst fontStr = '12px ' + STRING(font).trim();\n\tconst [hasFont, setHasFont] = React.useState(false);\n\tleRedUseEffect((): void =>\n\t{\n\t\tif(!hasFont)\n\t\t{\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion -- Global document fonts access\n\t\t\tif(!(globalThis as any)?.document?.fonts?.check)\n\t\t\t{\n\t\t\t\tsetHasFont(true);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst handler = setInterval((): void =>\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion -- Global document fonts access\n\t\t\t\t\tif((globalThis as any).document.fonts.check(fontStr))\n\t\t\t\t\t{\n\t\t\t\t\t\tclearInterval(handler);\n\t\t\t\t\t\tsetHasFont(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch(e)\n\t\t\t\t{\n\t\t\t\t\tconsole.error(e);\n\t\t\t\t\tclearInterval(handler);\n\t\t\t\t\tsetHasFont(true);\n\t\t\t\t}\n\t\t\t}, 30);\n\t\t}\n\t}, [hasFont], LeUtils.equals);\n\treturn hasFont;\n};\n\nexport const useScript = (url: string, props: Record<string, string> = {}): void =>\n{\n\tleRedUseEffect(() =>\n\t{\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion -- Global document access\n\t\tif(!(globalThis as any)?.document?.createElement || !(globalThis as any)?.document?.head?.appendChild || !(globalThis as any)?.document?.head?.removeChild)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion -- Global document access\n\t\tconst script = (globalThis as any).document.createElement('script');\n\t\tscript.type = 'text/javascript';\n\t\tscript.src = url;\n\n\t\tLeUtils.each(props, (value: unknown, key: unknown): void =>\n\t\t{\n\t\t\tscript.setAttribute(STRING(key), STRING(value));\n\t\t});\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion -- Global document access\n\t\t(globalThis as any).document.head.appendChild(script);\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion -- Global document access\n\t\treturn (): void => (globalThis as any).document.head.removeChild(script);\n\t}, [url, props], LeUtils.equals);\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint -- Explicit T extends unknown for JSX compatibility\nexport const mergeRefs = <T extends unknown>(...refs: (React.Ref<T> | undefined)[]): ((inst: T | null) => void) | null =>\n{\n\tconst flattenedRefs = LeUtils.flattenArray(refs);\n\tif(!flattenedRefs)\n\t{\n\t\treturn null;\n\t}\n\n\tconst newRefs: React.Ref<T>[] = [];\n\tLeUtils.each(flattenedRefs, (ref: unknown): void =>\n\t{\n\t\tconst isReactRef = (r: unknown): r is React.Ref<T> =>\n\t\t{\n\t\t\treturn typeof r === 'function' || (!!r && typeof r === 'object' && 'current' in r) || r === null;\n\t\t};\n\n\t\t// Type guard: verify ref is a valid React.Ref\n\t\tif(isReactRef(ref) && ref !== null)\n\t\t{\n\t\t\tnewRefs.push(ref);\n\t\t}\n\t});\n\n\tif(newRefs.length <= 0)\n\t{\n\t\treturn null;\n\t}\n\tconst isMutableRefObject = (r: unknown): r is React.MutableRefObject<T | null> =>\n\t{\n\t\treturn !!r && typeof r === 'object' && 'current' in r;\n\t};\n\n\tif(newRefs.length === 1)\n\t{\n\t\tconst singleRef = newRefs[0];\n\t\t// Type guard: check if it's a callback ref or ref object\n\t\tif(typeof singleRef === 'function')\n\t\t{\n\t\t\t// singleRef is already a function, return it directly\n\t\t\treturn singleRef;\n\t\t}\n\t\treturn (inst: T | null): void =>\n\t\t{\n\t\t\t// Type guard: verify ref object\n\t\t\tif(isMutableRefObject(singleRef))\n\t\t\t{\n\t\t\t\tsingleRef.current = inst;\n\t\t\t}\n\t\t};\n\t}\n\treturn (inst: T | null): void =>\n\t{\n\t\tLeUtils.each(newRefs, (ref: unknown): void =>\n\t\t{\n\t\t\t// Type guard: verify it's a React.Ref<T>\n\t\t\tif(!ref)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttry\n\t\t\t{\n\t\t\t\tconst isCallbackRef = (r: unknown): r is (inst: T | null) => void =>\n\t\t\t\t{\n\t\t\t\t\treturn typeof r === 'function';\n\t\t\t\t};\n\n\t\t\t\t// Type guard: check if callback ref\n\t\t\t\tif(isCallbackRef(ref))\n\t\t\t\t{\n\t\t\t\t\tref(inst);\n\t\t\t\t}\n\t\t\t\t// Type guard: check if ref object with current property\n\t\t\t\telse if(isMutableRefObject(ref))\n\t\t\t\t{\n\t\t\t\t\tref.current = inst;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch(e)\n\t\t\t{\n\t\t\t\tconsole.error(e);\n\t\t\t}\n\t\t});\n\t};\n};\n\n \nexport const useTriggerable = <T = unknown>(event: string): T =>\n{\n\t// Initial value must be cast to T since we're using a generic type with unknown default\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Generic type initialization\n\tconst [[value], setValue] = React.useState<[T, string]>([null as T, LeUtils.uniqueId()]);\n\n\tleRedUseEffect(() =>\n\t{\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion -- Global object access\n\t\tconst globalObj = globalThis as any;\n\t\tif(!globalObj.addEventListener || !globalObj.removeEventListener)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst callback = (e: Event): void =>\n\t\t{\n\t\t\t// Type guard for CustomEvent\n\t\t\tconst isCustomEvent = (event: Event): event is CustomEvent =>\n\t\t\t{\n\t\t\t\treturn 'detail' in event;\n\t\t\t};\n\t\t\t\n\t\t\tif (isCustomEvent(e))\n\t\t\t{\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- CustomEvent detail generic type\n\t\t\t\tsetValue([e.detail as T, LeUtils.uniqueId()]);\n\t\t\t}\n\t\t};\n\n\t\tconst eventName = 'lowentrytriggerable_' + event;\n\t\tglobalThis.addEventListener(eventName, callback);\n\t\treturn (): void => globalThis.removeEventListener(eventName, callback);\n\t}, [event], LeUtils.equals);\n\n\treturn value;\n};\n\nexport const trigger = (event: string, value: unknown): void =>\n{\n\tif(!globalThis?.dispatchEvent || typeof CustomEvent !== 'function')\n\t{\n\t\treturn;\n\t}\n\tconst eventName = 'lowentrytriggerable_' + event;\n\tglobalThis.dispatchEvent(new CustomEvent(eventName, {detail:value}));\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint -- Explicit T extends unknown for JSX compatibility\nexport const useTempState = <T extends unknown>(defaultValue: T, duration: number): [T, (newValue: T) => void] =>\n{\n\tconst [value, setValue] = React.useState(defaultValue);\n\tconst timeoutHandle = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\tconst defaultValueRef = React.useRef(defaultValue);\n\tdefaultValueRef.current = defaultValue;\n\tconst durationRef = React.useRef(duration);\n\tdurationRef.current = duration;\n\n\tleRedUseEffect(() =>\n\t{\n\t\treturn (): void =>\n\t\t{\n\t\t\tif(timeoutHandle.current)\n\t\t\t{\n\t\t\t\tclearTimeout(timeoutHandle.current);\n\t\t\t}\n\t\t};\n\t}, [], LeUtils.equals);\n\n\treturn [value, (newValue: T): void =>\n\t{\n\t\tif(timeoutHandle.current)\n\t\t{\n\t\t\tclearTimeout(timeoutHandle.current);\n\t\t}\n\t\tsetValue(newValue);\n\t\ttimeoutHandle.current = setTimeout((): void =>\n\t\t{\n\t\t\ttimeoutHandle.current = null;\n\t\t\tsetValue(defaultValueRef.current);\n\t\t}, durationRef.current);\n\t}];\n};\n\nlet historyStateListeners: {id: string; callback: () => void}[] = [];\n\nif(typeof globalThis !== 'undefined')\n{\n\tglobalThis?.addEventListener?.('popstate', (): void =>\n\t{\n\t\thistoryStateListeners.pop()?.callback();\n\t});\n}\n\nconst addHistoryListener = (callback: () => void): string =>\n{\n\tconst id = LeUtils.uniqueId();\n\thistoryStateListeners.push({id, callback});\n\treturn id;\n};\n\nconst removeHistoryListener = (id: string | null): void =>\n{\n\tif(!id)\n\t{\n\t\treturn;\n\t}\n\thistoryStateListeners = historyStateListeners.filter((listener) => (listener.id !== id));\n};\n\nexport const useHistory = (onForward: () => void, onBack: () => void): [() => void, () => void] =>\n{\n\tconst remaining = React.useRef(0);\n\tconst id = React.useRef<string | null>(null);\n\tconst onForwardRef = React.useRef(onForward);\n\tonForwardRef.current = onForward;\n\tconst onBackRef = React.useRef(onBack);\n\tonBackRef.current = onBack;\n\n\tconst goBack = leRedUseCallback((): void =>\n\t{\n\t\t \n\t\tif(remaining.current <= 0)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tremaining.current--;\n\t\tif(remaining.current === 0)\n\t\t{\n\t\t\tif(id.current)\n\t\t\t{\n\t\t\t\tremoveHistoryListener(id.current);\n\t\t\t}\n\t\t\tid.current = null;\n\t\t}\n\t\tonBackRef.current();\n\t}, [], LeUtils.equals);\n\n\tleRedUseEffect(() =>\n\t{\n\t\treturn (): void =>\n\t\t{\n\t\t\tif(id.current)\n\t\t\t{\n\t\t\t\tremoveHistoryListener(id.current);\n\t\t\t}\n\t\t};\n\t}, [], LeUtils.equals);\n\n\treturn [\n\t\t(): void =>\n\t\t{\n\t\t\tif(typeof window !== 'undefined' && window.history)\n\t\t\t{\n\t\t\t\twindow.history.pushState(null, '', window.location.pathname + window.location.search + '#');\n\t\t\t}\n\t\t\tremaining.current++;\n\t\t\tif(remaining.current === 1)\n\t\t\t{\n\t\t\t\tif(id.current)\n\t\t\t\t{\n\t\t\t\t\tremoveHistoryListener(id.current);\n\t\t\t\t}\n\t\t\t\tid.current = addHistoryListener(goBack);\n\t\t\t}\n\t\t\tonForwardRef.current();\n\t\t},\n\n\t\t(): void =>\n\t\t{\n\t\t\tif(remaining.current > 0)\n\t\t\t{\n\t\t\t\tif(typeof window !== 'undefined' && window.history)\n\t\t\t\t{\n\t\t\t\t\twindow.history.back();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t];\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint -- Explicit T extends unknown for JSX compatibility\nexport const useHistoryState = <T extends unknown>(initialState: T): [boolean, () => void, () => void] =>\n{\n\tconst [state, setState] = React.useState(!!initialState);\n\tconst [forwards, backwards] = useHistory(() => setState(!initialState), () => setState(!!initialState));\n\tif(initialState)\n\t{\n\t\treturn [state, backwards, forwards];\n\t}\n\treturn [state, forwards, backwards];\n};\n\nexport const useUrlHashParams = (): [Record<string, string>, string] =>\n{\n\tconst getHashString = (): string => (globalThis?.location?.hash?.trim()?.replace(/^#/, '') ?? '');\n\tconst parseHashParams = (hashString: string): Record<string, string> => Object.fromEntries(new URLSearchParams(hashString));\n\n\tconst [hashString, setHashString] = React.useState(getHashString);\n\tconst hashParams = leRedUseMemo(() => parseHashParams(hashString), [hashString], LeUtils.equals);\n\n\tleRedUseEffect(() =>\n\t{\n\t\tconst onUrlChanged = (): void =>\n\t\t{\n\t\t\tsetHashString(getHashString());\n\t\t};\n\n\t\tglobalThis?.addEventListener?.('hashchange', onUrlChanged);\n\t\treturn (): void =>\n\t\t{\n\t\t\tglobalThis?.removeEventListener?.('hashchange', onUrlChanged);\n\t\t};\n\t}, [], LeUtils.equals);\n\n\treturn [hashParams, hashString];\n};\n\nexport const useRetryingImageUrl = (url: string, options: {retries?: number, delay?: number | ((retries: number) => number), queryParam?: string}): [string, () => void] =>\n{\n\tconst normalizedUrl = STRING(url);\n\tconst urlHasQ = normalizedUrl.includes('?');\n\n\tconst [imageUrl, setImageUrl] = React.useState(normalizedUrl);\n\tconst retries = React.useRef(0);\n\tconst timeout = React.useRef<{remove: () => void}>({remove:() => undefined});\n\n\tleRedUseEffect(() =>\n\t{\n\t\treturn (): void => timeout.current.remove();\n\t}, [], LeUtils.equals);\n\n\tleRedUseEffect(() =>\n\t{\n\t\ttimeout.current.remove();\n\t\tretries.current = 0;\n\t\tsetImageUrl(normalizedUrl);\n\t}, [normalizedUrl], LeUtils.equals);\n\n\tconst onImageLoadError = leRedUseCallback((): void =>\n\t{\n\t\tif(retries.current < INT_LAX_ANY(options?.retries, 30))\n\t\t{\n\t\t\tconst defaultDelay = 100 + (50 * retries.current);\n\t\t\ttimeout.current.remove();\n\t\t\ttimeout.current = LeUtils.setTimeout(() =>\n\t\t\t{\n\t\t\t\tsetImageUrl(normalizedUrl + (urlHasQ ? '&' : '?') + (options?.queryParam || 'lowentryretryingimgversion') + '=' + (retries.current++));\n\t\t\t}, (typeof options?.delay === 'function') ? INT_LAX_ANY(options?.delay(retries.current), defaultDelay) : (INT_LAX_ANY(options?.delay, defaultDelay)));\n\t\t}\n\t}, [normalizedUrl, options, urlHasQ], LeUtils.equals);\n\n\tconst onImageLoadErrorIgnored = leRedUseCallback((): void =>\n\t{\n\t}, [], LeUtils.equals);\n\n\tif(!normalizedUrl)\n\t{\n\t\treturn [normalizedUrl, onImageLoadErrorIgnored];\n\t}\n\treturn [imageUrl, onImageLoadError];\n};\n\nexport const usePromises = <T = unknown>(callable: () => Promise<T> | Promise<T>[] | Record<string, Promise<T>>, comparingValues: unknown[]): [T | T[] | Record<string, T> | null, boolean, string | null] =>\n{\n\tconst comparingValuesClone = LeUtils.clone(comparingValues);\n\tconst comparingValuesRef = React.useRef(comparingValuesClone);\n\tconst latestComparingValuesRef = React.useRef<unknown>(null);\n\tlatestComparingValuesRef.current = comparingValuesClone;\n\n\tconst callableRef = React.useRef(callable);\n\tcallableRef.current = callable;\n\n\tconst [data, setData] = React.useState<T | T[] | Record<string, T> | null>(null);\n\tconst [loading, setLoading] = React.useState(true);\n\tconst [error, setError] = React.useState<string | null>(null);\n\n\tleRedUseEffect(() =>\n\t{\n\t\tsetLoading(true);\n\t\tsetData(null);\n\t\tsetError(null);\n\n\t\ttry\n\t\t{\n\t\t\tconst promises = callableRef.current();\n\n\t\t\t// Type guard: check if promises is an object and not a Promise (doesn't have then method)\n\t\t\tlet promisesIsObject = false;\n\t\t\tif(IS_OBJECT(promises))\n\t\t\t{\n\t\t\t\tif('then' in promises && typeof promises.then === 'function')\n\t\t\t\t{\n\t\t\t\t\tpromisesIsObject = false; // It's a Promise\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tpromisesIsObject = true; // It's a regular object\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst promisesIsArray = IS_ARRAY(promises);\n\n\t\t\tconst promisesKeyed: {promise: Promise<T>, key: unknown}[] = [];\n\t\t\tif(promisesIsObject || promisesIsArray)\n\t\t\t{\n\t\t\t\tLeUtils.each(promises, (promise: unknown, key: unknown): void =>\n\t\t\t\t{\n\t\t\t\t\t// Type guard: verify promise is a Promise<T>\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Type guard verified above\n\t\t\t\t\tif(promise && typeof promise === 'object' && 'then' in promise && typeof (promise as Promise<T>).then === 'function')\n\t\t\t\t\t{\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Type guard verified above\n\t\t\t\t\t\tpromisesKeyed.push({promise: promise as Promise<T>, key});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// Type guard: verify promises is a Promise<T>\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Type guard verified above\n\t\t\t\tif(promises && typeof promises === 'object' && 'then' in promises && typeof (promises as Promise<T>).then === 'function')\n\t\t\t\t{\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Type guard verified above\n\t\t\t\t\tpromisesKeyed.push({promise: promises as Promise<T>, key: undefined});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst wrappedPromises: (Promise<{result: T, key: unknown}> & {cancel?: () => void, remove?: () => void})[] = [];\n\t\t\tLeUtils.each(promisesKeyed, (item: unknown): void =>\n\t\t\t{\n\t\t\t// Type guard: verify item structure\n\t\t\t\tif(item && typeof item === 'object' && 'promise' in item && 'key' in item)\n\t\t\t\t{\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Type guard verified above\n\t\t\t\t\tconst typedItem = item as {promise: Promise<T>, key: unknown};\n\t\t\t\t\twrappedPromises.push(typedItem.promise\n\t\t\t\t\t\t.then(async(result: T): Promise<{result: T, key: unknown}> => ({result, key: typedItem.key})));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tPromise.all(wrappedPromises)\n\t\t\t\t.then((resultObjects: {result: T, key: unknown}[]): T | T[] | Record<string, T> | null =>\n\t\t\t\t{\n\t\t\t\t\tif(promisesIsObject)\n\t\t\t\t\t{\n\t\t\t\t\t\tconst results: Record<string, T> = {};\n\t\t\t\t\t\tLeUtils.each(resultObjects, (item: unknown): void =>\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif(item && typeof item === 'object' && 'result' in item && 'key' in item)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Type guard verified above\n\t\t\t\t\t\t\t\tconst typedItem = item as {result: T, key: unknown};\n\t\t\t\t\t\t\t\tresults[STRING(typedItem.key)] = typedItem.result;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t\telse if(promisesIsArray)\n\t\t\t\t\t{\n\t\t\t\t\t\tconst results: T[] = [];\n\t\t\t\t\t\tLeUtils.each(resultObjects, (item: unknown): void =>\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif(item && typeof item === 'object' && 'result' in item && 'key' in item)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Type guard verified above\n\t\t\t\t\t\t\t\tconst typedItem = item as {result: T, key: unknown};\n\t\t\t\t\t\t\t\tconst keyNum = typeof typedItem.key === 'number' ? typedItem.key : 0;\n\t\t\t\t\t\t\t\tresults[keyNum] = typedItem.result;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t\tconst lastResult = resultObjects.pop();\n\t\t\t\t\treturn lastResult?.result ?? null;\n\t\t\t\t})\n\t\t\t\t.then((results: T | T[] | Record<string, T> | null) =>\n\t\t\t\t{\n\t\t\t\t\tif(!LeUtils.equals(latestComparingValuesRef.current, comparingValuesClone))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tcomparingValuesRef.current = comparingValuesClone;\n\t\t\t\t\tsetLoading(false);\n\t\t\t\t\tsetData(results);\n\t\t\t\t\tsetError(null);\n\t\t\t\t})\n\t\t\t\t.catch((errorObj: unknown) =>\n\t\t\t\t{\n\t\t\t\t\tif(!LeUtils.equals(latestComparingValuesRef.current, comparingValuesClone))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tcomparingValuesRef.current = comparingValuesClone;\n\t\t\t\t\tsetLoading(false);\n\t\t\t\t\tsetData(null);\n\t\t\t\t\tsetError(LeUtils.purgeErrorMessage(errorObj));\n\t\t\t\t});\n\n\t\t\treturn (): void =>\n\t\t\t{\n\t\t\t\tLeUtils.each(wrappedPromises, (promise: unknown): void =>\n\t\t\t\t{\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Type guard verified above\n\t\t\t\t\t\tif(promise && typeof promise === 'object' && 'cancel' in promise && typeof (promise as {cancel: () => void}).cancel === 'function')\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- Type guard verified above\n\t\t\t\t\t\t\t(promise as {cancel: () => void}).cancel();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch(e)\n\t\t\t\t\t{\n\t\t\t\t\t\tconsole.error('Failed to cancel the given promise:', e);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t}\n\t\tcatch(errorObj: unknown)\n\t\t{\n\t\t\tLeUtils.setAnimationFrameTimeout(() =>\n\t\t\t{\n\t\t\t\tif(!LeUtils.equals(latestComparingValuesRef.current, comparingValuesClone))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcomparingValuesRef.current = comparingValuesClone;\n\t\t\t\tsetLoading(false);\n\t\t\t\tsetData(null);\n\t\t\t\tsetError(LeUtils.purgeErrorMessage(errorObj));\n\t\t\t}, 1);\n\t\t}\n\t}, [comparingValuesClone], LeUtils.equals);\n\n\tif(!LeUtils.equals(comparingValuesRef.current, comparingValuesClone))\n\t{\n\t\treturn [null, true, null];\n\t}\n\treturn [data, loading, error];\n};\n\nexport const useExternal = <T = unknown>(url: string | string[] | Record<string, string>, options: {retries?: number, verify?: (data: unknown, response: Response) => Promise<void> | void, [key: string]: unknown}, responseFunction: (res: Response) => Promise<T>): [T | T[] | Record<string, T> | null, boolean, string | null] =>\n{\n\treturn usePromises<T>(() =>\n\t{\n\t\tconst createFetch = (urlString: unknown): Promise<T> => \n\t\t{\n\t\t\tconst fetchResult = LeUtils.fetch(STRING(urlString), {retries: 3, ...(options ?? {})});\n\t\t\t// LeUtils.fetch returns a promise-like object, convert to Promise\n\t\t\treturn new Promise<T>((resolve, reject) => \n\t\t\t{\n\t\t\t\tif(fetchResult && typeof fetchResult === 'object' && 'then' in fetchResult && typeof fetchResult.then === 'function')\n\t\t\t\t{\n\t\t\t\t\tfetchResult.then(async(response: Response) => \n\t\t\t\t\t{\n\t\t\t\t\t\tconst data = await responseFunction(response);\n\t\t\t\t\t\tif(typeof options?.verify === 'function')\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tawait options.verify(data, response);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t}, reject);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\treject(new Error('LeUtils.fetch did not return a promise-like object'));\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tif(IS_OBJECT(url))\n\t\t{\n\t\t\tconst promises: Record<string, Promise<T>> = {};\n\t\t\tLeUtils.each(url, (urlString: unknown, key: unknown): void =>\n\t\t\t{\n\t\t\t\tpromises[STRING(key)] = createFetch(urlString);\n\t\t\t});\n\t\t\treturn promises;\n\t\t}\n\t\tif(IS_ARRAY(url))\n\t\t{\n\t\t\tconst promises: Promise<T>[] = [];\n\t\t\tLeUtils.each(url, (urlString: unknown): void =>\n\t\t\t{\n\t\t\t\tpromises.push(createFetch(urlString));\n\t\t\t});\n\t\t\treturn promises;\n\t\t}\n\t\treturn createFetch(url);\n\t}, [url, options, responseFunction]);\n};\n\nexport const useExternalJson = (url: string | string[] | Record<string, string>, options: {retries?: number, verify?: (data: unknown, response: Response) => Promise<void> | void, [key: string]: unknown}): [unknown | unknown[] | Record<string, unknown> | null, boolean, string | null] =>\n{\n\tconst responseFunction = leRedUseCallback((response: Response): Promise<unknown> => response.json(), [], LeUtils.equals);\n\treturn useExternal(url, options, responseFunction);\n};\n\nexport const useExternalBlob = (url: string | string[] | Record<string, string>, options: {retries?: number, verify?: (data: unknown, response: Response) => Promise<void> | void, [key: string]: unknown}): [Blob | Blob[] | Record<string, Blob> | null, boolean, string | null] =>\n{\n\tconst responseFunction = leRedUseCallback((response: Response): Promise<Blob> => response.blob(), [], LeUtils.equals);\n\treturn useExternal<Blob>(url, options, responseFunction);\n};\n\nexport const useExternalArrayBuffer = (url: string | string[] | Record<string, string>, options: {retries?: number, verify?: (data: unknown, response: Response) => Promise<void> | void, [key: string]: unknown}): [ArrayBuffer | ArrayBuffer[] | Record<string, ArrayBuffer> | null, boolean, string | null] =>\n{\n\tconst responseFunction = leRedUseCallback((response: Response): Promise<ArrayBuffer> => response.arrayBuffer(), [], LeUtils.equals);\n\treturn useExternal<ArrayBuffer>(url, options, responseFunction);\n};\n\nexport const useExternalString = (url: string | string[] | Record<string, string>, options: {retries?: number, verify?: (data: unknown, response: Response) => Promise<void> | void, [key: string]: unknown}): [string | string[] | Record<string, string> | null, boolean, string | null] =>\n{\n\tconst responseFunction = leRedUseCallback((response: Response): Promise<string> => response.text(), [], LeUtils.equals);\n\treturn useExternal<string>(url, options, responseFunction);\n};\n\nexport const useExternalFormData = (url: string | string[] | Record<string, string>, options: {retries?: number, verify?: (data: unknown, response: Response) => Promise<void> | void, [key: string]: unknown}): [FormData | FormData[] | Record<string, FormData> | null, boolean, string | null] =>\n{\n\tconst responseFunction = leRedUseCallback((response: Response): Promise<FormData> => response.formData(), [], LeUtils.equals);\n\treturn useExternal<FormData>(url, options, responseFunction);\n};\n\n\n// --- Redux-Saga Exports ---\n\nexport const delayFrames = function* (frames: number = 1): Generator\n{\n\tyield ReduxSagaEffects.call(() =>\n\t{\n\t\treturn new Promise<void>((resolve, reject) =>\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tLeUtils.setAnimationFrameTimeout(() => resolve(), frames);\n\t\t\t}\n\t\t\tcatch(e)\n\t\t\t{\n\t\t\t\treject(e);\n\t\t\t}\n\t\t});\n\t});\n};\n\nexport const interval = function* (callback: (stop: () => void) => Generator | Promise<void>, intervalMs: number): Generator\n{\n\tlet channelVar: ReturnType<typeof eventChannel> | null = eventChannel((emitter) =>\n\t{\n\t\tconst intervalHandle = setInterval(() =>\n\t\t{\n\t\t\temitter({});\n\t\t}, intervalMs);\n\t\treturn (): void =>\n\t\t{\n\t\t\tclearInterval(intervalHandle);\n\t\t};\n\t});\n\n\tconst stop = (): void =>\n\t{\n\t\ttry\n\t\t{\n\t\t\tif(channelVar !== null)\n\t\t\t{\n\t\t\t\tchannelVar.close();\n\t\t\t\tchannelVar = null;\n\t\t\t}\n\t\t}\n\t\tcatch(e)\n\t\t{\n\t\t\tconsole.error(e);\n\t\t}\n\t};\n\n\twhile(channelVar !== null)\n\t{\n\t\ttry\n\t\t{\n\t\t\tyield ReduxSagaEffects.take(channelVar);\n\t\t\tyield callback(stop);\n\t\t}\n\t\tcatch(e)\n\t\t{\n\t\t\tconsole.error(e);\n\t\t}\n\t\tfinally\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tif(yield ReduxSagaEffects.cancelled())\n\t\t\t\t{\n\t\t\t\t\tchannelVar.close();\n\t\t\t\t\tchannelVar = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch(e)\n\t\t\t{\n\t\t\t\tconsole.error(e);\n\t\t\t}\n\t\t}\n\t}\n};\n\nexport const effects = {\n\t...ReduxSagaEffects,\n\tdelayFrames,\n\tinterval,\n};\n\n\n// --- Components ---\n\nexport const Root = memo(({store, children, ...other}: {store?: StoreConfig, children?: React.ReactNode, [key: string]: unknown}): React.ReactElement =>\n{\n\tif(ISSET(store))\n\t{\n\t\tconst configuredStore = configureStore(store!);\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion -- RTK provider props\n\t\treturn (<ReactRedux.Provider store={configuredStore} children={children} {...(other as any)}/>);\n\t}\n\treturn <>{children}</>;\n}, LeUtils.equals);\n\nexport const PreloadComponent = (load: () => Promise<unknown>): () => Promise<unknown> =>\n{\n\tif(typeof window !== 'undefined')\n\t{\n\t\tconst promise = load();\n\t\treturn (): Promise<unknown> => promise;\n\t}\n\treturn load;\n};\n\nexport const LoadComponent = memo(({loading, load, ...other}: {loading?: React.ReactElement, load: unknown, [key: string]: unknown}): React.ReactElement | null =>\n{\n\tconst [Component, setComponent] = React.useState<React.ReactElement | null>(loading ?? null);\n\n\tleRedUseEffect((): void =>\n\t{\n\t\t(async(): Promise<void> =>\n\t\t{\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion -- Dynamic component loading\n\t\t\tconst LoadedComponent = (typeof load === 'function') ? await (load as () => Promise<React.ComponentType<any>>)() : await (load as Promise<React.ComponentType<any>>);\n\t\t\tif(!LoadedComponent)\n\t\t\t{\n\t\t\t\tsetComponent(null);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion -- Dynamic component props\n\t\t\tsetComponent(<LoadedComponent {...(other as any)}/>);\n\t\t})();\n\t}, [], LeUtils.equals);\n\n\treturn Component;\n}, LeUtils.equals);\n\n\n// --- LeRed Interface ---\n\nexport interface LeRedInterface\n{\n\t// React Hooks\n\tuseState: typeof useState;\n\tuseEffect: typeof useEffect;\n\tuseLayoutEffect: typeof useLayoutEffect;\n\tuseContext: typeof useContext;\n\tuseReducer: typeof useReducer;\n\tuseCallback: typeof useCallback;\n\tuseMemo: typeof useMemo;\n\tuseRef: typeof useRef;\n\tuseImperativeHandle: typeof useImperativeHandle;\n\tuseDebugValue: typeof useDebugValue;\n\tuseDeferredValue: typeof useDeferredValue;\n\tuseTransition: typeof useTransition;\n\tuseSyncExternalStore: typeof useSyncExternalStore;\n\tuseId: typeof useId;\n\tuseInsertionEffect: (callable: React.EffectCallback, comparingValues: unknown[], equalsComparator?: (a: unknown, b: unknown) => boolean) => void;\n\n\t// React Utils\n\tcreateContext: typeof createContext;\n\tcreateElement: typeof createElement;\n\tcloneElement: typeof cloneElement;\n\tisValidElement: typeof isValidElement;\n\tlazy: typeof lazy;\n\tforwardRef: typeof forwardRef;\n\tmemo: typeof memo;\n\tstartTransition: typeof startTransition;\n\n\t// ReactDOM\n\tcreatePortal: typeof createPortal;\n\tflushSync: typeof flushSync;\n\n\t// Redux / RTK\n\tcombineReducers: typeof combineReducers;\n\tapplyMiddleware: typeof applyMiddleware;\n\tcompose: typeof compose;\n\tbindActionCreators: typeof bindActionCreators;\n\tconfigureStore: typeof configureStore;\n\tcreateSlice: typeof createSlice;\n\tcreateFastSlice: typeof createFastSlice;\n\tcreateAction: typeof leRedCreateAction;\n\tcreateReducer: typeof createReducer;\n\tcreateAsyncThunk: typeof createAsyncThunk;\n\tcreateEntityAdapter: typeof createEntityAdapter;\n\tcreateSelector: typeof leRedCreateSelector;\n\tcreateCachedSelector: typeof leRedCreateCachedSelector;\n\tcreateNextState: typeof createNextState;\n\tproduce: typeof produce;\n\tfreeze: typeof freeze;\n\tisDraft: typeof isDraft;\n\toriginal: typeof original;\n\tcombineSlices: typeof combineSlices;\n\tcreateListenerMiddleware: typeof createListenerMiddleware;\n\tcreateDynamicMiddleware: typeof createDynamicMiddleware;\n\tautoBatchEnhancer: typeof autoBatchEnhancer;\n\tisAnyOf: typeof isAnyOf;\n\tisAllOf: typeof isAllOf;\n\tisPending: typeof isPending;\n\tisFulfilled: typeof isFulfilled;\n\tisRejected: typeof isRejected;\n\tisAsyncThunkAction: typeof isAsyncThunkAction;\n\tisRejectedWithValue: typeof isRejectedWithValue;\n\tnanoid: typeof nanoid;\n\tcurrent: typeof current;\n\tisImmutableDefault: typeof isImmutableDefault;\n\tunwrapResult: typeof unwrapResult;\n\n\t// React-Redux\n\tuseSelector: typeof useSelector;\n\tuseDispatch: typeof useDispatch;\n\tuseStore: typeof useStore;\n\tshallowEqual: typeof shallowEqual;\n\tbatch: typeof batch;\n\tconnect: typeof connect;\n\n\t// Redux-Saga\n\teventChannel: typeof eventChannel;\n\tbuffers: typeof buffers;\n\tdetach: typeof detach;\n\tchannel: typeof channel;\n\tmulticastChannel: typeof multicastChannel;\n\tstdChannel: typeof stdChannel;\n\trunSaga: typeof runSaga;\n\tEND: typeof END;\n\tisEnd: typeof isEnd;\n\teffects: typeof effects;\n\n\t// Custom Hooks\n\tuseConfigureStore: typeof useConfigureStore;\n\tuseEffectInterval: typeof useEffectInterval;\n\tuseEffectAnimationFrameInterval: typeof useEffectAnimationFrameInterval;\n\tuseEffectGenerator: typeof useEffectGenerator;\n\tuseEffectGeneratorLoop: typeof useEffectGeneratorLoop;\n\tuseEffectShutdown: typeof useEffectShutdown;\n\tuseEffectPageFocusLost: typeof useEffectPageFocusLost;\n\tusePrevious: typeof usePrevious;\n\tuseFont: typeof useFont;\n\tuseScript: typeof useScript;\n\tmergeRefs: typeof mergeRefs;\n\tuseTriggerable: typeof useTriggerable;\n\ttrigger: typeof trigger;\n\tuseTempState: typeof useTempState;\n\tuseHistory: typeof useHistory;\n\tuseHistoryState: typeof useHistoryState;\n\tuseUrlHashParams: typeof useUrlHashParams;\n\tuseRetryingImageUrl: typeof useRetryingImageUrl;\n\tusePromises: typeof usePromises;\n\tuseExternal: typeof useExternal;\n\tuseExternalJson: typeof useExternalJson;\n\tuseExternalBlob: typeof useExternalBlob;\n\tuseExternalArrayBuffer: typeof useExternalArrayBuffer;\n\tuseExternalString: typeof useExternalString;\n\tuseExternalFormData: typeof useExternalFormData;\n\n\t// Components\n\tRoot: typeof Root;\n\tLoadComponent: typeof LoadComponent;\n\tPreloadComponent: typeof PreloadComponent;\n\n\t// Deprecated (for backward compatibility / helpful errors)\n\tset?: (key: string, value: unknown) => void;\n\tsetAll?: (obj: unknown, optionalSkipHasOwnPropertyCheck?: boolean) => void;\n\n\t// Additional dynamic properties\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t[key: string]: any;\n}\n\n// --- Main Export Object ---\n\n/**\n * The main LeRed object.\n */\nconst LeRedBase: LeRedInterface = {\n\t// React Hooks\n\tuseState,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseContext,\n\tuseReducer,\n\tuseCallback,\n\tuseMemo,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseDebugValue,\n\tuseDeferredValue,\n\tuseTransition,\n\tuseSyncExternalStore,\n\tuseId,\n\tuseInsertionEffect,\n\n\t// React Utils\n\tcreateContext,\n\tcreateElement,\n\tcloneElement,\n\tisValidElement,\n\tlazy,\n\tforwardRef,\n\tmemo,\n\tstartTransition,\n\n\t// ReactDOM\n\tcreatePortal,\n\tflushSync,\n\n\t// Redux / RTK\n\tcombineReducers,\n\tapplyMiddleware,\n\tcompose,\n\tbindActionCreators,\n\tconfigureStore,\n\tcreateSlice,\n\tcreateFastSlice,\n\tcreateAction: leRedCreateAction,\n\tcreateReducer,\n\tcreateAsyncThunk,\n\tcreateEntityAdapter,\n\tcreateSelector: leRedCreateSelector,\n\tcreateCachedSelector: leRedCreateCachedSelector,\n\tcreateNextState,\n\tproduce,\n\tfreeze,\n\tisDraft,\n\toriginal,\n\tcombineSlices,\n\tcreateListenerMiddleware,\n\tcreateDynamicMiddleware,\n\tautoBatchEnhancer,\n\tisAnyOf,\n\tisAllOf,\n\tisPending,\n\tisFulfilled,\n\tisRejected,\n\tisAsyncThunkAction,\n\tisRejectedWithValue,\n\tnanoid,\n\tcurrent,\n\tisImmutableDefault,\n\tunwrapResult,\n\n\t// React-Redux\n\tuseSelector,\n\tuseDispatch,\n\tuseStore,\n\tshallowEqual,\n\tbatch,\n\tconnect,\n\n\t// Redux-Saga\n\teventChannel,\n\tbuffers,\n\tdetach,\n\tchannel,\n\tmulticastChannel,\n\tstdChannel,\n\trunSaga,\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\tEND,\n\tisEnd,\n\teffects,\n\n\t// Custom Hooks\n\tuseConfigureStore,\n\tuseEffectInterval,\n\tuseEffectAnimationFrameInterval,\n\tuseEffectGenerator,\n\tuseEffectGeneratorLoop,\n\tuseEffectShutdown,\n\tuseEffectPageFocusLost,\n\tusePrevious,\n\tuseFont,\n\tuseScript,\n\tmergeRefs,\n\tuseTriggerable,\n\ttrigger,\n\tuseTempState,\n\tuseHistory,\n\tuseHistoryState,\n\tuseUrlHashParams,\n\tuseRetryingImageUrl,\n\tusePromises,\n\tuseExternal,\n\tuseExternalJson,\n\tuseExternalBlob,\n\tuseExternalArrayBuffer,\n\tuseExternalString,\n\tuseExternalFormData,\n\n\t// Components (React components use PascalCase by convention)\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\tRoot,\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\tLoadComponent,\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\tPreloadComponent,\n};\n\n/**\n * Proxy to provide helpful warnings/errors for missing properties.\n */\nconst LeRedProxy = new Proxy(LeRedBase, {\n\tget: (target: Record<string, unknown>, prop: string | symbol): unknown =>\n\t{\n\t\tif(typeof prop === 'string' && !(prop in target))\n\t\t{\n\t\t\tif(prop === 'set' || prop === 'setAll')\n\t\t\t{\n\t\t\t\tconsole.error(`LeRed.${prop} is no longer supported in current version.`);\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif(prop === 'register' || prop === 'navigate' || prop === 'graphql')\n\t\t\t{\n\t\t\t\tconsole.error(`LeRed.${prop} is no longer available. For Gatsby, import from 'gatsby' directly. For Firebase, use the '@lowentry/firebase' package with {LeFirebase}.`);\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\t// Check for Firebase function names\n\t\t\tif(prop.startsWith('firebase') || prop.startsWith('useAuth') || prop.startsWith('useDoc') || prop.startsWith('useList') ||\n\t\t\t\tprop.startsWith('useObject') || prop === 'setDocument' || prop === 'updateDocument' || prop === 'deleteDocument' ||\n\t\t\t\tprop === 'addDocument' || prop === 'signOut' || prop === 'signIn' || prop === 'sendPassword' ||\n\t\t\t\tprop === 'createUser' || prop === 'fetchSign' || prop === 'trace' || prop === 'getPerformance' ||\n\t\t\t\tprop === 'initializeFirestore' || prop === 'getDatabase' || prop === 'getAuth' || prop === 'getAnalytics')\n\t\t\t{\n\t\t\t\tconsole.error(`LeRed.${prop} is no longer available. Please use {LeFirebase} from '@lowentry/firebase' instead.`);\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tconst firstChar = prop.charAt(0);\n\t\t\tif(firstChar === firstChar.toUpperCase() && firstChar !== firstChar.toLowerCase())\n\t\t\t{\n\t\t\t\t// Capitalized property (likely a component)\n\t\t\t\tconsole.error(`LeRed.${prop} is not available on the LeRed object. Please use the original library (like React or MUI) instead.`);\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconsole.warn(`LeRed.${prop} is not available. Please use the original library (like React or Redux) instead.`);\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t}\n\t\tif (typeof prop === 'symbol')\n\t\t{\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion -- Proxy symbol access\n\t\t\treturn target[prop as any];\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion -- Proxy property access\n\t\treturn target[prop as any];\n\t},\n});\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- LeRed interface proxy\nexport const LeRed = LeRedProxy as LeRedInterface;\n"],"mappings":"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","names":["useState","useEffect","useLayoutEffect","useCallback","useMemo","useContext","useReducer","useRef","useDebugValue","useImperativeHandle","useDeferredValue","useTransition","useId","useInsertionEffect","useSyncExternalStore","Children","createContext","createElement","cloneElement","isValidElement","lazy","forwardRef","memo","startTransition","createPortal","flushSync","createReducer","createAsyncThunk","createEntityAdapter","nanoid","current","isImmutableDefault","unwrapResult","createNextState","freeze","isDraft","original","combineSlices","createListenerMiddleware","createDynamicMiddleware","autoBatchEnhancer","isAnyOf","isAllOf","isPending","isFulfilled","isRejected","isAsyncThunkAction","isRejectedWithValue","combineReducers","applyMiddleware","compose","bindActionCreators","configureStore","createSlice","batch","connect","useSelector","useDispatch","useStore","shallowEqual","eventChannel","buffers","detach","END","isEnd","channel","multicastChannel","stdChannel","runSaga","event","hashString"]}
|
package/package.json
CHANGED
|
@@ -1,72 +1,79 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
2
|
+
"name": "@lowentry/react-redux",
|
|
3
|
+
"version": "2.0.1",
|
|
4
|
+
"description": "Provides utilities for React and Redux.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"author": "Low Entry",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"homepage": "https://github.com/LowEntry/lowentry-js-react-redux",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/LowEntry/lowentry-js-react-redux.git"
|
|
12
|
+
},
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/LowEntry/lowentry-js-react-redux/issues"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"react",
|
|
18
|
+
"redux",
|
|
19
|
+
"saga",
|
|
20
|
+
"plugin",
|
|
21
|
+
"utility",
|
|
22
|
+
"utilities"
|
|
23
|
+
],
|
|
24
|
+
"main": "./dist/index.js",
|
|
25
|
+
"types": "./dist/index.d.ts",
|
|
26
|
+
"exports": {
|
|
27
|
+
".": {
|
|
28
|
+
"import": "./dist/index.js",
|
|
29
|
+
"types": "./dist/index.d.ts"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"files": [
|
|
33
|
+
"dist"
|
|
34
|
+
],
|
|
35
|
+
"scripts": {
|
|
36
|
+
"build": "tsup",
|
|
37
|
+
"lint": "eslint .",
|
|
38
|
+
"format": "eslint . --fix",
|
|
39
|
+
"test": "npm run type-check && npm run lint && vitest run",
|
|
40
|
+
"type-check": "tsc --noEmit",
|
|
41
|
+
"test:watch": "vitest",
|
|
42
|
+
"test:coverage": "vitest run --coverage",
|
|
43
|
+
"clean": "rm -rf dist coverage",
|
|
44
|
+
"prepublishOnly": "npm run clean && npm test && npm run build"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@lowentry/utils": "^2.0.7"
|
|
48
|
+
},
|
|
49
|
+
"peerDependencies": {
|
|
50
|
+
"@reduxjs/toolkit": "^2.0.0",
|
|
51
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
52
|
+
"react-dom": "^18.0.0 || ^19.0.0",
|
|
53
|
+
"react-redux": "^8.0.0 || ^9.0.0",
|
|
54
|
+
"redux": "^5.0.0",
|
|
55
|
+
"redux-saga": "^1.0.0"
|
|
56
|
+
},
|
|
57
|
+
"devDependencies": {
|
|
58
|
+
"@reduxjs/toolkit": "^2.11.2",
|
|
59
|
+
"@stylistic/eslint-plugin": "^5.7.1",
|
|
60
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
61
|
+
"@testing-library/react": "^16.3.2",
|
|
62
|
+
"@types/react": "^19.2.9",
|
|
63
|
+
"@types/react-dom": "^19.2.3",
|
|
64
|
+
"eslint": "^9.39.2",
|
|
65
|
+
"eslint-plugin-jsonc": "^2.21.0",
|
|
66
|
+
"eslint-plugin-react-hooks": "^5.2.0",
|
|
67
|
+
"jsdom": "^27.4.0",
|
|
68
|
+
"jsonc-eslint-parser": "^2.4.2",
|
|
69
|
+
"react": "^19.2.3",
|
|
70
|
+
"react-dom": "^19.2.3",
|
|
71
|
+
"react-redux": "^9.2.0",
|
|
72
|
+
"redux": "^5.0.1",
|
|
73
|
+
"redux-saga": "^1.4.2",
|
|
74
|
+
"tsup": "^8.5.1",
|
|
75
|
+
"typescript": "^5.9.3",
|
|
76
|
+
"typescript-eslint": "^8.53.1",
|
|
77
|
+
"vitest": "^4.0.18"
|
|
78
|
+
}
|
|
72
79
|
}
|
package/api-extractor.json
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"projectFolder": ".",
|
|
3
|
-
"mainEntryPointFilePath": "<projectFolder>/build/index.d.ts",
|
|
4
|
-
"bundledPackages": [],
|
|
5
|
-
"compiler": {
|
|
6
|
-
"tsconfigFilePath": "<projectFolder>/tsconfig.json"
|
|
7
|
-
},
|
|
8
|
-
"dtsRollup": {
|
|
9
|
-
"enabled": true,
|
|
10
|
-
"untrimmedFilePath": "<projectFolder>/dist/index.d.ts"
|
|
11
|
-
},
|
|
12
|
-
"apiReport": {
|
|
13
|
-
"enabled": false,
|
|
14
|
-
"includeForgottenExports": true
|
|
15
|
-
},
|
|
16
|
-
"docModel": {
|
|
17
|
-
"enabled": false,
|
|
18
|
-
"includeForgottenExports": true
|
|
19
|
-
},
|
|
20
|
-
"tsdocMetadata": {
|
|
21
|
-
"enabled": false
|
|
22
|
-
},
|
|
23
|
-
"messages": {
|
|
24
|
-
"compilerMessageReporting": {
|
|
25
|
-
"default": {
|
|
26
|
-
"logLevel": "none"
|
|
27
|
-
}
|
|
28
|
-
},
|
|
29
|
-
"extractorMessageReporting": {
|
|
30
|
-
"default": {
|
|
31
|
-
"logLevel": "none"
|
|
32
|
-
},
|
|
33
|
-
"ae-wrong-input-file-type": {
|
|
34
|
-
"logLevel": "none"
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
"tsdocMessageReporting": {
|
|
38
|
-
"default": {
|
|
39
|
-
"logLevel": "none"
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
package/index.d.ts
DELETED