mirror of
				https://github.com/reduxjs/redux-devtools.git
				synced 2025-10-29 23:17:26 +03:00 
			
		
		
		
	Replace Action<unknown> with Action<string> (#1525)
* Replace Action<unknown> with Action<string> In anticipation of Redux 5 type changes * Fix lint errors * Create yellow-steaks-marry.md
This commit is contained in:
		
							parent
							
								
									963f1963e7
								
							
						
					
					
						commit
						65205f9078
					
				
							
								
								
									
										14
									
								
								.changeset/yellow-steaks-marry.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								.changeset/yellow-steaks-marry.md
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,14 @@ | |||
| --- | ||||
| 'remotedev-redux-devtools-extension': patch | ||||
| '@redux-devtools/app': patch | ||||
| '@redux-devtools/chart-monitor': patch | ||||
| '@redux-devtools/dock-monitor': patch | ||||
| '@redux-devtools/extension': patch | ||||
| '@redux-devtools/inspector-monitor-test-tab': patch | ||||
| '@redux-devtools/inspector-monitor-trace-tab': patch | ||||
| '@redux-devtools/inspector-monitor': patch | ||||
| '@redux-devtools/core': patch | ||||
| 'test-demo': patch | ||||
| --- | ||||
| 
 | ||||
| Replace Action<unknown> with Action<string> | ||||
|  | @ -84,7 +84,7 @@ export interface NAAction { | |||
|   readonly id: string | number; | ||||
| } | ||||
| 
 | ||||
| interface InitMessage<S, A extends Action<unknown>> { | ||||
| interface InitMessage<S, A extends Action<string>> { | ||||
|   readonly type: 'INIT'; | ||||
|   readonly payload: string; | ||||
|   instanceId: string; | ||||
|  | @ -137,7 +137,7 @@ interface SerializedActionMessage { | |||
|   readonly nextActionId: number; | ||||
| } | ||||
| 
 | ||||
| interface SerializedStateMessage<S, A extends Action<unknown>> { | ||||
| interface SerializedStateMessage<S, A extends Action<string>> { | ||||
|   readonly type: 'STATE'; | ||||
|   readonly payload: Omit< | ||||
|     LiftedState<S, A, unknown>, | ||||
|  | @ -151,7 +151,7 @@ interface SerializedStateMessage<S, A extends Action<unknown>> { | |||
|   readonly committedState: boolean; | ||||
| } | ||||
| 
 | ||||
| type UpdateStateRequest<S, A extends Action<unknown>> = | ||||
| type UpdateStateRequest<S, A extends Action<string>> = | ||||
|   | InitMessage<S, A> | ||||
|   | LiftedMessage | ||||
|   | SerializedPartialStateMessage | ||||
|  | @ -163,7 +163,7 @@ export interface EmptyUpdateStateAction { | |||
|   readonly type: typeof UPDATE_STATE; | ||||
| } | ||||
| 
 | ||||
| interface UpdateStateAction<S, A extends Action<unknown>> { | ||||
| interface UpdateStateAction<S, A extends Action<string>> { | ||||
|   readonly type: typeof UPDATE_STATE; | ||||
|   request: UpdateStateRequest<S, A>; | ||||
|   readonly id: string | number; | ||||
|  | @ -177,7 +177,7 @@ export type TabMessage = | |||
|   | ImportAction | ||||
|   | ActionAction | ||||
|   | ExportAction; | ||||
| export type PanelMessage<S, A extends Action<unknown>> = | ||||
| export type PanelMessage<S, A extends Action<string>> = | ||||
|   | NAAction | ||||
|   | ErrorMessage | ||||
|   | UpdateStateAction<S, A> | ||||
|  | @ -192,7 +192,7 @@ type TabPort = Omit<chrome.runtime.Port, 'postMessage'> & { | |||
|   postMessage: (message: TabMessage) => void; | ||||
| }; | ||||
| type PanelPort = Omit<chrome.runtime.Port, 'postMessage'> & { | ||||
|   postMessage: <S, A extends Action<unknown>>( | ||||
|   postMessage: <S, A extends Action<string>>( | ||||
|     message: PanelMessage<S, A>, | ||||
|   ) => void; | ||||
| }; | ||||
|  | @ -214,7 +214,7 @@ const connections: { | |||
| const chunks: { | ||||
|   [instanceId: string]: PageScriptToContentScriptMessageForwardedToMonitors< | ||||
|     unknown, | ||||
|     Action<unknown> | ||||
|     Action<string> | ||||
|   >; | ||||
| } = {}; | ||||
| let monitors = 0; | ||||
|  | @ -223,13 +223,13 @@ let isMonitored = false; | |||
| const getId = (sender: chrome.runtime.MessageSender, name?: string) => | ||||
|   sender.tab ? sender.tab.id! : name || sender.id!; | ||||
| 
 | ||||
| type MonitorAction<S, A extends Action<unknown>> = | ||||
| type MonitorAction<S, A extends Action<string>> = | ||||
|   | NAAction | ||||
|   | ErrorMessage | ||||
|   | UpdateStateAction<S, A> | ||||
|   | SetPersistAction; | ||||
| 
 | ||||
| function toMonitors<S, A extends Action<unknown>>( | ||||
| function toMonitors<S, A extends Action<string>>( | ||||
|   action: MonitorAction<S, A>, | ||||
|   tabId?: string | number, | ||||
|   verbose?: boolean, | ||||
|  | @ -387,14 +387,14 @@ export type SingleMessage = | |||
|   | OpenOptionsMessage | ||||
|   | GetOptionsMessage; | ||||
| 
 | ||||
| type BackgroundStoreMessage<S, A extends Action<unknown>> = | ||||
| type BackgroundStoreMessage<S, A extends Action<string>> = | ||||
|   | PageScriptToContentScriptMessageWithoutDisconnectOrInitInstance<S, A> | ||||
|   | SplitMessage | ||||
|   | SingleMessage; | ||||
| type BackgroundStoreResponse = { readonly options: Options }; | ||||
| 
 | ||||
| // Receive messages from content scripts
 | ||||
| function messaging<S, A extends Action<unknown>>( | ||||
| function messaging<S, A extends Action<string>>( | ||||
|   request: BackgroundStoreMessage<S, A>, | ||||
|   sender: chrome.runtime.MessageSender, | ||||
|   sendResponse?: (response?: BackgroundStoreResponse) => void, | ||||
|  | @ -508,7 +508,7 @@ function disconnect( | |||
|   }; | ||||
| } | ||||
| 
 | ||||
| function onConnect<S, A extends Action<unknown>>(port: chrome.runtime.Port) { | ||||
| function onConnect<S, A extends Action<string>>(port: chrome.runtime.Port) { | ||||
|   let id: number | string; | ||||
|   let listener; | ||||
| 
 | ||||
|  |  | |||
|  | @ -92,18 +92,18 @@ export type ContentScriptToPageScriptMessage = | |||
|   | ExportAction | ||||
|   | UpdateAction; | ||||
| 
 | ||||
| interface ImportStatePayload<S, A extends Action<unknown>> { | ||||
| interface ImportStatePayload<S, A extends Action<string>> { | ||||
|   readonly type: 'IMPORT_STATE'; | ||||
|   readonly nextLiftedState: LiftedState<S, A, unknown> | readonly A[]; | ||||
|   readonly preloadedState?: S; | ||||
| } | ||||
| 
 | ||||
| interface ImportStateDispatchAction<S, A extends Action<unknown>> { | ||||
| interface ImportStateDispatchAction<S, A extends Action<string>> { | ||||
|   readonly type: 'DISPATCH'; | ||||
|   readonly payload: ImportStatePayload<S, A>; | ||||
| } | ||||
| 
 | ||||
| export type ListenerMessage<S, A extends Action<unknown>> = | ||||
| export type ListenerMessage<S, A extends Action<string>> = | ||||
|   | StartAction | ||||
|   | StopAction | ||||
|   | DispatchAction | ||||
|  | @ -204,7 +204,7 @@ export type SplitMessage = | |||
|   | SplitMessageChunk | ||||
|   | SplitMessageEnd; | ||||
| 
 | ||||
| function tryCatch<S, A extends Action<unknown>>( | ||||
| function tryCatch<S, A extends Action<string>>( | ||||
|   fn: ( | ||||
|     args: | ||||
|       | PageScriptToContentScriptMessageWithoutDisconnect<S, A> | ||||
|  | @ -264,24 +264,24 @@ interface InitInstanceContentScriptToBackgroundMessage { | |||
|   readonly instanceId: number; | ||||
| } | ||||
| 
 | ||||
| interface RelayMessage<S, A extends Action<unknown>> { | ||||
| interface RelayMessage<S, A extends Action<string>> { | ||||
|   readonly name: 'RELAY'; | ||||
|   readonly message: | ||||
|     | PageScriptToContentScriptMessageWithoutDisconnectOrInitInstance<S, A> | ||||
|     | SplitMessage; | ||||
| } | ||||
| 
 | ||||
| export type ContentScriptToBackgroundMessage<S, A extends Action<unknown>> = | ||||
| export type ContentScriptToBackgroundMessage<S, A extends Action<string>> = | ||||
|   | InitInstanceContentScriptToBackgroundMessage | ||||
|   | RelayMessage<S, A>; | ||||
| 
 | ||||
| function postToBackground<S, A extends Action<unknown>>( | ||||
| function postToBackground<S, A extends Action<string>>( | ||||
|   message: ContentScriptToBackgroundMessage<S, A>, | ||||
| ) { | ||||
|   bg!.postMessage(message); | ||||
| } | ||||
| 
 | ||||
| function send<S, A extends Action<unknown>>( | ||||
| function send<S, A extends Action<string>>( | ||||
|   message: | ||||
|     | PageScriptToContentScriptMessageWithoutDisconnect<S, A> | ||||
|     | SplitMessage, | ||||
|  | @ -296,7 +296,7 @@ function send<S, A extends Action<unknown>>( | |||
| } | ||||
| 
 | ||||
| // Resend messages from the page to the background script
 | ||||
| function handleMessages<S, A extends Action<unknown>>( | ||||
| function handleMessages<S, A extends Action<string>>( | ||||
|   event: MessageEvent<PageScriptToContentScriptMessage<S, A>>, | ||||
| ) { | ||||
|   if (!isAllowed()) return; | ||||
|  |  | |||
|  | @ -96,7 +96,7 @@ function init(id: number) { | |||
|     name: id ? id.toString() : undefined, | ||||
|   }); | ||||
|   bgConnection.onMessage.addListener( | ||||
|     <S, A extends Action<unknown>>(message: PanelMessage<S, A>) => { | ||||
|     <S, A extends Action<string>>(message: PanelMessage<S, A>) => { | ||||
|       if (message.type === 'NA') { | ||||
|         if (message.id === id) renderNA(); | ||||
|         else store!.dispatch({ type: REMOVE_INSTANCE, id: message.id }); | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ declare global { | |||
|   } | ||||
| } | ||||
| 
 | ||||
| export default class Monitor<S, A extends Action<unknown>> { | ||||
| export default class Monitor<S, A extends Action<string>> { | ||||
|   update: ( | ||||
|     liftedState?: LiftedState<S, A, unknown> | undefined, | ||||
|     libConfig?: LibConfig, | ||||
|  |  | |||
|  | @ -21,7 +21,7 @@ export const noFiltersApplied = (localFilter: LocalFilter | undefined) => | |||
|     !window.devToolsOptions.filter || | ||||
|     window.devToolsOptions.filter === FilterState.DO_NOT_FILTER); | ||||
| 
 | ||||
| export function isFiltered<A extends Action<unknown>>( | ||||
| export function isFiltered<A extends Action<string>>( | ||||
|   action: A | string, | ||||
|   localFilter: LocalFilter | undefined, | ||||
| ) { | ||||
|  | @ -41,7 +41,7 @@ export function isFiltered<A extends Action<unknown>>( | |||
|   ); | ||||
| } | ||||
| 
 | ||||
| function filterActions<A extends Action<unknown>>( | ||||
| function filterActions<A extends Action<string>>( | ||||
|   actionsById: { [p: number]: PerformAction<A> }, | ||||
|   actionSanitizer: ((action: A, id: number) => A) | undefined, | ||||
| ): { [p: number]: PerformAction<A> } { | ||||
|  | @ -63,7 +63,7 @@ function filterStates<S>( | |||
|   })); | ||||
| } | ||||
| 
 | ||||
| export function filterState<S, A extends Action<unknown>>( | ||||
| export function filterState<S, A extends Action<string>>( | ||||
|   state: LiftedState<S, A, unknown>, | ||||
|   localFilter: LocalFilter | undefined, | ||||
|   stateSanitizer: ((state: S, index: number) => S) | undefined, | ||||
|  | @ -120,7 +120,7 @@ export function filterState<S, A extends Action<unknown>>( | |||
|   }; | ||||
| } | ||||
| 
 | ||||
| export interface PartialLiftedState<S, A extends Action<unknown>> { | ||||
| export interface PartialLiftedState<S, A extends Action<string>> { | ||||
|   readonly actionsById: { [actionId: number]: PerformAction<A> }; | ||||
|   readonly computedStates: { state: S; error?: string }[]; | ||||
|   readonly stagedActionIds: readonly number[]; | ||||
|  | @ -129,16 +129,16 @@ export interface PartialLiftedState<S, A extends Action<unknown>> { | |||
|   readonly committedState?: S; | ||||
| } | ||||
| 
 | ||||
| export function startingFrom<S, A extends Action<unknown>>( | ||||
| export function startingFrom<S, A extends Action<string>>( | ||||
|   sendingActionId: number, | ||||
|   state: LiftedState<S, A, unknown>, | ||||
|   localFilter: LocalFilter | undefined, | ||||
|   stateSanitizer: (<S>(state: S, index: number) => S) | undefined, | ||||
|   actionSanitizer: | ||||
|     | (<A extends Action<unknown>>(action: A, id: number) => A) | ||||
|     | (<A extends Action<string>>(action: A, id: number) => A) | ||||
|     | undefined, | ||||
|   predicate: | ||||
|     | (<S, A extends Action<unknown>>(state: S, action: A) => boolean) | ||||
|     | (<S, A extends Action<string>>(state: S, action: A) => boolean) | ||||
|     | undefined, | ||||
| ): LiftedState<S, A, unknown> | PartialLiftedState<S, A> | undefined { | ||||
|   const stagedActionIds = state.stagedActionIds; | ||||
|  |  | |||
|  | @ -30,7 +30,7 @@ interface ParsedSerializedLiftedState { | |||
|   readonly preloadedState?: string; | ||||
| } | ||||
| 
 | ||||
| export default function importState<S, A extends Action<unknown>>( | ||||
| export default function importState<S, A extends Action<string>>( | ||||
|   state: string | undefined, | ||||
|   { serialize }: Config, | ||||
| ) { | ||||
|  |  | |||
|  | @ -115,7 +115,7 @@ interface DisconnectMessage { | |||
|   readonly source: typeof source; | ||||
| } | ||||
| 
 | ||||
| interface InitMessage<S, A extends Action<unknown>> { | ||||
| interface InitMessage<S, A extends Action<string>> { | ||||
|   readonly type: 'INIT'; | ||||
|   readonly payload: string; | ||||
|   readonly instanceId: number; | ||||
|  | @ -161,7 +161,7 @@ interface SerializedActionMessage { | |||
|   readonly nextActionId?: number; | ||||
| } | ||||
| 
 | ||||
| interface SerializedStateMessage<S, A extends Action<unknown>> { | ||||
| interface SerializedStateMessage<S, A extends Action<string>> { | ||||
|   readonly type: 'STATE'; | ||||
|   readonly payload: Omit< | ||||
|     LiftedState<S, A, unknown>, | ||||
|  | @ -183,7 +183,7 @@ interface OpenMessage { | |||
| 
 | ||||
| export type PageScriptToContentScriptMessageForwardedToMonitors< | ||||
|   S, | ||||
|   A extends Action<unknown>, | ||||
|   A extends Action<string>, | ||||
| > = | ||||
|   | InitMessage<S, A> | ||||
|   | LiftedMessage | ||||
|  | @ -194,7 +194,7 @@ export type PageScriptToContentScriptMessageForwardedToMonitors< | |||
| 
 | ||||
| export type PageScriptToContentScriptMessageWithoutDisconnectOrInitInstance< | ||||
|   S, | ||||
|   A extends Action<unknown>, | ||||
|   A extends Action<string>, | ||||
| > = | ||||
|   | PageScriptToContentScriptMessageForwardedToMonitors<S, A> | ||||
|   | ErrorMessage | ||||
|  | @ -204,17 +204,17 @@ export type PageScriptToContentScriptMessageWithoutDisconnectOrInitInstance< | |||
| 
 | ||||
| export type PageScriptToContentScriptMessageWithoutDisconnect< | ||||
|   S, | ||||
|   A extends Action<unknown>, | ||||
|   A extends Action<string>, | ||||
| > = | ||||
|   | PageScriptToContentScriptMessageWithoutDisconnectOrInitInstance<S, A> | ||||
|   | InitInstancePageScriptToContentScriptMessage | ||||
|   | InitInstanceMessage; | ||||
| 
 | ||||
| export type PageScriptToContentScriptMessage<S, A extends Action<unknown>> = | ||||
| export type PageScriptToContentScriptMessage<S, A extends Action<string>> = | ||||
|   | PageScriptToContentScriptMessageWithoutDisconnect<S, A> | ||||
|   | DisconnectMessage; | ||||
| 
 | ||||
| function post<S, A extends Action<unknown>>( | ||||
| function post<S, A extends Action<string>>( | ||||
|   message: PageScriptToContentScriptMessage<S, A>, | ||||
| ) { | ||||
|   window.postMessage(message, '*'); | ||||
|  | @ -258,7 +258,7 @@ function getStackTrace( | |||
|   return stack; | ||||
| } | ||||
| 
 | ||||
| function amendActionType<A extends Action<unknown>>( | ||||
| function amendActionType<A extends Action<string>>( | ||||
|   action: | ||||
|     | A | ||||
|     | StructuralPerformAction<A> | ||||
|  | @ -288,7 +288,7 @@ interface LiftedMessage { | |||
|   readonly source: typeof source; | ||||
| } | ||||
| 
 | ||||
| interface PartialStateMessage<S, A extends Action<unknown>> { | ||||
| interface PartialStateMessage<S, A extends Action<string>> { | ||||
|   readonly type: 'PARTIAL_STATE'; | ||||
|   readonly payload: PartialLiftedState<S, A>; | ||||
|   readonly source: typeof source; | ||||
|  | @ -296,7 +296,7 @@ interface PartialStateMessage<S, A extends Action<unknown>> { | |||
|   readonly maxAge: number; | ||||
| } | ||||
| 
 | ||||
| interface ExportMessage<S, A extends Action<unknown>> { | ||||
| interface ExportMessage<S, A extends Action<string>> { | ||||
|   readonly type: 'EXPORT'; | ||||
|   readonly payload: readonly A[]; | ||||
|   readonly committedState: S; | ||||
|  | @ -304,21 +304,21 @@ interface ExportMessage<S, A extends Action<unknown>> { | |||
|   readonly instanceId: number; | ||||
| } | ||||
| 
 | ||||
| export interface StructuralPerformAction<A extends Action<unknown>> { | ||||
| export interface StructuralPerformAction<A extends Action<string>> { | ||||
|   readonly action: A; | ||||
|   readonly timestamp?: number; | ||||
|   readonly stack?: string; | ||||
| } | ||||
| 
 | ||||
| type SingleUserAction<A extends Action<unknown>> = | ||||
| type SingleUserAction<A extends Action<string>> = | ||||
|   | PerformAction<A> | ||||
|   | StructuralPerformAction<A> | ||||
|   | A; | ||||
| type UserAction<A extends Action<unknown>> = | ||||
| type UserAction<A extends Action<string>> = | ||||
|   | SingleUserAction<A> | ||||
|   | readonly SingleUserAction<A>[]; | ||||
| 
 | ||||
| interface ActionMessage<S, A extends Action<unknown>> { | ||||
| interface ActionMessage<S, A extends Action<string>> { | ||||
|   readonly type: 'ACTION'; | ||||
|   readonly payload: S; | ||||
|   readonly source: typeof source; | ||||
|  | @ -329,7 +329,7 @@ interface ActionMessage<S, A extends Action<unknown>> { | |||
|   readonly name?: string; | ||||
| } | ||||
| 
 | ||||
| interface StateMessage<S, A extends Action<unknown>> { | ||||
| interface StateMessage<S, A extends Action<string>> { | ||||
|   readonly type: 'STATE'; | ||||
|   readonly payload: LiftedState<S, A, unknown>; | ||||
|   readonly source: typeof source; | ||||
|  | @ -369,7 +369,7 @@ interface StopMessage { | |||
|   readonly instanceId: number; | ||||
| } | ||||
| 
 | ||||
| type ToContentScriptMessage<S, A extends Action<unknown>> = | ||||
| type ToContentScriptMessage<S, A extends Action<string>> = | ||||
|   | LiftedMessage | ||||
|   | PartialStateMessage<S, A> | ||||
|   | ExportMessage<S, A> | ||||
|  | @ -380,7 +380,7 @@ type ToContentScriptMessage<S, A extends Action<unknown>> = | |||
|   | GetReportMessage | ||||
|   | StopMessage; | ||||
| 
 | ||||
| export function toContentScript<S, A extends Action<unknown>>( | ||||
| export function toContentScript<S, A extends Action<string>>( | ||||
|   message: ToContentScriptMessage<S, A>, | ||||
|   serializeState?: Serialize | undefined, | ||||
|   serializeAction?: Serialize | undefined, | ||||
|  | @ -425,7 +425,7 @@ export function toContentScript<S, A extends Action<unknown>>( | |||
|   } | ||||
| } | ||||
| 
 | ||||
| export function sendMessage<S, A extends Action<unknown>>( | ||||
| export function sendMessage<S, A extends Action<string>>( | ||||
|   action: StructuralPerformAction<A> | StructuralPerformAction<A>[], | ||||
|   state: LiftedState<S, A, unknown>, | ||||
|   config: Config, | ||||
|  | @ -496,7 +496,7 @@ export function setListener( | |||
| } | ||||
| 
 | ||||
| const liftListener = | ||||
|   <S, A extends Action<unknown>>( | ||||
|   <S, A extends Action<string>>( | ||||
|     listener: (message: ListenerMessage<S, A>) => void, | ||||
|     config: Config, | ||||
|   ) => | ||||
|  | @ -520,15 +520,15 @@ export function disconnect() { | |||
| } | ||||
| 
 | ||||
| export interface ConnectResponse { | ||||
|   init: <S, A extends Action<unknown>>( | ||||
|   init: <S, A extends Action<string>>( | ||||
|     state: S, | ||||
|     liftedData?: LiftedState<S, A, unknown>, | ||||
|   ) => void; | ||||
|   subscribe: <S, A extends Action<unknown>>( | ||||
|   subscribe: <S, A extends Action<string>>( | ||||
|     listener: (message: ListenerMessage<S, A>) => void, | ||||
|   ) => (() => void) | undefined; | ||||
|   unsubscribe: () => void; | ||||
|   send: <S, A extends Action<unknown>>( | ||||
|   send: <S, A extends Action<string>>( | ||||
|     action: A, | ||||
|     state: LiftedState<S, A, unknown>, | ||||
|   ) => void; | ||||
|  | @ -550,8 +550,8 @@ export function connect(preConfig: Config): ConnectResponse { | |||
|   const localFilter = getLocalFilter(config); | ||||
|   const autoPause = config.autoPause; | ||||
|   let isPaused = autoPause; | ||||
|   let delayedActions: StructuralPerformAction<Action<unknown>>[] = []; | ||||
|   let delayedStates: LiftedState<unknown, Action<unknown>, unknown>[] = []; | ||||
|   let delayedActions: StructuralPerformAction<Action<string>>[] = []; | ||||
|   let delayedStates: LiftedState<unknown, Action<string>, unknown>[] = []; | ||||
| 
 | ||||
|   const rootListener = (action: ContentScriptToPageScriptMessage) => { | ||||
|     if (autoPause) { | ||||
|  | @ -574,7 +574,7 @@ export function connect(preConfig: Config): ConnectResponse { | |||
| 
 | ||||
|   listeners[id] = [rootListener]; | ||||
| 
 | ||||
|   const subscribe = <S, A extends Action<unknown>>( | ||||
|   const subscribe = <S, A extends Action<string>>( | ||||
|     listener: (message: ListenerMessage<S, A>) => void, | ||||
|   ) => { | ||||
|     if (!listener) return undefined; | ||||
|  | @ -600,7 +600,7 @@ export function connect(preConfig: Config): ConnectResponse { | |||
|     delayedStates = []; | ||||
|   }, latency); | ||||
| 
 | ||||
|   const send = <S, A extends Action<unknown>>( | ||||
|   const send = <S, A extends Action<string>>( | ||||
|     action: A, | ||||
|     state: LiftedState<S, A, unknown>, | ||||
|   ) => { | ||||
|  | @ -643,7 +643,7 @@ export function connect(preConfig: Config): ConnectResponse { | |||
|     ); | ||||
|   }; | ||||
| 
 | ||||
|   const init = <S, A extends Action<unknown>>( | ||||
|   const init = <S, A extends Action<string>>( | ||||
|     state: S, | ||||
|     liftedData?: LiftedState<S, A, unknown>, | ||||
|   ) => { | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ import type { PageScriptToContentScriptMessage } from './index'; | |||
| 
 | ||||
| export type Position = 'left' | 'right' | 'bottom' | 'panel' | 'remote'; | ||||
| 
 | ||||
| function post<S, A extends Action<unknown>>( | ||||
| function post<S, A extends Action<string>>( | ||||
|   message: PageScriptToContentScriptMessage<S, A>, | ||||
| ) { | ||||
|   window.postMessage(message, '*'); | ||||
|  |  | |||
|  | @ -18,9 +18,9 @@ declare global { | |||
| 
 | ||||
| export default function configureStore< | ||||
|   S, | ||||
|   A extends Action<unknown>, | ||||
|   A extends Action<string>, | ||||
|   MonitorState, | ||||
|   MonitorAction extends Action<unknown>, | ||||
|   MonitorAction extends Action<string>, | ||||
| >( | ||||
|   next: StoreEnhancerStoreCreator, | ||||
|   monitorReducer: Reducer<MonitorState, MonitorAction>, | ||||
|  |  | |||
|  | @ -56,7 +56,7 @@ import type { ContentScriptToPageScriptMessage } from '../contentScript'; | |||
| 
 | ||||
| type EnhancedStoreWithInitialDispatch< | ||||
|   S, | ||||
|   A extends Action<unknown>, | ||||
|   A extends Action<string>, | ||||
|   MonitorState, | ||||
| > = EnhancedStore<S, A, MonitorState> & { initialDispatch: Dispatch<A> }; | ||||
| 
 | ||||
|  | @ -64,7 +64,7 @@ const source = '@devtools-page'; | |||
| let stores: { | ||||
|   [K in string | number]: EnhancedStoreWithInitialDispatch< | ||||
|     unknown, | ||||
|     Action<unknown>, | ||||
|     Action<string>, | ||||
|     unknown | ||||
|   >; | ||||
| } = {}; | ||||
|  | @ -97,18 +97,18 @@ export interface ConfigWithExpandedMaxAge { | |||
|   readonly actionsAllowlist?: string | readonly string[]; | ||||
|   serialize?: boolean | SerializeWithImmutable; | ||||
|   readonly stateSanitizer?: <S>(state: S, index?: number) => S; | ||||
|   readonly actionSanitizer?: <A extends Action<unknown>>( | ||||
|   readonly actionSanitizer?: <A extends Action<string>>( | ||||
|     action: A, | ||||
|     id?: number, | ||||
|   ) => A; | ||||
|   readonly predicate?: <S, A extends Action<unknown>>( | ||||
|   readonly predicate?: <S, A extends Action<string>>( | ||||
|     state: S, | ||||
|     action: A, | ||||
|   ) => boolean; | ||||
|   readonly latency?: number; | ||||
|   readonly maxAge?: | ||||
|     | number | ||||
|     | (<S, A extends Action<unknown>>( | ||||
|     | (<S, A extends Action<string>>( | ||||
|         currentLiftedAction: LiftedAction<S, A, unknown>, | ||||
|         previousLiftedState: LiftedState<S, A, unknown> | undefined, | ||||
|       ) => number); | ||||
|  | @ -123,9 +123,9 @@ export interface ConfigWithExpandedMaxAge { | |||
|   readonly autoPause?: boolean; | ||||
|   readonly features?: Features; | ||||
|   readonly type?: string; | ||||
|   readonly getActionType?: <A extends Action<unknown>>(action: A) => A; | ||||
|   readonly getActionType?: <A extends Action<string>>(action: A) => A; | ||||
|   readonly actionCreators?: { | ||||
|     readonly [key: string]: ActionCreator<Action<unknown>>; | ||||
|     readonly [key: string]: ActionCreator<Action<string>>; | ||||
|   }; | ||||
| } | ||||
| 
 | ||||
|  | @ -137,7 +137,7 @@ interface ReduxDevtoolsExtension { | |||
|   (config?: Config): StoreEnhancer; | ||||
|   open: (position?: Position) => void; | ||||
|   notifyErrors: (onError?: () => boolean) => void; | ||||
|   send: <S, A extends Action<unknown>>( | ||||
|   send: <S, A extends Action<string>>( | ||||
|     action: StructuralPerformAction<A> | StructuralPerformAction<A>[], | ||||
|     state: LiftedState<S, A, unknown>, | ||||
|     config: Config, | ||||
|  | @ -158,7 +158,7 @@ declare global { | |||
|   } | ||||
| } | ||||
| 
 | ||||
| function __REDUX_DEVTOOLS_EXTENSION__<S, A extends Action<unknown>>( | ||||
| function __REDUX_DEVTOOLS_EXTENSION__<S, A extends Action<string>>( | ||||
|   config?: Config, | ||||
| ): StoreEnhancer { | ||||
|   /* eslint-disable no-param-reassign */ | ||||
|  |  | |||
|  | @ -53,7 +53,7 @@ import { LiftedState } from '@redux-devtools/core'; | |||
| let monitorReducer: ( | ||||
|   monitorProps: unknown, | ||||
|   state: unknown | undefined, | ||||
|   action: Action<unknown>, | ||||
|   action: Action<string>, | ||||
| ) => unknown; | ||||
| let monitorProps: unknown = {}; | ||||
| 
 | ||||
|  | @ -110,7 +110,7 @@ export interface InitMonitorAction { | |||
|   update: ( | ||||
|     monitorProps: unknown, | ||||
|     state: unknown | undefined, | ||||
|     action: Action<unknown>, | ||||
|     action: Action<string>, | ||||
|   ) => unknown; | ||||
|   monitorProps: unknown; | ||||
| } | ||||
|  | @ -120,7 +120,7 @@ export interface MonitorActionAction { | |||
|   monitorReducer: ( | ||||
|     monitorProps: unknown, | ||||
|     state: unknown | undefined, | ||||
|     action: Action<unknown>, | ||||
|     action: Action<string>, | ||||
|   ) => unknown; | ||||
|   monitorProps: unknown; | ||||
| } | ||||
|  | @ -159,8 +159,8 @@ interface ReorderActionAction { | |||
| interface ImportStateAction { | ||||
|   type: 'IMPORT_STATE'; | ||||
|   nextLiftedState: | ||||
|     | LiftedState<unknown, Action<unknown>, unknown> | ||||
|     | readonly Action<unknown>[]; | ||||
|     | LiftedState<unknown, Action<string>, unknown> | ||||
|     | readonly Action<string>[]; | ||||
|   preloadedState?: unknown; | ||||
|   noRecompute?: boolean | undefined; | ||||
| } | ||||
|  | @ -211,7 +211,7 @@ export function liftedDispatch( | |||
|     | InitMonitorAction | ||||
|     | JumpToStateAction | ||||
|     | JumpToActionAction | ||||
|     | LiftedAction<unknown, Action<unknown>, unknown>, | ||||
|     | LiftedAction<unknown, Action<string>, unknown>, | ||||
| ): MonitorActionAction | LiftedActionDispatchAction { | ||||
|   if (action.type[0] === '@') { | ||||
|     if (action.type === '@@INIT_MONITOR') { | ||||
|  |  | |||
|  | @ -14,7 +14,7 @@ import { Options, State } from '../reducers/instances'; | |||
| const { reset, rollback, commit, sweep } = ActionCreators; | ||||
| 
 | ||||
| interface Props { | ||||
|   dispatch: (action: LiftedAction<unknown, Action<unknown>, unknown>) => void; | ||||
|   dispatch: (action: LiftedAction<unknown, Action<string>, unknown>) => void; | ||||
|   liftedState: State; | ||||
|   options: Options; | ||||
| } | ||||
|  |  | |||
|  | @ -14,7 +14,7 @@ interface Props { | |||
|   liftedState: State; | ||||
|   monitorState: MonitorStateMonitorState | undefined; | ||||
|   dispatch: ( | ||||
|     action: LiftedAction<unknown, Action<unknown>, unknown> | InitMonitorAction, | ||||
|     action: LiftedAction<unknown, Action<string>, unknown> | InitMonitorAction, | ||||
|   ) => void; | ||||
|   features: Features | undefined; | ||||
|   theme: ThemeFromProvider; | ||||
|  | @ -24,12 +24,12 @@ interface Props { | |||
| class DevTools extends Component<Props> { | ||||
|   monitorProps?: object; | ||||
|   Monitor?: React.ComponentType< | ||||
|     LiftedState<unknown, Action<unknown>, unknown> | ||||
|     LiftedState<unknown, Action<string>, unknown> | ||||
|   > & { | ||||
|     update( | ||||
|       monitorProps: unknown, | ||||
|       state: unknown | undefined, | ||||
|       action: Action<unknown>, | ||||
|       action: Action<string>, | ||||
|     ): unknown; | ||||
|   }; | ||||
|   preventRender?: boolean; | ||||
|  | @ -58,7 +58,7 @@ class DevTools extends Component<Props> { | |||
|         newMonitorState = update( | ||||
|           this.monitorProps, | ||||
|           undefined, | ||||
|           {} as Action<unknown>, | ||||
|           {} as Action<string>, | ||||
|         ); | ||||
|         if (newMonitorState !== monitorState) { | ||||
|           this.preventRender = true; | ||||
|  | @ -88,7 +88,7 @@ class DevTools extends Component<Props> { | |||
|   } | ||||
| 
 | ||||
|   dispatch = ( | ||||
|     action: LiftedAction<unknown, Action<unknown>, unknown> | InitMonitorAction, | ||||
|     action: LiftedAction<unknown, Action<string>, unknown> | InitMonitorAction, | ||||
|   ) => { | ||||
|     this.props.dispatch(action); | ||||
|   }; | ||||
|  |  | |||
|  | @ -19,7 +19,7 @@ type StateProps = ReturnType<typeof mapStateToProps>; | |||
| type DispatchProps = ResolveThunks<typeof actionCreators>; | ||||
| type Props = StateProps & | ||||
|   DispatchProps & | ||||
|   TabComponentProps<unknown, Action<unknown>>; | ||||
|   TabComponentProps<unknown, Action<string>>; | ||||
| 
 | ||||
| class SubTabs extends Component<Props> { | ||||
|   tabs?: (Tab<Props> | Tab<{ data: unknown }> | Tab<{ data?: Delta }>)[]; | ||||
|  |  | |||
|  | @ -39,17 +39,17 @@ class InspectorWrapper extends Component<Props> { | |||
| 
 | ||||
|   render() { | ||||
|     const { features, ...rest } = this.props; | ||||
|     let tabs: () => Tab<unknown, Action<unknown>>[]; | ||||
|     let tabs: () => Tab<unknown, Action<string>>[]; | ||||
|     if (features && features.test) { | ||||
|       tabs = () => [ | ||||
|         ...(DEFAULT_TABS as Tab<unknown, Action<unknown>>[]), | ||||
|         ...(DEFAULT_TABS as Tab<unknown, Action<string>>[]), | ||||
|         { name: 'Test', component: TestTab } as unknown as Tab< | ||||
|           unknown, | ||||
|           Action<unknown> | ||||
|           Action<string> | ||||
|         >, | ||||
|       ]; | ||||
|     } else { | ||||
|       tabs = () => DEFAULT_TABS as Tab<unknown, Action<unknown>>[]; | ||||
|       tabs = () => DEFAULT_TABS as Tab<unknown, Action<string>>[]; | ||||
|     } | ||||
| 
 | ||||
|     return ( | ||||
|  |  | |||
|  | @ -14,7 +14,7 @@ const SliderWrapper = styled.div` | |||
| 
 | ||||
| interface Props { | ||||
|   liftedState: State; | ||||
|   dispatch: (action: LiftedAction<unknown, Action<unknown>, unknown>) => void; | ||||
|   dispatch: (action: LiftedAction<unknown, Action<string>, unknown>) => void; | ||||
|   theme: ThemeFromProvider; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -45,7 +45,7 @@ export interface Options { | |||
| } | ||||
| 
 | ||||
| export interface State { | ||||
|   actionsById: { [actionId: number]: PerformAction<Action<unknown>> }; | ||||
|   actionsById: { [actionId: number]: PerformAction<Action<string>> }; | ||||
|   computedStates: { state: unknown; error?: string }[]; | ||||
|   currentStateIndex: number; | ||||
|   nextActionId: number; | ||||
|  | @ -109,7 +109,7 @@ function updateState( | |||
|   let newState; | ||||
|   const liftedState = state[id] || state.default; | ||||
|   const action = ((request.action && parseJSON(request.action, serialize)) || | ||||
|     {}) as PerformAction<Action<unknown>>; | ||||
|     {}) as PerformAction<Action<string>>; | ||||
| 
 | ||||
|   switch (request.type) { | ||||
|     case 'INIT': | ||||
|  | @ -129,7 +129,7 @@ function updateState( | |||
|           newState = recompute( | ||||
|             newState, | ||||
|             request.batched ? payload : (payload as unknown as State[])[i], | ||||
|             action[i] as PerformAction<Action<unknown>>, | ||||
|             action[i] as PerformAction<Action<string>>, | ||||
|             newState.nextActionId + 1, | ||||
|             maxAge, | ||||
|             isExcess, | ||||
|  |  | |||
|  | @ -7,8 +7,8 @@ export function recompute( | |||
|   previousLiftedState: State, | ||||
|   storeState: State, | ||||
|   action: | ||||
|     | PerformAction<Action<unknown>> | ||||
|     | { action: Action<unknown>; timestamp?: number; stack?: string }, | ||||
|     | PerformAction<Action<string>> | ||||
|     | { action: Action<string>; timestamp?: number; stack?: string }, | ||||
|   nextActionId = 1, | ||||
|   maxAge?: number, | ||||
|   isExcess?: boolean, | ||||
|  | @ -24,10 +24,8 @@ export function recompute( | |||
|   } | ||||
|   liftedState.stagedActionIds = [...liftedState.stagedActionIds, actionId]; | ||||
|   liftedState.actionsById = { ...liftedState.actionsById }; | ||||
|   if ((action as PerformAction<Action<unknown>>).type === 'PERFORM_ACTION') { | ||||
|     liftedState.actionsById[actionId] = action as PerformAction< | ||||
|       Action<unknown> | ||||
|     >; | ||||
|   if ((action as PerformAction<Action<string>>).type === 'PERFORM_ACTION') { | ||||
|     liftedState.actionsById[actionId] = action as PerformAction<Action<string>>; | ||||
|   } else { | ||||
|     liftedState.actionsById[actionId] = { | ||||
|       action: action.action || action, | ||||
|  |  | |||
|  | @ -11,7 +11,7 @@ const wrapperStyle = { | |||
|   height: '100%', | ||||
| }; | ||||
| 
 | ||||
| export interface Props<S, A extends Action<unknown>> | ||||
| export interface Props<S, A extends Action<string>> | ||||
|   extends LiftedState<S, A, ChartMonitorState>, | ||||
|     Options { | ||||
|   dispatch: Dispatch<LiftedAction<S, A, ChartMonitorState>>; | ||||
|  | @ -24,7 +24,7 @@ export interface Props<S, A extends Action<unknown>> | |||
|   defaultIsVisible?: boolean; | ||||
| } | ||||
| 
 | ||||
| class Chart<S, A extends Action<unknown>> extends Component<Props<S, A>> { | ||||
| class Chart<S, A extends Action<string>> extends Component<Props<S, A>> { | ||||
|   divRef = createRef<HTMLDivElement>(); | ||||
|   // eslint-disable-next-line @typescript-eslint/ban-types
 | ||||
|   renderChart?: (state?: {} | null | undefined) => void; | ||||
|  |  | |||
|  | @ -39,7 +39,7 @@ function invertColors(theme: themes.Base16Theme) { | |||
|   }; | ||||
| } | ||||
| 
 | ||||
| export interface ChartMonitorProps<S, A extends Action<unknown>> | ||||
| export interface ChartMonitorProps<S, A extends Action<string>> | ||||
|   extends LiftedState<S, A, ChartMonitorState>, | ||||
|     Options { | ||||
|   dispatch: Dispatch<LiftedAction<S, A, ChartMonitorState>>; | ||||
|  | @ -51,7 +51,7 @@ export interface ChartMonitorProps<S, A extends Action<unknown>> | |||
|   defaultIsVisible?: boolean; | ||||
| } | ||||
| 
 | ||||
| class ChartMonitor<S, A extends Action<unknown>> extends PureComponent< | ||||
| class ChartMonitor<S, A extends Action<string>> extends PureComponent< | ||||
|   ChartMonitorProps<S, A> | ||||
| > { | ||||
|   static update = reducer; | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ import { Action } from 'redux'; | |||
| import { ChartMonitorAction, TOGGLE_VISIBILITY } from './actions'; | ||||
| import { ChartMonitorProps } from './ChartMonitor'; | ||||
| 
 | ||||
| function toggleVisibility<S, A extends Action<unknown>>( | ||||
| function toggleVisibility<S, A extends Action<string>>( | ||||
|   props: ChartMonitorProps<S, A>, | ||||
|   state = props.defaultIsVisible, | ||||
|   action: ChartMonitorAction, | ||||
|  | @ -22,7 +22,7 @@ export interface ChartMonitorState { | |||
|   isVisible?: boolean; | ||||
| } | ||||
| 
 | ||||
| export default function reducer<S, A extends Action<unknown>>( | ||||
| export default function reducer<S, A extends Action<string>>( | ||||
|   props: ChartMonitorProps<S, A>, | ||||
|   state: ChartMonitorState | undefined = {}, | ||||
|   action: ChartMonitorAction, | ||||
|  |  | |||
|  | @ -23,7 +23,7 @@ interface KeyObject { | |||
|   sequence: string; | ||||
| } | ||||
| 
 | ||||
| interface ExternalProps<S, A extends Action<unknown>> { | ||||
| interface ExternalProps<S, A extends Action<string>> { | ||||
|   defaultPosition: 'left' | 'top' | 'right' | 'bottom'; | ||||
|   defaultIsVisible: boolean; | ||||
|   defaultSize: number; | ||||
|  | @ -35,8 +35,8 @@ interface ExternalProps<S, A extends Action<unknown>> { | |||
|   dispatch: Dispatch<DockMonitorAction>; | ||||
| 
 | ||||
|   children: | ||||
|     | Monitor<S, A, LiftedState<S, A, unknown>, unknown, Action<unknown>> | ||||
|     | Monitor<S, A, LiftedState<S, A, unknown>, unknown, Action<unknown>>[]; | ||||
|     | Monitor<S, A, LiftedState<S, A, unknown>, unknown, Action<string>> | ||||
|     | Monitor<S, A, LiftedState<S, A, unknown>, unknown, Action<string>>[]; | ||||
| } | ||||
| 
 | ||||
| interface DefaultProps { | ||||
|  | @ -46,7 +46,7 @@ interface DefaultProps { | |||
|   fluid: boolean; | ||||
| } | ||||
| 
 | ||||
| export interface DockMonitorProps<S, A extends Action<unknown>> | ||||
| export interface DockMonitorProps<S, A extends Action<string>> | ||||
|   extends LiftedState<S, A, DockMonitorState> { | ||||
|   defaultPosition: 'left' | 'top' | 'right' | 'bottom'; | ||||
|   defaultIsVisible: boolean; | ||||
|  | @ -59,11 +59,11 @@ export interface DockMonitorProps<S, A extends Action<unknown>> | |||
|   dispatch: Dispatch<DockMonitorAction>; | ||||
| 
 | ||||
|   children: | ||||
|     | Monitor<S, A, LiftedState<S, A, unknown>, unknown, Action<unknown>> | ||||
|     | Monitor<S, A, LiftedState<S, A, unknown>, unknown, Action<unknown>>[]; | ||||
|     | Monitor<S, A, LiftedState<S, A, unknown>, unknown, Action<string>> | ||||
|     | Monitor<S, A, LiftedState<S, A, unknown>, unknown, Action<string>>[]; | ||||
| } | ||||
| 
 | ||||
| class DockMonitor<S, A extends Action<unknown>> extends Component< | ||||
| class DockMonitor<S, A extends Action<string>> extends Component< | ||||
|   DockMonitorProps<S, A> | ||||
| > { | ||||
|   static update = reducer; | ||||
|  | @ -179,7 +179,7 @@ class DockMonitor<S, A extends Action<unknown>> extends Component< | |||
|   }; | ||||
| 
 | ||||
|   renderChild( | ||||
|     child: Monitor<S, A, LiftedState<S, A, unknown>, unknown, Action<unknown>>, | ||||
|     child: Monitor<S, A, LiftedState<S, A, unknown>, unknown, Action<string>>, | ||||
|     index: number, | ||||
|     otherProps: Omit< | ||||
|       DockMonitorProps<S, A>, | ||||
|  | @ -214,19 +214,13 @@ class DockMonitor<S, A extends Action<unknown>> extends Component< | |||
|       > | ||||
|         {Children.map( | ||||
|           children as | ||||
|             | Monitor<S, A, LiftedState<S, A, unknown>, unknown, Action<string>> | ||||
|             | Monitor< | ||||
|                 S, | ||||
|                 A, | ||||
|                 LiftedState<S, A, unknown>, | ||||
|                 unknown, | ||||
|                 Action<unknown> | ||||
|               > | ||||
|             | Monitor< | ||||
|                 S, | ||||
|                 A, | ||||
|                 LiftedState<S, A, unknown>, | ||||
|                 unknown, | ||||
|                 Action<unknown> | ||||
|                 Action<string> | ||||
|               >[], | ||||
|           (child, index) => this.renderChild(child, index, rest), | ||||
|         )} | ||||
|  | @ -236,10 +230,10 @@ class DockMonitor<S, A extends Action<unknown>> extends Component< | |||
| } | ||||
| 
 | ||||
| export default DockMonitor as unknown as React.ComponentType< | ||||
|   ExternalProps<unknown, Action<unknown>> | ||||
|   ExternalProps<unknown, Action<string>> | ||||
| > & { | ||||
|   update( | ||||
|     monitorProps: ExternalProps<unknown, Action<unknown>>, | ||||
|     monitorProps: ExternalProps<unknown, Action<string>>, | ||||
|     state: DockMonitorState | undefined, | ||||
|     action: DockMonitorAction, | ||||
|   ): DockMonitorState; | ||||
|  |  | |||
|  | @ -18,7 +18,7 @@ export interface DockMonitorState { | |||
|   childMonitorIndex: number; | ||||
| } | ||||
| 
 | ||||
| function position<S, A extends Action<unknown>>( | ||||
| function position<S, A extends Action<string>>( | ||||
|   props: DockMonitorProps<S, A>, | ||||
|   state = props.defaultPosition, | ||||
|   action: DockMonitorAction, | ||||
|  | @ -28,7 +28,7 @@ function position<S, A extends Action<unknown>>( | |||
|     : state; | ||||
| } | ||||
| 
 | ||||
| function size<S, A extends Action<unknown>>( | ||||
| function size<S, A extends Action<string>>( | ||||
|   props: DockMonitorProps<S, A>, | ||||
|   state = props.defaultSize, | ||||
|   action: DockMonitorAction, | ||||
|  | @ -36,7 +36,7 @@ function size<S, A extends Action<unknown>>( | |||
|   return action.type === CHANGE_SIZE ? action.size : state; | ||||
| } | ||||
| 
 | ||||
| function isVisible<S, A extends Action<unknown>>( | ||||
| function isVisible<S, A extends Action<string>>( | ||||
|   props: DockMonitorProps<S, A>, | ||||
|   state = props.defaultIsVisible, | ||||
|   action: DockMonitorAction, | ||||
|  | @ -44,7 +44,7 @@ function isVisible<S, A extends Action<unknown>>( | |||
|   return action.type === TOGGLE_VISIBILITY ? !state : state; | ||||
| } | ||||
| 
 | ||||
| function childMonitorStates<S, A extends Action<unknown>>( | ||||
| function childMonitorStates<S, A extends Action<string>>( | ||||
|   props: DockMonitorProps<S, A>, | ||||
|   state: unknown[] = [], | ||||
|   action: DockMonitorAction, | ||||
|  | @ -54,7 +54,7 @@ function childMonitorStates<S, A extends Action<unknown>>( | |||
|   ); | ||||
| } | ||||
| 
 | ||||
| function childMonitorIndex<S, A extends Action<unknown>>( | ||||
| function childMonitorIndex<S, A extends Action<string>>( | ||||
|   props: DockMonitorProps<S, A>, | ||||
|   state = 0, | ||||
|   action: DockMonitorAction, | ||||
|  | @ -67,7 +67,7 @@ function childMonitorIndex<S, A extends Action<unknown>>( | |||
|   } | ||||
| } | ||||
| 
 | ||||
| export default function reducer<S, A extends Action<unknown>>( | ||||
| export default function reducer<S, A extends Action<string>>( | ||||
|   props: DockMonitorProps<S, A>, | ||||
|   state: Partial<DockMonitorState> = {}, | ||||
|   action: DockMonitorAction, | ||||
|  |  | |||
|  | @ -220,7 +220,7 @@ export interface Config extends EnhancerOptions { | |||
| 
 | ||||
| interface ConnectResponse { | ||||
|   init: (state: unknown) => void; | ||||
|   send: (action: Action<unknown>, state: unknown) => void; | ||||
|   send: (action: Action<string>, state: unknown) => void; | ||||
| } | ||||
| 
 | ||||
| interface ReduxDevtoolsExtension { | ||||
|  |  | |||
|  | @ -17,7 +17,7 @@ function enhancer(options?: EnhancerOptions): StoreEnhancer { | |||
|   if (config.latency === undefined) config.latency = 500; | ||||
| 
 | ||||
|   return function (createStore) { | ||||
|     return function <S, A extends Action<unknown>>( | ||||
|     return function <S, A extends Action<string>>( | ||||
|       reducer: Reducer<S, A>, | ||||
|       preloadedState: PreloadedState<S> | undefined, | ||||
|     ) { | ||||
|  |  | |||
|  | @ -30,7 +30,7 @@ export const getDevTools = (location: { search: string }) => | |||
|               component: TestTab, | ||||
|             }, | ||||
|             ...defaultTabs, | ||||
|           ] as Tab<unknown, Action<unknown>>[] | ||||
|           ] as Tab<unknown, Action<string>>[] | ||||
|         } | ||||
|       /> | ||||
|     </DockMonitor>, | ||||
|  |  | |||
|  | @ -60,7 +60,7 @@ export function compare<S>( | |||
|   ).forEach(generate); | ||||
| } | ||||
| 
 | ||||
| interface Props<S, A extends Action<unknown>> | ||||
| interface Props<S, A extends Action<string>> | ||||
|   extends Omit<TabComponentProps<S, A>, 'monitorState' | 'updateMonitorState'> { | ||||
|   name?: string; | ||||
|   isVanilla?: boolean; | ||||
|  | @ -74,10 +74,10 @@ interface Props<S, A extends Action<unknown>> | |||
| 
 | ||||
| export default class TestGenerator< | ||||
|   S, | ||||
|   A extends Action<unknown>, | ||||
|   A extends Action<string>, | ||||
| > extends (PureComponent || Component)<Props<S, A>> { | ||||
|   getMethod(action: A) { | ||||
|     let type: string = action.type as string; | ||||
|     let type = action.type; | ||||
|     if (type[0] === '┗') type = type.substr(1).trim(); | ||||
|     const args = (action as unknown as { arguments: unknown[] }).arguments | ||||
|       ? (action as unknown as { arguments: unknown[] }).arguments | ||||
|  | @ -143,11 +143,11 @@ export default class TestGenerator< | |||
|       if ( | ||||
|         !isVanilla || | ||||
|         /* eslint-disable-next-line no-useless-escape */ | ||||
|         /^┗?\s?[a-zA-Z0-9_@.\[\]-]+?$/.test(actions[i].action.type as string) | ||||
|         /^┗?\s?[a-zA-Z0-9_@.\[\]-]+?$/.test(actions[i].action.type) | ||||
|       ) { | ||||
|         if (isFirst) isFirst = false; | ||||
|         else r += space; | ||||
|         if (!isVanilla || (actions[i].action.type as string)[0] !== '@') { | ||||
|         if (!isVanilla || actions[i].action.type[0] !== '@') { | ||||
|           r += | ||||
|             (dispatcher as (locals: DispatcherLocals) => string)({ | ||||
|               action: !isVanilla | ||||
|  | @ -184,10 +184,7 @@ export default class TestGenerator< | |||
|           actionName: | ||||
|             (selectedActionId === null || selectedActionId > 0) && | ||||
|             actions[startIdx] | ||||
|               ? (actions[startIdx].action.type as string).replace( | ||||
|                   /[^a-zA-Z0-9_-]+/, | ||||
|                   '', | ||||
|                 ) | ||||
|               ? actions[startIdx].action.type.replace(/[^a-zA-Z0-9_-]+/, '') | ||||
|               : 'should return the initial state', | ||||
|           initialState: stringify(computedStates[startIdx - 1].state), | ||||
|           assertions: r, | ||||
|  |  | |||
|  | @ -42,7 +42,7 @@ interface State { | |||
|   dialogStatus: 'Add' | 'Edit' | null; | ||||
| } | ||||
| 
 | ||||
| export class TestTab<S, A extends Action<unknown>> extends Component< | ||||
| export class TestTab<S, A extends Action<string>> extends Component< | ||||
|   TabComponentProps<S, A>, | ||||
|   State | ||||
| > { | ||||
|  |  | |||
|  | @ -8,7 +8,7 @@ import strTemplate from '../src/redux/mocha/template'; | |||
| import fnVanillaTemplate from '../src/vanilla/mocha'; | ||||
| import strVanillaTemplate from '../src/vanilla/mocha/template'; | ||||
| 
 | ||||
| const actions: { [actionId: number]: PerformAction<Action<unknown>> } = { | ||||
| const actions: { [actionId: number]: PerformAction<Action<string>> } = { | ||||
|   0: { | ||||
|     type: 'PERFORM_ACTION', | ||||
|     action: { type: '@@INIT' }, | ||||
|  |  | |||
|  | @ -10,7 +10,7 @@ import { ErrorLocation } from './react-error-overlay/utils/parseCompileError'; | |||
| 
 | ||||
| const rootStyle = { padding: '5px 10px' }; | ||||
| 
 | ||||
| interface Props<S, A extends Action<unknown>> extends TabComponentProps<S, A> { | ||||
| interface Props<S, A extends Action<string>> extends TabComponentProps<S, A> { | ||||
|   openFile: ( | ||||
|     fileName: string, | ||||
|     lineNumber: number, | ||||
|  | @ -24,7 +24,7 @@ interface State { | |||
|   showDocsLink?: boolean; | ||||
| } | ||||
| 
 | ||||
| export class TraceTab<S, A extends Action<unknown>> extends Component< | ||||
| export class TraceTab<S, A extends Action<string>> extends Component< | ||||
|   Props<S, A>, | ||||
|   State | ||||
| > { | ||||
|  |  | |||
|  | @ -22,7 +22,7 @@ import { CSS } from '@dnd-kit/utilities'; | |||
| import ActionListRow from './ActionListRow'; | ||||
| import ActionListHeader from './ActionListHeader'; | ||||
| 
 | ||||
| function getTimestamps<A extends Action<unknown>>( | ||||
| function getTimestamps<A extends Action<string>>( | ||||
|   actions: { [actionId: number]: PerformAction<A> }, | ||||
|   actionIds: number[], | ||||
|   actionId: number, | ||||
|  | @ -40,7 +40,7 @@ function scrollToBottom(node: HTMLDivElement) { | |||
|   node.scrollTop = node.scrollHeight; | ||||
| } | ||||
| 
 | ||||
| interface Props<A extends Action<unknown>> { | ||||
| interface Props<A extends Action<string>> { | ||||
|   actions: { [actionId: number]: PerformAction<A> }; | ||||
|   actionIds: number[]; | ||||
|   isWideLayout: boolean; | ||||
|  | @ -63,7 +63,7 @@ interface Props<A extends Action<unknown>> { | |||
|   lastActionId: number; | ||||
| } | ||||
| 
 | ||||
| export default function ActionList<A extends Action<unknown>>({ | ||||
| export default function ActionList<A extends Action<string>>({ | ||||
|   styling, | ||||
|   actions, | ||||
|   actionIds, | ||||
|  | @ -140,7 +140,7 @@ export default function ActionList<A extends Action<unknown>>({ | |||
|   const filteredActionIds = searchValue | ||||
|     ? actionIds.filter( | ||||
|         (id) => | ||||
|           (actions[id].action.type as string) | ||||
|           actions[id].action.type | ||||
|             .toLowerCase() | ||||
|             .indexOf(lowerSearchValue as string) !== -1, | ||||
|       ) | ||||
|  |  | |||
|  | @ -12,7 +12,7 @@ const BUTTON_JUMP = 'Jump'; | |||
| 
 | ||||
| type Button = typeof BUTTON_SKIP | typeof BUTTON_JUMP; | ||||
| 
 | ||||
| interface Props<A extends Action<unknown>> { | ||||
| interface Props<A extends Action<string>> { | ||||
|   styling: StylingFunction; | ||||
|   actionId: number; | ||||
|   isInitAction: boolean; | ||||
|  | @ -33,7 +33,7 @@ interface State { | |||
| } | ||||
| 
 | ||||
| export default class ActionListRow< | ||||
|   A extends Action<unknown>, | ||||
|   A extends Action<string>, | ||||
| > extends PureComponent<Props<A>, State> { | ||||
|   state: State = { hover: false }; | ||||
| 
 | ||||
|  | @ -73,7 +73,7 @@ export default class ActionListRow< | |||
|     let actionType = action.type; | ||||
|     if (typeof actionType === 'undefined') actionType = '<UNDEFINED>'; | ||||
|     else if (actionType === null) actionType = '<NULL>'; | ||||
|     else actionType = (actionType as string).toString() || '<EMPTY>'; | ||||
|     else actionType = actionType.toString() || '<EMPTY>'; | ||||
| 
 | ||||
|     return ( | ||||
|       <div | ||||
|  | @ -106,7 +106,7 @@ export default class ActionListRow< | |||
|             isSkipped && 'actionListItemNameSkipped', | ||||
|           ])} | ||||
|         > | ||||
|           {actionType as string} | ||||
|           {actionType} | ||||
|         </div> | ||||
|         {hideActionButtons ? ( | ||||
|           <RightSlider styling={styling} shown> | ||||
|  |  | |||
|  | @ -11,7 +11,7 @@ import DiffTab from './tabs/DiffTab'; | |||
| import StateTab from './tabs/StateTab'; | ||||
| import ActionTab from './tabs/ActionTab'; | ||||
| 
 | ||||
| export interface TabComponentProps<S, A extends Action<unknown>> { | ||||
| export interface TabComponentProps<S, A extends Action<string>> { | ||||
|   labelRenderer: LabelRenderer; | ||||
|   styling: StylingFunction; | ||||
|   computedStates: { state: S; error?: string }[]; | ||||
|  | @ -31,7 +31,7 @@ export interface TabComponentProps<S, A extends Action<unknown>> { | |||
|   updateMonitorState: (monitorState: Partial<DevtoolsInspectorState>) => void; | ||||
| } | ||||
| 
 | ||||
| export interface Tab<S, A extends Action<unknown>> { | ||||
| export interface Tab<S, A extends Action<string>> { | ||||
|   name: string; | ||||
|   component: React.ComponentType<TabComponentProps<S, A>>; | ||||
| } | ||||
|  | @ -51,7 +51,7 @@ const DEFAULT_TABS = [ | |||
|   }, | ||||
| ]; | ||||
| 
 | ||||
| interface Props<S, A extends Action<unknown>> { | ||||
| interface Props<S, A extends Action<string>> { | ||||
|   base16Theme: Base16Theme; | ||||
|   invertTheme: boolean; | ||||
|   isWideLayout: boolean; | ||||
|  | @ -76,7 +76,7 @@ interface Props<S, A extends Action<unknown>> { | |||
|   disableStateTreeCollection: boolean; | ||||
| } | ||||
| 
 | ||||
| class ActionPreview<S, A extends Action<unknown>> extends Component< | ||||
| class ActionPreview<S, A extends Action<string>> extends Component< | ||||
|   Props<S, A> | ||||
| > { | ||||
|   static defaultProps = { | ||||
|  | @ -123,7 +123,7 @@ class ActionPreview<S, A extends Action<unknown>> extends Component< | |||
|     return ( | ||||
|       <div key="actionPreview" {...styling('actionPreview')}> | ||||
|         <ActionPreviewHeader | ||||
|           tabs={renderedTabs as unknown as Tab<unknown, Action<unknown>>[]} | ||||
|           tabs={renderedTabs as unknown as Tab<unknown, Action<string>>[]} | ||||
|           {...{ styling, inspectedPath, onInspectPath, tabName, onSelectTab }} | ||||
|         /> | ||||
|         {!error && ( | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ import { Action } from 'redux'; | |||
| import { StylingFunction } from 'react-base16-styling'; | ||||
| import { Tab } from './ActionPreview'; | ||||
| 
 | ||||
| interface Props<S, A extends Action<unknown>> { | ||||
| interface Props<S, A extends Action<string>> { | ||||
|   tabs: Tab<S, A>[]; | ||||
|   styling: StylingFunction; | ||||
|   inspectedPath: (string | number)[]; | ||||
|  | @ -14,7 +14,7 @@ interface Props<S, A extends Action<unknown>> { | |||
| } | ||||
| 
 | ||||
| const ActionPreviewHeader: FunctionComponent< | ||||
|   Props<unknown, Action<unknown>> | ||||
|   Props<unknown, Action<string>> | ||||
| > = ({ styling, inspectedPath, onInspectPath, tabName, onSelectTab, tabs }) => ( | ||||
|   <div key="previewHeader" {...styling('previewHeader')}> | ||||
|     <div {...styling('tabSelector')}> | ||||
|  |  | |||
|  | @ -43,13 +43,13 @@ const { | |||
|   reorderAction, | ||||
| } = ActionCreators; | ||||
| 
 | ||||
| function getLastActionId<S, A extends Action<unknown>>( | ||||
| function getLastActionId<S, A extends Action<string>>( | ||||
|   props: DevtoolsInspectorProps<S, A>, | ||||
| ) { | ||||
|   return props.stagedActionIds[props.stagedActionIds.length - 1]; | ||||
| } | ||||
| 
 | ||||
| function getCurrentActionId<S, A extends Action<unknown>>( | ||||
| function getCurrentActionId<S, A extends Action<string>>( | ||||
|   props: DevtoolsInspectorProps<S, A>, | ||||
|   monitorState: DevtoolsInspectorState, | ||||
| ) { | ||||
|  | @ -73,7 +73,7 @@ function getFromState<S>( | |||
|   return computedStates[fromStateIdx]; | ||||
| } | ||||
| 
 | ||||
| function createIntermediateState<S, A extends Action<unknown>>( | ||||
| function createIntermediateState<S, A extends Action<string>>( | ||||
|   props: DevtoolsInspectorProps<S, A>, | ||||
|   monitorState: DevtoolsInspectorState, | ||||
| ) { | ||||
|  | @ -126,7 +126,7 @@ function createIntermediateState<S, A extends Action<unknown>>( | |||
|   }; | ||||
| } | ||||
| 
 | ||||
| function createThemeState<S, A extends Action<unknown>>( | ||||
| function createThemeState<S, A extends Action<string>>( | ||||
|   props: DevtoolsInspectorProps<S, A>, | ||||
| ) { | ||||
|   const base16Theme = getBase16Theme(props.theme, base16Themes)!; | ||||
|  | @ -137,7 +137,7 @@ function createThemeState<S, A extends Action<unknown>>( | |||
|   return { base16Theme, styling }; | ||||
| } | ||||
| 
 | ||||
| export interface ExternalProps<S, A extends Action<unknown>> { | ||||
| export interface ExternalProps<S, A extends Action<string>> { | ||||
|   dispatch: Dispatch< | ||||
|     DevtoolsInspectorAction | LiftedAction<S, A, DevtoolsInspectorState> | ||||
|   >; | ||||
|  | @ -165,7 +165,7 @@ interface DefaultProps { | |||
|   invertTheme: boolean; | ||||
| } | ||||
| 
 | ||||
| export interface DevtoolsInspectorProps<S, A extends Action<unknown>> | ||||
| export interface DevtoolsInspectorProps<S, A extends Action<string>> | ||||
|   extends LiftedState<S, A, DevtoolsInspectorState> { | ||||
|   dispatch: Dispatch< | ||||
|     DevtoolsInspectorAction | LiftedAction<S, A, DevtoolsInspectorState> | ||||
|  | @ -186,7 +186,7 @@ export interface DevtoolsInspectorProps<S, A extends Action<unknown>> | |||
|   tabs: Tab<S, A>[] | ((tabs: Tab<S, A>[]) => Tab<S, A>[]); | ||||
| } | ||||
| 
 | ||||
| interface State<S, A extends Action<unknown>> { | ||||
| interface State<S, A extends Action<string>> { | ||||
|   delta: Delta | null | undefined | false; | ||||
|   nextState: S; | ||||
|   action: A; | ||||
|  | @ -195,7 +195,7 @@ interface State<S, A extends Action<unknown>> { | |||
|   themeState: { base16Theme: Base16Theme; styling: StylingFunction }; | ||||
| } | ||||
| 
 | ||||
| class DevtoolsInspector<S, A extends Action<unknown>> extends PureComponent< | ||||
| class DevtoolsInspector<S, A extends Action<string>> extends PureComponent< | ||||
|   DevtoolsInspectorProps<S, A>, | ||||
|   State<S, A> | ||||
| > { | ||||
|  | @ -474,10 +474,10 @@ class DevtoolsInspector<S, A extends Action<unknown>> extends PureComponent< | |||
| } | ||||
| 
 | ||||
| export default DevtoolsInspector as unknown as React.ComponentType< | ||||
|   ExternalProps<unknown, Action<unknown>> | ||||
|   ExternalProps<unknown, Action<string>> | ||||
| > & { | ||||
|   update( | ||||
|     monitorProps: ExternalProps<unknown, Action<unknown>>, | ||||
|     monitorProps: ExternalProps<unknown, Action<string>>, | ||||
|     state: DevtoolsInspectorState | undefined, | ||||
|     action: DevtoolsInspectorAction, | ||||
|   ): DevtoolsInspectorState; | ||||
|  |  | |||
|  | @ -45,7 +45,7 @@ function reduceUpdateState( | |||
|     : state; | ||||
| } | ||||
| 
 | ||||
| export function reducer<S, A extends Action<unknown>>( | ||||
| export function reducer<S, A extends Action<string>>( | ||||
|   props: DevtoolsInspectorProps<S, A>, | ||||
|   state = DEFAULT_STATE, | ||||
|   action: DevtoolsInspectorAction, | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ import getJsonTreeTheme from './getJsonTreeTheme'; | |||
| import { TabComponentProps } from '../ActionPreview'; | ||||
| 
 | ||||
| const ActionTab: FunctionComponent< | ||||
|   TabComponentProps<unknown, Action<unknown>> | ||||
|   TabComponentProps<unknown, Action<string>> | ||||
| > = ({ | ||||
|   action, | ||||
|   styling, | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ import { TabComponentProps } from '../ActionPreview'; | |||
| import { Action } from 'redux'; | ||||
| 
 | ||||
| const DiffTab: FunctionComponent< | ||||
|   TabComponentProps<unknown, Action<unknown>> | ||||
|   TabComponentProps<unknown, Action<string>> | ||||
| > = ({ | ||||
|   delta, | ||||
|   styling, | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ import getJsonTreeTheme from './getJsonTreeTheme'; | |||
| import { TabComponentProps } from '../ActionPreview'; | ||||
| 
 | ||||
| const StateTab: React.FunctionComponent< | ||||
|   TabComponentProps<any, Action<unknown>> | ||||
|   TabComponentProps<any, Action<string>> | ||||
| > = ({ | ||||
|   nextState, | ||||
|   styling, | ||||
|  |  | |||
|  | @ -42,7 +42,7 @@ const isChromeOrNode = | |||
|     process.release && | ||||
|     process.release.name === 'node'); | ||||
| 
 | ||||
| export interface PerformAction<A extends Action<unknown>> { | ||||
| export interface PerformAction<A extends Action<string>> { | ||||
|   type: typeof ActionTypes.PERFORM_ACTION; | ||||
|   action: A; | ||||
|   timestamp: number; | ||||
|  | @ -96,7 +96,7 @@ interface JumpToActionAction { | |||
|   actionId: number; | ||||
| } | ||||
| 
 | ||||
| interface ImportStateAction<S, A extends Action<unknown>, MonitorState> { | ||||
| interface ImportStateAction<S, A extends Action<string>, MonitorState> { | ||||
|   type: typeof ActionTypes.IMPORT_STATE; | ||||
|   nextLiftedState: LiftedState<S, A, MonitorState> | readonly A[]; | ||||
|   preloadedState?: S; | ||||
|  | @ -113,7 +113,7 @@ interface PauseRecordingAction { | |||
|   status: boolean; | ||||
| } | ||||
| 
 | ||||
| export type LiftedAction<S, A extends Action<unknown>, MonitorState> = | ||||
| export type LiftedAction<S, A extends Action<string>, MonitorState> = | ||||
|   | PerformAction<A> | ||||
|   | ResetAction | ||||
|   | RollbackAction | ||||
|  | @ -132,7 +132,7 @@ export type LiftedAction<S, A extends Action<unknown>, MonitorState> = | |||
|  * Action creators to change the History state. | ||||
|  */ | ||||
| export const ActionCreators = { | ||||
|   performAction<A extends Action<unknown>>( | ||||
|   performAction<A extends Action<string>>( | ||||
|     action: A, | ||||
|     trace?: ((action: A) => string | undefined) | boolean, | ||||
|     traceLimit?: number, | ||||
|  | @ -243,7 +243,7 @@ export const ActionCreators = { | |||
|     return { type: ActionTypes.JUMP_TO_ACTION, actionId }; | ||||
|   }, | ||||
| 
 | ||||
|   importState<S, A extends Action<unknown>, MonitorState = null>( | ||||
|   importState<S, A extends Action<string>, MonitorState = null>( | ||||
|     nextLiftedState: LiftedState<S, A, MonitorState> | readonly A[], | ||||
|     noRecompute?: boolean, | ||||
|   ): ImportStateAction<S, A, MonitorState> { | ||||
|  | @ -264,7 +264,7 @@ export const INIT_ACTION = { type: '@@INIT' }; | |||
| /** | ||||
|  * Computes the next entry with exceptions catching. | ||||
|  */ | ||||
| function computeWithTryCatch<S, A extends Action<unknown>>( | ||||
| function computeWithTryCatch<S, A extends Action<string>>( | ||||
|   reducer: Reducer<S, A>, | ||||
|   action: A, | ||||
|   state: S, | ||||
|  | @ -295,7 +295,7 @@ function computeWithTryCatch<S, A extends Action<unknown>>( | |||
| /** | ||||
|  * Computes the next entry in the log by applying an action. | ||||
|  */ | ||||
| function computeNextEntry<S, A extends Action<unknown>>( | ||||
| function computeNextEntry<S, A extends Action<string>>( | ||||
|   reducer: Reducer<S, A>, | ||||
|   action: A, | ||||
|   state: S, | ||||
|  | @ -310,7 +310,7 @@ function computeNextEntry<S, A extends Action<unknown>>( | |||
| /** | ||||
|  * Runs the reducer on invalidated actions to get a fresh computation log. | ||||
|  */ | ||||
| function recomputeStates<S, A extends Action<unknown>>( | ||||
| function recomputeStates<S, A extends Action<string>>( | ||||
|   computedStates: { state: S; error?: string }[], | ||||
|   minInvalidatedStateIndex: number, | ||||
|   reducer: Reducer<S, A>, | ||||
|  | @ -367,7 +367,7 @@ function recomputeStates<S, A extends Action<unknown>>( | |||
| /** | ||||
|  * Lifts an app's action into an action on the lifted store. | ||||
|  */ | ||||
| export function liftAction<A extends Action<unknown>>( | ||||
| export function liftAction<A extends Action<string>>( | ||||
|   action: A, | ||||
|   trace?: ((action: A) => string | undefined) | boolean, | ||||
|   traceLimit?: number, | ||||
|  | @ -382,13 +382,13 @@ export function liftAction<A extends Action<unknown>>( | |||
|   ); | ||||
| } | ||||
| 
 | ||||
| function isArray<S, A extends Action<unknown>, MonitorState>( | ||||
| function isArray<S, A extends Action<string>, MonitorState>( | ||||
|   nextLiftedState: LiftedState<S, A, MonitorState> | readonly A[], | ||||
| ): nextLiftedState is readonly A[] { | ||||
|   return Array.isArray(nextLiftedState); | ||||
| } | ||||
| 
 | ||||
| export interface LiftedState<S, A extends Action<unknown>, MonitorState> { | ||||
| export interface LiftedState<S, A extends Action<string>, MonitorState> { | ||||
|   monitorState: MonitorState; | ||||
|   nextActionId: number; | ||||
|   actionsById: { [actionId: number]: PerformAction<A> }; | ||||
|  | @ -406,9 +406,9 @@ export interface LiftedState<S, A extends Action<unknown>, MonitorState> { | |||
|  */ | ||||
| export function liftReducerWith< | ||||
|   S, | ||||
|   A extends Action<unknown>, | ||||
|   A extends Action<string>, | ||||
|   MonitorState, | ||||
|   MonitorAction extends Action<unknown>, | ||||
|   MonitorAction extends Action<string>, | ||||
| >( | ||||
|   reducer: Reducer<S, A>, | ||||
|   initialCommittedState: PreloadedState<S> | undefined, | ||||
|  | @ -834,7 +834,7 @@ export function liftReducerWith< | |||
|  */ | ||||
| export function unliftState< | ||||
|   S, | ||||
|   A extends Action<unknown>, | ||||
|   A extends Action<string>, | ||||
|   MonitorState, | ||||
|   NextStateExt, | ||||
| >( | ||||
|  | @ -845,21 +845,21 @@ export function unliftState< | |||
|   return state as S & NextStateExt; | ||||
| } | ||||
| 
 | ||||
| export type LiftedReducer<S, A extends Action<unknown>, MonitorState> = Reducer< | ||||
| export type LiftedReducer<S, A extends Action<string>, MonitorState> = Reducer< | ||||
|   LiftedState<S, A, MonitorState>, | ||||
|   LiftedAction<S, A, MonitorState> | ||||
| >; | ||||
| 
 | ||||
| export type LiftedStore<S, A extends Action<unknown>, MonitorState> = Store< | ||||
| export type LiftedStore<S, A extends Action<string>, MonitorState> = Store< | ||||
|   LiftedState<S, A, MonitorState>, | ||||
|   LiftedAction<S, A, MonitorState> | ||||
| >; | ||||
| 
 | ||||
| export type InstrumentExt<S, A extends Action<unknown>, MonitorState> = { | ||||
| export type InstrumentExt<S, A extends Action<string>, MonitorState> = { | ||||
|   liftedStore: LiftedStore<S, A, MonitorState>; | ||||
| }; | ||||
| 
 | ||||
| export type EnhancedStore<S, A extends Action<unknown>, MonitorState> = Store< | ||||
| export type EnhancedStore<S, A extends Action<string>, MonitorState> = Store< | ||||
|   S, | ||||
|   A | ||||
| > & | ||||
|  | @ -870,9 +870,9 @@ export type EnhancedStore<S, A extends Action<unknown>, MonitorState> = Store< | |||
|  */ | ||||
| export function unliftStore< | ||||
|   S, | ||||
|   A extends Action<unknown>, | ||||
|   A extends Action<string>, | ||||
|   MonitorState, | ||||
|   MonitorAction extends Action<unknown>, | ||||
|   MonitorAction extends Action<string>, | ||||
|   NextExt, | ||||
|   NextStateExt, | ||||
| >( | ||||
|  | @ -965,9 +965,9 @@ export function unliftStore< | |||
| 
 | ||||
| export interface Options< | ||||
|   S, | ||||
|   A extends Action<unknown>, | ||||
|   A extends Action<string>, | ||||
|   MonitorState, | ||||
|   MonitorAction extends Action<unknown>, | ||||
|   MonitorAction extends Action<string>, | ||||
| > { | ||||
|   maxAge?: | ||||
|     | number | ||||
|  | @ -990,9 +990,9 @@ export interface Options< | |||
|  */ | ||||
| export function instrument< | ||||
|   OptionsS, | ||||
|   OptionsA extends Action<unknown>, | ||||
|   OptionsA extends Action<string>, | ||||
|   MonitorState = null, | ||||
|   MonitorAction extends Action<unknown> = never, | ||||
|   MonitorAction extends Action<string> = never, | ||||
| >( | ||||
|   monitorReducer: Reducer<MonitorState, MonitorAction> = (() => | ||||
|     null) as unknown as Reducer<MonitorState, MonitorAction>, | ||||
|  | @ -1008,7 +1008,7 @@ export function instrument< | |||
|   return <NextExt, NextStateExt>( | ||||
|       createStore: StoreEnhancerStoreCreator<NextExt, NextStateExt>, | ||||
|     ) => | ||||
|     <S, A extends Action<unknown>>( | ||||
|     <S, A extends Action<string>>( | ||||
|       reducer: Reducer<S, A>, | ||||
|       initialState?: PreloadedState<S>, | ||||
|     ) => { | ||||
|  |  | |||
|  | @ -1152,7 +1152,7 @@ describe('instrument', () => { | |||
|     }); | ||||
|   }); | ||||
| 
 | ||||
|   function filterStackAndTimestamps<S, A extends Action<unknown>>( | ||||
|   function filterStackAndTimestamps<S, A extends Action<string>>( | ||||
|     state: LiftedState<S, A, null>, | ||||
|   ) { | ||||
|     state.actionsById = _.mapValues(state.actionsById, (action) => { | ||||
|  |  | |||
|  | @ -45,7 +45,7 @@ const styles: { | |||
|   }, | ||||
| }; | ||||
| 
 | ||||
| interface ExternalProps<S, A extends Action<unknown>> { | ||||
| interface ExternalProps<S, A extends Action<string>> { | ||||
|   dispatch: Dispatch<LogMonitorAction | LiftedAction<S, A, LogMonitorState>>; | ||||
| 
 | ||||
|   preserveScrollTop: boolean; | ||||
|  | @ -66,7 +66,7 @@ interface DefaultProps<S> { | |||
|   markStateDiff: boolean; | ||||
| } | ||||
| 
 | ||||
| export interface LogMonitorProps<S, A extends Action<unknown>> | ||||
| export interface LogMonitorProps<S, A extends Action<string>> | ||||
|   extends LiftedState<S, A, LogMonitorState> { | ||||
|   dispatch: Dispatch<LogMonitorAction | LiftedAction<S, A, LogMonitorState>>; | ||||
| 
 | ||||
|  | @ -79,7 +79,7 @@ export interface LogMonitorProps<S, A extends Action<unknown>> | |||
|   hideMainButtons?: boolean; | ||||
| } | ||||
| 
 | ||||
| class LogMonitor<S, A extends Action<unknown>> extends PureComponent< | ||||
| class LogMonitor<S, A extends Action<string>> extends PureComponent< | ||||
|   LogMonitorProps<S, A> | ||||
| > { | ||||
|   static update = reducer; | ||||
|  | @ -274,10 +274,10 @@ class LogMonitor<S, A extends Action<unknown>> extends PureComponent< | |||
| } | ||||
| 
 | ||||
| export default LogMonitor as unknown as React.ComponentType< | ||||
|   ExternalProps<unknown, Action<unknown>> | ||||
|   ExternalProps<unknown, Action<string>> | ||||
| > & { | ||||
|   update( | ||||
|     monitorProps: ExternalProps<unknown, Action<unknown>>, | ||||
|     monitorProps: ExternalProps<unknown, Action<string>>, | ||||
|     state: LogMonitorState | undefined, | ||||
|     action: LogMonitorAction, | ||||
|   ): LogMonitorState; | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ const style: CSSProperties = { | |||
|   flexDirection: 'row', | ||||
| }; | ||||
| 
 | ||||
| interface Props<S, A extends Action<unknown>> { | ||||
| interface Props<S, A extends Action<string>> { | ||||
|   theme: Base16Theme; | ||||
|   dispatch: Dispatch<LogMonitorAction | LiftedAction<S, A, LogMonitorState>>; | ||||
|   hasStates: boolean; | ||||
|  | @ -29,7 +29,7 @@ interface Props<S, A extends Action<unknown>> { | |||
| 
 | ||||
| export default class LogMonitorButtonBar< | ||||
|   S, | ||||
|   A extends Action<unknown>, | ||||
|   A extends Action<string>, | ||||
| > extends PureComponent<Props<S, A>> { | ||||
|   static propTypes = { | ||||
|     dispatch: PropTypes.func, | ||||
|  |  | |||
|  | @ -29,7 +29,7 @@ const dataIsEqual = ( | |||
|   return getDeepItem(data, path) === getDeepItem(previousData, path); | ||||
| }; | ||||
| 
 | ||||
| interface Props<S, A extends Action<unknown>> { | ||||
| interface Props<S, A extends Action<string>> { | ||||
|   theme: Base16Theme; | ||||
|   select: (state: any) => unknown; | ||||
|   action: A; | ||||
|  | @ -49,7 +49,7 @@ interface Props<S, A extends Action<unknown>> { | |||
| 
 | ||||
| export default class LogMonitorEntry< | ||||
|   S, | ||||
|   A extends Action<unknown>, | ||||
|   A extends Action<string>, | ||||
| > extends PureComponent<Props<S, A>> { | ||||
|   static propTypes = { | ||||
|     state: PropTypes.object.isRequired, | ||||
|  |  | |||
|  | @ -17,7 +17,7 @@ const styles = { | |||
|   }, | ||||
| }; | ||||
| 
 | ||||
| interface Props<A extends Action<unknown>> { | ||||
| interface Props<A extends Action<string>> { | ||||
|   theme: Base16Theme; | ||||
|   collapsed: boolean; | ||||
|   action: A; | ||||
|  | @ -27,7 +27,7 @@ interface Props<A extends Action<unknown>> { | |||
| } | ||||
| 
 | ||||
| export default class LogMonitorAction< | ||||
|   A extends Action<unknown>, | ||||
|   A extends Action<string>, | ||||
| > extends Component<Props<A>> { | ||||
|   renderPayload(payload: Record<string, unknown>) { | ||||
|     return ( | ||||
|  | @ -71,7 +71,7 @@ export default class LogMonitorAction< | |||
|         }} | ||||
|       > | ||||
|         <div style={styles.actionBar} onClick={this.props.onClick}> | ||||
|           {type !== null && (type as string).toString()} | ||||
|           {type !== null && type.toString()} | ||||
|         </div> | ||||
|         {!this.props.collapsed ? this.renderPayload(payload) : ''} | ||||
|       </div> | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ import { PerformAction } from '@redux-devtools/core'; | |||
| import { Base16Theme } from 'redux-devtools-themes'; | ||||
| import LogMonitorEntry from './LogMonitorEntry'; | ||||
| 
 | ||||
| interface Props<S, A extends Action<unknown>> { | ||||
| interface Props<S, A extends Action<string>> { | ||||
|   actionsById: { [actionId: number]: PerformAction<A> }; | ||||
|   computedStates: { state: S; error?: string }[]; | ||||
|   stagedActionIds: number[]; | ||||
|  | @ -24,7 +24,7 @@ interface Props<S, A extends Action<unknown>> { | |||
| 
 | ||||
| export default class LogMonitorEntryList< | ||||
|   S, | ||||
|   A extends Action<unknown>, | ||||
|   A extends Action<string>, | ||||
| > extends PureComponent<Props<S, A>> { | ||||
|   static propTypes = { | ||||
|     actionsById: PropTypes.object, | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ import { | |||
| } from './actions'; | ||||
| import { LogMonitorProps } from './LogMonitor'; | ||||
| 
 | ||||
| function initialScrollTop<S, A extends Action<unknown>>( | ||||
| function initialScrollTop<S, A extends Action<string>>( | ||||
|   props: LogMonitorProps<S, A>, | ||||
|   state = 0, | ||||
|   action: LogMonitorAction, | ||||
|  | @ -18,7 +18,7 @@ function initialScrollTop<S, A extends Action<unknown>>( | |||
|   return action.type === UPDATE_SCROLL_TOP ? action.scrollTop : state; | ||||
| } | ||||
| 
 | ||||
| function startConsecutiveToggle<S, A extends Action<unknown>>( | ||||
| function startConsecutiveToggle<S, A extends Action<string>>( | ||||
|   props: LogMonitorProps<S, A>, | ||||
|   state: number | null | undefined, | ||||
|   action: LogMonitorAction, | ||||
|  | @ -31,7 +31,7 @@ export interface LogMonitorState { | |||
|   consecutiveToggleStartId: number | null | undefined; | ||||
| } | ||||
| 
 | ||||
| export default function reducer<S, A extends Action<unknown>>( | ||||
| export default function reducer<S, A extends Action<string>>( | ||||
|   props: LogMonitorProps<S, A>, | ||||
|   state: Partial<LogMonitorState> = {}, | ||||
|   action: LogMonitorAction, | ||||
|  |  | |||
|  | @ -3,9 +3,9 @@ import { Action, Reducer, StoreEnhancerStoreCreator } from 'redux'; | |||
| 
 | ||||
| export default function configureStore< | ||||
|   S, | ||||
|   A extends Action<unknown>, | ||||
|   A extends Action<string>, | ||||
|   MonitorState, | ||||
|   MonitorAction extends Action<unknown>, | ||||
|   MonitorAction extends Action<string>, | ||||
| >( | ||||
|   // eslint-disable-next-line @typescript-eslint/ban-types
 | ||||
|   next: StoreEnhancerStoreCreator<{}, unknown>, | ||||
|  |  | |||
|  | @ -74,7 +74,7 @@ interface Filters { | |||
|   readonly allowlist?: string | readonly string[]; | ||||
| } | ||||
| 
 | ||||
| interface Options<S, A extends Action<unknown>> { | ||||
| interface Options<S, A extends Action<string>> { | ||||
|   readonly hostname?: string; | ||||
|   readonly realtime?: boolean; | ||||
|   readonly maxAge?: number; | ||||
|  | @ -106,11 +106,11 @@ interface Options<S, A extends Action<unknown>> { | |||
|   readonly sendTo?: string; | ||||
|   readonly id?: string; | ||||
|   readonly actionCreators?: { | ||||
|     [key: string]: ActionCreator<Action<unknown>>; | ||||
|     [key: string]: ActionCreator<Action<string>>; | ||||
|   }; | ||||
|   readonly stateSanitizer?: ((state: S, index?: number) => S) | undefined; | ||||
|   readonly actionSanitizer?: | ||||
|     | (<A extends Action<unknown>>(action: A, id?: number) => A) | ||||
|     | (<A extends Action<string>>(action: A, id?: number) => A) | ||||
|     | undefined; | ||||
| } | ||||
| 
 | ||||
|  | @ -158,13 +158,13 @@ interface ActionMessage { | |||
|   readonly action: string | { args: string[]; rest: string; selected: number }; | ||||
| } | ||||
| 
 | ||||
| interface DispatchMessage<S, A extends Action<unknown>> { | ||||
| interface DispatchMessage<S, A extends Action<string>> { | ||||
|   readonly type: 'DISPATCH'; | ||||
|   // eslint-disable-next-line @typescript-eslint/ban-types
 | ||||
|   readonly action: LiftedAction<S, A, {}>; | ||||
| } | ||||
| 
 | ||||
| type Message<S, A extends Action<unknown>> = | ||||
| type Message<S, A extends Action<string>> = | ||||
|   | ImportMessage | ||||
|   | SyncMessage | ||||
|   | UpdateMessage | ||||
|  | @ -174,7 +174,7 @@ type Message<S, A extends Action<unknown>> = | |||
|   | ActionMessage | ||||
|   | DispatchMessage<S, A>; | ||||
| 
 | ||||
| class DevToolsEnhancer<S, A extends Action<unknown>> { | ||||
| class DevToolsEnhancer<S, A extends Action<string>> { | ||||
|   // eslint-disable-next-line @typescript-eslint/ban-types
 | ||||
|   store!: EnhancedStore<S, A, {}>; | ||||
|   filters: LocalFilter | undefined; | ||||
|  | @ -260,7 +260,7 @@ class DevToolsEnhancer<S, A extends Action<unknown>> { | |||
|                   index?: number, | ||||
|                 ) => unknown, | ||||
|                 this.actionSanitizer as | ||||
|                   | ((action: Action<unknown>, id: number) => Action) | ||||
|                   | ((action: Action<string>, id: number) => Action) | ||||
|                   | undefined, | ||||
|                 nextActionId!, | ||||
|               ), | ||||
|  | @ -492,25 +492,19 @@ class DevToolsEnhancer<S, A extends Action<unknown>> { | |||
|       if ( | ||||
|         this.startOn && | ||||
|         !this.started && | ||||
|         this.startOn.indexOf( | ||||
|           (action as PerformAction<A>).action.type as string, | ||||
|         ) !== -1 | ||||
|         this.startOn.indexOf((action as PerformAction<A>).action.type) !== -1 | ||||
|       ) | ||||
|         async(this.start); | ||||
|       else if ( | ||||
|         this.stopOn && | ||||
|         this.started && | ||||
|         this.stopOn.indexOf( | ||||
|           (action as PerformAction<A>).action.type as string, | ||||
|         ) !== -1 | ||||
|         this.stopOn.indexOf((action as PerformAction<A>).action.type) !== -1 | ||||
|       ) | ||||
|         async(this.stop); | ||||
|       else if ( | ||||
|         this.sendOn && | ||||
|         !this.started && | ||||
|         this.sendOn.indexOf( | ||||
|           (action as PerformAction<A>).action.type as string, | ||||
|         ) !== -1 | ||||
|         this.sendOn.indexOf((action as PerformAction<A>).action.type) !== -1 | ||||
|       ) | ||||
|         async(this.send); | ||||
|     } | ||||
|  | @ -584,24 +578,24 @@ class DevToolsEnhancer<S, A extends Action<unknown>> { | |||
|   }; | ||||
| } | ||||
| 
 | ||||
| export default <S, A extends Action<unknown>>(options?: Options<S, A>) => | ||||
| export default <S, A extends Action<string>>(options?: Options<S, A>) => | ||||
|   new DevToolsEnhancer<S, A>().enhance(options); | ||||
| 
 | ||||
| const compose = | ||||
|   (options: Options<unknown, Action<unknown>>) => | ||||
|   (options: Options<unknown, Action<string>>) => | ||||
|   (...funcs: StoreEnhancer[]) => | ||||
|   (...args: unknown[]) => { | ||||
|     const devToolsEnhancer = new DevToolsEnhancer(); | ||||
| 
 | ||||
|     function preEnhancer(createStore: StoreEnhancerStoreCreator) { | ||||
|       return <S, A extends Action<unknown>>( | ||||
|       return <S, A extends Action<string>>( | ||||
|         reducer: Reducer<S, A>, | ||||
|         preloadedState: PreloadedState<S>, | ||||
|       ) => { | ||||
|         devToolsEnhancer.store = createStore(reducer, preloadedState) as any; | ||||
|         return { | ||||
|           ...devToolsEnhancer.store, | ||||
|           dispatch: (action: Action<unknown>) => | ||||
|           dispatch: (action: Action<string>) => | ||||
|             devToolsEnhancer.locked | ||||
|               ? action | ||||
|               : devToolsEnhancer.store.dispatch(action), | ||||
|  | @ -618,7 +612,7 @@ const compose = | |||
|   }; | ||||
| 
 | ||||
| export function composeWithDevTools( | ||||
|   ...funcs: [Options<unknown, Action<unknown>>] | StoreEnhancer[] | ||||
|   ...funcs: [Options<unknown, Action<string>>] | StoreEnhancer[] | ||||
| ) { | ||||
|   if (funcs.length === 0) { | ||||
|     return new DevToolsEnhancer().enhance(); | ||||
|  |  | |||
|  | @ -19,12 +19,12 @@ import { QueryList } from '../components/QueryList'; | |||
| import { QueryForm } from '../components/QueryForm'; | ||||
| import { QueryPreview } from './QueryPreview'; | ||||
| 
 | ||||
| type ForwardedMonitorProps<S, A extends Action<unknown>> = Pick< | ||||
| type ForwardedMonitorProps<S, A extends Action<string>> = Pick< | ||||
|   LiftedState<S, A, RtkQueryMonitorState>, | ||||
|   'monitorState' | 'currentStateIndex' | 'computedStates' | 'actionsById' | ||||
| >; | ||||
| 
 | ||||
| export interface RtkQueryInspectorProps<S, A extends Action<unknown>> | ||||
| export interface RtkQueryInspectorProps<S, A extends Action<string>> | ||||
|   extends ForwardedMonitorProps<S, A> { | ||||
|   dispatch: Dispatch<LiftedAction<S, A, RtkQueryMonitorState>>; | ||||
|   styleUtils: StyleUtils; | ||||
|  | @ -35,7 +35,7 @@ type RtkQueryInspectorState<S> = { | |||
|   isWideLayout: boolean; | ||||
| }; | ||||
| 
 | ||||
| class RtkQueryInspector<S, A extends Action<unknown>> extends PureComponent< | ||||
| class RtkQueryInspector<S, A extends Action<string>> extends PureComponent< | ||||
|   RtkQueryInspectorProps<S, A>, | ||||
|   RtkQueryInspectorState<S> | ||||
| > { | ||||
|  | @ -55,10 +55,10 @@ class RtkQueryInspector<S, A extends Action<unknown>> extends PureComponent< | |||
|   static wideLayout = 600; | ||||
| 
 | ||||
|   static getDerivedStateFromProps( | ||||
|     props: RtkQueryInspectorProps<unknown, Action<unknown>>, | ||||
|     props: RtkQueryInspectorProps<unknown, Action<string>>, | ||||
|     state: RtkQueryInspectorState<unknown>, | ||||
|   ): null | Partial<RtkQueryInspectorState<unknown>> { | ||||
|     const selectorsSource = computeSelectorSource<unknown, Action<unknown>>( | ||||
|     const selectorsSource = computeSelectorSource<unknown, Action<string>>( | ||||
|       props, | ||||
|       state.selectorsSource, | ||||
|     ); | ||||
|  |  | |||
|  | @ -23,7 +23,7 @@ export interface RtkQueryComponentState { | |||
|   readonly styleUtils: StyleUtils; | ||||
| } | ||||
| 
 | ||||
| class RtkQueryMonitor<S, A extends Action<unknown>> extends Component< | ||||
| class RtkQueryMonitor<S, A extends Action<string>> extends Component< | ||||
|   RtkQueryMonitorProps<S, A>, | ||||
|   RtkQueryComponentState | ||||
| > { | ||||
|  | @ -79,10 +79,10 @@ class RtkQueryMonitor<S, A extends Action<unknown>> extends Component< | |||
| } | ||||
| 
 | ||||
| export default RtkQueryMonitor as unknown as React.ComponentType< | ||||
|   ExternalProps<unknown, Action<unknown>> | ||||
|   ExternalProps<unknown, Action<string>> | ||||
| > & { | ||||
|   update( | ||||
|     monitorProps: ExternalProps<unknown, Action<unknown>>, | ||||
|     monitorProps: ExternalProps<unknown, Action<string>>, | ||||
|     state: RtkQueryMonitorState | undefined, | ||||
|     action: Action, | ||||
|   ): RtkQueryMonitorState; | ||||
|  |  | |||
|  | @ -53,7 +53,7 @@ const monitorSlice = createSlice({ | |||
|   }, | ||||
| }); | ||||
| 
 | ||||
| export function reducer<S, A extends Action<unknown>>( | ||||
| export function reducer<S, A extends Action<string>>( | ||||
|   props: RtkQueryMonitorProps<S, A>, | ||||
|   state: RtkQueryMonitorState | undefined, | ||||
|   action: AnyAction, | ||||
|  |  | |||
|  | @ -26,7 +26,7 @@ import { | |||
| 
 | ||||
| type InspectorSelector<S, Output> = Selector<SelectorsSource<S>, Output>; | ||||
| 
 | ||||
| export function computeSelectorSource<S, A extends Action<unknown>>( | ||||
| export function computeSelectorSource<S, A extends Action<string>>( | ||||
|   props: RtkQueryInspectorProps<S, A>, | ||||
|   previous: SelectorsSource<S> | null = null, | ||||
| ): SelectorsSource<S> { | ||||
|  |  | |||
|  | @ -526,7 +526,7 @@ export const createStylingFromTheme: CurriedFunction1< | |||
|   base16Themes: { ...reduxThemes }, | ||||
| }); | ||||
| 
 | ||||
| export function createThemeState<S, A extends Action<unknown>>( | ||||
| export function createThemeState<S, A extends Action<string>>( | ||||
|   props: RtkQueryMonitorProps<S, A>, | ||||
| ): StyleUtils { | ||||
|   const base16Theme = | ||||
|  |  | |||
|  | @ -31,7 +31,7 @@ export interface RtkQueryMonitorState { | |||
|   readonly selectedPreviewTab: QueryPreviewTabs; | ||||
| } | ||||
| 
 | ||||
| export interface RtkQueryMonitorProps<S, A extends Action<unknown>> | ||||
| export interface RtkQueryMonitorProps<S, A extends Action<string>> | ||||
|   extends LiftedState<S, A, RtkQueryMonitorState> { | ||||
|   dispatch: Dispatch<Action | LiftedAction<S, A, RtkQueryMonitorState>>; | ||||
|   theme: keyof typeof themes | Base16Theme; | ||||
|  | @ -54,7 +54,7 @@ export type RtkQueryApiConfig = RtkQueryApiState['config']; | |||
| 
 | ||||
| export type RtkQueryProvided = RtkQueryApiState['provided']; | ||||
| 
 | ||||
| export interface ExternalProps<S, A extends Action<unknown>> { | ||||
| export interface ExternalProps<S, A extends Action<string>> { | ||||
|   dispatch: Dispatch<Action | LiftedAction<S, A, RtkQueryMonitorState>>; | ||||
|   theme: keyof typeof themes | Base16Theme; | ||||
|   hideMainButtons?: boolean; | ||||
|  |  | |||
|  | @ -22,7 +22,7 @@ import SliderButton from './SliderButton'; | |||
| // eslint-disable-next-line @typescript-eslint/unbound-method
 | ||||
| const { reset, jumpToAction } = ActionCreators; | ||||
| 
 | ||||
| interface ExternalProps<S, A extends Action<unknown>> { | ||||
| interface ExternalProps<S, A extends Action<string>> { | ||||
|   // eslint-disable-next-line @typescript-eslint/ban-types
 | ||||
|   dispatch: Dispatch<LiftedAction<S, A, {}>>; | ||||
|   preserveScrollTop: boolean; | ||||
|  | @ -39,7 +39,7 @@ interface DefaultProps { | |||
|   keyboardEnabled: boolean; | ||||
| } | ||||
| 
 | ||||
| interface SliderMonitorProps<S, A extends Action<unknown>> // eslint-disable-next-line @typescript-eslint/ban-types
 | ||||
| interface SliderMonitorProps<S, A extends Action<string>> // eslint-disable-next-line @typescript-eslint/ban-types
 | ||||
|   extends LiftedState<S, A, {}> { | ||||
|   // eslint-disable-next-line @typescript-eslint/ban-types
 | ||||
|   dispatch: Dispatch<LiftedAction<S, A, {}>>; | ||||
|  | @ -55,7 +55,7 @@ interface State { | |||
|   replaySpeed: string; | ||||
| } | ||||
| 
 | ||||
| class SliderMonitor<S, A extends Action<unknown>> extends (PureComponent || | ||||
| class SliderMonitor<S, A extends Action<string>> extends (PureComponent || | ||||
|   Component)<SliderMonitorProps<S, A>, State> { | ||||
|   static update = reducer; | ||||
| 
 | ||||
|  | @ -333,7 +333,7 @@ class SliderMonitor<S, A extends Action<unknown>> extends (PureComponent || | |||
|     let actionType = actionsById[actionId].action.type; | ||||
|     if (actionType === undefined) actionType = '<UNDEFINED>'; | ||||
|     else if (actionType === null) actionType = '<NULL>'; | ||||
|     else actionType = (actionType as string).toString() || '<EMPTY>'; | ||||
|     else actionType = actionType.toString() || '<EMPTY>'; | ||||
| 
 | ||||
|     const onPlayClick = | ||||
|       replaySpeed === 'Live' ? this.startRealtimeReplay : this.startReplay; | ||||
|  | @ -352,7 +352,7 @@ class SliderMonitor<S, A extends Action<unknown>> extends (PureComponent || | |||
|       <Toolbar noBorder compact fullHeight theme={theme}> | ||||
|         {playPause} | ||||
|         <Slider | ||||
|           label={actionType as string} | ||||
|           label={actionType} | ||||
|           sublabel={`(${actionId})`} | ||||
|           min={0} | ||||
|           max={max} | ||||
|  | @ -391,13 +391,13 @@ class SliderMonitor<S, A extends Action<unknown>> extends (PureComponent || | |||
| } | ||||
| 
 | ||||
| export default SliderMonitor as unknown as React.ComponentType< | ||||
|   ExternalProps<unknown, Action<unknown>> | ||||
|   ExternalProps<unknown, Action<string>> | ||||
| > & { | ||||
|   update( | ||||
|     monitorProps: ExternalProps<unknown, Action<unknown>>, | ||||
|     monitorProps: ExternalProps<unknown, Action<string>>, | ||||
|     // eslint-disable-next-line @typescript-eslint/ban-types
 | ||||
|     state: {} | undefined, | ||||
|     action: Action<unknown>, | ||||
|     action: Action<string>, | ||||
|     // eslint-disable-next-line @typescript-eslint/ban-types
 | ||||
|   ): {}; | ||||
|   defaultProps: DefaultProps; | ||||
|  |  | |||
|  | @ -3,7 +3,7 @@ import { PerformAction } from '@redux-devtools/core'; | |||
| import { Action } from 'redux'; | ||||
| 
 | ||||
| export interface State { | ||||
|   actionsById: { [actionId: number]: PerformAction<Action<unknown>> }; | ||||
|   actionsById: { [actionId: number]: PerformAction<Action<string>> }; | ||||
|   computedStates: { state: unknown; error?: string }[]; | ||||
|   stagedActionIds: number[]; | ||||
| } | ||||
|  | @ -19,10 +19,8 @@ export function arrToRegex(v: string | string[]) { | |||
| } | ||||
| 
 | ||||
| function filterActions( | ||||
|   actionsById: { [actionId: number]: PerformAction<Action<unknown>> }, | ||||
|   actionSanitizer: | ||||
|     | ((action: Action<unknown>, id: number) => Action) | ||||
|     | undefined, | ||||
|   actionsById: { [actionId: number]: PerformAction<Action<string>> }, | ||||
|   actionSanitizer: ((action: Action<string>, id: number) => Action) | undefined, | ||||
| ) { | ||||
|   if (!actionSanitizer) return actionsById; | ||||
|   return mapValues(actionsById, (action, id: number) => ({ | ||||
|  | @ -93,25 +91,25 @@ function getDevToolsOptions() { | |||
| } | ||||
| 
 | ||||
| export function isFiltered( | ||||
|   action: PerformAction<Action<unknown>> | Action<unknown>, | ||||
|   action: PerformAction<Action<string>> | Action<string>, | ||||
|   localFilter?: LocalFilter, | ||||
| ) { | ||||
|   const { type } = (action as PerformAction<Action<unknown>>).action || action; | ||||
|   const { type } = (action as PerformAction<Action<string>>).action || action; | ||||
|   const opts = getDevToolsOptions(); | ||||
|   if ( | ||||
|     (!localFilter && | ||||
|       opts.filter && | ||||
|       opts.filter === FilterState.DO_NOT_FILTER) || | ||||
|     (type && typeof (type as string).match !== 'function') | ||||
|     (type && typeof type.match !== 'function') | ||||
|   ) | ||||
|     return false; | ||||
| 
 | ||||
|   const { allowlist, denylist } = localFilter || opts; | ||||
|   return ( | ||||
|     // eslint-disable-next-line @typescript-eslint/prefer-regexp-exec
 | ||||
|     (allowlist && !(type as string).match(allowlist)) || | ||||
|     (allowlist && !type.match(allowlist)) || | ||||
|     // eslint-disable-next-line @typescript-eslint/prefer-regexp-exec
 | ||||
|     (denylist && (type as string).match(denylist)) | ||||
|     (denylist && type.match(denylist)) | ||||
|   ); | ||||
| } | ||||
| 
 | ||||
|  | @ -146,11 +144,9 @@ export function filterState( | |||
|   type: string, | ||||
|   localFilter: LocalFilter | undefined, | ||||
|   stateSanitizer: ((state: unknown, actionId: number) => unknown) | undefined, | ||||
|   actionSanitizer: | ||||
|     | ((action: Action<unknown>, id: number) => Action) | ||||
|     | undefined, | ||||
|   actionSanitizer: ((action: Action<string>, id: number) => Action) | undefined, | ||||
|   nextActionId: number, | ||||
|   predicate?: (currState: unknown, currAction: Action<unknown>) => boolean, | ||||
|   predicate?: (currState: unknown, currAction: Action<string>) => boolean, | ||||
| ) { | ||||
|   if (type === 'ACTION') | ||||
|     return !stateSanitizer ? state : stateSanitizer(state, nextActionId - 1); | ||||
|  | @ -169,7 +165,7 @@ export function filterState( | |||
|     }[] = []; | ||||
|     const sanitizedActionsById: | ||||
|       | { | ||||
|           [id: number]: PerformAction<Action<unknown>>; | ||||
|           [id: number]: PerformAction<Action<string>>; | ||||
|         } | ||||
|       | undefined = actionSanitizer && {}; | ||||
|     const { actionsById } = state; | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ import Immutable from 'immutable'; | |||
| import { PerformAction } from '@redux-devtools/core'; | ||||
| 
 | ||||
| interface State { | ||||
|   actionsById: { [actionId: number]: PerformAction<Action<unknown>> }; | ||||
|   actionsById: { [actionId: number]: PerformAction<Action<string>> }; | ||||
|   computedStates: { state: unknown; error?: string }[]; | ||||
|   committedState?: unknown; | ||||
| } | ||||
|  |  | |||
|  | @ -11,13 +11,13 @@ export function generateId(id: string | undefined) { | |||
| 
 | ||||
| export interface ActionCreatorObject { | ||||
|   readonly name: string; | ||||
|   readonly func: ActionCreator<Action<unknown>>; | ||||
|   readonly func: ActionCreator<Action<string>>; | ||||
|   readonly args: readonly string[]; | ||||
| } | ||||
| 
 | ||||
| // eslint-disable-next-line @typescript-eslint/ban-types
 | ||||
| function flatTree( | ||||
|   obj: { [key: string]: ActionCreator<Action<unknown>> }, | ||||
|   obj: { [key: string]: ActionCreator<Action<string>> }, | ||||
|   namespace = '', | ||||
| ) { | ||||
|   let functions: ActionCreatorObject[] = []; | ||||
|  | @ -65,7 +65,7 @@ export function getMethods(obj: unknown) { | |||
| } | ||||
| 
 | ||||
| export function getActionsArray(actionCreators: { | ||||
|   [key: string]: ActionCreator<Action<unknown>>; | ||||
|   [key: string]: ActionCreator<Action<string>>; | ||||
| }) { | ||||
|   if (Array.isArray(actionCreators)) return actionCreators; | ||||
|   return flatTree(actionCreators); | ||||
|  |  | |||
|  | @ -28,19 +28,19 @@ function logError(type: string) { | |||
| 
 | ||||
| export interface Props< | ||||
|   S, | ||||
|   A extends Action<unknown>, | ||||
|   A extends Action<string>, | ||||
|   MonitorState, | ||||
|   MonitorAction extends Action<unknown>, | ||||
|   MonitorAction extends Action<string>, | ||||
| > { | ||||
|   store?: EnhancedStore<S, A, MonitorState>; | ||||
| } | ||||
| 
 | ||||
| export type Monitor< | ||||
|   S, | ||||
|   A extends Action<unknown>, | ||||
|   A extends Action<string>, | ||||
|   MonitorProps extends LiftedState<S, A, MonitorState>, | ||||
|   MonitorState, | ||||
|   MonitorAction extends Action<unknown>, | ||||
|   MonitorAction extends Action<string>, | ||||
| > = React.ReactElement< | ||||
|   MonitorProps, | ||||
|   React.ComponentType<MonitorProps & LiftedState<S, A, MonitorState>> & { | ||||
|  | @ -54,10 +54,10 @@ export type Monitor< | |||
| 
 | ||||
| export default function createDevTools< | ||||
|   S, | ||||
|   A extends Action<unknown>, | ||||
|   A extends Action<string>, | ||||
|   MonitorProps extends LiftedState<S, A, MonitorState>, | ||||
|   MonitorState, | ||||
|   MonitorAction extends Action<unknown>, | ||||
|   MonitorAction extends Action<string>, | ||||
| >(children: Monitor<S, A, MonitorProps, MonitorState, MonitorAction>) { | ||||
|   const monitorElement = Children.only(children); | ||||
|   const monitorProps = monitorElement.props; | ||||
|  |  | |||
|  | @ -3,11 +3,7 @@ import identity from 'lodash/identity'; | |||
| import { Action, PreloadedState, Reducer, StoreEnhancer } from 'redux'; | ||||
| import { LiftedState } from '@redux-devtools/instrument'; | ||||
| 
 | ||||
| export default function persistState< | ||||
|   S, | ||||
|   A extends Action<unknown>, | ||||
|   MonitorState, | ||||
| >( | ||||
| export default function persistState<S, A extends Action<string>, MonitorState>( | ||||
|   sessionId?: string | null, | ||||
|   deserializeState: (state: S) => S = identity, | ||||
|   deserializeAction: (action: A) => A = identity, | ||||
|  | @ -36,7 +32,7 @@ export default function persistState< | |||
|   } | ||||
| 
 | ||||
|   return (next) => | ||||
|     <S2, A2 extends Action<unknown>>( | ||||
|     <S2, A2 extends Action<string>>( | ||||
|       reducer: Reducer<S2, A2>, | ||||
|       initialState?: PreloadedState<S2>, | ||||
|     ) => { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user