diff --git a/baselines/audioworklet.generated.d.ts b/baselines/audioworklet.generated.d.ts index 24bc08131..c1cd4d8bc 100644 --- a/baselines/audioworklet.generated.d.ts +++ b/baselines/audioworklet.generated.d.ts @@ -1193,16 +1193,16 @@ declare namespace WebAssembly { }; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global) */ - interface Global { + interface Global { /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/value) */ - value: any; + value: ValueTypeMap[T]; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/valueOf) */ - valueOf(): any; + valueOf(): ValueTypeMap[T]; } var Global: { prototype: Global; - new(descriptor: GlobalDescriptor, v?: any): Global; + new(descriptor: GlobalDescriptor, v?: ValueTypeMap[T]): Global; }; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance) */ @@ -1279,9 +1279,9 @@ declare namespace WebAssembly { new(descriptor: TableDescriptor, value?: any): Table; }; - interface GlobalDescriptor { + interface GlobalDescriptor { mutable?: boolean; - value: ValueType; + value: T; } interface MemoryDescriptor { @@ -1307,6 +1307,16 @@ declare namespace WebAssembly { maximum?: number; } + interface ValueTypeMap { + anyfunc: Function; + externref: any; + f32: number; + f64: number; + i32: number; + i64: bigint; + v128: never; + } + interface WebAssemblyInstantiatedSource { instance: Instance; module: Module; @@ -1314,12 +1324,12 @@ declare namespace WebAssembly { type ImportExportKind = "function" | "global" | "memory" | "table"; type TableKind = "anyfunc" | "externref"; - type ValueType = "anyfunc" | "externref" | "f32" | "f64" | "i32" | "i64" | "v128"; type ExportValue = Function | Global | Memory | Table; type Exports = Record; type ImportValue = ExportValue | number; type Imports = Record; type ModuleImports = Record; + type ValueType = keyof ValueTypeMap; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compile) */ function compile(bytes: BufferSource): Promise; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/instantiate) */ diff --git a/baselines/dom.generated.d.ts b/baselines/dom.generated.d.ts index 824e0f631..66609fc8e 100644 --- a/baselines/dom.generated.d.ts +++ b/baselines/dom.generated.d.ts @@ -26382,16 +26382,16 @@ declare namespace WebAssembly { }; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global) */ - interface Global { + interface Global { /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/value) */ - value: any; + value: ValueTypeMap[T]; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/valueOf) */ - valueOf(): any; + valueOf(): ValueTypeMap[T]; } var Global: { prototype: Global; - new(descriptor: GlobalDescriptor, v?: any): Global; + new(descriptor: GlobalDescriptor, v?: ValueTypeMap[T]): Global; }; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance) */ @@ -26468,9 +26468,9 @@ declare namespace WebAssembly { new(descriptor: TableDescriptor, value?: any): Table; }; - interface GlobalDescriptor { + interface GlobalDescriptor { mutable?: boolean; - value: ValueType; + value: T; } interface MemoryDescriptor { @@ -26496,6 +26496,16 @@ declare namespace WebAssembly { maximum?: number; } + interface ValueTypeMap { + anyfunc: Function; + externref: any; + f32: number; + f64: number; + i32: number; + i64: bigint; + v128: never; + } + interface WebAssemblyInstantiatedSource { instance: Instance; module: Module; @@ -26503,12 +26513,12 @@ declare namespace WebAssembly { type ImportExportKind = "function" | "global" | "memory" | "table"; type TableKind = "anyfunc" | "externref"; - type ValueType = "anyfunc" | "externref" | "f32" | "f64" | "i32" | "i64" | "v128"; type ExportValue = Function | Global | Memory | Table; type Exports = Record; type ImportValue = ExportValue | number; type Imports = Record; type ModuleImports = Record; + type ValueType = keyof ValueTypeMap; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compile) */ function compile(bytes: BufferSource): Promise; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compileStreaming) */ diff --git a/baselines/serviceworker.generated.d.ts b/baselines/serviceworker.generated.d.ts index cdc93b55e..9904ca798 100644 --- a/baselines/serviceworker.generated.d.ts +++ b/baselines/serviceworker.generated.d.ts @@ -8035,16 +8035,16 @@ declare namespace WebAssembly { }; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global) */ - interface Global { + interface Global { /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/value) */ - value: any; + value: ValueTypeMap[T]; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/valueOf) */ - valueOf(): any; + valueOf(): ValueTypeMap[T]; } var Global: { prototype: Global; - new(descriptor: GlobalDescriptor, v?: any): Global; + new(descriptor: GlobalDescriptor, v?: ValueTypeMap[T]): Global; }; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance) */ @@ -8121,9 +8121,9 @@ declare namespace WebAssembly { new(descriptor: TableDescriptor, value?: any): Table; }; - interface GlobalDescriptor { + interface GlobalDescriptor { mutable?: boolean; - value: ValueType; + value: T; } interface MemoryDescriptor { @@ -8149,6 +8149,16 @@ declare namespace WebAssembly { maximum?: number; } + interface ValueTypeMap { + anyfunc: Function; + externref: any; + f32: number; + f64: number; + i32: number; + i64: bigint; + v128: never; + } + interface WebAssemblyInstantiatedSource { instance: Instance; module: Module; @@ -8156,12 +8166,12 @@ declare namespace WebAssembly { type ImportExportKind = "function" | "global" | "memory" | "table"; type TableKind = "anyfunc" | "externref"; - type ValueType = "anyfunc" | "externref" | "f32" | "f64" | "i32" | "i64" | "v128"; type ExportValue = Function | Global | Memory | Table; type Exports = Record; type ImportValue = ExportValue | number; type Imports = Record; type ModuleImports = Record; + type ValueType = keyof ValueTypeMap; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compile) */ function compile(bytes: BufferSource): Promise; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compileStreaming) */ diff --git a/baselines/sharedworker.generated.d.ts b/baselines/sharedworker.generated.d.ts index d07c15d6b..990fe55fe 100644 --- a/baselines/sharedworker.generated.d.ts +++ b/baselines/sharedworker.generated.d.ts @@ -8055,16 +8055,16 @@ declare namespace WebAssembly { }; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global) */ - interface Global { + interface Global { /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/value) */ - value: any; + value: ValueTypeMap[T]; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/valueOf) */ - valueOf(): any; + valueOf(): ValueTypeMap[T]; } var Global: { prototype: Global; - new(descriptor: GlobalDescriptor, v?: any): Global; + new(descriptor: GlobalDescriptor, v?: ValueTypeMap[T]): Global; }; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance) */ @@ -8141,9 +8141,9 @@ declare namespace WebAssembly { new(descriptor: TableDescriptor, value?: any): Table; }; - interface GlobalDescriptor { + interface GlobalDescriptor { mutable?: boolean; - value: ValueType; + value: T; } interface MemoryDescriptor { @@ -8169,6 +8169,16 @@ declare namespace WebAssembly { maximum?: number; } + interface ValueTypeMap { + anyfunc: Function; + externref: any; + f32: number; + f64: number; + i32: number; + i64: bigint; + v128: never; + } + interface WebAssemblyInstantiatedSource { instance: Instance; module: Module; @@ -8176,12 +8186,12 @@ declare namespace WebAssembly { type ImportExportKind = "function" | "global" | "memory" | "table"; type TableKind = "anyfunc" | "externref"; - type ValueType = "anyfunc" | "externref" | "f32" | "f64" | "i32" | "i64" | "v128"; type ExportValue = Function | Global | Memory | Table; type Exports = Record; type ImportValue = ExportValue | number; type Imports = Record; type ModuleImports = Record; + type ValueType = keyof ValueTypeMap; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compile) */ function compile(bytes: BufferSource): Promise; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compileStreaming) */ diff --git a/baselines/webworker.generated.d.ts b/baselines/webworker.generated.d.ts index 2ad56cdeb..866c24f16 100644 --- a/baselines/webworker.generated.d.ts +++ b/baselines/webworker.generated.d.ts @@ -8701,16 +8701,16 @@ declare namespace WebAssembly { }; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global) */ - interface Global { + interface Global { /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/value) */ - value: any; + value: ValueTypeMap[T]; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Global/valueOf) */ - valueOf(): any; + valueOf(): ValueTypeMap[T]; } var Global: { prototype: Global; - new(descriptor: GlobalDescriptor, v?: any): Global; + new(descriptor: GlobalDescriptor, v?: ValueTypeMap[T]): Global; }; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance) */ @@ -8787,9 +8787,9 @@ declare namespace WebAssembly { new(descriptor: TableDescriptor, value?: any): Table; }; - interface GlobalDescriptor { + interface GlobalDescriptor { mutable?: boolean; - value: ValueType; + value: T; } interface MemoryDescriptor { @@ -8815,6 +8815,16 @@ declare namespace WebAssembly { maximum?: number; } + interface ValueTypeMap { + anyfunc: Function; + externref: any; + f32: number; + f64: number; + i32: number; + i64: bigint; + v128: never; + } + interface WebAssemblyInstantiatedSource { instance: Instance; module: Module; @@ -8822,12 +8832,12 @@ declare namespace WebAssembly { type ImportExportKind = "function" | "global" | "memory" | "table"; type TableKind = "anyfunc" | "externref"; - type ValueType = "anyfunc" | "externref" | "f32" | "f64" | "i32" | "i64" | "v128"; type ExportValue = Function | Global | Memory | Table; type Exports = Record; type ImportValue = ExportValue | number; type Imports = Record; type ModuleImports = Record; + type ValueType = keyof ValueTypeMap; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compile) */ function compile(bytes: BufferSource): Promise; /** [MDN Reference](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compileStreaming) */ diff --git a/inputfiles/addedTypes.jsonc b/inputfiles/addedTypes.jsonc index 6f0a502c8..cb11cbb67 100644 --- a/inputfiles/addedTypes.jsonc +++ b/inputfiles/addedTypes.jsonc @@ -1269,6 +1269,50 @@ } } } + }, + "ValueTypeMap": { + "name": "ValueTypeMap", + "legacyNamespace": "WebAssembly", + "exposed":"Window Worker Worklet", + "members": { + "member": { + "anyfunc": { + "name": "anyfunc", + "overrideType": "Function", + "required": 1 + }, + "externref": { + "name": "externref", + "overrideType": "any", + "required": 1 + }, + "f32": { + "name": "f32", + "overrideType": "number", + "required": 1 + }, + "f64": { + "name": "f64", + "overrideType": "number", + "required": 1 + }, + "i32": { + "name": "i32", + "overrideType": "number", + "required": 1 + }, + "i64": { + "name": "i64", + "overrideType": "bigint", + "required": 1 + }, + "v128": { + "name": "v128", + "overrideType": "never", + "required": 1 + } + } + } } } }, @@ -1305,6 +1349,11 @@ "name": "WindowProxy", "type": "Window" }, + { + "name": "ValueType", + "legacyNamespace": "WebAssembly", + "overrideType": "keyof ValueTypeMap" + }, { "name": "ExportValue", "legacyNamespace": "WebAssembly", diff --git a/inputfiles/knownTypes.json b/inputfiles/knownTypes.json index c85fadef5..aba727e73 100644 --- a/inputfiles/knownTypes.json +++ b/inputfiles/knownTypes.json @@ -50,6 +50,7 @@ "RTCStatsType", "RTCTransportStats", "Transferable", + "ValueTypeMap", "VideoFacingModeEnum" ], "Worker": [ @@ -80,10 +81,12 @@ "RsaKeyGenParams", "RsaOaepParams", "RsaPssParams", - "Transferable" + "Transferable", + "ValueTypeMap" ], "Worklet": [ "EventListenerOrEventListenerObject", - "Transferable" + "Transferable", + "ValueTypeMap" ] } diff --git a/inputfiles/overridingTypes.jsonc b/inputfiles/overridingTypes.jsonc index d04541b4a..fe8317e68 100644 --- a/inputfiles/overridingTypes.jsonc +++ b/inputfiles/overridingTypes.jsonc @@ -453,9 +453,6 @@ "TableKind": { "legacyNamespace": "WebAssembly" }, - "ValueType": { - "legacyNamespace": "WebAssembly" - }, "ImageOrientation": { "value": [ // The spec removed this but it's still in browsers and WebKit doesn't support the new one. @@ -3092,6 +3089,37 @@ } } }, + "Global": { + "name": "Global", + "typeParameters": [ + { + "name": "T", + "extends": "ValueType", + "default": "ValueType" + } + ], + "constructor": { + "overrideSignatures": [ + "new(descriptor: GlobalDescriptor, v?: ValueTypeMap[T]): Global" + ] + }, + "properties": { + "property": { + "value": { + "overrideType": "ValueTypeMap[T]" + } + } + }, + "methods": { + "method": { + "valueOf": { + "overrideSignatures": [ + "valueOf(): ValueTypeMap[T]" + ] + } + } + } + }, // https://github.com/w3c/media-source/pull/282, but not supported anywhere yet "MediaSource": { @@ -3437,7 +3465,21 @@ "legacyNamespace": "WebAssembly" }, "GlobalDescriptor": { - "legacyNamespace": "WebAssembly" + "legacyNamespace": "WebAssembly", + "typeParameters": [ + { + "name": "T", + "extends": "ValueType", + "default": "ValueType" + } + ], + "members": { + "member": { + "value": { + "overrideType": "T" + } + } + } }, "WebAssemblyInstantiatedSource": { "legacyNamespace": "WebAssembly" diff --git a/inputfiles/removedTypes.jsonc b/inputfiles/removedTypes.jsonc index 0d1d5ee16..f4e7170b0 100644 --- a/inputfiles/removedTypes.jsonc +++ b/inputfiles/removedTypes.jsonc @@ -39,6 +39,7 @@ "transceiver" // Blink only as of 2022-09 ] }, + "ValueType": null, "VideoColorPrimaries": { "value": [ "bt2020", // Blink only as of 2022-10