From 5b265ba6fdc4091cf2b89d4ee857a81ee6bf99f9 Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Wed, 24 Apr 2024 16:51:06 -0400 Subject: [PATCH 1/2] feat: Add support for updatedTypes in metadata updates --- src/Components/Web.JS/src/Boot.WebAssembly.Common.ts | 4 ++-- src/Components/Web.JS/src/GlobalExports.ts | 2 +- .../WebAssembly/src/HotReload/WebAssemblyHotReload.cs | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Components/Web.JS/src/Boot.WebAssembly.Common.ts b/src/Components/Web.JS/src/Boot.WebAssembly.Common.ts index 7efd32e495f4..d436eee4f005 100644 --- a/src/Components/Web.JS/src/Boot.WebAssembly.Common.ts +++ b/src/Components/Web.JS/src/Boot.WebAssembly.Common.ts @@ -97,8 +97,8 @@ async function startCore(components: RootComponentManager { - dispatcher.invokeDotNetStaticMethod('Microsoft.AspNetCore.Components.WebAssembly', 'ApplyHotReloadDelta', id, metadataDelta, ilDelta, pdbDelta); + Blazor._internal.applyHotReload = (id: string, metadataDelta: string, ilDelta: string, pdbDelta: string | undefined, updatedTypes: number[]) => { + dispatcher.invokeDotNetStaticMethod('Microsoft.AspNetCore.Components.WebAssembly', 'ApplyHotReloadDelta', id, metadataDelta, ilDelta, pdbDelta, updatedTypes); }; Blazor._internal.getApplyUpdateCapabilities = () => dispatcher.invokeDotNetStaticMethod('Microsoft.AspNetCore.Components.WebAssembly', 'GetApplyUpdateCapabilities'); diff --git a/src/Components/Web.JS/src/GlobalExports.ts b/src/Components/Web.JS/src/GlobalExports.ts index 6bc48be0bb40..7239fca7cc79 100644 --- a/src/Components/Web.JS/src/GlobalExports.ts +++ b/src/Components/Web.JS/src/GlobalExports.ts @@ -89,7 +89,7 @@ export interface IBlazor { } // APIs invoked by hot reload - applyHotReload?: (id: string, metadataDelta: string, ilDelta: string, pdbDelta: string | undefined) => void; + applyHotReload?: (id: string, metadataDelta: string, ilDelta: string, pdbDelta: string | undefined, updatedTypes: number[]) => void; getApplyUpdateCapabilities?: () => string; hotReloadApplied?: () => void; } diff --git a/src/Components/WebAssembly/WebAssembly/src/HotReload/WebAssemblyHotReload.cs b/src/Components/WebAssembly/WebAssembly/src/HotReload/WebAssemblyHotReload.cs index 29cee6e31681..2a1d64c3be98 100644 --- a/src/Components/WebAssembly/WebAssembly/src/HotReload/WebAssemblyHotReload.cs +++ b/src/Components/WebAssembly/WebAssembly/src/HotReload/WebAssemblyHotReload.cs @@ -43,7 +43,7 @@ internal static async Task InitializeAsync() /// For framework use only. /// [JSInvokable(nameof(ApplyHotReloadDelta))] - public static void ApplyHotReloadDelta(string moduleIdString, byte[] metadataDelta, byte[] ilDelta, byte[] pdbBytes) + public static void ApplyHotReloadDelta(string moduleIdString, byte[] metadataDelta, byte[] ilDelta, byte[] pdbBytes, int[] updatedTypes) { // Analyzer has a bug where it doesn't handle ConditionalAttribute: https://github.com/dotnet/roslyn/issues/63464 #pragma warning disable IDE0200 // Remove unnecessary lambda expression @@ -56,6 +56,7 @@ public static void ApplyHotReloadDelta(string moduleIdString, byte[] metadataDel _updateDeltas[0].MetadataDelta = metadataDelta; _updateDeltas[0].ILDelta = ilDelta; _updateDeltas[0].PdbBytes = pdbBytes; + _updateDeltas[0].UpdatedTypes = updatedTypes; _hotReloadAgent.ApplyDeltas(_updateDeltas); } From ef7816785b81120ec1e82365c7284540158008c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Laban?= Date: Thu, 9 May 2024 10:54:38 -0400 Subject: [PATCH 2/2] chore: Adjust typescript signatures Co-authored-by: Mackinnon Buck --- src/Components/Web.JS/src/Boot.WebAssembly.Common.ts | 4 ++-- src/Components/Web.JS/src/GlobalExports.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Components/Web.JS/src/Boot.WebAssembly.Common.ts b/src/Components/Web.JS/src/Boot.WebAssembly.Common.ts index d436eee4f005..3f3b27ee74de 100644 --- a/src/Components/Web.JS/src/Boot.WebAssembly.Common.ts +++ b/src/Components/Web.JS/src/Boot.WebAssembly.Common.ts @@ -97,8 +97,8 @@ async function startCore(components: RootComponentManager { - dispatcher.invokeDotNetStaticMethod('Microsoft.AspNetCore.Components.WebAssembly', 'ApplyHotReloadDelta', id, metadataDelta, ilDelta, pdbDelta, updatedTypes); + Blazor._internal.applyHotReload = (id: string, metadataDelta: string, ilDelta: string, pdbDelta: string | undefined, updatedTypes?: number[]) => { + dispatcher.invokeDotNetStaticMethod('Microsoft.AspNetCore.Components.WebAssembly', 'ApplyHotReloadDelta', id, metadataDelta, ilDelta, pdbDelta, updatedTypes ?? null); }; Blazor._internal.getApplyUpdateCapabilities = () => dispatcher.invokeDotNetStaticMethod('Microsoft.AspNetCore.Components.WebAssembly', 'GetApplyUpdateCapabilities'); diff --git a/src/Components/Web.JS/src/GlobalExports.ts b/src/Components/Web.JS/src/GlobalExports.ts index 7239fca7cc79..c3194481528b 100644 --- a/src/Components/Web.JS/src/GlobalExports.ts +++ b/src/Components/Web.JS/src/GlobalExports.ts @@ -89,7 +89,7 @@ export interface IBlazor { } // APIs invoked by hot reload - applyHotReload?: (id: string, metadataDelta: string, ilDelta: string, pdbDelta: string | undefined, updatedTypes: number[]) => void; + applyHotReload?: (id: string, metadataDelta: string, ilDelta: string, pdbDelta: string | undefined, updatedTypes?: number[]) => void; getApplyUpdateCapabilities?: () => string; hotReloadApplied?: () => void; }