one 2.0.0-beta.115.1 → 2.0.0-beta.120.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. package/android/src/main/java/com/margelo/nitro/one/HybridOneFetch.kt +86 -15
  2. package/android/src/main/java/com/margelo/nitro/one/HybridOneNativeModules.kt +40 -0
  3. package/android/src/main/java/com/margelo/nitro/one/HybridOneSecureStore.kt +35 -22
  4. package/android/src/main/java/com/margelo/nitro/one/OneLaunchScreen.kt +41 -0
  5. package/android/src/main/java/dev/onejs/one/OneNativeSourceDispatch.kt +6 -0
  6. package/android/src/main/java/dev/onejs/one/source/OneModule.kt +3 -0
  7. package/android/src/main/java/dev/onejs/onenative/OneNativeComposeNodeEvents.kt +3 -3
  8. package/android/src/main/java/dev/onejs/onenative/OneNativeComposeNodeManager.kt +66 -2
  9. package/android/src/main/java/dev/onejs/onenative/OneNativeComposeNodeView.kt +546 -32
  10. package/android/src/main/java/dev/onejs/onenative/OneNativeReservedRegionsProviderManager.kt +9 -3
  11. package/android/src/main/java/dev/onejs/onenative/OneNativeReservedRegionsProviderView.kt +9 -4
  12. package/dist/cjs/cli/generateRoutes.cjs +2 -0
  13. package/dist/cjs/cli/generateRoutes.native.cjs +2 -0
  14. package/dist/cjs/cli/generateRoutes.native.js +2 -0
  15. package/dist/cjs/cli/generateRoutes.native.js.map +1 -1
  16. package/dist/cjs/index.cjs +14 -0
  17. package/dist/cjs/index.native.cjs +14 -0
  18. package/dist/cjs/index.native.js +14 -0
  19. package/dist/cjs/index.native.js.map +1 -1
  20. package/dist/cjs/one.cjs +9 -12
  21. package/dist/cjs/one.native.cjs +9 -12
  22. package/dist/cjs/one.native.js +9 -12
  23. package/dist/cjs/one.native.js.map +1 -1
  24. package/dist/cjs/platform/adaptive/ReservedRegions.cjs +21 -12
  25. package/dist/cjs/platform/adaptive/ReservedRegions.native.cjs +10 -9
  26. package/dist/cjs/platform/adaptive/ReservedRegions.native.js +10 -9
  27. package/dist/cjs/platform/adaptive/ReservedRegions.native.js.map +1 -1
  28. package/dist/cjs/platform/adaptive/index.cjs +6 -1
  29. package/dist/cjs/platform/adaptive/index.native.cjs +14 -3
  30. package/dist/cjs/platform/adaptive/index.native.js +14 -3
  31. package/dist/cjs/platform/adaptive/index.native.js.map +1 -1
  32. package/dist/cjs/platform/adaptive/reservedRegionsContext.cjs +65 -4
  33. package/dist/cjs/platform/adaptive/reservedRegionsContext.native.cjs +85 -4
  34. package/dist/cjs/platform/adaptive/reservedRegionsContext.native.js +85 -4
  35. package/dist/cjs/platform/adaptive/reservedRegionsContext.native.js.map +1 -1
  36. package/dist/cjs/platform/audio/index.cjs +41 -0
  37. package/dist/cjs/platform/audio/index.native.cjs +75 -0
  38. package/dist/cjs/platform/audio/index.native.js +77 -0
  39. package/dist/cjs/platform/audio/index.native.js.map +1 -0
  40. package/dist/cjs/platform/compose.android.cjs +279 -2
  41. package/dist/cjs/platform/compose.android.js +279 -2
  42. package/dist/cjs/platform/compose.android.js.map +1 -1
  43. package/dist/cjs/platform/compose.cjs +88 -0
  44. package/dist/cjs/platform/compose.native.cjs +110 -0
  45. package/dist/cjs/platform/compose.native.js +110 -0
  46. package/dist/cjs/platform/compose.native.js.map +1 -1
  47. package/dist/cjs/platform/composeValidation.cjs +140 -3
  48. package/dist/cjs/platform/composeValidation.native.cjs +181 -5
  49. package/dist/cjs/platform/composeValidation.native.js +181 -5
  50. package/dist/cjs/platform/composeValidation.native.js.map +1 -1
  51. package/dist/cjs/platform/device/index.cjs +26 -0
  52. package/dist/cjs/platform/device/index.native.cjs +34 -0
  53. package/dist/cjs/platform/device/index.native.js +36 -0
  54. package/dist/cjs/platform/device/index.native.js.map +1 -0
  55. package/dist/cjs/platform/effects/EdgeFade.cjs +181 -0
  56. package/dist/cjs/platform/effects/EdgeFade.native.cjs +5 -6
  57. package/dist/cjs/platform/effects/EdgeFade.native.js +5 -6
  58. package/dist/cjs/platform/effects/EdgeFade.native.js.map +1 -1
  59. package/dist/cjs/platform/effects/index.cjs +2 -4
  60. package/dist/cjs/platform/effects/nativeProps.cjs +51 -0
  61. package/dist/cjs/platform/effects/nativeProps.native.cjs +55 -0
  62. package/dist/cjs/platform/effects/nativeProps.native.js +57 -0
  63. package/dist/cjs/platform/effects/nativeProps.native.js.map +1 -0
  64. package/dist/cjs/platform/effects/normalize.cjs +15 -32
  65. package/dist/cjs/platform/effects/normalize.native.cjs +34 -34
  66. package/dist/cjs/platform/effects/normalize.native.js +34 -34
  67. package/dist/cjs/platform/effects/normalize.native.js.map +1 -1
  68. package/dist/cjs/platform/file-system/index.cjs +36 -0
  69. package/dist/cjs/platform/file-system/index.native.cjs +74 -0
  70. package/dist/cjs/platform/file-system/index.native.js +76 -0
  71. package/dist/cjs/platform/file-system/index.native.js.map +1 -0
  72. package/dist/cjs/platform/index.cjs +19 -1
  73. package/dist/cjs/platform/index.native.cjs +19 -1
  74. package/dist/cjs/platform/index.native.js +19 -1
  75. package/dist/cjs/platform/index.native.js.map +1 -1
  76. package/dist/cjs/platform/local-authentication/index.cjs +30 -0
  77. package/dist/cjs/platform/local-authentication/index.native.cjs +50 -0
  78. package/dist/cjs/platform/local-authentication/index.native.js +52 -0
  79. package/dist/cjs/platform/local-authentication/index.native.js.map +1 -0
  80. package/dist/cjs/platform/location/index.cjs +34 -0
  81. package/dist/cjs/platform/location/index.native.cjs +66 -0
  82. package/dist/cjs/platform/location/index.native.js +68 -0
  83. package/dist/cjs/platform/location/index.native.js.map +1 -0
  84. package/dist/cjs/platform/native-source/index.cjs +26 -0
  85. package/dist/cjs/platform/native-source/index.native.cjs +44 -0
  86. package/dist/cjs/platform/native-source/index.native.js +46 -0
  87. package/dist/cjs/platform/native-source/index.native.js.map +1 -0
  88. package/dist/cjs/platform/photo-library/index.cjs +32 -0
  89. package/dist/cjs/platform/photo-library/index.native.cjs +56 -0
  90. package/dist/cjs/platform/photo-library/index.native.js +58 -0
  91. package/dist/cjs/platform/photo-library/index.native.js.map +1 -0
  92. package/dist/cjs/platform/secure-store/index.cjs +17 -1
  93. package/dist/cjs/platform/secure-store/index.native.cjs +30 -1
  94. package/dist/cjs/platform/secure-store/index.native.js +30 -1
  95. package/dist/cjs/platform/secure-store/index.native.js.map +1 -1
  96. package/dist/cjs/platform/share/index.cjs +27 -0
  97. package/dist/cjs/platform/share/index.native.cjs +38 -0
  98. package/dist/cjs/platform/share/index.native.js +40 -0
  99. package/dist/cjs/platform/share/index.native.js.map +1 -0
  100. package/dist/cjs/platform/specs/OneAudio.nitro.cjs +16 -0
  101. package/dist/cjs/platform/specs/OneAudio.nitro.native.cjs +18 -0
  102. package/dist/cjs/platform/specs/OneAudio.nitro.native.js +20 -0
  103. package/dist/cjs/platform/specs/OneAudio.nitro.native.js.map +1 -0
  104. package/dist/cjs/platform/specs/OneDevice.nitro.cjs +16 -0
  105. package/dist/cjs/platform/specs/OneDevice.nitro.native.cjs +18 -0
  106. package/dist/cjs/platform/specs/OneDevice.nitro.native.js +20 -0
  107. package/dist/cjs/platform/specs/OneDevice.nitro.native.js.map +1 -0
  108. package/dist/cjs/platform/specs/OneFileSystem.nitro.cjs +16 -0
  109. package/dist/cjs/platform/specs/OneFileSystem.nitro.native.cjs +18 -0
  110. package/dist/cjs/platform/specs/OneFileSystem.nitro.native.js +20 -0
  111. package/dist/cjs/platform/specs/OneFileSystem.nitro.native.js.map +1 -0
  112. package/dist/cjs/platform/specs/OneLocalAuthentication.nitro.cjs +16 -0
  113. package/dist/cjs/platform/specs/OneLocalAuthentication.nitro.native.cjs +18 -0
  114. package/dist/cjs/platform/specs/OneLocalAuthentication.nitro.native.js +20 -0
  115. package/dist/cjs/platform/specs/OneLocalAuthentication.nitro.native.js.map +1 -0
  116. package/dist/cjs/platform/specs/OneLocation.nitro.cjs +16 -0
  117. package/dist/cjs/platform/specs/OneLocation.nitro.native.cjs +18 -0
  118. package/dist/cjs/platform/specs/OneLocation.nitro.native.js +20 -0
  119. package/dist/cjs/platform/specs/OneLocation.nitro.native.js.map +1 -0
  120. package/dist/cjs/platform/specs/OneNativeComposeNodeNativeComponent.cjs +19 -3
  121. package/dist/cjs/platform/specs/OneNativeComposeNodeNativeComponent.native.cjs +19 -3
  122. package/dist/cjs/platform/specs/OneNativeComposeNodeNativeComponent.native.js +19 -3
  123. package/dist/cjs/platform/specs/OneNativeComposeNodeNativeComponent.native.js.map +2 -2
  124. package/dist/cjs/platform/specs/OneNativeModules.nitro.cjs +16 -0
  125. package/dist/cjs/platform/specs/OneNativeModules.nitro.native.cjs +18 -0
  126. package/dist/cjs/platform/specs/OneNativeModules.nitro.native.js +20 -0
  127. package/dist/cjs/platform/specs/OneNativeModules.nitro.native.js.map +1 -0
  128. package/dist/cjs/platform/specs/OneNativeReservedRegionsProviderNativeComponent.native.js.map +2 -2
  129. package/dist/cjs/platform/specs/OnePhotoLibrary.nitro.cjs +16 -0
  130. package/dist/cjs/platform/specs/OnePhotoLibrary.nitro.native.cjs +18 -0
  131. package/dist/cjs/platform/specs/OnePhotoLibrary.nitro.native.js +20 -0
  132. package/dist/cjs/platform/specs/OnePhotoLibrary.nitro.native.js.map +1 -0
  133. package/dist/cjs/platform/specs/OneShare.nitro.cjs +16 -0
  134. package/dist/cjs/platform/specs/OneShare.nitro.native.cjs +18 -0
  135. package/dist/cjs/platform/specs/OneShare.nitro.native.js +20 -0
  136. package/dist/cjs/platform/specs/OneShare.nitro.native.js.map +1 -0
  137. package/dist/cjs/vite/one.cjs +3 -1
  138. package/dist/cjs/vite/one.native.cjs +3 -1
  139. package/dist/cjs/vite/one.native.js +3 -1
  140. package/dist/cjs/vite/one.native.js.map +1 -1
  141. package/dist/cjs/vite/plugins/kotlinSourcePlugin.cjs +55 -0
  142. package/dist/cjs/vite/plugins/kotlinSourcePlugin.native.cjs +62 -0
  143. package/dist/cjs/vite/plugins/kotlinSourcePlugin.native.js +64 -0
  144. package/dist/cjs/vite/plugins/kotlinSourcePlugin.native.js.map +1 -0
  145. package/dist/cjs/vite/plugins/swiftPackagePlugin.cjs +25 -7
  146. package/dist/cjs/vite/plugins/swiftPackagePlugin.native.cjs +49 -7
  147. package/dist/cjs/vite/plugins/swiftPackagePlugin.native.js +49 -7
  148. package/dist/cjs/vite/plugins/swiftPackagePlugin.native.js.map +1 -1
  149. package/dist/esm/cli/generateRoutes.mjs +2 -0
  150. package/dist/esm/cli/generateRoutes.mjs.map +1 -1
  151. package/dist/esm/cli/generateRoutes.native.js +2 -0
  152. package/dist/esm/cli/generateRoutes.native.js.map +1 -1
  153. package/dist/esm/index.js +3 -2
  154. package/dist/esm/index.mjs +3 -2
  155. package/dist/esm/index.native.js +3 -2
  156. package/dist/esm/one.mjs +11 -14
  157. package/dist/esm/one.mjs.map +1 -1
  158. package/dist/esm/one.native.js +11 -14
  159. package/dist/esm/one.native.js.map +1 -1
  160. package/dist/esm/platform/adaptive/ReservedRegions.mjs +22 -8
  161. package/dist/esm/platform/adaptive/ReservedRegions.mjs.map +1 -1
  162. package/dist/esm/platform/adaptive/ReservedRegions.native.js +11 -5
  163. package/dist/esm/platform/adaptive/ReservedRegions.native.js.map +1 -1
  164. package/dist/esm/platform/adaptive/index.mjs +2 -1
  165. package/dist/esm/platform/adaptive/index.mjs.map +1 -1
  166. package/dist/esm/platform/adaptive/index.native.js +10 -3
  167. package/dist/esm/platform/adaptive/index.native.js.map +1 -1
  168. package/dist/esm/platform/adaptive/reservedRegionsContext.mjs +62 -4
  169. package/dist/esm/platform/adaptive/reservedRegionsContext.mjs.map +1 -1
  170. package/dist/esm/platform/adaptive/reservedRegionsContext.native.js +82 -4
  171. package/dist/esm/platform/adaptive/reservedRegionsContext.native.js.map +1 -1
  172. package/dist/esm/platform/audio/index.mjs +21 -0
  173. package/dist/esm/platform/audio/index.mjs.map +1 -0
  174. package/dist/esm/platform/audio/index.native.js +54 -0
  175. package/dist/esm/platform/audio/index.native.js.map +1 -0
  176. package/dist/esm/platform/compose.android.js +280 -3
  177. package/dist/esm/platform/compose.android.js.map +1 -1
  178. package/dist/esm/platform/compose.mjs +88 -0
  179. package/dist/esm/platform/compose.mjs.map +1 -1
  180. package/dist/esm/platform/compose.native.js +110 -0
  181. package/dist/esm/platform/compose.native.js.map +1 -1
  182. package/dist/esm/platform/composeValidation.mjs +134 -4
  183. package/dist/esm/platform/composeValidation.mjs.map +1 -1
  184. package/dist/esm/platform/composeValidation.native.js +175 -6
  185. package/dist/esm/platform/composeValidation.native.js.map +1 -1
  186. package/dist/esm/platform/device/index.mjs +6 -0
  187. package/dist/esm/platform/device/index.mjs.map +1 -0
  188. package/dist/esm/platform/device/index.native.js +13 -0
  189. package/dist/esm/platform/device/index.native.js.map +1 -0
  190. package/dist/esm/platform/effects/EdgeFade.mjs +162 -0
  191. package/dist/esm/platform/effects/EdgeFade.mjs.map +1 -0
  192. package/dist/esm/platform/effects/EdgeFade.native.js +6 -7
  193. package/dist/esm/platform/effects/EdgeFade.native.js.map +1 -1
  194. package/dist/esm/platform/effects/index.mjs +1 -3
  195. package/dist/esm/platform/effects/index.mjs.map +1 -1
  196. package/dist/esm/platform/effects/nativeProps.mjs +29 -0
  197. package/dist/esm/platform/effects/nativeProps.mjs.map +1 -0
  198. package/dist/esm/platform/effects/nativeProps.native.js +31 -0
  199. package/dist/esm/platform/effects/nativeProps.native.js.map +1 -0
  200. package/dist/esm/platform/effects/normalize.mjs +14 -32
  201. package/dist/esm/platform/effects/normalize.mjs.map +1 -1
  202. package/dist/esm/platform/effects/normalize.native.js +32 -33
  203. package/dist/esm/platform/effects/normalize.native.js.map +1 -1
  204. package/dist/esm/platform/file-system/index.mjs +16 -0
  205. package/dist/esm/platform/file-system/index.mjs.map +1 -0
  206. package/dist/esm/platform/file-system/index.native.js +53 -0
  207. package/dist/esm/platform/file-system/index.native.js.map +1 -0
  208. package/dist/esm/platform/index.mjs +9 -2
  209. package/dist/esm/platform/index.mjs.map +1 -1
  210. package/dist/esm/platform/index.native.js +9 -2
  211. package/dist/esm/platform/index.native.js.map +1 -1
  212. package/dist/esm/platform/local-authentication/index.mjs +10 -0
  213. package/dist/esm/platform/local-authentication/index.mjs.map +1 -0
  214. package/dist/esm/platform/local-authentication/index.native.js +29 -0
  215. package/dist/esm/platform/local-authentication/index.native.js.map +1 -0
  216. package/dist/esm/platform/location/index.mjs +14 -0
  217. package/dist/esm/platform/location/index.mjs.map +1 -0
  218. package/dist/esm/platform/location/index.native.js +45 -0
  219. package/dist/esm/platform/location/index.native.js.map +1 -0
  220. package/dist/esm/platform/native-source/index.mjs +6 -0
  221. package/dist/esm/platform/native-source/index.mjs.map +1 -0
  222. package/dist/esm/platform/native-source/index.native.js +23 -0
  223. package/dist/esm/platform/native-source/index.native.js.map +1 -0
  224. package/dist/esm/platform/photo-library/index.mjs +12 -0
  225. package/dist/esm/platform/photo-library/index.mjs.map +1 -0
  226. package/dist/esm/platform/photo-library/index.native.js +35 -0
  227. package/dist/esm/platform/photo-library/index.native.js.map +1 -0
  228. package/dist/esm/platform/secure-store/index.mjs +17 -1
  229. package/dist/esm/platform/secure-store/index.mjs.map +1 -1
  230. package/dist/esm/platform/secure-store/index.native.js +30 -1
  231. package/dist/esm/platform/secure-store/index.native.js.map +1 -1
  232. package/dist/esm/platform/share/index.mjs +7 -0
  233. package/dist/esm/platform/share/index.mjs.map +1 -0
  234. package/dist/esm/platform/share/index.native.js +17 -0
  235. package/dist/esm/platform/share/index.native.js.map +1 -0
  236. package/dist/esm/platform/specs/OneAudio.nitro.mjs +0 -0
  237. package/dist/esm/platform/specs/OneAudio.nitro.native.js +0 -0
  238. package/dist/esm/platform/specs/OneDevice.nitro.mjs +0 -0
  239. package/dist/esm/platform/specs/OneDevice.nitro.native.js +0 -0
  240. package/dist/esm/platform/specs/OneFileSystem.nitro.mjs +0 -0
  241. package/dist/esm/platform/specs/OneFileSystem.nitro.native.js +0 -0
  242. package/dist/esm/platform/specs/OneLocalAuthentication.nitro.mjs +0 -0
  243. package/dist/esm/platform/specs/OneLocalAuthentication.nitro.native.js +0 -0
  244. package/dist/esm/platform/specs/OneLocation.nitro.mjs +0 -0
  245. package/dist/esm/platform/specs/OneLocation.nitro.native.js +0 -0
  246. package/dist/esm/platform/specs/OneNativeComposeNodeNativeComponent.mjs +19 -3
  247. package/dist/esm/platform/specs/OneNativeComposeNodeNativeComponent.mjs.map +2 -2
  248. package/dist/esm/platform/specs/OneNativeComposeNodeNativeComponent.native.js +19 -3
  249. package/dist/esm/platform/specs/OneNativeComposeNodeNativeComponent.native.js.map +2 -2
  250. package/dist/esm/platform/specs/OneNativeModules.nitro.mjs +0 -0
  251. package/dist/esm/platform/specs/OneNativeModules.nitro.native.js +0 -0
  252. package/dist/esm/platform/specs/OneNativeReservedRegionsProviderNativeComponent.mjs.map +2 -2
  253. package/dist/esm/platform/specs/OneNativeReservedRegionsProviderNativeComponent.native.js.map +2 -2
  254. package/dist/esm/platform/specs/OnePhotoLibrary.nitro.mjs +0 -0
  255. package/dist/esm/platform/specs/OnePhotoLibrary.nitro.native.js +0 -0
  256. package/dist/esm/platform/specs/OneShare.nitro.mjs +0 -0
  257. package/dist/esm/platform/specs/OneShare.nitro.native.js +0 -0
  258. package/dist/esm/vite/one.mjs +3 -1
  259. package/dist/esm/vite/one.mjs.map +1 -1
  260. package/dist/esm/vite/one.native.js +3 -1
  261. package/dist/esm/vite/one.native.js.map +1 -1
  262. package/dist/esm/vite/plugins/kotlinSourcePlugin.mjs +36 -0
  263. package/dist/esm/vite/plugins/kotlinSourcePlugin.mjs.map +1 -0
  264. package/dist/esm/vite/plugins/kotlinSourcePlugin.native.js +41 -0
  265. package/dist/esm/vite/plugins/kotlinSourcePlugin.native.js.map +1 -0
  266. package/dist/esm/vite/plugins/swiftPackagePlugin.mjs +25 -7
  267. package/dist/esm/vite/plugins/swiftPackagePlugin.mjs.map +1 -1
  268. package/dist/esm/vite/plugins/swiftPackagePlugin.native.js +49 -7
  269. package/dist/esm/vite/plugins/swiftPackagePlugin.native.js.map +1 -1
  270. package/ios/Nitro/HybridOneAdaptive.swift +139 -47
  271. package/ios/Nitro/HybridOneAudio.swift +327 -0
  272. package/ios/Nitro/HybridOneDevice.swift +38 -0
  273. package/ios/Nitro/HybridOneFetch.swift +85 -15
  274. package/ios/Nitro/HybridOneFileSystem.swift +180 -0
  275. package/ios/Nitro/HybridOneLocalAuthentication.swift +71 -0
  276. package/ios/Nitro/HybridOneLocation.swift +317 -0
  277. package/ios/Nitro/HybridOneNativeModules.swift +44 -0
  278. package/ios/Nitro/HybridOnePhotoLibrary.swift +101 -0
  279. package/ios/Nitro/HybridOneSecureStore.swift +12 -0
  280. package/ios/Nitro/HybridOneShare.swift +136 -0
  281. package/ios/OneFetchBlobStoreModule.mm +46 -4
  282. package/ios/OneNativeReservedRegionsProviderComponentView.mm +9 -4
  283. package/ios/OneSwiftPackage.swift +10 -1
  284. package/nitrogen/generated/android/One+autolinking.cmake +9 -0
  285. package/nitrogen/generated/android/OneOnLoad.cpp +16 -0
  286. package/nitrogen/generated/android/c++/JHybridOneNativeModulesSpec.cpp +66 -0
  287. package/nitrogen/generated/android/c++/JHybridOneNativeModulesSpec.hpp +63 -0
  288. package/nitrogen/generated/android/c++/JHybridOneSecureStoreSpec.cpp +13 -0
  289. package/nitrogen/generated/android/c++/JHybridOneSecureStoreSpec.hpp +3 -0
  290. package/nitrogen/generated/android/kotlin/com/margelo/nitro/one/HybridOneNativeModulesSpec.kt +57 -0
  291. package/nitrogen/generated/android/kotlin/com/margelo/nitro/one/HybridOneSecureStoreSpec.kt +12 -0
  292. package/nitrogen/generated/ios/One-Swift-Cxx-Bridge.cpp +285 -45
  293. package/nitrogen/generated/ios/One-Swift-Cxx-Bridge.hpp +980 -183
  294. package/nitrogen/generated/ios/One-Swift-Cxx-Umbrella.hpp +100 -0
  295. package/nitrogen/generated/ios/OneAutolinking.mm +64 -0
  296. package/nitrogen/generated/ios/OneAutolinking.swift +127 -31
  297. package/nitrogen/generated/ios/c++/HybridOneAudioSpecSwift.cpp +11 -0
  298. package/nitrogen/generated/ios/c++/HybridOneAudioSpecSwift.hpp +197 -0
  299. package/nitrogen/generated/ios/c++/HybridOneDeviceSpecSwift.cpp +11 -0
  300. package/nitrogen/generated/ios/c++/HybridOneDeviceSpecSwift.hpp +86 -0
  301. package/nitrogen/generated/ios/c++/HybridOneFileSystemSpecSwift.cpp +11 -0
  302. package/nitrogen/generated/ios/c++/HybridOneFileSystemSpecSwift.hpp +152 -0
  303. package/nitrogen/generated/ios/c++/HybridOneLocalAuthenticationSpecSwift.cpp +11 -0
  304. package/nitrogen/generated/ios/c++/HybridOneLocalAuthenticationSpecSwift.hpp +97 -0
  305. package/nitrogen/generated/ios/c++/HybridOneLocationSpecSwift.cpp +11 -0
  306. package/nitrogen/generated/ios/c++/HybridOneLocationSpecSwift.hpp +134 -0
  307. package/nitrogen/generated/ios/c++/HybridOneNativeModulesSpecSwift.cpp +11 -0
  308. package/nitrogen/generated/ios/c++/HybridOneNativeModulesSpecSwift.hpp +83 -0
  309. package/nitrogen/generated/ios/c++/HybridOnePhotoLibrarySpecSwift.cpp +11 -0
  310. package/nitrogen/generated/ios/c++/HybridOnePhotoLibrarySpecSwift.hpp +109 -0
  311. package/nitrogen/generated/ios/c++/HybridOneSecureStoreSpecSwift.hpp +20 -0
  312. package/nitrogen/generated/ios/c++/HybridOneShareSpecSwift.cpp +11 -0
  313. package/nitrogen/generated/ios/c++/HybridOneShareSpecSwift.hpp +93 -0
  314. package/nitrogen/generated/ios/swift/AudioPlaybackState.swift +56 -0
  315. package/nitrogen/generated/ios/swift/AudioPlaybackStatus.swift +88 -0
  316. package/nitrogen/generated/ios/swift/AudioRecordingPermission.swift +44 -0
  317. package/nitrogen/generated/ios/swift/AudioRecordingResult.swift +39 -0
  318. package/nitrogen/generated/ios/swift/AudioRecordingState.swift +44 -0
  319. package/nitrogen/generated/ios/swift/AudioRecordingStatus.swift +52 -0
  320. package/nitrogen/generated/ios/swift/DeviceInfo.swift +67 -0
  321. package/nitrogen/generated/ios/swift/FileDirectories.swift +44 -0
  322. package/nitrogen/generated/ios/swift/FileEncoding.swift +40 -0
  323. package/nitrogen/generated/ios/swift/FileEntry.swift +39 -0
  324. package/nitrogen/generated/ios/swift/FileInfo.swift +75 -0
  325. package/nitrogen/generated/ios/swift/Func_void_AudioPlaybackStatus.swift +46 -0
  326. package/nitrogen/generated/ios/swift/Func_void_AudioRecordingPermission.swift +46 -0
  327. package/nitrogen/generated/ios/swift/Func_void_AudioRecordingResult.swift +46 -0
  328. package/nitrogen/generated/ios/swift/Func_void_AudioRecordingStatus.swift +46 -0
  329. package/nitrogen/generated/ios/swift/Func_void_DeviceInfo.swift +46 -0
  330. package/nitrogen/generated/ios/swift/Func_void_FileInfo.swift +46 -0
  331. package/nitrogen/generated/ios/swift/Func_void_LocationPermissionStatus.swift +46 -0
  332. package/nitrogen/generated/ios/swift/Func_void_LocationPosition.swift +46 -0
  333. package/nitrogen/generated/ios/swift/Func_void_PhotoLibraryPermissionStatus.swift +46 -0
  334. package/nitrogen/generated/ios/swift/Func_void_ShareResult.swift +46 -0
  335. package/nitrogen/generated/ios/swift/Func_void_std__string_std__string.swift +46 -0
  336. package/nitrogen/generated/ios/swift/Func_void_std__vector_FileEntry_.swift +46 -0
  337. package/nitrogen/generated/ios/swift/Func_void_std__vector_LocationPlace_.swift +46 -0
  338. package/nitrogen/generated/ios/swift/HybridOneAudioSpec.swift +67 -0
  339. package/nitrogen/generated/ios/swift/HybridOneAudioSpec_cxx.swift +373 -0
  340. package/nitrogen/generated/ios/swift/HybridOneDeviceSpec.swift +55 -0
  341. package/nitrogen/generated/ios/swift/HybridOneDeviceSpec_cxx.swift +145 -0
  342. package/nitrogen/generated/ios/swift/HybridOneFileSystemSpec.swift +62 -0
  343. package/nitrogen/generated/ios/swift/HybridOneFileSystemSpec_cxx.swift +277 -0
  344. package/nitrogen/generated/ios/swift/HybridOneLocalAuthenticationSpec.swift +56 -0
  345. package/nitrogen/generated/ios/swift/HybridOneLocalAuthenticationSpec_cxx.swift +157 -0
  346. package/nitrogen/generated/ios/swift/HybridOneLocationSpec.swift +60 -0
  347. package/nitrogen/generated/ios/swift/HybridOneLocationSpec_cxx.swift +251 -0
  348. package/nitrogen/generated/ios/swift/HybridOneNativeModulesSpec.swift +55 -0
  349. package/nitrogen/generated/ios/swift/HybridOneNativeModulesSpec_cxx.swift +145 -0
  350. package/nitrogen/generated/ios/swift/HybridOnePhotoLibrarySpec.swift +58 -0
  351. package/nitrogen/generated/ios/swift/HybridOnePhotoLibrarySpec_cxx.swift +195 -0
  352. package/nitrogen/generated/ios/swift/HybridOneSecureStoreSpec.swift +3 -0
  353. package/nitrogen/generated/ios/swift/HybridOneSecureStoreSpec_cxx.swift +40 -0
  354. package/nitrogen/generated/ios/swift/HybridOneShareSpec.swift +55 -0
  355. package/nitrogen/generated/ios/swift/HybridOneShareSpec_cxx.swift +145 -0
  356. package/nitrogen/generated/ios/swift/LocalAuthenticationStatus.swift +52 -0
  357. package/nitrogen/generated/ios/swift/LocalBiometryType.swift +48 -0
  358. package/nitrogen/generated/ios/swift/LocationPermissionStatus.swift +52 -0
  359. package/nitrogen/generated/ios/swift/LocationPlace.swift +178 -0
  360. package/nitrogen/generated/ios/swift/LocationPosition.swift +64 -0
  361. package/nitrogen/generated/ios/swift/PhotoLibraryPermissionStatus.swift +52 -0
  362. package/nitrogen/generated/ios/swift/ShareItem.swift +34 -0
  363. package/nitrogen/generated/ios/swift/ShareItemType.swift +44 -0
  364. package/nitrogen/generated/ios/swift/ShareResult.swift +47 -0
  365. package/nitrogen/generated/shared/c++/AudioPlaybackState.hpp +92 -0
  366. package/nitrogen/generated/shared/c++/AudioPlaybackStatus.hpp +102 -0
  367. package/nitrogen/generated/shared/c++/AudioRecordingPermission.hpp +80 -0
  368. package/nitrogen/generated/shared/c++/AudioRecordingResult.hpp +91 -0
  369. package/nitrogen/generated/shared/c++/AudioRecordingState.hpp +80 -0
  370. package/nitrogen/generated/shared/c++/AudioRecordingStatus.hpp +94 -0
  371. package/nitrogen/generated/shared/c++/DeviceInfo.hpp +104 -0
  372. package/nitrogen/generated/shared/c++/FileDirectories.hpp +95 -0
  373. package/nitrogen/generated/shared/c++/FileEncoding.hpp +76 -0
  374. package/nitrogen/generated/shared/c++/FileEntry.hpp +91 -0
  375. package/nitrogen/generated/shared/c++/FileInfo.hpp +100 -0
  376. package/nitrogen/generated/shared/c++/HybridOneAudioSpec.cpp +33 -0
  377. package/nitrogen/generated/shared/c++/HybridOneAudioSpec.hpp +86 -0
  378. package/nitrogen/generated/shared/c++/HybridOneDeviceSpec.cpp +21 -0
  379. package/nitrogen/generated/shared/c++/HybridOneDeviceSpec.hpp +64 -0
  380. package/nitrogen/generated/shared/c++/HybridOneFileSystemSpec.cpp +28 -0
  381. package/nitrogen/generated/shared/c++/HybridOneFileSystemSpec.hpp +82 -0
  382. package/nitrogen/generated/shared/c++/HybridOneLocalAuthenticationSpec.cpp +22 -0
  383. package/nitrogen/generated/shared/c++/HybridOneLocalAuthenticationSpec.hpp +66 -0
  384. package/nitrogen/generated/shared/c++/HybridOneLocationSpec.cpp +26 -0
  385. package/nitrogen/generated/shared/c++/HybridOneLocationSpec.hpp +78 -0
  386. package/nitrogen/generated/shared/c++/HybridOneNativeModulesSpec.cpp +21 -0
  387. package/nitrogen/generated/shared/c++/HybridOneNativeModulesSpec.hpp +63 -0
  388. package/nitrogen/generated/shared/c++/HybridOnePhotoLibrarySpec.cpp +24 -0
  389. package/nitrogen/generated/shared/c++/HybridOnePhotoLibrarySpec.hpp +68 -0
  390. package/nitrogen/generated/shared/c++/HybridOneSecureStoreSpec.cpp +3 -0
  391. package/nitrogen/generated/shared/c++/HybridOneSecureStoreSpec.hpp +3 -0
  392. package/nitrogen/generated/shared/c++/HybridOneShareSpec.cpp +21 -0
  393. package/nitrogen/generated/shared/c++/HybridOneShareSpec.hpp +68 -0
  394. package/nitrogen/generated/shared/c++/LocalAuthenticationStatus.hpp +93 -0
  395. package/nitrogen/generated/shared/c++/LocalBiometryType.hpp +84 -0
  396. package/nitrogen/generated/shared/c++/LocationPermissionStatus.hpp +88 -0
  397. package/nitrogen/generated/shared/c++/LocationPlace.hpp +120 -0
  398. package/nitrogen/generated/shared/c++/LocationPosition.hpp +111 -0
  399. package/nitrogen/generated/shared/c++/PhotoLibraryPermissionStatus.hpp +88 -0
  400. package/nitrogen/generated/shared/c++/ShareItem.hpp +89 -0
  401. package/nitrogen/generated/shared/c++/ShareItemType.hpp +80 -0
  402. package/nitrogen/generated/shared/c++/ShareResult.hpp +88 -0
  403. package/package.json +10 -10
  404. package/schema.json +6 -0
  405. package/src/cli/generateRoutes.ts +2 -0
  406. package/src/index.ts +32 -1
  407. package/src/nativeCoverage.test.ts +36 -14
  408. package/src/one.test.ts +34 -2
  409. package/src/one.ts +21 -33
  410. package/src/platform/README.md +13 -1
  411. package/src/platform/adaptive/ReservedRegions.native.tsx +4 -5
  412. package/src/platform/adaptive/ReservedRegions.tsx +15 -8
  413. package/src/platform/adaptive/index.native.ts +21 -3
  414. package/src/platform/adaptive/index.ts +6 -0
  415. package/src/platform/adaptive/reservedRegionsContext.ts +56 -4
  416. package/src/platform/adaptive/types.ts +9 -1
  417. package/src/platform/audio/index.native.ts +53 -0
  418. package/src/platform/audio/index.ts +35 -0
  419. package/src/platform/compose.android.tsx +312 -3
  420. package/src/platform/compose.tsx +122 -0
  421. package/src/platform/composeTypes.ts +151 -0
  422. package/src/platform/composeValidation.ts +203 -15
  423. package/src/platform/device/index.native.ts +15 -0
  424. package/src/platform/device/index.ts +9 -0
  425. package/src/platform/effects/EdgeFade.native.tsx +37 -13
  426. package/src/platform/effects/EdgeFade.tsx +194 -0
  427. package/src/platform/effects/index.ts +6 -12
  428. package/src/platform/effects/nativeProps.ts +50 -0
  429. package/src/platform/effects/normalize.ts +22 -60
  430. package/src/platform/file-system/index.native.ts +71 -0
  431. package/src/platform/file-system/index.ts +24 -0
  432. package/src/platform/index.native.ts +26 -0
  433. package/src/platform/index.ts +26 -0
  434. package/src/platform/local-authentication/index.native.ts +33 -0
  435. package/src/platform/local-authentication/index.ts +12 -0
  436. package/src/platform/location/index.native.ts +63 -0
  437. package/src/platform/location/index.ts +25 -0
  438. package/src/platform/native-source/index.native.ts +24 -0
  439. package/src/platform/native-source/index.ts +8 -0
  440. package/src/platform/photo-library/index.native.ts +41 -0
  441. package/src/platform/photo-library/index.ts +14 -0
  442. package/src/platform/secure-store/index.native.ts +38 -1
  443. package/src/platform/secure-store/index.ts +24 -1
  444. package/src/platform/share/index.native.ts +20 -0
  445. package/src/platform/share/index.ts +9 -0
  446. package/src/platform/specs/OneAdaptive.nitro.ts +1 -1
  447. package/src/platform/specs/OneAudio.nitro.ts +41 -0
  448. package/src/platform/specs/OneDevice.nitro.ts +14 -0
  449. package/src/platform/specs/OneFileSystem.nitro.ts +35 -0
  450. package/src/platform/specs/OneLocalAuthentication.nitro.ts +16 -0
  451. package/src/platform/specs/OneLocation.nitro.ts +44 -0
  452. package/src/platform/specs/OneNativeComposeNodeNativeComponent.ts +63 -1
  453. package/src/platform/specs/OneNativeModules.nitro.ts +5 -0
  454. package/src/platform/specs/OneNativeReservedRegionsProviderNativeComponent.ts +2 -0
  455. package/src/platform/specs/OnePhotoLibrary.nitro.ts +15 -0
  456. package/src/platform/specs/OneSecureStore.nitro.ts +5 -1
  457. package/src/platform/specs/OneShare.nitro.ts +17 -0
  458. package/src/vite/one.ts +3 -1
  459. package/src/vite/plugins/kotlinSourcePlugin.ts +41 -0
  460. package/src/vite/plugins/swiftPackagePlugin.ts +33 -10
  461. package/types/cli/generateRoutes.d.ts.map +1 -1
  462. package/types/index.d.ts +3 -1
  463. package/types/index.d.ts.map +1 -1
  464. package/types/one.d.ts +9 -12
  465. package/types/one.d.ts.map +1 -1
  466. package/types/platform/adaptive/ReservedRegions.d.ts +1 -2
  467. package/types/platform/adaptive/ReservedRegions.d.ts.map +1 -1
  468. package/types/platform/adaptive/ReservedRegions.native.d.ts +0 -1
  469. package/types/platform/adaptive/ReservedRegions.native.d.ts.map +1 -1
  470. package/types/platform/adaptive/index.d.ts +1 -0
  471. package/types/platform/adaptive/index.d.ts.map +1 -1
  472. package/types/platform/adaptive/index.native.d.ts +4 -1
  473. package/types/platform/adaptive/index.native.d.ts.map +1 -1
  474. package/types/platform/adaptive/reservedRegionsContext.d.ts +18 -1
  475. package/types/platform/adaptive/reservedRegionsContext.d.ts.map +1 -1
  476. package/types/platform/adaptive/types.d.ts +8 -1
  477. package/types/platform/adaptive/types.d.ts.map +1 -1
  478. package/types/platform/audio/index.d.ts +18 -0
  479. package/types/platform/audio/index.d.ts.map +1 -0
  480. package/types/platform/audio/index.native.d.ts +18 -0
  481. package/types/platform/audio/index.native.d.ts.map +1 -0
  482. package/types/platform/compose.android.d.ts +80 -1
  483. package/types/platform/compose.android.d.ts.map +1 -1
  484. package/types/platform/compose.d.ts +80 -1
  485. package/types/platform/compose.d.ts.map +1 -1
  486. package/types/platform/composeTypes.d.ts +102 -1
  487. package/types/platform/composeTypes.d.ts.map +1 -1
  488. package/types/platform/composeValidation.d.ts +8 -1
  489. package/types/platform/composeValidation.d.ts.map +1 -1
  490. package/types/platform/device/index.d.ts +6 -0
  491. package/types/platform/device/index.d.ts.map +1 -0
  492. package/types/platform/device/index.native.d.ts +7 -0
  493. package/types/platform/device/index.native.d.ts.map +1 -0
  494. package/types/platform/effects/EdgeFade.d.ts +3 -0
  495. package/types/platform/effects/EdgeFade.d.ts.map +1 -0
  496. package/types/platform/effects/EdgeFade.native.d.ts.map +1 -1
  497. package/types/platform/effects/index.d.ts +2 -2
  498. package/types/platform/effects/index.d.ts.map +1 -1
  499. package/types/platform/effects/nativeProps.d.ts +20 -0
  500. package/types/platform/effects/nativeProps.d.ts.map +1 -0
  501. package/types/platform/effects/normalize.d.ts +5 -20
  502. package/types/platform/effects/normalize.d.ts.map +1 -1
  503. package/types/platform/file-system/index.d.ts +13 -0
  504. package/types/platform/file-system/index.d.ts.map +1 -0
  505. package/types/platform/file-system/index.native.d.ts +21 -0
  506. package/types/platform/file-system/index.native.d.ts.map +1 -0
  507. package/types/platform/index.d.ts +16 -2
  508. package/types/platform/index.d.ts.map +1 -1
  509. package/types/platform/index.native.d.ts +16 -2
  510. package/types/platform/index.native.d.ts.map +1 -1
  511. package/types/platform/local-authentication/index.d.ts +7 -0
  512. package/types/platform/local-authentication/index.d.ts.map +1 -0
  513. package/types/platform/local-authentication/index.native.d.ts +9 -0
  514. package/types/platform/local-authentication/index.native.d.ts.map +1 -0
  515. package/types/platform/location/index.d.ts +14 -0
  516. package/types/platform/location/index.d.ts.map +1 -0
  517. package/types/platform/location/index.native.d.ts +20 -0
  518. package/types/platform/location/index.native.d.ts.map +1 -0
  519. package/types/platform/native-source/index.d.ts +2 -0
  520. package/types/platform/native-source/index.d.ts.map +1 -0
  521. package/types/platform/native-source/index.native.d.ts +2 -0
  522. package/types/platform/native-source/index.native.d.ts.map +1 -0
  523. package/types/platform/photo-library/index.d.ts +9 -0
  524. package/types/platform/photo-library/index.d.ts.map +1 -0
  525. package/types/platform/photo-library/index.native.d.ts +13 -0
  526. package/types/platform/photo-library/index.native.d.ts.map +1 -0
  527. package/types/platform/secure-store/index.d.ts +6 -0
  528. package/types/platform/secure-store/index.d.ts.map +1 -1
  529. package/types/platform/secure-store/index.native.d.ts +6 -0
  530. package/types/platform/secure-store/index.native.d.ts.map +1 -1
  531. package/types/platform/share/index.d.ts +7 -0
  532. package/types/platform/share/index.d.ts.map +1 -0
  533. package/types/platform/share/index.native.d.ts +7 -0
  534. package/types/platform/share/index.native.d.ts.map +1 -0
  535. package/types/platform/specs/OneAudio.nitro.d.ts +39 -0
  536. package/types/platform/specs/OneAudio.nitro.d.ts.map +1 -0
  537. package/types/platform/specs/OneDevice.nitro.d.ts +15 -0
  538. package/types/platform/specs/OneDevice.nitro.d.ts.map +1 -0
  539. package/types/platform/specs/OneFileSystem.nitro.d.ts +33 -0
  540. package/types/platform/specs/OneFileSystem.nitro.d.ts.map +1 -0
  541. package/types/platform/specs/OneLocalAuthentication.nitro.d.ts +14 -0
  542. package/types/platform/specs/OneLocalAuthentication.nitro.d.ts.map +1 -0
  543. package/types/platform/specs/OneLocation.nitro.d.ts +35 -0
  544. package/types/platform/specs/OneLocation.nitro.d.ts.map +1 -0
  545. package/types/platform/specs/OneNativeComposeNodeNativeComponent.d.ts +63 -1
  546. package/types/platform/specs/OneNativeComposeNodeNativeComponent.d.ts.map +1 -1
  547. package/types/platform/specs/OneNativeModules.nitro.d.ts +8 -0
  548. package/types/platform/specs/OneNativeModules.nitro.d.ts.map +1 -0
  549. package/types/platform/specs/OneNativeReservedRegionsProviderNativeComponent.d.ts +2 -0
  550. package/types/platform/specs/OneNativeReservedRegionsProviderNativeComponent.d.ts.map +1 -1
  551. package/types/platform/specs/OnePhotoLibrary.nitro.d.ts +11 -0
  552. package/types/platform/specs/OnePhotoLibrary.nitro.d.ts.map +1 -0
  553. package/types/platform/specs/OneSecureStore.nitro.d.ts +3 -0
  554. package/types/platform/specs/OneSecureStore.nitro.d.ts.map +1 -1
  555. package/types/platform/specs/OneShare.nitro.d.ts +16 -0
  556. package/types/platform/specs/OneShare.nitro.d.ts.map +1 -0
  557. package/types/vite/one.d.ts.map +1 -1
  558. package/types/vite/plugins/kotlinSourcePlugin.d.ts +3 -0
  559. package/types/vite/plugins/kotlinSourcePlugin.d.ts.map +1 -0
  560. package/types/vite/plugins/swiftPackagePlugin.d.ts +1 -1
  561. package/types/vite/plugins/swiftPackagePlugin.d.ts.map +1 -1
@@ -1,6 +1,7 @@
1
1
  package com.margelo.nitro.one
2
2
 
3
3
  import android.net.Uri
4
+ import android.util.Base64
4
5
  import android.webkit.MimeTypeMap
5
6
  import com.facebook.react.modules.blob.BlobModule
6
7
  import com.facebook.react.modules.network.CookieJarContainer
@@ -8,8 +9,14 @@ import com.facebook.react.modules.network.ForwardingCookieHandler
8
9
  import com.facebook.react.modules.network.OkHttpClientProvider
9
10
  import com.margelo.nitro.NitroModules
10
11
  import com.margelo.nitro.core.ArrayBuffer
12
+ import java.io.ByteArrayInputStream
13
+ import java.io.File
14
+ import java.io.FileInputStream
15
+ import java.io.FileOutputStream
11
16
  import java.io.IOException
12
17
  import java.io.InputStream
18
+ import java.net.URL
19
+ import java.nio.channels.Channels
13
20
  import java.util.concurrent.ConcurrentHashMap
14
21
  import java.util.concurrent.Executors
15
22
  import okhttp3.Call
@@ -27,6 +34,7 @@ import okhttp3.RequestBody.Companion.toRequestBody
27
34
  import okhttp3.Response
28
35
  import okhttp3.internal.http.HttpMethod
29
36
  import okio.BufferedSink
37
+ import okio.source
30
38
 
31
39
  // the global fetch on native, over an OkHttp client built the way react
32
40
  // native's NetworkingModule builds its own: from OkHttpClientProvider, so an
@@ -67,6 +75,26 @@ class HybridOneFetch : HybridOneFetchSpec() {
67
75
  readLocal(id, request.url, onResponse, onChunk, onComplete, onError)
68
76
  return
69
77
  }
78
+ if (request.form?.any { it.uri != null } == true) {
79
+ // react native opens every { uri } part before it sends, downloading
80
+ // an http one, so that runs off the js thread; a cancel meanwhile
81
+ // leaves no entry for send to replace
82
+ active[id] = {}
83
+ local.execute { send(id, request, true, onResponse, onChunk, onComplete, onError) }
84
+ return
85
+ }
86
+ send(id, request, false, onResponse, onChunk, onComplete, onError)
87
+ }
88
+
89
+ private fun send(
90
+ id: Double,
91
+ request: FetchNativeRequest,
92
+ pending: Boolean,
93
+ onResponse: (response: FetchNativeResponse) -> Unit,
94
+ onChunk: (chunk: ArrayBuffer) -> Unit,
95
+ onComplete: () -> Unit,
96
+ onError: (message: String) -> Unit
97
+ ) {
70
98
  val built = try {
71
99
  val builder = Request.Builder().url(request.url)
72
100
  for (header in request.headers) builder.addHeader(header.name, header.value)
@@ -75,12 +103,17 @@ class HybridOneFetch : HybridOneFetchSpec() {
75
103
  ?.value?.toMediaTypeOrNull()
76
104
  builder.method(request.method, body(request, type))
77
105
  builder.build()
78
- } catch (error: IllegalArgumentException) {
79
- onError(error.message ?: "invalid request")
106
+ } catch (error: Exception) {
107
+ if (!pending || active.remove(id) != null) onError(error.message ?: "invalid request")
80
108
  return
81
109
  }
82
110
  val call = (if (request.omitCredentials) clientWithoutCookies else client).newCall(built)
83
- active[id] = { call.cancel() }
111
+ val cancel = { call.cancel() }
112
+ if (pending) {
113
+ if (active.replace(id, cancel) == null) return
114
+ } else {
115
+ active[id] = cancel
116
+ }
84
117
  call.enqueue(object : Callback {
85
118
  override fun onFailure(call: Call, e: IOException) {
86
119
  if (active.remove(id) != null) onError(e.message ?: e.javaClass.simpleName)
@@ -115,10 +148,11 @@ class HybridOneFetch : HybridOneFetchSpec() {
115
148
  context.getNativeModule(BlobModule::class.java)
116
149
  ?: throw IllegalStateException("fetch: react native's BlobModule is not loaded")
117
150
 
118
- // the request body. js-owned bytes are copied now, during the call;
119
- // blobs, files and multipart parts are read on the network thread. every
120
- // length is known up front where react native's was, so uploads carry a
121
- // content-length rather than going out chunked.
151
+ // the request body. js-owned bytes are copied now, during the call; blobs
152
+ // are read on the network thread, and { uri } parts open before sending,
153
+ // as react native opens them. every length is known up front where react
154
+ // native's was, so uploads carry a content-length rather than going out
155
+ // chunked.
122
156
  private fun body(request: FetchNativeRequest, type: MediaType?): RequestBody? {
123
157
  request.body?.let { return it.toByteArray().toRequestBody(type) }
124
158
  request.blob?.let { return blobBody(it, type) }
@@ -137,13 +171,43 @@ class HybridOneFetch : HybridOneFetchSpec() {
137
171
  }
138
172
  }
139
173
 
140
- private fun uriBody(uri: String, type: MediaType?) = object : RequestBody() {
174
+ // react native's RequestBodyUtil.getFileInputStream, which is internal to
175
+ // react native: an http(s) uri downloads to a cache file first, a data: uri
176
+ // decodes its base64, anything else opens through the content resolver
177
+ private fun partStream(uri: String): InputStream {
178
+ val parsed = Uri.parse(uri)
179
+ if (parsed.scheme?.startsWith("http") == true) {
180
+ val file = File.createTempFile("RequestBodyUtil", "temp", context.applicationContext.cacheDir)
181
+ file.deleteOnExit()
182
+ FileOutputStream(file).use { output ->
183
+ URL(uri).openStream().use { input ->
184
+ Channels.newChannel(input).use { channel ->
185
+ output.channel.transferFrom(channel, 0, Long.MAX_VALUE)
186
+ }
187
+ }
188
+ }
189
+ return FileInputStream(file)
190
+ }
191
+ if (uri.startsWith("data:")) {
192
+ return ByteArrayInputStream(Base64.decode(uri.split(",")[1], Base64.DEFAULT))
193
+ }
194
+ return context.contentResolver.openInputStream(parsed)
195
+ ?: throw IOException("Could not retrieve file for uri $uri")
196
+ }
197
+
198
+ // react native's RequestBodyUtil.create: the stream's available bytes are
199
+ // the part's length
200
+ private fun streamBody(type: MediaType, input: InputStream) = object : RequestBody() {
141
201
  override fun contentType() = type
142
202
  override fun contentLength() =
143
- context.contentResolver.openAssetFileDescriptor(Uri.parse(uri), "r")?.use { it.length }
144
- ?: -1L
203
+ try {
204
+ input.available().toLong()
205
+ } catch (e: IOException) {
206
+ 0L
207
+ }
208
+ override fun isOneShot() = true
145
209
  override fun writeTo(sink: BufferedSink) {
146
- open(uri).use { input -> input.copyTo(sink.outputStream()) }
210
+ input.use { sink.writeAll(it.source()) }
147
211
  }
148
212
  }
149
213
 
@@ -167,14 +231,21 @@ class HybridOneFetch : HybridOneFetchSpec() {
167
231
  builder.addPart(Headers.headersOf("Content-Disposition", disposition), value.toRequestBody())
168
232
  continue
169
233
  }
170
- val filename = part.filename ?: part.uri?.let { Uri.parse(it).lastPathSegment }
234
+ val filename = part.filename
171
235
  if (filename != null) disposition += "; filename=\"${escape(filename)}\""
172
- val type = (part.type ?: "application/octet-stream").toMediaTypeOrNull()
173
236
  val uri = part.uri
174
237
  val blob = part.blob
175
238
  val body = when {
176
- uri != null -> uriBody(uri, type)
177
- blob != null -> blobBody(blob, type)
239
+ uri != null -> streamBody(
240
+ part.type?.toMediaTypeOrNull()
241
+ ?: throw IOException("Binary FormData part needs a content-type header."),
242
+ try {
243
+ partStream(uri)
244
+ } catch (error: Exception) {
245
+ throw IOException("Could not retrieve file for uri $uri", error)
246
+ }
247
+ )
248
+ blob != null -> blobBody(blob, (part.type ?: "application/octet-stream").toMediaTypeOrNull())
178
249
  else -> throw IOException("fetch: FormData part ${part.name} has no value")
179
250
  }
180
251
  builder.addPart(Headers.headersOf("Content-Disposition", disposition), body)
@@ -0,0 +1,40 @@
1
+ package com.margelo.nitro.one
2
+
3
+ import com.margelo.nitro.core.Promise
4
+ import dev.onejs.one.OneNativeSourceDispatch
5
+ import kotlinx.coroutines.CoroutineScope
6
+ import kotlinx.coroutines.Dispatchers
7
+ import kotlinx.coroutines.SupervisorJob
8
+ import kotlinx.coroutines.launch
9
+
10
+ class HybridOneNativeModules : HybridOneNativeModulesSpec() {
11
+ private val main = CoroutineScope(SupervisorJob() + Dispatchers.Main.immediate)
12
+ private val instances = mutableMapOf<String, OneNativeSourceDispatch>()
13
+
14
+ override fun call(module: String, methodName: String, argsJson: String, contractHash: String): Promise<String> {
15
+ val promise = Promise<String>()
16
+ main.launch {
17
+ try {
18
+ val packageName = module.substringBefore('.', "")
19
+ if (packageName.isEmpty() || !module.contains('.')) {
20
+ throw OneNativeError("E_NATIVE_SOURCE", "invalid module $module")
21
+ }
22
+ val dispatcher = instances.getOrPut(packageName) {
23
+ val name = "OneNativeSource_$packageName"
24
+ val type = Class.forName(name)
25
+ type.getDeclaredConstructor().newInstance() as OneNativeSourceDispatch
26
+ }
27
+ if (dispatcher.contractHash != contractHash) {
28
+ throw OneNativeError("E_NATIVE_SOURCE_REBUILD", "native module $module changed; rebuild the app")
29
+ }
30
+ promise.resolve(dispatcher.call(module, methodName, argsJson))
31
+ } catch (error: Exception) {
32
+ promise.reject(
33
+ if (error is OneNativeError) error
34
+ else OneNativeError("E_NATIVE_SOURCE", "$module.$methodName: ${error.message}")
35
+ )
36
+ }
37
+ }
38
+ return promise
39
+ }
40
+ }
@@ -120,35 +120,48 @@ class HybridOneSecureStore : HybridOneSecureStoreSpec() {
120
120
  }
121
121
  }
122
122
 
123
- // any platform failure rejects with the stable code for its verb.
124
- private fun <T> guarded(code: String, verb: String, body: () -> T): Promise<T> =
125
- Promise.async {
126
- try {
127
- body()
128
- } catch (e: Exception) {
129
- throw OneNativeError(code, "SecureStore.$verb: ${e.message}")
130
- }
123
+ // any platform failure throws or rejects with the stable code for its verb.
124
+ private fun <T> guarded(code: String, verb: String, body: () -> T): T =
125
+ try {
126
+ body()
127
+ } catch (e: Exception) {
128
+ throw OneNativeError(code, "SecureStore.$verb: ${e.message}")
131
129
  }
132
130
 
133
- override fun getItem(key: String): Promise<String?> =
134
- guarded("E_SECURE_STORE_GET", "getItem") {
135
- val blob = prefs().getString(key, null) ?: return@guarded null
136
- decrypt(blob)
131
+ private fun read(key: String): String? {
132
+ val blob = prefs().getString(key, null) ?: return null
133
+ return decrypt(blob)
134
+ }
135
+
136
+ private fun write(key: String, value: String) {
137
+ if (!prefs().edit().putString(key, encrypt(value)).commit()) {
138
+ throw SecureStoreException("the write could not be committed to disk")
137
139
  }
140
+ }
138
141
 
139
- override fun setItem(key: String, value: String): Promise<Unit> =
140
- guarded("E_SECURE_STORE_SET", "setItem") {
141
- if (!prefs().edit().putString(key, encrypt(value)).commit()) {
142
- throw SecureStoreException("the write could not be committed to disk")
143
- }
142
+ private fun remove(key: String) {
143
+ if (!prefs().edit().remove(key).commit()) {
144
+ throw SecureStoreException("the delete could not be committed to disk")
144
145
  }
146
+ }
147
+
148
+ override fun getItem(key: String): Promise<String?> =
149
+ Promise.async { guarded("E_SECURE_STORE_GET", "getItem") { read(key) } }
150
+
151
+ override fun setItem(key: String, value: String): Promise<Unit> =
152
+ Promise.async { guarded("E_SECURE_STORE_SET", "setItem") { write(key, value) } }
145
153
 
146
154
  override fun deleteItem(key: String): Promise<Unit> =
147
- guarded("E_SECURE_STORE_DELETE", "deleteItem") {
148
- if (!prefs().edit().remove(key).commit()) {
149
- throw SecureStoreException("the delete could not be committed to disk")
150
- }
151
- }
155
+ Promise.async { guarded("E_SECURE_STORE_DELETE", "deleteItem") { remove(key) } }
156
+
157
+ override fun getItemSync(key: String): String? =
158
+ guarded("E_SECURE_STORE_GET", "getItemSync") { read(key) }
159
+
160
+ override fun setItemSync(key: String, value: String) =
161
+ guarded("E_SECURE_STORE_SET", "setItemSync") { write(key, value) }
162
+
163
+ override fun deleteItemSync(key: String) =
164
+ guarded("E_SECURE_STORE_DELETE", "deleteItemSync") { remove(key) }
152
165
 
153
166
  private class SecureStoreException(message: String) : Exception(message)
154
167
 
@@ -0,0 +1,41 @@
1
+ package com.margelo.nitro.one
2
+
3
+ import android.app.Activity
4
+ import android.view.View
5
+ import android.view.ViewTreeObserver
6
+ import com.facebook.react.bridge.ReactMarker
7
+ import com.facebook.react.bridge.ReactMarkerConstants
8
+
9
+ // the prebuilt MainActivity calls this right after super.onCreate. the
10
+ // activity's content skips drawing until react native's root view logs its
11
+ // first content, which is android's documented way to keep the splash on
12
+ // screen: the android 12+ system splash, or the launch theme's window
13
+ // background below that, never gives way to an empty root.
14
+ object OneLaunchScreen {
15
+ @JvmStatic
16
+ fun hold(activity: Activity) {
17
+ val content = activity.findViewById<View>(android.R.id.content)
18
+ var appeared = false
19
+ lateinit var marker: ReactMarker.MarkerListener
20
+ marker = ReactMarker.MarkerListener { name, _, _ ->
21
+ if (name != ReactMarkerConstants.CONTENT_APPEARED) return@MarkerListener
22
+ // markers can log off the main thread; the flag and the redraw
23
+ // both land on it.
24
+ content.post {
25
+ ReactMarker.removeListener(marker)
26
+ appeared = true
27
+ content.invalidate()
28
+ }
29
+ }
30
+ ReactMarker.addListener(marker)
31
+ content.viewTreeObserver.addOnPreDrawListener(
32
+ object : ViewTreeObserver.OnPreDrawListener {
33
+ override fun onPreDraw(): Boolean {
34
+ if (!appeared) return false
35
+ content.viewTreeObserver.removeOnPreDrawListener(this)
36
+ return true
37
+ }
38
+ }
39
+ )
40
+ }
41
+ }
@@ -0,0 +1,6 @@
1
+ package dev.onejs.one
2
+
3
+ interface OneNativeSourceDispatch {
4
+ val contractHash: String
5
+ suspend fun call(module: String, method: String, argsJson: String): String
6
+ }
@@ -0,0 +1,3 @@
1
+ package dev.onejs.one.source
2
+
3
+ interface OneModule
@@ -121,14 +121,14 @@ internal class OneNativeComposeNodeDialogDismissEvent(
121
121
  }
122
122
  }
123
123
 
124
- internal class OneNativeComposeNodeSwitchValueChangeEvent(
124
+ internal class OneNativeComposeNodeBooleanValueChangeEvent(
125
125
  surfaceId: Int,
126
126
  viewTag: Int,
127
127
  private val value: Boolean,
128
128
  private val eventCount: Int,
129
129
  private val revision: Int,
130
- ) : Event<OneNativeComposeNodeSwitchValueChangeEvent>(surfaceId, viewTag) {
131
- override fun getEventName(): String = "topNativeComposeNodeSwitchValueChange"
130
+ ) : Event<OneNativeComposeNodeBooleanValueChangeEvent>(surfaceId, viewTag) {
131
+ override fun getEventName(): String = "topNativeComposeNodeBooleanValueChange"
132
132
 
133
133
  override fun canCoalesce(): Boolean = false
134
134
 
@@ -81,8 +81,8 @@ class OneNativeComposeNodeManager :
81
81
  super.getExportedCustomDirectEventTypeConstants()?.toMutableMap() ?: mutableMapOf()
82
82
  events["topNativeComposeNodeButtonPress"] =
83
83
  mapOf("registrationName" to "onNativeComposeNodeButtonPress")
84
- events["topNativeComposeNodeSwitchValueChange"] =
85
- mapOf("registrationName" to "onNativeComposeNodeSwitchValueChange")
84
+ events["topNativeComposeNodeBooleanValueChange"] =
85
+ mapOf("registrationName" to "onNativeComposeNodeBooleanValueChange")
86
86
  events["topNativeComposeNodeTextValueChange"] =
87
87
  mapOf("registrationName" to "onNativeComposeNodeTextValueChange")
88
88
  events["topNativeComposeNodeTextFieldFocusChange"] =
@@ -154,6 +154,70 @@ class OneNativeComposeNodeManager :
154
154
  view.stageValue(value)
155
155
  }
156
156
 
157
+ override fun setNativeClickable(view: OneNativeComposeNodeView, value: Boolean) {
158
+ view.stageNativeClickable(value)
159
+ }
160
+
161
+ override fun setCheckboxColors(view: OneNativeComposeNodeView, value: ReadableMap?) {
162
+ view.stageCheckboxColors(value)
163
+ }
164
+
165
+ override fun setSelected(view: OneNativeComposeNodeView, value: Boolean) {
166
+ view.stageSelected(value)
167
+ }
168
+
169
+ override fun setRadioColors(view: OneNativeComposeNodeView, value: ReadableMap?) {
170
+ view.stageRadioColors(value)
171
+ }
172
+
173
+ override fun setCardColors(view: OneNativeComposeNodeView, value: ReadableMap?) {
174
+ view.stageCardColors(value)
175
+ }
176
+
177
+ override fun setBadgeColors(view: OneNativeComposeNodeView, value: ReadableMap?) {
178
+ view.stageBadgeColors(value)
179
+ }
180
+
181
+ override fun setListItemColors(view: OneNativeComposeNodeView, value: ReadableMap?) {
182
+ view.stageListItemColors(value)
183
+ }
184
+
185
+ override fun setTonalElevation(view: OneNativeComposeNodeView, value: Double) {
186
+ view.stageTonalElevation(value)
187
+ }
188
+
189
+ override fun setShadowElevation(view: OneNativeComposeNodeView, value: Double) {
190
+ view.stageShadowElevation(value)
191
+ }
192
+
193
+ override fun setCardElevation(view: OneNativeComposeNodeView, value: Double) {
194
+ view.stageCardElevation(value)
195
+ }
196
+
197
+ override fun setCardBorder(view: OneNativeComposeNodeView, value: ReadableMap?) {
198
+ view.stageCardBorder(value)
199
+ }
200
+
201
+ override fun setDividerStyle(view: OneNativeComposeNodeView, value: ReadableMap?) {
202
+ view.stageDividerStyle(value)
203
+ }
204
+
205
+ override fun setSlotName(view: OneNativeComposeNodeView, value: String?) {
206
+ view.stageSlotName(value)
207
+ }
208
+
209
+ override fun setChipColors(view: OneNativeComposeNodeView, value: ReadableMap?) {
210
+ view.stageChipColors(value)
211
+ }
212
+
213
+ override fun setChipElevation(view: OneNativeComposeNodeView, value: Double) {
214
+ view.stageChipElevation(value)
215
+ }
216
+
217
+ override fun setChipBorder(view: OneNativeComposeNodeView, value: ReadableMap?) {
218
+ view.stageChipBorder(value)
219
+ }
220
+
157
221
  override fun setAcknowledgedEvent(view: OneNativeComposeNodeView, value: Int) {
158
222
  view.stageAcknowledgedEvent(value)
159
223
  }