@dereekb/firebase-server 13.16.0 → 13.18.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.
package/index.cjs.js CHANGED
@@ -7577,6 +7577,11 @@ function _ts_generator$9(thisArg, body) {
7577
7577
  * permission-denied / not-found errors surface a real message + code instead of the generic
7578
7578
  * `"Unknown error"` fallback the inline mapping used previously.
7579
7579
  *
7580
+ * When no real message survives, the fallback is derived from the resolved error `code` so the two
7581
+ * distinct outcomes stay distinguishable — a not-found read no longer reads as "permission denied"
7582
+ * (and vice-versa). Only when neither a message nor a recognizable code is present does it fall back
7583
+ * to a generic message.
7584
+ *
7580
7585
  * @param entry - A failed-key entry from the underlying multi-read.
7581
7586
  * @returns A `{ key, message, code? }` triple safe to return to API/MCP callers.
7582
7587
  */ function modelAccessReadErrorFromUseMultipleModelsFailure(entry) {
@@ -7589,10 +7594,28 @@ function _ts_generator$9(thisArg, body) {
7589
7594
  var code = (_info_serverErrorCode = info.serverErrorCode) !== null && _info_serverErrorCode !== void 0 ? _info_serverErrorCode : info.firebaseErrorCode;
7590
7595
  return {
7591
7596
  key: entry.key,
7592
- 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',
7597
+ message: (_ref = (_ref1 = serverMessage !== null && serverMessage !== void 0 ? serverMessage : httpsMessage) !== null && _ref1 !== void 0 ? _ref1 : plainMessage) !== null && _ref !== void 0 ? _ref : modelAccessReadErrorMessageFromCode(code),
7593
7598
  code: code
7594
7599
  };
7595
7600
  }
7601
+ /**
7602
+ * Derives a fallback read-error message from a resolved error code, distinguishing not-found from
7603
+ * permission-denied. Accepts both the server-error form (`NOT_FOUND` / `PERMISSION_DENIED` /
7604
+ * `FORBIDDEN`) and the Firebase HttpsError form (`not-found` / `permission-denied`).
7605
+ *
7606
+ * @param code - The resolved error code (`serverErrorCode ?? firebaseErrorCode`), if any.
7607
+ * @returns `'not found'`, `'permission denied'`, or a generic `'unknown error'` fallback.
7608
+ */ function modelAccessReadErrorMessageFromCode(code) {
7609
+ var message;
7610
+ if (code === firebase.NOT_FOUND_ERROR_CODE || code === 'not-found') {
7611
+ message = 'not found';
7612
+ } else if (code === firebase.PERMISSION_DENIED_ERROR_CODE || code === firebase.FORBIDDEN_ERROR_CODE || code === 'permission-denied') {
7613
+ message = 'permission denied';
7614
+ } else {
7615
+ message = 'unknown error';
7616
+ }
7617
+ return message;
7618
+ }
7596
7619
  // MARK: Service
7597
7620
  /**
7598
7621
  * Service for direct document reads using the `useModel()` permission-checking pattern.
package/index.esm.js CHANGED
@@ -7575,6 +7575,11 @@ function _ts_generator$9(thisArg, body) {
7575
7575
  * permission-denied / not-found errors surface a real message + code instead of the generic
7576
7576
  * `"Unknown error"` fallback the inline mapping used previously.
7577
7577
  *
7578
+ * When no real message survives, the fallback is derived from the resolved error `code` so the two
7579
+ * distinct outcomes stay distinguishable — a not-found read no longer reads as "permission denied"
7580
+ * (and vice-versa). Only when neither a message nor a recognizable code is present does it fall back
7581
+ * to a generic message.
7582
+ *
7578
7583
  * @param entry - A failed-key entry from the underlying multi-read.
7579
7584
  * @returns A `{ key, message, code? }` triple safe to return to API/MCP callers.
7580
7585
  */ function modelAccessReadErrorFromUseMultipleModelsFailure(entry) {
@@ -7587,10 +7592,28 @@ function _ts_generator$9(thisArg, body) {
7587
7592
  var code = (_info_serverErrorCode = info.serverErrorCode) !== null && _info_serverErrorCode !== void 0 ? _info_serverErrorCode : info.firebaseErrorCode;
7588
7593
  return {
7589
7594
  key: entry.key,
7590
- 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',
7595
+ message: (_ref = (_ref1 = serverMessage !== null && serverMessage !== void 0 ? serverMessage : httpsMessage) !== null && _ref1 !== void 0 ? _ref1 : plainMessage) !== null && _ref !== void 0 ? _ref : modelAccessReadErrorMessageFromCode(code),
7591
7596
  code: code
7592
7597
  };
7593
7598
  }
7599
+ /**
7600
+ * Derives a fallback read-error message from a resolved error code, distinguishing not-found from
7601
+ * permission-denied. Accepts both the server-error form (`NOT_FOUND` / `PERMISSION_DENIED` /
7602
+ * `FORBIDDEN`) and the Firebase HttpsError form (`not-found` / `permission-denied`).
7603
+ *
7604
+ * @param code - The resolved error code (`serverErrorCode ?? firebaseErrorCode`), if any.
7605
+ * @returns `'not found'`, `'permission denied'`, or a generic `'unknown error'` fallback.
7606
+ */ function modelAccessReadErrorMessageFromCode(code) {
7607
+ var message;
7608
+ if (code === NOT_FOUND_ERROR_CODE || code === 'not-found') {
7609
+ message = 'not found';
7610
+ } else if (code === PERMISSION_DENIED_ERROR_CODE || code === FORBIDDEN_ERROR_CODE || code === 'permission-denied') {
7611
+ message = 'permission denied';
7612
+ } else {
7613
+ message = 'unknown error';
7614
+ }
7615
+ return message;
7616
+ }
7594
7617
  // MARK: Service
7595
7618
  /**
7596
7619
  * Service for direct document reads using the `useModel()` permission-checking pattern.
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@dereekb/firebase-server/mailgun",
3
- "version": "13.16.0",
3
+ "version": "13.18.0",
4
4
  "peerDependencies": {
5
- "@dereekb/analytics": "13.16.0",
6
- "@dereekb/firebase": "13.16.0",
7
- "@dereekb/firebase-server": "13.16.0",
8
- "@dereekb/date": "13.16.0",
9
- "@dereekb/nestjs": "13.16.0",
10
- "@dereekb/model": "13.16.0",
11
- "@dereekb/rxjs": "13.16.0",
12
- "@dereekb/util": "13.16.0"
5
+ "@dereekb/analytics": "13.18.0",
6
+ "@dereekb/firebase": "13.18.0",
7
+ "@dereekb/firebase-server": "13.18.0",
8
+ "@dereekb/date": "13.18.0",
9
+ "@dereekb/nestjs": "13.18.0",
10
+ "@dereekb/model": "13.18.0",
11
+ "@dereekb/rxjs": "13.18.0",
12
+ "@dereekb/util": "13.18.0"
13
13
  },
14
14
  "exports": {
15
15
  "./package.json": "./package.json",