dawn/node: Roll to latest IDL

Bug: dawn:1123
Change-Id: I430d6b980dc34e37578fc26d3e0e126e75e11d97
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/88667
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Auto-Submit: Ben Clayton <bclayton@google.com>
diff --git a/DEPS b/DEPS
index 4fa7e3a..698d910 100644
--- a/DEPS
+++ b/DEPS
@@ -167,7 +167,7 @@
     'condition': 'dawn_node',
   },
   'third_party/gpuweb': {
-    'url': '{github_git}/gpuweb/gpuweb.git@881403b5fda2d9ac9ffc5daa24e34738205bf155',
+    'url': '{github_git}/gpuweb/gpuweb.git@16df823c91c9045b7cdf9bd0f2c0ef6d43ac95e7',
     'condition': 'dawn_node',
   },
   'third_party/gpuweb-cts': {
diff --git a/src/dawn/node/binding/Converter.cpp b/src/dawn/node/binding/Converter.cpp
index 2d1ae29..65c59a5 100644
--- a/src/dawn/node/binding/Converter.cpp
+++ b/src/dawn/node/binding/Converter.cpp
@@ -1184,6 +1184,20 @@
     return false;
 }
 
+bool Converter::Convert(wgpu::FilterMode& out, const interop::GPUMipmapFilterMode& in) {
+    out = wgpu::FilterMode::Nearest;
+    switch (in) {
+        case interop::GPUMipmapFilterMode::kNearest:
+            out = wgpu::FilterMode::Nearest;
+            return true;
+        case interop::GPUMipmapFilterMode::kLinear:
+            out = wgpu::FilterMode::Linear;
+            return true;
+    }
+    Napi::Error::New(env, "invalid value for GPUFilterMode").ThrowAsJavaScriptException();
+    return false;
+}
+
 bool Converter::Convert(wgpu::ComputePipelineDescriptor& out,
                         const interop::GPUComputePipelineDescriptor& in) {
     return Convert(out.label, in.label) &&    //
diff --git a/src/dawn/node/binding/Converter.h b/src/dawn/node/binding/Converter.h
index 2e46f0d..fb94598 100644
--- a/src/dawn/node/binding/Converter.h
+++ b/src/dawn/node/binding/Converter.h
@@ -235,6 +235,8 @@
 
     [[nodiscard]] bool Convert(wgpu::FilterMode& out, const interop::GPUFilterMode& in);
 
+    [[nodiscard]] bool Convert(wgpu::FilterMode& out, const interop::GPUMipmapFilterMode& in);
+
     [[nodiscard]] bool Convert(wgpu::ComputePipelineDescriptor& out,
                                const interop::GPUComputePipelineDescriptor& in);
 
diff --git a/src/dawn/node/binding/GPUBindGroup.cpp b/src/dawn/node/binding/GPUBindGroup.cpp
index 7b379b6..eef344f 100644
--- a/src/dawn/node/binding/GPUBindGroup.cpp
+++ b/src/dawn/node/binding/GPUBindGroup.cpp
@@ -25,11 +25,11 @@
 ////////////////////////////////////////////////////////////////////////////////
 GPUBindGroup::GPUBindGroup(wgpu::BindGroup group) : group_(std::move(group)) {}
 
-std::variant<std::string, interop::UndefinedType> GPUBindGroup::getLabel(Napi::Env) {
+std::string GPUBindGroup::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUBindGroup::setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) {
+void GPUBindGroup::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUBindGroup.h b/src/dawn/node/binding/GPUBindGroup.h
index a8e4c0f..92d9ed7 100644
--- a/src/dawn/node/binding/GPUBindGroup.h
+++ b/src/dawn/node/binding/GPUBindGroup.h
@@ -33,8 +33,8 @@
     inline operator const wgpu::BindGroup&() const { return group_; }
 
     // interop::GPUBindGroup interface compliance
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::BindGroup group_;
diff --git a/src/dawn/node/binding/GPUBindGroupLayout.cpp b/src/dawn/node/binding/GPUBindGroupLayout.cpp
index 84c519a..9538737 100644
--- a/src/dawn/node/binding/GPUBindGroupLayout.cpp
+++ b/src/dawn/node/binding/GPUBindGroupLayout.cpp
@@ -25,12 +25,11 @@
 ////////////////////////////////////////////////////////////////////////////////
 GPUBindGroupLayout::GPUBindGroupLayout(wgpu::BindGroupLayout layout) : layout_(std::move(layout)) {}
 
-std::variant<std::string, interop::UndefinedType> GPUBindGroupLayout::getLabel(Napi::Env) {
+std::string GPUBindGroupLayout::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUBindGroupLayout::setLabel(Napi::Env,
-                                  std::variant<std::string, interop::UndefinedType> value) {
+void GPUBindGroupLayout::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUBindGroupLayout.h b/src/dawn/node/binding/GPUBindGroupLayout.h
index 484b1bd..919acd1 100644
--- a/src/dawn/node/binding/GPUBindGroupLayout.h
+++ b/src/dawn/node/binding/GPUBindGroupLayout.h
@@ -34,8 +34,8 @@
     inline operator const wgpu::BindGroupLayout&() const { return layout_; }
 
     // interop::GPUBindGroupLayout interface compliance
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::BindGroupLayout layout_;
diff --git a/src/dawn/node/binding/GPUBuffer.cpp b/src/dawn/node/binding/GPUBuffer.cpp
index d9054a5..4c2a90e 100644
--- a/src/dawn/node/binding/GPUBuffer.cpp
+++ b/src/dawn/node/binding/GPUBuffer.cpp
@@ -169,11 +169,11 @@
     mapped_.clear();
 }
 
-std::variant<std::string, interop::UndefinedType> GPUBuffer::getLabel(Napi::Env) {
+std::string GPUBuffer::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUBuffer::setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) {
+void GPUBuffer::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUBuffer.h b/src/dawn/node/binding/GPUBuffer.h
index 7f96eeb..f4e1b30 100644
--- a/src/dawn/node/binding/GPUBuffer.h
+++ b/src/dawn/node/binding/GPUBuffer.h
@@ -51,8 +51,8 @@
                                         std::optional<interop::GPUSize64> size) override;
     void unmap(Napi::Env) override;
     void destroy(Napi::Env) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     void DetachMappings();
diff --git a/src/dawn/node/binding/GPUCommandBuffer.cpp b/src/dawn/node/binding/GPUCommandBuffer.cpp
index 7aa58bd..4e7794e 100644
--- a/src/dawn/node/binding/GPUCommandBuffer.cpp
+++ b/src/dawn/node/binding/GPUCommandBuffer.cpp
@@ -26,12 +26,11 @@
 
 GPUCommandBuffer::GPUCommandBuffer(wgpu::CommandBuffer cmd_buf) : cmd_buf_(std::move(cmd_buf)) {}
 
-std::variant<std::string, interop::UndefinedType> GPUCommandBuffer::getLabel(Napi::Env) {
+std::string GPUCommandBuffer::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUCommandBuffer::setLabel(Napi::Env,
-                                std::variant<std::string, interop::UndefinedType> value) {
+void GPUCommandBuffer::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUCommandBuffer.h b/src/dawn/node/binding/GPUCommandBuffer.h
index febb2af..b8ab08e 100644
--- a/src/dawn/node/binding/GPUCommandBuffer.h
+++ b/src/dawn/node/binding/GPUCommandBuffer.h
@@ -34,8 +34,8 @@
     inline operator const wgpu::CommandBuffer&() const { return cmd_buf_; }
 
     // interop::GPUCommandBuffer interface compliance
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::CommandBuffer cmd_buf_;
diff --git a/src/dawn/node/binding/GPUCommandEncoder.cpp b/src/dawn/node/binding/GPUCommandEncoder.cpp
index 6d403bc..99ea8e0 100644
--- a/src/dawn/node/binding/GPUCommandEncoder.cpp
+++ b/src/dawn/node/binding/GPUCommandEncoder.cpp
@@ -205,12 +205,11 @@
     return interop::GPUCommandBuffer::Create<GPUCommandBuffer>(env, enc_.Finish(&desc));
 }
 
-std::variant<std::string, interop::UndefinedType> GPUCommandEncoder::getLabel(Napi::Env) {
+std::string GPUCommandEncoder::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUCommandEncoder::setLabel(Napi::Env,
-                                 std::variant<std::string, interop::UndefinedType> value) {
+void GPUCommandEncoder::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUCommandEncoder.h b/src/dawn/node/binding/GPUCommandEncoder.h
index d33882e..a3878c6 100644
--- a/src/dawn/node/binding/GPUCommandEncoder.h
+++ b/src/dawn/node/binding/GPUCommandEncoder.h
@@ -74,8 +74,8 @@
     interop::Interface<interop::GPUCommandBuffer> finish(
         Napi::Env env,
         interop::GPUCommandBufferDescriptor descriptor) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::CommandEncoder enc_;
diff --git a/src/dawn/node/binding/GPUComputePassEncoder.cpp b/src/dawn/node/binding/GPUComputePassEncoder.cpp
index b8ce0f5..0fc30ae 100644
--- a/src/dawn/node/binding/GPUComputePassEncoder.cpp
+++ b/src/dawn/node/binding/GPUComputePassEncoder.cpp
@@ -35,17 +35,18 @@
     enc_.SetPipeline(*pipeline.As<GPUComputePipeline>());
 }
 
-void GPUComputePassEncoder::dispatch(Napi::Env,
-                                     interop::GPUSize32 workgroupCountX,
-                                     interop::GPUSize32 workgroupCountY,
-                                     interop::GPUSize32 workgroupCountZ) {
-    enc_.Dispatch(workgroupCountX, workgroupCountY, workgroupCountZ);
+void GPUComputePassEncoder::dispatchWorkgroups(Napi::Env,
+                                               interop::GPUSize32 workgroupCountX,
+                                               interop::GPUSize32 workgroupCountY,
+                                               interop::GPUSize32 workgroupCountZ) {
+    enc_.DispatchWorkgroups(workgroupCountX, workgroupCountY, workgroupCountZ);
 }
 
-void GPUComputePassEncoder::dispatchIndirect(Napi::Env,
-                                             interop::Interface<interop::GPUBuffer> indirectBuffer,
-                                             interop::GPUSize64 indirectOffset) {
-    enc_.DispatchIndirect(*indirectBuffer.As<GPUBuffer>(), indirectOffset);
+void GPUComputePassEncoder::dispatchWorkgroupsIndirect(
+    Napi::Env,
+    interop::Interface<interop::GPUBuffer> indirectBuffer,
+    interop::GPUSize64 indirectOffset) {
+    enc_.DispatchWorkgroupsIndirect(*indirectBuffer.As<GPUBuffer>(), indirectOffset);
 }
 
 void GPUComputePassEncoder::end(Napi::Env) {
@@ -112,12 +113,11 @@
     enc_.InsertDebugMarker(markerLabel.c_str());
 }
 
-std::variant<std::string, interop::UndefinedType> GPUComputePassEncoder::getLabel(Napi::Env) {
+std::string GPUComputePassEncoder::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUComputePassEncoder::setLabel(Napi::Env,
-                                     std::variant<std::string, interop::UndefinedType> value) {
+void GPUComputePassEncoder::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUComputePassEncoder.h b/src/dawn/node/binding/GPUComputePassEncoder.h
index ab9a9e5..6f82a46 100644
--- a/src/dawn/node/binding/GPUComputePassEncoder.h
+++ b/src/dawn/node/binding/GPUComputePassEncoder.h
@@ -36,13 +36,13 @@
 
     // interop::GPUComputePassEncoder interface compliance
     void setPipeline(Napi::Env, interop::Interface<interop::GPUComputePipeline> pipeline) override;
-    void dispatch(Napi::Env,
-                  interop::GPUSize32 workgroupCountX,
-                  interop::GPUSize32 workgroupCountY,
-                  interop::GPUSize32 workgroupCountZ) override;
-    void dispatchIndirect(Napi::Env,
-                          interop::Interface<interop::GPUBuffer> indirectBuffer,
-                          interop::GPUSize64 indirectOffset) override;
+    void dispatchWorkgroups(Napi::Env,
+                            interop::GPUSize32 workgroupCountX,
+                            interop::GPUSize32 workgroupCountY,
+                            interop::GPUSize32 workgroupCountZ) override;
+    void dispatchWorkgroupsIndirect(Napi::Env,
+                                    interop::Interface<interop::GPUBuffer> indirectBuffer,
+                                    interop::GPUSize64 indirectOffset) override;
     void end(Napi::Env) override;
     void setBindGroup(Napi::Env,
                       interop::GPUIndex32 index,
@@ -57,8 +57,8 @@
     void pushDebugGroup(Napi::Env, std::string groupLabel) override;
     void popDebugGroup(Napi::Env) override;
     void insertDebugMarker(Napi::Env, std::string markerLabel) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::ComputePassEncoder enc_;
diff --git a/src/dawn/node/binding/GPUComputePipeline.cpp b/src/dawn/node/binding/GPUComputePipeline.cpp
index 8883aba..c2bfedf 100644
--- a/src/dawn/node/binding/GPUComputePipeline.cpp
+++ b/src/dawn/node/binding/GPUComputePipeline.cpp
@@ -35,12 +35,11 @@
         env, pipeline_.GetBindGroupLayout(index));
 }
 
-std::variant<std::string, interop::UndefinedType> GPUComputePipeline::getLabel(Napi::Env) {
+std::string GPUComputePipeline::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUComputePipeline::setLabel(Napi::Env,
-                                  std::variant<std::string, interop::UndefinedType> value) {
+void GPUComputePipeline::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUComputePipeline.h b/src/dawn/node/binding/GPUComputePipeline.h
index 0afb1ac..45af9f7 100644
--- a/src/dawn/node/binding/GPUComputePipeline.h
+++ b/src/dawn/node/binding/GPUComputePipeline.h
@@ -36,8 +36,8 @@
     // interop::GPUComputePipeline interface compliance
     interop::Interface<interop::GPUBindGroupLayout> getBindGroupLayout(Napi::Env,
                                                                        uint32_t index) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::ComputePipeline pipeline_;
diff --git a/src/dawn/node/binding/GPUDevice.cpp b/src/dawn/node/binding/GPUDevice.cpp
index c1aba64..163acd8 100644
--- a/src/dawn/node/binding/GPUDevice.cpp
+++ b/src/dawn/node/binding/GPUDevice.cpp
@@ -474,11 +474,11 @@
     return promise;
 }
 
-std::variant<std::string, interop::UndefinedType> GPUDevice::getLabel(Napi::Env) {
+std::string GPUDevice::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUDevice::setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) {
+void GPUDevice::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUDevice.h b/src/dawn/node/binding/GPUDevice.h
index 3e04855..57a4c2c 100644
--- a/src/dawn/node/binding/GPUDevice.h
+++ b/src/dawn/node/binding/GPUDevice.h
@@ -84,8 +84,8 @@
         Napi::Env env) override;
     void pushErrorScope(Napi::Env, interop::GPUErrorFilter filter) override;
     interop::Promise<std::optional<interop::GPUError>> popErrorScope(Napi::Env env) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
     interop::Interface<interop::EventHandler> getOnuncapturederror(Napi::Env) override;
     void setOnuncapturederror(Napi::Env, interop::Interface<interop::EventHandler> value) override;
     void addEventListener(
diff --git a/src/dawn/node/binding/GPUPipelineLayout.cpp b/src/dawn/node/binding/GPUPipelineLayout.cpp
index 4d6027c..e6f1c1a 100644
--- a/src/dawn/node/binding/GPUPipelineLayout.cpp
+++ b/src/dawn/node/binding/GPUPipelineLayout.cpp
@@ -25,12 +25,11 @@
 ////////////////////////////////////////////////////////////////////////////////
 GPUPipelineLayout::GPUPipelineLayout(wgpu::PipelineLayout layout) : layout_(std::move(layout)) {}
 
-std::variant<std::string, interop::UndefinedType> GPUPipelineLayout::getLabel(Napi::Env) {
+std::string GPUPipelineLayout::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUPipelineLayout::setLabel(Napi::Env,
-                                 std::variant<std::string, interop::UndefinedType> value) {
+void GPUPipelineLayout::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUPipelineLayout.h b/src/dawn/node/binding/GPUPipelineLayout.h
index acdd404..f432e7a 100644
--- a/src/dawn/node/binding/GPUPipelineLayout.h
+++ b/src/dawn/node/binding/GPUPipelineLayout.h
@@ -34,8 +34,8 @@
     inline operator const wgpu::PipelineLayout&() const { return layout_; }
 
     // interop::GPUPipelineLayout interface compliance
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::PipelineLayout layout_;
diff --git a/src/dawn/node/binding/GPUQuerySet.cpp b/src/dawn/node/binding/GPUQuerySet.cpp
index 8f1e935..3197d98 100644
--- a/src/dawn/node/binding/GPUQuerySet.cpp
+++ b/src/dawn/node/binding/GPUQuerySet.cpp
@@ -29,11 +29,11 @@
     query_set_.Destroy();
 }
 
-std::variant<std::string, interop::UndefinedType> GPUQuerySet::getLabel(Napi::Env) {
+std::string GPUQuerySet::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUQuerySet::setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) {
+void GPUQuerySet::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUQuerySet.h b/src/dawn/node/binding/GPUQuerySet.h
index 27944d1..7c0e9dd 100644
--- a/src/dawn/node/binding/GPUQuerySet.h
+++ b/src/dawn/node/binding/GPUQuerySet.h
@@ -34,8 +34,8 @@
 
     // interop::GPUQuerySet interface compliance
     void destroy(Napi::Env) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::QuerySet query_set_;
diff --git a/src/dawn/node/binding/GPUQueue.cpp b/src/dawn/node/binding/GPUQueue.cpp
index 7650f72..d2ab912 100644
--- a/src/dawn/node/binding/GPUQueue.cpp
+++ b/src/dawn/node/binding/GPUQueue.cpp
@@ -148,11 +148,11 @@
     UNIMPLEMENTED();
 }
 
-std::variant<std::string, interop::UndefinedType> GPUQueue::getLabel(Napi::Env) {
+std::string GPUQueue::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUQueue::setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) {
+void GPUQueue::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUQueue.h b/src/dawn/node/binding/GPUQueue.h
index cffb491..58e5209 100644
--- a/src/dawn/node/binding/GPUQueue.h
+++ b/src/dawn/node/binding/GPUQueue.h
@@ -51,8 +51,8 @@
                                     interop::GPUImageCopyExternalImage source,
                                     interop::GPUImageCopyTextureTagged destination,
                                     interop::GPUExtent3D copySize) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::Queue queue_;
diff --git a/src/dawn/node/binding/GPURenderBundle.cpp b/src/dawn/node/binding/GPURenderBundle.cpp
index ef3a0da..5c0ff2e 100644
--- a/src/dawn/node/binding/GPURenderBundle.cpp
+++ b/src/dawn/node/binding/GPURenderBundle.cpp
@@ -28,11 +28,11 @@
 ////////////////////////////////////////////////////////////////////////////////
 GPURenderBundle::GPURenderBundle(wgpu::RenderBundle bundle) : bundle_(std::move(bundle)) {}
 
-std::variant<std::string, interop::UndefinedType> GPURenderBundle::getLabel(Napi::Env) {
+std::string GPURenderBundle::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPURenderBundle::setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) {
+void GPURenderBundle::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPURenderBundle.h b/src/dawn/node/binding/GPURenderBundle.h
index bd31f6b..23d0ad2 100644
--- a/src/dawn/node/binding/GPURenderBundle.h
+++ b/src/dawn/node/binding/GPURenderBundle.h
@@ -34,8 +34,8 @@
     inline operator const wgpu::RenderBundle&() const { return bundle_; }
 
     // interop::GPURenderBundle interface compliance
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::RenderBundle bundle_;
diff --git a/src/dawn/node/binding/GPURenderBundleEncoder.cpp b/src/dawn/node/binding/GPURenderBundleEncoder.cpp
index f07db2f..801eaa2 100644
--- a/src/dawn/node/binding/GPURenderBundleEncoder.cpp
+++ b/src/dawn/node/binding/GPURenderBundleEncoder.cpp
@@ -181,12 +181,11 @@
     enc_.DrawIndexedIndirect(b, o);
 }
 
-std::variant<std::string, interop::UndefinedType> GPURenderBundleEncoder::getLabel(Napi::Env) {
+std::string GPURenderBundleEncoder::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPURenderBundleEncoder::setLabel(Napi::Env,
-                                      std::variant<std::string, interop::UndefinedType> value) {
+void GPURenderBundleEncoder::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPURenderBundleEncoder.h b/src/dawn/node/binding/GPURenderBundleEncoder.h
index c65e60a..130a5bd 100644
--- a/src/dawn/node/binding/GPURenderBundleEncoder.h
+++ b/src/dawn/node/binding/GPURenderBundleEncoder.h
@@ -76,8 +76,8 @@
     void drawIndexedIndirect(Napi::Env,
                              interop::Interface<interop::GPUBuffer> indirectBuffer,
                              interop::GPUSize64 indirectOffset) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::RenderBundleEncoder enc_;
diff --git a/src/dawn/node/binding/GPURenderPassEncoder.cpp b/src/dawn/node/binding/GPURenderPassEncoder.cpp
index 46997dc..ec686bc 100644
--- a/src/dawn/node/binding/GPURenderPassEncoder.cpp
+++ b/src/dawn/node/binding/GPURenderPassEncoder.cpp
@@ -241,12 +241,11 @@
     enc_.DrawIndexedIndirect(b, o);
 }
 
-std::variant<std::string, interop::UndefinedType> GPURenderPassEncoder::getLabel(Napi::Env) {
+std::string GPURenderPassEncoder::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPURenderPassEncoder::setLabel(Napi::Env,
-                                    std::variant<std::string, interop::UndefinedType> value) {
+void GPURenderPassEncoder::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPURenderPassEncoder.h b/src/dawn/node/binding/GPURenderPassEncoder.h
index 7fed340..a7cfb8e 100644
--- a/src/dawn/node/binding/GPURenderPassEncoder.h
+++ b/src/dawn/node/binding/GPURenderPassEncoder.h
@@ -95,8 +95,8 @@
     void drawIndexedIndirect(Napi::Env,
                              interop::Interface<interop::GPUBuffer> indirectBuffer,
                              interop::GPUSize64 indirectOffset) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::RenderPassEncoder enc_;
diff --git a/src/dawn/node/binding/GPURenderPipeline.cpp b/src/dawn/node/binding/GPURenderPipeline.cpp
index d45386e..cd236c0 100644
--- a/src/dawn/node/binding/GPURenderPipeline.cpp
+++ b/src/dawn/node/binding/GPURenderPipeline.cpp
@@ -35,12 +35,11 @@
         env, pipeline_.GetBindGroupLayout(index));
 }
 
-std::variant<std::string, interop::UndefinedType> GPURenderPipeline::getLabel(Napi::Env) {
+std::string GPURenderPipeline::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPURenderPipeline::setLabel(Napi::Env,
-                                 std::variant<std::string, interop::UndefinedType> value) {
+void GPURenderPipeline::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPURenderPipeline.h b/src/dawn/node/binding/GPURenderPipeline.h
index b37f435..26f8ad6 100644
--- a/src/dawn/node/binding/GPURenderPipeline.h
+++ b/src/dawn/node/binding/GPURenderPipeline.h
@@ -36,8 +36,8 @@
     // interop::GPURenderPipeline interface compliance
     interop::Interface<interop::GPUBindGroupLayout> getBindGroupLayout(Napi::Env,
                                                                        uint32_t index) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::RenderPipeline pipeline_;
diff --git a/src/dawn/node/binding/GPUSampler.cpp b/src/dawn/node/binding/GPUSampler.cpp
index a2f95b7..77f395d 100644
--- a/src/dawn/node/binding/GPUSampler.cpp
+++ b/src/dawn/node/binding/GPUSampler.cpp
@@ -26,11 +26,11 @@
 ////////////////////////////////////////////////////////////////////////////////
 GPUSampler::GPUSampler(wgpu::Sampler sampler) : sampler_(std::move(sampler)) {}
 
-std::variant<std::string, interop::UndefinedType> GPUSampler::getLabel(Napi::Env) {
+std::string GPUSampler::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUSampler::setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) {
+void GPUSampler::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUSampler.h b/src/dawn/node/binding/GPUSampler.h
index a15897c..578469d 100644
--- a/src/dawn/node/binding/GPUSampler.h
+++ b/src/dawn/node/binding/GPUSampler.h
@@ -32,8 +32,8 @@
     inline operator const wgpu::Sampler&() const { return sampler_; }
 
     // interop::GPUSampler interface compliance
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::Sampler sampler_;
diff --git a/src/dawn/node/binding/GPUShaderModule.cpp b/src/dawn/node/binding/GPUShaderModule.cpp
index 8f44982..610f6c8 100644
--- a/src/dawn/node/binding/GPUShaderModule.cpp
+++ b/src/dawn/node/binding/GPUShaderModule.cpp
@@ -104,11 +104,11 @@
     return promise;
 }
 
-std::variant<std::string, interop::UndefinedType> GPUShaderModule::getLabel(Napi::Env) {
+std::string GPUShaderModule::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUShaderModule::setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) {
+void GPUShaderModule::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUShaderModule.h b/src/dawn/node/binding/GPUShaderModule.h
index de4c258..ccaf65c 100644
--- a/src/dawn/node/binding/GPUShaderModule.h
+++ b/src/dawn/node/binding/GPUShaderModule.h
@@ -38,8 +38,8 @@
     // interop::GPUShaderModule interface compliance
     interop::Promise<interop::Interface<interop::GPUCompilationInfo>> compilationInfo(
         Napi::Env) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::ShaderModule shader_;
diff --git a/src/dawn/node/binding/GPUTexture.cpp b/src/dawn/node/binding/GPUTexture.cpp
index 26f354a..61ca716 100644
--- a/src/dawn/node/binding/GPUTexture.cpp
+++ b/src/dawn/node/binding/GPUTexture.cpp
@@ -54,11 +54,11 @@
     texture_.Destroy();
 }
 
-std::variant<std::string, interop::UndefinedType> GPUTexture::getLabel(Napi::Env) {
+std::string GPUTexture::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUTexture::setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) {
+void GPUTexture::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUTexture.h b/src/dawn/node/binding/GPUTexture.h
index 95d2a1d..edc96d1 100644
--- a/src/dawn/node/binding/GPUTexture.h
+++ b/src/dawn/node/binding/GPUTexture.h
@@ -37,8 +37,8 @@
         Napi::Env,
         interop::GPUTextureViewDescriptor descriptor) override;
     void destroy(Napi::Env) override;
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::Texture texture_;
diff --git a/src/dawn/node/binding/GPUTextureView.cpp b/src/dawn/node/binding/GPUTextureView.cpp
index df7514a..98ce3a0 100644
--- a/src/dawn/node/binding/GPUTextureView.cpp
+++ b/src/dawn/node/binding/GPUTextureView.cpp
@@ -25,11 +25,11 @@
 ////////////////////////////////////////////////////////////////////////////////
 GPUTextureView::GPUTextureView(wgpu::TextureView view) : view_(std::move(view)) {}
 
-std::variant<std::string, interop::UndefinedType> GPUTextureView::getLabel(Napi::Env) {
+std::string GPUTextureView::getLabel(Napi::Env) {
     UNIMPLEMENTED();
 }
 
-void GPUTextureView::setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) {
+void GPUTextureView::setLabel(Napi::Env, std::string value) {
     UNIMPLEMENTED();
 }
 
diff --git a/src/dawn/node/binding/GPUTextureView.h b/src/dawn/node/binding/GPUTextureView.h
index 93917bc..494c307 100644
--- a/src/dawn/node/binding/GPUTextureView.h
+++ b/src/dawn/node/binding/GPUTextureView.h
@@ -34,8 +34,8 @@
     inline operator const wgpu::TextureView&() const { return view_; }
 
     // interop::GPUTextureView interface compliance
-    std::variant<std::string, interop::UndefinedType> getLabel(Napi::Env) override;
-    void setLabel(Napi::Env, std::variant<std::string, interop::UndefinedType> value) override;
+    std::string getLabel(Napi::Env) override;
+    void setLabel(Napi::Env, std::string value) override;
 
   private:
     wgpu::TextureView view_;