feat(core): add type-safe ActionOptionsConfig overload to execute()#16
Merged
minseong0324 merged 3 commits intomainfrom Feb 25, 2026
Merged
feat(core): add type-safe ActionOptionsConfig overload to execute()#16minseong0324 merged 3 commits intomainfrom
minseong0324 merged 3 commits intomainfrom
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
client.execute()previously accepted only a stringactionKey, causing thereturned
resultto always be typed asunknown. This PR adds a second overloadthat accepts an
ActionOptionsConfigdirectly, enabling fullTInput/TResultinference without any manual cast at the call site.
Changes
@connectivity-js/coretypes.tsActionRunResultis now generic:ActionRunResult<TResult = unknown>unknown)connectivity-client.tsexecute(config: ActionOptionsConfig<TInput, TResult>, input: TInput)overloadconfig.request(input)directly — no Map lookup,TResultfully inferredregistration (and its flush callbacks) if it is
#onImmediateSuccessand#registerFromConfigto reduceduplication
action-observer.tsActionObserver.execute()continues to use the string overload intentionallyregisterAction()overrides are respected in the immediate-execution pathas TResultcast is safe:setOptions()→#register()keeps theMap in sync with the declared
TResulton every renderType safety
resulttypeclient.execute('save', input)unknown(unchanged)client.execute(saveAction, input)saveAction.requestreturn type ✅Behavior
No behavioral changes to existing string-key calls.
The config overload is additive;
registerAction()overrides are still respectedthrough
ActionObserver.Checklist
pnpm run testlocally and all tests pass.Release impact