Use indexOf instead of includes; reset global find regex state

This commit is contained in:
Nuckyz 2024-05-31 05:19:34 -03:00
parent 47eec049fc
commit 545d69aa6d
No known key found for this signature in database
GPG key ID: 440BF8296E1C4AD9

View file

@ -218,9 +218,11 @@ function patchFactory(id: PropertyKey, factory: ModuleFactory) {
const patch = patches[i]; const patch = patches[i];
if (patch.predicate && !patch.predicate()) continue; if (patch.predicate && !patch.predicate()) continue;
// indexOf is faster than includes because it doesn't check if searchString is a RegExp
// https://github.com/moonlight-mod/moonlight/blob/53ae39d4010277f49f3b70bebbd27b9cbcdb1c8b/packages/core/src/patch.ts#L61
const moduleMatches = typeof patch.find === "string" const moduleMatches = typeof patch.find === "string"
? code.includes(patch.find) ? code.indexOf(patch.find) !== -1
: patch.find.test(code); : (patch.find.global && (patch.find.lastIndex = 0), patch.find.test(code));
if (!moduleMatches) continue; if (!moduleMatches) continue;