UNPKG

4.64 kBTypeScriptView Raw
1// Type definitions for webidl-conversions 6.1
2// Project: https://github.com/jsdom/webidl-conversions#readme
3// Definitions by: ExE Boss <https://github.com/ExE-Boss>
4// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
5// TypeScript Version: 3.0
6
7type Parameters<T extends (...args: any[]) => any> = T extends (...args: infer P) => any ? P : never;
8
9declare namespace WebIDLConversions {
10 interface Globals {
11 [key: string]: any;
12
13 Number: (value?: any) => number;
14 String: (value?: any) => string;
15 TypeError: new (message?: string) => TypeError;
16 }
17
18 interface Options {
19 context?: string | undefined;
20 globals?: Globals | undefined;
21 }
22
23 interface IntegerOptions extends Options {
24 enforceRange?: boolean | undefined;
25 clamp?: boolean | undefined;
26 }
27
28 interface StringOptions extends Options {
29 treatNullAsEmptyString?: boolean | undefined;
30 }
31
32 interface BufferSourceOptions extends Options {
33 allowShared?: boolean | undefined;
34 }
35
36 type IntegerConversion = (V: any, opts?: IntegerOptions) => number;
37 type StringConversion = (V: any, opts?: StringOptions) => string;
38 type NumberConversion = (V: any, opts?: Options) => number;
39}
40
41declare const WebIDLConversions: {
42 any<V>(V: V, opts?: WebIDLConversions.Options): V;
43 void(V?: any, opts?: WebIDLConversions.Options): void;
44 boolean(V: any, opts?: WebIDLConversions.Options): boolean;
45
46 byte(V: any, opts?: WebIDLConversions.IntegerOptions): number;
47 octet(V: any, opts?: WebIDLConversions.IntegerOptions): number;
48
49 short(V: any, opts?: WebIDLConversions.IntegerOptions): number;
50 ['unsigned short'](V: any, opts?: WebIDLConversions.IntegerOptions): number;
51
52 long(V: any, opts?: WebIDLConversions.IntegerOptions): number;
53 ['unsigned long'](V: any, opts?: WebIDLConversions.IntegerOptions): number;
54
55 ['long long'](V: any, opts?: WebIDLConversions.IntegerOptions): number;
56 ['unsigned long long'](V: any, opts?: WebIDLConversions.IntegerOptions): number;
57
58 double(V: any, opts?: WebIDLConversions.Options): number;
59 ['unrestricted double'](V: any, opts?: WebIDLConversions.Options): number;
60
61 float(V: any, opts?: WebIDLConversions.Options): number;
62 ['unrestricted float'](V: any, opts?: WebIDLConversions.Options): number;
63
64 DOMString(V: any, opts?: WebIDLConversions.StringOptions): string;
65 ByteString(V: any, opts?: WebIDLConversions.StringOptions): string;
66 USVString(V: any, opts?: WebIDLConversions.StringOptions): string;
67
68 object<V>(V: V, opts?: WebIDLConversions.Options): V extends object ? V : V & object;
69 ArrayBuffer(V: any, opts?: WebIDLConversions.BufferSourceOptions & { allowShared?: false | undefined }): ArrayBuffer;
70 ArrayBuffer(V: any, opts?: WebIDLConversions.BufferSourceOptions): ArrayBufferLike;
71 DataView(V: any, opts?: WebIDLConversions.BufferSourceOptions): DataView;
72
73 Int8Array(V: any, opts?: WebIDLConversions.BufferSourceOptions): Int8Array;
74 Int16Array(V: any, opts?: WebIDLConversions.BufferSourceOptions): Int16Array;
75 Int32Array(V: any, opts?: WebIDLConversions.BufferSourceOptions): Int32Array;
76
77 Uint8Array(V: any, opts?: WebIDLConversions.BufferSourceOptions): Uint8Array;
78 Uint16Array(V: any, opts?: WebIDLConversions.BufferSourceOptions): Uint16Array;
79 Uint32Array(V: any, opts?: WebIDLConversions.BufferSourceOptions): Uint32Array;
80 Uint8ClampedArray(V: any, opts?: WebIDLConversions.BufferSourceOptions): Uint8ClampedArray;
81
82 Float32Array(V: any, opts?: WebIDLConversions.BufferSourceOptions): Float32Array;
83 Float64Array(V: any, opts?: WebIDLConversions.BufferSourceOptions): Float64Array;
84
85 ArrayBufferView(V: any, opts?: WebIDLConversions.BufferSourceOptions): ArrayBufferView;
86 BufferSource(V: any, opts?: WebIDLConversions.BufferSourceOptions & { allowShared?: false | undefined }): ArrayBuffer | ArrayBufferView;
87 BufferSource(V: any, opts?: WebIDLConversions.BufferSourceOptions): ArrayBufferLike | ArrayBufferView;
88
89 DOMTimeStamp(V: any, opts?: WebIDLConversions.Options): number;
90
91 // tslint:disable:ban-types
92 /** @deprecated Will be removed in v7.0 */
93 Function<V>(V: V, opts?: WebIDLConversions.Options): V extends (...args: any[]) => any ? V : Function;
94
95 /** @deprecated Will be removed in v7.0 */
96 VoidFunction<V>(
97 V: V,
98 opts?: WebIDLConversions.Options,
99 ): V extends (...args: any[]) => any ? (...args: Parameters<V>) => void : Function;
100};
101
102// This can't use ES6 style exports, as those can't have spaces in export names.
103export = WebIDLConversions;