react-native-nitro-fetch 0.1.2 → 0.1.3
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 +88 -81
- package/android/build.gradle +1 -0
- package/android/src/main/java/com/margelo/nitro/nitrofetch/AutoPrefetcher.kt +8 -6
- package/android/src/main/java/com/margelo/nitro/nitrofetch/NitroFetchClient.kt +1 -1
- package/lib/module/fetch.js +3 -0
- package/lib/module/fetch.js.map +1 -1
- package/lib/typescript/src/fetch.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/fetch.ts +3 -0
- package/src/NitroFetch.nitro.js +0 -2
- package/src/NitroInstances.js +0 -3
- package/src/fetch.js +0 -377
- package/src/index.js +0 -8
package/README.md
CHANGED
|
@@ -1,127 +1,136 @@
|
|
|
1
|
-
<
|
|
2
|
-
<
|
|
3
|
-
|
|
1
|
+
<a href="https://margelo.com">
|
|
2
|
+
<picture>
|
|
3
|
+
<source media="(prefers-color-scheme: dark)" srcset="./docs/static/img/banner-nitro-modules-dark.png" />
|
|
4
|
+
<source media="(prefers-color-scheme: light)" srcset="./docs/static/img/banner-nitro-modules-light.png" />
|
|
5
|
+
<img alt="Nitro Modules" src="./docs/static/img/banner-nitro-modules-light.png" />
|
|
6
|
+
</picture>
|
|
7
|
+
</a>
|
|
4
8
|
|
|
5
|
-
|
|
9
|
+
<br />
|
|
6
10
|
|
|
7
|
-
|
|
11
|
+
**react-native-nitro-fetch** is a general purpose network fetching library for React Native. It can be used as a drop-in replacement for the built-in `fetch(...)` method, as well as provide additional features like prefetching and workletized mappers.
|
|
8
12
|
|
|
9
|
-
##
|
|
13
|
+
## Features
|
|
10
14
|
|
|
11
|
-
|
|
15
|
+
- 🔧 Drop-in replacement for the built-in `fetch(...)` method
|
|
16
|
+
- ⚡️ Fast HTTP stack using [Cronet](https://chromium.googlesource.com/chromium/src/+/lkgr/components/cronet/README.md) on Android, and [URLSession](https://developer.apple.com/documentation/Foundation/URLSession) on iOS
|
|
17
|
+
- 💪 Supports [HTTP/2](https://en.wikipedia.org/wiki/HTTP/2), [QUIC](https://www.chromium.org/quic/), [Brotli](https://github.com/google/brotli), and disk cache
|
|
18
|
+
- ⏰ Prefetching on app-startup for even faster initialization
|
|
19
|
+
- 🧵 Worklet support for parallel data mapping without blocking the JS Thread
|
|
20
|
+
- 🔥 Powered by [Nitro Modules](https://github.com/mrousavy/nitro)
|
|
12
21
|
|
|
13
22
|
## Installation
|
|
14
23
|
|
|
15
24
|
```sh
|
|
16
|
-
npm
|
|
25
|
+
npm i react-native-nitro-fetch react-native-nitro-modules
|
|
17
26
|
```
|
|
18
27
|
|
|
19
|
-
|
|
28
|
+
> [Nitro Modules](https://github.com/mrousavy/nitro) requires react-native 0.75+ or higher
|
|
20
29
|
|
|
21
|
-
##
|
|
30
|
+
## Usage
|
|
31
|
+
|
|
32
|
+
To simply fetch data, import the `fetch(...)` method from `react-native-nitro-fetch`:
|
|
22
33
|
|
|
23
34
|
```ts
|
|
24
|
-
import { fetch } from 'react-native-nitro-fetch'
|
|
35
|
+
import { fetch } from 'react-native-nitro-fetch'
|
|
25
36
|
|
|
26
|
-
const res = await fetch('https://httpbin.org/get')
|
|
27
|
-
const json = await res.json()
|
|
37
|
+
const res = await fetch('https://httpbin.org/get')
|
|
38
|
+
const json = await res.json()
|
|
28
39
|
```
|
|
29
40
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
- Nitro-backed `fetch`: drop-in replacement for global fetch.
|
|
33
|
-
- Android Cronet: fast HTTP stack via `org.chromium.net:cronet-embedded` (already wired in `android/build.gradle`).
|
|
34
|
-
- Prefetch: start a background request tied to a `prefetchKey` and serve it later.
|
|
35
|
-
- Android auto-prefetch: enqueue requests to MMKV so they warm up on next app start.
|
|
36
|
-
- Worklets helper: run mapping/parsing off the JS thread with `react-native-worklets-core`.
|
|
41
|
+
This can be used as a drop-in-replacement for the built-in `fetch(...)` method.
|
|
37
42
|
|
|
38
|
-
|
|
43
|
+
### Prefetching in JS
|
|
39
44
|
|
|
40
|
-
|
|
41
|
-
- App start wins: With auto‑prefetch + MMKV, we can begin fetching immediately at process start. In our measurements on mid‑range Android devices (e.g., Samsung A16), this starts at least ~220 ms earlier than initiating the same request from JS after React is up.
|
|
42
|
-
- UX hooks: Kick off prefetch on navigation intent (button press) and serve the result when the destination screen mounts.
|
|
45
|
+
You can prefetch a URL in JS, which keeps the result cached for the next actual `fetch(...)` call - this can be used shortly before navigating to a new screen to have results hot & ready:
|
|
43
46
|
|
|
44
|
-
|
|
47
|
+
```ts
|
|
48
|
+
import { prefetch } from 'react-native-nitro-fetch'
|
|
45
49
|
|
|
46
|
-
|
|
50
|
+
await prefetch('https://httpbin.org/uuid', {
|
|
51
|
+
headers: { prefetchKey: 'uuid' }
|
|
52
|
+
})
|
|
53
|
+
```
|
|
47
54
|
|
|
48
|
-
|
|
49
|
-
- Efficiency: Advanced connection management, TLS/ALPN, Brotli, and robust on‑disk caching.
|
|
50
|
-
- Battle‑tested: Built on Chromium’s networking stack (the same tech behind Chrome) and widely adopted across the ecosystem, including the Flutter community.
|
|
55
|
+
Then, on the new screen that was navigated to:
|
|
51
56
|
|
|
52
|
-
|
|
57
|
+
```ts
|
|
58
|
+
import { fetch } from 'react-native-nitro-fetch'
|
|
53
59
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
60
|
+
const res = await fetch('https://httpbin.org/uuid', {
|
|
61
|
+
headers: { prefetchKey: 'uuid' }
|
|
62
|
+
})
|
|
63
|
+
console.log('prefetched header:', res.headers.get('nitroPrefetched'))
|
|
64
|
+
```
|
|
59
65
|
|
|
60
|
-
|
|
66
|
+
### Prefetching for the next app launch
|
|
61
67
|
|
|
62
|
-
|
|
68
|
+
Prefetching data on app launch (or _process start_) will make it hot & ready once your JS code actually runs. Call `prefetchOnAppStart(...)` to enqueue a prefetch for the **next** app start:
|
|
63
69
|
|
|
64
70
|
```ts
|
|
65
|
-
import {
|
|
66
|
-
|
|
67
|
-
|
|
71
|
+
import { prefetchOnAppStart } from 'react-native-nitro-fetch'
|
|
72
|
+
|
|
73
|
+
await prefetchOnAppStart('https://httpbin.org/uuid', {
|
|
74
|
+
prefetchKey: 'uuid'
|
|
75
|
+
})
|
|
68
76
|
```
|
|
69
77
|
|
|
70
|
-
|
|
78
|
+
Then, once the app opens the next time, a call to `fetch(...)` might resolve faster since it will contain already cached results:
|
|
71
79
|
|
|
72
80
|
```ts
|
|
73
|
-
import { fetch
|
|
81
|
+
import { fetch } from 'react-native-nitro-fetch'
|
|
74
82
|
|
|
75
|
-
await
|
|
76
|
-
|
|
77
|
-
|
|
83
|
+
const res = await fetch('https://httpbin.org/uuid', {
|
|
84
|
+
headers: { prefetchKey: 'uuid' }
|
|
85
|
+
})
|
|
86
|
+
console.log('prefetched header:', res.headers.get('nitroPrefetched'))
|
|
78
87
|
```
|
|
79
88
|
|
|
80
|
-
|
|
89
|
+
In our tests, prefetching alone yielded a **~220 ms** faster TTI (time-to-interactive) time! 🤯
|
|
81
90
|
|
|
82
|
-
|
|
83
|
-
import { prefetchOnAppStart } from 'react-native-nitro-fetch';
|
|
84
|
-
await prefetchOnAppStart('https://httpbin.org/uuid', { prefetchKey: 'uuid' });
|
|
85
|
-
```
|
|
91
|
+
### Worklet Mapping
|
|
86
92
|
|
|
87
|
-
|
|
93
|
+
Since Nitro Fetch is a [Nitro Module](https://nitro.margelo.com), it can be used from Worklets.
|
|
94
|
+
This can be useful to parse data without blocking the main JS-Thread:
|
|
88
95
|
|
|
89
96
|
```ts
|
|
90
|
-
import { nitroFetchOnWorklet } from 'react-native-nitro-fetch'
|
|
91
|
-
|
|
92
|
-
const
|
|
93
|
-
'
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
97
|
+
import { nitroFetchOnWorklet } from 'react-native-nitro-fetch'
|
|
98
|
+
|
|
99
|
+
const data = await nitroFetchOnWorklet(
|
|
100
|
+
'https://httpbin.org/get',
|
|
101
|
+
undefined,
|
|
102
|
+
(payload) => {
|
|
103
|
+
'worklet'
|
|
104
|
+
return JSON.parse(payload.bodyString ?? '{}')
|
|
105
|
+
}
|
|
106
|
+
)
|
|
98
107
|
```
|
|
99
108
|
|
|
100
|
-
##
|
|
109
|
+
## Project Status
|
|
101
110
|
|
|
102
|
-
|
|
103
|
-
- iOS: Uses a native `URLSession` client for requests and prefetch (in‑memory cache). Cronet integration is still planned for future releases.
|
|
111
|
+
Nitro Fetch is currently in an alpha stage. You can adopt it in production, but keep in mind that the library and it's API is subject to change.
|
|
104
112
|
|
|
105
113
|
## Limitations & Alternatives
|
|
106
114
|
|
|
107
|
-
- HTTP streaming
|
|
108
|
-
- WebSockets
|
|
115
|
+
- [HTTP streaming](https://developer.mozilla.org/en-US/docs/Web/API/Streams_API) is not yet supported. As an alternative, use Expo's [expo-fetch](https://docs.expo.dev/versions/latest/sdk/expo/). Streaming is on the roadmap.
|
|
116
|
+
- [WebSockets](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket) are not supported. For high‑performance sockets and binary streams, consider using [react-native-fast-io](https://github.com/callstackincubator/react-native-fast-io) by our friends at Callstack.
|
|
109
117
|
|
|
110
118
|
## Documentation
|
|
111
119
|
|
|
112
|
-
- Getting Started
|
|
113
|
-
- API Reference
|
|
114
|
-
- Android Details
|
|
115
|
-
- iOS Details
|
|
116
|
-
- Prefetch & Auto-Prefetch
|
|
117
|
-
- Worklets
|
|
118
|
-
- Troubleshooting
|
|
119
|
-
- Cronet (Android) notes
|
|
120
|
-
- Cronet (iOS) notes
|
|
120
|
+
- [Getting Started](docs/getting-started.md)
|
|
121
|
+
- [API Reference](docs/api.md)
|
|
122
|
+
- [Android Details](docs/android.md)
|
|
123
|
+
- [iOS Details](docs/ios.md)
|
|
124
|
+
- [Prefetch & Auto-Prefetch](docs/prefetch.md)
|
|
125
|
+
- [Worklets](docs/worklets.md)
|
|
126
|
+
- [Troubleshooting](docs/troubleshooting.md)
|
|
127
|
+
- [Cronet (Android) notes](docs/cronet-android.md)
|
|
128
|
+
- [Cronet (iOS) notes](docs/cronet-ios.md)
|
|
121
129
|
|
|
122
|
-
##
|
|
130
|
+
## Margelo
|
|
123
131
|
|
|
124
|
-
|
|
132
|
+
Nitro Fetch is built with ❤️ by Margelo.
|
|
133
|
+
We build fast and beautiful apps. Contact us at [margelo.com](https://margelo.com) for high-end consultancy services.
|
|
125
134
|
|
|
126
135
|
## Contributing
|
|
127
136
|
|
|
@@ -131,14 +140,12 @@ Need top‑notch React Native help or custom networking solutions? Reach out to
|
|
|
131
140
|
|
|
132
141
|
## Authors
|
|
133
142
|
|
|
134
|
-
- [Szymon Kapala](https://
|
|
135
|
-
- [Alex Shumihin](https://
|
|
136
|
-
- [Ronald Goedeke](https://
|
|
143
|
+
- [Szymon Kapala](https://github.com/Szymon20000)
|
|
144
|
+
- [Alex Shumihin](https://github.com/pioner92)
|
|
145
|
+
- [Ronald Goedeke](https://github.com/ronickg)
|
|
146
|
+
- [Marc Rousavy](https://github.com/mrousavy)
|
|
137
147
|
|
|
138
148
|
## License
|
|
139
149
|
|
|
140
150
|
MIT
|
|
141
151
|
|
|
142
|
-
---
|
|
143
|
-
|
|
144
|
-
Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
|
package/android/build.gradle
CHANGED
|
@@ -117,6 +117,7 @@ dependencies {
|
|
|
117
117
|
implementation "com.facebook.react:react-android"
|
|
118
118
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
119
119
|
implementation project(":react-native-nitro-modules")
|
|
120
|
+
implementation("com.tencent:mmkv:1.3.14")// or latest
|
|
120
121
|
// Provide org.chromium.net Java API for CronetEngine in Kotlin
|
|
121
122
|
// Cronet
|
|
122
123
|
api "org.chromium.net:cronet-embedded:${cronetVersion}"
|
|
@@ -4,6 +4,8 @@ import android.app.Application
|
|
|
4
4
|
import org.json.JSONArray
|
|
5
5
|
import org.json.JSONObject
|
|
6
6
|
import java.util.concurrent.CompletableFuture
|
|
7
|
+
import com.tencent.mmkv.MMKV;
|
|
8
|
+
|
|
7
9
|
|
|
8
10
|
object AutoPrefetcher {
|
|
9
11
|
@Volatile private var initialized = false
|
|
@@ -74,12 +76,12 @@ object AutoPrefetcher {
|
|
|
74
76
|
|
|
75
77
|
private fun getMMKV(app: Application): Any? {
|
|
76
78
|
return try {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
79
|
+
MMKV.initialize(app);
|
|
80
|
+
|
|
81
|
+
return MMKV.defaultMMKV()
|
|
82
|
+
} catch (_: Throwable) {
|
|
83
|
+
null
|
|
84
|
+
}
|
|
83
85
|
}
|
|
84
86
|
|
|
85
87
|
private fun invokeMMKVDecodeString(mmkv: Any, key: String): String? {
|
|
@@ -129,7 +129,7 @@ class NitroFetchClient(private val engine: CronetEngine, private val executor: E
|
|
|
129
129
|
val bodyStr = req.bodyString
|
|
130
130
|
if ((bodyBytes != null) || !bodyStr.isNullOrEmpty()) {
|
|
131
131
|
val body: ByteArray = when {
|
|
132
|
-
bodyBytes != null -> bodyBytes.getBuffer(true).toByteArray()
|
|
132
|
+
bodyBytes != null -> ByteArray(1);//bodyBytes.getBuffer(true).toByteArray()
|
|
133
133
|
!bodyStr.isNullOrEmpty() -> bodyStr!!.toByteArray(Charsets.UTF_8)
|
|
134
134
|
else -> ByteArray(0)
|
|
135
135
|
}
|
package/lib/module/fetch.js
CHANGED
|
@@ -255,6 +255,9 @@ export async function prefetchOnAppStart(input, init) {
|
|
|
255
255
|
} catch {
|
|
256
256
|
arr = [];
|
|
257
257
|
}
|
|
258
|
+
if (arr.some(e => e && e.prefetchKey === prefetchKey)) {
|
|
259
|
+
arr = arr.filter(e => e && e.prefetchKey !== prefetchKey);
|
|
260
|
+
}
|
|
258
261
|
arr.push(entry);
|
|
259
262
|
storage.set(KEY, JSON.stringify(arr));
|
|
260
263
|
} catch (e) {
|
package/lib/module/fetch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NitroFetch","NitroFetchSingleton","headersToPairs","headers","undefined","pairs","Headers","forEach","v","k","push","key","value","Array","isArray","entry","length","String","Object","entries","normalizeBody","body","bodyString","URLSearchParams","toString","ArrayBuffer","bodyBytes","isView","view","buffer","slice","byteOffset","byteLength","Error","pairsToHeaders","h","append","NitroFetchHybrid","client","ensureClient","createClient","err","console","error","buildNitroRequest","input","init","url","method","headersInit","URL","normalized","toUpperCase","followRedirects","nitroFetchRaw","hasNative","res","fetch","bytes","arrayBuffer","status","statusText","ok","redirected","req","request","nitroFetch","headersObj","reduce","acc","light","text","json","JSON","parse","prefetch","hasKey","some","toLowerCase","fromInit","prefetchKey","concat","finalHasKey","prefetchOnAppStart","fromHeader","find","MMKV","require","storage","KEY","arr","raw","getString","set","stringify","e","warn","removeFromAutoPrefetch","next","filter","delete","removeAllFromAutoprefetch","nitroRuntime","WorkletsRef","ensureWorkletRuntime","name","log","Worklets","createRuntime","getWorklets","nitroFetchOnWorklet","mapWorklet","options","preferBytes","rt","runtimeName","run","payload","Promise","resolve","reject","map","headersPairs","out","runOnJS","x","y"],"sourceRoot":"../../src","sources":["fetch.ts"],"mappings":";;AAMA,SAASA,UAAU,IAAIC,mBAAmB,QAAQ,qBAAkB;;AAEpE;;AAEA,SAASC,cAAcA,CAACC,OAAqB,EAA6B;EACxE,SAAS;;EACT,IAAI,CAACA,OAAO,EAAE,OAAOC,SAAS;EAC9B,MAAMC,KAAoB,GAAG,EAAE;EAC/B,IAAIF,OAAO,YAAYG,OAAO,EAAE;IAC9BH,OAAO,CAACI,OAAO,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKJ,KAAK,CAACK,IAAI,CAAC;MAAEC,GAAG,EAAEF,CAAC;MAAEG,KAAK,EAAEJ;IAAE,CAAC,CAAC,CAAC;IAC3D,OAAOH,KAAK;EACd;EACA,IAAIQ,KAAK,CAACC,OAAO,CAACX,OAAO,CAAC,EAAE;IAC1B;IACA,KAAK,MAAMY,KAAK,IAAIZ,OAAO,EAAW;MACpC,IAAIU,KAAK,CAACC,OAAO,CAACC,KAAK,CAAC,IAAIA,KAAK,CAACC,MAAM,IAAI,CAAC,EAAE;QAC7CX,KAAK,CAACK,IAAI,CAAC;UAAEC,GAAG,EAAEM,MAAM,CAACF,KAAK,CAAC,CAAC,CAAC,CAAC;UAAEH,KAAK,EAAEK,MAAM,CAACF,KAAK,CAAC,CAAC,CAAC;QAAE,CAAC,CAAC;MAChE,CAAC,MAAM,IAAIA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAIA,KAAK,IAAI,OAAO,IAAIA,KAAK,EAAE;QACnFV,KAAK,CAACK,IAAI,CAACK,KAAoB,CAAC;MAClC;IACF;IACA,OAAOV,KAAK;EACd;EACA;EACA,KAAK,MAAM,CAACI,CAAC,EAAED,CAAC,CAAC,IAAIU,MAAM,CAACC,OAAO,CAAChB,OAAO,CAAC,EAAE;IAC5CE,KAAK,CAACK,IAAI,CAAC;MAAEC,GAAG,EAAEF,CAAC;MAAEG,KAAK,EAAEK,MAAM,CAACT,CAAC;IAAE,CAAC,CAAC;EAC1C;EACA,OAAOH,KAAK;AACd;AAEA,SAASe,aAAaA,CAACC,IAAiC,EAAgE;EACtH,SAAS;;EACT,IAAIA,IAAI,IAAI,IAAI,EAAE,OAAOjB,SAAS;EAClC,IAAI,OAAOiB,IAAI,KAAK,QAAQ,EAAE,OAAO;IAAEC,UAAU,EAAED;EAAK,CAAC;EACzD,IAAIA,IAAI,YAAYE,eAAe,EAAE,OAAO;IAAED,UAAU,EAAED,IAAI,CAACG,QAAQ,CAAC;EAAE,CAAC;EAC3E,IAAI,OAAOC,WAAW,KAAK,WAAW,IAAIJ,IAAI,YAAYI,WAAW,EAAE,OAAO;IAAEC,SAAS,EAAEL;EAAK,CAAC;EACjG,IAAII,WAAW,CAACE,MAAM,CAACN,IAAI,CAAC,EAAE;IAC5B,MAAMO,IAAI,GAAGP,IAAuB;IACpC;IACA;IACA,OAAO;MAAEK,SAAS,EAAEE,IAAI,CAACC,MAAM,CAACC,KAAK,CAACF,IAAI,CAACG,UAAU,EAAEH,IAAI,CAACG,UAAU,GAAGH,IAAI,CAACI,UAAU;IAAE,CAAC;EAC7F;EACA;EACA,MAAM,IAAIC,KAAK,CAAC,uCAAuC,CAAC;AAC1D;;AAEA;AACA,SAASC,cAAcA,CAAC7B,KAAoB,EAAW;EACrD,SAAS;;EACT,MAAM8B,CAAC,GAAG,IAAI7B,OAAO,CAAC,CAAC;EACvB,KAAK,MAAM;IAAEK,GAAG;IAAEC;EAAM,CAAC,IAAIP,KAAK,EAAE8B,CAAC,CAACC,MAAM,CAACzB,GAAG,EAAEC,KAAK,CAAC;EACxD,OAAOuB,CAAC;AACV;AAEA,MAAME,gBAAkC,GAAGpC,mBAAmB;AAE9D,IAAIqC,MAAgE;AAEpE,SAASC,YAAYA,CAAA,EAAG;EACtB,IAAID,MAAM,EAAE,OAAOA,MAAM;EACzB,IAAI;IACFA,MAAM,GAAGD,gBAAgB,CAACG,YAAY,CAAC,CAAC;EAC1C,CAAC,CAAC,OAAOC,GAAG,EAAE;IACZC,OAAO,CAACC,KAAK,CAAC,oCAAoC,EAAEF,GAAG,CAAC;IACxD;EACF;EACA,OAAOH,MAAM;AACf;AAEA,SAASM,iBAAiBA,CAACC,KAAwB,EAAEC,IAAkB,EAAgB;EACrF,SAAS;;EACT,IAAIC,GAAW;EACf,IAAIC,MAA0B;EAC9B,IAAIC,WAAoC;EACxC,IAAI5B,IAAiC;EAErC,IAAI,OAAOwB,KAAK,KAAK,QAAQ,IAAIA,KAAK,YAAYK,GAAG,EAAE;IACrDH,GAAG,GAAG9B,MAAM,CAAC4B,KAAK,CAAC;IACnBG,MAAM,GAAGF,IAAI,EAAEE,MAAM;IACrBC,WAAW,GAAGH,IAAI,EAAE3C,OAAO;IAC3BkB,IAAI,GAAGyB,IAAI,EAAEzB,IAAI,IAAI,IAAI;EAC3B,CAAC,MAAM;IACL;IACA0B,GAAG,GAAGF,KAAK,CAACE,GAAG;IACfC,MAAM,GAAGH,KAAK,CAACG,MAAM;IACrBC,WAAW,GAAGJ,KAAK,CAAC1C,OAAc;IAClC;IACAkB,IAAI,GAAGyB,IAAI,EAAEzB,IAAI,IAAI,IAAI;EAC3B;EAEA,MAAMlB,OAAO,GAAGD,cAAc,CAAC+C,WAAW,CAAC;EAC3C,MAAME,UAAU,GAAG/B,aAAa,CAACC,IAAI,CAAC;EAEtC,OAAO;IACL0B,GAAG;IACHC,MAAM,EAAGA,MAAM,EAAEI,WAAW,CAAC,CAAC,IAAY,KAAK;IAC/CjD,OAAO;IACPmB,UAAU,EAAE6B,UAAU,EAAE7B,UAAU;IAClCI,SAAS,EAAE,EAAE;IAAC;IACd2B,eAAe,EAAE;EACnB,CAAC;AACH;AAEA,eAAeC,aAAaA,CAACT,KAAwB,EAAEC,IAAkB,EAA0B;EACjG,SAAS;;EACT,MAAMS,SAAS,GAAG,OAAQlB,gBAAgB,EAAUG,YAAY,KAAK,UAAU;EAC/E,IAAI,CAACe,SAAS,EAAE;IACd;IACA;IACA,MAAMC,GAAG,GAAG,MAAMC,KAAK,CAACZ,KAAK,EAASC,IAAI,CAAC;IAC3C,MAAMC,GAAG,GAAIS,GAAG,CAAST,GAAG,IAAI9B,MAAM,CAAC4B,KAAK,CAAC;IAC7C,MAAMa,KAAK,GAAG,MAAMF,GAAG,CAACG,WAAW,CAAC,CAAC;IACrC,MAAMxD,OAAsB,GAAG,EAAE;IACjCqD,GAAG,CAACrD,OAAO,CAACI,OAAO,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKN,OAAO,CAACO,IAAI,CAAC;MAAEC,GAAG,EAAEF,CAAC;MAAEG,KAAK,EAAEJ;IAAE,CAAC,CAAC,CAAC;IACjE,OAAO;MACLuC,GAAG;MACHa,MAAM,EAAEJ,GAAG,CAACI,MAAM;MAClBC,UAAU,EAAEL,GAAG,CAACK,UAAU;MAC1BC,EAAE,EAAEN,GAAG,CAACM,EAAE;MACVC,UAAU,EAAGP,GAAG,CAASO,UAAU,IAAI,KAAK;MAC5C5D,OAAO;MACPuB,SAAS,EAAEgC,KAAK;MAChBpC,UAAU,EAAElB;IACd,CAAC,CAAyB,CAAC;EAC7B;EAEA,MAAM4D,GAAG,GAAGpB,iBAAiB,CAACC,KAAK,EAAEC,IAAI,CAAC;EAC1CP,YAAY,CAAC,CAAC;EACd,IAAI,CAACD,MAAM,IAAI,OAAQA,MAAM,CAAS2B,OAAO,KAAK,UAAU,EAAE,MAAM,IAAIhC,KAAK,CAAC,iCAAiC,CAAC;EAChH,MAAMuB,GAAkB,GAAG,MAAMlB,MAAM,CAAC2B,OAAO,CAACD,GAAG,CAAC;EACpD,OAAOR,GAAG;AACZ;AAEA,OAAO,eAAeU,UAAUA,CAACrB,KAAwB,EAAEC,IAAkB,EAAqB;EAChG,SAAS;;EACT;EACA,MAAMS,SAAS,GAAG,OAAQlB,gBAAgB,EAAUG,YAAY,KAAK,UAAU;EAC/E,IAAI,CAACe,SAAS,EAAE;IACd;IACA,OAAOE,KAAK,CAACZ,KAAK,EAASC,IAAI,CAAC;EAClC;EAEA,MAAMU,GAAG,GAAG,MAAMF,aAAa,CAACT,KAAK,EAAEC,IAAI,CAAC;;EAE5C;EACA,MAAMqB,UAAU,GAAGX,GAAG,CAACrD,OAAO,CAACiE,MAAM,CAAC,CAACC,GAAG,EAAE;IAAE1D,GAAG;IAAEC;EAAM,CAAC,KAAK;IACzDyD,GAAG,CAAC1D,GAAG,CAAC,GAAGC,KAAK;IAChB,OAAOyD,GAAG;EACZ,CAAC,EAAE,CAAC,CAA2B,CAAC;EAEpC,MAAMC,KAAU,GAAG;IACjBvB,GAAG,EAAES,GAAG,CAACT,GAAG;IACZe,EAAE,EAAEN,GAAG,CAACM,EAAE;IACVF,MAAM,EAAEJ,GAAG,CAACI,MAAM;IAClBC,UAAU,EAAEL,GAAG,CAACK,UAAU;IAC1BE,UAAU,EAAEP,GAAG,CAACO,UAAU;IAC1B5D,OAAO,EAAEgE,UAAU;IACnBR,WAAW,EAAE,MAAAA,CAAA,KAAYH,GAAG,CAAC9B,SAAS;IACtC6C,IAAI,EAAE,MAAAA,CAAA,KAAYf,GAAG,CAAClC,UAAU;IAChCkD,IAAI,EAAE,MAAAA,CAAA,KAAYC,IAAI,CAACC,KAAK,CAAClB,GAAG,CAAClC,UAAU,IAAI,IAAI;EACrD,CAAC;EACD,OAAOgD,KAAK;AACd;;AAEA;AACA,OAAO,eAAeK,QAAQA,CAAC9B,KAAwB,EAAEC,IAAkB,EAAiB;EAC1F;EACA,MAAMS,SAAS,GAAG,OAAQlB,gBAAgB,EAAUG,YAAY,KAAK,UAAU;EAC/E,IAAI,CAACe,SAAS,EAAE;;EAEhB;EACA,MAAMS,GAAG,GAAGpB,iBAAiB,CAACC,KAAK,EAAEC,IAAI,CAAC;EAC1C,MAAM8B,MAAM,GAAGZ,GAAG,CAAC7D,OAAO,EAAE0E,IAAI,CAAC1C,CAAC,IAAIA,CAAC,CAACxB,GAAG,CAACmE,WAAW,CAAC,CAAC,KAAK,aAAa,CAAC,IAAI,KAAK;EACrF;EACA,MAAMC,QAAQ,GAAIjC,IAAI,EAAUkC,WAAiC;EACjE,IAAI,CAACJ,MAAM,IAAIG,QAAQ,EAAE;IACvBf,GAAG,CAAC7D,OAAO,GAAG,CAAC6D,GAAG,CAAC7D,OAAO,IAAI,EAAE,EAAE8E,MAAM,CAAC,CAAC;MAAEtE,GAAG,EAAE,aAAa;MAAEC,KAAK,EAAEmE;IAAS,CAAC,CAAC,CAAC;EACrF;EACA,MAAMG,WAAW,GAAGlB,GAAG,CAAC7D,OAAO,EAAE0E,IAAI,CAAC1C,CAAC,IAAIA,CAAC,CAACxB,GAAG,CAACmE,WAAW,CAAC,CAAC,KAAK,aAAa,CAAC;EACjF,IAAI,CAACI,WAAW,EAAE;IAChB,MAAM,IAAIjD,KAAK,CAAC,4CAA4C,CAAC;EAC/D;;EAEA;EACAM,YAAY,CAAC,CAAC;EACd,IAAI,CAACD,MAAM,IAAI,OAAQA,MAAM,CAASqC,QAAQ,KAAK,UAAU,EAAE;EAC/D,MAAMrC,MAAM,CAACqC,QAAQ,CAACX,GAAG,CAAC;AAC5B;;AAEA;AACA;AACA,OAAO,eAAemB,kBAAkBA,CACtCtC,KAAwB,EACxBC,IAA6C,EAC9B;EACf;EACA,MAAMkB,GAAG,GAAGpB,iBAAiB,CAACC,KAAK,EAAEC,IAAI,CAAC;EAC1C,MAAMsC,UAAU,GAAGpB,GAAG,CAAC7D,OAAO,EAAEkF,IAAI,CAAClD,CAAC,IAAIA,CAAC,CAACxB,GAAG,CAACmE,WAAW,CAAC,CAAC,KAAK,aAAa,CAAC,EAAElE,KAAK;EACvF,MAAMmE,QAAQ,GAAIjC,IAAI,EAAUkC,WAAiC;EACjE,MAAMA,WAAW,GAAGI,UAAU,IAAIL,QAAQ;EAC1C,IAAI,CAACC,WAAW,EAAE;IAChB,MAAM,IAAI/C,KAAK,CAAC,0EAA0E,CAAC;EAC7F;;EAEA;EACA,MAAMkC,UAAU,GAAG,CAACH,GAAG,CAAC7D,OAAO,IAAI,EAAE,EAAEiE,MAAM,CAAC,CAACC,GAAG,EAAE;IAAE1D,GAAG;IAAEC;EAAM,CAAC,KAAK;IACrEyD,GAAG,CAACpD,MAAM,CAACN,GAAG,CAAC,CAAC,GAAGM,MAAM,CAACL,KAAK,CAAC;IAChC,OAAOyD,GAAG;EACZ,CAAC,EAAE,CAAC,CAA2B,CAAC;EAEhC,MAAMtD,KAAK,GAAG;IACZgC,GAAG,EAAEiB,GAAG,CAACjB,GAAG;IACZiC,WAAW;IACX7E,OAAO,EAAEgE;EACX,CAAU;;EAEV;EACA,IAAI;IACF;IACA;IACA,MAAM;MAAEmB;IAAK,CAAC,GAAGC,OAAO,CAAC,mBAAmB,CAAC;IAC7C,MAAMC,OAAO,GAAG,IAAIF,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAMG,GAAG,GAAG,+BAA+B;IAC3C,IAAIC,GAAU,GAAG,EAAE;IACnB,IAAI;MACF,MAAMC,GAAG,GAAGH,OAAO,CAACI,SAAS,CAACH,GAAG,CAAC;MAClC,IAAIE,GAAG,EAAED,GAAG,GAAGjB,IAAI,CAACC,KAAK,CAACiB,GAAG,CAAC;MAC9B,IAAI,CAAC9E,KAAK,CAACC,OAAO,CAAC4E,GAAG,CAAC,EAAEA,GAAG,GAAG,EAAE;IACnC,CAAC,CAAC,MAAM;MACNA,GAAG,GAAG,EAAE;IACV;IACAA,GAAG,CAAChF,IAAI,CAACK,KAAK,CAAC;IACfyE,OAAO,CAACK,GAAG,CAACJ,GAAG,EAAEhB,IAAI,CAACqB,SAAS,CAACJ,GAAG,CAAC,CAAC;EACvC,CAAC,CAAC,OAAOK,CAAC,EAAE;IACVrD,OAAO,CAACsD,IAAI,CAAC,gEAAgE,EAAED,CAAC,CAAC;EACnF;AACF;;AAEA;AACA,OAAO,eAAeE,sBAAsBA,CAACjB,WAAmB,EAAiB;EAC/E;EACA,IAAI;IACF;IACA,MAAM;MAAEM;IAAK,CAAC,GAAGC,OAAO,CAAC,mBAAmB,CAAC;IAC7C,MAAMC,OAAO,GAAG,IAAIF,IAAI,CAAC,CAAC;IAC1B,MAAMG,GAAG,GAAG,+BAA+B;IAC3C,IAAIC,GAAU,GAAG,EAAE;IACnB,IAAI;MACF,MAAMC,GAAG,GAAGH,OAAO,CAACI,SAAS,CAACH,GAAG,CAAC;MAClC,IAAIE,GAAG,EAAED,GAAG,GAAGjB,IAAI,CAACC,KAAK,CAACiB,GAAG,CAAC;MAC9B,IAAI,CAAC9E,KAAK,CAACC,OAAO,CAAC4E,GAAG,CAAC,EAAEA,GAAG,GAAG,EAAE;IACnC,CAAC,CAAC,MAAM;MACNA,GAAG,GAAG,EAAE;IACV;IACA,MAAMQ,IAAI,GAAGR,GAAG,CAACS,MAAM,CAAEJ,CAAC,IAAKA,CAAC,IAAIA,CAAC,CAACf,WAAW,KAAKA,WAAW,CAAC;IAClE,IAAIkB,IAAI,CAAClF,MAAM,KAAK,CAAC,EAAE;MACrB,IAAI,OAAQwE,OAAO,CAASY,MAAM,KAAK,UAAU,EAAE;QAChDZ,OAAO,CAASY,MAAM,CAACX,GAAG,CAAC;MAC9B,CAAC,MAAM;QACLD,OAAO,CAACK,GAAG,CAACJ,GAAG,EAAEhB,IAAI,CAACqB,SAAS,CAAC,EAAE,CAAC,CAAC;MACtC;IACF,CAAC,MAAM,IAAII,IAAI,CAAClF,MAAM,KAAK0E,GAAG,CAAC1E,MAAM,EAAE;MACrCwE,OAAO,CAACK,GAAG,CAACJ,GAAG,EAAEhB,IAAI,CAACqB,SAAS,CAACI,IAAI,CAAC,CAAC;IACxC;EACF,CAAC,CAAC,OAAOH,CAAC,EAAE;IACVrD,OAAO,CAACsD,IAAI,CAAC,oEAAoE,EAAED,CAAC,CAAC;EACvF;AACF;;AAEA;AACA,OAAO,eAAeM,yBAAyBA,CAAA,EAAkB;EAC/D,IAAI;IACF;IACA,MAAM;MAAEf;IAAK,CAAC,GAAGC,OAAO,CAAC,mBAAmB,CAAC;IAC7C,MAAMC,OAAO,GAAG,IAAIF,IAAI,CAAC,CAAC;IAC1B,MAAMG,GAAG,GAAG,+BAA+B;IAC3C,IAAI,OAAQD,OAAO,CAASY,MAAM,KAAK,UAAU,EAAE;MAChDZ,OAAO,CAASY,MAAM,CAACX,GAAG,CAAC;IAC9B,CAAC,MAAM;MACLD,OAAO,CAACK,GAAG,CAACJ,GAAG,EAAEhB,IAAI,CAACqB,SAAS,CAAC,EAAE,CAAC,CAAC;IACtC;EACF,CAAC,CAAC,OAAOC,CAAC,EAAE;IACVrD,OAAO,CAACsD,IAAI,CAAC,uEAAuE,EAAED,CAAC,CAAC;EAC1F;AACF;;AAEA;;AAYA,IAAIO,YAA6B;AACjC,IAAIC,WAA4B;AAChC,SAASC,oBAAoBA,CAACC,IAAI,GAAG,aAAa,EAAmB;EACnE/D,OAAO,CAACgE,GAAG,CAAC,0BAA0B,CAAC;EACvC,IAAI;IACF;IACA,MAAM;MAAEC;IAAS,CAAC,GAAGpB,OAAO,CAAC,4BAA4B,CAAC;IAC1De,YAAY,GAAGA,YAAY,IAAIK,QAAQ,CAACC,aAAa,CAACH,IAAI,CAAC;IAC3D/D,OAAO,CAACgE,GAAG,CAAC,eAAe,EAAE,CAAC,CAACJ,YAAY,CAAC;IAC5C,OAAOA,YAAY;EACrB,CAAC,CAAC,MAAM;IACN5D,OAAO,CAACsD,IAAI,CAAC,0CAA0C,CAAC;IACxD,OAAO5F,SAAS;EAClB;AACF;AAEA,SAASyG,WAAWA,CAAA,EAAoB;EACtC,IAAI;IACF,IAAIN,WAAW,EAAE,OAAOA,WAAW;IACnC;IACA,MAAM;MAAEI;IAAS,CAAC,GAAGpB,OAAO,CAAC,4BAA4B,CAAC;IAC1DgB,WAAW,GAAGI,QAAQ;IACtB,OAAOJ,WAAW;EACpB,CAAC,CAAC,MAAM;IACN7D,OAAO,CAACsD,IAAI,CAAC,0CAA0C,CAAC;IACxD,OAAO5F,SAAS;EAClB;AACF;AAEA,OAAO,eAAe0G,mBAAmBA,CACvCjE,KAAwB,EACxBC,IAA6B,EAC7BiE,UAAiC,EACjCC,OAAyD,EAC7C;EACZtE,OAAO,CAACgE,GAAG,CAAC,+BAA+B,CAAC;EAC5C,MAAMO,WAAW,GAAGD,OAAO,EAAEC,WAAW,KAAK,IAAI,CAAC,CAAC;EACnDvE,OAAO,CAACgE,GAAG,CAAC,mCAAmC,EAAEO,WAAW,CAAC;EAC7D,IAAIC,EAAmB;EACvB,IAAIP,QAAyB;EAC7B,IAAI;IACFO,EAAE,GAAGV,oBAAoB,CAACQ,OAAO,EAAEG,WAAW,CAAC;IAC/CzE,OAAO,CAACgE,GAAG,CAAC,uCAAuC,EAAE,CAAC,CAACQ,EAAE,CAAC;IAC1DP,QAAQ,GAAGE,WAAW,CAAC,CAAC;IACxBnE,OAAO,CAACgE,GAAG,CAAC,0CAA0C,EAAE,CAAC,CAACC,QAAQ,CAAC;EACrE,CAAC,CAAC,OAAOZ,CAAC,EAAE;IACVrD,OAAO,CAACC,KAAK,CAAC,mCAAmC,EAAEoD,CAAC,CAAC;EACvD;;EAEA;EACA,IAAI,CAACmB,EAAE,IAAI,CAACP,QAAQ,IAAI,OAAOO,EAAE,CAACE,GAAG,KAAK,UAAU,EAAE;IACpD1E,OAAO,CAACsD,IAAI,CAAC,uDAAuD,CAAC;IACrE,MAAMxC,GAAG,GAAG,MAAMF,aAAa,CAACT,KAAK,EAAEC,IAAI,CAAC;IAC5C,MAAMuE,OAAO,GAAG;MACdtE,GAAG,EAAES,GAAG,CAACT,GAAG;MACZa,MAAM,EAAEJ,GAAG,CAACI,MAAM;MAClBC,UAAU,EAAEL,GAAG,CAACK,UAAU;MAC1BC,EAAE,EAAEN,GAAG,CAACM,EAAE;MACVC,UAAU,EAAEP,GAAG,CAACO,UAAU;MAC1B5D,OAAO,EAAEqD,GAAG,CAACrD,OAAO;MACpBuB,SAAS,EAAEuF,WAAW,GAAGzD,GAAG,CAAC9B,SAAS,GAAGtB,SAAS;MAClDkB,UAAU,EAAE2F,WAAW,GAAG7G,SAAS,GAAGoD,GAAG,CAAClC;IAC5C,CAAU;IACV,OAAOyF,UAAU,CAACM,OAAc,CAAC;EACnC;EAEA,OAAO,MAAM,IAAIC,OAAO,CAAI,CAACC,OAAO,EAAEC,MAAM,KAAK;IAC/C,IAAI;MACF9E,OAAO,CAACgE,GAAG,CAAC,2CAA2C,CAAC;MACxDQ,EAAE,CAACE,GAAG,CAAC,MAAOK,GAA0B,IAAK;QAC3C,SAAS;;QACT,IAAI;UACF/E,OAAO,CAACgE,GAAG,CAAC,sDAAsD,CAAC;UACnE,MAAMlD,GAAG,GAAG,MAAMF,aAAa,CAACT,KAAK,EAAEC,IAAI,CAAC;UAC5CJ,OAAO,CAACgE,GAAG,CAAC,sCAAsC,CAAC;UACnD,MAAM3D,GAAG,GAAGS,GAAG,CAACT,GAAG;UACnB,MAAMa,MAAM,GAAGJ,GAAG,CAACI,MAAM;UACzB,MAAMC,UAAU,GAAGL,GAAG,CAACK,UAAU;UACjC,MAAMC,EAAE,GAAGN,GAAG,CAACM,EAAE;UACjB,MAAMC,UAAU,GAAGP,GAAG,CAACO,UAAU;UACjC,MAAM2D,YAA2B,GAAGlE,GAAG,CAACrD,OAAO;UAC/C,MAAMuB,SAAkC,GAAGtB,SAAS,CAAC,CAAC;UACtD,MAAMkB,UAA8B,GAAG2F,WAAW,GAAG7G,SAAS,GAAGoD,GAAG,CAAClC,UAAU;UAC/E,MAAM+F,OAAO,GAAG;YAAEtE,GAAG;YAAEa,MAAM;YAAEC,UAAU;YAAEC,EAAE;YAAEC,UAAU;YAAE5D,OAAO,EAAEuH,YAAY;YAAEhG,SAAS;YAAEJ;UAAW,CAAC;UACzG,MAAMqG,GAAG,GAAGF,GAAG,CAACJ,OAAO,CAAC;UACxB;UACAV,QAAQ,CAACiB,OAAO,CAACL,OAAO,CAAC,CAACI,GAAU,CAAC;QACvC,CAAC,CAAC,OAAO5B,CAAC,EAAE;UACVY,QAAQ,CAACiB,OAAO,CAACJ,MAAM,CAAC,CAACzB,CAAQ,CAAC;QACpC;MACF,CAAC,EAAEgB,UAAiB,CAAC;IACvB,CAAC,CAAC,OAAOhB,CAAC,EAAE;MACVrD,OAAO,CAACC,KAAK,CAAC,oCAAoC,EAAEoD,CAAC,CAAC;MACtDyB,MAAM,CAACzB,CAAC,CAAC;IACX;EACF,CAAC,CAAC;AACJ;AAEA,OAAO,MAAM8B,CAAC,GAAGrB,oBAAoB,CAAC,CAAC;AACvC,OAAO,MAAMsB,CAAC,GAAGjB,WAAW,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["NitroFetch","NitroFetchSingleton","headersToPairs","headers","undefined","pairs","Headers","forEach","v","k","push","key","value","Array","isArray","entry","length","String","Object","entries","normalizeBody","body","bodyString","URLSearchParams","toString","ArrayBuffer","bodyBytes","isView","view","buffer","slice","byteOffset","byteLength","Error","pairsToHeaders","h","append","NitroFetchHybrid","client","ensureClient","createClient","err","console","error","buildNitroRequest","input","init","url","method","headersInit","URL","normalized","toUpperCase","followRedirects","nitroFetchRaw","hasNative","res","fetch","bytes","arrayBuffer","status","statusText","ok","redirected","req","request","nitroFetch","headersObj","reduce","acc","light","text","json","JSON","parse","prefetch","hasKey","some","toLowerCase","fromInit","prefetchKey","concat","finalHasKey","prefetchOnAppStart","fromHeader","find","MMKV","require","storage","KEY","arr","raw","getString","e","filter","set","stringify","warn","removeFromAutoPrefetch","next","delete","removeAllFromAutoprefetch","nitroRuntime","WorkletsRef","ensureWorkletRuntime","name","log","Worklets","createRuntime","getWorklets","nitroFetchOnWorklet","mapWorklet","options","preferBytes","rt","runtimeName","run","payload","Promise","resolve","reject","map","headersPairs","out","runOnJS","x","y"],"sourceRoot":"../../src","sources":["fetch.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,WAAW,EAGZ,MAAM,oBAAoB,CAAC;AAsI5B,wBAAsB,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CA6BhG;AAGD,wBAAsB,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB1F;AAID,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,CAAC,EAAE,WAAW,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,WAAW,EAGZ,MAAM,oBAAoB,CAAC;AAsI5B,wBAAsB,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CA6BhG;AAGD,wBAAsB,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB1F;AAID,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,CAAC,EAAE,WAAW,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C,OAAO,CAAC,IAAI,CAAC,CA6Cf;AAGD,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B/E;AAGD,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAc/D;AAGD,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,OAAO,CAAC;IACZ,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,KAAK,CAAC,CAAC;AA+BR,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,EAAE,WAAW,GAAG,SAAS,EAC7B,UAAU,EAAE,kBAAkB,CAAC,CAAC,CAAC,EACjC,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACxD,OAAO,CAAC,CAAC,CAAC,CA8DZ;AAED,eAAO,MAAM,CAAC,KAAyB,CAAC;AACxC,eAAO,MAAM,CAAC,KAAgB,CAAC;AAE/B,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|
package/package.json
CHANGED
package/src/fetch.ts
CHANGED
|
@@ -235,6 +235,9 @@ export async function prefetchOnAppStart(
|
|
|
235
235
|
} catch {
|
|
236
236
|
arr = [];
|
|
237
237
|
}
|
|
238
|
+
if (arr.some(e => e && e.prefetchKey === prefetchKey)) {
|
|
239
|
+
arr = arr.filter(e => e && e.prefetchKey !== prefetchKey);
|
|
240
|
+
}
|
|
238
241
|
arr.push(entry);
|
|
239
242
|
storage.set(KEY, JSON.stringify(arr));
|
|
240
243
|
} catch (e) {
|
package/src/NitroFetch.nitro.js
DELETED
package/src/NitroInstances.js
DELETED
package/src/fetch.js
DELETED
|
@@ -1,377 +0,0 @@
|
|
|
1
|
-
import { NitroFetch as NitroFetchSingleton } from './NitroInstances';
|
|
2
|
-
// No base64: pass strings/ArrayBuffers directly
|
|
3
|
-
function headersToPairs(headers) {
|
|
4
|
-
'worklet';
|
|
5
|
-
if (!headers)
|
|
6
|
-
return undefined;
|
|
7
|
-
const pairs = [];
|
|
8
|
-
if (headers instanceof Headers) {
|
|
9
|
-
headers.forEach((v, k) => pairs.push({ key: k, value: v }));
|
|
10
|
-
return pairs;
|
|
11
|
-
}
|
|
12
|
-
if (Array.isArray(headers)) {
|
|
13
|
-
// Convert tuple pairs to objects if needed
|
|
14
|
-
for (const entry of headers) {
|
|
15
|
-
if (Array.isArray(entry) && entry.length >= 2) {
|
|
16
|
-
pairs.push({ key: String(entry[0]), value: String(entry[1]) });
|
|
17
|
-
}
|
|
18
|
-
else if (entry && typeof entry === 'object' && 'key' in entry && 'value' in entry) {
|
|
19
|
-
pairs.push(entry);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
return pairs;
|
|
23
|
-
}
|
|
24
|
-
// Record<string, string>
|
|
25
|
-
for (const [k, v] of Object.entries(headers)) {
|
|
26
|
-
pairs.push({ key: k, value: String(v) });
|
|
27
|
-
}
|
|
28
|
-
return pairs;
|
|
29
|
-
}
|
|
30
|
-
function normalizeBody(body) {
|
|
31
|
-
'worklet';
|
|
32
|
-
if (body == null)
|
|
33
|
-
return undefined;
|
|
34
|
-
if (typeof body === 'string')
|
|
35
|
-
return { bodyString: body };
|
|
36
|
-
if (body instanceof URLSearchParams)
|
|
37
|
-
return { bodyString: body.toString() };
|
|
38
|
-
if (typeof ArrayBuffer !== 'undefined' && body instanceof ArrayBuffer)
|
|
39
|
-
return { bodyBytes: body };
|
|
40
|
-
if (ArrayBuffer.isView(body)) {
|
|
41
|
-
const view = body;
|
|
42
|
-
// Pass a copy/slice of the underlying bytes without base64
|
|
43
|
-
//@ts-ignore
|
|
44
|
-
return { bodyBytes: view.buffer.slice(view.byteOffset, view.byteOffset + view.byteLength) };
|
|
45
|
-
}
|
|
46
|
-
// TODO: Blob/FormData support can be added later
|
|
47
|
-
throw new Error('Unsupported body type for nitro fetch');
|
|
48
|
-
}
|
|
49
|
-
// @ts-ignore
|
|
50
|
-
function pairsToHeaders(pairs) {
|
|
51
|
-
'worklet';
|
|
52
|
-
const h = new Headers();
|
|
53
|
-
for (const { key, value } of pairs)
|
|
54
|
-
h.append(key, value);
|
|
55
|
-
return h;
|
|
56
|
-
}
|
|
57
|
-
const NitroFetchHybrid = NitroFetchSingleton;
|
|
58
|
-
let client;
|
|
59
|
-
function ensureClient() {
|
|
60
|
-
if (client)
|
|
61
|
-
return client;
|
|
62
|
-
try {
|
|
63
|
-
client = NitroFetchHybrid.createClient();
|
|
64
|
-
}
|
|
65
|
-
catch (err) {
|
|
66
|
-
console.error('Failed to create NitroFetch client', err);
|
|
67
|
-
// native not ready; keep undefined
|
|
68
|
-
}
|
|
69
|
-
return client;
|
|
70
|
-
}
|
|
71
|
-
function buildNitroRequest(input, init) {
|
|
72
|
-
'worklet';
|
|
73
|
-
let url;
|
|
74
|
-
let method;
|
|
75
|
-
let headersInit;
|
|
76
|
-
let body;
|
|
77
|
-
if (typeof input === 'string' || input instanceof URL) {
|
|
78
|
-
url = String(input);
|
|
79
|
-
method = init?.method;
|
|
80
|
-
headersInit = init?.headers;
|
|
81
|
-
body = init?.body ?? null;
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
// Request object
|
|
85
|
-
url = input.url;
|
|
86
|
-
method = input.method;
|
|
87
|
-
headersInit = input.headers;
|
|
88
|
-
// Clone body if needed – Request objects in RN typically allow direct access
|
|
89
|
-
body = init?.body ?? null;
|
|
90
|
-
}
|
|
91
|
-
const headers = headersToPairs(headersInit);
|
|
92
|
-
const normalized = normalizeBody(body);
|
|
93
|
-
return {
|
|
94
|
-
url,
|
|
95
|
-
method: method?.toUpperCase() ?? 'GET',
|
|
96
|
-
headers,
|
|
97
|
-
bodyString: normalized?.bodyString,
|
|
98
|
-
bodyBytes: "", //normalized?.bodyBytes,
|
|
99
|
-
followRedirects: true,
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
async function nitroFetchRaw(input, init) {
|
|
103
|
-
'worklet';
|
|
104
|
-
const hasNative = typeof NitroFetchHybrid?.createClient === 'function';
|
|
105
|
-
if (!hasNative) {
|
|
106
|
-
// Fallback path not supported for raw; use global fetch and synthesize minimal shape
|
|
107
|
-
// @ts-ignore: global fetch exists in RN
|
|
108
|
-
const res = await fetch(input, init);
|
|
109
|
-
const url = res.url ?? String(input);
|
|
110
|
-
const bytes = await res.arrayBuffer();
|
|
111
|
-
const headers = [];
|
|
112
|
-
res.headers.forEach((v, k) => headers.push({ key: k, value: v }));
|
|
113
|
-
return {
|
|
114
|
-
url,
|
|
115
|
-
status: res.status,
|
|
116
|
-
statusText: res.statusText,
|
|
117
|
-
ok: res.ok,
|
|
118
|
-
redirected: res.redirected ?? false,
|
|
119
|
-
headers,
|
|
120
|
-
bodyBytes: bytes,
|
|
121
|
-
bodyString: undefined,
|
|
122
|
-
}; // bleee
|
|
123
|
-
}
|
|
124
|
-
const req = buildNitroRequest(input, init);
|
|
125
|
-
ensureClient();
|
|
126
|
-
if (!client || typeof client.request !== 'function')
|
|
127
|
-
throw new Error('NitroFetch client not available');
|
|
128
|
-
const res = await client.request(req);
|
|
129
|
-
return res;
|
|
130
|
-
}
|
|
131
|
-
export async function nitroFetch(input, init) {
|
|
132
|
-
'worklet';
|
|
133
|
-
// If native implementation is not present yet, fallback to global fetch
|
|
134
|
-
const hasNative = typeof NitroFetchHybrid?.createClient === 'function';
|
|
135
|
-
if (!hasNative) {
|
|
136
|
-
// @ts-ignore: global fetch exists in RN
|
|
137
|
-
return fetch(input, init);
|
|
138
|
-
}
|
|
139
|
-
const res = await nitroFetchRaw(input, init);
|
|
140
|
-
// Fallback lightweight Response-like object (minimal methods)
|
|
141
|
-
const headersObj = res.headers.reduce((acc, { key, value }) => {
|
|
142
|
-
acc[key] = value;
|
|
143
|
-
return acc;
|
|
144
|
-
}, {});
|
|
145
|
-
const light = {
|
|
146
|
-
url: res.url,
|
|
147
|
-
ok: res.ok,
|
|
148
|
-
status: res.status,
|
|
149
|
-
statusText: res.statusText,
|
|
150
|
-
redirected: res.redirected,
|
|
151
|
-
headers: headersObj,
|
|
152
|
-
arrayBuffer: async () => res.bodyBytes,
|
|
153
|
-
text: async () => res.bodyString,
|
|
154
|
-
json: async () => JSON.parse(res.bodyString ?? '{}'),
|
|
155
|
-
};
|
|
156
|
-
return light;
|
|
157
|
-
}
|
|
158
|
-
// Start a native prefetch. Requires a `prefetchKey` header on the request.
|
|
159
|
-
export async function prefetch(input, init) {
|
|
160
|
-
// If native implementation is not present yet, do nothing
|
|
161
|
-
const hasNative = typeof NitroFetchHybrid?.createClient === 'function';
|
|
162
|
-
if (!hasNative)
|
|
163
|
-
return;
|
|
164
|
-
// Build NitroRequest and ensure prefetchKey header exists
|
|
165
|
-
const req = buildNitroRequest(input, init);
|
|
166
|
-
const hasKey = req.headers?.some(h => h.key.toLowerCase() === 'prefetchkey') ?? false;
|
|
167
|
-
// Also support passing prefetchKey via non-standard field on init
|
|
168
|
-
const fromInit = init?.prefetchKey;
|
|
169
|
-
if (!hasKey && fromInit) {
|
|
170
|
-
req.headers = (req.headers ?? []).concat([{ key: 'prefetchKey', value: fromInit }]);
|
|
171
|
-
}
|
|
172
|
-
const finalHasKey = req.headers?.some(h => h.key.toLowerCase() === 'prefetchkey');
|
|
173
|
-
if (!finalHasKey) {
|
|
174
|
-
throw new Error('prefetch requires a \"prefetchKey\" header');
|
|
175
|
-
}
|
|
176
|
-
// Ensure client and call native prefetch
|
|
177
|
-
ensureClient();
|
|
178
|
-
if (!client || typeof client.prefetch !== 'function')
|
|
179
|
-
return;
|
|
180
|
-
await client.prefetch(req);
|
|
181
|
-
}
|
|
182
|
-
// Persist a request to MMKV so native can prefetch it on app start.
|
|
183
|
-
// Stores an array of entries under the same key Android reads: "nitrofetch_autoprefetch_queue".
|
|
184
|
-
export async function prefetchOnAppStart(input, init) {
|
|
185
|
-
// Resolve request and prefetchKey
|
|
186
|
-
const req = buildNitroRequest(input, init);
|
|
187
|
-
const fromHeader = req.headers?.find(h => h.key.toLowerCase() === 'prefetchkey')?.value;
|
|
188
|
-
const fromInit = init?.prefetchKey;
|
|
189
|
-
const prefetchKey = fromHeader ?? fromInit;
|
|
190
|
-
if (!prefetchKey) {
|
|
191
|
-
throw new Error('prefetchOnAppStart requires a "prefetchKey" (header or init.prefetchKey)');
|
|
192
|
-
}
|
|
193
|
-
// Convert headers to a plain object for storage
|
|
194
|
-
const headersObj = (req.headers ?? []).reduce((acc, { key, value }) => {
|
|
195
|
-
acc[String(key)] = String(value);
|
|
196
|
-
return acc;
|
|
197
|
-
}, {});
|
|
198
|
-
const entry = {
|
|
199
|
-
url: req.url,
|
|
200
|
-
prefetchKey,
|
|
201
|
-
headers: headersObj,
|
|
202
|
-
};
|
|
203
|
-
// Write or append to MMKV queue
|
|
204
|
-
try {
|
|
205
|
-
// Dynamically require to keep it optional for consumers
|
|
206
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
207
|
-
const { MMKV } = require('react-native-mmkv');
|
|
208
|
-
const storage = new MMKV(); // default instance matches Android's defaultMMKV
|
|
209
|
-
const KEY = 'nitrofetch_autoprefetch_queue';
|
|
210
|
-
let arr = [];
|
|
211
|
-
try {
|
|
212
|
-
const raw = storage.getString(KEY);
|
|
213
|
-
if (raw)
|
|
214
|
-
arr = JSON.parse(raw);
|
|
215
|
-
if (!Array.isArray(arr))
|
|
216
|
-
arr = [];
|
|
217
|
-
}
|
|
218
|
-
catch {
|
|
219
|
-
arr = [];
|
|
220
|
-
}
|
|
221
|
-
arr.push(entry);
|
|
222
|
-
storage.set(KEY, JSON.stringify(arr));
|
|
223
|
-
}
|
|
224
|
-
catch (e) {
|
|
225
|
-
console.warn('react-native-mmkv not available; prefetchOnAppStart is a no-op', e);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
// Remove one entry (by prefetchKey) from the auto-prefetch queue in MMKV.
|
|
229
|
-
export async function removeFromAutoPrefetch(prefetchKey) {
|
|
230
|
-
// No-op on iOS
|
|
231
|
-
try {
|
|
232
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
233
|
-
const { MMKV } = require('react-native-mmkv');
|
|
234
|
-
const storage = new MMKV();
|
|
235
|
-
const KEY = 'nitrofetch_autoprefetch_queue';
|
|
236
|
-
let arr = [];
|
|
237
|
-
try {
|
|
238
|
-
const raw = storage.getString(KEY);
|
|
239
|
-
if (raw)
|
|
240
|
-
arr = JSON.parse(raw);
|
|
241
|
-
if (!Array.isArray(arr))
|
|
242
|
-
arr = [];
|
|
243
|
-
}
|
|
244
|
-
catch {
|
|
245
|
-
arr = [];
|
|
246
|
-
}
|
|
247
|
-
const next = arr.filter((e) => e && e.prefetchKey !== prefetchKey);
|
|
248
|
-
if (next.length === 0) {
|
|
249
|
-
if (typeof storage.delete === 'function') {
|
|
250
|
-
storage.delete(KEY);
|
|
251
|
-
}
|
|
252
|
-
else {
|
|
253
|
-
storage.set(KEY, JSON.stringify([]));
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
else if (next.length !== arr.length) {
|
|
257
|
-
storage.set(KEY, JSON.stringify(next));
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
catch (e) {
|
|
261
|
-
console.warn('react-native-mmkv not available; removeFromAutoPrefetch is a no-op', e);
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
// Remove all entries from the auto-prefetch queue in MMKV.
|
|
265
|
-
export async function removeAllFromAutoprefetch() {
|
|
266
|
-
try {
|
|
267
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
268
|
-
const { MMKV } = require('react-native-mmkv');
|
|
269
|
-
const storage = new MMKV();
|
|
270
|
-
const KEY = 'nitrofetch_autoprefetch_queue';
|
|
271
|
-
if (typeof storage.delete === 'function') {
|
|
272
|
-
storage.delete(KEY);
|
|
273
|
-
}
|
|
274
|
-
else {
|
|
275
|
-
storage.set(KEY, JSON.stringify([]));
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
catch (e) {
|
|
279
|
-
console.warn('react-native-mmkv not available; removeAllFromAutoprefetch is a no-op', e);
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
let nitroRuntime;
|
|
283
|
-
let WorkletsRef;
|
|
284
|
-
function ensureWorkletRuntime(name = 'nitro-fetch') {
|
|
285
|
-
console.log('ensuring worklet runtime');
|
|
286
|
-
try {
|
|
287
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
288
|
-
const { Worklets } = require('react-native-worklets-core');
|
|
289
|
-
nitroRuntime = nitroRuntime ?? Worklets.createRuntime(name);
|
|
290
|
-
console.log('nitroRuntime:', !!nitroRuntime);
|
|
291
|
-
return nitroRuntime;
|
|
292
|
-
}
|
|
293
|
-
catch {
|
|
294
|
-
console.warn('react-native-worklets-core not available');
|
|
295
|
-
return undefined;
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
function getWorklets() {
|
|
299
|
-
try {
|
|
300
|
-
if (WorkletsRef)
|
|
301
|
-
return WorkletsRef;
|
|
302
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
303
|
-
const { Worklets } = require('react-native-worklets-core');
|
|
304
|
-
WorkletsRef = Worklets;
|
|
305
|
-
return WorkletsRef;
|
|
306
|
-
}
|
|
307
|
-
catch {
|
|
308
|
-
console.warn('react-native-worklets-core not available');
|
|
309
|
-
return undefined;
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
export async function nitroFetchOnWorklet(input, init, mapWorklet, options) {
|
|
313
|
-
console.log('nitroFetchOnWorklet: starting');
|
|
314
|
-
const preferBytes = options?.preferBytes === true; // default true
|
|
315
|
-
console.log('nitroFetchOnWorklet: preferBytes:', preferBytes);
|
|
316
|
-
let rt;
|
|
317
|
-
let Worklets;
|
|
318
|
-
try {
|
|
319
|
-
rt = ensureWorkletRuntime(options?.runtimeName);
|
|
320
|
-
console.log('nitroFetchOnWorklet: runtime created?', !!rt);
|
|
321
|
-
Worklets = getWorklets();
|
|
322
|
-
console.log('nitroFetchOnWorklet: Worklets available?', !!Worklets);
|
|
323
|
-
}
|
|
324
|
-
catch (e) {
|
|
325
|
-
console.error('nitroFetchOnWorklet: setup failed', e);
|
|
326
|
-
}
|
|
327
|
-
// Fallback: if runtime is not available, do the work on JS
|
|
328
|
-
if (!rt || !Worklets || typeof rt.run !== 'function') {
|
|
329
|
-
console.warn('nitroFetchOnWorklet: no runtime, mapping on JS thread');
|
|
330
|
-
const res = await nitroFetchRaw(input, init);
|
|
331
|
-
const payload = {
|
|
332
|
-
url: res.url,
|
|
333
|
-
status: res.status,
|
|
334
|
-
statusText: res.statusText,
|
|
335
|
-
ok: res.ok,
|
|
336
|
-
redirected: res.redirected,
|
|
337
|
-
headers: res.headers,
|
|
338
|
-
bodyBytes: preferBytes ? res.bodyBytes : undefined,
|
|
339
|
-
bodyString: preferBytes ? undefined : res.bodyString,
|
|
340
|
-
};
|
|
341
|
-
return mapWorklet(payload);
|
|
342
|
-
}
|
|
343
|
-
return await new Promise((resolve, reject) => {
|
|
344
|
-
try {
|
|
345
|
-
console.log('nitroFetchOnWorklet: about to call rt.run');
|
|
346
|
-
rt.run(async (map) => {
|
|
347
|
-
'worklet';
|
|
348
|
-
try {
|
|
349
|
-
console.log('nitroFetchOnWorklet: running fetch on worklet thread');
|
|
350
|
-
const res = await nitroFetchRaw(input, init);
|
|
351
|
-
console.log('nitroFetchOnWorklet: fetch completed');
|
|
352
|
-
const url = res.url;
|
|
353
|
-
const status = res.status;
|
|
354
|
-
const statusText = res.statusText;
|
|
355
|
-
const ok = res.ok;
|
|
356
|
-
const redirected = res.redirected;
|
|
357
|
-
const headersPairs = res.headers;
|
|
358
|
-
const bodyBytes = undefined; // preferBytes ? res.bodyBytes : undefined;
|
|
359
|
-
const bodyString = preferBytes ? undefined : res.bodyString;
|
|
360
|
-
const payload = { url, status, statusText, ok, redirected, headers: headersPairs, bodyBytes, bodyString };
|
|
361
|
-
const out = map(payload);
|
|
362
|
-
// Resolve back on JS thread
|
|
363
|
-
Worklets.runOnJS(resolve)(out);
|
|
364
|
-
}
|
|
365
|
-
catch (e) {
|
|
366
|
-
Worklets.runOnJS(reject)(e);
|
|
367
|
-
}
|
|
368
|
-
}, mapWorklet);
|
|
369
|
-
}
|
|
370
|
-
catch (e) {
|
|
371
|
-
console.error('nitroFetchOnWorklet: rt.run failed', e);
|
|
372
|
-
reject(e);
|
|
373
|
-
}
|
|
374
|
-
});
|
|
375
|
-
}
|
|
376
|
-
export const x = ensureWorkletRuntime();
|
|
377
|
-
export const y = getWorklets();
|
package/src/index.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export { nitroFetch as fetch, nitroFetchOnWorklet, prefetch, prefetchOnAppStart, removeFromAutoPrefetch, removeAllFromAutoprefetch, } from './fetch';
|
|
2
|
-
export { NitroFetch } from './NitroInstances';
|
|
3
|
-
import './fetch';
|
|
4
|
-
// Keep legacy export to avoid breaking any local tests/usages during scaffolding.
|
|
5
|
-
// Will be removed once native Cronet path is ready.
|
|
6
|
-
export function multiply(a, b) {
|
|
7
|
-
return a * b;
|
|
8
|
-
}
|