2d8a41b18b
* Denormalize run tags, increase character limit to 128 * WIP realtime subscribing to runs * extracted the stream stuff into core, made it more reusable * WIP tags * Remove tags for now because it’s not support in electric * Support async iterables, readable stream, and callback style subscription styles * Remove tags streaming endpoint * Add realtime rate limits and scope them to the /realtime path * WIP rate limt per org * Introduce per org rate limits * WIP JWT auth * Move migrations into new internal db package * Resolve pnpm lock file * Authenticating to the realtime API with JWTs are working * realtime in the client * Created react-hooks package and starting to move stuff in there * Improve types for hooks * schema tasks * Added useBatch hook * build uploadthing/fal demo and change how run metadata is synced to the server * tweaks * WIL realtime concurrency tracking * Implement test for realtime client using testcontainers also updated electric to latest version * Allow customizing the expiration time of the automatic JWT created after triggering a task * Add support for subscribing to run tags * Improve auth types and API * finalize the realtime API * Fixed some example stuff * Allow up to 10 run tags * Remove core from docker-provider tsconfig paths to prevent it from being typechecked * do the same for the kubernetes provider * Fixing some typecheck errors * Fix webapp type errors * Update @trigger.dev/platform to 1.0.13 * Fix attw error * Remove from/to in subscribeToRuns query params * Add tests for the rate limit middleware and add custom JWT rate limits * turn off webapp test parallelism * Finish renaming jwt -> publicAccessToken and automatically give the JWT read access to the tags when using trigger * Add changeset * Attempt to fix unit tests in CI * Skip running the auth rate limit middleware tests for now * Try a beefier machine * Try and run webapp tests separately * Setup env vars * Make sliding window test more reliabile
40 lines
1.4 KiB
TypeScript
40 lines
1.4 KiB
TypeScript
// When proxying long-polling requests, content-encoding & content-length are added
|
|
// erroneously (saying the body is gzipped when it's not) so we'll just remove
|
|
// them to avoid content decoding errors in the browser.
|
|
//
|
|
|
|
import { logger } from "~/services/logger.server";
|
|
|
|
// Similar-ish problem to https://github.com/wintercg/fetch/issues/23
|
|
export async function longPollingFetch(url: string, options?: RequestInit) {
|
|
try {
|
|
let response = await fetch(url, options);
|
|
|
|
if (response.headers.get("content-encoding")) {
|
|
const headers = new Headers(response.headers);
|
|
headers.delete("content-encoding");
|
|
headers.delete("content-length");
|
|
response = new Response(response.body, {
|
|
headers,
|
|
status: response.status,
|
|
statusText: response.statusText,
|
|
});
|
|
}
|
|
return response;
|
|
} catch (error) {
|
|
if (error instanceof TypeError) {
|
|
// Network error or other fetch-related errors
|
|
logger.error("Network error:", { error: error.message });
|
|
throw new Response("Network error occurred", { status: 503 });
|
|
} else if (error instanceof Error) {
|
|
// HTTP errors or other known errors
|
|
logger.error("Fetch error:", { error: error.message });
|
|
throw new Response(error.message, { status: 500 });
|
|
} else {
|
|
// Unknown errors
|
|
logger.error("Unknown error occurred during fetch");
|
|
throw new Response("An unknown error occurred", { status: 500 });
|
|
}
|
|
}
|
|
}
|