react-native-nitro-fetch 1.3.3 → 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.
- package/README.md +1 -11
- package/android/src/main/java/com/margelo/nitro/nitrofetch/AutoPrefetcher.kt +6 -2
- package/android/src/main/java/com/margelo/nitro/nitrofetch/NitroFetchClient.kt +45 -0
- package/ios/NitroAutoPrefetcher.swift +4 -0
- package/ios/NitroFetchClient.swift +56 -0
- package/lib/module/CurlGenerator.js.map +1 -2
- package/lib/module/Headers.js.map +2 -2
- package/lib/module/HermesProfiler.js.map +1 -1
- package/lib/module/NetworkInspector.js.map +2 -2
- package/lib/module/NitroFetch.nitro.js.map +2 -1
- package/lib/module/NitroInstances.js.map +2 -2
- package/lib/module/Response.js +3 -1
- package/lib/module/Response.js.map +2 -1
- package/lib/module/fetch.js +147 -1
- package/lib/module/fetch.js.map +1 -2
- package/lib/module/index.js.map +1 -2
- package/lib/module/tokenRefresh.js +1 -4
- package/lib/module/tokenRefresh.js.map +1 -2
- package/lib/typescript/src/fetch.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/CurlGenerator.js +26 -23
- package/src/Headers.js +116 -108
- package/src/HermesProfiler.js +18 -16
- package/src/NetworkInspector.js +179 -171
- package/src/NitroInstances.js +1 -2
- package/src/Request.js +164 -167
- package/src/Response.js +242 -244
- package/src/fetch.js +842 -706
- package/src/fetch.ts +170 -1
- package/src/index.js +2 -17
- package/src/index.web.js +67 -69
- package/src/tokenRefresh.js +77 -75
- package/src/utf8.js +27 -28
package/README.md
CHANGED
|
@@ -371,17 +371,7 @@ More detail: **[docs/websockets.md](docs/websockets.md)** · UI sample: **[examp
|
|
|
371
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.
|
|
372
372
|
|
|
373
373
|
## Documentation
|
|
374
|
-
|
|
375
|
-
- [Getting Started](docs/getting-started.md)
|
|
376
|
-
- [API Reference](docs/api.md)
|
|
377
|
-
- [Android Details](docs/android.md)
|
|
378
|
-
- [iOS Details](docs/ios.md)
|
|
379
|
-
- [Prefetch & Auto-Prefetch](docs/prefetch.md)
|
|
380
|
-
- [WebSockets & prewarm](docs/websockets.md)
|
|
381
|
-
- [Worklets](docs/worklets.md)
|
|
382
|
-
- [Troubleshooting](docs/troubleshooting.md)
|
|
383
|
-
- [Cronet (Android) notes](docs/cronet-android.md)
|
|
384
|
-
- [Cronet (iOS) notes](docs/cronet-ios.md)
|
|
374
|
+
You can find documentation at https://fetch.margelo.com
|
|
385
375
|
|
|
386
376
|
## Margelo
|
|
387
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
|
-
|
|
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
|
-
|
|
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
|
|
@@ -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,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.
|
|
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,2 +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.js"],"mappings":";;AAAA,SAASA,aAAaA,CAACC,IAAI,EAAE;
|
|
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.js"],"mappings":"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","ignoreList":[]}
|
|
2
|
+
AACF","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
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;
|
|
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
2
|
[]}
|
|
@@ -1,2 +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.js"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,oBAAiB;AAC9C,MAAMC,oBAAoB,CAAC;
|
|
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.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":["NitroFetch.nitro.
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["NitroFetch.nitro.ts"],"mappings":"","ignoreList":[]}
|
|
2
|
+
":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
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,
|
|
2
|
-
":[]}
|
|
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":[]}
|
|
2
|
+
t":[]}
|
package/lib/module/Response.js
CHANGED
|
@@ -187,7 +187,9 @@ export class NitroResponse {
|
|
|
187
187
|
async formData() {
|
|
188
188
|
throw new TypeError('formData() is not supported in NitroResponse');
|
|
189
189
|
}
|
|
190
|
+
|
|
190
191
|
// --- Static methods ---
|
|
192
|
+
|
|
191
193
|
static error() {
|
|
192
194
|
return new NitroResponse({
|
|
193
195
|
url: '',
|
|
@@ -232,4 +234,4 @@ export class NitroResponse {
|
|
|
232
234
|
});
|
|
233
235
|
}
|
|
234
236
|
}
|
|
235
|
-
//# sourceMappingURL=Response.js.
|
|
237
|
+
//# sourceMappingURL=Response.js.map
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
{"version":3,"names":["NitroHeaders","stringToUTF8","utf8ToString","isNitroResponseInit","arg","NitroResponse","_bodyUsed","constructor","bodyOrInit","init","nitroInit","url","ok","status","statusText","redirected","type","headers","_bodyBytes","bodyBytes","_bodyString","bodyString","_bodyStream","body","ArrayBuffer","isView","view","buffer","slice","byteOffset","byteLength","ReadableStream","URLSearchParams","toString","has","set","Blob","stream","bodyUsed","bytes","_getBodyBytes","start","controller","enqueue","Uint8Array","close","_throwIfBodyUsed","TypeError","encoded","undefined","_getBodyString","text","reader","getReader","chunks","done","value","read","push","totalLen","c","merged","offset","json","t","JSON","parse","arrayBuffer","blob","bodyStr","contentType","get","clone","formData","error","data","stringify","redirect","validStatuses","includes","RangeError","join"],"sourceRoot":"../../src","sources":["Response.
|
|
1
|
+
{"version":3,"names":["NitroHeaders","stringToUTF8","utf8ToString","isNitroResponseInit","arg","NitroResponse","_bodyUsed","constructor","bodyOrInit","init","nitroInit","url","ok","status","statusText","redirected","type","headers","_bodyBytes","bodyBytes","_bodyString","bodyString","_bodyStream","body","ArrayBuffer","isView","view","buffer","slice","byteOffset","byteLength","ReadableStream","URLSearchParams","toString","has","set","Blob","stream","bodyUsed","bytes","_getBodyBytes","start","controller","enqueue","Uint8Array","close","_throwIfBodyUsed","TypeError","encoded","undefined","_getBodyString","text","reader","getReader","chunks","done","value","read","push","totalLen","c","merged","offset","json","t","JSON","parse","arrayBuffer","blob","bodyStr","contentType","get","clone","formData","error","data","stringify","redirect","validStatuses","includes","RangeError","join"],"sourceRoot":"../../src","sources":["Response.js"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,cAAW;AACxC,SAASC,YAAY,EAAEC,YAAY,QAAQ,WAAQ;AACnD,SAASC,mBAAmBA,CAACC,GAAG,EAAE;EAC9B,OAAQA,GAAG,IAAI,IAAI,IACf,OAAOA,GAAG,KAAK,QAAQ,IACvB,KAAK,IAAIA,GAAG,IACZ,QAAQ,IAAIA,GAAG,IACf,IAAI,IAAIA,GAAG;AACnB;AACA,OAAO,MAAMC,aAAa,CAAC;EAWvBC,SAAS,GAAG,KAAK;EACjBC,WAAWA,CAACC,UAAU,EAAEC,IAAI,EAAE;IAC1B,IAAIN,mBAAmB,CAACK,UAAU,CAAC,EAAE;MACjC;MACA,MAAME,SAAS,GAAGF,UAAU;MAC5B,IAAI,CAACG,GAAG,GAAGD,SAAS,CAACC,GAAG;MACxB,IAAI,CAACC,EAAE,GAAGF,SAAS,CAACE,EAAE;MACtB,IAAI,CAACC,MAAM,GAAGH,SAAS,CAACG,MAAM;MAC9B,IAAI,CAACC,UAAU,GAAGJ,SAAS,CAACI,UAAU;MACtC,IAAI,CAACC,UAAU,GAAGL,SAAS,CAACK,UAAU;MACtC,IAAI,CAACC,IAAI,GAAGN,SAAS,CAACM,IAAI,IAAI,OAAO;MACrC,IAAIN,SAAS,CAACO,OAAO,YAAYjB,YAAY,EAAE;QAC3C,IAAI,CAACiB,OAAO,GAAGP,SAAS,CAACO,OAAO;MACpC,CAAC,MACI;QACD,IAAI,CAACA,OAAO,GAAG,IAAIjB,YAAY,CAACU,SAAS,CAACO,OAAO,CAAC;MACtD;MACA,IAAI,CAACC,UAAU,GAAGR,SAAS,CAACS,SAAS;MACrC,IAAI,CAACC,WAAW,GAAGV,SAAS,CAACW,UAAU;MACvC,IAAI,CAACC,WAAW,GAAGZ,SAAS,CAACa,IAAI;IACrC,CAAC,MACI;MACD;MACA,MAAMA,IAAI,GAAGf,UAAU;MACvB,IAAI,CAACK,MAAM,GAAGJ,IAAI,EAAEI,MAAM,IAAI,GAAG;MACjC,IAAI,CAACC,UAAU,GAAGL,IAAI,EAAEK,UAAU,IAAI,EAAE;MACxC,IAAI,CAACF,EAAE,GAAG,IAAI,CAACC,MAAM,IAAI,GAAG,IAAI,IAAI,CAACA,MAAM,GAAG,GAAG;MACjD,IAAI,CAACF,GAAG,GAAG,EAAE;MACb,IAAI,CAACI,UAAU,GAAG,KAAK;MACvB,IAAI,CAACC,IAAI,GAAG,SAAS;MACrB,IAAI,CAACC,OAAO,GAAG,IAAIjB,YAAY,CAACS,IAAI,EAAEQ,OAAO,CAAC;MAC9C,IAAIM,IAAI,IAAI,IAAI,EAAE;QACd;MAAA,CACH,MACI,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;QAC/B,IAAI,CAACH,WAAW,GAAGG,IAAI;MAC3B,CAAC,MACI,IAAIA,IAAI,YAAYC,WAAW,EAAE;QAClC,IAAI,CAACN,UAAU,GAAGK,IAAI;MAC1B,CAAC,MACI,IAAIC,WAAW,CAACC,MAAM,CAACF,IAAI,CAAC,EAAE;QAC/B,MAAMG,IAAI,GAAGH,IAAI;QACjB,IAAI,CAACL,UAAU,GAAGQ,IAAI,CAACC,MAAM,CAACC,KAAK,CAACF,IAAI,CAACG,UAAU,EAAEH,IAAI,CAACG,UAAU,GAAGH,IAAI,CAACI,UAAU,CAAC;MAC3F,CAAC,MACI,IAAI,OAAOC,cAAc,KAAK,WAAW,IAC1CR,IAAI,YAAYQ,cAAc,EAAE;QAChC,IAAI,CAACT,WAAW,GAAGC,IAAI;MAC3B,CAAC,MACI,IAAI,OAAOS,eAAe,KAAK,WAAW,IAC3CT,IAAI,YAAYS,eAAe,EAAE;QACjC,IAAI,CAACZ,WAAW,GAAGG,IAAI,CAACU,QAAQ,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAChB,OAAO,CAACiB,GAAG,CAAC,cAAc,CAAC,EAAE;UACnC,IAAI,CAACjB,OAAO,CAACkB,GAAG,CAAC,cAAc,EAAE,iDAAiD,CAAC;QACvF;MACJ,CAAC,MACI,IAAI,OAAOC,IAAI,KAAK,WAAW,IAAIb,IAAI,YAAYa,IAAI,EAAE;QAC1D;QACA,IAAI,CAAChB,WAAW,GAAG,EAAE;QACrB,IAAI,CAACE,WAAW,GAAGC,IAAI,CAACc,MAAM,GAAG,CAAC;MACtC;IACJ;EACJ;EACA,IAAIC,QAAQA,CAAA,EAAG;IACX,OAAO,IAAI,CAAChC,SAAS;EACzB;EACA,IAAIiB,IAAIA,CAAA,EAAG;IACP,IAAI,IAAI,CAACD,WAAW,EAChB,OAAO,IAAI,CAACA,WAAW;IAC3B,MAAMiB,KAAK,GAAG,IAAI,CAACC,aAAa,CAAC,CAAC;IAClC,IAAI,CAACD,KAAK,EACN,OAAO,IAAI;IACf,OAAO,IAAIR,cAAc,CAAC;MACtBU,KAAKA,CAACC,UAAU,EAAE;QACdA,UAAU,CAACC,OAAO,CAAC,IAAIC,UAAU,CAACL,KAAK,CAAC,CAAC;QACzCG,UAAU,CAACG,KAAK,CAAC,CAAC;MACtB;IACJ,CAAC,CAAC;EACN;EACAC,gBAAgBA,CAAA,EAAG;IACf,IAAI,IAAI,CAACxC,SAAS,EAAE;MAChB,MAAM,IAAIyC,SAAS,CAAC,iCAAiC,CAAC;IAC1D;EACJ;EACAP,aAAaA,CAAA,EAAG;IACZ;IACA,IAAI,IAAI,CAACtB,UAAU,IAAI,IAAI,EACvB,OAAO,IAAI,CAACA,UAAU;IAC1B,IAAI,IAAI,CAACE,WAAW,IAAI,IAAI,EAAE;MAC1B,MAAM4B,OAAO,GAAG/C,YAAY,CAAC,IAAI,CAACmB,WAAW,CAAC;MAC9C,OAAO4B,OAAO,CAACrB,MAAM,CAACC,KAAK,CAACoB,OAAO,CAACnB,UAAU,EAAEmB,OAAO,CAACnB,UAAU,GAAGmB,OAAO,CAAClB,UAAU,CAAC;IAC5F;IACA,OAAOmB,SAAS;EACpB;EACAC,cAAcA,CAAA,EAAG;IACb,IAAI,IAAI,CAAC9B,WAAW,IAAI,IAAI,EACxB,OAAO,IAAI,CAACA,WAAW;IAC3B,IAAI,IAAI,CAACF,UAAU,EAAE;MACjB,OAAOhB,YAAY,CAAC,IAAI0C,UAAU,CAAC,IAAI,CAAC1B,UAAU,CAAC,CAAC;IACxD;IACA,OAAO,EAAE;EACb;EACA,MAAMiC,IAAIA,CAAA,EAAG;IACT,IAAI,CAACL,gBAAgB,CAAC,CAAC;IACvB,IAAI,CAACxC,SAAS,GAAG,IAAI;IACrB,IAAI,IAAI,CAACgB,WAAW,IAAI,CAAC,IAAI,CAACJ,UAAU,IAAI,IAAI,CAACE,WAAW,IAAI,IAAI,EAAE;MAClE,MAAMgC,MAAM,GAAG,IAAI,CAAC9B,WAAW,CAAC+B,SAAS,CAAC,CAAC;MAC3C,MAAMC,MAAM,GAAG,EAAE;MACjB,OAAO,IAAI,EAAE;QACT,MAAM;UAAEC,IAAI;UAAEC;QAAM,CAAC,GAAG,MAAMJ,MAAM,CAACK,IAAI,CAAC,CAAC;QAC3C,IAAIF,IAAI,EACJ;QACJ,IAAIC,KAAK,EACLF,MAAM,CAACI,IAAI,CAACF,KAAK,CAAC;MAC1B;MACA;MACA,IAAIG,QAAQ,GAAG,CAAC;MAChB,KAAK,MAAMC,CAAC,IAAIN,MAAM,EAClBK,QAAQ,IAAIC,CAAC,CAAC9B,UAAU;MAC5B,MAAM+B,MAAM,GAAG,IAAIjB,UAAU,CAACe,QAAQ,CAAC;MACvC,IAAIG,MAAM,GAAG,CAAC;MACd,KAAK,MAAMF,CAAC,IAAIN,MAAM,EAAE;QACpBO,MAAM,CAAC1B,GAAG,CAACyB,CAAC,EAAEE,MAAM,CAAC;QACrBA,MAAM,IAAIF,CAAC,CAAC9B,UAAU;MAC1B;MACA,OAAO5B,YAAY,CAAC2D,MAAM,CAAC;IAC/B;IACA,OAAO,IAAI,CAACX,cAAc,CAAC,CAAC;EAChC;EACA,MAAMa,IAAIA,CAAA,EAAG;IACT,IAAI,CAACjB,gBAAgB,CAAC,CAAC;IACvB,IAAI,CAACxC,SAAS,GAAG,IAAI;IACrB,MAAM0D,CAAC,GAAG,IAAI,CAACd,cAAc,CAAC,CAAC;IAC/B,OAAOe,IAAI,CAACC,KAAK,CAACF,CAAC,IAAI,IAAI,CAAC;EAChC;EACA,MAAMG,WAAWA,CAAA,EAAG;IAChB,IAAI,CAACrB,gBAAgB,CAAC,CAAC;IACvB,IAAI,CAACxC,SAAS,GAAG,IAAI;IACrB,IAAI,IAAI,CAACgB,WAAW,IAAI,CAAC,IAAI,CAACJ,UAAU,IAAI,IAAI,CAACE,WAAW,IAAI,IAAI,EAAE;MAClE,MAAMgC,MAAM,GAAG,IAAI,CAAC9B,WAAW,CAAC+B,SAAS,CAAC,CAAC;MAC3C,MAAMC,MAAM,GAAG,EAAE;MACjB,OAAO,IAAI,EAAE;QACT,MAAM;UAAEC,IAAI;UAAEC;QAAM,CAAC,GAAG,MAAMJ,MAAM,CAACK,IAAI,CAAC,CAAC;QAC3C,IAAIF,IAAI,EACJ;QACJ,IAAIC,KAAK,EACLF,MAAM,CAACI,IAAI,CAACF,KAAK,CAAC;MAC1B;MACA,IAAIG,QAAQ,GAAG,CAAC;MAChB,KAAK,MAAMC,CAAC,IAAIN,MAAM,EAClBK,QAAQ,IAAIC,CAAC,CAAC9B,UAAU;MAC5B,MAAM+B,MAAM,GAAG,IAAIjB,UAAU,CAACe,QAAQ,CAAC;MACvC,IAAIG,MAAM,GAAG,CAAC;MACd,KAAK,MAAMF,CAAC,IAAIN,MAAM,EAAE;QACpBO,MAAM,CAAC1B,GAAG,CAACyB,CAAC,EAAEE,MAAM,CAAC;QACrBA,MAAM,IAAIF,CAAC,CAAC9B,UAAU;MAC1B;MACA,OAAO+B,MAAM,CAAClC,MAAM,CAACC,KAAK,CAACiC,MAAM,CAAChC,UAAU,EAAEgC,MAAM,CAAChC,UAAU,GAAGgC,MAAM,CAAC/B,UAAU,CAAC;IACxF;IACA,OAAO,IAAI,CAACU,aAAa,CAAC,CAAC,IAAI,IAAIhB,WAAW,CAAC,CAAC,CAAC;EACrD;EACA,MAAM4C,IAAIA,CAAA,EAAG;IACT,IAAI,CAACtB,gBAAgB,CAAC,CAAC;IACvB,IAAI,CAACxC,SAAS,GAAG,IAAI;IACrB;IACA,MAAM+D,OAAO,GAAG,IAAI,CAACnB,cAAc,CAAC,CAAC;IACrC,MAAMoB,WAAW,GAAG,IAAI,CAACrD,OAAO,CAACsD,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE;IAC1D,OAAO,IAAInC,IAAI,CAAC,CAACiC,OAAO,CAAC,EAAE;MAAErD,IAAI,EAAEsD;IAAY,CAAC,CAAC;EACrD;EACA,MAAM/B,KAAKA,CAAA,EAAG;IACV,IAAI,CAACO,gBAAgB,CAAC,CAAC;IACvB,IAAI,CAACxC,SAAS,GAAG,IAAI;IACrB,MAAMqB,MAAM,GAAG,IAAI,CAACa,aAAa,CAAC,CAAC,IAAI,IAAIhB,WAAW,CAAC,CAAC,CAAC;IACzD,OAAO,IAAIoB,UAAU,CAACjB,MAAM,CAAC;EACjC;EACA6C,KAAKA,CAAA,EAAG;IACJ,IAAI,IAAI,CAAClE,SAAS,EAAE;MAChB,MAAM,IAAIyC,SAAS,CAAC,mDAAmD,CAAC;IAC5E;IACA,OAAO,IAAI1C,aAAa,CAAC;MACrBM,GAAG,EAAE,IAAI,CAACA,GAAG;MACbE,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBC,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3BF,EAAE,EAAE,IAAI,CAACA,EAAE;MACXG,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3BE,OAAO,EAAE,IAAI,CAACA,OAAO;MACrBE,SAAS,EAAE,IAAI,CAACD,UAAU;MAC1BG,UAAU,EAAE,IAAI,CAACD,WAAW;MAC5BJ,IAAI,EAAE,IAAI,CAACA;IACf,CAAC,CAAC;EACN;EACA,MAAMyD,QAAQA,CAAA,EAAG;IACb,MAAM,IAAI1B,SAAS,CAAC,8CAA8C,CAAC;EACvE;EACA;EACA,OAAO2B,KAAKA,CAAA,EAAG;IACX,OAAO,IAAIrE,aAAa,CAAC;MACrBM,GAAG,EAAE,EAAE;MACPE,MAAM,EAAE,CAAC;MACTC,UAAU,EAAE,EAAE;MACdF,EAAE,EAAE,KAAK;MACTG,UAAU,EAAE,KAAK;MACjBE,OAAO,EAAE,EAAE;MACXD,IAAI,EAAE;IACV,CAAC,CAAC;EACN;EACA,OAAO+C,IAAIA,CAACY,IAAI,EAAElE,IAAI,EAAE;IACpB,MAAMc,IAAI,GAAG0C,IAAI,CAACW,SAAS,CAACD,IAAI,CAAC;IACjC,MAAM1D,OAAO,GAAG,IAAIjB,YAAY,CAACS,IAAI,EAAEQ,OAAO,CAAC;IAC/C,IAAI,CAACA,OAAO,CAACiB,GAAG,CAAC,cAAc,CAAC,EAAE;MAC9BjB,OAAO,CAACkB,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC;IACnD;IACA,OAAO,IAAI9B,aAAa,CAAC;MACrBM,GAAG,EAAE,EAAE;MACPE,MAAM,EAAEJ,IAAI,EAAEI,MAAM,IAAI,GAAG;MAC3BC,UAAU,EAAEL,IAAI,EAAEK,UAAU,IAAI,EAAE;MAClCF,EAAE,EAAE,CAACH,IAAI,EAAEI,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAACJ,IAAI,EAAEI,MAAM,IAAI,GAAG,IAAI,GAAG;MAC/DE,UAAU,EAAE,KAAK;MACjBE,OAAO;MACPI,UAAU,EAAEE;IAChB,CAAC,CAAC;EACN;EACA,OAAOsD,QAAQA,CAAClE,GAAG,EAAEE,MAAM,GAAG,GAAG,EAAE;IAC/B,MAAMiE,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAC/C,IAAI,CAACA,aAAa,CAACC,QAAQ,CAAClE,MAAM,CAAC,EAAE;MACjC,MAAM,IAAImE,UAAU,CAAC,4BAA4BnE,MAAM,oBAAoBiE,aAAa,CAACG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1G;IACA,MAAMhE,OAAO,GAAG,IAAIjB,YAAY,CAAC,CAAC;IAClCiB,OAAO,CAACkB,GAAG,CAAC,UAAU,EAAExB,GAAG,CAAC;IAC5B,OAAO,IAAIN,aAAa,CAAC;MACrBM,GAAG,EAAE,EAAE;MACPE,MAAM;MACNC,UAAU,EAAE,EAAE;MACdF,EAAE,EAAE,KAAK;MACTG,UAAU,EAAE,KAAK;MACjBE;IACJ,CAAC,CAAC;EACN;AACJ","ignoreList":[]}
|
|
2
|
+
AC,CAAC;EACJ;AACF","ignoreList":[]}
|
package/lib/module/fetch.js
CHANGED
|
@@ -398,6 +398,145 @@ async function resolveBlobBody(init) {
|
|
|
398
398
|
}
|
|
399
399
|
return init;
|
|
400
400
|
}
|
|
401
|
+
|
|
402
|
+
// http(s) -> native client; anything else is a local resource (hot path).
|
|
403
|
+
function isHttpUrl(url) {
|
|
404
|
+
if (url.startsWith('http://') || url.startsWith('https://')) return true;
|
|
405
|
+
const c = url.charCodeAt(0);
|
|
406
|
+
if (c !== 104 && c !== 72) return false; // not 'h'/'H'
|
|
407
|
+
return /^https?:/i.test(url);
|
|
408
|
+
}
|
|
409
|
+
function getUrlString(input) {
|
|
410
|
+
if (typeof input === 'string') return input;
|
|
411
|
+
if (input instanceof URL) return input.toString();
|
|
412
|
+
const u = input?.url;
|
|
413
|
+
return typeof u === 'string' ? u : String(input);
|
|
414
|
+
}
|
|
415
|
+
function base64ToBytes(b64) {
|
|
416
|
+
const decode = globalThis.atob;
|
|
417
|
+
if (typeof decode === 'function') {
|
|
418
|
+
const bin = decode(b64);
|
|
419
|
+
const out = new Uint8Array(bin.length);
|
|
420
|
+
for (let i = 0; i < bin.length; i++) out[i] = bin.charCodeAt(i);
|
|
421
|
+
return out;
|
|
422
|
+
}
|
|
423
|
+
// base64 fallback for runtimes without a global atob.
|
|
424
|
+
/* eslint-disable no-bitwise */
|
|
425
|
+
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
426
|
+
const clean = b64.replace(/[^A-Za-z0-9+/]/g, '');
|
|
427
|
+
const out = new Uint8Array(Math.floor(clean.length * 3 / 4));
|
|
428
|
+
let p = 0;
|
|
429
|
+
let buf = 0;
|
|
430
|
+
let bits = 0;
|
|
431
|
+
for (let i = 0; i < clean.length; i++) {
|
|
432
|
+
buf = buf << 6 | chars.indexOf(clean[i]);
|
|
433
|
+
bits += 6;
|
|
434
|
+
if (bits >= 8) {
|
|
435
|
+
bits -= 8;
|
|
436
|
+
out[p++] = buf >> bits & 0xff;
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
return out;
|
|
440
|
+
/* eslint-enable no-bitwise */
|
|
441
|
+
}
|
|
442
|
+
// Cached: our nitro-text-decoder if the app bundles it (aliased require keeps it optional, not a dep), else a global TextDecoder.
|
|
443
|
+
let _decoder;
|
|
444
|
+
function resolveTextDecoder() {
|
|
445
|
+
if (_decoder !== undefined) return _decoder;
|
|
446
|
+
try {
|
|
447
|
+
const dynamicRequire = require;
|
|
448
|
+
const mod = dynamicRequire('react-native-nitro-text-decoder');
|
|
449
|
+
if (mod && typeof mod.TextDecoder === 'function') {
|
|
450
|
+
_decoder = new mod.TextDecoder('utf-8', {
|
|
451
|
+
fatal: true
|
|
452
|
+
});
|
|
453
|
+
return _decoder;
|
|
454
|
+
}
|
|
455
|
+
} catch {
|
|
456
|
+
// optional, not bundled
|
|
457
|
+
}
|
|
458
|
+
const GlobalTextDecoder = globalThis.TextDecoder;
|
|
459
|
+
if (typeof GlobalTextDecoder === 'function') {
|
|
460
|
+
_decoder = new GlobalTextDecoder('utf-8', {
|
|
461
|
+
fatal: true
|
|
462
|
+
});
|
|
463
|
+
return _decoder;
|
|
464
|
+
}
|
|
465
|
+
_decoder = null;
|
|
466
|
+
return _decoder;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
// data: text via a TextDecoder; null (bytes-only) + a one-time warn if none.
|
|
470
|
+
let _warnedNoTextDecoder = false;
|
|
471
|
+
function decodeUtf8(bytes) {
|
|
472
|
+
const decoder = resolveTextDecoder();
|
|
473
|
+
if (decoder) {
|
|
474
|
+
try {
|
|
475
|
+
return decoder.decode(bytes);
|
|
476
|
+
} catch {
|
|
477
|
+
return null; // invalid UTF-8 -> keep bytes only
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
if (!_warnedNoTextDecoder) {
|
|
481
|
+
_warnedNoTextDecoder = true;
|
|
482
|
+
console.warn('[nitro-fetch] Reading a data: URL as text needs a TextDecoder. Install ' + 'react-native-nitro-text-decoder or expose a global TextDecoder. The ' + 'body is still available via response.arrayBuffer()/bytes().');
|
|
483
|
+
}
|
|
484
|
+
return null;
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
// Decode a data: URL into a synthetic 200 response, entirely in JS.
|
|
488
|
+
function decodeDataUrl(url) {
|
|
489
|
+
const comma = url.indexOf(',');
|
|
490
|
+
if (comma < 0) throw new TypeError('Failed to fetch: invalid data: URL');
|
|
491
|
+
const meta = url.slice(5, comma); // strip leading "data:"
|
|
492
|
+
const rawData = url.slice(comma + 1);
|
|
493
|
+
const isBase64 = /;base64\s*$/i.test(meta);
|
|
494
|
+
const mediaType = (isBase64 ? meta.replace(/;base64\s*$/i, '') : meta).trim() || 'text/plain;charset=US-ASCII';
|
|
495
|
+
let bodyString;
|
|
496
|
+
let bodyBytes;
|
|
497
|
+
let length;
|
|
498
|
+
if (isBase64) {
|
|
499
|
+
const bytes = base64ToBytes(rawData);
|
|
500
|
+
length = bytes.byteLength;
|
|
501
|
+
// bytes for arrayBuffer/bytes; string for text/json when a decoder exists.
|
|
502
|
+
bodyBytes = bytes.buffer;
|
|
503
|
+
const decoded = decodeUtf8(bytes);
|
|
504
|
+
if (decoded != null) bodyString = decoded;
|
|
505
|
+
} else {
|
|
506
|
+
bodyString = decodeURIComponent(rawData);
|
|
507
|
+
length = typeof TextEncoder !== 'undefined' ? new TextEncoder().encode(bodyString).length : bodyString.length;
|
|
508
|
+
}
|
|
509
|
+
return {
|
|
510
|
+
url,
|
|
511
|
+
status: 200,
|
|
512
|
+
statusText: 'OK',
|
|
513
|
+
ok: true,
|
|
514
|
+
redirected: false,
|
|
515
|
+
headers: [{
|
|
516
|
+
key: 'Content-Type',
|
|
517
|
+
value: mediaType
|
|
518
|
+
}, {
|
|
519
|
+
key: 'Content-Length',
|
|
520
|
+
value: String(length)
|
|
521
|
+
}],
|
|
522
|
+
bodyString,
|
|
523
|
+
bodyBytes
|
|
524
|
+
};
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
// Non-http(s): decode data: in JS, reject blob:, read file/content/path natively.
|
|
528
|
+
async function fetchLocalResource(req) {
|
|
529
|
+
const url = req.url;
|
|
530
|
+
if (url.startsWith('data:')) return decodeDataUrl(url);
|
|
531
|
+
if (url.startsWith('blob:')) {
|
|
532
|
+
throw new TypeError('nitro-fetch cannot read blob: URLs (the React Native blob registry is not ' + 'reachable from native). Read blobs with the platform fetch/FileReader instead.');
|
|
533
|
+
}
|
|
534
|
+
ensureClient();
|
|
535
|
+
if (!client || typeof client.request !== 'function') {
|
|
536
|
+
throw new Error('NitroFetch client not available');
|
|
537
|
+
}
|
|
538
|
+
return client.request(req);
|
|
539
|
+
}
|
|
401
540
|
async function nitroFetchRaw(input, init) {
|
|
402
541
|
const signal = init?.signal;
|
|
403
542
|
|
|
@@ -435,6 +574,11 @@ async function nitroFetchRaw(input, init) {
|
|
|
435
574
|
}
|
|
436
575
|
const req = buildNitroRequest(input, init);
|
|
437
576
|
|
|
577
|
+
// Route non-http(s) (data:/file://content://scheme-less) off the HTTP client.
|
|
578
|
+
if (!isHttpUrl(req.url)) {
|
|
579
|
+
return fetchLocalResource(req);
|
|
580
|
+
}
|
|
581
|
+
|
|
438
582
|
// Inspector: record start (zero cost when disabled — single boolean check)
|
|
439
583
|
let inspectorId;
|
|
440
584
|
if (NetworkInspector.isEnabled()) {
|
|
@@ -594,7 +738,9 @@ export async function nitroFetch(input, init) {
|
|
|
594
738
|
cache: init?.cache ?? input.cache
|
|
595
739
|
};
|
|
596
740
|
}
|
|
597
|
-
|
|
741
|
+
|
|
742
|
+
// Streaming is http(s)-only; local URLs fall through to nitroFetchRaw (check runs only when streaming).
|
|
743
|
+
if (init?.stream === true && isHttpUrl(getUrlString(input))) {
|
|
598
744
|
return nitroStreamFetch(input, init);
|
|
599
745
|
}
|
|
600
746
|
const redirectOption = init?.redirect ?? 'follow';
|