Incognito3 / vendor /scramjet /dist /scramjet.client.js.map
Alex Scott
rebrand space to incognito
46c7a16
{"version":3,"file":"scramjet.client.js","sources":["webpack://@mercuryworkshop/scramjet/./src/client/client.ts","webpack://@mercuryworkshop/scramjet/./src/client/document.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/attr.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/beacon.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/cookie.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/css.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/document.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/element.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/fontface.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/history.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/navigation.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/open.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/origin.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/performance.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/serviceworker.ts","webpack://@mercuryworkshop/scramjet/./src/client/dom/storage.ts","webpack://@mercuryworkshop/scramjet/./src/client/events.ts","webpack://@mercuryworkshop/scramjet/./src/client/global.ts","webpack://@mercuryworkshop/scramjet/./src/client/helpers.ts","webpack://@mercuryworkshop/scramjet/./src/client/index.ts","webpack://@mercuryworkshop/scramjet/./src/client/location.ts","webpack://@mercuryworkshop/scramjet/./src/client/natives.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/antiantidebugger.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/blob.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/caches.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/err.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/error.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/eval.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/event.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/function.ts","webpack://@mercuryworkshop/scramjet/./rewriter/wasm/out/wasm.js","webpack://@mercuryworkshop/scramjet/./rewriter/wasm/out/snippets/wasm-4b0f351a8e6eeb46/inline0.js","webpack://@mercuryworkshop/scramjet/./src/shared/rewriters/js.ts","webpack://@mercuryworkshop/scramjet/./src/shared/rewriters/url.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/import.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/indexeddb.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/postmessage.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/realm.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/requests/eventsource.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/requests/fetch.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/requests/websocket.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/requests/xmlhttprequest.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/sourcemaps.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/trustedTypes.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/unproxy.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/worker.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/wrap.ts","webpack://@mercuryworkshop/scramjet/./src/client/swruntime.ts","webpack://@mercuryworkshop/scramjet/./src/client/worker/importScripts.ts","webpack://@mercuryworkshop/scramjet/./src/log.ts","webpack://@mercuryworkshop/scramjet/./src/scramjet.ts","webpack://@mercuryworkshop/scramjet/./src/shared.ts","webpack://@mercuryworkshop/scramjet/./src/symbols.ts"],"sourcesContent":["import { iswindow } from \".\";\nimport { ScramjetFrame } from \"../controller/frame\";\nimport { SCRAMJETCLIENT, SCRAMJETFRAME } from \"../symbols\";\nimport { createDocumentProxy } from \"./document\";\nimport { createGlobalProxy } from \"./global\";\nimport { getOwnPropertyDescriptorHandler } from \"./helpers\";\nimport { createLocationProxy } from \"./location\";\nimport { nativeGetOwnPropertyDescriptor } from \"./natives\";\nimport {\n\tBareClient,\n\tCookieStore,\n\tconfig,\n\tunrewriteUrl,\n\trewriteUrl,\n} from \"../shared\";\nimport type { BareClient as BareClientType } from \"@mercuryworkshop/bare-mux\";\nimport { createWrapFn } from \"./shared/wrap\";\nimport { NavigateEvent } from \"./events\";\nimport type { URLMeta } from \"../shared/rewriters/url\";\n\ntype NativeStore = {\n\tstore: Record<string, any>;\n\tcall: (target: string, that: any, ...args) => any;\n\tconstruct: (target: string, ...args) => any;\n};\ntype DescriptorStore = {\n\tstore: Record<string, PropertyDescriptor>;\n\tget: (target: string, that: any) => any;\n\tset: (target: string, that: any, value: any) => void;\n};\n//eslint-disable-next-line\nexport type AnyFunction = Function;\n\nexport type ScramjetModule = {\n\tenabled: (client: ScramjetClient) => boolean | undefined;\n\tdisabled: (\n\t\tclient: ScramjetClient,\n\t\tself: typeof globalThis\n\t) => void | undefined;\n\torder: number | undefined;\n\tdefault: (client: ScramjetClient, self: typeof globalThis) => void;\n};\n\nexport type ProxyCtx = {\n\tfn: AnyFunction;\n\tthis: any;\n\targs: any[];\n\tnewTarget: AnyFunction;\n\treturn: (r: any) => void;\n\tcall: () => any;\n};\nexport type Proxy = {\n\tconstruct?(ctx: ProxyCtx): any;\n\tapply?(ctx: ProxyCtx): any;\n};\n\nexport type TrapCtx<T> = {\n\tthis: any;\n\tget: () => T;\n\tset: (v: T) => void;\n};\nexport type Trap<T> = {\n\twritable?: boolean;\n\tvalue?: any;\n\tenumerable?: boolean;\n\tconfigurable?: boolean;\n\tget?: (ctx: TrapCtx<T>) => T;\n\tset?: (ctx: TrapCtx<T>, v: T) => void;\n};\n\nexport class ScramjetClient {\n\tdocumentProxy: any;\n\tglobalProxy: any;\n\tlocationProxy: any;\n\tserviceWorker: ServiceWorkerContainer;\n\tbare: BareClientType;\n\n\tnatives: NativeStore;\n\tdescriptors: DescriptorStore;\n\twrapfn: (i: any, ...args: any) => any;\n\n\tcookieStore = new CookieStore();\n\n\teventcallbacks: Map<\n\t\tany,\n\t\t[\n\t\t\t{\n\t\t\t\tevent: string;\n\t\t\t\toriginalCallback: AnyFunction;\n\t\t\t\tproxiedCallback: AnyFunction;\n\t\t\t},\n\t\t]\n\t> = new Map();\n\n\tmeta: URLMeta;\n\n\tconstructor(public global: typeof globalThis) {\n\t\tif (SCRAMJETCLIENT in global) {\n\t\t\tconsole.error(\n\t\t\t\t\"attempted to initialize a scramjet cl ient, but one is already loaded - this is very bad\"\n\t\t\t);\n\t\t\tthrow new Error();\n\t\t}\n\n\t\tthis.serviceWorker = this.global.navigator.serviceWorker;\n\n\t\tif (iswindow) {\n\t\t\tthis.documentProxy = createDocumentProxy(this, global);\n\n\t\t\tglobal.document[SCRAMJETCLIENT] = this;\n\t\t}\n\n\t\tthis.locationProxy = createLocationProxy(this, global);\n\t\tthis.globalProxy = createGlobalProxy(this, global);\n\t\tthis.wrapfn = createWrapFn(this, global);\n\t\tif (iswindow) {\n\t\t\tthis.bare = new BareClient();\n\t\t} else {\n\t\t\tthis.bare = new BareClient(\n\t\t\t\tnew Promise((resolve) => {\n\t\t\t\t\taddEventListener(\"message\", ({ data }) => {\n\t\t\t\t\t\tif (typeof data !== \"object\") return;\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\"$scramjet$type\" in data &&\n\t\t\t\t\t\t\tdata.$scramjet$type === \"baremuxinit\"\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tresolve(data.port);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t\tthis.natives = {\n\t\t\tstore: new Proxy(\n\t\t\t\t{},\n\t\t\t\t{\n\t\t\t\t\tget: (target, prop: string) => {\n\t\t\t\t\t\tif (prop in target) {\n\t\t\t\t\t\t\treturn target[prop];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst split = prop.split(\".\");\n\t\t\t\t\t\tconst realProp = split.pop();\n\t\t\t\t\t\tconst realTarget = split.reduce((a, b) => a?.[b], this.global);\n\n\t\t\t\t\t\tif (!realTarget) return;\n\n\t\t\t\t\t\tconst original = Reflect.get(realTarget, realProp);\n\t\t\t\t\t\ttarget[prop] = original;\n\n\t\t\t\t\t\treturn target[prop];\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t),\n\t\t\tconstruct(target: string, ...args) {\n\t\t\t\tconst original = this.store[target];\n\t\t\t\tif (!original) return null;\n\n\t\t\t\treturn new original(...args);\n\t\t\t},\n\t\t\tcall(target: string, that: any, ...args) {\n\t\t\t\tconst original = this.store[target];\n\t\t\t\tif (!original) return null;\n\n\t\t\t\treturn original.call(that, ...args);\n\t\t\t},\n\t\t};\n\t\tthis.descriptors = {\n\t\t\tstore: new Proxy(\n\t\t\t\t{},\n\t\t\t\t{\n\t\t\t\t\tget: (target, prop: string) => {\n\t\t\t\t\t\tif (prop in target) {\n\t\t\t\t\t\t\treturn target[prop];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst split = prop.split(\".\");\n\t\t\t\t\t\tconst realProp = split.pop();\n\t\t\t\t\t\tconst realTarget = split.reduce((a, b) => a?.[b], this.global);\n\n\t\t\t\t\t\tif (!realTarget) return;\n\n\t\t\t\t\t\tconst original = nativeGetOwnPropertyDescriptor(\n\t\t\t\t\t\t\trealTarget,\n\t\t\t\t\t\t\trealProp\n\t\t\t\t\t\t);\n\t\t\t\t\t\ttarget[prop] = original;\n\n\t\t\t\t\t\treturn target[prop];\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t),\n\t\t\tget(target: string, that: any) {\n\t\t\t\tconst original = this.store[target];\n\t\t\t\tif (!original) return null;\n\n\t\t\t\treturn original.get.call(that);\n\t\t\t},\n\t\t\tset(target: string, that: any, value: any) {\n\t\t\t\tconst original = this.store[target];\n\t\t\t\tif (!original) return null;\n\n\t\t\t\toriginal.set.call(that, value);\n\t\t\t},\n\t\t};\n\t\t// eslint-disable-next-line @typescript-eslint/no-this-alias\n\t\tconst client = this;\n\t\tthis.meta = {\n\t\t\tget origin() {\n\t\t\t\treturn client.url;\n\t\t\t},\n\t\t\tget base() {\n\t\t\t\tif (iswindow) {\n\t\t\t\t\tconst base = client.natives.call(\n\t\t\t\t\t\t\"Document.prototype.querySelector\",\n\t\t\t\t\t\tclient.global.document,\n\t\t\t\t\t\t\"base\"\n\t\t\t\t\t);\n\t\t\t\t\tif (base) {\n\t\t\t\t\t\tlet url = base.getAttribute(\"href\");\n\t\t\t\t\t\tconst frag = url.indexOf(\"#\");\n\t\t\t\t\t\turl = url.substring(0, frag === -1 ? undefined : frag);\n\t\t\t\t\t\tif (!url) return client.url;\n\n\t\t\t\t\t\treturn new URL(url, client.url.origin);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn client.url;\n\t\t\t},\n\t\t};\n\n\t\tglobal[SCRAMJETCLIENT] = this;\n\t}\n\n\tget frame(): ScramjetFrame | null {\n\t\tif (!iswindow) return null;\n\t\tconst frame = this.descriptors.get(\"window.frameElement\", this.global);\n\n\t\tif (!frame) return null; // we're top level\n\t\tconst sframe = frame[SCRAMJETFRAME];\n\n\t\tif (!sframe) {\n\t\t\t// we're in a subframe, recurse upward until we find one\n\t\t\tlet currentwin = this.global.window;\n\t\t\twhile (currentwin.parent != currentwin) {\n\t\t\t\tif (!currentwin.frameElement) return null; // ??\n\t\t\t\tif (currentwin.frameElement && currentwin.frameElement[SCRAMJETFRAME]) {\n\t\t\t\t\treturn currentwin.frameElement[SCRAMJETFRAME];\n\t\t\t\t}\n\t\t\t\tcurrentwin = currentwin.parent.window;\n\t\t\t}\n\t\t}\n\n\t\treturn sframe;\n\t}\n\n\tloadcookies(cookiestr: string) {\n\t\tthis.cookieStore.load(cookiestr);\n\t}\n\n\thook() {\n\t\t// @ts-ignore\n\t\tconst context = import.meta.webpackContext(\".\", {\n\t\t\trecursive: true,\n\t\t});\n\n\t\tconst modules: ScramjetModule[] = [];\n\n\t\tfor (const key of context.keys()) {\n\t\t\tconst module: ScramjetModule = context(key);\n\t\t\tif (!key.endsWith(\".ts\")) continue;\n\t\t\tif (\n\t\t\t\t(key.startsWith(\"./dom/\") && \"window\" in this.global) ||\n\t\t\t\t(key.startsWith(\"./worker/\") && \"WorkerGlobalScope\" in this.global) ||\n\t\t\t\tkey.startsWith(\"./shared/\")\n\t\t\t) {\n\t\t\t\tmodules.push(module);\n\t\t\t}\n\t\t}\n\n\t\tmodules.sort((a, b) => {\n\t\t\tconst aorder = a.order || 0;\n\t\t\tconst border = b.order || 0;\n\n\t\t\treturn aorder - border;\n\t\t});\n\n\t\tfor (const module of modules) {\n\t\t\tif (!module.enabled || module.enabled(this))\n\t\t\t\tmodule.default(this, this.global);\n\t\t\telse if (module.disabled) module.disabled(this, this.global);\n\t\t}\n\t}\n\n\tget url(): URL {\n\t\treturn new URL(unrewriteUrl(this.global.location.href));\n\t}\n\n\tset url(url: URL | string) {\n\t\tif (url instanceof URL) url = url.toString();\n\n\t\tconst ev = new NavigateEvent(url);\n\t\tif (this.frame) {\n\t\t\tthis.frame.dispatchEvent(ev);\n\t\t}\n\t\tif (ev.defaultPrevented) return;\n\n\t\tthis.global.location.href = rewriteUrl(ev.url, this.meta);\n\t}\n\n\t// below are the utilities for proxying and trapping dom APIs\n\t// you don't have to understand this it just makes the rest easier\n\t// i'll document it eventually\n\n\tProxy(name: string | string[], handler: Proxy) {\n\t\tif (Array.isArray(name)) {\n\t\t\tfor (const n of name) {\n\t\t\t\tthis.Proxy(n, handler);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst split = name.split(\".\");\n\t\tconst prop = split.pop();\n\t\tconst target = split.reduce((a, b) => a?.[b], this.global);\n\t\tif (!target) return;\n\n\t\tconst original = Reflect.get(target, prop);\n\t\tthis.natives.store[name] = original;\n\n\t\tthis.RawProxy(target, prop, handler);\n\t}\n\tRawProxy(target: any, prop: string, handler: Proxy) {\n\t\tif (!target) return;\n\t\tif (!prop) return;\n\t\tif (!Reflect.has(target, prop)) return;\n\n\t\tconst value = Reflect.get(target, prop);\n\t\tdelete target[prop];\n\n\t\tconst h: ProxyHandler<any> = {};\n\n\t\tif (handler.construct) {\n\t\t\th.construct = function (\n\t\t\t\tconstructor: any,\n\t\t\t\targArray: any[],\n\t\t\t\tnewTarget: AnyFunction\n\t\t\t) {\n\t\t\t\tlet returnValue: any = undefined;\n\t\t\t\tlet earlyreturn = false;\n\n\t\t\t\tconst ctx: ProxyCtx = {\n\t\t\t\t\tfn: constructor,\n\t\t\t\t\tthis: null,\n\t\t\t\t\targs: argArray,\n\t\t\t\t\tnewTarget: newTarget,\n\t\t\t\t\treturn: (r: any) => {\n\t\t\t\t\t\tearlyreturn = true;\n\t\t\t\t\t\treturnValue = r;\n\t\t\t\t\t},\n\t\t\t\t\tcall: () => {\n\t\t\t\t\t\tearlyreturn = true;\n\t\t\t\t\t\treturnValue = Reflect.construct(ctx.fn, ctx.args, ctx.newTarget);\n\n\t\t\t\t\t\treturn returnValue;\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\thandler.construct(ctx);\n\n\t\t\t\tif (earlyreturn) {\n\t\t\t\t\treturn returnValue;\n\t\t\t\t}\n\n\t\t\t\treturn Reflect.construct(ctx.fn, ctx.args, ctx.newTarget);\n\t\t\t};\n\t\t}\n\n\t\tif (handler.apply) {\n\t\t\th.apply = function (fn: any, thisArg: any, argArray: any[]) {\n\t\t\t\tlet returnValue: any = undefined;\n\t\t\t\tlet earlyreturn = false;\n\n\t\t\t\tconst ctx: ProxyCtx = {\n\t\t\t\t\tfn,\n\t\t\t\t\tthis: thisArg,\n\t\t\t\t\targs: argArray,\n\t\t\t\t\tnewTarget: null,\n\t\t\t\t\treturn: (r: any) => {\n\t\t\t\t\t\tearlyreturn = true;\n\t\t\t\t\t\treturnValue = r;\n\t\t\t\t\t},\n\t\t\t\t\tcall: () => {\n\t\t\t\t\t\tearlyreturn = true;\n\t\t\t\t\t\treturnValue = Reflect.apply(ctx.fn, ctx.this, ctx.args);\n\n\t\t\t\t\t\treturn returnValue;\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\tconst pst = Error.prepareStackTrace;\n\n\t\t\t\tError.prepareStackTrace = function (err, s) {\n\t\t\t\t\tif (\n\t\t\t\t\t\ts[0].getFileName() &&\n\t\t\t\t\t\t!s[0].getFileName().startsWith(location.origin + config.prefix)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn { stack: err.stack };\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\ttry {\n\t\t\t\t\thandler.apply(ctx);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (err instanceof Error) {\n\t\t\t\t\t\tif ((err.stack as any) instanceof Object) {\n\t\t\t\t\t\t\t//@ts-expect-error i'm not going to explain this\n\t\t\t\t\t\t\terr.stack = err.stack.stack;\n\t\t\t\t\t\t\tconsole.error(\"ERROR FROM SCRAMJET INTERNALS\", err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthrow err;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tError.prepareStackTrace = pst;\n\n\t\t\t\tif (earlyreturn) {\n\t\t\t\t\treturn returnValue;\n\t\t\t\t}\n\n\t\t\t\treturn Reflect.apply(ctx.fn, ctx.this, ctx.args);\n\t\t\t};\n\t\t}\n\n\t\th.getOwnPropertyDescriptor = getOwnPropertyDescriptorHandler;\n\t\ttarget[prop] = new Proxy(value, h);\n\t}\n\tTrap<T>(name: string | string[], descriptor: Trap<T>): PropertyDescriptor {\n\t\tif (Array.isArray(name)) {\n\t\t\tfor (const n of name) {\n\t\t\t\tthis.Trap(n, descriptor);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst split = name.split(\".\");\n\t\tconst prop = split.pop();\n\t\tconst target = split.reduce((a, b) => a?.[b], this.global);\n\t\tif (!target) return;\n\n\t\tconst original = nativeGetOwnPropertyDescriptor(target, prop);\n\t\tthis.descriptors.store[name] = original;\n\n\t\treturn this.RawTrap(target, prop, descriptor);\n\t}\n\tRawTrap<T>(\n\t\ttarget: any,\n\t\tprop: string,\n\t\tdescriptor: Trap<T>\n\t): PropertyDescriptor {\n\t\tif (!target) return;\n\t\tif (!prop) return;\n\t\tif (!Reflect.has(target, prop)) return;\n\n\t\tconst oldDescriptor = nativeGetOwnPropertyDescriptor(target, prop);\n\n\t\tconst ctx: TrapCtx<T> = {\n\t\t\tthis: null,\n\t\t\tget: function () {\n\t\t\t\treturn oldDescriptor && oldDescriptor.get.call(this.this);\n\t\t\t},\n\t\t\tset: function (v: T) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-expressions\n\t\t\t\toldDescriptor && oldDescriptor.set.call(this.this, v);\n\t\t\t},\n\t\t};\n\n\t\tdelete target[prop];\n\n\t\tconst desc: PropertyDescriptor = {};\n\n\t\tif (descriptor.get) {\n\t\t\tdesc.get = function () {\n\t\t\t\tctx.this = this;\n\n\t\t\t\treturn descriptor.get(ctx);\n\t\t\t};\n\t\t} else if (oldDescriptor?.get) {\n\t\t\tdesc.get = oldDescriptor.get;\n\t\t}\n\n\t\tif (descriptor.set) {\n\t\t\tdesc.set = function (v: T) {\n\t\t\t\tctx.this = this;\n\n\t\t\t\tdescriptor.set(ctx, v);\n\t\t\t};\n\t\t} else if (oldDescriptor?.set) {\n\t\t\tdesc.set = oldDescriptor.set;\n\t\t}\n\n\t\tif (descriptor.enumerable) desc.enumerable = descriptor.enumerable;\n\t\telse if (oldDescriptor?.enumerable)\n\t\t\tdesc.enumerable = oldDescriptor.enumerable;\n\t\tif (descriptor.configurable) desc.configurable = descriptor.configurable;\n\t\telse if (oldDescriptor?.configurable)\n\t\t\tdesc.configurable = oldDescriptor.configurable;\n\n\t\tObject.defineProperty(target, prop, desc);\n\n\t\treturn oldDescriptor;\n\t}\n}\n","import { rewriteUrl } from \"../shared\";\nimport { ScramjetClient } from \"./client\";\nimport { getOwnPropertyDescriptorHandler } from \"./helpers\";\n\nexport function createDocumentProxy(\n\tclient: ScramjetClient,\n\tself: typeof globalThis\n) {\n\treturn new Proxy(self.document, {\n\t\tget(target, prop) {\n\t\t\tif (prop === \"location\") {\n\t\t\t\treturn client.locationProxy;\n\t\t\t}\n\n\t\t\tif (prop === \"defaultView\") {\n\t\t\t\treturn client.globalProxy;\n\t\t\t}\n\n\t\t\tconst value = Reflect.get(target, prop);\n\n\t\t\treturn value;\n\t\t},\n\t\tset(target, prop, newValue) {\n\t\t\tif (prop === \"location\") {\n\t\t\t\tlocation.href = rewriteUrl(newValue, client.meta);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn Reflect.set(target, prop, newValue);\n\t\t},\n\t\tgetOwnPropertyDescriptor: getOwnPropertyDescriptorHandler,\n\t});\n}\n","import { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, _self: typeof window) {\n\tclient.Trap(\"Element.prototype.attributes\", {\n\t\tget(ctx) {\n\t\t\tconst map = ctx.get() as NamedNodeMap;\n\t\t\tconst proxy = new Proxy(map, {\n\t\t\t\tget(target, prop, _receiver) {\n\t\t\t\t\tconst value = Reflect.get(target, prop);\n\n\t\t\t\t\tif (prop === \"length\") {\n\t\t\t\t\t\treturn Object.keys(proxy).length;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (prop === \"getNamedItem\") {\n\t\t\t\t\t\treturn (name: string) => proxy[name];\n\t\t\t\t\t}\n\t\t\t\t\tif (prop === \"getNamedItemNS\") {\n\t\t\t\t\t\treturn (namespace: string, name: string) =>\n\t\t\t\t\t\t\tproxy[`${namespace}:${name}`];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (prop in NamedNodeMap.prototype && typeof value === \"function\") {\n\t\t\t\t\t\treturn new Proxy(value, {\n\t\t\t\t\t\t\tapply(target, thisArg, argArray) {\n\t\t\t\t\t\t\t\tif (thisArg === proxy) {\n\t\t\t\t\t\t\t\t\treturn Reflect.apply(target, map, argArray);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn Reflect.apply(target, thisArg, argArray);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t(typeof prop === \"string\" || typeof prop === \"number\") &&\n\t\t\t\t\t\t!isNaN(Number(prop))\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst position = Object.keys(proxy)[prop];\n\n\t\t\t\t\t\treturn map[position];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!this.has(target, prop)) return undefined;\n\n\t\t\t\t\treturn value;\n\t\t\t\t},\n\t\t\t\townKeys(target) {\n\t\t\t\t\tconst keys = Reflect.ownKeys(target);\n\n\t\t\t\t\treturn keys.filter((key) => this.has(target, key));\n\t\t\t\t},\n\t\t\t\thas(target, prop) {\n\t\t\t\t\tif (typeof prop === \"symbol\") return Reflect.has(target, prop);\n\t\t\t\t\tif (prop.startsWith(\"scramjet-attr-\")) return false;\n\t\t\t\t\tif (map[prop]?.name?.startsWith(\"scramjet-attr-\")) return false;\n\n\t\t\t\t\treturn Reflect.has(target, prop);\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn proxy;\n\t\t},\n\t});\n\n\tclient.Trap(\"Attr.prototype.value\", {\n\t\tget(ctx) {\n\t\t\tif (ctx.this?.ownerElement) {\n\t\t\t\treturn ctx.this.ownerElement.getAttribute(ctx.this.name);\n\t\t\t}\n\n\t\t\treturn ctx.get();\n\t\t},\n\t\tset(ctx, value) {\n\t\t\tif (ctx.this?.ownerElement) {\n\t\t\t\treturn ctx.this.ownerElement.setAttribute(ctx.this.name, value);\n\t\t\t}\n\n\t\t\treturn ctx.set(value);\n\t\t},\n\t});\n}\n","import { rewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\"Navigator.prototype.sendBeacon\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, self: typeof window) {\n\tclient.serviceWorker.addEventListener(\"message\", ({ data }) => {\n\t\tif (!(\"scramjet$type\" in data)) return;\n\n\t\tif (data.scramjet$type === \"cookie\") {\n\t\t\tclient.cookieStore.setCookies([data.cookie], new URL(data.url));\n\t\t}\n\t});\n\n\tclient.Trap(\"Document.prototype.cookie\", {\n\t\tget() {\n\t\t\treturn client.cookieStore.getCookies(client.url, true);\n\t\t},\n\t\tset(ctx, value: string) {\n\t\t\tclient.cookieStore.setCookies([value], client.url);\n\t\t\tconst controller = client.descriptors.get(\n\t\t\t\t\"ServiceWorkerContainer.prototype.controller\",\n\t\t\t\tclient.serviceWorker\n\t\t\t);\n\t\t\tif (controller) {\n\t\t\t\tclient.natives.call(\"ServiceWorker.prototype.postMessage\", controller, {\n\t\t\t\t\tscramjet$type: \"cookie\",\n\t\t\t\t\tcookie: value,\n\t\t\t\t\turl: client.url.href,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t});\n\n\t// @ts-ignore\n\tdelete self.cookieStore;\n}\n","import { ScramjetClient } from \"../client\";\nimport { rewriteCss, unrewriteCss } from \"../../shared\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"CSSStyleDeclaration.prototype.setProperty\", {\n\t\tapply(ctx) {\n\t\t\tif (!ctx.args[1]) return;\n\t\t\tctx.args[1] = rewriteCss(ctx.args[1], client.meta);\n\t\t},\n\t});\n\n\tclient.Proxy(\"CSSStyleDeclaration.prototype.getPropertyValue\", {\n\t\tapply(ctx) {\n\t\t\tconst v = ctx.call();\n\t\t\tif (!v) return v;\n\t\t\tctx.return(unrewriteCss(v));\n\t\t},\n\t});\n\n\tclient.Trap(\"CSSStyleDeclaration.prototype.cssText\", {\n\t\tset(ctx, value: string) {\n\t\t\tctx.set(rewriteCss(value, client.meta));\n\t\t},\n\t\tget(ctx) {\n\t\t\treturn unrewriteCss(ctx.get());\n\t\t},\n\t});\n\n\tclient.Trap(\"HTMLElement.prototype.style\", {\n\t\tget(ctx) {\n\t\t\t// unfortunate and dumb hack. we have to trap every property of this\n\t\t\t// since the prototype chain is fucked\n\n\t\t\tconst style = ctx.get() as CSSStyleDeclaration;\n\n\t\t\treturn new Proxy(style, {\n\t\t\t\tget(t, p) {\n\t\t\t\t\tconst v = Reflect.get(t, p);\n\n\t\t\t\t\tif (typeof v === \"function\") {\n\t\t\t\t\t\treturn new Proxy(v, {\n\t\t\t\t\t\t\tapply(target, thisArg, argArray) {\n\t\t\t\t\t\t\t\treturn Reflect.apply(target, style, argArray);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (p in CSSStyleDeclaration.prototype) return v;\n\t\t\t\t\tif (!v) return v;\n\n\t\t\t\t\treturn unrewriteCss(v);\n\t\t\t\t},\n\t\t\t\tset(t, p, v) {\n\t\t\t\t\tif (p == \"cssText\" || v == \"\" || typeof v !== \"string\") {\n\t\t\t\t\t\treturn Reflect.set(t, p, v);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Reflect.set(t, p, rewriteCss(v, client.meta));\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t\tset(ctx, v: string) {\n\t\t\t// this will actually run the trap for cssText. don't rewrite it here\n\t\t\tctx.set(v);\n\t\t},\n\t});\n}\n","import { rewriteHtml } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\"Document.prototype.write\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0])\n\t\t\t\ttry {\n\t\t\t\t\tctx.args[0] = rewriteHtml(\n\t\t\t\t\t\tctx.args[0],\n\t\t\t\t\t\tclient.cookieStore,\n\t\t\t\t\t\tclient.meta,\n\t\t\t\t\t\tfalse\n\t\t\t\t\t);\n\t\t\t\t} catch {}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Document.prototype.writeln\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0])\n\t\t\t\ttry {\n\t\t\t\t\tctx.args[0] = rewriteHtml(\n\t\t\t\t\t\tctx.args[0],\n\t\t\t\t\t\tclient.cookieStore,\n\t\t\t\t\t\tclient.meta,\n\t\t\t\t\t\tfalse\n\t\t\t\t\t);\n\t\t\t\t} catch {}\n\t\t},\n\t});\n}\n","import { SCRAMJETCLIENT } from \"../../symbols\";\nimport { ScramjetClient } from \"../client\";\nimport { nativeGetOwnPropertyDescriptor } from \"../natives\";\nimport { unrewriteUrl, htmlRules, unrewriteHtml } from \"../../shared\";\nimport { rewriteCss, rewriteHtml, rewriteJs } from \"../../shared\";\n\nconst encoder = new TextEncoder();\nfunction bytesToBase64(bytes: Uint8Array) {\n\tconst binString = Array.from(bytes, (byte) =>\n\t\tString.fromCodePoint(byte)\n\t).join(\"\");\n\n\treturn btoa(binString);\n}\nexport default function (client: ScramjetClient, self: typeof window) {\n\tconst attrObject = {\n\t\tnonce: [self.HTMLElement],\n\t\tintegrity: [self.HTMLScriptElement, self.HTMLLinkElement],\n\t\tcsp: [self.HTMLIFrameElement],\n\t\tcredentialless: [self.HTMLIFrameElement],\n\t\tsrc: [\n\t\t\tself.HTMLImageElement,\n\t\t\tself.HTMLMediaElement,\n\t\t\tself.HTMLIFrameElement,\n\t\t\tself.HTMLFrameElement,\n\t\t\tself.HTMLEmbedElement,\n\t\t\tself.HTMLScriptElement,\n\t\t\tself.HTMLSourceElement,\n\t\t],\n\t\thref: [\n\t\t\tself.HTMLAnchorElement,\n\t\t\tself.HTMLLinkElement,\n\t\t\tself.SVGUseElement,\n\t\t\tself.SVGImageElement,\n\t\t],\n\t\tdata: [self.HTMLObjectElement],\n\t\taction: [self.HTMLFormElement],\n\t\tformaction: [self.HTMLButtonElement, self.HTMLInputElement],\n\t\tsrcdoc: [self.HTMLIFrameElement],\n\t\tsrcset: [self.HTMLImageElement, self.HTMLSourceElement],\n\t\tposter: [self.HTMLVideoElement],\n\t\timagesrcset: [self.HTMLLinkElement],\n\t};\n\n\tconst urlinterfaces = [\n\t\tself.HTMLAnchorElement.prototype,\n\t\tself.HTMLAreaElement.prototype,\n\t];\n\tconst originalhrefs = [\n\t\tnativeGetOwnPropertyDescriptor(self.HTMLAnchorElement.prototype, \"href\"),\n\t\tnativeGetOwnPropertyDescriptor(self.HTMLAreaElement.prototype, \"href\"),\n\t];\n\n\tconst attrs = Object.keys(attrObject);\n\n\tfor (const attr of attrs) {\n\t\tfor (const element of attrObject[attr]) {\n\t\t\tconst descriptor = nativeGetOwnPropertyDescriptor(\n\t\t\t\telement.prototype,\n\t\t\t\tattr\n\t\t\t);\n\t\t\tObject.defineProperty(element.prototype, attr, {\n\t\t\t\tget() {\n\t\t\t\t\tif ([\"src\", \"data\", \"href\", \"action\", \"formaction\"].includes(attr)) {\n\t\t\t\t\t\treturn unrewriteUrl(descriptor.get.call(this));\n\t\t\t\t\t}\n\n\t\t\t\t\treturn descriptor.get.call(this);\n\t\t\t\t},\n\n\t\t\t\tset(value) {\n\t\t\t\t\treturn this.setAttribute(attr, value);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\t// note that href is not here\n\tconst urlprops = [\n\t\t\"protocol\",\n\t\t\"hash\",\n\t\t\"host\",\n\t\t\"hostname\",\n\t\t\"origin\",\n\t\t\"pathname\",\n\t\t\"port\",\n\t\t\"search\",\n\t];\n\tfor (const prop of urlprops) {\n\t\tfor (const i in urlinterfaces) {\n\t\t\tconst target = urlinterfaces[i];\n\t\t\tconst desc = originalhrefs[i];\n\t\t\tclient.RawTrap(target, prop, {\n\t\t\t\tget(ctx) {\n\t\t\t\t\tconst href = desc.get.call(ctx.this);\n\t\t\t\t\tif (!href) return href;\n\n\t\t\t\t\tconst url = new URL(unrewriteUrl(href));\n\n\t\t\t\t\treturn url[prop];\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\tclient.Trap(\"Node.prototype.baseURI\", {\n\t\tget() {\n\t\t\t// TODO this should be using ownerdocument but who gaf\n\t\t\tconst base = self.document.querySelector(\"base\");\n\t\t\tif (base) {\n\t\t\t\treturn new URL(base.href, client.url.origin).href;\n\t\t\t}\n\n\t\t\treturn client.url.origin;\n\t\t},\n\t\tset() {\n\t\t\treturn false;\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.getAttribute\", {\n\t\tapply(ctx) {\n\t\t\tconst [name] = ctx.args;\n\n\t\t\tif (name.startsWith(\"scramjet-attr\")) {\n\t\t\t\treturn ctx.return(null);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Element.prototype.hasAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\t`scramjet-attr-${name}`\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tconst attrib = ctx.fn.call(ctx.this, `scramjet-attr-${name}`);\n\t\t\t\tif (attrib === null) return ctx.return(\"\");\n\n\t\t\t\treturn ctx.return(attrib);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.getAttributeNames\", {\n\t\tapply(ctx) {\n\t\t\tconst attrNames = ctx.call() as string[];\n\t\t\tconst cleaned = attrNames.filter(\n\t\t\t\t(attr) => !attr.startsWith(\"scramjet-attr\")\n\t\t\t);\n\n\t\t\tctx.return(cleaned);\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.getAttributeNode\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0].startsWith(\"scramjet-attr\")) return ctx.return(null);\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.hasAttribute\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0].startsWith(\"scramjet-attr\")) return ctx.return(false);\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.setAttribute\", {\n\t\tapply(ctx) {\n\t\t\tconst [name, value] = ctx.args;\n\n\t\t\tconst ruleList = htmlRules.find((rule) => {\n\t\t\t\tconst r = rule[name.toLowerCase()];\n\t\t\t\tif (!r) return false;\n\t\t\t\tif (r === \"*\") return true;\n\t\t\t\tif (typeof r === \"function\") return false; // this can't happen but ts\n\n\t\t\t\treturn r.includes(ctx.this.tagName.toLowerCase());\n\t\t\t});\n\n\t\t\tif (ruleList) {\n\t\t\t\tctx.args[1] = ruleList.fn(value, client.meta, client.cookieStore);\n\t\t\t\tctx.fn.call(ctx.this, `scramjet-attr-${ctx.args[0]}`, value);\n\t\t\t}\n\t\t},\n\t});\n\n\t// i actually need to do something with this\n\tclient.Proxy(\"Element.prototype.setAttributeNode\", {\n\t\tapply(_ctx) {},\n\t});\n\n\tclient.Proxy(\"Element.prototype.setAttributeNS\", {\n\t\tapply(ctx) {\n\t\t\tconst [_namespace, name, value] = ctx.args;\n\n\t\t\tconst ruleList = htmlRules.find((rule) => {\n\t\t\t\tconst r = rule[name.toLowerCase()];\n\t\t\t\tif (!r) return false;\n\t\t\t\tif (r === \"*\") return true;\n\t\t\t\tif (typeof r === \"function\") return false; // this can't happen but ts\n\n\t\t\t\treturn r.includes(ctx.this.tagName.toLowerCase());\n\t\t\t});\n\n\t\t\tif (ruleList) {\n\t\t\t\tctx.args[2] = ruleList.fn(value, client.meta, client.cookieStore);\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Element.prototype.setAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\t`scramjet-attr-${ctx.args[1]}`,\n\t\t\t\t\tvalue\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.removeAttribute\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0].startsWith(\"scramjet-attr\")) return ctx.return(undefined);\n\t\t\tif (\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Element.prototype.hasAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\tctx.args[0]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tctx.fn.call(ctx.this, `scramjet-attr-${ctx.args[0]}`);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.toggleAttribute\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0].startsWith(\"scramjet-attr\")) return ctx.return(false);\n\t\t\tif (\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Element.prototype.hasAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\tctx.args[0]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tctx.fn.call(ctx.this, `scramjet-attr-${ctx.args[0]}`);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Trap(\"Element.prototype.innerHTML\", {\n\t\tset(ctx, value: string) {\n\t\t\tlet newval;\n\t\t\tif (ctx.this instanceof self.HTMLScriptElement) {\n\t\t\t\tnewval = rewriteJs(value, \"(anonymous script element)\", client.meta);\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Element.prototype.setAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\t\"scramjet-attr-script-source-src\",\n\t\t\t\t\tbytesToBase64(encoder.encode(newval))\n\t\t\t\t);\n\t\t\t} else if (ctx.this instanceof self.HTMLStyleElement) {\n\t\t\t\tnewval = rewriteCss(value, client.meta);\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tnewval = rewriteHtml(value, client.cookieStore, client.meta);\n\t\t\t\t} catch {\n\t\t\t\t\tnewval = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tctx.set(newval);\n\t\t},\n\t\tget(ctx) {\n\t\t\tif (ctx.this instanceof self.HTMLScriptElement) {\n\t\t\t\tconst scriptSource = client.natives.call(\n\t\t\t\t\t\"Element.prototype.getAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\t\"scramjet-attr-script-source-src\"\n\t\t\t\t);\n\n\t\t\t\tif (scriptSource) {\n\t\t\t\t\treturn atob(scriptSource);\n\t\t\t\t}\n\n\t\t\t\treturn ctx.get();\n\t\t\t}\n\t\t\tif (ctx.this instanceof self.HTMLStyleElement) {\n\t\t\t\treturn ctx.get();\n\t\t\t}\n\n\t\t\treturn unrewriteHtml(ctx.get());\n\t\t},\n\t});\n\n\tclient.Trap(\"Element.prototype.outerHTML\", {\n\t\tset(ctx, value: string) {\n\t\t\tctx.set(rewriteHtml(value, client.cookieStore, client.meta));\n\t\t},\n\t\tget(ctx) {\n\t\t\treturn unrewriteHtml(ctx.get());\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.setHTMLUnsafe\", {\n\t\tapply(ctx) {\n\t\t\ttry {\n\t\t\t\tctx.args[0] = rewriteHtml(\n\t\t\t\t\tctx.args[0],\n\t\t\t\t\tclient.cookieStore,\n\t\t\t\t\tclient.meta,\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t} catch {}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.getHTML\", {\n\t\tapply(ctx) {\n\t\t\tctx.return(unrewriteHtml(ctx.call()));\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.insertAdjacentHTML\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[1])\n\t\t\t\ttry {\n\t\t\t\t\tctx.args[1] = rewriteHtml(\n\t\t\t\t\t\tctx.args[1],\n\t\t\t\t\t\tclient.cookieStore,\n\t\t\t\t\t\tclient.meta,\n\t\t\t\t\t\tfalse\n\t\t\t\t\t);\n\t\t\t\t} catch {}\n\t\t},\n\t});\n\n\tclient.Trap(\n\t\t[\n\t\t\t\"HTMLIFrameElement.prototype.contentWindow\",\n\t\t\t\"HTMLFrameElement.prototype.contentWindow\",\n\t\t\t\"HTMLObjectElement.prototype.contentWindow\",\n\t\t\t\"HTMLEmbedElement.prototype.contentWindow\",\n\t\t],\n\t\t{\n\t\t\tget(ctx) {\n\t\t\t\tconst realwin = ctx.get() as Window;\n\t\t\t\tif (!realwin) return realwin;\n\n\t\t\t\tif (SCRAMJETCLIENT in realwin) {\n\t\t\t\t\treturn realwin[SCRAMJETCLIENT].globalProxy;\n\t\t\t\t} else {\n\t\t\t\t\t// hook the iframe\n\t\t\t\t\tconst newclient = new ScramjetClient(realwin);\n\t\t\t\t\tnewclient.hook();\n\n\t\t\t\t\treturn newclient.globalProxy;\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t);\n\n\tclient.Trap(\n\t\t[\n\t\t\t\"HTMLIFrameElement.prototype.contentDocument\",\n\t\t\t\"HTMLFrameElement.prototype.contentDocument\",\n\t\t\t\"HTMLObjectElement.prototype.contentDocument\",\n\t\t\t\"HTMLEmbedElement.prototype.contentDocument\",\n\t\t],\n\t\t{\n\t\t\tget(ctx) {\n\t\t\t\tconst realwin = client.descriptors.get(\n\t\t\t\t\t`${ctx.this.constructor.name}.prototype.contentWindow`,\n\t\t\t\t\tctx.this\n\t\t\t\t);\n\t\t\t\tif (!realwin) return realwin;\n\n\t\t\t\tif (SCRAMJETCLIENT in realwin) {\n\t\t\t\t\treturn realwin[SCRAMJETCLIENT].documentProxy;\n\t\t\t\t} else {\n\t\t\t\t\tconst newclient = new ScramjetClient(realwin);\n\t\t\t\t\tnewclient.hook();\n\n\t\t\t\t\treturn newclient.documentProxy;\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t);\n\n\tclient.Proxy(\n\t\t[\n\t\t\t\"HTMLIFrameElement.prototype.getSVGDocument\",\n\t\t\t\"HTMLObjectElement.prototype.getSVGDocument\",\n\t\t\t\"HTMLEmbedElement.prototype.getSVGDocument\",\n\t\t],\n\t\t{\n\t\t\tapply(ctx) {\n\t\t\t\tconst doc = ctx.call();\n\t\t\t\tif (doc) {\n\t\t\t\t\treturn ctx.return(ctx.this.contentDocument);\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t);\n\n\tclient.Trap(\"TreeWalker.prototype.currentNode\", {\n\t\tget(ctx) {\n\t\t\treturn ctx.get();\n\t\t},\n\t\tset(ctx, value) {\n\t\t\tif (value === client.documentProxy) {\n\t\t\t\treturn ctx.set(self.document);\n\t\t\t}\n\n\t\t\treturn ctx.set(value);\n\t\t},\n\t});\n\n\tclient.Proxy(\"Document.prototype.open\", {\n\t\tapply(ctx) {\n\t\t\tconst doc = ctx.call() as Document;\n\n\t\t\tconst scram: ScramjetClient = doc[SCRAMJETCLIENT];\n\t\t\tif (!scram) return ctx.return(doc); // ??\n\n\t\t\treturn ctx.return(scram.documentProxy);\n\t\t},\n\t});\n\n\tclient.Trap(\"Node.prototype.ownerDocument\", {\n\t\tget(ctx) {\n\t\t\tconst doc = ctx.get() as Document | null;\n\t\t\tif (!doc) return null;\n\n\t\t\tconst scram: ScramjetClient = doc[SCRAMJETCLIENT];\n\t\t\tif (!scram) return doc; // ??\n\n\t\t\treturn scram.documentProxy;\n\t\t},\n\t});\n\n\tclient.Trap(\n\t\t[\n\t\t\t\"Node.prototype.parentNode\",\n\t\t\t\"Node.prototype.parentElement\",\n\t\t\t\"Node.prototype.previousSibling\",\n\t\t\t\"Node.prototype.nextSibling\",\n\t\t\t\"Range.prototype.commonAncestorContainer\",\n\t\t\t\"AbstractRange.prototype.endContainer\",\n\t\t\t\"AbstractRange.prototype.startContainer\",\n\t\t],\n\t\t{\n\t\t\tget(ctx) {\n\t\t\t\tconst n = ctx.get() as Node;\n\t\t\t\tif (!(n instanceof Document)) return n;\n\n\t\t\t\tconst scram: ScramjetClient = n[SCRAMJETCLIENT];\n\t\t\t\tif (!scram) return n; // ??\n\n\t\t\t\treturn scram.documentProxy;\n\t\t\t},\n\t\t}\n\t);\n\n\tclient.Proxy(\"Node.prototype.getRootNode\", {\n\t\tapply(ctx) {\n\t\t\tconst n = ctx.call() as Node;\n\t\t\tif (!(n instanceof Document)) return ctx.return(n);\n\n\t\t\tconst scram: ScramjetClient = n[SCRAMJETCLIENT];\n\t\t\tif (!scram) return ctx.return(n); // ??\n\n\t\t\treturn ctx.return(scram.documentProxy);\n\t\t},\n\t});\n\n\tclient.Proxy(\n\t\t[\n\t\t\t\"DOMParser.prototype.parseFromString\",\n\t\t\t\"Document.prototype.parseHTMLUnsafe\",\n\t\t],\n\t\t{\n\t\t\tapply(ctx) {\n\t\t\t\tif (ctx.args[1] === \"text/html\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tctx.args[0] = rewriteHtml(\n\t\t\t\t\t\t\tctx.args[0],\n\t\t\t\t\t\t\tclient.cookieStore,\n\t\t\t\t\t\t\tclient.meta,\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch {}\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t);\n}\n","import { ScramjetClient } from \"../client\";\nimport { rewriteCss } from \"../../shared\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\"FontFace\", {\n\t\tconstruct(ctx) {\n\t\t\tctx.args[1] = rewriteCss(ctx.args[1], client.meta);\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"../client\";\nimport { rewriteUrl } from \"../../shared\";\nimport { UrlChangeEvent } from \"../events\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\"History.prototype.pushState\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[2] || ctx.args[2] === \"\")\n\t\t\t\tctx.args[2] = rewriteUrl(ctx.args[2], client.meta);\n\t\t\tctx.call();\n\n\t\t\tconst ev = new UrlChangeEvent(client.url.href);\n\t\t\tif (client.frame) client.frame.dispatchEvent(ev);\n\t\t},\n\t});\n\n\tclient.Proxy(\"History.prototype.replaceState\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[2] || ctx.args[2] === \"\")\n\t\t\t\tctx.args[2] = rewriteUrl(ctx.args[2], client.meta);\n\t\t\tctx.call();\n\n\t\t\tconst ev = new UrlChangeEvent(client.url.href);\n\t\t\tif (client.frame) client.frame.dispatchEvent(ev);\n\t\t},\n\t});\n}\n","export default function (client, self: Self) {\n\t// @ts-ignore\n\tdelete self.navigation;\n}\n","import { rewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\nimport { SCRAMJETCLIENT } from \"../../symbols\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"window.open\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0]) ctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\n\t\t\tif ([\"_parent\", \"_top\", \"_unfencedTop\"].includes(ctx.args[1]))\n\t\t\t\tctx.args[1] = \"_self\";\n\n\t\t\tconst realwin = ctx.call();\n\n\t\t\tif (!realwin) return ctx.return(realwin);\n\n\t\t\tif (SCRAMJETCLIENT in realwin) {\n\t\t\t\treturn ctx.return(realwin[SCRAMJETCLIENT].globalProxy);\n\t\t\t} else {\n\t\t\t\tconst newclient = new ScramjetClient(realwin);\n\t\t\t\t// hook the opened window\n\t\t\t\tnewclient.hook();\n\n\t\t\t\treturn ctx.return(newclient.globalProxy);\n\t\t\t}\n\t\t},\n\t});\n\n\t// opener will refer to the real window if it was opened by window.open\n\tclient.Trap(\"opener\", {\n\t\tget(ctx) {\n\t\t\tconst realwin = ctx.get() as Window;\n\n\t\t\tif (realwin && SCRAMJETCLIENT in realwin) {\n\t\t\t\treturn realwin[SCRAMJETCLIENT].globalProxy;\n\t\t\t} else {\n\t\t\t\t// the opener has to have been already hooked, so if we reach here then it's a real window\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Trap(\"window.frameElement\", {\n\t\tget(ctx) {\n\t\t\tconst f = ctx.get() as HTMLIFrameElement | null;\n\t\t\tif (!f) return f;\n\n\t\t\tconst win = f.ownerDocument.defaultView;\n\t\t\tif (win[SCRAMJETCLIENT]) {\n\t\t\t\t// then this is a subframe in a scramjet context, and it's safe to pass back the real iframe\n\t\t\t\treturn f;\n\t\t\t} else {\n\t\t\t\t// no, the top frame is outside the sandbox\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Trap(\"origin\", {\n\t\tget() {\n\t\t\t// this isn't right!!\n\t\t\treturn client.url.origin;\n\t\t},\n\t\tset() {\n\t\t\treturn false;\n\t\t},\n\t});\n\n\tclient.Trap(\"Document.prototype.URL\", {\n\t\tget() {\n\t\t\treturn client.url.href;\n\t\t},\n\t\tset() {\n\t\t\treturn false;\n\t\t},\n\t});\n\n\tclient.Trap(\"Document.prototype.documentURI\", {\n\t\tget() {\n\t\t\treturn client.url.href;\n\t\t},\n\t\tset() {\n\t\t\treturn false;\n\t\t},\n\t});\n\n\tclient.Trap(\"Document.prototype.domain\", {\n\t\tget() {\n\t\t\treturn client.url.hostname;\n\t\t},\n\t\tset() {\n\t\t\treturn false;\n\t\t},\n\t});\n}\n","import { unrewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Trap(\"PerformanceEntry.prototype.name\", {\n\t\tget(ctx) {\n\t\t\treturn unrewriteUrl(ctx.get() as string);\n\t\t},\n\t});\n}\n","import { rewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\nimport { type MessageC2W } from \"../../worker\";\nimport { flagEnabled } from \"../../scramjet\";\n\n// we need a late order because we're mangling with addEventListener at a higher level\nexport const order = 2;\n\nexport const enabled = (client: ScramjetClient) =>\n\tflagEnabled(\"serviceworkers\", client.url);\n\nexport function disabled(_client: ScramjetClient, _self: Self) {\n\tReflect.deleteProperty(Navigator.prototype, \"serviceWorker\");\n}\n\ntype FakeRegistrationState = {\n\tscope: string;\n\tactive: ServiceWorker;\n};\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tconst registrationmap: WeakMap<\n\t\tServiceWorkerRegistration,\n\t\tFakeRegistrationState\n\t> = new WeakMap();\n\tclient.Proxy(\"EventTarget.prototype.addEventListener\", {\n\t\tapply(ctx) {\n\t\t\tif (registrationmap.get(ctx.this)) {\n\t\t\t\t// do nothing\n\t\t\t\tctx.return(undefined);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"EventTarget.prototype.removeEventListener\", {\n\t\tapply(ctx) {\n\t\t\tif (registrationmap.get(ctx.this)) {\n\t\t\t\t// do nothing\n\t\t\t\tctx.return(undefined);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"ServiceWorkerContainer.prototype.getRegistration\", {\n\t\tapply(ctx) {\n\t\t\tctx.return(new Promise((resolve) => resolve(registration)));\n\t\t},\n\t});\n\n\tclient.Proxy(\"ServiceWorkerContainer.prototype.getRegistrations\", {\n\t\tapply(ctx) {\n\t\t\tctx.return(new Promise((resolve) => resolve([registration])));\n\t\t},\n\t});\n\n\tclient.Trap(\"ServiceWorkerContainer.prototype.ready\", {\n\t\tget(_ctx) {\n\t\t\treturn new Promise((resolve) => resolve(registration));\n\t\t},\n\t});\n\n\tclient.Trap(\"ServiceWorkerContainer.prototype.controller\", {\n\t\tget(ctx) {\n\t\t\treturn registration?.active;\n\t\t},\n\t});\n\n\tclient.Proxy(\"ServiceWorkerContainer.prototype.register\", {\n\t\tapply(ctx) {\n\t\t\tconst fakeRegistration = new EventTarget() as ServiceWorkerRegistration;\n\t\t\tObject.setPrototypeOf(\n\t\t\t\tfakeRegistration,\n\t\t\t\tself.ServiceWorkerRegistration.prototype\n\t\t\t);\n\t\t\tfakeRegistration.constructor = ctx.fn;\n\t\t\tlet url = rewriteUrl(ctx.args[0], client.meta) + \"?dest=serviceworker\";\n\t\t\tif (ctx.args[1] && ctx.args[1].type === \"module\") {\n\t\t\t\turl += \"&type=module\";\n\t\t\t}\n\n\t\t\tconst worker = client.natives.construct(\"SharedWorker\", url);\n\t\t\tconst handle = worker.port;\n\t\t\tconst state: FakeRegistrationState = {\n\t\t\t\tscope: ctx.args[0],\n\t\t\t\tactive: handle as ServiceWorker,\n\t\t\t};\n\t\t\tconst controller = client.descriptors.get(\n\t\t\t\t\"ServiceWorkerContainer.prototype.controller\",\n\t\t\t\tclient.serviceWorker\n\t\t\t);\n\n\t\t\tclient.natives.call(\n\t\t\t\t\"ServiceWorker.prototype.postMessage\",\n\t\t\t\tcontroller,\n\t\t\t\t{\n\t\t\t\t\tscramjet$type: \"registerServiceWorker\",\n\t\t\t\t\tport: handle,\n\t\t\t\t\torigin: client.url.origin,\n\t\t\t\t} as MessageC2W,\n\t\t\t\t[handle]\n\t\t\t);\n\n\t\t\tregistrationmap.set(fakeRegistration, state);\n\t\t\tctx.return(new Promise((resolve) => resolve(fakeRegistration)));\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, self: typeof window) {\n\tconst handler: ProxyHandler<Storage> = {\n\t\tget(target, prop) {\n\t\t\tswitch (prop) {\n\t\t\t\tcase \"getItem\":\n\t\t\t\t\treturn (key: string) => {\n\t\t\t\t\t\treturn target.getItem(client.url.host + \"@\" + key);\n\t\t\t\t\t};\n\n\t\t\t\tcase \"setItem\":\n\t\t\t\t\treturn (key: string, value: string) => {\n\t\t\t\t\t\treturn target.setItem(client.url.host + \"@\" + key, value);\n\t\t\t\t\t};\n\n\t\t\t\tcase \"removeItem\":\n\t\t\t\t\treturn (key: string) => {\n\t\t\t\t\t\treturn target.removeItem(client.url.host + \"@\" + key);\n\t\t\t\t\t};\n\n\t\t\t\tcase \"clear\":\n\t\t\t\t\treturn () => {\n\t\t\t\t\t\tfor (const key in Object.keys(target)) {\n\t\t\t\t\t\t\tif (key.startsWith(client.url.host)) {\n\t\t\t\t\t\t\t\ttarget.removeItem(key);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\tcase \"key\":\n\t\t\t\t\treturn (index: number) => {\n\t\t\t\t\t\tconst keys = Object.keys(target).filter((key) =>\n\t\t\t\t\t\t\tkey.startsWith(client.url.host)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn target.getItem(keys[index]);\n\t\t\t\t\t};\n\n\t\t\t\tcase \"length\":\n\t\t\t\t\treturn Object.keys(target).filter((key) =>\n\t\t\t\t\t\tkey.startsWith(client.url.host)\n\t\t\t\t\t).length;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif (prop in Object.prototype || typeof prop === \"symbol\") {\n\t\t\t\t\t\treturn Reflect.get(target, prop);\n\t\t\t\t\t}\n\t\t\t\t\tconsole.log(\"GET\", prop, target == realLocalStorage);\n\n\t\t\t\t\treturn target.getItem(client.url.host + \"@\" + (prop as string));\n\t\t\t}\n\t\t},\n\n\t\tset(target, prop, value) {\n\t\t\tif (target == realLocalStorage)\n\t\t\t\tconsole.log(\"SET\", prop, value, target === realLocalStorage);\n\t\t\ttarget.setItem(client.url.host + \"@\" + (prop as string), value);\n\n\t\t\treturn true;\n\t\t},\n\n\t\townKeys(target) {\n\t\t\treturn Reflect.ownKeys(target)\n\t\t\t\t.filter((f) => typeof f === \"string\" && f.startsWith(client.url.host))\n\t\t\t\t.map((f) =>\n\t\t\t\t\ttypeof f === \"string\" ? f.substring(client.url.host.length + 1) : f\n\t\t\t\t);\n\t\t},\n\n\t\tgetOwnPropertyDescriptor(target, property) {\n\t\t\treturn {\n\t\t\t\tvalue: target.getItem(client.url.host + \"@\" + (property as string)),\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true,\n\t\t\t};\n\t\t},\n\n\t\tdefineProperty(target, property, attributes) {\n\t\t\ttarget.setItem(\n\t\t\t\tclient.url.host + \"@\" + (property as string),\n\t\t\t\tattributes.value\n\t\t\t);\n\n\t\t\treturn true;\n\t\t},\n\t};\n\n\tconst realLocalStorage = self.localStorage;\n\n\tconst localStorageProxy = new Proxy(self.localStorage, handler);\n\tconst sessionStorageProxy = new Proxy(self.sessionStorage, handler);\n\n\tdelete self.localStorage;\n\tdelete self.sessionStorage;\n\n\tself.localStorage = localStorageProxy;\n\tself.sessionStorage = sessionStorageProxy;\n}\n","export class NavigateEvent extends Event {\n\tconstructor(public url: string) {\n\t\tsuper(\"navigate\");\n\t}\n}\n\nexport class UrlChangeEvent extends Event {\n\tconstructor(public url: string) {\n\t\tsuper(\"urlchange\");\n\t}\n}\n\nexport class ScramjetContextInit extends Event {\n\tconstructor(public window: Self) {\n\t\tsuper(\"contextInit\");\n\t}\n}\n","// import { encodeUrl } from \"../shared\";\nimport { iswindow } from \".\";\nimport { SCRAMJETCLIENT } from \"../symbols\";\nimport { ScramjetClient } from \"./client\";\n// import { config } from \"../shared\";\nimport { getOwnPropertyDescriptorHandler } from \"./helpers\";\n\nexport const UNSAFE_GLOBALS = [\n\t\"window\",\n\t\"self\",\n\t\"globalThis\",\n\t\"this\",\n\t\"parent\",\n\t\"top\",\n\t\"location\",\n\t\"document\",\n\t\"eval\",\n\t\"frames\",\n];\n\nexport function createGlobalProxy(\n\tclient: ScramjetClient,\n\tself: typeof globalThis\n): typeof globalThis {\n\treturn new Proxy(self, {\n\t\tget(target, prop) {\n\t\t\tconst value = Reflect.get(target, prop);\n\n\t\t\tif (\n\t\t\t\tiswindow &&\n\t\t\t\t(typeof prop === \"string\" || typeof prop === \"number\") &&\n\t\t\t\t!isNaN(Number(prop)) &&\n\t\t\t\tvalue\n\t\t\t) {\n\t\t\t\tconst win: Self = value.self;\n\t\t\t\t// indexing into window gives you the contentWindow of the subframes for some reason\n\t\t\t\t// you can't *set* it so this should always be the right value\n\t\t\t\tif (win) {\n\t\t\t\t\tif (SCRAMJETCLIENT in win) {\n\t\t\t\t\t\t// then we've already hooked this frame and we can just send over its proxy\n\t\t\t\t\t\treturn win[SCRAMJETCLIENT].globalProxy;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// this can happen if it's an about:blank iframe that we've never gotten the chance to inject into\n\t\t\t\t\t\t// just make a new client for it and inject\n\t\t\t\t\t\tconst newclient = new ScramjetClient(win);\n\t\t\t\t\t\tnewclient.hook();\n\n\t\t\t\t\t\treturn newclient.globalProxy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (prop === \"$scramjet\") return undefined;\n\n\t\t\tif (typeof prop === \"string\" && UNSAFE_GLOBALS.includes(prop))\n\t\t\t\treturn client.wrapfn(value);\n\n\t\t\treturn value;\n\t\t},\n\n\t\tset(target, prop, value) {\n\t\t\tif (prop === \"location\") {\n\t\t\t\tclient.url = value;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn Reflect.set(target, prop, value);\n\t\t},\n\t\thas(target, prop) {\n\t\t\tif (prop === \"$scramjet\") return false;\n\n\t\t\treturn Reflect.has(target, prop);\n\t\t},\n\t\townKeys(target) {\n\t\t\treturn Reflect.ownKeys(target).filter((key) => key !== \"$scramjet\");\n\t\t},\n\t\tdefineProperty(target, property, attributes) {\n\t\t\tif (!attributes.get && !attributes.set) {\n\t\t\t\tattributes.writable = true;\n\t\t\t}\n\t\t\tattributes.configurable = true;\n\n\t\t\treturn Reflect.defineProperty(target, property, attributes);\n\t\t},\n\t\tgetOwnPropertyDescriptor: getOwnPropertyDescriptorHandler,\n\t});\n}\n","export function getOwnPropertyDescriptorHandler(target, prop) {\n\tconst realDescriptor = Reflect.getOwnPropertyDescriptor(target, prop);\n\n\treturn realDescriptor;\n}\n","// entrypoint for scramjet.client.js\n\nimport { loadCodecs } from \"../scramjet\";\nimport { SCRAMJETCLIENT } from \"../symbols\";\nimport { ScramjetClient } from \"./client\";\nimport { ScramjetContextInit } from \"./events\";\nimport { ScramjetServiceWorkerRuntime } from \"./swruntime\";\n\nexport const iswindow = \"window\" in self && window instanceof Window;\nexport const isworker = \"WorkerGlobalScope\" in self;\nexport const issw = \"ServiceWorkerGlobalScope\" in self;\nexport const isdedicated = \"DedicatedWorkerGlobalScope\" in self;\nexport const isshared = \"SharedWorkerGlobalScope\" in self;\nexport const isemulatedsw =\n\tnew URL(self.location.href).searchParams.get(\"dest\") === \"serviceworker\";\n\ndbg.log(\"scrammin\");\n// if it already exists, that means the handlers have probably already been setup by the parent document\nif (!(SCRAMJETCLIENT in <Partial<typeof self>>self)) {\n\tloadCodecs();\n\n\tconst client = new ScramjetClient(self);\n\n\tif (self.COOKIE) client.loadcookies(self.COOKIE);\n\n\tclient.hook();\n\n\tif (isemulatedsw) {\n\t\tconst runtime = new ScramjetServiceWorkerRuntime(client);\n\t\truntime.hook();\n\t}\n\n\tconst ev = new ScramjetContextInit(client.global.window);\n\tclient.frame?.dispatchEvent(ev);\n}\n\nReflect.deleteProperty(self, \"WASM\");\nReflect.deleteProperty(self, \"COOKIE\");\nif (\"document\" in self && document?.currentScript) {\n\tdocument.currentScript.remove();\n}\n","// @ts-nocheck\nimport { ScramjetClient } from \"./client\";\nimport { nativeGetOwnPropertyDescriptor } from \"./natives\";\nimport { rewriteUrl } from \"../shared\";\nimport { UrlChangeEvent } from \"./events\";\nimport { iswindow } from \".\";\n\nexport function createLocationProxy(\n\tclient: ScramjetClient,\n\tself: typeof globalThis\n) {\n\tconst Location = iswindow ? self.Location : self.WorkerLocation;\n\t// location cannot be Proxy()d\n\tconst fakeLocation = {};\n\tObject.setPrototypeOf(fakeLocation, Location.prototype);\n\tfakeLocation.constructor = Location;\n\n\t// for some reason it's on the object for Location and on the prototype for WorkerLocation??\n\tconst descriptorSource = iswindow ? self.location : Location.prototype;\n\tconst urlprops = [\n\t\t\"protocol\",\n\t\t\"hash\",\n\t\t\"host\",\n\t\t\"hostname\",\n\t\t\"href\",\n\t\t\"origin\",\n\t\t\"pathname\",\n\t\t\"port\",\n\t\t\"search\",\n\t];\n\tfor (const prop of urlprops) {\n\t\tconst native = nativeGetOwnPropertyDescriptor(descriptorSource, prop);\n\t\tif (!native) continue;\n\n\t\tconst desc = {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t};\n\t\tif (native.get) {\n\t\t\tdesc.get = new Proxy(native.get, {\n\t\t\t\tapply() {\n\t\t\t\t\treturn client.url[prop];\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\tif (native.set) {\n\t\t\tdesc.set = new Proxy(native.set, {\n\t\t\t\tapply(target, thisArg, args) {\n\t\t\t\t\tif (prop === \"href\") {\n\t\t\t\t\t\t// special case\n\t\t\t\t\t\tclient.url = args[0];\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (prop === \"hash\") {\n\t\t\t\t\t\tself.location.hash = args[0];\n\t\t\t\t\t\tconst ev = new UrlChangeEvent(client.url.href);\n\t\t\t\t\t\tif (client.frame) client.frame.dispatchEvent(ev);\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst url = new URL(client.url.href);\n\t\t\t\t\turl[prop] = args[0];\n\t\t\t\t\tclient.url = url;\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\tObject.defineProperty(fakeLocation, prop, desc);\n\t}\n\n\t// functions\n\tfakeLocation.toString = new Proxy(self.location.toString, {\n\t\tapply() {\n\t\t\treturn client.url.href;\n\t\t},\n\t});\n\n\tif (self.location.valueOf)\n\t\tfakeLocation.valueOf = new Proxy(self.location.valueOf, {\n\t\t\tapply() {\n\t\t\t\treturn client.url.href;\n\t\t\t},\n\t\t});\n\tif (self.location.assign)\n\t\tfakeLocation.assign = new Proxy(self.location.assign, {\n\t\t\tapply(target, thisArg, args) {\n\t\t\t\targs[0] = rewriteUrl(args[0], client.meta);\n\t\t\t\tReflect.apply(target, self.location, args);\n\t\t\t},\n\t\t});\n\tif (self.location.reload)\n\t\tfakeLocation.reload = new Proxy(self.location.reload, {\n\t\t\tapply(target, thisArg, args) {\n\t\t\t\tReflect.apply(target, self.location, args);\n\t\t\t},\n\t\t});\n\tif (self.location.replace)\n\t\tfakeLocation.replace = new Proxy(self.location.replace, {\n\t\t\tapply(target, thisArg, args) {\n\t\t\t\targs[0] = rewriteUrl(args[0], client.meta);\n\t\t\t\tReflect.apply(target, self.location, args);\n\t\t\t},\n\t\t});\n\n\treturn fakeLocation;\n}\n","export const nativeFunction = self.Function;\nexport const nativeGetOwnPropertyDescriptor =\n\tself.Object.getOwnPropertyDescriptor;\n","import { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"console.clear\", {\n\t\tapply(ctx) {\n\t\t\t// fuck you\n\t\t\tctx.return(undefined);\n\t\t},\n\t});\n\n\tconst log = console.log;\n\tclient.Trap(\"console.log\", {\n\t\tset(_ctx, _v) {\n\t\t\t// is there a legitimate reason to let sites do this?\n\t\t},\n\t\tget(_ctx) {\n\t\t\treturn log;\n\t\t},\n\t});\n}\n","import { rewriteBlob, unrewriteBlob } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\nexport default function (client: ScramjetClient) {\n\t// hide the origin from object urls from the page\n\tclient.Proxy(\"URL.createObjectURL\", {\n\t\tapply(ctx) {\n\t\t\tconst url: string = ctx.call();\n\t\t\tif (url.startsWith(\"blob:\")) {\n\t\t\t\tctx.return(rewriteBlob(url, client.meta));\n\t\t\t} else {\n\t\t\t\tctx.return(url);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"URL.revokeObjectURL\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = unrewriteBlob(ctx.args[0]);\n\t\t},\n\t});\n}\n","import { rewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\"CacheStorage.prototype.open\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = `${client.url.origin}@${ctx.args[0]}`;\n\t\t},\n\t});\n\n\tclient.Proxy(\"CacheStorage.prototype.has\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = `${client.url.origin}@${ctx.args[0]}`;\n\t\t},\n\t});\n\n\tclient.Proxy(\"CacheStorage.prototype.match\", {\n\t\tapply(ctx) {\n\t\t\tif (typeof ctx.args[0] === \"string\" || ctx.args[0] instanceof URL) {\n\t\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"CacheStorage.prototype.delete\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = `${client.url.origin}@${ctx.args[0]}`;\n\t\t},\n\t});\n\n\tclient.Proxy(\"Cache.prototype.add\", {\n\t\tapply(ctx) {\n\t\t\tif (typeof ctx.args[0] === \"string\" || ctx.args[0] instanceof URL) {\n\t\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Cache.prototype.addAll\", {\n\t\tapply(ctx) {\n\t\t\tfor (let i = 0; i < ctx.args[0].length; i++) {\n\t\t\t\tif (\n\t\t\t\t\ttypeof ctx.args[0][i] === \"string\" ||\n\t\t\t\t\tctx.args[0][i] instanceof URL\n\t\t\t\t) {\n\t\t\t\t\tctx.args[0][i] = rewriteUrl(ctx.args[0][i], client.meta);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Cache.prototype.put\", {\n\t\tapply(ctx) {\n\t\t\tif (typeof ctx.args[0] === \"string\" || ctx.args[0] instanceof URL) {\n\t\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Cache.prototype.match\", {\n\t\tapply(ctx) {\n\t\t\tif (typeof ctx.args[0] === \"string\" || ctx.args[0] instanceof URL) {\n\t\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Cache.prototype.matchAll\", {\n\t\tapply(ctx) {\n\t\t\tif (\n\t\t\t\t(ctx.args[0] && typeof ctx.args[0] === \"string\") ||\n\t\t\t\t(ctx.args[0] && ctx.args[0] instanceof URL)\n\t\t\t) {\n\t\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Cache.prototype.keys\", {\n\t\tapply(ctx) {\n\t\t\tif (\n\t\t\t\t(ctx.args[0] && typeof ctx.args[0] === \"string\") ||\n\t\t\t\t(ctx.args[0] && ctx.args[0] instanceof URL)\n\t\t\t) {\n\t\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Cache.prototype.delete\", {\n\t\tapply(ctx) {\n\t\t\tif (typeof ctx.args[0] === \"string\" || ctx.args[0] instanceof URL) {\n\t\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t\t}\n\t\t},\n\t});\n}\n","import { flagEnabled } from \"../../scramjet\";\nimport { ScramjetClient } from \"../client\";\n\nexport const enabled = (client: ScramjetClient) =>\n\tflagEnabled(\"captureErrors\", client.url);\nexport function argdbg(arg, recurse = []) {\n\tswitch (typeof arg) {\n\t\tcase \"string\":\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif (\n\t\t\t\targ &&\n\t\t\t\targ[Symbol.iterator] &&\n\t\t\t\ttypeof arg[Symbol.iterator] === \"function\"\n\t\t\t)\n\t\t\t\tfor (const prop in arg) {\n\t\t\t\t\t// make sure it's not a getter\n\t\t\t\t\tconst desc = Object.getOwnPropertyDescriptor(arg, prop);\n\t\t\t\t\tif (desc && desc.get) continue;\n\n\t\t\t\t\tconst ar = arg[prop];\n\t\t\t\t\tif (recurse.includes(ar)) continue;\n\t\t\t\t\trecurse.push(ar);\n\t\t\t\t\targdbg(ar, recurse);\n\t\t\t\t}\n\t\t\tbreak;\n\t}\n}\n\nexport default function (client: ScramjetClient, self: typeof globalThis) {\n\tself.$scramerr = function scramerr(e) {\n\t\tconsole.warn(\"CAUGHT ERROR\", e);\n\t};\n\n\tself.$scramdbg = function scramdbg(args, t) {\n\t\tif (args && typeof args === \"object\" && args.length > 0) argdbg(args);\n\t\targdbg(t);\n\n\t\treturn t;\n\t};\n\n\tclient.Proxy(\"Promise.prototype.catch\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0])\n\t\t\t\tctx.args[0] = new Proxy(ctx.args[0], {\n\t\t\t\t\tapply(target, thisArg, argArray) {\n\t\t\t\t\t\t// console.warn(\"CAUGHT PROMISE REJECTION\", argArray);\n\t\t\t\t\t\tReflect.apply(target, thisArg, argArray);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t},\n\t});\n}\n","import { flagEnabled } from \"../../scramjet\";\nimport { config, unrewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\n\nexport const enabled = (client: ScramjetClient) =>\n\tflagEnabled(\"cleanErrors\", client.url);\n\nexport default function (client: ScramjetClient, _self: Self) {\n\t// v8 only. all we need to do is clean the scramjet urls from stack traces\n\tconst closure = (error, stack) => {\n\t\tlet newstack = error.stack;\n\n\t\tfor (let i = 0; i < stack.length; i++) {\n\t\t\tconst url = stack[i].getFileName();\n\n\t\t\tif (url.endsWith(config.files.client)) {\n\t\t\t\t// strip stack frames including scramjet handlers from the trace\n\t\t\t\tconst lines = newstack.split(\"\\n\");\n\t\t\t\tconst line = lines.find((l) => l.includes(url));\n\t\t\t\tlines.splice(line, 1);\n\t\t\t\tnewstack = lines.join(\"\\n\");\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tnewstack = newstack.replaceAll(url, unrewriteUrl(url));\n\t\t\t} catch {}\n\t\t}\n\n\t\treturn newstack;\n\t};\n\tclient.Trap(\"Error.prepareStackTrace\", {\n\t\tget(_ctx) {\n\t\t\t// this is a funny js quirk. the getter is ran every time you type something in console\n\t\t\treturn closure;\n\t\t},\n\t\tset(_value) {\n\t\t\t// just ignore it if a site tries setting their own. not much we can really do\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"../client\";\nimport { config, rewriteJs } from \"../../shared\";\n\nexport default function (client: ScramjetClient, self: Self) {\n\t// used for proxying *direct eval*\n\t// eval(\"...\") -> eval($scramjet$rewrite(\"...\"))\n\tObject.defineProperty(self, config.globals.rewritefn, {\n\t\tvalue: function (js: any) {\n\t\t\tif (typeof js !== \"string\") return js;\n\n\t\t\tconst rewritten = rewriteJs(js, \"(direct eval proxy)\", client.meta);\n\n\t\t\treturn rewritten;\n\t\t},\n\t\twritable: false,\n\t\tconfigurable: false,\n\t});\n}\n\nexport function indirectEval(this: ScramjetClient, js: any) {\n\t// > If the argument of eval() is not a string, eval() returns the argument unchanged\n\tif (typeof js !== \"string\") return js;\n\n\tconst indirection = this.global.eval;\n\n\treturn indirection(\n\t\trewriteJs(js, \"(indirect eval proxy)\", this.meta) as string\n\t);\n}\n","import { iswindow } from \"..\";\nimport { SCRAMJETCLIENT } from \"../../symbols\";\nimport { ScramjetClient } from \"../client\";\nimport { getOwnPropertyDescriptorHandler } from \"../helpers\";\nimport { nativeGetOwnPropertyDescriptor } from \"../natives\";\nimport { unproxy } from \"./unproxy\";\n\nconst realOnEvent = Symbol.for(\"scramjet original onevent function\");\n\nexport default function (client: ScramjetClient, self: Self) {\n\tconst handlers = {\n\t\tmessage: {\n\t\t\t_init() {\n\t\t\t\tif (typeof this.data === \"object\" && \"$scramjet$type\" in this.data) {\n\t\t\t\t\t// this is a ctl message\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tports() {\n\t\t\t\t// don't know why i have to do this?\n\t\t\t\treturn this.ports;\n\t\t\t},\n\t\t\tsource() {\n\t\t\t\tif (this.source === null) return null;\n\n\t\t\t\tconst scram: ScramjetClient = this.source[SCRAMJETCLIENT];\n\n\t\t\t\tif (scram) return scram.globalProxy;\n\n\t\t\t\treturn this.source;\n\t\t\t},\n\t\t\torigin() {\n\t\t\t\tif (typeof this.data === \"object\" && \"$scramjet$origin\" in this.data)\n\t\t\t\t\treturn this.data.$scramjet$origin;\n\n\t\t\t\treturn client.url.origin;\n\t\t\t},\n\t\t\tdata() {\n\t\t\t\tif (typeof this.data === \"object\" && \"$scramjet$data\" in this.data)\n\t\t\t\t\treturn this.data.$scramjet$data;\n\n\t\t\t\treturn this.data;\n\t\t\t},\n\t\t},\n\t};\n\n\t// TODO! window.event not proxied\n\n\tfunction wraplistener(listener: (...args: any) => any) {\n\t\treturn new Proxy(listener, {\n\t\t\tapply(target, thisArg, argArray) {\n\t\t\t\tconst realEvent: Event = argArray[0];\n\n\t\t\t\t// we only need to handle events dispatched from the browser\n\t\t\t\tif (realEvent.isTrusted) {\n\t\t\t\t\tconst type = realEvent.type;\n\n\t\t\t\t\tif (type in handlers) {\n\t\t\t\t\t\tconst handler = handlers[type];\n\n\t\t\t\t\t\tif (handler._init) {\n\t\t\t\t\t\t\tif (handler._init.call(realEvent) === false) return;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\targArray[0] = new Proxy(realEvent, {\n\t\t\t\t\t\t\tget(_target, prop, reciever) {\n\t\t\t\t\t\t\t\tif (prop in handler) {\n\t\t\t\t\t\t\t\t\treturn handler[prop].call(_target);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn Reflect.get(target, prop, reciever);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetOwnPropertyDescriptor: getOwnPropertyDescriptorHandler,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!self.event) {\n\t\t\t\t\tObject.defineProperty(self, \"event\", {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\treturn argArray[0];\n\t\t\t\t\t\t},\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst rv = Reflect.apply(target, thisArg, argArray);\n\n\t\t\t\treturn rv;\n\t\t\t},\n\t\t\tgetOwnPropertyDescriptor: getOwnPropertyDescriptorHandler,\n\t\t});\n\t}\n\n\tclient.Proxy(\"EventTarget.prototype.addEventListener\", {\n\t\tapply(ctx) {\n\t\t\tunproxy(ctx, client);\n\t\t\tif (typeof ctx.args[1] !== \"function\") return;\n\n\t\t\tconst origlistener = ctx.args[1];\n\t\t\tconst proxylistener = wraplistener(origlistener);\n\n\t\t\tctx.args[1] = proxylistener;\n\n\t\t\tlet arr = client.eventcallbacks.get(ctx.this);\n\t\t\tarr ||= [] as any;\n\t\t\tarr.push({\n\t\t\t\tevent: ctx.args[0] as string,\n\t\t\t\toriginalCallback: origlistener,\n\t\t\t\tproxiedCallback: proxylistener,\n\t\t\t});\n\t\t\tclient.eventcallbacks.set(ctx.this, arr);\n\t\t},\n\t});\n\n\tclient.Proxy(\"EventTarget.prototype.removeEventListener\", {\n\t\tapply(ctx) {\n\t\t\tunproxy(ctx, client);\n\t\t\tif (typeof ctx.args[1] !== \"function\") return;\n\n\t\t\tconst arr = client.eventcallbacks.get(ctx.this);\n\t\t\tif (!arr) return;\n\n\t\t\tconst i = arr.findIndex(\n\t\t\t\t(e) => e.event === ctx.args[0] && e.originalCallback === ctx.args[1]\n\t\t\t);\n\t\t\tif (i === -1) return;\n\n\t\t\tconst r = arr.splice(i, 1);\n\t\t\tclient.eventcallbacks.set(ctx.this, arr);\n\n\t\t\tctx.args[1] = r[0].proxiedCallback;\n\t\t},\n\t});\n\n\tclient.Proxy(\"EventTarget.prototype.dispatchEvent\", {\n\t\tapply(ctx) {\n\t\t\tunproxy(ctx, client);\n\t\t},\n\t});\n\n\tconst targets = [self.self, self.MessagePort.prototype] as Array<any>;\n\tif (iswindow) targets.push(self.HTMLElement.prototype);\n\tif (self.Worker) targets.push(self.Worker.prototype);\n\n\tfor (const target of targets) {\n\t\tconst keys = Reflect.ownKeys(target);\n\n\t\tfor (const key of keys) {\n\t\t\tif (\n\t\t\t\ttypeof key === \"string\" &&\n\t\t\t\tkey.startsWith(\"on\") &&\n\t\t\t\thandlers[key.slice(2)]\n\t\t\t) {\n\t\t\t\tconst descriptor = nativeGetOwnPropertyDescriptor(target, key);\n\t\t\t\tif (!descriptor.get || !descriptor.set || !descriptor.configurable)\n\t\t\t\t\tcontinue;\n\n\t\t\t\t// these are the `onmessage`, `onclick`, etc. properties\n\t\t\t\tclient.RawTrap(target, key, {\n\t\t\t\t\tget(ctx) {\n\t\t\t\t\t\tif (this[realOnEvent]) return this[realOnEvent];\n\n\t\t\t\t\t\treturn ctx.get();\n\t\t\t\t\t},\n\t\t\t\t\tset(ctx, value: any) {\n\t\t\t\t\t\tthis[realOnEvent] = value;\n\n\t\t\t\t\t\tif (typeof value !== \"function\") return ctx.set(value);\n\n\t\t\t\t\t\tctx.set(wraplistener(value));\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n","import { ScramjetClient, ProxyCtx, Proxy } from \"../client\";\nimport { rewriteJs } from \"../../shared\";\n\nfunction rewriteFunction(ctx: ProxyCtx, client: ScramjetClient) {\n\tconst stringifiedFunction = ctx.call().toString();\n\n\tconst content = rewriteJs(\n\t\t`return ${stringifiedFunction}`,\n\t\t\"(function proxy)\",\n\t\tclient.meta\n\t);\n\tctx.return(ctx.fn(content)());\n}\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tconst handler: Proxy = {\n\t\tapply(ctx: ProxyCtx) {\n\t\t\trewriteFunction(ctx, client);\n\t\t},\n\t\tconstruct(ctx) {\n\t\t\trewriteFunction(ctx, client);\n\t\t},\n\t};\n\n\tclient.Proxy(\"Function\", handler);\n\t/*\n\t// god i love javascript\n\tclient.RawProxy(function () {}.constructor.prototype, \"constructor\", handler);\n\tclient.RawProxy(\n\t\tasync function () {}.constructor.prototype,\n\t\t\"constructor\",\n\t\thandler\n\t);\n\tclient.RawProxy(\n\t\tfunction* () {}.constructor.prototype,\n\t\t\"constructor\",\n\t\thandler\n\t);\n\tclient.RawProxy(\n\t\tasync function* () {}.constructor.prototype,\n\t\t\"constructor\",\n\t\thandler\n\t);\n\t*/\n}\n","import { scramtag } from './snippets/wasm-4b0f351a8e6eeb46/inline0.js';\n\nlet wasm;\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_export_2.set(idx, obj);\n return idx;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.buffer !== wasm.memory.buffer) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().slice(ptr, ptr + len));\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );\n\nconst encodeString = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n};\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer !== wasm.memory.buffer) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_export_2.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n/**\n * @param {string} js\n * @param {string} url\n * @param {string} script_url\n * @param {object} scramjet\n * @returns {RewriterOutput}\n */\nexport function rewrite_js(js, url, script_url, scramjet) {\n const ptr0 = passStringToWasm0(js, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(script_url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.rewrite_js(ptr0, len0, ptr1, len1, ptr2, len2, scramjet);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8ArrayMemory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n/**\n * @param {Uint8Array} js\n * @param {string} url\n * @param {string} script_url\n * @param {object} scramjet\n * @returns {RewriterOutput}\n */\nexport function rewrite_js_from_arraybuffer(js, url, script_url, scramjet) {\n const ptr0 = passArray8ToWasm0(js, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(script_url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.rewrite_js_from_arraybuffer(ptr0, len0, ptr1, len1, ptr2, len2, scramjet);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbg_call_3b770f0d6eb4720e = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = arg0.call(arg1, arg2, arg3);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_call_500db948e69c7330 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = arg0.call(arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_call_b0d8e36992d9900d = function() { return handleError(function (arg0, arg1) {\n const ret = arg0.call(arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_get_bbccf8970793c087 = function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_new_17f755666e48d1d8 = function() { return handleError(function (arg0, arg1) {\n const ret = new URL(getStringFromWasm0(arg0, arg1));\n return ret;\n }, arguments) };\n imports.wbg.__wbg_new_254fa9eac11932ae = function() {\n const ret = new Array();\n return ret;\n };\n imports.wbg.__wbg_new_688846f374351c92 = function() {\n const ret = new Object();\n return ret;\n };\n imports.wbg.__wbg_newnoargs_fd9e4bf8be2bc16d = function(arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg_newwithbase_aa2c471fe3eacc2b = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = new URL(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3));\n return ret;\n }, arguments) };\n imports.wbg.__wbg_now_62a101fe35b60230 = function(arg0) {\n const ret = arg0.now();\n return ret;\n };\n imports.wbg.__wbg_scramtag_bd98edaa0eaec45e = function(arg0) {\n const ret = scramtag();\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg_set_4e647025551483bd = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_static_accessor_GLOBAL_0be7472e492ad3e3 = function() {\n const ret = typeof global === 'undefined' ? null : global;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_GLOBAL_THIS_1a6eb482d12c9bfb = function() {\n const ret = typeof globalThis === 'undefined' ? null : globalThis;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_SELF_1dc398a895c82351 = function() {\n const ret = typeof self === 'undefined' ? null : self;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_WINDOW_ae1c80c7eea8d64a = function() {\n const ret = typeof window === 'undefined' ? null : window;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_toString_a491ccf7be1ca5c9 = function(arg0) {\n const ret = arg0.toString();\n return ret;\n };\n imports.wbg.__wbg_toString_cbcf95f260c441ae = function(arg0) {\n const ret = arg0.toString();\n return ret;\n };\n imports.wbg.__wbindgen_boolean_get = function(arg0) {\n const v = arg0;\n const ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2;\n return ret;\n };\n imports.wbg.__wbindgen_error_new = function(arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_export_2;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n ;\n };\n imports.wbg.__wbindgen_is_function = function(arg0) {\n const ret = typeof(arg0) === 'function';\n return ret;\n };\n imports.wbg.__wbindgen_is_undefined = function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n };\n imports.wbg.__wbindgen_number_new = function(arg0) {\n const ret = arg0;\n return ret;\n };\n imports.wbg.__wbindgen_string_get = function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_uint8_array_new = function(arg0, arg1) {\n var v0 = getArrayU8FromWasm0(arg0, arg1).slice();\n wasm.__wbindgen_free(arg0, arg1 * 1, 1);\n const ret = v0;\n return ret;\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n imports.wbg.memory = memory || new WebAssembly.Memory({initial:18,maximum:16384,shared:true});\n}\n\nfunction __wbg_finalize_init(instance, module, thread_stack_size) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n\n if (typeof thread_stack_size !== 'undefined' && (typeof thread_stack_size !== 'number' || thread_stack_size === 0 || thread_stack_size % 65536 !== 0)) { throw 'invalid stack size' }\n wasm.__wbindgen_start(thread_stack_size);\n return wasm;\n}\n\nfunction initSync(module, memory) {\n if (wasm !== undefined) return wasm;\n\n let thread_stack_size\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module, memory, thread_stack_size} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports, memory);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module, thread_stack_size);\n}\n\nasync function __wbg_init(module_or_path, memory) {\n if (wasm !== undefined) return wasm;\n\n let thread_stack_size\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path, memory, thread_stack_size} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('wasm_bg.wasm', \"\");\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n __wbg_init_memory(imports, memory);\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module, thread_stack_size);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","\n// slightly modified https://github.com/ungap/random-uuid/blob/main/index.js\nexport function scramtag() {\n return (\"\"+1e10).replace(/[018]/g,\n c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\n );\n}\n","import { URLMeta } from \"./url\";\n\n// i am a cat. i like to be petted. i like to be fed. i like to be\nimport {\n\tinitSync,\n\trewrite_js,\n\trewrite_js_from_arraybuffer,\n\tRewriterOutput,\n} from \"../../../rewriter/wasm/out/wasm.js\";\nimport { $scramjet, flagEnabled } from \"../../scramjet\";\n\ninitSync({\n\tmodule: new WebAssembly.Module(\n\t\tUint8Array.from(atob(self.WASM), (c) => c.charCodeAt(0))\n\t),\n});\n\nError.stackTraceLimit = 50;\n\nconst decoder = new TextDecoder();\n\nfunction rewriteJsWrapper(\n\tinput: string | ArrayBuffer,\n\turl: string | null,\n\tmeta: URLMeta\n): string | ArrayBuffer {\n\tlet out: RewriterOutput;\n\tconst before = performance.now();\n\ttry {\n\t\tif (typeof input === \"string\") {\n\t\t\tout = rewrite_js(input, meta.base.href, url || \"(unknown)\", $scramjet);\n\t\t} else {\n\t\t\tout = rewrite_js_from_arraybuffer(\n\t\t\t\tnew Uint8Array(input),\n\t\t\t\tmeta.base.href,\n\t\t\t\turl || \"(unknown)\",\n\t\t\t\t$scramjet\n\t\t\t);\n\t\t}\n\t} catch (err) {\n\t\tlet err1 = err as Error;\n\t\tconsole.error(\"failed rewriting js for\", url, err1, input);\n\t\terr1.message = `failed rewriting js for \"${url}\": ${err1.message}`;\n\t\tthrow err1;\n\t}\n\tconst after = performance.now();\n\tconst { js, errors, duration } = out;\n\n\tif (flagEnabled(\"rewriterLogs\", meta.base)) {\n\t\tfor (const error of errors) {\n\t\t\tconsole.error(\"oxc parse error\", error);\n\t\t}\n\t}\n\n\tif (flagEnabled(\"rewriterLogs\", meta.base)) {\n\t\tlet timespan: string;\n\t\tif (duration < 1n) {\n\t\t\ttimespan = \"BLAZINGLY FAST\";\n\t\t} else if (duration < 500n) {\n\t\t\ttimespan = \"decent speed\";\n\t\t} else {\n\t\t\ttimespan = \"really slow\";\n\t\t}\n\t\tconst overhead = (after - before - Number(duration)).toFixed(2);\n\t\tconsole.log(\n\t\t\t`oxc rewrite for \"${url || \"(unknown)\"}\" was ${timespan} (${duration}ms; ${overhead}ms overhead)`\n\t\t);\n\t}\n\n\treturn typeof input === \"string\" ? decoder.decode(js) : js;\n}\n\nexport function rewriteJs(\n\tjs: string | ArrayBuffer,\n\turl: string | null,\n\tmeta: URLMeta\n) {\n\tif (flagEnabled(\"naiiveRewriter\", meta.origin)) {\n\t\tconst text = typeof js === \"string\" ? js : new TextDecoder().decode(js);\n\n\t\tconsole.log(\"naiive\");\n\n\t\treturn rewriteJsNaiive(text);\n\t}\n\n\tjs = rewriteJsWrapper(js, url, meta);\n\n\treturn js;\n}\n\n// 1. does not work with modules\n// 2. cannot proxy import()\n// 3. disables \"use strict\" optimizations\n// 4. i think the global state can get clobbered somehow\n//\n// if you can ensure all the preconditions are met this is faster than full rewrites\nexport function rewriteJsNaiive(js: string | ArrayBuffer) {\n\tif (typeof js !== \"string\") {\n\t\tjs = new TextDecoder().decode(js);\n\t}\n\n\treturn `\n\t\twith (${$scramjet.config.globals.wrapfn}(globalThis)) {\n\n\t\t\t${js}\n\n\t\t}\n\t`;\n}\n","import { $scramjet } from \"../../scramjet\";\nimport { rewriteJs } from \"./js\";\n\nexport type URLMeta = {\n\torigin: URL;\n\tbase: URL;\n};\n\nfunction tryCanParseURL(url: string, origin?: string | URL): URL | null {\n\ttry {\n\t\treturn new URL(url, origin);\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport function rewriteBlob(url: string, meta: URLMeta) {\n\tconst blob = new URL(url.substring(\"blob:\".length));\n\n\treturn \"blob:\" + meta.origin.origin + blob.pathname;\n}\n\nexport function unrewriteBlob(url: string) {\n\tconst blob = new URL(url.substring(\"blob:\".length));\n\n\treturn \"blob:\" + location.origin + blob.pathname;\n}\n\nexport function rewriteUrl(url: string | URL, meta: URLMeta) {\n\tif (url instanceof URL) {\n\t\turl = url.toString();\n\t}\n\n\tif (url.startsWith(\"javascript:\")) {\n\t\treturn (\n\t\t\t\"javascript:\" +\n\t\t\trewriteJs(url.slice(\"javascript:\".length), \"(javascript: url)\", meta)\n\t\t);\n\t} else if (url.startsWith(\"blob:\")) {\n\t\treturn location.origin + $scramjet.config.prefix + url;\n\t} else if (url.startsWith(\"data:\")) {\n\t\treturn location.origin + $scramjet.config.prefix + url;\n\t} else if (url.startsWith(\"mailto:\") || url.startsWith(\"about:\")) {\n\t\treturn url;\n\t} else {\n\t\tlet base = meta.base.href;\n\n\t\tif (base.startsWith(\"about:\")) base = unrewriteUrl(self.location.href); // jank!!!!! weird jank!!!\n\t\tconst realUrl = tryCanParseURL(url, base);\n\t\tif (!realUrl) return url;\n\n\t\treturn (\n\t\t\tlocation.origin +\n\t\t\t$scramjet.config.prefix +\n\t\t\t$scramjet.codec.encode(realUrl.href)\n\t\t);\n\t}\n}\n\nexport function unrewriteUrl(url: string | URL) {\n\tif (url instanceof URL) {\n\t\turl = url.toString();\n\t}\n\n\tconst prefixed = location.origin + $scramjet.config.prefix;\n\n\tif (url.startsWith(\"javascript:\")) {\n\t\t//TODO\n\t\treturn url;\n\t} else if (url.startsWith(\"blob:\")) {\n\t\t// realistically this shouldn't happen\n\t\treturn url;\n\t} else if (url.startsWith(prefixed + \"blob:\")) {\n\t\treturn url.substring(prefixed.length);\n\t} else if (url.startsWith(prefixed + \"data:\")) {\n\t\treturn url.substring(prefixed.length);\n\t} else if (url.startsWith(\"mailto:\") || url.startsWith(\"about:\")) {\n\t\treturn url;\n\t} else if (tryCanParseURL(url)) {\n\t\treturn $scramjet.codec.decode(\n\t\t\turl.slice((location.origin + $scramjet.config.prefix).length)\n\t\t);\n\t} else {\n\t\treturn url;\n\t}\n}\n","import { ScramjetClient } from \"../client\";\nimport { config } from \"../../shared\";\nimport { rewriteUrl } from \"../../shared/rewriters/url\";\n\nexport default function (client: ScramjetClient, self: Self) {\n\tconst Function = client.natives.store[\"Function\"];\n\n\tself[config.globals.importfn] = function (base: string) {\n\t\treturn function (url: string) {\n\t\t\tconst resolved = new URL(url, base).href;\n\n\t\t\treturn Function(\n\t\t\t\t`return import(\"${rewriteUrl(resolved, client.meta)}\")`\n\t\t\t)();\n\t\t};\n\t};\n\n\tself[config.globals.metafn] = function (base: string) {\n\t\treturn {\n\t\t\turl: base,\n\t\t\tresolve: function (url: string) {\n\t\t\t\treturn new URL(url, base).href;\n\t\t\t},\n\t\t};\n\t};\n}\n","import { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"IDBFactory.prototype.open\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = `${client.url.origin}@${ctx.args[0]}`;\n\t\t},\n\t});\n\n\tclient.Trap(\"IDBDatabase.prototype.name\", {\n\t\tget(ctx) {\n\t\t\tconst name = ctx.get() as string;\n\n\t\t\treturn name.substring(name.indexOf(\"@\") + 1);\n\t\t},\n\t});\n}\n","import { iswindow } from \"..\";\nimport { SCRAMJETCLIENT } from \"../../symbols\";\nimport { ScramjetClient } from \"../client\";\nimport { POLLUTANT } from \"../shared/realm\";\n\nexport default function (client: ScramjetClient) {\n\tif (iswindow)\n\t\tclient.Proxy(\"window.postMessage\", {\n\t\t\tapply(ctx) {\n\t\t\t\t// so we need to send the real origin here, since the recieving window can't possibly know.\n\t\t\t\t// except, remember that this code is being ran in a different realm than the invoker, so if we ask our `client` it may give us the wrong origin\n\t\t\t\t// if we were given any object that came from the real realm we can use that to get the real origin\n\t\t\t\t// and this works in every case EXCEPT for the fact that all three arguments can be strings which are copied instead of cloned\n\t\t\t\t// so we have to use `$setrealm` which will pollute this with an object from the real realm\n\n\t\t\t\tlet pollutant;\n\n\t\t\t\tif (typeof ctx.args[0] === \"object\" && ctx.args[0] !== null) {\n\t\t\t\t\tpollutant = ctx.args[0]; // try to use the first object we can find because it's more reliable\n\t\t\t\t} else if (typeof ctx.args[2] === \"object\" && ctx.args[2] !== null) {\n\t\t\t\t\tpollutant = ctx.args[2]; // next try to use transfer\n\t\t\t\t} else if (\n\t\t\t\t\tctx.this &&\n\t\t\t\t\tPOLLUTANT in ctx.this &&\n\t\t\t\t\ttypeof ctx.this[POLLUTANT] === \"object\" &&\n\t\t\t\t\tctx.this[POLLUTANT] !== null\n\t\t\t\t) {\n\t\t\t\t\tpollutant = ctx.this[POLLUTANT]; // lastly try to use the object from $setrealm\n\t\t\t\t} else {\n\t\t\t\t\tpollutant = {}; // give up\n\t\t\t\t}\n\n\t\t\t\t// and now we can steal Function from the caller's realm\n\t\t\t\tconst {\n\t\t\t\t\tconstructor: { constructor: Function },\n\t\t\t\t} = pollutant;\n\n\t\t\t\t// invoking stolen function will give us the caller's globalThis, remember scramjet has already proxied it!!!\n\t\t\t\tconst callerGlobalThisProxied: Self = Function(\"return globalThis\")();\n\t\t\t\tconst callerClient = callerGlobalThisProxied[SCRAMJETCLIENT];\n\n\t\t\t\t// this WOULD be enough but the source argument of MessageEvent has to return the caller's window\n\t\t\t\t// and if we just call it normally it would be coming from here, which WILL NOT BE THE CALLER'S because the accessor is from the parent\n\t\t\t\t// so with the stolen function we wrap postmessage so the source will truly be the caller's window (remember that function is scramjet's!!!)\n\t\t\t\tconst wrappedPostMessage = Function(\"...args\", \"this(...args)\");\n\n\t\t\t\tctx.args[0] = {\n\t\t\t\t\t$scramjet$messagetype: \"window\",\n\t\t\t\t\t$scramjet$origin: callerClient.url.origin,\n\t\t\t\t\t$scramjet$data: ctx.args[0],\n\t\t\t\t};\n\n\t\t\t\t// * origin because obviously\n\t\t\t\tif (typeof ctx.args[1] === \"string\") ctx.args[1] = \"*\";\n\t\t\t\tif (typeof ctx.args[1] === \"object\") ctx.args[1].targetOrigin = \"*\";\n\n\t\t\t\tctx.return(wrappedPostMessage.call(ctx.fn, ...ctx.args));\n\t\t\t},\n\t\t});\n\n\tconst toproxy = [\"MessagePort.prototype.postMessage\"];\n\n\tif (self.Worker) toproxy.push(\"Worker.prototype.postMessage\");\n\tif (!iswindow) toproxy.push(\"self.postMessage\"); // only do the generic version if we're in a worker\n\n\tclient.Proxy(toproxy, {\n\t\tapply(ctx) {\n\t\t\t// origin/source doesn't need to be preserved - it's null in the message event\n\n\t\t\tctx.args[0] = {\n\t\t\t\t$scramjet$messagetype: \"worker\",\n\t\t\t\t$scramjet$data: ctx.args[0],\n\t\t\t};\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"../client\";\nimport { config } from \"../../shared\";\n\nexport const POLLUTANT = Symbol.for(\"scramjet realm pollutant\");\n\nexport default function (client: ScramjetClient, self: typeof globalThis) {\n\t// object.$setrealm({}).postMessage(...)\n\t// the empty object is the \"pollutant\" which can reconstruct the real realm\n\t// i explain more in postmessage.ts\n\tObject.defineProperty(self.Object.prototype, config.globals.setrealmfn, {\n\t\tvalue(pollution: object) {\n\t\t\t// this is bad!! sites could detect this\n\t\t\tObject.defineProperty(this, POLLUTANT, {\n\t\t\t\tvalue: pollution,\n\t\t\t\twritable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t});\n\n\t\t\treturn this;\n\t\t},\n\t\twritable: true,\n\t\tconfigurable: true,\n\t\tenumerable: false,\n\t});\n}\n","import { unrewriteUrl, rewriteUrl } from \"../../../shared\";\nimport { ScramjetClient } from \"../../client\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"EventSource\", {\n\t\tconstruct(ctx) {\n\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t},\n\t});\n\n\tclient.Trap(\"EventSource.prototype.url\", {\n\t\tget(ctx) {\n\t\t\tunrewriteUrl(ctx.get() as string);\n\t\t},\n\t});\n}\n","// ts throws an error if you dont do window.fetch\n\nimport { isemulatedsw } from \"../..\";\nimport { unrewriteUrl } from \"../../../shared\";\nimport { ScramjetClient } from \"../../client\";\nimport { rewriteUrl } from \"../../../shared\";\n\nexport default function (client: ScramjetClient, _self: typeof globalThis) {\n\tclient.Proxy(\"fetch\", {\n\t\tapply(ctx) {\n\t\t\tif (typeof ctx.args[0] === \"string\" || ctx.args[0] instanceof URL) {\n\t\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\n\t\t\t\tif (isemulatedsw) ctx.args[0] += \"?from=swruntime\";\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Request\", {\n\t\tconstruct(ctx) {\n\t\t\tif (typeof ctx.args[0] === \"string\" || ctx.args[0] instanceof URL) {\n\t\t\t\tctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\n\t\t\t\tif (isemulatedsw) ctx.args[0] += \"?from=swruntime\";\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Trap(\"Response.prototype.url\", {\n\t\tget(ctx) {\n\t\t\treturn unrewriteUrl(ctx.get() as string);\n\t\t},\n\t});\n\n\tclient.Trap(\"Request.prototype.url\", {\n\t\tget(ctx) {\n\t\t\treturn unrewriteUrl(ctx.get() as string);\n\t\t},\n\t});\n}\n","import { type BareWebSocket } from \"@mercuryworkshop/bare-mux\";\nimport { ScramjetClient } from \"../../client\";\n\ntype FakeWebSocketState = {\n\textensions: string;\n\tprotocol: string;\n\turl: string;\n\tbinaryType: string;\n\tbarews: BareWebSocket;\n\n\tonclose?: (ev: CloseEvent) => any;\n\tonerror?: (ev: Event) => any;\n\tonmessage?: (ev: MessageEvent) => any;\n\tonopen?: (ev: Event) => any;\n};\nexport default function (client: ScramjetClient, self: typeof globalThis) {\n\tconst socketmap: WeakMap<WebSocket, FakeWebSocketState> = new WeakMap();\n\tclient.Proxy(\"WebSocket\", {\n\t\tconstruct(ctx) {\n\t\t\tconst fakeWebSocket = new EventTarget() as WebSocket;\n\t\t\tObject.setPrototypeOf(fakeWebSocket, ctx.fn.prototype);\n\t\t\tfakeWebSocket.constructor = ctx.fn;\n\n\t\t\tconst trustEvent = (ev: Event) =>\n\t\t\t\tnew Proxy(ev, {\n\t\t\t\t\tget(target, prop) {\n\t\t\t\t\t\tif (prop === \"isTrusted\") return true;\n\n\t\t\t\t\t\treturn Reflect.get(target, prop);\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\tconst barews = client.bare.createWebSocket(\n\t\t\t\tctx.args[0],\n\t\t\t\tctx.args[1],\n\t\t\t\tnull,\n\t\t\t\t{\n\t\t\t\t\t\"User-Agent\": self.navigator.userAgent,\n\t\t\t\t\tOrigin: client.url.origin,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tconst state: FakeWebSocketState = {\n\t\t\t\textensions: \"\",\n\t\t\t\tprotocol: \"\",\n\t\t\t\turl: ctx.args[0],\n\t\t\t\tbinaryType: \"blob\",\n\t\t\t\tbarews,\n\n\t\t\t\tonclose: null,\n\t\t\t\tonerror: null,\n\t\t\t\tonmessage: null,\n\t\t\t\tonopen: null,\n\t\t\t};\n\n\t\t\tfunction fakeEventSend(fakeev: Event) {\n\t\t\t\tstate[\"on\" + fakeev.type]?.(trustEvent(fakeev));\n\t\t\t\tfakeWebSocket.dispatchEvent(fakeev);\n\t\t\t}\n\n\t\t\tbarews.addEventListener(\"open\", () => {\n\t\t\t\tfakeEventSend(new Event(\"open\"));\n\t\t\t});\n\t\t\tbarews.addEventListener(\"close\", (ev) => {\n\t\t\t\tfakeEventSend(new CloseEvent(\"close\", ev));\n\t\t\t});\n\t\t\tbarews.addEventListener(\"message\", async (ev) => {\n\t\t\t\tlet payload = ev.data;\n\t\t\t\tif (typeof payload === \"string\") {\n\t\t\t\t\t// DO NOTHING\n\t\t\t\t} else if (\"byteLength\" in payload) {\n\t\t\t\t\t// arraybuffer, convert to blob if needed or set the proper prototype\n\t\t\t\t\tif (state.binaryType === \"blob\") {\n\t\t\t\t\t\tpayload = new Blob([payload]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tObject.setPrototypeOf(payload, ArrayBuffer.prototype);\n\t\t\t\t\t}\n\t\t\t\t} else if (\"arrayBuffer\" in payload) {\n\t\t\t\t\t// blob, convert to arraybuffer if neccesary.\n\t\t\t\t\tif (state.binaryType === \"arraybuffer\") {\n\t\t\t\t\t\tpayload = await payload.arrayBuffer();\n\t\t\t\t\t\tObject.setPrototypeOf(payload, ArrayBuffer.prototype);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst fakeev = new MessageEvent(\"message\", {\n\t\t\t\t\tdata: payload,\n\t\t\t\t\torigin: ev.origin,\n\t\t\t\t\tlastEventId: ev.lastEventId,\n\t\t\t\t\tsource: ev.source,\n\t\t\t\t\tports: ev.ports,\n\t\t\t\t});\n\n\t\t\t\tfakeEventSend(fakeev);\n\t\t\t});\n\t\t\tbarews.addEventListener(\"error\", () => {\n\t\t\t\tfakeEventSend(new Event(\"error\"));\n\t\t\t});\n\n\t\t\tsocketmap.set(fakeWebSocket, state);\n\t\t\tctx.return(fakeWebSocket);\n\t\t},\n\t});\n\tclient.Trap(\"WebSocket.prototype.binaryType\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\n\t\t\treturn ws.binaryType;\n\t\t},\n\t\tset(ctx, v: string) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (v === \"blob\" || v === \"arraybuffer\") ws.binaryType = v;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.bufferedAmount\", {\n\t\tget() {\n\t\t\treturn 0;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.extensions\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\n\t\t\treturn ws.extensions;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.onclose\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\n\t\t\treturn ws.onclose;\n\t\t},\n\t\tset(ctx, v: (ev: CloseEvent) => any) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tws.onclose = v;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.onerror\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\n\t\t\treturn ws.onerror;\n\t\t},\n\t\tset(ctx, v: (ev: Event) => any) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tws.onerror = v;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.onmessage\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\n\t\t\treturn ws.onmessage;\n\t\t},\n\t\tset(ctx, v: (ev: MessageEvent) => any) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tws.onmessage = v;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.onopen\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\n\t\t\treturn ws.onopen;\n\t\t},\n\t\tset(ctx, v: (ev: Event) => any) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tws.onopen = v;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.url\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\n\t\t\treturn ws.url;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.protocol\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\n\t\t\treturn ws.protocol;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.readyState\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\n\t\t\treturn ws.barews.readyState;\n\t\t},\n\t});\n\n\tclient.Proxy(\"WebSocket.prototype.send\", {\n\t\tapply(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\n\t\t\tctx.return(ws.barews.send(ctx.args[0]));\n\t\t},\n\t});\n\n\tclient.Proxy(\"WebSocket.prototype.close\", {\n\t\tapply(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (ctx.args[0] === undefined) ctx.args[0] = 1000;\n\t\t\tif (ctx.args[1] === undefined) ctx.args[1] = \"\";\n\t\t\tctx.return(ws.barews.close(ctx.args[0], ctx.args[1]));\n\t\t},\n\t});\n}\n","import { flagEnabled } from \"../../../scramjet\";\nimport { config, unrewriteUrl, rewriteUrl } from \"../../../shared\";\nimport { ScramjetClient } from \"../../client\";\n\nexport default function (client: ScramjetClient, self: Self) {\n\tlet worker;\n\tif (self.Worker && flagEnabled(\"syncxhr\", client.url)) {\n\t\tworker = client.natives.construct(\"Worker\", config.files.sync);\n\t}\n\tconst ARGS = Symbol(\"xhr original args\");\n\tconst HEADERS = Symbol(\"xhr headers\");\n\n\tclient.Proxy(\"XMLHttpRequest.prototype.open\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[1]) ctx.args[1] = rewriteUrl(ctx.args[1], client.meta);\n\t\t\tif (ctx.args[2] === undefined) ctx.args[2] = true;\n\t\t\tctx.this[ARGS] = ctx.args;\n\t\t},\n\t});\n\n\tclient.Proxy(\"XMLHttpRequest.prototype.setRequestHeader\", {\n\t\tapply(ctx) {\n\t\t\tconst headers = ctx.this[HEADERS] || (ctx.this[HEADERS] = {});\n\t\t\theaders[ctx.args[0]] = ctx.args[1];\n\t\t},\n\t});\n\n\tclient.Proxy(\"XMLHttpRequest.prototype.send\", {\n\t\tapply(ctx) {\n\t\t\tconst args = ctx.this[ARGS];\n\t\t\tif (!args || args[2]) return;\n\n\t\t\tif (!flagEnabled(\"syncxhr\", client.url)) {\n\t\t\t\tconsole.warn(\"ignoring request - sync xhr disabled in flags\");\n\n\t\t\t\treturn ctx.return(undefined);\n\t\t\t}\n\n\t\t\t// it's a sync request\n\t\t\t// sync xhr to service worker is not supported\n\t\t\t// there's a nice way of polyfilling this though, we can spin on an atomic using sharedarraybuffer. this will maintain the sync behavior\n\n\t\t\t// @ts-expect-error maxbytelength not in types yet i guess\n\t\t\tconst sab = new SharedArrayBuffer(1024, { maxByteLength: 2147483647 });\n\t\t\tconst view = new DataView(sab);\n\n\t\t\tclient.natives.call(\"Worker.prototype.postMessage\", worker, {\n\t\t\t\tsab,\n\t\t\t\targs,\n\t\t\t\theaders: ctx.this[HEADERS],\n\t\t\t\tbody: ctx.args[0],\n\t\t\t});\n\n\t\t\tconst now = performance.now();\n\t\t\twhile (view.getUint8(0) === 0) {\n\t\t\t\tif (performance.now() - now > 1000) {\n\t\t\t\t\tthrow new Error(\"xhr timeout\");\n\t\t\t\t}\n\t\t\t\t/* spin */\n\t\t\t}\n\n\t\t\tconst status = view.getUint16(1);\n\t\t\tconst headersLength = view.getUint32(3);\n\n\t\t\tconst headersab = new Uint8Array(headersLength);\n\t\t\theadersab.set(new Uint8Array(sab.slice(7, 7 + headersLength)));\n\t\t\tconst headers = new TextDecoder().decode(headersab);\n\n\t\t\tconst bodyLength = view.getUint32(7 + headersLength);\n\t\t\tconst bodyab = new Uint8Array(bodyLength);\n\t\t\tbodyab.set(\n\t\t\t\tnew Uint8Array(\n\t\t\t\t\tsab.slice(11 + headersLength, 11 + headersLength + bodyLength)\n\t\t\t\t)\n\t\t\t);\n\t\t\tconst body = new TextDecoder().decode(bodyab);\n\n\t\t\t// these should be using proxies to not leak scram strings but who cares\n\t\t\tclient.RawTrap(ctx.this, \"status\", {\n\t\t\t\tget() {\n\t\t\t\t\treturn status;\n\t\t\t\t},\n\t\t\t});\n\t\t\tclient.RawTrap(ctx.this, \"responseText\", {\n\t\t\t\tget() {\n\t\t\t\t\treturn body;\n\t\t\t\t},\n\t\t\t});\n\t\t\tclient.RawTrap(ctx.this, \"response\", {\n\t\t\t\tget() {\n\t\t\t\t\tif (ctx.this.responseType === \"arraybuffer\") return bodyab.buffer;\n\n\t\t\t\t\treturn body;\n\t\t\t\t},\n\t\t\t});\n\t\t\tclient.RawTrap(ctx.this, \"responseXML\", {\n\t\t\t\tget() {\n\t\t\t\t\tconst parser = new DOMParser();\n\n\t\t\t\t\treturn parser.parseFromString(body, \"text/xml\");\n\t\t\t\t},\n\t\t\t});\n\t\t\tclient.RawTrap(ctx.this, \"getAllResponseHeaders\", {\n\t\t\t\tget() {\n\t\t\t\t\treturn () => headers;\n\t\t\t\t},\n\t\t\t});\n\t\t\tclient.RawTrap(ctx.this, \"getResponseHeader\", {\n\t\t\t\tget() {\n\t\t\t\t\treturn (header: string) => {\n\t\t\t\t\t\tconst re = new RegExp(`^${header}: (.*)$`, \"m\");\n\t\t\t\t\t\tconst match = re.exec(headers);\n\n\t\t\t\t\t\treturn match ? match[1] : null;\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t});\n\n\t\t\t// send has no return value right\n\t\t\tctx.return(undefined);\n\t\t},\n\t});\n\n\tclient.Trap(\"XMLHttpRequest.prototype.responseURL\", {\n\t\tget(ctx) {\n\t\t\treturn unrewriteUrl(ctx.get() as string);\n\t\t},\n\t});\n}\n","import { $scramjet, flagEnabled } from \"../../scramjet\";\nimport { ScramjetClient } from \"../client\";\n\nenum RewriteType {\n\tInsert = 0,\n\tReplace = 1,\n}\n\ntype Rewrite =\n\t| {\n\t\t\ttype: RewriteType.Insert;\n\t\t\t// offset before this rewrite\n\t\t\toffset: number;\n\t\t\t// start of insertion\n\t\t\tstart: number;\n\t\t\t// size of insertion\n\t\t\tsize: number;\n\t }\n\t| {\n\t\t\ttype: RewriteType.Replace;\n\t\t\t// offset before this rewrite\n\t\t\toffset: number;\n\t\t\t// start of replacement\n\t\t\tstart: number;\n\t\t\t// end of replacement\n\t\t\tend: number;\n\t\t\t// old string\n\t\t\tstr: string;\n\t };\n\nconst sourcemaps: Record<string, Rewrite[]> = {};\n\nexport const enabled = (client: ScramjetClient) =>\n\tflagEnabled(\"sourcemaps\", client.url);\n\nexport default function (client: ScramjetClient, self: Self) {\n\t// every script will push a sourcemap\n\tObject.defineProperty(self, $scramjet.config.globals.pushsourcemapfn, {\n\t\tvalue: (buf: Array<number>, tag: string) => {\n\t\t\tconst sourcemap = Uint8Array.from(buf);\n\t\t\tconst view = new DataView(sourcemap.buffer);\n\t\t\tconst decoder = new TextDecoder(\"utf-8\");\n\n\t\t\tconst rewrites = [];\n\n\t\t\tconst rewritelen = view.getUint32(0, true);\n\t\t\tlet cursor = 0;\n\t\t\tfor (let i = 0; i < rewritelen; i++) {\n\t\t\t\tconst type = view.getUint8(cursor) as RewriteType;\n\t\t\t\tcursor += 1;\n\n\t\t\t\tif (type == RewriteType.Insert) {\n\t\t\t\t\tconst offset = view.getUint32(cursor, true);\n\t\t\t\t\tcursor += 4;\n\t\t\t\t\tconst start = view.getUint32(cursor, true);\n\t\t\t\t\tcursor += 4;\n\t\t\t\t\tconst size = view.getUint32(cursor, true);\n\t\t\t\t\tcursor += 4;\n\n\t\t\t\t\trewrites.push({ type, offset, start, size });\n\t\t\t\t} else if (type == RewriteType.Replace) {\n\t\t\t\t\tconst offset = view.getUint32(cursor, true);\n\t\t\t\t\tcursor += 4;\n\t\t\t\t\tconst start = view.getUint32(cursor, true);\n\t\t\t\t\tcursor += 4;\n\t\t\t\t\tconst end = view.getUint32(cursor, true);\n\t\t\t\t\tcursor += 4;\n\n\t\t\t\t\tconst str = decoder.decode(sourcemap.subarray(start, end));\n\n\t\t\t\t\trewrites.push({ type, offset, start, end, str });\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsourcemaps[tag] = rewrites;\n\t\t},\n\t\tenumerable: false,\n\t\twritable: false,\n\t\tconfigurable: false,\n\t});\n\n\tconst scramtag_ident = \"/*scramtag \";\n\n\t// when we rewrite javascript it will make function.toString leak internals\n\t// this can lead to double rewrites which is bad\n\tclient.Proxy(\"Function.prototype.toString\", {\n\t\tapply(ctx) {\n\t\t\tlet stringified: string = ctx.fn.call(ctx.this);\n\t\t\tlet newString = \"\";\n\n\t\t\t// every function rewritten will have a scramtag comment\n\t\t\t// it will look like this:\n\t\t\t// function name() /*scramtag [index] [tag] */ { ... }\n\t\t\tconst scramtagstart = stringified.indexOf(\"/*s\");\n\n\t\t\tif (scramtagstart === -1) return ctx.return(stringified); // it's either a native function or something stolen from scramjet itself\n\n\t\t\tconst firstspace = stringified.indexOf(\n\t\t\t\t\" \",\n\t\t\t\tscramtagstart + scramtag_ident.length\n\t\t\t);\n\t\t\t// [index] holds the index of the first character in the scramtag (/)\n\t\t\tconst abstagindex = parseInt(\n\t\t\t\tstringified.substring(scramtagstart + scramtag_ident.length, firstspace)\n\t\t\t);\n\n\t\t\t// subtracting that from the index of the scramtag gives us the starting index of the function relative to the entire file\n\t\t\tconst absindex = abstagindex - scramtagstart;\n\n\t\t\tconst scramtagend = stringified.indexOf(\"*/\", scramtagstart);\n\t\t\tconst tag = stringified.substring(firstspace + 1, scramtagend);\n\n\t\t\t// delete all scramtags inside the function (and nested ones!!)\n\t\t\tstringified = stringified.replace(/\\/\\*scramtag.*?\\*\\//g, \"\");\n\n\t\t\tconst maps = sourcemaps[tag];\n\n\t\t\tlet i = 0;\n\t\t\tlet offset = 0;\n\n\t\t\tlet j = 0;\n\t\t\twhile (j < maps.length) {\n\t\t\t\t/* TODO\n\t\t\t\tconst [str, start, end] = maps[j];\n\t\t\t\tif (start < absindex) {\n\t\t\t\t\tj++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (start - absindex + offset > stringified.length) break;\n\n\t\t\t\t// ooh i should really document this before i forget how it works\n\t\t\t\tnewString += stringified.slice(i, start - absindex + offset);\n\t\t\t\tnewString += str;\n\t\t\t\toffset += end - start - str.length;\n\t\t\t\ti = start - absindex + offset + str.length;\n\n\t\t\t\tj++;\n\t\t\t\t*/\n\t\t\t}\n\n\t\t\tnewString += stringified.slice(i);\n\n\t\t\treturn ctx.return(newString);\n\t\t},\n\t});\n}\n","export default function (client, self) {\n\tdelete self.TrustedHTML;\n\tdelete self.TrustedScript;\n\tdelete self.TrustedScriptURL;\n\tdelete self.TrustedTypePolicy;\n\tdelete self.TrustedTypePolicyFactory;\n\tself.__defineGetter__(\"trustedTypes\", () => undefined);\n}\n","import { iswindow } from \"..\";\nimport { ProxyCtx, ScramjetClient } from \"../client\";\n\n// we don't want to end up overriding a property on window that's derived from a prototype until we've proxied the prototype\nexport const order = 3;\n\nexport default function (client: ScramjetClient, self: typeof window) {\n\t// an automated approach to cleaning the documentProxy from dom functions\n\t// it will trigger an illegal invocation if you pass the proxy to c++ code, we gotta hotswap it out with the real one\n\t// admittedly this is pretty slow. worth investigating if there's ways to get back some of the lost performance\n\n\tfor (const target of [self]) {\n\t\tfor (const prop in target) {\n\t\t\ttry {\n\t\t\t\tif (typeof target[prop] === \"function\") {\n\t\t\t\t\tclient.RawProxy(target, prop, {\n\t\t\t\t\t\tapply(ctx) {\n\t\t\t\t\t\t\tunproxy(ctx, client);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} catch {}\n\t\t}\n\t}\n\n\tif (!iswindow) return;\n\n\tfor (const target of [\n\t\tself.Node.prototype,\n\t\tself.MutationObserver.prototype,\n\t\tself.document,\n\t\tself.MouseEvent.prototype,\n\t\tself.Range.prototype,\n\t]) {\n\t\tfor (const prop in target) {\n\t\t\ttry {\n\t\t\t\tif (typeof target[prop] === \"function\") {\n\t\t\t\t\tclient.RawProxy(target, prop, {\n\t\t\t\t\t\tapply(ctx) {\n\t\t\t\t\t\t\tunproxy(ctx, client);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} catch {}\n\t\t}\n\t}\n\n\tclient.Proxy(\"IntersectionObserver\", {\n\t\tconstruct(ctx) {\n\t\t\tif (ctx.args[1] && ctx.args[1].root) ctx.args[1].root = self.document;\n\t\t},\n\t});\n\n\t// this is probably not how stuff should be done but you cant run defineProperty on the window proxy so...\n\tclient.Proxy(\"Object.defineProperty\", {\n\t\tapply(ctx) {\n\t\t\tunproxy(ctx, client);\n\t\t},\n\t});\n\n\tclient.Proxy(\"Object.getOwnPropertyDescriptor\", {\n\t\tapply(ctx) {\n\t\t\tconst desc = ctx.call();\n\n\t\t\tif (!desc) return;\n\n\t\t\tif (desc.get) {\n\t\t\t\tclient.RawProxy(desc, \"get\", {\n\t\t\t\t\tapply(getCtx) {\n\t\t\t\t\t\t// value of this in the getter needs to be corrected\n\t\t\t\t\t\tunproxy(getCtx, client);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (desc.set) {\n\t\t\t\tclient.RawProxy(desc, \"set\", {\n\t\t\t\t\tapply(setCtx) {\n\t\t\t\t\t\tunproxy(setCtx, client);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// i don't think we have to care about value but it's worth looking into\n\n\t\t\tctx.return(desc);\n\t\t},\n\t});\n}\n\nexport function unproxy(ctx: ProxyCtx, client: ScramjetClient) {\n\tconst self = client.global;\n\tif (ctx.this === client.globalProxy) ctx.this = self;\n\tif (ctx.this === client.documentProxy) ctx.this = self.document;\n\n\tfor (const i in ctx.args) {\n\t\tif (ctx.args[i] === client.documentProxy) ctx.args[i] = self.document;\n\t\tif (ctx.args[i] === client.globalProxy) ctx.args[i] = self;\n\t}\n}\n","import { BareMuxConnection } from \"../../shared\";\nimport { rewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, _self: typeof globalThis) {\n\tclient.Proxy(\"Worker\", {\n\t\tconstruct({ args, call }) {\n\t\t\targs[0] = rewriteUrl(args[0], client.meta) + \"?dest=worker\";\n\n\t\t\tif (args[1] && args[1].type === \"module\") {\n\t\t\t\targs[0] += \"&type=module\";\n\t\t\t}\n\n\t\t\tconst worker = call();\n\t\t\tconst conn = new BareMuxConnection();\n\n\t\t\t(async () => {\n\t\t\t\tconst port = await conn.getInnerPort();\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Worker.prototype.postMessage\",\n\t\t\t\t\tworker,\n\t\t\t\t\t{\n\t\t\t\t\t\t$scramjet$type: \"baremuxinit\",\n\t\t\t\t\t\tport,\n\t\t\t\t\t},\n\t\t\t\t\t[port]\n\t\t\t\t);\n\t\t\t})();\n\t\t},\n\t});\n\n\t// sharedworkers can only be constructed from window\n\tclient.Proxy(\"SharedWorker\", {\n\t\tconstruct({ args, call }) {\n\t\t\targs[0] = rewriteUrl(args[0], client.meta) + \"?dest=worker\";\n\n\t\t\tif (args[1] && typeof args[1] === \"string\")\n\t\t\t\targs[1] = `${client.url.origin}@${args[1]}`;\n\n\t\t\tif (args[1] && typeof args[1] === \"object\") {\n\t\t\t\tif (args[1].type === \"module\") {\n\t\t\t\t\targs[0] += \"&type=module\";\n\t\t\t\t}\n\n\t\t\t\tif (args[1].name) {\n\t\t\t\t\targs[1].name = `${client.url.origin}@${args[1].name}`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst worker = call();\n\t\t\tconst conn = new BareMuxConnection();\n\n\t\t\t(async () => {\n\t\t\t\tconst port = await conn.getInnerPort();\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"MessagePort.prototype.postMessage\",\n\t\t\t\t\tworker.port,\n\t\t\t\t\t{\n\t\t\t\t\t\t$scramjet$type: \"baremuxinit\",\n\t\t\t\t\t\tport,\n\t\t\t\t\t},\n\t\t\t\t\t[port]\n\t\t\t\t);\n\t\t\t})();\n\t\t},\n\t});\n\n\tclient.Proxy(\"Worklet.prototype.addModule\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0]) ctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t},\n\t});\n}\n","import { iswindow } from \"..\";\nimport { SCRAMJETCLIENT } from \"../../symbols\";\nimport { ScramjetClient } from \"../client\";\nimport { config } from \"../../shared\";\n// import { argdbg } from \"./err\";\nimport { indirectEval } from \"./eval\";\n\nexport function createWrapFn(client: ScramjetClient, self: typeof globalThis) {\n\treturn function (identifier: any) {\n\t\tif (identifier === self) return client.globalProxy;\n\t\tif (identifier === self.location) return client.locationProxy;\n\t\tif (identifier === eval) return indirectEval.bind(client);\n\n\t\tif (iswindow) {\n\t\t\tif (identifier === self.parent) {\n\t\t\t\tif (SCRAMJETCLIENT in self.parent) {\n\t\t\t\t\t// ... then we're in a subframe, and the parent frame is also in a proxy context, so we should return its proxy\n\t\t\t\t\treturn self.parent[SCRAMJETCLIENT].globalProxy;\n\t\t\t\t} else {\n\t\t\t\t\t// ... then we should pretend we aren't nested and return the current window\n\t\t\t\t\treturn client.globalProxy;\n\t\t\t\t}\n\t\t\t} else if (identifier === self.document) {\n\t\t\t\treturn client.documentProxy;\n\t\t\t} else if (identifier === self.top) {\n\t\t\t\t// instead of returning top, we need to return the uppermost parent that's inside a scramjet context\n\t\t\t\tlet current = self;\n\n\t\t\t\tfor (;;) {\n\t\t\t\t\tconst test = current.parent.self;\n\t\t\t\t\tif (test === current) break; // there is no parent, actual or emulated.\n\n\t\t\t\t\t// ... then `test` represents a window outside of the proxy context, and therefore `current` is the topmost window in the proxy context\n\t\t\t\t\tif (!(SCRAMJETCLIENT in test)) break;\n\n\t\t\t\t\t// test is also insde a proxy, so we should continue up the chain\n\t\t\t\t\tcurrent = test;\n\t\t\t\t}\n\n\t\t\t\treturn current[SCRAMJETCLIENT].globalProxy;\n\t\t\t}\n\t\t}\n\n\t\treturn identifier;\n\t};\n}\n\nexport const order = 4;\nexport default function (client: ScramjetClient, self: typeof globalThis) {\n\t// the main magic of the proxy. all attempts to access any \"banned objects\" will be redirected here, and instead served a proxy object\n\t// this contrasts from how other proxies will leave the root object alone and instead attempt to catch every member access\n\t// this presents some issues (see element.ts), but makes us a good bit faster at runtime!\n\tObject.defineProperty(self, config.globals.wrapfn, {\n\t\tvalue: client.wrapfn,\n\t\twritable: false,\n\t\tconfigurable: false,\n\t});\n\tObject.defineProperty(self, config.globals.wrapthisfn, {\n\t\tvalue: function (i) {\n\t\t\tif (i === self) return client.globalProxy;\n\n\t\t\treturn i;\n\t\t},\n\t\twritable: false,\n\t\tconfigurable: false,\n\t});\n\n\tself.$scramitize = function (v) {\n\t\tif (typeof v === \"string\" && v.includes(\"scramjet\")) {\n\t\t\tdebugger;\n\t\t}\n\n\t\tif (typeof v === \"string\" && v.includes(location.origin)) {\n\t\t\tdebugger;\n\t\t}\n\n\t\tif (v === self && v?.$scramjet) {\n\t\t\tdebugger;\n\t\t}\n\n\t\tif (iswindow && v instanceof Document && v.defaultView?.$scramjet) {\n\t\t\tdebugger;\n\t\t}\n\n\t\treturn v;\n\t};\n\n\t// location = \"...\" can't be rewritten as wrapfn(location) = ..., so instead it will actually be rewritten as\n\t// ((t)=>$scramjet$tryset(location,\"+=\",t)||location+=t)(...);\n\t// it has to be a discrete function because there's always the possibility that \"location\" is a local variable\n\t// we have to use an IIFE to avoid duplicating side-effects in the getter\n\tObject.defineProperty(self, config.globals.trysetfn, {\n\t\tvalue: function (lhs: any, op: string, rhs: any) {\n\t\t\tif (lhs instanceof Location) {\n\t\t\t\t// @ts-ignore\n\t\t\t\tlocationProxy.href = rhs;\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\twritable: false,\n\t\tconfigurable: false,\n\t});\n}\n","import { ScramjetClient } from \"./client\";\nimport { unrewriteUrl } from \"../shared\";\n\nexport class ScramjetServiceWorkerRuntime {\n\trecvport: MessagePort;\n\tconstructor(public client: ScramjetClient) {\n\t\t// @ts-ignore\n\t\tself.onconnect = (cevent: MessageEvent) => {\n\t\t\tconst port = cevent.ports[0];\n\t\t\tdbg.log(\"sw\", \"connected\");\n\n\t\t\tport.addEventListener(\"message\", (event) => {\n\t\t\t\tconsole.log(\"sw\", event.data);\n\t\t\t\tif (\"scramjet$type\" in event.data) {\n\t\t\t\t\tif (event.data.scramjet$type === \"init\") {\n\t\t\t\t\t\tthis.recvport = event.data.scramjet$port;\n\t\t\t\t\t\tthis.recvport.postMessage({ scramjet$type: \"init\" });\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandleMessage.call(this, client, event.data);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tport.start();\n\t\t};\n\t}\n\n\thook() {\n\t\tthis.client.global.registration = {\n\t\t\t// TODO IMPLEMENT SCOPES\n\t\t\tscope: this.client.url.href,\n\t\t\tactive: {\n\t\t\t\tscriptURL: this.client.url.href,\n\t\t\t\tstate: \"activated\",\n\t\t\t\tonstatechange: null,\n\t\t\t\tonerror: null,\n\n\t\t\t\tpostMessage: () => {},\n\t\t\t\taddEventListener: () => {},\n\t\t\t\tremoveEventListener: () => {},\n\t\t\t\tdispatchEvent: (_e: Event) => {},\n\t\t\t},\n\t\t\tshowNotification: async () => {},\n\t\t\tunregister: async () => true,\n\t\t\tupdate: async () => {},\n\t\t\tinstalling: null,\n\t\t\twaiting: null,\n\t\t};\n\n\t\t// @ts-ignore\n\t\tthis.client.global.ServiceWorkerGlobalScope = this.client.global;\n\t}\n}\n\nfunction handleMessage(\n\tthis: ScramjetServiceWorkerRuntime,\n\tclient: ScramjetClient,\n\tdata: MessageW2R\n) {\n\tconst port = this.recvport;\n\tconst type = data.scramjet$type;\n\tconst token = data.scramjet$token;\n\tconst handlers = client.eventcallbacks.get(self);\n\n\tif (type === \"fetch\") {\n\t\tdbg.log(\"ee\", data);\n\t\tconst fetchhandlers = handlers.filter((event) => event.event === \"fetch\");\n\t\tif (!fetchhandlers) return;\n\n\t\tfor (const handler of fetchhandlers) {\n\t\t\tconst request = data.scramjet$request;\n\n\t\t\tconst Request = client.natives[\"Request\"];\n\t\t\tconst fakeRequest = new Request(unrewriteUrl(request.url), {\n\t\t\t\tbody: request.body,\n\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\tmethod: request.method,\n\t\t\t\tmode: \"same-origin\",\n\t\t\t});\n\n\t\t\tObject.defineProperty(fakeRequest, \"destination\", {\n\t\t\t\tvalue: request.destinitation,\n\t\t\t});\n\n\t\t\t// TODO: clean up, maybe put into a class\n\t\t\tconst fakeFetchEvent: any = new Event(\"fetch\");\n\t\t\tfakeFetchEvent.request = fakeRequest;\n\t\t\tlet responded = false;\n\t\t\tfakeFetchEvent.respondWith = (response: Response | Promise<Response>) => {\n\t\t\t\tresponded = true;\n\t\t\t\t(async () => {\n\t\t\t\t\tresponse = await response;\n\t\t\t\t\tconst message: MessageR2W = {\n\t\t\t\t\t\tscramjet$type: \"fetch\",\n\t\t\t\t\t\tscramjet$token: token,\n\t\t\t\t\t\tscramjet$response: {\n\t\t\t\t\t\t\tbody: response.body,\n\t\t\t\t\t\t\theaders: Array.from(response.headers.entries()),\n\t\t\t\t\t\t\tstatus: response.status,\n\t\t\t\t\t\t\tstatusText: response.statusText,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\n\t\t\t\t\tdbg.log(\"sw\", \"responding\", message);\n\t\t\t\t\tport.postMessage(message, [response.body]);\n\t\t\t\t})();\n\t\t\t};\n\n\t\t\tdbg.log(\"to fn\", fakeFetchEvent);\n\t\t\thandler.proxiedCallback(trustEvent(fakeFetchEvent));\n\t\t\tif (!responded) {\n\t\t\t\tconsole.log(\"sw\", \"no response\");\n\t\t\t\tport.postMessage({\n\t\t\t\t\tscramjet$type: \"fetch\",\n\t\t\t\t\tscramjet$token: token,\n\t\t\t\t\tscramjet$response: false,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction trustEvent(event: Event): Event {\n\treturn new Proxy(event, {\n\t\tget(target, prop, _reciever) {\n\t\t\tif (prop === \"isTrusted\") return true;\n\n\t\t\treturn Reflect.get(target, prop);\n\t\t},\n\t});\n}\n\nexport type TransferrableResponse = {\n\tbody: ReadableStream;\n\theaders: [string, string][];\n\tstatus: number;\n\tstatusText: string;\n};\n\nexport type TransferrableRequest = {\n\tbody: ReadableStream;\n\theaders: [string, string][];\n\tdestinitation: RequestDestination;\n\tmethod: Request[\"method\"];\n\tmode: Request[\"mode\"];\n\turl: string;\n};\n\ntype FetchResponseMessage = {\n\tscramjet$type: \"fetch\";\n\tscramjet$response: TransferrableResponse;\n};\n\ntype FetchRequestMessage = {\n\tscramjet$type: \"fetch\";\n\tscramjet$request: TransferrableRequest;\n};\n\n// r2w = runtime to (service) worker\n\ntype MessageTypeR2W = FetchResponseMessage;\ntype MessageTypeW2R = FetchRequestMessage;\n\ntype MessageCommon = {\n\tscramjet$type: string;\n\tscramjet$token: number;\n};\n\nexport type MessageR2W = MessageCommon & MessageTypeR2W;\nexport type MessageW2R = MessageCommon &\n\tMessageTypeW2R & { scramjet$port?: MessagePort };\n","import { rewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\"importScripts\", {\n\t\tapply(ctx) {\n\t\t\tfor (const i in ctx.args) {\n\t\t\t\tctx.args[i] = rewriteUrl(ctx.args[i], client.meta);\n\t\t\t}\n\t\t},\n\t});\n}\n","export default {\n\tfmt: function (severity: string, message: string, ...args: any[]) {\n\t\tconst old = Error.prepareStackTrace;\n\n\t\tError.prepareStackTrace = (_, stack) => {\n\t\t\tstack.shift(); // stack();\n\t\t\tstack.shift(); // fmt();\n\t\t\tstack.shift();\n\n\t\t\tlet fmt = \"\";\n\t\t\tfor (let i = 1; i < Math.min(2, stack.length); i++) {\n\t\t\t\tif (stack[i].getFunctionName()) {\n\t\t\t\t\t// const f = stack[i].getThis()?.constructor?.name;\n\t\t\t\t\t// if (f) fmt += `${f}.`\n\t\t\t\t\tfmt += `${stack[i].getFunctionName()} -> ` + fmt;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfmt += stack[0].getFunctionName() || \"Anonymous\";\n\n\t\t\treturn fmt;\n\t\t};\n\n\t\tconst fmt = (function stack() {\n\t\t\ttry {\n\t\t\t\tthrow new Error();\n\t\t\t} catch (e) {\n\t\t\t\treturn e.stack;\n\t\t\t}\n\t\t})();\n\n\t\tError.prepareStackTrace = old;\n\n\t\tconst fn = console[severity] || console.log;\n\t\tconst bg = {\n\t\t\tlog: \"#000\",\n\t\t\twarn: \"#f80\",\n\t\t\terror: \"#f00\",\n\t\t\tdebug: \"transparent\",\n\t\t}[severity];\n\t\tconst fg = {\n\t\t\tlog: \"#fff\",\n\t\t\twarn: \"#fff\",\n\t\t\terror: \"#fff\",\n\t\t\tdebug: \"gray\",\n\t\t}[severity];\n\t\tconst padding = {\n\t\t\tlog: 2,\n\t\t\twarn: 4,\n\t\t\terror: 4,\n\t\t\tdebug: 0,\n\t\t}[severity];\n\n\t\tfn(\n\t\t\t`%c${fmt}%c ${message}`,\n\t\t\t`\n\t\tbackground-color: ${bg};\n\t\tcolor: ${fg};\n\t\tpadding: ${padding}px;\n\t\tfont-weight: bold;\n\t\tfont-family: monospace;\n\t\tfont-size: 0.9em;\n\t`,\n\t\t\t`${severity === \"debug\" ? \"color: gray\" : \"\"}`,\n\t\t\t...args\n\t\t);\n\t},\n\tlog: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"log\", message, ...args);\n\t},\n\twarn: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"warn\", message, ...args);\n\t},\n\terror: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"error\", message, ...args);\n\t},\n\tdebug: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"debug\", message, ...args);\n\t},\n};\n","import { ScramjetFlags } from \"./types\";\n\nif (!(\"$scramjet\" in self)) {\n\t// @ts-expect-error ts stuff\n\tself.$scramjet = {\n\t\tversion: {\n\t\t\tbuild: COMMITHASH,\n\t\t\tversion: VERSION,\n\t\t},\n\t\tcodec: {},\n\t\tflagEnabled,\n\t};\n}\n\nexport const $scramjet = self.$scramjet;\n\nconst nativeFunction = Function;\nexport function loadCodecs() {\n\t$scramjet.codec.encode = nativeFunction(\n\t\t\"url\",\n\t\t$scramjet.config.codec.encode\n\t) as any;\n\t$scramjet.codec.decode = nativeFunction(\n\t\t\"url\",\n\t\t$scramjet.config.codec.decode\n\t) as any;\n}\n\nexport function flagEnabled(flag: keyof ScramjetFlags, url: URL): boolean {\n\tconst value = $scramjet.config.flags[flag];\n\tfor (const regex in $scramjet.config.siteFlags) {\n\t\tconst partialflags = $scramjet.config.siteFlags[regex];\n\t\tif (new RegExp(regex).test(url.href) && flag in partialflags) {\n\t\t\treturn partialflags[flag];\n\t\t}\n\t}\n\n\treturn value;\n}\n","import { $scramjet } from \"./scramjet\";\n\nexport const {\n\tutil: { BareClient, ScramjetHeaders, BareMuxConnection },\n\turl: { rewriteUrl, unrewriteUrl, rewriteBlob, unrewriteBlob },\n\trewrite: {\n\t\trewriteCss,\n\t\tunrewriteCss,\n\t\trewriteHtml,\n\t\tunrewriteHtml,\n\t\trewriteSrcset,\n\t\trewriteJs,\n\t\trewriteHeaders,\n\t\trewriteWorkers,\n\t\thtmlRules,\n\t},\n\tCookieStore,\n} = $scramjet.shared;\n\nexport const config = $scramjet.config;\n","// see types.d.ts for what these mean\nexport const SCRAMJETCLIENT = Symbol.for(\"scramjet client global\");\nexport const SCRAMJETFRAME = Symbol.for(\"scramjet frame handle\");\n"],"names":["ScramjetClient","global","CookieStore","Map","SCRAMJETCLIENT","console","Error","iswindow","createDocumentProxy","createLocationProxy","createGlobalProxy","createWrapFn","BareClient","Promise","resolve","addEventListener","data","Proxy","target","prop","split","realProp","realTarget","a","b","original","Reflect","args","that","nativeGetOwnPropertyDescriptor","value","client","base","url","frag","undefined","URL","frame","sframe","SCRAMJETFRAME","currentwin","cookiestr","context","modules","key","module","aorder","unrewriteUrl","ev","NavigateEvent","rewriteUrl","name","handler","Array","n","h","constructor","argArray","newTarget","returnValue","earlyreturn","ctx","r","fn","thisArg","pst","err","s","location","config","Object","getOwnPropertyDescriptorHandler","descriptor","oldDescriptor","v","desc","self","newValue","_self","map","proxy","_receiver","namespace","NamedNodeMap","isNaN","Number","keys","controller","rewriteCss","unrewriteCss","style","t","p","CSSStyleDeclaration","rewriteHtml","encoder","TextEncoder","attrObject","urlinterfaces","originalhrefs","attr","element","i","href","attrib","cleaned","attrNames","ruleList","htmlRules","rule","_ctx","_namespace","newval","rewriteJs","btoa","byte","String","scriptSource","atob","unrewriteHtml","realwin","newclient","doc","scram","Document","UrlChangeEvent","f","win","order","enabled","flagEnabled","disabled","_client","Navigator","registrationmap","WeakMap","registration","fakeRegistration","EventTarget","handle","worker","state","index","realLocalStorage","property","attributes","localStorageProxy","sessionStorageProxy","Event","ScramjetContextInit","window","UNSAFE_GLOBALS","Window","isworker","issw","isdedicated","isshared","isemulatedsw","dbg","loadCodecs","runtime","ScramjetServiceWorkerRuntime","document","Location","fakeLocation","descriptorSource","native","nativeFunction","log","_v","rewriteBlob","unrewriteBlob","argdbg","arg","recurse","Symbol","ar","e","closure","error","stack","newstack","lines","line","l","_value","js","indirectEval","indirection","realOnEvent","handlers","wraplistener","listener","realEvent","type","_target","reciever","unproxy","origlistener","proxylistener","arr","targets","rewriteFunction","stringifiedFunction","content","addToExternrefTable0","obj","idx","handleError","cachedTextDecoder","TextDecoder","cachedUint8ArrayMemory0","getUint8ArrayMemory0","Uint8Array","getStringFromWasm0","ptr","len","WASM_VECTOR_LEN","cachedTextEncoder","encodeString","view","buf","passStringToWasm0","malloc","realloc","mem","offset","code","ret","cachedDataViewMemory0","getDataViewMemory0","DataView","isLikeNone","x","takeFromExternrefTable0","__wbg_load","imports","Response","WebAssembly","bytes","instance","__wbg_get_imports","arg0","arg1","arg2","arg3","arguments","Function","ptr1","c","crypto","len1","globalThis","table","v0","getArrayU8FromWasm0","__wbg_init_memory","memory","__wbg_finalize_init","thread_stack_size","__wbg_init","module_or_path","Request","fetch","initSync","decoder","tryCanParseURL","origin","resolved","meta","text","rewriteJsNaiive","$scramjet","rewriteJsWrapper","input","out","before","performance","rewrite_js","script_url","scramjet","ptr0","len0","ptr2","len2","rewrite_js_from_arraybuffer","passArray8ToWasm0","err1","after","errors","duration","timespan","overhead","prefixed","realUrl","pollutant","POLLUTANT","callerClient","callerGlobalThisProxied","wrappedPostMessage","toproxy","pollution","socketmap","fakeWebSocket","trustEvent","barews","fakeEventSend","fakeev","CloseEvent","payload","Blob","ArrayBuffer","MessageEvent","ws","ARGS","HEADERS","headers","sab","SharedArrayBuffer","now","status","headersLength","headersab","bodyLength","bodyab","body","parser","DOMParser","header","match","re","RegExp","sourcemaps","tag","sourcemap","rewrites","rewritelen","cursor","start","size","end","str","scramtag_ident","stringified","newString","scramtagstart","firstspace","parseInt","scramtagend","maps","j","getCtx","setCtx","call","conn","BareMuxConnection","port","identifier","eval","current","test","lhs","op","rhs","locationProxy","cevent","event","handleMessage","_e","token","fetchhandlers","request","fakeRequest","Headers","fakeFetchEvent","responded","response","message","_reciever","severity","old","_","fmt","Math","COMMITHASH","VERSION","flag","regex","partialflags","ScramjetHeaders","rewriteSrcset","rewriteHeaders","rewriteWorkers"],"mappings":"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"}