This commit is contained in:
Aditya kumar singh 2026-09-26 20:48:12 +03:00 • committed by GitHub
commit 561c388a86
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 14 additions and 4 deletions

View file

@ -336,7 +336,12 @@ export class SupermemoryClient {
options?: { signal?: AbortSignal }, options?: { signal?: AbortSignal },
): Promise<DocumentsApiResponse> { ): Promise<DocumentsApiResponse> {
try { try {
const signal = options?.signal ?? AbortSignal.timeout(FETCH_TIMEOUT_MS) const signal = options?.signal
? AbortSignal.any([
options.signal,
AbortSignal.timeout(FETCH_TIMEOUT_MS),
])
: AbortSignal.timeout(FETCH_TIMEOUT_MS)
const response = await fetch(`${this.apiUrl}/v3/documents/documents`, { const response = await fetch(`${this.apiUrl}/v3/documents/documents`, {
method: "POST", method: "POST",
headers: { headers: {

View file

@ -33,7 +33,9 @@ export async function forgetMemoryRequest(
Authorization: `Bearer ${apiKey}`, Authorization: `Bearer ${apiKey}`,
}, },
body: JSON.stringify(params), body: JSON.stringify(params),
signal: options?.signal ?? AbortSignal.timeout(FETCH_TIMEOUT_MS), signal: options?.signal
? AbortSignal.any([options.signal, AbortSignal.timeout(FETCH_TIMEOUT_MS)])
: AbortSignal.timeout(FETCH_TIMEOUT_MS),
}) })
if (!response.ok) { if (!response.ok) {

View file

@ -180,7 +180,7 @@ describe("memoryForget", () => {
expect(init.signal).toBeInstanceOf(AbortSignal) expect(init.signal).toBeInstanceOf(AbortSignal)
}) })
it("uses a caller-provided signal instead of creating a timeout", async () => { it("composes a caller-provided signal with the timeout", async () => {
const fetchMock = stubFetch() const fetchMock = stubFetch()
const controller = new AbortController() const controller = new AbortController()
@ -192,7 +192,10 @@ describe("memoryForget", () => {
) )
const [, init] = fetchMock.mock.calls[0] as [string, RequestInit] const [, init] = fetchMock.mock.calls[0] as [string, RequestInit]
expect(init.signal).toBe(controller.signal) expect(init.signal).toBeInstanceOf(AbortSignal)
expect(init.signal?.aborted).toBe(false)
controller.abort()
expect(init.signal?.aborted).toBe(true)
}) })
it("throws a descriptive error on non-2xx responses", async () => { it("throws a descriptive error on non-2xx responses", async () => {