From d02d369ae1d117197cd944f3c75fce1ea26abf3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristj=C3=A1n=20Oddsson?= Date: Mon, 29 Jul 2019 13:44:43 +0100 Subject: [PATCH 1/5] add typescript definition file --- index.d.ts | 28 ++++++++++++++++++++++++++++ package.json | 4 +++- 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 index.d.ts diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 0000000..f051374 --- /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, + 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 72d0cfb..76f5133 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", From fa7c3ae4ad4867fafc4cee9581c4a4e10ad75f40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristj=C3=A1n=20Oddsson?= Date: Tue, 30 Jul 2019 16:45:13 +0100 Subject: [PATCH 2/5] use long form of a optional type --- index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.d.ts b/index.d.ts index f051374..013c1a3 100644 --- a/index.d.ts +++ b/index.d.ts @@ -7,7 +7,7 @@ type Kicker = { type SimpleRequest = { method: string, url: string, - body?: FormData, + body: FormData | undefined | null, headers: Headers } From 4f07da1d454eee258fd6052aa2f6783bc0b130c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristj=C3=A1n=20Oddsson?= Date: Mon, 19 Aug 2019 09:06:25 +0100 Subject: [PATCH 3/5] `SimpleRequest.body` cannot be `undefined` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Mu-An 慕安 --- index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.d.ts b/index.d.ts index 013c1a3..61f5cfd 100644 --- a/index.d.ts +++ b/index.d.ts @@ -7,7 +7,7 @@ type Kicker = { type SimpleRequest = { method: string, url: string, - body: FormData | undefined | null, + body: FormData | null, headers: Headers } From 9e361d2ae0364372fb7c82effb5016566799a8ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristj=C3=A1n=20Oddsson?= Date: Mon, 19 Aug 2019 09:10:53 +0100 Subject: [PATCH 4/5] statusText is not nullable --- index.d.ts | 2 +- src/index.js | 2 +- src/index.js.flow | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/index.d.ts b/index.d.ts index 61f5cfd..62f9b88 100644 --- a/index.d.ts +++ b/index.d.ts @@ -14,7 +14,7 @@ type SimpleRequest = { export type SimpleResponse = { url: string, status: number, - statusText?: string, + statusText: string, headers: Headers, text: string, json: {[key: string]: any}, 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..2702ba5 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}, From a28805d8d468bfe2b57def8ff52a98d3cd2f8ee3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristj=C3=A1n=20Oddsson?= Date: Tue, 20 Aug 2019 18:08:41 +0100 Subject: [PATCH 5/5] change callback return types to `void` from `mixed` --- src/index.js.flow | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/index.js.flow b/src/index.js.flow index 2702ba5..c8a8f24 100644 --- a/src/index.js.flow +++ b/src/index.js.flow @@ -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;