diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 0000000..62f9b88 --- /dev/null +++ b/index.d.ts @@ -0,0 +1,28 @@ +type Kicker = { + text: () => Promise, + json: () => Promise, + html: () => Promise +} + +type SimpleRequest = { + method: string, + url: string, + body: FormData | null, + headers: Headers +} + +export type SimpleResponse = { + url: string, + status: number, + statusText: string, + headers: Headers, + text: string, + json: {[key: string]: any}, + html: DocumentFragment +} + +export type RemoteFormHandler = (form: HTMLFormElement, kicker: Kicker, req: SimpleRequest) => void | Promise; +export function afterRemote(fn: (form: HTMLFormElement) => void): void; +export function beforeRemote(fn: (form: HTMLFormElement) => void): void; +export function remoteForm(selector: string, fn: RemoteFormHandler): void; +export function remoteUninstall(selector: string, fn: RemoteFormHandler): void; diff --git a/package.json b/package.json index 28b40c4..3cf7ef9 100755 --- a/package.json +++ b/package.json @@ -4,10 +4,12 @@ "description": "Decorator that will submit a form over AJAX", "repository": "github/remote-form", "files": [ - "dist" + "dist", + "index.d.ts" ], "main": "dist/index.umd.js", "module": "dist/index.esm.js", + "types:": "index.d.ts", "scripts": { "clean": "rm -rf dist", "lint": "github-lint", diff --git a/src/index.js b/src/index.js index 6983927..001e327 100644 --- a/src/index.js +++ b/src/index.js @@ -50,7 +50,7 @@ type SimpleRequest = { export type SimpleResponse = { url: string, status: number, - statusText: ?string, + statusText: string, headers: Headers, text: string, // eslint-disable-next-line flowtype/no-weak-types diff --git a/src/index.js.flow b/src/index.js.flow index ef0ac86..c8a8f24 100644 --- a/src/index.js.flow +++ b/src/index.js.flow @@ -16,7 +16,7 @@ type SimpleRequest = { export type SimpleResponse = { url: string, status: number, - statusText: ?string, + statusText: string, headers: Headers, text: string, json: {[string]: any}, @@ -24,7 +24,7 @@ export type SimpleResponse = { } 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 afterRemote(fn: (form: HTMLFormElement) => void): void; +declare export function beforeRemote(fn: (form: HTMLFormElement) => void): void; declare export function remoteForm(selector: string, fn: RemoteFormHandler): void; declare export function remoteUninstall(selector: string, fn: RemoteFormHandler): void;