detect Proxy properly

This commit is contained in:
SArpnt 2024-06-30 00:17:10 -04:00
parent eec861cdf4
commit df1f9bf286
Signed by: SArpnt
SSH key fingerprint: SHA256:iDMeic8KkqqEsN4wODlgsk1d/oW1ojZ/cu/MEWyfLBw
2 changed files with 8 additions and 5 deletions

View file

@ -58,9 +58,10 @@ export interface WorkletOptions {
}
export type WorkletMessage = number;
// replace Proxy so that they can be detected from the bytebeat code
// this is completely undetectable by the bytebeat code
const proxies = new WeakSet();
globalThis.Proxy = new Proxy(Proxy, {
Proxy = Object.getPrototypeOf(Proxy).constructor = new Proxy(Proxy, {
construct(target, args) {
var newProxy = new target(...args);
proxies.add(newProxy);
@ -90,8 +91,10 @@ class BytebeatProcessor extends AudioWorkletProcessor {
}
handleMessage(e: MessageEvent<WorkletMessage>) {
const endSample = e.data;
this.render(e.data);
}
render(endSample: number) {
let sample = this.sample;
let left = new Float32Array(endSample - sample);
let right = new Float32Array(endSample - sample);
@ -120,7 +123,7 @@ class BytebeatProcessor extends AudioWorkletProcessor {
out = out.map(v => {
try {
if (proxies.has(out)) {
new TypeError("can't convert proxy to number")
throw new TypeError("can't convert proxy to number");
} else {
return +v;
}

View file

@ -86,7 +86,7 @@ async function refresh() {
mode: songData.mode,
}, 0);
audioRenderer.renderUntil(8);
audioRenderer.renderUntil(1024);
if (globalThis.useUrlData !== false) {
setUrlData(getSong());