@dereekb/firebase-server 13.6.9 → 13.6.10

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
@@ -18,6 +18,7 @@ var admin = require('firebase-admin');
18
18
  var storage = require('@google-cloud/storage');
19
19
  var dateFns = require('date-fns');
20
20
  var types = require('util/types');
21
+ var rxjs$1 = require('@dereekb/rxjs');
21
22
  var platformExpress = require('@nestjs/platform-express');
22
23
  var express = require('express');
23
24
 
@@ -9406,6 +9407,10 @@ function _unsupported_iterable_to_array(o, minLen) {
9406
9407
  if (n === "Map" || n === "Set") return Array.from(n);
9407
9408
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
9408
9409
  }
9410
+ // MARK: Assets
9411
+ /**
9412
+ * Default base path for local assets on the server filesystem.
9413
+ */ var DEFAULT_SERVER_ASSETS_BASE_PATH = './assets';
9409
9414
  // MARK: Root Module
9410
9415
  var FirebaseNestServerRootModule = function FirebaseNestServerRootModule() {
9411
9416
  _class_call_check$2(this, FirebaseNestServerRootModule);
@@ -9425,6 +9430,7 @@ var FirebaseNestServerRootModule = function FirebaseNestServerRootModule() {
9425
9430
  * @param config - Shared configuration
9426
9431
  * @returns The root module and resolved prefix config
9427
9432
  */ function buildNestServerRootModule(config) {
9433
+ var _ref, _ref1;
9428
9434
  var providers = [];
9429
9435
  var imports = _to_consumable_array(util.asArray(config.modules));
9430
9436
  // Firebase app token
@@ -9493,6 +9499,20 @@ var FirebaseNestServerRootModule = function FirebaseNestServerRootModule() {
9493
9499
  provide: GlobalRoutePrefixConfig,
9494
9500
  useValue: globalApiRoutePrefixConfig !== null && globalApiRoutePrefixConfig !== void 0 ? globalApiRoutePrefixConfig : {}
9495
9501
  });
9502
+ // Assets — always provide AssetLoader globally
9503
+ var assetConfig = config.assets;
9504
+ var local = (_ref = assetConfig === null || assetConfig === void 0 ? void 0 : assetConfig.local) !== null && _ref !== void 0 ? _ref : nestjs.nodeJsLocalAssetLoader({
9505
+ basePath: DEFAULT_SERVER_ASSETS_BASE_PATH
9506
+ });
9507
+ var remote = (_ref1 = assetConfig === null || assetConfig === void 0 ? void 0 : assetConfig.remote) !== null && _ref1 !== void 0 ? _ref1 : rxjs$1.fetchAssetLoader();
9508
+ var loader = rxjs$1.delegatedAssetLoader({
9509
+ local: local,
9510
+ remote: remote
9511
+ });
9512
+ providers.push({
9513
+ provide: rxjs$1.AssetLoader,
9514
+ useValue: loader
9515
+ });
9496
9516
  var rootModule = {
9497
9517
  module: FirebaseNestServerRootModule,
9498
9518
  imports: imports,
@@ -9673,7 +9693,8 @@ function _ts_generator$1(thisArg, body) {
9673
9693
  forceStorageBucket: config.forceStorageBucket,
9674
9694
  globalApiRoutePrefix: config.globalApiRoutePrefix,
9675
9695
  configureWebhooks: config.configureWebhooks,
9676
- appCheckEnabled: config.appCheckEnabled !== false // defaults to true in production
9696
+ appCheckEnabled: config.appCheckEnabled !== false,
9697
+ assets: config.assets
9677
9698
  }), rootModule = _buildNestServerRootModule.rootModule, globalApiRoutePrefixConfig = _buildNestServerRootModule.globalApiRoutePrefixConfig;
9678
9699
  // NOTE: https://cloud.google.com/functions/docs/writing/http#parsing_http_requests
9679
9700
  options = {
@@ -10163,6 +10184,7 @@ exports.AbstractServerFirebaseNestContext = AbstractServerFirebaseNestContext;
10163
10184
  exports.BAD_REQUEST_ERROR_CODE = BAD_REQUEST_ERROR_CODE;
10164
10185
  exports.CONFLICT_ERROR_CODE = CONFLICT_ERROR_CODE;
10165
10186
  exports.DEFAULT_FIREBASE_PASSWORD_NUMBER_GENERATOR = DEFAULT_FIREBASE_PASSWORD_NUMBER_GENERATOR;
10187
+ exports.DEFAULT_SERVER_ASSETS_BASE_PATH = DEFAULT_SERVER_ASSETS_BASE_PATH;
10166
10188
  exports.DEFAULT_SETUP_COM_THROTTLE_TIME = DEFAULT_SETUP_COM_THROTTLE_TIME;
10167
10189
  exports.FIREBASE_APP_TOKEN = FIREBASE_APP_TOKEN;
10168
10190
  exports.FIREBASE_AUTH_TOKEN = FIREBASE_AUTH_TOKEN;
package/index.esm.js CHANGED
@@ -3,7 +3,7 @@ import { partialServerError, isServerError, randomNumberFactory, cachedGetter, f
3
3
  import { HttpsError } from 'firebase-functions/https';
4
4
  import { hoursToMs, toISODateString } from '@dereekb/date';
5
5
  import { BaseError } from 'make-error';
6
- import { SERVER_ENV_TOKEN, resolveEncryptionKey, encryptValue, decryptValue, mergeModuleMetadata, ServerEnvironmentService, DEFAULT_BASE_WEBHOOK_PATH, DEFAULT_WEBHOOK_MIDDLEWARE_ROUTE_INFO, isTestNodeEnv, injectionTokensFromProviders } from '@dereekb/nestjs';
6
+ 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
7
  import { from } from 'rxjs';
8
8
  import { FieldValue, FieldPath } from '@google-cloud/firestore';
9
9
  import { Injectable, Optional, Inject, Module, Logger, ForbiddenException, createParamDecorator } from '@nestjs/common';
@@ -16,6 +16,7 @@ import admin from 'firebase-admin';
16
16
  import { ApiError } from '@google-cloud/storage';
17
17
  import { addMilliseconds, addHours } from 'date-fns';
18
18
  import { isUint8Array, isArrayBuffer } from 'util/types';
19
+ import { fetchAssetLoader, delegatedAssetLoader, AssetLoader } from '@dereekb/rxjs';
19
20
  import { ExpressAdapter } from '@nestjs/platform-express';
20
21
  import express from 'express';
21
22
 
@@ -9404,6 +9405,10 @@ function _unsupported_iterable_to_array(o, minLen) {
9404
9405
  if (n === "Map" || n === "Set") return Array.from(n);
9405
9406
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
9406
9407
  }
9408
+ // MARK: Assets
9409
+ /**
9410
+ * Default base path for local assets on the server filesystem.
9411
+ */ var DEFAULT_SERVER_ASSETS_BASE_PATH = './assets';
9407
9412
  // MARK: Root Module
9408
9413
  var FirebaseNestServerRootModule = function FirebaseNestServerRootModule() {
9409
9414
  _class_call_check$2(this, FirebaseNestServerRootModule);
@@ -9423,6 +9428,7 @@ var FirebaseNestServerRootModule = function FirebaseNestServerRootModule() {
9423
9428
  * @param config - Shared configuration
9424
9429
  * @returns The root module and resolved prefix config
9425
9430
  */ function buildNestServerRootModule(config) {
9431
+ var _ref, _ref1;
9426
9432
  var providers = [];
9427
9433
  var imports = _to_consumable_array(asArray(config.modules));
9428
9434
  // Firebase app token
@@ -9491,6 +9497,20 @@ var FirebaseNestServerRootModule = function FirebaseNestServerRootModule() {
9491
9497
  provide: GlobalRoutePrefixConfig,
9492
9498
  useValue: globalApiRoutePrefixConfig !== null && globalApiRoutePrefixConfig !== void 0 ? globalApiRoutePrefixConfig : {}
9493
9499
  });
9500
+ // Assets — always provide AssetLoader globally
9501
+ var assetConfig = config.assets;
9502
+ var local = (_ref = assetConfig === null || assetConfig === void 0 ? void 0 : assetConfig.local) !== null && _ref !== void 0 ? _ref : nodeJsLocalAssetLoader({
9503
+ basePath: DEFAULT_SERVER_ASSETS_BASE_PATH
9504
+ });
9505
+ var remote = (_ref1 = assetConfig === null || assetConfig === void 0 ? void 0 : assetConfig.remote) !== null && _ref1 !== void 0 ? _ref1 : fetchAssetLoader();
9506
+ var loader = delegatedAssetLoader({
9507
+ local: local,
9508
+ remote: remote
9509
+ });
9510
+ providers.push({
9511
+ provide: AssetLoader,
9512
+ useValue: loader
9513
+ });
9494
9514
  var rootModule = {
9495
9515
  module: FirebaseNestServerRootModule,
9496
9516
  imports: imports,
@@ -9671,7 +9691,8 @@ function _ts_generator$1(thisArg, body) {
9671
9691
  forceStorageBucket: config.forceStorageBucket,
9672
9692
  globalApiRoutePrefix: config.globalApiRoutePrefix,
9673
9693
  configureWebhooks: config.configureWebhooks,
9674
- appCheckEnabled: config.appCheckEnabled !== false // defaults to true in production
9694
+ appCheckEnabled: config.appCheckEnabled !== false,
9695
+ assets: config.assets
9675
9696
  }), rootModule = _buildNestServerRootModule.rootModule, globalApiRoutePrefixConfig = _buildNestServerRootModule.globalApiRoutePrefixConfig;
9676
9697
  // NOTE: https://cloud.google.com/functions/docs/writing/http#parsing_http_requests
9677
9698
  options = {
@@ -10149,4 +10170,4 @@ function _define_property(obj, key, value) {
10149
10170
  }
10150
10171
  ();
10151
10172
 
10152
- export { ALREADY_EXISTS_ERROR_CODE, AbstractFirebaseNestContext, AbstractFirebaseServerActionsContext, AbstractFirebaseServerAuthContext, AbstractFirebaseServerAuthService, AbstractFirebaseServerAuthUserContext, AbstractFirebaseServerNewUserService, AbstractNestContext, AbstractServerFirebaseNestContext, BAD_REQUEST_ERROR_CODE, CONFLICT_ERROR_CODE, ConfigureFirebaseAppCheckMiddlewareModule, ConfigureFirebaseWebhookMiddlewareModule, DEFAULT_FIREBASE_PASSWORD_NUMBER_GENERATOR, 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, FORBIDDEN_ERROR_CODE, FirebaseAppCheckMiddleware, FirebaseAppCheckMiddlewareConfig, FirebaseNestServerRootModule, FirebaseRawBodyMiddleware, FirebaseServerAnalyticsSegmentListenerService, FirebaseServerAnalyticsSegmentModule, FirebaseServerAnalyticsService, FirebaseServerAnalyticsServiceListener, FirebaseServerAuthModule, FirebaseServerAuthNewUserSendSetupDetailsNoSetupConfigError, FirebaseServerAuthNewUserSendSetupDetailsSendOnceError, FirebaseServerAuthNewUserSendSetupDetailsThrottleError, FirebaseServerAuthService, FirebaseServerAuthUserBadInputError, FirebaseServerAuthUserExistsError, FirebaseServerEnvService, FirebaseServerFirestoreContextModule, FirebaseServerFirestoreModule, FirebaseServerStorageContextModule, FirebaseServerStorageModule, FirebaseServerStorageService, GlobalRoutePrefixConfig, INTERNAL_SERVER_ERROR_CODE, MODEL_NOT_AVAILABLE_ERROR_CODE, NOT_FOUND_ERROR_CODE, NO_RUN_NAME_SPECIFIED_FOR_SCHEDULED_FUNCTION_DEVELOPMENT_FUNCTION_CODE, NoSetupContentFirebaseServerNewUserService, ON_CALL_MODEL_ANALYTICS_HANDLER, ON_CALL_MODEL_ANALYTICS_SERVICE, OnCallModelAnalyticsService, PERMISSION_DENIED_ERROR_CODE, PHONE_NUMBER_ALREADY_EXISTS_ERROR_CODE, SkipAppCheck, UNAUTHENTICATED_ERROR_CODE, UNAVAILABLE_ERROR_CODE, UNAVAILABLE_OR_DEACTIVATED_FUNCTION_ERROR_CODE, 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, badRequestError, blockingFunctionHandlerWithNestContextFactory, buildNestServerRootModule, callWithAnalytics, cloudEventHandlerWithNestContextFactory, collectionRefForPath, createModelUnknownModelTypeError, defaultFirebaseServerActionsTransformFactoryLogErrorFunction, defaultProvideFirebaseServerStorageServiceSimple, deleteModelUnknownModelTypeError, developmentUnknownSpecifierError, docRefForPath, documentModelNotAvailableError, 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, modelNotAvailableError, nestAppHasDevelopmentSchedulerEnabled, nestAppIsProductionEnvironment, nestFirebaseDoesNotExistError, nestFirebaseForbiddenPermissionError, nestServerInstance, noRunNameSpecifiedForScheduledFunctionDevelopmentFunction, noopFirebaseServerAnalyticsServiceListener, noopOnCallModelAnalyticsService, notFoundError, onCallAnalyticsEmitterInstance, onCallCreateModel, onCallDeleteModel, onCallDevelopmentFunction, onCallHandlerWithNestApplicationFactory, onCallHandlerWithNestContextFactory, onCallModel, onCallModelMissingCallTypeError, onCallModelUnknownCallTypeError, onCallReadModel, onCallSpecifierHandler, onCallUpdateModel, onScheduleHandlerWithNestApplicationFactory, onScheduleHandlerWithNestContextFactory, optionalAuthContext, optionalFirestoreEncryptedField, permissionDeniedError, phoneNumberAlreadyExistsError, preconditionConflictError, provideAppFirestoreCollections, provideFirebaseServerAuthService, provideFirebaseServerStorageService, readApiDetails, readModelUnknownModelTypeError, resolveAnalyticsFromApiDetails, setNestContextOnRequest, setNestContextOnScheduleRequest, taskQueueFunctionHandlerWithNestContextFactory, unauthenticatedContextHasNoAuthData, unauthenticatedContextHasNoUidError, unauthenticatedError, unavailableError, unavailableOrDeactivatedFunctionError, unknownModelCrudFunctionSpecifierError, unknownScheduledFunctionDevelopmentFunctionName, unknownScheduledFunctionDevelopmentFunctionType, updateModelUnknownModelTypeError, userContextFromUid, verifyAppCheckInRequest, withApiDetails };
10173
+ export { ALREADY_EXISTS_ERROR_CODE, AbstractFirebaseNestContext, AbstractFirebaseServerActionsContext, AbstractFirebaseServerAuthContext, AbstractFirebaseServerAuthService, AbstractFirebaseServerAuthUserContext, AbstractFirebaseServerNewUserService, AbstractNestContext, AbstractServerFirebaseNestContext, BAD_REQUEST_ERROR_CODE, CONFLICT_ERROR_CODE, ConfigureFirebaseAppCheckMiddlewareModule, ConfigureFirebaseWebhookMiddlewareModule, DEFAULT_FIREBASE_PASSWORD_NUMBER_GENERATOR, 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, FORBIDDEN_ERROR_CODE, FirebaseAppCheckMiddleware, FirebaseAppCheckMiddlewareConfig, FirebaseNestServerRootModule, FirebaseRawBodyMiddleware, FirebaseServerAnalyticsSegmentListenerService, FirebaseServerAnalyticsSegmentModule, FirebaseServerAnalyticsService, FirebaseServerAnalyticsServiceListener, FirebaseServerAuthModule, FirebaseServerAuthNewUserSendSetupDetailsNoSetupConfigError, FirebaseServerAuthNewUserSendSetupDetailsSendOnceError, FirebaseServerAuthNewUserSendSetupDetailsThrottleError, FirebaseServerAuthService, FirebaseServerAuthUserBadInputError, FirebaseServerAuthUserExistsError, FirebaseServerEnvService, FirebaseServerFirestoreContextModule, FirebaseServerFirestoreModule, FirebaseServerStorageContextModule, FirebaseServerStorageModule, FirebaseServerStorageService, GlobalRoutePrefixConfig, INTERNAL_SERVER_ERROR_CODE, MODEL_NOT_AVAILABLE_ERROR_CODE, NOT_FOUND_ERROR_CODE, NO_RUN_NAME_SPECIFIED_FOR_SCHEDULED_FUNCTION_DEVELOPMENT_FUNCTION_CODE, NoSetupContentFirebaseServerNewUserService, ON_CALL_MODEL_ANALYTICS_HANDLER, ON_CALL_MODEL_ANALYTICS_SERVICE, OnCallModelAnalyticsService, PERMISSION_DENIED_ERROR_CODE, PHONE_NUMBER_ALREADY_EXISTS_ERROR_CODE, SkipAppCheck, UNAUTHENTICATED_ERROR_CODE, UNAVAILABLE_ERROR_CODE, UNAVAILABLE_OR_DEACTIVATED_FUNCTION_ERROR_CODE, 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, badRequestError, blockingFunctionHandlerWithNestContextFactory, buildNestServerRootModule, callWithAnalytics, cloudEventHandlerWithNestContextFactory, collectionRefForPath, createModelUnknownModelTypeError, defaultFirebaseServerActionsTransformFactoryLogErrorFunction, defaultProvideFirebaseServerStorageServiceSimple, deleteModelUnknownModelTypeError, developmentUnknownSpecifierError, docRefForPath, documentModelNotAvailableError, 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, modelNotAvailableError, nestAppHasDevelopmentSchedulerEnabled, nestAppIsProductionEnvironment, nestFirebaseDoesNotExistError, nestFirebaseForbiddenPermissionError, nestServerInstance, noRunNameSpecifiedForScheduledFunctionDevelopmentFunction, noopFirebaseServerAnalyticsServiceListener, noopOnCallModelAnalyticsService, notFoundError, onCallAnalyticsEmitterInstance, onCallCreateModel, onCallDeleteModel, onCallDevelopmentFunction, onCallHandlerWithNestApplicationFactory, onCallHandlerWithNestContextFactory, onCallModel, onCallModelMissingCallTypeError, onCallModelUnknownCallTypeError, onCallReadModel, onCallSpecifierHandler, onCallUpdateModel, onScheduleHandlerWithNestApplicationFactory, onScheduleHandlerWithNestContextFactory, optionalAuthContext, optionalFirestoreEncryptedField, permissionDeniedError, phoneNumberAlreadyExistsError, preconditionConflictError, provideAppFirestoreCollections, provideFirebaseServerAuthService, provideFirebaseServerStorageService, readApiDetails, readModelUnknownModelTypeError, 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.6.9",
3
+ "version": "13.6.10",
4
4
  "peerDependencies": {
5
- "@dereekb/analytics": "13.6.9",
6
- "@dereekb/firebase": "13.6.9",
7
- "@dereekb/firebase-server": "13.6.9",
8
- "@dereekb/date": "13.6.9",
9
- "@dereekb/nestjs": "13.6.9",
10
- "@dereekb/model": "13.6.9",
11
- "@dereekb/rxjs": "13.6.9",
12
- "@dereekb/util": "13.6.9"
5
+ "@dereekb/analytics": "13.6.10",
6
+ "@dereekb/firebase": "13.6.10",
7
+ "@dereekb/firebase-server": "13.6.10",
8
+ "@dereekb/date": "13.6.10",
9
+ "@dereekb/nestjs": "13.6.10",
10
+ "@dereekb/model": "13.6.10",
11
+ "@dereekb/rxjs": "13.6.10",
12
+ "@dereekb/util": "13.6.10"
13
13
  },
14
14
  "exports": {
15
15
  "./package.json": "./package.json",
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@dereekb/firebase-server/model",
3
- "version": "13.6.9",
3
+ "version": "13.6.10",
4
4
  "peerDependencies": {
5
- "@dereekb/analytics": "13.6.9",
6
- "@dereekb/date": "13.6.9",
7
- "@dereekb/firebase": "13.6.9",
8
- "@dereekb/firebase-server": "13.6.9",
9
- "@dereekb/model": "13.6.9",
10
- "@dereekb/nestjs": "13.6.9",
11
- "@dereekb/rxjs": "13.6.9",
12
- "@dereekb/util": "13.6.9",
5
+ "@dereekb/analytics": "13.6.10",
6
+ "@dereekb/date": "13.6.10",
7
+ "@dereekb/firebase": "13.6.10",
8
+ "@dereekb/firebase-server": "13.6.10",
9
+ "@dereekb/model": "13.6.10",
10
+ "@dereekb/nestjs": "13.6.10",
11
+ "@dereekb/rxjs": "13.6.10",
12
+ "@dereekb/util": "13.6.10",
13
13
  "@nestjs/common": "^11.1.17",
14
14
  "@nestjs/config": "^4.0.3",
15
15
  "archiver": "^7.0.0",
package/oidc/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@dereekb/firebase-server/oidc",
3
- "version": "13.6.9",
3
+ "version": "13.6.10",
4
4
  "peerDependencies": {
5
- "@dereekb/analytics": "13.6.9",
6
- "@dereekb/date": "13.6.9",
7
- "@dereekb/firebase": "13.6.9",
8
- "@dereekb/firebase-server": "13.6.9",
9
- "@dereekb/model": "13.6.9",
10
- "@dereekb/nestjs": "13.6.9",
11
- "@dereekb/rxjs": "13.6.9",
12
- "@dereekb/util": "13.6.9",
13
- "@dereekb/zoho": "13.6.9",
5
+ "@dereekb/analytics": "13.6.10",
6
+ "@dereekb/date": "13.6.10",
7
+ "@dereekb/firebase": "13.6.10",
8
+ "@dereekb/firebase-server": "13.6.10",
9
+ "@dereekb/model": "13.6.10",
10
+ "@dereekb/nestjs": "13.6.10",
11
+ "@dereekb/rxjs": "13.6.10",
12
+ "@dereekb/util": "13.6.10",
13
+ "@dereekb/zoho": "13.6.10",
14
14
  "@nestjs/common": "^11.1.17",
15
15
  "@nestjs/config": "^4.0.3",
16
16
  "express": "^5.0.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/firebase-server",
3
- "version": "13.6.9",
3
+ "version": "13.6.10",
4
4
  "exports": {
5
5
  "./test": {
6
6
  "module": "./test/index.esm.js",
@@ -43,15 +43,15 @@
43
43
  "main": "./index.cjs.js",
44
44
  "types": "./src/index.d.ts",
45
45
  "peerDependencies": {
46
- "@dereekb/analytics": "13.6.9",
47
- "@dereekb/date": "13.6.9",
48
- "@dereekb/dbx-core": "13.6.9",
49
- "@dereekb/firebase": "13.6.9",
50
- "@dereekb/model": "13.6.9",
51
- "@dereekb/nestjs": "13.6.9",
52
- "@dereekb/rxjs": "13.6.9",
53
- "@dereekb/util": "13.6.9",
54
- "@dereekb/zoho": "13.6.9",
46
+ "@dereekb/analytics": "13.6.10",
47
+ "@dereekb/date": "13.6.10",
48
+ "@dereekb/dbx-core": "13.6.10",
49
+ "@dereekb/firebase": "13.6.10",
50
+ "@dereekb/model": "13.6.10",
51
+ "@dereekb/nestjs": "13.6.10",
52
+ "@dereekb/rxjs": "13.6.10",
53
+ "@dereekb/util": "13.6.10",
54
+ "@dereekb/zoho": "13.6.10",
55
55
  "@google-cloud/firestore": "^7.11.6",
56
56
  "@google-cloud/storage": "^7.19.0",
57
57
  "@nestjs/common": "^11.1.17",
@@ -1,10 +1,11 @@
1
- import { type ClassType, type Getter, type WebsitePath } from '@dereekb/util';
1
+ import { type ClassType, type Getter, Maybe, type WebsitePath } from '@dereekb/util';
2
2
  import { type INestApplication, type INestApplicationContext, type NestApplicationOptions, type Provider } from '@nestjs/common';
3
3
  import express from 'express';
4
4
  import type * as admin from 'firebase-admin';
5
5
  import { type StorageBucketId } from '@dereekb/firebase';
6
6
  import { type FirebaseServerEnvironmentConfig } from '../env/env.config';
7
7
  import { type GlobalRoutePrefixConfig } from './middleware/globalprefix';
8
+ import { type NestServerAssetConfig } from './app.module';
8
9
  /**
9
10
  * A running NestJS server instance backed by Express, paired with a lazy promise getter for the NestJS application context.
10
11
  */
@@ -102,6 +103,13 @@ export interface NestServerInstanceConfig<T> {
102
103
  * Optional configuration function
103
104
  */
104
105
  readonly configureNestServerInstance?: ConfigureNestServerInstanceFunction;
106
+ /**
107
+ * Optional asset loader configuration.
108
+ *
109
+ * When provided, configures the {@link AssetLoader} with the given settings.
110
+ * The AssetLoader is always provided globally regardless of this config.
111
+ */
112
+ readonly assets?: Maybe<NestServerAssetConfig>;
105
113
  }
106
114
  export interface NestFirebaseServerEnvironmentConfig {
107
115
  readonly environment: FirebaseServerEnvironmentConfig;
@@ -4,6 +4,31 @@ import { type StorageBucketId } from '@dereekb/firebase';
4
4
  import { type FirebaseServerEnvironmentConfig } from '../env/env.config';
5
5
  import { GlobalRoutePrefixConfig } from './middleware/globalprefix';
6
6
  import type * as admin from 'firebase-admin';
7
+ import { AssetLoader } from '@dereekb/rxjs';
8
+ /**
9
+ * Default base path for local assets on the server filesystem.
10
+ */
11
+ export declare const DEFAULT_SERVER_ASSETS_BASE_PATH = "./assets";
12
+ /**
13
+ * Configuration for the server-side asset loader.
14
+ *
15
+ * By default, local assets are loaded from {@link DEFAULT_SERVER_ASSETS_BASE_PATH}
16
+ * via `nodeJsLocalAssetLoader` and remote assets are loaded via `fetchAssetLoader`.
17
+ *
18
+ * Override `local` or `remote` to supply custom loader implementations.
19
+ */
20
+ export interface NestServerAssetConfig {
21
+ /**
22
+ * Optional override for the local asset loader.
23
+ * If omitted, uses `nodeJsLocalAssetLoader` with basePath {@link DEFAULT_SERVER_ASSETS_BASE_PATH}.
24
+ */
25
+ readonly local?: AssetLoader;
26
+ /**
27
+ * Optional override for the remote asset loader.
28
+ * If omitted, uses `fetchAssetLoader` with default global fetch.
29
+ */
30
+ readonly remote?: AssetLoader;
31
+ }
7
32
  export declare class FirebaseNestServerRootModule {
8
33
  }
9
34
  /**
@@ -57,6 +82,14 @@ export interface NestServerRootModuleConfig {
57
82
  * Defaults to false (production code sets this to true via `appCheckEnabled`).
58
83
  */
59
84
  readonly appCheckEnabled?: boolean;
85
+ /**
86
+ * Optional asset loader configuration.
87
+ *
88
+ * When provided, configures the {@link AssetLoader} with the given local base path
89
+ * and optional remote fetch config. When omitted, the {@link AssetLoader} is still
90
+ * provided globally with default settings (local base path `'./assets'`).
91
+ */
92
+ readonly assets?: Maybe<NestServerAssetConfig>;
60
93
  }
61
94
  /**
62
95
  * Result of {@link buildNestServerRootModule}.
package/test/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@dereekb/firebase-server/test",
3
- "version": "13.6.9",
3
+ "version": "13.6.10",
4
4
  "peerDependencies": {
5
- "@dereekb/analytics": "13.6.9",
6
- "@dereekb/date": "13.6.9",
7
- "@dereekb/firebase": "13.6.9",
8
- "@dereekb/firebase-server": "13.6.9",
9
- "@dereekb/model": "13.6.9",
10
- "@dereekb/nestjs": "13.6.9",
11
- "@dereekb/rxjs": "13.6.9",
12
- "@dereekb/util": "13.6.9",
5
+ "@dereekb/analytics": "13.6.10",
6
+ "@dereekb/date": "13.6.10",
7
+ "@dereekb/firebase": "13.6.10",
8
+ "@dereekb/firebase-server": "13.6.10",
9
+ "@dereekb/model": "13.6.10",
10
+ "@dereekb/nestjs": "13.6.10",
11
+ "@dereekb/rxjs": "13.6.10",
12
+ "@dereekb/util": "13.6.10",
13
13
  "@google-cloud/firestore": "^7.11.6",
14
14
  "@google-cloud/storage": "^7.19.0",
15
15
  "@nestjs/common": "^11.1.17",
@@ -21,7 +21,7 @@
21
21
  "make-error": "^1.3.0"
22
22
  },
23
23
  "devDependencies": {
24
- "@dereekb/nestjs": "13.6.9"
24
+ "@dereekb/nestjs": "13.6.10"
25
25
  },
26
26
  "exports": {
27
27
  "./package.json": "./package.json",
package/zoho/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@dereekb/firebase-server/zoho",
3
- "version": "13.6.9",
3
+ "version": "13.6.10",
4
4
  "peerDependencies": {
5
- "@dereekb/analytics": "13.6.9",
6
- "@dereekb/date": "13.6.9",
7
- "@dereekb/model": "13.6.9",
8
- "@dereekb/nestjs": "13.6.9",
9
- "@dereekb/rxjs": "13.6.9",
10
- "@dereekb/firebase": "13.6.9",
11
- "@dereekb/util": "13.6.9",
12
- "@dereekb/zoho": "13.6.9"
5
+ "@dereekb/analytics": "13.6.10",
6
+ "@dereekb/date": "13.6.10",
7
+ "@dereekb/model": "13.6.10",
8
+ "@dereekb/nestjs": "13.6.10",
9
+ "@dereekb/rxjs": "13.6.10",
10
+ "@dereekb/firebase": "13.6.10",
11
+ "@dereekb/util": "13.6.10",
12
+ "@dereekb/zoho": "13.6.10"
13
13
  },
14
14
  "exports": {
15
15
  "./package.json": "./package.json",