@dereekb/firebase-server 13.11.18 → 13.12.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 (67) hide show
  1. package/index.cjs.js +218 -31
  2. package/index.esm.js +217 -34
  3. package/mailgun/package.json +9 -9
  4. package/mcp/index.cjs.default.js +1 -0
  5. package/mcp/index.cjs.js +3646 -0
  6. package/mcp/index.cjs.mjs +2 -0
  7. package/mcp/index.d.ts +1 -0
  8. package/mcp/index.esm.js +3609 -0
  9. package/mcp/package.json +33 -0
  10. package/mcp/src/index.d.ts +1 -0
  11. package/mcp/src/lib/controller/index.d.ts +2 -0
  12. package/mcp/src/lib/controller/mcp.controller.d.ts +19 -0
  13. package/mcp/src/lib/controller/mcp.wellknown.controller.d.ts +25 -0
  14. package/mcp/src/lib/index.d.ts +5 -0
  15. package/mcp/src/lib/mcp.config.d.ts +100 -0
  16. package/mcp/src/lib/mcp.module.d.ts +49 -0
  17. package/mcp/src/lib/service/index.d.ts +8 -0
  18. package/mcp/src/lib/service/mcp.manifest.d.ts +150 -0
  19. package/mcp/src/lib/service/mcp.response-formatter.d.ts +36 -0
  20. package/mcp/src/lib/service/mcp.server.factory.d.ts +124 -0
  21. package/mcp/src/lib/service/mcp.tool-generator.d.ts +235 -0
  22. package/mcp/src/lib/service/mcp.visibility.d.ts +99 -0
  23. package/mcp/src/lib/service/tools/mcp.tool.model-decode.d.ts +87 -0
  24. package/mcp/src/lib/service/tools/mcp.tool.model-get.d.ts +81 -0
  25. package/mcp/src/lib/service/tools/mcp.tool.model-info.d.ts +84 -0
  26. package/mcp/src/lib/service/tools/mcp.tool.whoami.d.ts +72 -0
  27. package/mcp/src/lib/transport/index.d.ts +1 -0
  28. package/mcp/src/lib/transport/streamable-http.transport.d.ts +21 -0
  29. package/model/index.cjs.js +639 -266
  30. package/model/index.esm.js +640 -270
  31. package/model/package.json +9 -9
  32. package/model/src/lib/storagefile/extension/compress.pdf.d.ts +29 -1
  33. package/model/src/lib/storagefile/index.d.ts +1 -0
  34. package/model/src/lib/storagefile/storagefile.action.server.d.ts +29 -2
  35. package/model/src/lib/storagefile/storagefile.mcp.d.ts +32 -0
  36. package/model/src/lib/storagefile/storagefile.module.d.ts +20 -3
  37. package/oidc/index.cjs.js +322 -147
  38. package/oidc/index.esm.js +321 -148
  39. package/oidc/package.json +10 -10
  40. package/oidc/src/lib/controller/oidc.wellknown.controller.d.ts +6 -15
  41. package/oidc/src/lib/middleware/oauth-auth.middleware.d.ts +22 -2
  42. package/oidc/src/lib/middleware/oauth-auth.module.d.ts +57 -0
  43. package/oidc/src/lib/oidc.config.d.ts +73 -0
  44. package/oidc/src/lib/oidc.module.d.ts +44 -2
  45. package/package.json +16 -10
  46. package/src/lib/auth/auth.service.d.ts +16 -1
  47. package/src/lib/auth/auth.service.error.util.d.ts +24 -5
  48. package/src/lib/env/env.config.d.ts +16 -0
  49. package/src/lib/env/env.service.d.ts +9 -0
  50. package/src/lib/nest/controller/model/model.api.get.service.d.ts +35 -1
  51. package/src/lib/nest/env/env.service.d.ts +1 -0
  52. package/src/lib/nest/model/api.details.d.ts +116 -5
  53. package/src/lib/nest/model/crud.assert.function.d.ts +1 -1
  54. package/src/lib/nest/model/index.d.ts +1 -0
  55. package/src/lib/nest/model/invoke.model.function.d.ts +89 -0
  56. package/test/package.json +11 -11
  57. package/twilio/LICENSE +21 -0
  58. package/twilio/index.cjs.default.js +1 -0
  59. package/twilio/index.cjs.js +404 -0
  60. package/twilio/index.cjs.mjs +2 -0
  61. package/twilio/index.d.ts +1 -0
  62. package/twilio/index.esm.js +398 -0
  63. package/twilio/package.json +25 -0
  64. package/twilio/src/index.d.ts +1 -0
  65. package/twilio/src/lib/index.d.ts +1 -0
  66. package/twilio/src/lib/notification.send.service.twilio.d.ts +148 -0
  67. package/zoho/package.json +9 -9
package/index.esm.js CHANGED
@@ -1,7 +1,8 @@
1
- import { DBX_FIREBASE_SERVER_NO_AUTH_ERROR_CODE, UNAUTHENTICATED_ERROR_CODE, FORBIDDEN_ERROR_CODE, PERMISSION_DENIED_ERROR_CODE, NOT_FOUND_ERROR_CODE, MODEL_NOT_AVAILABLE_ERROR_CODE, BAD_REQUEST_ERROR_CODE, CONFLICT_ERROR_CODE, ALREADY_EXISTS_ERROR_CODE, UNAVAILABLE_ERROR_CODE, UNAVAILABLE_OR_DEACTIVATED_FUNCTION_ERROR_CODE, INTERNAL_SERVER_ERROR_CODE, FIREBASE_AUTH_USER_NOT_FOUND_ERROR, FIREBASE_SERVER_AUTH_CLAIMS_RESET_PASSWORD_KEY, FIREBASE_SERVER_AUTH_CLAIMS_RESET_LAST_COM_DATE_KEY, FIREBASE_SERVER_AUTH_CLAIMS_SETUP_PASSWORD_KEY, FIREBASE_AUTH_PHONE_NUMBER_ALREADY_EXISTS_ERROR, FIREBASE_AUTH_EMAIL_ALREADY_EXISTS_ERROR, FIREBASE_AUTH_INVALID_PHONE_NUMBER_ERROR, FIREBASE_SERVER_AUTH_CLAIMS_SETUP_LAST_COM_DATE_KEY, setIdAndKeyFromKeyIdRefOnDocumentData, DBX_FIREBASE_SERVER_PASSWORD_RESET_INVALID_CODE_ERROR_CODE, DBX_FIREBASE_SERVER_PASSWORD_RESET_NO_CONFIG_ERROR_CODE, DBX_FIREBASE_SERVER_PASSWORD_RESET_SEND_ONCE_ERROR_CODE, DBX_FIREBASE_SERVER_PASSWORD_RESET_THROTTLE_ERROR_CODE, FirestoreDocumentContextType, streamFromOnSnapshot, FIRESTORE_LIMIT_QUERY_CONSTRAINT_TYPE, FIRESTORE_LIMIT_TO_LAST_QUERY_CONSTRAINT_TYPE, FIRESTORE_ORDER_BY_QUERY_CONSTRAINT_TYPE, FIRESTORE_ORDER_BY_DOCUMENT_ID_QUERY_CONSTRAINT_TYPE, FIRESTORE_WHERE_QUERY_CONSTRAINT_TYPE, FIRESTORE_WHERE_DOCUMENT_ID_QUERY_CONSTRAINT_TYPE, FIRESTORE_OFFSET_QUERY_CONSTRAINT_TYPE, FIRESTORE_START_AT_QUERY_CONSTRAINT_TYPE, FIRESTORE_START_AT_VALUE_QUERY_CONSTRAINT_TYPE, FIRESTORE_START_AFTER_QUERY_CONSTRAINT_TYPE, FIRESTORE_END_AT_QUERY_CONSTRAINT_TYPE, FIRESTORE_END_AT_VALUE_QUERY_CONSTRAINT_TYPE, FIRESTORE_END_BEFORE_QUERY_CONSTRAINT_TYPE, makeFirestoreQueryConstraintFunctionsDriver, firestoreContextFactory, firestoreField, optionalFirestoreField, DEFAULT_MODEL_FUNCTION_FIREBASE_CRUD_FUNCTION_SPECIFIER, UNKNOWN_MODEL_TYPE_ERROR_CODE, BAD_DOCUMENT_QUERY_CURSOR_ERROR_CODE, limit, startAfter, DEFAULT_ON_CALL_QUERY_MODEL_LIMIT, MAX_ON_CALL_QUERY_MODEL_LIMIT, ScheduledFunctionDevelopmentFunctionTypeEnum, SCHEDULED_FUNCTION_DEV_FUNCTION_SPECIFIER, storageListFilesResultFactory, assertStorageUploadOptionsStringFormat, firebaseStorageContextFactory, inContextFirebaseModelsServiceFactory, useFirebaseModelsService } from '@dereekb/firebase';
1
+ import { timingSafeEqual } from 'node:crypto';
2
+ import { DBX_FIREBASE_SERVER_NO_AUTH_ERROR_CODE, UNAUTHENTICATED_ERROR_CODE, FORBIDDEN_ERROR_CODE, PERMISSION_DENIED_ERROR_CODE, NOT_FOUND_ERROR_CODE, MODEL_NOT_AVAILABLE_ERROR_CODE, BAD_REQUEST_ERROR_CODE, CONFLICT_ERROR_CODE, ALREADY_EXISTS_ERROR_CODE, UNAVAILABLE_ERROR_CODE, UNAVAILABLE_OR_DEACTIVATED_FUNCTION_ERROR_CODE, INTERNAL_SERVER_ERROR_CODE, FIREBASE_AUTH_USER_NOT_FOUND_ERROR, FIREBASE_SERVER_AUTH_CLAIMS_RESET_PASSWORD_KEY, FIREBASE_SERVER_AUTH_CLAIMS_RESET_LAST_COM_DATE_KEY, FIREBASE_SERVER_AUTH_CLAIMS_RESET_EXPIRES_AT_KEY, FIREBASE_SERVER_AUTH_CLAIMS_SETUP_PASSWORD_KEY, FIREBASE_AUTH_PHONE_NUMBER_ALREADY_EXISTS_ERROR, FIREBASE_AUTH_EMAIL_ALREADY_EXISTS_ERROR, FIREBASE_AUTH_INVALID_PHONE_NUMBER_ERROR, FIREBASE_SERVER_AUTH_CLAIMS_SETUP_LAST_COM_DATE_KEY, setIdAndKeyFromKeyIdRefOnDocumentData, DBX_FIREBASE_SERVER_PASSWORD_RESET_INVALID_CODE_ERROR_CODE, DBX_FIREBASE_SERVER_PASSWORD_RESET_NO_CONFIG_ERROR_CODE, DBX_FIREBASE_SERVER_PASSWORD_RESET_SEND_ONCE_ERROR_CODE, DBX_FIREBASE_SERVER_PASSWORD_RESET_THROTTLE_ERROR_CODE, FirestoreDocumentContextType, streamFromOnSnapshot, FIRESTORE_LIMIT_QUERY_CONSTRAINT_TYPE, FIRESTORE_LIMIT_TO_LAST_QUERY_CONSTRAINT_TYPE, FIRESTORE_ORDER_BY_QUERY_CONSTRAINT_TYPE, FIRESTORE_ORDER_BY_DOCUMENT_ID_QUERY_CONSTRAINT_TYPE, FIRESTORE_WHERE_QUERY_CONSTRAINT_TYPE, FIRESTORE_WHERE_DOCUMENT_ID_QUERY_CONSTRAINT_TYPE, FIRESTORE_OFFSET_QUERY_CONSTRAINT_TYPE, FIRESTORE_START_AT_QUERY_CONSTRAINT_TYPE, FIRESTORE_START_AT_VALUE_QUERY_CONSTRAINT_TYPE, FIRESTORE_START_AFTER_QUERY_CONSTRAINT_TYPE, FIRESTORE_END_AT_QUERY_CONSTRAINT_TYPE, FIRESTORE_END_AT_VALUE_QUERY_CONSTRAINT_TYPE, FIRESTORE_END_BEFORE_QUERY_CONSTRAINT_TYPE, makeFirestoreQueryConstraintFunctionsDriver, firestoreContextFactory, firestoreField, optionalFirestoreField, DEFAULT_MODEL_FUNCTION_FIREBASE_CRUD_FUNCTION_SPECIFIER, UNKNOWN_MODEL_TYPE_ERROR_CODE, BAD_DOCUMENT_QUERY_CURSOR_ERROR_CODE, limit, startAfter, DEFAULT_ON_CALL_QUERY_MODEL_LIMIT, MAX_ON_CALL_QUERY_MODEL_LIMIT, ScheduledFunctionDevelopmentFunctionTypeEnum, SCHEDULED_FUNCTION_DEV_FUNCTION_SPECIFIER, storageListFilesResultFactory, assertStorageUploadOptionsStringFormat, firebaseStorageContextFactory, inContextFirebaseModelsServiceFactory, useFirebaseModelsService } from '@dereekb/firebase';
2
3
  import { partialServerError, isServerError, randomNumberFactory, cachedGetter, filterNullAndUndefinedValues, asSet, AUTH_ADMIN_ROLE, AUTH_TOS_SIGNED_ROLE, forEachKeyValue, KeyValueTypleValueFilter, filterUndefinedValues, isThrottled, mapObjectMap, batch, objectToMap, serverError, asArray, containsAllValues, websiteUrlDetails, mergeObjects, cronExpressionRepeatingEveryNMinutes, mapIdentityFunction, slashPathName, toRelativeSlashPathStartType, fixMultiSlashesInSlashPath, SLASH_PATH_SEPARATOR, objectHasNoKeys, websiteUrlFromPaths, pushItemOrArrayItemsIntoArray, makeGetter, asGetter, build, performAsyncTasks } from '@dereekb/util';
3
4
  import { HttpsError } from 'firebase-functions/https';
4
- import { hoursToMs, toISODateString } from '@dereekb/date';
5
+ import { hoursToMs, minutesToMs, toISODateString } from '@dereekb/date';
5
6
  import { BaseError } from 'make-error';
6
7
  import { SERVER_ENV_TOKEN, resolveEncryptionKey, encryptValue, decryptValue, mergeModuleMetadata, ServerEnvironmentService, DEFAULT_BASE_WEBHOOK_PATH, DEFAULT_WEBHOOK_MIDDLEWARE_ROUTE_INFO, isTestNodeEnv, injectionTokensFromProviders, nodeJsLocalAssetLoader } from '@dereekb/nestjs';
7
8
  import { from } from 'rxjs';
@@ -1239,12 +1240,14 @@ function _ts_generator$g(thisArg, body) {
1239
1240
  key: "beginResetPassword",
1240
1241
  value: function beginResetPassword() {
1241
1242
  return _async_to_generator$g(function() {
1242
- var password, _obj, passwordClaimsData;
1243
+ var password, now, expiresAt, _obj, passwordClaimsData;
1243
1244
  return _ts_generator$g(this, function(_state) {
1244
1245
  switch(_state.label){
1245
1246
  case 0:
1246
1247
  password = this._generateResetPasswordKey();
1247
- passwordClaimsData = (_obj = {}, _define_property$x(_obj, FIREBASE_SERVER_AUTH_CLAIMS_RESET_PASSWORD_KEY, password), _define_property$x(_obj, FIREBASE_SERVER_AUTH_CLAIMS_RESET_LAST_COM_DATE_KEY, toISODateString(new Date())), _obj);
1248
+ now = new Date();
1249
+ expiresAt = new Date(now.getTime() + this._resetCodeExpiresInMs());
1250
+ passwordClaimsData = (_obj = {}, _define_property$x(_obj, FIREBASE_SERVER_AUTH_CLAIMS_RESET_PASSWORD_KEY, password), _define_property$x(_obj, FIREBASE_SERVER_AUTH_CLAIMS_RESET_LAST_COM_DATE_KEY, toISODateString(now)), _define_property$x(_obj, FIREBASE_SERVER_AUTH_CLAIMS_RESET_EXPIRES_AT_KEY, toISODateString(expiresAt)), _obj);
1248
1251
  // set the claims
1249
1252
  return [
1250
1253
  4,
@@ -1270,6 +1273,17 @@ function _ts_generator$g(thisArg, body) {
1270
1273
  }).call(this);
1271
1274
  }
1272
1275
  },
1276
+ {
1277
+ /**
1278
+ * Returns the TTL (in milliseconds) for newly-generated reset codes. Subclasses may override
1279
+ * to customize expiry.
1280
+ *
1281
+ * @returns The TTL in milliseconds for newly-generated reset codes.
1282
+ */ key: "_resetCodeExpiresInMs",
1283
+ value: function _resetCodeExpiresInMs() {
1284
+ return DEFAULT_RESET_CODE_EXPIRES_IN;
1285
+ }
1286
+ },
1273
1287
  {
1274
1288
  key: "loadResetPasswordClaims",
1275
1289
  value: function loadResetPasswordClaims() {
@@ -1313,7 +1327,7 @@ function _ts_generator$g(thisArg, body) {
1313
1327
  // clear password reset claims
1314
1328
  return [
1315
1329
  4,
1316
- this.updateClaims((_obj = {}, _define_property$x(_obj, FIREBASE_SERVER_AUTH_CLAIMS_RESET_PASSWORD_KEY, null), _define_property$x(_obj, FIREBASE_SERVER_AUTH_CLAIMS_RESET_LAST_COM_DATE_KEY, null), _obj))
1330
+ this.updateClaims((_obj = {}, _define_property$x(_obj, FIREBASE_SERVER_AUTH_CLAIMS_RESET_PASSWORD_KEY, null), _define_property$x(_obj, FIREBASE_SERVER_AUTH_CLAIMS_RESET_LAST_COM_DATE_KEY, null), _define_property$x(_obj, FIREBASE_SERVER_AUTH_CLAIMS_RESET_EXPIRES_AT_KEY, null), _obj))
1317
1331
  ];
1318
1332
  case 2:
1319
1333
  _state.sent();
@@ -2108,10 +2122,17 @@ function _ts_generator$g(thisArg, body) {
2108
2122
  return NoSetupContentFirebaseServerNewUserService;
2109
2123
  }(AbstractFirebaseServerNewUserService);
2110
2124
  /**
2111
- * Default throttle duration (1 hour) between reset content sends to prevent spam.
2125
+ * Default throttle duration (60 seconds) between reset content re-sends to prevent spam while
2126
+ * remaining responsive for legitimate users who didn't receive the first email.
2112
2127
  *
2113
2128
  * Used by {@link AbstractFirebaseServerUserPasswordResetService.sendResetContent} to rate-limit delivery.
2114
- */ var DEFAULT_RESET_COM_THROTTLE_TIME = hoursToMs(1);
2129
+ */ var DEFAULT_RESET_COM_THROTTLE_TIME = minutesToMs(1);
2130
+ /**
2131
+ * Default lifetime (15 minutes) of a reset code before it expires.
2132
+ *
2133
+ * Used by {@link AbstractFirebaseServerAuthUserContext.beginResetPassword} to set
2134
+ * `resetExpiresAt` in the user's claims.
2135
+ */ var DEFAULT_RESET_CODE_EXPIRES_IN = minutesToMs(15);
2115
2136
  /**
2116
2137
  * Base implementation of {@link FirebaseServerUserPasswordResetService} that handles reset initiation,
2117
2138
  * claims management, throttled reset content delivery, and reset completion.
@@ -2192,12 +2213,15 @@ function _ts_generator$g(thisArg, body) {
2192
2213
  3,
2193
2214
  7
2194
2215
  ];
2216
+ // beginResetPassword() just refreshed the claims (including resetCommunicationAt = now),
2217
+ // so the throttle window from any previous send no longer applies — this is the first send
2218
+ // of the newly-rotated code and must not be self-throttled.
2195
2219
  return [
2196
2220
  4,
2197
2221
  this.sendResetContent(resolvedUid, {
2198
2222
  data: data,
2199
2223
  sendResetDetailsOnce: sendResetDetailsOnce,
2200
- ignoreSendThrottleTime: sendResetIgnoreThrottle,
2224
+ ignoreSendThrottleTime: sendResetIgnoreThrottle !== null && sendResetIgnoreThrottle !== void 0 ? sendResetIgnoreThrottle : true,
2201
2225
  throwErrors: sendResetThrowErrors,
2202
2226
  sendDetailsInTestEnvironment: sendDetailsInTestEnvironment
2203
2227
  })
@@ -2351,7 +2375,8 @@ function _ts_generator$g(thisArg, body) {
2351
2375
  userContext: userContext,
2352
2376
  claims: {
2353
2377
  resetPassword: claims.resetPassword,
2354
- resetCommunicationAt: claims.resetCommunicationAt
2378
+ resetCommunicationAt: claims.resetCommunicationAt,
2379
+ resetExpiresAt: claims.resetExpiresAt
2355
2380
  },
2356
2381
  data: config === null || config === void 0 ? void 0 : config.data,
2357
2382
  sendDetailsInTestEnvironment: config === null || config === void 0 ? void 0 : config.sendDetailsInTestEnvironment
@@ -2397,7 +2422,7 @@ function _ts_generator$g(thisArg, body) {
2397
2422
  key: "completePasswordReset",
2398
2423
  value: function completePasswordReset(uid, input) {
2399
2424
  return _async_to_generator$g(function() {
2400
- var userContext, claims;
2425
+ var userContext, claims, storedCode, expiresAt, storedBuf, inputBuf;
2401
2426
  return _ts_generator$g(this, function(_state) {
2402
2427
  switch(_state.label){
2403
2428
  case 0:
@@ -2408,7 +2433,18 @@ function _ts_generator$g(thisArg, body) {
2408
2433
  ];
2409
2434
  case 1:
2410
2435
  claims = _state.sent();
2411
- if ((claims === null || claims === void 0 ? void 0 : claims.resetPassword) !== input.resetPassword) {
2436
+ storedCode = claims === null || claims === void 0 ? void 0 : claims.resetPassword;
2437
+ expiresAt = claims === null || claims === void 0 ? void 0 : claims.resetExpiresAt;
2438
+ // Reject if no active reset OR the stored code is missing/wrong length OR the code is expired.
2439
+ // All failure cases throw the same opaque error so callers cannot distinguish them.
2440
+ if (!storedCode || !expiresAt || storedCode.length !== input.resetPassword.length || new Date(expiresAt).getTime() <= Date.now()) {
2441
+ throw new FirebaseServerAuthPasswordResetInvalidCodeError();
2442
+ }
2443
+ // Constant-time comparison to avoid leaking timing information about how many leading
2444
+ // characters of the provided code matched. Lengths are equal per the guard above.
2445
+ storedBuf = Buffer.from(storedCode);
2446
+ inputBuf = Buffer.from(input.resetPassword);
2447
+ if (!timingSafeEqual(storedBuf, inputBuf)) {
2412
2448
  throw new FirebaseServerAuthPasswordResetInvalidCodeError();
2413
2449
  }
2414
2450
  return [
@@ -2917,7 +2953,7 @@ function _async_to_generator$e(fn) {
2917
2953
  });
2918
2954
  };
2919
2955
  }
2920
- function _instanceof$2(left, right) {
2956
+ function _instanceof$3(left, right) {
2921
2957
  "@swc/helpers - instanceof";
2922
2958
  if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
2923
2959
  return !!right[Symbol.hasInstance](left);
@@ -3029,15 +3065,28 @@ function _ts_generator$e(thisArg, body) {
3029
3065
  * catching password-reset-specific errors and re-throwing them as appropriate {@link HttpsError} instances
3030
3066
  * suitable for returning to clients.
3031
3067
  *
3032
- * Error mapping:
3068
+ * Default mapping (security-hardened — enumeration-safe, for end-user callers):
3069
+ * - {@link FirebaseServerAuthPasswordResetInvalidCodeError} → permission-denied (403)
3070
+ * - {@link FirebaseServerAuthPasswordResetNoResetConfigError} → permission-denied (403), same opaque
3071
+ * response as InvalidCode so callers cannot distinguish "wrong code" from "no reset active".
3072
+ * - {@link FirebaseServerAuthPasswordResetSendOnceError} → permission-denied (403), same opaque
3073
+ * response so callers cannot probe whether a reset was already initiated.
3074
+ * - {@link FirebaseServerAuthPasswordResetThrottleError} → unavailable (503) with a generic message
3075
+ * (no `lastSentAt` is leaked).
3076
+ *
3077
+ * Admin mapping (`isAdmin: true`) — preserves distinct error codes and statuses so an admin
3078
+ * resetting on behalf of another user can see the actual reason. Used when the call originates
3079
+ * from an authenticated admin, where enumeration is not a concern:
3033
3080
  * - {@link FirebaseServerAuthPasswordResetInvalidCodeError} → permission-denied (403)
3034
- * - {@link FirebaseServerAuthPasswordResetNoResetConfigError} → bad-request (400)
3035
- * - {@link FirebaseServerAuthPasswordResetThrottleError} → unavailable (503)
3036
- * - {@link FirebaseServerAuthPasswordResetSendOnceError} → bad-request (400)
3081
+ * - {@link FirebaseServerAuthPasswordResetNoResetConfigError} → bad-request (400), distinct message
3082
+ * - {@link FirebaseServerAuthPasswordResetSendOnceError} → bad-request (400), distinct message
3083
+ * - {@link FirebaseServerAuthPasswordResetThrottleError} → unavailable (503), same as default
3037
3084
  *
3038
3085
  * @param fn - The async function to execute.
3086
+ * @param isAdmin - When `true`, returns distinct error codes/messages instead of the
3087
+ * enumeration-safe opaque response. Pass the caller's admin status here.
3039
3088
  * @returns The result of the function.
3040
- */ function catchAndThrowPasswordResetServerErrors(fn) {
3089
+ */ function catchAndThrowPasswordResetServerErrors(fn, isAdmin) {
3041
3090
  return _async_to_generator$e(function() {
3042
3091
  var result, error;
3043
3092
  return _ts_generator$e(this, function(_state) {
@@ -3061,14 +3110,14 @@ function _ts_generator$e(thisArg, body) {
3061
3110
  ];
3062
3111
  case 2:
3063
3112
  error = _state.sent();
3064
- if (_instanceof$2(error, FirebaseServerAuthPasswordResetInvalidCodeError)) {
3113
+ if (_instanceof$3(error, FirebaseServerAuthPasswordResetInvalidCodeError)) {
3065
3114
  throw authServicePasswordResetInvalidCodeError();
3066
- } else if (_instanceof$2(error, FirebaseServerAuthPasswordResetNoResetConfigError)) {
3067
- throw authServicePasswordResetNoConfigError();
3068
- } else if (_instanceof$2(error, FirebaseServerAuthPasswordResetThrottleError)) {
3115
+ } else if (_instanceof$3(error, FirebaseServerAuthPasswordResetNoResetConfigError)) {
3116
+ throw isAdmin ? authServicePasswordResetNoConfigError() : authServicePasswordResetInvalidCodeError();
3117
+ } else if (_instanceof$3(error, FirebaseServerAuthPasswordResetSendOnceError)) {
3118
+ throw isAdmin ? authServicePasswordResetSendOnceError() : authServicePasswordResetInvalidCodeError();
3119
+ } else if (_instanceof$3(error, FirebaseServerAuthPasswordResetThrottleError)) {
3069
3120
  throw authServicePasswordResetThrottleError();
3070
- } else if (_instanceof$2(error, FirebaseServerAuthPasswordResetSendOnceError)) {
3071
- throw authServicePasswordResetSendOnceError();
3072
3121
  }
3073
3122
  throw error;
3074
3123
  case 3:
@@ -3087,12 +3136,17 @@ function _ts_generator$e(thisArg, body) {
3087
3136
  */ function authServicePasswordResetInvalidCodeError() {
3088
3137
  return permissionDeniedError({
3089
3138
  code: DBX_FIREBASE_SERVER_PASSWORD_RESET_INVALID_CODE_ERROR_CODE,
3090
- message: 'Invalid or expired reset password code.'
3139
+ message: 'Invalid or expired reset code.'
3091
3140
  });
3092
3141
  }
3093
3142
  /**
3094
3143
  * Creates a bad-request (400) server error when no active password reset exists for the user.
3095
3144
  *
3145
+ * Distinct from {@link authServicePasswordResetInvalidCodeError}. Use only when the caller is
3146
+ * trusted (e.g., an admin) and revealing "no reset active" is not an enumeration risk; for
3147
+ * end-user callers, {@link catchAndThrowPasswordResetServerErrors} maps this case to the same
3148
+ * opaque response as `InvalidCodeError`.
3149
+ *
3096
3150
  * @returns An {@link HttpsError} with code `invalid-argument`.
3097
3151
  */ function authServicePasswordResetNoConfigError() {
3098
3152
  return badRequestError({
@@ -6181,6 +6235,49 @@ function _ts_generator$b(thisArg, body) {
6181
6235
  })();
6182
6236
  }
6183
6237
 
6238
+ /**
6239
+ * Factory that creates a callable function handling model invokes for multiple model types.
6240
+ *
6241
+ * Dispatches to the correct handler based on the `modelType` field in the request,
6242
+ * enforces auth requirements per handler, and aggregates API details for MCP introspection.
6243
+ *
6244
+ * @param map - Maps model type strings to their invoke handler functions.
6245
+ * @param config - Optional configuration including a pre-assertion hook.
6246
+ * @returns A callable function for the 'invoke' call operation.
6247
+ *
6248
+ * @example
6249
+ * ```typescript
6250
+ * const invokeHandler = onCallInvokeModel<DemoNestContext>({
6251
+ * guestbookEntry: onCallSpecifierHandler({
6252
+ * recomputeLikes: guestbookEntryRecomputeLikes
6253
+ * })
6254
+ * });
6255
+ * ```
6256
+ */ function onCallInvokeModel(map) {
6257
+ var config = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
6258
+ var preAssert = config.preAssert;
6259
+ return _onCallWithCallTypeFunction(map, {
6260
+ callType: 'invoke',
6261
+ preAssert: preAssert,
6262
+ throwOnUnknownModelType: invokeModelUnknownModelTypeError
6263
+ });
6264
+ }
6265
+ /**
6266
+ * Creates a bad-request error indicating the requested model type is not valid for invoking.
6267
+ *
6268
+ * @param modelType - The unrecognized model type string.
6269
+ * @returns A bad-request error with {@link UNKNOWN_MODEL_TYPE_ERROR_CODE} code.
6270
+ */ function invokeModelUnknownModelTypeError(modelType) {
6271
+ return badRequestError(serverError({
6272
+ status: 400,
6273
+ code: UNKNOWN_MODEL_TYPE_ERROR_CODE,
6274
+ message: 'Invalid type to invoke.',
6275
+ data: {
6276
+ modelType: modelType
6277
+ }
6278
+ }));
6279
+ }
6280
+
6184
6281
  function _array_like_to_array$8(arr, len) {
6185
6282
  if (len == null || len > arr.length) len = arr.length;
6186
6283
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -7201,6 +7298,14 @@ function _define_property$l(obj, key, value) {
7201
7298
  }
7202
7299
  return obj;
7203
7300
  }
7301
+ function _instanceof$2(left, right) {
7302
+ "@swc/helpers - instanceof";
7303
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
7304
+ return !!right[Symbol.hasInstance](left);
7305
+ } else {
7306
+ return left instanceof right;
7307
+ }
7308
+ }
7204
7309
  function _object_spread$c(target) {
7205
7310
  for(var i = 1; i < arguments.length; i++){
7206
7311
  var source = arguments[i] != null ? arguments[i] : {};
@@ -7319,6 +7424,28 @@ function _ts_generator$9(thisArg, body) {
7319
7424
  /**
7320
7425
  * Maximum number of keys allowed in a multi-read request.
7321
7426
  */ var MAX_MODEL_ACCESS_MULTI_READ_KEYS = 50;
7427
+ /**
7428
+ * Maps a single `useMultipleModels` failure entry into the public {@link ModelAccessReadError}
7429
+ * shape. Unwraps the typical Firebase error shapes via {@link firebaseServerErrorInfo} so
7430
+ * permission-denied / not-found errors surface a real message + code instead of the generic
7431
+ * `"Unknown error"` fallback the inline mapping used previously.
7432
+ *
7433
+ * @param entry - A failed-key entry from the underlying multi-read.
7434
+ * @returns A `{ key, message, code? }` triple safe to return to API/MCP callers.
7435
+ */ function modelAccessReadErrorFromUseMultipleModelsFailure(entry) {
7436
+ var _info_serverErrorCode, _ref, _ref1;
7437
+ var _info_httpsErrorDetailsServerError, _info_httpsError;
7438
+ var info = firebaseServerErrorInfo(entry.error);
7439
+ var serverMessage = (_info_httpsErrorDetailsServerError = info.httpsErrorDetailsServerError) === null || _info_httpsErrorDetailsServerError === void 0 ? void 0 : _info_httpsErrorDetailsServerError.message;
7440
+ var httpsMessage = (_info_httpsError = info.httpsError) === null || _info_httpsError === void 0 ? void 0 : _info_httpsError.message;
7441
+ var plainMessage = _instanceof$2(entry.error, Error) ? entry.error.message : undefined;
7442
+ var code = (_info_serverErrorCode = info.serverErrorCode) !== null && _info_serverErrorCode !== void 0 ? _info_serverErrorCode : info.firebaseErrorCode;
7443
+ return {
7444
+ key: entry.key,
7445
+ message: (_ref = (_ref1 = serverMessage !== null && serverMessage !== void 0 ? serverMessage : httpsMessage) !== null && _ref1 !== void 0 ? _ref1 : plainMessage) !== null && _ref !== void 0 ? _ref : 'permission denied or not found',
7446
+ code: code
7447
+ };
7448
+ }
7322
7449
  // MARK: Service
7323
7450
  /**
7324
7451
  * Service for direct document reads using the `useModel()` permission-checking pattern.
@@ -7330,9 +7457,67 @@ function _ts_generator$9(thisArg, body) {
7330
7457
  function ModelApiGetService(config, nestApplication) {
7331
7458
  _class_call_check$e(this, ModelApiGetService);
7332
7459
  _define_property$l(this, "_nestContext", void 0);
7460
+ _define_property$l(this, "_identityByModelType", void 0);
7333
7461
  this._nestContext = config.makeNestContext(nestApplication);
7334
7462
  }
7335
7463
  _create_class$9(ModelApiGetService, [
7464
+ {
7465
+ /**
7466
+ * Returns the registered {@link FirestoreModelIdentity} for the given `modelType` string, or
7467
+ * `undefined` when no model of that type is registered.
7468
+ *
7469
+ * Identities are read from `firebaseModelsService` and cached on first successful call. The
7470
+ * lookup uses the provided `auth` to build a real model context — `getFirestoreCollection(ctx)`
7471
+ * is context-dependent (calls `ctx.collection(...)` or similar), so a synthetic empty context
7472
+ * is not sufficient.
7473
+ *
7474
+ * @param modelType - The Firestore model type string (e.g., 'guestbook', 'profile').
7475
+ * @param auth - The request's auth data; used to build a context for the (one-time) lookup.
7476
+ * @returns The matching identity or `undefined`.
7477
+ */ key: "getModelIdentity",
7478
+ value: function getModelIdentity(modelType, auth) {
7479
+ var _this__identityByModelType;
7480
+ (_this__identityByModelType = this._identityByModelType) !== null && _this__identityByModelType !== void 0 ? _this__identityByModelType : this._identityByModelType = this._buildIdentityMap(auth);
7481
+ return this._identityByModelType.get(modelType);
7482
+ }
7483
+ },
7484
+ {
7485
+ key: "_buildIdentityMap",
7486
+ value: function _buildIdentityMap(auth) {
7487
+ var map = new Map();
7488
+ var authRef = this._makeAuthRef(auth);
7489
+ var inContextService = this._nestContext.model(authRef);
7490
+ var allTypes = inContextService.allTypes();
7491
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
7492
+ try {
7493
+ for(var _iterator = allTypes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
7494
+ var type = _step.value;
7495
+ try {
7496
+ var modelService = inContextService(type);
7497
+ var identity = modelService.getFirestoreCollection().modelIdentity;
7498
+ map.set(type, identity);
7499
+ } catch (unused) {
7500
+ // identity unavailable for this type — skipped silently. A subsequent get attempt for a
7501
+ // missing type surfaces a user-visible "Unknown modelType" error at the tool layer.
7502
+ }
7503
+ }
7504
+ } catch (err) {
7505
+ _didIteratorError = true;
7506
+ _iteratorError = err;
7507
+ } finally{
7508
+ try {
7509
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
7510
+ _iterator.return();
7511
+ }
7512
+ } finally{
7513
+ if (_didIteratorError) {
7514
+ throw _iteratorError;
7515
+ }
7516
+ }
7517
+ }
7518
+ return map;
7519
+ }
7520
+ },
7336
7521
  {
7337
7522
  key: "readDocument",
7338
7523
  value: /**
@@ -7439,15 +7624,7 @@ function _ts_generator$9(thisArg, body) {
7439
7624
  ];
7440
7625
  case 1:
7441
7626
  results = _state.sent();
7442
- errors = failure.errors.map(function(e) {
7443
- var _ref;
7444
- var _e_error, _e_error1;
7445
- return {
7446
- key: e.key,
7447
- message: (_ref = (_e_error = e.error) === null || _e_error === void 0 ? void 0 : _e_error.message) !== null && _ref !== void 0 ? _ref : 'Unknown error',
7448
- code: (_e_error1 = e.error) === null || _e_error1 === void 0 ? void 0 : _e_error1.code
7449
- };
7450
- });
7627
+ errors = failure.errors.map(modelAccessReadErrorFromUseMultipleModelsFailure);
7451
7628
  return [
7452
7629
  2,
7453
7630
  {
@@ -8909,6 +9086,12 @@ function _is_native_reflect_construct$1() {
8909
9086
  return this._appUrlDetails();
8910
9087
  }
8911
9088
  },
9089
+ {
9090
+ key: "appMcpUrl",
9091
+ get: function get() {
9092
+ return this.env.appMcpUrl;
9093
+ }
9094
+ },
8912
9095
  {
8913
9096
  key: "appWebhookUrl",
8914
9097
  get: function get() {
@@ -12731,4 +12914,4 @@ function _define_property(obj, key, value) {
12731
12914
  }
12732
12915
  ();
12733
12916
 
12734
- export { AbstractFirebaseNestContext, AbstractFirebaseServerActionsContext, AbstractFirebaseServerAuthContext, AbstractFirebaseServerAuthService, AbstractFirebaseServerAuthUserContext, AbstractFirebaseServerNewUserService, AbstractFirebaseServerUserPasswordResetService, AbstractNestContext, AbstractServerFirebaseNestContext, ConfigureFirebaseAppCheckMiddlewareModule, ConfigureFirebaseWebhookMiddlewareModule, DEFAULT_FIREBASE_PASSWORD_NUMBER_GENERATOR, DEFAULT_RESET_COM_THROTTLE_TIME, DEFAULT_SERVER_ASSETS_BASE_PATH, DEFAULT_SETUP_COM_THROTTLE_TIME, DefaultFirebaseServerEnvService, FIREBASE_APP_TOKEN, FIREBASE_AUTH_TOKEN, FIREBASE_FIRESTORE_CONTEXT_TOKEN, FIREBASE_FIRESTORE_TOKEN, FIREBASE_SERVER_ENV_TOKEN, FIREBASE_SERVER_VALIDATION_ERROR_CODE, FIREBASE_STORAGE_CONTEXT_FACTORY_CONFIG_TOKEN, FIREBASE_STORAGE_CONTEXT_TOKEN, FIREBASE_STORAGE_TOKEN, FIRESTORE_CLIENT_QUERY_CONSTRAINT_HANDLER_MAPPING, FirebaseAppCheckMiddleware, FirebaseAppCheckMiddlewareConfig, FirebaseNestServerRootModule, FirebaseRawBodyMiddleware, FirebaseServerAnalyticsSegmentListenerService, FirebaseServerAnalyticsSegmentModule, FirebaseServerAnalyticsService, FirebaseServerAnalyticsServiceListener, FirebaseServerAuthModule, FirebaseServerAuthNewUserSendSetupDetailsNoSetupConfigError, FirebaseServerAuthNewUserSendSetupDetailsSendOnceError, FirebaseServerAuthNewUserSendSetupDetailsThrottleError, FirebaseServerAuthPasswordResetInvalidCodeError, FirebaseServerAuthPasswordResetNoResetConfigError, FirebaseServerAuthPasswordResetSendOnceError, FirebaseServerAuthPasswordResetThrottleError, FirebaseServerAuthService, FirebaseServerAuthUserBadInputError, FirebaseServerAuthUserExistsError, FirebaseServerEnvService, FirebaseServerFirestoreContextModule, FirebaseServerFirestoreModule, FirebaseServerStorageContextModule, FirebaseServerStorageModule, FirebaseServerStorageService, GlobalRoutePrefixConfig, MAX_MODEL_ACCESS_MULTI_READ_KEYS, MODEL_API_NEST_APPLICATION_CONTEXT, ModelApiCallModelDispatchService, ModelApiController, ModelApiDispatchConfig, ModelApiGetService, NO_RUN_NAME_SPECIFIED_FOR_SCHEDULED_FUNCTION_DEVELOPMENT_FUNCTION_CODE, NoContentFirebaseServerUserPasswordResetService, NoSetupContentFirebaseServerNewUserService, ON_CALL_MODEL_ANALYTICS_HANDLER, ON_CALL_MODEL_ANALYTICS_SERVICE, OnCallModelAnalyticsService, PHONE_NUMBER_ALREADY_EXISTS_ERROR_CODE, SkipAppCheck, UNKNOWN_SCHEDULED_FUNCTION_DEVELOPMENT_FUNCTION_NAME_CODE, UNKNOWN_SCHEDULED_FUNCTION_DEVELOPMENT_FUNCTION_TYPE_CODE, _onCallWithCallTypeFunction, aggregateCrudModelApiDetails, aggregateModelApiDetails, aggregateSpecifierApiDetails, alreadyExistsError, appAnalyticsModuleMetadata, appFirestoreModuleMetadata, assertContextHasAuth, assertDocumentExists, assertHasRolesInRequest, assertHasSignedTosInRequest, assertIsAdminInRequest, assertIsAdminOrTargetUserInRequestData, assertIsContextWithAuthData, assertRequestRequiresAuthForFunction, assertSnapshotData, assertSnapshotDataWithKey, authServicePasswordResetInvalidCodeError, authServicePasswordResetNoConfigError, authServicePasswordResetSendOnceError, authServicePasswordResetThrottleError, badRequestError, blockingFunctionHandlerWithNestContextFactory, buildNestServerRootModule, callWithAnalytics, catchAndThrowPasswordResetServerErrors, cloudEventHandlerWithNestContextFactory, collectionRefForPath, createModelUnknownModelTypeError, defaultFirebaseServerActionsTransformFactoryLogErrorFunction, defaultProvideFirebaseServerStorageServiceSimple, deleteModelUnknownModelTypeError, developmentUnknownSpecifierError, docRefForPath, documentModelNotAvailableError, executeOnCallQuery, firebaseAuthTokenFromDecodedIdToken, firebaseServerActionsContext, firebaseServerActionsTransformContext, firebaseServerActionsTransformFactory, firebaseServerAppTokenProvider, firebaseServerAuthModuleMetadata, firebaseServerDevFunctions, firebaseServerEnvTokenProvider, firebaseServerEnvTokenProviders, firebaseServerErrorInfo, firebaseServerErrorInfoCodePair, firebaseServerErrorInfoServerErrorCodePair, firebaseServerErrorInfoServerErrorPair, firebaseServerFirestoreContextModuleMetadata, firebaseServerStorageDefaultBucketIdTokenProvider, firebaseServerStorageModuleMetadata, firebaseServerValidationError, firebaseServerValidationServerError, firestoreClientQueryConstraintFunctionsDriver, firestoreEncryptedField, firestoreServerIncrementUpdateToUpdateData, forbiddenError, getAuthUserOrUndefined, getModelApiDetails, googleCloudFileMetadataToStorageMetadata, googleCloudFirebaseStorageContextFactory, googleCloudFirebaseStorageDrivers, googleCloudFirestoreAccessorDriver, googleCloudFirestoreContextFactory, googleCloudFirestoreDrivers, googleCloudFirestoreQueryDriver, googleCloudStorageAccessorFile, googleCloudStorageAccessorFolder, googleCloudStorageBucketForStorageFilePath, googleCloudStorageFileForStorageFilePath, googleCloudStorageFirebaseStorageAccessorDriver, googleCloudStorageFromFirebaseAdminStorage, googleCloudStorageListFilesResultFactory, handleFirebaseAuthError, handleFirebaseError, hasAuthRolesInRequest, hasNewUserSetupPasswordInRequest, hasSignedTosInRequest, inAuthContext, injectNestApplicationContextIntoRequest, injectNestIntoRequest, internalServerError, isActualSpecifier, isAdminInRequest, isAdminOrTargetUserInRequestData, isContextWithAuthData, isFirebaseError, isFirebaseHttpsError, isOnCallCrudModelApiDetails, isOnCallHandlerApiDetails, isOnCallModelTypeApiDetails, isOnCallSpecifierApiDetails, makeBlockingFunctionWithHandler, makeOnScheduleHandlerWithNestApplicationRequest, makeScheduledFunctionDevelopmentFunction, modelApiModuleMetadata, modelNotAvailableError, nestAppHasDevelopmentSchedulerEnabled, nestAppIsProductionEnvironment, nestFirebaseDoesNotExistError, nestFirebaseForbiddenPermissionError, nestServerInstance, noRunNameSpecifiedForScheduledFunctionDevelopmentFunction, noopFirebaseServerAnalyticsServiceListener, noopOnCallModelAnalyticsService, notFoundError, onCallAnalyticsEmitterInstance, onCallCreateModel, onCallDeleteModel, onCallDevelopmentFunction, onCallHandlerWithNestApplicationFactory, onCallHandlerWithNestContextFactory, onCallModel, onCallModelMissingCallTypeError, onCallModelUnknownCallTypeError, onCallQueryModel, onCallReadModel, onCallSpecifierHandler, onCallUpdateModel, onScheduleHandlerWithNestApplicationFactory, onScheduleHandlerWithNestContextFactory, optionalAuthContext, optionalFirestoreEncryptedField, permissionDeniedError, phoneNumberAlreadyExistsError, preconditionConflictError, provideAppFirestoreCollections, provideFirebaseServerAuthService, provideFirebaseServerStorageService, queryModelBadCursorError, queryModelUnknownModelTypeError, readApiDetails, readModelUnknownModelTypeError, resolveAdminOnlyValue, resolveAnalyticsFromApiDetails, setNestContextOnRequest, setNestContextOnScheduleRequest, taskQueueFunctionHandlerWithNestContextFactory, unauthenticatedContextHasNoAuthData, unauthenticatedContextHasNoUidError, unauthenticatedError, unavailableError, unavailableOrDeactivatedFunctionError, unknownModelCrudFunctionSpecifierError, unknownScheduledFunctionDevelopmentFunctionName, unknownScheduledFunctionDevelopmentFunctionType, updateModelUnknownModelTypeError, userContextFromUid, verifyAppCheckInRequest, withApiDetails };
12917
+ export { AbstractFirebaseNestContext, AbstractFirebaseServerActionsContext, AbstractFirebaseServerAuthContext, AbstractFirebaseServerAuthService, AbstractFirebaseServerAuthUserContext, AbstractFirebaseServerNewUserService, AbstractFirebaseServerUserPasswordResetService, AbstractNestContext, AbstractServerFirebaseNestContext, ConfigureFirebaseAppCheckMiddlewareModule, ConfigureFirebaseWebhookMiddlewareModule, DEFAULT_FIREBASE_PASSWORD_NUMBER_GENERATOR, DEFAULT_RESET_CODE_EXPIRES_IN, DEFAULT_RESET_COM_THROTTLE_TIME, DEFAULT_SERVER_ASSETS_BASE_PATH, DEFAULT_SETUP_COM_THROTTLE_TIME, DefaultFirebaseServerEnvService, FIREBASE_APP_TOKEN, FIREBASE_AUTH_TOKEN, FIREBASE_FIRESTORE_CONTEXT_TOKEN, FIREBASE_FIRESTORE_TOKEN, FIREBASE_SERVER_ENV_TOKEN, FIREBASE_SERVER_VALIDATION_ERROR_CODE, FIREBASE_STORAGE_CONTEXT_FACTORY_CONFIG_TOKEN, FIREBASE_STORAGE_CONTEXT_TOKEN, FIREBASE_STORAGE_TOKEN, FIRESTORE_CLIENT_QUERY_CONSTRAINT_HANDLER_MAPPING, FirebaseAppCheckMiddleware, FirebaseAppCheckMiddlewareConfig, FirebaseNestServerRootModule, FirebaseRawBodyMiddleware, FirebaseServerAnalyticsSegmentListenerService, FirebaseServerAnalyticsSegmentModule, FirebaseServerAnalyticsService, FirebaseServerAnalyticsServiceListener, FirebaseServerAuthModule, FirebaseServerAuthNewUserSendSetupDetailsNoSetupConfigError, FirebaseServerAuthNewUserSendSetupDetailsSendOnceError, FirebaseServerAuthNewUserSendSetupDetailsThrottleError, FirebaseServerAuthPasswordResetInvalidCodeError, FirebaseServerAuthPasswordResetNoResetConfigError, FirebaseServerAuthPasswordResetSendOnceError, FirebaseServerAuthPasswordResetThrottleError, FirebaseServerAuthService, FirebaseServerAuthUserBadInputError, FirebaseServerAuthUserExistsError, FirebaseServerEnvService, FirebaseServerFirestoreContextModule, FirebaseServerFirestoreModule, FirebaseServerStorageContextModule, FirebaseServerStorageModule, FirebaseServerStorageService, GlobalRoutePrefixConfig, MAX_MODEL_ACCESS_MULTI_READ_KEYS, MODEL_API_NEST_APPLICATION_CONTEXT, ModelApiCallModelDispatchService, ModelApiController, ModelApiDispatchConfig, ModelApiGetService, NO_RUN_NAME_SPECIFIED_FOR_SCHEDULED_FUNCTION_DEVELOPMENT_FUNCTION_CODE, NoContentFirebaseServerUserPasswordResetService, NoSetupContentFirebaseServerNewUserService, ON_CALL_MODEL_ANALYTICS_HANDLER, ON_CALL_MODEL_ANALYTICS_SERVICE, OnCallModelAnalyticsService, PHONE_NUMBER_ALREADY_EXISTS_ERROR_CODE, SkipAppCheck, UNKNOWN_SCHEDULED_FUNCTION_DEVELOPMENT_FUNCTION_NAME_CODE, UNKNOWN_SCHEDULED_FUNCTION_DEVELOPMENT_FUNCTION_TYPE_CODE, _onCallWithCallTypeFunction, aggregateCrudModelApiDetails, aggregateModelApiDetails, aggregateSpecifierApiDetails, alreadyExistsError, appAnalyticsModuleMetadata, appFirestoreModuleMetadata, assertContextHasAuth, assertDocumentExists, assertHasRolesInRequest, assertHasSignedTosInRequest, assertIsAdminInRequest, assertIsAdminOrTargetUserInRequestData, assertIsContextWithAuthData, assertRequestRequiresAuthForFunction, assertSnapshotData, assertSnapshotDataWithKey, authServicePasswordResetInvalidCodeError, authServicePasswordResetNoConfigError, authServicePasswordResetSendOnceError, authServicePasswordResetThrottleError, badRequestError, blockingFunctionHandlerWithNestContextFactory, buildNestServerRootModule, callWithAnalytics, catchAndThrowPasswordResetServerErrors, cloudEventHandlerWithNestContextFactory, collectionRefForPath, createModelUnknownModelTypeError, defaultFirebaseServerActionsTransformFactoryLogErrorFunction, defaultProvideFirebaseServerStorageServiceSimple, deleteModelUnknownModelTypeError, developmentUnknownSpecifierError, docRefForPath, documentModelNotAvailableError, executeOnCallQuery, firebaseAuthTokenFromDecodedIdToken, firebaseServerActionsContext, firebaseServerActionsTransformContext, firebaseServerActionsTransformFactory, firebaseServerAppTokenProvider, firebaseServerAuthModuleMetadata, firebaseServerDevFunctions, firebaseServerEnvTokenProvider, firebaseServerEnvTokenProviders, firebaseServerErrorInfo, firebaseServerErrorInfoCodePair, firebaseServerErrorInfoServerErrorCodePair, firebaseServerErrorInfoServerErrorPair, firebaseServerFirestoreContextModuleMetadata, firebaseServerStorageDefaultBucketIdTokenProvider, firebaseServerStorageModuleMetadata, firebaseServerValidationError, firebaseServerValidationServerError, firestoreClientQueryConstraintFunctionsDriver, firestoreEncryptedField, firestoreServerIncrementUpdateToUpdateData, forbiddenError, getAuthUserOrUndefined, getModelApiDetails, googleCloudFileMetadataToStorageMetadata, googleCloudFirebaseStorageContextFactory, googleCloudFirebaseStorageDrivers, googleCloudFirestoreAccessorDriver, googleCloudFirestoreContextFactory, googleCloudFirestoreDrivers, googleCloudFirestoreQueryDriver, googleCloudStorageAccessorFile, googleCloudStorageAccessorFolder, googleCloudStorageBucketForStorageFilePath, googleCloudStorageFileForStorageFilePath, googleCloudStorageFirebaseStorageAccessorDriver, googleCloudStorageFromFirebaseAdminStorage, googleCloudStorageListFilesResultFactory, handleFirebaseAuthError, handleFirebaseError, hasAuthRolesInRequest, hasNewUserSetupPasswordInRequest, hasSignedTosInRequest, inAuthContext, injectNestApplicationContextIntoRequest, injectNestIntoRequest, internalServerError, invokeModelUnknownModelTypeError, isActualSpecifier, isAdminInRequest, isAdminOrTargetUserInRequestData, isContextWithAuthData, isFirebaseError, isFirebaseHttpsError, isOnCallCrudModelApiDetails, isOnCallHandlerApiDetails, isOnCallModelTypeApiDetails, isOnCallSpecifierApiDetails, makeBlockingFunctionWithHandler, makeOnScheduleHandlerWithNestApplicationRequest, makeScheduledFunctionDevelopmentFunction, modelAccessReadErrorFromUseMultipleModelsFailure, modelApiModuleMetadata, modelNotAvailableError, nestAppHasDevelopmentSchedulerEnabled, nestAppIsProductionEnvironment, nestFirebaseDoesNotExistError, nestFirebaseForbiddenPermissionError, nestServerInstance, noRunNameSpecifiedForScheduledFunctionDevelopmentFunction, noopFirebaseServerAnalyticsServiceListener, noopOnCallModelAnalyticsService, notFoundError, onCallAnalyticsEmitterInstance, onCallCreateModel, onCallDeleteModel, onCallDevelopmentFunction, onCallHandlerWithNestApplicationFactory, onCallHandlerWithNestContextFactory, onCallInvokeModel, onCallModel, onCallModelMissingCallTypeError, onCallModelUnknownCallTypeError, onCallQueryModel, onCallReadModel, onCallSpecifierHandler, onCallUpdateModel, onScheduleHandlerWithNestApplicationFactory, onScheduleHandlerWithNestContextFactory, optionalAuthContext, optionalFirestoreEncryptedField, permissionDeniedError, phoneNumberAlreadyExistsError, preconditionConflictError, provideAppFirestoreCollections, provideFirebaseServerAuthService, provideFirebaseServerStorageService, queryModelBadCursorError, queryModelUnknownModelTypeError, readApiDetails, readModelUnknownModelTypeError, resolveAdminOnlyValue, resolveAnalyticsFromApiDetails, setNestContextOnRequest, setNestContextOnScheduleRequest, taskQueueFunctionHandlerWithNestContextFactory, unauthenticatedContextHasNoAuthData, unauthenticatedContextHasNoUidError, unauthenticatedError, unavailableError, unavailableOrDeactivatedFunctionError, unknownModelCrudFunctionSpecifierError, unknownScheduledFunctionDevelopmentFunctionName, unknownScheduledFunctionDevelopmentFunctionType, updateModelUnknownModelTypeError, userContextFromUid, verifyAppCheckInRequest, withApiDetails };
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@dereekb/firebase-server/mailgun",
3
- "version": "13.11.18",
3
+ "version": "13.12.0",
4
4
  "peerDependencies": {
5
- "@dereekb/analytics": "13.11.18",
6
- "@dereekb/firebase": "13.11.18",
7
- "@dereekb/firebase-server": "13.11.18",
8
- "@dereekb/date": "13.11.18",
9
- "@dereekb/nestjs": "13.11.18",
10
- "@dereekb/model": "13.11.18",
11
- "@dereekb/rxjs": "13.11.18",
12
- "@dereekb/util": "13.11.18"
5
+ "@dereekb/analytics": "13.12.0",
6
+ "@dereekb/firebase": "13.12.0",
7
+ "@dereekb/firebase-server": "13.12.0",
8
+ "@dereekb/date": "13.12.0",
9
+ "@dereekb/nestjs": "13.12.0",
10
+ "@dereekb/model": "13.12.0",
11
+ "@dereekb/rxjs": "13.12.0",
12
+ "@dereekb/util": "13.12.0"
13
13
  },
14
14
  "exports": {
15
15
  "./package.json": "./package.json",
@@ -0,0 +1 @@
1
+ exports._default = require('./index.cjs.js').default;