firebase-admin-edge 1.1.1 → 3.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 (481) hide show
  1. package/README.md +103 -260
  2. package/dist/app-check/app-check-endpoints.d.ts +31 -0
  3. package/dist/app-check/app-check-endpoints.d.ts.map +1 -0
  4. package/dist/app-check/app-check-endpoints.js +75 -0
  5. package/dist/app-check/app-check-endpoints.js.map +1 -0
  6. package/dist/app-check/app-check-jwt.d.ts +16 -0
  7. package/dist/app-check/app-check-jwt.d.ts.map +1 -0
  8. package/dist/app-check/app-check-jwt.js +59 -0
  9. package/dist/app-check/app-check-jwt.js.map +1 -0
  10. package/dist/app-check/app-check.d.ts +48 -0
  11. package/dist/app-check/app-check.d.ts.map +1 -0
  12. package/dist/app-check/app-check.js +142 -0
  13. package/dist/app-check/app-check.js.map +1 -0
  14. package/dist/auth/auth-blocking-types.d.ts +44 -0
  15. package/dist/auth/auth-blocking-types.d.ts.map +1 -0
  16. package/dist/auth/auth-blocking-types.js +2 -0
  17. package/dist/auth/auth-blocking-types.js.map +1 -0
  18. package/dist/auth/auth-config-types.d.ts +146 -0
  19. package/dist/auth/auth-config-types.d.ts.map +1 -0
  20. package/dist/auth/auth-config-types.js +2 -0
  21. package/dist/auth/auth-config-types.js.map +1 -0
  22. package/dist/auth/auth-config.d.ts +15 -0
  23. package/dist/auth/auth-config.d.ts.map +1 -0
  24. package/dist/auth/auth-config.js +413 -0
  25. package/dist/auth/auth-config.js.map +1 -0
  26. package/dist/auth/auth-emulator.d.ts +7 -0
  27. package/dist/auth/auth-emulator.d.ts.map +1 -0
  28. package/dist/auth/auth-emulator.js +24 -0
  29. package/dist/auth/auth-emulator.js.map +1 -0
  30. package/dist/auth/auth-endpoint-errors.d.ts +2 -0
  31. package/dist/auth/auth-endpoint-errors.d.ts.map +1 -1
  32. package/dist/auth/auth-endpoint-errors.js +20 -1
  33. package/dist/auth/auth-endpoint-errors.js.map +1 -1
  34. package/dist/auth/email-link.d.ts +24 -0
  35. package/dist/auth/email-link.d.ts.map +1 -0
  36. package/dist/auth/email-link.js +103 -0
  37. package/dist/auth/email-link.js.map +1 -0
  38. package/dist/auth/firebase-admin-auth.d.ts +56 -8
  39. package/dist/auth/firebase-admin-auth.d.ts.map +1 -1
  40. package/dist/auth/firebase-admin-auth.js +323 -63
  41. package/dist/auth/firebase-admin-auth.js.map +1 -1
  42. package/dist/auth/firebase-auth-endpoints.d.ts +93 -5
  43. package/dist/auth/firebase-auth-endpoints.d.ts.map +1 -1
  44. package/dist/auth/firebase-auth-endpoints.js +342 -73
  45. package/dist/auth/firebase-auth-endpoints.js.map +1 -1
  46. package/dist/auth/firebase-auth.d.ts +82 -6
  47. package/dist/auth/firebase-auth.d.ts.map +1 -1
  48. package/dist/auth/firebase-auth.js +103 -10
  49. package/dist/auth/firebase-auth.js.map +1 -1
  50. package/dist/auth/firebase-jwt.d.ts +19 -10
  51. package/dist/auth/firebase-jwt.d.ts.map +1 -1
  52. package/dist/auth/firebase-jwt.js +176 -39
  53. package/dist/auth/firebase-jwt.js.map +1 -1
  54. package/dist/auth/firebase-types.d.ts +3 -0
  55. package/dist/auth/firebase-types.d.ts.map +1 -1
  56. package/dist/auth/google-oauth.d.ts +0 -1
  57. package/dist/auth/google-oauth.d.ts.map +1 -1
  58. package/dist/auth/google-oauth.js +16 -86
  59. package/dist/auth/google-oauth.js.map +1 -1
  60. package/dist/auth/identity-builder-types.d.ts +36 -0
  61. package/dist/auth/identity-builder-types.d.ts.map +1 -0
  62. package/dist/auth/identity-builder-types.js +2 -0
  63. package/dist/auth/identity-builder-types.js.map +1 -0
  64. package/dist/auth/identity-count-query.d.ts +17 -0
  65. package/dist/auth/identity-count-query.d.ts.map +1 -0
  66. package/dist/auth/identity-count-query.js +51 -0
  67. package/dist/auth/identity-count-query.js.map +1 -0
  68. package/dist/auth/identity-filter.d.ts +9 -0
  69. package/dist/auth/identity-filter.d.ts.map +1 -0
  70. package/dist/auth/identity-filter.js +129 -0
  71. package/dist/auth/identity-filter.js.map +1 -0
  72. package/dist/auth/identity-query.d.ts +11 -0
  73. package/dist/auth/identity-query.d.ts.map +1 -0
  74. package/dist/auth/identity-query.js +122 -0
  75. package/dist/auth/identity-query.js.map +1 -0
  76. package/dist/auth/identity-reference.d.ts +131 -0
  77. package/dist/auth/identity-reference.d.ts.map +1 -0
  78. package/dist/auth/identity-reference.js +293 -0
  79. package/dist/auth/identity-reference.js.map +1 -0
  80. package/dist/auth/identity-types.d.ts +44 -0
  81. package/dist/auth/identity-types.d.ts.map +1 -0
  82. package/dist/auth/identity-types.js +2 -0
  83. package/dist/auth/identity-types.js.map +1 -0
  84. package/dist/auth/identity-write.d.ts +41 -0
  85. package/dist/auth/identity-write.d.ts.map +1 -0
  86. package/dist/auth/identity-write.js +146 -0
  87. package/dist/auth/identity-write.js.map +1 -0
  88. package/dist/auth/identity.d.ts +84 -0
  89. package/dist/auth/identity.d.ts.map +1 -0
  90. package/dist/auth/identity.js +319 -0
  91. package/dist/auth/identity.js.map +1 -0
  92. package/dist/auth/project-config-manager.d.ts +10 -0
  93. package/dist/auth/project-config-manager.d.ts.map +1 -0
  94. package/dist/auth/project-config-manager.js +22 -0
  95. package/dist/auth/project-config-manager.js.map +1 -0
  96. package/dist/auth/provider-credential.d.ts +43 -0
  97. package/dist/auth/provider-credential.d.ts.map +1 -0
  98. package/dist/auth/provider-credential.js +107 -0
  99. package/dist/auth/provider-credential.js.map +1 -0
  100. package/dist/auth/provider-session.d.ts +10 -0
  101. package/dist/auth/provider-session.d.ts.map +1 -0
  102. package/dist/auth/provider-session.js +28 -0
  103. package/dist/auth/provider-session.js.map +1 -0
  104. package/dist/auth/tenant-manager.d.ts +17 -0
  105. package/dist/auth/tenant-manager.d.ts.map +1 -0
  106. package/dist/auth/tenant-manager.js +59 -0
  107. package/dist/auth/tenant-manager.js.map +1 -0
  108. package/dist/auth/user-import.d.ts +7 -1
  109. package/dist/auth/user-import.d.ts.map +1 -1
  110. package/dist/auth/user-import.js +53 -15
  111. package/dist/auth/user-import.js.map +1 -1
  112. package/dist/auth/user-record.d.ts +1 -0
  113. package/dist/auth/user-record.d.ts.map +1 -1
  114. package/dist/auth/user-record.js +5 -0
  115. package/dist/auth/user-record.js.map +1 -1
  116. package/dist/auth/user-request.d.ts +4 -1
  117. package/dist/auth/user-request.d.ts.map +1 -1
  118. package/dist/auth/user-request.js +7 -4
  119. package/dist/auth/user-request.js.map +1 -1
  120. package/dist/db/aggregate.d.ts +49 -0
  121. package/dist/db/aggregate.d.ts.map +1 -0
  122. package/dist/db/aggregate.js +115 -0
  123. package/dist/db/aggregate.js.map +1 -0
  124. package/dist/db/bulk-writer.d.ts +55 -0
  125. package/dist/db/bulk-writer.d.ts.map +1 -0
  126. package/dist/db/bulk-writer.js +257 -0
  127. package/dist/db/bulk-writer.js.map +1 -0
  128. package/dist/db/bundle-builder.d.ts +17 -0
  129. package/dist/db/bundle-builder.d.ts.map +1 -0
  130. package/dist/db/bundle-builder.js +118 -0
  131. package/dist/db/bundle-builder.js.map +1 -0
  132. package/dist/db/bytes.d.ts +12 -0
  133. package/dist/db/bytes.d.ts.map +1 -0
  134. package/dist/db/bytes.js +49 -0
  135. package/dist/db/bytes.js.map +1 -0
  136. package/dist/db/collection-group.d.ts +14 -0
  137. package/dist/db/collection-group.d.ts.map +1 -0
  138. package/dist/db/collection-group.js +43 -0
  139. package/dist/db/collection-group.js.map +1 -0
  140. package/dist/db/collection-reference.d.ts +21 -0
  141. package/dist/db/collection-reference.d.ts.map +1 -0
  142. package/dist/db/collection-reference.js +46 -0
  143. package/dist/db/collection-reference.js.map +1 -0
  144. package/dist/db/document-reference.d.ts +41 -0
  145. package/dist/db/document-reference.d.ts.map +1 -0
  146. package/dist/db/document-reference.js +125 -0
  147. package/dist/db/document-reference.js.map +1 -0
  148. package/dist/db/document-snapshot.d.ts +31 -0
  149. package/dist/db/document-snapshot.d.ts.map +1 -0
  150. package/dist/db/document-snapshot.js +103 -0
  151. package/dist/db/document-snapshot.js.map +1 -0
  152. package/dist/db/explain.d.ts +28 -0
  153. package/dist/db/explain.d.ts.map +1 -0
  154. package/dist/db/explain.js +61 -0
  155. package/dist/db/explain.js.map +1 -0
  156. package/dist/db/field-path.d.ts +10 -0
  157. package/dist/db/field-path.d.ts.map +1 -0
  158. package/dist/db/field-path.js +65 -0
  159. package/dist/db/field-path.js.map +1 -0
  160. package/dist/db/field-value.d.ts +17 -0
  161. package/dist/db/field-value.d.ts.map +1 -0
  162. package/dist/db/field-value.js +57 -0
  163. package/dist/db/field-value.js.map +1 -0
  164. package/dist/db/filter.d.ts +20 -0
  165. package/dist/db/filter.d.ts.map +1 -0
  166. package/dist/db/filter.js +48 -0
  167. package/dist/db/filter.js.map +1 -0
  168. package/dist/db/firestore-converter.d.ts +11 -0
  169. package/dist/db/firestore-converter.d.ts.map +1 -0
  170. package/dist/db/firestore-converter.js +14 -0
  171. package/dist/db/firestore-converter.js.map +1 -0
  172. package/dist/db/firestore-document.d.ts +62 -0
  173. package/dist/db/firestore-document.d.ts.map +1 -0
  174. package/dist/db/firestore-document.js +238 -0
  175. package/dist/db/firestore-document.js.map +1 -0
  176. package/dist/db/firestore-endpoints.d.ts +41 -0
  177. package/dist/db/firestore-endpoints.d.ts.map +1 -0
  178. package/dist/db/firestore-endpoints.js +735 -0
  179. package/dist/db/firestore-endpoints.js.map +1 -0
  180. package/dist/db/firestore-error-codes.d.ts +24 -0
  181. package/dist/db/firestore-error-codes.d.ts.map +1 -0
  182. package/dist/db/firestore-error-codes.js +24 -0
  183. package/dist/db/firestore-error-codes.js.map +1 -0
  184. package/dist/db/firestore-logging.d.ts +23 -0
  185. package/dist/db/firestore-logging.d.ts.map +1 -0
  186. package/dist/db/firestore-logging.js +41 -0
  187. package/dist/db/firestore-logging.js.map +1 -0
  188. package/dist/db/firestore-path.d.ts +4 -0
  189. package/dist/db/firestore-path.d.ts.map +1 -0
  190. package/dist/db/firestore-path.js +37 -0
  191. package/dist/db/firestore-path.js.map +1 -0
  192. package/dist/db/firestore-results.d.ts +12 -0
  193. package/dist/db/firestore-results.d.ts.map +1 -0
  194. package/dist/db/firestore-results.js +19 -0
  195. package/dist/db/firestore-results.js.map +1 -0
  196. package/dist/db/firestore-settings.d.ts +22 -0
  197. package/dist/db/firestore-settings.d.ts.map +1 -0
  198. package/dist/db/firestore-settings.js +83 -0
  199. package/dist/db/firestore-settings.js.map +1 -0
  200. package/dist/db/firestore-telemetry.d.ts +21 -0
  201. package/dist/db/firestore-telemetry.d.ts.map +1 -0
  202. package/dist/db/firestore-telemetry.js +84 -0
  203. package/dist/db/firestore-telemetry.js.map +1 -0
  204. package/dist/db/firestore-types.d.ts +25 -0
  205. package/dist/db/firestore-types.d.ts.map +1 -0
  206. package/dist/db/firestore-types.js +2 -0
  207. package/dist/db/firestore-types.js.map +1 -0
  208. package/dist/db/firestore.d.ts +157 -0
  209. package/dist/db/firestore.d.ts.map +1 -0
  210. package/dist/db/firestore.js +513 -0
  211. package/dist/db/firestore.js.map +1 -0
  212. package/dist/db/geo-point.d.ts +11 -0
  213. package/dist/db/geo-point.d.ts.map +1 -0
  214. package/dist/db/geo-point.js +29 -0
  215. package/dist/db/geo-point.js.map +1 -0
  216. package/dist/db/json-stream.d.ts +3 -0
  217. package/dist/db/json-stream.d.ts.map +1 -0
  218. package/dist/db/json-stream.js +117 -0
  219. package/dist/db/json-stream.js.map +1 -0
  220. package/dist/db/pipeline-expression.d.ts +293 -0
  221. package/dist/db/pipeline-expression.d.ts.map +1 -0
  222. package/dist/db/pipeline-expression.js +1436 -0
  223. package/dist/db/pipeline-expression.js.map +1 -0
  224. package/dist/db/pipeline-query.d.ts +6 -0
  225. package/dist/db/pipeline-query.d.ts.map +1 -0
  226. package/dist/db/pipeline-query.js +91 -0
  227. package/dist/db/pipeline-query.js.map +1 -0
  228. package/dist/db/pipeline.d.ts +120 -0
  229. package/dist/db/pipeline.d.ts.map +1 -0
  230. package/dist/db/pipeline.js +396 -0
  231. package/dist/db/pipeline.js.map +1 -0
  232. package/dist/db/query-document-snapshot.d.ts +2 -0
  233. package/dist/db/query-document-snapshot.d.ts.map +1 -0
  234. package/dist/db/query-document-snapshot.js +2 -0
  235. package/dist/db/query-document-snapshot.js.map +1 -0
  236. package/dist/db/query-partition.d.ts +14 -0
  237. package/dist/db/query-partition.d.ts.map +1 -0
  238. package/dist/db/query-partition.js +32 -0
  239. package/dist/db/query-partition.js.map +1 -0
  240. package/dist/db/query-request.d.ts +96 -0
  241. package/dist/db/query-request.d.ts.map +1 -0
  242. package/dist/db/query-request.js +283 -0
  243. package/dist/db/query-request.js.map +1 -0
  244. package/dist/db/query.d.ts +129 -0
  245. package/dist/db/query.d.ts.map +1 -0
  246. package/dist/db/query.js +468 -0
  247. package/dist/db/query.js.map +1 -0
  248. package/dist/db/recursive-delete.d.ts +6 -0
  249. package/dist/db/recursive-delete.d.ts.map +1 -0
  250. package/dist/db/recursive-delete.js +38 -0
  251. package/dist/db/recursive-delete.js.map +1 -0
  252. package/dist/db/snapshot-listener.d.ts +10 -0
  253. package/dist/db/snapshot-listener.d.ts.map +1 -0
  254. package/dist/db/snapshot-listener.js +71 -0
  255. package/dist/db/snapshot-listener.js.map +1 -0
  256. package/dist/db/timestamp.d.ts +29 -0
  257. package/dist/db/timestamp.d.ts.map +1 -0
  258. package/dist/db/timestamp.js +98 -0
  259. package/dist/db/timestamp.js.map +1 -0
  260. package/dist/db/transaction.d.ts +44 -0
  261. package/dist/db/transaction.d.ts.map +1 -0
  262. package/dist/db/transaction.js +177 -0
  263. package/dist/db/transaction.js.map +1 -0
  264. package/dist/db/value-equality.d.ts +3 -0
  265. package/dist/db/value-equality.d.ts.map +1 -0
  266. package/dist/db/value-equality.js +29 -0
  267. package/dist/db/value-equality.js.map +1 -0
  268. package/dist/db/vector-query.d.ts +38 -0
  269. package/dist/db/vector-query.d.ts.map +1 -0
  270. package/dist/db/vector-query.js +110 -0
  271. package/dist/db/vector-query.js.map +1 -0
  272. package/dist/db/vector-value.d.ts +8 -0
  273. package/dist/db/vector-value.d.ts.map +1 -0
  274. package/dist/db/vector-value.js +25 -0
  275. package/dist/db/vector-value.js.map +1 -0
  276. package/dist/db/write-batch.d.ts +25 -0
  277. package/dist/db/write-batch.d.ts.map +1 -0
  278. package/dist/db/write-batch.js +72 -0
  279. package/dist/db/write-batch.js.map +1 -0
  280. package/dist/db/write-request.d.ts +36 -0
  281. package/dist/db/write-request.d.ts.map +1 -0
  282. package/dist/db/write-request.js +257 -0
  283. package/dist/db/write-request.js.map +1 -0
  284. package/dist/firebase-edge-server.d.ts +145 -36
  285. package/dist/firebase-edge-server.d.ts.map +1 -1
  286. package/dist/firebase-edge-server.js +495 -258
  287. package/dist/firebase-edge-server.js.map +1 -1
  288. package/dist/index.d.ts +7 -0
  289. package/dist/index.d.ts.map +1 -1
  290. package/dist/index.js +6 -0
  291. package/dist/index.js.map +1 -1
  292. package/dist/rest-fetch.d.ts +1 -1
  293. package/dist/rest-fetch.d.ts.map +1 -1
  294. package/dist/storage/storage-acl.d.ts +48 -0
  295. package/dist/storage/storage-acl.d.ts.map +1 -0
  296. package/dist/storage/storage-acl.js +101 -0
  297. package/dist/storage/storage-acl.js.map +1 -0
  298. package/dist/storage/storage-bucket-endpoints.d.ts +10 -0
  299. package/dist/storage/storage-bucket-endpoints.d.ts.map +1 -0
  300. package/dist/storage/storage-bucket-endpoints.js +514 -0
  301. package/dist/storage/storage-bucket-endpoints.js.map +1 -0
  302. package/dist/storage/storage-bucket-types.d.ts +183 -0
  303. package/dist/storage/storage-bucket-types.d.ts.map +1 -0
  304. package/dist/storage/storage-bucket-types.js +2 -0
  305. package/dist/storage/storage-bucket-types.js.map +1 -0
  306. package/dist/storage/storage-bucket.d.ts +122 -0
  307. package/dist/storage/storage-bucket.d.ts.map +1 -0
  308. package/dist/storage/storage-bucket.js +544 -0
  309. package/dist/storage/storage-bucket.js.map +1 -0
  310. package/dist/storage/storage-channel.d.ts +10 -0
  311. package/dist/storage/storage-channel.d.ts.map +1 -0
  312. package/dist/storage/storage-channel.js +15 -0
  313. package/dist/storage/storage-channel.js.map +1 -0
  314. package/dist/storage/storage-checksum.d.ts +35 -0
  315. package/dist/storage/storage-checksum.d.ts.map +1 -0
  316. package/dist/storage/storage-checksum.js +312 -0
  317. package/dist/storage/storage-checksum.js.map +1 -0
  318. package/dist/storage/storage-endpoints.d.ts +14 -0
  319. package/dist/storage/storage-endpoints.d.ts.map +1 -0
  320. package/dist/storage/storage-endpoints.js +721 -0
  321. package/dist/storage/storage-endpoints.js.map +1 -0
  322. package/dist/storage/storage-file.d.ts +126 -0
  323. package/dist/storage/storage-file.d.ts.map +1 -0
  324. package/dist/storage/storage-file.js +604 -0
  325. package/dist/storage/storage-file.js.map +1 -0
  326. package/dist/storage/storage-hmac-key.d.ts +26 -0
  327. package/dist/storage/storage-hmac-key.d.ts.map +1 -0
  328. package/dist/storage/storage-hmac-key.js +45 -0
  329. package/dist/storage/storage-hmac-key.js.map +1 -0
  330. package/dist/storage/storage-iam.d.ts +20 -0
  331. package/dist/storage/storage-iam.d.ts.map +1 -0
  332. package/dist/storage/storage-iam.js +43 -0
  333. package/dist/storage/storage-iam.js.map +1 -0
  334. package/dist/storage/storage-md5.d.ts +11 -0
  335. package/dist/storage/storage-md5.d.ts.map +1 -0
  336. package/dist/storage/storage-md5.js +96 -0
  337. package/dist/storage/storage-md5.js.map +1 -0
  338. package/dist/storage/storage-notification.d.ts +24 -0
  339. package/dist/storage/storage-notification.d.ts.map +1 -0
  340. package/dist/storage/storage-notification.js +40 -0
  341. package/dist/storage/storage-notification.js.map +1 -0
  342. package/dist/storage/storage-progress.d.ts +4 -0
  343. package/dist/storage/storage-progress.d.ts.map +1 -0
  344. package/dist/storage/storage-progress.js +17 -0
  345. package/dist/storage/storage-progress.js.map +1 -0
  346. package/dist/storage/storage-reference-endpoints.d.ts +63 -0
  347. package/dist/storage/storage-reference-endpoints.d.ts.map +1 -0
  348. package/dist/storage/storage-reference-endpoints.js +276 -0
  349. package/dist/storage/storage-reference-endpoints.js.map +1 -0
  350. package/dist/storage/storage-reference-helpers.d.ts +12 -0
  351. package/dist/storage/storage-reference-helpers.d.ts.map +1 -0
  352. package/dist/storage/storage-reference-helpers.js +72 -0
  353. package/dist/storage/storage-reference-helpers.js.map +1 -0
  354. package/dist/storage/storage-reference-signing.d.ts +40 -0
  355. package/dist/storage/storage-reference-signing.d.ts.map +1 -0
  356. package/dist/storage/storage-reference-signing.js +289 -0
  357. package/dist/storage/storage-reference-signing.js.map +1 -0
  358. package/dist/storage/storage-reference-types.d.ts +76 -0
  359. package/dist/storage/storage-reference-types.d.ts.map +1 -0
  360. package/dist/storage/storage-reference-types.js +2 -0
  361. package/dist/storage/storage-reference-types.js.map +1 -0
  362. package/dist/storage/storage-results.d.ts +8 -0
  363. package/dist/storage/storage-results.d.ts.map +1 -0
  364. package/dist/storage/storage-results.js +32 -0
  365. package/dist/storage/storage-results.js.map +1 -0
  366. package/dist/storage/storage-resumable.d.ts +18 -0
  367. package/dist/storage/storage-resumable.d.ts.map +1 -0
  368. package/dist/storage/storage-resumable.js +166 -0
  369. package/dist/storage/storage-resumable.js.map +1 -0
  370. package/dist/storage/storage-retry.d.ts +9 -0
  371. package/dist/storage/storage-retry.d.ts.map +1 -0
  372. package/dist/storage/storage-retry.js +104 -0
  373. package/dist/storage/storage-retry.js.map +1 -0
  374. package/dist/storage/storage-signed-url.d.ts +9 -0
  375. package/dist/storage/storage-signed-url.d.ts.map +1 -0
  376. package/dist/storage/storage-signed-url.js +96 -0
  377. package/dist/storage/storage-signed-url.js.map +1 -0
  378. package/dist/storage/storage-special-endpoints.d.ts +10 -0
  379. package/dist/storage/storage-special-endpoints.d.ts.map +1 -0
  380. package/dist/storage/storage-special-endpoints.js +394 -0
  381. package/dist/storage/storage-special-endpoints.js.map +1 -0
  382. package/dist/storage/storage-special-types.d.ts +154 -0
  383. package/dist/storage/storage-special-types.d.ts.map +1 -0
  384. package/dist/storage/storage-special-types.js +2 -0
  385. package/dist/storage/storage-special-types.js.map +1 -0
  386. package/dist/storage/storage-types.d.ts +251 -0
  387. package/dist/storage/storage-types.d.ts.map +1 -0
  388. package/dist/storage/storage-types.js +2 -0
  389. package/dist/storage/storage-types.js.map +1 -0
  390. package/dist/storage/storage-upload-stream.d.ts +41 -0
  391. package/dist/storage/storage-upload-stream.d.ts.map +1 -0
  392. package/dist/storage/storage-upload-stream.js +335 -0
  393. package/dist/storage/storage-upload-stream.js.map +1 -0
  394. package/dist/storage/storage-xml-signing.d.ts +17 -0
  395. package/dist/storage/storage-xml-signing.d.ts.map +1 -0
  396. package/dist/storage/storage-xml-signing.js +144 -0
  397. package/dist/storage/storage-xml-signing.js.map +1 -0
  398. package/dist/storage/storage.d.ts +159 -0
  399. package/dist/storage/storage.d.ts.map +1 -0
  400. package/dist/storage/storage.js +545 -0
  401. package/dist/storage/storage.js.map +1 -0
  402. package/dist/utils/token-cache.d.ts.map +1 -1
  403. package/dist/utils/token-cache.js +3 -2
  404. package/dist/utils/token-cache.js.map +1 -1
  405. package/package.json +24 -8
  406. package/dist/auth/auth-endpoint-errors.test.d.ts +0 -2
  407. package/dist/auth/auth-endpoint-errors.test.d.ts.map +0 -1
  408. package/dist/auth/auth-endpoint-errors.test.js +0 -411
  409. package/dist/auth/auth-endpoint-errors.test.js.map +0 -1
  410. package/dist/auth/email-action-request.test.d.ts +0 -2
  411. package/dist/auth/email-action-request.test.d.ts.map +0 -1
  412. package/dist/auth/email-action-request.test.js +0 -128
  413. package/dist/auth/email-action-request.test.js.map +0 -1
  414. package/dist/auth/errors.test.d.ts +0 -2
  415. package/dist/auth/errors.test.d.ts.map +0 -1
  416. package/dist/auth/errors.test.js +0 -123
  417. package/dist/auth/errors.test.js.map +0 -1
  418. package/dist/auth/firebase-admin-auth.test.d.ts +0 -2
  419. package/dist/auth/firebase-admin-auth.test.d.ts.map +0 -1
  420. package/dist/auth/firebase-admin-auth.test.js +0 -1542
  421. package/dist/auth/firebase-admin-auth.test.js.map +0 -1
  422. package/dist/auth/firebase-auth-endpoints.test.d.ts +0 -2
  423. package/dist/auth/firebase-auth-endpoints.test.d.ts.map +0 -1
  424. package/dist/auth/firebase-auth-endpoints.test.js +0 -1082
  425. package/dist/auth/firebase-auth-endpoints.test.js.map +0 -1
  426. package/dist/auth/firebase-auth.test.d.ts +0 -2
  427. package/dist/auth/firebase-auth.test.d.ts.map +0 -1
  428. package/dist/auth/firebase-auth.test.js +0 -167
  429. package/dist/auth/firebase-auth.test.js.map +0 -1
  430. package/dist/auth/firebase-jwt.test.d.ts +0 -2
  431. package/dist/auth/firebase-jwt.test.d.ts.map +0 -1
  432. package/dist/auth/firebase-jwt.test.js +0 -164
  433. package/dist/auth/firebase-jwt.test.js.map +0 -1
  434. package/dist/auth/github-oauth.d.ts +0 -19
  435. package/dist/auth/github-oauth.d.ts.map +0 -1
  436. package/dist/auth/github-oauth.js +0 -145
  437. package/dist/auth/github-oauth.js.map +0 -1
  438. package/dist/auth/github-oauth.test.d.ts +0 -2
  439. package/dist/auth/github-oauth.test.d.ts.map +0 -1
  440. package/dist/auth/github-oauth.test.js +0 -202
  441. package/dist/auth/github-oauth.test.js.map +0 -1
  442. package/dist/auth/google-oauth.test.d.ts +0 -2
  443. package/dist/auth/google-oauth.test.d.ts.map +0 -1
  444. package/dist/auth/google-oauth.test.js +0 -200
  445. package/dist/auth/google-oauth.test.js.map +0 -1
  446. package/dist/auth/oauth.d.ts +0 -3
  447. package/dist/auth/oauth.d.ts.map +0 -1
  448. package/dist/auth/oauth.js +0 -48
  449. package/dist/auth/oauth.js.map +0 -1
  450. package/dist/auth/oauth.test.d.ts +0 -2
  451. package/dist/auth/oauth.test.d.ts.map +0 -1
  452. package/dist/auth/oauth.test.js +0 -109
  453. package/dist/auth/oauth.test.js.map +0 -1
  454. package/dist/auth/user-batch.test.d.ts +0 -2
  455. package/dist/auth/user-batch.test.d.ts.map +0 -1
  456. package/dist/auth/user-batch.test.js +0 -73
  457. package/dist/auth/user-batch.test.js.map +0 -1
  458. package/dist/auth/user-import.test.d.ts +0 -2
  459. package/dist/auth/user-import.test.d.ts.map +0 -1
  460. package/dist/auth/user-import.test.js +0 -217
  461. package/dist/auth/user-import.test.js.map +0 -1
  462. package/dist/auth/user-record.test.d.ts +0 -2
  463. package/dist/auth/user-record.test.d.ts.map +0 -1
  464. package/dist/auth/user-record.test.js +0 -198
  465. package/dist/auth/user-record.test.js.map +0 -1
  466. package/dist/auth/user-request.test.d.ts +0 -2
  467. package/dist/auth/user-request.test.d.ts.map +0 -1
  468. package/dist/auth/user-request.test.js +0 -327
  469. package/dist/auth/user-request.test.js.map +0 -1
  470. package/dist/firebase-edge-errors.test.d.ts +0 -2
  471. package/dist/firebase-edge-errors.test.d.ts.map +0 -1
  472. package/dist/firebase-edge-errors.test.js +0 -72
  473. package/dist/firebase-edge-errors.test.js.map +0 -1
  474. package/dist/firebase-edge-server.test.d.ts +0 -2
  475. package/dist/firebase-edge-server.test.d.ts.map +0 -1
  476. package/dist/firebase-edge-server.test.js +0 -293
  477. package/dist/firebase-edge-server.test.js.map +0 -1
  478. package/dist/rest-fetch.test.d.ts +0 -2
  479. package/dist/rest-fetch.test.d.ts.map +0 -1
  480. package/dist/rest-fetch.test.js +0 -164
  481. package/dist/rest-fetch.test.js.map +0 -1
@@ -0,0 +1,29 @@
1
+ /** An instant with nanosecond precision, in Firestore's supported date range. */
2
+ export declare class Timestamp {
3
+ readonly seconds: number;
4
+ readonly nanoseconds: number;
5
+ constructor(seconds: number, nanoseconds: number);
6
+ static fromInstant(instant: {
7
+ readonly epochNanoseconds: bigint;
8
+ }): Timestamp;
9
+ toInstant(): {
10
+ readonly epochNanoseconds: bigint;
11
+ toString(): string;
12
+ };
13
+ static now(): Timestamp;
14
+ static fromDate(date: Date): Timestamp;
15
+ static fromMillis(milliseconds: number): Timestamp;
16
+ /** @internal Parse a Firestore RFC3339 UTC timestamp without losing nanoseconds. */
17
+ static fromString(value: string): Timestamp;
18
+ toDate(): Date;
19
+ toMillis(): number;
20
+ isEqual(other: Timestamp): boolean;
21
+ toJSON(): {
22
+ seconds: number;
23
+ nanoseconds: number;
24
+ };
25
+ valueOf(): string;
26
+ /** @internal REST representation. */
27
+ toString(): string;
28
+ }
29
+ //# sourceMappingURL=timestamp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timestamp.d.ts","sourceRoot":"","sources":["../../src/db/timestamp.ts"],"names":[],"mappings":"AAEA,iFAAiF;AACjF,qBAAa,SAAS;IAEd,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM;gBADnB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM;IAqBhC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE;QACxB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;KACrC,GAAG,SAAS;IAab,SAAS,IAAI;QAAE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,QAAQ,IAAI,MAAM,CAAA;KAAE;IAqBtE,MAAM,CAAC,GAAG,IAAI,SAAS;IAGvB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS;IAGtC,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS;IAYlD,oFAAoF;IACpF,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IAwB3C,MAAM,IAAI,IAAI;IAKd,QAAQ,IAAI,MAAM;IAGlB,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAOlC,MAAM,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE;IAGlD,OAAO,IAAI,MAAM;IAGjB,qCAAqC;IACrC,QAAQ,IAAI,MAAM;CAGrB"}
@@ -0,0 +1,98 @@
1
+ import { FirestoreErrorInfo } from './firestore-error-codes.js';
2
+ import { FirebaseEdgeError } from '../auth/errors.js';
3
+ /** An instant with nanosecond precision, in Firestore's supported date range. */
4
+ export class Timestamp {
5
+ seconds;
6
+ nanoseconds;
7
+ constructor(seconds, nanoseconds) {
8
+ this.seconds = seconds;
9
+ this.nanoseconds = nanoseconds;
10
+ if (!Number.isInteger(seconds) ||
11
+ seconds < -62135596800 ||
12
+ seconds > 253402300799)
13
+ throw new FirebaseEdgeError({
14
+ ...FirestoreErrorInfo.INVALID_ARGUMENT,
15
+ message: 'Timestamp seconds are out of range.'
16
+ });
17
+ if (!Number.isInteger(nanoseconds) ||
18
+ nanoseconds < 0 ||
19
+ nanoseconds >= 1e9)
20
+ throw new FirebaseEdgeError({
21
+ ...FirestoreErrorInfo.INVALID_ARGUMENT,
22
+ message: 'Timestamp nanoseconds are out of range.'
23
+ });
24
+ }
25
+ static fromInstant(instant) {
26
+ if (!instant || typeof instant.epochNanoseconds !== 'bigint')
27
+ throw new FirebaseEdgeError({
28
+ ...FirestoreErrorInfo.INVALID_ARGUMENT,
29
+ message: 'Expected a Temporal instant.'
30
+ });
31
+ const nanos = instant.epochNanoseconds;
32
+ const remainder = ((nanos % 1000000000n) + 1000000000n) % 1000000000n;
33
+ return new Timestamp(Number((nanos - remainder) / 1000000000n), Number(remainder));
34
+ }
35
+ toInstant() {
36
+ const temporal = globalThis.Temporal;
37
+ if (!temporal?.Instant)
38
+ throw new FirebaseEdgeError({
39
+ ...FirestoreErrorInfo.FAILED_PRECONDITION,
40
+ message: 'Temporal.Instant is unavailable in this runtime. Provide a Temporal polyfill to use toInstant().'
41
+ });
42
+ return new temporal.Instant(BigInt(this.seconds) * 1000000000n + BigInt(this.nanoseconds));
43
+ }
44
+ static now() {
45
+ return Timestamp.fromMillis(Date.now());
46
+ }
47
+ static fromDate(date) {
48
+ return Timestamp.fromMillis(date.getTime());
49
+ }
50
+ static fromMillis(milliseconds) {
51
+ if (!Number.isFinite(milliseconds))
52
+ throw new FirebaseEdgeError({
53
+ ...FirestoreErrorInfo.INVALID_ARGUMENT,
54
+ message: 'Invalid timestamp milliseconds.'
55
+ });
56
+ const seconds = Math.floor(milliseconds / 1000);
57
+ return new Timestamp(seconds, Math.floor((milliseconds - seconds * 1000) * 1e6));
58
+ }
59
+ /** @internal Parse a Firestore RFC3339 UTC timestamp without losing nanoseconds. */
60
+ static fromString(value) {
61
+ const match = /^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})(?:\.(\d{1,9}))?Z$/.exec(value);
62
+ if (!match)
63
+ throw new FirebaseEdgeError({
64
+ ...FirestoreErrorInfo.INVALID_ARGUMENT,
65
+ message: 'Invalid Firestore timestamp.'
66
+ });
67
+ const parsed = new Date(`${match[1]}Z`);
68
+ if (!Number.isFinite(parsed.getTime()) ||
69
+ parsed.toISOString().slice(0, 19) !== match[1])
70
+ throw new FirebaseEdgeError({
71
+ ...FirestoreErrorInfo.INVALID_ARGUMENT,
72
+ message: 'Invalid Firestore timestamp.'
73
+ });
74
+ return new Timestamp(Date.parse(`${match[1]}Z`) / 1000, Number((match[2] ?? '').padEnd(9, '0')));
75
+ }
76
+ toDate() {
77
+ return new Date(this.seconds * 1000 + Math.round(this.nanoseconds / 1e6));
78
+ }
79
+ toMillis() {
80
+ return this.seconds * 1000 + Math.floor(this.nanoseconds / 1e6);
81
+ }
82
+ isEqual(other) {
83
+ return (other instanceof Timestamp &&
84
+ this.seconds === other.seconds &&
85
+ this.nanoseconds === other.nanoseconds);
86
+ }
87
+ toJSON() {
88
+ return { seconds: this.seconds, nanoseconds: this.nanoseconds };
89
+ }
90
+ valueOf() {
91
+ return `${String(this.seconds + 62135596800).padStart(12, '0')}.${String(this.nanoseconds).padStart(9, '0')}`;
92
+ }
93
+ /** @internal REST representation. */
94
+ toString() {
95
+ return `${new Date(this.seconds * 1000).toISOString().slice(0, 19)}.${String(this.nanoseconds).padStart(9, '0')}Z`;
96
+ }
97
+ }
98
+ //# sourceMappingURL=timestamp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timestamp.js","sourceRoot":"","sources":["../../src/db/timestamp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,iFAAiF;AACjF,MAAM,OAAO,SAAS;IAEL;IACA;IAFb,YACa,OAAe,EACf,WAAmB;QADnB,YAAO,GAAP,OAAO,CAAQ;QACf,gBAAW,GAAX,WAAW,CAAQ;QAE5B,IACI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;YAC1B,OAAO,GAAG,CAAC,WAAW;YACtB,OAAO,GAAG,YAAY;YAEtB,MAAM,IAAI,iBAAiB,CAAC;gBACxB,GAAG,kBAAkB,CAAC,gBAAgB;gBACtC,OAAO,EAAE,qCAAqC;aACjD,CAAC,CAAC;QACP,IACI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC;YAC9B,WAAW,GAAG,CAAC;YACf,WAAW,IAAI,GAAG;YAElB,MAAM,IAAI,iBAAiB,CAAC;gBACxB,GAAG,kBAAkB,CAAC,gBAAgB;gBACtC,OAAO,EAAE,yCAAyC;aACrD,CAAC,CAAC;IACX,CAAC;IACD,MAAM,CAAC,WAAW,CAAC,OAElB;QACG,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,gBAAgB,KAAK,QAAQ;YACxD,MAAM,IAAI,iBAAiB,CAAC;gBACxB,GAAG,kBAAkB,CAAC,gBAAgB;gBACtC,OAAO,EAAE,8BAA8B;aAC1C,CAAC,CAAC;QACP,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACvC,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,WAAW,CAAC,GAAG,WAAW,CAAC;QACtE,OAAO,IAAI,SAAS,CAChB,MAAM,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,WAAW,CAAC,EACzC,MAAM,CAAC,SAAS,CAAC,CACpB,CAAC;IACN,CAAC;IACD,SAAS;QACL,MAAM,QAAQ,GACV,UAQH,CAAC,QAAQ,CAAC;QACX,IAAI,CAAC,QAAQ,EAAE,OAAO;YAClB,MAAM,IAAI,iBAAiB,CAAC;gBACxB,GAAG,kBAAkB,CAAC,mBAAmB;gBACzC,OAAO,EACH,kGAAkG;aACzG,CAAC,CAAC;QACP,OAAO,IAAI,QAAQ,CAAC,OAAO,CACvB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAChE,CAAC;IACN,CAAC;IACD,MAAM,CAAC,GAAG;QACN,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,CAAC,QAAQ,CAAC,IAAU;QACtB,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,CAAC,UAAU,CAAC,YAAoB;QAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC9B,MAAM,IAAI,iBAAiB,CAAC;gBACxB,GAAG,kBAAkB,CAAC,gBAAgB;gBACtC,OAAO,EAAE,iCAAiC;aAC7C,CAAC,CAAC;QACP,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;QAChD,OAAO,IAAI,SAAS,CAChB,OAAO,EACP,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CACpD,CAAC;IACN,CAAC;IACD,oFAAoF;IACpF,MAAM,CAAC,UAAU,CAAC,KAAa;QAC3B,MAAM,KAAK,GACP,0DAA0D,CAAC,IAAI,CAC3D,KAAK,CACR,CAAC;QACN,IAAI,CAAC,KAAK;YACN,MAAM,IAAI,iBAAiB,CAAC;gBACxB,GAAG,kBAAkB,CAAC,gBAAgB;gBACtC,OAAO,EAAE,8BAA8B;aAC1C,CAAC,CAAC;QACP,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACxC,IACI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;YAE9C,MAAM,IAAI,iBAAiB,CAAC;gBACxB,GAAG,kBAAkB,CAAC,gBAAgB;gBACtC,OAAO,EAAE,8BAA8B;aAC1C,CAAC,CAAC;QACP,OAAO,IAAI,SAAS,CAChB,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EACjC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAC1C,CAAC;IACN,CAAC;IACD,MAAM;QACF,OAAO,IAAI,IAAI,CACX,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,CAC3D,CAAC;IACN,CAAC;IACD,QAAQ;QACJ,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,CAAC,KAAgB;QACpB,OAAO,CACH,KAAK,YAAY,SAAS;YAC1B,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;YAC9B,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW,CACzC,CAAC;IACN,CAAC;IACD,MAAM;QACF,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;IACpE,CAAC;IACD,OAAO;QACH,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAClH,CAAC;IACD,qCAAqC;IACrC,QAAQ;QACJ,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;IACvH,CAAC;CACJ"}
@@ -0,0 +1,44 @@
1
+ import { type FirestoreResult } from './firestore-results.js';
2
+ import type { WithFieldValue, PartialWithFieldValue, UpdateData } from './firestore-types.js';
3
+ import { Pipeline, type PipelineSnapshot } from './pipeline.js';
4
+ import type { Firestore, ReadOptions } from './firestore.js';
5
+ import { Query, type QuerySnapshot } from './query.js';
6
+ import { AggregateQuery, type AggregateSpec, type AggregateQuerySnapshot } from './aggregate.js';
7
+ import { DocumentReference } from './document-reference.js';
8
+ import { FieldPath } from './field-path.js';
9
+ import type { DocumentSnapshot } from './document-snapshot.js';
10
+ import type { DocumentData } from './firestore-document.js';
11
+ import { type SetOptions, type Precondition } from './write-batch.js';
12
+ import type { WriteOperation, WriteResult } from './write-request.js';
13
+ export declare class Transaction {
14
+ readonly firestore: Firestore;
15
+ private readonly read;
16
+ private readonly commitWrites;
17
+ private readonly readOnly;
18
+ private readonly transactionId?;
19
+ execute(pipeline: Pipeline): Promise<FirestoreResult<PipelineSnapshot>>;
20
+ private readonly batch;
21
+ private written;
22
+ private pipelineWritten;
23
+ private closed;
24
+ private readonly reads;
25
+ /** @internal Use firestore.runTransaction(). */
26
+ constructor(firestore: Firestore, read: (ref: DocumentReference<any>) => Promise<DocumentSnapshot<any>>, commitWrites: (writes: WriteOperation[]) => Promise<WriteResult[]>, readOnly?: boolean, transactionId?: string | undefined);
27
+ get<T, DbModelType extends DocumentData = DocumentData>(ref: DocumentReference<T, DbModelType>): Promise<FirestoreResult<DocumentSnapshot<T, DbModelType>>>;
28
+ get<T, DbModelType extends DocumentData = DocumentData>(ref: Query<T, DbModelType>): Promise<FirestoreResult<QuerySnapshot<T, DbModelType>>>;
29
+ get<S extends AggregateSpec, T, DbModelType extends DocumentData>(ref: AggregateQuery<S, T, DbModelType>): Promise<FirestoreResult<AggregateQuerySnapshot<S, T, DbModelType>>>;
30
+ getAll<T = DocumentData, DbModelType extends DocumentData = DocumentData>(...refs: (DocumentReference<T, DbModelType> | ReadOptions)[]): Promise<FirestoreResult<DocumentSnapshot<T, DbModelType>[]>>;
31
+ create<T, DbModelType extends DocumentData = DocumentData>(ref: DocumentReference<T, DbModelType>, data: WithFieldValue<T>): this;
32
+ set<T, DbModelType extends DocumentData = DocumentData>(ref: DocumentReference<T, DbModelType>, data: WithFieldValue<T>): this;
33
+ set<T, DbModelType extends DocumentData = DocumentData>(ref: DocumentReference<T, DbModelType>, data: PartialWithFieldValue<T>, options: SetOptions): this;
34
+ update<T, DbModelType extends DocumentData>(ref: DocumentReference<T, DbModelType>, data: UpdateData<DbModelType>, precondition?: Precondition): this;
35
+ update(ref: DocumentReference<any>, field: string | FieldPath, value: unknown, ...moreFieldsOrPrecondition: unknown[]): this;
36
+ delete(ref: DocumentReference<any>, precondition?: Precondition): this;
37
+ /** @internal */
38
+ _commit(): Promise<void>;
39
+ /** @internal */
40
+ _close(): void;
41
+ private assertOpen;
42
+ private assertWritable;
43
+ }
44
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/db/transaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,177 @@
1
+ import { firestoreResult, firestoreData } from './firestore-results.js';
2
+ import { Pipeline } from './pipeline.js';
3
+ import { FirestoreErrorInfo } from './firestore-error-codes.js';
4
+ import { FirebaseEdgeError } from '../auth/errors.js';
5
+ import { Query } from './query.js';
6
+ import { AggregateQuery } from './aggregate.js';
7
+ import { DocumentReference } from './document-reference.js';
8
+ import { FieldPath } from './field-path.js';
9
+ import { normalizeUpdateArguments } from './write-request.js';
10
+ import { WriteBatch } from './write-batch.js';
11
+ export class Transaction {
12
+ firestore;
13
+ read;
14
+ commitWrites;
15
+ readOnly;
16
+ transactionId;
17
+ execute(pipeline) {
18
+ return firestoreResult(async () => {
19
+ this.assertOpen();
20
+ if (this.written || this.pipelineWritten || !this.transactionId) {
21
+ throw new FirebaseEdgeError({
22
+ ...FirestoreErrorInfo.FAILED_PRECONDITION,
23
+ message: 'Pipeline reads require an active transaction before writes.'
24
+ });
25
+ }
26
+ if (!(pipeline instanceof Pipeline) ||
27
+ pipeline.firestore !== this.firestore) {
28
+ throw new FirebaseEdgeError({
29
+ ...FirestoreErrorInfo.INVALID_ARGUMENT,
30
+ message: 'Pipeline must belong to this Firestore.'
31
+ });
32
+ }
33
+ if (pipeline._hasWrites && this.readOnly) {
34
+ throw new FirebaseEdgeError({
35
+ ...FirestoreErrorInfo.FAILED_PRECONDITION,
36
+ message: 'Read-only transactions cannot execute mutation pipelines.'
37
+ });
38
+ }
39
+ if (pipeline._hasWrites) {
40
+ this.pipelineWritten = true;
41
+ }
42
+ const result = pipeline._execute({}, this.transactionId);
43
+ this.reads.push(result);
44
+ void result.catch(() => { });
45
+ return result;
46
+ });
47
+ }
48
+ batch;
49
+ written = false;
50
+ pipelineWritten = false;
51
+ closed = false;
52
+ reads = [];
53
+ /** @internal Use firestore.runTransaction(). */
54
+ constructor(firestore, read, commitWrites, readOnly = false, transactionId) {
55
+ this.firestore = firestore;
56
+ this.read = read;
57
+ this.commitWrites = commitWrites;
58
+ this.readOnly = readOnly;
59
+ this.transactionId = transactionId;
60
+ this.batch = new WriteBatch(firestore, commitWrites);
61
+ }
62
+ get(ref) {
63
+ return firestoreResult(async () => {
64
+ this.assertOpen();
65
+ if (this.written || this.pipelineWritten) {
66
+ throw new FirebaseEdgeError({
67
+ ...FirestoreErrorInfo.FAILED_PRECONDITION,
68
+ message: 'Transaction reads must precede writes.'
69
+ });
70
+ }
71
+ const owner = ref instanceof AggregateQuery
72
+ ? ref.query.firestore
73
+ : ref?.firestore;
74
+ if (!(ref instanceof DocumentReference ||
75
+ ref instanceof Query ||
76
+ ref instanceof AggregateQuery) ||
77
+ owner !== this.firestore) {
78
+ throw new FirebaseEdgeError({
79
+ ...FirestoreErrorInfo.INVALID_ARGUMENT,
80
+ message: 'DocumentReference must belong to this Firestore instance.'
81
+ });
82
+ }
83
+ if (!(ref instanceof DocumentReference) && !this.transactionId) {
84
+ throw new FirebaseEdgeError({
85
+ ...FirestoreErrorInfo.FAILED_PRECONDITION,
86
+ message: 'A server transaction is required.'
87
+ });
88
+ }
89
+ const result = ref instanceof DocumentReference
90
+ ? this.read(ref)
91
+ : ref._get(this.transactionId);
92
+ this.reads.push(result);
93
+ void result.catch(() => { });
94
+ return result;
95
+ });
96
+ }
97
+ getAll(...refs) {
98
+ return firestoreResult(async () => {
99
+ this.assertOpen();
100
+ if (this.written || this.pipelineWritten) {
101
+ throw new FirebaseEdgeError({
102
+ ...FirestoreErrorInfo.FAILED_PRECONDITION,
103
+ message: 'Transaction reads must precede writes.'
104
+ });
105
+ }
106
+ if (!this.transactionId) {
107
+ throw new FirebaseEdgeError({
108
+ ...FirestoreErrorInfo.FAILED_PRECONDITION,
109
+ message: 'A server transaction is required.'
110
+ });
111
+ }
112
+ const result = this.firestore._getAll(refs, this.transactionId);
113
+ this.reads.push(result);
114
+ void result.catch(() => { });
115
+ return result;
116
+ });
117
+ }
118
+ create(ref, data) {
119
+ this.assertWritable();
120
+ this.batch.create(ref, data);
121
+ this.written = true;
122
+ return this;
123
+ }
124
+ set(ref, data, options) {
125
+ this.assertWritable();
126
+ if (options === undefined)
127
+ this.batch.set(ref, data);
128
+ else
129
+ this.batch.set(ref, data, options);
130
+ this.written = true;
131
+ return this;
132
+ }
133
+ update(ref, data, ...args) {
134
+ this.assertWritable();
135
+ const update = normalizeUpdateArguments(data, args);
136
+ this.batch.update(ref, update.data, update.precondition);
137
+ this.written = true;
138
+ return this;
139
+ }
140
+ delete(ref, precondition) {
141
+ this.assertWritable();
142
+ this.batch.delete(ref, precondition);
143
+ this.written = true;
144
+ return this;
145
+ }
146
+ /** @internal */
147
+ async _commit() {
148
+ this.assertOpen();
149
+ this.closed = true;
150
+ await Promise.all(this.reads);
151
+ if (!this.written) {
152
+ await this.commitWrites([]);
153
+ return;
154
+ }
155
+ await this.batch.commit().then(firestoreData);
156
+ }
157
+ /** @internal */
158
+ _close() {
159
+ this.closed = true;
160
+ }
161
+ assertOpen() {
162
+ if (this.closed)
163
+ throw new FirebaseEdgeError({
164
+ ...FirestoreErrorInfo.FAILED_PRECONDITION,
165
+ message: 'Transaction is closed.'
166
+ });
167
+ }
168
+ assertWritable() {
169
+ this.assertOpen();
170
+ if (this.readOnly)
171
+ throw new FirebaseEdgeError({
172
+ ...FirestoreErrorInfo.FAILED_PRECONDITION,
173
+ message: 'Read-only transactions cannot write.'
174
+ });
175
+ }
176
+ }
177
+ //# sourceMappingURL=transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/db/transaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** @internal Compare Firestore values without depending on object property order. */
2
+ export declare function valueEquals(left: unknown, right: unknown): boolean;
3
+ //# sourceMappingURL=value-equality.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-equality.d.ts","sourceRoot":"","sources":["../../src/db/value-equality.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAuClE"}
@@ -0,0 +1,29 @@
1
+ /** @internal Compare Firestore values without depending on object property order. */
2
+ export function valueEquals(left, right) {
3
+ if (Object.is(left, right))
4
+ return true;
5
+ if (!left ||
6
+ !right ||
7
+ typeof left !== 'object' ||
8
+ typeof right !== 'object')
9
+ return false;
10
+ if ('isEqual' in left && typeof left.isEqual === 'function')
11
+ return left.isEqual(right);
12
+ if (left instanceof Date)
13
+ return right instanceof Date && left.getTime() === right.getTime();
14
+ if (left instanceof Uint8Array)
15
+ return (right instanceof Uint8Array &&
16
+ left.length === right.length &&
17
+ left.every((value, i) => value === right[i]));
18
+ if (Array.isArray(left))
19
+ return (Array.isArray(right) &&
20
+ left.length === right.length &&
21
+ left.every((value, i) => valueEquals(value, right[i])));
22
+ if (Object.getPrototypeOf(left) !== Object.getPrototypeOf(right))
23
+ return false;
24
+ const keys = Object.keys(left);
25
+ return (keys.length === Object.keys(right).length &&
26
+ keys.every((key) => Object.hasOwn(right, key) &&
27
+ valueEquals(left[key], right[key])));
28
+ }
29
+ //# sourceMappingURL=value-equality.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-equality.js","sourceRoot":"","sources":["../../src/db/value-equality.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,MAAM,UAAU,WAAW,CAAC,IAAa,EAAE,KAAc;IACrD,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,IACI,CAAC,IAAI;QACL,CAAC,KAAK;QACN,OAAO,IAAI,KAAK,QAAQ;QACxB,OAAO,KAAK,KAAK,QAAQ;QAEzB,OAAO,KAAK,CAAC;IACjB,IAAI,SAAS,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU;QACvD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,IAAI,YAAY,IAAI;QACpB,OAAO,KAAK,YAAY,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;IACvE,IAAI,IAAI,YAAY,UAAU;QAC1B,OAAO,CACH,KAAK,YAAY,UAAU;YAC3B,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;YAC5B,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAC/C,CAAC;IACN,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACnB,OAAO,CACH,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACpB,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;YAC5B,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CACzD,CAAC;IACN,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC;QAC5D,OAAO,KAAK,CAAC;IACjB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,CACH,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM;QACzC,IAAI,CAAC,KAAK,CACN,CAAC,GAAG,EAAE,EAAE,CACJ,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC;YACzB,WAAW,CACN,IAAgC,CAAC,GAAG,CAAC,EACrC,KAAiC,CAAC,GAAG,CAAC,CAC1C,CACR,CACJ,CAAC;AACN,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { type FirestoreResult } from './firestore-results.js';
2
+ import { type DocumentChange, type Query } from './query.js';
3
+ import type { QueryDocumentSnapshot } from './query-document-snapshot.js';
4
+ import type { DocumentData } from './firestore-document.js';
5
+ import { FieldPath } from './field-path.js';
6
+ import { VectorValue } from './vector-value.js';
7
+ import type { Timestamp } from './timestamp.js';
8
+ import type { ExplainOptions, ExplainResults } from './explain.js';
9
+ export interface VectorQueryOptions {
10
+ vectorField: string | FieldPath;
11
+ queryVector: VectorValue | number[];
12
+ limit: number;
13
+ distanceMeasure: 'EUCLIDEAN' | 'COSINE' | 'DOT_PRODUCT';
14
+ distanceResultField?: string | FieldPath;
15
+ distanceThreshold?: number;
16
+ }
17
+ export declare class VectorQuery<T = DocumentData, DbModelType extends DocumentData = DocumentData> {
18
+ readonly query: Query<T, DbModelType>;
19
+ private readonly executable;
20
+ /** @internal Obtain from Query.findNearest(). */
21
+ constructor(query: Query<T, DbModelType>, options: VectorQueryOptions);
22
+ get(): Promise<FirestoreResult<VectorQuerySnapshot<T, DbModelType>>>;
23
+ isEqual(other: unknown): boolean;
24
+ explain(options?: ExplainOptions): Promise<FirestoreResult<ExplainResults<VectorQuerySnapshot<T, DbModelType>>>>;
25
+ }
26
+ export declare class VectorQuerySnapshot<T = DocumentData, DbModelType extends DocumentData = DocumentData> {
27
+ readonly query: VectorQuery<T, DbModelType>;
28
+ readonly docs: QueryDocumentSnapshot<T, DbModelType>[];
29
+ readonly readTime: Timestamp;
30
+ readonly size: number;
31
+ readonly empty: boolean;
32
+ /** @internal Obtain from VectorQuery.get(). */
33
+ constructor(query: VectorQuery<T, DbModelType>, docs: QueryDocumentSnapshot<T, DbModelType>[], readTime: Timestamp);
34
+ docChanges(): DocumentChange<T, DbModelType>[];
35
+ forEach(callback: (doc: QueryDocumentSnapshot<T, DbModelType>) => void, thisArg?: unknown): void;
36
+ isEqual(other: unknown): boolean;
37
+ }
38
+ //# sourceMappingURL=vector-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector-query.d.ts","sourceRoot":"","sources":["../../src/db/vector-query.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,eAAe,EAGvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAiB,KAAK,cAAc,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnE,MAAM,WAAW,kBAAkB;IAC/B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,WAAW,EAAE,WAAW,GAAG,MAAM,EAAE,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,WAAW,GAAG,QAAQ,GAAG,aAAa,CAAC;IACxD,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AACD,qBAAa,WAAW,CACpB,CAAC,GAAG,YAAY,EAChB,WAAW,SAAS,YAAY,GAAG,YAAY;IAK3C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC;IAHzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwB;IACnD,iDAAiD;gBAEpC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,EACrC,OAAO,EAAE,kBAAkB;IAiDzB,GAAG,IAAI,OAAO,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;IAU1E,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAM1B,OAAO,CACT,OAAO,CAAC,EAAE,cAAc,GACzB,OAAO,CACN,eAAe,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CACvE;CAiBJ;AACD,qBAAa,mBAAmB,CAC5B,CAAC,GAAG,YAAY,EAChB,WAAW,SAAS,YAAY,GAAG,YAAY;IAM3C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE;IACtD,QAAQ,CAAC,QAAQ,EAAE,SAAS;IANhC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,+CAA+C;gBAElC,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,EAClC,IAAI,EAAE,qBAAqB,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,EAC7C,QAAQ,EAAE,SAAS;IAKhC,UAAU,IAAI,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE;IAO9C,OAAO,CACH,QAAQ,EAAE,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,IAAI,EAC9D,OAAO,CAAC,EAAE,OAAO,GAClB,IAAI;IAQP,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;CAQnC"}
@@ -0,0 +1,110 @@
1
+ import { firestoreResult, firestoreData } from './firestore-results.js';
2
+ import { QuerySnapshot } from './query.js';
3
+ import { FieldPath } from './field-path.js';
4
+ import { VectorValue } from './vector-value.js';
5
+ import { encodeValue, validateFieldPath } from './query-request.js';
6
+ import { FirebaseEdgeError } from '../auth/errors.js';
7
+ import { FirestoreErrorInfo } from './firestore-error-codes.js';
8
+ export class VectorQuery {
9
+ query;
10
+ executable;
11
+ /** @internal Obtain from Query.findNearest(). */
12
+ constructor(query, options) {
13
+ this.query = query;
14
+ if (!options ||
15
+ !Number.isInteger(options.limit) ||
16
+ options.limit < 1 ||
17
+ options.limit > 1000 ||
18
+ !['EUCLIDEAN', 'COSINE', 'DOT_PRODUCT'].includes(options.distanceMeasure) ||
19
+ (options.distanceThreshold !== undefined &&
20
+ !Number.isFinite(options.distanceThreshold)))
21
+ throw new FirebaseEdgeError({
22
+ ...FirestoreErrorInfo.INVALID_ARGUMENT,
23
+ message: 'Invalid vector query options.'
24
+ });
25
+ if (!(options.vectorField instanceof FieldPath))
26
+ validateFieldPath(options.vectorField);
27
+ if (options.distanceResultField !== undefined &&
28
+ !(options.distanceResultField instanceof FieldPath))
29
+ validateFieldPath(options.distanceResultField);
30
+ const vector = options.queryVector instanceof VectorValue
31
+ ? options.queryVector
32
+ : new VectorValue(options.queryVector);
33
+ if (!vector.toArray().length)
34
+ throw new FirebaseEdgeError({
35
+ ...FirestoreErrorInfo.INVALID_ARGUMENT,
36
+ message: 'A query vector must not be empty.'
37
+ });
38
+ this.executable = query._withNearest({
39
+ vectorField: { fieldPath: options.vectorField.toString() },
40
+ queryVector: encodeValue(vector),
41
+ limit: options.limit,
42
+ distanceMeasure: options.distanceMeasure,
43
+ ...(options.distanceResultField !== undefined
44
+ ? {
45
+ distanceResultField: options.distanceResultField.toString()
46
+ }
47
+ : {}),
48
+ ...(options.distanceThreshold !== undefined
49
+ ? { distanceThreshold: options.distanceThreshold }
50
+ : {})
51
+ });
52
+ }
53
+ async get() {
54
+ return firestoreResult(async () => {
55
+ const snapshot = await this.executable.get().then(firestoreData);
56
+ return new VectorQuerySnapshot(this, snapshot.docs, snapshot.readTime);
57
+ });
58
+ }
59
+ isEqual(other) {
60
+ return (other instanceof VectorQuery &&
61
+ this.executable.isEqual(other.executable));
62
+ }
63
+ async explain(options) {
64
+ return firestoreResult(async () => {
65
+ const result = await this.executable
66
+ .explain(options)
67
+ .then(firestoreData);
68
+ return {
69
+ metrics: result.metrics,
70
+ snapshot: result.snapshot
71
+ ? new VectorQuerySnapshot(this, result.snapshot.docs, result.snapshot.readTime)
72
+ : null
73
+ };
74
+ });
75
+ }
76
+ }
77
+ export class VectorQuerySnapshot {
78
+ query;
79
+ docs;
80
+ readTime;
81
+ size;
82
+ empty;
83
+ /** @internal Obtain from VectorQuery.get(). */
84
+ constructor(query, docs, readTime) {
85
+ this.query = query;
86
+ this.docs = docs;
87
+ this.readTime = readTime;
88
+ this.size = docs.length;
89
+ this.empty = !docs.length;
90
+ }
91
+ docChanges() {
92
+ return new QuerySnapshot(this.query.query, this.docs, this.readTime).docChanges();
93
+ }
94
+ forEach(callback, thisArg) {
95
+ if (typeof callback !== 'function')
96
+ throw new FirebaseEdgeError({
97
+ ...FirestoreErrorInfo.INVALID_ARGUMENT,
98
+ message: 'Expected a callback function.'
99
+ });
100
+ for (const doc of this.docs)
101
+ callback.call(thisArg, doc);
102
+ }
103
+ isEqual(other) {
104
+ return (other instanceof VectorQuerySnapshot &&
105
+ this.query.isEqual(other.query) &&
106
+ this.docs.length === other.docs.length &&
107
+ this.docs.every((doc, i) => doc.isEqual(other.docs[i])));
108
+ }
109
+ }
110
+ //# sourceMappingURL=vector-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector-query.js","sourceRoot":"","sources":["../../src/db/vector-query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare class VectorValue {
2
+ private readonly values;
3
+ /** Use FieldValue.vector(). */
4
+ constructor(values: number[]);
5
+ toArray(): number[];
6
+ isEqual(other: unknown): boolean;
7
+ }
8
+ //# sourceMappingURL=vector-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector-value.d.ts","sourceRoot":"","sources":["../../src/db/vector-value.ts"],"names":[],"mappings":"AAGA,qBAAa,WAAW;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,+BAA+B;gBACnB,MAAM,EAAE,MAAM,EAAE;IAc5B,OAAO,IAAI,MAAM,EAAE;IAGnB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;CAOnC"}
@@ -0,0 +1,25 @@
1
+ import { FirebaseEdgeError } from '../auth/errors.js';
2
+ import { FirestoreErrorInfo } from './firestore-error-codes.js';
3
+ export class VectorValue {
4
+ values;
5
+ /** Use FieldValue.vector(). */
6
+ constructor(values) {
7
+ if (!Array.isArray(values) ||
8
+ values.length > 2048 ||
9
+ Array.from(values).some((value) => typeof value !== 'number' || !Number.isFinite(value)))
10
+ throw new FirebaseEdgeError({
11
+ ...FirestoreErrorInfo.INVALID_ARGUMENT,
12
+ message: 'Vectors require at most 2048 finite numbers.'
13
+ });
14
+ this.values = Object.freeze([...values]);
15
+ }
16
+ toArray() {
17
+ return [...this.values];
18
+ }
19
+ isEqual(other) {
20
+ return (other instanceof VectorValue &&
21
+ this.values.length === other.values.length &&
22
+ this.values.every((value, i) => Object.is(value, other.values[i])));
23
+ }
24
+ }
25
+ //# sourceMappingURL=vector-value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector-value.js","sourceRoot":"","sources":["../../src/db/vector-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,MAAM,OAAO,WAAW;IACH,MAAM,CAAoB;IAC3C,+BAA+B;IAC/B,YAAY,MAAgB;QACxB,IACI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACtB,MAAM,CAAC,MAAM,GAAG,IAAI;YACpB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CACnB,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAClE;YAED,MAAM,IAAI,iBAAiB,CAAC;gBACxB,GAAG,kBAAkB,CAAC,gBAAgB;gBACtC,OAAO,EAAE,8CAA8C;aAC1D,CAAC,CAAC;QACP,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO;QACH,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,CAAC,KAAc;QAClB,OAAO,CACH,KAAK,YAAY,WAAW;YAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,MAAM;YAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CACrE,CAAC;IACN,CAAC;CACJ"}