@mercuryworkshop/scramjet-controller 0.0.5 → 0.0.6
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/package.json +1 -1
- package/src/index.ts +13 -6
- package/tsconfig.json +0 -1
- package/dist/controller.api.js +0 -43
- package/dist/controller.api.js.map +0 -1
- package/dist/controller.inject.js +0 -2
- package/dist/controller.inject.js.map +0 -1
- package/dist/controller.sw.js +0 -2
- package/dist/controller.sw.js.map +0 -1
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -26,17 +26,23 @@ type Config = {
|
|
|
26
26
|
prefix: string;
|
|
27
27
|
};
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
$scramjet.setWasm(await resp.arrayBuffer());
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
export const config: Config = {
|
|
29
|
+
const defaultConfig: Config = {
|
|
34
30
|
prefix: "/~/sj/",
|
|
35
31
|
virtualWasmPath: "scramjet.wasm.js",
|
|
36
32
|
injectPath: "/controller/controller.inject.js",
|
|
37
33
|
scramjetPath: "/scramjet/scramjet.js",
|
|
38
34
|
wasmPath: "/scramjet/scramjet.wasm.wasm",
|
|
39
35
|
};
|
|
36
|
+
let config: Config;
|
|
37
|
+
|
|
38
|
+
export default async function init(cfg: Partial<Config> = {}): Promise<{ Controller: typeof Controller }> {
|
|
39
|
+
config = { ...defaultConfig, ...cfg };
|
|
40
|
+
let resp = await fetch(config.wasmPath)
|
|
41
|
+
|
|
42
|
+
$scramjet.setWasm(await resp.arrayBuffer());
|
|
43
|
+
|
|
44
|
+
return { Controller };
|
|
45
|
+
}
|
|
40
46
|
|
|
41
47
|
const cfg = {
|
|
42
48
|
flags: {
|
|
@@ -70,7 +76,8 @@ type ControllerInit = {
|
|
|
70
76
|
serviceworker: ServiceWorker;
|
|
71
77
|
transport: ProxyTransport;
|
|
72
78
|
};
|
|
73
|
-
|
|
79
|
+
|
|
80
|
+
class Controller {
|
|
74
81
|
id: string;
|
|
75
82
|
prefix: string;
|
|
76
83
|
frames: Frame[] = [];
|
package/tsconfig.json
CHANGED
package/dist/controller.api.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
var $scramjetController;(()=>{var e={470:function(e,t,r){r.d(t,{C:()=>s});class s{methods;id;sendRaw;counter=0;promiseCallbacks=new Map;constructor(e,t,r){this.methods=e,this.id=t,this.sendRaw=r}recieve(e){if(null==e||"object"!=typeof e)return;let t=e[this.id];if(null==t||"object"!=typeof t)return;let r=t.$type;if("response"===r){let e=t.$token,r=t.$data,s=t.$error,o=this.promiseCallbacks.get(e);if(!o)return;this.promiseCallbacks.delete(e),void 0!==s?o.reject(Error(s)):o.resolve(r)}else if("request"===r){let e=t.$method,r=t.$args;this.methods[e](r).then(e=>{this.sendRaw({[this.id]:{$type:"response",$token:t.$token,$data:e?.[0]}},e?.[1])}).catch(e=>{console.error(e),this.sendRaw({[this.id]:{$type:"response",$token:t.$token,$error:e?.toString()||"Unknown error"}},[])})}}call(e,t,r=[]){let s=this.counter++;return new Promise((o,a)=>{this.promiseCallbacks.set(s,{resolve:o,reject:a}),this.sendRaw({[this.id]:{$type:"request",$method:e,$args:t,$token:s}},r)})}}}},t={};function r(s){var o=t[s];if(void 0!==o)return o.exports;var a=t[s]={exports:{}};return e[s](a,a.exports,r),a.exports}r.d=(e,t)=>{for(var s in t)r.o(t,s)&&!r.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};(()=>{r.r(s),r.d(s,{Controller:()=>d,config:()=>o});var e=r(470);let t=new $scramjet.CookieJar;fetch("/scramjet/scramjet.wasm.wasm").then(async e=>{$scramjet.setWasm(await e.arrayBuffer())});let o={prefix:"/~/sj/",virtualWasmPath:"scramjet.wasm.js",injectPath:"/controller/controller.inject.js",scramjetPath:"/scramjet/scramjet.js",wasmPath:"/scramjet/scramjet.wasm.wasm"},a={flags:{...$scramjet.defaultConfig.flags,allowFailedIntercepts:!0},maskedfiles:["inject.js","scramjet.wasm.js"]},n=null;function i(){return Math.random().toString(36).substring(2,10)}let c=e=>e?encodeURIComponent(e):e,l=e=>e?decodeURIComponent(e):e;class d{init;id;prefix;frames=[];cookieJar=new $scramjet.CookieJar;rpc;ready;readyResolve;transport;methods={ready:async()=>{this.readyResolve()},request:async e=>{try{let t=new URL(e.rawUrl).pathname,r=this.frames.find(e=>t.startsWith(e.prefix));if(!r)throw Error("No frame found for request");if(t===r.prefix+o.virtualWasmPath){if(!n){let e=await fetch(o.wasmPath),t=await e.arrayBuffer(),r=btoa(new Uint8Array(t).reduce((e,t)=>(e.push(String.fromCharCode(t)),e),[]).join("")),s="";s+=`console.warn('WTF'); if ('document' in self && document.currentScript) { document.currentScript.remove(); }
|
|
2
|
-
self.WASM = '${r}';`,n=s}return[{body:n,status:200,statusText:"OK",headers:{"Content-Type":["application/javascript"]}},[]]}let s=$scramjet.ScramjetHeaders.fromRawHeaders(e.initialHeaders),a=await r.fetchHandler.handleFetch({initialHeaders:s,rawClientUrl:e.rawClientUrl?new URL(e.rawClientUrl):void 0,rawUrl:new URL(e.rawUrl),destination:e.destination,method:e.method,mode:e.mode,referrer:e.referrer,body:e.body,cache:e.cache});return[{body:a.body,status:a.status,statusText:a.statusText,headers:a.headers.toRawHeaders()},a.body instanceof ReadableStream||a.body instanceof ArrayBuffer?[a.body]:[]]}catch(e){throw console.error("Error in controller request handler:",e),e}},initRemoteTransport:async t=>{let r=new e.C({request:async({remote:e,method:t,body:r,headers:s})=>{let o=await this.transport.request(new URL(e),t,r,s,void 0);return[o,[o.body]]},connect:async({url:e,protocols:t,requestHeaders:r,port:s})=>{let o,a=new Promise(e=>o=e),[n,i]=this.transport.connect(new URL(e),t,r,e=>{o({result:"success",protocol:e})},e=>{s.postMessage({type:"data",data:e},e instanceof ArrayBuffer?[e]:[])},(e,t)=>{s.postMessage({type:"close",code:e,reason:t})},e=>{o({result:"failure",error:e})});return s.onmessageerror=e=>{console.error("Transport port messageerror (this should never happen!)",e)},s.onmessage=({data:e})=>{"data"===e.type?n(e.data):"close"===e.type&&i(e.code,e.reason)},[await a,[]]}},"transport",(e,r)=>t.postMessage(e,r));t.onmessageerror=e=>{console.error("Transport port messageerror (this should never happen!)",e)},t.onmessage=e=>{r.recieve(e.data)},r.call("ready",void 0,[])},sendSetCookie:async({url:e,cookie:t})=>{}};constructor(t){this.init=t,this.transport=t.transport,this.id=i(),this.prefix=o.prefix+this.id+"/",this.ready=new Promise(e=>{this.readyResolve=e});let r=new MessageChannel;this.rpc=new e.C(this.methods,"tabchannel-"+this.id,(e,t)=>{r.port1.postMessage(e,t)}),r.port1.addEventListener("message",e=>{this.rpc.recieve(e.data)}),r.port1.start(),t.serviceworker.postMessage({$controller$init:{prefix:o.prefix+this.id,id:this.id}},[r.port2])}createFrame(e){let t=new h(this,e??=document.createElement("iframe"));return this.frames.push(t),t}wait(){return this.ready}}class h{controller;element;fetchHandler;id;prefix;get context(){let e={...$scramjet.defaultConfig,...a};return{cookieJar:t,prefix:new URL(this.prefix,location.href),config:e,interface:{getInjectScripts:function e(t,r,s,o){return function(a,n,i){return[i(r.scramjetPath),i(r.injectPath),i(o.href+r.virtualWasmPath),i("data:text/javascript;base64,"+btoa(`
|
|
3
|
-
document.currentScript.remove();
|
|
4
|
-
$scramjetController.load({
|
|
5
|
-
config: ${JSON.stringify(r)},
|
|
6
|
-
sjconfig: ${JSON.stringify(s)},
|
|
7
|
-
cookies: ${t.dump()},
|
|
8
|
-
prefix: new URL("${o.href}"),
|
|
9
|
-
yieldGetInjectScripts: ${e.toString()},
|
|
10
|
-
codecEncode: ${c.toString()},
|
|
11
|
-
codecDecode: ${l.toString()},
|
|
12
|
-
})
|
|
13
|
-
`))]}}(this.controller.cookieJar,o,{...$scramjet.defaultConfig,...a},new URL(this.prefix,location.href)),getWorkerInjectScripts:(t,r,s)=>{let a="";return a+=s(o.scramjetPath),a+=s(this.prefix+o.virtualWasmPath),a+=`
|
|
14
|
-
(()=>{
|
|
15
|
-
const { ScramjetClient, CookieJar, setWasm } = $scramjet;
|
|
16
|
-
|
|
17
|
-
setWasm(Uint8Array.from(atob(self.WASM), (c) => c.charCodeAt(0)));
|
|
18
|
-
delete self.WASM;
|
|
19
|
-
|
|
20
|
-
const sjconfig = ${JSON.stringify(e)};
|
|
21
|
-
const prefix = new URL("${this.prefix}", location.href);
|
|
22
|
-
|
|
23
|
-
const context = {
|
|
24
|
-
interface: {
|
|
25
|
-
codecEncode: ${c.toString()},
|
|
26
|
-
codecDecode: ${l.toString()},
|
|
27
|
-
},
|
|
28
|
-
prefix,
|
|
29
|
-
config: sjconfig
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
const client = new ScramjetClient(globalThis, {
|
|
33
|
-
context,
|
|
34
|
-
transport: null,
|
|
35
|
-
shouldPassthroughWebsocket: (url) => {
|
|
36
|
-
return url === "wss://anura.pro/";
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
client.hook();
|
|
41
|
-
})();
|
|
42
|
-
`},codecEncode:c,codecDecode:l}}}constructor(e,t){this.controller=e,this.element=t,this.id=i(),this.prefix=this.controller.prefix+this.id+"/",this.fetchHandler=new $scramjet.ScramjetFetchHandler({crossOriginIsolated:self.crossOriginIsolated,context:this.context,transport:e.transport,async sendSetCookie(e,t){},fetchBlobUrl:async e=>await fetch(e),fetchDataUrl:async e=>await fetch(e)})}go(e){let t=$scramjet.rewriteUrl(e,this.context,{origin:new URL(location.href),base:new URL(location.href)});this.element.src=t}}})(),$scramjetController=s})();
|
|
43
|
-
//# sourceMappingURL=controller.api.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"controller.api.js","sources":["webpack://$scramjetController/./packages/rpc/index.ts","webpack://$scramjetController/webpack/runtime/define_property_getters","webpack://$scramjetController/webpack/runtime/has_own_property","webpack://$scramjetController/webpack/runtime/make_namespace_object","webpack://$scramjetController/./packages/controller/src/index.ts"],"sourcesContent":["type Serverbound = {\n\tmethod1: [{ paramA: string; paramB: number }, boolean];\n\tmethod2: [string, number];\n};\n\ntype Clientbound = {\n\tmethod1: [number];\n\tmethod2: [boolean, string];\n};\n\nexport type RpcDescription = {\n\t[method: string]: [args: any, returnType: any] | [args: any] | [];\n};\n\nexport type MethodsDefinition<Description extends RpcDescription> = {\n\t[Method in keyof Description]: (\n\t\t...args: Description[Method] extends [infer A, ...any[]] ? [A] : []\n\t) => Description[Method] extends [any, infer R]\n\t\t? Promise<[R, Transferable[]]>\n\t\t: Promise<void>;\n};\n\nexport class RpcHelper<\n\tLocal extends RpcDescription,\n\tRemote extends RpcDescription,\n> {\n\tcounter: number = 0;\n\tpromiseCallbacks: Map<\n\t\tnumber,\n\t\t{ resolve: (value: any) => void; reject: (reason?: any) => void }\n\t> = new Map();\n\tconstructor(\n\t\tprivate methods: MethodsDefinition<Local>,\n\t\tprivate id: string,\n\t\tprivate sendRaw: (data: any, transfer: Transferable[]) => void\n\t) {}\n\n\trecieve(data: any) {\n\t\tif (data === undefined || data === null || typeof data !== \"object\") return;\n\t\tconst dt = data[this.id];\n\t\tif (dt === undefined || dt === null || typeof dt !== \"object\") return;\n\n\t\tconst type = dt.$type;\n\n\t\tif (type === \"response\") {\n\t\t\tconst token = dt.$token;\n\t\t\tconst data = dt.$data;\n\t\t\tconst error = dt.$error;\n\t\t\tconst cb = this.promiseCallbacks.get(token);\n\t\t\tif (!cb) return;\n\t\t\tthis.promiseCallbacks.delete(token);\n\t\t\tif (error !== undefined) {\n\t\t\t\tcb.reject(new Error(error));\n\t\t\t} else {\n\t\t\t\tcb.resolve(data);\n\t\t\t}\n\t\t} else if (type === \"request\") {\n\t\t\tconst method = dt.$method as keyof Local;\n\t\t\tconst args = dt.$args as Local[typeof method][0];\n\t\t\t(this.methods[method] as any)(args)\n\t\t\t\t.then((r: any) => {\n\t\t\t\t\tthis.sendRaw(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t[this.id]: {\n\t\t\t\t\t\t\t\t$type: \"response\",\n\t\t\t\t\t\t\t\t$token: dt.$token,\n\t\t\t\t\t\t\t\t$data: r?.[0],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tr?.[1]\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.catch((err: any) => {\n\t\t\t\t\tconsole.error(err);\n\t\t\t\t\tthis.sendRaw(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t[this.id]: {\n\t\t\t\t\t\t\t\t$type: \"response\",\n\t\t\t\t\t\t\t\t$token: dt.$token,\n\t\t\t\t\t\t\t\t$error: err?.toString() || \"Unknown error\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[]\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t}\n\t}\n\n\tcall<Method extends keyof Remote>(\n\t\tmethod: Method,\n\t\targs: Remote[Method][0],\n\t\ttransfer: Transferable[] = []\n\t): Promise<Remote[Method][1]> {\n\t\tlet token = this.counter++;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.promiseCallbacks.set(token, { resolve, reject });\n\t\t\tthis.sendRaw(\n\t\t\t\t{\n\t\t\t\t\t[this.id]: {\n\t\t\t\t\t\t$type: \"request\",\n\t\t\t\t\t\t$method: method,\n\t\t\t\t\t\t$args: args,\n\t\t\t\t\t\t$token: token,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\ttransfer\n\t\t\t);\n\t\t});\n\t}\n}\n","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { type MethodsDefinition, RpcHelper } from \"@mercuryworkshop/rpc\";\nimport type * as ScramjetGlobal from \"@mercuryworkshop/scramjet\";\n\ndeclare const $scramjet: typeof ScramjetGlobal;\n\nimport {\n\ttype TransportToController,\n\ttype Controllerbound,\n\ttype ControllerToTransport,\n\ttype SWbound,\n\ttype WebSocketMessage,\n} from \"./types\";\nimport {\n\tBareCompatibleClient,\n\ttype BareResponse,\n\ttype ProxyTransport,\n} from \"@mercuryworkshop/proxy-transports\";\n\nconst cookieJar = new $scramjet.CookieJar();\n\ntype Config = {\n\twasmPath: string;\n\tinjectPath: string;\n\tscramjetPath: string;\n\tvirtualWasmPath: string;\n\tprefix: string;\n};\n\nfetch(\"/scramjet/scramjet.wasm.wasm\").then(async (resp) => {\n\t$scramjet.setWasm(await resp.arrayBuffer());\n});\n\nexport const config: Config = {\n\tprefix: \"/~/sj/\",\n\tvirtualWasmPath: \"scramjet.wasm.js\",\n\tinjectPath: \"/controller/controller.inject.js\",\n\tscramjetPath: \"/scramjet/scramjet.js\",\n\twasmPath: \"/scramjet/scramjet.wasm.wasm\",\n};\n\nconst cfg = {\n\tflags: {\n\t\t...$scramjet.defaultConfig.flags,\n\t\tallowFailedIntercepts: true,\n\t},\n\tmaskedfiles: [\"inject.js\", \"scramjet.wasm.js\"],\n};\n\nconst frames: Record<string, Frame> = {};\n\nlet wasmPayload: string | null = null;\n\nfunction makeId(): string {\n\treturn Math.random().toString(36).substring(2, 10);\n}\n\nconst codecEncode = (url: string) => {\n\tif (!url) return url;\n\n\treturn encodeURIComponent(url);\n};\n\nconst codecDecode = (url: string) => {\n\tif (!url) return url;\n\n\treturn decodeURIComponent(url);\n};\n\ntype ControllerInit = {\n\tserviceworker: ServiceWorker;\n\ttransport: ProxyTransport;\n};\nexport class Controller {\n\tid: string;\n\tprefix: string;\n\tframes: Frame[] = [];\n\tcookieJar = new $scramjet.CookieJar();\n\n\trpc: RpcHelper<Controllerbound, SWbound>;\n\tprivate ready: Promise<void>;\n\tprivate readyResolve!: () => void;\n\n\ttransport: ProxyTransport;\n\n\tprivate methods: MethodsDefinition<Controllerbound> = {\n\t\tready: async () => {\n\t\t\tthis.readyResolve();\n\t\t},\n\t\trequest: async (data) => {\n\t\t\ttry {\n\t\t\t\tlet path = new URL(data.rawUrl).pathname;\n\t\t\t\tconst frame = this.frames.find((f) => path.startsWith(f.prefix));\n\t\t\t\tif (!frame) throw new Error(\"No frame found for request\");\n\n\t\t\t\tif (path === frame.prefix + config.virtualWasmPath) {\n\t\t\t\t\tif (!wasmPayload) {\n\t\t\t\t\t\tconst resp = await fetch(config.wasmPath);\n\t\t\t\t\t\tconst buf = await resp.arrayBuffer();\n\t\t\t\t\t\tconst b64 = btoa(\n\t\t\t\t\t\t\tnew Uint8Array(buf)\n\t\t\t\t\t\t\t\t.reduce(\n\t\t\t\t\t\t\t\t\t(data, byte) => (data.push(String.fromCharCode(byte)), data),\n\t\t\t\t\t\t\t\t\t[] as any\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join(\"\")\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tlet payload = \"\";\n\t\t\t\t\t\tpayload +=\n\t\t\t\t\t\t\t\"console.warn('WTF'); if ('document' in self && document.currentScript) { document.currentScript.remove(); }\\n\";\n\t\t\t\t\t\tpayload += `self.WASM = '${b64}';`;\n\t\t\t\t\t\twasmPayload = payload;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tbody: wasmPayload,\n\t\t\t\t\t\t\tstatus: 200,\n\t\t\t\t\t\t\tstatusText: \"OK\",\n\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\t\"Content-Type\": [\"application/javascript\"],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[],\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\tlet sjheaders = $scramjet.ScramjetHeaders.fromRawHeaders(\n\t\t\t\t\tdata.initialHeaders\n\t\t\t\t);\n\n\t\t\t\tconst fetchresponse = await frame.fetchHandler.handleFetch({\n\t\t\t\t\tinitialHeaders: sjheaders,\n\t\t\t\t\trawClientUrl: data.rawClientUrl\n\t\t\t\t\t\t? new URL(data.rawClientUrl)\n\t\t\t\t\t\t: undefined,\n\t\t\t\t\trawUrl: new URL(data.rawUrl),\n\t\t\t\t\tdestination: data.destination,\n\t\t\t\t\tmethod: data.method,\n\t\t\t\t\tmode: data.mode,\n\t\t\t\t\treferrer: data.referrer,\n\t\t\t\t\tbody: data.body,\n\t\t\t\t\tcache: data.cache,\n\t\t\t\t});\n\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\tbody: fetchresponse.body,\n\t\t\t\t\t\tstatus: fetchresponse.status,\n\t\t\t\t\t\tstatusText: fetchresponse.statusText,\n\t\t\t\t\t\theaders: fetchresponse.headers.toRawHeaders(),\n\t\t\t\t\t},\n\t\t\t\t\tfetchresponse.body instanceof ReadableStream ||\n\t\t\t\t\tfetchresponse.body instanceof ArrayBuffer\n\t\t\t\t\t\t? [fetchresponse.body]\n\t\t\t\t\t\t: [],\n\t\t\t\t];\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(\"Error in controller request handler:\", e);\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t},\n\t\tinitRemoteTransport: async (port) => {\n\t\t\tconst rpc = new RpcHelper<TransportToController, ControllerToTransport>(\n\t\t\t\t{\n\t\t\t\t\trequest: async ({ remote, method, body, headers }) => {\n\t\t\t\t\t\tlet response = await this.transport.request(\n\t\t\t\t\t\t\tnew URL(remote),\n\t\t\t\t\t\t\tmethod,\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\theaders,\n\t\t\t\t\t\t\tundefined\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn [response, [response.body]];\n\t\t\t\t\t},\n\t\t\t\t\tconnect: async ({ url, protocols, requestHeaders, port }) => {\n\t\t\t\t\t\tlet resolve: (arg: TransportToController[\"connect\"][1]) => void;\n\t\t\t\t\t\tlet promise = new Promise<TransportToController[\"connect\"][1]>(\n\t\t\t\t\t\t\t(res) => (resolve = res)\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst [send, close] = this.transport.connect(\n\t\t\t\t\t\t\tnew URL(url),\n\t\t\t\t\t\t\tprotocols,\n\t\t\t\t\t\t\trequestHeaders,\n\t\t\t\t\t\t\t(protocol) => {\n\t\t\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\t\t\tresult: \"success\",\n\t\t\t\t\t\t\t\t\tprotocol: protocol,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t(data) => {\n\t\t\t\t\t\t\t\tport.postMessage(\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\ttype: \"data\",\n\t\t\t\t\t\t\t\t\t\tdata: data,\n\t\t\t\t\t\t\t\t\t} as WebSocketMessage,\n\t\t\t\t\t\t\t\t\tdata instanceof ArrayBuffer ? [data] : []\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t(close, reason) => {\n\t\t\t\t\t\t\t\tport.postMessage({\n\t\t\t\t\t\t\t\t\ttype: \"close\",\n\t\t\t\t\t\t\t\t\tcode: close,\n\t\t\t\t\t\t\t\t\treason: reason,\n\t\t\t\t\t\t\t\t} as WebSocketMessage);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t(error) => {\n\t\t\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\t\t\tresult: \"failure\",\n\t\t\t\t\t\t\t\t\terror: error,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t\tport.onmessageerror = (ev) => {\n\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\t\"Transport port messageerror (this should never happen!)\",\n\t\t\t\t\t\t\t\tev\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tport.onmessage = ({ data }: { data: WebSocketMessage }) => {\n\t\t\t\t\t\t\tif (data.type === \"data\") {\n\t\t\t\t\t\t\t\tsend(data.data);\n\t\t\t\t\t\t\t} else if (data.type === \"close\") {\n\t\t\t\t\t\t\t\tclose(data.code, data.reason);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\treturn [await promise, []];\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\"transport\",\n\t\t\t\t(data, transfer) => port.postMessage(data, transfer)\n\t\t\t);\n\t\t\tport.onmessageerror = (ev) => {\n\t\t\t\tconsole.error(\n\t\t\t\t\t\"Transport port messageerror (this should never happen!)\",\n\t\t\t\t\tev\n\t\t\t\t);\n\t\t\t};\n\t\t\tport.onmessage = (e) => {\n\t\t\t\trpc.recieve(e.data);\n\t\t\t};\n\t\t\trpc.call(\"ready\", undefined, []);\n\t\t},\n\t\tsendSetCookie: async ({ url, cookie }) => {},\n\t};\n\n\tconstructor(public init: ControllerInit) {\n\t\tthis.transport = init.transport;\n\t\tthis.id = makeId();\n\t\tthis.prefix = config.prefix + this.id + \"/\";\n\n\t\tthis.ready = new Promise<void>((resolve) => {\n\t\t\tthis.readyResolve = resolve;\n\t\t});\n\n\t\tlet channel = new MessageChannel();\n\t\tthis.rpc = new RpcHelper<Controllerbound, SWbound>(\n\t\t\tthis.methods,\n\t\t\t\"tabchannel-\" + this.id,\n\t\t\t(data, transfer) => {\n\t\t\t\tchannel.port1.postMessage(data, transfer);\n\t\t\t}\n\t\t);\n\t\tchannel.port1.addEventListener(\"message\", (e) => {\n\t\t\tthis.rpc.recieve(e.data);\n\t\t});\n\t\tchannel.port1.start();\n\n\t\tinit.serviceworker.postMessage(\n\t\t\t{\n\t\t\t\t$controller$init: {\n\t\t\t\t\tprefix: config.prefix + this.id,\n\t\t\t\t\tid: this.id,\n\t\t\t\t},\n\t\t\t},\n\t\t\t[channel.port2]\n\t\t);\n\t}\n\n\tcreateFrame(element?: HTMLIFrameElement): Frame {\n\t\telement ??= document.createElement(\"iframe\");\n\t\tconst frame = new Frame(this, element);\n\t\tthis.frames.push(frame);\n\t\treturn frame;\n\t}\n\n\twait(): Promise<void> {\n\t\treturn this.ready;\n\t}\n}\n\nfunction yieldGetInjectScripts(\n\tcookieJar: ScramjetGlobal.CookieJar,\n\tconfig: Config,\n\tsjconfig: ScramjetGlobal.ScramjetConfig,\n\tprefix: URL\n) {\n\treturn function getInjectScripts(meta, handler, script) {\n\t\treturn [\n\t\t\tscript(config.scramjetPath),\n\t\t\tscript(config.injectPath),\n\t\t\tscript(prefix.href + config.virtualWasmPath),\n\t\t\tscript(\n\t\t\t\t\"data:text/javascript;base64,\" +\n\t\t\t\t\tbtoa(`\n\t\t\t\t\tdocument.currentScript.remove();\n\t\t\t\t\t$scramjetController.load({\n\t\t\t\t\t\tconfig: ${JSON.stringify(config)},\n\t\t\t\t\t\tsjconfig: ${JSON.stringify(sjconfig)},\n\t\t\t\t\t\tcookies: ${cookieJar.dump()},\n\t\t\t\t\t\tprefix: new URL(\"${prefix.href}\"),\n\t\t\t\t\t\tyieldGetInjectScripts: ${yieldGetInjectScripts.toString()},\n\t\t\t\t\t\tcodecEncode: ${codecEncode.toString()},\n\t\t\t\t\t\tcodecDecode: ${codecDecode.toString()},\n\t\t\t\t\t})\n\t\t\t\t`)\n\t\t\t),\n\t\t];\n\t};\n}\n\nclass Frame {\n\tfetchHandler: ScramjetGlobal.ScramjetFetchHandler;\n\tid: string;\n\tprefix: string;\n\n\tget context() {\n\t\tlet sjcfg = {\n\t\t\t...$scramjet.defaultConfig,\n\t\t\t...cfg,\n\t\t};\n\t\treturn {\n\t\t\tcookieJar,\n\t\t\tprefix: new URL(this.prefix, location.href),\n\t\t\tconfig: sjcfg,\n\t\t\tinterface: {\n\t\t\t\tgetInjectScripts: yieldGetInjectScripts(\n\t\t\t\t\tthis.controller.cookieJar,\n\t\t\t\t\tconfig,\n\t\t\t\t\t{ ...$scramjet.defaultConfig, ...cfg },\n\t\t\t\t\tnew URL(this.prefix, location.href)\n\t\t\t\t),\n\t\t\t\tgetWorkerInjectScripts: (meta, type, script) => {\n\t\t\t\t\tlet str = \"\";\n\n\t\t\t\t\tstr += script(config.scramjetPath);\n\t\t\t\t\tstr += script(this.prefix + config.virtualWasmPath);\n\t\t\t\t\tstr += `\n\t\t\t\t\t(()=>{\n\t\t\t\t\t\tconst { ScramjetClient, CookieJar, setWasm } = $scramjet;\n\n\t\t\t\t\t\tsetWasm(Uint8Array.from(atob(self.WASM), (c) => c.charCodeAt(0)));\n\t\t\t\t\t\tdelete self.WASM;\n\n\t\t\t\t\t\tconst sjconfig = ${JSON.stringify(sjcfg)};\n\t\t\t\t\t\tconst prefix = new URL(\"${this.prefix}\", location.href);\n\n\t\t\t\t\t\tconst context = {\n\t\t\t\t\t\t\tinterface: {\n\t\t\t\t\t\t\t\tcodecEncode: ${codecEncode.toString()},\n\t\t\t\t\t\t\t\tcodecDecode: ${codecDecode.toString()},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tprefix,\n\t\t\t\t\t\t\tconfig: sjconfig\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tconst client = new ScramjetClient(globalThis, {\n\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\ttransport: null,\n\t\t\t\t\t\t\tshouldPassthroughWebsocket: (url) => {\n\t\t\t\t\t\t\t\treturn url === \"wss://anura.pro/\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tclient.hook();\n\t\t\t\t\t})();\n\t\t\t\t\t`;\n\n\t\t\t\t\treturn str;\n\t\t\t\t},\n\t\t\t\tcodecEncode,\n\t\t\t\tcodecDecode,\n\t\t\t},\n\t\t};\n\t}\n\n\tconstructor(\n\t\tpublic controller: Controller,\n\t\tpublic element: HTMLIFrameElement\n\t) {\n\t\tthis.id = makeId();\n\t\tthis.prefix = this.controller.prefix + this.id + \"/\";\n\n\t\tthis.fetchHandler = new $scramjet.ScramjetFetchHandler({\n\t\t\tcrossOriginIsolated: self.crossOriginIsolated,\n\t\t\tcontext: this.context,\n\t\t\ttransport: controller.transport,\n\t\t\tasync sendSetCookie(url, cookie) {},\n\t\t\tasync fetchBlobUrl(url) {\n\t\t\t\treturn (await fetch(url)) as BareResponseFetch;\n\t\t\t},\n\t\t\tasync fetchDataUrl(url) {\n\t\t\t\treturn (await fetch(url)) as BareResponseFetch;\n\t\t\t},\n\t\t});\n\t}\n\n\tgo(url: string) {\n\t\tconst encoded = $scramjet.rewriteUrl(url, this.context, {\n\t\t\torigin: new URL(location.href),\n\t\t\tbase: new URL(location.href),\n\t\t});\n\t\tthis.element.src = encoded;\n\t}\n}\n"],"names":["RpcHelper","Map","methods","id","sendRaw","data","dt","type","token","error","cb","undefined","Error","method","args","r","err","console","transfer","Promise","resolve","reject","e","Object","Symbol","cookieJar","$scramjet","fetch","resp","config","cfg","wasmPayload","makeId","Math","codecEncode","url","encodeURIComponent","codecDecode","decodeURIComponent","Controller","path","URL","frame","f","buf","b64","btoa","Uint8Array","byte","String","payload","sjheaders","fetchresponse","ReadableStream","ArrayBuffer","port","rpc","remote","body","headers","response","protocols","requestHeaders","promise","res","send","close","protocol","reason","ev","cookie","init","channel","MessageChannel","element","Frame","document","sjcfg","location","yieldGetInjectScripts","sjconfig","prefix","meta","handler","script","JSON","str","controller","self","encoded"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var $scramjetController;(()=>{var e={470:function(e,r,t){t.d(r,{C:()=>o});class o{methods;id;sendRaw;counter=0;promiseCallbacks=new Map;constructor(e,r,t){this.methods=e,this.id=r,this.sendRaw=t}recieve(e){if(null==e||"object"!=typeof e)return;let r=e[this.id];if(null==r||"object"!=typeof r)return;let t=r.$type;if("response"===t){let e=r.$token,t=r.$data,o=r.$error,s=this.promiseCallbacks.get(e);if(!s)return;this.promiseCallbacks.delete(e),void 0!==o?s.reject(Error(o)):s.resolve(t)}else if("request"===t){let e=r.$method,t=r.$args;this.methods[e](t).then(e=>{this.sendRaw({[this.id]:{$type:"response",$token:r.$token,$data:e?.[0]}},e?.[1])}).catch(e=>{console.error(e),this.sendRaw({[this.id]:{$type:"response",$token:r.$token,$error:e?.toString()||"Unknown error"}},[])})}}call(e,r,t=[]){let o=this.counter++;return new Promise((s,a)=>{this.promiseCallbacks.set(o,{resolve:s,reject:a}),this.sendRaw({[this.id]:{$type:"request",$method:e,$args:r,$token:o}},t)})}}}},r={};function t(o){var s=r[o];if(void 0!==s)return s.exports;var a=r[o]={exports:{}};return e[o](a,a.exports,t),a.exports}t.d=(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=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};(()=>{t.r(o),t.d(o,{load:()=>d});var e=t(470);let r=MessagePort.prototype.postMessage,s=(e,t,o)=>{r.call(e,t,o)};class a{port;readyResolve;readyPromise=new Promise(e=>{this.readyResolve=e});ready=!1;async init(){await this.readyPromise,this.ready=!0}rpc;constructor(r){this.port=r,this.rpc=new e.C({ready:async()=>{this.readyResolve()}},"transport",(e,t)=>{s(r,e,t)}),r.onmessageerror=e=>{console.error("onmessageerror (this should never happen!)",e)},r.onmessage=e=>{this.rpc.recieve(e.data)},r.start()}connect(e,r,t,o,a,n,l){let i=new MessageChannel,c=i.port1;return console.warn("connecting"),this.rpc.call("connect",{url:e.href,protocols:r,requestHeaders:t,port:i.port2},[i.port2]).then(e=>{console.log(e),"success"===e.result?o(e.protocol,e.extensions):l(e.error)}),c.onmessage=e=>{let r=e.data;"data"===r.type?a(r.data):"close"===r.type&&n(r.code,r.reason)},c.onmessageerror=e=>{console.error("onmessageerror (this should never happen!)",e),l("Message error in transport port")},[e=>{s(c,{type:"data",data:e},e instanceof ArrayBuffer?[e]:[])},e=>{s(c,{type:"close",code:e})}]}async request(e,r,t,o,s){return await this.rpc.call("request",{remote:e.href,method:r,body:t,headers:o})}meta(){return{}}}let n=navigator.serviceWorker.controller,{SCRAMJETCLIENT:l,ScramjetClient:i,CookieJar:c,setWasm:p}=$scramjet;function d({config:e,sjconfig:r,cookies:t,prefix:o,yieldGetInjectScripts:s,codecEncode:d,codecDecode:h}){if(l in globalThis)globalThis[l];else{p(Uint8Array.from(atob(self.WASM),e=>e.charCodeAt(0))),delete self.WASM;let l=new MessageChannel,u=new a(l.port1);n?.postMessage({$sw$initRemoteTransport:{port:l.port2,prefix:o.href}},[l.port2]);let m=new c;m.load(t);let y={interface:{getInjectScripts:s(m,e,r,o),codecEncode:d,codecDecode:h},prefix:o,cookieJar:m,config:r},f=globalThis.frameElement;f&&!f.name&&(f.name=`${Array(8).fill(0).map(()=>Math.floor(36*Math.random()).toString(36)).join("")}`),new i(globalThis,{context:y,transport:u,sendSetCookie:async(e,r)=>{},shouldPassthroughWebsocket:e=>"wss://anura.pro/"===e,shouldBlockMessageEvent:e=>!1}).hook()}}})(),$scramjetController=o})();
|
|
2
|
-
//# sourceMappingURL=controller.inject.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"controller.inject.js","sources":["webpack://$scramjetController/./packages/rpc/index.ts","webpack://$scramjetController/webpack/runtime/define_property_getters","webpack://$scramjetController/webpack/runtime/has_own_property","webpack://$scramjetController/webpack/runtime/make_namespace_object","webpack://$scramjetController/./packages/controller/src/inject.ts"],"sourcesContent":["type Serverbound = {\n\tmethod1: [{ paramA: string; paramB: number }, boolean];\n\tmethod2: [string, number];\n};\n\ntype Clientbound = {\n\tmethod1: [number];\n\tmethod2: [boolean, string];\n};\n\nexport type RpcDescription = {\n\t[method: string]: [args: any, returnType: any] | [args: any] | [];\n};\n\nexport type MethodsDefinition<Description extends RpcDescription> = {\n\t[Method in keyof Description]: (\n\t\t...args: Description[Method] extends [infer A, ...any[]] ? [A] : []\n\t) => Description[Method] extends [any, infer R]\n\t\t? Promise<[R, Transferable[]]>\n\t\t: Promise<void>;\n};\n\nexport class RpcHelper<\n\tLocal extends RpcDescription,\n\tRemote extends RpcDescription,\n> {\n\tcounter: number = 0;\n\tpromiseCallbacks: Map<\n\t\tnumber,\n\t\t{ resolve: (value: any) => void; reject: (reason?: any) => void }\n\t> = new Map();\n\tconstructor(\n\t\tprivate methods: MethodsDefinition<Local>,\n\t\tprivate id: string,\n\t\tprivate sendRaw: (data: any, transfer: Transferable[]) => void\n\t) {}\n\n\trecieve(data: any) {\n\t\tif (data === undefined || data === null || typeof data !== \"object\") return;\n\t\tconst dt = data[this.id];\n\t\tif (dt === undefined || dt === null || typeof dt !== \"object\") return;\n\n\t\tconst type = dt.$type;\n\n\t\tif (type === \"response\") {\n\t\t\tconst token = dt.$token;\n\t\t\tconst data = dt.$data;\n\t\t\tconst error = dt.$error;\n\t\t\tconst cb = this.promiseCallbacks.get(token);\n\t\t\tif (!cb) return;\n\t\t\tthis.promiseCallbacks.delete(token);\n\t\t\tif (error !== undefined) {\n\t\t\t\tcb.reject(new Error(error));\n\t\t\t} else {\n\t\t\t\tcb.resolve(data);\n\t\t\t}\n\t\t} else if (type === \"request\") {\n\t\t\tconst method = dt.$method as keyof Local;\n\t\t\tconst args = dt.$args as Local[typeof method][0];\n\t\t\t(this.methods[method] as any)(args)\n\t\t\t\t.then((r: any) => {\n\t\t\t\t\tthis.sendRaw(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t[this.id]: {\n\t\t\t\t\t\t\t\t$type: \"response\",\n\t\t\t\t\t\t\t\t$token: dt.$token,\n\t\t\t\t\t\t\t\t$data: r?.[0],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tr?.[1]\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.catch((err: any) => {\n\t\t\t\t\tconsole.error(err);\n\t\t\t\t\tthis.sendRaw(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t[this.id]: {\n\t\t\t\t\t\t\t\t$type: \"response\",\n\t\t\t\t\t\t\t\t$token: dt.$token,\n\t\t\t\t\t\t\t\t$error: err?.toString() || \"Unknown error\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[]\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t}\n\t}\n\n\tcall<Method extends keyof Remote>(\n\t\tmethod: Method,\n\t\targs: Remote[Method][0],\n\t\ttransfer: Transferable[] = []\n\t): Promise<Remote[Method][1]> {\n\t\tlet token = this.counter++;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.promiseCallbacks.set(token, { resolve, reject });\n\t\t\tthis.sendRaw(\n\t\t\t\t{\n\t\t\t\t\t[this.id]: {\n\t\t\t\t\t\t$type: \"request\",\n\t\t\t\t\t\t$method: method,\n\t\t\t\t\t\t$args: args,\n\t\t\t\t\t\t$token: token,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\ttransfer\n\t\t\t);\n\t\t});\n\t}\n}\n","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import type { CookieJar, ScramjetConfig } from \"@mercuryworkshop/scramjet\";\nimport type * as ScramjetGlobal from \"@mercuryworkshop/scramjet\";\ndeclare const $scramjet: typeof ScramjetGlobal;\n\nimport type {\n\tRawHeaders,\n\tProxyTransport,\n\tTransferrableResponse,\n} from \"@mercuryworkshop/proxy-transports\";\n\nimport { RpcHelper } from \"@mercuryworkshop/rpc\";\nimport type {\n\tControllerToTransport,\n\tTransportToController,\n\tWebSocketData,\n\tWebSocketMessage,\n} from \"./types\";\n\nconst MessagePort_postMessage = MessagePort.prototype.postMessage;\nconst postMessage = (\n\tport: MessagePort,\n\tdata: any,\n\ttransfer?: Transferable[]\n) => {\n\tMessagePort_postMessage.call(port, data, transfer as any);\n};\n\nclass RemoteTransport implements ProxyTransport {\n\tprivate readyResolve!: () => void;\n\tprivate readyPromise: Promise<void> = new Promise((resolve) => {\n\t\tthis.readyResolve = resolve;\n\t});\n\n\tpublic ready = false;\n\tasync init() {\n\t\tawait this.readyPromise;\n\t\tthis.ready = true;\n\t}\n\n\tprivate rpc: RpcHelper<ControllerToTransport, TransportToController>;\n\tconstructor(public port: MessagePort) {\n\t\tthis.rpc = new RpcHelper<ControllerToTransport, TransportToController>(\n\t\t\t{\n\t\t\t\tready: async () => {\n\t\t\t\t\tthis.readyResolve();\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"transport\",\n\t\t\t(data, transfer) => {\n\t\t\t\tpostMessage(port, data, transfer);\n\t\t\t}\n\t\t);\n\t\tport.onmessageerror = (ev) => {\n\t\t\tconsole.error(\"onmessageerror (this should never happen!)\", ev);\n\t\t};\n\t\tport.onmessage = (ev) => {\n\t\t\tthis.rpc.recieve(ev.data);\n\t\t};\n\t\tport.start();\n\t}\n\tconnect(\n\t\turl: URL,\n\t\tprotocols: string[],\n\t\trequestHeaders: RawHeaders,\n\t\tonopen: (protocol: string, extensions: string) => void,\n\t\tonmessage: (data: Blob | ArrayBuffer | string) => void,\n\t\tonclose: (code: number, reason: string) => void,\n\t\tonerror: (error: string) => void\n\t): [\n\t\t(data: Blob | ArrayBuffer | string) => void,\n\t\t(code: number, reason: string) => void,\n\t] {\n\t\tconst channel = new MessageChannel();\n\t\tlet port = channel.port1;\n\t\tconsole.warn(\"connecting\");\n\t\tthis.rpc\n\t\t\t.call(\n\t\t\t\t\"connect\",\n\t\t\t\t{\n\t\t\t\t\turl: url.href,\n\t\t\t\t\tprotocols,\n\t\t\t\t\trequestHeaders,\n\t\t\t\t\tport: channel.port2,\n\t\t\t\t},\n\t\t\t\t[channel.port2]\n\t\t\t)\n\t\t\t.then((response) => {\n\t\t\t\tconsole.log(response);\n\t\t\t\tif (response.result === \"success\") {\n\t\t\t\t\tonopen(response.protocol, response.extensions);\n\t\t\t\t} else {\n\t\t\t\t\tonerror(response.error);\n\t\t\t\t}\n\t\t\t});\n\t\tport.onmessage = (ev) => {\n\t\t\tconst message = ev.data as WebSocketMessage;\n\t\t\tif (message.type === \"data\") {\n\t\t\t\tonmessage(message.data);\n\t\t\t} else if (message.type === \"close\") {\n\t\t\t\tonclose(message.code, message.reason);\n\t\t\t}\n\t\t};\n\t\tport.onmessageerror = (ev) => {\n\t\t\tconsole.error(\"onmessageerror (this should never happen!)\", ev);\n\t\t\tonerror(\"Message error in transport port\");\n\t\t};\n\n\t\treturn [\n\t\t\t(data) => {\n\t\t\t\tpostMessage(\n\t\t\t\t\tport,\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"data\",\n\t\t\t\t\t\tdata: data,\n\t\t\t\t\t},\n\t\t\t\t\tdata instanceof ArrayBuffer ? [data] : []\n\t\t\t\t);\n\t\t\t},\n\t\t\t(code) => {\n\t\t\t\tpostMessage(port, {\n\t\t\t\t\ttype: \"close\",\n\t\t\t\t\tcode: code,\n\t\t\t\t});\n\t\t\t},\n\t\t];\n\t}\n\n\tasync request(\n\t\tremote: URL,\n\t\tmethod: string,\n\t\tbody: BodyInit | null,\n\t\theaders: RawHeaders,\n\t\tsignal: AbortSignal | undefined\n\t): Promise<TransferrableResponse> {\n\t\treturn await this.rpc.call(\"request\", {\n\t\t\tremote: remote.href,\n\t\t\tmethod,\n\t\t\tbody,\n\t\t\theaders,\n\t\t});\n\t}\n\n\tmeta() {\n\t\treturn {};\n\t}\n}\n\nconst sw = navigator.serviceWorker.controller;\nconst { SCRAMJETCLIENT, ScramjetClient, CookieJar, setWasm } = $scramjet;\n\ntype Config = any;\ntype Init = {\n\tconfig: Config;\n\tsjconfig: ScramjetConfig;\n\tcookies: string;\n\tprefix: URL;\n\tyieldGetInjectScripts: (\n\t\tcookieJar: CookieJar,\n\t\tconfig: Config,\n\t\tsjconfig: ScramjetConfig,\n\t\tprefix: URL\n\t) => any;\n\tcodecEncode: (input: string) => string;\n\tcodecDecode: (input: string) => string;\n};\n\nexport function load({\n\tconfig,\n\tsjconfig,\n\tcookies,\n\tprefix,\n\tyieldGetInjectScripts,\n\tcodecEncode,\n\tcodecDecode,\n}: Init) {\n\tlet client;\n\tif (SCRAMJETCLIENT in globalThis) {\n\t\tclient = globalThis[SCRAMJETCLIENT];\n\t} else {\n\t\tsetWasm(Uint8Array.from(atob(self.WASM), (c) => c.charCodeAt(0)));\n\t\tdelete self.WASM;\n\n\t\tconst channel = new MessageChannel();\n\t\tconst transport = new RemoteTransport(channel.port1);\n\t\tsw?.postMessage(\n\t\t\t{\n\t\t\t\t$sw$initRemoteTransport: {\n\t\t\t\t\tport: channel.port2,\n\t\t\t\t\tprefix: prefix.href,\n\t\t\t\t},\n\t\t\t},\n\t\t\t[channel.port2]\n\t\t);\n\n\t\tconst cookieJar = new CookieJar();\n\t\tcookieJar.load(cookies);\n\n\t\tconst context = {\n\t\t\tinterface: {\n\t\t\t\tgetInjectScripts: yieldGetInjectScripts(\n\t\t\t\t\tcookieJar,\n\t\t\t\t\tconfig,\n\t\t\t\t\tsjconfig,\n\t\t\t\t\tprefix\n\t\t\t\t),\n\t\t\t\tcodecEncode,\n\t\t\t\tcodecDecode,\n\t\t\t},\n\t\t\tprefix,\n\t\t\tcookieJar,\n\t\t\tconfig: sjconfig,\n\t\t};\n\t\tfunction createFrameId() {\n\t\t\treturn `${Array(8)\n\t\t\t\t.fill(0)\n\t\t\t\t.map(() => Math.floor(Math.random() * 36).toString(36))\n\t\t\t\t.join(\"\")}`;\n\t\t}\n\n\t\tconst frame = globalThis.frameElement as HTMLIFrameElement | null;\n\t\tif (frame && !frame.name) {\n\t\t\tframe.name = createFrameId();\n\t\t}\n\n\t\tclient = new ScramjetClient(globalThis, {\n\t\t\tcontext,\n\t\t\ttransport,\n\t\t\tsendSetCookie: async (url, cookie) => {\n\t\t\t\t// sw.postMessage({\n\t\t\t\t// \t$controller$setCookie: {\n\t\t\t\t// \t\turl,\n\t\t\t\t// \t\tcookie\n\t\t\t\t// \t}\n\t\t\t\t// });\n\t\t\t},\n\t\t\tshouldPassthroughWebsocket: (url) => {\n\t\t\t\treturn url === \"wss://anura.pro/\";\n\t\t\t},\n\t\t\tshouldBlockMessageEvent(i) {\n\t\t\t\treturn false;\n\t\t\t},\n\t\t});\n\n\t\tclient.hook();\n\t}\n}\n"],"names":["RpcHelper","Map","methods","id","sendRaw","data","dt","type","token","error","cb","undefined","Error","method","args","r","err","console","transfer","Promise","resolve","reject","e","Object","Symbol","MessagePort_postMessage","MessagePort","postMessage","port","RemoteTransport","ev","url","protocols","requestHeaders","onopen","onmessage","onclose","onerror","channel","MessageChannel","response","message","ArrayBuffer","code","remote","body","headers","signal","sw","navigator","SCRAMJETCLIENT","ScramjetClient","CookieJar","setWasm","$scramjet","load","config","sjconfig","cookies","prefix","yieldGetInjectScripts","codecEncode","codecDecode","globalThis","Uint8Array","atob","self","c","transport","cookieJar","context","frame","Array","Math","client","cookie","i"],"mappings":"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"}
|
package/dist/controller.sw.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var $scramjetController;(()=>{var e={470:function(e,t,r){r.d(t,{C:()=>o});class o{methods;id;sendRaw;counter=0;promiseCallbacks=new Map;constructor(e,t,r){this.methods=e,this.id=t,this.sendRaw=r}recieve(e){if(null==e||"object"!=typeof e)return;let t=e[this.id];if(null==t||"object"!=typeof t)return;let r=t.$type;if("response"===r){let e=t.$token,r=t.$data,o=t.$error,s=this.promiseCallbacks.get(e);if(!s)return;this.promiseCallbacks.delete(e),void 0!==o?s.reject(Error(o)):s.resolve(r)}else if("request"===r){let e=t.$method,r=t.$args;this.methods[e](r).then(e=>{this.sendRaw({[this.id]:{$type:"response",$token:t.$token,$data:e?.[0]}},e?.[1])}).catch(e=>{console.error(e),this.sendRaw({[this.id]:{$type:"response",$token:t.$token,$error:e?.toString()||"Unknown error"}},[])})}}call(e,t,r=[]){let o=this.counter++;return new Promise((s,a)=>{this.promiseCallbacks.set(o,{resolve:s,reject:a}),this.sendRaw({[this.id]:{$type:"request",$method:e,$args:t,$token:o}},r)})}}}},t={};function r(o){var s=t[o];if(void 0!==s)return s.exports;var a=t[o]={exports:{}};return e[o](a,a.exports,r),a.exports}r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};(()=>{r.r(o),r.d(o,{route:()=>i,shouldRoute:()=>n});var e=r(470);let t={};addEventListener("message",e=>{if(e.data&&"object"==typeof e.data){if(e.data.$sw$setCookieDone&&"object"==typeof e.data.$sw$setCookieDone){let r=e.data.$sw$setCookieDone,o=t[r.id];o&&(o(),delete t[r.id])}if(e.data.$sw$initRemoteTransport&&"object"==typeof e.data.$sw$initRemoteTransport){let{port:t,prefix:r}=e.data.$sw$initRemoteTransport;console.error(r,a);let o=a.find(e=>new URL(r).pathname.startsWith(e.prefix));if(!o)return void console.error("No relevant controller found for transport init");o.rpc.call("initRemoteTransport",t,[t])}}});class s{prefix;id;rpc;constructor(r,o,s){this.prefix=r,this.id=o,this.rpc=new e.C({sendSetCookie:async({url:e,cookie:r})=>{let o=await self.clients.matchAll(),s=[];for(let a of o){let o=Math.random().toString(36).substring(2,10);a.postMessage({$controller$setCookie:{url:e,cookie:r,id:o}}),s.push(new Promise(e=>{t[o]=e}))}await Promise.race([new Promise(e=>setTimeout(()=>{console.error("timed out waiting for set cookie response (deadlock?)"),e()},1e3)),s])}},"tabchannel-"+o,(e,t)=>{s.postMessage(e,t)}),s.addEventListener("message",e=>{this.rpc.recieve(e.data)}),s.onmessageerror=console.error,this.rpc.call("ready",null)}}let a=[];function n(e){let t=new URL(e.request.url);return void 0!==a.find(e=>t.pathname.startsWith(e.prefix))}async function i(e){try{let t=new URL(e.request.url),r=a.find(e=>t.pathname.startsWith(e.prefix)),o=await clients.get(e.clientId),s=[...e.request.headers],n=await r.rpc.call("request",{rawUrl:e.request.url,destination:e.request.destination,mode:e.request.mode,referrer:e.request.referrer,method:e.request.method,body:e.request.body,cache:e.request.cache,forceCrossOriginIsolated:!1,initialHeaders:s,rawClientUrl:o?o.url:void 0},e.request.body instanceof ReadableStream||e.request.body instanceof ArrayBuffer?[e.request.body]:void 0);return new Response(n.body,{status:n.status,statusText:n.statusText,headers:n.headers})}catch(e){return console.error("Service Worker error:",e),new Response("Internal Service Worker Error: "+e.message,{status:500})}}addEventListener("message",e=>{if(!e.data||"object"!=typeof e.data||!e.data.$controller$init||"object"!=typeof e.data.$controller$init)return;let t=e.data.$controller$init;a.push(new s(t.prefix,t.id,e.ports[0]))})})(),$scramjetController=o})();
|
|
2
|
-
//# sourceMappingURL=controller.sw.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"controller.sw.js","sources":["webpack://$scramjetController/./packages/rpc/index.ts","webpack://$scramjetController/webpack/runtime/define_property_getters","webpack://$scramjetController/webpack/runtime/has_own_property","webpack://$scramjetController/webpack/runtime/make_namespace_object","webpack://$scramjetController/./packages/controller/src/sw.ts"],"sourcesContent":["type Serverbound = {\n\tmethod1: [{ paramA: string; paramB: number }, boolean];\n\tmethod2: [string, number];\n};\n\ntype Clientbound = {\n\tmethod1: [number];\n\tmethod2: [boolean, string];\n};\n\nexport type RpcDescription = {\n\t[method: string]: [args: any, returnType: any] | [args: any] | [];\n};\n\nexport type MethodsDefinition<Description extends RpcDescription> = {\n\t[Method in keyof Description]: (\n\t\t...args: Description[Method] extends [infer A, ...any[]] ? [A] : []\n\t) => Description[Method] extends [any, infer R]\n\t\t? Promise<[R, Transferable[]]>\n\t\t: Promise<void>;\n};\n\nexport class RpcHelper<\n\tLocal extends RpcDescription,\n\tRemote extends RpcDescription,\n> {\n\tcounter: number = 0;\n\tpromiseCallbacks: Map<\n\t\tnumber,\n\t\t{ resolve: (value: any) => void; reject: (reason?: any) => void }\n\t> = new Map();\n\tconstructor(\n\t\tprivate methods: MethodsDefinition<Local>,\n\t\tprivate id: string,\n\t\tprivate sendRaw: (data: any, transfer: Transferable[]) => void\n\t) {}\n\n\trecieve(data: any) {\n\t\tif (data === undefined || data === null || typeof data !== \"object\") return;\n\t\tconst dt = data[this.id];\n\t\tif (dt === undefined || dt === null || typeof dt !== \"object\") return;\n\n\t\tconst type = dt.$type;\n\n\t\tif (type === \"response\") {\n\t\t\tconst token = dt.$token;\n\t\t\tconst data = dt.$data;\n\t\t\tconst error = dt.$error;\n\t\t\tconst cb = this.promiseCallbacks.get(token);\n\t\t\tif (!cb) return;\n\t\t\tthis.promiseCallbacks.delete(token);\n\t\t\tif (error !== undefined) {\n\t\t\t\tcb.reject(new Error(error));\n\t\t\t} else {\n\t\t\t\tcb.resolve(data);\n\t\t\t}\n\t\t} else if (type === \"request\") {\n\t\t\tconst method = dt.$method as keyof Local;\n\t\t\tconst args = dt.$args as Local[typeof method][0];\n\t\t\t(this.methods[method] as any)(args)\n\t\t\t\t.then((r: any) => {\n\t\t\t\t\tthis.sendRaw(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t[this.id]: {\n\t\t\t\t\t\t\t\t$type: \"response\",\n\t\t\t\t\t\t\t\t$token: dt.$token,\n\t\t\t\t\t\t\t\t$data: r?.[0],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tr?.[1]\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.catch((err: any) => {\n\t\t\t\t\tconsole.error(err);\n\t\t\t\t\tthis.sendRaw(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t[this.id]: {\n\t\t\t\t\t\t\t\t$type: \"response\",\n\t\t\t\t\t\t\t\t$token: dt.$token,\n\t\t\t\t\t\t\t\t$error: err?.toString() || \"Unknown error\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t[]\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t}\n\t}\n\n\tcall<Method extends keyof Remote>(\n\t\tmethod: Method,\n\t\targs: Remote[Method][0],\n\t\ttransfer: Transferable[] = []\n\t): Promise<Remote[Method][1]> {\n\t\tlet token = this.counter++;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.promiseCallbacks.set(token, { resolve, reject });\n\t\t\tthis.sendRaw(\n\t\t\t\t{\n\t\t\t\t\t[this.id]: {\n\t\t\t\t\t\t$type: \"request\",\n\t\t\t\t\t\t$method: method,\n\t\t\t\t\t\t$args: args,\n\t\t\t\t\t\t$token: token,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\ttransfer\n\t\t\t);\n\t\t});\n\t}\n}\n","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","declare var clients: Clients;\nimport { RpcHelper } from \"@mercuryworkshop/rpc\";\nimport type { Controllerbound, SWbound } from \"./types\";\nimport type { RawHeaders } from \"@mercuryworkshop/proxy-transports\";\nimport { ScramjetHeaders } from \"@mercuryworkshop/scramjet\";\n\nfunction makeId(): string {\n\treturn Math.random().toString(36).substring(2, 10);\n}\n\nlet cookieResolvers: Record<string, (value: void) => void> = {};\naddEventListener(\"message\", (e) => {\n\tif (!e.data) return;\n\tif (typeof e.data != \"object\") return;\n\tif (e.data.$sw$setCookieDone && typeof e.data.$sw$setCookieDone == \"object\") {\n\t\tconst done = e.data.$sw$setCookieDone;\n\n\t\tconst resolver = cookieResolvers[done.id];\n\t\tif (resolver) {\n\t\t\tresolver();\n\t\t\tdelete cookieResolvers[done.id];\n\t\t}\n\t}\n\n\tif (\n\t\te.data.$sw$initRemoteTransport &&\n\t\ttypeof e.data.$sw$initRemoteTransport == \"object\"\n\t) {\n\t\tconst { port, prefix } = e.data.$sw$initRemoteTransport;\n\n\t\tconsole.error(prefix, tabs);\n\t\tconst relevantcontroller = tabs.find((tab) =>\n\t\t\tnew URL(prefix).pathname.startsWith(tab.prefix)\n\t\t);\n\t\tif (!relevantcontroller) {\n\t\t\tconsole.error(\"No relevant controller found for transport init\");\n\t\t\treturn;\n\t\t}\n\t\trelevantcontroller.rpc.call(\"initRemoteTransport\", port, [port]);\n\t}\n});\n\nclass ControllerReference {\n\trpc: RpcHelper<SWbound, Controllerbound>;\n\n\tconstructor(\n\t\tpublic prefix: string,\n\t\tpublic id: string,\n\t\tport: MessagePort\n\t) {\n\t\tthis.rpc = new RpcHelper(\n\t\t\t{\n\t\t\t\tsendSetCookie: async ({ url, cookie }) => {\n\t\t\t\t\tlet clients = await self.clients.matchAll();\n\t\t\t\t\tlet promises = [];\n\n\t\t\t\t\tfor (const client of clients) {\n\t\t\t\t\t\tlet id = makeId();\n\t\t\t\t\t\tclient.postMessage({\n\t\t\t\t\t\t\t$controller$setCookie: {\n\t\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\t\tcookie,\n\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t\tpromises.push(\n\t\t\t\t\t\t\tnew Promise<void>((resolve) => {\n\t\t\t\t\t\t\t\tcookieResolvers[id] = resolve;\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tawait Promise.race([\n\t\t\t\t\t\tnew Promise<void>((resolve) =>\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\t\t\"timed out waiting for set cookie response (deadlock?)\"\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t}, 1000)\n\t\t\t\t\t\t),\n\t\t\t\t\t\tpromises,\n\t\t\t\t\t]);\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"tabchannel-\" + id,\n\t\t\t(data, transfer) => {\n\t\t\t\tport.postMessage(data, transfer);\n\t\t\t}\n\t\t);\n\t\tport.addEventListener(\"message\", (e) => {\n\t\t\tthis.rpc.recieve(e.data);\n\t\t});\n\t\tport.onmessageerror = console.error;\n\n\t\tthis.rpc.call(\"ready\", null);\n\t}\n}\n\nconst tabs: ControllerReference[] = [];\n\naddEventListener(\"message\", (e) => {\n\tif (!e.data) return;\n\tif (typeof e.data != \"object\") return;\n\tif (!e.data.$controller$init) return;\n\tif (typeof e.data.$controller$init != \"object\") return;\n\tconst init = e.data.$controller$init;\n\n\ttabs.push(new ControllerReference(init.prefix, init.id, e.ports[0]));\n});\n\nexport function shouldRoute(event: FetchEvent): boolean {\n\tconst url = new URL(event.request.url);\n\tconst tab = tabs.find((tab) => url.pathname.startsWith(tab.prefix));\n\treturn tab !== undefined;\n}\n\nexport async function route(event: FetchEvent): Promise<Response> {\n\ttry {\n\t\tconst url = new URL(event.request.url);\n\t\tconst tab = tabs.find((tab) => url.pathname.startsWith(tab.prefix))!;\n\t\tconst client = await clients.get(event.clientId);\n\n\t\tconst rawheaders: RawHeaders = [...event.request.headers];\n\n\t\tconst response = await tab.rpc.call(\n\t\t\t\"request\",\n\t\t\t{\n\t\t\t\trawUrl: event.request.url,\n\t\t\t\tdestination: event.request.destination,\n\t\t\t\tmode: event.request.mode,\n\t\t\t\treferrer: event.request.referrer,\n\t\t\t\tmethod: event.request.method,\n\t\t\t\tbody: event.request.body,\n\t\t\t\tcache: event.request.cache,\n\t\t\t\tforceCrossOriginIsolated: false,\n\t\t\t\tinitialHeaders: rawheaders,\n\t\t\t\trawClientUrl: client ? client.url : undefined,\n\t\t\t},\n\t\t\tevent.request.body instanceof ReadableStream ||\n\t\t\t\t// @ts-expect-error the types for fetchevent are messed up\n\t\t\t\tevent.request.body instanceof ArrayBuffer\n\t\t\t\t? [event.request.body]\n\t\t\t\t: undefined\n\t\t);\n\n\t\treturn new Response(response.body, {\n\t\t\tstatus: response.status,\n\t\t\tstatusText: response.statusText,\n\t\t\theaders: response.headers,\n\t\t});\n\t} catch (e) {\n\t\tconsole.error(\"Service Worker error:\", e);\n\t\treturn new Response(\n\t\t\t\"Internal Service Worker Error: \" + (e as Error).message,\n\t\t\t{\n\t\t\t\tstatus: 500,\n\t\t\t}\n\t\t);\n\t}\n}\n"],"names":["RpcHelper","Map","methods","id","sendRaw","data","dt","type","token","error","cb","undefined","Error","method","args","r","err","console","transfer","Promise","resolve","reject","e","Object","Symbol","cookieResolvers","addEventListener","done","resolver","port","prefix","tabs","relevantcontroller","tab","URL","ControllerReference","url","cookie","clients1","self","promises","client","Math","setTimeout","shouldRoute","event","route","clients","rawheaders","response","ReadableStream","ArrayBuffer","Response","init"],"mappings":"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"}
|