MCPcopy Index your code
hub / github.com/triggerdotdev/trigger.dev / zodfetchWithVersions

Function zodfetchWithVersions

packages/trigger-sdk/src/apiClient.ts:781–936  ·  view source on GitHub ↗
(
  logger: Logger,
  versionedSchemaMap: TVersionedResponseBodyMap,
  unversionedSchema: TUnversionedResponseBodySchema,
  url: string,
  requestInit?: RequestInit,
  options?: {
    errorMessage?: string;
    optional?: TOptional;
  },
  retryCount = 0
)

Source from the content-addressed store, hash-verified

779 };
780
781async function zodfetchWithVersions<
782 TVersionedResponseBodyMap extends VersionedResponseBodyMap,
783 TUnversionedResponseBodySchema extends z.ZodTypeAny,
784 TOptional extends boolean = false,
785>(
786 logger: Logger,
787 versionedSchemaMap: TVersionedResponseBodyMap,
788 unversionedSchema: TUnversionedResponseBodySchema,
789 url: string,
790 requestInit?: RequestInit,
791 options?: {
792 errorMessage?: string;
793 optional?: TOptional;
794 },
795 retryCount = 0
796): Promise<
797 TOptional extends true
798 ? VersionedResponseBody<TVersionedResponseBodyMap, TUnversionedResponseBodySchema> | undefined
799 : VersionedResponseBody<TVersionedResponseBodyMap, TUnversionedResponseBodySchema>
800> {
801 try {
802 const fullRequestInit = requestInitWithCache(requestInit);
803
804 const response = await fetch(url, fullRequestInit);
805
806 logger.debug(`[ApiClient] zodfetchWithVersions ${url} (attempt ${retryCount + 1})`, {
807 url,
808 retryCount,
809 requestHeaders: fullRequestInit?.headers,
810 responseHeaders: Object.fromEntries(response.headers.entries()),
811 });
812
813 if (
814 (!requestInit || requestInit.method === "GET") &&
815 response.status === 404 &&
816 options?.optional
817 ) {
818 // @ts-ignore
819 return;
820 }
821
822 //rate limit, so we want to reschedule
823 if (response.status === 429) {
824 //unix timestamp in milliseconds
825 const retryAfter = response.headers.get("x-ratelimit-reset");
826 if (retryAfter) {
827 throw new AutoYieldRateLimitError(parseInt(retryAfter));
828 }
829 }
830
831 if (response.status >= 400 && response.status < 500) {
832 const rawBody = await safeResponseText(response);
833 const body = safeJsonParse(rawBody);
834
835 logger.error(`[ApiClient] zodfetchWithVersions failed with ${response.status}`, {
836 url,
837 retryCount,
838 requestHeaders: fullRequestInit?.headers,

Callers 1

runTaskMethod · 0.85

Calls 10

safeResponseTextFunction · 0.85
jsonMethod · 0.80
parseMethod · 0.80
requestInitWithCacheFunction · 0.70
safeJsonParseFunction · 0.70
exponentialBackoffFunction · 0.70
debugMethod · 0.65
errorMethod · 0.65
fetchFunction · 0.50
getMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…