From dabc359066629c99cae4d9aed21ad1955301ab4a Mon Sep 17 00:00:00 2001 From: VincentBel Date: Fri, 14 Apr 2017 16:53:26 +0800 Subject: [PATCH 1/2] add FormData typing to webworker --- baselines/webworker.generated.d.ts | 9 +++++++++ inputfiles/knownWorkerInterfaces.json | 1 + inputfiles/overridingTypes.json | 1 + 3 files changed, 11 insertions(+) diff --git a/baselines/webworker.generated.d.ts b/baselines/webworker.generated.d.ts index 250cc855d..28397943d 100644 --- a/baselines/webworker.generated.d.ts +++ b/baselines/webworker.generated.d.ts @@ -450,6 +450,15 @@ declare var FileReader: { new(): FileReader; }; +interface FormData { + append(name: string, value: string | Blob, fileName?: string): void; +} + +declare var FormData: { + prototype: FormData; + new (form?: HTMLFormElement): FormData; +} + interface Headers { append(name: string, value: string): void; delete(name: string): void; diff --git a/inputfiles/knownWorkerInterfaces.json b/inputfiles/knownWorkerInterfaces.json index 7e35f48e6..853c0e862 100644 --- a/inputfiles/knownWorkerInterfaces.json +++ b/inputfiles/knownWorkerInterfaces.json @@ -33,6 +33,7 @@ "FileList", "FileReader", "ForEachCallback", + "FormData", "FunctionStringCallback", "GetNotificationOptions", "GlobalFetch", diff --git a/inputfiles/overridingTypes.json b/inputfiles/overridingTypes.json index 8cc1e1ae1..8f1c4d107 100644 --- a/inputfiles/overridingTypes.json +++ b/inputfiles/overridingTypes.json @@ -359,6 +359,7 @@ { "kind": "constructor", "interface": "FormData", + "flavor": "Web", "signatures": ["new (form?: HTMLFormElement): FormData"] }, { From 472ffaf07619e6d98278a22c7d9843dd2b6da8e9 Mon Sep 17 00:00:00 2001 From: VincentBel Date: Sat, 13 May 2017 13:16:59 +0800 Subject: [PATCH 2/2] should also take flavor to `EmitConstructorSignature` --- TS.fsx | 20 ++++++++++---------- baselines/webworker.generated.d.ts | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/TS.fsx b/TS.fsx index 0f9c66fe5..06d71e395 100644 --- a/TS.fsx +++ b/TS.fsx @@ -699,7 +699,7 @@ module Emit = let extendedTypes = ["ArrayBuffer";"ArrayBufferView";"Int8Array";"Uint8Array";"Int16Array";"Uint16Array";"Int32Array";"Uint32Array";"Float32Array";"Float64Array"] - let integerTypes = + let integerTypes = ["byte";"octet";"short";"unsigned short";"long";"unsigned long";"long long";"unsigned long long"] /// Get typescript type using object dom type, object name, and it's associated interface name @@ -731,7 +731,7 @@ module Emit = // Name of an interface / enum / dict. Just return itself if allInterfacesMap.ContainsKey objDomType || allCallbackFuncs.ContainsKey objDomType || - allDictionariesMap.ContainsKey objDomType || + allDictionariesMap.ContainsKey objDomType || allEnumsMap.ContainsKey objDomType then objDomType // Name of a type alias. Just return itself @@ -1086,13 +1086,13 @@ module Emit = "%saddEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;" fPrefix - let EmitConstructorSignature (i:Browser.Interface) = + let EmitConstructorSignature flavor (i:Browser.Interface) = let emitConstructorSigFromJson (c: InputJsonType.Root) = c.Signatures |> Array.iter (Pt.Printl "%s;") - let removedCtor = getRemovedItems ItemKind.Constructor Flavor.All |> Array.tryFind (matchInterface i.Name) + let removedCtor = getRemovedItems ItemKind.Constructor flavor |> Array.tryFind (matchInterface i.Name) if Option.isNone removedCtor then - let overriddenCtor = getOverriddenItems ItemKind.Constructor Flavor.All |> Array.tryFind (matchInterface i.Name) + let overriddenCtor = getOverriddenItems ItemKind.Constructor flavor |> Array.tryFind (matchInterface i.Name) match overriddenCtor with | Some c' -> emitConstructorSigFromJson c' | _ -> @@ -1104,7 +1104,7 @@ module Emit = Pt.Printl "new(%s): %s;" paramsString i.Name | _ -> Pt.Printl "new(): %s;" i.Name - getAddedItems ItemKind.Constructor Flavor.All + getAddedItems ItemKind.Constructor flavor |> Array.filter (matchInterface i.Name) |> Array.iter emitConstructorSigFromJson @@ -1113,7 +1113,7 @@ module Emit = Pt.IncreaseIndent() Pt.Printl "prototype: %s;" i.Name - EmitConstructorSignature i + EmitConstructorSignature flavor i EmitConstants i let prefix = "" EmitMembers flavor prefix EmitScope.StaticOnly i @@ -1507,11 +1507,11 @@ module Emit = List.contains p.Type integerTypes // check anonymous unsigned long getter and length property - let isIterableGetter (m: Browser.Method) = + let isIterableGetter (m: Browser.Method) = m.Getter = Some 1 && m.Params.Length = 1 && isIntegerKeyParam m.Params.[0] let findIterableGetter() = - let anonymousGetter = + let anonymousGetter = if (i.AnonymousMethods.IsSome) then Array.tryFind isIterableGetter i.AnonymousMethods.Value.Methods else None @@ -1541,7 +1541,7 @@ module Emit = Pt.Printl "" browser.Interfaces |> Array.iter EmitIterator - + fprintf target "%s" (Pt.GetResult()) target.Flush() target.Close() diff --git a/baselines/webworker.generated.d.ts b/baselines/webworker.generated.d.ts index 28397943d..621ad4111 100644 --- a/baselines/webworker.generated.d.ts +++ b/baselines/webworker.generated.d.ts @@ -456,8 +456,8 @@ interface FormData { declare var FormData: { prototype: FormData; - new (form?: HTMLFormElement): FormData; -} + new(): FormData; +}; interface Headers { append(name: string, value: string): void;