source: node_modules/undici/types/webidl.d.ts

main
Last change on this file was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 5.5 KB
Line 
1// These types are not exported, and are only used internally
2
3/**
4 * Take in an unknown value and return one that is of type T
5 */
6type Converter<T> = (object: unknown) => T
7
8type SequenceConverter<T> = (object: unknown) => T[]
9
10type RecordConverter<K extends string, V> = (object: unknown) => Record<K, V>
11
12interface ConvertToIntOpts {
13 clamp?: boolean
14 enforceRange?: boolean
15}
16
17interface WebidlErrors {
18 exception (opts: { header: string, message: string }): TypeError
19 /**
20 * @description Throw an error when conversion from one type to another has failed
21 */
22 conversionFailed (opts: {
23 prefix: string
24 argument: string
25 types: string[]
26 }): TypeError
27 /**
28 * @description Throw an error when an invalid argument is provided
29 */
30 invalidArgument (opts: {
31 prefix: string
32 value: string
33 type: string
34 }): TypeError
35}
36
37interface WebidlUtil {
38 /**
39 * @see https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values
40 */
41 Type (object: unknown):
42 | 'Undefined'
43 | 'Boolean'
44 | 'String'
45 | 'Symbol'
46 | 'Number'
47 | 'BigInt'
48 | 'Null'
49 | 'Object'
50
51 /**
52 * @see https://webidl.spec.whatwg.org/#abstract-opdef-converttoint
53 */
54 ConvertToInt (
55 V: unknown,
56 bitLength: number,
57 signedness: 'signed' | 'unsigned',
58 opts?: ConvertToIntOpts
59 ): number
60
61 /**
62 * @see https://webidl.spec.whatwg.org/#abstract-opdef-converttoint
63 */
64 IntegerPart (N: number): number
65}
66
67interface WebidlConverters {
68 /**
69 * @see https://webidl.spec.whatwg.org/#es-DOMString
70 */
71 DOMString (V: unknown, opts?: {
72 legacyNullToEmptyString: boolean
73 }): string
74
75 /**
76 * @see https://webidl.spec.whatwg.org/#es-ByteString
77 */
78 ByteString (V: unknown): string
79
80 /**
81 * @see https://webidl.spec.whatwg.org/#es-USVString
82 */
83 USVString (V: unknown): string
84
85 /**
86 * @see https://webidl.spec.whatwg.org/#es-boolean
87 */
88 boolean (V: unknown): boolean
89
90 /**
91 * @see https://webidl.spec.whatwg.org/#es-any
92 */
93 any <Value>(V: Value): Value
94
95 /**
96 * @see https://webidl.spec.whatwg.org/#es-long-long
97 */
98 ['long long'] (V: unknown): number
99
100 /**
101 * @see https://webidl.spec.whatwg.org/#es-unsigned-long-long
102 */
103 ['unsigned long long'] (V: unknown): number
104
105 /**
106 * @see https://webidl.spec.whatwg.org/#es-unsigned-long
107 */
108 ['unsigned long'] (V: unknown): number
109
110 /**
111 * @see https://webidl.spec.whatwg.org/#es-unsigned-short
112 */
113 ['unsigned short'] (V: unknown, opts?: ConvertToIntOpts): number
114
115 /**
116 * @see https://webidl.spec.whatwg.org/#idl-ArrayBuffer
117 */
118 ArrayBuffer (V: unknown): ArrayBufferLike
119 ArrayBuffer (V: unknown, opts: { allowShared: false }): ArrayBuffer
120
121 /**
122 * @see https://webidl.spec.whatwg.org/#es-buffer-source-types
123 */
124 TypedArray (
125 V: unknown,
126 TypedArray: NodeJS.TypedArray | ArrayBufferLike
127 ): NodeJS.TypedArray | ArrayBufferLike
128 TypedArray (
129 V: unknown,
130 TypedArray: NodeJS.TypedArray | ArrayBufferLike,
131 opts?: { allowShared: false }
132 ): NodeJS.TypedArray | ArrayBuffer
133
134 /**
135 * @see https://webidl.spec.whatwg.org/#es-buffer-source-types
136 */
137 DataView (V: unknown, opts?: { allowShared: boolean }): DataView
138
139 /**
140 * @see https://webidl.spec.whatwg.org/#BufferSource
141 */
142 BufferSource (
143 V: unknown,
144 opts?: { allowShared: boolean }
145 ): NodeJS.TypedArray | ArrayBufferLike | DataView
146
147 ['sequence<ByteString>']: SequenceConverter<string>
148
149 ['sequence<sequence<ByteString>>']: SequenceConverter<string[]>
150
151 ['record<ByteString, ByteString>']: RecordConverter<string, string>
152
153 [Key: string]: (...args: any[]) => unknown
154}
155
156export interface Webidl {
157 errors: WebidlErrors
158 util: WebidlUtil
159 converters: WebidlConverters
160
161 /**
162 * @description Performs a brand-check on {@param V} to ensure it is a
163 * {@param cls} object.
164 */
165 brandCheck <Interface>(V: unknown, cls: Interface, opts?: { strict?: boolean }): asserts V is Interface
166
167 /**
168 * @see https://webidl.spec.whatwg.org/#es-sequence
169 * @description Convert a value, V, to a WebIDL sequence type.
170 */
171 sequenceConverter <Type>(C: Converter<Type>): SequenceConverter<Type>
172
173 illegalConstructor (): never
174
175 /**
176 * @see https://webidl.spec.whatwg.org/#es-to-record
177 * @description Convert a value, V, to a WebIDL record type.
178 */
179 recordConverter <K extends string, V>(
180 keyConverter: Converter<K>,
181 valueConverter: Converter<V>
182 ): RecordConverter<K, V>
183
184 /**
185 * Similar to {@link Webidl.brandCheck} but allows skipping the check if third party
186 * interfaces are allowed.
187 */
188 interfaceConverter <Interface>(cls: Interface): (
189 V: unknown,
190 opts?: { strict: boolean }
191 ) => asserts V is typeof cls
192
193 // TODO(@KhafraDev): a type could likely be implemented that can infer the return type
194 // from the converters given?
195 /**
196 * Converts a value, V, to a WebIDL dictionary types. Allows limiting which keys are
197 * allowed, values allowed, optional and required keys. Auto converts the value to
198 * a type given a converter.
199 */
200 dictionaryConverter (converters: {
201 key: string,
202 defaultValue?: unknown,
203 required?: boolean,
204 converter: (...args: unknown[]) => unknown,
205 allowedValues?: unknown[]
206 }[]): (V: unknown) => Record<string, unknown>
207
208 /**
209 * @see https://webidl.spec.whatwg.org/#idl-nullable-type
210 * @description allows a type, V, to be null
211 */
212 nullableConverter <T>(
213 converter: Converter<T>
214 ): (V: unknown) => ReturnType<typeof converter> | null
215
216 argumentLengthCheck (args: { length: number }, min: number, context: {
217 header: string
218 message?: string
219 }): void
220}
Note: See TracBrowser for help on using the repository browser.