firebase-admin 13.9.0 → 14.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 (281) hide show
  1. package/README.md +1 -2
  2. package/lib/app/core.d.ts +2 -38
  3. package/lib/app/core.js +1 -1
  4. package/lib/app/credential-factory.d.ts +1 -1
  5. package/lib/app/credential-factory.js +1 -1
  6. package/lib/app/credential-internal.d.ts +1 -1
  7. package/lib/app/credential-internal.js +48 -17
  8. package/lib/app/credential.d.ts +1 -1
  9. package/lib/app/credential.js +1 -1
  10. package/lib/app/error.d.ts +47 -0
  11. package/lib/app/error.js +57 -0
  12. package/lib/app/firebase-app.d.ts +1 -1
  13. package/lib/app/firebase-app.js +28 -12
  14. package/lib/app/index.d.ts +4 -3
  15. package/lib/app/index.js +6 -4
  16. package/lib/app/lifecycle.d.ts +2 -2
  17. package/lib/app/lifecycle.js +46 -21
  18. package/lib/app-check/app-check-api-client-internal.d.ts +2 -16
  19. package/lib/app-check/app-check-api-client-internal.js +71 -47
  20. package/lib/app-check/app-check-api.d.ts +19 -1
  21. package/lib/app-check/app-check-api.js +1 -1
  22. package/lib/app-check/app-check.d.ts +1 -1
  23. package/lib/app-check/app-check.js +7 -3
  24. package/lib/app-check/error.d.ts +47 -0
  25. package/lib/app-check/error.js +65 -0
  26. package/lib/app-check/index.d.ts +2 -1
  27. package/lib/app-check/index.js +5 -2
  28. package/lib/app-check/token-generator.d.ts +1 -1
  29. package/lib/app-check/token-generator.js +43 -13
  30. package/lib/app-check/token-verifier.d.ts +1 -1
  31. package/lib/app-check/token-verifier.js +39 -11
  32. package/lib/auth/action-code-settings-builder.d.ts +1 -1
  33. package/lib/auth/action-code-settings-builder.js +16 -16
  34. package/lib/auth/auth-api-request.d.ts +6 -4
  35. package/lib/auth/auth-api-request.js +277 -166
  36. package/lib/auth/auth-config.d.ts +31 -2
  37. package/lib/auth/auth-config.js +103 -103
  38. package/lib/auth/auth.d.ts +1 -1
  39. package/lib/auth/auth.js +1 -1
  40. package/lib/auth/base-auth.d.ts +2 -1
  41. package/lib/auth/base-auth.js +29 -27
  42. package/lib/auth/error.d.ts +137 -0
  43. package/lib/auth/error.js +690 -0
  44. package/lib/auth/identifier.d.ts +1 -1
  45. package/lib/auth/identifier.js +1 -1
  46. package/lib/auth/index.d.ts +2 -2
  47. package/lib/auth/index.js +4 -4
  48. package/lib/auth/project-config-manager.d.ts +1 -1
  49. package/lib/auth/project-config-manager.js +1 -1
  50. package/lib/auth/project-config.d.ts +1 -1
  51. package/lib/auth/project-config.js +4 -4
  52. package/lib/auth/tenant-manager.d.ts +2 -1
  53. package/lib/auth/tenant-manager.js +13 -10
  54. package/lib/auth/tenant.d.ts +1 -1
  55. package/lib/auth/tenant.js +7 -7
  56. package/lib/auth/token-generator.d.ts +1 -1
  57. package/lib/auth/token-generator.js +13 -13
  58. package/lib/auth/token-verifier.d.ts +1 -1
  59. package/lib/auth/token-verifier.js +22 -22
  60. package/lib/auth/user-import-builder.d.ts +1 -1
  61. package/lib/auth/user-import-builder.js +22 -22
  62. package/lib/auth/user-record.d.ts +1 -1
  63. package/lib/auth/user-record.js +6 -6
  64. package/lib/credential/index.d.ts +1 -1
  65. package/lib/credential/index.js +1 -1
  66. package/lib/data-connect/data-connect-api-client-internal.d.ts +1 -16
  67. package/lib/data-connect/data-connect-api-client-internal.js +122 -65
  68. package/lib/data-connect/data-connect-api.d.ts +1 -1
  69. package/lib/data-connect/data-connect-api.js +1 -1
  70. package/lib/data-connect/data-connect.d.ts +1 -1
  71. package/lib/data-connect/data-connect.js +1 -1
  72. package/lib/data-connect/error.d.ts +47 -0
  73. package/lib/data-connect/error.js +66 -0
  74. package/lib/data-connect/index.d.ts +2 -1
  75. package/lib/data-connect/index.js +5 -2
  76. package/lib/data-connect/validate-admin-args.d.ts +1 -1
  77. package/lib/data-connect/validate-admin-args.js +6 -3
  78. package/lib/database/database.d.ts +1 -1
  79. package/lib/database/database.js +11 -6
  80. package/lib/database/error.d.ts +39 -0
  81. package/lib/database/error.js +49 -0
  82. package/lib/database/index.d.ts +2 -2
  83. package/lib/database/index.js +4 -3
  84. package/lib/esm/app/index.js +2 -1
  85. package/lib/esm/app-check/index.js +2 -0
  86. package/lib/esm/auth/index.js +1 -1
  87. package/lib/esm/data-connect/index.js +2 -0
  88. package/lib/esm/database/index.js +1 -0
  89. package/lib/esm/eventarc/index.js +2 -0
  90. package/lib/esm/extensions/index.js +2 -0
  91. package/lib/esm/firebase-admin/index.js +13 -0
  92. package/lib/esm/firestore/index.js +1 -0
  93. package/lib/esm/functions/index.js +2 -0
  94. package/lib/esm/installations/index.js +1 -1
  95. package/lib/esm/machine-learning/index.js +2 -0
  96. package/lib/esm/messaging/index.js +1 -1
  97. package/lib/esm/phone-number-verification/index.js +2 -0
  98. package/lib/esm/project-management/index.js +1 -0
  99. package/lib/esm/remote-config/index.js +2 -0
  100. package/lib/esm/security-rules/index.js +2 -0
  101. package/lib/esm/storage/index.js +2 -0
  102. package/lib/eventarc/cloudevent.d.ts +1 -1
  103. package/lib/eventarc/cloudevent.js +1 -1
  104. package/lib/eventarc/error.d.ts +38 -0
  105. package/lib/eventarc/error.js +47 -0
  106. package/lib/eventarc/eventarc-client-internal.d.ts +1 -1
  107. package/lib/eventarc/eventarc-client-internal.js +24 -9
  108. package/lib/eventarc/eventarc-utils.d.ts +1 -13
  109. package/lib/eventarc/eventarc-utils.js +36 -26
  110. package/lib/eventarc/eventarc.d.ts +1 -1
  111. package/lib/eventarc/eventarc.js +18 -6
  112. package/lib/eventarc/index.d.ts +2 -1
  113. package/lib/eventarc/index.js +5 -2
  114. package/lib/extensions/error.d.ts +41 -0
  115. package/lib/extensions/error.js +50 -0
  116. package/lib/extensions/extensions-api-client-internal.d.ts +1 -13
  117. package/lib/extensions/extensions-api-client-internal.js +40 -28
  118. package/lib/extensions/extensions-api.d.ts +1 -1
  119. package/lib/extensions/extensions-api.js +1 -1
  120. package/lib/extensions/extensions.d.ts +1 -1
  121. package/lib/extensions/extensions.js +18 -5
  122. package/lib/extensions/index.d.ts +2 -1
  123. package/lib/extensions/index.js +5 -2
  124. package/lib/firestore/error.d.ts +41 -0
  125. package/lib/firestore/error.js +51 -0
  126. package/lib/firestore/firestore-internal.d.ts +2 -1
  127. package/lib/firestore/firestore-internal.js +6 -6
  128. package/lib/firestore/index.d.ts +2 -2
  129. package/lib/firestore/index.js +7 -7
  130. package/lib/functions/error.d.ts +48 -0
  131. package/lib/functions/error.js +67 -0
  132. package/lib/functions/functions-api-client-internal.d.ts +1 -16
  133. package/lib/functions/functions-api-client-internal.js +111 -71
  134. package/lib/functions/functions-api.d.ts +1 -1
  135. package/lib/functions/functions-api.js +1 -1
  136. package/lib/functions/functions.d.ts +1 -1
  137. package/lib/functions/functions.js +14 -4
  138. package/lib/functions/index.d.ts +2 -1
  139. package/lib/functions/index.js +5 -2
  140. package/lib/index.d.ts +13 -8
  141. package/lib/index.js +19 -3
  142. package/lib/installations/error.d.ts +48 -0
  143. package/lib/installations/error.js +73 -0
  144. package/lib/installations/index.d.ts +2 -2
  145. package/lib/installations/index.js +4 -4
  146. package/lib/installations/installations-request-handler.d.ts +1 -1
  147. package/lib/installations/installations-request-handler.js +11 -5
  148. package/lib/installations/installations.d.ts +1 -1
  149. package/lib/installations/installations.js +3 -3
  150. package/lib/machine-learning/error.d.ts +53 -0
  151. package/lib/machine-learning/error.js +84 -0
  152. package/lib/machine-learning/index.d.ts +2 -1
  153. package/lib/machine-learning/index.js +5 -2
  154. package/lib/machine-learning/machine-learning-api-client.d.ts +1 -1
  155. package/lib/machine-learning/machine-learning-api-client.js +61 -24
  156. package/lib/machine-learning/machine-learning.d.ts +1 -1
  157. package/lib/machine-learning/machine-learning.js +21 -9
  158. package/lib/messaging/error.d.ts +63 -0
  159. package/lib/messaging/error.js +286 -0
  160. package/lib/messaging/index.d.ts +3 -3
  161. package/lib/messaging/index.js +4 -4
  162. package/lib/messaging/messaging-api-request-internal.d.ts +1 -1
  163. package/lib/messaging/messaging-api-request-internal.js +1 -1
  164. package/lib/messaging/messaging-api.d.ts +1 -280
  165. package/lib/messaging/messaging-api.js +1 -1
  166. package/lib/messaging/messaging-errors-internal.d.ts +2 -2
  167. package/lib/messaging/messaging-errors-internal.js +11 -8
  168. package/lib/messaging/messaging-internal.d.ts +1 -1
  169. package/lib/messaging/messaging-internal.js +48 -48
  170. package/lib/messaging/messaging.d.ts +1 -1
  171. package/lib/messaging/messaging.js +47 -50
  172. package/lib/phone-number-verification/error.d.ts +43 -0
  173. package/lib/phone-number-verification/error.js +48 -0
  174. package/lib/phone-number-verification/index.d.ts +2 -1
  175. package/lib/phone-number-verification/index.js +5 -2
  176. package/lib/phone-number-verification/phone-number-verification-api-client-internal.d.ts +1 -18
  177. package/lib/phone-number-verification/phone-number-verification-api-client-internal.js +2 -26
  178. package/lib/phone-number-verification/phone-number-verification-api.d.ts +2 -2
  179. package/lib/phone-number-verification/phone-number-verification-api.js +5 -4
  180. package/lib/phone-number-verification/phone-number-verification.d.ts +1 -1
  181. package/lib/phone-number-verification/phone-number-verification.js +1 -1
  182. package/lib/phone-number-verification/token-verifier.d.ts +1 -1
  183. package/lib/phone-number-verification/token-verifier.js +68 -20
  184. package/lib/project-management/android-app.d.ts +1 -1
  185. package/lib/project-management/android-app.js +15 -6
  186. package/lib/project-management/app-metadata.d.ts +1 -1
  187. package/lib/project-management/app-metadata.js +1 -1
  188. package/lib/project-management/error.d.ts +45 -0
  189. package/lib/project-management/error.js +55 -0
  190. package/lib/project-management/index.d.ts +2 -2
  191. package/lib/project-management/index.js +4 -3
  192. package/lib/project-management/ios-app.d.ts +1 -1
  193. package/lib/project-management/ios-app.js +6 -3
  194. package/lib/project-management/project-management-api-request-internal.d.ts +1 -1
  195. package/lib/project-management/project-management-api-request-internal.js +18 -6
  196. package/lib/project-management/project-management.d.ts +1 -1
  197. package/lib/project-management/project-management.js +13 -7
  198. package/lib/remote-config/condition-evaluator-internal.d.ts +1 -1
  199. package/lib/remote-config/condition-evaluator-internal.js +4 -4
  200. package/lib/remote-config/error.d.ts +49 -0
  201. package/lib/remote-config/error.js +70 -0
  202. package/lib/remote-config/index.d.ts +2 -1
  203. package/lib/remote-config/index.js +5 -2
  204. package/lib/remote-config/internal/value-impl.d.ts +1 -1
  205. package/lib/remote-config/internal/value-impl.js +1 -1
  206. package/lib/remote-config/remote-config-api-client-internal.d.ts +2 -13
  207. package/lib/remote-config/remote-config-api-client-internal.js +80 -52
  208. package/lib/remote-config/remote-config-api.d.ts +1 -1
  209. package/lib/remote-config/remote-config-api.js +1 -1
  210. package/lib/remote-config/remote-config.d.ts +1 -1
  211. package/lib/remote-config/remote-config.js +92 -23
  212. package/lib/security-rules/error.d.ts +45 -0
  213. package/lib/security-rules/error.js +54 -0
  214. package/lib/security-rules/index.d.ts +2 -1
  215. package/lib/security-rules/index.js +5 -2
  216. package/lib/security-rules/security-rules-api-client-internal.d.ts +1 -1
  217. package/lib/security-rules/security-rules-api-client-internal.js +50 -18
  218. package/lib/security-rules/security-rules.d.ts +1 -1
  219. package/lib/security-rules/security-rules.js +32 -11
  220. package/lib/storage/error.d.ts +41 -0
  221. package/lib/storage/error.js +50 -0
  222. package/lib/storage/index.d.ts +2 -1
  223. package/lib/storage/index.js +8 -5
  224. package/lib/storage/storage.d.ts +1 -1
  225. package/lib/storage/storage.js +12 -12
  226. package/lib/storage/utils.d.ts +1 -1
  227. package/lib/storage/utils.js +1 -1
  228. package/lib/utils/api-request.d.ts +12 -12
  229. package/lib/utils/api-request.js +97 -55
  230. package/lib/utils/crypto-signer.d.ts +1 -1
  231. package/lib/utils/crypto-signer.js +2 -7
  232. package/lib/utils/deep-copy.d.ts +1 -1
  233. package/lib/utils/deep-copy.js +1 -1
  234. package/lib/utils/error.d.ts +75 -570
  235. package/lib/utils/error.js +53 -1047
  236. package/lib/utils/index.d.ts +1 -1
  237. package/lib/utils/index.js +2 -2
  238. package/lib/utils/jwt.d.ts +1 -1
  239. package/lib/utils/jwt.js +1 -2
  240. package/lib/utils/validator.d.ts +1 -1
  241. package/lib/utils/validator.js +1 -1
  242. package/package.json +25 -33
  243. package/lib/app/firebase-namespace.d.ts +0 -163
  244. package/lib/app/firebase-namespace.js +0 -335
  245. package/lib/app-check/app-check-namespace.d.ts +0 -72
  246. package/lib/app-check/app-check-namespace.js +0 -18
  247. package/lib/auth/auth-namespace.d.ts +0 -257
  248. package/lib/auth/auth-namespace.js +0 -18
  249. package/lib/database/database-namespace.d.ts +0 -95
  250. package/lib/database/database-namespace.js +0 -23
  251. package/lib/default-namespace.d.ts +0 -24
  252. package/lib/default-namespace.js +0 -30
  253. package/lib/esm/instance-id/index.js +0 -6
  254. package/lib/firebase-namespace-api.d.ts +0 -91
  255. package/lib/firebase-namespace-api.js +0 -58
  256. package/lib/firestore/firestore-namespace.d.ts +0 -71
  257. package/lib/firestore/firestore-namespace.js +0 -52
  258. package/lib/installations/installations-namespace.d.ts +0 -55
  259. package/lib/installations/installations-namespace.js +0 -18
  260. package/lib/instance-id/index.d.ts +0 -62
  261. package/lib/instance-id/index.js +0 -74
  262. package/lib/instance-id/instance-id-namespace.d.ts +0 -38
  263. package/lib/instance-id/instance-id-namespace.js +0 -3
  264. package/lib/instance-id/instance-id.d.ts +0 -47
  265. package/lib/instance-id/instance-id.js +0 -77
  266. package/lib/machine-learning/machine-learning-namespace.d.ts +0 -81
  267. package/lib/machine-learning/machine-learning-namespace.js +0 -18
  268. package/lib/machine-learning/machine-learning-utils.d.ts +0 -22
  269. package/lib/machine-learning/machine-learning-utils.js +0 -47
  270. package/lib/messaging/messaging-namespace.d.ts +0 -161
  271. package/lib/messaging/messaging-namespace.js +0 -18
  272. package/lib/project-management/project-management-namespace.d.ts +0 -82
  273. package/lib/project-management/project-management-namespace.js +0 -18
  274. package/lib/remote-config/remote-config-namespace.d.ts +0 -141
  275. package/lib/remote-config/remote-config-namespace.js +0 -18
  276. package/lib/security-rules/security-rules-internal.d.ts +0 -21
  277. package/lib/security-rules/security-rules-internal.js +0 -26
  278. package/lib/security-rules/security-rules-namespace.d.ts +0 -69
  279. package/lib/security-rules/security-rules-namespace.js +0 -18
  280. package/lib/storage/storage-namespace.d.ts +0 -45
  281. package/lib/storage/storage-namespace.js +0 -18
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.9.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  "use strict";
3
3
  /*!
4
4
  * Copyright 2018 Google LLC
@@ -21,7 +21,7 @@ exports.convertMultiFactorInfoToServerFormat = convertMultiFactorInfoToServerFor
21
21
  const deep_copy_1 = require("../utils/deep-copy");
22
22
  const utils = require("../utils");
23
23
  const validator = require("../utils/validator");
24
- const error_1 = require("../utils/error");
24
+ const error_1 = require("./error");
25
25
  /**
26
26
  * Converts a client format second factor object to server format.
27
27
  * @param multiFactorInfo - The client format second factor.
@@ -35,7 +35,7 @@ function convertMultiFactorInfoToServerFormat(multiFactorInfo) {
35
35
  enrolledAt = new Date(multiFactorInfo.enrollmentTime).toISOString();
36
36
  }
37
37
  else {
38
- throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.INVALID_ENROLLMENT_TIME, `The second factor "enrollmentTime" for "${multiFactorInfo.uid}" must be a valid ` +
38
+ throw new error_1.FirebaseAuthError(error_1.authClientErrorCode.INVALID_ENROLLMENT_TIME, `The second factor "enrollmentTime" for "${multiFactorInfo.uid}" must be a valid ` +
39
39
  'UTC date string.');
40
40
  }
41
41
  }
@@ -58,7 +58,7 @@ function convertMultiFactorInfoToServerFormat(multiFactorInfo) {
58
58
  }
59
59
  else {
60
60
  // Unsupported second factor.
61
- throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.UNSUPPORTED_SECOND_FACTOR, `Unsupported second factor "${JSON.stringify(multiFactorInfo)}" provided.`);
61
+ throw new error_1.FirebaseAuthError(error_1.authClientErrorCode.UNSUPPORTED_SECOND_FACTOR, `Unsupported second factor "${JSON.stringify(multiFactorInfo)}" provided.`);
62
62
  }
63
63
  }
64
64
  function isPhoneFactor(multiFactorInfo) {
@@ -98,13 +98,13 @@ function populateUploadAccountUser(user, userValidator) {
98
98
  };
99
99
  if (typeof user.passwordHash !== 'undefined') {
100
100
  if (!validator.isBuffer(user.passwordHash)) {
101
- throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.INVALID_PASSWORD_HASH);
101
+ throw new error_1.FirebaseAuthError(error_1.authClientErrorCode.INVALID_PASSWORD_HASH);
102
102
  }
103
103
  result.passwordHash = utils.toWebSafeBase64(user.passwordHash);
104
104
  }
105
105
  if (typeof user.passwordSalt !== 'undefined') {
106
106
  if (!validator.isBuffer(user.passwordSalt)) {
107
- throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.INVALID_PASSWORD_SALT);
107
+ throw new error_1.FirebaseAuthError(error_1.authClientErrorCode.INVALID_PASSWORD_SALT);
108
108
  }
109
109
  result.salt = utils.toWebSafeBase64(user.passwordSalt);
110
110
  }
@@ -203,7 +203,7 @@ class UserImportBuilder {
203
203
  importResult.errors.push({
204
204
  // Map backend request index to original developer provided array index.
205
205
  index: this.indexMap[failedUpload.index],
206
- error: new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.INVALID_USER_IMPORT, failedUpload.message),
206
+ error: new error_1.FirebaseAuthError(error_1.authClientErrorCode.INVALID_USER_IMPORT, failedUpload.message),
207
207
  });
208
208
  });
209
209
  // Sort errors by index.
@@ -226,14 +226,14 @@ class UserImportBuilder {
226
226
  return {};
227
227
  }
228
228
  if (!validator.isNonNullObject(options)) {
229
- throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.INVALID_ARGUMENT, '"UserImportOptions" are required when importing users with passwords.');
229
+ throw new error_1.FirebaseAuthError(error_1.authClientErrorCode.INVALID_ARGUMENT, '"UserImportOptions" are required when importing users with passwords.');
230
230
  }
231
231
  if (!validator.isNonNullObject(options.hash)) {
232
- throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.MISSING_HASH_ALGORITHM, '"hash.algorithm" is missing from the provided "UserImportOptions".');
232
+ throw new error_1.FirebaseAuthError(error_1.authClientErrorCode.MISSING_HASH_ALGORITHM, '"hash.algorithm" is missing from the provided "UserImportOptions".');
233
233
  }
234
234
  if (typeof options.hash.algorithm === 'undefined' ||
235
235
  !validator.isNonEmptyString(options.hash.algorithm)) {
236
- throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.INVALID_HASH_ALGORITHM, '"hash.algorithm" must be a string matching the list of supported algorithms.');
236
+ throw new error_1.FirebaseAuthError(error_1.authClientErrorCode.INVALID_HASH_ALGORITHM, '"hash.algorithm" must be a string matching the list of supported algorithms.');
237
237
  }
238
238
  let rounds;
239
239
  switch (options.hash.algorithm) {
@@ -242,7 +242,7 @@ class UserImportBuilder {
242
242
  case 'HMAC_SHA1':
243
243
  case 'HMAC_MD5':
244
244
  if (!validator.isBuffer(options.hash.key)) {
245
- throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.INVALID_HASH_KEY, 'A non-empty "hash.key" byte buffer must be provided for ' +
245
+ throw new error_1.FirebaseAuthError(error_1.authClientErrorCode.INVALID_HASH_KEY, 'A non-empty "hash.key" byte buffer must be provided for ' +
246
246
  `hash algorithm ${options.hash.algorithm}.`);
247
247
  }
248
248
  populatedOptions = {
@@ -258,7 +258,7 @@ class UserImportBuilder {
258
258
  rounds = getNumberField(options.hash, 'rounds');
259
259
  const minRounds = options.hash.algorithm === 'MD5' ? 0 : 1;
260
260
  if (isNaN(rounds) || rounds < minRounds || rounds > 8192) {
261
- throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.INVALID_HASH_ROUNDS, `A valid "hash.rounds" number between ${minRounds} and 8192 must be provided for ` +
261
+ throw new error_1.FirebaseAuthError(error_1.authClientErrorCode.INVALID_HASH_ROUNDS, `A valid "hash.rounds" number between ${minRounds} and 8192 must be provided for ` +
262
262
  `hash algorithm ${options.hash.algorithm}.`);
263
263
  }
264
264
  populatedOptions = {
@@ -271,7 +271,7 @@ class UserImportBuilder {
271
271
  case 'PBKDF2_SHA256':
272
272
  rounds = getNumberField(options.hash, 'rounds');
273
273
  if (isNaN(rounds) || rounds < 0 || rounds > 120000) {
274
- throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.INVALID_HASH_ROUNDS, 'A valid "hash.rounds" number between 0 and 120000 must be provided for ' +
274
+ throw new error_1.FirebaseAuthError(error_1.authClientErrorCode.INVALID_HASH_ROUNDS, 'A valid "hash.rounds" number between 0 and 120000 must be provided for ' +
275
275
  `hash algorithm ${options.hash.algorithm}.`);
276
276
  }
277
277
  populatedOptions = {
@@ -281,22 +281,22 @@ class UserImportBuilder {
281
281
  break;
282
282
  case 'SCRYPT': {
283
283
  if (!validator.isBuffer(options.hash.key)) {
284
- throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.INVALID_HASH_KEY, 'A "hash.key" byte buffer must be provided for ' +
284
+ throw new error_1.FirebaseAuthError(error_1.authClientErrorCode.INVALID_HASH_KEY, 'A "hash.key" byte buffer must be provided for ' +
285
285
  `hash algorithm ${options.hash.algorithm}.`);
286
286
  }
287
287
  rounds = getNumberField(options.hash, 'rounds');
288
288
  if (isNaN(rounds) || rounds <= 0 || rounds > 8) {
289
- throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.INVALID_HASH_ROUNDS, 'A valid "hash.rounds" number between 1 and 8 must be provided for ' +
289
+ throw new error_1.FirebaseAuthError(error_1.authClientErrorCode.INVALID_HASH_ROUNDS, 'A valid "hash.rounds" number between 1 and 8 must be provided for ' +
290
290
  `hash algorithm ${options.hash.algorithm}.`);
291
291
  }
292
292
  const memoryCost = getNumberField(options.hash, 'memoryCost');
293
293
  if (isNaN(memoryCost) || memoryCost <= 0 || memoryCost > 14) {
294
- throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.INVALID_HASH_MEMORY_COST, 'A valid "hash.memoryCost" number between 1 and 14 must be provided for ' +
294
+ throw new error_1.FirebaseAuthError(error_1.authClientErrorCode.INVALID_HASH_MEMORY_COST, 'A valid "hash.memoryCost" number between 1 and 14 must be provided for ' +
295
295
  `hash algorithm ${options.hash.algorithm}.`);
296
296
  }
297
297
  if (typeof options.hash.saltSeparator !== 'undefined' &&
298
298
  !validator.isBuffer(options.hash.saltSeparator)) {
299
- throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.INVALID_HASH_SALT_SEPARATOR, '"hash.saltSeparator" must be a byte buffer.');
299
+ throw new error_1.FirebaseAuthError(error_1.authClientErrorCode.INVALID_HASH_SALT_SEPARATOR, '"hash.saltSeparator" must be a byte buffer.');
300
300
  }
301
301
  populatedOptions = {
302
302
  hashAlgorithm: options.hash.algorithm,
@@ -315,22 +315,22 @@ class UserImportBuilder {
315
315
  case 'STANDARD_SCRYPT': {
316
316
  const cpuMemCost = getNumberField(options.hash, 'memoryCost');
317
317
  if (isNaN(cpuMemCost)) {
318
- throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.INVALID_HASH_MEMORY_COST, 'A valid "hash.memoryCost" number must be provided for ' +
318
+ throw new error_1.FirebaseAuthError(error_1.authClientErrorCode.INVALID_HASH_MEMORY_COST, 'A valid "hash.memoryCost" number must be provided for ' +
319
319
  `hash algorithm ${options.hash.algorithm}.`);
320
320
  }
321
321
  const parallelization = getNumberField(options.hash, 'parallelization');
322
322
  if (isNaN(parallelization)) {
323
- throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.INVALID_HASH_PARALLELIZATION, 'A valid "hash.parallelization" number must be provided for ' +
323
+ throw new error_1.FirebaseAuthError(error_1.authClientErrorCode.INVALID_HASH_PARALLELIZATION, 'A valid "hash.parallelization" number must be provided for ' +
324
324
  `hash algorithm ${options.hash.algorithm}.`);
325
325
  }
326
326
  const blockSize = getNumberField(options.hash, 'blockSize');
327
327
  if (isNaN(blockSize)) {
328
- throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.INVALID_HASH_BLOCK_SIZE, 'A valid "hash.blockSize" number must be provided for ' +
328
+ throw new error_1.FirebaseAuthError(error_1.authClientErrorCode.INVALID_HASH_BLOCK_SIZE, 'A valid "hash.blockSize" number must be provided for ' +
329
329
  `hash algorithm ${options.hash.algorithm}.`);
330
330
  }
331
331
  const dkLen = getNumberField(options.hash, 'derivedKeyLength');
332
332
  if (isNaN(dkLen)) {
333
- throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.INVALID_HASH_DERIVED_KEY_LENGTH, 'A valid "hash.derivedKeyLength" number must be provided for ' +
333
+ throw new error_1.FirebaseAuthError(error_1.authClientErrorCode.INVALID_HASH_DERIVED_KEY_LENGTH, 'A valid "hash.derivedKeyLength" number must be provided for ' +
334
334
  `hash algorithm ${options.hash.algorithm}.`);
335
335
  }
336
336
  populatedOptions = {
@@ -343,7 +343,7 @@ class UserImportBuilder {
343
343
  break;
344
344
  }
345
345
  default:
346
- throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.INVALID_HASH_ALGORITHM, `Unsupported hash algorithm provider "${options.hash.algorithm}".`);
346
+ throw new error_1.FirebaseAuthError(error_1.authClientErrorCode.INVALID_HASH_ALGORITHM, `Unsupported hash algorithm provider "${options.hash.algorithm}".`);
347
347
  }
348
348
  return populatedOptions;
349
349
  }
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.9.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  /*!
3
3
  * @license
4
4
  * Copyright 2017 Google LLC
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.9.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  "use strict";
3
3
  /*!
4
4
  * @license
@@ -21,7 +21,7 @@ exports.UserRecord = exports.UserInfo = exports.UserMetadata = exports.MultiFact
21
21
  const deep_copy_1 = require("../utils/deep-copy");
22
22
  const validator_1 = require("../utils/validator");
23
23
  const utils = require("../utils");
24
- const error_1 = require("../utils/error");
24
+ const error_1 = require("./error");
25
25
  /**
26
26
  * 'REDACTED', encoded as a base64 string.
27
27
  */
@@ -110,7 +110,7 @@ class MultiFactorInfo {
110
110
  initFromServerResponse(response) {
111
111
  const factorId = response && this.getFactorId(response);
112
112
  if (!factorId || !response || !response.mfaEnrollmentId) {
113
- throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.INTERNAL_ERROR, 'INTERNAL ASSERT FAILED: Invalid multi-factor info response');
113
+ throw new error_1.FirebaseAuthError(error_1.authClientErrorCode.INTERNAL_ERROR, 'INTERNAL ASSERT FAILED: Invalid multi-factor info response');
114
114
  }
115
115
  utils.addReadonlyGetter(this, 'uid', response.mfaEnrollmentId);
116
116
  utils.addReadonlyGetter(this, 'factorId', factorId);
@@ -222,7 +222,7 @@ class MultiFactorSettings {
222
222
  constructor(response) {
223
223
  const parsedEnrolledFactors = [];
224
224
  if (!(0, validator_1.isNonNullObject)(response)) {
225
- throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.INTERNAL_ERROR, 'INTERNAL ASSERT FAILED: Invalid multi-factor response');
225
+ throw new error_1.FirebaseAuthError(error_1.authClientErrorCode.INTERNAL_ERROR, 'INTERNAL ASSERT FAILED: Invalid multi-factor response');
226
226
  }
227
227
  else if (response.mfaInfo) {
228
228
  response.mfaInfo.forEach((factorResponse) => {
@@ -295,7 +295,7 @@ class UserInfo {
295
295
  constructor(response) {
296
296
  // Provider user id and provider id are required.
297
297
  if (!response.rawId || !response.providerId) {
298
- throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.INTERNAL_ERROR, 'INTERNAL ASSERT FAILED: Invalid user info response');
298
+ throw new error_1.FirebaseAuthError(error_1.authClientErrorCode.INTERNAL_ERROR, 'INTERNAL ASSERT FAILED: Invalid user info response');
299
299
  }
300
300
  utils.addReadonlyGetter(this, 'uid', response.rawId);
301
301
  utils.addReadonlyGetter(this, 'displayName', response.displayName);
@@ -334,7 +334,7 @@ class UserRecord {
334
334
  constructor(response) {
335
335
  // The Firebase user id is required.
336
336
  if (!response.localId) {
337
- throw new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.INTERNAL_ERROR, 'INTERNAL ASSERT FAILED: Invalid user response');
337
+ throw new error_1.FirebaseAuthError(error_1.authClientErrorCode.INTERNAL_ERROR, 'INTERNAL ASSERT FAILED: Invalid user response');
338
338
  }
339
339
  utils.addReadonlyGetter(this, 'uid', response.localId);
340
340
  utils.addReadonlyGetter(this, 'email', response.email);
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.9.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  /*!
3
3
  * Copyright 2020 Google LLC
4
4
  *
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.9.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  "use strict";
3
3
  /*!
4
4
  * Copyright 2020 Google LLC
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.9.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  /*!
3
3
  * @license
4
4
  * Copyright 2024 Google LLC
@@ -15,23 +15,8 @@
15
15
  * See the License for the specific language governing permissions and
16
16
  * limitations under the License.
17
17
  */
18
- import { PrefixedFirebaseError } from '../utils/error';
19
18
  /**
20
19
  * When true the SDK should communicate with the Data Connect Emulator for all API
21
20
  * calls and also produce unsigned tokens.
22
21
  */
23
22
  export declare function useEmulator(): boolean;
24
- export declare const DATA_CONNECT_ERROR_CODE_MAPPING: {
25
- [key: string]: DataConnectErrorCode;
26
- };
27
- export type DataConnectErrorCode = 'aborted' | 'invalid-argument' | 'invalid-credential' | 'internal-error' | 'permission-denied' | 'unauthenticated' | 'not-found' | 'unknown-error' | 'query-error';
28
- /**
29
- * Firebase Data Connect error code structure. This extends PrefixedFirebaseError.
30
- *
31
- * @param code - The error code.
32
- * @param message - The error message.
33
- * @constructor
34
- */
35
- export declare class FirebaseDataConnectError extends PrefixedFirebaseError {
36
- constructor(code: DataConnectErrorCode, message: string);
37
- }
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.9.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  "use strict";
3
3
  /*!
4
4
  * @license
@@ -17,10 +17,11 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.FirebaseDataConnectError = exports.DATA_CONNECT_ERROR_CODE_MAPPING = exports.DataConnectApiClient = void 0;
20
+ exports.DataConnectApiClient = void 0;
21
21
  exports.useEmulator = useEmulator;
22
22
  const api_request_1 = require("../utils/api-request");
23
23
  const error_1 = require("../utils/error");
24
+ const error_2 = require("./error");
24
25
  const utils = require("../utils/index");
25
26
  const validator = require("../utils/validator");
26
27
  const API_VERSION = 'v1';
@@ -69,7 +70,10 @@ class DataConnectApiClient {
69
70
  this.app = app;
70
71
  this.isUsingGen = false;
71
72
  if (!validator.isNonNullObject(app) || !('options' in app)) {
72
- throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, 'First argument passed to getDataConnect() must be a valid Firebase app instance.');
73
+ throw new error_2.FirebaseDataConnectError({
74
+ code: error_2.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT,
75
+ message: 'First argument passed to getDataConnect() must be a valid Firebase app instance.'
76
+ });
73
77
  }
74
78
  this.httpClient = new DataConnectHttpClient(app);
75
79
  }
@@ -111,11 +115,17 @@ class DataConnectApiClient {
111
115
  */
112
116
  async executeGraphqlHelper(query, endpoint, options) {
113
117
  if (!validator.isNonEmptyString(query)) {
114
- throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, '`query` must be a non-empty string.');
118
+ throw new error_2.FirebaseDataConnectError({
119
+ code: error_2.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT,
120
+ message: '`query` must be a non-empty string.'
121
+ });
115
122
  }
116
123
  if (typeof options !== 'undefined') {
117
124
  if (!validator.isNonNullObject(options)) {
118
- throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, 'GraphqlOptions must be a non-null object');
125
+ throw new error_2.FirebaseDataConnectError({
126
+ code: error_2.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT,
127
+ message: 'GraphqlOptions must be a non-null object'
128
+ });
119
129
  }
120
130
  }
121
131
  const data = {
@@ -162,11 +172,17 @@ class DataConnectApiClient {
162
172
  async executeOperationHelper(endpoint, name, variables, options) {
163
173
  if (typeof name === 'undefined' ||
164
174
  !validator.isNonEmptyString(name)) {
165
- throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, '`name` must be a non-empty string.');
175
+ throw new error_2.FirebaseDataConnectError({
176
+ code: error_2.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT,
177
+ message: '`name` must be a non-empty string.'
178
+ });
166
179
  }
167
180
  if (this.connectorConfig.connector === undefined || this.connectorConfig.connector === '') {
168
- throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, `The 'connectorConfig.connector' field used to instantiate your Data Connect
169
- instance must be a non-empty string (the connectorId) when calling executeQuery or executeMutation.`);
181
+ throw new error_2.FirebaseDataConnectError({
182
+ code: error_2.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT,
183
+ message: `The 'connectorConfig.connector' field used to instantiate your Data Connect
184
+ instance must be a non-empty string (the connectorId) when calling executeQuery or executeMutation.`
185
+ });
170
186
  }
171
187
  const data = {
172
188
  ...(variables && { variables: variables }),
@@ -242,9 +258,12 @@ class DataConnectApiClient {
242
258
  return utils.findProjectId(this.app)
243
259
  .then((projectId) => {
244
260
  if (!validator.isNonEmptyString(projectId)) {
245
- throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.UNKNOWN, 'Failed to determine project ID. Initialize the '
246
- + 'SDK with service account credentials or set project ID as an app option. '
247
- + 'Alternatively, set the GOOGLE_CLOUD_PROJECT environment variable.');
261
+ throw new error_2.FirebaseDataConnectError({
262
+ code: error_2.DATA_CONNECT_ERROR_CODE_MAPPING.UNKNOWN,
263
+ message: 'Failed to determine project ID. Initialize the '
264
+ + 'SDK with service account credentials or set project ID as an app option. '
265
+ + 'Alternatively, set the GOOGLE_CLOUD_PROJECT environment variable.'
266
+ });
248
267
  }
249
268
  this.projectId = projectId;
250
269
  return projectId;
@@ -267,27 +286,41 @@ class DataConnectApiClient {
267
286
  const resp = await this.httpClient.send(request);
268
287
  if (resp.data.errors && validator.isNonEmptyArray(resp.data.errors)) {
269
288
  const allMessages = resp.data.errors.map((error) => error.message).join(' ');
270
- throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.QUERY_ERROR, allMessages);
289
+ throw new error_2.FirebaseDataConnectError({
290
+ code: error_2.DATA_CONNECT_ERROR_CODE_MAPPING.QUERY_ERROR,
291
+ message: allMessages,
292
+ httpResponse: (0, error_1.toHttpResponse)(resp),
293
+ });
271
294
  }
272
295
  return Promise.resolve({
273
296
  data: resp.data.data,
274
297
  });
275
298
  }
276
299
  toFirebaseError(err) {
277
- if (err instanceof error_1.PrefixedFirebaseError) {
300
+ if (err instanceof error_1.FirebaseError) {
278
301
  return err;
279
302
  }
280
303
  const response = err.response;
281
304
  if (!response.isJson()) {
282
- return new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.UNKNOWN, `Unexpected response with status: ${response.status} and body: ${response.text}`);
305
+ return new error_2.FirebaseDataConnectError({
306
+ code: error_2.DATA_CONNECT_ERROR_CODE_MAPPING.UNKNOWN,
307
+ message: `Unexpected response with status: ${response.status} and body: ${response.text}`,
308
+ httpResponse: (0, error_1.toHttpResponse)(response),
309
+ cause: err
310
+ });
283
311
  }
284
312
  const error = response.data.error || {};
285
- let code = exports.DATA_CONNECT_ERROR_CODE_MAPPING.UNKNOWN;
286
- if (error.status && error.status in exports.DATA_CONNECT_ERROR_CODE_MAPPING) {
287
- code = exports.DATA_CONNECT_ERROR_CODE_MAPPING[error.status];
288
- }
289
- const message = error.message || `Unknown server error: ${response.text}`;
290
- return new FirebaseDataConnectError(code, message);
313
+ let code = error_2.DATA_CONNECT_ERROR_CODE_MAPPING.UNKNOWN;
314
+ if (error.status && error.status in error_2.DATA_CONNECT_ERROR_CODE_MAPPING) {
315
+ code = error_2.DATA_CONNECT_ERROR_CODE_MAPPING[error.status];
316
+ }
317
+ const message = error.message || 'Unknown server error';
318
+ return new error_2.FirebaseDataConnectError({
319
+ code,
320
+ message,
321
+ httpResponse: (0, error_1.toHttpResponse)(response),
322
+ cause: err,
323
+ });
291
324
  }
292
325
  /**
293
326
  * Converts JSON data into a GraphQL literal string.
@@ -337,8 +370,13 @@ class DataConnectApiClient {
337
370
  return tableName;
338
371
  }
339
372
  handleBulkImportErrors(err) {
340
- if (err.code === `data-connect/${exports.DATA_CONNECT_ERROR_CODE_MAPPING.QUERY_ERROR}`) {
341
- throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.QUERY_ERROR, `${err.message}. Make sure that your table name passed in matches the type name in your GraphQL schema file.`);
373
+ if (err.code === `data-connect/${error_2.DATA_CONNECT_ERROR_CODE_MAPPING.QUERY_ERROR}`) {
374
+ throw new error_2.FirebaseDataConnectError({
375
+ code: error_2.DATA_CONNECT_ERROR_CODE_MAPPING.QUERY_ERROR,
376
+ message: `${err.message}. Make sure that your table name passed in matches the type name in your `
377
+ + 'GraphQL schema file.',
378
+ cause: err,
379
+ });
342
380
  }
343
381
  throw err;
344
382
  }
@@ -347,13 +385,23 @@ class DataConnectApiClient {
347
385
  */
348
386
  async insert(tableName, data) {
349
387
  if (!validator.isNonEmptyString(tableName)) {
350
- throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, '`tableName` must be a non-empty string.');
388
+ throw new error_2.FirebaseDataConnectError({
389
+ code: error_2.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT,
390
+ message: '`tableName` must be a non-empty string.'
391
+ });
351
392
  }
352
393
  if (validator.isArray(data)) {
353
- throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, '`data` must be an object, not an array, for single insert. For arrays, please use `insertMany` function.');
394
+ throw new error_2.FirebaseDataConnectError({
395
+ code: error_2.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT,
396
+ message: '`data` must be an object, not an array, for single insert. For arrays, please use '
397
+ + '`insertMany` function.'
398
+ });
354
399
  }
355
400
  if (!validator.isNonNullObject(data)) {
356
- throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, '`data` must be a non-null object.');
401
+ throw new error_2.FirebaseDataConnectError({
402
+ code: error_2.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT,
403
+ message: '`data` must be a non-null object.'
404
+ });
357
405
  }
358
406
  try {
359
407
  tableName = this.formatTableName(tableName);
@@ -363,7 +411,11 @@ class DataConnectApiClient {
363
411
  return this.executeGraphql(mutation).catch(this.handleBulkImportErrors);
364
412
  }
365
413
  catch (e) {
366
- throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INTERNAL, `Failed to construct insert mutation: ${e.message}`);
414
+ throw new error_2.FirebaseDataConnectError({
415
+ code: error_2.DATA_CONNECT_ERROR_CODE_MAPPING.INTERNAL,
416
+ message: `Failed to construct insert mutation: ${e.message}`,
417
+ cause: e,
418
+ });
367
419
  }
368
420
  }
369
421
  /**
@@ -371,10 +423,16 @@ class DataConnectApiClient {
371
423
  */
372
424
  async insertMany(tableName, data) {
373
425
  if (!validator.isNonEmptyString(tableName)) {
374
- throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, '`tableName` must be a non-empty string.');
426
+ throw new error_2.FirebaseDataConnectError({
427
+ code: error_2.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT,
428
+ message: '`tableName` must be a non-empty string.'
429
+ });
375
430
  }
376
431
  if (!validator.isNonEmptyArray(data)) {
377
- throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, '`data` must be a non-empty array for insertMany.');
432
+ throw new error_2.FirebaseDataConnectError({
433
+ code: error_2.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT,
434
+ message: '`data` must be a non-empty array for insertMany.',
435
+ });
378
436
  }
379
437
  try {
380
438
  tableName = this.formatTableName(tableName);
@@ -384,7 +442,11 @@ class DataConnectApiClient {
384
442
  return this.executeGraphql(mutation).catch(this.handleBulkImportErrors);
385
443
  }
386
444
  catch (e) {
387
- throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INTERNAL, `Failed to construct insertMany mutation: ${e.message}`);
445
+ throw new error_2.FirebaseDataConnectError({
446
+ code: error_2.DATA_CONNECT_ERROR_CODE_MAPPING.INTERNAL,
447
+ message: `Failed to construct insertMany mutation: ${e.message}`,
448
+ cause: e,
449
+ });
388
450
  }
389
451
  }
390
452
  /**
@@ -392,13 +454,23 @@ class DataConnectApiClient {
392
454
  */
393
455
  async upsert(tableName, data) {
394
456
  if (!validator.isNonEmptyString(tableName)) {
395
- throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, '`tableName` must be a non-empty string.');
457
+ throw new error_2.FirebaseDataConnectError({
458
+ code: error_2.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT,
459
+ message: '`tableName` must be a non-empty string.'
460
+ });
396
461
  }
397
462
  if (validator.isArray(data)) {
398
- throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, '`data` must be an object, not an array, for single upsert. For arrays, please use `upsertMany` function.');
463
+ throw new error_2.FirebaseDataConnectError({
464
+ code: error_2.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT,
465
+ message: '`data` must be an object, not an array, for single upsert. For arrays, please use '
466
+ + '`upsertMany` function.'
467
+ });
399
468
  }
400
469
  if (!validator.isNonNullObject(data)) {
401
- throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, '`data` must be a non-null object.');
470
+ throw new error_2.FirebaseDataConnectError({
471
+ code: error_2.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT,
472
+ message: '`data` must be a non-null object.'
473
+ });
402
474
  }
403
475
  try {
404
476
  tableName = this.formatTableName(tableName);
@@ -408,7 +480,11 @@ class DataConnectApiClient {
408
480
  return this.executeGraphql(mutation).catch(this.handleBulkImportErrors);
409
481
  }
410
482
  catch (e) {
411
- throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INTERNAL, `Failed to construct upsert mutation: ${e.message}`);
483
+ throw new error_2.FirebaseDataConnectError({
484
+ code: error_2.DATA_CONNECT_ERROR_CODE_MAPPING.INTERNAL,
485
+ message: `Failed to construct upsert mutation: ${e.message}`,
486
+ cause: e,
487
+ });
412
488
  }
413
489
  }
414
490
  /**
@@ -416,10 +492,16 @@ class DataConnectApiClient {
416
492
  */
417
493
  async upsertMany(tableName, data) {
418
494
  if (!validator.isNonEmptyString(tableName)) {
419
- throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, '`tableName` must be a non-empty string.');
495
+ throw new error_2.FirebaseDataConnectError({
496
+ code: error_2.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT,
497
+ message: '`tableName` must be a non-empty string.'
498
+ });
420
499
  }
421
500
  if (!validator.isNonEmptyArray(data)) {
422
- throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT, '`data` must be a non-empty array for upsertMany.');
501
+ throw new error_2.FirebaseDataConnectError({
502
+ code: error_2.DATA_CONNECT_ERROR_CODE_MAPPING.INVALID_ARGUMENT,
503
+ message: '`data` must be a non-empty array for upsertMany.'
504
+ });
423
505
  }
424
506
  try {
425
507
  tableName = this.formatTableName(tableName);
@@ -429,7 +511,11 @@ class DataConnectApiClient {
429
511
  return this.executeGraphql(mutation).catch(this.handleBulkImportErrors);
430
512
  }
431
513
  catch (e) {
432
- throw new FirebaseDataConnectError(exports.DATA_CONNECT_ERROR_CODE_MAPPING.INTERNAL, `Failed to construct upsertMany mutation: ${e.message}`);
514
+ throw new error_2.FirebaseDataConnectError({
515
+ code: error_2.DATA_CONNECT_ERROR_CODE_MAPPING.INTERNAL,
516
+ message: `Failed to construct upsertMany mutation: ${e.message}`,
517
+ cause: e,
518
+ });
433
519
  }
434
520
  }
435
521
  }
@@ -456,32 +542,3 @@ function emulatorHost() {
456
542
  function useEmulator() {
457
543
  return !!emulatorHost();
458
544
  }
459
- exports.DATA_CONNECT_ERROR_CODE_MAPPING = {
460
- ABORTED: 'aborted',
461
- INVALID_ARGUMENT: 'invalid-argument',
462
- INVALID_CREDENTIAL: 'invalid-credential',
463
- INTERNAL: 'internal-error',
464
- PERMISSION_DENIED: 'permission-denied',
465
- UNAUTHENTICATED: 'unauthenticated',
466
- NOT_FOUND: 'not-found',
467
- UNKNOWN: 'unknown-error',
468
- QUERY_ERROR: 'query-error',
469
- };
470
- /**
471
- * Firebase Data Connect error code structure. This extends PrefixedFirebaseError.
472
- *
473
- * @param code - The error code.
474
- * @param message - The error message.
475
- * @constructor
476
- */
477
- class FirebaseDataConnectError extends error_1.PrefixedFirebaseError {
478
- constructor(code, message) {
479
- super('data-connect', code, message);
480
- /* tslint:disable:max-line-length */
481
- // Set the prototype explicitly. See the following link for more details:
482
- // https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
483
- /* tslint:enable:max-line-length */
484
- this.__proto__ = FirebaseDataConnectError.prototype;
485
- }
486
- }
487
- exports.FirebaseDataConnectError = FirebaseDataConnectError;
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.9.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  /*!
3
3
  * @license
4
4
  * Copyright 2024 Google LLC
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.9.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  "use strict";
3
3
  /*!
4
4
  * @license
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.9.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  /*!
3
3
  * @license
4
4
  * Copyright 2024 Google LLC
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.9.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  "use strict";
3
3
  /*!
4
4
  * @license