@effect-native/fetch-hooks 0.1.1 → 4.0.0
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/cache-manager.d.ts.map +1 -1
- package/dist/cache-manager.js +29 -97
- package/dist/cache-manager.js.map +1 -1
- package/package.json +8 -8
- package/src/cache-manager.ts +29 -106
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../src/cache-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,YAAY,EACZ,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,aAAa,EACd,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../src/cache-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,YAAY,EACZ,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,aAAa,EACd,MAAM,YAAY,CAAA;AA2BnB,2EAA2E;AAC3E,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,UAAU,CAAC,KAAK,GAAG,IAAI,CAE/E;AAyFD,wBAAsB,YAAY,CAChC,MAAM,EAAE,gBAAgB,EACxB,gBAAgB,CAAC,EAAE,MAAM,EACzB,mBAAmB,CAAC,EAAE,OAAO,EAC7B,OAAO,CAAC,EAAE,YAAY,EACtB,eAAe,CAAC,EAAE,eAAe,GAChC,OAAO,CAAC,MAAM,CAAC,CA6BjB;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,mBAAmB,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,EACrD,OAAO,CAAC,EAAE,YAAY,EACtB,eAAe,CAAC,EAAE,eAAe,GAChC,OAAO,CAAC,QAAQ,CAAC,CA8HnB;AAED,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,iBAAiB,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,EACnD,iBAAiB,CAAC,EAAE,sBAAsB,CAAC,UAAU,CAAC,EACtD,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAqL1B;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ7D"}
|
package/dist/cache-manager.js
CHANGED
|
@@ -7,44 +7,10 @@ import { isSSEResponse, jsonlToTimedChunks, recordStreamWithTiming, replayStream
|
|
|
7
7
|
const DEV_FS_LOGS_PORT = 1090;
|
|
8
8
|
// Internal fetch function, set via setInternalFetchForCache
|
|
9
9
|
let _internalFetch = globalThis.fetch;
|
|
10
|
-
const pendingSSEWrites = new Map();
|
|
11
|
-
const storageIds = new WeakMap();
|
|
12
|
-
let nextStorageId = 1;
|
|
13
10
|
/** @internal Set the fetch function used for dev-fs-logs communication. */
|
|
14
11
|
export function setInternalFetchForCache(fetchFn) {
|
|
15
12
|
_internalFetch = fetchFn;
|
|
16
13
|
}
|
|
17
|
-
function getStorageId(storage) {
|
|
18
|
-
const existingId = storageIds.get(storage);
|
|
19
|
-
if (existingId !== undefined) {
|
|
20
|
-
return existingId;
|
|
21
|
-
}
|
|
22
|
-
const id = nextStorageId++;
|
|
23
|
-
storageIds.set(storage, id);
|
|
24
|
-
return id;
|
|
25
|
-
}
|
|
26
|
-
function getPendingSSEWriteKey(cacheKey, storage, baseDir) {
|
|
27
|
-
if (storage) {
|
|
28
|
-
return `storage:${getStorageId(storage)}:${cacheKey}`;
|
|
29
|
-
}
|
|
30
|
-
return `fs:${baseDir ?? getCacheDir()}:${cacheKey}`;
|
|
31
|
-
}
|
|
32
|
-
function trackPendingSSEWrite(pendingKey, writePromise) {
|
|
33
|
-
pendingSSEWrites.set(pendingKey, writePromise);
|
|
34
|
-
void writePromise.finally(() => {
|
|
35
|
-
const active = pendingSSEWrites.get(pendingKey);
|
|
36
|
-
if (active === writePromise) {
|
|
37
|
-
pendingSSEWrites.delete(pendingKey);
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
async function waitForPendingSSEWrite(pendingKey) {
|
|
42
|
-
const pending = pendingSSEWrites.get(pendingKey);
|
|
43
|
-
if (!pending) {
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
await pending.catch(() => undefined);
|
|
47
|
-
}
|
|
48
14
|
async function tryDevFsLogsWrite(cacheId, data) {
|
|
49
15
|
return _internalFetch(`http://localhost:${DEV_FS_LOGS_PORT}/cache`, {
|
|
50
16
|
method: "POST",
|
|
@@ -69,7 +35,8 @@ async function tryDevFsLogsRead(cacheId) {
|
|
|
69
35
|
})
|
|
70
36
|
.catch(() => null);
|
|
71
37
|
}
|
|
72
|
-
function ensureCacheDir(
|
|
38
|
+
function ensureCacheDir(cacheKey) {
|
|
39
|
+
const baseDir = getCacheDir();
|
|
73
40
|
const cacheDir = join(baseDir, cacheKey);
|
|
74
41
|
if (!existsSync(cacheDir)) {
|
|
75
42
|
try {
|
|
@@ -87,12 +54,6 @@ function ensureCacheDir(baseDir, cacheKey) {
|
|
|
87
54
|
}
|
|
88
55
|
return cacheDir;
|
|
89
56
|
}
|
|
90
|
-
function requireFilesystemBaseDir(baseDir) {
|
|
91
|
-
if (baseDir === undefined) {
|
|
92
|
-
throw new Error("Filesystem cache directory is required when no custom storage is provided");
|
|
93
|
-
}
|
|
94
|
-
return baseDir;
|
|
95
|
-
}
|
|
96
57
|
function writeJsonFile(filePath, data) {
|
|
97
58
|
writeFileSync(filePath, JSON.stringify(data, null, 2), "utf-8");
|
|
98
59
|
}
|
|
@@ -150,8 +111,7 @@ export async function storeRequest(params, providedCacheKey, skipHeaderFiltering
|
|
|
150
111
|
}
|
|
151
112
|
else {
|
|
152
113
|
// Legacy filesystem path
|
|
153
|
-
const
|
|
154
|
-
const cacheDir = ensureCacheDir(baseDir, cacheKey);
|
|
114
|
+
const cacheDir = ensureCacheDir(cacheKey);
|
|
155
115
|
const requestPath = join(cacheDir, "request.json");
|
|
156
116
|
writeJsonFile(requestPath, request);
|
|
157
117
|
}
|
|
@@ -160,7 +120,6 @@ export async function storeRequest(params, providedCacheKey, skipHeaderFiltering
|
|
|
160
120
|
}
|
|
161
121
|
export async function storeResponse(cacheKey, response, beforeStoreResponse, storage, hashableRequest) {
|
|
162
122
|
const key = hashableRequest ? [cacheKey, hashableRequest] : [cacheKey];
|
|
163
|
-
const filesystemBaseDir = storage ? undefined : getCacheDir();
|
|
164
123
|
const startTime = Date.now();
|
|
165
124
|
const headers = headersToRecord(response.headers);
|
|
166
125
|
const contentType = headers["content-type"] ?? "";
|
|
@@ -182,7 +141,7 @@ export async function storeResponse(cacheKey, response, beforeStoreResponse, sto
|
|
|
182
141
|
await storage.responseMeta.set(key, meta);
|
|
183
142
|
}
|
|
184
143
|
else {
|
|
185
|
-
const cacheDir = ensureCacheDir(
|
|
144
|
+
const cacheDir = ensureCacheDir(cacheKey);
|
|
186
145
|
const metaPath = join(cacheDir, "response.meta.json");
|
|
187
146
|
writeJsonFile(metaPath, meta);
|
|
188
147
|
}
|
|
@@ -207,7 +166,7 @@ export async function storeResponse(cacheKey, response, beforeStoreResponse, sto
|
|
|
207
166
|
await storage.binaryBody.set(key, data);
|
|
208
167
|
}
|
|
209
168
|
else {
|
|
210
|
-
const cacheDir = ensureCacheDir(
|
|
169
|
+
const cacheDir = ensureCacheDir(cacheKey);
|
|
211
170
|
const binPath = join(cacheDir, "response.bin");
|
|
212
171
|
writeBinaryFile(binPath, data);
|
|
213
172
|
const metaPath = join(cacheDir, "response.meta.json");
|
|
@@ -222,31 +181,25 @@ export async function storeResponse(cacheKey, response, beforeStoreResponse, sto
|
|
|
222
181
|
}
|
|
223
182
|
if (isSSE) {
|
|
224
183
|
const [recordStream, returnStream] = response.body.tee();
|
|
225
|
-
const
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
writeJsonFile(metaPath, sseMeta);
|
|
245
|
-
}
|
|
246
|
-
void tryDevFsLogsWrite(`${cacheKey}/meta`, sseMeta);
|
|
247
|
-
void tryDevFsLogsWrite(`${cacheKey}/sse`, chunks);
|
|
248
|
-
})();
|
|
249
|
-
trackPendingSSEWrite(getPendingSSEWriteKey(cacheKey, storage, filesystemBaseDir), persistPromise);
|
|
184
|
+
const chunks = await recordStreamWithTiming(recordStream);
|
|
185
|
+
meta.total_ms = Date.now() - startTime;
|
|
186
|
+
if (storage) {
|
|
187
|
+
await storage.responseMeta.set(key, meta);
|
|
188
|
+
await storage.sseChunks.set(key, chunks);
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
const cacheDir = ensureCacheDir(cacheKey);
|
|
192
|
+
const jsonlPath = join(cacheDir, "response.jsonl");
|
|
193
|
+
const assetsDir = join(cacheDir, "response.jsonl.assets");
|
|
194
|
+
let jsonlContent = timedChunksToJsonl(chunks);
|
|
195
|
+
const { content: extractedContent } = extractDataUrls(jsonlContent, assetsDir);
|
|
196
|
+
jsonlContent = extractedContent;
|
|
197
|
+
writeTextFile(jsonlPath, jsonlContent);
|
|
198
|
+
const metaPath = join(cacheDir, "response.meta.json");
|
|
199
|
+
writeJsonFile(metaPath, meta);
|
|
200
|
+
}
|
|
201
|
+
await tryDevFsLogsWrite(`${cacheKey}/meta`, meta);
|
|
202
|
+
await tryDevFsLogsWrite(`${cacheKey}/sse`, chunks);
|
|
250
203
|
return new Response(returnStream, {
|
|
251
204
|
status: response.status,
|
|
252
205
|
statusText: response.statusText,
|
|
@@ -265,7 +218,7 @@ export async function storeResponse(cacheKey, response, beforeStoreResponse, sto
|
|
|
265
218
|
await storage.responseBody.set(key, transformedResponse.body ?? "");
|
|
266
219
|
}
|
|
267
220
|
else {
|
|
268
|
-
const cacheDir = ensureCacheDir(
|
|
221
|
+
const cacheDir = ensureCacheDir(cacheKey);
|
|
269
222
|
const jsonPath = join(cacheDir, "response.json");
|
|
270
223
|
const assetsDir = join(cacheDir, "response.json.assets");
|
|
271
224
|
const { content: extractedContent } = extractDataUrls(transformedResponse.body ?? "", assetsDir);
|
|
@@ -286,15 +239,13 @@ export async function storeResponse(cacheKey, response, beforeStoreResponse, sto
|
|
|
286
239
|
}
|
|
287
240
|
export async function getCachedResponse(cacheKey, afterLoadResponse, transformSSEChunk, storage) {
|
|
288
241
|
const key = [cacheKey];
|
|
289
|
-
const filesystemBaseDir = storage ? undefined : getCacheDir();
|
|
290
|
-
const pendingWriteKey = getPendingSSEWriteKey(cacheKey, storage, filesystemBaseDir);
|
|
291
242
|
// Try to get response metadata
|
|
292
243
|
let responseMeta = null;
|
|
293
244
|
if (storage) {
|
|
294
245
|
responseMeta = await storage.responseMeta.get(key);
|
|
295
246
|
}
|
|
296
247
|
else {
|
|
297
|
-
const cacheDir = join(
|
|
248
|
+
const cacheDir = join(getCacheDir(), cacheKey);
|
|
298
249
|
const metaPath = join(cacheDir, "response.meta.json");
|
|
299
250
|
responseMeta = readJsonFile(metaPath);
|
|
300
251
|
// For non-streaming responses, metadata is stored inside response.json
|
|
@@ -306,25 +257,6 @@ export async function getCachedResponse(cacheKey, afterLoadResponse, transformSS
|
|
|
306
257
|
}
|
|
307
258
|
}
|
|
308
259
|
}
|
|
309
|
-
if (!responseMeta) {
|
|
310
|
-
await waitForPendingSSEWrite(pendingWriteKey);
|
|
311
|
-
if (storage) {
|
|
312
|
-
responseMeta = await storage.responseMeta.get(key);
|
|
313
|
-
}
|
|
314
|
-
else {
|
|
315
|
-
const cacheDir = join(requireFilesystemBaseDir(filesystemBaseDir), cacheKey);
|
|
316
|
-
const metaPath = join(cacheDir, "response.meta.json");
|
|
317
|
-
responseMeta = readJsonFile(metaPath);
|
|
318
|
-
// For non-streaming responses, metadata is stored inside response.json
|
|
319
|
-
if (!responseMeta) {
|
|
320
|
-
const jsonPath = join(cacheDir, "response.json");
|
|
321
|
-
const cached = readJsonFile(jsonPath);
|
|
322
|
-
if (cached?.meta) {
|
|
323
|
-
responseMeta = cached.meta;
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
260
|
if (!responseMeta) {
|
|
329
261
|
const devFsMeta = (await tryDevFsLogsRead(`${cacheKey}/meta`));
|
|
330
262
|
if (!devFsMeta) {
|
|
@@ -340,7 +272,7 @@ export async function getCachedResponse(cacheKey, afterLoadResponse, transformSS
|
|
|
340
272
|
data = await storage.binaryBody.get(key);
|
|
341
273
|
}
|
|
342
274
|
else {
|
|
343
|
-
const cacheDir = join(
|
|
275
|
+
const cacheDir = join(getCacheDir(), cacheKey);
|
|
344
276
|
const binPath = join(cacheDir, "response.bin");
|
|
345
277
|
data = readBinaryFile(binPath);
|
|
346
278
|
}
|
|
@@ -394,7 +326,7 @@ export async function getCachedResponse(cacheKey, afterLoadResponse, transformSS
|
|
|
394
326
|
});
|
|
395
327
|
}
|
|
396
328
|
// Legacy filesystem path
|
|
397
|
-
const cacheDir = join(
|
|
329
|
+
const cacheDir = join(getCacheDir(), cacheKey);
|
|
398
330
|
const jsonlPath = join(cacheDir, "response.jsonl");
|
|
399
331
|
const assetsDir = join(cacheDir, "response.jsonl.assets");
|
|
400
332
|
let jsonlContent = readTextFile(jsonlPath);
|
|
@@ -430,7 +362,7 @@ export async function getCachedResponse(cacheKey, afterLoadResponse, transformSS
|
|
|
430
362
|
body = await storage.responseBody.get(key);
|
|
431
363
|
}
|
|
432
364
|
else {
|
|
433
|
-
const cacheDir = join(
|
|
365
|
+
const cacheDir = join(getCacheDir(), cacheKey);
|
|
434
366
|
const jsonPath = join(cacheDir, "response.json");
|
|
435
367
|
const assetsDir = join(cacheDir, "response.json.assets");
|
|
436
368
|
const cached = readJsonFile(jsonPath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-manager.js","sourceRoot":"","sources":["../src/cache-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cache-manager.js","sourceRoot":"","sources":["../src/cache-manager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-native/fetch-hooks",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "Fetch caching utilities for deterministic API replay",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -12,6 +12,11 @@
|
|
|
12
12
|
"types": "./dist/index.d.ts"
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "tsc --project tsconfig.build.json",
|
|
17
|
+
"test": "bun test",
|
|
18
|
+
"test:run": "bun test"
|
|
19
|
+
},
|
|
15
20
|
"files": [
|
|
16
21
|
"dist",
|
|
17
22
|
"src"
|
|
@@ -30,7 +35,7 @@
|
|
|
30
35
|
"repository": {
|
|
31
36
|
"type": "git",
|
|
32
37
|
"url": "https://github.com/effect-native/effect-native.git",
|
|
33
|
-
"directory": "packages
|
|
38
|
+
"directory": "packages/fetch-hooks"
|
|
34
39
|
},
|
|
35
40
|
"engines": {
|
|
36
41
|
"node": ">=18"
|
|
@@ -45,10 +50,5 @@
|
|
|
45
50
|
"bun": {
|
|
46
51
|
"optional": true
|
|
47
52
|
}
|
|
48
|
-
},
|
|
49
|
-
"scripts": {
|
|
50
|
-
"build": "tsc --project tsconfig.build.json",
|
|
51
|
-
"test": "vitest",
|
|
52
|
-
"test:run": "vitest run"
|
|
53
53
|
}
|
|
54
|
-
}
|
|
54
|
+
}
|
package/src/cache-manager.ts
CHANGED
|
@@ -36,50 +36,12 @@ const DEV_FS_LOGS_PORT = 1090
|
|
|
36
36
|
|
|
37
37
|
// Internal fetch function, set via setInternalFetchForCache
|
|
38
38
|
let _internalFetch: typeof globalThis.fetch = globalThis.fetch
|
|
39
|
-
const pendingSSEWrites = new Map<string, Promise<void>>()
|
|
40
|
-
const storageIds = new WeakMap<CacheStorage, number>()
|
|
41
|
-
let nextStorageId = 1
|
|
42
39
|
|
|
43
40
|
/** @internal Set the fetch function used for dev-fs-logs communication. */
|
|
44
41
|
export function setInternalFetchForCache(fetchFn: typeof globalThis.fetch): void {
|
|
45
42
|
_internalFetch = fetchFn
|
|
46
43
|
}
|
|
47
44
|
|
|
48
|
-
function getStorageId(storage: CacheStorage): number {
|
|
49
|
-
const existingId = storageIds.get(storage)
|
|
50
|
-
if (existingId !== undefined) {
|
|
51
|
-
return existingId
|
|
52
|
-
}
|
|
53
|
-
const id = nextStorageId++
|
|
54
|
-
storageIds.set(storage, id)
|
|
55
|
-
return id
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
function getPendingSSEWriteKey(cacheKey: string, storage?: CacheStorage, baseDir?: string): string {
|
|
59
|
-
if (storage) {
|
|
60
|
-
return `storage:${getStorageId(storage)}:${cacheKey}`
|
|
61
|
-
}
|
|
62
|
-
return `fs:${baseDir ?? getCacheDir()}:${cacheKey}`
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
function trackPendingSSEWrite(pendingKey: string, writePromise: Promise<void>): void {
|
|
66
|
-
pendingSSEWrites.set(pendingKey, writePromise)
|
|
67
|
-
void writePromise.finally(() => {
|
|
68
|
-
const active = pendingSSEWrites.get(pendingKey)
|
|
69
|
-
if (active === writePromise) {
|
|
70
|
-
pendingSSEWrites.delete(pendingKey)
|
|
71
|
-
}
|
|
72
|
-
})
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
async function waitForPendingSSEWrite(pendingKey: string): Promise<void> {
|
|
76
|
-
const pending = pendingSSEWrites.get(pendingKey)
|
|
77
|
-
if (!pending) {
|
|
78
|
-
return
|
|
79
|
-
}
|
|
80
|
-
await pending.catch(() => undefined)
|
|
81
|
-
}
|
|
82
|
-
|
|
83
45
|
async function tryDevFsLogsWrite(cacheId: string, data: unknown): Promise<boolean> {
|
|
84
46
|
return _internalFetch(`http://localhost:${DEV_FS_LOGS_PORT}/cache`, {
|
|
85
47
|
method: "POST",
|
|
@@ -106,7 +68,8 @@ async function tryDevFsLogsRead(cacheId: string): Promise<unknown | null> {
|
|
|
106
68
|
.catch(() => null)
|
|
107
69
|
}
|
|
108
70
|
|
|
109
|
-
function ensureCacheDir(
|
|
71
|
+
function ensureCacheDir(cacheKey: string): string {
|
|
72
|
+
const baseDir = getCacheDir()
|
|
110
73
|
const cacheDir = join(baseDir, cacheKey)
|
|
111
74
|
if (!existsSync(cacheDir)) {
|
|
112
75
|
try {
|
|
@@ -124,13 +87,6 @@ function ensureCacheDir(baseDir: string, cacheKey: string): string {
|
|
|
124
87
|
return cacheDir
|
|
125
88
|
}
|
|
126
89
|
|
|
127
|
-
function requireFilesystemBaseDir(baseDir: string | undefined): string {
|
|
128
|
-
if (baseDir === undefined) {
|
|
129
|
-
throw new Error("Filesystem cache directory is required when no custom storage is provided")
|
|
130
|
-
}
|
|
131
|
-
return baseDir
|
|
132
|
-
}
|
|
133
|
-
|
|
134
90
|
function writeJsonFile(filePath: string, data: unknown): void {
|
|
135
91
|
writeFileSync(filePath, JSON.stringify(data, null, 2), "utf-8")
|
|
136
92
|
}
|
|
@@ -200,8 +156,7 @@ export async function storeRequest(
|
|
|
200
156
|
await storage.requests.set(key, request)
|
|
201
157
|
} else {
|
|
202
158
|
// Legacy filesystem path
|
|
203
|
-
const
|
|
204
|
-
const cacheDir = ensureCacheDir(baseDir, cacheKey)
|
|
159
|
+
const cacheDir = ensureCacheDir(cacheKey)
|
|
205
160
|
const requestPath = join(cacheDir, "request.json")
|
|
206
161
|
writeJsonFile(requestPath, request)
|
|
207
162
|
}
|
|
@@ -219,7 +174,6 @@ export async function storeResponse(
|
|
|
219
174
|
hashableRequest?: HashableRequest
|
|
220
175
|
): Promise<Response> {
|
|
221
176
|
const key: CacheKey = hashableRequest ? [cacheKey, hashableRequest] : [cacheKey]
|
|
222
|
-
const filesystemBaseDir = storage ? undefined : getCacheDir()
|
|
223
177
|
const startTime = Date.now()
|
|
224
178
|
const headers = headersToRecord(response.headers)
|
|
225
179
|
const contentType = headers["content-type"] ?? ""
|
|
@@ -242,7 +196,7 @@ export async function storeResponse(
|
|
|
242
196
|
if (storage) {
|
|
243
197
|
await storage.responseMeta.set(key, meta)
|
|
244
198
|
} else {
|
|
245
|
-
const cacheDir = ensureCacheDir(
|
|
199
|
+
const cacheDir = ensureCacheDir(cacheKey)
|
|
246
200
|
const metaPath = join(cacheDir, "response.meta.json")
|
|
247
201
|
writeJsonFile(metaPath, meta)
|
|
248
202
|
}
|
|
@@ -267,7 +221,7 @@ export async function storeResponse(
|
|
|
267
221
|
await storage.responseMeta.set(key, binaryMeta)
|
|
268
222
|
await storage.binaryBody.set(key, data)
|
|
269
223
|
} else {
|
|
270
|
-
const cacheDir = ensureCacheDir(
|
|
224
|
+
const cacheDir = ensureCacheDir(cacheKey)
|
|
271
225
|
const binPath = join(cacheDir, "response.bin")
|
|
272
226
|
writeBinaryFile(binPath, data)
|
|
273
227
|
const metaPath = join(cacheDir, "response.meta.json")
|
|
@@ -283,32 +237,26 @@ export async function storeResponse(
|
|
|
283
237
|
|
|
284
238
|
if (isSSE) {
|
|
285
239
|
const [recordStream, returnStream] = response.body.tee()
|
|
286
|
-
const
|
|
287
|
-
|
|
288
|
-
const sseMeta: CachedResponseMeta = {
|
|
289
|
-
...meta,
|
|
290
|
-
total_ms: Date.now() - startTime
|
|
291
|
-
}
|
|
240
|
+
const chunks = await recordStreamWithTiming(recordStream)
|
|
241
|
+
meta.total_ms = Date.now() - startTime
|
|
292
242
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
})()
|
|
311
|
-
trackPendingSSEWrite(getPendingSSEWriteKey(cacheKey, storage, filesystemBaseDir), persistPromise)
|
|
243
|
+
if (storage) {
|
|
244
|
+
await storage.responseMeta.set(key, meta)
|
|
245
|
+
await storage.sseChunks.set(key, chunks)
|
|
246
|
+
} else {
|
|
247
|
+
const cacheDir = ensureCacheDir(cacheKey)
|
|
248
|
+
const jsonlPath = join(cacheDir, "response.jsonl")
|
|
249
|
+
const assetsDir = join(cacheDir, "response.jsonl.assets")
|
|
250
|
+
let jsonlContent = timedChunksToJsonl(chunks)
|
|
251
|
+
const { content: extractedContent } = extractDataUrls(jsonlContent, assetsDir)
|
|
252
|
+
jsonlContent = extractedContent
|
|
253
|
+
writeTextFile(jsonlPath, jsonlContent)
|
|
254
|
+
|
|
255
|
+
const metaPath = join(cacheDir, "response.meta.json")
|
|
256
|
+
writeJsonFile(metaPath, meta)
|
|
257
|
+
}
|
|
258
|
+
await tryDevFsLogsWrite(`${cacheKey}/meta`, meta)
|
|
259
|
+
await tryDevFsLogsWrite(`${cacheKey}/sse`, chunks)
|
|
312
260
|
|
|
313
261
|
return new Response(returnStream, {
|
|
314
262
|
status: response.status,
|
|
@@ -330,7 +278,7 @@ export async function storeResponse(
|
|
|
330
278
|
await storage.responseMeta.set(key, transformedResponse.meta)
|
|
331
279
|
await storage.responseBody.set(key, transformedResponse.body ?? "")
|
|
332
280
|
} else {
|
|
333
|
-
const cacheDir = ensureCacheDir(
|
|
281
|
+
const cacheDir = ensureCacheDir(cacheKey)
|
|
334
282
|
const jsonPath = join(cacheDir, "response.json")
|
|
335
283
|
const assetsDir = join(cacheDir, "response.json.assets")
|
|
336
284
|
const { content: extractedContent } = extractDataUrls(transformedResponse.body ?? "", assetsDir)
|
|
@@ -359,8 +307,6 @@ export async function getCachedResponse(
|
|
|
359
307
|
storage?: CacheStorage
|
|
360
308
|
): Promise<Response | null> {
|
|
361
309
|
const key: CacheKey = [cacheKey]
|
|
362
|
-
const filesystemBaseDir = storage ? undefined : getCacheDir()
|
|
363
|
-
const pendingWriteKey = getPendingSSEWriteKey(cacheKey, storage, filesystemBaseDir)
|
|
364
310
|
|
|
365
311
|
// Try to get response metadata
|
|
366
312
|
let responseMeta: CachedResponseMeta | null = null
|
|
@@ -368,7 +314,7 @@ export async function getCachedResponse(
|
|
|
368
314
|
if (storage) {
|
|
369
315
|
responseMeta = await storage.responseMeta.get(key)
|
|
370
316
|
} else {
|
|
371
|
-
const cacheDir = join(
|
|
317
|
+
const cacheDir = join(getCacheDir(), cacheKey)
|
|
372
318
|
const metaPath = join(cacheDir, "response.meta.json")
|
|
373
319
|
responseMeta = readJsonFile<CachedResponseMeta>(metaPath)
|
|
374
320
|
|
|
@@ -385,29 +331,6 @@ export async function getCachedResponse(
|
|
|
385
331
|
}
|
|
386
332
|
}
|
|
387
333
|
|
|
388
|
-
if (!responseMeta) {
|
|
389
|
-
await waitForPendingSSEWrite(pendingWriteKey)
|
|
390
|
-
if (storage) {
|
|
391
|
-
responseMeta = await storage.responseMeta.get(key)
|
|
392
|
-
} else {
|
|
393
|
-
const cacheDir = join(requireFilesystemBaseDir(filesystemBaseDir), cacheKey)
|
|
394
|
-
const metaPath = join(cacheDir, "response.meta.json")
|
|
395
|
-
responseMeta = readJsonFile<CachedResponseMeta>(metaPath)
|
|
396
|
-
|
|
397
|
-
// For non-streaming responses, metadata is stored inside response.json
|
|
398
|
-
if (!responseMeta) {
|
|
399
|
-
const jsonPath = join(cacheDir, "response.json")
|
|
400
|
-
const cached = readJsonFile<{
|
|
401
|
-
body: string
|
|
402
|
-
meta: CachedResponseMeta
|
|
403
|
-
}>(jsonPath)
|
|
404
|
-
if (cached?.meta) {
|
|
405
|
-
responseMeta = cached.meta
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
|
|
411
334
|
if (!responseMeta) {
|
|
412
335
|
const devFsMeta = (await tryDevFsLogsRead(`${cacheKey}/meta`)) as CachedResponseMeta | null
|
|
413
336
|
if (!devFsMeta) {
|
|
@@ -424,7 +347,7 @@ export async function getCachedResponse(
|
|
|
424
347
|
if (storage) {
|
|
425
348
|
data = await storage.binaryBody.get(key)
|
|
426
349
|
} else {
|
|
427
|
-
const cacheDir = join(
|
|
350
|
+
const cacheDir = join(getCacheDir(), cacheKey)
|
|
428
351
|
const binPath = join(cacheDir, "response.bin")
|
|
429
352
|
data = readBinaryFile(binPath)
|
|
430
353
|
}
|
|
@@ -480,7 +403,7 @@ export async function getCachedResponse(
|
|
|
480
403
|
}
|
|
481
404
|
|
|
482
405
|
// Legacy filesystem path
|
|
483
|
-
const cacheDir = join(
|
|
406
|
+
const cacheDir = join(getCacheDir(), cacheKey)
|
|
484
407
|
const jsonlPath = join(cacheDir, "response.jsonl")
|
|
485
408
|
const assetsDir = join(cacheDir, "response.jsonl.assets")
|
|
486
409
|
let jsonlContent = readTextFile(jsonlPath)
|
|
@@ -520,7 +443,7 @@ export async function getCachedResponse(
|
|
|
520
443
|
if (storage) {
|
|
521
444
|
body = await storage.responseBody.get(key)
|
|
522
445
|
} else {
|
|
523
|
-
const cacheDir = join(
|
|
446
|
+
const cacheDir = join(getCacheDir(), cacheKey)
|
|
524
447
|
const jsonPath = join(cacheDir, "response.json")
|
|
525
448
|
const assetsDir = join(cacheDir, "response.json.assets")
|
|
526
449
|
const cached = readJsonFile<{
|