detect Proxy properly
This commit is contained in:
parent
eec861cdf4
commit
df1f9bf286
2 changed files with 8 additions and 5 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -86,7 +86,7 @@ async function refresh() {
|
|||
mode: songData.mode,
|
||||
}, 0);
|
||||
|
||||
audioRenderer.renderUntil(8);
|
||||
audioRenderer.renderUntil(1024);
|
||||
|
||||
if (globalThis.useUrlData !== false) {
|
||||
setUrlData(getSong());
|
||||
|
|
Loading…
Reference in a new issue