diff --git a/src/index.js b/src/index.js index ac00274..6983927 100644 --- a/src/index.js +++ b/src/index.js @@ -64,9 +64,9 @@ type Kicker = { html: () => Promise } -export type CallbackFormat = (form: HTMLFormElement, kicker: Kicker, req: SimpleRequest) => void | Promise +export type RemoteFormHandler = (form: HTMLFormElement, kicker: Kicker, req: SimpleRequest) => void | Promise -let selectorSet: ?SelectorSet +let selectorSet: ?SelectorSet const afterHandlers = [] const beforeHandlers = [] @@ -79,7 +79,7 @@ export function beforeRemote(fn: (form: HTMLFormElement) => mixed) { beforeHandlers.push(fn) } -export function remoteForm(selector: string, fn: CallbackFormat) { +export function remoteForm(selector: string, fn: RemoteFormHandler) { if (!selectorSet) { selectorSet = new SelectorSet() document.addEventListener('submit', handleSubmit) @@ -87,7 +87,7 @@ export function remoteForm(selector: string, fn: CallbackFormat) { selectorSet.add(selector, fn) } -export function remoteUninstall(selector: string, fn: CallbackFormat) { +export function remoteUninstall(selector: string, fn: RemoteFormHandler) { if (selectorSet) { selectorSet.remove(selector, fn) } diff --git a/src/index.js.flow b/src/index.js.flow new file mode 100644 index 0000000..b939048 --- /dev/null +++ b/src/index.js.flow @@ -0,0 +1,25 @@ +/* flow strict */ + +declare module '@github/remote-form' { + declare type Kicker = { + text: () => Promise, + json: () => Promise, + html: () => Promise + } + + declare export type SimpleResponse = { + url: string, + status: number, + statusText: ?string, + headers: Headers, + text: string, + json: {[string]: any}, + html: DocumentFragment + } + declare export type RemoteFormHandler = (form: HTMLFormElement, kicker: Kicker, req: SimpleRequest) => void | Promise; + + declare export function afterRemote(fn: (form: HTMLFormElement) => mixed): void; + declare export function beforeRemote(fn: (form: HTMLFormElement) => mixed): void; + declare export function remoteForm(selector: string, fn: RemoteFormHandler): void; + declare export function remoteUninstall(selector: string, fn: RemoteFormHandler): void; +}