@react-native-firebase/firestore 23.8.8 → 24.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (359) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/RNFBFirestore.podspec +2 -1
  3. package/android/src/reactnative/java/io/invertase/firebase/firestore/ReactNativeFirebaseFirestoreCollectionModule.java +17 -4
  4. package/android/src/reactnative/java/io/invertase/firebase/firestore/ReactNativeFirebaseFirestoreDocumentModule.java +2 -2
  5. package/android/src/reactnative/java/io/invertase/firebase/firestore/ReactNativeFirebaseFirestorePipelineExecutor.java +1243 -0
  6. package/android/src/reactnative/java/io/invertase/firebase/firestore/ReactNativeFirebaseFirestorePipelineNodeBuilder.java +3919 -0
  7. package/android/src/reactnative/java/io/invertase/firebase/firestore/ReactNativeFirebaseFirestorePipelineParser.java +1735 -0
  8. package/android/src/reactnative/java/io/invertase/firebase/firestore/ReactNativeFirebaseFirestoreSerialize.java +1 -1
  9. package/dist/module/FieldPath.js +59 -0
  10. package/dist/module/FieldPath.js.map +1 -0
  11. package/dist/module/FieldValue.js +82 -0
  12. package/dist/module/FieldValue.js.map +1 -0
  13. package/{lib → dist/module}/FirestoreAggregate.js +31 -43
  14. package/dist/module/FirestoreAggregate.js.map +1 -0
  15. package/dist/module/FirestoreBlob.js +56 -0
  16. package/dist/module/FirestoreBlob.js.map +1 -0
  17. package/dist/module/FirestoreCollectionReference.js +70 -0
  18. package/dist/module/FirestoreCollectionReference.js.map +1 -0
  19. package/{lib → dist/module}/FirestoreDocumentChange.js +12 -15
  20. package/dist/module/FirestoreDocumentChange.js.map +1 -0
  21. package/dist/module/FirestoreDocumentReference.js +170 -0
  22. package/dist/module/FirestoreDocumentReference.js.map +1 -0
  23. package/dist/module/FirestoreDocumentSnapshot.js +88 -0
  24. package/dist/module/FirestoreDocumentSnapshot.js.map +1 -0
  25. package/dist/module/FirestoreFilter.js +146 -0
  26. package/dist/module/FirestoreFilter.js.map +1 -0
  27. package/dist/module/FirestoreGeoPoint.js +80 -0
  28. package/dist/module/FirestoreGeoPoint.js.map +1 -0
  29. package/{lib → dist/module}/FirestorePath.js +5 -12
  30. package/dist/module/FirestorePath.js.map +1 -0
  31. package/{lib → dist/module}/FirestorePersistentCacheIndexManager.js +11 -4
  32. package/dist/module/FirestorePersistentCacheIndexManager.js.map +1 -0
  33. package/dist/module/FirestoreQuery.js +298 -0
  34. package/dist/module/FirestoreQuery.js.map +1 -0
  35. package/{lib → dist/module}/FirestoreQueryModifiers.js +25 -136
  36. package/dist/module/FirestoreQueryModifiers.js.map +1 -0
  37. package/dist/module/FirestoreQuerySnapshot.js +98 -0
  38. package/dist/module/FirestoreQuerySnapshot.js.map +1 -0
  39. package/dist/module/FirestoreSnapshotMetadata.js +38 -0
  40. package/dist/module/FirestoreSnapshotMetadata.js.map +1 -0
  41. package/dist/module/FirestoreStatics.js +50 -0
  42. package/dist/module/FirestoreStatics.js.map +1 -0
  43. package/{lib → dist/module}/FirestoreTimestamp.js +39 -39
  44. package/dist/module/FirestoreTimestamp.js.map +1 -0
  45. package/dist/module/FirestoreTransaction.js +113 -0
  46. package/dist/module/FirestoreTransaction.js.map +1 -0
  47. package/dist/module/FirestoreTransactionHandler.js +137 -0
  48. package/dist/module/FirestoreTransactionHandler.js.map +1 -0
  49. package/dist/module/FirestoreVectorValue.js +75 -0
  50. package/dist/module/FirestoreVectorValue.js.map +1 -0
  51. package/dist/module/FirestoreWriteBatch.js +113 -0
  52. package/dist/module/FirestoreWriteBatch.js.map +1 -0
  53. package/dist/module/LoadBundleTask.js +70 -0
  54. package/dist/module/LoadBundleTask.js.map +1 -0
  55. package/dist/module/index.js +31 -0
  56. package/dist/module/index.js.map +1 -0
  57. package/dist/module/modular/Bytes.js +67 -0
  58. package/dist/module/modular/Bytes.js.map +1 -0
  59. package/dist/module/modular/FieldPath.js +25 -0
  60. package/dist/module/modular/FieldPath.js.map +1 -0
  61. package/dist/module/modular/FieldValue.js +37 -0
  62. package/dist/module/modular/FieldValue.js.map +1 -0
  63. package/dist/module/modular/GeoPoint.js +22 -0
  64. package/dist/module/modular/GeoPoint.js.map +1 -0
  65. package/dist/module/modular/Timestamp.js +22 -0
  66. package/dist/module/modular/Timestamp.js.map +1 -0
  67. package/dist/module/modular/VectorValue.js +25 -0
  68. package/dist/module/modular/VectorValue.js.map +1 -0
  69. package/dist/module/modular/query.js +222 -0
  70. package/dist/module/modular/query.js.map +1 -0
  71. package/dist/module/modular/snapshot.js +32 -0
  72. package/dist/module/modular/snapshot.js.map +1 -0
  73. package/dist/module/modular.js +229 -0
  74. package/dist/module/modular.js.map +1 -0
  75. package/dist/module/namespaced.js +298 -0
  76. package/dist/module/namespaced.js.map +1 -0
  77. package/dist/module/package.json +1 -0
  78. package/dist/module/pipelines/expressions.js +1273 -0
  79. package/dist/module/pipelines/expressions.js.map +1 -0
  80. package/dist/module/pipelines/index.js +32 -0
  81. package/dist/module/pipelines/index.js.map +1 -0
  82. package/dist/module/pipelines/pipeline-result.js +58 -0
  83. package/dist/module/pipelines/pipeline-result.js.map +1 -0
  84. package/dist/module/pipelines/pipeline-source.js +4 -0
  85. package/dist/module/pipelines/pipeline-source.js.map +1 -0
  86. package/dist/module/pipelines/pipeline.js +4 -0
  87. package/dist/module/pipelines/pipeline.js.map +1 -0
  88. package/dist/module/pipelines/pipeline_impl.js +42 -0
  89. package/dist/module/pipelines/pipeline_impl.js.map +1 -0
  90. package/dist/module/pipelines/pipeline_options.js +4 -0
  91. package/dist/module/pipelines/pipeline_options.js.map +1 -0
  92. package/dist/module/pipelines/pipeline_runtime.js +526 -0
  93. package/dist/module/pipelines/pipeline_runtime.js.map +1 -0
  94. package/dist/module/pipelines/pipeline_support.js +71 -0
  95. package/dist/module/pipelines/pipeline_support.js.map +1 -0
  96. package/dist/module/pipelines/pipeline_validate.js +183 -0
  97. package/dist/module/pipelines/pipeline_validate.js.map +1 -0
  98. package/dist/module/pipelines/stage_options.js +4 -0
  99. package/dist/module/pipelines/stage_options.js.map +1 -0
  100. package/dist/module/pipelines/types.js +2 -0
  101. package/dist/module/pipelines/types.js.map +1 -0
  102. package/dist/module/types/firestore.js +4 -0
  103. package/dist/module/types/firestore.js.map +1 -0
  104. package/dist/module/types/internal.js +4 -0
  105. package/dist/module/types/internal.js.map +1 -0
  106. package/dist/module/types/namespaced.js +338 -0
  107. package/dist/module/types/namespaced.js.map +1 -0
  108. package/{lib → dist/module}/utils/index.js +59 -114
  109. package/dist/module/utils/index.js.map +1 -0
  110. package/{lib → dist/module}/utils/serialize.js +58 -116
  111. package/dist/module/utils/serialize.js.map +1 -0
  112. package/{lib → dist/module}/utils/typemap.js +6 -20
  113. package/dist/module/utils/typemap.js.map +1 -0
  114. package/dist/module/version.js +5 -0
  115. package/dist/module/version.js.map +1 -0
  116. package/dist/module/web/RNFBFirestoreModule.android.js +5 -0
  117. package/dist/module/web/RNFBFirestoreModule.android.js.map +1 -0
  118. package/dist/module/web/RNFBFirestoreModule.ios.js +5 -0
  119. package/dist/module/web/RNFBFirestoreModule.ios.js.map +1 -0
  120. package/dist/module/web/RNFBFirestoreModule.js +387 -0
  121. package/dist/module/web/RNFBFirestoreModule.js.map +1 -0
  122. package/{lib → dist/module}/web/convert.js +60 -94
  123. package/dist/module/web/convert.js.map +1 -0
  124. package/dist/module/web/pipelines/pipeline.js +34 -0
  125. package/dist/module/web/pipelines/pipeline.js.map +1 -0
  126. package/dist/module/web/pipelines/pipeline_bridge_factory.js +217 -0
  127. package/dist/module/web/pipelines/pipeline_bridge_factory.js.map +1 -0
  128. package/dist/module/web/pipelines/pipeline_node_builder.js +294 -0
  129. package/dist/module/web/pipelines/pipeline_node_builder.js.map +1 -0
  130. package/dist/module/web/pipelines/pipeline_parser.js +21 -0
  131. package/dist/module/web/pipelines/pipeline_parser.js.map +1 -0
  132. package/dist/module/web/pipelines/pipeline_snapshot_serializer.js +89 -0
  133. package/dist/module/web/pipelines/pipeline_snapshot_serializer.js.map +1 -0
  134. package/dist/module/web/query.js +95 -0
  135. package/dist/module/web/query.js.map +1 -0
  136. package/dist/typescript/lib/FieldPath.d.ts +10 -0
  137. package/dist/typescript/lib/FieldPath.d.ts.map +1 -0
  138. package/dist/typescript/lib/FieldValue.d.ts +17 -0
  139. package/dist/typescript/lib/FieldValue.d.ts.map +1 -0
  140. package/dist/typescript/lib/FirestoreAggregate.d.ts +40 -0
  141. package/dist/typescript/lib/FirestoreAggregate.d.ts.map +1 -0
  142. package/dist/typescript/lib/FirestoreBlob.d.ts +11 -0
  143. package/dist/typescript/lib/FirestoreBlob.d.ts.map +1 -0
  144. package/dist/typescript/lib/FirestoreCollectionReference.d.ts +15 -0
  145. package/dist/typescript/lib/FirestoreCollectionReference.d.ts.map +1 -0
  146. package/dist/typescript/lib/FirestoreDocumentChange.d.ts +27 -0
  147. package/dist/typescript/lib/FirestoreDocumentChange.d.ts.map +1 -0
  148. package/dist/typescript/lib/FirestoreDocumentReference.d.ts +30 -0
  149. package/dist/typescript/lib/FirestoreDocumentReference.d.ts.map +1 -0
  150. package/dist/typescript/lib/FirestoreDocumentSnapshot.d.ts +30 -0
  151. package/dist/typescript/lib/FirestoreDocumentSnapshot.d.ts.map +1 -0
  152. package/dist/typescript/lib/FirestoreFilter.d.ts +52 -0
  153. package/dist/typescript/lib/FirestoreFilter.d.ts.map +1 -0
  154. package/dist/typescript/lib/FirestoreGeoPoint.d.ts +22 -0
  155. package/dist/typescript/lib/FirestoreGeoPoint.d.ts.map +1 -0
  156. package/dist/typescript/lib/FirestorePath.d.ts +12 -0
  157. package/dist/typescript/lib/FirestorePath.d.ts.map +1 -0
  158. package/dist/typescript/lib/FirestorePersistentCacheIndexManager.d.ts +16 -0
  159. package/dist/typescript/lib/FirestorePersistentCacheIndexManager.d.ts.map +1 -0
  160. package/dist/typescript/lib/FirestoreQuery.d.ts +39 -0
  161. package/dist/typescript/lib/FirestoreQuery.d.ts.map +1 -0
  162. package/dist/typescript/lib/FirestoreQueryModifiers.d.ts +59 -0
  163. package/dist/typescript/lib/FirestoreQueryModifiers.d.ts.map +1 -0
  164. package/dist/typescript/lib/FirestoreQuerySnapshot.d.ts +49 -0
  165. package/dist/typescript/lib/FirestoreQuerySnapshot.d.ts.map +1 -0
  166. package/dist/typescript/lib/FirestoreSnapshotMetadata.d.ts +8 -0
  167. package/dist/typescript/lib/FirestoreSnapshotMetadata.d.ts.map +1 -0
  168. package/dist/typescript/lib/FirestoreStatics.d.ts +23 -0
  169. package/dist/typescript/lib/FirestoreStatics.d.ts.map +1 -0
  170. package/dist/typescript/lib/FirestoreTimestamp.d.ts +33 -0
  171. package/dist/typescript/lib/FirestoreTimestamp.d.ts.map +1 -0
  172. package/dist/typescript/lib/FirestoreTransaction.d.ts +42 -0
  173. package/dist/typescript/lib/FirestoreTransaction.d.ts.map +1 -0
  174. package/dist/typescript/lib/FirestoreTransactionHandler.d.ts +26 -0
  175. package/dist/typescript/lib/FirestoreTransactionHandler.d.ts.map +1 -0
  176. package/dist/typescript/lib/FirestoreVectorValue.d.ts +17 -0
  177. package/dist/typescript/lib/FirestoreVectorValue.d.ts.map +1 -0
  178. package/dist/typescript/lib/FirestoreWriteBatch.d.ts +21 -0
  179. package/dist/typescript/lib/FirestoreWriteBatch.d.ts.map +1 -0
  180. package/dist/typescript/lib/LoadBundleTask.d.ts +16 -0
  181. package/dist/typescript/lib/LoadBundleTask.d.ts.map +1 -0
  182. package/dist/typescript/lib/index.d.ts +6 -0
  183. package/dist/typescript/lib/index.d.ts.map +1 -0
  184. package/dist/typescript/lib/modular/Bytes.d.ts +22 -0
  185. package/dist/typescript/lib/modular/Bytes.d.ts.map +1 -0
  186. package/dist/typescript/lib/modular/FieldPath.d.ts +4 -0
  187. package/dist/typescript/lib/modular/FieldPath.d.ts.map +1 -0
  188. package/dist/typescript/lib/modular/FieldValue.d.ts +8 -0
  189. package/dist/typescript/lib/modular/FieldValue.d.ts.map +1 -0
  190. package/dist/typescript/lib/modular/GeoPoint.d.ts +3 -0
  191. package/dist/typescript/lib/modular/GeoPoint.d.ts.map +1 -0
  192. package/dist/typescript/lib/modular/Timestamp.d.ts +3 -0
  193. package/dist/typescript/lib/modular/Timestamp.d.ts.map +1 -0
  194. package/dist/typescript/lib/modular/VectorValue.d.ts +4 -0
  195. package/dist/typescript/lib/modular/VectorValue.d.ts.map +1 -0
  196. package/dist/typescript/lib/modular/query.d.ts +93 -0
  197. package/dist/typescript/lib/modular/query.d.ts.map +1 -0
  198. package/dist/typescript/lib/modular/snapshot.d.ts +30 -0
  199. package/dist/typescript/lib/modular/snapshot.d.ts.map +1 -0
  200. package/dist/typescript/lib/modular.d.ts +69 -0
  201. package/dist/typescript/lib/modular.d.ts.map +1 -0
  202. package/dist/typescript/lib/namespaced.d.ts +13 -0
  203. package/dist/typescript/lib/namespaced.d.ts.map +1 -0
  204. package/dist/typescript/lib/pipelines/expressions.d.ts +723 -0
  205. package/dist/typescript/lib/pipelines/expressions.d.ts.map +1 -0
  206. package/dist/typescript/lib/pipelines/index.d.ts +31 -0
  207. package/dist/typescript/lib/pipelines/index.d.ts.map +1 -0
  208. package/dist/typescript/lib/pipelines/pipeline-result.d.ts +30 -0
  209. package/dist/typescript/lib/pipelines/pipeline-result.d.ts.map +1 -0
  210. package/dist/typescript/lib/pipelines/pipeline-source.d.ts +64 -0
  211. package/dist/typescript/lib/pipelines/pipeline-source.d.ts.map +1 -0
  212. package/dist/typescript/lib/pipelines/pipeline.d.ts +61 -0
  213. package/dist/typescript/lib/pipelines/pipeline.d.ts.map +1 -0
  214. package/dist/typescript/lib/pipelines/pipeline_impl.d.ts +21 -0
  215. package/dist/typescript/lib/pipelines/pipeline_impl.d.ts.map +1 -0
  216. package/dist/typescript/lib/pipelines/pipeline_options.d.ts +17 -0
  217. package/dist/typescript/lib/pipelines/pipeline_options.d.ts.map +1 -0
  218. package/dist/typescript/lib/pipelines/pipeline_runtime.d.ts +10 -0
  219. package/dist/typescript/lib/pipelines/pipeline_runtime.d.ts.map +1 -0
  220. package/dist/typescript/lib/pipelines/pipeline_support.d.ts +7 -0
  221. package/dist/typescript/lib/pipelines/pipeline_support.d.ts.map +1 -0
  222. package/dist/typescript/lib/pipelines/pipeline_validate.d.ts +9 -0
  223. package/dist/typescript/lib/pipelines/pipeline_validate.d.ts.map +1 -0
  224. package/dist/typescript/lib/pipelines/stage_options.d.ts +326 -0
  225. package/dist/typescript/lib/pipelines/stage_options.d.ts.map +1 -0
  226. package/dist/typescript/lib/pipelines/types.d.ts +10 -0
  227. package/dist/typescript/lib/pipelines/types.d.ts.map +1 -0
  228. package/dist/typescript/lib/types/firestore.d.ts +263 -0
  229. package/dist/typescript/lib/types/firestore.d.ts.map +1 -0
  230. package/dist/typescript/lib/types/internal.d.ts +483 -0
  231. package/dist/typescript/lib/types/internal.d.ts.map +1 -0
  232. package/dist/typescript/lib/types/namespaced.d.ts +2285 -0
  233. package/dist/typescript/lib/types/namespaced.d.ts.map +1 -0
  234. package/dist/typescript/lib/utils/index.d.ts +15 -0
  235. package/dist/typescript/lib/utils/index.d.ts.map +1 -0
  236. package/dist/typescript/lib/utils/serialize.d.ts +17 -0
  237. package/dist/typescript/lib/utils/serialize.d.ts.map +1 -0
  238. package/dist/typescript/lib/utils/typemap.d.ts +3 -0
  239. package/dist/typescript/lib/utils/typemap.d.ts.map +1 -0
  240. package/dist/typescript/lib/version.d.ts +2 -0
  241. package/dist/typescript/lib/version.d.ts.map +1 -0
  242. package/dist/typescript/lib/web/RNFBFirestoreModule.android.d.ts +3 -0
  243. package/dist/typescript/lib/web/RNFBFirestoreModule.android.d.ts.map +1 -0
  244. package/dist/typescript/lib/web/RNFBFirestoreModule.d.ts +75 -0
  245. package/dist/typescript/lib/web/RNFBFirestoreModule.d.ts.map +1 -0
  246. package/dist/typescript/lib/web/RNFBFirestoreModule.ios.d.ts +3 -0
  247. package/dist/typescript/lib/web/RNFBFirestoreModule.ios.d.ts.map +1 -0
  248. package/dist/typescript/lib/web/convert.d.ts +14 -0
  249. package/dist/typescript/lib/web/convert.d.ts.map +1 -0
  250. package/dist/typescript/lib/web/pipelines/pipeline.d.ts +4 -0
  251. package/dist/typescript/lib/web/pipelines/pipeline.d.ts.map +1 -0
  252. package/dist/typescript/lib/web/pipelines/pipeline_bridge_factory.d.ts +5 -0
  253. package/dist/typescript/lib/web/pipelines/pipeline_bridge_factory.d.ts.map +1 -0
  254. package/dist/typescript/lib/web/pipelines/pipeline_node_builder.d.ts +5 -0
  255. package/dist/typescript/lib/web/pipelines/pipeline_node_builder.d.ts.map +1 -0
  256. package/dist/typescript/lib/web/pipelines/pipeline_parser.d.ts +3 -0
  257. package/dist/typescript/lib/web/pipelines/pipeline_parser.d.ts.map +1 -0
  258. package/dist/typescript/lib/web/pipelines/pipeline_snapshot_serializer.d.ts +4 -0
  259. package/dist/typescript/lib/web/pipelines/pipeline_snapshot_serializer.d.ts.map +1 -0
  260. package/dist/typescript/lib/web/query.d.ts +23 -0
  261. package/dist/typescript/lib/web/query.d.ts.map +1 -0
  262. package/dist/typescript/package.json +1 -0
  263. package/ios/RNFBFirestore/RNFBFirestoreCollectionModule.m +52 -2
  264. package/ios/RNFBFirestore/RNFBFirestorePipelineBridgeFactory.swift +384 -0
  265. package/ios/RNFBFirestore/RNFBFirestorePipelineCallHandler.swift +86 -0
  266. package/ios/RNFBFirestore/RNFBFirestorePipelineNodeBuilder.swift +1500 -0
  267. package/ios/RNFBFirestore/RNFBFirestorePipelineParser.swift +1352 -0
  268. package/ios/RNFBFirestore/RNFBFirestorePipelineSnapshotSerializer.swift +98 -0
  269. package/lib/{FirestoreFieldPath.js → FieldPath.ts} +10 -12
  270. package/lib/{FirestoreFieldValue.js → FieldValue.ts} +22 -19
  271. package/lib/FirestoreAggregate.ts +124 -0
  272. package/lib/FirestoreBlob.ts +73 -0
  273. package/lib/FirestoreCollectionReference.ts +99 -0
  274. package/lib/FirestoreDocumentChange.ts +71 -0
  275. package/lib/FirestoreDocumentReference.ts +310 -0
  276. package/lib/FirestoreDocumentSnapshot.ts +149 -0
  277. package/lib/FirestoreFilter.ts +232 -0
  278. package/lib/{FirestoreGeoPoint.js → FirestoreGeoPoint.ts} +48 -8
  279. package/lib/FirestorePath.ts +54 -0
  280. package/lib/FirestorePersistentCacheIndexManager.ts +46 -0
  281. package/lib/{FirestoreQuery.js → FirestoreQuery.ts} +208 -100
  282. package/lib/FirestoreQueryModifiers.ts +411 -0
  283. package/lib/{FirestoreQuerySnapshot.js → FirestoreQuerySnapshot.ts} +61 -32
  284. package/lib/{FirestoreSnapshotMetadata.js → FirestoreSnapshotMetadata.ts} +8 -6
  285. package/lib/{FirestoreStatics.js → FirestoreStatics.ts} +18 -11
  286. package/lib/FirestoreTimestamp.ts +161 -0
  287. package/lib/{FirestoreTransaction.js → FirestoreTransaction.ts} +64 -27
  288. package/lib/{FirestoreTransactionHandler.js → FirestoreTransactionHandler.ts} +54 -75
  289. package/lib/{FirestoreVectorValue.js → FirestoreVectorValue.ts} +36 -15
  290. package/lib/{FirestoreWriteBatch.js → FirestoreWriteBatch.ts} +45 -21
  291. package/lib/LoadBundleTask.ts +85 -0
  292. package/lib/index.ts +71 -0
  293. package/lib/modular/Bytes.ts +81 -0
  294. package/lib/modular/FieldPath.ts +24 -0
  295. package/lib/modular/FieldValue.ts +40 -0
  296. package/lib/modular/GeoPoint.ts +20 -0
  297. package/lib/modular/Timestamp.ts +20 -0
  298. package/lib/modular/VectorValue.ts +24 -0
  299. package/lib/modular/query.ts +368 -0
  300. package/lib/modular/snapshot.ts +137 -0
  301. package/lib/modular.ts +552 -0
  302. package/lib/{index.js → namespaced.ts} +170 -80
  303. package/lib/pipelines/expressions.ts +2321 -0
  304. package/lib/pipelines/index.ts +203 -0
  305. package/lib/pipelines/pipeline-result.ts +78 -0
  306. package/lib/pipelines/pipeline-source.ts +83 -0
  307. package/lib/pipelines/pipeline.ts +99 -0
  308. package/lib/pipelines/pipeline_impl.ts +46 -0
  309. package/lib/pipelines/pipeline_options.ts +32 -0
  310. package/lib/pipelines/pipeline_runtime.ts +863 -0
  311. package/lib/pipelines/pipeline_support.ts +134 -0
  312. package/lib/pipelines/pipeline_validate.ts +242 -0
  313. package/lib/pipelines/stage_options.ts +376 -0
  314. package/lib/pipelines/types.ts +26 -0
  315. package/lib/types/firestore.ts +477 -0
  316. package/lib/types/internal.ts +747 -0
  317. package/lib/{index.d.ts → types/namespaced.ts} +280 -79
  318. package/lib/utils/index.ts +244 -0
  319. package/lib/utils/serialize.ts +314 -0
  320. package/lib/utils/typemap.ts +65 -0
  321. package/lib/version.ts +2 -0
  322. package/lib/web/{RNFBFirestoreModule.js → RNFBFirestoreModule.ts} +222 -234
  323. package/lib/web/convert.ts +287 -0
  324. package/lib/web/pipelines/pipeline.ts +47 -0
  325. package/lib/web/pipelines/pipeline_bridge_factory.ts +377 -0
  326. package/lib/web/pipelines/pipeline_node_builder.ts +413 -0
  327. package/lib/web/pipelines/pipeline_parser.ts +23 -0
  328. package/lib/web/pipelines/pipeline_snapshot_serializer.ts +133 -0
  329. package/lib/web/query.ts +150 -0
  330. package/package.json +46 -7
  331. package/tsconfig.json +35 -0
  332. package/lib/FirestoreBlob.js +0 -107
  333. package/lib/FirestoreCollectionReference.js +0 -70
  334. package/lib/FirestoreDocumentReference.js +0 -222
  335. package/lib/FirestoreDocumentSnapshot.js +0 -132
  336. package/lib/FirestoreFilter.js +0 -156
  337. package/lib/modular/Bytes.d.ts +0 -11
  338. package/lib/modular/Bytes.js +0 -62
  339. package/lib/modular/FieldPath.d.ts +0 -20
  340. package/lib/modular/FieldPath.js +0 -7
  341. package/lib/modular/FieldValue.d.ts +0 -67
  342. package/lib/modular/FieldValue.js +0 -41
  343. package/lib/modular/GeoPoint.d.ts +0 -17
  344. package/lib/modular/GeoPoint.js +0 -3
  345. package/lib/modular/Timestamp.d.ts +0 -85
  346. package/lib/modular/Timestamp.js +0 -3
  347. package/lib/modular/VectorValue.d.ts +0 -30
  348. package/lib/modular/VectorValue.js +0 -11
  349. package/lib/modular/index.d.ts +0 -788
  350. package/lib/modular/index.js +0 -410
  351. package/lib/modular/query.d.ts +0 -370
  352. package/lib/modular/query.js +0 -233
  353. package/lib/modular/snapshot.d.ts +0 -256
  354. package/lib/modular/snapshot.js +0 -33
  355. package/lib/modular/utils/observer.js +0 -16
  356. package/lib/version.js +0 -2
  357. package/lib/web/query.js +0 -112
  358. /package/lib/web/{RNFBFirestoreModule.android.js → RNFBFirestoreModule.android.ts} +0 -0
  359. /package/lib/web/{RNFBFirestoreModule.ios.js → RNFBFirestoreModule.ios.ts} +0 -0
@@ -0,0 +1,244 @@
1
+ /*
2
+ * Copyright (c) 2016-present Invertase Limited & Contributors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this library except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ */
17
+
18
+ import {
19
+ hasOwnProperty,
20
+ isArray,
21
+ isBoolean,
22
+ isFunction,
23
+ isObject,
24
+ isString,
25
+ isUndefined,
26
+ } from '@react-native-firebase/app/dist/module/common';
27
+ import type {
28
+ ConverterWithOptionalMethodsInternal,
29
+ ConverterWithOptionalToFirestoreInternal,
30
+ ConverterWithToFirestoreInternal,
31
+ PartialSnapshotObserverInternal,
32
+ } from '../types/internal';
33
+ import FieldPath, { fromDotSeparatedString } from '../FieldPath';
34
+
35
+ export function extractFieldPathData(data: unknown, segments: string[]): unknown {
36
+ if (!isObject(data)) {
37
+ return undefined;
38
+ }
39
+
40
+ const key = segments[0];
41
+ if (key === undefined) return undefined;
42
+ const pathValue = (data as Record<string, unknown>)[key];
43
+
44
+ if (segments.length === 1) {
45
+ return pathValue;
46
+ }
47
+
48
+ return extractFieldPathData(pathValue, segments.slice(1));
49
+ }
50
+
51
+ export function parseUpdateArgs(args: unknown[]): Record<string, unknown> {
52
+ let data: Record<string, unknown> = {};
53
+ if (args.length === 1) {
54
+ if (!isObject(args[0])) {
55
+ throw new Error('if using a single update argument, it must be an object.');
56
+ }
57
+ data = args[0] as Record<string, unknown>;
58
+ } else if (args.length % 2 === 1) {
59
+ throw new Error(
60
+ 'the update arguments must be either a single object argument, or equal numbers of key/value pairs.',
61
+ );
62
+ } else {
63
+ for (let i = 0; i < args.length; i += 2) {
64
+ const key = args[i];
65
+ const value = args[i + 1];
66
+ if (isString(key)) {
67
+ data[key] = value;
68
+ } else if (key instanceof FieldPath) {
69
+ data[key._toPath()] = value;
70
+ } else {
71
+ throw new Error(`argument at index ${i} must be a string or FieldPath`);
72
+ }
73
+ }
74
+ }
75
+ return data;
76
+ }
77
+
78
+ export function parseSetOptions(options?: unknown): Record<string, unknown> {
79
+ const out: Record<string, unknown> = {};
80
+
81
+ if (isUndefined(options)) {
82
+ return out;
83
+ }
84
+
85
+ if (!isObject(options)) {
86
+ throw new Error("'options' must be an object.");
87
+ }
88
+
89
+ const opts = options as Record<string, unknown>;
90
+ if (hasOwnProperty(opts, 'merge') && hasOwnProperty(opts, 'mergeFields')) {
91
+ throw new Error("'options' must not contain both 'merge' & 'mergeFields'.");
92
+ }
93
+
94
+ if (!isUndefined(opts.merge)) {
95
+ if (!isBoolean(opts.merge)) {
96
+ throw new Error("'options.merge' must be a boolean value.");
97
+ }
98
+ out.merge = opts.merge;
99
+ }
100
+
101
+ if (!isUndefined(opts.mergeFields)) {
102
+ if (!isArray(opts.mergeFields)) {
103
+ throw new Error("'options.mergeFields' must be an array.");
104
+ }
105
+ out.mergeFields = [];
106
+
107
+ const mergeFields = opts.mergeFields as unknown[];
108
+ for (let i = 0; i < mergeFields.length; i++) {
109
+ const field = mergeFields[i];
110
+ if (!isString(field) && !(field instanceof FieldPath)) {
111
+ throw new Error(
112
+ `'options.mergeFields' all fields must be of type string or FieldPath, but the value at index ${i} was ${typeof field}`,
113
+ );
114
+ }
115
+
116
+ if (field instanceof FieldPath) {
117
+ (out.mergeFields as string[]).push(field._toPath());
118
+ } else {
119
+ try {
120
+ fromDotSeparatedString(field as string);
121
+ } catch (e) {
122
+ throw new Error(`'options.mergeFields' ${(e as Error).message}`);
123
+ }
124
+ (out.mergeFields as string[]).push(field as string);
125
+ }
126
+ }
127
+ }
128
+
129
+ return out;
130
+ }
131
+
132
+ export function applyFirestoreDataConverter(
133
+ data: unknown,
134
+ converter: unknown,
135
+ options?: unknown,
136
+ ): unknown {
137
+ if (converter && (converter as ConverterWithOptionalToFirestoreInternal).toFirestore) {
138
+ return (converter as ConverterWithToFirestoreInternal).toFirestore(data, options);
139
+ }
140
+ return data;
141
+ }
142
+
143
+ function isPartialObserver(
144
+ input: unknown,
145
+ ): input is { next?: unknown; error?: unknown; complete?: unknown } {
146
+ if (input == null) {
147
+ return false;
148
+ }
149
+ const o = input as Record<string, unknown>;
150
+ return o.next != null || o.error != null || o.complete != null;
151
+ }
152
+
153
+ export interface ParseSnapshotArgsResult {
154
+ snapshotListenOptions: { includeMetadataChanges?: boolean };
155
+ callback: (snapshot: unknown, error: Error | null) => void;
156
+ onNext: (snapshot: unknown) => void;
157
+ onError: (error: Error) => void;
158
+ }
159
+
160
+ export function parseSnapshotArgs(args: unknown[]): ParseSnapshotArgsResult {
161
+ if (args.length === 0) {
162
+ throw new Error('expected at least one argument.');
163
+ }
164
+
165
+ const NOOP = (): void => {};
166
+ const snapshotListenOptions: { includeMetadataChanges?: boolean } = {};
167
+ let callback: (snapshot: unknown, error: Error | null) => void = NOOP;
168
+ let onError: (error: Error) => void = NOOP;
169
+ let onNext: (snapshot: unknown) => void = NOOP;
170
+
171
+ if (isFunction(args[0])) {
172
+ if (isFunction(args[1])) {
173
+ onNext = args[0] as (snapshot: unknown) => void;
174
+ onError = args[1] as (error: Error) => void;
175
+ } else {
176
+ callback = args[0] as (snapshot: unknown, error: Error | null) => void;
177
+ }
178
+ }
179
+
180
+ if (isObject(args[0]) && isPartialObserver(args[0])) {
181
+ const observer = args[0] as PartialSnapshotObserverInternal;
182
+ if (observer.error) {
183
+ onError =
184
+ typeof observer.error === 'function' ? observer.error.bind(observer) : observer.error;
185
+ }
186
+ if (observer.next) {
187
+ onNext = typeof observer.next === 'function' ? observer.next.bind(observer) : observer.next;
188
+ }
189
+ }
190
+
191
+ if (isObject(args[0]) && !isPartialObserver(args[0])) {
192
+ const opts = args[0] as { includeMetadataChanges?: boolean };
193
+ snapshotListenOptions.includeMetadataChanges =
194
+ opts.includeMetadataChanges == null ? false : opts.includeMetadataChanges;
195
+ if (isFunction(args[1])) {
196
+ if (isFunction(args[2])) {
197
+ onNext = args[1] as (snapshot: unknown) => void;
198
+ onError = args[2] as (error: Error) => void;
199
+ } else {
200
+ callback = args[1] as (snapshot: unknown, error: Error | null) => void;
201
+ }
202
+ } else if (isPartialObserver(args[1])) {
203
+ const observer = args[1] as PartialSnapshotObserverInternal;
204
+ if (observer.error) {
205
+ onError =
206
+ typeof observer.error === 'function' ? observer.error.bind(observer) : observer.error;
207
+ }
208
+ if (observer.next) {
209
+ onNext = typeof observer.next === 'function' ? observer.next.bind(observer) : observer.next;
210
+ }
211
+ }
212
+ }
213
+
214
+ if (hasOwnProperty(snapshotListenOptions, 'includeMetadataChanges')) {
215
+ if (!isBoolean(snapshotListenOptions.includeMetadataChanges)) {
216
+ throw new Error("'options' SnapshotOptions.includeMetadataChanges must be a boolean value.");
217
+ }
218
+ }
219
+
220
+ if (!isFunction(onNext)) {
221
+ throw new Error("'observer.next' or 'onNext' expected a function.");
222
+ }
223
+
224
+ if (!isFunction(onError)) {
225
+ throw new Error("'observer.error' or 'onError' expected a function.");
226
+ }
227
+
228
+ return { snapshotListenOptions, callback, onNext, onError };
229
+ }
230
+
231
+ export function validateWithConverter(converter: unknown): void {
232
+ if (isUndefined(converter) || !isObject(converter)) {
233
+ throw new Error('expected an object value.');
234
+ }
235
+
236
+ const c = converter as ConverterWithOptionalMethodsInternal;
237
+ if (!isFunction(c.toFirestore)) {
238
+ throw new Error("'toFirestore' expected a function.");
239
+ }
240
+
241
+ if (!isFunction(c.fromFirestore)) {
242
+ throw new Error("'fromFirestore' expected a function.");
243
+ }
244
+ }
@@ -0,0 +1,314 @@
1
+ /*
2
+ * Copyright (c) 2016-present Invertase Limited & Contributors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this library except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ */
17
+
18
+ import {
19
+ isArray,
20
+ isBoolean,
21
+ isDate,
22
+ isNull,
23
+ isNumber,
24
+ isObject,
25
+ isString,
26
+ isUndefined,
27
+ } from '@react-native-firebase/app/dist/module/common';
28
+ import type { Firestore } from '../types/firestore';
29
+ import type { FirestoreInternal } from '../types/internal';
30
+ import Blob from '../FirestoreBlob';
31
+ import { DOCUMENT_ID } from '../FieldPath';
32
+ import FirestoreGeoPoint from '../FirestoreGeoPoint';
33
+ import FirestorePath from '../FirestorePath';
34
+ import FirestoreTimestamp from '../FirestoreTimestamp';
35
+ import { getTypeMapInt, getTypeMapName } from './typemap';
36
+ import { Bytes } from '../modular/Bytes';
37
+ import FirestoreVectorValue from '../FirestoreVectorValue';
38
+
39
+ let FirestoreDocumentReference:
40
+ | (new (
41
+ firestore: FirestoreInternal,
42
+ path: InstanceType<typeof FirestorePath>,
43
+ converter?: unknown,
44
+ ) => { path: string })
45
+ | null = null;
46
+
47
+ export function provideDocumentReferenceClass(
48
+ documentReference:
49
+ | (new (
50
+ firestore: FirestoreInternal,
51
+ path: InstanceType<typeof FirestorePath>,
52
+ converter?: unknown,
53
+ ) => { path: string })
54
+ | null,
55
+ ): void {
56
+ FirestoreDocumentReference = documentReference;
57
+ }
58
+
59
+ let FirestoreFieldValue:
60
+ | (new (...args: unknown[]) => { _type: string; _elements: unknown })
61
+ | null = null;
62
+
63
+ export function provideFieldValueClass(
64
+ fieldValue: (new (...args: unknown[]) => { _type: string; _elements: unknown }) | null,
65
+ ): void {
66
+ FirestoreFieldValue = fieldValue;
67
+ }
68
+
69
+ export function buildNativeMap(
70
+ data: Record<string, unknown> | null | undefined,
71
+ ignoreUndefined?: boolean,
72
+ ): Record<string, unknown> {
73
+ const nativeData: Record<string, unknown> = {};
74
+ if (data) {
75
+ const keys = Object.keys(data);
76
+ for (let i = 0; i < keys.length; i++) {
77
+ const key = keys[i]!;
78
+
79
+ if (typeof data[key] === 'undefined') {
80
+ if (!ignoreUndefined) {
81
+ throw new Error('Unsupported field value: undefined');
82
+ }
83
+ continue;
84
+ }
85
+
86
+ const typeMap = generateNativeData(data[key], ignoreUndefined);
87
+ if (typeMap) {
88
+ nativeData[key] = typeMap;
89
+ }
90
+ }
91
+ }
92
+ return nativeData;
93
+ }
94
+
95
+ export function buildNativeArray(
96
+ array: unknown[] | null | undefined,
97
+ ignoreUndefined?: boolean,
98
+ ): unknown[] {
99
+ const nativeArray: unknown[] = [];
100
+ if (array) {
101
+ for (let i = 0; i < array.length; i++) {
102
+ const value = array[i];
103
+ if (typeof value === 'undefined') {
104
+ if (!ignoreUndefined) {
105
+ throw new Error('Unsupported field value: undefined');
106
+ }
107
+ continue;
108
+ }
109
+ const typeMap = generateNativeData(value, ignoreUndefined);
110
+ if (typeMap) {
111
+ nativeArray.push(typeMap);
112
+ }
113
+ }
114
+ }
115
+ return nativeArray;
116
+ }
117
+
118
+ export function generateNativeData(
119
+ value: unknown,
120
+ ignoreUndefined?: boolean,
121
+ ): [number, unknown?] | null {
122
+ if (Number.isNaN(value)) {
123
+ return getTypeMapInt('nan');
124
+ }
125
+
126
+ if (value === Number.NEGATIVE_INFINITY) {
127
+ return getTypeMapInt('-infinity');
128
+ }
129
+
130
+ if (value === Number.POSITIVE_INFINITY) {
131
+ return getTypeMapInt('infinity');
132
+ }
133
+
134
+ if (isNull(value) || isUndefined(value)) {
135
+ return getTypeMapInt('null');
136
+ }
137
+
138
+ if (value === DOCUMENT_ID) {
139
+ return getTypeMapInt('documentid');
140
+ }
141
+
142
+ if (isBoolean(value)) {
143
+ return value ? getTypeMapInt('booleanTrue') : getTypeMapInt('booleanFalse');
144
+ }
145
+
146
+ if (isNumber(value)) {
147
+ if (value === 0 && 1 / value === -Infinity) {
148
+ return getTypeMapInt('negativeZero');
149
+ }
150
+ if (Number.isSafeInteger(value)) {
151
+ return getTypeMapInt('integer', value);
152
+ }
153
+ return getTypeMapInt('double', value);
154
+ }
155
+
156
+ if (isString(value)) {
157
+ return value === '' ? getTypeMapInt('stringEmpty') : getTypeMapInt('string', value);
158
+ }
159
+
160
+ if (isArray(value)) {
161
+ return getTypeMapInt('array', buildNativeArray(value, ignoreUndefined));
162
+ }
163
+
164
+ if (isObject(value)) {
165
+ if (FirestoreDocumentReference && value instanceof FirestoreDocumentReference) {
166
+ return getTypeMapInt('reference', value.path);
167
+ }
168
+
169
+ if (value instanceof FirestoreGeoPoint) {
170
+ return getTypeMapInt('geopoint', [value.latitude, value.longitude]);
171
+ }
172
+
173
+ if (isDate(value)) {
174
+ const timestamp = FirestoreTimestamp.fromDate(value);
175
+ return getTypeMapInt('timestamp', [timestamp.seconds, timestamp.nanoseconds]);
176
+ }
177
+
178
+ if (value instanceof FirestoreTimestamp) {
179
+ return getTypeMapInt('timestamp', [value.seconds, value.nanoseconds]);
180
+ }
181
+
182
+ if (value instanceof Blob || value instanceof Bytes) {
183
+ return getTypeMapInt('blob', value.toBase64());
184
+ }
185
+
186
+ if (FirestoreFieldValue && value instanceof FirestoreFieldValue) {
187
+ return getTypeMapInt('fieldvalue', [value._type, value._elements]);
188
+ }
189
+
190
+ if (value instanceof FirestoreVectorValue) {
191
+ return getTypeMapInt('vector', value.toArray());
192
+ }
193
+
194
+ return getTypeMapInt(
195
+ 'object',
196
+ buildNativeMap(value as Record<string, unknown>, ignoreUndefined),
197
+ );
198
+ }
199
+
200
+ // eslint-disable-next-line no-console
201
+ console.warn(`Unknown data type received ${value}`);
202
+ return getTypeMapInt('unknown');
203
+ }
204
+
205
+ function getArrayLikeEntries(value: unknown): unknown[] | undefined {
206
+ if (isArray(value)) {
207
+ return value;
208
+ }
209
+
210
+ if (isObject(value) && !isArray(value)) {
211
+ const record = value as Record<string, unknown>;
212
+ if (!Object.prototype.hasOwnProperty.call(record, '0')) {
213
+ return undefined;
214
+ }
215
+
216
+ const entries: unknown[] = [];
217
+ let index = 0;
218
+
219
+ while (Object.prototype.hasOwnProperty.call(record, String(index))) {
220
+ entries.push(record[String(index)]);
221
+ index += 1;
222
+ }
223
+
224
+ return entries;
225
+ }
226
+
227
+ return undefined;
228
+ }
229
+
230
+ export function parseNativeMap(
231
+ firestore: Firestore,
232
+ nativeData: Record<string, unknown> | null | undefined,
233
+ ): Record<string, unknown> | undefined {
234
+ let data: Record<string, unknown> | undefined;
235
+ if (nativeData) {
236
+ data = {};
237
+ const entries = Object.entries(nativeData);
238
+ for (let i = 0; i < entries.length; i++) {
239
+ const [key, typeArray] = entries[i]!;
240
+ data[key] = parseNativeData(firestore, typeArray as [number, unknown?]);
241
+ }
242
+ }
243
+ return data;
244
+ }
245
+
246
+ export function parseNativeArray(firestore: Firestore, nativeArray: unknown[]): unknown[] {
247
+ const array: unknown[] = [];
248
+ const normalizedArray = getArrayLikeEntries(nativeArray) ?? [];
249
+ if (normalizedArray) {
250
+ for (let i = 0; i < normalizedArray.length; i++) {
251
+ array.push(parseNativeData(firestore, normalizedArray[i] as [number, unknown?]));
252
+ }
253
+ }
254
+ return array;
255
+ }
256
+
257
+ export function parseNativeData(firestore: Firestore, nativeArray: [number, unknown?]): unknown {
258
+ const normalizedTypeMap = getArrayLikeEntries(nativeArray) as [number, unknown?] | undefined;
259
+ if (!normalizedTypeMap || !isNumber(normalizedTypeMap[0])) {
260
+ // eslint-disable-next-line no-console
261
+ console.warn('Unknown data type received from native channel: malformed type map');
262
+ return undefined;
263
+ }
264
+
265
+ const [int, value] = normalizedTypeMap;
266
+ const type = getTypeMapName(int);
267
+
268
+ switch (type) {
269
+ case 'nan':
270
+ return NaN;
271
+ case '-infinity':
272
+ return -Infinity;
273
+ case 'infinity':
274
+ return Infinity;
275
+ case 'null':
276
+ return null;
277
+ case 'booleanTrue':
278
+ return true;
279
+ case 'booleanFalse':
280
+ return false;
281
+ case 'double':
282
+ case 'integer':
283
+ case 'negativeZero':
284
+ case 'string':
285
+ return value;
286
+ case 'stringEmpty':
287
+ return '';
288
+ case 'array':
289
+ return parseNativeArray(firestore, (getArrayLikeEntries(value) ?? []) as unknown[]);
290
+ case 'object':
291
+ return parseNativeMap(firestore, value as Record<string, unknown>);
292
+ case 'reference':
293
+ return new FirestoreDocumentReference!(
294
+ firestore as FirestoreInternal,
295
+ FirestorePath.fromName(value as string),
296
+ );
297
+ case 'geopoint': {
298
+ const v = (getArrayLikeEntries(value) ?? []) as number[];
299
+ return new FirestoreGeoPoint(v[0] ?? 0, v[1] ?? 0);
300
+ }
301
+ case 'timestamp': {
302
+ const v = (getArrayLikeEntries(value) ?? []) as number[];
303
+ return new FirestoreTimestamp(v[0] ?? 0, v[1] ?? 0);
304
+ }
305
+ case 'blob':
306
+ return Bytes.fromBase64String(value as string);
307
+ case 'vector':
308
+ return new FirestoreVectorValue(value as number[]);
309
+ default:
310
+ // eslint-disable-next-line no-console
311
+ console.warn(`Unknown data type received from native channel: ${type}`);
312
+ return value;
313
+ }
314
+ }
@@ -0,0 +1,65 @@
1
+ /*
2
+ * Copyright (c) 2016-present Invertase Limited & Contributors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this library except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ */
17
+
18
+ import { hasOwnProperty } from '@react-native-firebase/app/dist/module/common';
19
+
20
+ const MAP: Record<string, number> = {
21
+ nan: 0,
22
+ '-infinity': 1,
23
+ infinity: 2,
24
+ null: 3,
25
+ documentid: 4,
26
+ booleanTrue: 5,
27
+ booleanFalse: 6,
28
+ double: 7,
29
+ string: 8,
30
+ stringEmpty: 9,
31
+ array: 10,
32
+ reference: 11,
33
+ geopoint: 12,
34
+ timestamp: 13,
35
+ blob: 14,
36
+ fieldvalue: 15,
37
+ object: 16,
38
+ integer: 17,
39
+ negativeZero: 18,
40
+ vector: 19,
41
+ unknown: -999,
42
+ };
43
+
44
+ const MAP_ENTRIES = Object.entries(MAP);
45
+
46
+ export function getTypeMapInt(type: string, value?: unknown): [number, unknown?] | null {
47
+ if (hasOwnProperty(MAP, type)) {
48
+ const array: [number, unknown?] = [MAP[type]!];
49
+ if (value !== undefined) {
50
+ array.push(value);
51
+ }
52
+ return array;
53
+ }
54
+ return null;
55
+ }
56
+
57
+ export function getTypeMapName(value: number): string | null {
58
+ for (let i = 0; i < MAP_ENTRIES.length; i++) {
59
+ const [name, int] = MAP_ENTRIES[i]!;
60
+ if (value === int) {
61
+ return name;
62
+ }
63
+ }
64
+ return null;
65
+ }
package/lib/version.ts ADDED
@@ -0,0 +1,2 @@
1
+ // Generated by genversion.
2
+ export const version = '24.0.0';