8000 Allow to fingerprint Blazor.js by maraf · Pull Request #46988 · dotnet/sdk · GitHub
[go: up one dir, main page]

Skip to content

Allow to fingerprint Blazor.js #46988

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
Mar 3, 2025
Next Next commit
Allow to fingerprint Blazor.js
  • Loading branch information
maraf committed Feb 20, 2025
commit e29ba3589f2fd96bb8226e4fd8de2e94d21fd7db
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ Copyright (c) .NET Foundation. All rights reserved.
<HttpActivityPropagationSupport Condition="'$(HttpActivityPropagationSupport)' == ''">false</HttpActivityPropagationSupport>
<DebuggerSupport Condition="'$(DebuggerSupport)' == '' and '$(Configuration)' != 'Debug'">false</DebuggerSupport>
<BlazorCacheBootResources Condition="'$(BlazorCacheBootResources)' == ''">true</BlazorCacheBootResources>
<BlazorFingerprintBlazorJs Condition="'$(BlazorFingerprintBlazorJs)' == '' and '$(WriteImportMapToHtml)' == 'true'">true</BlazorFingerprintBlazorJs>

<_TargetingNETBefore80>$([MSBuild]::VersionLessThan('$(TargetFrameworkVersion)', '8.0'))</_TargetingNETBefore80>
<_TargetingNET80OrLater>$([MSBuild]::VersionGreaterThanOrEquals('$(TargetFrameworkVersion)', '8.0'))</_TargetingNET80OrLater>
Expand Down Expand Up @@ -83,6 +84,15 @@ Copyright (c) .NET Foundation. All rights reserved.
GenerateBuildBlazorBootExtensionJson;
</GenerateBuildWasmBootJsonDependsOn>

<ResolvePublishRelatedStaticWebAssetsDependsOn>
$(ResolvePublishRelatedStaticWebAssetsDependsOn);
_ReplaceFingerprintedBlazorJsForPublish
</ResolvePublishRelatedStaticWebAssetsDependsOn>
<ResolveCompressedFilesForPublishDependsOn>
$(ResolveCompressedFilesForPublishDependsOn);
_ReplaceFingerprintedBlazorJsForPublish
</ResolveCompressedFilesForPublishDependsOn>

<GeneratePublishWasmBootJsonDependsOn>
$(GeneratePublishWasmBootJsonDependsOn);
GeneratePublishBlazorBootExtensionJson;
Expand All @@ -104,6 +114,7 @@ Copyright (c) .NET Foundation. All rights reserved.
<_BlazorJsFile>
<RelativePath>_framework/%(Filename)%(Extension)</RelativePath>
</_BlazorJsFile>
<_BlazorJSFingerprintPattern Include="Js" Pattern="*.js" Expression="#[.{fingerprint}]!" Condition="'$(BlazorFingerprintBlazorJs)' == 'true'" />

<!-- A missing blazor.webassembly.js is our packaging error. Produce an error so it's discovered early. -->
<Error
Expand All @@ -114,6 +125,8 @@ Copyright (c) .NET Foundation. All rights reserved.

<DefineStaticWebAssets
CandidateAssets="@(_BlazorJSFile)"
FingerprintCandidates="true"
FingerprintPatterns="@(_BlazorJSFingerprintPattern)"
SourceId="$(PackageId)"
SourceType="Computed"
AssetKind="All"
Expand Down Expand Up @@ -143,6 +156,58 @@ Copyright (c) .NET Foundation. All rights reserved.
</ItemGroup>
</Target>

<Target Name="_ReplaceFingerprintedBlazorJsForPublish" DependsOnTargets="ProcessPublishFilesForWasm" Condition="'$(WasmBuildingForNestedPublish)' != 'true' and '$(BlazorFingerprintBlazorJs)' == 'true'">
<ItemGroup>
<_BlazorJSStaticWebAsset Include="@(StaticWebAsset)" Condition="'%(FileName)' == '%(_BlazorJSFile.FileName)'" />
<_BlazorJSPublishCandidate Include="%(_BlazorJSStaticWebAsset.RelativeDir)%(_BlazorJSStaticWebAsset.FileName).%(_BlazorJSStaticWebAsset.Fingerprint)%(_BlazorJSStaticWebAsset.Extension)" />
</ItemGroup>

<DefineStaticWebAssets
CandidateAssets="@(_BlazorJSPublishCandidate)"
FingerprintCandidates="true"
FingerprintPatterns="@(StaticWebAssetFingerprintPattern)"
SourceId="$(PackageId)"
SourceType="Computed"
AssetKind="All"
AssetMergeSource="$(StaticWebAssetMergeTarget)"
AssetRole="Primary"
AssetTraitName="WasmResource"
AssetTraitValue="boot"
CopyToOutputDirectory="Never"
CopyToPublishDirectory="PreserveNewest"
ContentRoot="%(_BlazorJSStaticWebAsset.ContentRoot)"
BasePath="%(_BlazorJSStaticWebAsset.BasePath)"
>
<Output TaskParameter="Assets" ItemName="_BlazorJSPublishStaticWebAssets" />
</DefineStaticWebAssets>
<DefineStaticWebAssetEndpoints
CandidateAssets="@(_BlazorJSPublishStaticWebAssets)"
ExistingEndpoints="@(StaticWebAssetEndpoint)"
ContentTypeMappings="@(StaticWebAssetContentTypeMapping)"
>
<Output TaskParameter="Endpoints" ItemName="_BlazorJSPublishStaticWebAssetsEndpoint" />
</DefineStaticWebAssetEndpoints>
<PropertyGroup>
<_BlazorJSStaticWebAssetFullPath>@(_BlazorJSStaticWebAsset->'%(FullPath)')</_BlazorJSStaticWebAssetFullPath>
</PropertyGroup>
<ItemGroup>
<_BlazorJSStaticWebAsset Include="@(StaticWebAsset)" Condition="'%(AssetTraitName)' == 'Content-Encoding' and '%(RelatedAsset)' == '$(_BlazorJSStaticWebAssetFullPath)'" />
</ItemGroup>
<FilterStaticWebAssetEndpoints Condition="'@(_BlazorJSStaticWebAsset)' != ''"
Endpoints="@(StaticWebAssetEndpoint)"
Assets="@(_BlazorJSStaticWebAsset)"
Filters=""
>
<Output TaskParameter="FilteredEndpoints" ItemName="_BlazorJSEndpointsToRemove" />
</FilterStaticWebAssetEndpoints>
<ItemGroup>
<StaticWebAsset Remove="@(_BlazorJSStaticWebAsset)" />
<StaticWebAsset Include="@(_BlazorJSPublishStaticWebAssets)" />
<StaticWebAssetEndpoint Remove="@(_BlazorJSEndpointsToRemove)" />
<StaticWebAssetEndpoint Include="@(_BlazorJSPublishStaticWebAssetsEndpoint)" />
</ItemGroup>
</Target>

<!-- Just print a message here, static web assets takes care of all the copying -->
<Target Name="_BlazorCopyFilesToOutputDirectory" AfterTargets="CopyFilesToOutputDirectory">
<Message Importance="High" Text="$(MSBuildProjectName) (Blazor output) -&gt; $(TargetDir)wwwroot" Condition="'$(CopyBuildOutputToOutputDirectory)' == 'true' and '$(SkipCopyBuildProduct)'!='true'" />
Expand Down
Loading
0