firebase-admin 13.10.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 +45 -14
  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 +57 -48
  20. package/lib/app-check/app-check-api.d.ts +1 -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 +6 -2
  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 +34 -24
  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 +2 -2
  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 +24 -29
  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.10.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  "use strict";
3
3
  /*!
4
4
  * Copyright 2018 Google LLC
@@ -19,7 +19,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
19
19
  exports.ProjectManagementRequestHandler = void 0;
20
20
  exports.assertServerResponse = assertServerResponse;
21
21
  const api_request_1 = require("../utils/api-request");
22
- const error_1 = require("../utils/error");
22
+ const error_1 = require("./error");
23
+ const error_2 = require("../utils/error");
23
24
  const index_1 = require("../utils/index");
24
25
  const validator = require("../utils/validator");
25
26
  /** Project management backend host and port. */
@@ -41,7 +42,10 @@ const CERT_TYPE_API_MAP = {
41
42
  };
42
43
  function assertServerResponse(condition, responseData, message) {
43
44
  if (!condition) {
44
- throw new error_1.FirebaseProjectManagementError('invalid-server-response', `${message} Response data: ${JSON.stringify(responseData, null, 2)}`);
45
+ throw new error_1.FirebaseProjectManagementError({
46
+ code: 'invalid-server-response',
47
+ message: `${message} Response data: ${JSON.stringify(responseData, null, 2)}`
48
+ });
45
49
  }
46
50
  }
47
51
  /**
@@ -51,7 +55,7 @@ function assertServerResponse(condition, responseData, message) {
51
55
  * @internal
52
56
  */
53
57
  class ProjectManagementRequestHandler {
54
- static wrapAndRethrowHttpError(errStatusCode, errText) {
58
+ static wrapAndRethrowHttpError(errStatusCode, errText, httpResponse) {
55
59
  let errorCode;
56
60
  let errorMessage;
57
61
  switch (errStatusCode) {
@@ -90,7 +94,15 @@ class ProjectManagementRequestHandler {
90
94
  if (!errText) {
91
95
  errText = '<missing>';
92
96
  }
93
- throw new error_1.FirebaseProjectManagementError(errorCode, `${errorMessage} Status code: ${errStatusCode}. Raw server response: "${errText}".`);
97
+ throw new error_1.FirebaseProjectManagementError({
98
+ code: errorCode,
99
+ message: errorMessage,
100
+ httpResponse: httpResponse || {
101
+ status: errStatusCode,
102
+ headers: {},
103
+ data: errText,
104
+ },
105
+ });
94
106
  }
95
107
  /**
96
108
  * @param app - The app used to fetch access tokens to sign API requests.
@@ -259,7 +271,7 @@ class ProjectManagementRequestHandler {
259
271
  })
260
272
  .catch((err) => {
261
273
  if (err instanceof api_request_1.RequestResponseError) {
262
- ProjectManagementRequestHandler.wrapAndRethrowHttpError(err.response.status, err.response.text);
274
+ ProjectManagementRequestHandler.wrapAndRethrowHttpError(err.response.status, err.response.text, (0, error_2.toHttpResponse)(err.response));
263
275
  }
264
276
  throw err;
265
277
  });
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.10.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  /*!
3
3
  * Copyright 2018 Google LLC
4
4
  *
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.10.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  "use strict";
3
3
  /*!
4
4
  * Copyright 2018 Google LLC
@@ -17,7 +17,7 @@
17
17
  */
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
19
  exports.ProjectManagement = void 0;
20
- const error_1 = require("../utils/error");
20
+ const error_1 = require("./error");
21
21
  const utils = require("../utils/index");
22
22
  const validator = require("../utils/validator");
23
23
  const android_app_1 = require("./android-app");
@@ -36,8 +36,11 @@ class ProjectManagement {
36
36
  constructor(app) {
37
37
  this.app = app;
38
38
  if (!validator.isNonNullObject(app) || !('options' in app)) {
39
- throw new error_1.FirebaseProjectManagementError('invalid-argument', 'First argument passed to admin.projectManagement() must be a valid Firebase app '
40
- + 'instance.');
39
+ throw new error_1.FirebaseProjectManagementError({
40
+ code: 'invalid-argument',
41
+ message: 'First argument passed to admin.projectManagement() must be a valid Firebase app '
42
+ + 'instance.'
43
+ });
41
44
  }
42
45
  this.requestHandler = new project_management_api_request_internal_1.ProjectManagementRequestHandler(app);
43
46
  }
@@ -200,9 +203,12 @@ class ProjectManagement {
200
203
  .then((projectId) => {
201
204
  // Assert that a specific project ID was provided within the app.
202
205
  if (!validator.isNonEmptyString(projectId)) {
203
- throw new error_1.FirebaseProjectManagementError('invalid-project-id', 'Failed to determine project ID. Initialize the SDK with service account credentials, or '
204
- + 'set project ID as an app option. Alternatively, set the GOOGLE_CLOUD_PROJECT '
205
- + 'environment variable.');
206
+ throw new error_1.FirebaseProjectManagementError({
207
+ code: 'invalid-project-id',
208
+ message: 'Failed to determine project ID. Initialize the SDK with service account credentials, or '
209
+ + 'set project ID as an app option. Alternatively, set the GOOGLE_CLOUD_PROJECT '
210
+ + 'environment variable.'
211
+ });
206
212
  }
207
213
  this.projectId = projectId;
208
214
  return this.projectId;
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.10.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  /*!
3
3
  * Copyright 2024 Google LLC
4
4
  *
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.10.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  /*!
3
3
  * Copyright 2024 Google LLC
4
4
  *
@@ -105,7 +105,7 @@ class ConditionEvaluator {
105
105
  const seedPrefix = seed && seed.length > 0 ? `${seed}.` : '';
106
106
  const stringToHash = `${seedPrefix}${context.randomizationId}`;
107
107
  const hash = ConditionEvaluator.hashSeededRandomizationId(stringToHash);
108
- const instanceMicroPercentile = hash % BigInt(100 * 1000000);
108
+ const instanceMicroPercentile = hash % BigInt(100 * 1_000_000);
109
109
  switch (percentOperator) {
110
110
  case remote_config_api_1.PercentConditionOperator.LESS_OR_EQUAL:
111
111
  return instanceMicroPercentile <= normalizedMicroPercent;
@@ -0,0 +1,49 @@
1
+ /*! firebase-admin v14.0.0 */
2
+ /*!
3
+ * Copyright 2026 Google LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { FirebaseError, ErrorInfo } from '../utils/error';
18
+ /** @const {Record<string, RemoteConfigErrorCode>} Remote Config server to client error code mapping. */
19
+ export declare const ERROR_CODE_MAPPING: Record<string, RemoteConfigErrorCode>;
20
+ /**
21
+ * The constant mapping for valid Remote Config client error codes.
22
+ */
23
+ export declare const RemoteConfigErrorCode: {
24
+ readonly ABORTED: "aborted";
25
+ readonly ALREADY_EXISTS: "already-exists";
26
+ readonly FAILED_PRECONDITION: "failed-precondition";
27
+ readonly INTERNAL_ERROR: "internal-error";
28
+ readonly INVALID_ARGUMENT: "invalid-argument";
29
+ readonly NOT_FOUND: "not-found";
30
+ readonly OUT_OF_RANGE: "out-of-range";
31
+ readonly PERMISSION_DENIED: "permission-denied";
32
+ readonly RESOURCE_EXHAUSTED: "resource-exhausted";
33
+ readonly UNAUTHENTICATED: "unauthenticated";
34
+ readonly UNKNOWN_ERROR: "unknown-error";
35
+ };
36
+ /**
37
+ * The type definition for valid Remote Config client error codes.
38
+ */
39
+ export type RemoteConfigErrorCode = typeof RemoteConfigErrorCode[keyof typeof RemoteConfigErrorCode];
40
+ /**
41
+ * Firebase Remote Config error code structure. This extends `FirebaseError`.
42
+ */
43
+ export declare class FirebaseRemoteConfigError extends FirebaseError {
44
+ /**
45
+ * @param info - The error code info.
46
+ * @param message - The error message. If provided, this will override the default message.
47
+ */
48
+ constructor(info: ErrorInfo, message?: string);
49
+ }
@@ -0,0 +1,70 @@
1
+ /*! firebase-admin v14.0.0 */
2
+ "use strict";
3
+ /*!
4
+ * Copyright 2026 Google LLC
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.FirebaseRemoteConfigError = exports.RemoteConfigErrorCode = exports.ERROR_CODE_MAPPING = void 0;
20
+ const error_1 = require("../utils/error");
21
+ /** @const {Record<string, RemoteConfigErrorCode>} Remote Config server to client error code mapping. */
22
+ exports.ERROR_CODE_MAPPING = {
23
+ ABORTED: 'aborted',
24
+ ALREADY_EXISTS: 'already-exists',
25
+ INVALID_ARGUMENT: 'invalid-argument',
26
+ INTERNAL: 'internal-error',
27
+ FAILED_PRECONDITION: 'failed-precondition',
28
+ NOT_FOUND: 'not-found',
29
+ OUT_OF_RANGE: 'out-of-range',
30
+ PERMISSION_DENIED: 'permission-denied',
31
+ RESOURCE_EXHAUSTED: 'resource-exhausted',
32
+ UNAUTHENTICATED: 'unauthenticated',
33
+ UNKNOWN: 'unknown-error',
34
+ };
35
+ /**
36
+ * The constant mapping for valid Remote Config client error codes.
37
+ */
38
+ exports.RemoteConfigErrorCode = {
39
+ ABORTED: 'aborted',
40
+ ALREADY_EXISTS: 'already-exists',
41
+ FAILED_PRECONDITION: 'failed-precondition',
42
+ INTERNAL_ERROR: 'internal-error',
43
+ INVALID_ARGUMENT: 'invalid-argument',
44
+ NOT_FOUND: 'not-found',
45
+ OUT_OF_RANGE: 'out-of-range',
46
+ PERMISSION_DENIED: 'permission-denied',
47
+ RESOURCE_EXHAUSTED: 'resource-exhausted',
48
+ UNAUTHENTICATED: 'unauthenticated',
49
+ UNKNOWN_ERROR: 'unknown-error',
50
+ };
51
+ /**
52
+ * Firebase Remote Config error code structure. This extends `FirebaseError`.
53
+ */
54
+ class FirebaseRemoteConfigError extends error_1.FirebaseError {
55
+ /**
56
+ * @param info - The error code info.
57
+ * @param message - The error message. If provided, this will override the default message.
58
+ */
59
+ constructor(info, message) {
60
+ super({
61
+ code: `remote-config/${info.code}`,
62
+ message: message || info.message,
63
+ httpResponse: info.httpResponse,
64
+ cause: info.cause,
65
+ });
66
+ /** @internal */
67
+ this.codePrefix = 'remote-config';
68
+ }
69
+ }
70
+ exports.FirebaseRemoteConfigError = FirebaseRemoteConfigError;
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.10.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  /*!
3
3
  * Copyright 2020 Google LLC
4
4
  *
@@ -50,3 +50,4 @@ export { RemoteConfig, RemoteConfigFetchResponse } from './remote-config';
50
50
  * app.
51
51
  */
52
52
  export declare function getRemoteConfig(app?: App): RemoteConfig;
53
+ export { FirebaseRemoteConfigError, RemoteConfigErrorCode } from './error';
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.10.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  "use strict";
3
3
  /*!
4
4
  * Copyright 2020 Google LLC
@@ -16,7 +16,7 @@
16
16
  * limitations under the License.
17
17
  */
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.RemoteConfigFetchResponse = exports.RemoteConfig = exports.PercentConditionOperator = exports.CustomSignalOperator = void 0;
19
+ exports.RemoteConfigErrorCode = exports.FirebaseRemoteConfigError = exports.RemoteConfigFetchResponse = exports.RemoteConfig = exports.PercentConditionOperator = exports.CustomSignalOperator = void 0;
20
20
  exports.getRemoteConfig = getRemoteConfig;
21
21
  /**
22
22
  * Firebase Remote Config.
@@ -64,3 +64,6 @@ function getRemoteConfig(app) {
64
64
  const firebaseApp = app;
65
65
  return firebaseApp.getOrInitService('remoteConfig', (app) => new remote_config_1.RemoteConfig(app));
66
66
  }
67
+ var error_1 = require("./error");
68
+ Object.defineProperty(exports, "FirebaseRemoteConfigError", { enumerable: true, get: function () { return error_1.FirebaseRemoteConfigError; } });
69
+ Object.defineProperty(exports, "RemoteConfigErrorCode", { enumerable: true, get: function () { return error_1.RemoteConfigErrorCode; } });
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.10.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  /*!
3
3
  * Copyright 2024 Google LLC
4
4
  *
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.10.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  /*!
3
3
  * Copyright 2024 Google LLC
4
4
  *
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.10.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  /*!
3
3
  * Copyright 2020 Google LLC
4
4
  *
@@ -14,15 +14,4 @@
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
- import { PrefixedFirebaseError } from '../utils/error';
18
- export type RemoteConfigErrorCode = 'aborted' | 'already-exists' | 'failed-precondition' | 'internal-error' | 'invalid-argument' | 'not-found' | 'out-of-range' | 'permission-denied' | 'resource-exhausted' | 'unauthenticated' | 'unknown-error';
19
- /**
20
- * Firebase Remote Config error code structure. This extends PrefixedFirebaseError.
21
- *
22
- * @param {RemoteConfigErrorCode} code The error code.
23
- * @param {string} message The error message.
24
- * @constructor
25
- */
26
- export declare class FirebaseRemoteConfigError extends PrefixedFirebaseError {
27
- constructor(code: RemoteConfigErrorCode, message: string);
28
- }
17
+ export {};
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.10.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  "use strict";
3
3
  /*!
4
4
  * Copyright 2020 Google LLC
@@ -16,9 +16,10 @@
16
16
  * limitations under the License.
17
17
  */
18
18
  Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.FirebaseRemoteConfigError = exports.RemoteConfigApiClient = void 0;
19
+ exports.RemoteConfigApiClient = void 0;
20
20
  const api_request_1 = require("../utils/api-request");
21
21
  const error_1 = require("../utils/error");
22
+ const error_2 = require("./error");
22
23
  const utils = require("../utils/index");
23
24
  const validator = require("../utils/validator");
24
25
  const deep_copy_1 = require("../utils/deep-copy");
@@ -45,7 +46,10 @@ class RemoteConfigApiClient {
45
46
  constructor(app) {
46
47
  this.app = app;
47
48
  if (!validator.isNonNullObject(app) || !('options' in app)) {
48
- throw new FirebaseRemoteConfigError('invalid-argument', 'First argument passed to admin.remoteConfig() must be a valid Firebase app instance.');
49
+ throw new error_2.FirebaseRemoteConfigError({
50
+ code: 'invalid-argument',
51
+ message: 'First argument passed to admin.remoteConfig() must be a valid Firebase app instance.'
52
+ });
49
53
  }
50
54
  this.httpClient = new api_request_1.AuthorizedHttpClient(app);
51
55
  }
@@ -206,29 +210,37 @@ class RemoteConfigApiClient {
206
210
  return utils.findProjectId(this.app)
207
211
  .then((projectId) => {
208
212
  if (!validator.isNonEmptyString(projectId)) {
209
- throw new FirebaseRemoteConfigError('unknown-error', 'Failed to determine project ID. Initialize the SDK with service account credentials, or '
210
- + 'set project ID as an app option. Alternatively, set the GOOGLE_CLOUD_PROJECT '
211
- + 'environment variable.');
213
+ throw new error_2.FirebaseRemoteConfigError({
214
+ code: 'unknown-error',
215
+ message: 'Failed to determine project ID. Initialize the SDK with service account credentials, or '
216
+ + 'set project ID as an app option. Alternatively, set the GOOGLE_CLOUD_PROJECT '
217
+ + 'environment variable.'
218
+ });
212
219
  }
213
220
  this.projectIdPrefix = `projects/${projectId}`;
214
221
  return this.projectIdPrefix;
215
222
  });
216
223
  }
217
224
  toFirebaseError(err) {
218
- if (err instanceof error_1.PrefixedFirebaseError) {
225
+ if (err instanceof error_1.FirebaseError) {
219
226
  return err;
220
227
  }
221
228
  const response = err.response;
222
229
  if (!response.isJson()) {
223
- return new FirebaseRemoteConfigError('unknown-error', `Unexpected response with status: ${response.status} and body: ${response.text}`);
230
+ return new error_2.FirebaseRemoteConfigError({
231
+ code: 'unknown-error',
232
+ message: `Unexpected response with status: ${response.status} and body: ${response.text}`,
233
+ httpResponse: (0, error_1.toHttpResponse)(response),
234
+ cause: err
235
+ });
224
236
  }
225
237
  const error = response.data.error || {};
226
238
  let code = 'unknown-error';
227
- if (error.status && error.status in ERROR_CODE_MAPPING) {
228
- code = ERROR_CODE_MAPPING[error.status];
239
+ if (error.status && error.status in error_2.ERROR_CODE_MAPPING) {
240
+ code = error_2.ERROR_CODE_MAPPING[error.status];
229
241
  }
230
- const message = error.message || `Unknown server error: ${response.text}`;
231
- return new FirebaseRemoteConfigError(code, message);
242
+ const message = error.message || 'Unknown server error';
243
+ return new error_2.FirebaseRemoteConfigError({ code, message, httpResponse: (0, error_1.toHttpResponse)(response), cause: err });
232
244
  }
233
245
  /**
234
246
  * Creates a RemoteConfigTemplate from the API response.
@@ -277,19 +289,34 @@ class RemoteConfigApiClient {
277
289
  validateInputRemoteConfigTemplate(template) {
278
290
  const templateCopy = (0, deep_copy_1.deepCopy)(template);
279
291
  if (!validator.isNonNullObject(templateCopy)) {
280
- throw new FirebaseRemoteConfigError('invalid-argument', `Invalid Remote Config template: ${JSON.stringify(templateCopy)}`);
292
+ throw new error_2.FirebaseRemoteConfigError({
293
+ code: 'invalid-argument',
294
+ message: `Invalid Remote Config template: ${JSON.stringify(templateCopy)}`
295
+ });
281
296
  }
282
297
  if (!validator.isNonEmptyString(templateCopy.etag)) {
283
- throw new FirebaseRemoteConfigError('invalid-argument', 'ETag must be a non-empty string.');
298
+ throw new error_2.FirebaseRemoteConfigError({
299
+ code: 'invalid-argument',
300
+ message: 'ETag must be a non-empty string.'
301
+ });
284
302
  }
285
303
  if (!validator.isNonNullObject(templateCopy.parameters)) {
286
- throw new FirebaseRemoteConfigError('invalid-argument', 'Remote Config parameters must be a non-null object');
304
+ throw new error_2.FirebaseRemoteConfigError({
305
+ code: 'invalid-argument',
306
+ message: 'Remote Config parameters must be a non-null object'
307
+ });
287
308
  }
288
309
  if (!validator.isNonNullObject(templateCopy.parameterGroups)) {
289
- throw new FirebaseRemoteConfigError('invalid-argument', 'Remote Config parameter groups must be a non-null object');
310
+ throw new error_2.FirebaseRemoteConfigError({
311
+ code: 'invalid-argument',
312
+ message: 'Remote Config parameter groups must be a non-null object'
313
+ });
290
314
  }
291
315
  if (!validator.isArray(templateCopy.conditions)) {
292
- throw new FirebaseRemoteConfigError('invalid-argument', 'Remote Config conditions must be an array');
316
+ throw new error_2.FirebaseRemoteConfigError({
317
+ code: 'invalid-argument',
318
+ message: 'Remote Config conditions must be an array'
319
+ });
293
320
  }
294
321
  if (typeof templateCopy.version !== 'undefined') {
295
322
  // exclude output only properties and keep the only input property: description
@@ -309,16 +336,25 @@ class RemoteConfigApiClient {
309
336
  validateVersionNumber(versionNumber, propertyName = 'versionNumber') {
310
337
  if (!validator.isNonEmptyString(versionNumber) &&
311
338
  !validator.isNumber(versionNumber)) {
312
- throw new FirebaseRemoteConfigError('invalid-argument', `${propertyName} must be a non-empty string in int64 format or a number`);
339
+ throw new error_2.FirebaseRemoteConfigError({
340
+ code: 'invalid-argument',
341
+ message: `${propertyName} must be a non-empty string in int64 format or a number`
342
+ });
313
343
  }
314
344
  if (!Number.isInteger(Number(versionNumber))) {
315
- throw new FirebaseRemoteConfigError('invalid-argument', `${propertyName} must be an integer or a string in int64 format`);
345
+ throw new error_2.FirebaseRemoteConfigError({
346
+ code: 'invalid-argument',
347
+ message: `${propertyName} must be an integer or a string in int64 format`
348
+ });
316
349
  }
317
350
  return versionNumber.toString();
318
351
  }
319
352
  validateEtag(etag) {
320
353
  if (!validator.isNonEmptyString(etag)) {
321
- throw new FirebaseRemoteConfigError('invalid-argument', 'ETag header is not present in the server response.');
354
+ throw new error_2.FirebaseRemoteConfigError({
355
+ code: 'invalid-argument',
356
+ message: 'ETag header is not present in the server response.'
357
+ });
322
358
  }
323
359
  }
324
360
  /**
@@ -333,25 +369,40 @@ class RemoteConfigApiClient {
333
369
  validateListVersionsOptions(options) {
334
370
  const optionsCopy = (0, deep_copy_1.deepCopy)(options);
335
371
  if (!validator.isNonNullObject(optionsCopy)) {
336
- throw new FirebaseRemoteConfigError('invalid-argument', 'ListVersionsOptions must be a non-null object.');
372
+ throw new error_2.FirebaseRemoteConfigError({
373
+ code: 'invalid-argument',
374
+ message: 'ListVersionsOptions must be a non-null object.'
375
+ });
337
376
  }
338
377
  if (typeof optionsCopy.pageSize !== 'undefined') {
339
378
  if (!validator.isNumber(optionsCopy.pageSize)) {
340
- throw new FirebaseRemoteConfigError('invalid-argument', 'pageSize must be a number.');
379
+ throw new error_2.FirebaseRemoteConfigError({
380
+ code: 'invalid-argument',
381
+ message: 'pageSize must be a number.'
382
+ });
341
383
  }
342
384
  if (optionsCopy.pageSize < 1 || optionsCopy.pageSize > 300) {
343
- throw new FirebaseRemoteConfigError('invalid-argument', 'pageSize must be a number between 1 and 300 (inclusive).');
385
+ throw new error_2.FirebaseRemoteConfigError({
386
+ code: 'invalid-argument',
387
+ message: 'pageSize must be a number between 1 and 300 (inclusive).'
388
+ });
344
389
  }
345
390
  }
346
391
  if (typeof optionsCopy.pageToken !== 'undefined' && !validator.isNonEmptyString(optionsCopy.pageToken)) {
347
- throw new FirebaseRemoteConfigError('invalid-argument', 'pageToken must be a string value.');
392
+ throw new error_2.FirebaseRemoteConfigError({
393
+ code: 'invalid-argument',
394
+ message: 'pageToken must be a string value.'
395
+ });
348
396
  }
349
397
  if (typeof optionsCopy.endVersionNumber !== 'undefined') {
350
398
  optionsCopy.endVersionNumber = this.validateVersionNumber(optionsCopy.endVersionNumber, 'endVersionNumber');
351
399
  }
352
400
  if (typeof optionsCopy.startTime !== 'undefined') {
353
401
  if (!(optionsCopy.startTime instanceof Date) && !validator.isUTCDateString(optionsCopy.startTime)) {
354
- throw new FirebaseRemoteConfigError('invalid-argument', 'startTime must be a valid Date object or a UTC date string.');
402
+ throw new error_2.FirebaseRemoteConfigError({
403
+ code: 'invalid-argument',
404
+ message: 'startTime must be a valid Date object or a UTC date string.'
405
+ });
355
406
  }
356
407
  // Convert startTime to RFC3339 UTC "Zulu" format.
357
408
  if (optionsCopy.startTime instanceof Date) {
@@ -363,7 +414,10 @@ class RemoteConfigApiClient {
363
414
  }
364
415
  if (typeof optionsCopy.endTime !== 'undefined') {
365
416
  if (!(optionsCopy.endTime instanceof Date) && !validator.isUTCDateString(optionsCopy.endTime)) {
366
- throw new FirebaseRemoteConfigError('invalid-argument', 'endTime must be a valid Date object or a UTC date string.');
417
+ throw new error_2.FirebaseRemoteConfigError({
418
+ code: 'invalid-argument',
419
+ message: 'endTime must be a valid Date object or a UTC date string.'
420
+ });
367
421
  }
368
422
  // Convert endTime to RFC3339 UTC "Zulu" format.
369
423
  if (optionsCopy.endTime instanceof Date) {
@@ -379,29 +433,3 @@ class RemoteConfigApiClient {
379
433
  }
380
434
  }
381
435
  exports.RemoteConfigApiClient = RemoteConfigApiClient;
382
- const ERROR_CODE_MAPPING = {
383
- ABORTED: 'aborted',
384
- ALREADY_EXISTS: 'already-exists',
385
- INVALID_ARGUMENT: 'invalid-argument',
386
- INTERNAL: 'internal-error',
387
- FAILED_PRECONDITION: 'failed-precondition',
388
- NOT_FOUND: 'not-found',
389
- OUT_OF_RANGE: 'out-of-range',
390
- PERMISSION_DENIED: 'permission-denied',
391
- RESOURCE_EXHAUSTED: 'resource-exhausted',
392
- UNAUTHENTICATED: 'unauthenticated',
393
- UNKNOWN: 'unknown-error',
394
- };
395
- /**
396
- * Firebase Remote Config error code structure. This extends PrefixedFirebaseError.
397
- *
398
- * @param {RemoteConfigErrorCode} code The error code.
399
- * @param {string} message The error message.
400
- * @constructor
401
- */
402
- class FirebaseRemoteConfigError extends error_1.PrefixedFirebaseError {
403
- constructor(code, message) {
404
- super('remote-config', code, message);
405
- }
406
- }
407
- exports.FirebaseRemoteConfigError = FirebaseRemoteConfigError;
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.10.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  /*!
3
3
  * Copyright 2021 Google LLC
4
4
  *
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.10.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  "use strict";
3
3
  /*!
4
4
  * Copyright 2021 Google LLC
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.10.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  /*!
3
3
  * Copyright 2020 Google LLC
4
4
  *