@dereekb/firebase-server 13.11.1 → 13.11.3

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 (39) hide show
  1. package/index.cjs.js +29 -2
  2. package/index.esm.js +30 -3
  3. package/mailgun/package.json +9 -9
  4. package/model/index.cjs.js +330 -43
  5. package/model/index.esm.js +332 -46
  6. package/model/package.json +9 -9
  7. package/model/src/lib/notification/notification.action.server.d.ts +16 -1
  8. package/model/src/lib/notification/notification.module.d.ts +4 -0
  9. package/oidc/index.cjs.js +2 -52
  10. package/oidc/index.esm.js +2 -47
  11. package/oidc/package.json +10 -10
  12. package/oidc/src/lib/scope.d.ts +1 -41
  13. package/package.json +10 -10
  14. package/src/lib/firestore/array.d.ts +1 -0
  15. package/src/lib/firestore/driver.accessor.batch.d.ts +1 -0
  16. package/src/lib/firestore/driver.accessor.default.d.ts +1 -0
  17. package/src/lib/firestore/driver.accessor.transaction.d.ts +1 -0
  18. package/src/lib/firestore/driver.query.d.ts +1 -0
  19. package/src/lib/firestore/increment.d.ts +1 -0
  20. package/src/lib/firestore/snapshot/snapshot.field.encrypt.d.ts +2 -0
  21. package/src/lib/nest/app.module.d.ts +1 -0
  22. package/src/lib/nest/auth/auth.module.d.ts +1 -0
  23. package/src/lib/nest/development/development.app.function.d.ts +1 -0
  24. package/src/lib/nest/development/development.function.d.ts +1 -0
  25. package/src/lib/nest/development/development.schedule.function.d.ts +1 -0
  26. package/src/lib/nest/development/development.schedule.function.error.d.ts +1 -0
  27. package/src/lib/nest/function/call.d.ts +1 -0
  28. package/src/lib/nest/function/context.d.ts +1 -0
  29. package/src/lib/nest/function/v2/blocking.d.ts +2 -0
  30. package/src/lib/nest/function/v2/call.d.ts +2 -0
  31. package/src/lib/nest/function/v2/event.d.ts +1 -0
  32. package/src/lib/nest/function/v2/schedule.d.ts +3 -0
  33. package/src/lib/nest/function/v2/taskqueue.d.ts +1 -0
  34. package/src/lib/nest/model/analytics.handler.d.ts +1 -0
  35. package/src/lib/nest/model/call.model.function.d.ts +1 -0
  36. package/src/lib/nest/model/create.model.function.d.ts +1 -0
  37. package/src/lib/nest/storage/storage.module.d.ts +1 -0
  38. package/test/package.json +11 -11
  39. package/zoho/package.json +9 -9
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@dereekb/firebase-server/model",
3
- "version": "13.11.1",
3
+ "version": "13.11.3",
4
4
  "peerDependencies": {
5
- "@dereekb/analytics": "13.11.1",
6
- "@dereekb/date": "13.11.1",
7
- "@dereekb/firebase": "13.11.1",
8
- "@dereekb/firebase-server": "13.11.1",
9
- "@dereekb/model": "13.11.1",
10
- "@dereekb/nestjs": "13.11.1",
11
- "@dereekb/rxjs": "13.11.1",
12
- "@dereekb/util": "13.11.1",
5
+ "@dereekb/analytics": "13.11.3",
6
+ "@dereekb/date": "13.11.3",
7
+ "@dereekb/firebase": "13.11.3",
8
+ "@dereekb/firebase-server": "13.11.3",
9
+ "@dereekb/model": "13.11.3",
10
+ "@dereekb/nestjs": "13.11.3",
11
+ "@dereekb/rxjs": "13.11.3",
12
+ "@dereekb/util": "13.11.3",
13
13
  "@nestjs/common": "^11.1.19",
14
14
  "@nestjs/config": "^4.0.4",
15
15
  "archiver": "^7.0.1",
@@ -1,4 +1,4 @@
1
- import { type AsyncNotificationSummaryCreateAction, type AsyncNotificationUserCreateAction, type AsyncNotificationUserUpdateAction, type CleanupSentNotificationsParams, type CreateNotificationBoxParams, type CreateNotificationSummaryParams, type CreateNotificationUserParams, type NotificationSummaryDocument, type NotificationUser, type NotificationUserDocument, type SendNotificationParams, type SendQueuedNotificationsParams, type UpdateNotificationBoxParams, type UpdateNotificationBoxRecipientParams, type UpdateNotificationUserParams, type AsyncNotificationBoxCreateAction, type AsyncNotificationBoxUpdateAction, type CleanupSentNotificationsResult, type FirestoreContextReference, type NotificationBox, type NotificationBoxDocument, type NotificationDocument, type NotificationFirestoreCollections, type SendNotificationResult, type SendQueuedNotificationsResult, type Transaction, type ResyncAllNotificationUserParams, type ResyncAllNotificationUsersResult, type ResyncNotificationUserResult, type ResyncNotificationUserParams, type AppNotificationTemplateTypeInfoRecordServiceRef, type AsyncNotificationSummaryUpdateAction, type UpdateNotificationSummaryParams, type NotificationBoxDocumentReferencePair } from '@dereekb/firebase';
1
+ import { type AsyncNotificationSummaryCreateAction, type AsyncNotificationUserCreateAction, type AsyncNotificationUserUpdateAction, type CleanupSentNotificationsParams, type CleanupOldNotificationLoggedEventDaysParams, type CleanupOldNotificationLoggedEventDaysResult, type CreateNotificationBoxParams, type CreateNotificationSummaryParams, type CreateNotificationUserParams, type NotificationSummaryDocument, type NotificationUser, type NotificationUserDocument, type SendNotificationParams, type SendQueuedNotificationsParams, type UpdateNotificationBoxParams, type UpdateNotificationBoxRecipientParams, type UpdateNotificationUserParams, type AsyncNotificationBoxCreateAction, type AsyncNotificationBoxUpdateAction, type CleanupSentNotificationsResult, type FirestoreContextReference, type NotificationBox, type NotificationBoxDocument, type NotificationDocument, type NotificationFirestoreCollections, type SendNotificationResult, type SendQueuedNotificationsResult, type Transaction, type ResyncAllNotificationUserParams, type ResyncAllNotificationUsersResult, type ResyncNotificationUserResult, type ResyncNotificationUserParams, type AppNotificationTemplateTypeInfoRecordServiceRef, type AsyncNotificationSummaryUpdateAction, type UpdateNotificationSummaryParams, type NotificationBoxDocumentReferencePair } from '@dereekb/firebase';
2
2
  import { type FirebaseServerActionsContext, type FirebaseServerAuthServiceRef } from '@dereekb/firebase-server';
3
3
  import { type TransformAndValidateFunctionResult } from '@dereekb/model';
4
4
  import { type Maybe } from '@dereekb/util';
@@ -58,6 +58,7 @@ export declare abstract class NotificationServerActions {
58
58
  abstract sendNotification(params: SendNotificationParams): Promise<TransformAndValidateFunctionResult<SendNotificationParams, (notificationDocument: NotificationDocument) => Promise<SendNotificationResult>>>;
59
59
  abstract sendQueuedNotifications(params: SendQueuedNotificationsParams): Promise<TransformAndValidateFunctionResult<SendQueuedNotificationsParams, (sendQueuedNotificationsInput?: Maybe<SendQueuedNotificationsInput>) => Promise<SendQueuedNotificationsResult>>>;
60
60
  abstract cleanupSentNotifications(params: CleanupSentNotificationsParams): Promise<TransformAndValidateFunctionResult<CleanupSentNotificationsParams, () => Promise<CleanupSentNotificationsResult>>>;
61
+ abstract cleanupOldNotificationLoggedEventDays(params: CleanupOldNotificationLoggedEventDaysParams): Promise<TransformAndValidateFunctionResult<CleanupOldNotificationLoggedEventDaysParams, () => Promise<CleanupOldNotificationLoggedEventDaysResult>>>;
61
62
  }
62
63
  /**
63
64
  * Creates a concrete {@link NotificationServerActions} implementation by wiring each action
@@ -314,3 +315,17 @@ export declare function sendQueuedNotificationsFactory(context: NotificationServ
314
315
  * @returns a transform-and-validate function that cleans up sent notification documents and returns aggregate results
315
316
  */
316
317
  export declare function cleanupSentNotificationsFactory(context: NotificationServerActionsContext): import("@dereekb/model").TransformAndValidateFunctionResultFunction<CleanupSentNotificationsParams, () => Promise<CleanupSentNotificationsResult>, object, unknown>;
318
+ /**
319
+ * Factory for the `cleanupOldNotificationLoggedEventDays` action.
320
+ *
321
+ * Queries the {@link NotificationLoggedEventDayFirestoreCollectionGroup} for day documents whose
322
+ * ISO day string ID is older than `now - retentionDays`, then deletes each old day's wrapper doc
323
+ * and all of its nested page documents (the paged `_index` plus every page).
324
+ *
325
+ * For each old day, all docs in the day's paged subcollection are deleted before the wrapper doc
326
+ * itself, so a partial failure leaves the index pointing at zero pages rather than orphaned ones.
327
+ *
328
+ * @param context - the notification server actions context with paged-items collection access
329
+ * @returns a transform-and-validate function that purges old logged-event days and returns aggregate counts
330
+ */
331
+ export declare function cleanupOldNotificationLoggedEventDaysFactory(context: NotificationServerActionsContext): import("@dereekb/model").TransformAndValidateFunctionResultFunction<CleanupOldNotificationLoggedEventDaysParams, () => Promise<CleanupOldNotificationLoggedEventDaysResult>, object, unknown>;
@@ -31,6 +31,10 @@ export declare function notificationServerActionsContextFactory(context: BaseNot
31
31
  notificationCollectionGroup: import("@dereekb/firebase").NotificationFirestoreCollectionGroup;
32
32
  notificationWeekCollectionFactory: import("@dereekb/firebase").NotificationWeekFirestoreCollectionFactory;
33
33
  notificationWeekCollectionGroup: import("@dereekb/firebase").NotificationWeekFirestoreCollectionGroup;
34
+ notificationLoggedEventDayCollectionFactory: import("@dereekb/firebase").NotificationLoggedEventDayFirestoreCollectionFactory;
35
+ notificationLoggedEventDayCollectionGroup: import("@dereekb/firebase").NotificationLoggedEventDayFirestoreCollectionGroup;
36
+ notificationLoggedEventDayPagedItemsCollectionFactory: import("@dereekb/firebase").NotificationLoggedEventDayPagedItemsFirestoreCollectionFactory;
37
+ notificationLoggedEventDayPageCollectionGroup: import("@dereekb/firebase").NotificationLoggedEventDayPageFirestoreCollectionGroup;
34
38
  authService: import("dist/packages/firebase-server/src").FirebaseServerAuthService<import("dist/packages/firebase-server/src").FirebaseServerAuthUserContext, import("dist/packages/firebase-server/src").FirebaseServerAuthContext<import("dist/packages/firebase-server/src").FirebaseServerAuthUserContext>>;
35
39
  firestoreContext: import("@dereekb/firebase").FirestoreContext<import("@dereekb/firebase").Firestore>;
36
40
  };
package/oidc/index.cjs.js CHANGED
@@ -5812,51 +5812,6 @@ function _unsupported_iterable_to_array(o, minLen) {
5812
5812
  };
5813
5813
  }
5814
5814
 
5815
- /**
5816
- * Prefix shared by every callModel OIDC scope (e.g., `model.create`).
5817
- *
5818
- * Kept stable so OAuth consent screens render consistent labels and so
5819
- * future per-resource scopes (e.g., `model.create:profile`) compose cleanly.
5820
- */ var CALL_MODEL_OIDC_SCOPE_PREFIX = 'model.';
5821
- /**
5822
- * Canonical CRUD scopes enforced on the `callModel` API.
5823
- *
5824
- * Each scope corresponds 1:1 to a {@link KnownOnCallFunctionType}; see
5825
- * {@link CALL_MODEL_OIDC_SCOPE_FOR_CALL_TYPE}.
5826
- */ var CALL_MODEL_OIDC_SCOPES = [
5827
- 'model.create',
5828
- 'model.read',
5829
- 'model.update',
5830
- 'model.delete',
5831
- 'model.query'
5832
- ];
5833
- /**
5834
- * Maps each known CRUD call type to the scope an OIDC token must carry to invoke it.
5835
- */ var CALL_MODEL_OIDC_SCOPE_FOR_CALL_TYPE = {
5836
- create: 'model.create',
5837
- read: 'model.read',
5838
- update: 'model.update',
5839
- delete: 'model.delete',
5840
- query: 'model.query'
5841
- };
5842
- /**
5843
- * Resolves the OIDC scope that an OIDC-authenticated caller must hold to invoke
5844
- * the given callModel `call` type.
5845
- *
5846
- * Returns `undefined` for non-CRUD (custom) call types so that scope enforcement
5847
- * is opt-in for app-specific verbs — apps can still gate them via their own
5848
- * `preAssert` if needed.
5849
- *
5850
- * @param call - The CRUD call type from {@link OnCallTypedModelParams.call}.
5851
- * @returns The required scope, or `undefined` if `call` is not one of the known CRUD verbs.
5852
- */ function callModelOidcScopeForCallType(call) {
5853
- var result = call == null ? undefined : CALL_MODEL_OIDC_SCOPE_FOR_CALL_TYPE[call];
5854
- return result;
5855
- }
5856
- /**
5857
- * Error code used when an OIDC-authenticated caller is missing the required
5858
- * `model.*` scope for a callModel CRUD operation.
5859
- */ var CALL_MODEL_MISSING_OIDC_SCOPE_ERROR_CODE = 'CALL_MODEL_MISSING_OIDC_SCOPE';
5860
5815
  /**
5861
5816
  * Builds a {@link AssertModelCrudRequestFunction} that rejects callModel requests
5862
5817
  * lacking the OIDC scope mapped from the call type.
@@ -5874,13 +5829,13 @@ function _unsupported_iterable_to_array(o, minLen) {
5874
5829
  * @returns The pre-assertion function ready to plug into `OnCallModelConfig.preAssert`.
5875
5830
  */ function oidcCallModelScopePreAssert() {
5876
5831
  var fn = function fn(context) {
5877
- var requiredScope = callModelOidcScopeForCallType(context.call);
5832
+ var requiredScope = firebase.callModelOidcScopeForCallType(context.call);
5878
5833
  var scopes = requiredScope == null ? undefined : getOidcScopesFromRequest(context.request);
5879
5834
  var isMissingScope = requiredScope != null && scopes != null && !scopes.has(requiredScope);
5880
5835
  if (isMissingScope) {
5881
5836
  throw firebaseServer.forbiddenError({
5882
5837
  status: 403,
5883
- code: CALL_MODEL_MISSING_OIDC_SCOPE_ERROR_CODE,
5838
+ code: firebase.CALL_MODEL_MISSING_OIDC_SCOPE_ERROR_CODE,
5884
5839
  message: "Missing required OIDC scope for callModel: ".concat(requiredScope),
5885
5840
  data: {
5886
5841
  requiredScope: requiredScope,
@@ -5892,10 +5847,6 @@ function _unsupported_iterable_to_array(o, minLen) {
5892
5847
  return fn;
5893
5848
  }
5894
5849
 
5895
- exports.CALL_MODEL_MISSING_OIDC_SCOPE_ERROR_CODE = CALL_MODEL_MISSING_OIDC_SCOPE_ERROR_CODE;
5896
- exports.CALL_MODEL_OIDC_SCOPES = CALL_MODEL_OIDC_SCOPES;
5897
- exports.CALL_MODEL_OIDC_SCOPE_FOR_CALL_TYPE = CALL_MODEL_OIDC_SCOPE_FOR_CALL_TYPE;
5898
- exports.CALL_MODEL_OIDC_SCOPE_PREFIX = CALL_MODEL_OIDC_SCOPE_PREFIX;
5899
5850
  exports.DEFAULT_APP_OAUTH_CONSENT_PATH_PART = DEFAULT_APP_OAUTH_CONSENT_PATH_PART;
5900
5851
  exports.DEFAULT_APP_OAUTH_INTERACTION_PATH = DEFAULT_APP_OAUTH_INTERACTION_PATH;
5901
5852
  exports.DEFAULT_APP_OAUTH_LOGIN_PATH_PART = DEFAULT_APP_OAUTH_LOGIN_PATH_PART;
@@ -5926,7 +5877,6 @@ exports.OidcServerFirestoreCollections = OidcServerFirestoreCollections;
5926
5877
  exports.activeJwksKeysQuery = activeJwksKeysQuery;
5927
5878
  exports.appOidcModelModuleMetadata = appOidcModelModuleMetadata;
5928
5879
  exports.applyOidcAuthMiddleware = applyOidcAuthMiddleware;
5929
- exports.callModelOidcScopeForCallType = callModelOidcScopeForCallType;
5930
5880
  exports.createAdapterFactory = createAdapterFactory;
5931
5881
  exports.createOidcClientFactory = createOidcClientFactory;
5932
5882
  exports.deleteOidcClientFactory = deleteOidcClientFactory;
package/oidc/index.esm.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { createParamDecorator, Injectable, Inject, Optional, Logger, UnauthorizedException, Get, Param, Req, Res, Post, HttpCode, HttpStatus, Body, Controller, HttpException, All } from '@nestjs/common';
2
2
  import { generateKeyPairSync, randomBytes } from 'node:crypto';
3
3
  import { resolveEncryptionKey, encryptValue, decryptValue, createAesStringEncryptionProvider, isValidAES256GCMEncryptionSecret } from '@dereekb/nestjs';
4
- import { where, iterateFirestoreDocumentSnapshotPairs, firestoreModelIdentity, snapshotConverterFunctions, optionalFirestoreDate, firestoreDate, firestoreEnum, firestorePassThroughField, AbstractFirestoreDocument, createOidcClientParamsType, deleteOidcClientParamsType, rotateOidcClientSecretParamsType, updateOidcClientParamsType, firestoreModelKey, oidcEntryIdentity, OIDC_ENTRY_CLIENT_TYPE, oidcEntriesByUserCodeQuery, oidcEntriesByUidQuery, oidcEntriesByGrantIdQuery, oidcEntryFirestoreCollection } from '@dereekb/firebase';
4
+ import { where, iterateFirestoreDocumentSnapshotPairs, firestoreModelIdentity, snapshotConverterFunctions, optionalFirestoreDate, firestoreDate, firestoreEnum, firestorePassThroughField, AbstractFirestoreDocument, createOidcClientParamsType, deleteOidcClientParamsType, rotateOidcClientSecretParamsType, updateOidcClientParamsType, firestoreModelKey, oidcEntryIdentity, OIDC_ENTRY_CLIENT_TYPE, oidcEntriesByUserCodeQuery, oidcEntriesByUidQuery, oidcEntriesByGrantIdQuery, oidcEntryFirestoreCollection, callModelOidcScopeForCallType, CALL_MODEL_MISSING_OIDC_SCOPE_ERROR_CODE } from '@dereekb/firebase';
5
5
  import { cachedGetter, unixDateTimeSecondsNumberToDate, unixDateTimeSecondsNumberForNow, selectiveFieldEncryptor, filterUndefinedValues, websiteUrlFromPaths, firstValue, hasHttpPrefix } from '@dereekb/util';
6
6
  import { firestoreEncryptedField, firebaseServerActionsContext, FirebaseServerEnvService, FIREBASE_FIRESTORE_CONTEXT_TOKEN, FirebaseServerFirestoreContextModule, forbiddenError } from '@dereekb/firebase-server';
7
7
  import { nanoid } from 'nanoid';
@@ -5810,51 +5810,6 @@ function _unsupported_iterable_to_array(o, minLen) {
5810
5810
  };
5811
5811
  }
5812
5812
 
5813
- /**
5814
- * Prefix shared by every callModel OIDC scope (e.g., `model.create`).
5815
- *
5816
- * Kept stable so OAuth consent screens render consistent labels and so
5817
- * future per-resource scopes (e.g., `model.create:profile`) compose cleanly.
5818
- */ var CALL_MODEL_OIDC_SCOPE_PREFIX = 'model.';
5819
- /**
5820
- * Canonical CRUD scopes enforced on the `callModel` API.
5821
- *
5822
- * Each scope corresponds 1:1 to a {@link KnownOnCallFunctionType}; see
5823
- * {@link CALL_MODEL_OIDC_SCOPE_FOR_CALL_TYPE}.
5824
- */ var CALL_MODEL_OIDC_SCOPES = [
5825
- 'model.create',
5826
- 'model.read',
5827
- 'model.update',
5828
- 'model.delete',
5829
- 'model.query'
5830
- ];
5831
- /**
5832
- * Maps each known CRUD call type to the scope an OIDC token must carry to invoke it.
5833
- */ var CALL_MODEL_OIDC_SCOPE_FOR_CALL_TYPE = {
5834
- create: 'model.create',
5835
- read: 'model.read',
5836
- update: 'model.update',
5837
- delete: 'model.delete',
5838
- query: 'model.query'
5839
- };
5840
- /**
5841
- * Resolves the OIDC scope that an OIDC-authenticated caller must hold to invoke
5842
- * the given callModel `call` type.
5843
- *
5844
- * Returns `undefined` for non-CRUD (custom) call types so that scope enforcement
5845
- * is opt-in for app-specific verbs — apps can still gate them via their own
5846
- * `preAssert` if needed.
5847
- *
5848
- * @param call - The CRUD call type from {@link OnCallTypedModelParams.call}.
5849
- * @returns The required scope, or `undefined` if `call` is not one of the known CRUD verbs.
5850
- */ function callModelOidcScopeForCallType(call) {
5851
- var result = call == null ? undefined : CALL_MODEL_OIDC_SCOPE_FOR_CALL_TYPE[call];
5852
- return result;
5853
- }
5854
- /**
5855
- * Error code used when an OIDC-authenticated caller is missing the required
5856
- * `model.*` scope for a callModel CRUD operation.
5857
- */ var CALL_MODEL_MISSING_OIDC_SCOPE_ERROR_CODE = 'CALL_MODEL_MISSING_OIDC_SCOPE';
5858
5813
  /**
5859
5814
  * Builds a {@link AssertModelCrudRequestFunction} that rejects callModel requests
5860
5815
  * lacking the OIDC scope mapped from the call type.
@@ -5890,4 +5845,4 @@ function _unsupported_iterable_to_array(o, minLen) {
5890
5845
  return fn;
5891
5846
  }
5892
5847
 
5893
- export { CALL_MODEL_MISSING_OIDC_SCOPE_ERROR_CODE, CALL_MODEL_OIDC_SCOPES, CALL_MODEL_OIDC_SCOPE_FOR_CALL_TYPE, CALL_MODEL_OIDC_SCOPE_PREFIX, DEFAULT_APP_OAUTH_CONSENT_PATH_PART, DEFAULT_APP_OAUTH_INTERACTION_PATH, DEFAULT_APP_OAUTH_LOGIN_PATH_PART, DEFAULT_OIDC_CODE_CHALLENGE_METHODS, DEFAULT_OIDC_ID_TOKEN_SIGNING_ALG_VALUES, DEFAULT_OIDC_ISSUER_PATH, DEFAULT_OIDC_ROUTES, DEFAULT_OIDC_SUBJECT_TYPES, DEFAULT_OIDC_TOKEN_ENDPOINT_AUTH_METHODS, DEFAULT_OIDC_TOKEN_LIFETIMES, DEFAULT_ROTATED_KEY_MAX_AGE, FIREBASE_SERVER_OIDC_ROUTES_FOR_GLOBAL_ROUTE_EXCLUDE, JwksFirestoreCollections, JwksKeyDocument, JwksService, JwksServiceConfig, JwksServiceStorageConfig, OIDC_ENCRYPTED_PAYLOAD_FIELDS, OIDC_JWKS_ENCRYPTION_SECRET_ENV_KEY, OidcAccountService, OidcAccountServiceDelegate, OidcAccountServiceUserContext, OidcAuth, OidcAuthBearerTokenMiddleware, OidcAuthMiddlewareConfig, OidcClientService, OidcEncryptionService, OidcInteractionController, OidcInteractionService, OidcModelServerActions, OidcModuleConfig, OidcProviderConfigService, OidcProviderController, OidcServerFirestoreCollections, OidcService, OidcWellKnownController, activeJwksKeysQuery, appOidcModelModuleMetadata, applyOidcAuthMiddleware, callModelOidcScopeForCallType, createAdapterFactory, createOidcClientFactory, deleteOidcClientFactory, getOidcScopesFromRequest, jwksKeyCollectionReference, jwksKeyConverter, jwksKeyFirestoreCollection, jwksKeyIdentity, jwksKeysWithStatusQuery, nonRetiredJwksKeysQuery, oidcCallModelScopePreAssert, oidcFirestoreCollectionsFactory, oidcModelServerActions, oidcModelServerActionsFactory, oidcModuleConfigFactory, oidcModuleMetadata, rotateOidcClientSecretFactory, rotatedJwksKeysQuery, updateOidcClientFactory };
5848
+ export { DEFAULT_APP_OAUTH_CONSENT_PATH_PART, DEFAULT_APP_OAUTH_INTERACTION_PATH, DEFAULT_APP_OAUTH_LOGIN_PATH_PART, DEFAULT_OIDC_CODE_CHALLENGE_METHODS, DEFAULT_OIDC_ID_TOKEN_SIGNING_ALG_VALUES, DEFAULT_OIDC_ISSUER_PATH, DEFAULT_OIDC_ROUTES, DEFAULT_OIDC_SUBJECT_TYPES, DEFAULT_OIDC_TOKEN_ENDPOINT_AUTH_METHODS, DEFAULT_OIDC_TOKEN_LIFETIMES, DEFAULT_ROTATED_KEY_MAX_AGE, FIREBASE_SERVER_OIDC_ROUTES_FOR_GLOBAL_ROUTE_EXCLUDE, JwksFirestoreCollections, JwksKeyDocument, JwksService, JwksServiceConfig, JwksServiceStorageConfig, OIDC_ENCRYPTED_PAYLOAD_FIELDS, OIDC_JWKS_ENCRYPTION_SECRET_ENV_KEY, OidcAccountService, OidcAccountServiceDelegate, OidcAccountServiceUserContext, OidcAuth, OidcAuthBearerTokenMiddleware, OidcAuthMiddlewareConfig, OidcClientService, OidcEncryptionService, OidcInteractionController, OidcInteractionService, OidcModelServerActions, OidcModuleConfig, OidcProviderConfigService, OidcProviderController, OidcServerFirestoreCollections, OidcService, OidcWellKnownController, activeJwksKeysQuery, appOidcModelModuleMetadata, applyOidcAuthMiddleware, createAdapterFactory, createOidcClientFactory, deleteOidcClientFactory, getOidcScopesFromRequest, jwksKeyCollectionReference, jwksKeyConverter, jwksKeyFirestoreCollection, jwksKeyIdentity, jwksKeysWithStatusQuery, nonRetiredJwksKeysQuery, oidcCallModelScopePreAssert, oidcFirestoreCollectionsFactory, oidcModelServerActions, oidcModelServerActionsFactory, oidcModuleConfigFactory, oidcModuleMetadata, rotateOidcClientSecretFactory, rotatedJwksKeysQuery, updateOidcClientFactory };
package/oidc/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@dereekb/firebase-server/oidc",
3
- "version": "13.11.1",
3
+ "version": "13.11.3",
4
4
  "peerDependencies": {
5
- "@dereekb/analytics": "13.11.1",
6
- "@dereekb/date": "13.11.1",
7
- "@dereekb/firebase": "13.11.1",
8
- "@dereekb/firebase-server": "13.11.1",
9
- "@dereekb/model": "13.11.1",
10
- "@dereekb/nestjs": "13.11.1",
11
- "@dereekb/rxjs": "13.11.1",
12
- "@dereekb/util": "13.11.1",
13
- "@dereekb/zoho": "13.11.1",
5
+ "@dereekb/analytics": "13.11.3",
6
+ "@dereekb/date": "13.11.3",
7
+ "@dereekb/firebase": "13.11.3",
8
+ "@dereekb/firebase-server": "13.11.3",
9
+ "@dereekb/model": "13.11.3",
10
+ "@dereekb/nestjs": "13.11.3",
11
+ "@dereekb/rxjs": "13.11.3",
12
+ "@dereekb/util": "13.11.3",
13
+ "@dereekb/zoho": "13.11.3",
14
14
  "@nestjs/common": "^11.1.19",
15
15
  "@nestjs/config": "^4.0.4",
16
16
  "express": "^5.2.1",
@@ -1,45 +1,5 @@
1
- import { type Maybe } from '@dereekb/util';
2
- import { type KnownOnCallFunctionType, type OnCallFunctionType, type OnCallTypedModelParams } from '@dereekb/firebase';
1
+ import { type OnCallTypedModelParams } from '@dereekb/firebase';
3
2
  import { type AssertModelCrudRequestFunction } from '@dereekb/firebase-server';
4
- /**
5
- * Prefix shared by every callModel OIDC scope (e.g., `model.create`).
6
- *
7
- * Kept stable so OAuth consent screens render consistent labels and so
8
- * future per-resource scopes (e.g., `model.create:profile`) compose cleanly.
9
- */
10
- export declare const CALL_MODEL_OIDC_SCOPE_PREFIX = "model.";
11
- /**
12
- * Canonical CRUD scopes enforced on the `callModel` API.
13
- *
14
- * Each scope corresponds 1:1 to a {@link KnownOnCallFunctionType}; see
15
- * {@link CALL_MODEL_OIDC_SCOPE_FOR_CALL_TYPE}.
16
- */
17
- export declare const CALL_MODEL_OIDC_SCOPES: readonly ["model.create", "model.read", "model.update", "model.delete", "model.query"];
18
- /**
19
- * Union of the five canonical callModel CRUD scope strings.
20
- */
21
- export type CallModelOidcScope = (typeof CALL_MODEL_OIDC_SCOPES)[number];
22
- /**
23
- * Maps each known CRUD call type to the scope an OIDC token must carry to invoke it.
24
- */
25
- export declare const CALL_MODEL_OIDC_SCOPE_FOR_CALL_TYPE: Readonly<Record<KnownOnCallFunctionType, CallModelOidcScope>>;
26
- /**
27
- * Resolves the OIDC scope that an OIDC-authenticated caller must hold to invoke
28
- * the given callModel `call` type.
29
- *
30
- * Returns `undefined` for non-CRUD (custom) call types so that scope enforcement
31
- * is opt-in for app-specific verbs — apps can still gate them via their own
32
- * `preAssert` if needed.
33
- *
34
- * @param call - The CRUD call type from {@link OnCallTypedModelParams.call}.
35
- * @returns The required scope, or `undefined` if `call` is not one of the known CRUD verbs.
36
- */
37
- export declare function callModelOidcScopeForCallType(call: Maybe<OnCallFunctionType>): Maybe<CallModelOidcScope>;
38
- /**
39
- * Error code used when an OIDC-authenticated caller is missing the required
40
- * `model.*` scope for a callModel CRUD operation.
41
- */
42
- export declare const CALL_MODEL_MISSING_OIDC_SCOPE_ERROR_CODE = "CALL_MODEL_MISSING_OIDC_SCOPE";
43
3
  /**
44
4
  * Builds a {@link AssertModelCrudRequestFunction} that rejects callModel requests
45
5
  * lacking the OIDC scope mapped from the call type.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/firebase-server",
3
- "version": "13.11.1",
3
+ "version": "13.11.3",
4
4
  "sideEffects": false,
5
5
  "exports": {
6
6
  "./test": {
@@ -44,15 +44,15 @@
44
44
  "main": "./index.cjs.js",
45
45
  "types": "./src/index.d.ts",
46
46
  "peerDependencies": {
47
- "@dereekb/analytics": "13.11.1",
48
- "@dereekb/date": "13.11.1",
49
- "@dereekb/dbx-core": "13.11.1",
50
- "@dereekb/firebase": "13.11.1",
51
- "@dereekb/model": "13.11.1",
52
- "@dereekb/nestjs": "13.11.1",
53
- "@dereekb/rxjs": "13.11.1",
54
- "@dereekb/util": "13.11.1",
55
- "@dereekb/zoho": "13.11.1",
47
+ "@dereekb/analytics": "13.11.3",
48
+ "@dereekb/date": "13.11.3",
49
+ "@dereekb/dbx-core": "13.11.3",
50
+ "@dereekb/firebase": "13.11.3",
51
+ "@dereekb/model": "13.11.3",
52
+ "@dereekb/nestjs": "13.11.3",
53
+ "@dereekb/rxjs": "13.11.3",
54
+ "@dereekb/util": "13.11.3",
55
+ "@dereekb/zoho": "13.11.3",
56
56
  "@google-cloud/firestore": "^7.11.6",
57
57
  "@google-cloud/storage": "^7.19.0",
58
58
  "@nestjs/common": "^11.1.19",
@@ -13,5 +13,6 @@ import { type UpdateData, type FirestoreAccessorArrayUpdate } from '@dereekb/fir
13
13
  * remove: { tags: ['old-tag'] }
14
14
  * });
15
15
  * ```
16
+ * @__NO_SIDE_EFFECTS__
16
17
  */
17
18
  export declare function firestoreServerArrayUpdateToUpdateData<T extends object>(input: FirestoreAccessorArrayUpdate<T>): UpdateData<T>;
@@ -41,6 +41,7 @@ export declare class WriteBatchFirestoreDocumentDataAccessor<T> implements Fires
41
41
  * await accessor.set({ name: 'Alice' });
42
42
  * await batch.commit();
43
43
  * ```
44
+ * @__NO_SIDE_EFFECTS__
44
45
  */
45
46
  export declare function writeBatchAccessorFactory<T>(writeBatch: GoogleCloudWriteBatch): FirestoreDocumentDataAccessorFactory<T>;
46
47
  /**
@@ -32,6 +32,7 @@ export declare class DefaultFirestoreDocumentDataAccessor<T> implements Firestor
32
32
  * const factory = defaultFirestoreAccessorFactory<User>();
33
33
  * const accessor = factory.accessorFor(userDocRef);
34
34
  * ```
35
+ * @__NO_SIDE_EFFECTS__
35
36
  */
36
37
  export declare function defaultFirestoreAccessorFactory<T>(): FirestoreDocumentDataAccessorFactory<T>;
37
38
  /**
@@ -43,6 +43,7 @@ export declare class TransactionFirestoreDocumentDataAccessor<T> implements Fire
43
43
  * await accessor.update({ name: 'Updated' });
44
44
  * });
45
45
  * ```
46
+ * @__NO_SIDE_EFFECTS__
46
47
  */
47
48
  export declare function transactionAccessorFactory<T>(transaction: GoogleCloudTransaction): FirestoreDocumentDataAccessorFactory<T>;
48
49
  /**
@@ -16,6 +16,7 @@ export declare const FIRESTORE_CLIENT_QUERY_CONSTRAINT_HANDLER_MAPPING: FullFire
16
16
  * Translates abstract query constraints into Google Cloud Firestore query builder calls.
17
17
  *
18
18
  * @returns A {@link FirestoreQueryConstraintFunctionsDriver} for the server SDK.
19
+ * @__NO_SIDE_EFFECTS__
19
20
  */
20
21
  export declare function firestoreClientQueryConstraintFunctionsDriver(): FirestoreQueryConstraintFunctionsDriver;
21
22
  /**
@@ -15,5 +15,6 @@ import { type UpdateData, type FirestoreAccessorIncrementUpdate } from '@dereekb
15
15
  * likeCount: -1
16
16
  * });
17
17
  * ```
18
+ * @__NO_SIDE_EFFECTS__
18
19
  */
19
20
  export declare function firestoreServerIncrementUpdateToUpdateData<T extends object>(input: FirestoreAccessorIncrementUpdate<T>): UpdateData<T>;
@@ -44,6 +44,7 @@ export interface OptionalFirestoreEncryptedFieldConfig<T> {
44
44
  * @template T - The JSON-serializable value type.
45
45
  * @param config - Encryption field configuration.
46
46
  * @returns A field mapping configuration for encrypted values.
47
+ * @__NO_SIDE_EFFECTS__
47
48
  */
48
49
  export declare function firestoreEncryptedField<T>(config: FirestoreEncryptedFieldConfig<T>): FirestoreModelFieldMapFunctionsConfig<T, string>;
49
50
  /**
@@ -62,5 +63,6 @@ export declare function firestoreEncryptedField<T>(config: FirestoreEncryptedFie
62
63
  * @template T - The JSON-serializable value type.
63
64
  * @param config - Encryption field configuration.
64
65
  * @returns A field mapping configuration for optional encrypted values.
66
+ * @__NO_SIDE_EFFECTS__
65
67
  */
66
68
  export declare function optionalFirestoreEncryptedField<T>(config: OptionalFirestoreEncryptedFieldConfig<T>): FirestoreModelFieldMapFunctionsConfig<Maybe<T>, Maybe<string>>;
@@ -121,5 +121,6 @@ export interface NestServerRootModuleResult {
121
121
  *
122
122
  * @param config - Shared configuration
123
123
  * @returns The root module and resolved prefix config
124
+ * @__NO_SIDE_EFFECTS__
124
125
  */
125
126
  export declare function buildNestServerRootModule(config: NestServerRootModuleConfig): NestServerRootModuleResult;
@@ -38,6 +38,7 @@ export type ProvideFirebaseServerAuthService<T extends FirebaseServerAuthService
38
38
  * useFactory: (auth) => new MyAuthService(auth)
39
39
  * });
40
40
  * ```
41
+ * @__NO_SIDE_EFFECTS__
41
42
  */
42
43
  export declare function provideFirebaseServerAuthService<T extends FirebaseServerAuthService>(provider: ProvideFirebaseServerAuthService<T>): [ProvideFirebaseServerAuthService<T>, Provider<T>];
43
44
  export interface FirebaseServerAuthModuleMetadataConfig<T extends FirebaseServerAuthService> extends AdditionalModuleMetadata {
@@ -78,5 +78,6 @@ export interface FirebaseServerDevFunctions {
78
78
  *
79
79
  * export const { dev } = devFunctions;
80
80
  * ```
81
+ * @__NO_SIDE_EFFECTS__
81
82
  */
82
83
  export declare function firebaseServerDevFunctions<N extends AbstractFirebaseNestContext<any, any>, S extends NestApplicationScheduleConfiguredFunctionMap>(config: FirebaseServerDevFunctionsConfig<N, S>): FirebaseServerDevFunctions;
@@ -53,6 +53,7 @@ export interface OnCallDevelopmentConfig<N> {
53
53
  * resetData: resetDataFunction
54
54
  * });
55
55
  * ```
56
+ * @__NO_SIDE_EFFECTS__
56
57
  */
57
58
  export declare function onCallDevelopmentFunction<N>(map: OnCallDevelopmentFunctionMap<N>, config?: OnCallDevelopmentConfig<N>): OnCallWithNestContext<N, OnCallDevelopmentParams>;
58
59
  /**
@@ -34,5 +34,6 @@ export interface MakeScheduledFunctionDevelopmentFunctionConfig {
34
34
  * [SCHEDULED_FUNCTION_DEV_FUNCTION_SPECIFIER]: scheduleDev
35
35
  * };
36
36
  * ```
37
+ * @__NO_SIDE_EFFECTS__
37
38
  */
38
39
  export declare function makeScheduledFunctionDevelopmentFunction(config: MakeScheduledFunctionDevelopmentFunctionConfig): OnCallDevelopmentFunction<unknown, ScheduledFunctionDevelopmentFirebaseFunctionParams, ScheduledFunctionDevelopmentFirebaseFunctionResult>;
@@ -7,6 +7,7 @@ export declare const NO_RUN_NAME_SPECIFIED_FOR_SCHEDULED_FUNCTION_DEVELOPMENT_FU
7
7
  * without specifying which scheduled function to execute.
8
8
  *
9
9
  * @returns A bad-request error indicating the missing run name.
10
+ * @__NO_SIDE_EFFECTS__
10
11
  */
11
12
  export declare function noRunNameSpecifiedForScheduledFunctionDevelopmentFunction(): import("firebase-functions/https").HttpsError;
12
13
  /**
@@ -98,6 +98,7 @@ export interface OnCallWithAuthAwareNestRequireAuthRef {
98
98
  *
99
99
  * @param fn
100
100
  * @param request
101
+ * @__NO_SIDE_EFFECTS__
101
102
  */
102
103
  export declare function assertRequestRequiresAuthForFunction(fn: OnCallWithAuthAwareNestRequireAuthRef, request: OnCallWithNestContextRequest<any, any>): void;
103
104
  /**
@@ -124,5 +124,6 @@ export interface FirebaseServerActionsTransformFactoryOptions {
124
124
  *
125
125
  * @param options - Optional configuration for error logging behavior.
126
126
  * @returns A factory that creates type-safe transform functions from ArkType schemas.
127
+ * @__NO_SIDE_EFFECTS__
127
128
  */
128
129
  export declare function firebaseServerActionsTransformFactory(options?: FirebaseServerActionsTransformFactoryOptions): TransformAndValidateObjectFactory;
@@ -74,6 +74,7 @@ export interface BlockingFunctionBuilder<E extends object, O> {
74
74
  * @param handler - The handler logic to execute on each event.
75
75
  * @param opts - Optional {@link BlockingOptions} passed to the builder.
76
76
  * @returns A {@link BlockingFunctionWithHandler} with the handler accessible via `__handler`.
77
+ * @__NO_SIDE_EFFECTS__
77
78
  */
78
79
  export declare function makeBlockingFunctionWithHandler<E extends object, O>(blockingFunctionBuilder: BlockingFunctionBuilder<E, O>, handler: BlockingFunctionHandler<E, O>, opts?: Maybe<BlockingOptions>): BlockingFunctionWithHandler<E, O>;
79
80
  /**
@@ -128,5 +129,6 @@ export type BlockingFunctionHandlerWithNestContextFactory<N> = <E extends object
128
129
  *
129
130
  * @param makeNestContext - Factory that creates the typed context from the NestJS application context.
130
131
  * @returns A factory for creating nest-context-aware blocking function handlers.
132
+ * @__NO_SIDE_EFFECTS__
131
133
  */
132
134
  export declare function blockingFunctionHandlerWithNestContextFactory<N>(makeNestContext: MakeNestContext<N>): BlockingFunctionHandlerWithNestContextFactory<N>;
@@ -31,6 +31,7 @@ export type OnCallHandlerWithNestApplicationFactory = <I = unknown, O = unknown>
31
31
  *
32
32
  * @param defaultOpts - Default {@link https.CallableOptions} applied to all functions created by this factory.
33
33
  * @returns A factory that creates nest-application-aware callable functions.
34
+ * @__NO_SIDE_EFFECTS__
34
35
  */
35
36
  export declare function onCallHandlerWithNestApplicationFactory(defaultOpts?: https.CallableOptions): OnCallHandlerWithNestApplicationFactory;
36
37
  /**
@@ -57,5 +58,6 @@ export type OnCallHandlerWithNestContextFactory<C> = <I = unknown, O = unknown>(
57
58
  * @param appFactory - The base application-level callable factory.
58
59
  * @param makeNestContext - Factory that creates the typed context from the application context.
59
60
  * @returns A factory that creates typed-context-aware callable functions.
61
+ * @__NO_SIDE_EFFECTS__
60
62
  */
61
63
  export declare function onCallHandlerWithNestContextFactory<C>(appFactory: OnCallHandlerWithNestApplicationFactory, makeNestContext: MakeNestContext<C>): OnCallHandlerWithNestContextFactory<C>;
@@ -89,5 +89,6 @@ export type CloudEventHandlerWithNestContextFactory<N> = <E extends CloudEvent<a
89
89
  *
90
90
  * @param makeNestContext - Factory that creates the typed context from the NestJS application context.
91
91
  * @returns A factory for creating nest-context-aware event function handlers.
92
+ * @__NO_SIDE_EFFECTS__
92
93
  */
93
94
  export declare function cloudEventHandlerWithNestContextFactory<N>(makeNestContext: MakeNestContext<N>): CloudEventHandlerWithNestContextFactory<N>;
@@ -15,6 +15,7 @@ export type OnScheduleConfigWithGlobalOptions = OnScheduleConfig & Omit<Schedule
15
15
  * @param nestApplication - The initialized NestJS application context.
16
16
  * @param scheduleContext - The optional Firebase scheduler event, absent when invoked via `_runNow()`.
17
17
  * @returns A request object ready for schedule function handlers.
18
+ * @__NO_SIDE_EFFECTS__
18
19
  */
19
20
  export declare function makeOnScheduleHandlerWithNestApplicationRequest(nestApplication: INestApplicationContext, scheduleContext?: scheduler.ScheduledEvent): OnScheduleWithNestApplicationRequest<scheduler.ScheduledEvent>;
20
21
  /**
@@ -46,6 +47,7 @@ export type OnScheduleHandlerWithNestApplicationFactory = (schedule: OnScheduleC
46
47
  *
47
48
  * @param baseScheduleConfig - Optional default schedule options merged into every function created by this factory.
48
49
  * @returns A factory for creating nest-application-aware scheduled functions.
50
+ * @__NO_SIDE_EFFECTS__
49
51
  */
50
52
  export declare function onScheduleHandlerWithNestApplicationFactory(baseScheduleConfig?: OnScheduleConfigWithGlobalOptions): OnScheduleHandlerWithNestApplicationFactory;
51
53
  /**
@@ -61,5 +63,6 @@ export type OnScheduleHandlerWithNestContextFactory<N> = (schedule: OnScheduleCo
61
63
  * @param appFactory
62
64
  * @param makeNestContext
63
65
  * @returns
66
+ * @__NO_SIDE_EFFECTS__
64
67
  */
65
68
  export declare function onScheduleHandlerWithNestContextFactory<N>(appFactory: OnScheduleHandlerWithNestApplicationFactory, makeNestContext: MakeNestContext<N>): OnScheduleHandlerWithNestContextFactory<N>;
@@ -17,5 +17,6 @@ export type TaskQueueFunctionHandlerWithNestContextFactory<N> = <I = unknown>(fn
17
17
  * @param appFactory
18
18
  * @param makeNestContext
19
19
  * @returns
20
+ * @__NO_SIDE_EFFECTS__
20
21
  */
21
22
  export declare function taskQueueFunctionHandlerWithNestContextFactory<N>(makeNestContext: MakeNestContext<N>): TaskQueueFunctionHandlerWithNestContextFactory<N>;
@@ -73,6 +73,7 @@ export declare const ON_CALL_MODEL_ANALYTICS_SERVICE: InjectionToken<OnCallModel
73
73
  * service is registered.
74
74
  *
75
75
  * @returns An {@link OnCallModelAnalyticsService} that discards all analytics events.
76
+ * @__NO_SIDE_EFFECTS__
76
77
  */
77
78
  export declare function noopOnCallModelAnalyticsService(): OnCallModelAnalyticsService;
78
79
  /**
@@ -120,5 +120,6 @@ export interface OnCallWithCallTypeModelConfig<N> {
120
120
  * @param config - Configuration including call type, crud type, and error factory.
121
121
  * @returns A callable function that dispatches to the correct model-type handler.
122
122
  * @internal Not intended for direct use outside the model CRUD module.
123
+ * @__NO_SIDE_EFFECTS__
123
124
  */
124
125
  export declare function _onCallWithCallTypeFunction<N>(map: OnCallWithCallTypeModelMap<N>, config: OnCallWithCallTypeModelConfig<N>): OnCallWithAuthAwareNestContext<N, OnCallTypedModelParams, unknown> & OnCallApiDetailsRef;
@@ -90,5 +90,6 @@ export declare function onCallCreateModel<N>(map: OnCallCreateModelMap<N>, confi
90
90
  *
91
91
  * @param modelType - The unrecognized model type string.
92
92
  * @returns A bad-request error with {@link UNKNOWN_MODEL_TYPE_ERROR_CODE} code.
93
+ * @__NO_SIDE_EFFECTS__
93
94
  */
94
95
  export declare function createModelUnknownModelTypeError(modelType: FirestoreModelType): import("firebase-functions/https").HttpsError;
@@ -58,6 +58,7 @@ export type ProvideFirebaseServerStorageService<T extends FirebaseServerStorageS
58
58
  *
59
59
  * @param provider - The storage service provider configuration.
60
60
  * @returns An array of NestJS providers for the storage service.
61
+ * @__NO_SIDE_EFFECTS__
61
62
  */
62
63
  export declare function provideFirebaseServerStorageService<T extends FirebaseServerStorageService = FirebaseServerStorageService>(provider: ProvideFirebaseServerStorageService<T>): Provider<T>[];
63
64
  export interface FirebaseServerStorageModuleMetadataConfig<T extends FirebaseServerStorageService = FirebaseServerStorageService> extends AdditionalModuleMetadata {
package/test/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@dereekb/firebase-server/test",
3
- "version": "13.11.1",
3
+ "version": "13.11.3",
4
4
  "peerDependencies": {
5
- "@dereekb/analytics": "13.11.1",
6
- "@dereekb/date": "13.11.1",
7
- "@dereekb/firebase": "13.11.1",
8
- "@dereekb/firebase-server": "13.11.1",
9
- "@dereekb/firebase-server/oidc": "13.11.1",
10
- "@dereekb/model": "13.11.1",
11
- "@dereekb/nestjs": "13.11.1",
12
- "@dereekb/rxjs": "13.11.1",
13
- "@dereekb/util": "13.11.1",
5
+ "@dereekb/analytics": "13.11.3",
6
+ "@dereekb/date": "13.11.3",
7
+ "@dereekb/firebase": "13.11.3",
8
+ "@dereekb/firebase-server": "13.11.3",
9
+ "@dereekb/firebase-server/oidc": "13.11.3",
10
+ "@dereekb/model": "13.11.3",
11
+ "@dereekb/nestjs": "13.11.3",
12
+ "@dereekb/rxjs": "13.11.3",
13
+ "@dereekb/util": "13.11.3",
14
14
  "@google-cloud/firestore": "^7.11.6",
15
15
  "@google-cloud/storage": "^7.19.0",
16
16
  "@nestjs/common": "^11.1.19",
@@ -23,7 +23,7 @@
23
23
  "supertest": "^7.2.2"
24
24
  },
25
25
  "devDependencies": {
26
- "@dereekb/nestjs": "13.11.1"
26
+ "@dereekb/nestjs": "13.11.3"
27
27
  },
28
28
  "exports": {
29
29
  "./package.json": "./package.json",