@giselles-ai/browser-tool 0.1.8 → 0.1.10
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/dist/relay/index.d.ts +1 -0
- package/dist/relay/index.js +33 -18
- package/package.json +1 -1
package/dist/relay/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import Redis from 'ioredis';
|
|
|
3
3
|
declare function createRelayHandler(): {
|
|
4
4
|
GET: (request: Request) => Promise<Response>;
|
|
5
5
|
POST: (request: Request) => Promise<Response>;
|
|
6
|
+
OPTIONS: (request: Request) => Response;
|
|
6
7
|
};
|
|
7
8
|
|
|
8
9
|
type RelayErrorCode = "UNAUTHORIZED" | "NO_BROWSER" | "TIMEOUT" | "INVALID_RESPONSE" | "NOT_FOUND" | "INTERNAL";
|
package/dist/relay/index.js
CHANGED
|
@@ -532,6 +532,15 @@ function toRelayError(error) {
|
|
|
532
532
|
|
|
533
533
|
// src/relay/relay-handler.ts
|
|
534
534
|
var LOG_PREFIX = "[relay-handler]";
|
|
535
|
+
function corsHeaders(request) {
|
|
536
|
+
const origin = request.headers.get("origin");
|
|
537
|
+
return {
|
|
538
|
+
"Access-Control-Allow-Origin": origin || "*",
|
|
539
|
+
"Access-Control-Allow-Methods": "GET, POST, OPTIONS",
|
|
540
|
+
"Access-Control-Allow-Headers": "Content-Type, Authorization, x-vercel-protection-bypass, x-giselle-protection-bypass",
|
|
541
|
+
"Access-Control-Max-Age": "86400"
|
|
542
|
+
};
|
|
543
|
+
}
|
|
535
544
|
var dispatchSchema = z2.object({
|
|
536
545
|
type: z2.literal("relay.dispatch"),
|
|
537
546
|
sessionId: z2.string().min(1),
|
|
@@ -549,10 +558,8 @@ var postBodySchema = z2.discriminatedUnion("type", [
|
|
|
549
558
|
dispatchSchema,
|
|
550
559
|
respondSchema
|
|
551
560
|
]);
|
|
552
|
-
function createSafeError(code, message, status) {
|
|
553
|
-
return Response.json({ ok: false, errorCode: code, message }, { status });
|
|
554
|
-
}
|
|
555
561
|
function createRelayEventsRoute(request) {
|
|
562
|
+
const cors = corsHeaders(request);
|
|
556
563
|
const url = new URL(request.url);
|
|
557
564
|
const sessionId = url.searchParams.get("sessionId") ?? "";
|
|
558
565
|
const token = url.searchParams.get("token") ?? "";
|
|
@@ -563,7 +570,7 @@ function createRelayEventsRoute(request) {
|
|
|
563
570
|
errorCode: "UNAUTHORIZED",
|
|
564
571
|
message: "sessionId and token are required."
|
|
565
572
|
},
|
|
566
|
-
{ status: 401 }
|
|
573
|
+
{ status: 401, headers: cors }
|
|
567
574
|
)
|
|
568
575
|
);
|
|
569
576
|
}
|
|
@@ -687,7 +694,8 @@ data: ${rawJson}
|
|
|
687
694
|
"Cache-Control": "no-cache, no-transform",
|
|
688
695
|
Connection: "keep-alive",
|
|
689
696
|
"X-Accel-Buffering": "no",
|
|
690
|
-
"Content-Encoding": "none"
|
|
697
|
+
"Content-Encoding": "none",
|
|
698
|
+
...cors
|
|
691
699
|
}
|
|
692
700
|
});
|
|
693
701
|
}).catch((error) => {
|
|
@@ -701,15 +709,23 @@ data: ${rawJson}
|
|
|
701
709
|
errorCode: relayError.code,
|
|
702
710
|
message: relayError.message
|
|
703
711
|
},
|
|
704
|
-
{ status: relayError.status }
|
|
712
|
+
{ status: relayError.status, headers: cors }
|
|
705
713
|
);
|
|
706
714
|
});
|
|
707
715
|
}
|
|
708
716
|
async function createRelayPostRoute(request) {
|
|
717
|
+
const cors = corsHeaders(request);
|
|
709
718
|
const payload = await request.json().catch(() => null);
|
|
710
719
|
const parsed = postBodySchema.safeParse(payload);
|
|
711
720
|
if (!parsed.success) {
|
|
712
|
-
return
|
|
721
|
+
return Response.json(
|
|
722
|
+
{
|
|
723
|
+
ok: false,
|
|
724
|
+
errorCode: "INVALID_RESPONSE",
|
|
725
|
+
message: "Invalid request payload."
|
|
726
|
+
},
|
|
727
|
+
{ status: 400, headers: cors }
|
|
728
|
+
);
|
|
713
729
|
}
|
|
714
730
|
if (parsed.data.type === "relay.dispatch") {
|
|
715
731
|
try {
|
|
@@ -719,13 +735,12 @@ async function createRelayPostRoute(request) {
|
|
|
719
735
|
request: parsed.data.request,
|
|
720
736
|
timeoutMs: parsed.data.timeoutMs
|
|
721
737
|
});
|
|
722
|
-
return Response.json({ ok: true, response });
|
|
738
|
+
return Response.json({ ok: true, response }, { headers: cors });
|
|
723
739
|
} catch (error) {
|
|
724
740
|
const relayError = toRelayError(error);
|
|
725
|
-
return
|
|
726
|
-
relayError.code,
|
|
727
|
-
relayError.
|
|
728
|
-
relayError.status
|
|
741
|
+
return Response.json(
|
|
742
|
+
{ ok: false, errorCode: relayError.code, message: relayError.message },
|
|
743
|
+
{ status: relayError.status, headers: cors }
|
|
729
744
|
);
|
|
730
745
|
}
|
|
731
746
|
}
|
|
@@ -735,20 +750,20 @@ async function createRelayPostRoute(request) {
|
|
|
735
750
|
token: parsed.data.token,
|
|
736
751
|
response: parsed.data.response
|
|
737
752
|
});
|
|
738
|
-
return Response.json({ ok: true });
|
|
753
|
+
return Response.json({ ok: true }, { headers: cors });
|
|
739
754
|
} catch (error) {
|
|
740
755
|
const relayError = toRelayError(error);
|
|
741
|
-
return
|
|
742
|
-
relayError.code,
|
|
743
|
-
relayError.
|
|
744
|
-
relayError.status
|
|
756
|
+
return Response.json(
|
|
757
|
+
{ ok: false, errorCode: relayError.code, message: relayError.message },
|
|
758
|
+
{ status: relayError.status, headers: cors }
|
|
745
759
|
);
|
|
746
760
|
}
|
|
747
761
|
}
|
|
748
762
|
function createRelayHandler() {
|
|
749
763
|
return {
|
|
750
764
|
GET: async (request) => createRelayEventsRoute(request),
|
|
751
|
-
POST: createRelayPostRoute
|
|
765
|
+
POST: createRelayPostRoute,
|
|
766
|
+
OPTIONS: (request) => new Response(null, { status: 204, headers: corsHeaders(request) })
|
|
752
767
|
};
|
|
753
768
|
}
|
|
754
769
|
export {
|