1 | "use strict";
|
2 | (() => {
|
3 | var __create = Object.create;
|
4 | var __defProp = Object.defineProperty;
|
5 | var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
6 | var __getOwnPropNames = Object.getOwnPropertyNames;
|
7 | var __getProtoOf = Object.getPrototypeOf;
|
8 | var __hasOwnProp = Object.prototype.hasOwnProperty;
|
9 | var __commonJS = (cb, mod) => function __require() {
|
10 | return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
11 | };
|
12 | var __copyProps = (to, from, except, desc) => {
|
13 | if (from && typeof from === "object" || typeof from === "function") {
|
14 | for (let key of __getOwnPropNames(from))
|
15 | if (!__hasOwnProp.call(to, key) && key !== except)
|
16 | __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
17 | }
|
18 | return to;
|
19 | };
|
20 | var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
21 |
|
22 |
|
23 |
|
24 |
|
25 | isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
26 | mod
|
27 | ));
|
28 |
|
29 |
|
30 | var require_format = __commonJS({
|
31 | "node_modules/.pnpm/outvariant@1.3.0/node_modules/outvariant/lib/format.js"(exports) {
|
32 | "use strict";
|
33 | Object.defineProperty(exports, "__esModule", { value: true });
|
34 | exports.format = void 0;
|
35 | var POSITIONALS_EXP = /(%?)(%([sdjo]))/g;
|
36 | function serializePositional(positional, flag) {
|
37 | switch (flag) {
|
38 | case "s":
|
39 | return positional;
|
40 | case "d":
|
41 | case "i":
|
42 | return Number(positional);
|
43 | case "j":
|
44 | return JSON.stringify(positional);
|
45 | case "o": {
|
46 | if (typeof positional === "string") {
|
47 | return positional;
|
48 | }
|
49 | var json = JSON.stringify(positional);
|
50 | if (json === "{}" || json === "[]" || /^\[object .+?\]$/.test(json)) {
|
51 | return positional;
|
52 | }
|
53 | return json;
|
54 | }
|
55 | }
|
56 | }
|
57 | function format(message) {
|
58 | var positionals = [];
|
59 | for (var _i = 1; _i < arguments.length; _i++) {
|
60 | positionals[_i - 1] = arguments[_i];
|
61 | }
|
62 | if (positionals.length === 0) {
|
63 | return message;
|
64 | }
|
65 | var positionalIndex = 0;
|
66 | var formattedMessage = message.replace(POSITIONALS_EXP, function(match, isEscaped, _, flag) {
|
67 | var positional = positionals[positionalIndex];
|
68 | var value = serializePositional(positional, flag);
|
69 | if (!isEscaped) {
|
70 | positionalIndex++;
|
71 | return value;
|
72 | }
|
73 | return match;
|
74 | });
|
75 | if (positionalIndex < positionals.length) {
|
76 | formattedMessage += " " + positionals.slice(positionalIndex).join(" ");
|
77 | }
|
78 | formattedMessage = formattedMessage.replace(/%{2,2}/g, "%");
|
79 | return formattedMessage;
|
80 | }
|
81 | exports.format = format;
|
82 | }
|
83 | });
|
84 |
|
85 |
|
86 | var require_invariant = __commonJS({
|
87 | "node_modules/.pnpm/outvariant@1.3.0/node_modules/outvariant/lib/invariant.js"(exports) {
|
88 | "use strict";
|
89 | var __extends = exports && exports.__extends || function() {
|
90 | var extendStatics = function(d, b) {
|
91 | extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
|
92 | d2.__proto__ = b2;
|
93 | } || function(d2, b2) {
|
94 | for (var p in b2)
|
95 | if (Object.prototype.hasOwnProperty.call(b2, p))
|
96 | d2[p] = b2[p];
|
97 | };
|
98 | return extendStatics(d, b);
|
99 | };
|
100 | return function(d, b) {
|
101 | if (typeof b !== "function" && b !== null)
|
102 | throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
103 | extendStatics(d, b);
|
104 | function __() {
|
105 | this.constructor = d;
|
106 | }
|
107 | d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
108 | };
|
109 | }();
|
110 | var __spreadArray = exports && exports.__spreadArray || function(to, from) {
|
111 | for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
112 | to[j] = from[i];
|
113 | return to;
|
114 | };
|
115 | Object.defineProperty(exports, "__esModule", { value: true });
|
116 | exports.invariant = exports.createInvariantWith = exports.InvariantError = void 0;
|
117 | var format_1 = require_format();
|
118 | var STACK_FRAMES_TO_IGNORE = 2;
|
119 | function cleanErrorStack(error) {
|
120 | if (!error.stack) {
|
121 | return;
|
122 | }
|
123 | var nextStack = error.stack.split("\n");
|
124 | nextStack.splice(1, STACK_FRAMES_TO_IGNORE);
|
125 | error.stack = nextStack.join("\n");
|
126 | }
|
127 | var InvariantError = (
|
128 |
|
129 | function(_super) {
|
130 | __extends(InvariantError2, _super);
|
131 | function InvariantError2(message) {
|
132 | var positionals = [];
|
133 | for (var _i = 1; _i < arguments.length; _i++) {
|
134 | positionals[_i - 1] = arguments[_i];
|
135 | }
|
136 | var _this = _super.call(this, message) || this;
|
137 | _this.message = message;
|
138 | _this.name = "Invariant Violation";
|
139 | _this.message = format_1.format.apply(void 0, __spreadArray([message], positionals));
|
140 | cleanErrorStack(_this);
|
141 | return _this;
|
142 | }
|
143 | return InvariantError2;
|
144 | }(Error)
|
145 | );
|
146 | exports.InvariantError = InvariantError;
|
147 | function createInvariantWith(ErrorConstructor) {
|
148 | var invariant2 = function(predicate, message) {
|
149 | var positionals = [];
|
150 | for (var _i = 2; _i < arguments.length; _i++) {
|
151 | positionals[_i - 2] = arguments[_i];
|
152 | }
|
153 | if (!predicate) {
|
154 | var resolvedMessage = format_1.format.apply(void 0, __spreadArray([message], positionals));
|
155 | var isConstructor = !!ErrorConstructor.prototype.name;
|
156 | var error = isConstructor ? (
|
157 |
|
158 | new ErrorConstructor(resolvedMessage)
|
159 | ) : (
|
160 |
|
161 | ErrorConstructor(resolvedMessage)
|
162 | );
|
163 | cleanErrorStack(error);
|
164 | throw error;
|
165 | }
|
166 | };
|
167 | return invariant2;
|
168 | }
|
169 | exports.createInvariantWith = createInvariantWith;
|
170 | function polymorphicInvariant(ErrorClass) {
|
171 | var args = [];
|
172 | for (var _i = 1; _i < arguments.length; _i++) {
|
173 | args[_i - 1] = arguments[_i];
|
174 | }
|
175 | return createInvariantWith(ErrorClass).apply(void 0, args);
|
176 | }
|
177 | exports.invariant = createInvariantWith(InvariantError);
|
178 | exports.invariant.as = polymorphicInvariant;
|
179 | }
|
180 | });
|
181 |
|
182 |
|
183 | var require_lib = __commonJS({
|
184 | "node_modules/.pnpm/outvariant@1.3.0/node_modules/outvariant/lib/index.js"(exports) {
|
185 | "use strict";
|
186 | var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
|
187 | if (k2 === void 0)
|
188 | k2 = k;
|
189 | Object.defineProperty(o, k2, { enumerable: true, get: function() {
|
190 | return m[k];
|
191 | } });
|
192 | } : function(o, m, k, k2) {
|
193 | if (k2 === void 0)
|
194 | k2 = k;
|
195 | o[k2] = m[k];
|
196 | });
|
197 | var __exportStar = exports && exports.__exportStar || function(m, exports2) {
|
198 | for (var p in m)
|
199 | if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p))
|
200 | __createBinding(exports2, m, p);
|
201 | };
|
202 | Object.defineProperty(exports, "__esModule", { value: true });
|
203 | __exportStar(require_invariant(), exports);
|
204 | __exportStar(require_format(), exports);
|
205 | }
|
206 | });
|
207 |
|
208 |
|
209 | var require_createDeferredExecutor = __commonJS({
|
210 | "node_modules/.pnpm/@open-draft+deferred-promise@2.1.0/node_modules/@open-draft/deferred-promise/build/createDeferredExecutor.js"(exports) {
|
211 | "use strict";
|
212 | Object.defineProperty(exports, "__esModule", { value: true });
|
213 | exports.createDeferredExecutor = void 0;
|
214 | function createDeferredExecutor() {
|
215 | const executor = (resolve, reject) => {
|
216 | executor.state = "pending";
|
217 | executor.resolve = (data) => {
|
218 | if (executor.state !== "pending") {
|
219 | return;
|
220 | }
|
221 | executor.result = data;
|
222 | const onFulfilled = (value) => {
|
223 | executor.state = "fulfilled";
|
224 | return value;
|
225 | };
|
226 | return resolve(data instanceof Promise ? data : Promise.resolve(data).then(onFulfilled));
|
227 | };
|
228 | executor.reject = (reason) => {
|
229 | if (executor.state !== "pending") {
|
230 | return;
|
231 | }
|
232 | queueMicrotask(() => {
|
233 | executor.state = "rejected";
|
234 | });
|
235 | return reject(executor.rejectionReason = reason);
|
236 | };
|
237 | };
|
238 | return executor;
|
239 | }
|
240 | exports.createDeferredExecutor = createDeferredExecutor;
|
241 | }
|
242 | });
|
243 |
|
244 |
|
245 | var require_DeferredPromise = __commonJS({
|
246 | "node_modules/.pnpm/@open-draft+deferred-promise@2.1.0/node_modules/@open-draft/deferred-promise/build/DeferredPromise.js"(exports) {
|
247 | "use strict";
|
248 | Object.defineProperty(exports, "__esModule", { value: true });
|
249 | exports.DeferredPromise = void 0;
|
250 | var createDeferredExecutor_1 = require_createDeferredExecutor();
|
251 | var DeferredPromise2 = class extends Promise {
|
252 | #executor;
|
253 | resolve;
|
254 | reject;
|
255 | constructor(executor = null) {
|
256 | const deferredExecutor = (0, createDeferredExecutor_1.createDeferredExecutor)();
|
257 | super((originalResolve, originalReject) => {
|
258 | deferredExecutor(originalResolve, originalReject);
|
259 | executor?.(deferredExecutor.resolve, deferredExecutor.reject);
|
260 | });
|
261 | this.#executor = deferredExecutor;
|
262 | this.resolve = this.#executor.resolve;
|
263 | this.reject = this.#executor.reject;
|
264 | }
|
265 | get state() {
|
266 | return this.#executor.state;
|
267 | }
|
268 | get rejectionReason() {
|
269 | return this.#executor.rejectionReason;
|
270 | }
|
271 | then(onFulfilled, onRejected) {
|
272 | return this.#decorate(super.then(onFulfilled, onRejected));
|
273 | }
|
274 | catch(onRejected) {
|
275 | return this.#decorate(super.catch(onRejected));
|
276 | }
|
277 | finally(onfinally) {
|
278 | return this.#decorate(super.finally(onfinally));
|
279 | }
|
280 | #decorate(promise) {
|
281 | return Object.defineProperties(promise, {
|
282 | resolve: { configurable: true, value: this.resolve },
|
283 | reject: { configurable: true, value: this.reject }
|
284 | });
|
285 | }
|
286 | };
|
287 | exports.DeferredPromise = DeferredPromise2;
|
288 | }
|
289 | });
|
290 |
|
291 |
|
292 | var require_build = __commonJS({
|
293 | "node_modules/.pnpm/@open-draft+deferred-promise@2.1.0/node_modules/@open-draft/deferred-promise/build/index.js"(exports) {
|
294 | "use strict";
|
295 | var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
|
296 | if (k2 === void 0)
|
297 | k2 = k;
|
298 | var desc = Object.getOwnPropertyDescriptor(m, k);
|
299 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
300 | desc = { enumerable: true, get: function() {
|
301 | return m[k];
|
302 | } };
|
303 | }
|
304 | Object.defineProperty(o, k2, desc);
|
305 | } : function(o, m, k, k2) {
|
306 | if (k2 === void 0)
|
307 | k2 = k;
|
308 | o[k2] = m[k];
|
309 | });
|
310 | var __exportStar = exports && exports.__exportStar || function(m, exports2) {
|
311 | for (var p in m)
|
312 | if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p))
|
313 | __createBinding(exports2, m, p);
|
314 | };
|
315 | Object.defineProperty(exports, "__esModule", { value: true });
|
316 | __exportStar(require_createDeferredExecutor(), exports);
|
317 | __exportStar(require_DeferredPromise(), exports);
|
318 | }
|
319 | });
|
320 |
|
321 |
|
322 | var counter = 0;
|
323 | function generateRandomId() {
|
324 | const now = Date.now();
|
325 | const randomNumber = Math.round(Math.random() * 1e4);
|
326 | const count = counter += 1;
|
327 | return (+`${now}${randomNumber}${count}`).toString(16);
|
328 | }
|
329 |
|
330 |
|
331 | var import_outvariant = __toESM(require_lib());
|
332 | var import_deferred_promise = __toESM(require_build());
|
333 |
|
334 |
|
335 | var CHANNEL_NAME = "$CSB_RELAY";
|
336 |
|
337 |
|
338 | self.addEventListener("install", function() {
|
339 | self.skipWaiting();
|
340 | });
|
341 | self.addEventListener("activate", async (event) => {
|
342 | event.waitUntil(self.clients.claim());
|
343 | });
|
344 | var pendingRequests = new Map();
|
345 | function initRelayPort(relayPort) {
|
346 | relayPort.onmessage = (event) => {
|
347 | const { data } = event;
|
348 | switch (data.$type) {
|
349 | case "preview/response": {
|
350 | const message = data;
|
351 | const foundRequest = pendingRequests.get(message.id);
|
352 | (0, import_outvariant.invariant)(
|
353 | foundRequest,
|
354 | 'Failed to handle "PREVIEW_RESPONSE_TYPE" message from the relay: unknown request ID "%s"',
|
355 | message.id
|
356 | );
|
357 | pendingRequests.delete(message.id);
|
358 | foundRequest.resolve({
|
359 | status: message.status,
|
360 | headers: message.headers,
|
361 | body: message.body
|
362 | });
|
363 | break;
|
364 | }
|
365 | }
|
366 | };
|
367 | }
|
368 | function createRelayPortPromise() {
|
369 | const promise = new import_deferred_promise.DeferredPromise();
|
370 | promise.then((port) => {
|
371 | initRelayPort(port);
|
372 | return port;
|
373 | });
|
374 | return promise;
|
375 | }
|
376 | var relayPortPromise = createRelayPortPromise();
|
377 | async function sendToRelay(message) {
|
378 | const relayPort = await relayPortPromise;
|
379 | (0, import_outvariant.invariant)(
|
380 | relayPort,
|
381 | "Failed to send message to the relay: relay message port is not defined",
|
382 | message
|
383 | );
|
384 | relayPort.postMessage(message);
|
385 | }
|
386 | self.addEventListener("message", async (event) => {
|
387 | if (typeof event.data !== "object" || event.data.$channel !== CHANNEL_NAME) {
|
388 | return;
|
389 | }
|
390 | const message = event.data;
|
391 | switch (message.$type) {
|
392 | case "worker/init": {
|
393 | const nextRelayPort = event.ports[0];
|
394 | (0, import_outvariant.invariant)(
|
395 | relayPortPromise.state === "pending",
|
396 | "Failed to initialize relay: relay port promise already fulfilled from previous evaluation."
|
397 | );
|
398 | relayPortPromise.resolve(nextRelayPort);
|
399 | break;
|
400 | }
|
401 | case "worker/ping": {
|
402 | if (!(event.source instanceof Client)) {
|
403 | return;
|
404 | }
|
405 | const client = await self.clients.get(event.source.id);
|
406 | if (client) {
|
407 | const pong = {
|
408 | $channel: CHANNEL_NAME,
|
409 | $type: "worker/pong"
|
410 | };
|
411 | client.postMessage(pong);
|
412 | }
|
413 | break;
|
414 | }
|
415 | }
|
416 | });
|
417 | function getResponse(request) {
|
418 | const requestId = generateRandomId();
|
419 | const requestPromise = new import_deferred_promise.DeferredPromise();
|
420 | const timeout = setTimeout(() => {
|
421 | pendingRequests.delete(requestId);
|
422 | requestPromise.reject(
|
423 | new Error(
|
424 | `Failed to handle ${request.method} ${request.url} request: no response received from the BroadcastChannel within timeout. There's likely an issue with the relay/worker communication.`
|
425 | )
|
426 | );
|
427 | }, 2e4);
|
428 | const requestMessage = {
|
429 | $channel: CHANNEL_NAME,
|
430 | $type: "preview/request",
|
431 | id: requestId,
|
432 | url: request.url,
|
433 | method: request.method
|
434 | };
|
435 | pendingRequests.set(requestId, requestPromise);
|
436 | sendToRelay(requestMessage);
|
437 | return requestPromise.finally(() => clearTimeout(timeout));
|
438 | }
|
439 | self.addEventListener("fetch", (event) => {
|
440 | const req = event.request.clone();
|
441 | const parsedUrl = new URL(req.url);
|
442 | if (parsedUrl.origin !== self.location.origin || parsedUrl.pathname.startsWith("/__csb")) {
|
443 | return;
|
444 | }
|
445 | const handleRequest = async () => {
|
446 | const response = await getResponse(req);
|
447 | const swResponse = new Response(response.body, {
|
448 | headers: response.headers,
|
449 | status: response.status
|
450 | });
|
451 | return swResponse;
|
452 | };
|
453 | return event.respondWith(handleRequest());
|
454 | });
|
455 | })();
|