roxxie-proxy-u-prod 0.3.0 → 0.4.0

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/embed.js CHANGED
@@ -3,7 +3,7 @@
3
3
  "use strict";
4
4
 
5
5
  var DEFAULT_SHELL_URL =
6
- "https://unpkg.com/roxxie-proxy-u-prod@0.3.0/runtime/index.html";
6
+ "https://unpkg.com/roxxie-proxy-u-prod@0.4.0/runtime/index.html";
7
7
  var loadingScript = document.currentScript;
8
8
 
9
9
  function resolveContainer(target) {
@@ -18,8 +18,8 @@
18
18
  <div id="roxxie-browser"></div>
19
19
  <script
20
20
  defer
21
- src="https://cdn.jsdelivr.net/npm/roxxie-proxy-u-prod@0.3.0/embed.js"
22
- integrity="sha384-njIFCNZAx6YwA02XL4JGMzcsiVqHuTRWutGa/G1NzqEe0t0V+gWPNEe0XCTde9Q3"
21
+ src="https://cdn.jsdelivr.net/npm/roxxie-proxy-u-prod@0.4.0/embed.js"
22
+ integrity="sha384-XUQcRrXesM9oedkzCx9DaWtFBih+4ITK0m9iiFxTmATyor09TJSzDKSDHcyLI0F1"
23
23
  crossorigin="anonymous"
24
24
  data-roxxie-target="#roxxie-browser"
25
25
  ></script>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "roxxie-proxy-u-prod",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Production CDN assets and embed loader for Roxxie Proxy U",
5
5
  "license": "AGPL-3.0-only",
6
6
  "private": false,
@@ -1,273 +1,2 @@
1
- var $scramjetController;
2
- (() => {
3
- var e = {
4
- 805(e, t, r) {
5
- r.d(t, { C: () => o });
6
- class o {
7
- methods;
8
- id;
9
- sendRaw;
10
- counter = 0;
11
- promiseCallbacks = new Map();
12
- constructor(e, t, r) {
13
- ((this.methods = e), (this.id = t), (this.sendRaw = r));
14
- }
15
- recieve(e) {
16
- if (null == e || "object" != typeof e) return;
17
- let t = e[this.id];
18
- if (null == t || "object" != typeof t) return;
19
- let r = t.$type;
20
- if ("response" === r) {
21
- let e = t.$token,
22
- r = t.$data,
23
- o = t.$error,
24
- s = this.promiseCallbacks.get(e);
25
- if (!s) return;
26
- (this.promiseCallbacks.delete(e),
27
- void 0 !== o ? s.reject(Error(o)) : s.resolve(r));
28
- } else if ("request" === r) {
29
- let e = t.$method,
30
- r = t.$args;
31
- this.methods[e](r)
32
- .then((e) => {
33
- this.sendRaw(
34
- {
35
- [this.id]: {
36
- $type: "response",
37
- $token: t.$token,
38
- $data: e?.[0],
39
- },
40
- },
41
- e?.[1]
42
- );
43
- })
44
- .catch((e) => {
45
- (console.error(e),
46
- this.sendRaw(
47
- {
48
- [this.id]: {
49
- $type: "response",
50
- $token: t.$token,
51
- $error: e?.toString() || "Unknown error",
52
- },
53
- },
54
- []
55
- ));
56
- });
57
- }
58
- }
59
- call(e, t, r = []) {
60
- let o = this.counter++;
61
- return new Promise((s, i) => {
62
- (this.promiseCallbacks.set(o, { resolve: s, reject: i }),
63
- this.sendRaw(
64
- {
65
- [this.id]: {
66
- $type: "request",
67
- $method: e,
68
- $args: t,
69
- $token: o,
70
- },
71
- },
72
- r
73
- ));
74
- });
75
- }
76
- }
77
- },
78
- },
79
- t = {};
80
- function r(o) {
81
- var s = t[o];
82
- if (void 0 !== s) return s.exports;
83
- var i = (t[o] = { exports: {} });
84
- return (e[o](i, i.exports, r), i.exports);
85
- }
86
- ((r.d = (e, t) => {
87
- for (var o in t)
88
- r.o(t, o) &&
89
- !r.o(e, o) &&
90
- Object.defineProperty(e, o, { enumerable: !0, get: t[o] });
91
- }),
92
- (r.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t)),
93
- (r.r = (e) => {
94
- ("undefined" != typeof Symbol &&
95
- Symbol.toStringTag &&
96
- Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }),
97
- Object.defineProperty(e, "__esModule", { value: !0 }));
98
- }));
99
- var o = {};
100
- ((() => {
101
- (r.r(o), r.d(o, { route: () => a, shouldRoute: () => n }));
102
- var e = r(805);
103
- let t = {};
104
- addEventListener("message", (e) => {
105
- if (e.data && "object" == typeof e.data) {
106
- if (
107
- e.data.$sw$setCookieDone &&
108
- "object" == typeof e.data.$sw$setCookieDone
109
- ) {
110
- let r = e.data.$sw$setCookieDone,
111
- o = t[r.id];
112
- o && (o(), delete t[r.id]);
113
- }
114
- if (
115
- e.data.$sw$initRemoteTransport &&
116
- "object" == typeof e.data.$sw$initRemoteTransport
117
- ) {
118
- let { port: t, prefix: r } = e.data.$sw$initRemoteTransport,
119
- o = i.find((e) => new URL(r).pathname.startsWith(e.prefix));
120
- if (!o)
121
- return void console.error(
122
- "No relevant controller found for transport init"
123
- );
124
- o.rpc.call("initRemoteTransport", t, [t]);
125
- }
126
- }
127
- });
128
- class s {
129
- prefix;
130
- id;
131
- rpc;
132
- constructor(r, o, s) {
133
- ((this.prefix = r),
134
- (this.id = o),
135
- (this.rpc = new e.C(
136
- {
137
- sendSetCookie: async ({ cookies: e, options: r }) => {
138
- let o = await self.clients.matchAll(),
139
- s = [],
140
- i = [],
141
- n =
142
- r?.destination === "document" ||
143
- r?.destination === "iframe";
144
- for (let a of o) {
145
- let o = Math.random().toString(36).substring(2, 10);
146
- (s.push(o),
147
- a.postMessage({
148
- $controller$setCookie: { cookies: e, options: r, id: o },
149
- }),
150
- n ||
151
- i.push(
152
- new Promise((e) => {
153
- t[o] = () => e(o);
154
- })
155
- ));
156
- }
157
- if (i.length > 0) {
158
- let r,
159
- n = !1,
160
- a = new Promise((i) => {
161
- r = setTimeout(() => {
162
- if (!n) {
163
- let r = s.filter((e) => void 0 !== t[e]);
164
- console.error(
165
- `timed out waiting for set cookie response (deadlock?): cookies=${e.length} clients=${o.length} pending=${r.length}/${s.length} clientUrls=${o.map((e) => e.url).join(",")}`
166
- );
167
- }
168
- i();
169
- }, 1e3);
170
- });
171
- try {
172
- await Promise.race([
173
- a,
174
- Promise.any(i)
175
- .then(() => {
176
- n = !0;
177
- })
178
- .catch(() => {}),
179
- ]);
180
- } finally {
181
- for (let e of (void 0 !== r && clearTimeout(r), s))
182
- delete t[e];
183
- }
184
- }
185
- },
186
- },
187
- "tabchannel-" + o,
188
- (e, t) => {
189
- s.postMessage(e, t);
190
- }
191
- )),
192
- (s.onmessage = (e) => {
193
- this.rpc.recieve(e.data);
194
- }),
195
- (s.onmessageerror = console.error),
196
- this.rpc.call("ready", void 0));
197
- }
198
- }
199
- let i = [];
200
- function n(e) {
201
- let t = new URL(e.request.url);
202
- return void 0 !== i.find((e) => t.pathname.startsWith(e.prefix));
203
- }
204
- async function a(e) {
205
- try {
206
- let t = new URL(e.request.url),
207
- r = i.find((e) => t.pathname.startsWith(e.prefix)),
208
- o = await clients.get(e.clientId),
209
- s = [...e.request.headers],
210
- n = await r.rpc.call(
211
- "request",
212
- {
213
- rawUrl: e.request.url,
214
- rawReferrer: e.request.referrer,
215
- destination: e.request.destination,
216
- mode: e.request.mode,
217
- referrer: e.request.referrer,
218
- method: e.request.method,
219
- body: e.request.body,
220
- cache: e.request.cache,
221
- forceCrossOriginIsolated: !1,
222
- initialHeaders: s,
223
- rawClientUrl: o ? o.url : void 0,
224
- clientId: e.clientId || e.resultingClientId,
225
- },
226
- e.request.body instanceof ReadableStream ||
227
- e.request.body instanceof ArrayBuffer
228
- ? [e.request.body]
229
- : void 0
230
- );
231
- return new Response(n.body, {
232
- status: n.status,
233
- statusText: n.statusText,
234
- headers: n.headers,
235
- });
236
- } catch (e) {
237
- return (
238
- console.error("Service Worker error:", e),
239
- new Response("Internal Service Worker Error: " + e.message, {
240
- status: 500,
241
- })
242
- );
243
- }
244
- }
245
- (addEventListener("message", (e) => {
246
- if (
247
- !e.data ||
248
- "object" != typeof e.data ||
249
- !e.data.$controller$init ||
250
- "object" != typeof e.data.$controller$init
251
- )
252
- return;
253
- let t = e.data.$controller$init,
254
- r = i.findIndex((e) => e.id === t.id);
255
- (-1 !== r && i.splice(r, 1), i.push(new s(t.prefix, t.id, e.ports[0])));
256
- }),
257
- addEventListener("install", () => {
258
- self.skipWaiting();
259
- }),
260
- addEventListener("activate", (e) => {
261
- e.waitUntil(clients.claim());
262
- }),
263
- setTimeout(async () => {
264
- for (let e of (console.log(
265
- "service worker activated, notifying clients to revive"
266
- ),
267
- await clients.matchAll()))
268
- e.postMessage({ $controller$swrevive: {} });
269
- }, 100));
270
- })(),
271
- ($scramjetController = o));
272
- })();
273
- //# sourceMappingURL=controller.sw.js.map
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,n)=>{this.promiseCallbacks.set(o,{resolve:s,reject:n}),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 n=t[o]={exports:{}};return e[o](n,n.exports,r),n.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:()=>c,shouldRoute:()=>a});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,o=n.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({cookies:e,options:r})=>{let o=await self.clients.matchAll(),s=[],n=[],i=r?.destination==="document"||r?.destination==="iframe";for(let a of o){let o=Math.random().toString(36).substring(2,10);s.push(o),a.postMessage({$controller$setCookie:{cookies:e,options:r,id:o}}),i||n.push(new Promise(e=>{t[o]=()=>e(o)}))}if(n.length>0){let r,i=!1,a=new Promise(n=>{r=setTimeout(()=>{if(!i){let r=s.filter(e=>void 0!==t[e]);console.error(`timed out waiting for set cookie response (deadlock?): cookies=${e.length} clients=${o.length} pending=${r.length}/${s.length} clientUrls=${o.map(e=>e.url).join(",")}`)}n()},1e3)});try{await Promise.race([a,Promise.any(n).then(()=>{i=!0}).catch(()=>{})])}finally{for(let e of(void 0!==r&&clearTimeout(r),s))delete t[e]}}}},"tabchannel-"+o,(e,t)=>{s.postMessage(e,t)}),s.onmessage=e=>{this.rpc.recieve(e.data)},s.onmessageerror=console.error,this.rpc.call("ready",void 0)}}let n=[],i=new Set;function a(e){let t=new URL(e.request.url);if(n.some(e=>t.pathname.startsWith(e.prefix)))return!0;try{let e=new URL(registration.scope);return t.origin===e.origin&&t.pathname.startsWith(e.pathname)}catch{return!1}}function l(){clients.matchAll().then(e=>{for(let t of e)t.postMessage({$controller$swrevive:{}})})}async function d(e){let t=()=>n.find(t=>e.startsWith(t.prefix)),r=t();if(r)return r;l();let o=Date.now()+1e4;for(;Date.now()<o;){await new Promise(e=>{let t=setTimeout(e,100),r=()=>{clearTimeout(t),i.delete(r),e()};i.add(r)});let e=t();if(e)return e}}async function c(e){try{let t=new URL(e.request.url),r=await d(t.pathname);if(!r)return new Response("Roxxie proxy controller is not attached to this page. Reload to reconnect.",{status:503,headers:{"content-type":"text/plain"}});let o=await clients.get(e.clientId),s=[...e.request.headers],n=await r.rpc.call("request",{rawUrl:e.request.url,rawReferrer:e.request.referrer,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,clientId:e.clientId||e.resultingClientId},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,r=n.findIndex(e=>e.id===t.id);for(let o of(-1!==r&&n.splice(r,1),n.push(new s(t.prefix,t.id,e.ports[0])),[...i]))o()}),addEventListener("install",()=>{self.skipWaiting()}),addEventListener("activate",e=>{e.waitUntil(clients.claim())}),l(),setTimeout(()=>{l()},100)})(),$scramjetController=o})();
2
+ //# sourceMappingURL=controller.sw.js.map
@@ -2,14 +2,14 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
- <link rel="icon" type="image/png" sizes="any" href="https://cdn.jsdelivr.net/npm/roxxie-proxy-u-prod@0.3.0/dist/favicon.png" />
5
+ <link rel="icon" type="image/png" sizes="any" href="https://cdn.jsdelivr.net/npm/roxxie-proxy-u-prod@0.4.0/dist/favicon.png" />
6
6
  <meta name="theme-color" content="#222230" />
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
8
  <title>Roxxie Proxy U</title>
9
9
 
10
10
  <!--ssr-head-->
11
- <script type="module" crossorigin src="https://cdn.jsdelivr.net/npm/roxxie-proxy-u-prod@0.3.0/dist/assets/index-C8me8aPT.js"></script>
12
- <link rel="stylesheet" crossorigin href="https://cdn.jsdelivr.net/npm/roxxie-proxy-u-prod@0.3.0/dist/assets/index-EeRhLAof.css">
11
+ <script type="module" crossorigin src="https://cdn.jsdelivr.net/npm/roxxie-proxy-u-prod@0.4.0/dist/assets/index-Ba7edhay.js"></script>
12
+ <link rel="stylesheet" crossorigin href="https://cdn.jsdelivr.net/npm/roxxie-proxy-u-prod@0.4.0/dist/assets/index-EeRhLAof.css">
13
13
  </head>
14
14
 
15
15
  <body>
@@ -118,8 +118,8 @@ if (
118
118
  throw new Error("Start screen must remain flat and glow-free");
119
119
  }
120
120
 
121
- if (manifest.version !== "0.3.0") {
122
- throw new Error("This production release must be version 0.3.0");
121
+ if (manifest.version !== "0.4.0") {
122
+ throw new Error("This production release must be version 0.4.0");
123
123
  }
124
124
 
125
125
  const embedBytes = await readFile(join(packageRoot, "embed.js"));
@@ -1,273 +1,2 @@
1
- var $scramjetController;
2
- (() => {
3
- var e = {
4
- 805(e, t, r) {
5
- r.d(t, { C: () => o });
6
- class o {
7
- methods;
8
- id;
9
- sendRaw;
10
- counter = 0;
11
- promiseCallbacks = new Map();
12
- constructor(e, t, r) {
13
- ((this.methods = e), (this.id = t), (this.sendRaw = r));
14
- }
15
- recieve(e) {
16
- if (null == e || "object" != typeof e) return;
17
- let t = e[this.id];
18
- if (null == t || "object" != typeof t) return;
19
- let r = t.$type;
20
- if ("response" === r) {
21
- let e = t.$token,
22
- r = t.$data,
23
- o = t.$error,
24
- s = this.promiseCallbacks.get(e);
25
- if (!s) return;
26
- (this.promiseCallbacks.delete(e),
27
- void 0 !== o ? s.reject(Error(o)) : s.resolve(r));
28
- } else if ("request" === r) {
29
- let e = t.$method,
30
- r = t.$args;
31
- this.methods[e](r)
32
- .then((e) => {
33
- this.sendRaw(
34
- {
35
- [this.id]: {
36
- $type: "response",
37
- $token: t.$token,
38
- $data: e?.[0],
39
- },
40
- },
41
- e?.[1]
42
- );
43
- })
44
- .catch((e) => {
45
- (console.error(e),
46
- this.sendRaw(
47
- {
48
- [this.id]: {
49
- $type: "response",
50
- $token: t.$token,
51
- $error: e?.toString() || "Unknown error",
52
- },
53
- },
54
- []
55
- ));
56
- });
57
- }
58
- }
59
- call(e, t, r = []) {
60
- let o = this.counter++;
61
- return new Promise((s, i) => {
62
- (this.promiseCallbacks.set(o, { resolve: s, reject: i }),
63
- this.sendRaw(
64
- {
65
- [this.id]: {
66
- $type: "request",
67
- $method: e,
68
- $args: t,
69
- $token: o,
70
- },
71
- },
72
- r
73
- ));
74
- });
75
- }
76
- }
77
- },
78
- },
79
- t = {};
80
- function r(o) {
81
- var s = t[o];
82
- if (void 0 !== s) return s.exports;
83
- var i = (t[o] = { exports: {} });
84
- return (e[o](i, i.exports, r), i.exports);
85
- }
86
- ((r.d = (e, t) => {
87
- for (var o in t)
88
- r.o(t, o) &&
89
- !r.o(e, o) &&
90
- Object.defineProperty(e, o, { enumerable: !0, get: t[o] });
91
- }),
92
- (r.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t)),
93
- (r.r = (e) => {
94
- ("undefined" != typeof Symbol &&
95
- Symbol.toStringTag &&
96
- Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }),
97
- Object.defineProperty(e, "__esModule", { value: !0 }));
98
- }));
99
- var o = {};
100
- ((() => {
101
- (r.r(o), r.d(o, { route: () => a, shouldRoute: () => n }));
102
- var e = r(805);
103
- let t = {};
104
- addEventListener("message", (e) => {
105
- if (e.data && "object" == typeof e.data) {
106
- if (
107
- e.data.$sw$setCookieDone &&
108
- "object" == typeof e.data.$sw$setCookieDone
109
- ) {
110
- let r = e.data.$sw$setCookieDone,
111
- o = t[r.id];
112
- o && (o(), delete t[r.id]);
113
- }
114
- if (
115
- e.data.$sw$initRemoteTransport &&
116
- "object" == typeof e.data.$sw$initRemoteTransport
117
- ) {
118
- let { port: t, prefix: r } = e.data.$sw$initRemoteTransport,
119
- o = i.find((e) => new URL(r).pathname.startsWith(e.prefix));
120
- if (!o)
121
- return void console.error(
122
- "No relevant controller found for transport init"
123
- );
124
- o.rpc.call("initRemoteTransport", t, [t]);
125
- }
126
- }
127
- });
128
- class s {
129
- prefix;
130
- id;
131
- rpc;
132
- constructor(r, o, s) {
133
- ((this.prefix = r),
134
- (this.id = o),
135
- (this.rpc = new e.C(
136
- {
137
- sendSetCookie: async ({ cookies: e, options: r }) => {
138
- let o = await self.clients.matchAll(),
139
- s = [],
140
- i = [],
141
- n =
142
- r?.destination === "document" ||
143
- r?.destination === "iframe";
144
- for (let a of o) {
145
- let o = Math.random().toString(36).substring(2, 10);
146
- (s.push(o),
147
- a.postMessage({
148
- $controller$setCookie: { cookies: e, options: r, id: o },
149
- }),
150
- n ||
151
- i.push(
152
- new Promise((e) => {
153
- t[o] = () => e(o);
154
- })
155
- ));
156
- }
157
- if (i.length > 0) {
158
- let r,
159
- n = !1,
160
- a = new Promise((i) => {
161
- r = setTimeout(() => {
162
- if (!n) {
163
- let r = s.filter((e) => void 0 !== t[e]);
164
- console.error(
165
- `timed out waiting for set cookie response (deadlock?): cookies=${e.length} clients=${o.length} pending=${r.length}/${s.length} clientUrls=${o.map((e) => e.url).join(",")}`
166
- );
167
- }
168
- i();
169
- }, 1e3);
170
- });
171
- try {
172
- await Promise.race([
173
- a,
174
- Promise.any(i)
175
- .then(() => {
176
- n = !0;
177
- })
178
- .catch(() => {}),
179
- ]);
180
- } finally {
181
- for (let e of (void 0 !== r && clearTimeout(r), s))
182
- delete t[e];
183
- }
184
- }
185
- },
186
- },
187
- "tabchannel-" + o,
188
- (e, t) => {
189
- s.postMessage(e, t);
190
- }
191
- )),
192
- (s.onmessage = (e) => {
193
- this.rpc.recieve(e.data);
194
- }),
195
- (s.onmessageerror = console.error),
196
- this.rpc.call("ready", void 0));
197
- }
198
- }
199
- let i = [];
200
- function n(e) {
201
- let t = new URL(e.request.url);
202
- return void 0 !== i.find((e) => t.pathname.startsWith(e.prefix));
203
- }
204
- async function a(e) {
205
- try {
206
- let t = new URL(e.request.url),
207
- r = i.find((e) => t.pathname.startsWith(e.prefix)),
208
- o = await clients.get(e.clientId),
209
- s = [...e.request.headers],
210
- n = await r.rpc.call(
211
- "request",
212
- {
213
- rawUrl: e.request.url,
214
- rawReferrer: e.request.referrer,
215
- destination: e.request.destination,
216
- mode: e.request.mode,
217
- referrer: e.request.referrer,
218
- method: e.request.method,
219
- body: e.request.body,
220
- cache: e.request.cache,
221
- forceCrossOriginIsolated: !1,
222
- initialHeaders: s,
223
- rawClientUrl: o ? o.url : void 0,
224
- clientId: e.clientId || e.resultingClientId,
225
- },
226
- e.request.body instanceof ReadableStream ||
227
- e.request.body instanceof ArrayBuffer
228
- ? [e.request.body]
229
- : void 0
230
- );
231
- return new Response(n.body, {
232
- status: n.status,
233
- statusText: n.statusText,
234
- headers: n.headers,
235
- });
236
- } catch (e) {
237
- return (
238
- console.error("Service Worker error:", e),
239
- new Response("Internal Service Worker Error: " + e.message, {
240
- status: 500,
241
- })
242
- );
243
- }
244
- }
245
- (addEventListener("message", (e) => {
246
- if (
247
- !e.data ||
248
- "object" != typeof e.data ||
249
- !e.data.$controller$init ||
250
- "object" != typeof e.data.$controller$init
251
- )
252
- return;
253
- let t = e.data.$controller$init,
254
- r = i.findIndex((e) => e.id === t.id);
255
- (-1 !== r && i.splice(r, 1), i.push(new s(t.prefix, t.id, e.ports[0])));
256
- }),
257
- addEventListener("install", () => {
258
- self.skipWaiting();
259
- }),
260
- addEventListener("activate", (e) => {
261
- e.waitUntil(clients.claim());
262
- }),
263
- setTimeout(async () => {
264
- for (let e of (console.log(
265
- "service worker activated, notifying clients to revive"
266
- ),
267
- await clients.matchAll()))
268
- e.postMessage({ $controller$swrevive: {} });
269
- }, 100));
270
- })(),
271
- ($scramjetController = o));
272
- })();
273
- //# sourceMappingURL=controller.sw.js.map
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,n)=>{this.promiseCallbacks.set(o,{resolve:s,reject:n}),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 n=t[o]={exports:{}};return e[o](n,n.exports,r),n.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:()=>c,shouldRoute:()=>a});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,o=n.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({cookies:e,options:r})=>{let o=await self.clients.matchAll(),s=[],n=[],i=r?.destination==="document"||r?.destination==="iframe";for(let a of o){let o=Math.random().toString(36).substring(2,10);s.push(o),a.postMessage({$controller$setCookie:{cookies:e,options:r,id:o}}),i||n.push(new Promise(e=>{t[o]=()=>e(o)}))}if(n.length>0){let r,i=!1,a=new Promise(n=>{r=setTimeout(()=>{if(!i){let r=s.filter(e=>void 0!==t[e]);console.error(`timed out waiting for set cookie response (deadlock?): cookies=${e.length} clients=${o.length} pending=${r.length}/${s.length} clientUrls=${o.map(e=>e.url).join(",")}`)}n()},1e3)});try{await Promise.race([a,Promise.any(n).then(()=>{i=!0}).catch(()=>{})])}finally{for(let e of(void 0!==r&&clearTimeout(r),s))delete t[e]}}}},"tabchannel-"+o,(e,t)=>{s.postMessage(e,t)}),s.onmessage=e=>{this.rpc.recieve(e.data)},s.onmessageerror=console.error,this.rpc.call("ready",void 0)}}let n=[],i=new Set;function a(e){let t=new URL(e.request.url);if(n.some(e=>t.pathname.startsWith(e.prefix)))return!0;try{let e=new URL(registration.scope);return t.origin===e.origin&&t.pathname.startsWith(e.pathname)}catch{return!1}}function l(){clients.matchAll().then(e=>{for(let t of e)t.postMessage({$controller$swrevive:{}})})}async function d(e){let t=()=>n.find(t=>e.startsWith(t.prefix)),r=t();if(r)return r;l();let o=Date.now()+1e4;for(;Date.now()<o;){await new Promise(e=>{let t=setTimeout(e,100),r=()=>{clearTimeout(t),i.delete(r),e()};i.add(r)});let e=t();if(e)return e}}async function c(e){try{let t=new URL(e.request.url),r=await d(t.pathname);if(!r)return new Response("Roxxie proxy controller is not attached to this page. Reload to reconnect.",{status:503,headers:{"content-type":"text/plain"}});let o=await clients.get(e.clientId),s=[...e.request.headers],n=await r.rpc.call("request",{rawUrl:e.request.url,rawReferrer:e.request.referrer,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,clientId:e.clientId||e.resultingClientId},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,r=n.findIndex(e=>e.id===t.id);for(let o of(-1!==r&&n.splice(r,1),n.push(new s(t.prefix,t.id,e.ports[0])),[...i]))o()}),addEventListener("install",()=>{self.skipWaiting()}),addEventListener("activate",e=>{e.waitUntil(clients.claim())}),l(),setTimeout(()=>{l()},100)})(),$scramjetController=o})();
2
+ //# sourceMappingURL=controller.sw.js.map