chemicaljs 2.1.1 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/chemical.demo.html +43 -0
- package/client/chemical.js +20 -28
- package/client/chemical.sw.js +14 -17
- package/index.js +47 -119
- package/package.json +6 -7
- package/scramjet/dist/scramjet.client.js +16 -0
- package/scramjet/dist/scramjet.client.js.map +1 -0
- package/scramjet/dist/scramjet.controller.js +11 -0
- package/scramjet/dist/scramjet.controller.js.map +1 -0
- package/scramjet/dist/scramjet.shared.js +38 -0
- package/scramjet/dist/scramjet.shared.js.map +1 -0
- package/scramjet/dist/scramjet.sync.js +2 -0
- package/scramjet/dist/scramjet.sync.js.map +1 -0
- package/scramjet/dist/scramjet.wasm.js +4 -0
- package/scramjet/dist/scramjet.worker.js +148 -0
- package/scramjet/dist/scramjet.worker.js.map +1 -0
- package/scramjet/index.js +8 -0
- package/config/meteor/meteor.config.js +0 -13
- package/config/scramjet/scramjet.config.js +0 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"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/intersectionobserver.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/out/rewriter.js","webpack://@mercuryworkshop/scramjet/./src/shared/rewriters/js.ts","webpack://@mercuryworkshop/scramjet/./src/client/shared/import.ts","webpack://@mercuryworkshop/scramjet/./src/shared/rewriters/url.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\n//eslint-disable-next-line\nexport type AnyFunction = Function;\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\tdescriptors: Record<string, PropertyDescriptor> = {};\n\tnatives: Record<string, any> = {};\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 client, 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\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.global.document.querySelector(\"base\");\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.global.window.frameElement;\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 = [];\n\n\t\tfor (const key of context.keys()) {\n\t\t\tconst module = 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[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[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 (!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(\"data-scramjet-\")) return false;\n\t\t\t\t\tif (map[prop]?.name?.startsWith(\"data-scramjet-\")) 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\treturn ctx.this.ownerElement.getAttribute(ctx.this.name);\n\t\t},\n\t\tset(ctx, value) {\n\t\t\treturn ctx.this.ownerElement.setAttribute(ctx.this.name, value);\n\t\t},\n\t});\n}\n","import { rewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient, 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\n\t\t\tif (client.serviceWorker.controller) {\n\t\t\t\tclient.serviceWorker.controller!.postMessage({\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\nconst cssProperties = [\n\t\"background\",\n\t\"background-image\",\n\t\"mask\",\n\t\"mask-image\",\n\t\"list-style\",\n\t\"list-style-image\",\n\t\"border-image\",\n\t\"border-image-source\",\n\t\"cursor\",\n];\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: typeof window) {\n\tclient.Proxy(\"Document.prototype.write\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0])\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},\n\t});\n\n\tclient.Proxy(\"Document.prototype.writeln\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0])\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},\n\t});\n}\n","import { SCRAMJETCLIENT } from \"../../symbols\";\nimport { ScramjetClient } from \"../client\";\nimport { nativeGetOwnPropertyDescriptor } from \"../natives\";\nimport {\n\tunrewriteUrl,\n\thtmlRules,\n\tunrewriteHtml,\n\tunrewriteBlob,\n} from \"../../shared\";\nimport {\n\trewriteUrl,\n\trewriteCss,\n\trewriteHtml,\n\trewriteJs,\n\trewriteSrcset,\n} from \"../../shared\";\nimport type { URLMeta } from \"../../shared/rewriters/url\";\n\nexport default function (client: ScramjetClient, self: typeof window) {\n\tconst _nativeGetAttribute = self.Element.prototype.getAttribute;\n\tconst nativeSetAttribute = self.Element.prototype.setAttribute;\n\tconst _nativeHasAttribute = self.Element.prototype.hasAttribute;\n\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.HTMLEmbedElement,\n\t\t\tself.HTMLScriptElement,\n\t\t\tself.HTMLSourceElement,\n\t\t],\n\t\thref: [self.HTMLAnchorElement, self.HTMLLinkElement, self.SVGUseElement],\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\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.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, `data-scramjet-${ctx.args[0]}`, value);\n\t\t\t}\n\t\t},\n\t});\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\tnativeSetAttribute.call(\n\t\t\t\t\tctx.this,\n\t\t\t\t\t`data-scramjet-${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.getAttribute\", {\n\t\tapply(ctx) {\n\t\t\tconst [name] = ctx.args;\n\n\t\t\tif (ctx.fn.call(ctx.this, `data-scramjet-${name}`)) {\n\t\t\t\tctx.return(ctx.fn.call(ctx.this, `data-scramjet-${name}`));\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} 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[\n\t\t\t\t\t\"Element.prototype.getAttribute\"\n\t\t\t\t].call(ctx.this, \"data-scramjet-script-source-src\");\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\tclient.Proxy(\"Element.prototype.insertAdjacentHTML\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[1])\n\t\t\t\tctx.args[1] = rewriteHtml(\n\t\t\t\t\tctx.args[1],\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},\n\t});\n\n\tclient.Trap(\"HTMLIFrameElement.prototype.contentWindow\", {\n\t\tget(ctx) {\n\t\t\tconst realwin = ctx.get() as Window;\n\t\t\tif (!realwin) return realwin;\n\n\t\t\tif (SCRAMJETCLIENT in realwin.self) {\n\t\t\t\tif (realwin.location.href.includes(\"accounts.google.com\")) return null; // don't question it\n\n\t\t\t\treturn realwin.self[SCRAMJETCLIENT].globalProxy;\n\t\t\t} else {\n\t\t\t\t// hook the iframe\n\t\t\t\tconst newclient = new ScramjetClient(realwin.self);\n\t\t\t\tnewclient.hook();\n\n\t\t\t\treturn newclient.globalProxy;\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Trap(\"HTMLIFrameElement.prototype.contentDocument\", {\n\t\tget(ctx) {\n\t\t\tconst contentwindow =\n\t\t\t\tclient.descriptors[\"HTMLIFrameElement.prototype.contentWindow\"].get;\n\t\t\tconst realwin = contentwindow.apply(ctx.this);\n\t\t\tif (!realwin) return realwin;\n\n\t\t\tif (SCRAMJETCLIENT in realwin.self) {\n\t\t\t\treturn realwin.self[SCRAMJETCLIENT].documentProxy;\n\t\t\t} else {\n\t\t\t\tconst newclient = new ScramjetClient(realwin.self);\n\t\t\t\tnewclient.hook();\n\n\t\t\t\treturn newclient.documentProxy;\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.Trap(\"Node.prototype.ownerDocument\", {\n\t\tget(ctx) {\n\t\t\t// return client.documentProxy;\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],\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(\"DOMParser.prototype.parseFromString\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[1] === \"text/html\") {\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}\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: typeof globalThis) {\n\tclient.Proxy(\"History.prototype.pushState\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[2]) ctx.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] = 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","import { ScramjetClient } from \"../client\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"IntersectionObserver\", {\n\t\tconstruct(ctx) {\n\t\t\t// Set to the real document\n\t\t\tif (ctx.args[1] && ctx.args[1].root) ctx.args[1].root = document;\n\t\t\tctx.call();\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.self) {\n\t\t\t\treturn ctx.return(realwin.self[SCRAMJETCLIENT].globalProxy.window);\n\t\t\t} else {\n\t\t\t\tconst newclient = new ScramjetClient(realwin.self);\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.self) {\n\t\t\t\treturn realwin.self[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\";\nimport { unrewriteUrl } from \"../../shared\";\n\nexport default function (client: ScramjetClient, self: typeof window) {\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: typeof globalThis) {\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 { config, rewriteUrl } from \"../../shared\";\nimport { ScramjetClient } from \"../client\";\nimport { type MessageC2W } from \"../../worker\";\nimport { getOwnPropertyDescriptorHandler } from \"../helpers\";\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}\nlet realPostMessage;\nif (self.ServiceWorker) {\n\trealPostMessage = ServiceWorker.prototype.postMessage;\n}\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tlet registration;\n\n\tclient.Proxy(\"EventTarget.prototype.addEventListener\", {\n\t\tapply(ctx) {\n\t\t\tif (registration === 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 (registration === 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(\"navigator.serviceWorker.getRegistration\", {\n\t\tapply(ctx) {\n\t\t\tctx.return(new Promise((resolve) => resolve(registration)));\n\t\t},\n\t});\n\n\tclient.Proxy(\"navigator.serviceWorker.getRegistrations\", {\n\t\tapply(ctx) {\n\t\t\tctx.return(new Promise((resolve) => resolve([registration])));\n\t\t},\n\t});\n\n\tclient.Trap(\"navigator.serviceWorker.ready\", {\n\t\tget(_ctx) {\n\t\t\tconsole.log(registration);\n\n\t\t\treturn new Promise((resolve) => resolve(registration));\n\t\t},\n\t});\n\n\tclient.Proxy(\"navigator.serviceWorker.register\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0] instanceof URL) ctx.args[0] = ctx.args[0].href;\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 nativeSharedWorker = client.natives[\"SharedWorker\"];\n\t\t\tconst worker = new nativeSharedWorker(url);\n\n\t\t\tconst handle = worker.port;\n\n\t\t\trealPostMessage.call(\n\t\t\t\tclient.serviceWorker.controller,\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\tconst fakeRegistration = new Proxy(\n\t\t\t\t{\n\t\t\t\t\t__proto__: ServiceWorkerRegistration.prototype,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tget(target, prop) {\n\t\t\t\t\t\tif (prop === \"installing\") {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (prop === \"waiting\") {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (prop === \"active\") {\n\t\t\t\t\t\t\treturn handle;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (prop === \"scope\") {\n\t\t\t\t\t\t\treturn ctx.args[0];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (prop === \"unregister\") {\n\t\t\t\t\t\t\treturn () => {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (prop === \"addEventListener\") {\n\t\t\t\t\t\t\treturn () => {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn Reflect.get(target, prop);\n\t\t\t\t\t},\n\t\t\t\t\tgetOwnPropertyDescriptor: getOwnPropertyDescriptorHandler,\n\t\t\t\t}\n\t\t\t);\n\t\t\tregistration = fakeRegistration;\n\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\tconst realSessionStorage = self.sessionStorage;\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\";\nimport { indirectEval } from \"./shared/eval\";\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\t// const d: PropertyDescriptor = {};\n\n\t// if (realDescriptor.enumerable !== undefined)\n\t// \td.enumerable = realDescriptor.enumerable;\n\t// if (realDescriptor.configurable !== undefined)\n\t// \td.configurable = realDescriptor.configurable;\n\t// if (realDescriptor.writable !== undefined)\n\t// \td.writable = realDescriptor.writable;\n\n\t// if (realDescriptor.get) {\n\t// \td.get = () => this.get(target, prop);\n\t// }\n\n\t// if (realDescriptor.set) {\n\t// \td.set = (value) => this.set(target, prop, value);\n\t// }\n\n\t// if (realDescriptor.value) {\n\t// \td.value = this.get(target, prop);\n\t// }\n\n\t// return d;\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;\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\nif (\"document\" in self && document?.currentScript) {\n\tdocument.currentScript.remove();\n}\n","// @ts-nocheck\nimport { ScramjetClient } from \"./client\";\nimport { nativeGetOwnPropertyDescriptor } from \"./natives\";\nimport { unrewriteUrl, rewriteUrl } from \"../shared\";\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\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: typeof globalThis) {\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].toString(), 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].toString(), 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].toString(), 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].toString(), 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].toString(), 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].toString(), 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].toString(), 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].toString(), client.meta);\n\t\t\t}\n\t\t},\n\t});\n}\n","import { flagEnabled } from \"../../scramjet\";\nimport { config } from \"../../shared\";\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\tif (arg.includes(\"localhost:1337/scramjet/\") && arg.includes(\"m3u8\"))\n\t\t\t\tdebugger;\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\t// if (arg instanceof Location) debugger;\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);\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, null, 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(rewriteJs(js, null, this.meta) as string);\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(`return ${stringifiedFunction}`, null, client.meta);\n\tctx.return(ctx.fn(content)());\n}\n\nexport default function (client: ScramjetClient, self: Self) {\n\tconst handler: Proxy = {\n\t\tapply(ctx) {\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\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}\n","let wasm;\n\nlet WASM_VECTOR_LEN = 0;\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\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\nfunction isLikeNone(x) {\n return x === undefined || x === null;\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\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\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().slice(ptr, ptr + len));\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nexport function init() {\n wasm.init();\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_export_4.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\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_export_4.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\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.__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_error_new = function(arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n };\n imports.wbg.__wbg_now_d3cbc9581625f686 = function(arg0) {\n const ret = arg0.now();\n return ret;\n };\n imports.wbg.__wbg_set_e864d25d9b399c9f = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_new_1cabf49927794f50 = function() { return handleError(function (arg0, arg1) {\n const ret = new URL(getStringFromWasm0(arg0, arg1));\n return ret;\n }, arguments) };\n imports.wbg.__wbg_call_5fb7c8066a4a4825 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = arg0.call(arg1, arg2, arg3);\n return ret;\n }, arguments) };\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.__wbg_new_e69b5f66fda8f13c = function() {\n const ret = new Object();\n return ret;\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 imports.wbg.__wbindgen_array_new = function() {\n const ret = [];\n return ret;\n };\n imports.wbg.__wbindgen_array_push = function(arg0, arg1) {\n arg0.push(arg1);\n };\n imports.wbg.__wbindgen_number_new = function(arg0) {\n const ret = arg0;\n return ret;\n };\n imports.wbg.__wbg_new_abda76e883ba8a5f = function() {\n const ret = new Error();\n return ret;\n };\n imports.wbg.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) {\n const ret = arg1.stack;\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_error_f851667af71bcfc6 = function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n };\n imports.wbg.__wbindgen_is_object = function(arg0) {\n const val = arg0;\n const ret = typeof(val) === 'object' && val !== null;\n return ret;\n };\n imports.wbg.__wbg_crypto_1d1f22824a6a080c = function(arg0) {\n const ret = arg0.crypto;\n return ret;\n };\n imports.wbg.__wbg_process_4a72847cc503995b = function(arg0) {\n const ret = arg0.process;\n return ret;\n };\n imports.wbg.__wbg_versions_f686565e586dd935 = function(arg0) {\n const ret = arg0.versions;\n return ret;\n };\n imports.wbg.__wbg_node_104a2ff8d6ea03a2 = function(arg0) {\n const ret = arg0.node;\n return ret;\n };\n imports.wbg.__wbindgen_is_string = function(arg0) {\n const ret = typeof(arg0) === 'string';\n return ret;\n };\n imports.wbg.__wbg_require_cca90b1a94a0255b = function() { return handleError(function () {\n const ret = module.require;\n return ret;\n }, arguments) };\n imports.wbg.__wbg_msCrypto_eb05e62b530a1508 = function(arg0) {\n const ret = arg0.msCrypto;\n return ret;\n };\n imports.wbg.__wbg_newwithlength_76462a666eca145f = function(arg0) {\n const ret = new Uint8Array(arg0 >>> 0);\n return ret;\n };\n imports.wbg.__wbindgen_is_function = function(arg0) {\n const ret = typeof(arg0) === 'function';\n return ret;\n };\n imports.wbg.__wbg_get_ef828680c64da212 = function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_self_bf91bf94d9e04084 = function() { return handleError(function () {\n const ret = self.self;\n return ret;\n }, arguments) };\n imports.wbg.__wbg_window_52dd9f07d03fd5f8 = function() { return handleError(function () {\n const ret = window.window;\n return ret;\n }, arguments) };\n imports.wbg.__wbg_globalThis_05c129bf37fcf1be = function() { return handleError(function () {\n const ret = globalThis.globalThis;\n return ret;\n }, arguments) };\n imports.wbg.__wbg_global_3eca19bb09e9c484 = function() { return handleError(function () {\n const ret = global.global;\n return ret;\n }, arguments) };\n imports.wbg.__wbindgen_is_undefined = function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n };\n imports.wbg.__wbg_newnoargs_1ede4bf2ebbaaf43 = function(arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg_call_a9ef466721e824f2 = function() { return handleError(function (arg0, arg1) {\n const ret = arg0.call(arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_call_3bfa248576352471 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = arg0.call(arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbindgen_memory = function() {\n const ret = wasm.memory;\n return ret;\n };\n imports.wbg.__wbg_buffer_ccaed51a635d8a2d = function(arg0) {\n const ret = arg0.buffer;\n return ret;\n };\n imports.wbg.__wbg_newwithbyteoffsetandlength_7e3eb787208af730 = function(arg0, arg1, arg2) {\n const ret = new Uint8Array(arg0, arg1 >>> 0, arg2 >>> 0);\n return ret;\n };\n imports.wbg.__wbg_randomFillSync_5c9c955aa56b6049 = function() { return handleError(function (arg0, arg1) {\n arg0.randomFillSync(arg1);\n }, arguments) };\n imports.wbg.__wbg_subarray_975a06f9dbd16995 = function(arg0, arg1, arg2) {\n const ret = arg0.subarray(arg1 >>> 0, arg2 >>> 0);\n return ret;\n };\n imports.wbg.__wbg_getRandomValues_3aa56aa6edec874c = function() { return handleError(function (arg0, arg1) {\n arg0.getRandomValues(arg1);\n }, arguments) };\n imports.wbg.__wbg_new_fec2611eb9180f95 = function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n };\n imports.wbg.__wbg_set_ec2fcf81bc573fd9 = function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {\n const ret = debugString(arg1);\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.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_export_4;\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\n return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n imports.wbg.memory = memory || new WebAssembly.Memory({initial:22,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\nif (typeof thread_stack_size !== 'undefined' && (typeof thread_stack_size !== 'number' || thread_stack_size === 0 || thread_stack_size % 65536 !== 0)) { throw 'invalid stack size' }\nwasm.__wbindgen_start(thread_stack_size);\nreturn 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('rewriter_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","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\tinit,\n\tinitSync,\n\trewrite_js,\n\trewrite_js_from_arraybuffer,\n\tRewriterOutput,\n} from \"../../../rewriter/out/rewriter.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\ninit();\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\tif (typeof input === \"string\") {\n\t\tout = rewrite_js(input, meta.base.href, url || \"(unknown)\", $scramjet);\n\t} else {\n\t\tout = rewrite_js_from_arraybuffer(\n\t\t\tnew Uint8Array(input),\n\t\t\tmeta.base.href,\n\t\t\turl || \"(unknown)\",\n\t\t\t$scramjet\n\t\t);\n\t}\n\tconst { js, errors, duration } = out;\n\n\t// TODO: maybe make this a scram flag?\n\tif (true) {\n\t\tfor (const error of errors) {\n\t\t\tconsole.error(\"oxc parse error\", error);\n\t\t}\n\t}\n\n\t// TODO: maybe make this a scram flag?\n\tif (true) {\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\tconsole.log(`oxc rewrite was ${timespan} (${duration}ms)`);\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 { 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.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 { $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.href;\n\t}\n\n\tif (url.startsWith(\"javascript:\")) {\n\t\treturn (\n\t\t\t\"javascript:\" + rewriteJs(url.slice(\"javascript:\".length), null, 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\n\t\treturn (\n\t\t\tlocation.origin +\n\t\t\t$scramjet.config.prefix +\n\t\t\t$scramjet.codec.encode(new URL(url, base).href)\n\t\t);\n\t}\n}\n\nexport function unrewriteUrl(url: string | URL) {\n\tif (url instanceof URL) {\n\t\turl = url.href;\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\";\n\nexport default function (client: ScramjetClient, self: Self) {\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\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].toString(), 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].toString(), 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\tcaptureListeners: Record<string, EventListener[]>;\n\tlisteners: Record<string, EventListener[]>;\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, self.WebSocket.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\tcaptureListeners: {},\n\t\t\t\tlisteners: {},\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\n\tclient.Proxy(\"EventTarget.prototype.addEventListener\", {\n\t\tapply(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return; // it's not a websocket ignore it\n\n\t\t\tconst [type, listener, opts] = ctx.args;\n\n\t\t\tif (\n\t\t\t\t(typeof opts === \"object\" && opts.capture) ||\n\t\t\t\t(typeof opts === \"boolean\" && opts)\n\t\t\t) {\n\t\t\t\tconst listeners = (ws.captureListeners[type] ??= []);\n\t\t\t\tlisteners.push(listener);\n\t\t\t\tws.captureListeners[type] = listeners;\n\t\t\t} else {\n\t\t\t\tconst listeners = (ws.listeners[type] ??= []);\n\t\t\t\tlisteners.push(listener);\n\t\t\t\tws.listeners[type] = listeners;\n\t\t\t}\n\n\t\t\tctx.return(undefined);\n\t\t},\n\t});\n\n\tclient.Proxy(\"EventTarget.prototype.removeEventListener\", {\n\t\tapply(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return;\n\n\t\t\tconst [type, listener, opts] = ctx.args;\n\n\t\t\tif (\n\t\t\t\t(typeof opts === \"object\" && opts.capture) ||\n\t\t\t\t(typeof opts === \"boolean\" && opts)\n\t\t\t) {\n\t\t\t\tconst listeners = (ws.captureListeners[type] ??= []);\n\t\t\t\tconst idx = listeners.indexOf(listener);\n\t\t\t\tif (idx !== -1) listeners.splice(idx, 1);\n\t\t\t\tws.captureListeners[type] = listeners;\n\t\t\t} else {\n\t\t\t\tconst listeners = (ws.listeners[type] ??= []);\n\t\t\t\tconst idx = listeners.indexOf(listener);\n\t\t\t\tif (idx !== -1) listeners.splice(idx, 1);\n\t\t\t\tws.listeners[type] = listeners;\n\t\t\t}\n\n\t\t\tctx.return(undefined);\n\t\t},\n\t});\n\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\";\nlet nativeworker;\nlet postmessage;\n\nif (self.Worker) {\n\tnativeworker = Worker;\n\tpostmessage = Worker.prototype.postMessage;\n}\n\nexport default function (client: ScramjetClient, self: Self) {\n\tlet worker;\n\tif (self.Worker && flagEnabled(\"syncxhr\", client.url)) {\n\t\tworker = new nativeworker(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\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;\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\tpostmessage.call(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 { flagEnabled } from \"../../scramjet\";\nimport { ScramjetClient } from \"../client\";\n\ntype Mapping = [string, number, number];\n\nconst sourcemaps: Record<string, Mapping[]> = {};\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$pushsourcemap\", {\n\t\tvalue: (maps: Mapping[], tag: string) => {\n\t\t\tsourcemaps[tag] = maps;\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\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}\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]) {\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\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 { iswindow } from \"..\";\nimport { BareMuxConnection } from \"../../shared\";\nimport { rewriteUrl } from \"../../shared\";\nimport type { MessageC2W } from \"../../worker\";\nimport { ScramjetClient } from \"../client\";\n\nconst sharedworkerpostmessage = MessagePort.prototype.postMessage;\nlet workerpostmessage;\nif (self.Worker) {\n\tworkerpostmessage = Worker.prototype.postMessage;\n}\nexport default function (client: ScramjetClient, self: typeof globalThis) {\n\tif (self.Worker) {\n\t\tclient.Proxy(\"Worker\", {\n\t\t\tconstruct({ args, call }) {\n\t\t\t\tif (args[0] instanceof URL) args[0] = args[0].href;\n\n\t\t\t\targs[0] = rewriteUrl(args[0], client.meta) + \"?dest=worker\";\n\n\t\t\t\tif (args[1] && args[1].type === \"module\") {\n\t\t\t\t\targs[0] += \"&type=module\";\n\t\t\t\t}\n\n\t\t\t\tconst worker = call();\n\t\t\t\tconst conn = new BareMuxConnection();\n\n\t\t\t\t(async () => {\n\t\t\t\t\tconst port = await conn.getInnerPort();\n\t\t\t\t\tworkerpostmessage.call(\n\t\t\t\t\t\tworker,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$scramjet$type: \"baremuxinit\",\n\t\t\t\t\t\t\tport,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[port]\n\t\t\t\t\t);\n\t\t\t\t})();\n\t\t\t},\n\t\t});\n\t}\n\n\tif (iswindow) {\n\t\tclient.Proxy(\"Worklet.prototype.addModule\", {\n\t\t\tapply(ctx) {\n\t\t\t\tif (ctx.args[0]) ctx.args[0] = rewriteUrl(ctx.args[0], client.meta);\n\t\t\t},\n\t\t});\n\n\t\t// sharedworkers can only be constructed from window\n\t\tclient.Proxy(\"SharedWorker\", {\n\t\t\tconstruct({ args, call }) {\n\t\t\t\tif (args[0] instanceof URL) args[0] = args[0].href;\n\n\t\t\t\targs[0] = rewriteUrl(args[0], client.meta) + \"?dest=worker\";\n\n\t\t\t\tif (args[1] && typeof args[1] === \"string\")\n\t\t\t\t\targs[1] = `${client.url.origin}@${args[1]}`;\n\n\t\t\t\tif (args[1] && typeof args[1] === \"object\") {\n\t\t\t\t\tif (args[1].type === \"module\") {\n\t\t\t\t\t\targs[0] += \"&type=module\";\n\t\t\t\t\t}\n\n\t\t\t\t\tif (args[1].name) {\n\t\t\t\t\t\targs[1].name = `${client.url.origin}@${args[1].name}`;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst worker = call();\n\t\t\t\tconst conn = new BareMuxConnection();\n\n\t\t\t\t(async () => {\n\t\t\t\t\tconst port = await conn.getInnerPort();\n\t\t\t\t\tsharedworkerpostmessage.call(\n\t\t\t\t\t\tworker.port,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$scramjet$type: \"baremuxinit\",\n\t\t\t\t\t\t\tport,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[port]\n\t\t\t\t\t);\n\t\t\t\t})();\n\t\t\t},\n\t\t});\n\t}\n}\n","import { iswindow, isworker } 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.self) {\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.self[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.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.window;\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 (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\n\tif (type === \"fetch\") {\n\t\tdbg.log(\"ee\", data);\n\t\tconst fetchhandlers = client.eventcallbacks.get(self);\n\t\tif (!fetchhandlers) return;\n\n\t\tfor (const handler of fetchhandlers) {\n\t\t\tif (handler.event !== \"fetch\") continue;\n\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.defaultFlags[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","createDocumentProxy","client","self","Proxy","target","prop","Reflect","newValue","location","rewriteUrl","getOwnPropertyDescriptorHandler","ctx","map","proxy","receiver","value","Object","name","namespace","NamedNodeMap","thisArg","argArray","keys","key","data","URL","rewriteCss","v","unrewriteCss","style","t","p","CSSStyleDeclaration","rewriteHtml","nativeSetAttribute","attrObject","urlinterfaces","originalhrefs","nativeGetOwnPropertyDescriptor","attr","element","descriptor","unrewriteUrl","i","desc","href","url","base","ruleList","htmlRules","rule","r","newval","rewriteJs","scriptSource","atob","unrewriteHtml","realwin","SCRAMJETCLIENT","newclient","contentwindow","doc","scram","n","Document","_self","ev","UrlChangeEvent","document","f","win","realPostMessage","order","enabled","flagEnabled","disabled","_client","Navigator","registration","undefined","Promise","resolve","_ctx","console","handle","worker","fakeRegistration","ServiceWorkerRegistration","ServiceWorker","handler","index","realLocalStorage","property","attributes","localStorageProxy","sessionStorageProxy","NavigateEvent","Event","UNSAFE_GLOBALS","createGlobalProxy","iswindow","isNaN","Number","isworker","issw","isdedicated","isshared","isemulatedsw","dbg","loadCodecs","runtime","ScramjetServiceWorkerRuntime","ScramjetContextInit","createLocationProxy","Location","fakeLocation","descriptorSource","native","args","nativeFunction","log","rewriteBlob","unrewriteBlob","argdbg","arg","recurse","Symbol","ar","e","closure","error","stack","newstack","config","lines","line","l","_value","js","indirectEval","indirection","realOnEvent","handlers","wraplistener","listener","realEvent","type","_target","reciever","unproxy","origlistener","proxylistener","arr","targets","rewriteFunction","stringifiedFunction","content","wasm","WASM_VECTOR_LEN","cachedUint8ArrayMemory0","getUint8ArrayMemory0","Uint8Array","cachedTextEncoder","TextEncoder","Error","encodeString","view","buf","passStringToWasm0","malloc","realloc","ptr","len","mem","offset","code","ret","cachedDataViewMemory0","getDataViewMemory0","DataView","cachedTextDecoder","TextDecoder","getStringFromWasm0","takeFromExternrefTable0","idx","handleError","addToExternrefTable0","obj","__wbg_load","module","imports","Response","WebAssembly","bytes","instance","__wbg_get_imports","arg0","arg1","x","ptr1","isLikeNone","len1","arg2","arguments","arg3","v0","getArrayU8FromWasm0","deferred0_0","deferred0_1","val","window","globalThis","global","Function","debugString","className","description","Array","length","debug","builtInMatches","toString","JSON","_","table","__wbg_init_memory","memory","__wbg_finalize_init","thread_stack_size","__wbg_init","module_or_path","Request","fetch","initSync","c","decoder","resolved","meta","text","rewriteJsNaiive","$scramjet","rewriteJsWrapper","input","out","errors","duration","rewrite_js","script_url","scramjet","ptr0","len0","ptr2","len2","rewrite_js_from_arraybuffer","passArray8ToWasm0","timespan","prefixed","tryCanParseURL","origin","pollutant","POLLUTANT","callerClient","callerGlobalThisProxied","wrappedPostMessage","toproxy","pollution","socketmap","WeakMap","fakeWebSocket","EventTarget","trustEvent","barews","state","fakeEventSend","fakeev","CloseEvent","payload","Blob","ArrayBuffer","MessageEvent","ws","opts","nativeworker","postmessage","self1","ARGS","HEADERS","headers","sab","SharedArrayBuffer","now","performance","status","headersLength","headersab","bodyLength","bodyab","body","parser","DOMParser","header","match","re","RegExp","Worker","sourcemaps","maps","tag","scramtag_ident","stringified","newString","scramtagstart","firstspace","absindex","abstagindex","parseInt","scramtagend","j","str","start","end","getCtx","setCtx","workerpostmessage","sharedworkerpostmessage","MessagePort","call","conn","BareMuxConnection","port","createWrapFn","identifier","eval","current","test","lhs","op","rhs","locationProxy","severity","message","old","fmt","Math","COMMITHASH","VERSION","flag","regex","partialflags","BareClient","ScramjetHeaders","rewriteSrcset","rewriteHeaders","rewriteWorkers","CookieStore","SCRAMJETFRAME"],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
(()=>{"use strict";var e={1762:function(e,r,t){t.d(r,{Z:function(){return o}});let o={fmt:function(e,r,...t){let o=Error.prepareStackTrace;Error.prepareStackTrace=(e,r)=>{r.shift(),r.shift(),r.shift();let t="";for(let e=1;e<Math.min(2,r.length);e++)r[e].getFunctionName()&&(t+=`${r[e].getFunctionName()} -> `+t);return t+=r[0].getFunctionName()||"Anonymous"};let n=function(){try{throw Error()}catch(e){return e.stack}}();Error.prepareStackTrace=o;let c=console[e]||console.log;c(`%c${n}%c ${r}`,`
|
|
2
|
+
background-color: ${{log:"#000",warn:"#f80",error:"#f00",debug:"transparent"}[e]};
|
|
3
|
+
color: ${{log:"#fff",warn:"#fff",error:"#fff",debug:"gray"}[e]};
|
|
4
|
+
padding: ${{log:2,warn:4,error:4,debug:0}[e]}px;
|
|
5
|
+
font-weight: bold;
|
|
6
|
+
font-family: monospace;
|
|
7
|
+
font-size: 0.9em;
|
|
8
|
+
`,`${"debug"===e?"color: gray":""}`,...t)},log:function(e,...r){this.fmt("log",e,...r)},warn:function(e,...r){this.fmt("warn",e,...r)},error:function(e,...r){this.fmt("error",e,...r)},debug:function(e,...r){this.fmt("debug",e,...r)}}}},r={};function t(o){var n=r[o];if(void 0!==n)return n.exports;var c=r[o]={exports:{}};return e[o](c,c.exports,t),c.exports}t.d=function(e,r){for(var o in r)t.o(r,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)};let o=Symbol.for("scramjet client global"),n=Symbol.for("scramjet frame handle");var c=t(1762).Z;class s extends EventTarget{controller;frame;constructor(e,r){super(),this.controller=e,this.frame=r,r[n]=this}get client(){return this.frame.contentWindow.window[o]}go(e){e instanceof URL&&(e=e.toString()),c.log("navigated to",e),this.frame.src=this.controller.encodeUrl(e)}back(){this.frame.contentWindow?.history.back()}forward(){this.frame.contentWindow?.history.forward()}reload(){this.frame.contentWindow?.location.reload()}}!("$scramjet"in self)&&(self.$scramjet={version:{build:"e4a0ee9",version:"1.0.2-dev"},codec:{},flagEnabled:function(e,r){let t=a.config.defaultFlags[e];for(let t in a.config.siteFlags){let o=a.config.siteFlags[t];if(new RegExp(t).test(r.href)&&e in o)return o[e]}return t}});let a=self.$scramjet,i=Function;function f(){a.codec.encode=i("url",a.config.codec.encode),a.codec.decode=i("url",a.config.codec.decode)}var l=t(1762).Z;window.ScramjetController=class e{db;constructor(e){let r={prefix:"/scramjet/",globals:{wrapfn:"$scramjet$wrap",wrapthisfn:"$scramjet$wrapthis",trysetfn:"$scramjet$tryset",importfn:"$scramjet$import",rewritefn:"$scramjet$rewrite",metafn:"$scramjet$meta",setrealmfn:"$scramjet$setrealm",pushsourcemapfn:"$scramjet$pushsourcemap"},files:{wasm:"/scramjet.wasm.js",shared:"/scramjet.shared.js",worker:"/scramjet.worker.js",client:"/scramjet.client.js",sync:"/scramjet.sync.js"},defaultFlags:{serviceworkers:!1,naiiveRewriter:!1,captureErrors:!0,strictRewrites:!0,syncxhr:!1,cleanerrors:!1,scramitize:!1,sourcemaps:!1},siteFlags:{},codec:{encode:`if (!url) return url;
|
|
9
|
+
return encodeURIComponent(url);`,decode:`if (!url) return url;
|
|
10
|
+
return decodeURIComponent(url);`}},t=(e,r)=>{for(let o in r)r[o]instanceof Object&&o in e&&Object.assign(r[o],t(e[o],r[o]));return Object.assign(e||{},r)};a.config=t(r,e)}async init(e){f(),await this.openIDB();let r=await navigator.serviceWorker.register(e);return l.log("service worker registered"),r}createFrame(e){return!e&&(e=document.createElement("iframe")),new s(this,e)}encodeUrl(e){return e instanceof URL&&(e=e.toString()),a.config.prefix+a.codec.encode(e)}async openIDB(){let e=indexedDB.open("$scramjet",1);return new Promise((r,t)=>{e.onsuccess=async()=>{this.db=e.result,await this.#e(),r(e.result)},e.onupgradeneeded=()=>{let r=e.result;!r.objectStoreNames.contains("config")&&r.createObjectStore("config"),!r.objectStoreNames.contains("cookies")&&r.createObjectStore("cookies")},e.onerror=()=>t(e.error)})}async #e(){if(!this.db){console.error("Store not ready!");return}let e=this.db.transaction("config","readwrite").objectStore("config").put(a.config,"config");return new Promise((r,t)=>{e.onsuccess=r,e.onerror=t})}async modifyConfig(e){a.config=Object.assign({},a.config,e),f(),await this.#e()}}})();
|
|
11
|
+
//# sourceMappingURL=scramjet.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scramjet.controller.js","sources":["webpack://@mercuryworkshop/scramjet/./src/log.ts","webpack://@mercuryworkshop/scramjet/./src/symbols.ts","webpack://@mercuryworkshop/scramjet/./src/controller/frame.ts","webpack://@mercuryworkshop/scramjet/./src/scramjet.ts","webpack://@mercuryworkshop/scramjet/./src/controller/index.ts"],"sourcesContent":["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","// 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","import { ScramjetController } from \".\";\nimport type { ScramjetClient } from \"../client/client\";\nimport { SCRAMJETCLIENT, SCRAMJETFRAME } from \"../symbols\";\n\nexport class ScramjetFrame extends EventTarget {\n\tconstructor(\n\t\tprivate controller: ScramjetController,\n\t\tpublic frame: HTMLIFrameElement\n\t) {\n\t\tsuper();\n\t\tframe[SCRAMJETFRAME] = this;\n\t}\n\n\tget client(): ScramjetClient {\n\t\treturn this.frame.contentWindow.window[SCRAMJETCLIENT];\n\t}\n\n\tgo(url: string | URL) {\n\t\tif (url instanceof URL) url = url.toString();\n\n\t\tdbg.log(\"navigated to\", url);\n\n\t\tthis.frame.src = this.controller.encodeUrl(url);\n\t}\n\n\tback() {\n\t\tthis.frame.contentWindow?.history.back();\n\t}\n\n\tforward() {\n\t\tthis.frame.contentWindow?.history.forward();\n\t}\n\n\treload() {\n\t\tthis.frame.contentWindow?.location.reload();\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.defaultFlags[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 { ScramjetConfig } from \"../types\";\nimport { ScramjetFrame } from \"./frame\";\nimport { $scramjet, loadCodecs } from \"../scramjet\";\n\nexport class ScramjetController {\n\tprivate db: IDBDatabase;\n\n\tconstructor(config: Partial<ScramjetConfig>) {\n\t\t// sane ish defaults\n\t\tconst defaultConfig: Partial<ScramjetConfig> = {\n\t\t\tprefix: \"/scramjet/\",\n\t\t\tglobals: {\n\t\t\t\twrapfn: \"$scramjet$wrap\",\n\t\t\t\twrapthisfn: \"$scramjet$wrapthis\",\n\t\t\t\ttrysetfn: \"$scramjet$tryset\",\n\t\t\t\timportfn: \"$scramjet$import\",\n\t\t\t\trewritefn: \"$scramjet$rewrite\",\n\t\t\t\tmetafn: \"$scramjet$meta\",\n\t\t\t\tsetrealmfn: \"$scramjet$setrealm\",\n\t\t\t\tpushsourcemapfn: \"$scramjet$pushsourcemap\",\n\t\t\t},\n\t\t\tfiles: {\n\t\t\t\twasm: \"/scramjet.wasm.js\",\n\t\t\t\tshared: \"/scramjet.shared.js\",\n\t\t\t\tworker: \"/scramjet.worker.js\",\n\t\t\t\tclient: \"/scramjet.client.js\",\n\t\t\t\tsync: \"/scramjet.sync.js\",\n\t\t\t},\n\t\t\tdefaultFlags: {\n\t\t\t\tserviceworkers: false,\n\t\t\t\tnaiiveRewriter: false,\n\t\t\t\tcaptureErrors: true,\n\t\t\t\tstrictRewrites: true,\n\t\t\t\tsyncxhr: false,\n\t\t\t\tcleanerrors: false,\n\t\t\t\tscramitize: false,\n\t\t\t\tsourcemaps: false,\n\t\t\t},\n\t\t\tsiteFlags: {},\n\t\t\tcodec: {\n\t\t\t\tencode: `if (!url) return url;\n\t\t\t\t\treturn encodeURIComponent(url);`,\n\t\t\t\tdecode: `if (!url) return url;\n\t\t\t\t\treturn decodeURIComponent(url);`,\n\t\t\t},\n\t\t};\n\n\t\tconst deepMerge = (target: any, source: any): any => {\n\t\t\tfor (const key in source) {\n\t\t\t\tif (source[key] instanceof Object && key in target) {\n\t\t\t\t\tObject.assign(source[key], deepMerge(target[key], source[key]));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn Object.assign(target || {}, source);\n\t\t};\n\n\t\t$scramjet.config = deepMerge(defaultConfig, config);\n\t}\n\n\tasync init(serviceWorkerPath: string): Promise<ServiceWorkerRegistration> {\n\t\tloadCodecs();\n\n\t\tawait this.openIDB();\n\n\t\tconst reg = await navigator.serviceWorker.register(serviceWorkerPath);\n\t\tdbg.log(\"service worker registered\");\n\n\t\treturn reg;\n\t}\n\n\tcreateFrame(frame?: HTMLIFrameElement): ScramjetFrame {\n\t\tif (!frame) {\n\t\t\tframe = document.createElement(\"iframe\");\n\t\t}\n\n\t\treturn new ScramjetFrame(this, frame);\n\t}\n\n\tencodeUrl(url: string | URL): string {\n\t\tif (url instanceof URL) url = url.toString();\n\n\t\treturn $scramjet.config.prefix + $scramjet.codec.encode(url);\n\t}\n\n\tasync openIDB(): Promise<IDBDatabase> {\n\t\tconst db = indexedDB.open(\"$scramjet\", 1);\n\n\t\treturn new Promise<IDBDatabase>((resolve, reject) => {\n\t\t\tdb.onsuccess = async () => {\n\t\t\t\tthis.db = db.result;\n\t\t\t\tawait this.#saveConfig();\n\t\t\t\tresolve(db.result);\n\t\t\t};\n\t\t\tdb.onupgradeneeded = () => {\n\t\t\t\tconst res = db.result;\n\t\t\t\tif (!res.objectStoreNames.contains(\"config\")) {\n\t\t\t\t\tres.createObjectStore(\"config\");\n\t\t\t\t}\n\t\t\t\tif (!res.objectStoreNames.contains(\"cookies\")) {\n\t\t\t\t\tres.createObjectStore(\"cookies\");\n\t\t\t\t}\n\t\t\t};\n\t\t\tdb.onerror = () => reject(db.error);\n\t\t});\n\t}\n\n\tasync #saveConfig() {\n\t\tif (!this.db) {\n\t\t\tconsole.error(\"Store not ready!\");\n\n\t\t\treturn;\n\t\t}\n\t\tconst tx = this.db.transaction(\"config\", \"readwrite\");\n\t\tconst store = tx.objectStore(\"config\");\n\t\tconst req = store.put($scramjet.config, \"config\");\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\treq.onsuccess = resolve;\n\t\t\treq.onerror = reject;\n\t\t});\n\t}\n\n\tasync modifyConfig(config: ScramjetConfig) {\n\t\t$scramjet.config = Object.assign({}, $scramjet.config, config);\n\t\tloadCodecs();\n\n\t\tawait this.#saveConfig();\n\t}\n}\n\nwindow.ScramjetController = ScramjetController;\n"],"names":["severity","message","args","old","Error","_","stack","fmt","i","Math","SCRAMJETCLIENT","Symbol","SCRAMJETFRAME","ScramjetFrame","EventTarget","self","COMMITHASH","VERSION","flagEnabled","flag","url","value","$scramjet","regex","partialflags","RegExp","nativeFunction","Function","loadCodecs","window","ScramjetController","config","defaultConfig","deepMerge","target","source","key","Object","serviceWorkerPath","reg","navigator","dbg","frame","document","URL","db","indexedDB","Promise","resolve","reject","res","console","req","store","tx"],"mappings":"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"}
|