react-native-nitro-fetch 1.3.2 → 1.4.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.
Files changed (39) hide show
  1. package/NitroFetch.podspec +1 -3
  2. package/README.md +39 -11
  3. package/android/src/main/java/com/margelo/nitro/nitrofetch/AutoPrefetcher.kt +6 -2
  4. package/android/src/main/java/com/margelo/nitro/nitrofetch/DevToolsReporterImpl.kt +27 -36
  5. package/android/src/main/java/com/margelo/nitro/nitrofetch/NitroFetchClient.kt +45 -0
  6. package/ios/NitroAutoPrefetcher.swift +4 -0
  7. package/ios/NitroDevToolsReporter.mm +37 -31
  8. package/ios/NitroFetchClient.swift +56 -0
  9. package/lib/module/CurlGenerator.js.map +1 -2
  10. package/lib/module/Headers.js.map +2 -1
  11. package/lib/module/HermesProfiler.js.map +2 -1
  12. package/lib/module/NetworkInspector.js +1 -5
  13. package/lib/module/NetworkInspector.js.map +2 -1
  14. package/lib/module/NitroCronet.nitro.js.map +2 -1
  15. package/lib/module/NitroFetch.nitro.js.map +2 -1
  16. package/lib/module/NitroInstances.js.map +2 -1
  17. package/lib/module/Request.js.map +1 -2
  18. package/lib/module/Response.js.map +2 -2
  19. package/lib/module/fetch.js +147 -1
  20. package/lib/module/fetch.js.map +1 -1
  21. package/lib/module/index.web.js +1 -0
  22. package/lib/module/index.web.js.map +1 -2
  23. package/lib/module/tokenRefresh.js.map +1 -2
  24. package/lib/module/utf8.js.map +1 -2
  25. package/lib/typescript/src/fetch.d.ts.map +1 -1
  26. package/package.json +1 -1
  27. package/src/CurlGenerator.js +26 -23
  28. package/src/Headers.js +116 -108
  29. package/src/HermesProfiler.js +18 -16
  30. package/src/NetworkInspector.js +179 -171
  31. package/src/NitroInstances.js +1 -2
  32. package/src/Request.js +164 -167
  33. package/src/Response.js +242 -244
  34. package/src/fetch.js +842 -706
  35. package/src/fetch.ts +170 -1
  36. package/src/index.js +2 -17
  37. package/src/index.web.js +67 -69
  38. package/src/tokenRefresh.js +77 -75
  39. package/src/utf8.js +27 -28
@@ -22,9 +22,7 @@ Pod::Spec.new do |s|
22
22
 
23
23
  s.dependency 'React-jsi'
24
24
  s.dependency 'React-callinvoker'
25
- s.dependency 'React-RCTNetwork'
26
-
27
- # Expose the DevTools reporter Obj-C facade to Swift via the pod's umbrella module.
25
+
28
26
  s.public_header_files = [
29
27
  "ios/NitroDevToolsReporter.h",
30
28
  "ios/NitroAutoPrefetcher.h",
package/README.md CHANGED
@@ -134,8 +134,46 @@ registerTokenRefresh({
134
134
  - Default `responseType` is `'json'`. Use **`mappings`** to copy fields from the JSON body into header names (dot paths supported, e.g. `data.token`).
135
135
  - Use **`compositeHeaders`** to build a header from a template and multiple JSON paths (`{{placeholder}}` in the template).
136
136
  - For a plain-text body, set `responseType: 'text'` and use **`textHeader`** / optional **`textTemplate`** (with `{{value}}`).
137
+ - To inject into the prefetch's **JSON body** or **form-data** (the `fetch` path only), use **`bodyMappings`** / **`formDataMappings`** (see below).
137
138
 
139
+ **Example: header + JSON body + form-data mappings**
138
140
 
141
+ One config can fan the same refreshed value into all three destinations. Each mapping only applies to a prefetch whose body it matches — `bodyMappings` won't synthesize a JSON body on a GET/form request, and `formDataMappings` won't make a request multipart.
142
+
143
+ ```ts
144
+ import { registerTokenRefresh } from 'react-native-nitro-fetch'
145
+
146
+ // Refresh endpoint returns e.g. { "data": { "accessToken": "abc123" } }
147
+ registerTokenRefresh({
148
+ target: 'fetch',
149
+ url: 'https://api.example.com/oauth/token',
150
+ method: 'POST',
151
+ responseType: 'json',
152
+
153
+ // 1) header mapping → sets a request header
154
+ mappings: [
155
+ { jsonPath: 'data.accessToken', header: 'Authorization', valueTemplate: 'Bearer {{value}}' },
156
+ ],
157
+
158
+ // 2) JSON-body mapping → sets a (nested) dot-path key in the prefetch's JSON body
159
+ bodyMappings: [
160
+ { jsonPath: 'data.accessToken', bodyPath: 'auth.token' },
161
+ ],
162
+
163
+ // 3) form-data mapping → replaces/appends a multipart field by name
164
+ formDataMappings: [
165
+ { jsonPath: 'data.accessToken', field: 'token' },
166
+ ],
167
+
168
+ onFailure: 'useStoredHeaders',
169
+ })
170
+ ```
171
+
172
+ Result, per prefetch:
173
+ - a JSON prefetch of `{ "deviceId": "d-1" }` → `Authorization: Bearer abc123` **and** body `{ "deviceId": "d-1", "auth": { "token": "abc123" } }`
174
+ - a form-data prefetch → `Authorization: Bearer abc123` **and** a `token=abc123` part
175
+
176
+ > For `responseType: 'text'`, the body/form equivalents of `textHeader` are **`bodyTextPath`** / **`formDataTextField`**.
139
177
 
140
178
  **Example: token refresh + WebSocket prewarm**
141
179
 
@@ -333,17 +371,7 @@ More detail: **[docs/websockets.md](docs/websockets.md)** · UI sample: **[examp
333
371
  - **WebSockets** are not part of `react-native-nitro-fetch` itself; use the companion package **[react-native-nitro-websockets](docs/websockets.md)** (with **react-native-nitro-text-decoder**). For other stacks, [react-native-fast-io](https://github.com/callstackincubator/react-native-fast-io) is another option.
334
372
 
335
373
  ## Documentation
336
-
337
- - [Getting Started](docs/getting-started.md)
338
- - [API Reference](docs/api.md)
339
- - [Android Details](docs/android.md)
340
- - [iOS Details](docs/ios.md)
341
- - [Prefetch & Auto-Prefetch](docs/prefetch.md)
342
- - [WebSockets & prewarm](docs/websockets.md)
343
- - [Worklets](docs/worklets.md)
344
- - [Troubleshooting](docs/troubleshooting.md)
345
- - [Cronet (Android) notes](docs/cronet-android.md)
346
- - [Cronet (iOS) notes](docs/cronet-ios.md)
374
+ You can find documentation at https://fetch.margelo.com
347
375
 
348
376
  ## Margelo
349
377
 
@@ -101,7 +101,9 @@ object AutoPrefetcher {
101
101
 
102
102
  val tokens: TokenRefreshResult = if (refreshed != null) {
103
103
  android.util.Log.d("NitroFetch", "[TokenRefresh] ✅ Success — got ${refreshed.headers.size} header(s)")
104
- refreshed.headers.forEach { (k, v) -> android.util.Log.d("NitroFetch", "[TokenRefresh] $k: $v") }
104
+ if (BuildConfig.DEBUG) {
105
+ refreshed.headers.forEach { (k, v) -> android.util.Log.d("NitroFetch", "[TokenRefresh] $k: $v") }
106
+ }
105
107
  // Cache fresh tokens for useStoredHeaders fallback on next cold start
106
108
  NitroFetchSecureAtRest.putEncrypted(prefs, KEY_TOKEN_CACHE, serializeCache(refreshed))
107
109
  refreshed
@@ -148,7 +150,9 @@ object AutoPrefetcher {
148
150
  merged["prefetchKey"] = prefetchKey
149
151
 
150
152
  android.util.Log.d("NitroFetch", "[TokenRefresh] Prefetching $url with ${merged.size} header(s)")
151
- merged.forEach { (k, v) -> android.util.Log.d("NitroFetch", "[TokenRefresh] $k: $v") }
153
+ if (BuildConfig.DEBUG) {
154
+ merged.forEach { (k, v) -> android.util.Log.d("NitroFetch", "[TokenRefresh] $k: $v") }
155
+ }
152
156
  val req = buildNitroRequestFromEntry(url, merged, o, tokens)
153
157
 
154
158
  if (FetchCache.getPending(prefetchKey) != null) continue
@@ -1,67 +1,58 @@
1
1
  package com.margelo.nitro.nitrofetch
2
2
 
3
- /**
4
- * Direct-dispatch backend for [DevToolsReporter]. Loaded reflectively from the facade
5
- * via `Class.forName`, so a missing `InspectorNetworkReporter` only prevents *this* class
6
- * from loading — the facade itself stays intact and degrades to a no-op.
7
- *
8
- * Once loaded, every call here is a plain JVM static invoke. No reflection, no boxing,
9
- * no method-handle lookups. The `@Suppress` annotations bypass RN's `internal` visibility
10
- * (RN has no public surface here) — this is the documented integration point.
11
- */
12
- @Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
3
+ import java.lang.reflect.Method
4
+
5
+
13
6
  internal class DevToolsReporterImpl : DevToolsReporter.Impl {
14
- override fun isDebuggingEnabled(): Boolean =
15
- com.facebook.react.modules.network.InspectorNetworkReporter.isDebuggingEnabled()
7
+ private val cls = Class.forName("com.facebook.react.modules.network.InspectorNetworkReporter")
8
+
9
+ private fun m(name: String): Method = cls.methods.first { it.name == name }
10
+
11
+ // All targets are `public static final` on the reporter object — invoke with a null receiver.
12
+ private val mIsDebuggingEnabled = m("isDebuggingEnabled")
13
+ private val mReportRequestStart = m("reportRequestStart")
14
+ private val mReportConnectionTiming = m("reportConnectionTiming")
15
+ private val mReportResponseStart = m("reportResponseStart")
16
+ private val mReportDataReceivedImpl = m("reportDataReceivedImpl")
17
+ private val mReportResponseEnd = m("reportResponseEnd")
18
+ private val mReportRequestFailed = m("reportRequestFailed")
19
+ private val mMaybeStoreResponseBody = m("maybeStoreResponseBody")
20
+ private val mMaybeStoreResponseBodyIncremental = m("maybeStoreResponseBodyIncremental")
21
+
22
+ override fun isDebuggingEnabled(): Boolean = mIsDebuggingEnabled.invoke(null) as Boolean
16
23
 
17
24
  override fun reportRequestStart(
18
25
  requestId: String, url: String, method: String,
19
26
  headers: Map<String, String>, body: String, encodedDataLength: Long
20
27
  ) {
21
- com.facebook.react.modules.network.InspectorNetworkReporter.reportRequestStart(
22
- requestId, url, method, headers, body, encodedDataLength
23
- )
24
- com.facebook.react.modules.network.InspectorNetworkReporter.reportConnectionTiming(
25
- requestId, headers
26
- )
28
+ mReportRequestStart.invoke(null, requestId, url, method, headers, body, encodedDataLength)
29
+ mReportConnectionTiming.invoke(null, requestId, headers)
27
30
  }
28
31
 
29
32
  override fun reportResponseStart(
30
33
  requestId: String, url: String, statusCode: Int,
31
34
  headers: Map<String, String>, expectedDataLength: Long
32
35
  ) {
33
- com.facebook.react.modules.network.InspectorNetworkReporter.reportResponseStart(
34
- requestId, url, statusCode, headers, expectedDataLength
35
- )
36
+ mReportResponseStart.invoke(null, requestId, url, statusCode, headers, expectedDataLength)
36
37
  }
37
38
 
38
39
  override fun reportDataReceived(requestId: String, length: Int) {
39
- com.facebook.react.modules.network.InspectorNetworkReporter.reportDataReceivedImpl(
40
- requestId, length
41
- )
40
+ mReportDataReceivedImpl.invoke(null, requestId, length)
42
41
  }
43
42
 
44
43
  override fun reportResponseEnd(requestId: String, encodedDataLength: Long) {
45
- com.facebook.react.modules.network.InspectorNetworkReporter.reportResponseEnd(
46
- requestId, encodedDataLength
47
- )
44
+ mReportResponseEnd.invoke(null, requestId, encodedDataLength)
48
45
  }
49
46
 
50
47
  override fun reportRequestFailed(requestId: String, cancelled: Boolean) {
51
- com.facebook.react.modules.network.InspectorNetworkReporter.reportRequestFailed(
52
- requestId, cancelled
53
- )
48
+ mReportRequestFailed.invoke(null, requestId, cancelled)
54
49
  }
55
50
 
56
51
  override fun storeResponseBody(requestId: String, body: String, base64Encoded: Boolean) {
57
- com.facebook.react.modules.network.InspectorNetworkReporter.maybeStoreResponseBody(
58
- requestId, body, base64Encoded
59
- )
52
+ mMaybeStoreResponseBody.invoke(null, requestId, body, base64Encoded)
60
53
  }
61
54
 
62
55
  override fun storeResponseBodyIncremental(requestId: String, data: String) {
63
- com.facebook.react.modules.network.InspectorNetworkReporter.maybeStoreResponseBodyIncremental(
64
- requestId, data
65
- )
56
+ mMaybeStoreResponseBodyIncremental.invoke(null, requestId, data)
66
57
  }
67
58
  }
@@ -85,6 +85,11 @@ class NitroFetchClient(private val engine: CronetEngine, private val executor: E
85
85
  onFail: (Throwable) -> Unit
86
86
  ): UrlRequest? {
87
87
  return try {
88
+ // Local resources (file://, content://, scheme-less paths) aren't HTTP; read off disk -> 200.
89
+ if (!isHttpURL(req.url)) {
90
+ onSuccess(makeLocalFileResponse(req))
91
+ return null
92
+ }
88
93
  val engine = NitroFetch.getEngine()
89
94
  val executor = NitroFetch.ioExecutor
90
95
  startCronet(engine, executor, req, onSuccess, onFail)
@@ -375,6 +380,46 @@ class NitroFetchClient(private val engine: CronetEngine, private val executor: E
375
380
  val path = if (uri.startsWith("file://")) uri.removePrefix("file://") else uri
376
381
  return File(path).readBytes()
377
382
  }
383
+
384
+ private fun isHttpURL(url: String): Boolean =
385
+ url.startsWith("http://") || url.startsWith("https://")
386
+
387
+ private fun guessMime(uri: String): String {
388
+ if (uri.startsWith("content://")) {
389
+ NitroModules.applicationContext?.contentResolver?.getType(Uri.parse(uri))?.let { return it }
390
+ }
391
+ val path = if (uri.startsWith("file://")) uri.removePrefix("file://") else uri
392
+ val ext = path.substringAfterLast('.', "").lowercase()
393
+ if (ext.isNotEmpty()) {
394
+ android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(ext)?.let { return it }
395
+ }
396
+ return java.net.URLConnection.guessContentTypeFromName(path) ?: "application/octet-stream"
397
+ }
398
+
399
+ // Read a local file -> synthetic 200, mirroring the HTTP path's strict text/bytes choice.
400
+ private fun makeLocalFileResponse(req: NitroRequest): NitroResponse {
401
+ val bytes = readFileBytes(req.url)
402
+ val mime = guessMime(req.url)
403
+ val bodyStr: String? = try {
404
+ strictDecoderFor(Charsets.UTF_8).decode(ByteBuffer.wrap(bytes)).toString()
405
+ } catch (_: Throwable) { null }
406
+ val bodyBytesAb: ArrayBuffer? = if (bodyStr == null && bytes.isNotEmpty())
407
+ bytes.toArrayBuffer()
408
+ else null
409
+ return NitroResponse(
410
+ url = req.url,
411
+ status = 200.0,
412
+ statusText = "OK",
413
+ ok = true,
414
+ redirected = false,
415
+ headers = arrayOf(
416
+ NitroHeader("Content-Type", mime),
417
+ NitroHeader("Content-Length", bytes.size.toString())
418
+ ),
419
+ bodyString = bodyStr,
420
+ bodyBytes = bodyBytesAb
421
+ )
422
+ }
378
423
  }
379
424
 
380
425
  // Helper function to add prefetch header to response (reused by both sync/async)
@@ -150,7 +150,9 @@ public final class NitroAutoPrefetcher: NSObject {
150
150
  let refreshed = try? await callTokenRefresh(config: refreshObj)
151
151
  if let refreshed = refreshed {
152
152
  print("[NitroFetch][TokenRefresh] ✅ Success — got \(refreshed.headers.count) header(s)")
153
+ #if DEBUG
153
154
  for (k, v) in refreshed.headers { print("[NitroFetch][TokenRefresh] \(k): \(v)") }
155
+ #endif
154
156
  // Cache fresh tokens for useStoredHeaders fallback on next cold start
155
157
  if let cacheStr = serializeCache(refreshed) {
156
158
  try? NitroFetchSecureAtRest.setEncrypted(cacheStr, forKey: tokenCacheKey, defaults: userDefaults)
@@ -188,7 +190,9 @@ public final class NitroAutoPrefetcher: NSObject {
188
190
  headers.append(NitroHeader(key: "prefetchKey", value: prefetchKey))
189
191
 
190
192
  print("[NitroFetch][TokenRefresh] Prefetching \(url) with \(merged.count) header(s)")
193
+ #if DEBUG
191
194
  for (k, v) in merged { print("[NitroFetch][TokenRefresh] \(k): \(v)") }
195
+ #endif
192
196
 
193
197
  let req = buildNitroRequest(from: obj, mergedHeaders: headers, tokens: tokens)
194
198
  Task {
@@ -1,14 +1,22 @@
1
1
  #import "NitroDevToolsReporter.h"
2
+ #import <React/RCTVersion.h>
2
3
 
3
- // RCTInspectorNetworkReporter is bundled in React-RCTNetwork. In RN < 0.76
4
- // or when the header isn't visible (release-optimized module maps, OSS forks),
5
- // we compile to a no-op so the module still builds.
6
- #if __has_include(<React/RCTInspectorNetworkReporter.h>)
7
- #import <React/RCTInspectorNetworkReporter.h>
8
- #define NITRO_HAS_NETWORK_REPORTER 1
9
- #else
10
- #define NITRO_HAS_NETWORK_REPORTER 0
11
- #endif
4
+
5
+ @interface RCTInspectorNetworkReporter : NSObject
6
+ + (void)reportRequestStart:(NSString *)requestId
7
+ request:(NSURLRequest *)request
8
+ encodedDataLength:(int)encodedDataLength;
9
+ + (void)reportConnectionTiming:(NSString *)requestId request:(NSURLRequest *)request;
10
+ + (void)reportResponseStart:(NSString *)requestId
11
+ response:(NSURLResponse *)response
12
+ statusCode:(int)statusCode
13
+ headers:(NSDictionary<NSString *, NSString *> *)headers;
14
+ + (void)reportDataReceived:(NSString *)requestId data:(NSData *)data;
15
+ + (void)reportResponseEnd:(NSString *)requestId encodedDataLength:(int)encodedDataLength;
16
+ + (void)reportRequestFailed:(NSString *)requestId cancelled:(BOOL)cancelled;
17
+ + (void)maybeStoreResponseBody:(NSString *)requestId data:(NSData *)data base64Encoded:(bool)base64Encoded;
18
+ + (void)maybeStoreResponseBodyIncremental:(NSString *)requestId data:(NSString *)data;
19
+ @end
12
20
 
13
21
  // During cold-start prefetch, RN's RCTInspectorNetworkReporter class may not
14
22
  // be realized yet (its underlying C++ NetworkReporter singleton is brought up
@@ -18,16 +26,30 @@
18
26
 
19
27
  @implementation NitroDevToolsReporter
20
28
 
29
+ // The reporter's `requestId` API switched from NSNumber to NSString in RN 0.83. We build against
30
+ // the NSString shape, so only engage on RN >= 0.83; everything else stays a no-op.
31
+ + (BOOL)reporterAPIAvailable {
32
+ static BOOL available = NO;
33
+ static dispatch_once_t onceToken;
34
+ dispatch_once(&onceToken, ^{
35
+ NSDictionary *v = RCTGetReactNativeVersion();
36
+ NSInteger major = [v[RCTVersionMajor] integerValue];
37
+ NSInteger minor = [v[RCTVersionMinor] integerValue];
38
+ available = (major > 0) || (minor >= 83);
39
+ });
40
+ return available;
41
+ }
42
+
21
43
  + (Class _Nullable)reporterClass {
22
- #if NITRO_HAS_NETWORK_REPORTER
44
+ if (![self reporterAPIAvailable]) {
45
+ return Nil;
46
+ }
23
47
  static Class cached = Nil;
24
- if (cached == Nil) {
48
+ static dispatch_once_t onceToken;
49
+ dispatch_once(&onceToken, ^{
25
50
  cached = NSClassFromString(@"RCTInspectorNetworkReporter");
26
- }
51
+ });
27
52
  return cached;
28
- #else
29
- return Nil;
30
- #endif
31
53
  }
32
54
 
33
55
  + (BOOL)isDebuggingEnabled {
@@ -36,14 +58,12 @@
36
58
 
37
59
  + (void)reportRequestStartWithRequest:(NSString *)requestId
38
60
  request:(NSURLRequest *)request {
39
- #if NITRO_HAS_NETWORK_REPORTER
40
61
  if (request == nil) return;
41
62
  Class cls = [self reporterClass];
42
63
  if (cls == Nil) return;
43
64
  int encoded = (int)(request.HTTPBody.length);
44
65
  [cls reportRequestStart:requestId request:request encodedDataLength:encoded];
45
66
  [cls reportConnectionTiming:requestId request:request];
46
- #endif
47
67
  }
48
68
 
49
69
  + (void)reportRequestStart:(NSString *)requestId
@@ -51,7 +71,6 @@
51
71
  method:(NSString *)method
52
72
  headers:(NSDictionary<NSString *, NSString *> *)headers
53
73
  bodyString:(NSString *)bodyString {
54
- #if NITRO_HAS_NETWORK_REPORTER
55
74
  Class cls = [self reporterClass];
56
75
  if (cls == Nil) return;
57
76
  NSURL *u = [NSURL URLWithString:url];
@@ -67,14 +86,12 @@
67
86
  NSInteger encoded = bodyString ? (NSInteger)[bodyString lengthOfBytesUsingEncoding:NSUTF8StringEncoding] : 0;
68
87
  [cls reportRequestStart:requestId request:req encodedDataLength:(int)encoded];
69
88
  [cls reportConnectionTiming:requestId request:req];
70
- #endif
71
89
  }
72
90
 
73
91
  + (void)reportResponseStart:(NSString *)requestId
74
92
  url:(NSString *)url
75
93
  statusCode:(NSInteger)statusCode
76
94
  headers:(NSDictionary<NSString *, NSString *> *)headers {
77
- #if NITRO_HAS_NETWORK_REPORTER
78
95
  Class cls = [self reporterClass];
79
96
  if (cls == Nil) return;
80
97
  NSURL *u = [NSURL URLWithString:url];
@@ -87,11 +104,9 @@
87
104
  response:resp
88
105
  statusCode:(int)statusCode
89
106
  headers:headers];
90
- #endif
91
107
  }
92
108
 
93
109
  + (void)reportDataReceived:(NSString *)requestId length:(NSInteger)length {
94
- #if NITRO_HAS_NETWORK_REPORTER
95
110
  if (length <= 0) return;
96
111
  Class cls = [self reporterClass];
97
112
  if (cls == Nil) return;
@@ -101,41 +116,32 @@
101
116
  static uint8_t sentinel;
102
117
  NSData *sized = [NSData dataWithBytesNoCopy:&sentinel length:(NSUInteger)length freeWhenDone:NO];
103
118
  [cls reportDataReceived:requestId data:sized];
104
- #endif
105
119
  }
106
120
 
107
121
  + (void)reportResponseEnd:(NSString *)requestId encodedDataLength:(NSInteger)length {
108
- #if NITRO_HAS_NETWORK_REPORTER
109
122
  Class cls = [self reporterClass];
110
123
  if (cls == Nil) return;
111
124
  [cls reportResponseEnd:requestId encodedDataLength:(int)length];
112
- #endif
113
125
  }
114
126
 
115
127
  + (void)reportRequestFailed:(NSString *)requestId cancelled:(BOOL)cancelled {
116
- #if NITRO_HAS_NETWORK_REPORTER
117
128
  Class cls = [self reporterClass];
118
129
  if (cls == Nil) return;
119
130
  [cls reportRequestFailed:requestId cancelled:cancelled];
120
- #endif
121
131
  }
122
132
 
123
133
  + (void)storeResponseBody:(NSString *)requestId
124
134
  data:(NSData *)data
125
135
  base64Encoded:(BOOL)base64Encoded {
126
- #if NITRO_HAS_NETWORK_REPORTER
127
136
  Class cls = [self reporterClass];
128
137
  if (cls == Nil) return;
129
138
  [cls maybeStoreResponseBody:requestId data:data base64Encoded:base64Encoded];
130
- #endif
131
139
  }
132
140
 
133
141
  + (void)storeResponseBodyIncremental:(NSString *)requestId text:(NSString *)text {
134
- #if NITRO_HAS_NETWORK_REPORTER
135
142
  Class cls = [self reporterClass];
136
143
  if (cls == Nil) return;
137
144
  [cls maybeStoreResponseBodyIncremental:requestId data:text];
138
- #endif
139
145
  }
140
146
 
141
147
  + (BOOL)isTextualContentType:(NSString *)contentType {
@@ -1,6 +1,7 @@
1
1
  import Foundation
2
2
  import NitroModules
3
3
  import os
4
+ import UniformTypeIdentifiers
4
5
 
5
6
  #if NITROFETCH_TRACING
6
7
  private let fetchLog = OSLog(subsystem: "com.margelo.nitrofetch", category: "network")
@@ -117,6 +118,10 @@ final class NitroFetchClient: HybridNitroFetchClientSpec {
117
118
 
118
119
 
119
120
  public class func requestStatic(_ req: NitroRequest) async throws -> NitroResponse {
121
+ // Local resources (file://, scheme-less paths) aren't HTTP; read off disk -> 200.
122
+ if !isHttpURL(req.url) {
123
+ return try makeLocalFileResponse(req)
124
+ }
120
125
  if let key = findPrefetchKey(req) {
121
126
  // If a prefetched result is fresh, return immediately
122
127
  if let cached = FetchCache.getResultIfFresh(key, maxAgeMs: Int64(req.prefetchCacheTtlMs ?? 5_000)) {
@@ -380,6 +385,57 @@ final class NitroFetchClient: HybridNitroFetchClientSpec {
380
385
  return data
381
386
  }
382
387
 
388
+ private static func isHttpURL(_ url: String) -> Bool {
389
+ return url.hasPrefix("http://") || url.hasPrefix("https://")
390
+ }
391
+
392
+ private static func localData(forURI uri: String) throws -> Data {
393
+ // file:// via URL (honors percent-encoding); bare paths read directly.
394
+ if uri.hasPrefix("file://"), let fileURL = URL(string: uri) {
395
+ return try Data(contentsOf: fileURL)
396
+ }
397
+ let path = uri.hasPrefix("file://") ? String(uri.dropFirst(7)) : uri
398
+ guard let data = FileManager.default.contents(atPath: path) else {
399
+ throw NSError(domain: "NitroFetch", code: -4,
400
+ userInfo: [NSLocalizedDescriptionKey: "Cannot read file at: \(uri)"])
401
+ }
402
+ return data
403
+ }
404
+
405
+ private static func mimeType(forURI uri: String) -> String {
406
+ let path = uri.hasPrefix("file://") ? String(uri.dropFirst(7)) : uri
407
+ let ext = (path as NSString).pathExtension
408
+ if !ext.isEmpty, let type = UTType(filenameExtension: ext),
409
+ let mime = type.preferredMIMEType {
410
+ return mime
411
+ }
412
+ return "application/octet-stream"
413
+ }
414
+
415
+ // Read a local file -> synthetic 200, mirroring the HTTP path's text/bytes choice.
416
+ private static func makeLocalFileResponse(_ req: NitroRequest) throws -> NitroResponse {
417
+ let data = try localData(forURI: req.url)
418
+ let mime = mimeType(forURI: req.url)
419
+ let bodyStr = String(data: data, encoding: .utf8)
420
+ var bodyBytesAb: ArrayBuffer? = nil
421
+ if bodyStr == nil && !data.isEmpty {
422
+ bodyBytesAb = try ArrayBuffer.copy(data: data)
423
+ }
424
+ return NitroResponse(
425
+ url: req.url,
426
+ status: 200,
427
+ statusText: "OK",
428
+ ok: true,
429
+ redirected: false,
430
+ headers: [
431
+ NitroHeader(key: "Content-Type", value: mime),
432
+ NitroHeader(key: "Content-Length", value: String(data.count)),
433
+ ],
434
+ bodyString: bodyStr,
435
+ bodyBytes: bodyBytesAb
436
+ )
437
+ }
438
+
383
439
  private static func detectCharset(from http: HTTPURLResponse) -> String.Encoding? {
384
440
  if let ct = http.value(forHTTPHeaderField: "Content-Type")?.lowercased() {
385
441
  if let range = ct.range(of: "charset=") {
@@ -1,2 +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.js"],"mappings":";;AAAA,SAASA,WAAWA,CAACC,GAAG,EAAE;EACxB,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;AACA,OAAO,SAASC,YAAYA,CAACC,OAAO,EAAE;EACpC,MAAMC,KAAK,GAAG,CAAC,MAAM,CAAC;EACtB,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;EACA,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;EACA,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;EACA,IAAIX,OAAO,CAACc,OAAO,EAAEb,KAAK,CAACE,IAAI,CAAC,IAAI,CAAC;EACrC,IAAIH,OAAO,CAACe,UAAU,EAAEd,KAAK,CAACE,IAAI,CAAC,cAAc,CAAC;EAClDF,KAAK,CAACE,IAAI,CAACR,WAAW,CAACK,OAAO,CAACgB,GAAG,CAAC,CAAC;EACpC,OAAOf,KAAK,CAACgB,IAAI,CAAC,GAAG,CAAC;AACxB","ignoreList":[]}
2
-
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 +1,2 @@
1
- {"version":3,"names":["normalizeName","name","toLowerCase","NitroHeaders","constructor","init","_map","Map","forEach","values","key","set","Array","isArray","get","value","entry","length","String","existing","push","keys","Object","i","k","v","undefined","append","delete","join","getSetCookie","has","callback","thisArg","sortedKeys","from","sort","call","entries","map","gen","Symbol","iterator"],"sourceRoot":"../../src","sources":["Headers.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["normalizeName","name","toLowerCase","NitroHeaders","constructor","init","_map","Map","forEach","values","key","set","Array","isArray","get","value","entry","length","String","existing","push","keys","Object","i","k","v","undefined","append","delete","join","getSetCookie","has","callback","thisArg","sortedKeys","from","sort","call","entries","map","gen","Symbol","iterator"],"sourceRoot":"../../src","sources":["Headers.js"],"mappings":"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","ignoreList":[]}
2
+ AACF","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 = {
@@ -181,4 +177,4 @@ class NetworkInspectorImpl {
181
177
  }
182
178
  }
183
179
  export const NetworkInspector = new NetworkInspectorImpl();
184
- //# sourceMappingURL=NetworkInspector.js.map
180
+ //# sourceMappingURL=NetworkInspector.js.map.map
@@ -1 +1,2 @@
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":[]}
2
+ O,MAAMuD,gBAAgB,GAAG,IAAInF,oBAAoB,CAAC,CAAC","ignoreList":[]}
@@ -1 +1,2 @@
1
- {"version":3,"names":[],"sourceRoot":"../../src","sources":["NitroCronet.nitro.js"],"mappings":";;AAAA","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["NitroCronet.nitro.ts"],"mappings":"","ignoreList":[]}
2
+ ":[]}