react-native-nitro-fetch 1.3.0 → 1.3.1

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.
Files changed (48) hide show
  1. package/android/src/main/java/com/margelo/nitro/nitrofetch/AutoPrefetcher.kt +114 -31
  2. package/android/src/main/java/com/margelo/nitro/nitrofetch/NitroFetchClient.kt +4 -4
  3. package/ios/NitroAutoPrefetcher.h +21 -0
  4. package/ios/NitroAutoPrefetcher.swift +149 -27
  5. package/ios/NitroFetchClient.swift +4 -3
  6. package/lib/module/CurlGenerator.js.map +1 -1
  7. package/lib/module/HermesProfiler.js.map +2 -1
  8. package/lib/module/NetworkInspector.js +0 -4
  9. package/lib/module/NetworkInspector.js.map +1 -1
  10. package/lib/module/NitroCronet.nitro.js.map +1 -1
  11. package/lib/module/NitroFetch.nitro.js.map +1 -0
  12. package/lib/module/NitroInstances.js.map +1 -1
  13. package/lib/module/Response.js +1 -3
  14. package/lib/module/Response.js.map +2 -1
  15. package/lib/module/fetch.js +23 -2
  16. package/lib/module/fetch.js.map +1 -1
  17. package/lib/module/index.js +1 -1
  18. package/lib/module/index.js.map +2 -1
  19. package/lib/module/index.web.js +1 -2
  20. package/lib/module/utf8.js.map +2 -1
  21. package/lib/typescript/src/NitroFetch.nitro.d.ts +1 -0
  22. package/lib/typescript/src/NitroFetch.nitro.d.ts.map +1 -1
  23. package/lib/typescript/src/fetch.d.ts +4 -1
  24. package/lib/typescript/src/fetch.d.ts.map +1 -1
  25. package/lib/typescript/src/index.d.ts +1 -1
  26. package/lib/typescript/src/index.d.ts.map +1 -1
  27. package/nitrogen/generated/android/c++/JNitroRequest.hpp +5 -1
  28. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrofetch/NitroRequest.kt +5 -2
  29. package/nitrogen/generated/ios/swift/NitroRequest.swift +19 -1
  30. package/nitrogen/generated/shared/c++/NitroRequest.hpp +5 -1
  31. package/package.json +1 -1
  32. package/src/CurlGenerator.js +31 -0
  33. package/src/Headers.js +127 -0
  34. package/src/HermesProfiler.js +22 -0
  35. package/src/NetworkInspector.js +183 -0
  36. package/src/NitroCronet.nitro.js +1 -0
  37. package/src/NitroFetch.nitro.js +1 -0
  38. package/src/NitroFetch.nitro.ts +3 -0
  39. package/src/NitroInstances.js +6 -0
  40. package/src/Request.js +173 -0
  41. package/src/Response.js +258 -0
  42. package/src/fetch.js +772 -0
  43. package/src/fetch.ts +43 -4
  44. package/src/index.js +10 -0
  45. package/src/index.tsx +1 -0
  46. package/src/index.web.js +104 -0
  47. package/src/tokenRefresh.js +104 -0
  48. package/src/utf8.js +40 -0
@@ -31,9 +31,21 @@ object AutoPrefetcher {
31
31
  context: Context,
32
32
  url: String,
33
33
  prefetchKey: String,
34
- headers: Map<String, String> = emptyMap()
34
+ headers: Map<String, String> = emptyMap(),
35
+ method: String? = null,
36
+ bodyString: String? = null,
37
+ bodyBytes: String? = null,
38
+ bodyFormData: List<Map<String, String?>>? = null,
39
+ timeoutMs: Double? = null,
40
+ followRedirects: Boolean? = null,
41
+ prefetchCacheTtlMs: Double? = null,
35
42
  ) {
36
43
  if (url.isEmpty() || prefetchKey.isEmpty()) return
44
+ val entry = buildEntryJson(
45
+ url, prefetchKey, headers,
46
+ method, bodyString, bodyBytes, bodyFormData, timeoutMs, followRedirects,
47
+ prefetchCacheTtlMs
48
+ )
37
49
  try {
38
50
  val prefs = context.applicationContext
39
51
  .getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
@@ -46,14 +58,6 @@ object AutoPrefetcher {
46
58
  if (o.optString("prefetchKey", "") == prefetchKey) continue
47
59
  next.put(o)
48
60
  }
49
-
50
- val headersObj = JSONObject()
51
- headers.forEach { (k, v) -> headersObj.put(k, v) }
52
- val entry = JSONObject().apply {
53
- put("url", url)
54
- put("prefetchKey", prefetchKey)
55
- put("headers", headersObj)
56
- }
57
61
  next.put(entry)
58
62
  prefs.edit().putString(KEY_QUEUE, next.toString()).apply()
59
63
  } catch (_: Throwable) {
@@ -73,15 +77,7 @@ object AutoPrefetcher {
73
77
  } catch (_: Throwable) { emptyMap() }
74
78
  } else emptyMap()
75
79
 
76
- val single = JSONArray().apply {
77
- val headersObj = JSONObject()
78
- headers.forEach { (k, v) -> headersObj.put(k, v) }
79
- put(JSONObject().apply {
80
- put("url", url)
81
- put("prefetchKey", prefetchKey)
82
- put("headers", headersObj)
83
- })
84
- }
80
+ val single = JSONArray().apply { put(entry) }
85
81
  startPrefetches(single, tokenHeaders)
86
82
  } catch (_: Throwable) {}
87
83
  }
@@ -169,21 +165,13 @@ object AutoPrefetcher {
169
165
 
170
166
  android.util.Log.d("NitroFetch", "[TokenRefresh] Prefetching $url with ${merged.size} header(s)")
171
167
  merged.forEach { (k, v) -> android.util.Log.d("NitroFetch", "[TokenRefresh] $k: $v") }
172
- val headerObjs = merged.map { (k, v) -> NitroHeader(k, v) }.toTypedArray()
173
- val req = NitroRequest(
174
- url = url,
175
- method = null,
176
- headers = headerObjs,
177
- bodyString = null,
178
- bodyBytes = null,
179
- bodyFormData = null,
180
- timeoutMs = null,
181
- followRedirects = null,
182
- requestId = null
183
- )
168
+ val req = buildNitroRequestFromEntry(url, merged, o)
184
169
 
185
170
  if (FetchCache.getPending(prefetchKey) != null) continue
186
- if (FetchCache.hasFreshResult(prefetchKey, 5_000L)) continue
171
+ val entryTtlMs = if (o.has("prefetchCacheTtlMs") && !o.isNull("prefetchCacheTtlMs")) {
172
+ o.optDouble("prefetchCacheTtlMs").toLong()
173
+ } else 5_000L
174
+ if (FetchCache.hasFreshResult(prefetchKey, entryTtlMs)) continue
187
175
 
188
176
  val future = CompletableFuture<NitroResponse>()
189
177
  FetchCache.setPending(prefetchKey, future)
@@ -205,6 +193,101 @@ object AutoPrefetcher {
205
193
  }
206
194
  }
207
195
 
196
+ private fun buildEntryJson(
197
+ url: String,
198
+ prefetchKey: String,
199
+ headers: Map<String, String>,
200
+ method: String?,
201
+ bodyString: String?,
202
+ bodyBytes: String?,
203
+ bodyFormData: List<Map<String, String?>>?,
204
+ timeoutMs: Double?,
205
+ followRedirects: Boolean?,
206
+ prefetchCacheTtlMs: Double? = null,
207
+ ): JSONObject {
208
+ val headersObj = JSONObject()
209
+ headers.forEach { (k, v) -> headersObj.put(k, v) }
210
+ return JSONObject().apply {
211
+ put("url", url)
212
+ put("prefetchKey", prefetchKey)
213
+ put("headers", headersObj)
214
+ if (method != null && method.isNotEmpty() && method != "GET") put("method", method)
215
+ if (bodyString != null) put("bodyString", bodyString)
216
+ if (bodyBytes != null) put("bodyBytes", bodyBytes)
217
+ if (!bodyFormData.isNullOrEmpty()) {
218
+ val arr = JSONArray()
219
+ bodyFormData.forEach { part ->
220
+ val obj = JSONObject()
221
+ part["name"]?.let { obj.put("name", it) }
222
+ part["value"]?.let { obj.put("value", it) }
223
+ part["fileUri"]?.let { obj.put("fileUri", it) }
224
+ part["fileName"]?.let { obj.put("fileName", it) }
225
+ part["mimeType"]?.let { obj.put("mimeType", it) }
226
+ arr.put(obj)
227
+ }
228
+ put("bodyFormData", arr)
229
+ }
230
+ if (timeoutMs != null) put("timeoutMs", timeoutMs)
231
+ if (followRedirects == false) put("followRedirects", false)
232
+ if (prefetchCacheTtlMs != null) put("prefetchCacheTtlMs", prefetchCacheTtlMs)
233
+ }
234
+ }
235
+
236
+ private fun buildNitroRequestFromEntry(
237
+ url: String,
238
+ mergedHeaders: Map<String, String>,
239
+ entry: JSONObject?,
240
+ ): NitroRequest {
241
+ val headerObjs = mergedHeaders.map { (k, v) -> NitroHeader(k, v) }.toTypedArray()
242
+
243
+ val methodStr = entry?.optString("method", "")?.takeIf { it.isNotEmpty() }
244
+ val method: NitroRequestMethod? = methodStr?.let {
245
+ runCatching { NitroRequestMethod.valueOf(it) }.getOrNull()
246
+ }
247
+ val bodyString = entry
248
+ ?.takeIf { it.has("bodyString") && !it.isNull("bodyString") }
249
+ ?.optString("bodyString")
250
+ val bodyBytes = entry
251
+ ?.takeIf { it.has("bodyBytes") && !it.isNull("bodyBytes") }
252
+ ?.optString("bodyBytes")
253
+ val timeoutMs = entry
254
+ ?.takeIf { it.has("timeoutMs") && !it.isNull("timeoutMs") }
255
+ ?.optDouble("timeoutMs")
256
+ val followRedirects = entry
257
+ ?.takeIf { it.has("followRedirects") && !it.isNull("followRedirects") }
258
+ ?.optBoolean("followRedirects")
259
+ val prefetchCacheTtlMs = entry
260
+ ?.takeIf { it.has("prefetchCacheTtlMs") && !it.isNull("prefetchCacheTtlMs") }
261
+ ?.optDouble("prefetchCacheTtlMs")
262
+
263
+ val formArr = entry?.optJSONArray("bodyFormData")
264
+ val bodyFormData: Array<NitroFormDataPart>? = formArr?.let { ja ->
265
+ Array(ja.length()) { i ->
266
+ val p = ja.optJSONObject(i) ?: JSONObject()
267
+ NitroFormDataPart(
268
+ name = p.optString("name", ""),
269
+ value = if (p.has("value") && !p.isNull("value")) p.optString("value") else null,
270
+ fileUri = if (p.has("fileUri") && !p.isNull("fileUri")) p.optString("fileUri") else null,
271
+ fileName = if (p.has("fileName") && !p.isNull("fileName")) p.optString("fileName") else null,
272
+ mimeType = if (p.has("mimeType") && !p.isNull("mimeType")) p.optString("mimeType") else null
273
+ )
274
+ }
275
+ }
276
+
277
+ return NitroRequest(
278
+ url = url,
279
+ method = method,
280
+ headers = headerObjs,
281
+ bodyString = bodyString,
282
+ bodyBytes = bodyBytes,
283
+ bodyFormData = bodyFormData,
284
+ timeoutMs = timeoutMs,
285
+ followRedirects = followRedirects,
286
+ prefetchCacheTtlMs = prefetchCacheTtlMs,
287
+ requestId = null
288
+ )
289
+ }
290
+
208
291
  // MARK: - Token refresh (synchronous, runs on background thread)
209
292
 
210
293
  private fun callTokenRefreshSync(config: JSONObject): Map<String, String>? {
@@ -403,7 +403,7 @@ class NitroFetchClient(private val engine: CronetEngine, private val executor: E
403
403
  throw e.cause ?: e
404
404
  }
405
405
  }
406
- FetchCache.getResultIfFresh(key, 5_000L)?.let { cached ->
406
+ FetchCache.getResultIfFresh(key, req.prefetchCacheTtlMs?.toLong() ?: 5_000L)?.let { cached ->
407
407
  return withPrefetchedHeader(cached)
408
408
  }
409
409
  }
@@ -445,8 +445,8 @@ class NitroFetchClient(private val engine: CronetEngine, private val executor: E
445
445
  }
446
446
  return promise
447
447
  }
448
- // If a fresh prefetched result exists (<=5s old), return it immediately
449
- FetchCache.getResultIfFresh(key, 5_000L)?.let { cached ->
448
+ // If a fresh prefetched result exists, return it immediately
449
+ FetchCache.getResultIfFresh(key, req.prefetchCacheTtlMs?.toLong() ?: 5_000L)?.let { cached ->
450
450
  promise.resolve(withPrefetchedHeader(cached))
451
451
  return promise
452
452
  }
@@ -479,7 +479,7 @@ class NitroFetchClient(private val engine: CronetEngine, private val executor: E
479
479
  return promise
480
480
  }
481
481
  // If already have a fresh result, resolve immediately (NON-DESTRUCTIVE CHECK)
482
- if (FetchCache.hasFreshResult(key, 5_000L)) {
482
+ if (FetchCache.hasFreshResult(key, req.prefetchCacheTtlMs?.toLong() ?: 5_000L)) {
483
483
  promise.resolve(Unit)
484
484
  return promise
485
485
  }
@@ -20,6 +20,27 @@ NS_ASSUME_NONNULL_BEGIN
20
20
  prefetchKey:(NSString *)prefetchKey
21
21
  headers:(NSDictionary<NSString *, NSString *> *)headers;
22
22
 
23
+ + (void)registerPrefetchWithURL:(NSString *)url
24
+ prefetchKey:(NSString *)prefetchKey
25
+ headers:(NSDictionary<NSString *, NSString *> *)headers
26
+ method:(nullable NSString *)method
27
+ bodyString:(nullable NSString *)bodyString
28
+ bodyBytes:(nullable NSString *)bodyBytes
29
+ bodyFormData:(nullable NSArray<NSDictionary<NSString *, NSString *> *> *)bodyFormData
30
+ timeoutMs:(nullable NSNumber *)timeoutMs
31
+ followRedirects:(nullable NSNumber *)followRedirects;
32
+
33
+ + (void)registerPrefetchWithURL:(NSString *)url
34
+ prefetchKey:(NSString *)prefetchKey
35
+ headers:(NSDictionary<NSString *, NSString *> *)headers
36
+ method:(nullable NSString *)method
37
+ bodyString:(nullable NSString *)bodyString
38
+ bodyBytes:(nullable NSString *)bodyBytes
39
+ bodyFormData:(nullable NSArray<NSDictionary<NSString *, NSString *> *> *)bodyFormData
40
+ timeoutMs:(nullable NSNumber *)timeoutMs
41
+ followRedirects:(nullable NSNumber *)followRedirects
42
+ prefetchCacheTtlMs:(nullable NSNumber *)prefetchCacheTtlMs;
43
+
23
44
  @end
24
45
 
25
46
  NS_ASSUME_NONNULL_END
@@ -20,8 +20,80 @@ public final class NitroAutoPrefetcher: NSObject {
20
20
  url: String,
21
21
  prefetchKey: String,
22
22
  headers: [String: String]
23
+ ) {
24
+ registerPrefetchInternal(
25
+ url: url, prefetchKey: prefetchKey, headers: headers,
26
+ method: nil, bodyString: nil, bodyBytes: nil,
27
+ bodyFormData: nil, timeoutMs: nil, followRedirects: nil,
28
+ prefetchCacheTtlMs: nil
29
+ )
30
+ }
31
+
32
+ @objc(registerPrefetchWithURL:prefetchKey:headers:method:bodyString:bodyBytes:bodyFormData:timeoutMs:followRedirects:)
33
+ public static func registerPrefetch(
34
+ url: String,
35
+ prefetchKey: String,
36
+ headers: [String: String],
37
+ method: String?,
38
+ bodyString: String?,
39
+ bodyBytes: String?,
40
+ bodyFormData: [[String: String]]?,
41
+ timeoutMs: NSNumber?,
42
+ followRedirects: NSNumber?
43
+ ) {
44
+ registerPrefetchInternal(
45
+ url: url, prefetchKey: prefetchKey, headers: headers,
46
+ method: method, bodyString: bodyString, bodyBytes: bodyBytes,
47
+ bodyFormData: bodyFormData,
48
+ timeoutMs: timeoutMs?.doubleValue,
49
+ followRedirects: followRedirects?.boolValue,
50
+ prefetchCacheTtlMs: nil
51
+ )
52
+ }
53
+
54
+ @objc(registerPrefetchWithURL:prefetchKey:headers:method:bodyString:bodyBytes:bodyFormData:timeoutMs:followRedirects:prefetchCacheTtlMs:)
55
+ public static func registerPrefetch(
56
+ url: String,
57
+ prefetchKey: String,
58
+ headers: [String: String],
59
+ method: String?,
60
+ bodyString: String?,
61
+ bodyBytes: String?,
62
+ bodyFormData: [[String: String]]?,
63
+ timeoutMs: NSNumber?,
64
+ followRedirects: NSNumber?,
65
+ prefetchCacheTtlMs: NSNumber?
66
+ ) {
67
+ registerPrefetchInternal(
68
+ url: url, prefetchKey: prefetchKey, headers: headers,
69
+ method: method, bodyString: bodyString, bodyBytes: bodyBytes,
70
+ bodyFormData: bodyFormData,
71
+ timeoutMs: timeoutMs?.doubleValue,
72
+ followRedirects: followRedirects?.boolValue,
73
+ prefetchCacheTtlMs: prefetchCacheTtlMs?.doubleValue
74
+ )
75
+ }
76
+
77
+ private static func registerPrefetchInternal(
78
+ url: String,
79
+ prefetchKey: String,
80
+ headers: [String: String],
81
+ method: String?,
82
+ bodyString: String?,
83
+ bodyBytes: String?,
84
+ bodyFormData: [[String: String]]?,
85
+ timeoutMs: Double?,
86
+ followRedirects: Bool?,
87
+ prefetchCacheTtlMs: Double?
23
88
  ) {
24
89
  if url.isEmpty || prefetchKey.isEmpty { return }
90
+ let entry = buildEntryDict(
91
+ url: url, prefetchKey: prefetchKey, headers: headers,
92
+ method: method, bodyString: bodyString, bodyBytes: bodyBytes,
93
+ bodyFormData: bodyFormData, timeoutMs: timeoutMs,
94
+ followRedirects: followRedirects,
95
+ prefetchCacheTtlMs: prefetchCacheTtlMs
96
+ )
25
97
  let userDefaults = UserDefaults(suiteName: suiteName) ?? UserDefaults.standard
26
98
 
27
99
  var arr: [[String: Any]] = []
@@ -32,11 +104,7 @@ public final class NitroAutoPrefetcher: NSObject {
32
104
  arr = parsed
33
105
  }
34
106
  arr.removeAll { ($0["prefetchKey"] as? String) == prefetchKey }
35
- arr.append([
36
- "url": url,
37
- "prefetchKey": prefetchKey,
38
- "headers": headers,
39
- ])
107
+ arr.append(entry)
40
108
  if let data = try? JSONSerialization.data(withJSONObject: arr),
41
109
  let str = String(data: data, encoding: .utf8) {
42
110
  userDefaults.set(str, forKey: queueKey)
@@ -55,17 +123,7 @@ public final class NitroAutoPrefetcher: NSObject {
55
123
  for (k, v) in tokenHeaders { merged[k] = v }
56
124
  var hdrs: [NitroHeader] = merged.map { NitroHeader(key: $0.key, value: $0.value) }
57
125
  hdrs.append(NitroHeader(key: "prefetchKey", value: prefetchKey))
58
- let req = NitroRequest(
59
- url: url,
60
- method: nil,
61
- headers: hdrs,
62
- bodyString: nil,
63
- bodyBytes: nil,
64
- bodyFormData: nil,
65
- timeoutMs: nil,
66
- followRedirects: true,
67
- requestId: nil
68
- )
126
+ let req = buildNitroRequest(from: entry, mergedHeaders: hdrs)
69
127
  Task {
70
128
  do { try await NitroFetchClient.prefetchStatic(req) } catch { /* best-effort */ }
71
129
  }
@@ -143,17 +201,7 @@ public final class NitroAutoPrefetcher: NSObject {
143
201
  print("[NitroFetch][TokenRefresh] Prefetching \(url) with \(merged.count) header(s)")
144
202
  for (k, v) in merged { print("[NitroFetch][TokenRefresh] \(k): \(v)") }
145
203
 
146
- let req = NitroRequest(
147
- url: url,
148
- method: nil,
149
- headers: headers,
150
- bodyString: nil,
151
- bodyBytes: nil,
152
- bodyFormData: nil,
153
- timeoutMs: nil,
154
- followRedirects: true,
155
- requestId: nil
156
- )
204
+ let req = buildNitroRequest(from: obj, mergedHeaders: headers)
157
205
  Task {
158
206
  do { try await NitroFetchClient.prefetchStatic(req) } catch { /* ignore – best effort */ }
159
207
  }
@@ -161,6 +209,80 @@ public final class NitroAutoPrefetcher: NSObject {
161
209
  }
162
210
  }
163
211
 
212
+ private static func buildEntryDict(
213
+ url: String,
214
+ prefetchKey: String,
215
+ headers: [String: String],
216
+ method: String?,
217
+ bodyString: String?,
218
+ bodyBytes: String?,
219
+ bodyFormData: [[String: String]]?,
220
+ timeoutMs: Double?,
221
+ followRedirects: Bool?,
222
+ prefetchCacheTtlMs: Double? = nil
223
+ ) -> [String: Any] {
224
+ var entry: [String: Any] = [
225
+ "url": url,
226
+ "prefetchKey": prefetchKey,
227
+ "headers": headers,
228
+ ]
229
+ if let method = method, !method.isEmpty, method != "GET" { entry["method"] = method }
230
+ if let bodyString = bodyString { entry["bodyString"] = bodyString }
231
+ if let bodyBytes = bodyBytes { entry["bodyBytes"] = bodyBytes }
232
+ if let parts = bodyFormData, !parts.isEmpty {
233
+ entry["bodyFormData"] = parts.map { part -> [String: String] in
234
+ var clean: [String: String] = [:]
235
+ if let v = part["name"] { clean["name"] = v }
236
+ if let v = part["value"] { clean["value"] = v }
237
+ if let v = part["fileUri"] { clean["fileUri"] = v }
238
+ if let v = part["fileName"] { clean["fileName"] = v }
239
+ if let v = part["mimeType"] { clean["mimeType"] = v }
240
+ return clean
241
+ }
242
+ }
243
+ if let timeoutMs = timeoutMs { entry["timeoutMs"] = timeoutMs }
244
+ if followRedirects == false { entry["followRedirects"] = false }
245
+ if let prefetchCacheTtlMs = prefetchCacheTtlMs { entry["prefetchCacheTtlMs"] = prefetchCacheTtlMs }
246
+ return entry
247
+ }
248
+
249
+ private static func buildNitroRequest(
250
+ from entry: [String: Any],
251
+ mergedHeaders: [NitroHeader]
252
+ ) -> NitroRequest {
253
+ let url = (entry["url"] as? String) ?? ""
254
+ let methodStr = entry["method"] as? String
255
+ let method: NitroRequestMethod? = methodStr.flatMap { NitroRequestMethod(fromString: $0) }
256
+ let bodyString = entry["bodyString"] as? String
257
+ let bodyBytes = entry["bodyBytes"] as? String
258
+ let timeoutMs = (entry["timeoutMs"] as? NSNumber)?.doubleValue
259
+ let followRedirects = (entry["followRedirects"] as? Bool) ?? true
260
+ let prefetchCacheTtlMs = (entry["prefetchCacheTtlMs"] as? NSNumber)?.doubleValue
261
+
262
+ let formData: [NitroFormDataPart]? = (entry["bodyFormData"] as? [[String: Any]])?.map { p in
263
+ NitroFormDataPart(
264
+ name: (p["name"] as? String) ?? "",
265
+ value: p["value"] as? String,
266
+ fileUri: p["fileUri"] as? String,
267
+ fileName: p["fileName"] as? String,
268
+ mimeType: p["mimeType"] as? String
269
+ )
270
+ }
271
+
272
+ return NitroRequest(
273
+ url: url,
274
+ method: method,
275
+ headers: mergedHeaders,
276
+ bodyString: bodyString,
277
+ bodyBytes: bodyBytes,
278
+ bodyFormData: formData,
279
+ timeoutMs: timeoutMs,
280
+ followRedirects: followRedirects,
281
+ prefetchCacheTtlMs: prefetchCacheTtlMs,
282
+ requestId: nil
283
+ )
284
+ }
285
+
164
286
  // MARK: - Token refresh
165
287
 
166
288
  private static func callTokenRefresh(config: [String: Any]) async throws -> [String: String] {
@@ -119,7 +119,7 @@ final class NitroFetchClient: HybridNitroFetchClientSpec {
119
119
  public class func requestStatic(_ req: NitroRequest) async throws -> NitroResponse {
120
120
  if let key = findPrefetchKey(req) {
121
121
  // If a prefetched result is fresh, return immediately
122
- if let cached = FetchCache.getResultIfFresh(key, maxAgeMs: 5_000) {
122
+ if let cached = FetchCache.getResultIfFresh(key, maxAgeMs: Int64(req.prefetchCacheTtlMs ?? 5_000)) {
123
123
  var headers = cached.headers ?? []
124
124
  headers.append(NitroHeader(key: "nitroPrefetched", value: "true"))
125
125
  return NitroResponse(url: cached.url,
@@ -267,7 +267,7 @@ final class NitroFetchClient: HybridNitroFetchClientSpec {
267
267
  throw NSError(domain: "NitroFetch", code: -2, userInfo: [NSLocalizedDescriptionKey: "prefetch: missing 'prefetchKey' header"])
268
268
  }
269
269
 
270
- if FetchCache.getResultIfFresh(key, maxAgeMs: 5_000) != nil {
270
+ if FetchCache.getResultIfFresh(key, maxAgeMs: Int64(req.prefetchCacheTtlMs ?? 5_000)) != nil {
271
271
  return // already have a fresh result
272
272
  }
273
273
 
@@ -310,7 +310,8 @@ final class NitroFetchClient: HybridNitroFetchClientSpec {
310
310
  }
311
311
  }
312
312
  }
313
-
313
+
314
+
314
315
  private static func reqToHttpMethod(_ req: NitroRequest) -> String? {
315
316
  return req.method?.stringValue
316
317
  }
@@ -1 +1 @@
1
- {"version":3,"names":["shellEscape","str","test","replace","generateCurl","options","parts","method","push","headers","h","key","toLowerCase","value","body","maxLen","truncated","length","slice","verbose","compressed","url","join"],"sourceRoot":"../../src","sources":["CurlGenerator.ts"],"mappings":";;AASA,SAASA,WAAWA,CAACC,GAAW,EAAU;EACxC,IAAI,0BAA0B,CAACC,IAAI,CAACD,GAAG,CAAC,EAAE,OAAOA,GAAG;EACpD,OAAO,GAAG,GAAGA,GAAG,CAACE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,GAAG;AAC/C;AAEA,OAAO,SAASC,YAAYA,CAACC,OAAoB,EAAU;EACzD,MAAMC,KAAe,GAAG,CAAC,MAAM,CAAC;EAEhC,IAAID,OAAO,CAACE,MAAM,IAAIF,OAAO,CAACE,MAAM,KAAK,KAAK,EAAE;IAC9CD,KAAK,CAACE,IAAI,CAAC,IAAI,EAAER,WAAW,CAACK,OAAO,CAACE,MAAM,CAAC,CAAC;EAC/C;EAEA,IAAIF,OAAO,CAACI,OAAO,EAAE;IACnB,KAAK,MAAMC,CAAC,IAAIL,OAAO,CAACI,OAAO,EAAE;MAC/B,IAAIC,CAAC,CAACC,GAAG,CAACC,WAAW,CAAC,CAAC,KAAK,aAAa,EAAE;MAC3CN,KAAK,CAACE,IAAI,CAAC,IAAI,EAAER,WAAW,CAAC,GAAGU,CAAC,CAACC,GAAG,KAAKD,CAAC,CAACG,KAAK,EAAE,CAAC,CAAC;IACvD;EACF;EAEA,IAAIR,OAAO,CAACS,IAAI,EAAE;IAChB,MAAMC,MAAM,GAAG,MAAM;IACrB,MAAMC,SAAS,GACbX,OAAO,CAACS,IAAI,CAACG,MAAM,GAAGF,MAAM,GACxBV,OAAO,CAACS,IAAI,CAACI,KAAK,CAAC,CAAC,EAAEH,MAAM,CAAC,GAAG,gBAAgB,GAChDV,OAAO,CAACS,IAAI;IAClBR,KAAK,CAACE,IAAI,CAAC,IAAI,EAAER,WAAW,CAACgB,SAAS,CAAC,CAAC;EAC1C;EAEA,IAAIX,OAAO,CAACc,OAAO,EAAEb,KAAK,CAACE,IAAI,CAAC,IAAI,CAAC;EACrC,IAAIH,OAAO,CAACe,UAAU,EAAEd,KAAK,CAACE,IAAI,CAAC,cAAc,CAAC;EAElDF,KAAK,CAACE,IAAI,CAACR,WAAW,CAACK,OAAO,CAACgB,GAAG,CAAC,CAAC;EAEpC,OAAOf,KAAK,CAACgB,IAAI,CAAC,GAAG,CAAC;AACxB","ignoreList":[]}
1
+ {"version":3,"names":["shellEscape","str","test","replace","generateCurl","options","parts","method","push","headers","h","key","toLowerCase","value","body","maxLen","truncated","length","slice","verbose","compressed","url","join"],"sourceRoot":"../../src","sources":["CurlGenerator.js"],"mappings":";;AAAA,SAASA,WAAWA,CAACC,GAAG,EAAE;EACtB,IAAI,0BAA0B,CAACC,IAAI,CAACD,GAAG,CAAC,EACpC,OAAOA,GAAG;EACd,OAAO,GAAG,GAAGA,GAAG,CAACE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,GAAG;AACjD;AACA,OAAO,SAASC,YAAYA,CAACC,OAAO,EAAE;EAClC,MAAMC,KAAK,GAAG,CAAC,MAAM,CAAC;EACtB,IAAID,OAAO,CAACE,MAAM,IAAIF,OAAO,CAACE,MAAM,KAAK,KAAK,EAAE;IAC5CD,KAAK,CAACE,IAAI,CAAC,IAAI,EAAER,WAAW,CAACK,OAAO,CAACE,MAAM,CAAC,CAAC;EACjD;EACA,IAAIF,OAAO,CAACI,OAAO,EAAE;IACjB,KAAK,MAAMC,CAAC,IAAIL,OAAO,CAACI,OAAO,EAAE;MAC7B,IAAIC,CAAC,CAACC,GAAG,CAACC,WAAW,CAAC,CAAC,KAAK,aAAa,EACrC;MACJN,KAAK,CAACE,IAAI,CAAC,IAAI,EAAER,WAAW,CAAC,GAAGU,CAAC,CAACC,GAAG,KAAKD,CAAC,CAACG,KAAK,EAAE,CAAC,CAAC;IACzD;EACJ;EACA,IAAIR,OAAO,CAACS,IAAI,EAAE;IACd,MAAMC,MAAM,GAAG,MAAM;IACrB,MAAMC,SAAS,GAAGX,OAAO,CAACS,IAAI,CAACG,MAAM,GAAGF,MAAM,GACxCV,OAAO,CAACS,IAAI,CAACI,KAAK,CAAC,CAAC,EAAEH,MAAM,CAAC,GAAG,gBAAgB,GAChDV,OAAO,CAACS,IAAI;IAClBR,KAAK,CAACE,IAAI,CAAC,IAAI,EAAER,WAAW,CAACgB,SAAS,CAAC,CAAC;EAC5C;EACA,IAAIX,OAAO,CAACc,OAAO,EACfb,KAAK,CAACE,IAAI,CAAC,IAAI,CAAC;EACpB,IAAIH,OAAO,CAACe,UAAU,EAClBd,KAAK,CAACE,IAAI,CAAC,cAAc,CAAC;EAC9BF,KAAK,CAACE,IAAI,CAACR,WAAW,CAACK,OAAO,CAACgB,GAAG,CAAC,CAAC;EACpC,OAAOf,KAAK,CAACgB,IAAI,CAAC,GAAG,CAAC;AAC1B","ignoreList":[]}
@@ -1 +1,2 @@
1
- {"version":3,"names":["profileFetch","fn","outputPath","hermes","global","HermesInternal","result","path","Date","now","enableSamplingProfiler","profilePath","disableSamplingProfiler","dumpSamplingProfiler"],"sourceRoot":"../../src","sources":["HermesProfiler.ts"],"mappings":";;AAaA,OAAO,eAAeA,YAAYA,CAChCC,EAAoB,EACpBC,UAAmB,EACQ;EAC3B,MAAMC,MAAM,GAAGC,MAAM,CAACC,cAAc;EACpC,IAAI,CAACF,MAAM,EAAE;IACX,MAAMG,MAAM,GAAG,MAAML,EAAE,CAAC,CAAC;IACzB,OAAO;MAAEK;IAAO,CAAC;EACnB;EAEA,MAAMC,IAAI,GAAGL,UAAU,IAAI,2BAA2BM,IAAI,CAACC,GAAG,CAAC,CAAC,aAAa;EAC7EN,MAAM,CAACO,sBAAsB,CAAC,CAAC;EAC/B,IAAI;IACF,MAAMJ,MAAM,GAAG,MAAML,EAAE,CAAC,CAAC;IACzB,OAAO;MAAEK,MAAM;MAAEK,WAAW,EAAEJ;IAAK,CAAC;EACtC,CAAC,SAAS;IACRJ,MAAM,CAACS,uBAAuB,CAAC,CAAC;IAChC,IAAI;MACFT,MAAM,CAACU,oBAAoB,CAACN,IAAI,CAAC;IACnC,CAAC,CAAC,MAAM;MACN;IAAA;EAEJ;AACF","ignoreList":[]}
1
+ {"version":3,"names":["profileFetch","fn","outputPath","hermes","global","HermesInternal","result","path","Date","now","enableSamplingProfiler","profilePath","disableSamplingProfiler","dumpSamplingProfiler"],"sourceRoot":"../../src","sources":["HermesProfiler.js"],"mappings":";;AAAA,OAAO,eAAeA,YAAYA,CAACC,EAAE,EAAEC,UAAU,EAAE;EAC/C,MAAMC,MAAM,GAAGC,MAAM,CAACC,cAAc;EACpC,IAAI,CAACF,MAAM,EAAE;IACT,MAAMG,MAAM,GAAG,MAAML,EAAE,CAAC,CAAC;IACzB,OAAO;MAAEK;IAAO,CAAC;EACrB;EACA,MAAMC,IAAI,GAAGL,UAAU,IAAI,2BAA2BM,IAAI,CAACC,GAAG,CAAC,CAAC,aAAa;EAC7EN,MAAM,CAACO,sBAAsB,CAAC,CAAC;EAC/B,IAAI;IACA,MAAMJ,MAAM,GAAG,MAAML,EAAE,CAAC,CAAC;IACzB,OAAO;MAAEK,MAAM;MAAEK,WAAW,EAAEJ;IAAK,CAAC;EACxC,CAAC,SACO;IACJJ,MAAM,CAACS,uBAAuB,CAAC,CAAC;IAChC,IAAI;MACAT,MAAM,CAACU,oBAAoB,CAACN,IAAI,CAAC;IACrC,CAAC,CACD,MAAM;MACF;IAAA;EAER;AACJ","ignoreList":[]}
2
+ []}
@@ -53,9 +53,7 @@ class NetworkInspectorImpl {
53
53
  this._entries.shift();
54
54
  }
55
55
  }
56
-
57
56
  // --- HTTP recording ---
58
-
59
57
  _recordStart(id, url, method, headers, body) {
60
58
  if (!this._enabled) return;
61
59
  const bodySize = body ? body.length : 0;
@@ -106,9 +104,7 @@ class NetworkInspectorImpl {
106
104
  }
107
105
  this._notify(entry);
108
106
  }
109
-
110
107
  // --- WebSocket recording ---
111
-
112
108
  _recordWsOpen(id, url, protocols, headers) {
113
109
  if (!this._enabled) return;
114
110
  const entry = {
@@ -1 +1 @@
1
- {"version":3,"names":["generateCurl","NetworkInspectorImpl","_enabled","_entries","_maxEntries","_maxBodyCapture","_listeners","Set","enable","options","maxEntries","maxBodyCapture","disable","isEnabled","getEntries","getHttpEntries","filter","e","type","getWebSocketEntries","getEntry","id","find","clear","onEntry","callback","add","delete","_notify","entry","cb","_trimEntries","length","shift","_recordStart","url","method","headers","body","bodySize","requestHeaders","map","h","key","value","requestBody","slice","undefined","requestBodySize","status","statusText","responseHeaders","responseBodySize","startTime","performance","now","endTime","duration","curl","push","_recordEnd","error","responseBody","_recordWsOpen","protocols","readyState","messages","messagesSent","messagesReceived","bytesSent","bytesReceived","_recordWsConnected","_recordWsMessage","direction","data","size","isBinary","timestamp","_recordWsClose","code","reason","closeCode","closeReason","_recordWsError","NetworkInspector"],"sourceRoot":"../../src","sources":["NetworkInspector.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["generateCurl","NetworkInspectorImpl","_enabled","_entries","_maxEntries","_maxBodyCapture","_listeners","Set","enable","options","maxEntries","maxBodyCapture","disable","isEnabled","getEntries","getHttpEntries","filter","e","type","getWebSocketEntries","getEntry","id","find","clear","onEntry","callback","add","delete","_notify","entry","cb","_trimEntries","length","shift","_recordStart","url","method","headers","body","bodySize","requestHeaders","map","h","key","value","requestBody","slice","undefined","requestBodySize","status","statusText","responseHeaders","responseBodySize","startTime","performance","now","endTime","duration","curl","push","_recordEnd","error","responseBody","_recordWsOpen","protocols","readyState","messages","messagesSent","messagesReceived","bytesSent","bytesReceived","_recordWsConnected","_recordWsMessage","direction","data","size","isBinary","timestamp","_recordWsClose","code","reason","closeCode","closeReason","_recordWsError","NetworkInspector"],"sourceRoot":"../../src","sources":["NetworkInspector.js"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../src","sources":["NitroCronet.nitro.ts"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["NitroCronet.nitro.js"],"mappings":";;AAAA","ignoreList":[]}
@@ -1 +1,2 @@
1
1
  {"version":3,"names":[],"sourceRoot":"../../src","sources":["NitroFetch.nitro.ts"],"mappings":"","ignoreList":[]}
2
+ ":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["NitroModules","NitroFetch","createHybridObject","NativeStorage","boxedNitroFetch","box","NitroCronetSingleton"],"sourceRoot":"../../src","sources":["NitroInstances.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,4BAA4B;AAOzD;AACA,OAAO,MAAMC,UAA0B,GACrCD,YAAY,CAACE,kBAAkB,CAAiB,YAAY,CAAC;AAE/D,OAAO,MAAMC,aAAgC,GAC3CH,YAAY,CAACE,kBAAkB,CAAoB,eAAe,CAAC;AAErE,OAAO,MAAME,eAAe,GAAGJ,YAAY,CAACK,GAAG,CAACJ,UAAU,CAAC;AAE3D,OAAO,MAAMK,oBAAoB,GAC/BN,YAAY,CAACE,kBAAkB,CAAc,aAAa,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["NitroModules","NitroFetch","createHybridObject","NativeStorage","boxedNitroFetch","box","NitroCronetSingleton"],"sourceRoot":"../../src","sources":["NitroInstances.js"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,4BAA4B;AACzD;AACA,OAAO,MAAMC,UAAU,GAAGD,YAAY,CAACE,kBAAkB,CAAC,YAAY,CAAC;AACvE,OAAO,MAAMC,aAAa,GAAGH,YAAY,CAACE,kBAAkB,CAAC,eAAe,CAAC;AAC7E,OAAO,MAAME,eAAe,GAAGJ,YAAY,CAACK,GAAG,CAACJ,UAAU,CAAC;AAC3D,OAAO,MAAMK,oBAAoB,GAAGN,YAAY,CAACE,kBAAkB,CAAC,aAAa,CAAC","ignoreList":[]}
@@ -187,9 +187,7 @@ export class NitroResponse {
187
187
  async formData() {
188
188
  throw new TypeError('formData() is not supported in NitroResponse');
189
189
  }
190
-
191
190
  // --- Static methods ---
192
-
193
191
  static error() {
194
192
  return new NitroResponse({
195
193
  url: '',
@@ -234,4 +232,4 @@ export class NitroResponse {
234
232
  });
235
233
  }
236
234
  }
237
- //# sourceMappingURL=Response.js.map
235
+ //# sourceMappingURL=Response.js.mapap