summary refs log tree commit diff
path: root/ReferenceClientProxyImplementation/Patches/Implementations/JSPatches/DisableSciencePatch.cs
blob: c44bf9549662eff957952f1fd120befec1d09b3a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System.Text;
using System.Text.RegularExpressions;

namespace ReferenceClientProxyImplementation.Patches.Implementations.JSPatches;

public partial class DisableSciencePatch : IPatch {
    public int GetOrder() => 0;

    public string GetName() => @"JS(web): Disable /science calls";
    public bool Applies(string relativeName, byte[] content) => relativeName.StartsWith("assets/web.") && relativeName.EndsWith(".js");

    public async Task<byte[]> Execute(string _, byte[] content) {
        var stringContent = Encoding.UTF8.GetString(content);
        
        var match = HandleTrackDefinitionRegex().Match(stringContent);
        stringContent = stringContent.Insert(match.Index + match.Length, @"
             return (new Promise(() => { }), false); // ReferenceClientProxyImplementation: Disable /science calls
        ");

        return Encoding.UTF8.GetBytes(stringContent);
    }
    
    [GeneratedRegex(@".\.handleTrack = function \(.\) \{", RegexOptions.Compiled)]
    private static partial Regex HandleTrackDefinitionRegex();
    
}