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
  /*!
3
3
  * @license
4
4
  * Copyright 2021 Google LLC
@@ -15,18 +15,4 @@
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
- export declare const APP_CHECK_ERROR_CODE_MAPPING: {
20
- [key: string]: AppCheckErrorCode;
21
- };
22
- export type AppCheckErrorCode = 'aborted' | 'invalid-argument' | 'invalid-credential' | 'internal-error' | 'permission-denied' | 'unauthenticated' | 'not-found' | 'app-check-token-expired' | 'unknown-error';
23
- /**
24
- * Firebase App Check error code structure. This extends PrefixedFirebaseError.
25
- *
26
- * @param code - The error code.
27
- * @param message - The error message.
28
- * @constructor
29
- */
30
- export declare class FirebaseAppCheckError extends PrefixedFirebaseError {
31
- constructor(code: AppCheckErrorCode, message: string);
32
- }
18
+ export {};
@@ -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,9 +17,10 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.FirebaseAppCheckError = exports.APP_CHECK_ERROR_CODE_MAPPING = exports.AppCheckApiClient = void 0;
20
+ exports.AppCheckApiClient = void 0;
21
21
  const api_request_1 = require("../utils/api-request");
22
22
  const error_1 = require("../utils/error");
23
+ const error_2 = require("./error");
23
24
  const utils = require("../utils/index");
24
25
  const validator = require("../utils/validator");
25
26
  // App Check backend constants
@@ -37,7 +38,10 @@ class AppCheckApiClient {
37
38
  constructor(app) {
38
39
  this.app = app;
39
40
  if (!validator.isNonNullObject(app) || !('options' in app)) {
40
- throw new FirebaseAppCheckError('invalid-argument', 'First argument passed to admin.appCheck() must be a valid Firebase app instance.');
41
+ throw new error_2.FirebaseAppCheckError({
42
+ code: 'invalid-argument',
43
+ message: 'First argument passed to admin.appCheck() must be a valid Firebase app instance.'
44
+ });
41
45
  }
42
46
  this.httpClient = new api_request_1.AuthorizedHttpClient(app);
43
47
  }
@@ -48,12 +52,38 @@ class AppCheckApiClient {
48
52
  * @param appId - The mobile App ID.
49
53
  * @returns A promise that fulfills with a `AppCheckToken`.
50
54
  */
51
- exchangeToken(customToken, appId) {
55
+ exchangeToken(customToken, appId, options) {
52
56
  if (!validator.isNonEmptyString(appId)) {
53
- throw new FirebaseAppCheckError('invalid-argument', '`appId` must be a non-empty string.');
57
+ throw new error_2.FirebaseAppCheckError({
58
+ code: 'invalid-argument',
59
+ message: '`appId` must be a non-empty string.'
60
+ });
54
61
  }
55
62
  if (!validator.isNonEmptyString(customToken)) {
56
- throw new FirebaseAppCheckError('invalid-argument', '`customToken` must be a non-empty string.');
63
+ throw new error_2.FirebaseAppCheckError({
64
+ code: 'invalid-argument',
65
+ message: '`customToken` must be a non-empty string.'
66
+ });
67
+ }
68
+ if (typeof options?.limitedUse !== 'undefined' && !validator.isBoolean(options.limitedUse)) {
69
+ throw new error_2.FirebaseAppCheckError({
70
+ code: 'invalid-argument',
71
+ message: '`limitedUse` must be a boolean value.'
72
+ });
73
+ }
74
+ if (typeof options?.jti !== 'undefined') {
75
+ if (!validator.isString(options.jti)) {
76
+ throw new error_2.FirebaseAppCheckError({
77
+ code: 'invalid-argument',
78
+ message: '`jti` must be a string value.'
79
+ });
80
+ }
81
+ if (!options.limitedUse) {
82
+ throw new error_2.FirebaseAppCheckError({
83
+ code: 'invalid-argument',
84
+ message: '`jti` cannot be specified without setting `limitedUse` to `true`.'
85
+ });
86
+ }
57
87
  }
58
88
  return this.getUrl(appId)
59
89
  .then((url) => {
@@ -61,7 +91,11 @@ class AppCheckApiClient {
61
91
  method: 'POST',
62
92
  url,
63
93
  headers: FIREBASE_APP_CHECK_CONFIG_HEADERS,
64
- data: { customToken }
94
+ data: {
95
+ customToken,
96
+ ...(options?.limitedUse !== undefined && { limitedUse: options.limitedUse }),
97
+ ...(options?.jti !== undefined && { jti: options.jti }),
98
+ }
65
99
  };
66
100
  return this.httpClient.send(request);
67
101
  })
@@ -74,7 +108,10 @@ class AppCheckApiClient {
74
108
  }
75
109
  verifyReplayProtection(token) {
76
110
  if (!validator.isNonEmptyString(token)) {
77
- throw new FirebaseAppCheckError('invalid-argument', '`token` must be a non-empty string.');
111
+ throw new error_2.FirebaseAppCheckError({
112
+ code: 'invalid-argument',
113
+ message: '`token` must be a non-empty string.'
114
+ });
78
115
  }
79
116
  return this.getVerifyTokenUrl()
80
117
  .then((url) => {
@@ -89,7 +126,11 @@ class AppCheckApiClient {
89
126
  .then((resp) => {
90
127
  if (typeof resp.data.alreadyConsumed !== 'undefined'
91
128
  && !validator.isBoolean(resp.data?.alreadyConsumed)) {
92
- throw new FirebaseAppCheckError('invalid-argument', '`alreadyConsumed` must be a boolean value.');
129
+ throw new error_2.FirebaseAppCheckError({
130
+ code: 'invalid-argument',
131
+ message: '`alreadyConsumed` must be a boolean value.',
132
+ httpResponse: (0, error_1.toHttpResponse)(resp)
133
+ });
93
134
  }
94
135
  return resp.data.alreadyConsumed || false;
95
136
  })
@@ -125,29 +166,37 @@ class AppCheckApiClient {
125
166
  return utils.findProjectId(this.app)
126
167
  .then((projectId) => {
127
168
  if (!validator.isNonEmptyString(projectId)) {
128
- throw new FirebaseAppCheckError('unknown-error', 'Failed to determine project ID. Initialize the '
129
- + 'SDK with service account credentials or set project ID as an app option. '
130
- + 'Alternatively, set the GOOGLE_CLOUD_PROJECT environment variable.');
169
+ throw new error_2.FirebaseAppCheckError({
170
+ code: 'unknown-error',
171
+ message: 'Failed to determine project ID. Initialize the '
172
+ + 'SDK with service account credentials or set project ID as an app option. '
173
+ + 'Alternatively, set the GOOGLE_CLOUD_PROJECT environment variable.'
174
+ });
131
175
  }
132
176
  this.projectId = projectId;
133
177
  return projectId;
134
178
  });
135
179
  }
136
180
  toFirebaseError(err) {
137
- if (err instanceof error_1.PrefixedFirebaseError) {
181
+ if (err instanceof error_1.FirebaseError) {
138
182
  return err;
139
183
  }
140
184
  const response = err.response;
141
185
  if (!response.isJson()) {
142
- return new FirebaseAppCheckError('unknown-error', `Unexpected response with status: ${response.status} and body: ${response.text}`);
186
+ return new error_2.FirebaseAppCheckError({
187
+ code: 'unknown-error',
188
+ message: `Unexpected response with status: ${response.status} and body: ${response.text}`,
189
+ httpResponse: (0, error_1.toHttpResponse)(response),
190
+ cause: err
191
+ });
143
192
  }
144
193
  const error = response.data.error || {};
145
194
  let code = 'unknown-error';
146
- if (error.status && error.status in exports.APP_CHECK_ERROR_CODE_MAPPING) {
147
- code = exports.APP_CHECK_ERROR_CODE_MAPPING[error.status];
195
+ if (error.status && error.status in error_2.APP_CHECK_ERROR_CODE_MAPPING) {
196
+ code = error_2.APP_CHECK_ERROR_CODE_MAPPING[error.status];
148
197
  }
149
- const message = error.message || `Unknown server error: ${response.text}`;
150
- return new FirebaseAppCheckError(code, message);
198
+ const message = error.message || 'Unknown server error';
199
+ return new error_2.FirebaseAppCheckError({ code, message, httpResponse: (0, error_1.toHttpResponse)(response), cause: err });
151
200
  }
152
201
  /**
153
202
  * Creates an AppCheckToken from the API response.
@@ -177,38 +226,13 @@ class AppCheckApiClient {
177
226
  */
178
227
  stringToMilliseconds(duration) {
179
228
  if (!validator.isNonEmptyString(duration) || !duration.endsWith('s')) {
180
- throw new FirebaseAppCheckError('invalid-argument', '`ttl` must be a valid duration string with the suffix `s`.');
229
+ throw new error_2.FirebaseAppCheckError({
230
+ code: 'invalid-argument',
231
+ message: '`ttl` must be a valid duration string with the suffix `s`.'
232
+ });
181
233
  }
182
234
  const seconds = duration.slice(0, -1);
183
235
  return Math.floor(Number(seconds) * 1000);
184
236
  }
185
237
  }
186
238
  exports.AppCheckApiClient = AppCheckApiClient;
187
- exports.APP_CHECK_ERROR_CODE_MAPPING = {
188
- ABORTED: 'aborted',
189
- INVALID_ARGUMENT: 'invalid-argument',
190
- INVALID_CREDENTIAL: 'invalid-credential',
191
- INTERNAL: 'internal-error',
192
- PERMISSION_DENIED: 'permission-denied',
193
- UNAUTHENTICATED: 'unauthenticated',
194
- NOT_FOUND: 'not-found',
195
- UNKNOWN: 'unknown-error',
196
- };
197
- /**
198
- * Firebase App Check error code structure. This extends PrefixedFirebaseError.
199
- *
200
- * @param code - The error code.
201
- * @param message - The error message.
202
- * @constructor
203
- */
204
- class FirebaseAppCheckError extends error_1.PrefixedFirebaseError {
205
- constructor(code, message) {
206
- super('app-check', code, message);
207
- /* tslint:disable:max-line-length */
208
- // Set the prototype explicitly. See the following link for more details:
209
- // https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
210
- /* tslint:enable:max-line-length */
211
- this.__proto__ = FirebaseAppCheckError.prototype;
212
- }
213
- }
214
- exports.FirebaseAppCheckError = FirebaseAppCheckError;
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.9.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  /*!
3
3
  * @license
4
4
  * Copyright 2021 Google LLC
@@ -37,6 +37,24 @@ export interface AppCheckTokenOptions {
37
37
  * be valid. This value must be between 30 minutes and 7 days, inclusive.
38
38
  */
39
39
  ttlMillis?: number;
40
+ /**
41
+ * Specifies whether this token is for a limited use context.
42
+ * To enable this token to be used with the replay protection feature, set this to `true`.
43
+ * The default value is `false`.
44
+ */
45
+ limitedUse?: boolean;
46
+ /**
47
+ * Specifies the desired `jti` claim (Section 4.1.7 of RFC 7519) in the returned App
48
+ * Check token. Limited-use App Check tokens with the same `jti` will be counted as the
49
+ * same token for the purposes of replay protection.
50
+ *
51
+ * If this field is omitted or is empty, a randomly generated `jti` will be used in the
52
+ * returned App Check token.
53
+ *
54
+ * An error is returned if this field is specified without setting `limitedUse` to
55
+ * `true`.
56
+ */
57
+ jti?: string;
40
58
  }
41
59
  /**
42
60
  * Interface representing options for the {@link AppCheck.verifyToken} method.
@@ -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 2021 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
@@ -20,6 +20,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
20
20
  exports.AppCheck = void 0;
21
21
  const validator = require("../utils/validator");
22
22
  const app_check_api_client_internal_1 = require("./app-check-api-client-internal");
23
+ const error_1 = require("./error");
23
24
  const token_generator_1 = require("./token-generator");
24
25
  const token_verifier_1 = require("./token-verifier");
25
26
  const crypto_signer_1 = require("../utils/crypto-signer");
@@ -55,7 +56,7 @@ class AppCheck {
55
56
  createToken(appId, options) {
56
57
  return this.tokenGenerator.createCustomToken(appId, options)
57
58
  .then((customToken) => {
58
- return this.client.exchangeToken(customToken, appId);
59
+ return this.client.exchangeToken(customToken, appId, options);
59
60
  });
60
61
  }
61
62
  /**
@@ -94,7 +95,10 @@ class AppCheck {
94
95
  return;
95
96
  }
96
97
  if (!validator.isNonNullObject(options)) {
97
- throw new app_check_api_client_internal_1.FirebaseAppCheckError('invalid-argument', 'VerifyAppCheckTokenOptions must be a non-null object.');
98
+ throw new error_1.FirebaseAppCheckError({
99
+ code: 'invalid-argument',
100
+ message: 'VerifyAppCheckTokenOptions must be a non-null object.'
101
+ });
98
102
  }
99
103
  }
100
104
  }
@@ -0,0 +1,47 @@
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, AppCheckErrorCode>} App Check server to client error code mapping. */
19
+ export declare const APP_CHECK_ERROR_CODE_MAPPING: Record<string, AppCheckErrorCode>;
20
+ /**
21
+ * The constant mapping for valid App Check client error codes.
22
+ */
23
+ export declare const AppCheckErrorCode: {
24
+ readonly ABORTED: "aborted";
25
+ readonly INVALID_ARGUMENT: "invalid-argument";
26
+ readonly INVALID_CREDENTIAL: "invalid-credential";
27
+ readonly INTERNAL: "internal-error";
28
+ readonly PERMISSION_DENIED: "permission-denied";
29
+ readonly UNAUTHENTICATED: "unauthenticated";
30
+ readonly NOT_FOUND: "not-found";
31
+ readonly APP_CHECK_TOKEN_EXPIRED: "app-check-token-expired";
32
+ readonly UNKNOWN: "unknown-error";
33
+ };
34
+ /**
35
+ * The type definition for valid App Check client error codes.
36
+ */
37
+ export type AppCheckErrorCode = typeof AppCheckErrorCode[keyof typeof AppCheckErrorCode];
38
+ /**
39
+ * Firebase App Check error code structure. This extends `FirebaseError`.
40
+ */
41
+ export declare class FirebaseAppCheckError extends FirebaseError {
42
+ /**
43
+ * @param info - The error code info.
44
+ * @param message - The error message. If provided, this will override the default message.
45
+ */
46
+ constructor(info: ErrorInfo, message?: string);
47
+ }
@@ -0,0 +1,65 @@
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.FirebaseAppCheckError = exports.AppCheckErrorCode = exports.APP_CHECK_ERROR_CODE_MAPPING = void 0;
20
+ const error_1 = require("../utils/error");
21
+ /** @const {Record<string, AppCheckErrorCode>} App Check server to client error code mapping. */
22
+ exports.APP_CHECK_ERROR_CODE_MAPPING = {
23
+ ABORTED: 'aborted',
24
+ INVALID_ARGUMENT: 'invalid-argument',
25
+ INVALID_CREDENTIAL: 'invalid-credential',
26
+ INTERNAL: 'internal-error',
27
+ PERMISSION_DENIED: 'permission-denied',
28
+ UNAUTHENTICATED: 'unauthenticated',
29
+ NOT_FOUND: 'not-found',
30
+ UNKNOWN: 'unknown-error',
31
+ };
32
+ /**
33
+ * The constant mapping for valid App Check client error codes.
34
+ */
35
+ exports.AppCheckErrorCode = {
36
+ ABORTED: 'aborted',
37
+ INVALID_ARGUMENT: 'invalid-argument',
38
+ INVALID_CREDENTIAL: 'invalid-credential',
39
+ INTERNAL: 'internal-error',
40
+ PERMISSION_DENIED: 'permission-denied',
41
+ UNAUTHENTICATED: 'unauthenticated',
42
+ NOT_FOUND: 'not-found',
43
+ APP_CHECK_TOKEN_EXPIRED: 'app-check-token-expired',
44
+ UNKNOWN: 'unknown-error',
45
+ };
46
+ /**
47
+ * Firebase App Check error code structure. This extends `FirebaseError`.
48
+ */
49
+ class FirebaseAppCheckError extends error_1.FirebaseError {
50
+ /**
51
+ * @param info - The error code info.
52
+ * @param message - The error message. If provided, this will override the default message.
53
+ */
54
+ constructor(info, message) {
55
+ super({
56
+ code: `app-check/${info.code}`,
57
+ message: message || info.message,
58
+ httpResponse: info.httpResponse,
59
+ cause: info.cause,
60
+ });
61
+ /** @internal */
62
+ this.codePrefix = 'app-check';
63
+ }
64
+ }
65
+ exports.FirebaseAppCheckError = FirebaseAppCheckError;
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.9.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  /*!
3
3
  * @license
4
4
  * Copyright 2021 Google LLC
@@ -51,3 +51,4 @@ export { AppCheck } from './app-check';
51
51
  * app.
52
52
  */
53
53
  export declare function getAppCheck(app?: App): AppCheck;
54
+ export { FirebaseAppCheckError, AppCheckErrorCode } from './error';
@@ -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,7 +17,7 @@
17
17
  * limitations under the License.
18
18
  */
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.AppCheck = void 0;
20
+ exports.AppCheckErrorCode = exports.FirebaseAppCheckError = exports.AppCheck = void 0;
21
21
  exports.getAppCheck = getAppCheck;
22
22
  /**
23
23
  * Firebase App Check.
@@ -61,3 +61,6 @@ function getAppCheck(app) {
61
61
  const firebaseApp = app;
62
62
  return firebaseApp.getOrInitService('appCheck', (app) => new app_check_1.AppCheck(app));
63
63
  }
64
+ var error_1 = require("./error");
65
+ Object.defineProperty(exports, "FirebaseAppCheckError", { enumerable: true, get: function () { return error_1.FirebaseAppCheckError; } });
66
+ Object.defineProperty(exports, "AppCheckErrorCode", { enumerable: true, get: function () { return error_1.AppCheckErrorCode; } });
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.9.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  /*!
3
3
  * @license
4
4
  * Copyright 2021 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
@@ -22,7 +22,8 @@ exports.appCheckErrorFromCryptoSignerError = appCheckErrorFromCryptoSignerError;
22
22
  const validator = require("../utils/validator");
23
23
  const utils_1 = require("../utils");
24
24
  const crypto_signer_1 = require("../utils/crypto-signer");
25
- const app_check_api_client_internal_1 = require("./app-check-api-client-internal");
25
+ const error_1 = require("./error");
26
+ const error_2 = require("../utils/error");
26
27
  const ONE_MINUTE_IN_SECONDS = 60;
27
28
  const ONE_MINUTE_IN_MILLIS = ONE_MINUTE_IN_SECONDS * 1000;
28
29
  const ONE_DAY_IN_MILLIS = 24 * 60 * 60 * 1000;
@@ -42,7 +43,10 @@ class AppCheckTokenGenerator {
42
43
  */
43
44
  constructor(signer) {
44
45
  if (!validator.isNonNullObject(signer)) {
45
- throw new app_check_api_client_internal_1.FirebaseAppCheckError('invalid-argument', 'INTERNAL ASSERT: Must provide a CryptoSigner to use AppCheckTokenGenerator.');
46
+ throw new error_1.FirebaseAppCheckError({
47
+ code: 'invalid-argument',
48
+ message: 'INTERNAL ASSERT: Must provide a CryptoSigner to use AppCheckTokenGenerator.'
49
+ });
46
50
  }
47
51
  this.signer = signer;
48
52
  }
@@ -56,7 +60,10 @@ class AppCheckTokenGenerator {
56
60
  */
57
61
  createCustomToken(appId, options) {
58
62
  if (!validator.isNonEmptyString(appId)) {
59
- throw new app_check_api_client_internal_1.FirebaseAppCheckError('invalid-argument', '`appId` must be a non-empty string.');
63
+ throw new error_1.FirebaseAppCheckError({
64
+ code: 'invalid-argument',
65
+ message: '`appId` must be a non-empty string.'
66
+ });
60
67
  }
61
68
  let customOptions = {};
62
69
  if (typeof options !== 'undefined') {
@@ -99,15 +106,24 @@ class AppCheckTokenGenerator {
99
106
  */
100
107
  validateTokenOptions(options) {
101
108
  if (!validator.isNonNullObject(options)) {
102
- throw new app_check_api_client_internal_1.FirebaseAppCheckError('invalid-argument', 'AppCheckTokenOptions must be a non-null object.');
109
+ throw new error_1.FirebaseAppCheckError({
110
+ code: 'invalid-argument',
111
+ message: 'AppCheckTokenOptions must be a non-null object.'
112
+ });
103
113
  }
104
114
  if (typeof options.ttlMillis !== 'undefined') {
105
115
  if (!validator.isNumber(options.ttlMillis)) {
106
- throw new app_check_api_client_internal_1.FirebaseAppCheckError('invalid-argument', 'ttlMillis must be a duration in milliseconds.');
116
+ throw new error_1.FirebaseAppCheckError({
117
+ code: 'invalid-argument',
118
+ message: 'ttlMillis must be a duration in milliseconds.'
119
+ });
107
120
  }
108
121
  // ttlMillis must be between 30 minutes and 7 days (inclusive)
109
122
  if (options.ttlMillis < (ONE_MINUTE_IN_MILLIS * 30) || options.ttlMillis > (ONE_DAY_IN_MILLIS * 7)) {
110
- throw new app_check_api_client_internal_1.FirebaseAppCheckError('invalid-argument', 'ttlMillis must be a duration in milliseconds between 30 minutes and 7 days (inclusive).');
123
+ throw new error_1.FirebaseAppCheckError({
124
+ code: 'invalid-argument',
125
+ message: 'ttlMillis must be a duration in milliseconds between 30 minutes and 7 days (inclusive).'
126
+ });
111
127
  }
112
128
  return { ttl: (0, utils_1.transformMillisecondsToSecondsString)(options.ttlMillis) };
113
129
  }
@@ -131,16 +147,30 @@ function appCheckErrorFromCryptoSignerError(err) {
131
147
  const errorResponse = httpError.response.data;
132
148
  if (errorResponse?.error) {
133
149
  const status = errorResponse.error.status;
134
- const description = errorResponse.error.message || JSON.stringify(httpError.response);
150
+ const description = errorResponse.error.message || 'Unknown server error';
135
151
  let code = 'unknown-error';
136
- if (status && status in app_check_api_client_internal_1.APP_CHECK_ERROR_CODE_MAPPING) {
137
- code = app_check_api_client_internal_1.APP_CHECK_ERROR_CODE_MAPPING[status];
152
+ if (status && status in error_1.APP_CHECK_ERROR_CODE_MAPPING) {
153
+ code = error_1.APP_CHECK_ERROR_CODE_MAPPING[status];
138
154
  }
139
- return new app_check_api_client_internal_1.FirebaseAppCheckError(code, `Error returned from server while signing a custom token: ${description}`);
155
+ return new error_1.FirebaseAppCheckError({
156
+ code,
157
+ message: `Error returned from server while signing a custom token: ${description}`,
158
+ httpResponse: (0, error_2.toHttpResponse)(httpError.response),
159
+ cause: err
160
+ });
140
161
  }
141
- return new app_check_api_client_internal_1.FirebaseAppCheckError('internal-error', 'Error returned from server: ' + JSON.stringify(errorResponse) + '.');
162
+ return new error_1.FirebaseAppCheckError({
163
+ code: 'internal-error',
164
+ message: 'Error returned from server.',
165
+ httpResponse: (0, error_2.toHttpResponse)(httpError.response),
166
+ cause: err
167
+ });
142
168
  }
143
- return new app_check_api_client_internal_1.FirebaseAppCheckError(mapToAppCheckErrorCode(err.code), err.message);
169
+ return new error_1.FirebaseAppCheckError({
170
+ code: mapToAppCheckErrorCode(err.code),
171
+ message: err.message,
172
+ cause: err
173
+ });
144
174
  }
145
175
  function mapToAppCheckErrorCode(code) {
146
176
  switch (code) {
@@ -1,4 +1,4 @@
1
- /*! firebase-admin v13.9.0 */
1
+ /*! firebase-admin v14.0.0 */
2
2
  /*!
3
3
  * Copyright 2021 Google LLC
4
4
  *