{"version":3,"sources":["../src/config/dependencies.ts","../src/utils/common/hash.ts","../src/utils/common/id.ts","../src/utils/common/values.ts","../src/utils/common/object.ts","../src/utils/common/typeGuards.ts","../src/utils/common/time.ts","../src/utils/common/validation.ts","../src/utils/common/index.ts","../src/events/CoreEventManager.ts","../src/services/ApiClientService.ts","../src/base/observability/BaseAdapter.ts","../src/base/observability/LoggerAdapter.ts","../src/base/observability/ObservabilityService.ts","../src/base/observability/index.ts","../src/init/ServiceRegistry.ts","../src/events/streaming/StreamConnectionManager.ts","../src/events/streaming/StreamBroadcaster.ts","../src/events/streaming/auth/BaseAuthAdapter.ts","../src/events/streaming/auth/adapters/AnonymousAuthAdapter.ts","../src/events/streaming/transports/BaseTransportAdapter.ts","../src/events/streaming/transports/adapters/SSETransportAdapter.ts","../src/events/streaming/frameworks/BaseFrameworkAdapter.ts","../src/events/streaming/frameworks/NextJSFrameworkAdapter.ts","../src/events/streaming/frameworks/ExpressFrameworkAdapter.ts","../src/events/streaming/frameworks/NestJSFrameworkAdapter.ts","../src/events/streaming/frameworks/index.ts","../src/events/streaming/StreamServer.ts","../src/events/streaming/auth/adapters/TokenAuthAdapter.ts","../src/events/streaming/auth/adapters/index.ts","../src/events/streaming/auth/index.ts","../src/events/streaming/transports/adapters/WebSocketTransportAdapter.ts","../src/events/streaming/transports/adapters/index.ts","../src/events/streaming/transports/index.ts","../src/events/streaming/StreamRegistry.ts","../src/events/streaming/base/BaseStreamEndpoint.ts","../src/events/streaming/channels/BaseChannelController.ts","../src/domain/files/streaming/FilesChannelController.ts","../src/domain/files/streaming/FilesStreamEndpoint.ts","../src/domain/files/streaming/index.ts","../src/domain/notifications/streaming/NotificationsChannelController.ts","../src/domain/notifications/streaming/NotificationsStreamEndpoint.ts","../src/domain/notifications/streaming/index.ts","../src/events/streaming/endpoints/system/SystemChannelController.ts","../src/events/streaming/endpoints/system/SystemStreamEndpoint.ts","../src/events/streaming/endpoints/system/index.ts","../src/events/streaming/endpoints/index.ts","../src/events/streaming/middleware/MiddlewareChain.ts","../src/events/streaming/middleware/RateLimitMiddleware.ts","../src/events/streaming/middleware/index.ts","../src/events/streaming/index.ts","../src/utils/runtime.ts","../src/init/CoreInitializer.ts","../src/domain/base/BaseDomainService.ts","../src/domain/base/BaseFrontendDomainService.ts","../src/events/BackendEventPersistenceHandler.ts","../src/events/FrontendEventPersistenceHandler.ts","../src/events/index.ts","../src/base/cache/strategies/memory.ts","../src/base/cache/CacheKeyBuilder.ts","../src/base/cache/strategies/redis.ts","../src/base/cache/index.ts","../src/domain/base/BaseBackendDomainService.ts","../src/domain/base/BaseMapper.ts","../src/domain/base/BaseValidator.ts","../src/utils/mapperUtils.ts","../src/domain/base/index.ts","../src/domain/example/mappers/ExampleMapper.ts","../src/domain/example/FrontendExampleDomainService.ts","../src/domain/files/mappers/FilesMapper.ts","../src/domain/files/FrontendFilesDomainService.ts","../src/domain/notifications/mappers/NotificationsMapper.ts","../src/domain/notifications/validators/NotificationsValidator.ts","../src/domain/notifications/FrontendNotificationsDomainService.ts","../src/services/DbService.ts","../src/models/example/ExampleRepository.ts","../src/models/example/index.ts","../src/domain/example/validators/ExampleValidator.ts","../src/domain/example/BackendExampleDomainService.ts","../src/models/files/FilesRepository.ts","../src/models/files/MediaVariantsRepository.ts","../src/models/files/index.ts","../src/domain/files/validators/FilesValidator.ts","../src/domain/files/BackendFilesDomainService.ts","../src/models/notifications/NotificationsRepository.ts","../src/models/notifications/NotificationPreferencesRepository.ts","../src/models/notifications/index.ts","../src/models/shortUrls/ShortUrlRepository.ts","../src/models/shortUrls/index.ts","../src/domain/notifications/BackendNotificationsDomainService.ts","../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../node_modules/.pnpm/reflect-metadata@0.2.2/node_modules/reflect-metadata/Reflect.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/bind.decorator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/constants.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/catch.decorator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/shared.utils.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/controller.decorator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/dependencies.decorator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/extend-metadata.util.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/validate-each.util.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/exception-filters.decorator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/inject.decorator.js","../node_modules/.pnpm/uid@2.0.2/node_modules/uid/dist/index.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/injectable.decorator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/optional.decorator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/set-metadata.decorator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/use-guards.decorator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/use-interceptors.decorator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/use-pipes.decorator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/apply-decorators.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/version.decorator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/core/index.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/modules/global.decorator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/validate-module-keys.util.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/modules/module.decorator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/modules/index.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/enums/request-method.enum.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/request-mapping.decorator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/enums/route-paramtypes.enum.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/route-params.decorator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/http-code.decorator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/assign-custom-metadata.util.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/create-route-param-metadata.decorator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/render.decorator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/header.decorator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/redirect.decorator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/sse.decorator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/http/index.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/decorators/index.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/enums/http-status.enum.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/enums/shutdown-signal.enum.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/enums/version-type.enum.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/enums/index.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/intrinsic.exception.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/http.exception.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/bad-gateway.exception.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/bad-request.exception.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/conflict.exception.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/forbidden.exception.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/gateway-timeout.exception.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/gone.exception.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/http-version-not-supported.exception.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/im-a-teapot.exception.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/internal-server-error.exception.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/method-not-allowed.exception.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/misdirected.exception.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/not-acceptable.exception.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/not-found.exception.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/not-implemented.exception.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/payload-too-large.exception.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/precondition-failed.exception.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/request-timeout.exception.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/service-unavailable.exception.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/unauthorized.exception.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/unprocessable-entity.exception.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/unsupported-media-type.exception.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/exceptions/index.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/cli-colors.util.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/utils/is-log-level-enabled.util.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/console-logger.service.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/utils/is-log-level.util.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/utils/filter-log-levels.util.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/utils/index.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/logger.service.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/services/index.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/file-stream/streamable-file.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/file-stream/index.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/abstract.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/controllers/controller-metadata.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/controllers/controller.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/exceptions/exception-filter.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/exceptions/ws-exception-filter.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/external/validation-error.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/features/arguments-host.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/features/can-activate.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/features/custom-route-param-factory.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/features/execution-context.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/features/nest-interceptor.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/features/paramtype.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/features/pipe-transform.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/global-prefix-options.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/hooks/before-application-shutdown.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/hooks/on-application-bootstrap.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/hooks/on-application-shutdown.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/hooks/on-destroy.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/hooks/on-init.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/hooks/index.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/http-exception-body.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/http-redirect-response.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/http-server.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/message-event.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/raw-body-request.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/http/index.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/injectable.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/microservices/nest-hybrid-application-options.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/middleware/middleware-config-proxy.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/middleware/middleware-configuration.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/middleware/middleware-consumer.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/middleware/nest-middleware.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/middleware/index.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/dynamic-module.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/forward-reference.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/injection-token.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/introspection-result.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/module-metadata.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/nest-module.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/optional-factory-dependency.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/provider.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/modules/index.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/nest-application-context.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/nest-application-options.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/nest-application.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/nest-microservice.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/scope-options.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/shutdown-hooks-options.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/type.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/version-options.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/websockets/web-socket-adapter.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/interfaces/index.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/random-string-generator.util.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/constants.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/utils/generate-options-injection-token.util.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/utils/get-injection-providers.util.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/utils/index.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/configurable-module.builder.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/interfaces/configurable-module-async-options.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/interfaces/configurable-module-cls.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/interfaces/configurable-module-host.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/interfaces/index.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/module-utils/index.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/default-value.pipe.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/file/file-validator.interface.js","../node_modules/.pnpm/load-esm@1.0.3/node_modules/load-esm/index.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/file/file-type.validator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/file/max-file-size.validator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/file/parse-file-options.interface.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/http-error-by-code.util.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/file/parse-file.pipe.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/file/parse-file-pipe.builder.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/file/index.js","../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/src/concat.ts","../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/src/filter.ts","../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/src/utils.ts","../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/src/flatten.ts","../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/src/map.ts","../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/src/slice.ts","../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/src/zip.ts","../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/src/iterate.ts","../node_modules/.pnpm/iterare@1.2.1/node_modules/iterare/src/index.ts","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/load-package.util.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/validation.pipe.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/parse-array.pipe.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/parse-bool.pipe.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/parse-date.pipe.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/parse-enum.pipe.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/parse-float.pipe.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/parse-int.pipe.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/parse-uuid.pipe.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/pipes/index.js","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/isFunction.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/lift.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/isArrayLike.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/isPromise.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/createErrorClass.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/UnsubscriptionError.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/arrRemove.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/Subscription.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/config.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduler/timeoutProvider.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/reportUnhandledError.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/noop.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/NotificationFactories.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/errorContext.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/Subscriber.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/symbol/observable.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/identity.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/pipe.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/Observable.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/isInteropObservable.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/isAsyncIterable.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/throwUnobservableError.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/symbol/iterator.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/isIterable.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/isReadableStreamLike.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/innerFrom.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/OperatorSubscriber.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/audit.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduler/Action.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduler/intervalProvider.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduler/AsyncAction.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduler/dateTimestampProvider.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/Scheduler.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduler/async.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/isScheduler.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/isDate.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/timer.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/auditTime.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/buffer.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/bufferCount.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/args.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/executeSchedule.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/bufferTime.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/bufferToggle.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/bufferWhen.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/catchError.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/argsArgArrayOrObject.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/observeOn.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/subscribeOn.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduled/schedulePromise.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduled/scheduleArray.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduled/scheduleAsyncIterable.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduled/scheduleReadableStreamLike.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduled/scheduled.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/from.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/map.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/mapOneOrManyArgs.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/createObject.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/combineLatest.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/mergeInternals.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/mergeMap.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/scanInternals.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/reduce.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/toArray.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/joinAllInternals.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/combineLatestAll.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/combineAll.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/argsOrArgArray.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/combineLatest.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/combineLatestWith.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/mergeAll.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/concatAll.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/concat.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/concatMap.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/concatMapTo.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/concatWith.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/Subject.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/fromSubscribable.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/connect.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/count.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/debounce.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/debounceTime.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/concat.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/empty.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/take.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/ignoreElements.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/mapTo.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/delayWhen.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/delay.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/of.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/throwError.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/Notification.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/dematerialize.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/distinct.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/ArgumentOutOfRangeError.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/filter.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/EmptyError.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/throwIfEmpty.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/elementAt.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/endWith.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/every.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/exhaustMap.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/exhaustAll.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/exhaust.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/expand.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/finalize.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/find.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/findIndex.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/first.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/groupBy.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/isEmpty.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/takeLast.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/last.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/materialize.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/max.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/merge.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/flatMap.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/mergeMapTo.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/mergeScan.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/mergeWith.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/min.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/refCount.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/ConnectableObservable.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/multicast.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/onErrorResumeNext.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/onErrorResumeNextWith.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/pairwise.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/not.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/partition.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/pluck.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/publish.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/BehaviorSubject.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/publishBehavior.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/AsyncSubject.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/publishLast.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/ReplaySubject.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/publishReplay.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/race.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/raceWith.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/race.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/repeat.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/repeatWhen.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/retry.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/retryWhen.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/sample.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/interval.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/sampleTime.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/scan.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/sequenceEqual.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/share.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/shareReplay.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/SequenceError.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/NotFoundError.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/single.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/skip.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/skipLast.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/skipUntil.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/skipWhile.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/startWith.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/switchMap.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/switchAll.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/switchMapTo.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/switchScan.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/takeUntil.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/takeWhile.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/tap.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/throttle.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/throttleTime.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/timeInterval.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/timeout.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/timeoutWith.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/timestamp.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/window.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/windowCount.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/windowTime.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/windowToggle.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/windowWhen.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/withLatestFrom.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/zip.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/zip.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/zipAll.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/operators/zipWith.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/operators/index.ts","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/serializer/class-serializer.constants.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/serializer/class-serializer.interceptor.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/serializer/decorators/serialize-options.decorator.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/serializer/decorators/index.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/serializer/class-serializer.interfaces.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/serializer/index.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/forward-ref.util.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/utils/index.js","../node_modules/.pnpm/@nestjs+common@11.1.11_class-transformer@0.5.1_class-validator@0.14.3_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/common/index.js","../node_modules/.pnpm/@nestjs+core@11.1.11_@nestjs+common@11.1.11_@nestjs+platform-express@11.1.11_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/core/adapters/http-adapter.js","../node_modules/.pnpm/@nestjs+core@11.1.11_@nestjs+common@11.1.11_@nestjs+platform-express@11.1.11_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/core/helpers/router-method-factory.js","../node_modules/.pnpm/@nestjs+core@11.1.11_@nestjs+common@11.1.11_@nestjs+platform-express@11.1.11_reflect-metadata@0.2.2_rxjs@7.8.2/node_modules/@nestjs/core/router/legacy-route-converter.js","../node_modules/.pnpm/path-to-regexp@8.3.0/node_modules/path-to-regexp/src/index.ts","../node_modules/.pnpm/@nestjs+platform-express@11.1.11_@nestjs+common@11.1.11_@nestjs+core@11.1.11/node_modules/@nestjs/platform-express/adapters/utils/get-body-parser-options.util.js","../node_modules/.pnpm/@nestjs+platform-express@11.1.11_@nestjs+common@11.1.11_@nestjs+core@11.1.11/node_modules/@nestjs/platform-express/adapters/express-adapter.js","../node_modules/.pnpm/@nestjs+platform-express@11.1.11_@nestjs+common@11.1.11_@nestjs+core@11.1.11/node_modules/@nestjs/platform-express/adapters/index.js","../node_modules/.pnpm/@nestjs+platform-express@11.1.11_@nestjs+common@11.1.11_@nestjs+core@11.1.11/node_modules/@nestjs/platform-express/interfaces/nest-express-application.interface.js","../node_modules/.pnpm/@nestjs+platform-express@11.1.11_@nestjs+common@11.1.11_@nestjs+core@11.1.11/node_modules/@nestjs/platform-express/interfaces/nest-express-body-parser.interface.js","../node_modules/.pnpm/@nestjs+platform-express@11.1.11_@nestjs+common@11.1.11_@nestjs+core@11.1.11/node_modules/@nestjs/platform-express/interfaces/index.js","../node_modules/.pnpm/media-typer@0.3.0/node_modules/media-typer/index.js","../node_modules/.pnpm/mime-db@1.52.0/node_modules/mime-db/db.json","../node_modules/.pnpm/mime-db@1.52.0/node_modules/mime-db/index.js","../node_modules/.pnpm/mime-types@2.1.35/node_modules/mime-types/index.js","../node_modules/.pnpm/type-is@1.6.18/node_modules/type-is/index.js","../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/utils.js","../node_modules/.pnpm/streamsearch@1.1.0/node_modules/streamsearch/lib/sbmh.js","../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/types/multipart.js","../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/types/urlencoded.js","../node_modules/.pnpm/busboy@1.6.0/node_modules/busboy/lib/index.js","../node_modules/.pnpm/xtend@4.0.2/node_modules/xtend/immutable.js","../node_modules/.pnpm/append-field@1.0.0/node_modules/append-field/lib/parse-path.js","../node_modules/.pnpm/append-field@1.0.0/node_modules/append-field/lib/set-value.js","../node_modules/.pnpm/append-field@1.0.0/node_modules/append-field/index.js","../node_modules/.pnpm/multer@2.0.2/node_modules/multer/lib/counter.js","../node_modules/.pnpm/multer@2.0.2/node_modules/multer/lib/multer-error.js","../node_modules/.pnpm/object-assign@4.1.1/node_modules/object-assign/index.js","../node_modules/.pnpm/multer@2.0.2/node_modules/multer/lib/file-appender.js","../node_modules/.pnpm/multer@2.0.2/node_modules/multer/lib/remove-uploaded-files.js","../node_modules/.pnpm/multer@2.0.2/node_modules/multer/lib/make-middleware.js","../node_modules/.pnpm/mkdirp@0.5.6/node_modules/mkdirp/index.js","../node_modules/.pnpm/multer@2.0.2/node_modules/multer/storage/disk.js","../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/internal/streams/stream.js","../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/errors.js","../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js","../node_modules/.pnpm/util-deprecate@1.0.2/node_modules/util-deprecate/browser.js","../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_writable.js","../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/.pnpm/safe-buffer@5.2.1/node_modules/safe-buffer/index.js","../node_modules/.pnpm/string_decoder@1.3.0/node_modules/string_decoder/lib/string_decoder.js","../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/internal/streams/async_iterator.js","../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/internal/streams/from.js","../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_readable.js","../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_transform.js","../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/internal/streams/pipeline.js","../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/readable.js","../node_modules/.pnpm/buffer-from@1.1.2/node_modules/buffer-from/index.js","../node_modules/.pnpm/typedarray@0.0.6/node_modules/typedarray/index.js","../node_modules/.pnpm/concat-stream@2.0.0/node_modules/concat-stream/index.js","../node_modules/.pnpm/multer@2.0.2/node_modules/multer/storage/memory.js","../node_modules/.pnpm/multer@2.0.2/node_modules/multer/index.js","../node_modules/.pnpm/@nestjs+platform-express@11.1.11_@nestjs+common@11.1.11_@nestjs+core@11.1.11/node_modules/@nestjs/platform-express/multer/files.constants.js","../node_modules/.pnpm/@nestjs+platform-express@11.1.11_@nestjs+common@11.1.11_@nestjs+core@11.1.11/node_modules/@nestjs/platform-express/multer/multer/multer.constants.js","../node_modules/.pnpm/@nestjs+platform-express@11.1.11_@nestjs+common@11.1.11_@nestjs+core@11.1.11/node_modules/@nestjs/platform-express/multer/multer/multer.utils.js","../node_modules/.pnpm/@nestjs+platform-express@11.1.11_@nestjs+common@11.1.11_@nestjs+core@11.1.11/node_modules/@nestjs/platform-express/multer/interceptors/any-files.interceptor.js","../node_modules/.pnpm/@nestjs+platform-express@11.1.11_@nestjs+common@11.1.11_@nestjs+core@11.1.11/node_modules/@nestjs/platform-express/multer/interceptors/file-fields.interceptor.js","../node_modules/.pnpm/@nestjs+platform-express@11.1.11_@nestjs+common@11.1.11_@nestjs+core@11.1.11/node_modules/@nestjs/platform-express/multer/interceptors/file.interceptor.js","../node_modules/.pnpm/@nestjs+platform-express@11.1.11_@nestjs+common@11.1.11_@nestjs+core@11.1.11/node_modules/@nestjs/platform-express/multer/interceptors/files.interceptor.js","../node_modules/.pnpm/@nestjs+platform-express@11.1.11_@nestjs+common@11.1.11_@nestjs+core@11.1.11/node_modules/@nestjs/platform-express/multer/interceptors/no-files.interceptor.js","../node_modules/.pnpm/@nestjs+platform-express@11.1.11_@nestjs+common@11.1.11_@nestjs+core@11.1.11/node_modules/@nestjs/platform-express/multer/interceptors/index.js","../node_modules/.pnpm/@nestjs+platform-express@11.1.11_@nestjs+common@11.1.11_@nestjs+core@11.1.11/node_modules/@nestjs/platform-express/multer/interfaces/files-upload-module.interface.js","../node_modules/.pnpm/@nestjs+platform-express@11.1.11_@nestjs+common@11.1.11_@nestjs+core@11.1.11/node_modules/@nestjs/platform-express/multer/interfaces/index.js","../node_modules/.pnpm/@nestjs+platform-express@11.1.11_@nestjs+common@11.1.11_@nestjs+core@11.1.11/node_modules/@nestjs/platform-express/multer/multer.constants.js","../node_modules/.pnpm/@nestjs+platform-express@11.1.11_@nestjs+common@11.1.11_@nestjs+core@11.1.11/node_modules/@nestjs/platform-express/multer/multer.module.js","../node_modules/.pnpm/@nestjs+platform-express@11.1.11_@nestjs+common@11.1.11_@nestjs+core@11.1.11/node_modules/@nestjs/platform-express/multer/index.js","../node_modules/.pnpm/@nestjs+platform-express@11.1.11_@nestjs+common@11.1.11_@nestjs+core@11.1.11/node_modules/@nestjs/platform-express/index.js","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduler/performanceTimestampProvider.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/dom/animationFrames.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/Immediate.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduler/immediateProvider.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduler/AsapAction.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduler/AsapScheduler.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduler/asap.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduler/QueueAction.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduler/QueueScheduler.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduler/queue.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduler/animationFrame.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/scheduler/VirtualTimeScheduler.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/util/isObservable.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/lastValueFrom.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/firstValueFrom.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/bindCallbackInternals.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/bindCallback.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/bindNodeCallback.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/defer.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/connectable.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/forkJoin.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/fromEvent.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/fromEventPattern.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/generate.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/iif.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/merge.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/never.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/pairs.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/partition.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/range.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/internal/observable/using.ts","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/cjs/internal/types.js","../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/src/index.ts","../src/entry-backend.ts","../src/init/getCoreDomainServices.ts","../src/init/getCoreStreamEndpoints.ts","../src/services/CacheService.ts","../src/services/StorageService.ts","../src/services/NotificationService.ts","../src/init/index.ts","../src/models/featureFlags/FeatureFlagRepository.ts","../src/engine/featureFlags/engine.ts","../src/utils/featureFlags/context.ts","../src/utils/featureFlags/conditions.ts","../src/utils/index.ts","../src/utils/files.ts","../src/utils/hmr-singleton.ts","../src/version.ts","../src/config/index.ts","../src/backend/example/example.module.ts","../src/backend/example/example.controller.ts","../src/backend/files/files.module.ts","../src/backend/files/files.controller.ts","../src/domain/files/utils/guards.ts","../src/backend/pipes/validation/schema.ts","../src/backend/notifications/notifications.module.ts","../src/backend/notifications/notifications.controller.ts","../src/backend/featureFlags/FeatureFlagDomainService.ts","../src/backend/featureFlags/feature-flag.module.ts","../src/backend/featureFlags/feature-flag.controller.ts","../src/domain/featureFlags/service.ts","../src/domain/featureFlags/provider.ts","../src/domain/featureFlags/providers/memory.ts","../src/domain/featureFlags/providers/file.ts","../src/domain/featureFlags/providers/redis.ts","../src/domain/featureFlags/providers/api.ts","../src/domain/featureFlags/providers/database.ts","../src/domain/featureFlags/providers/factory.ts","../src/domain/featureFlags/module.ts","../src/backend/featureFlags/decorators/feature-flag.decorator.ts","../src/backend/featureFlags/decorators/feature-disabled.decorator.ts","../src/backend/featureFlags/decorators/feature-enabled.decorator.ts","../src/backend/featureFlags/guards/feature-flag.guard.ts","../src/backend/featureFlags/middleware/feature-flag-middleware.ts","../src/backend/featureFlags/interceptors/feature-flag-logging-interceptor.ts","../src/backend/featureFlags/interceptors/error-handling-interceptor.ts","../src/backend/featureFlags/config/validation.ts","../src/backend/featureFlags/config/feature-flag.config.ts","../src/backend/webhooks/webhooks.module.ts","../src/backend/webhooks/webhooks.controller.ts","../src/base/cache/feature/caching.ts","../src/init/nestjs/index.ts","../src/init/nestjs/configureNestApp.ts","../src/adapters/nextjs.ts","../src/adapters/nestjs.ts"],"names":["FNV_CONSTANTS","MATH_CONSTANTS","HashUtils","HASH_SEED_CONSTANTS","IdUtils","ValueUtils","path","ObjectUtils","TypeGuardUtils","TIME_CONSTANTS","TimeUtils","isString","isDefined","isNumber","getValidProviders","FEATURE_FLAG_PROVIDERS","CoreEventManager","EventEmitter","PRODUCTION_CONFIG","STAGING_CONFIG","DEVELOPMENT_CONFIG","setDefaultApiClient","ApiPackageError","PACKAGE_STATUS_CODES","API_ERROR_CODES","OPERATIONS","ApiClientService","getApiClient","initApiClient","createApiClientInstance","createStandaloneApiClient","generateRequestId","ERROR_CODES","ERROR_CATEGORY","HTTP_STATUS","CORE_EVENTS","mergeConfigs","createApiClient","PackageLogger","logger","errors","CorePackageError","OBSERVABILITY_METRICS","ServiceRegistry","BACKEND_RUNTIMES","UNIVERSAL_RUNTIMES","DbService","FRONTEND_RUNTIMES","CacheService","StorageService","NotificationService","StreamConnectionManager","DEFAULT_STALE_MINUTES","DEFAULT_MAX_STALE_AGE","StreamBroadcaster","StreamPackageError","STREAM_ERROR_CODES","BaseAuthAdapter","AnonymousAuthAdapter","BaseTransportAdapter","STREAMING_DEFAULTS","SSETransportAdapter","BaseFrameworkAdapter","NextJSFrameworkAdapter","ExpressFrameworkAdapter","NestJSFrameworkAdapter","StreamServerBuilder","StreamServer","TokenAuthAdapter","WebSocketTransportAdapter","init_adapters","StreamRegistry","CoreLogger","BaseStreamEndpoint","BaseChannelController","FilesChannelController","FILES_STREAM_CHANNEL_PREFIX","FILES_STREAM_BROADCAST_CHANNEL","STORAGE_ERROR_CODES","FilesStreamEndpoint","NotificationsChannelController","NOTIFICATIONS_STREAM_CHANNEL_PREFIX","NOTIFICATIONS_STREAM_BROADCAST_CHANNEL","NotificationsStreamEndpoint","init_streaming","SystemChannelController","SYSTEM_STREAM_CHANNEL","SystemStreamEndpoint","MiddlewareChain","Core","STORE_KEYS","clearEventEmitter","BaseError","state","ServerErrorMiddleware","createStandaloneFeatureFlagStore","initializeErrorSystem","setEventEmitter","initializeGlobalErrorHandler","BaseDomainService","uploadFileFetcher","uploadFilesFetcher","generateDocumentFetcher","BackendEventPersistenceHandler","FrontendEventPersistenceHandler","config","defaultConfig","CACHE_MAX_SIZE_DEFAULT","CACHE_CLEANUP_INTERVAL_DEFAULT","CacheKeyBuilder","resolve","CacheManager","RedisCacheStrategy","BaseBackendDomainService","FILE_CATEGORY","ENTITY_TYPE","BaseMapper","BaseValidator","ValidateAndFormatErrors","ValidationError","PAGE_SIZES","SERVICE_KEYS","SYSTEM_USER_ID","getFile","deleteFile","downloadFile","getSignedUrl","PAGINATION_DEFAULTS","CreateNotificationsSchema","DeleteNotificationsSchema","QueryNotificationsSchema","z","NotificationPackageError","NOTIFICATION_ERROR_CODES","_instance","fetchNotifications","deleteNotification","store","DEFAULT_ENCRYPTION_FIELDS","DEFAULT_CONFIG","TABLE_REGISTRY","createDatabaseService","DatabasePackageError","DATABASE_ERROR_CODES","ExampleRepository","BaseRepository","row","CreateExampleSchema","UpdateExampleSchema","PatchExampleSchema","DeleteExampleSchema","QueryExampleSchema","BackendExampleDomainService","FilesRepository","TABLE_NAME","DEFAULT_LIMIT","VARIANT_NAMES","MediaVariantsRepository","CreateFilesSchema","PatchFilesSchema","BackendFilesDomainService","DOWNLOAD_CONFIG","NotificationsRepository","NotificationPreferencesRepository","ShortUrlRepository","BackendNotificationsDomainService","verifyToken","v","d","b","__assign","o","Reflect","hasOwn","ownKeys","metadataRegistry","metadata","OrdinaryDefineOwnMetadata","OrdinaryHasOwnMetadata","OrdinaryGetOwnMetadata","OrdinaryOwnMetadataKeys","defineMetadata","hasOwnMetadata","getOwnMetadata","getOwnMetadataKeys","deleteMetadata","MapIterator","Map","Set","WeakMap","exports","isObject","Controller","Inject","Injectable","SetMetadata","UseInterceptors","Global","Module","RequestMethod","RouteParamtypes","UploadedFile","UploadedFiles","Query","Body","Param","Response","HttpCode","HttpStatus","ShutdownSignal","VersioningType","require_http","require_modules","Scope","require_constants","require_utils","self","require_interfaces","module","Subscription","__values","__spreadArray","__read","__extends","Subscriber","ConsumerObserver","SafeSubscriber","Observable","__await","process","__asyncValues","OperatorSubscriber","err","Action","AsyncAction","Scheduler","AsyncScheduler","catchError","i","Subject","AnonymousSubject","of","NotificationKind","Notification","ConnectableObservable","BehaviorSubject","AsyncSubject","ReplaySubject","tap","_a","TimeInterval","window","sourceIndex","require_decorators","parse","stringify","value","match","charset","extension","data","require_lib","fs","er","made","crypto","Buffer","join","realHasInstance","keys","onlegacyfinish","onfinish","onend","onerror","onclose","onrequest","createReadableStreamAsyncIterator","require_from","EElistenerCount","debug","n","undefined","log","f","ArrayBuffer","ArrayBufferView","min","Uint8Array","DataView","FileInterceptor","FilesInterceptor","require_multer_constants","require_multer","setImmediate","AsapAction","AsapScheduler","QueueAction","QueueScheduler","AnimationFrameAction","AnimationFrameScheduler","VirtualTimeScheduler","VirtualAction","_i","__exportStar","FrontendExampleDomainService","FrontendFilesDomainService","FrontendNotificationsDomainService","CACHE_STRATEGIES","StorageServiceImpl","StoragePackageError","NotificationServiceImpl","FEATURE_FLAG_TABLE","FEATURE_FLAG_FIELD","FEATURE_FLAG_RULE_FIELD","SORT_DIRECTION","EVALUATION_REASONS","DATABASE_FIELDS","FEATURE_FLAG_TYPES","SYSTEM_USERS","ISO_STANDARDS","MIME_TYPE_EXTENSIONS","FILE_SIZE_UNITS","FILE_SIZE_MULTIPLIERS","require","createRequire","fileURLToPath","dirname","readFileSync","import_common","ExampleController","SuccessResponseStandard","ApiOperation","ApiResponse","ApiParam","ApiBody","ApiTags","ExampleModule","FILE_ACCESS_LEVEL","UPLOAD_STATUS","STORAGE_ADAPTER_TYPE","zodErrorToValidationErrors","FilesController","ApiConsumes","UPLOAD_CONFIG","GenerateDocumentRequestSchema","FilesModule","NotificationsController","CORE_ERROR_CODES","ApiQuery","NotificationsModule","readFile","promisify","writeFile","access","mkdir","yaml","FORMAT_CONSTANTS","FILE_CHECK_INTERVAL_DEFAULT","apiEvaluateAllFlags","apiCreateFlag","apiUpdateFlag","apiDeleteFlag","apiFetchRules","FEATURE_FLAG_CACHE_TTL_DEFAULT","FEATURE_FLAG_FILE_PATHS","FEATURES","FeatureFlagController","FeatureFlagModule","FEATURE_FLAG_METADATA","FeatureFlagGuard","FeatureFlagMiddleware","FeatureFlagLoggingInterceptor","ErrorHandlingInterceptor","NUMERIC_CONSTANTS","NODE_ENVIRONMENTS","FEATURE_FLAG_DEFAULTS","NOTIFICATION_PROVIDERS","WebhooksController","STORAGE_WEBHOOK_EVENT_TYPE","NOTIFICATION_CHANNELS","WebhooksModule","import_rxjs","Caching","isProduction","createNestJsExceptionFilter","document","configureNestApp","loadDotenv"],"mappings":"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AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG;AAAA,KAC/C;AAEA,IAAA,IAAM,MAAA,GAAS;AAAA,MACb,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG;AAAA,KAC/C;AAEA,IAAA,IAAM,OAAA,GAAU;AAAA,MACd,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG;AAAA,KAC/C;AAEA,IAAA,IAAM,cAAA,GAAiB;AAAA,MACrB,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG;AAAA,KAC/C;AAGA,IAAA,IAAM,UAAA,GAAa;AAAA,MACjB,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC5D,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC5D,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC3D,CAAA;AAAA,MAAI,CAAA;AAAA,MAAI,CAAA;AAAA,MAAI,CAAA;AAAA,MAAI,CAAA;AAAA,MAAI,CAAA;AAAA,MAAI,CAAA;AAAA,MAAI,CAAA;AAAA,MAAI,CAAA;AAAA,MAAI,CAAA;AAAA,MAAG,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC5D,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC5D,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC5D,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC5D,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC5D,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC5D,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC5D,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC5D,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC5D,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC5D,EA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W,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UACvD,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SAAA;AAAA,UAAW,SA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A,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG;AAAA,KAC/C;AAEA,IAAA,IAAM,WAAA,GAAc;AAAA,MAClB,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC7C,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MA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A;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC3D,CAAA;AAAA,MAAI,CAAA;AAAA,MAAI,CAAA;AAAA,MAAI,CAAA;AAAA,MAAI,CAAA;AAAA,MAAI,CAAA;AAAA,MAAI,CAAA;AAAA,MAAI,CAAA;AAAA,MAAI,CAAA;AAAA,MAAI,CAAA;AAAA,MAAG,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC5D,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC5D,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC5D,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC5D,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC5D,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC5D,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC5D,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC5D,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC5D,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAA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","file":"entry-backend.cjs","sourcesContent":["/**\n * Core Dependencies Configuration\n *\n * Similar to @plyaz/api's setGlobalConfig pattern.\n * Backend services are registered here by entry points, not imported directly.\n *\n * IMPORTANT: This file must NOT import from backend service files (DbService, CacheService, etc.)\n * as that would cause the bundler to include backend dependencies in the frontend bundle.\n *\n * @example\n * ```typescript\n * // entry-backend.ts\n * import { setCoreDependencies } from './config/dependencies';\n * import { DbService } from './services/DbService';\n * import { CacheService } from './services/CacheService';\n *\n * setCoreDependencies({\n *   DbService,\n *   CacheService,\n *   StorageService,\n *   NotificationService,\n * });\n *\n * // entry-frontend.ts\n * // Don't call setCoreDependencies - no backend deps loaded\n * ```\n */\n\nimport type {\n  CoreDbServiceStatic,\n  CoreCacheServiceStatic,\n  CoreStorageServiceStatic,\n  CoreNotificationServiceStatic,\n  CoreServerErrorMiddlewareStatic,\n} from '@plyaz/types/core';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Dependencies Container\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface CoreDependencies {\n  DbService?: CoreDbServiceStatic;\n  CacheService?: CoreCacheServiceStatic;\n  StorageService?: CoreStorageServiceStatic;\n  NotificationService?: CoreNotificationServiceStatic;\n  ServerErrorMiddleware?: CoreServerErrorMiddlewareStatic;\n}\n\n// Global dependencies container\nlet _dependencies: CoreDependencies = {};\n\n/**\n * Set core dependencies (called by entry points)\n *\n * @example\n * ```typescript\n * // entry-backend.ts\n * import { DbService } from './services/DbService';\n * import { CacheService } from './services/CacheService';\n *\n * setCoreDependencies({\n *   DbService,\n *   CacheService,\n * });\n * ```\n */\nexport function setCoreDependencies(deps: CoreDependencies): void {\n  _dependencies = { ..._dependencies, ...deps };\n}\n\n/**\n * Get core dependencies\n */\nexport function getCoreDependencies(): CoreDependencies {\n  return _dependencies;\n}\n\n/**\n * Check if a dependency is available\n */\nexport function hasCoreDependency(key: keyof CoreDependencies): boolean {\n  return _dependencies[key] !== undefined;\n}\n\n/**\n * Get a specific dependency\n */\nexport function getCoreDependency<K extends keyof CoreDependencies>(\n  key: K\n): CoreDependencies[K] | undefined {\n  return _dependencies[key];\n}\n\n/**\n * Clear all dependencies (useful for testing)\n */\nexport function clearCoreDependencies(): void {\n  _dependencies = {};\n}\n","/**\n * Hash Utilities\n *\n * Common hashing functions for consistent data distribution and rollouts.\n *\n * @fileoverview Hash utility functions\n * @version 1.0.0\n */\n\nimport { MATH_CONSTANTS, FNV_CONSTANTS, HASH_SEED_CONSTANTS } from '@plyaz/config';\n\n/**\n * Optimized string hashing function for consistent distribution.\n * Uses FNV-1a hash algorithm for better distribution and performance.\n * FNV-1a provides excellent avalanche properties and is faster than\n * polynomial rolling hash for short to medium strings.\n *\n * @param str - String to hash\n * @returns Positive hash value\n *\n * @example\n * ```typescript\n * const hash = hashString('user123:AUTH_GOOGLE');\n * const bucket = hash % 100; // 0-99\n * ```\n *\n * @remarks\n * FNV-1a algorithm benefits:\n * - Excellent distribution for hash tables\n * - Fast computation with minimal operations\n * - Good avalanche effect (small input changes create large output changes)\n * - Consistent timing reduces timing attack vulnerabilities\n */\nexport function hashString(str: string): number {\n  // Handle empty string edge case early\n  if (str.length === 0) return 0;\n\n  // Use FNV-1a constants from config\n  let hash: number = FNV_CONSTANTS.FNV_32_OFFSET;\n\n  // Process string with FNV-1a algorithm\n  // Using charCodeAt is faster than alternatives and handles Unicode correctly\n  for (let i = 0; i < str.length; i++) {\n    // XOR with byte value then multiply by prime\n    // This order (XOR first) is what makes it FNV-1a vs FNV-1\n    hash ^= str.charCodeAt(i);\n    hash = Math.imul(hash, FNV_CONSTANTS.FNV_32_PRIME) >>> 0; // Ensure 32-bit unsigned\n  }\n\n  // Ensure positive value using >>> 0 for unsigned 32-bit conversion\n  // This is more efficient than Math.abs() and handles edge cases better\n  return hash >>> 0;\n}\n\n/**\n * Determines if a user should be included in a rollout based on percentage.\n * Uses consistent hashing to ensure the same user always gets the same result.\n *\n * @param identifier - Unique identifier for consistency (e.g., userId, flagKey)\n * @param percentage - Rollout percentage (0-100)\n * @returns true if identifier should be included in rollout\n *\n * @example\n * ```typescript\n * const shouldInclude = isInRollout('user123:AUTH_GOOGLE', 25); // 25% rollout\n * ```\n */\nexport function isInRollout(identifier: string, percentage: number): boolean {\n  if (percentage >= MATH_CONSTANTS.PERCENTAGE_MAX) return true;\n  if (percentage <= 0) return false;\n\n  const hash = hashString(identifier);\n  return hash % MATH_CONSTANTS.PERCENTAGE_MAX < percentage;\n}\n\n/**\n * Creates a consistent rollout identifier for a user and feature.\n *\n * @param featureKey - Feature or flag key\n * @param userId - User identifier (defaults to 'anonymous')\n * @returns Consistent identifier for rollout calculations\n *\n * @example\n * ```typescript\n * const identifier = createRolloutIdentifier('AUTH_GOOGLE', 'user123');\n * const inRollout = isInRollout(identifier, 50);\n * ```\n */\nexport function createRolloutIdentifier(featureKey: string, userId?: string): string {\n  const trimmedUserId = userId?.trim();\n  const effectiveUserId = trimmedUserId && trimmedUserId.length > 0 ? trimmedUserId : 'anonymous';\n  return `${featureKey}:${effectiveUserId}`;\n}\n\n/**\n * Hash-based utilities for consistent data operations.\n */\nexport const HashUtils = {\n  /**\n   * Generates a hash-based bucket for load balancing or distribution.\n   *\n   * @param identifier - Unique identifier\n   * @param bucketCount - Number of buckets (default: 10)\n   * @returns Bucket number (0 to bucketCount-1)\n   */\n  getBucket: (identifier: string, bucketCount: number = 10): number => {\n    return hashString(identifier) % bucketCount;\n  },\n\n  /**\n   * Checks if an identifier falls within a specific bucket range.\n   *\n   * @param identifier - Unique identifier\n   * @param startBucket - Starting bucket (inclusive)\n   * @param endBucket - Ending bucket (inclusive)\n   * @param totalBuckets - Total number of buckets (default: 100)\n   * @returns true if identifier is in the bucket range\n   */\n  isInBucketRange: (\n    identifier: string,\n    startBucket: number,\n    endBucket: number,\n    totalBuckets: number = MATH_CONSTANTS.PERCENTAGE_MAX\n  ): boolean => {\n    const bucket = hashString(identifier) % totalBuckets;\n    return bucket >= startBucket && bucket <= endBucket;\n  },\n\n  /**\n   * Creates a deterministic random seed from a string.\n   * Uses the improved hash function and ensures the seed is within\n   * the safe range for JavaScript's Math.random seeding.\n   *\n   * @param str - String to convert to seed\n   * @returns Deterministic seed value (0 to 2^31-1)\n   */\n  createSeed: (str: string): number => {\n    // Use constant from config for consistency\n    return hashString(str) % HASH_SEED_CONSTANTS.MAX_SAFE_SEED;\n  },\n} as const;\n","/**\n * ID Generation Utilities\n *\n * Provides consistent ID generation across the application.\n * Uses globalThis.crypto when available, with a fallback for environments without it.\n *\n * @fileoverview ID generation utility functions\n */\n\n// Constants for ID generation\nconst RANDOM_ID_RADIX = 36;\nconst RANDOM_ID_SLICE_START = 2;\nconst SHORT_ID_LENGTH = 8;\nconst HEX_RADIX = 16;\nconst HEX_SLICE_START = 2;\nconst HEX_SLICE_END = 18;\nconst SPAN_ID_LENGTH = 16;\n\n/**\n * Generate a UUID v4 string.\n * Uses crypto.randomUUID when available, otherwise falls back to a timestamp-based ID.\n *\n * @returns A UUID v4 string or fallback ID\n *\n * @example\n * ```typescript\n * const id = generateId();\n * // => 'a1b2c3d4-e5f6-7890-abcd-ef1234567890' (crypto available)\n * // => '1701475200000-x7k9m2' (fallback)\n * ```\n */\nexport function generateId(): string {\n  const cryptoApi = globalThis.crypto as { randomUUID?: () => string } | undefined;\n  if (cryptoApi?.randomUUID) {\n    return cryptoApi.randomUUID();\n  }\n  return `${Date.now()}-${Math.random().toString(RANDOM_ID_RADIX).slice(RANDOM_ID_SLICE_START)}`;\n}\n\n/**\n * Generate a short random ID (8 characters).\n * Useful for correlation IDs, short references, etc.\n *\n * @returns A short random string\n *\n * @example\n * ```typescript\n * const shortId = generateShortId();\n * // => 'x7k9m2ab'\n * ```\n */\nexport function generateShortId(): string {\n  const cryptoApi = globalThis.crypto as { randomUUID?: () => string } | undefined;\n  if (cryptoApi?.randomUUID) {\n    return cryptoApi.randomUUID().replace(/-/g, '').slice(0, SHORT_ID_LENGTH);\n  }\n  return Math.random()\n    .toString(RANDOM_ID_RADIX)\n    .slice(RANDOM_ID_SLICE_START, RANDOM_ID_SLICE_START + SHORT_ID_LENGTH);\n}\n\n/**\n * Generate a correlation ID for tracing.\n * Format: timestamp-randomString\n *\n * @returns A correlation ID string\n *\n * @example\n * ```typescript\n * const correlationId = generateCorrelationId();\n * // => '1701475200000-x7k9m2'\n * ```\n */\nexport function generateCorrelationId(): string {\n  return `${Date.now()}-${generateShortId()}`;\n}\n\n/**\n * Generate a trace ID for distributed tracing (32 hex characters / 128 bits).\n *\n * @returns A 32-character hex string\n *\n * @example\n * ```typescript\n * const traceId = generateTraceId();\n * // => 'a1b2c3d4e5f67890abcdef1234567890'\n * ```\n */\nexport function generateTraceId(): string {\n  const cryptoApi = globalThis.crypto as { randomUUID?: () => string } | undefined;\n  if (cryptoApi?.randomUUID) {\n    // Use two UUIDs without dashes to get 64 hex chars, take first 32\n    return cryptoApi.randomUUID().replace(/-/g, '');\n  }\n  // Fallback: concatenate two random hex strings\n  return (\n    Math.random().toString(HEX_RADIX).substring(HEX_SLICE_START, HEX_SLICE_END) +\n    Math.random().toString(HEX_RADIX).substring(HEX_SLICE_START, HEX_SLICE_END)\n  );\n}\n\n/**\n * Generate a span ID for distributed tracing (16 hex characters / 64 bits).\n *\n * @returns A 16-character hex string\n *\n * @example\n * ```typescript\n * const spanId = generateSpanId();\n * // => 'a1b2c3d4e5f67890'\n * ```\n */\nexport function generateSpanId(): string {\n  const cryptoApi = globalThis.crypto as { randomUUID?: () => string } | undefined;\n  if (cryptoApi?.randomUUID) {\n    // Use UUID without dashes, take first 16 chars\n    return cryptoApi.randomUUID().replace(/-/g, '').substring(0, SPAN_ID_LENGTH);\n  }\n  // Fallback: random hex string\n  return Math.random().toString(HEX_RADIX).substring(HEX_SLICE_START, HEX_SLICE_END);\n}\n\n/**\n * UUID v4 regex pattern.\n * Matches standard UUID format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\n */\nconst UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n\n/**\n * Check if a string is a valid UUID v4.\n *\n * @param value - The string to check\n * @returns true if the string is a valid UUID\n *\n * @example\n * ```typescript\n * isValidUUID('a1b2c3d4-e5f6-4890-abcd-ef1234567890'); // true\n * isValidUUID('not-a-uuid'); // false\n * isValidUUID('bulk-upload-123456'); // false\n * ```\n */\nexport function isValidUUID(value: string | null | undefined): boolean {\n  if (!value) return false;\n  return UUID_REGEX.test(value);\n}\n\n/**\n * ID generation utilities object for convenient access.\n */\nexport const IdUtils = {\n  generate: generateId,\n  generateShort: generateShortId,\n  generateCorrelation: generateCorrelationId,\n  generateTraceId,\n  generateSpanId,\n  isValidUUID,\n} as const;\n","/* eslint-disable complexity */\n/**\n * Value Utilities\n *\n * Common utility functions for working with different value types.\n *\n * @fileoverview Value manipulation utilities\n * @version 1.0.0\n */\n\nimport { MATH_CONSTANTS } from '@plyaz/config';\n\n/**\n * Determines if a value should be considered 'truthy' for feature flags.\n * More strict than JavaScript's built-in truthiness.\n *\n * @param value - The value to check\n * @returns true if the value is considered enabled/truthy\n *\n * @example\n * ```typescript\n * isTruthy(true)        // true\n * isTruthy('enabled')   // true\n * isTruthy('')          // false\n * isTruthy('false')     // false\n * isTruthy(0)           // false\n * isTruthy(42)          // true\n * isTruthy({})          // false\n * ```\n */\n// Helper function to check if a string is falsy\nfunction isStringFalsy(value: string): boolean {\n  if (value === '') return true;\n  const lower = value.toLowerCase().trim();\n  return ['false', 'no', '0', 'off', 'disabled'].includes(lower);\n}\n\n// Helper function to check if an object is truthy\nfunction isObjectTruthy(value: object): boolean {\n  if (Array.isArray(value)) return value.length > 0;\n  if (value instanceof Map || value instanceof Set) return value.size > 0;\n  if (value.constructor === Object) return Object.keys(value).length > 0;\n  return true; // All other objects (Date, RegExp, etc) are truthy\n}\n\nexport function isTruthy(value: unknown): boolean {\n  if (value === null || value === undefined) return false;\n\n  switch (typeof value) {\n    case 'boolean':\n      return value;\n    case 'string':\n      return !isStringFalsy(value);\n    case 'number':\n      return value !== 0 && !isNaN(value);\n    case 'function':\n    case 'symbol':\n      return true;\n    case 'object':\n      return isObjectTruthy(value);\n    default:\n      return false;\n  }\n}\n\n/**\n * Safely converts a value to a boolean with feature flag semantics.\n *\n * @param value - Value to convert\n * @param defaultValue - Default if conversion fails (default: false)\n * @returns Boolean representation\n *\n * @example\n * ```typescript\n * toBoolean('true')     // true\n * toBoolean('yes')      // true\n * toBoolean('1')        // true\n * toBoolean('false')    // false\n * toBoolean('no')       // false\n * toBoolean('0')        // false\n * ```\n */\n// Helper function to parse string to boolean\nfunction parseStringToBoolean(value: string, defaultValue: boolean): boolean {\n  const lower = value.toLowerCase();\n  if (['true', 'yes', '1', 'on', 'enabled'].includes(lower)) return true;\n  if (['false', 'no', '0', 'off', 'disabled'].includes(lower)) return false;\n  return defaultValue;\n}\n\nexport function toBoolean(value: unknown, defaultValue: boolean = false): boolean {\n  if (value === null || value === undefined) return false;\n\n  switch (typeof value) {\n    case 'boolean':\n      return value;\n    case 'string':\n      return parseStringToBoolean(value, defaultValue);\n    case 'number':\n      return value !== 0 && !isNaN(value);\n    case 'object':\n    case 'function':\n      return true;\n    default:\n      return defaultValue;\n  }\n}\n\n/**\n * Safely converts a value to a number.\n * Handles bigint, string, and number types.\n *\n * @param value - Value to convert (bigint, number, or string)\n * @param defaultValue - Default if conversion fails (default: 0)\n * @returns Number representation\n *\n * @example\n * ```typescript\n * toNumber(42)              // 42\n * toNumber(BigInt(100))     // 100\n * toNumber('123')           // 123\n * toNumber('invalid')       // 0 (default)\n * toNumber('invalid', -1)   // -1 (custom default)\n * ```\n */\nexport function toNumber(\n  value: bigint | number | string | unknown,\n  defaultValue: number = 0\n): number {\n  if (value === null || value === undefined) return defaultValue;\n\n  if (typeof value === 'bigint') return Number(value);\n  if (typeof value === 'number') return isNaN(value) ? defaultValue : value;\n  if (typeof value === 'string') {\n    const parsed = Number.parseFloat(value);\n    return isNaN(parsed) ? defaultValue : parsed;\n  }\n\n  return defaultValue;\n}\n\n/**\n * Value validation and conversion utilities.\n */\nexport const ValueUtils = {\n  /**\n   * Checks if a value is a valid percentage (0-100).\n   *\n   * @param value - Value to check\n   * @returns true if valid percentage\n   */\n  isValidPercentage: (value: unknown): boolean => {\n    if (typeof value !== 'number') return false;\n    return !isNaN(value) && isFinite(value) && value >= 0 && value <= MATH_CONSTANTS.PERCENTAGE_MAX;\n  },\n\n  /**\n   * Clamps a number to a specific range.\n   *\n   * @param value - Value to clamp\n   * @param min - Minimum value\n   * @param max - Maximum value\n   * @returns Clamped value\n   */\n  clamp: (value: number, min: number, max: number): number => {\n    return Math.min(Math.max(value, min), max);\n  },\n\n  /**\n   * Checks if a value is empty (null, undefined, empty string, empty array).\n   *\n   * @param value - Value to check\n   * @returns true if empty\n   */\n  isEmpty: (value: unknown): boolean => {\n    if (value === null || value === undefined) return true;\n    if (typeof value === 'string') return value.trim() === '';\n    if (Array.isArray(value)) return value.length === 0;\n    if (typeof value === 'object') return Object.keys(value).length === 0;\n    return false;\n  },\n\n  /**\n   * Safely gets a nested property from an object.\n   *\n   * @param obj - Object to query\n   * @param path - Dot-separated path (e.g., 'user.profile.name')\n   * @param defaultValue - Default if path doesn't exist\n   * @returns Property value or default\n   */\n  getNestedProperty: (obj: unknown, path: string, defaultValue?: unknown): unknown => {\n    if (!obj || typeof obj !== 'object') return defaultValue;\n\n    const keys = path.split('.');\n    let current: unknown = obj;\n\n    for (const key of keys) {\n      if (current == null || typeof current !== 'object') return defaultValue;\n      current = (current as Record<string, unknown>)[key];\n      if (current === undefined) return defaultValue;\n    }\n\n    return current;\n  },\n} as const;\n","/**\n * Object Utilities\n *\n * Provides utilities for working with nested object paths and property access.\n *\n * @fileoverview Object manipulation utilities\n */\n\n/**\n * Sets a value at a nested path in an object, creating intermediate objects as needed.\n *\n * @param obj - The target object to modify\n * @param path - Dot-separated path to the property (e.g., 'user.profile.name')\n * @param value - The value to set at the path\n *\n * @example\n * ```typescript\n * const obj = { user: { id: 1 } };\n * setNestedProperty(obj, 'user.profile.name', 'John');\n * // Result: { user: { id: 1, profile: { name: 'John' } } }\n * ```\n */\nexport function setNestedProperty(\n  obj: Record<string, unknown>,\n  path: string,\n  value: unknown\n): void {\n  const keys = path.split('.');\n  let current: Record<string, unknown> = obj;\n\n  // Navigate to the parent object, creating intermediate objects as needed\n  for (let i = 0; i < keys.length - 1; i++) {\n    const key = keys[i];\n    if (!(key in current) || typeof current[key] !== 'object' || current[key] === null) {\n      current[key] = {};\n    }\n    current = current[key] as Record<string, unknown>;\n  }\n\n  // Set the final property\n  const finalKey = keys[keys.length - 1];\n  current[finalKey] = value;\n}\n\n/**\n * Gets a value at a nested path in an object.\n *\n * @param obj - The source object to read from\n * @param path - Dot-separated path to the property (e.g., 'user.profile.name')\n * @param defaultValue - Optional default value if the path doesn't exist\n * @returns The value at the path, or defaultValue if not found\n *\n * @example\n * ```typescript\n * const obj = { user: { profile: { name: 'John' } } };\n * getNestedProperty(obj, 'user.profile.name'); // 'John'\n * getNestedProperty(obj, 'user.settings.theme', 'dark'); // 'dark' (default)\n * ```\n */\nexport function getNestedProperty<T = unknown>(\n  obj: Record<string, unknown>,\n  path: string,\n  defaultValue?: T\n): T | undefined {\n  const keys = path.split('.');\n  let current: unknown = obj;\n\n  // Navigate through the path\n  for (const key of keys) {\n    if (current === null || current === undefined || typeof current !== 'object') {\n      return defaultValue;\n    }\n    current = (current as Record<string, unknown>)[key];\n  }\n\n  return current !== undefined ? (current as T) : defaultValue;\n}\n\n/**\n * Checks if a nested path exists in an object.\n *\n * @param obj - The object to check\n * @param path - Dot-separated path to check (e.g., 'user.profile.name')\n * @returns True if the path exists and is not undefined\n *\n * @example\n * ```typescript\n * const obj = { user: { profile: { name: 'John' } } };\n * hasNestedProperty(obj, 'user.profile.name'); // true\n * hasNestedProperty(obj, 'user.settings.theme'); // false\n * ```\n */\nexport function hasNestedProperty(obj: Record<string, unknown>, path: string): boolean {\n  const keys = path.split('.');\n  let current: unknown = obj;\n\n  for (const key of keys) {\n    if (current === null || current === undefined || typeof current !== 'object') {\n      return false;\n    }\n    if (!(key in (current as Record<string, unknown>))) {\n      return false;\n    }\n    current = (current as Record<string, unknown>)[key];\n  }\n\n  return current !== undefined;\n}\n\n/**\n * Object utilities namespace for convenient grouped access.\n *\n * @example\n * ```typescript\n * import { ObjectUtils } from '@plyaz/core/utils';\n *\n * ObjectUtils.setNestedProperty(obj, 'user.name', 'John');\n * const name = ObjectUtils.getNestedProperty(obj, 'user.name');\n * ```\n */\nexport const ObjectUtils = {\n  setNestedProperty,\n  getNestedProperty,\n  hasNestedProperty,\n} as const;\n","/**\n * Type Guards Utilities\n *\n * Common type guard functions for runtime type checking.\n */\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Generic Type Guards\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Check if value is a non-null object\n */\nexport function isObject(value: unknown): value is Record<string, unknown> {\n  return typeof value === 'object' && value !== null;\n}\n\n/**\n * Check if object has a specific property\n */\nexport function hasProperty<K extends string>(obj: unknown, key: K): obj is Record<K, unknown> {\n  return isObject(obj) && key in obj;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Type Guard Utilities Class\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Type guard utilities grouped in a class for namespaced access\n */\nexport const TypeGuardUtils = {\n  isObject,\n  hasProperty,\n} as const;\n","/**\n * Time Utilities\n *\n * Utility functions for time-related operations.\n */\n\nimport { TIME_CONSTANTS } from '@plyaz/config/time';\n\n/**\n * Check if current time is within quiet hours.\n *\n * @param quietHoursStart - Start time in HH:MM format\n * @param quietHoursEnd - End time in HH:MM format\n * @param timezone - Timezone string (default: 'UTC')\n * @returns true if currently in quiet hours\n *\n * @example\n * ```typescript\n * // Check if 22:00 - 08:00 quiet hours are active\n * const inQuietHours = isInQuietHours('22:00', '08:00', 'America/New_York');\n * ```\n */\nexport function isInQuietHours(\n  quietHoursStart: string | null | undefined,\n  quietHoursEnd: string | null | undefined,\n  timezone: string = 'UTC'\n): boolean {\n  if (!quietHoursStart || !quietHoursEnd) return false;\n\n  try {\n    const now = new Date();\n    const formatter = new Intl.DateTimeFormat('en-US', {\n      timeZone: timezone,\n      hour: '2-digit',\n      minute: '2-digit',\n      hour12: false,\n    });\n    const parts = formatter.formatToParts(now);\n    const hour = Number.parseInt(parts.find(p => p.type === 'hour')?.value ?? '0', 10);\n    const minute = Number.parseInt(parts.find(p => p.type === 'minute')?.value ?? '0', 10);\n    const currentMinutes = hour * TIME_CONSTANTS.MINUTES_PER_HOUR + minute;\n\n    const [startHour, startMinute] = quietHoursStart.split(':').map(Number);\n    const [endHour, endMinute] = quietHoursEnd.split(':').map(Number);\n    const startMinutes = startHour * TIME_CONSTANTS.MINUTES_PER_HOUR + startMinute;\n    const endMinutes = endHour * TIME_CONSTANTS.MINUTES_PER_HOUR + endMinute;\n\n    // Handle overnight quiet hours (e.g., 22:00 - 08:00)\n    if (startMinutes > endMinutes) {\n      return currentMinutes >= startMinutes || currentMinutes < endMinutes;\n    }\n    return currentMinutes >= startMinutes && currentMinutes < endMinutes;\n  } catch {\n    return false;\n  }\n}\n\n/**\n * Check if a campaign is expired based on start date and duration\n */\nexport function isCampaignExpired(\n  startDate: Date | undefined,\n  duration: number | undefined\n): boolean {\n  if (!startDate || !duration) return false;\n  const endDate = new Date(startDate.getTime() + duration * TIME_CONSTANTS.DAY);\n  return new Date() > endDate;\n}\n\n/**\n * Calculate remaining days for a campaign\n */\nexport function getCampaignDaysRemaining(\n  startDate: Date | undefined,\n  duration: number | undefined\n): number {\n  if (!startDate || !duration) return 0;\n  const endDate = new Date(startDate.getTime() + duration * TIME_CONSTANTS.DAY);\n  const now = new Date();\n  const diffTime = endDate.getTime() - now.getTime();\n  return Math.max(0, Math.ceil(diffTime / TIME_CONSTANTS.DAY));\n}\n\n/** Time utilities namespace */\nexport const TimeUtils = {\n  isInQuietHours,\n  isCampaignExpired,\n  getCampaignDaysRemaining,\n} as const;\n","/**\n * Validation Utility Functions\n */\n\nimport { FEATURE_FLAG_PROVIDERS } from '@plyaz/types';\n\n/**\n * Type guard to check if value is string\n */\nexport const isString = (value: unknown): value is string => typeof value === 'string';\n\n/**\n * Type guard to check if value is defined (not undefined)\n */\nexport const isDefined = <T>(value: T | undefined): value is T => value !== undefined;\n\n/**\n * Type guard to check if value is number\n */\nexport const isNumber = (value: unknown): value is number => typeof value === 'number';\n\n/**\n * Helper function to get all valid provider types as array\n */\nexport const getValidProviders = (): string[] => Object.values(FEATURE_FLAG_PROVIDERS);\n","/**\n * Common Utilities - Main Export\n *\n * Exports all common utility functions that can be reused across the application.\n *\n * @fileoverview Common utilities export\n */\n\n// Hash utilities for consistent distribution and rollouts\nexport { hashString, isInRollout, createRolloutIdentifier, HashUtils } from './hash';\n\n// ID generation utilities\nexport {\n  generateId,\n  generateShortId,\n  generateCorrelationId,\n  generateTraceId,\n  generateSpanId,\n  isValidUUID,\n  IdUtils,\n} from './id';\n\n// Value utilities for type conversion and validation\nexport { isTruthy, toBoolean, toNumber, ValueUtils } from './values';\n\n// Object utilities for nested property access\nexport { setNestedProperty, getNestedProperty, hasNestedProperty, ObjectUtils } from './object';\n\n// Type guard utilities\nexport { isObject, hasProperty, TypeGuardUtils } from './typeGuards';\n\n// Time utilities\nexport { isInQuietHours, TimeUtils } from './time';\n\nexport * from './validation';\n","/**\n * Core Event Manager\n *\n * Type-safe event system for the Plyaz ecosystem.\n * Services emit events → Store, API cache, and UI subscribe independently.\n *\n * @example\n * ```typescript\n * import { CoreEventManager, CORE_EVENTS } from '@plyaz/core/events';\n *\n * // Type-safe emission (using CORE_EVENTS constants)\n * CoreEventManager.emit(CORE_EVENTS.API.REQUEST_ERROR, {\n *   method: 'GET',\n *   url: '/api/users',\n *   requestId: '123',\n *   error: new Error('Failed'),\n *   duration: 500,\n * });\n *\n * // Type-safe subscription\n * CoreEventManager.on(CORE_EVENTS.AUTH.LOGIN, (event) => {\n *   console.log(event.data.userId); // Typed!\n * });\n *\n * // Custom events (with generic type)\n * CoreEventManager.emit<MyPayload>('custom:event', { custom: 'data' });\n * ```\n */\n\nimport { EventEmitter } from 'events';\nimport type { CoreEventPayloadMap, CoreEventScopeType, CoreEvent } from '@plyaz/types/core';\nimport { generateCorrelationId } from '../utils/common';\n\n/**\n * Core Event Manager\n *\n * Features:\n * - Type-safe event emission and subscription via CORE_EVENTS constants\n * - Scope-based event filtering\n * - Wildcard subscriptions\n * - Auto cleanup on dispose\n * - Correlation IDs for tracing\n *\n * @example\n * ```typescript\n * import { CoreEventManager, CORE_EVENTS } from '@plyaz/core/events';\n *\n * // Type-safe with CORE_EVENTS\n * CoreEventManager.emit(CORE_EVENTS.AUTH.LOGIN, {\n *   userId: '123',\n *   method: 'email',\n * });\n *\n * CoreEventManager.on(CORE_EVENTS.AUTH.LOGIN, (event) => {\n *   console.log(event.data.userId); // Typed as string!\n * });\n *\n * // Custom events with explicit type\n * interface MyPayload { custom: string }\n * CoreEventManager.emit<MyPayload>('custom:event', { custom: 'data' });\n * ```\n */\n\n// Constants\nconst MAX_EVENT_LISTENERS = 100;\n\nclass CoreEventManagerClass {\n  private emitter = new EventEmitter();\n  private subscriptions = new Map<string, Set<(event: CoreEvent<unknown, string>) => void>>();\n\n  constructor() {\n    // Increase max listeners for large apps\n    this.emitter.setMaxListeners(MAX_EVENT_LISTENERS);\n  }\n\n  /**\n   * Emit an event\n   *\n   * @param eventType - Event type from CORE_EVENTS or custom string\n   * @param data - Event payload (type-safe when using CORE_EVENTS)\n   *\n   * @example\n   * ```typescript\n   * // Type-safe with CORE_EVENTS\n   * CoreEventManager.emit(CORE_EVENTS.AUTH.LOGIN, { userId: '123', method: 'email' });\n   *\n   * // Custom event\n   * CoreEventManager.emit<MyPayload>('custom:event', { custom: 'data' });\n   * ```\n   */\n  emit<T extends keyof CoreEventPayloadMap>(eventType: T, data: CoreEventPayloadMap[T]): boolean;\n  emit<TData = unknown>(eventType: string, data?: TData): boolean;\n  emit<TData = unknown>(eventType: string, data?: TData): boolean {\n    const [scope] = eventType.split(':');\n    const event: CoreEvent<TData, string> = {\n      type: eventType,\n      scope: scope ?? 'system',\n      timestamp: Date.now(),\n      correlationId: this.getCorrelationId(),\n      data: data as TData,\n    };\n\n    // Emit to specific listeners\n    this.emitter.emit(eventType, event);\n\n    // Emit to wildcard listeners\n    this.emitter.emit('*', event);\n\n    return true;\n  }\n\n  /**\n   * Subscribe to an event\n   *\n   * @param eventType - Event type from CORE_EVENTS or custom string\n   * @param handler - Event handler (type-safe when using CORE_EVENTS)\n   * @returns Unsubscribe function\n   *\n   * @example\n   * ```typescript\n   * // Type-safe with CORE_EVENTS\n   * const unsub = CoreEventManager.on(CORE_EVENTS.AUTH.LOGIN, (event) => {\n   *   console.log(event.data.userId); // Typed!\n   * });\n   *\n   * // Custom event\n   * CoreEventManager.on<MyPayload>('custom:event', (event) => {\n   *   console.log(event.data.custom);\n   * });\n   * ```\n   */\n  on<T extends keyof CoreEventPayloadMap>(\n    eventType: T,\n    handler: (event: CoreEvent<CoreEventPayloadMap[T], CoreEventScopeType>) => void\n  ): () => void;\n  on<TData = unknown, TScope extends string = string>(\n    eventType: string,\n    handler: (event: CoreEvent<TData, TScope>) => void\n  ): () => void;\n  on<TData = unknown, TScope extends string = string>(\n    eventType: string,\n    handler: (event: CoreEvent<TData, TScope>) => void\n  ): () => void {\n    this.emitter.on(eventType, handler as (event: CoreEvent<unknown, string>) => void);\n\n    // Track for cleanup\n    if (!this.subscriptions.has(eventType)) {\n      this.subscriptions.set(eventType, new Set());\n    }\n    this.subscriptions.get(eventType)!.add(handler as (event: CoreEvent<unknown, string>) => void);\n\n    // Return unsubscribe function\n    return () => {\n      this.emitter.off(eventType, handler as (event: CoreEvent<unknown, string>) => void);\n      this.subscriptions\n        .get(eventType)\n        ?.delete(handler as (event: CoreEvent<unknown, string>) => void);\n    };\n  }\n\n  /**\n   * Subscribe once to an event\n   *\n   * @param eventType - Event type from CORE_EVENTS or custom string\n   * @param handler - Event handler\n   * @returns Unsubscribe function\n   */\n  once<T extends keyof CoreEventPayloadMap>(\n    eventType: T,\n    handler: (event: CoreEvent<CoreEventPayloadMap[T], CoreEventScopeType>) => void\n  ): () => void;\n  once<TData = unknown, TScope extends string = string>(\n    eventType: string,\n    handler: (event: CoreEvent<TData, TScope>) => void\n  ): () => void;\n  once<TData = unknown, TScope extends string = string>(\n    eventType: string,\n    handler: (event: CoreEvent<TData, TScope>) => void\n  ): () => void {\n    const wrappedHandler = (event: CoreEvent<TData, TScope>): void => {\n      handler(event);\n      this.emitter.off(eventType, wrappedHandler as (event: CoreEvent<unknown, string>) => void);\n      this.subscriptions\n        .get(eventType)\n        ?.delete(wrappedHandler as (event: CoreEvent<unknown, string>) => void);\n    };\n\n    this.emitter.on(eventType, wrappedHandler as (event: CoreEvent<unknown, string>) => void);\n\n    // Track for cleanup\n    if (!this.subscriptions.has(eventType)) {\n      this.subscriptions.set(eventType, new Set());\n    }\n    this.subscriptions\n      .get(eventType)!\n      .add(wrappedHandler as (event: CoreEvent<unknown, string>) => void);\n\n    // Return unsubscribe function\n    return () => {\n      this.emitter.off(eventType, wrappedHandler as (event: CoreEvent<unknown, string>) => void);\n      this.subscriptions\n        .get(eventType)\n        ?.delete(wrappedHandler as (event: CoreEvent<unknown, string>) => void);\n    };\n  }\n\n  /**\n   * Subscribe to all events in a scope\n   *\n   * @param scope - Event scope to listen to (e.g., CoreEventScope.AUTH)\n   * @param handler - Event handler\n   * @returns Unsubscribe function\n   *\n   * @example\n   * ```typescript\n   * CoreEventManager.onScope(CoreEventScope.AUTH, (event) => {\n   *   // Handles auth:login, auth:logout, auth:tokenRefresh, etc.\n   *   console.log(`Auth event: ${event.type}`, event.data);\n   * });\n   * ```\n   */\n  onScope<TScope extends string = string, TData = unknown>(\n    scope: TScope,\n    handler: (event: CoreEvent<TData, TScope>) => void\n  ): () => void {\n    const wrappedHandler = (event: CoreEvent<TData, TScope>): void => {\n      if (event.scope === scope) {\n        handler(event);\n      }\n    };\n    return this.on('*', wrappedHandler as (event: CoreEvent<unknown, string>) => void);\n  }\n\n  /**\n   * Remove a specific handler from an event\n   *\n   * @param eventType - Event type\n   * @param handler - Handler to remove\n   */\n  off<TData = unknown, TScope extends string = string>(\n    eventType: string,\n    handler: (event: CoreEvent<TData, TScope>) => void\n  ): void {\n    this.emitter.off(eventType, handler as (event: CoreEvent<unknown, string>) => void);\n    this.subscriptions\n      .get(eventType)\n      ?.delete(handler as (event: CoreEvent<unknown, string>) => void);\n  }\n\n  /**\n   * Dispose all subscriptions\n   */\n  dispose(): void {\n    this.subscriptions.forEach((handlers, eventType) => {\n      handlers.forEach(handler => this.emitter.off(eventType, handler));\n    });\n    this.subscriptions.clear();\n    this.emitter.removeAllListeners();\n  }\n\n  /**\n   * Generate correlation ID for event tracing\n   */\n  private getCorrelationId(): string {\n    return generateCorrelationId();\n  }\n}\n\n/**\n * Global Singleton Pattern using globalThis\n *\n * WHY THIS IS NEEDED:\n * In Next.js (and similar frameworks with module isolation), different parts of the application\n * can have separate module instances. For example:\n * - API routes may run in isolated module contexts\n * - Hot Module Replacement (HMR) during development creates new module instances\n * - Server Components vs API routes may have different module caches\n *\n * This causes a critical issue: if CoreEventManager is instantiated as a simple module-level\n * singleton (`export const X = new XClass()`), each isolated context gets its OWN instance.\n * Events emitted in one context (e.g., API route) won't reach listeners in another context\n * (e.g., streaming endpoints).\n *\n * THE SOLUTION:\n * Using `globalThis` with `Symbol.for()` ensures a TRUE singleton across all module boundaries:\n * - `globalThis` is the global object in any JavaScript environment (Node.js, browsers, workers)\n * - `Symbol.for('key')` returns the SAME symbol from the global symbol registry, even across\n *   different module instances\n * - This combination guarantees ONE instance per process, regardless of how many times the\n *   module is loaded\n *\n * WORKS WITH:\n * - Next.js (API routes, server components, middleware)\n * - Express/NestJS/Fastify (single process, but safe for hot reload)\n * - Bun/Deno (same globalThis semantics)\n *\n * DOES NOT HELP WITH:\n * - Truly isolated serverless functions (each invocation = new process)\n * - Multi-process clusters (need Redis pub/sub or similar for cross-process events)\n */\nconst GLOBAL_KEY = Symbol.for('plyaz.CoreEventManager');\n\nfunction getCoreEventManager(): CoreEventManagerClass {\n  const globalAny = globalThis as unknown as { [key: symbol]: CoreEventManagerClass };\n\n  if (!globalAny[GLOBAL_KEY]) {\n    globalAny[GLOBAL_KEY] = new CoreEventManagerClass();\n  }\n\n  return globalAny[GLOBAL_KEY];\n}\n\nexport const CoreEventManager = getCoreEventManager();\n","/**\n * API Client Singleton Service (@plyaz/core)\n * Manages the API client with environment-specific configurations and intelligent defaults\n *\n * The app reads process.env and constructs ApiClientOptions, then passes to this service.\n * Service never touches process.env directly - all env reading happens in the app layer.\n *\n * @module services/ApiClientService\n */\n\n// Imports from @plyaz/api (dependency)\nimport { createApiClient, mergeConfigs, setDefaultApiClient } from '@plyaz/api/frontend';\nimport type { ApiClientWithEvents, ApiClientOptions, ApiConfig } from '@plyaz/types/api';\nimport { type ClientEventManager, type EndpointsList, ApiPackageError } from '@plyaz/api/frontend';\nimport { PRODUCTION_CONFIG, STAGING_CONFIG, DEVELOPMENT_CONFIG } from '@plyaz/config';\nimport {\n  API_ERROR_CODES,\n  PACKAGE_STATUS_CODES,\n  OPERATIONS,\n  ERROR_CODES,\n  ERROR_CATEGORY,\n  HTTP_STATUS,\n  CORE_EVENTS,\n} from '@plyaz/types';\nimport type { CoreApiRequestErrorPayload, CoreApiEnvironmentConfig } from '@plyaz/types/core';\nimport { CoreEventManager } from '../events/CoreEventManager';\nimport { generateRequestId } from '@plyaz/errors';\nimport type { ResponseError } from 'fetchff';\n// Note: Root store is injected by Core.initialize(), not created here\n\n/**\n * Minimum retry attempts recommended for production environments\n *\n * Production services should have sufficient retries to handle transient failures\n * while maintaining acceptable response times for end users.\n *\n * @constant\n * @default 3\n */\nconst MIN_RETRY_ATTEMPTS_PRODUCTION = 3;\n\n/**\n * Get configuration based on environment\n *\n * Returns environment-specific defaults that will be merged with user configuration.\n * Each environment has optimized settings for its use case:\n *\n * - **Production**: Aggressive retries (5), encryption required, telemetry enabled\n * - **Staging**: Mirrors production for accurate pre-deployment testing\n * - **Development/Test**: Conservative retries (1), encryption optional, full debug mode\n *\n * These defaults come from `@plyaz/config` and can be overridden via the `apiConfig` parameter.\n *\n * @param env - Environment name determining which defaults to apply\n * @returns Environment-specific configuration from @plyaz/config\n *\n * @example\n * ```typescript\n * const prodDefaults = getConfigForEnvironment('production');\n * // Returns PRODUCTION_CONFIG with aggressive retries, encryption, etc.\n *\n * const devDefaults = getConfigForEnvironment('development');\n * // Returns DEVELOPMENT_CONFIG with conservative retries, no encryption\n * ```\n *\n * @see {@link CoreApiEnvironmentConfig.env} - Environment types\n * @internal\n */\nfunction getConfigForEnvironment(env: CoreApiEnvironmentConfig['env']): Partial<ApiConfig> {\n  switch (env) {\n    case 'production':\n      return PRODUCTION_CONFIG as Partial<ApiConfig>;\n    case 'staging':\n      return STAGING_CONFIG as Partial<ApiConfig>;\n    case 'development':\n    case 'test':\n    default:\n      return DEVELOPMENT_CONFIG as Partial<ApiConfig>;\n  }\n}\n\n/**\n * Validate base URL requirement\n *\n * Ensures that a baseURL is provided in the configuration. The baseURL is mandatory\n * for all API clients as it defines where requests should be sent.\n *\n * @param mergedConfig - Merged configuration after applying all defaults\n * @param errors - Error array to append validation errors to\n *\n * @example\n * ```typescript\n * const errors: string[] = [];\n * validateBaseURL(mergedConfig, errors);\n *\n * if (errors.length > 0) {\n *   // baseURL is missing\n * }\n * ```\n *\n * @internal\n */\nfunction validateBaseURL(mergedConfig: ApiClientOptions, errors: string[]): void {\n  // Allow empty string '' for same-origin requests (e.g., Next.js API routes on same host)\n  // Only require baseURL when it's undefined or null\n  if (mergedConfig.baseURL === undefined || mergedConfig.baseURL === null) {\n    errors.push('baseURL is required in API configuration (apiConfig parameter)');\n  }\n}\n\n/**\n * Validate production encryption configuration\n *\n * Production environments MUST have encryption properly configured to protect sensitive data.\n * This function validates that:\n * - If encryption is enabled, an encryption key MUST be provided\n * - If encryption is disabled, a security warning is issued\n *\n * **Why encryption is required in production**:\n * - Compliance: GDPR, CCPA, PIPL, HIPAA regulations require data protection\n * - Security: Protects PII, payment info, health data, crypto wallet addresses\n * - 50+ sensitive field patterns: email, SSN, card numbers, API keys, etc.\n *\n * @param mergedConfig - Merged configuration after applying all defaults\n * @param errors - Error array to append critical validation errors to\n * @param warnings - Warning array to append non-critical warnings to\n *\n * @example\n * ```typescript\n * const errors: string[] = [];\n * const warnings: string[] = [];\n *\n * validateProductionEncryption(mergedConfig, errors, warnings);\n *\n * // If encryption enabled but no key:\n * // errors = ['encryption.key is REQUIRED when encryption is enabled in production...']\n *\n * // If encryption disabled:\n * // warnings = ['[SECURITY WARNING] Encryption is disabled in production...']\n * ```\n *\n * @internal\n */\nfunction validateProductionEncryption(\n  mergedConfig: ApiClientOptions,\n  errors: string[],\n  warnings: string[]\n): void {\n  if (mergedConfig.encryption?.enabled) {\n    if (!mergedConfig.encryption?.key) {\n      errors.push(\n        'encryption.key is REQUIRED when encryption is enabled in production. ' +\n          'Pass it in apiConfig: { encryption: { key: { id: \"prod-key-v1\", key: process.env.ENCRYPTION_KEY!, algorithm: \"AES-GCM\", format: \"raw\" } } }'\n      );\n    }\n  } else {\n    warnings.push(\n      '[SECURITY WARNING] Encryption is disabled in production. ' +\n        'This is not recommended for handling sensitive data (PII, payment info, etc.).'\n    );\n  }\n}\n\n/**\n * Validate production performance settings\n *\n * Validates production configuration for optimal performance, reliability, and monitoring:\n * - **Network-aware features**: Adapts to varying network conditions for better UX\n * - **Telemetry**: Required for production monitoring and alerting\n * - **Retry attempts**: Minimum 3 retries recommended for reliability\n *\n * These are warnings (not errors) as they don't prevent the client from working,\n * but indicate suboptimal production configuration.\n *\n * @param mergedConfig - Merged configuration after applying all defaults\n * @param warnings - Warning array to append performance warnings to\n *\n * @example\n * ```typescript\n * const warnings: string[] = [];\n * validateProductionPerformance(mergedConfig, warnings);\n *\n * // Possible warnings:\n * // - '[PERFORMANCE WARNING] networkAware is disabled in production...'\n * // - '[MONITORING WARNING] telemetry is disabled in production...'\n * // - '[RELIABILITY WARNING] Only 1 retry attempts configured...'\n * ```\n *\n * @internal\n */\nfunction validateProductionPerformance(mergedConfig: ApiClientOptions, warnings: string[]): void {\n  if (!mergedConfig.networkAware?.enabled) {\n    warnings.push(\n      '[PERFORMANCE WARNING] networkAware is disabled in production. ' +\n        'Enable it for better user experience on varying network conditions.'\n    );\n  }\n\n  if (!mergedConfig.tracking?.telemetry) {\n    warnings.push(\n      '[MONITORING WARNING] telemetry is disabled in production. ' +\n        'Enable it for production monitoring and alerting.'\n    );\n  }\n\n  if (\n    mergedConfig.retry &&\n    mergedConfig.retry.attempts !== undefined &&\n    mergedConfig.retry.attempts < MIN_RETRY_ATTEMPTS_PRODUCTION\n  ) {\n    warnings.push(\n      `[RELIABILITY WARNING] Only ${mergedConfig.retry.attempts} retry attempts configured. ` +\n        'Consider increasing to 3-5 for better reliability in production.'\n    );\n  }\n}\n\n/**\n * Validate staging encryption configuration\n *\n * Staging environments should mirror production configuration for accurate pre-deployment testing.\n * This function validates:\n * - If encryption is enabled, an encryption key MUST be provided (same as production)\n * - If encryption is disabled, issues a warning (staging should match production)\n * - Telemetry should be enabled to test monitoring before production\n *\n * **Why staging should mirror production**:\n * - Catches configuration issues before they reach production\n * - Tests encryption/decryption with real-world-like data\n * - Validates monitoring and alerting pipelines\n *\n * @param mergedConfig - Merged configuration after applying all defaults\n * @param errors - Error array to append critical validation errors to\n * @param warnings - Warning array to append configuration warnings to\n *\n * @example\n * ```typescript\n * const errors: string[] = [];\n * const warnings: string[] = [];\n *\n * validateStagingEncryption(mergedConfig, errors, warnings);\n *\n * // If encryption enabled but no key:\n * // errors = ['encryption.key is REQUIRED in staging (aligned with production)...']\n *\n * // If encryption or telemetry disabled:\n * // warnings = ['[SECURITY WARNING] Encryption is disabled in staging...']\n * ```\n *\n * @internal\n */\nfunction validateStagingEncryption(\n  mergedConfig: ApiClientOptions,\n  errors: string[],\n  warnings: string[]\n): void {\n  if (mergedConfig.encryption?.enabled) {\n    if (!mergedConfig.encryption?.key) {\n      errors.push(\n        'encryption.key is REQUIRED in staging (aligned with production). ' +\n          'Pass it in apiConfig: { encryption: { key: { id: \"staging-key-v1\", key: process.env.ENCRYPTION_KEY!, algorithm: \"AES-GCM\", format: \"raw\" } } }'\n      );\n    }\n  } else {\n    warnings.push(\n      '[SECURITY WARNING] Encryption is disabled in staging. ' +\n        'Staging should mirror production for accurate testing.'\n    );\n  }\n\n  if (!mergedConfig.tracking?.telemetry) {\n    warnings.push(\n      '[MONITORING WARNING] telemetry is disabled in staging. ' +\n        'Enable it to test monitoring before production deployment.'\n    );\n  }\n}\n\n/**\n * Validate development encryption configuration\n *\n * Development environments have more relaxed requirements to facilitate rapid development:\n * - Encryption is OPTIONAL (enabled flag can be true, but key is not required)\n * - When encryption is enabled without a key, issues an informational warning\n *\n * **Why encryption is optional in development**:\n * - Faster iteration without needing to manage encryption keys\n * - Easier debugging of request/response payloads\n * - Test data typically doesn't contain real sensitive information\n *\n * @param mergedConfig - Merged configuration after applying all defaults\n * @param warnings - Warning array to append informational messages to\n *\n * @example\n * ```typescript\n * const warnings: string[] = [];\n * validateDevelopmentEncryption(mergedConfig, warnings);\n *\n * // If encryption enabled without key:\n * // warnings = ['[DEV INFO] Encryption is enabled but no key provided...']\n * ```\n *\n * @internal\n */\nfunction validateDevelopmentEncryption(mergedConfig: ApiClientOptions, warnings: string[]): void {\n  if (mergedConfig.encryption?.enabled && !mergedConfig.encryption?.key) {\n    warnings.push(\n      '[DEV INFO] Encryption is enabled but no key provided in apiConfig. ' +\n        'Encryption will be skipped in development (this is normal).'\n    );\n  }\n}\n\n/**\n * Map environment metadata to API configuration structure\n *\n * Converts environment-level metadata from `CoreApiEnvironmentConfig` into `ApiConfig` format\n * that can be merged with other configurations. Currently maps:\n *\n * - **apiKey**: Converted to static header `X-API-Key`\n * - **rateLimit**: Reserved for future use (not currently mapped)\n *\n * **Note**: This mapping is applied AFTER environment defaults but BEFORE user-provided\n * apiConfig, giving it medium priority in the configuration merge hierarchy.\n *\n * @param envConfig - Environment configuration containing metadata\n * @param envDefaults - Environment-specific defaults from @plyaz/config\n * @returns Partial API configuration with mapped environment metadata\n *\n * @example\n * ```typescript\n * const envConfig = { env: 'production', apiKey: 'my-api-key' };\n * const envDefaults = PRODUCTION_CONFIG;\n *\n * const mapped = mapEnvironmentMetadata(envConfig, envDefaults);\n * // Returns: { headers: { static: { 'X-API-Key': 'my-api-key' } } }\n * ```\n *\n * @see {@link CoreApiEnvironmentConfig} - Environment configuration interface\n * @internal\n */\nfunction mapEnvironmentMetadata(\n  envConfig: CoreApiEnvironmentConfig,\n  envDefaults: Partial<ApiConfig>\n): Partial<ApiConfig> {\n  const mapped: Partial<ApiConfig> = {};\n\n  // Add API key to headers if provided\n  if (envConfig.apiKey) {\n    // Extract existing static headers if headers is an object with static property\n    const existingStatic =\n      envDefaults.headers &&\n      typeof envDefaults.headers === 'object' &&\n      'static' in envDefaults.headers &&\n      typeof envDefaults.headers.static === 'object'\n        ? envDefaults.headers.static\n        : {};\n\n    mapped.headers = {\n      static: { ...(existingStatic ?? {}), 'X-API-Key': envConfig.apiKey },\n    };\n  }\n\n  // Note: rateLimit from envConfig is not mapped to ApiConfig\n  // Rate limiting is typically handled at the server/API gateway level\n  // If needed in the future, it should be added to ApiConfig interface first\n\n  return mapped;\n}\n\n/**\n * Apply default client setting to @plyaz/api services and hooks\n *\n * Conditionally calls `setDefaultApiClient()` based on the `setAsDefault` flag in environment config.\n * When enabled, all services and hooks from @plyaz/api will automatically use this client instance\n * without needing to pass it explicitly via `ServiceOptions.apiClient`.\n *\n * **Default behavior**: If `setAsDefault` is not specified, it defaults to `true`.\n *\n * **Use cases**:\n * - `true` (default): Single API client for the entire application (recommended for most apps)\n * - `false`: Multiple API clients (main API, analytics API, etc.) or testing scenarios\n *\n * @param client - The API client instance to set as default\n * @param envConfig - Environment configuration containing the setAsDefault flag\n *\n * @example\n * ```typescript\n * const client = await createApiClient(config);\n * const envConfig = { env: 'production', setAsDefault: true };\n *\n * applyDefaultClientSetting(client, envConfig);\n * // Now all @plyaz/api services use this client automatically\n *\n * const campaigns = await fetchCampaigns({ page: 1 });\n * // No need to pass apiClient - uses the default\n * ```\n *\n * @example\n * ```typescript\n * // Multiple clients scenario\n * const mainClient = await createApiClient(mainConfig);\n * const analyticsClient = await createApiClient(analyticsConfig);\n *\n * applyDefaultClientSetting(mainClient, { env: 'production', setAsDefault: true });\n * applyDefaultClientSetting(analyticsClient, { env: 'production', setAsDefault: false });\n *\n * // Main API uses default\n * const campaigns = await fetchCampaigns({ page: 1 });\n *\n * // Analytics API must be passed explicitly\n * const analytics = await fetchAnalytics(\n *   { date: '2025-10-16' },\n *   { apiClient: analyticsClient }\n * );\n * ```\n *\n * @see {@link CoreApiEnvironmentConfig.setAsDefault} - Flag documentation\n * @see {@link ServiceOptions.apiClient} - How to override the default client\n * @internal\n */\nfunction applyDefaultClientSetting(\n  client: ApiClientWithEvents<ClientEventManager, EndpointsList>,\n  envConfig: CoreApiEnvironmentConfig\n): void {\n  const shouldSetAsDefault = envConfig.setAsDefault !== false;\n  if (shouldSetAsDefault) {\n    setDefaultApiClient(client);\n  }\n}\n\n/**\n * Validate environment configuration for production readiness.\n * Ensures critical settings are properly configured based on environment.\n *\n * @param envConfig - Environment configuration\n * @param mergedConfig - Merged configuration after applying all defaults\n * @throws {ApiPackageError} If validation fails\n */\nfunction validateEnvironmentConfig(\n  envConfig: CoreApiEnvironmentConfig,\n  mergedConfig: ApiClientOptions\n): void {\n  const errors: string[] = [];\n  const warnings: string[] = [];\n\n  // Validate required base URL\n  validateBaseURL(mergedConfig, errors);\n\n  // Environment-specific validation\n  if (envConfig.env === 'production') {\n    validateProductionEncryption(mergedConfig, errors, warnings);\n    validateProductionPerformance(mergedConfig, warnings);\n  } else if (envConfig.env === 'staging') {\n    validateStagingEncryption(mergedConfig, errors, warnings);\n  } else if (envConfig.env === 'development') {\n    validateDevelopmentEncryption(mergedConfig, warnings);\n  }\n\n  // Log warnings (intentional console usage for config validation)\n  if (warnings.length > 0) {\n    globalThis.console.warn('[ApiClientService] Configuration warnings:', warnings);\n  }\n\n  // Throw if there are errors\n  if (errors.length > 0) {\n    throw new ApiPackageError(\n      'service.validation.failed',\n      PACKAGE_STATUS_CODES.INVALID_CONFIGURATION,\n      API_ERROR_CODES.CONFIG_VALIDATION_FAILED,\n      {\n        context: {\n          operation: OPERATIONS.VALIDATION,\n          // Ensure error details conform to ErrorDetail shape (include errorCode)\n          errors: errors.map(err => ({\n            field: 'config',\n            message: err,\n            errorCode: String(API_ERROR_CODES.CONFIG_VALIDATION_FAILED),\n          })),\n          i18n: {\n            errors: errors.join('; '),\n            warnings: warnings.join('; '),\n          },\n        },\n      }\n    );\n  }\n}\n\n/**\n * API Client Singleton Service\n * Manages API client instance lifecycle with environment-specific configurations\n *\n * @example\n * ```typescript\n * // In your app initialization (Next.js, React, etc.)\n * import { ApiClientService } from '@plyaz/core';\n *\n * // Environment metadata\n * const envConfig = {\n *   env: process.env.NODE_ENV as 'production',\n *   apiKey: process.env.API_KEY,\n * };\n *\n * // API configuration with event handlers\n * await ApiClientService.init(envConfig, {\n *   baseURL: process.env.API_URL!,\n *   encryption: {\n *     key: {\n *       id: 'prod-key-v1',\n *       key: process.env.ENCRYPTION_KEY!,\n *       algorithm: 'AES-GCM'\n *     }\n *   },\n *   clientEvents: {\n *     onRequestStart: (event) => apiStore.trackRequest(event),\n *   },\n * });\n *\n * // Later, anywhere in your app\n * const client = ApiClientService.getClient();\n * ```\n */\n/**\n * Global Singleton Pattern using globalThis\n *\n * @see CoreEventManager.ts for detailed explanation of why this pattern is needed.\n *\n * TL;DR: In Next.js and similar frameworks, module isolation can create multiple singleton\n * instances. Using globalThis + Symbol.for() ensures ONE instance per process, preventing\n * issues like multiple API client instances with different configurations across API routes.\n */\ninterface ApiClientServiceState {\n  instance: ApiClientWithEvents<ClientEventManager, EndpointsList> | null;\n  isInitializing: boolean;\n  initPromise: Promise<void> | null;\n}\n\nconst API_CLIENT_SERVICE_KEY = Symbol.for('plyaz.ApiClientService');\n\nfunction getApiClientServiceState(): ApiClientServiceState {\n  const globalAny = globalThis as unknown as { [key: symbol]: ApiClientServiceState };\n  if (!globalAny[API_CLIENT_SERVICE_KEY]) {\n    globalAny[API_CLIENT_SERVICE_KEY] = {\n      instance: null,\n      isInitializing: false,\n      initPromise: null,\n    };\n  }\n  return globalAny[API_CLIENT_SERVICE_KEY];\n}\n\nexport class ApiClientService {\n  // State accessors using globalThis\n  private static get instance(): ApiClientWithEvents<ClientEventManager, EndpointsList> | null {\n    return getApiClientServiceState().instance;\n  }\n  private static set instance(\n    value: ApiClientWithEvents<ClientEventManager, EndpointsList> | null\n  ) {\n    getApiClientServiceState().instance = value;\n  }\n  private static get isInitializing(): boolean {\n    return getApiClientServiceState().isInitializing;\n  }\n  private static set isInitializing(value: boolean) {\n    getApiClientServiceState().isInitializing = value;\n  }\n  private static get initPromise(): Promise<void> | null {\n    return getApiClientServiceState().initPromise;\n  }\n  private static set initPromise(value: Promise<void> | null) {\n    getApiClientServiceState().initPromise = value;\n  }\n\n  /**\n   * Build the core error handler for API clients.\n   * This handler emits errors to CoreEventManager for global error handling.\n   *\n   * Handles:\n   * - Single errors (network, timeout)\n   * - Array of errors from API responses (validation, business logic)\n   * - Serialization to unified SerializedError format\n   * - Event emission to CORE_EVENTS.SYSTEM.ERROR and CORE_EVENTS.API.REQUEST_ERROR\n   *\n   * @returns Error handler function compatible with ApiClientOptions.onError\n   */\n\n  static buildCoreErrorHandler(): (\n    error: ResponseError<unknown, unknown, unknown, unknown>\n  ) => Promise<void> {\n    // eslint-disable-next-line complexity\n    return async (error: ResponseError<unknown, unknown, unknown, unknown>): Promise<void> => {\n      const requestId = generateRequestId();\n      const method = error.config?.method ?? 'UNKNOWN';\n      const url = error.config?.url ?? 'unknown';\n\n      // CRITICAL: Emit error event to Core\n      // Core will handle updating the appropriate store based on runtime context:\n      // - Backend: In-memory store (ServerErrorMiddleware)\n      // - Frontend: Zustand store (useRootStore)\n      try {\n        // API returns ErrorResponse (array of error details)\n        const errorDetails = Array.isArray(error.response?.data) ? error.response.data : [];\n\n        // If no error details from API, create a fallback error\n        if (errorDetails.length === 0) {\n          const serializedError = {\n            id: requestId,\n            code: ERROR_CODES.CORE_API_CLIENT_REQUEST_FAILED,\n            message: error.message ?? 'API request failed',\n            status: error.status,\n            category: ERROR_CATEGORY.Network,\n            timestamp: new Date().toISOString(),\n            isRetryable: error.status ? error.status >= HTTP_STATUS.INTERNAL_SERVER_ERROR : false,\n            source: 'api-client',\n            dismissed: false,\n            context: {\n              method,\n              url,\n              requestId,\n            },\n          };\n\n          // Emit single error to Core\n          CoreEventManager.emit(CORE_EVENTS.SYSTEM.ERROR, { errors: [serializedError] });\n        } else {\n          // Convert ErrorResponse (API error details array) to SerializedError[]\n          const serializedErrors = errorDetails.map(\n            (detail: Record<string, unknown>, index: number) => ({\n              id: `${requestId}-${index}`,\n              code: (detail.errorCode as string) ?? ERROR_CODES.CORE_API_CLIENT_REQUEST_FAILED,\n              message: (detail.message as string) ?? error.message ?? 'API request failed',\n              status: error.status,\n              category: ERROR_CATEGORY.Network,\n              timestamp: new Date().toISOString(),\n              isRetryable: error.status ? error.status >= HTTP_STATUS.INTERNAL_SERVER_ERROR : false,\n              source: 'api-client',\n              dismissed: false,\n              context: {\n                method,\n                url,\n                requestId,\n                field: detail.field as string | undefined,\n                valueGiven: detail.valueGiven,\n                allowedValues: detail.allowedValues,\n                constraints: detail.constraints,\n              },\n            })\n          );\n\n          // Emit array of errors to Core\n          CoreEventManager.emit(CORE_EVENTS.SYSTEM.ERROR, { errors: serializedErrors });\n        }\n      } catch (e) {\n        // If event emission fails, log but don't break the error flow\n        console.error('[ApiClientService] Failed to emit error event:', e);\n      }\n\n      // Also emit API-specific error event for logging, monitoring, etc.\n      ApiClientService.emitApiError(error, {\n        method,\n        url,\n        requestId,\n        status: error.status,\n        duration: 0,\n      });\n    };\n  }\n\n  /**\n   * Initialize the API client with environment config and API options\n   *\n   * @param envConfig - Environment metadata (env, apiKey)\n   * @param apiConfig - API configuration (baseURL, encryption, timeout, event handlers, etc.)\n   * @returns Promise that resolves to the initialized client\n   */\n  static async init(\n    envConfig: CoreApiEnvironmentConfig,\n    apiConfig?: Partial<ApiClientOptions>\n  ): Promise<ApiClientWithEvents<ClientEventManager, EndpointsList>> {\n    // If already initialized, return existing instance\n    if (this.instance) {\n      globalThis.console.warn(\n        '[ApiClientService] Client already initialized. Returning existing instance.'\n      );\n      return this.instance;\n    }\n\n    // If currently initializing, wait for that to complete\n    if (this.isInitializing && this.initPromise) {\n      await this.initPromise;\n      return this.instance!;\n    }\n\n    // Start initialization\n    this.isInitializing = true;\n    this.initPromise = this.createClient(envConfig, apiConfig);\n\n    try {\n      await this.initPromise;\n      return this.instance!;\n    } finally {\n      this.isInitializing = false;\n      this.initPromise = null;\n    }\n  }\n\n  /**\n   * Internal initialization logic\n   * Merges environment-specific defaults with API configuration\n   *\n   * Merge Priority (lowest to highest):\n   * 1. Environment defaults (PRODUCTION_CONFIG / STAGING_CONFIG / DEVELOPMENT_CONFIG)\n   * 2. Environment metadata (envConfig - apiKey)\n   * 3. API configuration (apiConfig - baseURL, encryption, timeout, etc.)\n   */\n  // eslint-disable-next-line complexity\n  private static async createClient(\n    envConfig: CoreApiEnvironmentConfig,\n    apiConfig?: Partial<ApiClientOptions>\n  ): Promise<void> {\n    try {\n      // Step 1: Get environment-specific defaults based on env\n      const envDefaults = getConfigForEnvironment(envConfig.env);\n\n      // Step 2: Build config from envConfig (environment metadata only)\n      const envMetadataMapped = mapEnvironmentMetadata(envConfig, envDefaults);\n\n      // Step 3: Get the core error handler (handles single + array errors, emits to Core)\n      const coreErrorHandler = ApiClientService.buildCoreErrorHandler();\n\n      // Step 4: Merge with priority: envDefaults → envMetadata → apiConfig → coreErrorHandler\n      const userOnError = apiConfig?.onError;\n      const combinedOnError = userOnError\n        ? Array.isArray(userOnError)\n          ? [...userOnError, coreErrorHandler]\n          : [userOnError, coreErrorHandler]\n        : coreErrorHandler;\n\n      const mergedOptions = mergeConfigs(\n        envDefaults, // Environment defaults (lowest priority)\n        envMetadataMapped, // Environment metadata (medium priority)\n        { ...(apiConfig ?? {}), onError: combinedOnError } // API configuration + core error handler\n      ) as ApiClientOptions;\n\n      // Step 5: Validate the merged configuration\n      validateEnvironmentConfig(envConfig, mergedOptions);\n\n      // Step 6: Create the client instance with merged configuration\n      this.instance = await createApiClient(mergedOptions);\n\n      // Step 6: Set as default client for @plyaz/api services and hooks (if enabled)\n      applyDefaultClientSetting(this.instance, envConfig);\n    } catch (error) {\n      throw new ApiPackageError(\n        'service.initialization.failed',\n        PACKAGE_STATUS_CODES.INITIALIZATION_FAILED,\n        API_ERROR_CODES.CLIENT_INITIALIZATION_FAILED,\n        {\n          cause: error instanceof Error ? error : undefined,\n          context: {\n            operation: OPERATIONS.INITIALIZATION,\n            originalError: error instanceof Error ? error.message : String(error),\n            i18n: {\n              error: error instanceof Error ? error.message : String(error),\n            },\n          },\n        }\n      );\n    }\n  }\n\n  /**\n   * Get the initialized client instance\n   *\n   * @throws {ApiPackageError} If client not initialized\n   */\n  static getClient(): ApiClientWithEvents<ClientEventManager, EndpointsList> {\n    if (!this.instance) {\n      throw new ApiPackageError(\n        'service.not_initialized',\n        PACKAGE_STATUS_CODES.INITIALIZATION_FAILED,\n        API_ERROR_CODES.CLIENT_INITIALIZATION_FAILED,\n        {\n          context: {\n            operation: OPERATIONS.INITIALIZATION,\n            i18n: {\n              hint: 'Call ApiClientService.init(envConfig, apiConfig) before accessing the client',\n            },\n          },\n        }\n      );\n    }\n    return this.instance;\n  }\n\n  /**\n   * Check if client is initialized\n   */\n  static isInitialized(): boolean {\n    return this.instance !== null;\n  }\n\n  /**\n   * Reinitialize with new config and options\n   */\n  static async reinitialize(\n    envConfig: CoreApiEnvironmentConfig,\n    apiConfig?: Partial<ApiClientOptions>\n  ): Promise<ApiClientWithEvents<ClientEventManager, EndpointsList>> {\n    this.dispose();\n    return this.init(envConfig, apiConfig);\n  }\n\n  /**\n   * Dispose of the client instance\n   */\n  static dispose(): void {\n    if (this.instance && 'dispose' in this.instance) {\n      this.instance.dispose?.();\n    }\n    this.instance = null;\n    this.isInitializing = false;\n    this.initPromise = null;\n  }\n\n  /**\n   * Emits an API error event via CoreEventManager.\n   * Called when API operations fail to integrate with global error handling.\n   *\n   * **CRITICAL**: This event emission triggers automatic error state updates.\n   * The global error store MUST subscribe to CORE_EVENTS.API.REQUEST_ERROR to:\n   * 1. Capture all API errors automatically\n   * 2. Update global error state for UI display\n   * 3. Ensure individual domain stores remain error-free (only domain data)\n   *\n   * This is the unified error hook that:\n   * - On frontend: Emits event that global error store subscribes to\n   * - On backend: Emits event for logging/monitoring (can be configured to rethrow)\n   *\n   * @param error - The error that occurred\n   * @param options - Additional context for the error\n   * @param options.method - HTTP method (GET, POST, etc.)\n   * @param options.url - Request URL\n   * @param options.requestId - Unique request identifier\n   * @param options.status - HTTP status code (if available)\n   * @param options.duration - Request duration in ms\n   * @param options.rethrow - Whether to rethrow the error after emitting (default: false)\n   *\n   * @example\n   * ```typescript\n   * // Global error store setup (in @plyaz/store)\n   * CoreEventManager.on(CORE_EVENTS.API.REQUEST_ERROR, (payload) => {\n   *   errorStore.setError({\n   *     message: payload.error.message,\n   *     status: payload.status,\n   *     url: payload.url,\n   *     requestId: payload.requestId,\n   *   });\n   * });\n   *\n   * // Frontend usage - emit to store\n   * ApiClientService.emitApiError(error, {\n   *   method: 'GET',\n   *   url: '/api/users',\n   *   requestId: '123',\n   *   duration: 500,\n   * });\n   *\n   * // Backend usage - emit and rethrow\n   * ApiClientService.emitApiError(error, {\n   *   method: 'POST',\n   *   url: '/api/orders',\n   *   requestId: '456',\n   *   duration: 1200,\n   *   rethrow: true,\n   * });\n   * ```\n   */\n  static emitApiError(\n    error: unknown,\n    options: {\n      method: string;\n      url: string;\n      requestId: string;\n      status?: number;\n      duration: number;\n      rethrow?: boolean;\n    }\n  ): void {\n    const payload: CoreApiRequestErrorPayload = {\n      method: options.method,\n      url: options.url,\n      requestId: options.requestId,\n      status: options.status,\n      error,\n      duration: options.duration,\n    };\n\n    CoreEventManager.emit(CORE_EVENTS.API.REQUEST_ERROR, payload);\n\n    // Optionally rethrow for backend error propagation\n    if (options.rethrow && error instanceof Error) {\n      throw error;\n    }\n  }\n\n  /**\n   * Create a dedicated API client instance (NOT the singleton)\n   *\n   * Use this when you need an isolated client with its own configuration\n   * that doesn't affect or get affected by the shared singleton instance.\n   *\n   * @param envConfig - Environment metadata (env, apiKey)\n   * @param apiConfig - API configuration (baseURL, encryption, timeout, etc.)\n   * @returns Promise that resolves to a new dedicated client instance\n   *\n   * @example\n   * ```typescript\n   * // Create a dedicated client for feature flags service\n   * const flagsClient = await ApiClientService.createInstance(\n   *   { env: 'production' },\n   *   {\n   *     baseURL: 'https://flags.example.com',\n   *     timeout: 5000,\n   *   }\n   * );\n   *\n   * // This client is independent from ApiClientService.getClient()\n   * flagsClient.updateConfig({ timeout: 3000 }); // Only affects this instance\n   * ```\n   */\n  // eslint-disable-next-line complexity\n  static async createInstance(\n    envConfig: CoreApiEnvironmentConfig,\n    apiConfig?: Partial<ApiClientOptions>\n  ): Promise<ApiClientWithEvents<ClientEventManager, EndpointsList>> {\n    try {\n      // Step 1: Get environment-specific defaults based on env\n      const envDefaults = getConfigForEnvironment(envConfig.env);\n\n      // Step 2: Build config from envConfig (environment metadata only)\n      const envMetadataMapped = mapEnvironmentMetadata(envConfig, envDefaults);\n\n      // Step 3: Get the core error handler (handles single + array errors, emits to Core)\n      const coreErrorHandler = ApiClientService.buildCoreErrorHandler();\n\n      // Step 4: Merge user onError with core error handler\n      const userOnError = apiConfig?.onError;\n      const combinedOnError = userOnError\n        ? Array.isArray(userOnError)\n          ? [...userOnError, coreErrorHandler]\n          : [userOnError, coreErrorHandler]\n        : coreErrorHandler;\n\n      // Step 5: Merge with priority: envDefaults → envMetadata → apiConfig → coreErrorHandler\n      const mergedOptions = mergeConfigs(envDefaults, envMetadataMapped, {\n        ...(apiConfig ?? {}),\n        onError: combinedOnError,\n      }) as ApiClientOptions;\n\n      // Step 6: Validate the merged configuration\n      validateEnvironmentConfig(envConfig, mergedOptions);\n\n      // Step 7: Create a NEW client instance (not stored as singleton)\n      const dedicatedClient = await createApiClient(mergedOptions);\n\n      // Note: Do NOT call applyDefaultClientSetting - this is a dedicated instance\n      // that should not become the default client for @plyaz/api services\n\n      return dedicatedClient;\n    } catch (error) {\n      throw new ApiPackageError(\n        'service.instance_creation.failed',\n        PACKAGE_STATUS_CODES.INITIALIZATION_FAILED,\n        API_ERROR_CODES.CLIENT_INITIALIZATION_FAILED,\n        {\n          cause: error instanceof Error ? error : undefined,\n          context: {\n            operation: OPERATIONS.INITIALIZATION,\n            originalError: error instanceof Error ? error.message : String(error),\n            i18n: {\n              error: error instanceof Error ? error.message : String(error),\n            },\n          },\n        }\n      );\n    }\n  }\n\n  /**\n   * Create a standalone API client with Core error handling.\n   *\n   * This is a simpler alternative to `createInstance()` that doesn't require\n   * environment config. Use this when you just need the error handling without\n   * environment-specific defaults (production validation, etc.).\n   *\n   * **Use cases:**\n   * - Domain services that need their own API client\n   * - Testing with isolated API clients\n   * - Simple client creation without environment setup\n   *\n   * @param apiConfig - API configuration (baseURL, timeout, etc.)\n   * @returns Promise that resolves to a client with Core error handling\n   *\n   * @example\n   * ```typescript\n   * // In BaseDomainService or any service\n   * const client = await ApiClientService.createStandaloneClient({\n   *   baseURL: '/api/examples',\n   *   timeout: 10000,\n   * });\n   *\n   * // Errors are automatically emitted to CoreEventManager\n   * const response = await client.get('/items');\n   * ```\n   */\n  static async createStandaloneClient(\n    apiConfig: ApiClientOptions\n  ): Promise<ApiClientWithEvents<ClientEventManager, EndpointsList>> {\n    try {\n      // Get the core error handler (handles single + array errors, emits to Core)\n      const coreErrorHandler = ApiClientService.buildCoreErrorHandler();\n\n      // Merge user onError with core error handler\n      const userOnError = apiConfig.onError;\n      const combinedOnError = userOnError\n        ? Array.isArray(userOnError)\n          ? [...userOnError, coreErrorHandler]\n          : [userOnError, coreErrorHandler]\n        : coreErrorHandler;\n\n      // Create client with combined error handler\n      const client = await createApiClient({\n        ...apiConfig,\n        onError: combinedOnError,\n      });\n\n      return client;\n    } catch (error) {\n      throw new ApiPackageError(\n        'service.standalone_client_creation.failed',\n        PACKAGE_STATUS_CODES.INITIALIZATION_FAILED,\n        API_ERROR_CODES.CLIENT_INITIALIZATION_FAILED,\n        {\n          cause: error instanceof Error ? error : undefined,\n          context: {\n            operation: OPERATIONS.INITIALIZATION,\n            originalError: error instanceof Error ? error.message : String(error),\n            i18n: {\n              error: error instanceof Error ? error.message : String(error),\n            },\n          },\n        }\n      );\n    }\n  }\n}\n\n// Export convenience helpers\nexport const getApiClient = (): ApiClientWithEvents<ClientEventManager, EndpointsList> =>\n  ApiClientService.getClient();\n\nexport const initApiClient = (\n  envConfig: CoreApiEnvironmentConfig,\n  apiConfig?: Partial<ApiClientOptions>\n): Promise<ApiClientWithEvents<ClientEventManager, EndpointsList>> =>\n  ApiClientService.init(envConfig, apiConfig);\n\nexport const createApiClientInstance = (\n  envConfig: CoreApiEnvironmentConfig,\n  apiConfig?: Partial<ApiClientOptions>\n): Promise<ApiClientWithEvents<ClientEventManager, EndpointsList>> =>\n  ApiClientService.createInstance(envConfig, apiConfig);\n\nexport const createStandaloneApiClient = (\n  apiConfig: ApiClientOptions\n): Promise<ApiClientWithEvents<ClientEventManager, EndpointsList>> =>\n  ApiClientService.createStandaloneClient(apiConfig);\n","/**\n * Base Observability Adapter\n *\n * Abstract base class for all observability adapters.\n * Provides common functionality and enforces the adapter interface.\n *\n * @module base/observability\n */\n\nimport { PackageLogger } from '@plyaz/logger';\nimport type {\n  ObservabilityAdapter,\n  ObservabilityAdapterConfig,\n  ObservabilityProvider,\n  Metric,\n  SpanOptions,\n  Span,\n  LogEntry,\n  ObservabilityEvent,\n  SpanContext,\n} from '@plyaz/types/observability';\nimport { generateTraceId, generateSpanId } from '@/utils/common';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Abstract Base Adapter\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Abstract base class for observability adapters.\n *\n * Provides common functionality:\n * - Initialization lifecycle\n * - Default tag management\n * - Error handling\n * - Logging\n *\n * Subclasses must implement provider-specific methods.\n */\nexport abstract class BaseAdapter implements ObservabilityAdapter {\n  abstract readonly provider: ObservabilityProvider;\n  abstract readonly name: string;\n\n  protected _isInitialized = false;\n  protected _config: ObservabilityAdapterConfig | null = null;\n  protected readonly logger: PackageLogger;\n\n  constructor() {\n    this.logger = new PackageLogger({\n      packageName: 'core',\n      service: 'ObservabilityAdapter',\n    });\n  }\n\n  get isInitialized(): boolean {\n    return this._isInitialized;\n  }\n\n  get config(): ObservabilityAdapterConfig | null {\n    return this._config;\n  }\n\n  // ─── Lifecycle ─────────────────────────────────────────────────────────────\n\n  async initialize(config: ObservabilityAdapterConfig): Promise<void> {\n    if (this._isInitialized) {\n      this.logger.warn(`${this.name} already initialized`);\n      return;\n    }\n\n    this._config = config;\n\n    if (config.enabled === false) {\n      this.logger.info(`${this.name} disabled by configuration`);\n      return;\n    }\n\n    await this.doInitialize(config);\n    this._isInitialized = true;\n    this.logger.info(`${this.name} initialized`, {\n      provider: this.provider,\n      serviceName: config.serviceName,\n      environment: config.environment,\n    });\n  }\n\n  async shutdown(): Promise<void> {\n    if (!this._isInitialized) {\n      return;\n    }\n\n    await this.flush();\n    await this.doShutdown();\n    this._isInitialized = false;\n    this.logger.info(`${this.name} shut down`);\n  }\n\n  async isHealthy(): Promise<boolean> {\n    if (!this._isInitialized) {\n      return false;\n    }\n    return this.doHealthCheck();\n  }\n\n  // ─── Abstract Methods (Provider-specific) ──────────────────────────────────\n\n  protected abstract doInitialize(config: ObservabilityAdapterConfig): Promise<void>;\n  protected abstract doShutdown(): Promise<void>;\n  protected abstract doHealthCheck(): Promise<boolean>;\n\n  // ─── Metrics ───────────────────────────────────────────────────────────────\n\n  async recordMetric(metric: Metric): Promise<void> {\n    if (!this._isInitialized || this._config?.enabled === false) {\n      return;\n    }\n\n    const metricWithDefaults = this.applyDefaultTags(metric);\n    await this.doRecordMetric(metricWithDefaults);\n  }\n\n  async incrementCounter(\n    name: string,\n    value: number = 1,\n    tags?: Record<string, string>\n  ): Promise<void> {\n    await this.recordMetric({\n      type: 'counter',\n      name,\n      value,\n      tags: { ...this._config?.defaultTags, ...tags },\n    });\n  }\n\n  async setGauge(name: string, value: number, tags?: Record<string, string>): Promise<void> {\n    await this.recordMetric({\n      type: 'gauge',\n      name,\n      value,\n      tags: { ...this._config?.defaultTags, ...tags },\n    });\n  }\n\n  async recordHistogram(name: string, value: number, tags?: Record<string, string>): Promise<void> {\n    await this.recordMetric({\n      type: 'histogram',\n      name,\n      value,\n      tags: { ...this._config?.defaultTags, ...tags },\n    });\n  }\n\n  protected abstract doRecordMetric(metric: Metric): Promise<void>;\n\n  // ─── Tracing ───────────────────────────────────────────────────────────────\n\n  startSpan(options: SpanOptions): Span {\n    if (!this._isInitialized || this._config?.enabled === false) {\n      return this.createNoopSpan(options);\n    }\n\n    // Apply sampling\n    if (this._config?.samplingRate !== undefined && this._config.samplingRate < 1) {\n      if (Math.random() > this._config.samplingRate) {\n        return this.createNoopSpan(options);\n      }\n    }\n\n    return this.doStartSpan(options);\n  }\n\n  getActiveSpan(): Span | null {\n    if (!this._isInitialized) {\n      return null;\n    }\n    return this.doGetActiveSpan();\n  }\n\n  async withSpan<T>(options: SpanOptions, fn: (span: Span) => Promise<T>): Promise<T> {\n    const span = this.startSpan(options);\n    try {\n      const result = await fn(span);\n      span.setStatus('ok');\n      return result;\n    } catch (error) {\n      span.setStatus('error', error instanceof Error ? error.message : String(error));\n      if (error instanceof Error) {\n        span.recordException(error);\n      }\n      throw error;\n    } finally {\n      span.end();\n    }\n  }\n\n  protected abstract doStartSpan(options: SpanOptions): Span;\n  protected abstract doGetActiveSpan(): Span | null;\n\n  // ─── Logging ───────────────────────────────────────────────────────────────\n\n  async log(entry: LogEntry): Promise<void> {\n    if (!this._isInitialized || this._config?.enabled === false) {\n      return;\n    }\n\n    const entryWithDefaults = {\n      ...entry,\n      timestamp: entry.timestamp ?? Date.now(),\n      service: entry.service ?? this._config?.serviceName,\n    };\n\n    await this.doLog(entryWithDefaults);\n  }\n\n  protected abstract doLog(entry: LogEntry): Promise<void>;\n\n  // ─── Events ────────────────────────────────────────────────────────────────\n\n  async sendEvent(event: ObservabilityEvent): Promise<void> {\n    if (!this._isInitialized || this._config?.enabled === false) {\n      return;\n    }\n\n    const eventWithDefaults = {\n      ...event,\n      timestamp: event.timestamp ?? Date.now(),\n      tags: { ...this._config?.defaultTags, ...event.tags },\n    };\n\n    await this.doSendEvent(eventWithDefaults);\n  }\n\n  protected abstract doSendEvent(event: ObservabilityEvent): Promise<void>;\n\n  // ─── Flush ─────────────────────────────────────────────────────────────────\n\n  async flush(): Promise<void> {\n    if (!this._isInitialized) {\n      return;\n    }\n    await this.doFlush();\n  }\n\n  protected abstract doFlush(): Promise<void>;\n\n  // ─── Helpers ───────────────────────────────────────────────────────────────\n\n  /**\n   * Apply default tags to a metric\n   */\n  protected applyDefaultTags(metric: Metric): Metric {\n    if (!this._config?.defaultTags) {\n      return metric;\n    }\n\n    return {\n      ...metric,\n      tags: {\n        ...this._config.defaultTags,\n        ...metric.tags,\n      },\n    };\n  }\n\n  /**\n   * Create a no-op span (for disabled/sampled-out traces)\n   */\n  // eslint-disable-next-line no-unused-vars\n  protected createNoopSpan(_options: SpanOptions): Span {\n    const context: SpanContext = {\n      traceId: generateTraceId(),\n      spanId: generateSpanId(),\n    };\n\n    return {\n      context,\n      setAttribute: () => {},\n      setAttributes: () => {},\n      addEvent: () => {},\n      setStatus: () => {},\n      end: () => {},\n      recordException: () => {},\n    };\n  }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// No-Op Adapter\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * No-op adapter that does nothing.\n * Use when observability is disabled.\n */\nexport class NoopAdapter extends BaseAdapter {\n  readonly provider = 'noop' as const;\n  readonly name = 'NoopAdapter';\n\n  protected async doInitialize(): Promise<void> {}\n  protected async doShutdown(): Promise<void> {}\n  protected async doHealthCheck(): Promise<boolean> {\n    return true;\n  }\n  protected async doRecordMetric(): Promise<void> {}\n  protected doStartSpan(options: SpanOptions): Span {\n    return this.createNoopSpan(options);\n  }\n  protected doGetActiveSpan(): Span | null {\n    return null;\n  }\n  protected async doLog(): Promise<void> {}\n  protected async doSendEvent(): Promise<void> {}\n  protected async doFlush(): Promise<void> {}\n}\n","/**\n * Logger Adapter\n *\n * Uses @plyaz/logger for observability output.\n * Can be used standalone OR alongside other adapters (Datadog, Grafana)\n * to always have console/file logging regardless of external providers.\n *\n * @example Standalone usage\n * ```typescript\n * const logger = new LoggerAdapter();\n * await logger.initialize({ serviceName: 'my-service' });\n * ```\n *\n * @example As console fallback with Datadog\n * ```typescript\n * const observability = new ObservabilityService({\n *   mode: 'parallel',\n *   adapters: [datadogAdapter, loggerAdapter], // Both receive all events\n * });\n * ```\n *\n * @module base/observability\n */\n\nimport { PackageLogger } from '@plyaz/logger';\nimport type {\n  ObservabilityAdapterConfig,\n  Metric,\n  SpanOptions,\n  Span,\n  LogEntry,\n  ObservabilityEvent,\n  SpanContext,\n  SpanAttributes,\n  SpanEvent,\n  SpanStatus,\n  ConsoleAdapterConfig,\n} from '@plyaz/types/observability';\nimport { generateTraceId, generateSpanId } from '@/utils/common';\nimport { BaseAdapter } from './BaseAdapter';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Logger Adapter\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Logger adapter that uses @plyaz/logger for output.\n *\n * This adapter integrates observability with the existing logging infrastructure,\n * providing structured logging for metrics, spans, and events through PackageLogger.\n *\n * Use this adapter:\n * - As standalone for development/debugging\n * - Alongside Datadog/Grafana to always have local console output\n * - As a fallback in priority mode when external providers fail\n */\nexport class LoggerAdapter extends BaseAdapter {\n  readonly provider = 'console' as const;\n  readonly name = 'LoggerAdapter';\n\n  private observabilityLogger!: PackageLogger;\n  private logMetrics = true;\n  private logSpans = true;\n  private logEvents = true;\n\n  protected async doInitialize(config: ObservabilityAdapterConfig): Promise<void> {\n    const consoleConfig = config as ConsoleAdapterConfig;\n\n    // Create dedicated logger for observability output\n    this.observabilityLogger = new PackageLogger({\n      packageName: 'observability',\n      service: config.serviceName ?? 'LoggerAdapter',\n      environment: config.environment as 'development' | 'staging' | 'production' | undefined,\n      minLevel: consoleConfig.logLevel ?? 'debug',\n    });\n\n    // All logging enabled by default\n    this.logMetrics = true;\n    this.logSpans = true;\n    this.logEvents = true;\n  }\n\n  protected async doShutdown(): Promise<void> {\n    // Logger doesn't need explicit shutdown\n  }\n\n  protected async doHealthCheck(): Promise<boolean> {\n    return true;\n  }\n\n  protected async doRecordMetric(metric: Metric): Promise<void> {\n    if (!this.logMetrics) return;\n\n    this.observabilityLogger.debug(`[METRIC] ${metric.type}:${metric.name}`, {\n      metricType: metric.type,\n      metricName: metric.name,\n      value: 'value' in metric ? metric.value : undefined,\n      unit: metric.unit,\n      tags: metric.tags,\n    });\n  }\n\n  protected doStartSpan(options: SpanOptions): Span {\n    const context: SpanContext = {\n      traceId: generateTraceId(),\n      spanId: generateSpanId(),\n      parentSpanId: options.parentContext?.spanId,\n    };\n\n    const startTime = options.startTime ?? Date.now();\n\n    if (this.logSpans) {\n      this.observabilityLogger.debug(`[SPAN START] ${options.name}`, {\n        traceId: context.traceId,\n        spanId: context.spanId,\n        parentSpanId: context.parentSpanId,\n        kind: options.kind,\n        attributes: options.attributes,\n      });\n    }\n\n    const events: SpanEvent[] = [];\n    let attributes: SpanAttributes = { ...options.attributes };\n    let status: SpanStatus = 'unset';\n    let statusMessage: string | undefined;\n\n    const logSpans = this.logSpans;\n    const logger = this.observabilityLogger;\n\n    return {\n      context,\n      setAttribute: (key, value) => {\n        attributes[key] = value;\n      },\n      setAttributes: attrs => {\n        attributes = { ...attributes, ...attrs };\n      },\n      addEvent: event => {\n        events.push(event);\n        if (logSpans) {\n          logger.debug(`[SPAN EVENT] ${options.name}: ${event.name}`, {\n            traceId: context.traceId,\n            spanId: context.spanId,\n            eventAttributes: event.attributes,\n          });\n        }\n      },\n      setStatus: (s, message) => {\n        status = s;\n        statusMessage = message;\n      },\n      end: endTime => {\n        const duration = (endTime ?? Date.now()) - startTime;\n        if (logSpans) {\n          const logMethod = status === 'error' ? 'warn' : 'debug';\n          logger[logMethod](`[SPAN END] ${options.name}`, {\n            traceId: context.traceId,\n            spanId: context.spanId,\n            durationMs: duration,\n            status,\n            statusMessage,\n            attributes,\n            eventCount: events.length,\n          });\n        }\n      },\n      recordException: error => {\n        if (logSpans) {\n          logger.error(`[SPAN ERROR] ${options.name}`, {\n            traceId: context.traceId,\n            spanId: context.spanId,\n            error: error.message,\n            stack: error.stack,\n          });\n        }\n      },\n    };\n  }\n\n  protected doGetActiveSpan(): Span | null {\n    return null; // Logger adapter doesn't track active spans\n  }\n\n  protected async doLog(entry: LogEntry): Promise<void> {\n    const meta = {\n      service: entry.service,\n      traceId: entry.traceId,\n      spanId: entry.spanId,\n      ...entry.context,\n    };\n\n    // Map observability log levels to logger methods\n    switch (entry.level) {\n      case 'debug':\n        this.observabilityLogger.debug(entry.message, meta);\n        break;\n      case 'info':\n        this.observabilityLogger.info(entry.message, meta);\n        break;\n      case 'warn':\n        this.observabilityLogger.warn(entry.message, meta);\n        break;\n      case 'error':\n        this.observabilityLogger.error(entry.message, meta);\n        break;\n      case 'fatal':\n        this.observabilityLogger.fatal(entry.message, meta);\n        break;\n    }\n  }\n\n  protected async doSendEvent(event: ObservabilityEvent): Promise<void> {\n    if (!this.logEvents) return;\n\n    this.observabilityLogger.info(`[EVENT] ${event.name}`, {\n      eventName: event.name,\n      properties: event.properties,\n      tags: event.tags,\n    });\n  }\n\n  protected async doFlush(): Promise<void> {\n    // Logger handles its own buffering/flushing\n  }\n}\n","/**\n * Observability Service\n *\n * Injectable service for observability (metrics, tracing, logging).\n * Works like CacheManager, DatabaseService, and ApiClient - can be injected into domain services.\n *\n * Adapters are initialized separately with their own configs.\n * This service only orchestrates - it doesn't know about adapter-specific configs.\n *\n * @module base/observability\n */\n\nimport { PackageLogger } from '@plyaz/logger';\nimport { CorePackageError } from '@plyaz/errors';\nimport { ERROR_CODES } from '@plyaz/types/errors';\nimport type {\n  ObservabilityAdapter,\n  ObservabilityAdapterConfig,\n  Metric,\n  SpanOptions,\n  Span,\n  LogEntry,\n  ObservabilityEvent,\n  OperationContext,\n  MonitoringOperationResult,\n  AdapterWithPriority,\n  AdapterEntry,\n  ObservabilityServiceConfig,\n  ObservabilityServiceInterface,\n} from '@plyaz/types/observability';\nimport { OBSERVABILITY_METRICS } from '@plyaz/types/observability';\nimport { NoopAdapter } from './BaseAdapter';\nimport { LoggerAdapter } from './LoggerAdapter';\n\n// Default timeout for adapter operations (5 seconds)\nconst DEFAULT_ADAPTER_TIMEOUT_MS = 5000;\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Observability Service Implementation\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * ObservabilityService - Main observability service that implements ObservabilityAdapter.\n *\n * This service orchestrates multiple adapters and can be injected into domain services.\n * Logger adapter is always included by default for console output.\n *\n * ```typescript\n * // 1. Initialize adapters separately\n * const datadogAdapter = new DatadogAdapter();\n * await datadogAdapter.initialize({ apiKey: '...', serviceName: 'my-service' });\n *\n * // 2. Create service - logger is auto-added by default\n * const observability = new ObservabilityService();\n * await observability.initialize({\n *   mode: 'parallel',\n *   adapters: [datadogAdapter], // Logger added automatically\n *   serviceName: 'my-service',\n * });\n *\n * // 3. Use in domain services (implements ObservabilityAdapter)\n * await observability.incrementCounter('api.requests', 1);\n * ```\n */\nexport class ObservabilityService implements ObservabilityAdapter, ObservabilityServiceInterface {\n  readonly provider = 'custom' as const;\n  readonly name = 'ObservabilityService';\n\n  private _isInitialized = false;\n  private _config: ObservabilityServiceConfig | null = null;\n  private readonly logger: PackageLogger;\n  private readonly adapterEntries: AdapterEntry[] = [];\n  private mode: 'single' | 'parallel' | 'priority' = 'parallel';\n  private readonly noopAdapter = new NoopAdapter();\n  private loggerAdapter: LoggerAdapter | null = null;\n\n  constructor() {\n    this.logger = new PackageLogger({\n      packageName: 'core',\n      service: 'ObservabilityService',\n    });\n  }\n\n  get isInitialized(): boolean {\n    return this._isInitialized;\n  }\n\n  /**\n   * Check if service has at least one working adapter\n   */\n  get isReady(): boolean {\n    return this.adapterEntries.some(e => e.adapter.isInitialized);\n  }\n\n  /**\n   * Get all adapters (for compatibility)\n   */\n  private get adapters(): ObservabilityAdapter[] {\n    return this.adapterEntries.map(e => e.adapter);\n  }\n\n  /**\n   * Get initialized adapter entries\n   */\n  private get initializedEntries(): AdapterEntry[] {\n    return this.adapterEntries.filter(e => e.adapter.isInitialized);\n  }\n\n  /**\n   * Get primary (non-failover) initialized adapters\n   */\n  private get primaryEntries(): AdapterEntry[] {\n    return this.initializedEntries.filter(e => !e.failover);\n  }\n\n  /**\n   * Get failover initialized adapters\n   */\n  private get failoverEntries(): AdapterEntry[] {\n    return this.initializedEntries.filter(e => e.failover);\n  }\n\n  // ─── Lifecycle ─────────────────────────────────────────────────────────────\n\n  /**\n   * Check if input is an adapter with priority config\n   */\n  private isAdapterWithPriority(\n    input: ObservabilityAdapter | AdapterWithPriority\n  ): input is AdapterWithPriority {\n    return (\n      'adapter' in input &&\n      typeof (input as AdapterWithPriority).adapter?.isInitialized === 'boolean'\n    );\n  }\n\n  /**\n   * Normalize adapter input to adapter with priority and failover config\n   */\n  private normalizeAdapter(\n    input: ObservabilityAdapter | AdapterWithPriority,\n    defaultPriority: number\n  ): { adapter: ObservabilityAdapter; priority: number; failover: boolean } {\n    if (this.isAdapterWithPriority(input)) {\n      return {\n        adapter: input.adapter,\n        priority: input.priority ?? defaultPriority,\n        failover: input.failover ?? false,\n      };\n    }\n    return { adapter: input, priority: defaultPriority, failover: false };\n  }\n\n  /**\n   * Initialize the observability service.\n   * Logger adapter is always added by default unless explicitly disabled.\n   * Adapters are sorted by priority (higher = first), with failover adapters after primary.\n   */\n  async initialize(config: ObservabilityAdapterConfig & ObservabilityServiceConfig): Promise<void> {\n    if (this._isInitialized) {\n      this.logger.warn('ObservabilityService already initialized');\n      return;\n    }\n\n    this._config = config;\n    this.mode = config.mode ?? 'parallel';\n\n    // Collect adapters with priorities\n    const entries: AdapterEntry[] = [];\n\n    // Add provided adapters\n    if (config.adapter) {\n      entries.push(this.normalizeAdapter(config.adapter, 0));\n    }\n    if (config.adapters) {\n      config.adapters.forEach((a, index) => {\n        // Default priority decreases with array position for stable sorting\n        entries.push(this.normalizeAdapter(a, -index));\n      });\n    }\n\n    // Always add logger adapter by default (for console output)\n    // Unless there's already a console/logger adapter\n    const hasLoggerAdapter = entries.some(\n      e => e.adapter.provider === 'console' || e.adapter.name === 'LoggerAdapter'\n    );\n    if (!hasLoggerAdapter) {\n      this.loggerAdapter = new LoggerAdapter();\n      await this.loggerAdapter.initialize({\n        enabled: config.enabled !== false,\n        serviceName: config.serviceName,\n        environment: config.environment,\n        defaultTags: config.defaultTags,\n      });\n      // Logger is a failover by default with lowest priority\n      entries.push({ adapter: this.loggerAdapter, priority: -1000, failover: true });\n    }\n\n    // Sort: primary adapters first (by priority desc), then failover adapters (by priority desc)\n    entries.sort((a, b) => {\n      // Primary adapters come before failover\n      if (a.failover !== b.failover) {\n        return a.failover ? 1 : -1;\n      }\n      // Within same category, sort by priority (higher first)\n      return b.priority - a.priority;\n    });\n\n    // Store sorted entries\n    this.adapterEntries.push(...entries);\n\n    this._isInitialized = true;\n\n    this.logger.debug('ObservabilityService initialized', {\n      mode: this.mode,\n      adapterCount: this.adapterEntries.length,\n      primaryCount: this.primaryEntries.length,\n      failoverCount: this.failoverEntries.length,\n      adapters: this.adapterEntries.map(e => ({\n        name: e.adapter.name,\n        provider: e.adapter.provider,\n        priority: e.priority,\n        failover: e.failover,\n        initialized: e.adapter.isInitialized,\n      })),\n    });\n  }\n\n  async shutdown(): Promise<void> {\n    await Promise.all(this.adapters.map(adapter => adapter.shutdown()));\n    this._isInitialized = false;\n    this.logger.info('ObservabilityService shut down');\n  }\n\n  async isHealthy(): Promise<boolean> {\n    if (this.adapters.length === 0) {\n      return false;\n    }\n\n    const results = await Promise.all(\n      this.adapters.map(adapter => adapter.isHealthy().catch(() => false))\n    );\n\n    // For parallel mode, all must be healthy; for priority/single, at least one\n    return this.mode === 'parallel' ? results.every(Boolean) : results.some(Boolean);\n  }\n\n  async flush(): Promise<void> {\n    await this.executeOnAdapters('flush', adapter => adapter.flush());\n  }\n\n  // ─── Execute on Adapters ───────────────────────────────────────────────────\n\n  private get config(): ObservabilityServiceConfig {\n    return this._config ?? {};\n  }\n\n  private async executeOnAdapters<T>(\n    operation: string,\n    fn: (adapter: ObservabilityAdapter) => Promise<T>\n  ): Promise<void> {\n    const entries = this.initializedEntries;\n    if (entries.length === 0) {\n      return;\n    }\n\n    const timeout = this.config.adapterTimeout ?? DEFAULT_ADAPTER_TIMEOUT_MS;\n\n    switch (this.mode) {\n      case 'parallel':\n        await this.executeParallelWithFailover(operation, fn, timeout);\n        break;\n      case 'priority':\n        await this.executePriorityWithFailover(operation, fn, timeout);\n        break;\n      case 'single':\n      default:\n        await this.executeSingle(operation, entries[0].adapter, fn, timeout);\n        break;\n    }\n  }\n\n  private async executeSingle<T>(\n    operation: string,\n    adapter: ObservabilityAdapter,\n    fn: (adapter: ObservabilityAdapter) => Promise<T>,\n    timeout: number\n  ): Promise<void> {\n    try {\n      await this.withTimeout(fn(adapter), timeout);\n    } catch (error) {\n      this.logger.error(`${operation} failed on ${adapter.name}`, {\n        error: error instanceof Error ? error.message : String(error),\n      });\n    }\n  }\n\n  /**\n   * Execute on primary adapters in parallel.\n   * If all primary adapters fail, execute on failover adapters.\n   */\n  // eslint-disable-next-line complexity\n  private async executeParallelWithFailover<T>(\n    operation: string,\n    fn: (adapter: ObservabilityAdapter) => Promise<T>,\n    timeout: number\n  ): Promise<void> {\n    const primary = this.primaryEntries;\n    const failover = this.failoverEntries;\n\n    // Execute on primary adapters\n    if (primary.length > 0) {\n      const results = await Promise.allSettled(\n        primary.map(e => this.withTimeout(fn(e.adapter), timeout))\n      );\n\n      const errors = results\n        .map((r, i) =>\n          r.status === 'rejected' ? { adapter: primary[i].adapter.name, error: r.reason } : null\n        )\n        .filter(Boolean);\n\n      const allFailed = errors.length === primary.length;\n\n      if (errors.length > 0 && !allFailed) {\n        this.logger.warn(`${operation} failed on some primary adapters`, { errors });\n      }\n\n      // If all primary adapters failed, use failover\n      if (allFailed && failover.length > 0) {\n        this.logger.warn(`${operation} failed on all primary adapters, using failover`, { errors });\n        await this.executeParallel(\n          operation,\n          failover.map(e => e.adapter),\n          fn,\n          timeout\n        );\n        return;\n      }\n\n      if (this.config.failOnAnyError && errors.length > 0) {\n        throw new CorePackageError(\n          `${operation} failed on adapters: ${errors.map(e => e?.adapter).join(', ')}`,\n          ERROR_CODES.CORE_OPERATION_FAILED\n        );\n      }\n    } else if (failover.length > 0) {\n      // No primary adapters, use failover directly\n      await this.executeParallel(\n        operation,\n        failover.map(e => e.adapter),\n        fn,\n        timeout\n      );\n    }\n  }\n\n  private async executeParallel<T>(\n    operation: string,\n    adapters: ObservabilityAdapter[],\n    fn: (adapter: ObservabilityAdapter) => Promise<T>,\n    timeout: number\n  ): Promise<void> {\n    const results = await Promise.allSettled(\n      adapters.map(adapter => this.withTimeout(fn(adapter), timeout))\n    );\n\n    const errors = results\n      .map((r, i) =>\n        r.status === 'rejected' ? { adapter: adapters[i].name, error: r.reason } : null\n      )\n      .filter(Boolean);\n\n    if (errors.length > 0) {\n      this.logger.warn(`${operation} failed on some adapters`, { errors });\n    }\n  }\n\n  /**\n   * Execute on primary adapters in priority order.\n   * If all primary adapters fail, try failover adapters.\n   */\n  // eslint-disable-next-line complexity\n  private async executePriorityWithFailover<T>(\n    operation: string,\n    fn: (adapter: ObservabilityAdapter) => Promise<T>,\n    timeout: number\n  ): Promise<void> {\n    const primary = this.primaryEntries;\n    const failover = this.failoverEntries;\n\n    // Try primary adapters first\n    for (const entry of primary) {\n      try {\n        await this.withTimeout(fn(entry.adapter), timeout);\n        return; // Success - stop trying\n      } catch (error) {\n        const errorName = error instanceof Error ? error.name : 'Error';\n        const shouldFallback =\n          !this.config.fallbackOnErrors || this.config.fallbackOnErrors.includes(errorName);\n\n        if (shouldFallback) {\n          this.logger.warn(`${operation} failed on ${entry.adapter.name}, trying next`, {\n            error: error instanceof Error ? error.message : String(error),\n          });\n          continue;\n        }\n        throw error;\n      }\n    }\n\n    // All primary failed, try failover adapters\n    for (const entry of failover) {\n      try {\n        await this.withTimeout(fn(entry.adapter), timeout);\n        return; // Success\n      } catch (error) {\n        this.logger.warn(`${operation} failed on failover ${entry.adapter.name}`, {\n          error: error instanceof Error ? error.message : String(error),\n        });\n        // Continue to next failover adapter\n      }\n    }\n\n    this.logger.error(`${operation} failed on all adapters (primary and failover)`);\n  }\n\n  private async withTimeout<T>(promise: Promise<T>, timeoutMs: number): Promise<T> {\n    return Promise.race([\n      promise,\n      new Promise<T>((_, reject) =>\n        setTimeout(() => reject(new Error(`Operation timed out after ${timeoutMs}ms`)), timeoutMs)\n      ),\n    ]);\n  }\n\n  // ─── Metrics ───────────────────────────────────────────────────────────────\n\n  async recordMetric(metric: Metric): Promise<void> {\n    await this.executeOnAdapters('recordMetric', adapter => adapter.recordMetric(metric));\n  }\n\n  async incrementCounter(\n    name: string,\n    value: number = 1,\n    tags?: Record<string, string>\n  ): Promise<void> {\n    await this.executeOnAdapters('incrementCounter', adapter =>\n      adapter.incrementCounter(name, value, tags)\n    );\n  }\n\n  async setGauge(name: string, value: number, tags?: Record<string, string>): Promise<void> {\n    await this.executeOnAdapters('setGauge', adapter => adapter.setGauge(name, value, tags));\n  }\n\n  async recordHistogram(name: string, value: number, tags?: Record<string, string>): Promise<void> {\n    await this.executeOnAdapters('recordHistogram', adapter =>\n      adapter.recordHistogram(name, value, tags)\n    );\n  }\n\n  // ─── Tracing ───────────────────────────────────────────────────────────────\n\n  startSpan(options: SpanOptions): Span {\n    // For tracing, use first initialized adapter\n    const entry = this.initializedEntries[0];\n    return entry?.adapter.startSpan(options) ?? this.noopAdapter.startSpan(options);\n  }\n\n  async withSpan<T>(options: SpanOptions, fn: (span: Span) => Promise<T>): Promise<T> {\n    const entry = this.initializedEntries[0];\n    if (!entry) {\n      return fn(this.noopAdapter.startSpan(options));\n    }\n    return entry.adapter.withSpan(options, fn);\n  }\n\n  getActiveSpan(): Span | null {\n    const entry = this.initializedEntries[0];\n    return entry?.adapter.getActiveSpan() ?? null;\n  }\n\n  // ─── Logging ───────────────────────────────────────────────────────────────\n\n  async log(entry: LogEntry): Promise<void> {\n    await this.executeOnAdapters('log', adapter => adapter.log(entry));\n  }\n\n  // ─── Events ────────────────────────────────────────────────────────────────\n\n  async sendEvent(event: ObservabilityEvent): Promise<void> {\n    await this.executeOnAdapters('sendEvent', adapter => adapter.sendEvent(event));\n  }\n\n  // ─── Service Operation Tracking ────────────────────────────────────────────\n\n  /**\n   * Track a service operation with automatic metrics and tracing.\n   *\n   * @example\n   * ```typescript\n   * const { result, metrics } = await observability.trackOperation(\n   *   {\n   *     serviceName: 'UserService',\n   *     operation: 'create',\n   *     entityType: 'user',\n   *     startTime: Date.now(),\n   *   },\n   *   async () => {\n   *     return await this.repository.create(userData);\n   *   }\n   * );\n   * ```\n   */\n  // eslint-disable-next-line complexity\n  async trackOperation<T>(\n    context: OperationContext,\n    operation: () => Promise<T>\n  ): Promise<{ result: T; metrics: MonitoringOperationResult }> {\n    const startTime = context.startTime ?? Date.now();\n\n    // Start span\n    const span = this.startSpan({\n      name: `${context.serviceName}.${context.operation}`,\n      attributes: {\n        'service.name': context.serviceName,\n        'operation.name': context.operation,\n        ...(context.entityType && { 'entity.type': context.entityType }),\n        ...(context.entityId && { 'entity.id': context.entityId }),\n        ...context.attributes,\n      },\n      parentContext: context.parentContext,\n    });\n\n    // Increment operation counter\n    await this.incrementCounter(OBSERVABILITY_METRICS.SERVICE_OPERATION_COUNT, 1, {\n      service: context.serviceName,\n      operation: context.operation,\n      ...(context.entityType && { entity_type: context.entityType }),\n    });\n\n    try {\n      const result = await operation();\n      const duration = Date.now() - startTime;\n\n      span.setStatus('ok');\n\n      await this.recordHistogram(OBSERVABILITY_METRICS.SERVICE_OPERATION_DURATION, duration, {\n        service: context.serviceName,\n        operation: context.operation,\n        status: 'success',\n      });\n\n      return {\n        result,\n        metrics: { success: true, duration, data: result },\n      };\n    } catch (error) {\n      const duration = Date.now() - startTime;\n\n      span.setStatus('error', error instanceof Error ? error.message : String(error));\n      if (error instanceof Error) {\n        span.recordException(error);\n      }\n\n      await this.incrementCounter(OBSERVABILITY_METRICS.SERVICE_OPERATION_ERROR, 1, {\n        service: context.serviceName,\n        operation: context.operation,\n        error_type: error instanceof Error ? error.name : 'UnknownError',\n      });\n\n      await this.recordHistogram(OBSERVABILITY_METRICS.SERVICE_OPERATION_DURATION, duration, {\n        service: context.serviceName,\n        operation: context.operation,\n        status: 'error',\n      });\n\n      throw error;\n    } finally {\n      span.end();\n    }\n  }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Factory Function\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Create an ObservabilityService with pre-initialized adapters.\n *\n * @example\n * ```typescript\n * // Initialize adapters first\n * const datadogAdapter = new DatadogAdapter();\n * await datadogAdapter.initialize({ apiKey: '...', serviceName: 'my-service' });\n *\n * // Create and initialize service (logger auto-added)\n * const observability = await createObservabilityService({\n *   mode: 'parallel',\n *   adapters: [datadogAdapter],\n *   serviceName: 'my-service',\n * });\n *\n * // Priority mode (fallback chain)\n * const observability = await createObservabilityService({\n *   mode: 'priority',\n *   adapters: [datadogAdapter, grafanaAdapter],\n *   serviceName: 'my-service',\n * });\n * ```\n */\nexport async function createObservabilityService(\n  config: ObservabilityServiceConfig & { serviceName?: string; environment?: string } = {}\n): Promise<ObservabilityService> {\n  const service = new ObservabilityService();\n  await service.initialize(config);\n  return service;\n}\n","/**\n * Observability Module\n *\n * Adapter-based observability system supporting multiple providers\n * (Datadog, Grafana, OpenTelemetry, etc.) with parallel and priority modes.\n *\n * @module base/observability\n */\n\n// Adapters\nexport { BaseAdapter, NoopAdapter } from './BaseAdapter';\nexport { LoggerAdapter } from './LoggerAdapter';\nexport { CompositeAdapter } from './CompositeAdapter';\nexport { DatadogAdapter } from './DatadogAdapter';\nexport type { DatadogAdapterConfigExtended } from './DatadogAdapter';\n\n// Re-export Datadog API types from @plyaz/types for convenience\nexport type {\n  DatadogApiClient,\n  DatadogMetricPayload,\n  DatadogLogPayload,\n  DatadogEventPayload,\n} from '@plyaz/types/observability';\n\n// Service\nexport { ObservabilityService, createObservabilityService } from './ObservabilityService';\n\n// Re-export types for convenience\nexport type {\n  ObservabilityAdapter,\n  ObservabilityAdapterConfig,\n  ObservabilityProvider,\n  Metric,\n  SpanOptions,\n  Span,\n  LogEntry,\n  ObservabilityEvent,\n  SpanContext,\n  SpanAttributes,\n  SpanEvent,\n  SpanStatus,\n  DatadogAdapterConfig,\n  OpenTelemetryAdapterConfig,\n  GrafanaAdapterConfig,\n  ConsoleAdapterConfig,\n  CompositeMode,\n  CompositeAdapterConfig,\n  OperationContext,\n  MonitoringOperationResult,\n  AdapterWithPriority,\n  AdapterEntry,\n  ObservabilityServiceConfig,\n  ObservabilityServiceInterface,\n} from '@plyaz/types/observability';\n\nexport { OBSERVABILITY_METRICS, OBSERVABILITY_SPANS } from '@plyaz/types/observability';\n","// This eslint disable is an edge-case as we need to ensure that we're able to load CoreInitializer regardless if FE, BE or specific frameworks\n/**\n * Service Registry - Frontend Service Auto-Initialization\n *\n * Provides a generic, scalable pattern for initializing domain services.\n * Services implement the InitializableDomainService interface and are\n * initialized automatically without hardcoded switch statements.\n *\n * @example\n * ```typescript\n * import { ServiceRegistry } from '@plyaz/core';\n * import { FeatureFlagDomainService } from '@plyaz/core/frontend';\n * import { ExampleDomainService } from '@plyaz/core/domain';\n *\n * // Initialize services\n * await ServiceRegistry.initialize({\n *   apiClient: { baseURL: '/api' },\n *   services: [\n *     { service: FeatureFlagDomainService, config: { enabled: true } },\n *     { service: ExampleDomainService, config: { enabled: true, useRealApi: false } },\n *   ],\n * });\n *\n * // Access services by key\n * const flags = ServiceRegistry.get('featureFlags');\n * const isEnabled = await flags.isEnabled('my-flag');\n *\n * // Or get with type safety\n * const example = ServiceRegistry.get<ExampleDomainService>('example');\n * ```\n */\n\nimport { CorePackageError } from '@plyaz/errors';\nimport { ERROR_CODES, BACKEND_RUNTIMES, FRONTEND_RUNTIMES, UNIVERSAL_RUNTIMES } from '@plyaz/types';\nimport { PackageLogger } from '@plyaz/logger';\nimport type { ApiClientOptions } from '@plyaz/types/api';\nimport type { RootStoreSlice } from '@plyaz/types/store';\nimport type {\n  CoreDomainServiceInstance,\n  CoreServiceCreateOptions,\n  CoreServiceEntry,\n  CoreServiceInitConfig,\n  CoreServiceRegistryConfig,\n  CoreCacheConfig,\n  CoreObservabilityConfig,\n  CoreRuntimeEnvironment,\n  CoreDbServiceConfig,\n  CoreStorageConfig,\n  CoreNotificationConfig,\n  // Service instance types (from @plyaz/types, not backend modules)\n  CoreDbServiceInstance,\n  CoreCacheManagerInstance,\n  CoreStorageServiceInstance,\n  CoreNotificationServiceInstance,\n} from '@plyaz/types/core';\nimport type { ObservabilityAdapter } from '@plyaz/types/observability';\nimport { createObservabilityService } from '../base/observability';\nimport { ApiClientService } from '../services/ApiClientService';\nimport { getCoreDependency } from '../config/dependencies';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Internal Types\n// ─────────────────────────────────────────────────────────────────────────────\n\ninterface PendingService {\n  entry: CoreServiceEntry;\n  initWhen: CoreServiceInitConfig['initWhen'];\n}\n\ninterface ServiceMetadata {\n  entry: CoreServiceEntry;\n  isSingleton: boolean;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Global Singleton Pattern for Static Class State\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Global Singleton Pattern using globalThis for static class state\n *\n * @see CoreEventManager.ts for detailed explanation of why this pattern is needed.\n *\n * TL;DR: In Next.js and similar frameworks, module isolation can create multiple\n * instances of static class state. Using globalThis + Symbol.for() ensures ONE\n * shared state per process, preventing issues like services being registered in\n * one module context but not accessible from another (e.g., API routes).\n */\n\ninterface ServiceRegistryState {\n  services: Map<string, CoreDomainServiceInstance>;\n  pending: Map<string, PendingService>;\n  metadata: Map<string, ServiceMetadata>;\n  environment: 'production' | 'staging' | 'development' | 'test';\n  runtime: CoreRuntimeEnvironment;\n  apiClientOptions: ApiClientOptions | null;\n  dbConfig: Partial<CoreDbServiceConfig> | null;\n  cacheConfig: CoreCacheConfig | null;\n  observabilityConfig: CoreObservabilityConfig | null;\n  observabilityInstance: ObservabilityAdapter | null;\n  storageConfig: CoreStorageConfig | null;\n  notificationsConfig: CoreNotificationConfig | null;\n  storeRegistry: {\n    getStore<K extends keyof RootStoreSlice>(key: K): RootStoreSlice[K] | undefined;\n  } | null;\n  initPromises: Map<string, Promise<CoreDomainServiceInstance>>;\n}\n\nconst SERVICE_REGISTRY_KEY = Symbol.for('plyaz.ServiceRegistry');\n\nfunction getServiceRegistryState(): ServiceRegistryState {\n  const globalAny = globalThis as unknown as { [key: symbol]: ServiceRegistryState };\n  if (!globalAny[SERVICE_REGISTRY_KEY]) {\n    globalAny[SERVICE_REGISTRY_KEY] = {\n      services: new Map(),\n      pending: new Map(),\n      metadata: new Map(),\n      environment: 'development',\n      runtime: 'node',\n      apiClientOptions: null,\n      dbConfig: null,\n      cacheConfig: null,\n      observabilityConfig: null,\n      observabilityInstance: null,\n      storageConfig: null,\n      notificationsConfig: null,\n      storeRegistry: null,\n      initPromises: new Map(),\n    };\n  }\n  return globalAny[SERVICE_REGISTRY_KEY];\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Service Registry\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Service Registry\n *\n * Manages frontend domain service instances with auto-initialization.\n * Supports immediate, lazy, and conditional initialization.\n *\n * Key features:\n * - Generic: No switch statements, services implement common interface\n * - Scalable: Add new services without modifying registry code\n * - Flexible: Immediate, lazy, or conditional initialization\n * - Type-safe: Get services with proper typing\n */\nexport class ServiceRegistry {\n  private static readonly logger = new PackageLogger({\n    packageName: 'core',\n    service: 'ServiceRegistry',\n  });\n\n  // State accessors using globalThis\n  private static get _services(): Map<string, CoreDomainServiceInstance> {\n    return getServiceRegistryState().services;\n  }\n  private static get _pending(): Map<string, PendingService> {\n    return getServiceRegistryState().pending;\n  }\n  private static get _metadata(): Map<string, ServiceMetadata> {\n    return getServiceRegistryState().metadata;\n  }\n  private static get _environment(): 'production' | 'staging' | 'development' | 'test' {\n    return getServiceRegistryState().environment;\n  }\n  private static set _environment(value: 'production' | 'staging' | 'development' | 'test') {\n    getServiceRegistryState().environment = value;\n  }\n  private static get _runtime(): CoreRuntimeEnvironment {\n    return getServiceRegistryState().runtime;\n  }\n  private static set _runtime(value: CoreRuntimeEnvironment) {\n    getServiceRegistryState().runtime = value;\n  }\n  private static get _apiClientOptions(): ApiClientOptions | null {\n    return getServiceRegistryState().apiClientOptions;\n  }\n  private static set _apiClientOptions(value: ApiClientOptions | null) {\n    getServiceRegistryState().apiClientOptions = value;\n  }\n  private static get _dbConfig(): Partial<CoreDbServiceConfig> | null {\n    return getServiceRegistryState().dbConfig;\n  }\n  private static set _dbConfig(value: Partial<CoreDbServiceConfig> | null) {\n    getServiceRegistryState().dbConfig = value;\n  }\n  private static get _cacheConfig(): CoreCacheConfig | null {\n    return getServiceRegistryState().cacheConfig;\n  }\n  private static set _cacheConfig(value: CoreCacheConfig | null) {\n    getServiceRegistryState().cacheConfig = value;\n  }\n  private static get _observabilityConfig(): CoreObservabilityConfig | null {\n    return getServiceRegistryState().observabilityConfig;\n  }\n  private static set _observabilityConfig(value: CoreObservabilityConfig | null) {\n    getServiceRegistryState().observabilityConfig = value;\n  }\n  private static get _observabilityInstance(): ObservabilityAdapter | null {\n    return getServiceRegistryState().observabilityInstance;\n  }\n  private static set _observabilityInstance(value: ObservabilityAdapter | null) {\n    getServiceRegistryState().observabilityInstance = value;\n  }\n  private static get _storageConfig(): CoreStorageConfig | null {\n    return getServiceRegistryState().storageConfig;\n  }\n  private static set _storageConfig(value: CoreStorageConfig | null) {\n    getServiceRegistryState().storageConfig = value;\n  }\n  private static get _notificationsConfig(): CoreNotificationConfig | null {\n    return getServiceRegistryState().notificationsConfig;\n  }\n  private static set _notificationsConfig(value: CoreNotificationConfig | null) {\n    getServiceRegistryState().notificationsConfig = value;\n  }\n  private static get _storeRegistry(): {\n    getStore<K extends keyof RootStoreSlice>(key: K): RootStoreSlice[K] | undefined;\n  } | null {\n    return getServiceRegistryState().storeRegistry;\n  }\n  private static set _storeRegistry(\n    value: {\n      getStore<K extends keyof RootStoreSlice>(key: K): RootStoreSlice[K] | undefined;\n    } | null\n  ) {\n    getServiceRegistryState().storeRegistry = value;\n  }\n  private static get _initPromises(): Map<string, Promise<CoreDomainServiceInstance>> {\n    return getServiceRegistryState().initPromises;\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Initialization\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Initialize the service registry with the provided configuration.\n   *\n   * @param config - Registry configuration with services to initialize\n   *\n   * @example\n   * ```typescript\n   * await ServiceRegistry.initialize({\n   *   apiClient: { baseURL: '/api' },\n   *   services: [\n   *     { service: FeatureFlagDomainService, config: { enabled: true } },\n   *     { service: ExampleDomainService, config: { enabled: true, initWhen: 'lazy' } },\n   *   ],\n   * });\n   * ```\n   */\n  // eslint-disable-next-line complexity\n  static async initialize(config: CoreServiceRegistryConfig): Promise<void> {\n    ServiceRegistry._environment = config.environment ?? 'development';\n    ServiceRegistry._runtime = config.runtime ?? 'node';\n    ServiceRegistry._apiClientOptions = config.apiClient ?? null;\n    ServiceRegistry._dbConfig = config.db ?? null;\n    ServiceRegistry._cacheConfig = config.cache ?? null;\n    ServiceRegistry._observabilityConfig = config.observability ?? null;\n    ServiceRegistry._storageConfig = config.storage ?? null;\n    ServiceRegistry._notificationsConfig = config.notifications ?? null;\n    ServiceRegistry._storeRegistry = config.stores ?? null;\n\n    const immediatePromises: Promise<void>[] = [];\n\n    for (const entry of config.services) {\n      const serviceKey = entry.service.serviceKey;\n      const initWhen = entry.config.initWhen ?? 'immediate';\n      const enabled = entry.config.enabled !== false;\n      const isSingleton = entry.config.singleton !== false; // Default: true\n\n      // Store metadata for all services (even disabled)\n      ServiceRegistry._metadata.set(serviceKey, { entry, isSingleton });\n\n      // Skip disabled services\n      if (!enabled) {\n        ServiceRegistry.logger.debug(`Service ${serviceKey} is disabled, skipping`);\n        continue;\n      }\n\n      // Handle initialization timing\n      if (initWhen === 'immediate' && isSingleton) {\n        // Only auto-initialize singletons\n        immediatePromises.push(\n          ServiceRegistry.initializeService(entry).then(() => {\n            ServiceRegistry.logger.debug(`Service ${serviceKey} initialized (singleton)`);\n          })\n        );\n      } else if (isSingleton) {\n        // Store for lazy/conditional initialization\n        ServiceRegistry._pending.set(serviceKey, { entry, initWhen });\n        ServiceRegistry.logger.debug(\n          `Service ${serviceKey} registered for ${initWhen} initialization`\n        );\n      } else {\n        // Non-singleton: just store metadata, create on demand via create()\n        ServiceRegistry.logger.debug(\n          `Service ${serviceKey} registered (non-singleton, use create())`\n        );\n      }\n    }\n\n    // Wait for all immediate initializations\n    await Promise.all(immediatePromises);\n\n    const initializedKeys = [...ServiceRegistry._services.keys()];\n    const pendingKeys = [...ServiceRegistry._pending.keys()];\n    const nonSingletonKeys = [...ServiceRegistry._metadata.entries()]\n      .filter(([, meta]) => !meta.isSingleton)\n      .map(([key]) => key);\n\n    ServiceRegistry.logger.info('Service registry initialized', {\n      initialized: initializedKeys,\n      pending: pendingKeys,\n      nonSingleton: nonSingletonKeys,\n    });\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Service Access\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Get a singleton service instance by key (synchronous).\n   * Throws if the service is not initialized or is non-singleton.\n   *\n   * @param key - Service key (e.g., 'featureFlags', 'example')\n   * @returns The service instance\n   * @throws CorePackageError if service not found, not initialized, or non-singleton\n   *\n   * @example\n   * ```typescript\n   * const flags = ServiceRegistry.get<FeatureFlagDomainService>('featureFlags');\n   * const isEnabled = await flags.isEnabled('my-flag');\n   * ```\n   */\n  static get<T extends CoreDomainServiceInstance = CoreDomainServiceInstance>(key: string): T {\n    const service = ServiceRegistry._services.get(key);\n    if (service) {\n      return service as T;\n    }\n\n    // Check if non-singleton (must use create())\n    const metadata = ServiceRegistry._metadata.get(key);\n    if (metadata && !metadata.isSingleton) {\n      throw new CorePackageError(\n        `Service '${key}' is configured as non-singleton. ` +\n          `Use await ServiceRegistry.create('${key}') to create a new instance.`,\n        ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n      );\n    }\n\n    // Check if pending lazy initialization\n    const pending = ServiceRegistry._pending.get(key);\n    if (pending) {\n      throw new CorePackageError(\n        `Service '${key}' is configured for lazy initialization. ` +\n          `Use await ServiceRegistry.getAsync('${key}') instead.`,\n        ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n      );\n    }\n\n    throw new CorePackageError(\n      `Service '${key}' not found. Register it in ServiceRegistry.initialize()`,\n      ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n    );\n  }\n\n  /**\n   * Create a new instance of a service.\n   * Use this for non-singleton services or when you need a fresh instance.\n   *\n   * Note: The caller is responsible for disposing the returned instance.\n   *\n   * @param key - Service key\n   * @param configOverrides - Optional config overrides for this instance\n   * @returns Promise resolving to a new service instance\n   *\n   * @example\n   * ```typescript\n   * // Non-singleton service - always creates new instance\n   * const instance1 = await ServiceRegistry.create<WorkerService>('worker');\n   * const instance2 = await ServiceRegistry.create<WorkerService>('worker');\n   * instance1 !== instance2; // true\n   *\n   * // With config overrides\n   * const customWorker = await ServiceRegistry.create<WorkerService>('worker', {\n   *   apiClient: { baseURL: 'https://custom-api.com' },\n   * });\n   *\n   * // Don't forget to dispose when done!\n   * instance1.dispose();\n   * instance2.dispose();\n   * ```\n   */\n  static async create<T extends CoreDomainServiceInstance = CoreDomainServiceInstance>(\n    key: string,\n    configOverrides?: Partial<CoreServiceInitConfig>\n  ): Promise<T> {\n    const metadata = ServiceRegistry._metadata.get(key);\n    if (!metadata) {\n      throw new CorePackageError(\n        `Service '${key}' not found. Register it in ServiceRegistry.initialize()`,\n        ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n      );\n    }\n\n    // Merge config with overrides\n    const mergedEntry: CoreServiceEntry = {\n      service: metadata.entry.service,\n      config: { ...metadata.entry.config, ...configOverrides },\n    };\n\n    // Create new instance (don't store in registry)\n    return ServiceRegistry.initializeService(mergedEntry, false) as Promise<T>;\n  }\n\n  /**\n   * Get a service instance by key with async initialization if needed.\n   * Use this for lazy-initialized services.\n   *\n   * @param key - Service key\n   * @returns Promise resolving to the service instance\n   *\n   * @example\n   * ```typescript\n   * const example = await ServiceRegistry.getAsync<ExampleDomainService>('example');\n   * const entities = await example.getAll();\n   * ```\n   */\n  static async getAsync<T extends CoreDomainServiceInstance = CoreDomainServiceInstance>(\n    key: string\n  ): Promise<T> {\n    // Return immediately if already initialized\n    const existing = ServiceRegistry._services.get(key);\n    if (existing) {\n      return existing as T;\n    }\n\n    // Check for in-progress initialization\n    const inProgress = ServiceRegistry._initPromises.get(key);\n    if (inProgress) {\n      return (await inProgress) as T;\n    }\n\n    // Check if pending lazy initialization\n    const pending = ServiceRegistry._pending.get(key);\n    if (pending) {\n      // Handle conditional initialization\n      if (typeof pending.initWhen === 'function') {\n        const shouldInit = await pending.initWhen();\n        if (!shouldInit) {\n          throw new CorePackageError(\n            `Service '${key}' initialization condition returned false`,\n            ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n          );\n        }\n      }\n\n      // Initialize and return\n      const service = await ServiceRegistry.initializeService(pending.entry);\n      ServiceRegistry._pending.delete(key);\n      return service as T;\n    }\n\n    throw new CorePackageError(\n      `Service '${key}' not found. Register it in ServiceRegistry.initialize()`,\n      ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n    );\n  }\n\n  /**\n   * Check if a service is registered (either initialized or pending).\n   *\n   * @param key - Service key\n   */\n  static has(key: string): boolean {\n    return ServiceRegistry._services.has(key) || ServiceRegistry._pending.has(key);\n  }\n\n  /**\n   * Check if a service is initialized and ready.\n   *\n   * @param key - Service key\n   */\n  static isInitialized(key: string): boolean {\n    return ServiceRegistry._services.has(key);\n  }\n\n  /**\n   * Get all initialized service keys.\n   */\n  static getInitializedKeys(): string[] {\n    return [...ServiceRegistry._services.keys()];\n  }\n\n  /**\n   * Get all pending (lazy) service keys.\n   */\n  static getPendingKeys(): string[] {\n    return [...ServiceRegistry._pending.keys()];\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Internal: Service Initialization\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /** Build API client options and instance for service */\n  // eslint-disable-next-line complexity\n  private static async buildApiClientOptions(\n    config: CoreServiceInitConfig,\n    entry: CoreServiceEntry\n  ): Promise<{ dedicated: boolean; options?: ApiClientOptions; instance?: unknown } | undefined> {\n    const dedicatedApiClient = config.dedicatedApiClient;\n    const isDedicated = dedicatedApiClient === true || typeof dedicatedApiClient === 'object';\n    const serviceKey = entry.service.serviceKey;\n\n    const options: ApiClientOptions | undefined = isDedicated\n      ? typeof dedicatedApiClient === 'object'\n        ? { ...ServiceRegistry._apiClientOptions, ...dedicatedApiClient }\n        : (ServiceRegistry._apiClientOptions ?? undefined)\n      : (ServiceRegistry._apiClientOptions ?? undefined);\n\n    if (!options) {\n      return undefined;\n    }\n\n    // Get or create API client instance\n    let apiInstance: unknown;\n    if (isDedicated && options) {\n      // Create dedicated API client instance for this service\n      try {\n        // Use the global environment from initialization\n        const envConfig = {\n          env: ServiceRegistry._environment,\n          setAsDefault: false, // Dedicated instances should not become default\n        };\n        apiInstance = await ApiClientService.createInstance(envConfig, options);\n        ServiceRegistry.logger.debug(\n          `Created dedicated API client instance for service '${serviceKey}'`,\n          {\n            environment: ServiceRegistry._environment,\n          }\n        );\n      } catch (error) {\n        ServiceRegistry.logger.warn(\n          `Failed to create dedicated API client for service '${serviceKey}'`,\n          {\n            error: error instanceof Error ? error.message : String(error),\n          }\n        );\n      }\n    } else {\n      // Use global shared API client\n      try {\n        apiInstance = ApiClientService.getClient();\n      } catch {\n        ServiceRegistry.logger.debug(\n          `Global API client not initialized, service '${serviceKey}' will not have API`\n        );\n      }\n    }\n\n    return {\n      dedicated: isDedicated,\n      options,\n      instance: apiInstance,\n    };\n  }\n\n  /** Build DB config and instance for service with runtime validation */\n  // eslint-disable-next-line complexity\n  private static async buildDbConfig(\n    config: CoreServiceInitConfig,\n    entry: CoreServiceEntry\n  ): Promise<\n    | {\n        dedicated: boolean;\n        config?: Partial<CoreDbServiceConfig>;\n        instance?: CoreDbServiceInstance;\n      }\n    | undefined\n  > {\n    const dedicatedDb = config.dedicatedDb;\n    const isDedicated = dedicatedDb === true || typeof dedicatedDb === 'object';\n    const serviceKey = entry.service.serviceKey;\n\n    // Runtime validation: DB should only be injected for backend services (including universal runtimes in backend context)\n    const isBackendRuntime =\n      BACKEND_RUNTIMES.includes(ServiceRegistry._runtime) ||\n      UNIVERSAL_RUNTIMES.includes(ServiceRegistry._runtime);\n\n    if ((isDedicated || ServiceRegistry._dbConfig) && !isBackendRuntime) {\n      ServiceRegistry.logger.warn(\n        `Service '${serviceKey}' is requesting database injection in '${ServiceRegistry._runtime}' runtime. ` +\n          `Database is only available in backend runtimes (${BACKEND_RUNTIMES.join(', ')}) or universal runtimes (${UNIVERSAL_RUNTIMES.join(', ')}). ` +\n          `This service will not have database access.`\n      );\n      return undefined; // Skip DB injection for non-backend runtimes\n    }\n\n    const dbConfig: Partial<CoreDbServiceConfig> | undefined = isDedicated\n      ? typeof dedicatedDb === 'object'\n        ? { ...ServiceRegistry._dbConfig, ...dedicatedDb }\n        : (ServiceRegistry._dbConfig ?? undefined)\n      : (ServiceRegistry._dbConfig ?? undefined);\n\n    if (!dbConfig) {\n      return undefined;\n    }\n\n    const DbService = getCoreDependency('DbService');\n    if (!DbService) {\n      ServiceRegistry.logger.debug(\n        `DbService not registered, service '${serviceKey}' will not have DB`\n      );\n      return undefined;\n    }\n\n    // Get or create DB instance\n    let dbInstance: CoreDbServiceInstance | undefined;\n    if (isDedicated && dbConfig) {\n      // Create dedicated database instance for this service\n      try {\n        dbInstance = await DbService.createInstance?.(dbConfig as CoreDbServiceConfig);\n        ServiceRegistry.logger.debug(\n          `Created dedicated database instance for service '${serviceKey}'`\n        );\n      } catch (error) {\n        ServiceRegistry.logger.warn(\n          `Failed to create dedicated database instance for service '${serviceKey}'`,\n          {\n            error: error instanceof Error ? error.message : String(error),\n          }\n        );\n      }\n    } else {\n      // Use global shared database\n      try {\n        dbInstance = DbService.getInstance();\n      } catch {\n        ServiceRegistry.logger.debug(\n          `Global DB not initialized, service '${serviceKey}' will not have DB`\n        );\n      }\n    }\n\n    return {\n      dedicated: isDedicated,\n      config: dbConfig,\n      instance: dbInstance,\n    };\n  }\n\n  /** Build cache config and instance for service with runtime validation */\n  // eslint-disable-next-line complexity\n  private static async buildCacheConfig(\n    config: CoreServiceInitConfig,\n    entry: CoreServiceEntry\n  ): Promise<\n    | { dedicated: boolean; config?: CoreCacheConfig; instance?: CoreCacheManagerInstance }\n    | undefined\n  > {\n    const dedicatedCache = config.dedicatedCache;\n    const isDedicated = dedicatedCache === true || typeof dedicatedCache === 'object';\n    const serviceKey = entry.service.serviceKey;\n\n    const cacheConfig: CoreCacheConfig | undefined = isDedicated\n      ? typeof dedicatedCache === 'object'\n        ? ({ ...ServiceRegistry._cacheConfig, ...dedicatedCache } as CoreCacheConfig)\n        : (ServiceRegistry._cacheConfig ?? undefined)\n      : (ServiceRegistry._cacheConfig ?? undefined);\n\n    if (!cacheConfig) {\n      return undefined;\n    }\n\n    // Runtime validation: Cache on frontend is not supported (CacheManager uses ioredis which requires Node.js)\n    const isFrontendRuntime = FRONTEND_RUNTIMES.includes(ServiceRegistry._runtime);\n\n    if (isFrontendRuntime) {\n      ServiceRegistry.logger.debug(\n        `Service '${serviceKey}' skipping cache (frontend runtime - use Zustand store + react-query instead)`\n      );\n      return undefined;\n    }\n\n    const CacheService = getCoreDependency('CacheService');\n    if (!CacheService) {\n      ServiceRegistry.logger.debug(\n        `CacheService not registered, service '${serviceKey}' will not have cache`\n      );\n      return undefined;\n    }\n\n    // Backend-only: Get cache manager instance from CacheService\n    let cacheInstance: CoreCacheManagerInstance | undefined;\n    try {\n      cacheInstance = CacheService.getInstance().getCacheManager();\n      if (isDedicated) {\n        ServiceRegistry.logger.debug(\n          `Using shared cache for service '${serviceKey}' (dedicated cache not implemented via DI)`,\n          { strategy: cacheConfig.strategy }\n        );\n      }\n    } catch {\n      ServiceRegistry.logger.debug(\n        `Global cache not initialized, service '${serviceKey}' will not have cache`\n      );\n    }\n\n    return {\n      dedicated: isDedicated,\n      config: cacheConfig,\n      instance: cacheInstance,\n    };\n  }\n\n  /** Build observability config and instance for service */\n  // eslint-disable-next-line complexity\n  private static buildObservabilityConfig(\n    config: CoreServiceInitConfig,\n    // eslint-disable-next-line no-unused-vars\n    _entry: CoreServiceEntry\n  ):\n    | { dedicated: boolean; config?: CoreObservabilityConfig; instance?: ObservabilityAdapter }\n    | undefined {\n    const dedicatedObservability = config.dedicatedObservability;\n    const isDedicated =\n      dedicatedObservability === true || typeof dedicatedObservability === 'object';\n\n    const observabilityConfig: CoreObservabilityConfig | undefined = isDedicated\n      ? typeof dedicatedObservability === 'object'\n        ? ({\n            ...ServiceRegistry._observabilityConfig,\n            ...dedicatedObservability,\n          } as CoreObservabilityConfig)\n        : (ServiceRegistry._observabilityConfig ?? undefined)\n      : (ServiceRegistry._observabilityConfig ?? undefined);\n\n    if (!observabilityConfig) {\n      return undefined;\n    }\n\n    // Instance will be set async if dedicated\n    return {\n      dedicated: isDedicated,\n      config: observabilityConfig,\n      instance: isDedicated ? undefined : (ServiceRegistry._observabilityInstance ?? undefined),\n    };\n  }\n\n  /** Build storage config and instance for service with runtime validation (backend-only) */\n  // eslint-disable-next-line complexity\n  private static async buildStorageConfig(\n    config: CoreServiceInitConfig,\n    entry: CoreServiceEntry\n  ): Promise<\n    | { dedicated: boolean; config?: CoreStorageConfig; instance?: CoreStorageServiceInstance }\n    | undefined\n  > {\n    const dedicatedStorage = config.dedicatedStorage;\n    const isDedicated = dedicatedStorage === true || typeof dedicatedStorage === 'object';\n    const serviceKey = entry.service.serviceKey;\n\n    // Runtime validation: Storage is backend-only (including universal runtimes in backend context)\n    const isBackendRuntime =\n      BACKEND_RUNTIMES.includes(ServiceRegistry._runtime) ||\n      UNIVERSAL_RUNTIMES.includes(ServiceRegistry._runtime);\n\n    if ((isDedicated || ServiceRegistry._storageConfig) && !isBackendRuntime) {\n      ServiceRegistry.logger.warn(\n        `Service '${serviceKey}' is requesting storage injection in '${ServiceRegistry._runtime}' runtime. ` +\n          `Storage is only available in backend runtimes (${BACKEND_RUNTIMES.join(', ')}) or universal runtimes (${UNIVERSAL_RUNTIMES.join(', ')}). ` +\n          `This service will not have storage access.`\n      );\n      return undefined;\n    }\n\n    const storageConfig: CoreStorageConfig | undefined = isDedicated\n      ? typeof dedicatedStorage === 'object'\n        ? { ...ServiceRegistry._storageConfig, ...dedicatedStorage }\n        : (ServiceRegistry._storageConfig ?? undefined)\n      : (ServiceRegistry._storageConfig ?? undefined);\n\n    if (!storageConfig) {\n      return undefined;\n    }\n\n    const StorageService = getCoreDependency('StorageService');\n    if (!StorageService) {\n      ServiceRegistry.logger.debug(\n        `StorageService not registered, service '${serviceKey}' will not have storage`\n      );\n      return undefined;\n    }\n\n    // Get or create storage instance\n    let storageInstance: CoreStorageServiceInstance | undefined;\n    if (isDedicated && storageConfig) {\n      try {\n        storageInstance = await StorageService.createInstance?.(storageConfig);\n        ServiceRegistry.logger.debug(\n          `Created dedicated storage instance for service '${serviceKey}'`\n        );\n      } catch (error) {\n        ServiceRegistry.logger.warn(\n          `Failed to create dedicated storage instance for service '${serviceKey}'`,\n          { error: error instanceof Error ? error.message : String(error) }\n        );\n      }\n    } else {\n      try {\n        storageInstance = StorageService.getInstance();\n      } catch {\n        ServiceRegistry.logger.debug(\n          `Global storage not initialized, service '${serviceKey}' will not have storage`\n        );\n      }\n    }\n\n    return {\n      dedicated: isDedicated,\n      config: storageConfig,\n      instance: storageInstance,\n    };\n  }\n\n  /** Build notifications config and instance for service with runtime validation (backend-only) */\n  // eslint-disable-next-line complexity\n  private static async buildNotificationsConfig(\n    config: CoreServiceInitConfig,\n    entry: CoreServiceEntry\n  ): Promise<\n    | {\n        dedicated: boolean;\n        config?: CoreNotificationConfig;\n        instance?: CoreNotificationServiceInstance;\n      }\n    | undefined\n  > {\n    const dedicatedNotifications = config.dedicatedNotifications;\n    const isDedicated =\n      dedicatedNotifications === true || typeof dedicatedNotifications === 'object';\n    const serviceKey = entry.service.serviceKey;\n\n    // Runtime validation: Notifications is backend-only (including universal runtimes in backend context)\n    const isBackendRuntime =\n      BACKEND_RUNTIMES.includes(ServiceRegistry._runtime) ||\n      UNIVERSAL_RUNTIMES.includes(ServiceRegistry._runtime);\n\n    if ((isDedicated || ServiceRegistry._notificationsConfig) && !isBackendRuntime) {\n      ServiceRegistry.logger.warn(\n        `Service '${serviceKey}' is requesting notifications injection in '${ServiceRegistry._runtime}' runtime. ` +\n          `Notifications is only available in backend runtimes (${BACKEND_RUNTIMES.join(', ')}) or universal runtimes (${UNIVERSAL_RUNTIMES.join(', ')}). ` +\n          `This service will not have notifications access.`\n      );\n      return undefined;\n    }\n\n    const notificationsConfig: CoreNotificationConfig | undefined = isDedicated\n      ? typeof dedicatedNotifications === 'object'\n        ? { ...ServiceRegistry._notificationsConfig, ...dedicatedNotifications }\n        : (ServiceRegistry._notificationsConfig ?? undefined)\n      : (ServiceRegistry._notificationsConfig ?? undefined);\n\n    if (!notificationsConfig) {\n      return undefined;\n    }\n\n    const NotificationService = getCoreDependency('NotificationService');\n    if (!NotificationService) {\n      ServiceRegistry.logger.debug(\n        `NotificationService not registered, service '${serviceKey}' will not have notifications`\n      );\n      return undefined;\n    }\n\n    // Get or create notifications instance\n    let notificationsInstance: CoreNotificationServiceInstance | undefined;\n    if (isDedicated && notificationsConfig) {\n      try {\n        notificationsInstance = await NotificationService.createInstance?.(notificationsConfig);\n        ServiceRegistry.logger.debug(\n          `Created dedicated notifications instance for service '${serviceKey}'`\n        );\n      } catch (error) {\n        ServiceRegistry.logger.warn(\n          `Failed to create dedicated notifications instance for service '${serviceKey}'`,\n          { error: error instanceof Error ? error.message : String(error) }\n        );\n      }\n    } else {\n      try {\n        notificationsInstance = NotificationService.getInstance();\n      } catch {\n        ServiceRegistry.logger.debug(\n          `Global notifications not initialized, service '${serviceKey}' will not have notifications`\n        );\n      }\n    }\n\n    return {\n      dedicated: isDedicated,\n      config: notificationsConfig,\n      instance: notificationsInstance,\n    };\n  }\n\n  /**\n   * Create a dedicated ObservabilityService instance for a service.\n   * Uses the same adapter pattern as global observability but with service-specific config.\n   */\n  private static async createDedicatedObservability(\n    serviceKey: string,\n    config: CoreObservabilityConfig\n  ): Promise<ObservabilityAdapter | undefined> {\n    // Skip if explicitly disabled\n    if (config.enabled === false) {\n      return undefined;\n    }\n\n    try {\n      // createObservabilityService auto-adds LoggerAdapter as failover\n      const dedicatedService = await createObservabilityService({\n        mode: config.mode ?? 'parallel',\n        serviceName: `${config.serviceName ?? 'service'}-${serviceKey}`,\n        environment: config.environment,\n        adapters: config.adapters,\n      });\n\n      ServiceRegistry.logger.debug(\n        `Created dedicated ObservabilityService for service '${serviceKey}'`\n      );\n\n      return dedicatedService;\n    } catch (err) {\n      ServiceRegistry.logger.warn(\n        `Failed to create dedicated observability for '${serviceKey}', falling back to global`,\n        { error: err instanceof Error ? err.message : String(err) }\n      );\n      return ServiceRegistry._observabilityInstance ?? undefined;\n    }\n  }\n\n  /**\n   * Set the global observability adapter instance.\n   * Called by Core.initialize() after creating the adapter.\n   */\n  static setObservabilityInstance(instance: ObservabilityAdapter): void {\n    ServiceRegistry._observabilityInstance = instance;\n    ServiceRegistry.logger.debug('Global observability instance set');\n  }\n\n  /**\n   * Get the global observability adapter instance.\n   */\n  static getObservabilityInstance(): ObservabilityAdapter | null {\n    return ServiceRegistry._observabilityInstance;\n  }\n\n  /**\n   * Initialize a single service from an entry.\n   * Uses the service class's static create() method.\n   * Merges per-service config with global config.\n   */\n  private static async initializeService(\n    entry: CoreServiceEntry,\n    storeSingleton = true\n  ): Promise<CoreDomainServiceInstance> {\n    const { service: ServiceClass, config } = entry;\n    const serviceKey = ServiceClass.serviceKey;\n    const isSingleton = config.singleton !== false;\n\n    // For singletons, check for concurrent initialization\n    if (storeSingleton && isSingleton) {\n      const existingPromise = ServiceRegistry._initPromises.get(serviceKey);\n      if (existingPromise) return existingPromise;\n    }\n\n    const initPromise = ServiceRegistry.doInitializeService(entry, { isSingleton, storeSingleton });\n\n    if (storeSingleton && isSingleton) {\n      ServiceRegistry._initPromises.set(serviceKey, initPromise);\n    }\n\n    return initPromise;\n  }\n\n  /** Build stores for service injection */\n  // eslint-disable-next-line complexity\n  private static buildStoresForService(\n    config: CoreServiceInitConfig,\n    entry: CoreServiceEntry\n  ): Partial<RootStoreSlice> | undefined {\n    const allKeys = new Set<keyof RootStoreSlice>();\n\n    // Add primary store - check config first, then service's static primaryStoreKey\n    if (config.store) {\n      allKeys.add(config.store);\n    } else if (\n      'primaryStoreKey' in entry.service &&\n      typeof entry.service.primaryStoreKey === 'string'\n    ) {\n      // Auto-resolve from service class's static primaryStoreKey property\n      allKeys.add(entry.service.primaryStoreKey as keyof RootStoreSlice);\n      ServiceRegistry.logger.debug(\n        `Auto-resolved store key '${entry.service.primaryStoreKey}' from service class`\n      );\n    }\n\n    // Add read stores\n    if (config.readStores) {\n      config.readStores.forEach(key => allKeys.add(key));\n    }\n\n    if (allKeys.size === 0) {\n      return undefined;\n    }\n\n    if (!ServiceRegistry._storeRegistry) {\n      ServiceRegistry.logger.warn('Store registry not initialized, cannot inject stores');\n      return undefined;\n    }\n\n    const stores: Partial<RootStoreSlice> = {};\n    for (const key of allKeys) {\n      const store = ServiceRegistry._storeRegistry.getStore(key);\n      if (store) {\n        (stores as Record<keyof RootStoreSlice, unknown>)[key] = store;\n        ServiceRegistry.logger.debug(`Injected store '${key}' into service`);\n      } else {\n        ServiceRegistry.logger.warn(`Store '${key}' requested but not found in registry`);\n      }\n    }\n\n    return Object.keys(stores).length > 0 ? stores : undefined;\n  }\n\n  /** Perform the actual service initialization */\n  // eslint-disable-next-line complexity\n  private static async doInitializeService(\n    entry: CoreServiceEntry,\n    options: { isSingleton: boolean; storeSingleton: boolean }\n  ): Promise<CoreDomainServiceInstance> {\n    const { service: serviceClass, config } = entry;\n    const serviceKey = serviceClass.serviceKey;\n    const { isSingleton, storeSingleton } = options;\n\n    try {\n      ServiceRegistry.logger.debug(`Initializing service: ${serviceKey}`);\n\n      // Build dependencies (async operations) with runtime validation\n      const apiClient = await ServiceRegistry.buildApiClientOptions(config, entry);\n      const db = await ServiceRegistry.buildDbConfig(config, entry);\n      const cache = await ServiceRegistry.buildCacheConfig(config, entry);\n      const observability = ServiceRegistry.buildObservabilityConfig(config, entry);\n      const storage = await ServiceRegistry.buildStorageConfig(config, entry);\n      const notifications = await ServiceRegistry.buildNotificationsConfig(config, entry);\n      const stores = ServiceRegistry.buildStoresForService(config, entry);\n\n      // Create dedicated observability instance if requested\n      let observabilityInstance = observability?.instance;\n      if (observability?.dedicated && observability.config) {\n        observabilityInstance = await ServiceRegistry.createDedicatedObservability(\n          serviceKey,\n          observability.config\n        );\n      }\n\n      const createOptions: CoreServiceCreateOptions = {\n        apiClient,\n        db,\n        cache,\n        observability: observability\n          ? { ...observability, instance: observabilityInstance }\n          : undefined,\n        storage,\n        notifications,\n        injected: {\n          ...(stores ? { stores } : {}),\n          cache: cache?.instance,\n          db: db?.instance,\n          api: apiClient?.instance,\n          observability: observabilityInstance,\n          storage: storage?.instance,\n          notifications: notifications?.instance,\n        },\n        isSingleton,\n      };\n\n      ServiceRegistry.logger.debug(`Service ${serviceKey} config:`, {\n        apiClientDedicated: createOptions.apiClient?.dedicated,\n        dbDedicated: createOptions.db?.dedicated,\n        observabilityDedicated: createOptions.observability?.dedicated,\n        storageDedicated: createOptions.storage?.dedicated,\n        notificationsDedicated: createOptions.notifications?.dedicated,\n        injected: {\n          hasCache: !!createOptions.injected?.cache,\n          hasDb: !!createOptions.injected?.db,\n          hasApi: !!createOptions.injected?.api,\n          hasObservability: !!createOptions.injected?.observability,\n          hasStorage: !!createOptions.injected?.storage,\n          hasNotifications: !!createOptions.injected?.notifications,\n          hasStores: !!createOptions.injected?.stores,\n        },\n      });\n\n      const instance = await serviceClass.create(config, createOptions);\n\n      if (storeSingleton && isSingleton) {\n        ServiceRegistry._services.set(serviceKey, instance);\n        ServiceRegistry.logger.info(`Service initialized: ${serviceKey} (singleton)`);\n      } else {\n        ServiceRegistry.logger.info(`Service created: ${serviceKey} (instance)`);\n      }\n\n      return instance;\n    } catch (error) {\n      ServiceRegistry.logger.error(`Failed to initialize service: ${serviceKey}`, {\n        error: error instanceof Error ? error.message : String(error),\n      });\n      throw error;\n    } finally {\n      if (storeSingleton && isSingleton) {\n        ServiceRegistry._initPromises.delete(serviceKey);\n      }\n    }\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Disposal\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Dispose a specific service by key.\n   *\n   * @param key - Service key to dispose\n   */\n  static dispose(key: string): void {\n    const service = ServiceRegistry._services.get(key);\n    if (service) {\n      service.dispose();\n      ServiceRegistry._services.delete(key);\n      ServiceRegistry.logger.info(`Service disposed: ${key}`);\n    }\n    ServiceRegistry._pending.delete(key);\n  }\n\n  /**\n   * Dispose all services and clear the registry.\n   */\n  static disposeAll(): void {\n    // Dispose all initialized services\n    for (const [key, service] of ServiceRegistry._services) {\n      try {\n        service.dispose();\n        ServiceRegistry.logger.debug(`Disposed service: ${key}`);\n      } catch (error) {\n        ServiceRegistry.logger.error(`Error disposing service: ${key}`, {\n          error: error instanceof Error ? error.message : String(error),\n        });\n      }\n    }\n\n    // Clear all state\n    ServiceRegistry._services.clear();\n    ServiceRegistry._pending.clear();\n    ServiceRegistry._metadata.clear();\n    ServiceRegistry._initPromises.clear();\n    ServiceRegistry._apiClientOptions = null;\n    ServiceRegistry._dbConfig = null;\n    ServiceRegistry._cacheConfig = null;\n    ServiceRegistry._observabilityConfig = null;\n    ServiceRegistry._observabilityInstance = null;\n    ServiceRegistry._storageConfig = null;\n    ServiceRegistry._notificationsConfig = null;\n\n    ServiceRegistry.logger.info('Service registry disposed');\n  }\n\n  /**\n   * Check if a service is configured as singleton.\n   *\n   * @param key - Service key\n   * @returns true if singleton (default), false if non-singleton\n   */\n  static isSingleton(key: string): boolean {\n    const metadata = ServiceRegistry._metadata.get(key);\n    return metadata?.isSingleton ?? true;\n  }\n\n  /**\n   * Get all non-singleton service keys.\n   * These services must be created via `create()` method.\n   */\n  static getNonSingletonKeys(): string[] {\n    return [...ServiceRegistry._metadata.entries()]\n      .filter(([, meta]) => !meta.isSingleton)\n      .map(([key]) => key);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Dynamic Registration\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Register a new service dynamically after initialization.\n   *\n   * @param entry - Service entry to register\n   * @param initNow - Whether to initialize immediately (default: true)\n   *\n   * @example\n   * ```typescript\n   * // Register and initialize immediately\n   * await ServiceRegistry.register({\n   *   service: NewDomainService,\n   *   config: { enabled: true },\n   * });\n   *\n   * // Register for lazy initialization\n   * ServiceRegistry.register({\n   *   service: LazyService,\n   *   config: { enabled: true, initWhen: 'lazy' },\n   * }, false);\n   * ```\n   */\n  static async register(entry: CoreServiceEntry, initNow = true): Promise<void> {\n    const serviceKey = entry.service.serviceKey;\n\n    // Check if already registered\n    if (ServiceRegistry._services.has(serviceKey) || ServiceRegistry._pending.has(serviceKey)) {\n      ServiceRegistry.logger.warn(`Service '${serviceKey}' is already registered`);\n      return;\n    }\n\n    const initWhen = entry.config.initWhen ?? 'immediate';\n\n    if (initNow && initWhen === 'immediate') {\n      await ServiceRegistry.initializeService(entry);\n    } else {\n      ServiceRegistry._pending.set(serviceKey, { entry, initWhen });\n      ServiceRegistry.logger.debug(\n        `Service ${serviceKey} registered for ${initWhen} initialization`\n      );\n    }\n  }\n\n  /**\n   * Unregister a service (dispose if initialized).\n   *\n   * @param key - Service key to unregister\n   */\n  static unregister(key: string): void {\n    ServiceRegistry.dispose(key);\n  }\n}\n","/**\n * Stream Connection Manager\n *\n * Manages active streaming connections and channel subscriptions.\n * Provides connection lifecycle and subscription management.\n */\n\nimport type {\n  StreamChannel,\n  StreamConnection,\n  StreamConnectionInfo,\n  StreamManagerStats,\n  StreamTransportType,\n} from '@plyaz/types/core';\nimport { TIME_CONSTANTS } from '@plyaz/config';\n\n/**\n * Default configuration\n */\nconst DEFAULT_STALE_MINUTES = 5;\nconst DEFAULT_MAX_STALE_AGE = DEFAULT_STALE_MINUTES * TIME_CONSTANTS.MINUTE; // 5 minutes\n\n/**\n * StreamConnectionManager - Manages streaming connections\n *\n * Features:\n * - Connection lifecycle management\n * - Channel-based subscriptions\n * - Activity tracking for stale connection cleanup\n * - Statistics and debugging info\n *\n * @example\n * ```ts\n * const manager = new StreamConnectionManager();\n *\n * // Add connection\n * manager.addConnection({\n *   id: 'conn-1',\n *   transport: 'sse',\n *   channels: new Set(),\n *   createdAt: new Date(),\n *   lastActivity: new Date(),\n * });\n *\n * // Subscribe to channel\n * manager.subscribe('conn-1', 'upload:abc123');\n *\n * // Get connections for broadcasting\n * const connections = manager.getConnectionsByChannel('upload:abc123');\n * ```\n */\nexport class StreamConnectionManager {\n  /** Active connections by ID */\n  private connections = new Map<string, StreamConnection>();\n\n  /** Channel → connection IDs mapping for efficient broadcasting */\n  private channelSubscriptions = new Map<string, Set<string>>();\n\n  /**\n   * Add a new connection\n   *\n   * @param connection - Connection to add\n   */\n  addConnection(connection: StreamConnection): void {\n    this.connections.set(connection.id, connection);\n  }\n\n  /**\n   * Remove a connection and its subscriptions\n   *\n   * @param connectionId - Connection to remove\n   */\n  removeConnection(connectionId: string): void {\n    const connection = this.connections.get(connectionId);\n    if (!connection) return;\n\n    // Remove from all channel subscriptions\n    for (const channel of connection.channels) {\n      this.channelSubscriptions.get(channel)?.delete(connectionId);\n\n      // Clean up empty channel sets\n      if (this.channelSubscriptions.get(channel)?.size === 0) {\n        this.channelSubscriptions.delete(channel);\n      }\n    }\n\n    // Remove connection\n    this.connections.delete(connectionId);\n  }\n\n  /**\n   * Get a connection by ID\n   *\n   * @param connectionId - Connection ID\n   */\n  getConnection(connectionId: string): StreamConnection | undefined {\n    return this.connections.get(connectionId);\n  }\n\n  /**\n   * Check if connection exists\n   *\n   * @param connectionId - Connection ID\n   */\n  hasConnection(connectionId: string): boolean {\n    return this.connections.has(connectionId);\n  }\n\n  /**\n   * Subscribe connection to a channel\n   *\n   * @param connectionId - Connection to subscribe\n   * @param channel - Channel to subscribe to\n   */\n  subscribe(connectionId: string, channel: StreamChannel): void {\n    const connection = this.connections.get(connectionId);\n    if (!connection) return;\n\n    // Add to connection's channels\n    connection.channels.add(channel);\n\n    // Add to channel subscriptions index\n    if (!this.channelSubscriptions.has(channel)) {\n      this.channelSubscriptions.set(channel, new Set());\n    }\n    this.channelSubscriptions.get(channel)!.add(connectionId);\n\n    // Update activity\n    connection.lastActivity = new Date();\n  }\n\n  /**\n   * Unsubscribe connection from a channel\n   *\n   * @param connectionId - Connection to unsubscribe\n   * @param channel - Channel to unsubscribe from\n   */\n  unsubscribe(connectionId: string, channel: StreamChannel): void {\n    const connection = this.connections.get(connectionId);\n    if (!connection) return;\n\n    // Remove from connection's channels\n    connection.channels.delete(channel);\n\n    // Remove from channel subscriptions index\n    this.channelSubscriptions.get(channel)?.delete(connectionId);\n\n    // Clean up empty channel sets\n    if (this.channelSubscriptions.get(channel)?.size === 0) {\n      this.channelSubscriptions.delete(channel);\n    }\n\n    // Update activity\n    connection.lastActivity = new Date();\n  }\n\n  /**\n   * Get all connections subscribed to a channel\n   *\n   * @param channel - Channel to query\n   */\n  getConnectionsByChannel(channel: StreamChannel): StreamConnection[] {\n    const connectionIds = this.channelSubscriptions.get(channel);\n    if (!connectionIds) return [];\n\n    return Array.from(connectionIds)\n      .map(id => this.connections.get(id))\n      .filter((conn): conn is StreamConnection => conn !== undefined);\n  }\n\n  /**\n   * Get all channels a connection is subscribed to\n   *\n   * @param connectionId - Connection ID\n   */\n  getChannelsByConnection(connectionId: string): StreamChannel[] {\n    const connection = this.connections.get(connectionId);\n    if (!connection) return [];\n\n    return Array.from(connection.channels) as StreamChannel[];\n  }\n\n  /**\n   * Update connection's last activity timestamp\n   *\n   * @param connectionId - Connection ID\n   */\n  updateActivity(connectionId: string): void {\n    const connection = this.connections.get(connectionId);\n    if (connection) {\n      connection.lastActivity = new Date();\n    }\n  }\n\n  /**\n   * Clean up stale connections\n   *\n   * @param maxAge - Maximum age in milliseconds (default: 5 minutes)\n   * @returns Removed connection IDs\n   */\n  cleanupStale(maxAge: number = DEFAULT_MAX_STALE_AGE): string[] {\n    const now = Date.now();\n    const removed: string[] = [];\n\n    for (const [id, connection] of this.connections) {\n      const age = now - connection.lastActivity.getTime();\n      if (age > maxAge) {\n        this.removeConnection(id);\n        removed.push(id);\n      }\n    }\n\n    return removed;\n  }\n\n  /**\n   * Get all connection IDs\n   */\n  getConnectionIds(): string[] {\n    return Array.from(this.connections.keys());\n  }\n\n  /**\n   * Get all connections\n   */\n  getAllConnections(): StreamConnection[] {\n    return Array.from(this.connections.values());\n  }\n\n  /**\n   * Get all active channels\n   */\n  getActiveChannels(): StreamChannel[] {\n    return Array.from(this.channelSubscriptions.keys()) as StreamChannel[];\n  }\n\n  /**\n   * Get connection info (serializable)\n   *\n   * @param connectionId - Connection ID\n   */\n  getConnectionInfo(connectionId: string): StreamConnectionInfo | undefined {\n    const connection = this.connections.get(connectionId);\n    if (!connection) return undefined;\n\n    return {\n      id: connection.id,\n      userId: connection.userId,\n      transport: connection.transport,\n      channels: Array.from(connection.channels),\n      createdAt: connection.createdAt.toISOString(),\n      lastActivity: connection.lastActivity.toISOString(),\n      metadata: connection.metadata,\n    };\n  }\n\n  /**\n   * Get manager statistics\n   */\n  getStats(): StreamManagerStats {\n    const connectionsByTransport: Record<StreamTransportType, number> = {\n      sse: 0,\n      websocket: 0,\n    };\n\n    for (const connection of this.connections.values()) {\n      connectionsByTransport[connection.transport]++;\n    }\n\n    return {\n      totalConnections: this.connections.size,\n      connectionsByTransport,\n      totalSubscriptions: Array.from(this.channelSubscriptions.values()).reduce(\n        (sum, set) => sum + set.size,\n        0\n      ),\n      activeChannels: this.channelSubscriptions.size,\n    };\n  }\n\n  /**\n   * Clear all connections (for shutdown)\n   */\n  clear(): void {\n    this.connections.clear();\n    this.channelSubscriptions.clear();\n  }\n}\n","/**\n * Stream Broadcaster\n *\n * Core infrastructure for streaming to clients.\n * Orchestrates auth, transport, and connection management.\n *\n * Note: Event subscriptions are handled by ChannelControllers,\n * not directly by StreamBroadcaster.\n */\nimport type { BaseAuthAdapter } from './auth/BaseAuthAdapter';\nimport type { BaseTransportAdapter } from './transports/BaseTransportAdapter';\nimport { StreamConnectionManager } from './StreamConnectionManager';\nimport type {\n  StreamAuthResult,\n  StreamBroadcasterConfig,\n  StreamChannel,\n  StreamConnection,\n  StreamManagerStats,\n  StreamMessage,\n  StreamTransportType,\n} from '@plyaz/types/core';\nimport { STREAM_ERROR_CODES } from '@plyaz/types';\nimport { TIME_CONSTANTS } from '@plyaz/config';\nimport { StreamPackageError } from '@plyaz/errors';\n\n/**\n * Default configuration\n */\nconst DEFAULT_CLEANUP_INTERVAL = TIME_CONSTANTS.MINUTE; // 1 minute\nconst DEFAULT_STALE_MINUTES = 5;\nconst DEFAULT_MAX_STALE_AGE = DEFAULT_STALE_MINUTES * TIME_CONSTANTS.MINUTE; // 5 minutes\n\n/**\n * StreamBroadcaster - Core streaming infrastructure\n *\n * Features:\n * - Manages connections via StreamConnectionManager\n * - Routes messages through transport adapters (SSE, WebSocket)\n * - Handles auth via adapter\n * - Automatic stale connection cleanup\n * - Channel-based message broadcasting\n *\n * Note: Event subscriptions are handled by endpoint controllers\n * registered via StreamRegistry (e.g., FilesChannelController).\n *\n * @example\n * ```ts\n * const broadcaster = new StreamBroadcaster(\n *   new AnonymousAuthAdapter(),\n *   [new SSETransportAdapter()]\n * );\n *\n * broadcaster.initialize();\n *\n * // Register with StreamRegistry\n * await StreamRegistry.initialize({\n *   broadcaster,\n *   endpoints: [\n *     { endpoint: FilesStreamEndpoint, config: { enabled: true } },\n *   ],\n * });\n *\n * // In API route\n * const authResult = await broadcaster.authenticate(request);\n * const response = await broadcaster.createConnection('conn-1', 'sse', request);\n * broadcaster.subscribe('conn-1', 'upload:abc123', authResult);\n * return response;\n * ```\n */\nexport class StreamBroadcaster {\n  private readonly connectionManager: StreamConnectionManager;\n  private readonly authAdapter: BaseAuthAdapter;\n  private readonly transports: Map<StreamTransportType, BaseTransportAdapter>;\n  private readonly maxStaleAge: number;\n\n  private unsubscribers: (() => void)[] = [];\n  private cleanupTimer?: ReturnType<typeof setInterval>;\n  private initialized = false;\n\n  constructor(\n    authAdapter: BaseAuthAdapter,\n    transports: BaseTransportAdapter[],\n    config?: StreamBroadcasterConfig\n  ) {\n    this.connectionManager = new StreamConnectionManager();\n    this.authAdapter = authAdapter;\n    this.transports = new Map(transports.map(t => [t.type, t]));\n    this.maxStaleAge = config?.maxStaleAge ?? DEFAULT_MAX_STALE_AGE;\n  }\n\n  /**\n   * Initialize cleanup timer\n   * Call once on startup\n   *\n   * Note: Event subscriptions are now handled by endpoint controllers\n   * registered via StreamRegistry (e.g., FilesChannelController, SystemChannelController).\n   */\n  initialize(): void {\n    if (this.initialized) return;\n\n    // Start cleanup timer for stale connections\n    this.cleanupTimer = setInterval(() => {\n      this.cleanupStaleConnections();\n    }, DEFAULT_CLEANUP_INTERVAL);\n\n    this.initialized = true;\n  }\n\n  /**\n   * Authenticate a connection request\n   *\n   * @param request - HTTP request\n   * @returns Authentication result\n   */\n  async authenticate(request: Request): Promise<StreamAuthResult> {\n    return this.authAdapter.authenticate(request);\n  }\n\n  /**\n   * Check if user can subscribe to a channel\n   *\n   * @param authResult - Authentication result\n   * @param channel - Channel to subscribe\n   */\n  canSubscribe(authResult: StreamAuthResult, channel: StreamChannel): boolean {\n    return this.authAdapter.canSubscribe(authResult.userId, channel, authResult.scopes);\n  }\n\n  /**\n   * Create a new streaming connection\n   *\n   * @param connectionId - Unique connection ID\n   * @param transportType - Transport to use (sse or websocket)\n   * @param request - HTTP request\n   * @param authResult - Optional auth result (if already authenticated)\n   * @returns Response (for SSE) or void (for WebSocket)\n   */\n  async createConnection(\n    connectionId: string,\n    transportType: StreamTransportType,\n    request: Request,\n    authResult?: StreamAuthResult\n  ): Promise<Response | void> {\n    const transport = this.transports.get(transportType);\n    if (!transport) {\n      throw new StreamPackageError(\n        `Transport not available: ${transportType}`,\n        STREAM_ERROR_CODES.TRANSPORT_NOT_SUPPORTED,\n        { context: { transport: transportType } }\n      );\n    }\n\n    // Create connection in transport\n    const response = await transport.createConnection(connectionId, request);\n\n    // Track connection\n    const connection: StreamConnection = {\n      id: connectionId,\n      userId: authResult?.userId,\n      transport: transportType,\n      channels: new Set(),\n      createdAt: new Date(),\n      lastActivity: new Date(),\n      metadata: authResult?.metadata,\n    };\n    this.connectionManager.addConnection(connection);\n\n    return response;\n  }\n\n  /**\n   * Subscribe connection to a channel\n   *\n   * @param connectionId - Connection ID\n   * @param channel - Channel to subscribe\n   * @param authResult - Auth result for permission check\n   * @returns Whether subscription succeeded\n   */\n  subscribe(connectionId: string, channel: StreamChannel, authResult?: StreamAuthResult): boolean {\n    // Check permission if auth result provided\n    if (authResult && !this.canSubscribe(authResult, channel)) {\n      return false;\n    }\n\n    this.connectionManager.subscribe(connectionId, channel);\n    return true;\n  }\n\n  /**\n   * Unsubscribe connection from a channel\n   *\n   * @param connectionId - Connection ID\n   * @param channel - Channel to unsubscribe\n   */\n  unsubscribe(connectionId: string, channel: StreamChannel): void {\n    this.connectionManager.unsubscribe(connectionId, channel);\n  }\n\n  /**\n   * Close a connection\n   *\n   * @param connectionId - Connection to close\n   */\n  async closeConnection(connectionId: string): Promise<void> {\n    const connection = this.connectionManager.getConnection(connectionId);\n    if (!connection) return;\n\n    // Close in transport\n    const transport = this.transports.get(connection.transport);\n    if (transport) {\n      await transport.close(connectionId);\n    }\n\n    // Remove from manager\n    this.connectionManager.removeConnection(connectionId);\n  }\n\n  /**\n   * Broadcast message to all connections on a channel\n   *\n   * @param channel - Channel to broadcast to\n   * @param message - Message to send\n   */\n  broadcastToChannel(channel: StreamChannel, message: StreamMessage): void {\n    const connections = this.connectionManager.getConnectionsByChannel(channel);\n\n    for (const conn of connections) {\n      const transport = this.transports.get(conn.transport);\n      if (transport) {\n        transport.send(conn.id, { ...message, channel }).catch(() => {\n          // Connection likely dead, will be cleaned up\n        });\n      }\n    }\n  }\n\n  /**\n   * Send message to a specific connection\n   *\n   * @param connectionId - Connection ID\n   * @param message - Message to send\n   */\n  async sendToConnection(connectionId: string, message: StreamMessage): Promise<void> {\n    const connection = this.connectionManager.getConnection(connectionId);\n    if (!connection) return;\n\n    const transport = this.transports.get(connection.transport);\n    if (transport) {\n      await transport.send(connectionId, message);\n    }\n  }\n\n  /**\n   * Broadcast to all connections (system-wide)\n   *\n   * @param message - Message to send\n   */\n  broadcastToAll(message: StreamMessage): void {\n    for (const connection of this.connectionManager.getAllConnections()) {\n      const transport = this.transports.get(connection.transport);\n      if (transport) {\n        transport.send(connection.id, message).catch(() => {\n          // Connection likely dead\n        });\n      }\n    }\n  }\n\n  /**\n   * Get manager statistics\n   */\n  getStats(): StreamManagerStats {\n    return this.connectionManager.getStats();\n  }\n\n  /**\n   * Dispose broadcaster (for shutdown)\n   */\n  dispose(): void {\n    // Stop event subscriptions\n    this.unsubscribers.forEach(unsub => unsub());\n    this.unsubscribers = [];\n\n    // Stop cleanup timer\n    if (this.cleanupTimer) {\n      clearInterval(this.cleanupTimer);\n      this.cleanupTimer = undefined;\n    }\n\n    // Close all connections\n    for (const [, transport] of this.transports) {\n      if ('closeAll' in transport && typeof transport.closeAll === 'function') {\n        void (transport as { closeAll: () => Promise<void> }).closeAll();\n      }\n    }\n\n    // Clear connection manager\n    this.connectionManager.clear();\n\n    this.initialized = false;\n  }\n\n  /**\n   * Clean up stale connections\n   */\n  private cleanupStaleConnections(): void {\n    const removed = this.connectionManager.cleanupStale(this.maxStaleAge);\n\n    // Also close in transports\n    for (const connectionId of removed) {\n      for (const [, transport] of this.transports) {\n        if (transport.isAlive(connectionId)) {\n          transport.close(connectionId).catch(() => {\n            // Already closed\n          });\n        }\n      }\n    }\n  }\n}\n","/**\n * Base Auth Adapter\n *\n * Abstract base class for stream authentication adapters.\n * Follows the adapter pattern used in @plyaz/storage.\n */\n\nimport type { StreamAuthAdapterConfig, StreamAuthResult, StreamChannel } from '@plyaz/types/core';\n\n/**\n * BaseAuthAdapter - Abstract base class for all stream auth adapters\n *\n * Provides:\n * - Common configuration handling\n * - Interface for authentication and authorization\n *\n * Subclasses must implement:\n * - authenticate() - Validate connection request\n * - canSubscribe() - Check channel subscription permissions\n *\n * @example\n * ```ts\n * class MyAuthAdapter extends BaseAuthAdapter {\n *   async authenticate(request: Request): Promise<StreamAuthResult> {\n *     // Custom authentication logic\n *   }\n *\n *   canSubscribe(userId, channel, scopes): boolean {\n *     // Custom authorization logic\n *   }\n * }\n * ```\n */\nexport abstract class BaseAuthAdapter {\n  /** Adapter name for logging/debugging */\n  readonly name: string;\n\n  /** Whether this adapter is enabled */\n  readonly enabled: boolean;\n\n  constructor(config: StreamAuthAdapterConfig) {\n    this.name = config.name;\n    this.enabled = config.enabled ?? true;\n  }\n\n  /**\n   * Authenticate a connection request\n   *\n   * @param request - HTTP request or WebSocket upgrade request\n   * @returns Authentication result with user info if authenticated\n   */\n  abstract authenticate(request: Request): Promise<StreamAuthResult>;\n\n  /**\n   * Check if user can subscribe to a channel\n   *\n   * @param userId - User ID (undefined for anonymous connections)\n   * @param channel - Channel to subscribe to\n   * @param scopes - User's allowed scopes from authentication\n   * @returns Whether subscription is allowed\n   */\n  abstract canSubscribe(\n    userId: string | undefined,\n    channel: StreamChannel,\n    scopes?: string[]\n  ): boolean;\n\n  /**\n   * Get adapter info for debugging\n   */\n  getAdapterInfo(): { name: string; enabled: boolean } {\n    return {\n      name: this.name,\n      enabled: this.enabled,\n    };\n  }\n}\n","/**\n * Anonymous Auth Adapter\n *\n * No-op authentication adapter for local/development use.\n * Allows all connections and channel subscriptions.\n */\n\nimport type { StreamAuthResult, StreamChannel } from '@plyaz/types/core';\nimport { BaseAuthAdapter } from '../BaseAuthAdapter';\n\n/**\n * AnonymousAuthAdapter - Allows all connections without authentication\n *\n * Use cases:\n * - Local development\n * - Internal services without auth requirements\n * - Testing environments\n *\n * @example\n * ```ts\n * const authAdapter = new AnonymousAuthAdapter();\n *\n * // Always returns authenticated: true\n * const result = await authAdapter.authenticate(request);\n * console.log(result.authenticated); // true\n *\n * // Always allows subscription\n * const canSub = authAdapter.canSubscribe(undefined, 'uploads');\n * console.log(canSub); // true\n * ```\n */\nexport class AnonymousAuthAdapter extends BaseAuthAdapter {\n  constructor() {\n    super({ name: 'anonymous' });\n  }\n\n  /**\n   * Authenticate request (always succeeds)\n   *\n   * @returns Always returns { authenticated: true }\n   */\n  async authenticate(): Promise<StreamAuthResult> {\n    return { authenticated: true };\n  }\n\n  /**\n   * Check subscription permission (always allowed)\n   *\n   * @returns Always returns true\n   */\n  // eslint-disable-next-line  no-unused-vars\n  canSubscribe(_userId: string | undefined, _channel: StreamChannel, _scopes?: string[]): boolean {\n    return true;\n  }\n}\n","/**\n * Base Transport Adapter\n *\n * Abstract base class for stream transport adapters.\n * Follows the adapter pattern used in @plyaz/storage.\n */\n\nimport type {\n  StreamMessage,\n  StreamTransportAdapterConfig,\n  StreamTransportType,\n} from '@plyaz/types/core';\nimport { STREAMING_DEFAULTS } from '@plyaz/config/streaming';\n\n/**\n * BaseTransportAdapter - Abstract base class for all transport adapters\n *\n * Provides:\n * - Common configuration handling\n * - Interface for connection management\n * - Message sending abstraction\n *\n * Subclasses must implement:\n * - createConnection() - Create new connection\n * - send() - Send message to connection\n * - close() - Close connection\n * - isAlive() - Check connection status\n *\n * @example\n * ```ts\n * class MyTransportAdapter extends BaseTransportAdapter {\n *   async createConnection(connectionId: string, request: Request): Promise<Response> {\n *     // Implementation\n *   }\n *   // ... other methods\n * }\n * ```\n */\nexport abstract class BaseTransportAdapter {\n  /** Adapter name for logging/debugging */\n  readonly name: string;\n\n  /** Transport type identifier */\n  readonly type: StreamTransportType;\n\n  /** Heartbeat interval in milliseconds */\n  protected readonly heartbeatInterval: number;\n\n  /** Maximum concurrent connections */\n  protected readonly maxConnections: number;\n\n  constructor(config: StreamTransportAdapterConfig & { type: StreamTransportType }) {\n    this.name = config.name;\n    this.type = config.type;\n    this.heartbeatInterval = config.heartbeatInterval ?? STREAMING_DEFAULTS.HEARTBEAT_INTERVAL_MS;\n    this.maxConnections = config.maxConnections ?? STREAMING_DEFAULTS.MAX_CONNECTIONS;\n  }\n\n  /**\n   * Create a new streaming connection\n   *\n   * For SSE: Returns a Response with streaming body\n   * For WebSocket: Modifies socket directly, returns void\n   *\n   * @param connectionId - Unique connection identifier\n   * @param request - HTTP request or WebSocket upgrade request\n   * @returns Response for SSE, void for WebSocket\n   */\n  abstract createConnection(connectionId: string, request: Request): Promise<Response | void>;\n\n  /**\n   * Send a message to a specific connection\n   *\n   * @param connectionId - Connection to send to\n   * @param message - Message to send\n   */\n  abstract send(connectionId: string, message: StreamMessage): Promise<void>;\n\n  /**\n   * Close a connection\n   *\n   * @param connectionId - Connection to close\n   */\n  abstract close(connectionId: string): Promise<void>;\n\n  /**\n   * Check if a connection is still alive\n   *\n   * @param connectionId - Connection to check\n   * @returns Whether connection is alive\n   */\n  abstract isAlive(connectionId: string): boolean;\n\n  /**\n   * Get current connection count\n   *\n   * @returns Number of active connections\n   */\n  abstract getConnectionCount(): number;\n\n  /**\n   * Get adapter info for debugging\n   */\n  getAdapterInfo(): {\n    name: string;\n    type: StreamTransportType;\n    heartbeatInterval: number;\n    maxConnections: number;\n    connectionCount: number;\n  } {\n    return {\n      name: this.name,\n      type: this.type,\n      heartbeatInterval: this.heartbeatInterval,\n      maxConnections: this.maxConnections,\n      connectionCount: this.getConnectionCount(),\n    };\n  }\n\n  /**\n   * Check if adapter can accept more connections\n   */\n  canAcceptConnection(): boolean {\n    return this.getConnectionCount() < this.maxConnections;\n  }\n}\n","/**\n * SSE Transport Adapter\n *\n * Server-Sent Events transport for real-time streaming.\n * Uses Web Streams API for compatibility with Next.js/Edge runtime.\n */\n\n/* eslint-disable n/no-unsupported-features/node-builtins */\n// ReadableStream and ReadableStreamDefaultController are stable Web APIs,\n// supported in all modern browsers and Edge runtime\n\nimport type { StreamMessage, StreamTransportAdapterConfig } from '@plyaz/types/core';\nimport { BaseTransportAdapter } from '../BaseTransportAdapter';\n\n/**\n * Internal connection state\n */\ninterface SSEConnection {\n  controller: ReadableStreamDefaultController;\n  heartbeatTimer?: ReturnType<typeof setInterval>;\n  createdAt: Date;\n}\n\n/**\n * SSETransportAdapter - Server-Sent Events transport\n *\n * Features:\n * - Web Streams API for Edge runtime compatibility\n * - Automatic heartbeat to keep connections alive\n * - Proper SSE formatting with event, id, retry, data fields\n * - Connection cleanup on disconnect\n *\n * @example\n * ```ts\n * const sseAdapter = new SSETransportAdapter({ heartbeatInterval: 15000 });\n *\n * // In API route\n * const response = await sseAdapter.createConnection(connectionId, request);\n * return response; // Returns SSE stream\n *\n * // Send message\n * await sseAdapter.send(connectionId, {\n *   event: 'progress',\n *   data: { percentage: 50 },\n * });\n * ```\n */\nexport class SSETransportAdapter extends BaseTransportAdapter {\n  private connections = new Map<string, SSEConnection>();\n\n  constructor(config?: Partial<StreamTransportAdapterConfig>) {\n    super({\n      name: config?.name ?? 'sse',\n      type: 'sse',\n      heartbeatInterval: config?.heartbeatInterval,\n      maxConnections: config?.maxConnections,\n    });\n  }\n\n  /**\n   * Create a new SSE connection\n   *\n   * @param connectionId - Unique connection identifier\n   * @returns Response with SSE stream\n   */\n  async createConnection(connectionId: string): Promise<Response> {\n    // Check if we can accept more connections\n    if (!this.canAcceptConnection()) {\n      return new Response('Too many connections', { status: 503 });\n    }\n\n    // Create the SSE stream\n    const stream = new ReadableStream({\n      start: controller => {\n        // Store connection\n        const connection: SSEConnection = {\n          controller,\n          createdAt: new Date(),\n        };\n        this.connections.set(connectionId, connection);\n\n        // Send initial connection message\n        this.sendImmediate(controller, {\n          event: 'connected',\n          data: { connectionId, timestamp: Date.now() },\n        });\n\n        // Start heartbeat\n        connection.heartbeatTimer = setInterval(() => {\n          if (!this.isAlive(connectionId)) {\n            this.cleanup(connectionId);\n            return;\n          }\n          this.sendImmediate(controller, {\n            event: 'heartbeat',\n            data: { timestamp: Date.now() },\n          });\n        }, this.heartbeatInterval);\n      },\n      cancel: () => {\n        this.cleanup(connectionId);\n      },\n    });\n\n    return new Response(stream, {\n      headers: {\n        'Content-Type': 'text/event-stream',\n        'Cache-Control': 'no-cache, no-transform',\n        Connection: 'keep-alive',\n        'X-Accel-Buffering': 'no', // Disable nginx buffering\n      },\n    });\n  }\n\n  /**\n   * Send a message to a connection\n   *\n   * @param connectionId - Connection to send to\n   * @param message - Message to send\n   */\n  async send(connectionId: string, message: StreamMessage): Promise<void> {\n    const connection = this.connections.get(connectionId);\n    if (!connection) return;\n\n    try {\n      this.sendImmediate(connection.controller, message);\n    } catch {\n      // Connection likely closed, cleanup\n      this.cleanup(connectionId);\n    }\n  }\n\n  /**\n   * Close a connection\n   *\n   * @param connectionId - Connection to close\n   */\n  async close(connectionId: string): Promise<void> {\n    const connection = this.connections.get(connectionId);\n    if (!connection) return;\n\n    try {\n      // Send close event before closing\n      this.sendImmediate(connection.controller, {\n        event: 'close',\n        data: { reason: 'server_close' },\n      });\n      connection.controller.close();\n    } catch {\n      // Already closed\n    }\n\n    this.cleanup(connectionId);\n  }\n\n  /**\n   * Check if a connection is alive\n   *\n   * @param connectionId - Connection to check\n   */\n  isAlive(connectionId: string): boolean {\n    return this.connections.has(connectionId);\n  }\n\n  /**\n   * Get current connection count\n   */\n  getConnectionCount(): number {\n    return this.connections.size;\n  }\n\n  /**\n   * Get all connection IDs\n   */\n  getConnectionIds(): string[] {\n    return Array.from(this.connections.keys());\n  }\n\n  /**\n   * Send message immediately to controller\n   */\n  private sendImmediate(controller: ReadableStreamDefaultController, message: StreamMessage): void {\n    const formatted = this.formatSSE(message);\n    controller.enqueue(new TextEncoder().encode(formatted));\n  }\n\n  /**\n   * Format message as SSE\n   *\n   * SSE format:\n   * ```\n   * id: messageId\n   * retry: retryMs\n   * data: {\"event\":\"eventName\",\"channel\":\"channelName\",\"data\":{...}}\n   *\n   * ```\n   *\n   * Note: We intentionally DON'T use SSE named events (event: line) because:\n   * 1. EventSource silently drops events without registered listeners\n   * 2. Hardcoding all possible event names is not scalable\n   * 3. Including event in JSON payload is more flexible\n   *\n   * The client extracts event/channel from the JSON payload in onmessage.\n   */\n  private formatSSE(message: StreamMessage): string {\n    let output = '';\n\n    if (message.id) {\n      output += `id: ${message.id}\\n`;\n    }\n\n    if (message.retry !== undefined) {\n      output += `retry: ${message.retry}\\n`;\n    }\n\n    // Include event and channel in the data payload for the client to extract\n    const payload = {\n      event: message.event,\n      channel: message.channel,\n      data: message.data,\n      timestamp: message.timestamp ?? Date.now(),\n    };\n\n    output += `data: ${JSON.stringify(payload)}\\n`;\n\n    // Double newline to end message\n    output += '\\n';\n\n    return output;\n  }\n\n  /**\n   * Cleanup connection resources\n   */\n  private cleanup(connectionId: string): void {\n    const connection = this.connections.get(connectionId);\n    if (!connection) return;\n\n    // Clear heartbeat timer\n    if (connection.heartbeatTimer) {\n      clearInterval(connection.heartbeatTimer);\n    }\n\n    // Remove from map\n    this.connections.delete(connectionId);\n  }\n\n  /**\n   * Close all connections (for shutdown)\n   */\n  async closeAll(): Promise<void> {\n    const connectionIds = this.getConnectionIds();\n    await Promise.all(connectionIds.map(id => this.close(id)));\n  }\n}\n","/**\n * Base Framework Adapter\n *\n * Abstract base class for framework-specific streaming adapters.\n * Converts framework-specific request/response to Web Request/Response.\n *\n * Follows the adapter pattern used in BaseTransportAdapter and BaseAuthAdapter.\n *\n * @example\n * ```typescript\n * class MyFrameworkAdapter extends BaseFrameworkAdapter {\n *   readonly framework = 'myframework' as const;\n *\n *   createHandler(handleRequest, options) {\n *     return (req, res) => {\n *       const webRequest = this.convertRequest(req);\n *       const response = await handleRequest(webRequest, options?.transport);\n *       await this.handleResponse(response, req, res);\n *     };\n *   }\n *   // ... other methods\n * }\n * ```\n */\n\nimport type {\n  FrameworkType,\n  FrameworkAdapterConfig,\n  FrameworkHandlerOptions,\n  CoreRequestHandler,\n} from '@plyaz/types/core';\n\n/**\n * BaseFrameworkAdapter - Abstract base class for framework adapters\n *\n * Provides:\n * - Common configuration handling\n * - Interface for request/response conversion\n * - Handler creation abstraction\n *\n * Subclasses must implement:\n * - framework - Framework identifier\n * - createHandler() - Create framework-specific handler\n * - convertRequest() - Convert framework request to Web Request\n * - handleResponse() - Handle Web Response for framework\n */\nexport abstract class BaseFrameworkAdapter {\n  /** Adapter name for logging/debugging */\n  readonly name: string;\n\n  /** Framework type identifier */\n  abstract readonly framework: FrameworkType;\n\n  /** Whether adapter is enabled */\n  readonly enabled: boolean;\n\n  constructor(config: FrameworkAdapterConfig = {} as FrameworkAdapterConfig) {\n    this.name = config.name ?? this.constructor.name;\n    this.enabled = config.enabled ?? true;\n  }\n\n  /**\n   * Create a handler function for the framework.\n   *\n   * The returned handler type varies by framework:\n   * - Next.js: `(request: Request) => Promise<Response>`\n   * - Express: `(req: Request, res: Response) => Promise<void>`\n   * - NestJS: `(req: Request, res: Response) => Promise<void>`\n   *\n   * @param handleRequest - Core request handler from StreamServer\n   * @param options - Handler options (transport type, etc.)\n   * @returns Framework-specific handler function\n   *\n   * @example\n   * ```typescript\n   * // Next.js\n   * export const GET = adapter.createHandler(streamServer.handleRequest);\n   *\n   * // Express\n   * app.get('/stream', adapter.createHandler(streamServer.handleRequest));\n   * ```\n   */\n  abstract createHandler(\n    handleRequest: CoreRequestHandler,\n    options?: FrameworkHandlerOptions\n  ): unknown;\n\n  /**\n   * Convert framework-specific request to Web Request.\n   *\n   * @param frameworkRequest - Framework-specific request object\n   * @returns Web Request object\n   */\n  abstract convertRequest(frameworkRequest: unknown): Request;\n\n  /**\n   * Handle Web Response and send to framework response.\n   *\n   * For Next.js/Edge: Returns Response directly\n   * For Express/NestJS: Streams to res object\n   *\n   * @param response - Web Response from core handler\n   * @param frameworkRequest - Original framework request\n   * @param frameworkResponse - Framework response object (for Express-like frameworks)\n   * @returns Response for return-based frameworks, void for stream-based\n   */\n  abstract handleResponse(\n    response: Response,\n    frameworkRequest: unknown,\n    frameworkResponse?: unknown\n  ): Promise<Response | void>;\n\n  /**\n   * Get adapter info for debugging\n   */\n  getAdapterInfo(): {\n    name: string;\n    framework: FrameworkType;\n    enabled: boolean;\n  } {\n    return {\n      name: this.name,\n      framework: this.framework,\n      enabled: this.enabled,\n    };\n  }\n}\n","/**\n * Next.js Framework Adapter\n *\n * Framework adapter for Next.js App Router (Route Handlers).\n * Next.js uses Web Request/Response natively, so this is mostly a passthrough.\n *\n * @example\n * ```typescript\n * // app/api/events/stream/route.ts\n * import { streamServer } from '@/lib/stream';\n *\n * export const GET = streamServer.getHandler('nextjs');\n * ```\n */\n\nimport type {\n  FrameworkAdapterConfig,\n  FrameworkHandlerOptions,\n  CoreRequestHandler,\n  NextJSHandler,\n} from '@plyaz/types/core';\nimport { BaseFrameworkAdapter } from './BaseFrameworkAdapter';\n\n/**\n * NextJSFrameworkAdapter - Next.js App Router adapter\n *\n * Features:\n * - Native Web Request/Response support (zero conversion overhead)\n * - Works with Next.js App Router route handlers\n * - Edge Runtime compatible\n *\n * @example\n * ```typescript\n * const adapter = new NextJSFrameworkAdapter();\n * const handler = adapter.createHandler(streamServer.handleRequest);\n * export const GET = handler;\n * ```\n */\nexport class NextJSFrameworkAdapter extends BaseFrameworkAdapter {\n  readonly framework = 'nextjs' as const;\n\n  constructor(config?: FrameworkAdapterConfig) {\n    super({\n      name: config?.name ?? 'nextjs',\n      enabled: config?.enabled,\n    });\n  }\n\n  /**\n   * Create Next.js route handler.\n   *\n   * @param handleRequest - Core request handler from StreamServer\n   * @param options - Handler options\n   * @returns Next.js route handler function\n   */\n  createHandler(\n    handleRequest: CoreRequestHandler,\n    options?: FrameworkHandlerOptions\n  ): NextJSHandler {\n    const transport = options?.transport ?? 'sse';\n\n    return (request: Request): Promise<Response> => {\n      return handleRequest(request, transport);\n    };\n  }\n\n  /**\n   * Convert Next.js request to Web Request.\n   * Next.js already uses Web Request, so this is a passthrough.\n   *\n   * @param request - Next.js Request (which is a Web Request)\n   * @returns The same Request object\n   */\n  convertRequest(request: Request): Request {\n    return request;\n  }\n\n  /**\n   * Handle Web Response for Next.js.\n   * Next.js returns Response directly, so this is a passthrough.\n   *\n   * @param response - Web Response from core handler\n   * @returns The same Response object\n   */\n  async handleResponse(response: Response): Promise<Response> {\n    return response;\n  }\n}\n","/**\n * Express Framework Adapter\n *\n * Framework adapter for Express.js and compatible frameworks (Fastify, Koa, etc.).\n * Converts Express req/res to Web Request/Response and handles SSE streaming.\n *\n * @example\n * ```typescript\n * import express from 'express';\n * import { streamServer } from './stream';\n *\n * const app = express();\n * app.get('/events/stream', streamServer.getHandler('express'));\n * ```\n */\n\nimport { HTTP_STATUS } from '@plyaz/types';\nimport type {\n  FrameworkAdapterConfig,\n  FrameworkHandlerOptions,\n  CoreRequestHandler,\n  ExpressRequest,\n  ExpressResponse,\n  ExpressHandler,\n} from '@plyaz/types/core';\nimport { BaseFrameworkAdapter } from './BaseFrameworkAdapter';\n\n/**\n * ExpressFrameworkAdapter - Express/Fastify adapter\n *\n * Features:\n * - Converts Express req/res to Web Request/Response\n * - Handles SSE streaming to Express response\n * - Manages connection cleanup on client disconnect\n * - Compatible with Express, Fastify, Koa (with adapters)\n *\n * @example\n * ```typescript\n * const adapter = new ExpressFrameworkAdapter();\n * const handler = adapter.createHandler(streamServer.handleRequest);\n * app.get('/stream', handler);\n * ```\n */\nexport class ExpressFrameworkAdapter extends BaseFrameworkAdapter {\n  readonly framework = 'express' as const;\n\n  constructor(config?: FrameworkAdapterConfig) {\n    super({\n      name: config?.name ?? 'express',\n      enabled: config?.enabled,\n    });\n  }\n\n  /**\n   * Create Express route handler.\n   *\n   * @param handleRequest - Core request handler from StreamServer\n   * @param options - Handler options\n   * @returns Express route handler function\n   */\n  createHandler(\n    handleRequest: CoreRequestHandler,\n    options?: FrameworkHandlerOptions\n  ): ExpressHandler {\n    const transport = options?.transport ?? 'sse';\n\n    return async (req: ExpressRequest, res: ExpressResponse): Promise<void> => {\n      const webRequest = this.convertRequest(req);\n      const response = await handleRequest(webRequest, transport);\n      await this.handleResponse(response, req, res);\n    };\n  }\n\n  /**\n   * Convert Express request to Web Request.\n   *\n   * @param req - Express request object\n   * @returns Web Request object\n   */\n  convertRequest(req: ExpressRequest): Request {\n    const url = new URL(req.url, 'http://localhost');\n\n    // Convert headers, handling array values\n    const headers = new Headers();\n    for (const [key, value] of Object.entries(req.headers)) {\n      if (value !== undefined && value !== null) {\n        if (Array.isArray(value)) {\n          value.forEach(v => headers.append(key, v));\n        } else {\n          headers.set(key, value as string);\n        }\n      }\n    }\n\n    return new Request(url, {\n      headers,\n      method: req.method ?? 'GET',\n    });\n  }\n\n  /**\n   * Handle Web Response and stream to Express response.\n   *\n   * @param response - Web Response from core handler\n   * @param _req - Original Express request (unused)\n   * @param res - Express response object\n   */\n  async handleResponse(response: Response, _req: unknown, res: unknown): Promise<void> {\n    const expressRes = res as ExpressResponse;\n\n    // Write SSE headers\n    expressRes.writeHead(HTTP_STATUS.OK, {\n      'Content-Type': 'text/event-stream',\n      'Cache-Control': 'no-cache',\n      Connection: 'keep-alive',\n    });\n\n    // Stream response body\n    const reader = response.body?.getReader();\n    if (reader) {\n      const pump = async (): Promise<void> => {\n        const { done, value } = await reader.read();\n        if (done) return;\n        expressRes.write(new TextDecoder().decode(value));\n        return pump();\n      };\n      void pump();\n\n      // Handle client disconnect\n      expressRes.on('close', () => {\n        void reader.cancel();\n      });\n    }\n  }\n}\n","/**\n * NestJS Framework Adapter\n *\n * Framework adapter for NestJS controllers.\n * NestJS typically uses Express under the hood, so this adapter handles\n * the Express-style req/res pattern used in NestJS controllers.\n *\n * @example\n * ```typescript\n * // In a NestJS controller\n * @Controller('events')\n * export class StreamingController {\n *   constructor(@Inject(STREAM_SERVER) private streamServer: StreamServer) {}\n *\n *   @Get('stream')\n *   async stream(@Req() req: Request, @Res() res: Response) {\n *     const handler = this.streamServer.getHandler('nestjs');\n *     await handler(req, res);\n *   }\n * }\n * ```\n */\n\nimport { HTTP_STATUS } from '@plyaz/types';\nimport type {\n  FrameworkAdapterConfig,\n  FrameworkHandlerOptions,\n  CoreRequestHandler,\n  NestJSRequest,\n  NestJSResponse,\n  NestJSHandler,\n} from '@plyaz/types/core';\nimport { BaseFrameworkAdapter } from './BaseFrameworkAdapter';\n\n/**\n * NestJSFrameworkAdapter - NestJS adapter\n *\n * Features:\n * - Works with NestJS Express-based controllers\n * - Handles @Req() and @Res() decorated parameters\n * - Supports both writeHead and setHeader patterns\n * - Manages SSE streaming to response\n *\n * @example\n * ```typescript\n * const adapter = new NestJSFrameworkAdapter();\n * const handler = adapter.createHandler(streamServer.handleRequest);\n *\n * // In controller method:\n * await handler(req, res);\n * ```\n */\nexport class NestJSFrameworkAdapter extends BaseFrameworkAdapter {\n  readonly framework = 'nestjs' as const;\n\n  constructor(config?: FrameworkAdapterConfig) {\n    super({\n      name: config?.name ?? 'nestjs',\n      enabled: config?.enabled,\n    });\n  }\n\n  /**\n   * Create NestJS controller handler.\n   *\n   * @param handleRequest - Core request handler from StreamServer\n   * @param options - Handler options\n   * @returns NestJS controller handler function\n   */\n  createHandler(\n    handleRequest: CoreRequestHandler,\n    options?: FrameworkHandlerOptions\n  ): NestJSHandler {\n    const transport = options?.transport ?? 'sse';\n\n    return async (req: NestJSRequest, res: NestJSResponse): Promise<void> => {\n      const webRequest = this.convertRequest(req);\n      const response = await handleRequest(webRequest, transport);\n      await this.handleResponse(response, req, res);\n    };\n  }\n\n  /**\n   * Convert NestJS request to Web Request.\n   *\n   * @param req - NestJS request object\n   * @returns Web Request object\n   */\n  convertRequest(req: NestJSRequest): Request {\n    const url = new URL(req.url, 'http://localhost');\n\n    // Convert headers, handling array values\n    const headers = new Headers();\n    for (const [key, value] of Object.entries(req.headers)) {\n      if (value !== undefined && value !== null) {\n        if (Array.isArray(value)) {\n          value.forEach(v => headers.append(key, v));\n        } else {\n          headers.set(key, value as string);\n        }\n      }\n    }\n\n    return new Request(url, {\n      headers,\n      method: req.method ?? 'GET',\n    });\n  }\n\n  /**\n   * Handle Web Response and stream to NestJS response.\n   *\n   * @param response - Web Response from core handler\n   * @param _req - Original NestJS request (unused)\n   * @param res - NestJS response object\n   */\n  async handleResponse(response: Response, _req: unknown, res: unknown): Promise<void> {\n    const nestRes = res as NestJSResponse;\n\n    // Set SSE headers using available method\n    if (nestRes.writeHead) {\n      nestRes.writeHead(HTTP_STATUS.OK, {\n        'Content-Type': 'text/event-stream',\n        'Cache-Control': 'no-cache',\n        Connection: 'keep-alive',\n      });\n    } else {\n      // Fallback to setHeader for NestJS\n      nestRes.status(HTTP_STATUS.OK);\n      nestRes.setHeader('Content-Type', 'text/event-stream');\n      nestRes.setHeader('Cache-Control', 'no-cache');\n      nestRes.setHeader('Connection', 'keep-alive');\n      // Flush headers to start streaming\n      if (nestRes.flushHeaders) {\n        nestRes.flushHeaders();\n      }\n    }\n\n    // Stream response body\n    const reader = response.body?.getReader();\n    if (reader) {\n      const pump = async (): Promise<void> => {\n        const { done, value } = await reader.read();\n        if (done) return;\n        nestRes.write(new TextDecoder().decode(value));\n        return pump();\n      };\n      void pump();\n\n      // Handle client disconnect\n      nestRes.on('close', () => {\n        void reader.cancel();\n      });\n    }\n  }\n}\n","/**\n * Framework Adapters\n *\n * Adapters for integrating StreamServer with various JavaScript frameworks.\n * Each adapter converts framework-specific request/response to Web Request/Response.\n *\n * @example\n * ```typescript\n * import {\n *   NextJSFrameworkAdapter,\n *   ExpressFrameworkAdapter,\n *   NestJSFrameworkAdapter,\n * } from '@plyaz/core/events/streaming/frameworks';\n *\n * // Register custom adapter\n * streamServer.registerFrameworkAdapter(new NextJSFrameworkAdapter());\n *\n * // Get handler for framework\n * const handler = streamServer.getHandler('nextjs');\n * ```\n */\n\n// Base adapter\nexport { BaseFrameworkAdapter } from './BaseFrameworkAdapter';\n\n// Framework adapters\nexport { NextJSFrameworkAdapter } from './NextJSFrameworkAdapter';\nexport { ExpressFrameworkAdapter } from './ExpressFrameworkAdapter';\nexport { NestJSFrameworkAdapter } from './NestJSFrameworkAdapter';\n\n// Types from @plyaz/types\nexport type {\n  FrameworkType,\n  FrameworkAdapterConfig,\n  FrameworkHandlerOptions,\n  CoreRequestHandler,\n  NextJSHandler,\n  ExpressRequest,\n  ExpressResponse,\n  ExpressHandler,\n  NestJSRequest,\n  NestJSResponse,\n  NestJSHandler,\n} from '@plyaz/types/core';\n","/**\n * Stream Server\n *\n * Framework-agnostic streaming server factory.\n * Provides easy configuration and integration with Next.js, NestJS, Express, etc.\n *\n * Uses framework adapters for handling different runtimes:\n * - NextJSFrameworkAdapter - Next.js App Router (Web Request/Response)\n * - ExpressFrameworkAdapter - Express/Fastify (req/res pattern)\n * - NestJSFrameworkAdapter - NestJS controllers\n *\n * @example\n * ```ts\n * // Create server with builder pattern\n * const streamServer = StreamServer.create()\n *   .withAuth(new AnonymousAuthAdapter())\n *   .withSSE({ heartbeatInterval: 15000 })\n *   .build();\n *\n * // Use in Next.js\n * export const GET = streamServer.getHandler('nextjs');\n *\n * // Use in Express\n * app.get('/stream', streamServer.getHandler('express'));\n *\n * // Use in NestJS\n * const handler = streamServer.getHandler('nestjs');\n * await handler(req, res);\n * ```\n */\n\nimport { StreamBroadcaster } from './StreamBroadcaster';\nimport type { BaseAuthAdapter } from './auth/BaseAuthAdapter';\nimport { AnonymousAuthAdapter } from './auth/adapters/AnonymousAuthAdapter';\nimport type { BaseTransportAdapter } from './transports/BaseTransportAdapter';\nimport { SSETransportAdapter } from './transports/adapters/SSETransportAdapter';\nimport type { BaseFrameworkAdapter } from './frameworks';\nimport {\n  NextJSFrameworkAdapter,\n  ExpressFrameworkAdapter,\n  NestJSFrameworkAdapter,\n  type FrameworkType,\n  type FrameworkHandlerOptions,\n} from './frameworks';\nimport type {\n  StreamAuthResult,\n  StreamBroadcasterConfig,\n  StreamChannel,\n  StreamManagerStats,\n  StreamTransportType,\n  SSEConfig,\n  WebSocketConfig,\n} from '@plyaz/types/core';\nimport { STREAM_ERROR_CODES } from '@plyaz/types';\nimport { StreamPackageError } from '@plyaz/errors';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Configuration Types\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Stream server configuration\n */\nexport interface StreamServerConfig {\n  /** Auth adapter to use */\n  auth?: BaseAuthAdapter;\n  /** Transport adapters to use */\n  transports?: BaseTransportAdapter[];\n  /** Broadcaster configuration */\n  broadcaster?: StreamBroadcasterConfig;\n  /** Default channels for new connections */\n  defaultChannels?: StreamChannel[];\n  /** Parse channels from request (default: query param 'channels') */\n  parseChannels?: (request: Request) => StreamChannel[];\n  /** Custom framework adapters (NextJS, Express, NestJS registered by default) */\n  frameworkAdapters?: BaseFrameworkAdapter[];\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Stream Server Builder\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Builder for StreamServer\n */\nexport class StreamServerBuilder {\n  private authAdapter?: BaseAuthAdapter;\n  private transports: BaseTransportAdapter[] = [];\n  private broadcasterConfig?: StreamBroadcasterConfig;\n  private defaultChannels: StreamChannel[] = ['uploads'];\n  private channelParser?: (request: Request) => StreamChannel[];\n\n  /**\n   * Configure authentication\n   */\n  withAuth(adapter: BaseAuthAdapter): this {\n    this.authAdapter = adapter;\n    return this;\n  }\n\n  /**\n   * Enable SSE transport\n   */\n  withSSE(config?: SSEConfig): this {\n    if (config?.enabled === false) return this;\n    this.transports.push(new SSETransportAdapter(config));\n    return this;\n  }\n\n  /**\n   * Enable WebSocket transport (future)\n   */\n  // eslint-disable-next-line no-unused-vars\n  withWebSocket(_config?: WebSocketConfig): this {\n    // Future: this.transports.push(new WebSocketTransportAdapter(config));\n    console.warn('WebSocket transport not yet implemented');\n    return this;\n  }\n\n  /**\n   * Add custom transport\n   */\n  withTransport(adapter: BaseTransportAdapter): this {\n    this.transports.push(adapter);\n    return this;\n  }\n\n  /**\n   * Configure broadcaster\n   */\n  withBroadcaster(config: StreamBroadcasterConfig): this {\n    this.broadcasterConfig = config;\n    return this;\n  }\n\n  /**\n   * Set default channels for new connections\n   */\n  withDefaultChannels(channels: StreamChannel[]): this {\n    this.defaultChannels = channels;\n    return this;\n  }\n\n  /**\n   * Custom channel parser\n   */\n  withChannelParser(parser: (request: Request) => StreamChannel[]): this {\n    this.channelParser = parser;\n    return this;\n  }\n\n  /**\n   * Build the stream server\n   */\n  build(): StreamServer {\n    // Default to anonymous auth if not specified\n    const auth = this.authAdapter ?? new AnonymousAuthAdapter();\n\n    // Default to SSE if no transports specified\n    const transports = this.transports.length > 0 ? this.transports : [new SSETransportAdapter()];\n\n    return new StreamServer({\n      auth,\n      transports,\n      broadcaster: this.broadcasterConfig,\n      defaultChannels: this.defaultChannels,\n      parseChannels: this.channelParser,\n    });\n  }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Stream Server\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * StreamServer - Framework-agnostic streaming server\n *\n * Features:\n * - Builder pattern for easy configuration\n * - Framework adapter pattern for easy integration\n * - Automatic connection lifecycle management\n * - Channel-based subscriptions\n *\n * @example\n * ```ts\n * const server = StreamServer.create()\n *   .withAuth(new TokenAuthAdapter({ verifyToken: myVerifier }))\n *   .withSSE({ heartbeatInterval: 30000 })\n *   .build();\n *\n * // Initialize on startup\n * server.initialize();\n *\n * // Get handler for your framework\n * export const GET = server.getHandler('nextjs');\n * // or\n * app.get('/stream', server.getHandler('express'));\n *\n * // Register endpoints via StreamRegistry\n * await StreamRegistry.initialize({\n *   broadcaster: server.getBroadcaster(),\n *   endpoints: [\n *     { endpoint: FilesStreamEndpoint, config: { enabled: true } },\n *     { endpoint: SystemStreamEndpoint, config: { enabled: true } },\n *   ],\n * });\n * ```\n */\nexport class StreamServer {\n  private readonly broadcaster: StreamBroadcaster;\n  private readonly config: StreamServerConfig;\n  private readonly frameworkAdapters = new Map<FrameworkType, BaseFrameworkAdapter>();\n  private initialized = false;\n\n  constructor(config: StreamServerConfig) {\n    this.config = config;\n\n    // Create broadcaster\n    this.broadcaster = new StreamBroadcaster(\n      config.auth ?? new AnonymousAuthAdapter(),\n      config.transports ?? [new SSETransportAdapter()],\n      config.broadcaster\n    );\n\n    // Register default framework adapters\n    this.registerFrameworkAdapter(new NextJSFrameworkAdapter());\n    this.registerFrameworkAdapter(new ExpressFrameworkAdapter());\n    this.registerFrameworkAdapter(new NestJSFrameworkAdapter());\n\n    // Register custom framework adapters if provided\n    if (config.frameworkAdapters) {\n      for (const adapter of config.frameworkAdapters) {\n        this.registerFrameworkAdapter(adapter);\n      }\n    }\n  }\n\n  /**\n   * Create a new builder\n   */\n  static create(): StreamServerBuilder {\n    return new StreamServerBuilder();\n  }\n\n  /**\n   * Initialize the stream server\n   * Call once on application startup\n   */\n  initialize(): void {\n    if (this.initialized) return;\n    this.broadcaster.initialize();\n    this.initialized = true;\n  }\n\n  /**\n   * Dispose the stream server\n   * Call on application shutdown\n   */\n  dispose(): void {\n    this.broadcaster.dispose();\n    this.initialized = false;\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Request Handling\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Handle a streaming request (framework-agnostic)\n   *\n   * @param request - HTTP request\n   * @param transportType - Transport to use (default: 'sse')\n   */\n  async handleRequest(\n    request: Request,\n    transportType: StreamTransportType = 'sse'\n  ): Promise<Response> {\n    // Ensure initialized\n    if (!this.initialized) {\n      this.initialize();\n    }\n\n    // Parse channels from request\n    const channels = this.parseChannels(request);\n\n    // Authenticate\n    const authResult = await this.broadcaster.authenticate(request);\n\n    // Generate connection ID\n    const connectionId = crypto.randomUUID();\n\n    // Create connection\n    const response = await this.broadcaster.createConnection(\n      connectionId,\n      transportType,\n      request,\n      authResult\n    );\n\n    if (!response) {\n      return new Response('Failed to create connection', { status: 500 });\n    }\n\n    // Subscribe to channels\n    for (const channel of channels) {\n      if (this.broadcaster.canSubscribe(authResult, channel)) {\n        this.broadcaster.subscribe(connectionId, channel, authResult);\n      }\n    }\n\n    return response;\n  }\n\n  /**\n   * Parse channels from request\n   */\n  private parseChannels(request: Request): StreamChannel[] {\n    // Use custom parser if provided\n    if (this.config.parseChannels) {\n      return this.config.parseChannels(request);\n    }\n\n    // Default: parse from query param\n    const { searchParams } = new URL(request.url);\n    const channelsParam = searchParams.get('channels');\n\n    if (!channelsParam) {\n      return this.config.defaultChannels ?? ['uploads'];\n    }\n\n    return channelsParam.split(',').filter(Boolean) as StreamChannel[];\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Framework Adapters\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Register a framework adapter.\n   *\n   * Default adapters (NextJS, Express, NestJS) are registered automatically.\n   * Use this to add custom adapters or override existing ones.\n   *\n   * @param adapter - Framework adapter to register\n   *\n   * @example\n   * ```ts\n   * // Register custom adapter\n   * streamServer.registerFrameworkAdapter(new MyCustomAdapter());\n   *\n   * // Override default adapter\n   * streamServer.registerFrameworkAdapter(new NextJSFrameworkAdapter({ name: 'custom-nextjs' }));\n   * ```\n   */\n  registerFrameworkAdapter(adapter: BaseFrameworkAdapter): void {\n    this.frameworkAdapters.set(adapter.framework, adapter);\n  }\n\n  /**\n   * Get a framework adapter by type.\n   *\n   * @param framework - Framework type to get\n   * @returns Framework adapter or undefined if not registered\n   */\n  getFrameworkAdapter<T extends BaseFrameworkAdapter>(framework: FrameworkType): T | undefined {\n    return this.frameworkAdapters.get(framework) as T | undefined;\n  }\n\n  /**\n   * Get handler for a specific framework.\n   *\n   * This is the primary API for integrating with frameworks.\n   *\n   * @param framework - Framework type ('nextjs', 'express', 'nestjs')\n   * @param options - Handler options (transport type, etc.)\n   * @returns Framework-specific handler function\n   *\n   * @example\n   * ```ts\n   * // Next.js App Router\n   * export const GET = streamServer.getHandler('nextjs');\n   *\n   * // Express\n   * app.get('/stream', streamServer.getHandler('express'));\n   *\n   * // NestJS controller\n   * const handler = streamServer.getHandler('nestjs');\n   * await handler(req, res);\n   *\n   * // With options\n   * export const GET = streamServer.getHandler('nextjs', { transport: 'sse' });\n   * ```\n   */\n  getHandler<T = unknown>(framework: FrameworkType, options?: FrameworkHandlerOptions): T {\n    const adapter = this.frameworkAdapters.get(framework);\n\n    if (!adapter) {\n      throw new StreamPackageError(\n        `Framework adapter '${framework}' not registered. Available adapters: ${Array.from(this.frameworkAdapters.keys()).join(', ')}`,\n        STREAM_ERROR_CODES.ENDPOINT_NOT_FOUND,\n        { context: { framework, availableAdapters: Array.from(this.frameworkAdapters.keys()) } }\n      );\n    }\n\n    if (!adapter.enabled) {\n      throw new StreamPackageError(\n        `Framework adapter '${framework}' is disabled`,\n        STREAM_ERROR_CODES.ENDPOINT_DISABLED,\n        { context: { framework } }\n      );\n    }\n\n    return adapter.createHandler(\n      (request, transport) => this.handleRequest(request, transport),\n      options\n    ) as T;\n  }\n\n  /**\n   * Get list of registered framework adapters.\n   */\n  getRegisteredFrameworks(): FrameworkType[] {\n    return Array.from(this.frameworkAdapters.keys());\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Direct Access\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Get the underlying broadcaster for advanced usage\n   */\n  getBroadcaster(): StreamBroadcaster {\n    return this.broadcaster;\n  }\n\n  /**\n   * Authenticate a request\n   */\n  async authenticate(request: Request): Promise<StreamAuthResult> {\n    return this.broadcaster.authenticate(request);\n  }\n\n  /**\n   * Check if user can subscribe to a channel\n   */\n  canSubscribe(authResult: StreamAuthResult, channel: StreamChannel): boolean {\n    return this.broadcaster.canSubscribe(authResult, channel);\n  }\n\n  /**\n   * Get server statistics\n   */\n  getStats(): StreamManagerStats {\n    return this.broadcaster.getStats();\n  }\n\n  /**\n   * Check if server is initialized\n   */\n  isInitialized(): boolean {\n    return this.initialized;\n  }\n}\n","/**\n * Token Auth Adapter\n *\n * JWT/Bearer token authentication adapter.\n * Validates tokens via a configurable verifier function,\n * allowing integration with any auth provider.\n */\n\nimport type { StreamAuthResult, StreamChannel, TokenAuthAdapterConfig } from '@plyaz/types/core';\nimport { BaseAuthAdapter } from '../BaseAuthAdapter';\n\n/**\n * TokenAuthAdapter - Bearer token authentication\n *\n * Features:\n * - Configurable token verification function\n * - Scope-based channel authorization\n * - Support for custom header names\n *\n * @example\n * ```ts\n * const authAdapter = new TokenAuthAdapter({\n *   name: 'jwt',\n *   verifyToken: async (token) => {\n *     const decoded = await verifyJWT(token);\n *     return {\n *       valid: !!decoded,\n *       userId: decoded?.sub,\n *       scopes: decoded?.scopes,\n *     };\n *   },\n * });\n *\n * // Authenticate request\n * const result = await authAdapter.authenticate(request);\n * if (result.authenticated) {\n *   console.log('User:', result.userId);\n * }\n * ```\n */\nexport class TokenAuthAdapter extends BaseAuthAdapter {\n  private readonly verifyToken: TokenAuthAdapterConfig['verifyToken'];\n  private readonly headerName: string;\n\n  constructor(config: TokenAuthAdapterConfig) {\n    super(config);\n    this.verifyToken = config.verifyToken;\n    this.headerName = config.headerName ?? 'Authorization';\n  }\n\n  /**\n   * Authenticate request using bearer token\n   *\n   * @param request - HTTP request with Authorization header\n   * @returns Authentication result with user info if valid\n   */\n  async authenticate(request: Request): Promise<StreamAuthResult> {\n    const header = request.headers.get(this.headerName);\n\n    if (!header) {\n      return { authenticated: false };\n    }\n\n    // Extract token from \"Bearer <token>\" format\n    const BEARER_PREFIX_LENGTH = 7;\n    const token = header.startsWith('Bearer ') ? header.slice(BEARER_PREFIX_LENGTH) : header;\n\n    try {\n      const result = await this.verifyToken(token);\n\n      return {\n        authenticated: result.valid,\n        userId: result.userId,\n        scopes: result.scopes,\n      };\n    } catch {\n      // Token verification failed\n      return { authenticated: false };\n    }\n  }\n\n  /**\n   * Check if user can subscribe to a channel\n   *\n   * Rules:\n   * - 'system' channel requires authentication\n   * - If scopes provided, channel must match a scope prefix\n   * - Otherwise, allow subscription\n   *\n   * @param userId - User ID (undefined for anonymous)\n   * @param channel - Channel to subscribe\n   * @param scopes - User's allowed scopes\n   */\n  canSubscribe(userId: string | undefined, channel: StreamChannel, scopes?: string[]): boolean {\n    // System channel requires authentication\n    if (channel === 'system' && !userId) {\n      return false;\n    }\n\n    // If no scopes defined, allow all (for backwards compatibility)\n    if (!scopes || scopes.length === 0) {\n      return true;\n    }\n\n    // Check if channel matches any scope prefix\n    // e.g., scope 'upload:' allows 'upload:abc123'\n    return scopes.some(scope => channel.startsWith(scope) || channel === scope);\n  }\n}\n","/**\n * Auth Adapters\n *\n * Concrete implementations of BaseAuthAdapter for various auth strategies.\n */\n\nexport { AnonymousAuthAdapter } from './AnonymousAuthAdapter';\nexport { TokenAuthAdapter } from './TokenAuthAdapter';\n","/**\n * Auth Module\n *\n * Stream authentication adapters for SSE/WebSocket connections.\n */\n\n// Base class\nexport { BaseAuthAdapter } from './BaseAuthAdapter';\n\n// Adapter implementations\nexport { AnonymousAuthAdapter, TokenAuthAdapter } from './adapters';\n","/**\n * WebSocket Transport Adapter\n *\n * WebSocket transport for real-time bidirectional streaming.\n * Provides an alternative to SSE with support for client-to-server messages.\n *\n * NOTE: This is a placeholder implementation. Full WebSocket support requires\n * runtime-specific handling (Node.js 'ws' package, Bun/Deno native WebSocket, etc.)\n *\n * For production use:\n * - Node.js: Use 'ws' package with HTTP upgrade\n * - Bun: Use Bun.serve with websocket option\n * - Deno: Use Deno.upgradeWebSocket\n * - Next.js: WebSocket requires custom server, not supported in serverless\n */\n\nimport type { StreamMessage, StreamTransportAdapterConfig } from '@plyaz/types/core';\nimport type { ErrorResponse } from '@plyaz/types/errors';\nimport { STREAM_ERROR_CODES } from '@plyaz/types/errors';\nimport { HTTP_STATUS } from '@plyaz/types';\nimport { BaseTransportAdapter } from '../BaseTransportAdapter';\n\n/**\n * WebSocket close codes\n */\nconst WS_CLOSE_NORMAL = 1000;\nconst WS_CLOSE_TRY_AGAIN = 1013;\n\n/**\n * Internal WebSocket connection state\n */\ninterface WebSocketConnection {\n  socket: WebSocket;\n  heartbeatTimer?: ReturnType<typeof setInterval>;\n  createdAt: Date;\n}\n\n/**\n * WebSocketTransportAdapter - WebSocket transport\n *\n * Features:\n * - Bidirectional communication\n * - Automatic heartbeat (ping/pong)\n * - JSON message formatting\n * - Connection cleanup on disconnect\n *\n * @example\n * ```ts\n * // With Bun\n * const wsAdapter = new WebSocketTransportAdapter();\n *\n * Bun.serve({\n *   fetch(req, server) {\n *     const success = server.upgrade(req, { data: { connectionId } });\n *     if (success) return undefined;\n *     return new Response('WebSocket upgrade failed', { status: 400 });\n *   },\n *   websocket: {\n *     open(ws) { wsAdapter.registerConnection(connectionId, ws); },\n *     message(ws, message) { wsAdapter.handleMessage(connectionId, message); },\n *     close(ws) { wsAdapter.close(connectionId); },\n *   },\n * });\n * ```\n */\nexport class WebSocketTransportAdapter extends BaseTransportAdapter {\n  private connections = new Map<string, WebSocketConnection>();\n\n  constructor(config?: Partial<StreamTransportAdapterConfig>) {\n    super({\n      name: config?.name ?? 'websocket',\n      type: 'websocket',\n      heartbeatInterval: config?.heartbeatInterval,\n      maxConnections: config?.maxConnections,\n    });\n  }\n\n  /**\n   * Create a new WebSocket connection.\n   *\n   * NOTE: In most runtimes, WebSocket connections are created via HTTP upgrade,\n   * not through this method directly. Use registerConnection() instead.\n   *\n   * @param _connectionId - Unique connection identifier\n   * @returns Response indicating WebSocket upgrade is needed\n   */\n  // eslint-disable-next-line no-unused-vars\n  async createConnection(_connectionId: string): Promise<Response> {\n    // WebSocket connections are established through HTTP upgrade, not here\n    // This returns an error response; use runtime-specific upgrade instead\n    const errorResponse: ErrorResponse = [\n      {\n        errorCode: STREAM_ERROR_CODES.TRANSPORT_NOT_SUPPORTED,\n        message:\n          'WebSocket connections require HTTP upgrade. Use runtime-specific WebSocket upgrade mechanism.',\n      },\n    ];\n\n    return new Response(JSON.stringify(errorResponse), {\n      status: HTTP_STATUS.UPGRADE_REQUIRED,\n      headers: {\n        'Content-Type': 'application/json',\n        Upgrade: 'websocket',\n      },\n    });\n  }\n\n  /**\n   * Register an already-upgraded WebSocket connection.\n   * Call this from your runtime's WebSocket open handler.\n   *\n   * @param connectionId - Unique connection identifier\n   * @param socket - The WebSocket instance\n   */\n  registerConnection(connectionId: string, socket: WebSocket): void {\n    if (!this.canAcceptConnection()) {\n      socket.close(WS_CLOSE_TRY_AGAIN, 'Too many connections');\n      return;\n    }\n\n    const connection: WebSocketConnection = {\n      socket,\n      createdAt: new Date(),\n    };\n\n    this.connections.set(connectionId, connection);\n\n    // Send initial connection message\n    this.sendImmediate(socket, {\n      event: 'connected',\n      data: { connectionId, timestamp: Date.now() },\n    });\n\n    // Start heartbeat (using WebSocket ping/pong)\n    connection.heartbeatTimer = setInterval(() => {\n      if (!this.isAlive(connectionId)) {\n        this.cleanup(connectionId);\n        return;\n      }\n      // Send ping - most WebSocket implementations handle pong automatically\n      this.sendImmediate(socket, {\n        event: 'heartbeat',\n        data: { timestamp: Date.now() },\n      });\n    }, this.heartbeatInterval);\n  }\n\n  /**\n   * Handle incoming message from WebSocket.\n   * Call this from your runtime's WebSocket message handler.\n   *\n   * @param _connectionId - Connection that sent the message\n   * @param message - Raw message data\n   * @returns Parsed message or null if invalid\n   */\n  handleMessage(_connectionId: string, message: string | ArrayBuffer): StreamMessage | null {\n    try {\n      const data = typeof message === 'string' ? message : new TextDecoder().decode(message);\n      return JSON.parse(data) as StreamMessage;\n    } catch {\n      return null;\n    }\n  }\n\n  /**\n   * Send a message to a connection.\n   *\n   * @param connectionId - Connection to send to\n   * @param message - Message to send\n   */\n  async send(connectionId: string, message: StreamMessage): Promise<void> {\n    const connection = this.connections.get(connectionId);\n    if (!connection) return;\n\n    try {\n      this.sendImmediate(connection.socket, message);\n    } catch {\n      // Connection likely closed, cleanup\n      this.cleanup(connectionId);\n    }\n  }\n\n  /**\n   * Close a connection.\n   *\n   * @param connectionId - Connection to close\n   */\n  async close(connectionId: string): Promise<void> {\n    const connection = this.connections.get(connectionId);\n    if (!connection) return;\n\n    try {\n      // Send close event before closing\n      this.sendImmediate(connection.socket, {\n        event: 'close',\n        data: { reason: 'server_close' },\n      });\n      connection.socket.close(WS_CLOSE_NORMAL, 'Server closing');\n    } catch {\n      // Already closed\n    }\n\n    this.cleanup(connectionId);\n  }\n\n  /**\n   * Check if a connection is alive.\n   *\n   * @param connectionId - Connection to check\n   */\n  isAlive(connectionId: string): boolean {\n    const connection = this.connections.get(connectionId);\n    if (!connection) return false;\n    return connection.socket.readyState === WebSocket.OPEN;\n  }\n\n  /**\n   * Get current connection count.\n   */\n  getConnectionCount(): number {\n    return this.connections.size;\n  }\n\n  /**\n   * Get all connection IDs.\n   */\n  getConnectionIds(): string[] {\n    return Array.from(this.connections.keys());\n  }\n\n  /**\n   * Send message immediately to socket.\n   */\n  private sendImmediate(socket: WebSocket, message: StreamMessage): void {\n    if (socket.readyState !== WebSocket.OPEN) return;\n    socket.send(JSON.stringify(message));\n  }\n\n  /**\n   * Cleanup connection resources.\n   */\n  private cleanup(connectionId: string): void {\n    const connection = this.connections.get(connectionId);\n    if (!connection) return;\n\n    // Clear heartbeat timer\n    if (connection.heartbeatTimer) {\n      clearInterval(connection.heartbeatTimer);\n    }\n\n    // Remove from map\n    this.connections.delete(connectionId);\n  }\n\n  /**\n   * Close all connections (for shutdown).\n   */\n  async closeAll(): Promise<void> {\n    const connectionIds = this.getConnectionIds();\n    await Promise.all(connectionIds.map(id => this.close(id)));\n  }\n}\n","/**\n * Transport Adapters\n *\n * Concrete implementations of BaseTransportAdapter for various transports.\n */\n\nexport { SSETransportAdapter } from './SSETransportAdapter';\nexport { WebSocketTransportAdapter } from './WebSocketTransportAdapter';\n","/**\n * Transport Module\n *\n * Stream transport adapters for SSE/WebSocket connections.\n */\n\n// Base class\nexport { BaseTransportAdapter } from './BaseTransportAdapter';\n\n// Adapter implementations\nexport { SSETransportAdapter, WebSocketTransportAdapter } from './adapters';\n","/**\n * Stream Registry\n *\n * Auto-discovery and initialization for stream endpoints.\n * Similar to ServiceRegistry but for real-time streaming.\n *\n * @example\n * ```typescript\n * import { StreamServer, StreamRegistry } from '@plyaz/core/events/streaming';\n * import { FilesStreamEndpoint } from '@plyaz/core/domain/files/streaming';\n * import { SystemStreamEndpoint } from '@plyaz/core/events/streaming/endpoints';\n *\n * // Create stream server\n * const streamServer = StreamServer.create()\n *   .withAuth(new TokenAuthAdapter({ verifyToken: myVerifier }))\n *   .withSSE({ heartbeatInterval: 15000 })\n *   .build();\n *\n * // Initialize stream registry (like ServiceRegistry)\n * await StreamRegistry.initialize({\n *   broadcaster: streamServer.getBroadcaster(),\n *   endpoints: [\n *     { endpoint: FilesStreamEndpoint, config: { enabled: true } },\n *     { endpoint: SystemStreamEndpoint, config: { enabled: true } },\n *   ],\n * });\n * ```\n */\n\nimport { CoreLogger } from '@plyaz/logger';\nimport { StreamPackageError } from '@plyaz/errors';\nimport { STREAM_ERROR_CODES } from '@plyaz/types/errors';\nimport type {\n  StreamEndpointConfig,\n  StreamRegistryConfig,\n  StreamBroadcasterInterface,\n} from '@plyaz/types/core';\nimport type { BaseStreamEndpoint } from './base/BaseStreamEndpoint';\nimport type { BaseChannelController } from './channels/BaseChannelController';\n\n/**\n * Global Singleton Pattern using globalThis for static class state\n *\n * @see CoreEventManager.ts for detailed explanation of why this pattern is needed.\n *\n * TL;DR: In Next.js and similar frameworks, module isolation can create multiple\n * instances of static class state. Using globalThis + Symbol.for() ensures ONE\n * shared state per process, preventing issues like stream endpoints being registered\n * in one module context but not accessible from another (e.g., API routes).\n */\ninterface StreamRegistryState {\n  endpoints: Map<string, BaseStreamEndpoint>;\n  controllers: Map<string, BaseChannelController>;\n  broadcaster: StreamBroadcasterInterface | null;\n  initialized: boolean;\n}\n\nconst STREAM_REGISTRY_KEY = Symbol.for('plyaz.StreamRegistry');\n\nfunction getStreamRegistryState(): StreamRegistryState {\n  const globalAny = globalThis as unknown as { [key: symbol]: StreamRegistryState };\n  if (!globalAny[STREAM_REGISTRY_KEY]) {\n    globalAny[STREAM_REGISTRY_KEY] = {\n      endpoints: new Map(),\n      controllers: new Map(),\n      broadcaster: null,\n      initialized: false,\n    };\n  }\n  return globalAny[STREAM_REGISTRY_KEY];\n}\n\n/**\n * StreamRegistry - Auto-discovery and initialization for stream endpoints\n *\n * Features:\n * - Auto-initialization of stream endpoints\n * - get() and getAsync() access patterns (like ServiceRegistry)\n * - Lifecycle management\n * - Controller registration with broadcaster\n */\nexport class StreamRegistry {\n  private static readonly logger = new CoreLogger({\n    service: 'StreamRegistry',\n  });\n\n  // State accessors using globalThis\n  private static get _endpoints(): Map<string, BaseStreamEndpoint> {\n    return getStreamRegistryState().endpoints;\n  }\n  private static get _controllers(): Map<string, BaseChannelController> {\n    return getStreamRegistryState().controllers;\n  }\n  private static get _broadcaster(): StreamBroadcasterInterface | null {\n    return getStreamRegistryState().broadcaster;\n  }\n  private static set _broadcaster(value: StreamBroadcasterInterface | null) {\n    getStreamRegistryState().broadcaster = value;\n  }\n  private static get _initialized(): boolean {\n    return getStreamRegistryState().initialized;\n  }\n  private static set _initialized(value: boolean) {\n    getStreamRegistryState().initialized = value;\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Initialization\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Initialize the stream registry with endpoints.\n   *\n   * @param config - Registry configuration\n   * @throws StreamPackageError if already initialized or endpoint fails\n   *\n   * @example\n   * ```typescript\n   * await StreamRegistry.initialize({\n   *   broadcaster: streamServer.getBroadcaster(),\n   *   endpoints: [\n   *     { endpoint: FilesStreamEndpoint, config: { enabled: true } },\n   *     { endpoint: SystemStreamEndpoint, config: { enabled: true } },\n   *   ],\n   * });\n   * ```\n   */\n  static async initialize(config: StreamRegistryConfig): Promise<void> {\n    if (StreamRegistry._initialized) {\n      StreamRegistry.logger.warn('StreamRegistry already initialized');\n      return;\n    }\n\n    StreamRegistry._broadcaster = config.broadcaster;\n\n    for (const entry of config.endpoints) {\n      const endpointKey = entry.endpoint.endpointKey;\n      const enabled = entry.config.enabled !== false;\n\n      if (!enabled) {\n        StreamRegistry.logger.debug(`Endpoint ${endpointKey} is disabled, skipping`);\n        continue;\n      }\n\n      try {\n        // Create endpoint configuration\n        const endpointConfig: StreamEndpointConfig = {\n          endpointKey,\n          name: entry.config.name ?? endpointKey,\n          channels: entry.config.channels ?? [],\n          enabled: entry.config.enabled,\n          supportedRuntimes: entry.config.supportedRuntimes,\n        };\n\n        // Create endpoint instance via static create()\n        const instance = (await entry.endpoint.create(endpointConfig, {\n          broadcaster: config.broadcaster,\n        })) as BaseStreamEndpoint;\n\n        // Initialize the endpoint\n        instance.initialize();\n\n        // Get the channel controller\n        const controller = instance.getChannelController();\n\n        // Register controller with broadcaster (if it supports this)\n        if ('registerController' in config.broadcaster) {\n          (\n            config.broadcaster as { registerController: (c: BaseChannelController) => void }\n          ).registerController(controller);\n        }\n\n        // Store endpoint and controller\n        StreamRegistry._endpoints.set(endpointKey, instance);\n        StreamRegistry._controllers.set(controller.scope, controller);\n\n        StreamRegistry.logger.info(`Endpoint initialized: ${endpointKey}`, {\n          scope: controller.scope,\n          patterns: controller.getPatterns(),\n        });\n      } catch (error) {\n        StreamRegistry.logger.error(`Failed to initialize endpoint: ${endpointKey}`, { error });\n        throw error;\n      }\n    }\n\n    StreamRegistry._initialized = true;\n    StreamRegistry.logger.info('StreamRegistry initialized', {\n      endpoints: [...StreamRegistry._endpoints.keys()],\n      controllers: [...StreamRegistry._controllers.keys()],\n    });\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Endpoint Access\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Get an endpoint by key (synchronous).\n   *\n   * @param key - Endpoint key\n   * @returns Endpoint instance\n   * @throws StreamPackageError if endpoint not found\n   *\n   * @example\n   * ```typescript\n   * const filesEndpoint = StreamRegistry.get<FilesStreamEndpoint>('files');\n   * ```\n   */\n  static get<T extends BaseStreamEndpoint>(key: string): T {\n    const endpoint = StreamRegistry._endpoints.get(key);\n    if (!endpoint) {\n      throw new StreamPackageError(\n        `Stream endpoint '${key}' not found. Register it in StreamRegistry.initialize()`,\n        STREAM_ERROR_CODES.ENDPOINT_NOT_FOUND\n      );\n    }\n    return endpoint as T;\n  }\n\n  /**\n   * Get an endpoint by key (async for lazy initialization if needed).\n   *\n   * @param key - Endpoint key\n   * @returns Promise resolving to endpoint instance\n   */\n  static async getAsync<T extends BaseStreamEndpoint>(key: string): Promise<T> {\n    return StreamRegistry.get<T>(key);\n  }\n\n  /**\n   * Check if an endpoint is registered.\n   *\n   * @param key - Endpoint key\n   * @returns true if endpoint is registered\n   */\n  static has(key: string): boolean {\n    return StreamRegistry._endpoints.has(key);\n  }\n\n  /**\n   * Get all registered endpoint keys.\n   *\n   * @returns Array of endpoint keys\n   */\n  static getRegisteredKeys(): string[] {\n    return [...StreamRegistry._endpoints.keys()];\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Controller Access\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Get a controller by scope.\n   *\n   * @param scope - Controller scope\n   * @returns Controller instance or undefined\n   */\n  static getController(scope: string): BaseChannelController | undefined {\n    return StreamRegistry._controllers.get(scope);\n  }\n\n  /**\n   * Get controller for a channel.\n   *\n   * @param channel - Channel name\n   * @returns Controller that handles the channel, or undefined\n   */\n  static getControllerForChannel(channel: string): BaseChannelController | undefined {\n    for (const controller of StreamRegistry._controllers.values()) {\n      if (controller.handlesChannel(channel)) {\n        return controller;\n      }\n    }\n    return undefined;\n  }\n\n  /**\n   * Get all registered controller scopes.\n   *\n   * @returns Array of controller scopes\n   */\n  static getRegisteredScopes(): string[] {\n    return [...StreamRegistry._controllers.keys()];\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Broadcaster Access\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Get the broadcaster instance.\n   *\n   * @returns Broadcaster instance\n   * @throws StreamPackageError if not initialized\n   */\n  static getBroadcaster(): StreamBroadcasterInterface {\n    if (!StreamRegistry._broadcaster) {\n      throw new StreamPackageError(\n        'StreamRegistry not initialized. Call StreamRegistry.initialize() first.',\n        STREAM_ERROR_CODES.INITIALIZATION_FAILED\n      );\n    }\n    return StreamRegistry._broadcaster;\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Status\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Check if registry is initialized.\n   *\n   * @returns true if initialized\n   */\n  static isInitialized(): boolean {\n    return StreamRegistry._initialized;\n  }\n\n  /**\n   * Get registry statistics.\n   *\n   * @returns Statistics object\n   */\n  static getStats(): {\n    initialized: boolean;\n    endpointCount: number;\n    controllerCount: number;\n    endpoints: string[];\n    controllers: string[];\n  } {\n    return {\n      initialized: StreamRegistry._initialized,\n      endpointCount: StreamRegistry._endpoints.size,\n      controllerCount: StreamRegistry._controllers.size,\n      endpoints: StreamRegistry.getRegisteredKeys(),\n      controllers: StreamRegistry.getRegisteredScopes(),\n    };\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Lifecycle\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Dispose all endpoints and reset registry.\n   */\n  static dispose(): void {\n    StreamRegistry.logger.info('Disposing StreamRegistry');\n\n    // Dispose all endpoints\n    StreamRegistry._endpoints.forEach((endpoint, key) => {\n      try {\n        endpoint.dispose();\n        StreamRegistry.logger.debug(`Disposed endpoint: ${key}`);\n      } catch (error) {\n        StreamRegistry.logger.error(`Error disposing endpoint: ${key}`, { error });\n      }\n    });\n\n    // Clear all maps\n    StreamRegistry._endpoints.clear();\n    StreamRegistry._controllers.clear();\n    StreamRegistry._broadcaster = null;\n    StreamRegistry._initialized = false;\n\n    StreamRegistry.logger.info('StreamRegistry disposed');\n  }\n\n  /**\n   * Reset registry (for testing).\n   */\n  static reset(): void {\n    StreamRegistry.dispose();\n  }\n}\n","/**\n * Base Stream Endpoint\n *\n * Abstract base class for stream endpoints, following patterns from BaseBackendDomainService.\n * Each endpoint manages a set of channels and their event handlers.\n *\n * @example\n * ```typescript\n * class FilesStreamEndpoint extends BaseStreamEndpoint {\n *   static readonly endpointKey = 'files';\n *\n *   protected createChannelController(): BaseChannelController {\n *     return new FilesChannelController();\n *   }\n *\n *   initialize(): void {\n *     this.channelController.initialize(this.broadcaster);\n *     this.logger.info('FilesStreamEndpoint initialized');\n *   }\n *\n *   static async create(\n *     config: StreamEndpointConfig,\n *     options: StreamEndpointCreateOptions\n *   ): Promise<FilesStreamEndpoint> {\n *     return new FilesStreamEndpoint(config, options);\n *   }\n * }\n * ```\n */\n\nimport { CoreLogger } from '@plyaz/logger';\nimport type {\n  StreamEndpointConfig,\n  StreamEndpointCreateOptions,\n  StreamBroadcasterInterface,\n  StreamResponse,\n  StreamErrorEvent,\n  StreamChannel,\n  StreamConnection,\n  StreamAuthResult,\n} from '@plyaz/types/core';\nimport type { ErrorResponse } from '@plyaz/types/errors';\nimport { STREAM_ERROR_CODES } from '@plyaz/types/errors';\nimport { StreamPackageError } from '@plyaz/errors';\nimport type { BaseChannelController } from '../channels/BaseChannelController';\n\n/**\n * BaseStreamEndpoint - Abstract base for stream endpoints\n *\n * Similar to BaseBackendDomainService but for real-time streaming.\n * Provides:\n * - Static create() for initialization (like domain services)\n * - Lifecycle hooks (beforeSubscribe, afterSubscribe, etc.)\n * - Channel controller management\n * - Error handling with standard ErrorResponse format\n * - Response formatting consistent with API patterns\n */\nexport abstract class BaseStreamEndpoint {\n  /**\n   * Static endpoint key (like serviceKey in domain services).\n   * Override in subclass.\n   */\n  static readonly endpointKey: string;\n\n  /** Logger instance */\n  protected readonly logger: CoreLogger;\n\n  /** Endpoint configuration */\n  protected readonly config: StreamEndpointConfig;\n\n  /** Broadcaster interface */\n  protected readonly broadcaster: StreamBroadcasterInterface;\n\n  /** Channel controller for this endpoint */\n  protected readonly channelController: BaseChannelController;\n\n  /** Unsubscribe functions for cleanup */\n  protected readonly unsubscribers: Array<() => void> = [];\n\n  constructor(config: StreamEndpointConfig, options: StreamEndpointCreateOptions) {\n    this.config = config;\n    this.broadcaster = options.broadcaster;\n\n    this.logger = new CoreLogger({\n      service: `StreamEndpoint:${config.endpointKey}`,\n    });\n\n    // Create channel controller for this endpoint\n    this.channelController = this.createChannelController();\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Abstract Methods (must implement)\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Create the channel controller for this endpoint.\n   * Called during construction.\n   */\n  protected abstract createChannelController(): BaseChannelController;\n\n  /**\n   * Initialize event subscriptions.\n   * Called by StreamRegistry during initialization.\n   */\n  abstract initialize(): void;\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Static Factory (like domain services)\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Create endpoint instance.\n   * Override in subclass with proper typing.\n   *\n   * @param config - Endpoint configuration\n   * @param options - Create options (broadcaster, auth, etc.)\n   * @returns Promise resolving to endpoint instance\n   */\n\n  static async create(\n    // eslint-disable-next-line no-unused-vars\n    _config: StreamEndpointConfig,\n    // eslint-disable-next-line no-unused-vars\n    _options: StreamEndpointCreateOptions\n  ): Promise<BaseStreamEndpoint> {\n    throw new StreamPackageError(\n      'Subclass must implement static create()',\n      STREAM_ERROR_CODES.TRANSPORT_NOT_SUPPORTED,\n      { context: { endpoint: this.endpointKey ?? 'unknown' } }\n    );\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Lifecycle Hooks (optional - override in subclass)\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Called before a connection subscribes to a channel.\n   * Return false to prevent subscription.\n   *\n   * @param channel - Channel being subscribed to\n   * @param connection - Connection subscribing\n   * @param authResult - Authentication result for the connection\n   * @returns true to allow subscription, false to deny\n   */\n  protected async beforeSubscribe?(\n    channel: StreamChannel,\n    connection: StreamConnection,\n    authResult: StreamAuthResult\n  ): Promise<boolean>;\n\n  /**\n   * Called after a connection subscribes to a channel.\n   *\n   * @param channel - Channel subscribed to\n   * @param connection - Connection that subscribed\n   */\n  protected async afterSubscribe?(\n    channel: StreamChannel,\n    connection: StreamConnection\n  ): Promise<void>;\n\n  /**\n   * Called before a connection unsubscribes from a channel.\n   *\n   * @param channel - Channel being unsubscribed from\n   * @param connectionId - Connection ID unsubscribing\n   */\n  protected async beforeUnsubscribe?(channel: StreamChannel, connectionId: string): Promise<void>;\n\n  /**\n   * Called when a new connection is established.\n   *\n   * @param connection - The new connection\n   */\n  protected async onConnect?(connection: StreamConnection): Promise<void>;\n\n  /**\n   * Called when a connection is closed.\n   *\n   * @param connectionId - ID of the closed connection\n   */\n  protected async onDisconnect?(connectionId: string): Promise<void>;\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Response Helpers (consistent with API patterns)\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Create a success response.\n   *\n   * @param data - Response data payload\n   * @param channel - Channel this response is for\n   * @param message - Human-readable message (default: 'Success')\n   * @returns Formatted StreamResponse\n   */\n  protected createResponse<T>(data: T, channel: string, message = 'Success'): StreamResponse<T> {\n    return {\n      success: true,\n      message,\n      data,\n      channel,\n      timestamp: Date.now(),\n      correlationId: crypto.randomUUID(),\n    };\n  }\n\n  /**\n   * Create an error response using standard ErrorResponse format.\n   *\n   * @param errors - Array of error details\n   * @param channel - Channel this error occurred on\n   * @returns Formatted StreamErrorEvent\n   */\n  protected createErrorResponse(\n    errors: Array<{ errorCode: string; message: string; field?: string }>,\n    channel: string\n  ): StreamErrorEvent {\n    // Convert to standard ErrorResponse format\n    const errorResponse: ErrorResponse = errors.map(e => ({\n      errorCode: e.errorCode,\n      message: e.message,\n      field: e.field,\n    }));\n\n    return {\n      success: false,\n      errors: errorResponse,\n      channel,\n      timestamp: Date.now(),\n      correlationId: crypto.randomUUID(),\n    };\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Public API\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Get endpoint configuration.\n   */\n  getConfig(): StreamEndpointConfig {\n    return this.config;\n  }\n\n  /**\n   * Get the endpoint key.\n   */\n  getEndpointKey(): string {\n    return this.config.endpointKey;\n  }\n\n  /**\n   * Get channel controller.\n   */\n  getChannelController(): BaseChannelController {\n    return this.channelController;\n  }\n\n  /**\n   * Check if endpoint handles a channel.\n   *\n   * @param channel - Channel to check\n   * @returns true if this endpoint handles the channel\n   */\n  handlesChannel(channel: StreamChannel): boolean {\n    return this.channelController.handlesChannel(channel);\n  }\n\n  /**\n   * Check if endpoint is enabled.\n   */\n  isEnabled(): boolean {\n    return this.config.enabled !== false;\n  }\n\n  /**\n   * Check if endpoint supports the current runtime.\n   *\n   * @param runtime - Runtime to check\n   * @returns true if supported\n   */\n  supportsRuntime(runtime: 'node' | 'bun' | 'deno' | 'edge'): boolean {\n    if (!this.config.supportedRuntimes) return true;\n    return this.config.supportedRuntimes.includes(runtime);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Lifecycle\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Dispose endpoint and cleanup.\n   */\n  dispose(): void {\n    this.logger.debug('Disposing endpoint', { key: this.config.endpointKey });\n\n    // Call all unsubscribe functions\n    this.unsubscribers.forEach(unsub => {\n      try {\n        unsub();\n      } catch (error) {\n        this.logger.error('Error during unsubscribe', { error });\n      }\n    });\n\n    // Clear unsubscribers\n    this.unsubscribers.length = 0;\n\n    // Dispose channel controller\n    this.channelController.dispose();\n\n    this.logger.debug('Endpoint disposed', { key: this.config.endpointKey });\n  }\n\n  /**\n   * Add an unsubscribe function to be called on dispose.\n   *\n   * @param unsub - Unsubscribe function\n   */\n  protected addUnsubscriber(unsub: () => void): void {\n    this.unsubscribers.push(unsub);\n  }\n}\n","/**\n * Base Channel Controller\n *\n * Abstract base class for channel event handlers.\n * Each controller manages a specific scope of channels (e.g., 'upload:', 'generate:', 'system').\n *\n * @example\n * ```typescript\n * class FilesChannelController extends BaseChannelController {\n *   constructor() {\n *     super({\n *       scope: 'files',\n *       patterns: ['upload:', 'uploads', 'generate:'],\n *     });\n *   }\n *\n *   initialize(broadcaster: StreamBroadcasterInterface): void {\n *     this.unsubscribers.push(\n *       CoreEventManager.on('files:upload:progress', event => {\n *         broadcaster.broadcastToChannel(`upload:${event.data.fileId}`, {\n *           event: 'progress',\n *           data: this.createResponse(event.data, `upload:${event.data.fileId}`),\n *         });\n *       })\n *     );\n *   }\n * }\n * ```\n */\n\nimport { CoreLogger } from '@plyaz/logger';\nimport type {\n  ChannelControllerConfig,\n  StreamBroadcasterInterface,\n  StreamResponse,\n  StreamErrorEvent,\n} from '@plyaz/types/core';\nimport type { ErrorResponse } from '@plyaz/types/errors';\n\n/**\n * BaseChannelController - Abstract base for channel event handlers\n *\n * Features:\n * - Pattern matching for channels\n * - Response formatting helpers (consistent with API patterns)\n * - Subscription management with automatic cleanup\n * - Error response using standard ErrorResponse format\n */\nexport abstract class BaseChannelController {\n  /** Channel scope (e.g., 'upload', 'generate', 'system') */\n  readonly scope: string;\n\n  /** Channel patterns this controller handles */\n  readonly patterns: string[];\n\n  /** Whether controller is enabled */\n  readonly enabled: boolean;\n\n  /** Logger instance */\n  protected readonly logger: CoreLogger;\n\n  /** Unsubscribe functions for cleanup */\n  protected unsubscribers: Array<() => void> = [];\n\n  constructor(config: ChannelControllerConfig) {\n    this.scope = config.scope;\n    this.patterns = config.patterns;\n    this.enabled = config.enabled ?? true;\n\n    this.logger = new CoreLogger({\n      service: `ChannelController:${config.scope}`,\n    });\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Abstract Methods\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Initialize event subscriptions.\n   * Called when the controller is registered with the broadcaster.\n   *\n   * @param broadcaster - The broadcaster to send messages through\n   */\n  abstract initialize(broadcaster: StreamBroadcasterInterface): void;\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Channel Matching\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Check if this controller handles a given channel.\n   *\n   * @param channel - Channel name to check\n   * @returns true if this controller handles the channel\n   */\n  handlesChannel(channel: string): boolean {\n    // Check exact match or scope prefix\n    return this.patterns.some(\n      pattern => channel === pattern || channel.startsWith(`${this.scope}:`)\n    );\n  }\n\n  /**\n   * Get all patterns this controller handles.\n   */\n  getPatterns(): string[] {\n    return [...this.patterns];\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Response Helpers (consistent with API ReturnResponseType)\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Create a success response.\n   *\n   * @param data - Response data payload\n   * @param channel - Channel this response is for\n   * @param message - Human-readable message (default: 'Success')\n   * @returns Formatted StreamResponse\n   */\n  protected createResponse<T>(data: T, channel: string, message = 'Success'): StreamResponse<T> {\n    return {\n      success: true,\n      message,\n      data,\n      channel,\n      timestamp: Date.now(),\n      correlationId: crypto.randomUUID(),\n    };\n  }\n\n  /**\n   * Create an error response using standard ErrorResponse format.\n   *\n   * @param errors - Array of error details\n   * @param channel - Channel this error occurred on\n   * @returns Formatted StreamErrorEvent\n   */\n  protected createErrorResponse(\n    errors: Array<{ errorCode: string; message: string; field?: string }>,\n    channel: string\n  ): StreamErrorEvent {\n    // Convert to standard ErrorResponse format\n    const errorResponse: ErrorResponse = errors.map(e => ({\n      errorCode: e.errorCode,\n      message: e.message,\n      field: e.field,\n    }));\n\n    return {\n      success: false,\n      errors: errorResponse,\n      channel,\n      timestamp: Date.now(),\n      correlationId: crypto.randomUUID(),\n    };\n  }\n\n  /**\n   * Create a single error response.\n   *\n   * @param errorCode - Error code\n   * @param message - Error message\n   * @param channel - Channel this error occurred on\n   * @param field - Optional field that caused the error\n   * @returns Formatted StreamErrorEvent\n   */\n  protected createSingleError(\n    errorCode: string,\n    message: string,\n    channel: string,\n    field?: string\n  ): StreamErrorEvent {\n    return this.createErrorResponse([{ errorCode, message, field }], channel);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Lifecycle\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Dispose controller and cleanup subscriptions.\n   */\n  dispose(): void {\n    this.logger.debug('Disposing controller', { scope: this.scope });\n\n    // Call all unsubscribe functions\n    this.unsubscribers.forEach(unsub => {\n      try {\n        unsub();\n      } catch (error) {\n        this.logger.error('Error during unsubscribe', { error });\n      }\n    });\n\n    this.unsubscribers = [];\n    this.logger.debug('Controller disposed', { scope: this.scope });\n  }\n\n  /**\n   * Add an unsubscribe function to be called on dispose.\n   *\n   * @param unsub - Unsubscribe function\n   */\n  protected addUnsubscriber(unsub: () => void): void {\n    this.unsubscribers.push(unsub);\n  }\n}\n","/**\n * Files Channel Controller\n *\n * Handles file-related streaming channels: upload, download, generate.\n * Listens to CoreEventManager events and broadcasts to connected clients.\n */\n\nimport { CoreEventManager } from '../../../events/CoreEventManager';\nimport { BaseChannelController } from '../../../events/streaming/channels/BaseChannelController';\nimport type {\n  StreamBroadcasterInterface,\n  FilesUploadStreamProgress,\n  FilesDownloadStreamProgress,\n  FilesGenerateStreamProgress,\n  CoreEvent,\n} from '@plyaz/types/core';\nimport { FILES_STREAM_CHANNEL_PREFIX, FILES_STREAM_BROADCAST_CHANNEL } from '@plyaz/types/core';\nimport { STORAGE_ERROR_CODES } from '@plyaz/types/errors';\n\n/**\n * FilesChannelController - Handles file streaming channels\n *\n * Channels:\n * - `upload:{fileId}` - Per-file upload progress\n * - `uploads` - Broadcast channel for all uploads\n * - `download:{fileId}` - Per-file download progress\n * - `downloads` - Broadcast channel for all downloads\n * - `generate:{templateId}` - Per-template generation progress\n * - `generations` - Broadcast channel for all generations\n */\nexport class FilesChannelController extends BaseChannelController {\n  constructor() {\n    super({\n      scope: 'files',\n      patterns: [\n        // Upload channels\n        FILES_STREAM_CHANNEL_PREFIX.UPLOAD,\n        FILES_STREAM_BROADCAST_CHANNEL.UPLOADS,\n        // Download channels\n        FILES_STREAM_CHANNEL_PREFIX.DOWNLOAD,\n        FILES_STREAM_BROADCAST_CHANNEL.DOWNLOADS,\n        // Generate channels\n        FILES_STREAM_CHANNEL_PREFIX.GENERATE,\n        FILES_STREAM_BROADCAST_CHANNEL.GENERATIONS,\n      ],\n    });\n  }\n\n  /**\n   * Initialize event subscriptions.\n   * Listens to CoreEventManager events and broadcasts to appropriate channels.\n   */\n  // eslint-disable-next-line max-lines-per-function\n  initialize(broadcaster: StreamBroadcasterInterface): void {\n    this.logger.debug('[FilesChannelController] initialize() called');\n\n    // Listen for upload progress events\n    this.addUnsubscriber(\n      CoreEventManager.on<FilesUploadStreamProgress>(\n        'upload:progress',\n        (event: CoreEvent<FilesUploadStreamProgress>) => {\n          const progress = event.data;\n          const channel = `${FILES_STREAM_CHANNEL_PREFIX.UPLOAD}${progress.fileId}`;\n\n          this.logger.debug('[FilesChannelController] Received upload:progress event', {\n            fileId: progress.fileId,\n            percentage: progress.percentage,\n            channel,\n            broadcastChannel: FILES_STREAM_BROADCAST_CHANNEL.UPLOADS,\n          });\n\n          // Broadcast to file-specific channel with prefixed event name\n          broadcaster.broadcastToChannel(channel, {\n            event: 'upload:progress',\n            data: this.createResponse(progress, channel, 'Upload progress'),\n          });\n\n          // Also broadcast to general uploads channel\n          broadcaster.broadcastToChannel(FILES_STREAM_BROADCAST_CHANNEL.UPLOADS, {\n            event: 'upload:progress',\n            data: this.createResponse(progress, FILES_STREAM_BROADCAST_CHANNEL.UPLOADS),\n          });\n        }\n      )\n    );\n\n    // Listen for upload completed events\n    this.addUnsubscriber(\n      CoreEventManager.on<FilesUploadStreamProgress>(\n        'upload:completed',\n        (event: CoreEvent<FilesUploadStreamProgress>) => {\n          const progress = event.data;\n          const channel = `${FILES_STREAM_CHANNEL_PREFIX.UPLOAD}${progress.fileId}`;\n\n          broadcaster.broadcastToChannel(channel, {\n            event: 'upload:completed',\n            data: this.createResponse(progress, channel, 'Upload completed'),\n          });\n\n          broadcaster.broadcastToChannel(FILES_STREAM_BROADCAST_CHANNEL.UPLOADS, {\n            event: 'upload:completed',\n            data: this.createResponse(progress, FILES_STREAM_BROADCAST_CHANNEL.UPLOADS),\n          });\n        }\n      )\n    );\n\n    // Listen for upload error events\n    this.addUnsubscriber(\n      CoreEventManager.on<FilesUploadStreamProgress>(\n        'upload:error',\n        (event: CoreEvent<FilesUploadStreamProgress>) => {\n          const progress = event.data;\n          const channel = `${FILES_STREAM_CHANNEL_PREFIX.UPLOAD}${progress.fileId}`;\n\n          broadcaster.broadcastToChannel(channel, {\n            event: 'upload:failed',\n            data: this.createSingleError(\n              STORAGE_ERROR_CODES.FILE_UPLOAD_FAILED,\n              progress.error ?? 'Upload failed',\n              channel\n            ),\n          });\n\n          broadcaster.broadcastToChannel(FILES_STREAM_BROADCAST_CHANNEL.UPLOADS, {\n            event: 'upload:failed',\n            data: this.createSingleError(\n              STORAGE_ERROR_CODES.FILE_UPLOAD_FAILED,\n              progress.error ?? 'Upload failed',\n              FILES_STREAM_BROADCAST_CHANNEL.UPLOADS\n            ),\n          });\n        }\n      )\n    );\n\n    // Listen for download progress events\n    this.addUnsubscriber(\n      CoreEventManager.on<FilesDownloadStreamProgress>(\n        'download:progress',\n        (event: CoreEvent<FilesDownloadStreamProgress>) => {\n          const progress = event.data;\n          const channel = `${FILES_STREAM_CHANNEL_PREFIX.DOWNLOAD}${progress.fileId}`;\n\n          this.logger.debug('[FilesChannelController] Received download:progress event', {\n            fileId: progress.fileId,\n            percentage: progress.percentage,\n            channel,\n            broadcastChannel: FILES_STREAM_BROADCAST_CHANNEL.DOWNLOADS,\n          });\n\n          // Broadcast to file-specific channel with prefixed event name\n          broadcaster.broadcastToChannel(channel, {\n            event: 'download:progress',\n            data: this.createResponse(progress, channel, 'Download progress'),\n          });\n\n          // Also broadcast to general downloads channel\n          broadcaster.broadcastToChannel(FILES_STREAM_BROADCAST_CHANNEL.DOWNLOADS, {\n            event: 'download:progress',\n            data: this.createResponse(progress, FILES_STREAM_BROADCAST_CHANNEL.DOWNLOADS),\n          });\n        }\n      )\n    );\n\n    // Listen for download completed events\n    this.addUnsubscriber(\n      CoreEventManager.on<FilesDownloadStreamProgress>(\n        'download:completed',\n        (event: CoreEvent<FilesDownloadStreamProgress>) => {\n          const progress = event.data;\n          const channel = `${FILES_STREAM_CHANNEL_PREFIX.DOWNLOAD}${progress.fileId}`;\n\n          broadcaster.broadcastToChannel(channel, {\n            event: 'download:completed',\n            data: this.createResponse(progress, channel, 'Download completed'),\n          });\n\n          broadcaster.broadcastToChannel(FILES_STREAM_BROADCAST_CHANNEL.DOWNLOADS, {\n            event: 'download:completed',\n            data: this.createResponse(progress, FILES_STREAM_BROADCAST_CHANNEL.DOWNLOADS),\n          });\n        }\n      )\n    );\n\n    // Listen for download error events\n    this.addUnsubscriber(\n      CoreEventManager.on<FilesDownloadStreamProgress>(\n        'download:error',\n        (event: CoreEvent<FilesDownloadStreamProgress>) => {\n          const progress = event.data;\n          const channel = `${FILES_STREAM_CHANNEL_PREFIX.DOWNLOAD}${progress.fileId}`;\n\n          broadcaster.broadcastToChannel(channel, {\n            event: 'download:failed',\n            data: this.createSingleError(\n              STORAGE_ERROR_CODES.FILE_DOWNLOAD_FAILED,\n              progress.error ?? 'Download failed',\n              channel\n            ),\n          });\n\n          broadcaster.broadcastToChannel(FILES_STREAM_BROADCAST_CHANNEL.DOWNLOADS, {\n            event: 'download:failed',\n            data: this.createSingleError(\n              STORAGE_ERROR_CODES.FILE_DOWNLOAD_FAILED,\n              progress.error ?? 'Download failed',\n              FILES_STREAM_BROADCAST_CHANNEL.DOWNLOADS\n            ),\n          });\n        }\n      )\n    );\n\n    // Listen for generate progress events\n    this.addUnsubscriber(\n      CoreEventManager.on<FilesGenerateStreamProgress>(\n        'generate:progress',\n        (event: CoreEvent<FilesGenerateStreamProgress>) => {\n          const data = event.data;\n          const channel = `${FILES_STREAM_CHANNEL_PREFIX.GENERATE}${data.templateId}`;\n\n          broadcaster.broadcastToChannel(channel, {\n            event: 'generate:progress',\n            data: this.createResponse(data, channel, 'Generation progress'),\n          });\n\n          broadcaster.broadcastToChannel(FILES_STREAM_BROADCAST_CHANNEL.GENERATIONS, {\n            event: 'generate:progress',\n            data: this.createResponse(data, FILES_STREAM_BROADCAST_CHANNEL.GENERATIONS),\n          });\n        }\n      )\n    );\n\n    this.logger.info('FilesChannelController initialized');\n  }\n\n  /**\n   * Override handlesChannel to match file patterns.\n   */\n  override handlesChannel(channel: string): boolean {\n    // Check if channel starts with any of the prefixes\n    return (\n      channel.startsWith(FILES_STREAM_CHANNEL_PREFIX.UPLOAD) ||\n      channel.startsWith(FILES_STREAM_CHANNEL_PREFIX.DOWNLOAD) ||\n      channel.startsWith(FILES_STREAM_CHANNEL_PREFIX.GENERATE) ||\n      channel === FILES_STREAM_BROADCAST_CHANNEL.UPLOADS ||\n      channel === FILES_STREAM_BROADCAST_CHANNEL.DOWNLOADS ||\n      channel === FILES_STREAM_BROADCAST_CHANNEL.GENERATIONS\n    );\n  }\n}\n","/**\n * Files Stream Endpoint\n *\n * Stream endpoint for file-related real-time events.\n * Handles upload, download, and document generation progress.\n *\n * @example\n * ```typescript\n * // Register in StreamRegistry\n * await StreamRegistry.initialize({\n *   broadcaster: streamServer.getBroadcaster(),\n *   endpoints: [\n *     { endpoint: FilesStreamEndpoint, config: { enabled: true } },\n *   ],\n * });\n * ```\n */\n\nimport { BaseStreamEndpoint } from '../../../events/streaming/base/BaseStreamEndpoint';\nimport { FilesChannelController } from './FilesChannelController';\nimport type { BaseChannelController } from '../../../events/streaming/channels/BaseChannelController';\nimport type { StreamEndpointConfig, StreamEndpointCreateOptions } from '@plyaz/types/core';\n\n/**\n * FilesStreamEndpoint - Handles file streaming events\n *\n * Channels managed:\n * - `upload:{fileId}` - Per-file upload progress\n * - `uploads` - All uploads broadcast\n * - `download:{fileId}` - Per-file download progress\n * - `downloads` - All downloads broadcast\n * - `generate:{templateId}` - Per-template generation progress\n * - `generations` - All generations broadcast\n */\nexport class FilesStreamEndpoint extends BaseStreamEndpoint {\n  /** Static endpoint key for registry lookup */\n  static readonly endpointKey = 'files';\n\n  /**\n   * Create channel controller for this endpoint.\n   */\n  protected createChannelController(): BaseChannelController {\n    return new FilesChannelController();\n  }\n\n  /**\n   * Initialize event subscriptions.\n   * Called by StreamRegistry during initialization.\n   */\n  initialize(): void {\n    this.logger.debug('[FilesStreamEndpoint] initialize() called');\n\n    // Initialize the channel controller with broadcaster\n    this.channelController.initialize(this.broadcaster);\n\n    this.logger.debug('[FilesStreamEndpoint] initialized', {\n      patterns: this.channelController.getPatterns(),\n    });\n  }\n\n  /**\n   * Static factory method for creating endpoint instances.\n   *\n   * @param config - Endpoint configuration\n   * @param options - Create options (broadcaster, auth, etc.)\n   * @returns Promise resolving to endpoint instance\n   */\n  static async create(\n    config: StreamEndpointConfig,\n    options: StreamEndpointCreateOptions\n  ): Promise<FilesStreamEndpoint> {\n    return new FilesStreamEndpoint(config, options);\n  }\n}\n","/**\n * Files Streaming Exports\n *\n * Stream endpoint and channel controller for file-related events.\n */\n\nexport { FilesStreamEndpoint } from './FilesStreamEndpoint';\nexport { FilesChannelController } from './FilesChannelController';\n","/**\n * Notifications Channel Controller\n *\n * Handles IN_APP notification streaming - broadcasts new notifications to users.\n * Only supports notification:created event - when a new notification is created,\n * it's broadcasted to the user's channel based on userId.\n *\n * NOTE: This controller handles IN_APP notifications only.\n * Email, SMS, and Push are handled by @plyaz/notifications package.\n *\n * Flow:\n * 1. Backend creates notification with user_id\n * 2. Backend emits notification:created via CoreEventManager\n * 3. This controller broadcasts to user:notifications:{userId}\n * 4. User's connected clients receive and display the notification\n */\n\nimport { CoreEventManager } from '../../../events/CoreEventManager';\nimport { BaseChannelController } from '../../../events/streaming/channels/BaseChannelController';\nimport type { StreamBroadcasterInterface, CoreEvent } from '@plyaz/types/core';\nimport {\n  NOTIFICATIONS_STREAM_CHANNEL_PREFIX,\n  NOTIFICATIONS_STREAM_BROADCAST_CHANNEL,\n} from '@plyaz/types/core';\nimport type { NotificationCreatedStreamData } from '@plyaz/types/core';\n\n/**\n * NotificationsChannelController - Broadcasts new notifications to users\n *\n * Channel:\n * - `user:notifications:{userId}` - User subscribes to receive their notifications\n */\nexport class NotificationsChannelController extends BaseChannelController {\n  constructor() {\n    super({\n      scope: 'notifications',\n      patterns: [\n        NOTIFICATIONS_STREAM_CHANNEL_PREFIX.USER,\n        NOTIFICATIONS_STREAM_BROADCAST_CHANNEL.ALL_NOTIFICATIONS,\n      ],\n    });\n  }\n\n  /**\n   * Initialize event subscriptions.\n   * Listens to notification:created and broadcasts to user's channel.\n   */\n  initialize(broadcaster: StreamBroadcasterInterface): void {\n    this.logger.debug('[NotificationsChannelController] initialize() called');\n\n    // Listen for notification:created events\n    this.addUnsubscriber(\n      CoreEventManager.on<NotificationCreatedStreamData>(\n        'notification:created',\n        (event: CoreEvent<NotificationCreatedStreamData>) => {\n          const data = event.data;\n\n          // userId is REQUIRED for routing\n          if (!data.userId) {\n            this.logger.warn(\n              '[NotificationsChannelController] notification:created missing userId',\n              {\n                notificationId: data.notificationId,\n              }\n            );\n            return;\n          }\n\n          const userChannel = `${NOTIFICATIONS_STREAM_CHANNEL_PREFIX.USER}${data.userId}`;\n\n          this.logger.debug('[NotificationsChannelController] notification:created', {\n            notificationId: data.notificationId,\n            userId: data.userId,\n            userChannel,\n          });\n\n          // Broadcast to user's notifications channel\n          broadcaster.broadcastToChannel(userChannel, {\n            event: 'notification:created',\n            data: this.createResponse(data, userChannel, 'New notification'),\n          });\n\n          // Also broadcast to general channel (for admin/debug)\n          broadcaster.broadcastToChannel(NOTIFICATIONS_STREAM_BROADCAST_CHANNEL.ALL_NOTIFICATIONS, {\n            event: 'notification:created',\n            data: this.createResponse(\n              data,\n              NOTIFICATIONS_STREAM_BROADCAST_CHANNEL.ALL_NOTIFICATIONS\n            ),\n          });\n        }\n      )\n    );\n\n    this.logger.info('NotificationsChannelController initialized (notification:created only)');\n  }\n\n  /**\n   * Override handlesChannel to match notification patterns.\n   */\n  override handlesChannel(channel: string): boolean {\n    return (\n      channel.startsWith(NOTIFICATIONS_STREAM_CHANNEL_PREFIX.USER) ||\n      channel === NOTIFICATIONS_STREAM_BROADCAST_CHANNEL.ALL_NOTIFICATIONS\n    );\n  }\n}\n","/**\n * Notifications Stream Endpoint\n *\n * Stream endpoint for IN_APP notification real-time events.\n * Handles notification lifecycle events (created, read, unread, deleted).\n *\n * NOTE: This endpoint handles IN_APP notifications only (bell icon notifications).\n * Email, SMS, and Push notification delivery is handled by @plyaz/notifications package.\n *\n * @example\n * ```typescript\n * // Register in StreamRegistry\n * await StreamRegistry.initialize({\n *   broadcaster: streamServer.getBroadcaster(),\n *   endpoints: [\n *     { endpoint: NotificationsStreamEndpoint, config: { enabled: true } },\n *   ],\n * });\n * ```\n */\n\nimport { BaseStreamEndpoint } from '../../../events/streaming/base/BaseStreamEndpoint';\nimport { NotificationsChannelController } from './NotificationsChannelController';\nimport type { BaseChannelController } from '../../../events/streaming/channels/BaseChannelController';\nimport type { StreamEndpointConfig, StreamEndpointCreateOptions } from '@plyaz/types/core';\n\n/**\n * NotificationsStreamEndpoint - Handles IN_APP notification streaming events\n *\n * Channels managed:\n * - `notification:{notificationId}` - Per-notification updates\n * - `user:notifications:{userId}` - All notifications for a specific user\n * - `notifications` - Broadcast channel for all notifications (current user)\n * - `notifications:unread` - Broadcast channel for unread notifications\n *\n * Events:\n * - `notification:created` - New in-app notification created\n * - `notification:read` - Notification marked as read\n * - `notification:unread` - Notification marked as unread\n * - `notification:deleted` - Notification deleted\n * - `notifications:batch` - Batch operations (e.g., mark all as read)\n */\nexport class NotificationsStreamEndpoint extends BaseStreamEndpoint {\n  /** Static endpoint key for registry lookup */\n  static readonly endpointKey = 'notifications';\n\n  /**\n   * Create channel controller for this endpoint.\n   */\n  protected createChannelController(): BaseChannelController {\n    return new NotificationsChannelController();\n  }\n\n  /**\n   * Initialize event subscriptions.\n   * Called by StreamRegistry during initialization.\n   */\n  initialize(): void {\n    this.logger.debug('[NotificationsStreamEndpoint] initialize() called');\n\n    // Initialize the channel controller with broadcaster\n    this.channelController.initialize(this.broadcaster);\n\n    this.logger.debug('[NotificationsStreamEndpoint] initialized (IN_APP notifications)', {\n      patterns: this.channelController.getPatterns(),\n    });\n  }\n\n  /**\n   * Static factory method for creating endpoint instances.\n   *\n   * @param config - Endpoint configuration\n   * @param options - Create options (broadcaster, auth, etc.)\n   * @returns Promise resolving to endpoint instance\n   */\n  static async create(\n    config: StreamEndpointConfig,\n    options: StreamEndpointCreateOptions\n  ): Promise<NotificationsStreamEndpoint> {\n    return new NotificationsStreamEndpoint(config, options);\n  }\n}\n","/**\n * Notifications Streaming\n *\n * Stream endpoint and channel controller for notification events.\n */\n\nexport { NotificationsChannelController } from './NotificationsChannelController';\nexport { NotificationsStreamEndpoint } from './NotificationsStreamEndpoint';\n","/**\n * System Channel Controller\n *\n * Handles system-level streaming channels: heartbeat, connection lifecycle.\n */\n\nimport { BaseChannelController } from '../../channels/BaseChannelController';\nimport type { StreamBroadcasterInterface } from '@plyaz/types/core';\nimport { SYSTEM_STREAM_CHANNEL } from '@plyaz/types/core';\n\n/**\n * SystemChannelController - Handles system streaming channels\n *\n * Channels:\n * - `system` - System-level events (heartbeat, connected, disconnected)\n */\nexport class SystemChannelController extends BaseChannelController {\n  /** Heartbeat interval timer */\n  private heartbeatTimer?: ReturnType<typeof setInterval>;\n\n  /** Heartbeat interval in milliseconds */\n  private readonly heartbeatInterval: number;\n\n  constructor(heartbeatInterval = 30000) {\n    super({\n      scope: 'system',\n      patterns: [SYSTEM_STREAM_CHANNEL.SYSTEM],\n    });\n    this.heartbeatInterval = heartbeatInterval;\n  }\n\n  /**\n   * Initialize event subscriptions.\n   * Sets up heartbeat broadcasting.\n   */\n  initialize(broadcaster: StreamBroadcasterInterface): void {\n    this.logger.debug('Initializing SystemChannelController');\n\n    // Start heartbeat timer\n    this.heartbeatTimer = setInterval(() => {\n      broadcaster.broadcastToChannel(SYSTEM_STREAM_CHANNEL.SYSTEM, {\n        event: 'heartbeat',\n        data: this.createResponse(\n          { timestamp: Date.now() },\n          SYSTEM_STREAM_CHANNEL.SYSTEM,\n          'Heartbeat'\n        ),\n      });\n    }, this.heartbeatInterval);\n\n    this.logger.info('SystemChannelController initialized', {\n      heartbeatInterval: this.heartbeatInterval,\n    });\n  }\n\n  /**\n   * Override handlesChannel to match system patterns.\n   */\n  override handlesChannel(channel: string): boolean {\n    return channel === SYSTEM_STREAM_CHANNEL.SYSTEM || channel.startsWith('system:');\n  }\n\n  /**\n   * Override dispose to clean up heartbeat timer.\n   */\n  override dispose(): void {\n    if (this.heartbeatTimer) {\n      clearInterval(this.heartbeatTimer);\n      this.heartbeatTimer = undefined;\n    }\n    super.dispose();\n  }\n\n  /**\n   * Broadcast a connection established event.\n   */\n  broadcastConnected(broadcaster: StreamBroadcasterInterface, connectionId: string): void {\n    broadcaster.broadcastToChannel(SYSTEM_STREAM_CHANNEL.SYSTEM, {\n      event: 'connected',\n      data: this.createResponse(\n        { connectionId, timestamp: Date.now() },\n        SYSTEM_STREAM_CHANNEL.SYSTEM,\n        'Connected'\n      ),\n    });\n  }\n\n  /**\n   * Broadcast a connection closed event.\n   */\n  broadcastDisconnected(broadcaster: StreamBroadcasterInterface, connectionId: string): void {\n    broadcaster.broadcastToChannel(SYSTEM_STREAM_CHANNEL.SYSTEM, {\n      event: 'disconnected',\n      data: this.createResponse(\n        { connectionId, timestamp: Date.now() },\n        SYSTEM_STREAM_CHANNEL.SYSTEM,\n        'Disconnected'\n      ),\n    });\n  }\n}\n","/**\n * System Stream Endpoint\n *\n * Stream endpoint for system-level events like heartbeat and connection lifecycle.\n *\n * @example\n * ```typescript\n * // Register in StreamRegistry\n * await StreamRegistry.initialize({\n *   broadcaster: streamServer.getBroadcaster(),\n *   endpoints: [\n *     { endpoint: SystemStreamEndpoint, config: { enabled: true } },\n *   ],\n * });\n * ```\n */\n\nimport { BaseStreamEndpoint } from '../../base/BaseStreamEndpoint';\nimport { SystemChannelController } from './SystemChannelController';\nimport type { BaseChannelController } from '../../channels/BaseChannelController';\nimport type {\n  StreamEndpointConfig,\n  StreamEndpointCreateOptions,\n  StreamConnection,\n} from '@plyaz/types/core';\n\n/**\n * SystemStreamEndpoint - Handles system-level streaming events\n *\n * Channels managed:\n * - `system` - System events (heartbeat, connected, disconnected)\n */\nexport class SystemStreamEndpoint extends BaseStreamEndpoint {\n  /** Static endpoint key for registry lookup */\n  static readonly endpointKey = 'system';\n\n  /** Heartbeat interval in milliseconds */\n  private readonly heartbeatInterval: number;\n\n  constructor(config: StreamEndpointConfig, options: StreamEndpointCreateOptions) {\n    super(config, options);\n    // Allow configuring heartbeat interval via config\n    const DEFAULT_HEARTBEAT_MS = 30000;\n    this.heartbeatInterval =\n      (config as { heartbeatInterval?: number }).heartbeatInterval ?? DEFAULT_HEARTBEAT_MS;\n  }\n\n  /**\n   * Create channel controller for this endpoint.\n   */\n  protected createChannelController(): BaseChannelController {\n    return new SystemChannelController(this.heartbeatInterval);\n  }\n\n  /**\n   * Initialize event subscriptions.\n   * Called by StreamRegistry during initialization.\n   */\n  initialize(): void {\n    this.logger.debug('Initializing SystemStreamEndpoint');\n\n    // Initialize the channel controller with broadcaster\n    this.channelController.initialize(this.broadcaster);\n\n    this.logger.info('SystemStreamEndpoint initialized', {\n      heartbeatInterval: this.heartbeatInterval,\n    });\n  }\n\n  /**\n   * Called when a new connection is established.\n   * Broadcasts a connected event.\n   */\n  protected override async onConnect(connection: StreamConnection): Promise<void> {\n    const controller = this.channelController as SystemChannelController;\n    controller.broadcastConnected(this.broadcaster, connection.id);\n  }\n\n  /**\n   * Called when a connection is closed.\n   * Broadcasts a disconnected event.\n   */\n  protected override async onDisconnect(connectionId: string): Promise<void> {\n    const controller = this.channelController as SystemChannelController;\n    controller.broadcastDisconnected(this.broadcaster, connectionId);\n  }\n\n  /**\n   * Static factory method for creating endpoint instances.\n   *\n   * @param config - Endpoint configuration\n   * @param options - Create options (broadcaster, auth, etc.)\n   * @returns Promise resolving to endpoint instance\n   */\n  static async create(\n    config: StreamEndpointConfig,\n    options: StreamEndpointCreateOptions\n  ): Promise<SystemStreamEndpoint> {\n    return new SystemStreamEndpoint(config, options);\n  }\n}\n","/**\n * System Stream Endpoint Exports\n */\n\nexport { SystemStreamEndpoint } from './SystemStreamEndpoint';\nexport { SystemChannelController } from './SystemChannelController';\n","/**\n * Stream Endpoints\n *\n * Domain-specific stream endpoints for real-time event broadcasting.\n *\n * Usage:\n * ```typescript\n * import { StreamRegistry, FilesStreamEndpoint, SystemStreamEndpoint } from '@plyaz/core/events/streaming';\n *\n * await StreamRegistry.initialize({\n *   broadcaster: streamServer.getBroadcaster(),\n *   endpoints: [\n *     { endpoint: FilesStreamEndpoint, config: { enabled: true } },\n *     { endpoint: SystemStreamEndpoint, config: { enabled: true } },\n *   ],\n * });\n * ```\n */\n\n// Files domain endpoints (re-exported from domain/files for convenience)\nexport { FilesStreamEndpoint, FilesChannelController } from '../../../domain/files/streaming';\n\n// Notifications domain endpoints (re-exported from domain/notifications for convenience)\nexport {\n  NotificationsStreamEndpoint,\n  NotificationsChannelController,\n} from '../../../domain/notifications/streaming';\n\n// System endpoints\nexport { SystemStreamEndpoint, SystemChannelController } from './system';\n","/**\n * Middleware Chain\n *\n * Runs a chain of middleware functions for stream connections.\n */\n\nimport { CoreLogger } from '@plyaz/logger';\nimport { StreamPackageError } from '@plyaz/errors';\nimport { STREAM_ERROR_CODES } from '@plyaz/types/errors';\nimport type {\n  StreamMiddleware,\n  StreamMiddlewareContext,\n  StreamMiddlewareResult,\n} from '@plyaz/types/core';\n\n/**\n * MiddlewareChain - Runs middleware in sequence\n *\n * Each middleware can:\n * - Continue to next middleware (return { continue: true })\n * - Stop the chain (return { continue: false, error: ... })\n * - Modify context (return { continue: true, context: { ... } })\n *\n * @example\n * ```typescript\n * const chain = new MiddlewareChain();\n * chain.use(rateLimitMiddleware);\n * chain.use(authMiddleware);\n *\n * const result = await chain.run(context);\n * if (!result.continue) {\n *   return new Response(result.error?.message, { status: 429 });\n * }\n * ```\n */\nexport class MiddlewareChain {\n  private readonly logger: CoreLogger;\n  private readonly middlewares: StreamMiddleware[] = [];\n\n  constructor() {\n    this.logger = new CoreLogger({ service: 'MiddlewareChain' });\n  }\n\n  /**\n   * Add a middleware to the chain.\n   *\n   * @param middleware - Middleware function to add\n   * @returns this for chaining\n   */\n  use(middleware: StreamMiddleware): this {\n    this.middlewares.push(middleware);\n    return this;\n  }\n\n  /**\n   * Run all middleware in sequence.\n   *\n   * @param initialContext - Initial context to pass to first middleware\n   * @returns Final result after all middleware have run\n   */\n  async run(initialContext: StreamMiddlewareContext): Promise<StreamMiddlewareResult> {\n    let context = { ...initialContext };\n\n    for (const middleware of this.middlewares) {\n      try {\n        const result = await middleware(context);\n\n        if (!result.continue) {\n          // Middleware stopped the chain\n          this.logger.debug('Middleware stopped chain', {\n            error: result.error?.message,\n          });\n          return result;\n        }\n\n        // Merge context updates\n        if (result.context) {\n          context = { ...context, ...result.context };\n        }\n      } catch (error) {\n        // Middleware threw an error\n        this.logger.error('Middleware error', { error });\n        return {\n          continue: false,\n          error:\n            error instanceof StreamPackageError\n              ? error\n              : new StreamPackageError(\n                  error instanceof Error ? error.message : String(error),\n                  STREAM_ERROR_CODES.UNKNOWN_ERROR\n                ),\n        };\n      }\n    }\n\n    // All middleware passed\n    return {\n      continue: true,\n      context,\n    };\n  }\n\n  /**\n   * Get the number of middleware in the chain.\n   */\n  get length(): number {\n    return this.middlewares.length;\n  }\n\n  /**\n   * Clear all middleware from the chain.\n   */\n  clear(): void {\n    this.middlewares.length = 0;\n  }\n}\n","/**\n * Rate Limit Middleware\n *\n * Limits connections and message rate per IP/user.\n */\n\nimport { StreamPackageError } from '@plyaz/errors';\nimport type {\n  StreamMiddleware,\n  StreamMiddlewareContext,\n  StreamMiddlewareResult,\n  RateLimitConfig,\n} from '@plyaz/types/core';\nimport { STREAM_ERROR_CODES } from '@plyaz/types/errors';\n\n/**\n * Time constants\n */\nconst MS_PER_SECOND = 1000;\n\n/**\n * Default rate limit configuration\n */\nconst DEFAULT_CONFIG: Required<RateLimitConfig> = {\n  maxConnectionsPerIp: 10,\n  maxMessagesPerSecond: 100,\n  windowMs: 60000, // 1 minute\n};\n\n/** Connection count by IP */\nconst connectionsByIp = new Map<string, Set<string>>();\n\n/** Message count by connection ID */\nconst messageCountByConnection = new Map<string, { count: number; resetAt: number }>();\n\n/**\n * Create a rate limit middleware.\n *\n * @param config - Rate limit configuration\n * @returns Middleware function\n *\n * @example\n * ```typescript\n * const middleware = createRateLimitMiddleware({\n *   maxConnectionsPerIp: 5,\n *   maxMessagesPerSecond: 50,\n * });\n *\n * chain.use(middleware);\n * ```\n */\nexport function createRateLimitMiddleware(config: RateLimitConfig = {}): StreamMiddleware {\n  const mergedConfig = { ...DEFAULT_CONFIG, ...config };\n\n  // eslint-disable-next-line complexity\n  return async (context: StreamMiddlewareContext): Promise<StreamMiddlewareResult> => {\n    const { connection } = context;\n\n    // Extract IP from connection metadata or use connection ID\n    const ip = (connection.metadata?.ip as string) ?? connection.id;\n\n    // Check connection limit per IP\n    if (!connectionsByIp.has(ip)) {\n      connectionsByIp.set(ip, new Set());\n    }\n\n    const connections = connectionsByIp.get(ip)!;\n\n    // Only check limit for new connections\n    if (!connections.has(connection.id)) {\n      if (connections.size >= mergedConfig.maxConnectionsPerIp) {\n        return {\n          continue: false,\n          error: new StreamPackageError(\n            `Rate limit exceeded: max ${mergedConfig.maxConnectionsPerIp} connections per IP`,\n            STREAM_ERROR_CODES.RATE_LIMITED\n          ),\n        };\n      }\n      connections.add(connection.id);\n    }\n\n    // Check message rate (if there's a message being processed)\n    if (context.message) {\n      const now = Date.now();\n      const rateInfo = messageCountByConnection.get(connection.id);\n\n      if (!rateInfo || now >= rateInfo.resetAt) {\n        // Reset window\n        messageCountByConnection.set(connection.id, {\n          count: 1,\n          resetAt: now + MS_PER_SECOND, // 1 second window for messages per second\n        });\n      } else {\n        if (rateInfo.count >= mergedConfig.maxMessagesPerSecond) {\n          return {\n            continue: false,\n            error: new StreamPackageError(\n              `Rate limit exceeded: max ${mergedConfig.maxMessagesPerSecond} messages per second`,\n              STREAM_ERROR_CODES.RATE_LIMITED\n            ),\n          };\n        }\n        rateInfo.count++;\n      }\n    }\n\n    return { continue: true };\n  };\n}\n\n/**\n * Remove a connection from IP tracking and clean up empty IP entries.\n */\nfunction removeConnectionFromIp(ipKey: string, connectionId: string): void {\n  const connections = connectionsByIp.get(ipKey);\n  if (!connections) return;\n\n  connections.delete(connectionId);\n  if (connections.size === 0) {\n    connectionsByIp.delete(ipKey);\n  }\n}\n\n/**\n * Find and remove a connection from all IP tracking entries.\n */\nfunction removeConnectionFromAllIps(connectionId: string): void {\n  for (const [ipKey, connections] of connectionsByIp) {\n    if (connections.has(connectionId)) {\n      removeConnectionFromIp(ipKey, connectionId);\n      break;\n    }\n  }\n}\n\n/**\n * Clean up rate limit tracking for a connection.\n * Call when a connection is closed.\n *\n * @param connectionId - Connection ID to clean up\n * @param ip - IP address of the connection\n */\nexport function cleanupRateLimitTracking(connectionId: string, ip?: string): void {\n  // Remove message tracking\n  messageCountByConnection.delete(connectionId);\n\n  // Remove from IP connection tracking\n  if (ip) {\n    removeConnectionFromIp(ip, connectionId);\n  } else {\n    removeConnectionFromAllIps(connectionId);\n  }\n}\n\n/**\n * Get current rate limit stats.\n */\nexport function getRateLimitStats(): {\n  connectionsByIp: Map<string, number>;\n  totalConnections: number;\n} {\n  const stats = new Map<string, number>();\n  let total = 0;\n\n  for (const [ip, connections] of connectionsByIp) {\n    stats.set(ip, connections.size);\n    total += connections.size;\n  }\n\n  return {\n    connectionsByIp: stats,\n    totalConnections: total,\n  };\n}\n","/**\n * Stream Middleware\n *\n * Middleware for stream connections including rate limiting.\n *\n * @example\n * ```typescript\n * import { MiddlewareChain, createRateLimitMiddleware } from '@plyaz/core/events/streaming';\n *\n * const chain = new MiddlewareChain();\n * chain.use(createRateLimitMiddleware({ maxConnectionsPerIp: 5 }));\n *\n * const result = await chain.run(context);\n * ```\n */\n\nexport { MiddlewareChain } from './MiddlewareChain';\nexport {\n  createRateLimitMiddleware,\n  cleanupRateLimitTracking,\n  getRateLimitStats,\n} from './RateLimitMiddleware';\n","/**\n * Streaming Module\n *\n * Real-time event streaming via SSE/WebSocket.\n * Structured for future extraction to @plyaz/events package.\n *\n * @example\n * ```ts\n * import { StreamServer } from '@plyaz/core/events/streaming';\n *\n * // Create stream server with builder pattern\n * const streamServer = StreamServer.create()\n *   .withAuth(new AnonymousAuthAdapter())\n *   .withSSE({ heartbeatInterval: 15000 })\n *   .build();\n *\n * // Next.js App Router\n * export const GET = streamServer.getHandler('nextjs');\n *\n * // Express\n * app.get('/stream', streamServer.getHandler('express'));\n *\n * // Client-side: Connect to stream\n * const { connected } = useStreamConnection({\n *   channels: ['uploads'],\n *   onMessage: (msg) => console.log(msg),\n * });\n * ```\n */\n\n// Re-export types from @plyaz/types (convenience for consumers)\nexport type {\n  // Connection types\n  StreamConnection,\n  StreamConnectionInfo,\n  StreamTransportType,\n  // Message types\n  StreamMessage,\n  StreamProgressData,\n  // Channel types\n  StreamChannel,\n  ChannelSubscription,\n  // Auth types\n  StreamAuthResult,\n  StreamAuthAdapterConfig,\n  TokenAuthAdapterConfig,\n  // Transport types\n  StreamTransportAdapterConfig,\n  // Manager types\n  StreamBroadcasterConfig,\n  StreamManagerStats,\n  // Progress types (from files domain)\n  FilesUploadStreamProgress,\n  FilesDownloadStreamProgress,\n  FilesGenerateStreamProgress,\n  FilesStreamProgressData,\n  // Hook types\n  UseStreamConnectionOptions,\n  UseStreamConnectionResult,\n} from '@plyaz/types/core';\n\n// StreamServer (main entry point)\nexport { StreamServer, StreamServerBuilder } from './StreamServer';\nexport type { StreamServerConfig } from './StreamServer';\n\n// Auth adapters\nexport { BaseAuthAdapter } from './auth';\nexport { AnonymousAuthAdapter, TokenAuthAdapter } from './auth';\n\n// Transport adapters\nexport { BaseTransportAdapter } from './transports';\nexport { SSETransportAdapter, WebSocketTransportAdapter } from './transports';\n\n// Framework adapters (classes only, types from @plyaz/types above)\nexport {\n  BaseFrameworkAdapter,\n  NextJSFrameworkAdapter,\n  ExpressFrameworkAdapter,\n  NestJSFrameworkAdapter,\n} from './frameworks';\n\n// Managers (for advanced usage)\nexport { StreamConnectionManager } from './StreamConnectionManager';\nexport { StreamBroadcaster } from './StreamBroadcaster';\n\n// Registry (for endpoint management)\nexport { StreamRegistry } from './StreamRegistry';\n\n// Base classes (for extending)\nexport { BaseStreamEndpoint } from './base/BaseStreamEndpoint';\nexport { BaseChannelController } from './channels/BaseChannelController';\n\n// Stream endpoints\nexport {\n  FilesStreamEndpoint,\n  FilesChannelController,\n  NotificationsStreamEndpoint,\n  NotificationsChannelController,\n  SystemStreamEndpoint,\n  SystemChannelController,\n} from './endpoints';\n\n// Middleware\nexport {\n  MiddlewareChain,\n  createRateLimitMiddleware,\n  cleanupRateLimitTracking,\n  getRateLimitStats,\n} from './middleware';\n\n// Constants (from @plyaz/config/streaming)\nexport {\n  STREAMING_DEFAULTS,\n  STREAMING_SERVER_CONFIG,\n  STREAMING_CLIENT_CONFIG,\n  STREAMING_BUFFER_CONFIG,\n  STREAMING_PACKAGE_CONFIG,\n  type StreamingDefaults,\n} from '@plyaz/config/streaming';\n","/**\n * Runtime Detection Utilities\n *\n * Utilities for detecting the current JavaScript runtime environment.\n */\n\nimport type { CoreRuntimeEnvironment } from '@plyaz/types/core';\nimport { PackageLogger } from '@plyaz/logger';\n\n// Type-safe access to alternative runtime globals\nconst getGlobalProperty = (key: string): unknown => {\n  return (globalThis as Record<string, unknown>)[key];\n};\n\nconst logger = new PackageLogger({ packageName: 'core', service: 'Runtime' });\n\n/**\n * Check if a module is available via require.resolve\n */\nfunction isModuleAvailable(moduleName: string): boolean {\n  const nodeRequire = globalThis.require;\n  if (!nodeRequire) return false;\n\n  const resolveModule = nodeRequire.resolve;\n  if (!resolveModule) return false;\n\n  try {\n    resolveModule(moduleName);\n    return true;\n  } catch {\n    return false;\n  }\n}\n\n/** Check for alternative runtimes (Deno, Bun) */\nfunction detectAltRuntime(): CoreRuntimeEnvironment | null {\n  if (typeof getGlobalProperty('Deno') !== 'undefined') return 'deno';\n  if (typeof getGlobalProperty('Bun') !== 'undefined') return 'bun';\n  return null;\n}\n\n/** Check for edge runtime */\nfunction detectEdgeRuntime(): CoreRuntimeEnvironment | null {\n  if (typeof getGlobalProperty('EdgeRuntime') !== 'undefined') return 'edge';\n  const isEdgeLike =\n    typeof globalThis.caches !== 'undefined' &&\n    typeof globalThis.Request !== 'undefined' &&\n    typeof process === 'undefined';\n  return isEdgeLike ? 'edge' : null;\n}\n\n/** Check for browser environment */\nfunction detectBrowser(): CoreRuntimeEnvironment | null {\n  if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n    return 'browser';\n  }\n  return null;\n}\n\n/** Check for Node.js framework */\nfunction detectNodeFramework(): CoreRuntimeEnvironment {\n  // Check for Nuxt (SSR)\n  if (process.env.__NUXT__ || process.env.NUXT_APP) return 'nuxt';\n  // Check for Next.js (SSR)\n  if (process.env.__NEXT_PRIVATE_ORIGIN || process.env.NEXT_RUNTIME) return 'nextjs';\n  // Check for NestJS via module detection\n  if (isModuleAvailable('@nestjs/core')) return 'nestjs';\n  // Check for Express via module detection\n  if (isModuleAvailable('express')) return 'express';\n  return 'node';\n}\n\n/**\n * Detect the current runtime environment\n */\nexport function detectRuntime(): CoreRuntimeEnvironment {\n  // Check alternative runtimes first\n  const altRuntime = detectAltRuntime();\n  if (altRuntime) return altRuntime;\n\n  // Check for edge runtime\n  const edgeRuntime = detectEdgeRuntime();\n  if (edgeRuntime) return edgeRuntime;\n\n  // Check for browser\n  const browser = detectBrowser();\n  if (browser) return browser;\n\n  // Server-side detection (Node.js based)\n  if (typeof process !== 'undefined' && process.versions?.node) {\n    return detectNodeFramework();\n  }\n\n  return 'unknown';\n}\n\n/**\n * Load environment variables from a .env file\n */\nexport async function loadEnvFile(envPath: string, verbose?: boolean): Promise<void> {\n  try {\n    const dotenv = await import('dotenv');\n    const result = dotenv.config({ path: envPath });\n\n    if (result.error) {\n      logger.warn(`Failed to load env file: ${result.error.message}`);\n    } else if (verbose) {\n      logger.info(`Loaded env from: ${envPath}`);\n    }\n  } catch {\n    logger.warn('dotenv not available, skipping .env file loading');\n  }\n}\n","// This eslint disable is an edge-case as we need to ensure that we're able to load CoreInitializer regardless if FE, BE or specific frameworks\n/**\n * CoreInitializer - Unified initialization for @plyaz/core\n *\n * Provides a single entry point to initialize all core services with\n * environment-aware configuration. Works across all JavaScript runtimes.\n *\n * @example Backend with full config\n * ```typescript\n * import { Core } from '@plyaz/core';\n *\n * await Core.initialize({\n *   envPath: '.env',\n *   db: { adapter: 'drizzle' },\n *   api: {\n *     env: 'production',\n *     baseURL: 'https://api.example.com',\n *   },\n * });\n *\n * // Access services\n * const db = Core.db;\n * const api = Core.api;\n * ```\n *\n * @example Frontend (Nuxt/Next.js)\n * ```typescript\n * import { Core } from '@plyaz/core';\n *\n * await Core.initialize({\n *   skipDb: true,\n *   api: { baseURL: 'https://api.example.com' },\n * });\n *\n * const api = Core.api;\n * ```\n *\n * @example NestJS with DI\n * ```typescript\n * // app.module.ts\n * import { CoreModule } from '@plyaz/core/adapters';\n * import { FeatureFlagModule } from '@plyaz/core/backend/featureFlags';\n *\n * @Module({\n *   imports: [\n *     CoreModule.forRoot({ envPath: '.env', db: { adapter: 'drizzle' } }),\n *     FeatureFlagModule.forRoot({ provider: 'database' }),\n *   ],\n * })\n * export class AppModule {}\n * ```\n */\n\nimport { PackageLogger } from '@plyaz/logger';\nimport { ApiClientService } from '../services/ApiClientService';\nimport { CoreEventManager } from '../events/CoreEventManager';\nimport { ServiceRegistry } from './ServiceRegistry';\nimport { StreamRegistry, StreamServer } from '../events/streaming';\nimport { STREAMING_DEFAULTS } from '@plyaz/config/streaming';\nimport type {\n  CoreRuntimeEnvironment,\n  CoreRuntimeContext,\n  CoreEnvVars,\n  CoreAppEnvironment,\n  CoreAppContext,\n  CoreApiInitOptions,\n  CoreServiceRuntime,\n  CoreInitOptionsBase as BaseCoreInitOptions,\n  CoreServicesResultBase,\n  CoreServiceEntry,\n  CoreDomainServiceInstance,\n  CoreSystemErrorPayload,\n  CoreFeatureFlagInitConfig,\n  CoreErrorHandlerInitConfig,\n  CoreCacheConfig,\n  CoreObservabilityConfig,\n  CoreDbServiceConfig,\n  CoreStorageConfig,\n  CoreNotificationConfig,\n  StreamEndpointEntry,\n  CoreDbServiceInstance,\n  CoreCacheServiceInstance,\n  CoreStorageServiceInstance,\n  CoreNotificationServiceInstance,\n} from '@plyaz/types/core';\nimport type { ObservabilityAdapter } from '@plyaz/types/observability';\nimport { ObservabilityService } from '../base/observability/ObservabilityService';\nimport { LoggerAdapter } from '../base/observability/LoggerAdapter';\nimport type { FeatureFlagValue, FeatureFlagStoreSlice } from '@plyaz/types/features';\nimport { ERROR_CODES, BACKEND_RUNTIMES, FRONTEND_RUNTIMES } from '@plyaz/types';\nimport { BaseError, CorePackageError, initializeErrorSystem } from '@plyaz/errors';\n// Core error handling (frontend-safe)\nimport {\n  initializeGlobalErrorHandler,\n  setEventEmitter,\n  clearEventEmitter,\n} from '@plyaz/errors/middleware';\n// ServerErrorMiddleware is backend-only, import dynamically where needed\nimport type {\n  ErrorStoreActions,\n  GlobalErrorHandler,\n  SerializedError,\n  PackageErrorLike,\n} from '@plyaz/types/errors';\nimport { ERROR_CATEGORY } from '@plyaz/types/errors';\nimport { detectRuntime, loadEnvFile } from '../utils/runtime';\nimport { generateId } from '../utils/common';\nimport { createStandaloneFeatureFlagStore, STORE_KEYS, type StoreKey } from '@plyaz/store';\nimport { CORE_EVENTS, type CoreEvent } from '@plyaz/types/core';\nimport type { RootStoreSlice, RootStoreHook } from '@plyaz/types/store';\nimport type { StoreApi } from 'zustand/vanilla';\nimport { getCoreDependency } from '../config/dependencies';\n\n// Constants\nconst DEFAULT_MAX_ERRORS = 100;\n\n/**\n * Core initialization options with specific types for this package\n */\nexport interface CoreInitOptions\n  extends Omit<\n    BaseCoreInitOptions<\n      Partial<CoreDbServiceConfig>,\n      CoreApiInitOptions,\n      CoreStorageConfig,\n      CoreNotificationConfig\n    >,\n    'observability' | 'skipObservability'\n  > {\n  /** Observability configuration */\n  observability?: CoreObservabilityConfig;\n  /** Skip observability initialization */\n  skipObservability?: boolean;\n  /**\n   * Global error handler configuration.\n   * Auto-initializes by default to catch all uncaught errors.\n   * Set `enabled: false` to disable if you want to use your own error handling.\n   *\n   * @example\n   * ```typescript\n   * await Core.initialize({\n   *   errorHandler: {\n   *     enabled: true,\n   *     logToConsole: true,\n   *     maxErrors: 200,\n   *     filter: (error) => error instanceof MyError,\n   *   },\n   * });\n   * ```\n   */\n  errorHandler?: CoreErrorHandlerInitConfig;\n\n  /** Feature flags configuration */\n  featureFlags?: CoreFeatureFlagInitConfig;\n\n  /**\n   * Domain services to auto-initialize (frontend pattern).\n   * Uses ServiceRegistry for automatic initialization.\n   *\n   * @example\n   * ```typescript\n   * await Core.initialize({\n   *   services: [\n   *     { service: FeatureFlagDomainService, config: { enabled: true } },\n   *     { service: ExampleDomainService, config: { enabled: true, useRealApi: true } },\n   *   ],\n   * });\n   *\n   * // Access via ServiceRegistry\n   * const flags = ServiceRegistry.get<FeatureFlagDomainService>('featureFlags');\n   * ```\n   */\n  services?: CoreServiceEntry[];\n}\n\n/**\n * Core initialization result with specific types for this package\n */\nexport type CoreServicesResult = CoreServicesResultBase<\n  CoreDbServiceInstance,\n  typeof ApiClientService,\n  CoreCacheServiceInstance,\n  ObservabilityAdapter,\n  CoreStorageServiceInstance,\n  CoreNotificationServiceInstance\n>;\n\n// Domain store keys are automatically derived from STORE_KEYS\n// Excluding global stores (error, featureFlags) which are read-only by default\n\n/**\n * Function type for getting core domain services.\n * Used by entry points to inject runtime-appropriate services.\n *\n * @internal This is injected by entry points, not used directly.\n */\nexport type GetCoreDomainServicesFn = (isFrontend: boolean) => Promise<CoreServiceEntry[]>;\n\n/**\n * Injected function to get core domain services.\n * Set by entry points (entry-backend.ts) before Core.initialize().\n * Frontend entries don't set this - they just don't load default services.\n */\nlet _getCoreDomainServices: GetCoreDomainServicesFn | null = null;\n\n/**\n * Set the function to get core domain services.\n * Called by entry-backend.ts to inject the backend-aware service loader.\n *\n * @internal Used by entry points only.\n */\nexport function setGetCoreDomainServices(fn: GetCoreDomainServicesFn): void {\n  _getCoreDomainServices = fn;\n}\n\n/**\n * Function type for getting core stream endpoints.\n * Used by entry points to inject backend stream endpoints.\n *\n * @internal This is injected by entry points, not used directly.\n */\nexport type GetCoreStreamEndpointsFn = () => Promise<StreamEndpointEntry[]>;\n\n/**\n * Injected function to get core stream endpoints.\n * Set by entry points (entry-backend.ts) before Core.initialize().\n * Frontend entries don't set this - streaming is backend-only.\n */\nlet _getCoreStreamEndpoints: GetCoreStreamEndpointsFn | null = null;\n\n/**\n * Set the function to get core stream endpoints.\n * Called by entry-backend.ts to inject the backend stream endpoint loader.\n *\n * @internal Used by entry points only.\n */\nexport function setGetCoreStreamEndpoints(fn: GetCoreStreamEndpointsFn): void {\n  _getCoreStreamEndpoints = fn;\n}\n\n/**\n * Global singleton state to handle module duplication with local linking.\n * When packages are linked locally, multiple copies of this module may be loaded.\n * Using globalThis ensures all copies share the same state.\n */\nconst CORE_GLOBAL_KEY = '__PLYAZ_CORE_SINGLETON__';\n\ninterface CoreGlobalState {\n  initialized: boolean;\n  initPromise: Promise<CoreServicesResult> | null;\n  coreServices: CoreServicesResult;\n  initOptions: CoreInitOptions;\n  logger: PackageLogger | null;\n  loggerTransport: 'pino' | 'console';\n}\n\n/** Get or create the global Core state */\nconst state = (): CoreGlobalState => {\n  const g = globalThis as unknown as Record<string, CoreGlobalState>;\n  g[CORE_GLOBAL_KEY] ??= {\n    initialized: false,\n    initPromise: null,\n    coreServices: {\n      db: null,\n      api: null,\n      cache: null,\n      observability: null,\n      storage: null,\n      notifications: null,\n      env: {},\n      runtime: 'unknown',\n      appContext: 'webapp',\n    },\n    initOptions: {},\n    logger: null,\n    loggerTransport: 'pino',\n  };\n  return g[CORE_GLOBAL_KEY];\n};\n\nexport class Core {\n  // ─────────────────────────────────────────────────────────────────────────\n  // Global state accessors (delegates to globalThis for module deduplication)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  private static get initialized(): boolean {\n    return state().initialized;\n  }\n  private static set initialized(value: boolean) {\n    state().initialized = value;\n  }\n\n  private static get _initPromise(): Promise<CoreServicesResult> | null {\n    return state().initPromise;\n  }\n  private static set _initPromise(value: Promise<CoreServicesResult> | null) {\n    state().initPromise = value;\n  }\n\n  private static get _coreServices(): CoreServicesResult {\n    return state().coreServices;\n  }\n  private static set _coreServices(value: CoreServicesResult) {\n    state().coreServices = value;\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Logger (also uses global state)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /** Get or create the Core logger */\n  private static get logger(): PackageLogger {\n    const s = state();\n    s.logger ??= new PackageLogger({\n      packageName: 'core',\n      service: 'Core',\n      transport: s.loggerTransport,\n    });\n    return s.logger;\n  }\n\n  /** Configure logger transport (call before first log) */\n  private static configureLogger(transport?: 'pino' | 'console'): void {\n    const s = state();\n    if (transport && transport !== s.loggerTransport) {\n      s.loggerTransport = transport;\n      s.logger = null; // Reset so it gets recreated with new transport\n    }\n  }\n\n  /** Get the configured logger transport */\n  static get loggerTransport(): 'pino' | 'console' {\n    return state().loggerTransport;\n  }\n\n  /**\n   * Log a message during initialization.\n   * Uses PackageLogger, respects verbose flag.\n   */\n  private static log(message: string, verbose?: boolean, data?: Record<string, unknown>): void {\n    if (!verbose) return;\n    if (data) {\n      Core.logger.info(message, data);\n    } else {\n      Core.logger.info(message);\n    }\n  }\n\n  /**\n   * Log a debug message during initialization.\n   */\n  private static logDebug(\n    message: string,\n    verbose?: boolean,\n    data?: Record<string, unknown>\n  ): void {\n    if (!verbose) return;\n    if (data) {\n      Core.logger.debug(message, data);\n    } else {\n      Core.logger.debug(message);\n    }\n  }\n\n  /**\n   * Observability configuration\n   */\n  private static _observabilityConfig: CoreObservabilityConfig = {};\n\n  /**\n   * Global error handler instance\n   */\n  private static _errorHandler: GlobalErrorHandler | null = null;\n\n  /**\n   * Error handler configuration\n   */\n  private static _errorConfig: CoreErrorHandlerInitConfig = {};\n\n  /**\n   * HTTP error handler/middleware based on runtime.\n   * Auto-created during initialization.\n   */\n  private static _httpErrorHandler: unknown = null;\n\n  /**\n   * Event listener cleanup functions\n   */\n  private static _eventCleanupFns: (() => void)[] = [];\n\n  /**\n   * Feature flag configuration\n   */\n  private static _flagConfig: CoreFeatureFlagInitConfig = {};\n\n  /** Full init options (from global state for configureNestApp and other runtime config) */\n  private static get _initOptions(): CoreInitOptions {\n    return state().initOptions;\n  }\n  private static set _initOptions(value: CoreInitOptions) {\n    state().initOptions = value;\n  }\n\n  /**\n   * Root store instance (contains errors, feature flags, and all other slices)\n   * Initialized during Core.initialize() - frontend uses React hook store, backend uses vanilla store\n   * All store access should go through Core.rootStore - no separate stores needed\n   */\n  private static _rootStore: StoreApi<RootStoreSlice> | null = null;\n\n  /**\n   * Injected store hook for frontend (set via setRootStoreHook before initialize).\n   * This is used instead of directly importing from @plyaz/store to prevent\n   * duplicate store instances when bundlers create multiple module copies.\n   */\n  private static _injectedStoreHook: RootStoreHook | null = null;\n\n  /**\n   * Set the root store hook for frontend use.\n   * Must be called before Core.initialize() when running in browser.\n   * PlyazProvider calls this automatically with the store prop.\n   *\n   * @param store - The useRootStore hook from @plyaz/store\n   */\n  public static setRootStoreHook(store: RootStoreHook): void {\n    Core._injectedStoreHook = store;\n  }\n\n  /**\n   * Setup environment and context\n   */\n  private static async setupEnvironment(options: CoreInitOptions): Promise<CoreAppEnvironment> {\n    const { envPath, environment, appContext, env, verbose } = options;\n\n    Core._coreServices.appContext = appContext ?? 'webapp';\n    Core.log(`App context: ${Core._coreServices.appContext}`, verbose);\n\n    const globalEnvironment: CoreAppEnvironment =\n      environment ?? (process.env.NODE_ENV as CoreAppEnvironment) ?? 'development';\n    Core.log(`Global environment: ${globalEnvironment}`, verbose);\n\n    Core._coreServices.runtime = detectRuntime();\n    Core.log(`Detected runtime: ${Core._coreServices.runtime}`, verbose);\n\n    if (envPath) await loadEnvFile(envPath, verbose);\n    Core._coreServices.env = { ...process.env, ...env };\n\n    return globalEnvironment;\n  }\n\n  /**\n   * Initialize a service with error handling\n   */\n  private static async initService<T>(\n    name: string,\n    init: () => Promise<T>,\n    verbose?: boolean\n  ): Promise<T | undefined> {\n    try {\n      Core.log(`Initializing ${name}...`, verbose);\n      const result = await init();\n      Core.log(`${name} initialized`, verbose);\n      return result;\n    } catch (error) {\n      Core.logger.error(`Failed to initialize ${name}`, {\n        error: (error as Error).message,\n      });\n      return undefined;\n    }\n  }\n\n  /** Initialize error handler if enabled */\n  private static async initErrorHandlerIfEnabled(options: CoreInitOptions): Promise<void> {\n    const { errorHandler: config, verbose } = options;\n    if (config?.enabled === false) {\n      Core.log('Global error handler disabled by configuration', verbose);\n      return;\n    }\n    await Core.initService(\n      'error handler',\n      async () => {\n        await Core.initializeErrorHandler(config, verbose);\n        Core.subscribeToErrorEvents(verbose);\n      },\n      verbose\n    );\n  }\n\n  /** Initialize API client if not skipped */\n  private static async initApiIfEnabled(\n    options: CoreInitOptions,\n    env: CoreAppEnvironment\n  ): Promise<void> {\n    const { api: apiConfig, skipApi, verbose } = options;\n    if (skipApi) return;\n\n    await Core.initService(\n      'API client',\n      async () => {\n        await Core.initializeApi(apiConfig, env, verbose);\n        Core._coreServices.api = ApiClientService;\n        Core.log('API client service initialized', verbose);\n      },\n      verbose\n    );\n    Core._coreServices.api = ApiClientService;\n  }\n\n  /** Initialize cache service if not skipped (backend-only due to ioredis dependency) */\n  private static async initCacheIfEnabled(options: CoreInitOptions): Promise<void> {\n    const { cache: cacheConfig, skipCache, verbose } = options;\n    if (skipCache) {\n      Core.log('Cache service skipped (skipCache: true)', verbose);\n      return;\n    }\n\n    // Skip cache initialization if no config provided\n    if (!cacheConfig) {\n      Core.log('Cache service skipped (no config provided)', verbose);\n      return;\n    }\n\n    // Skip on frontend runtimes (CacheService pulls in ioredis which requires Node.js)\n    if (Core.isFrontend) {\n      Core.log('Cache service skipped (frontend runtime detected)', verbose);\n      return;\n    }\n\n    await Core.initService(\n      'cache',\n      async () => {\n        await Core.initializeCache(cacheConfig as CoreCacheConfig, verbose);\n        const CacheService = getCoreDependency('CacheService');\n        if (CacheService) {\n          Core._coreServices.cache = CacheService.getInstance();\n          Core.log('Cache service initialized', verbose);\n        }\n      },\n      verbose\n    );\n  }\n\n  /** Initialize observability if not skipped */\n  private static async initObservabilityIfEnabled(\n    options: CoreInitOptions,\n    globalEnvironment: CoreAppEnvironment\n  ): Promise<void> {\n    const { observability: observabilityConfig, skipObservability, verbose } = options;\n    if (skipObservability) {\n      Core.log('Observability service skipped (skipObservability: true)', verbose);\n      return;\n    }\n\n    // Always use ObservabilityService - it adds LoggerAdapter by default\n    const config = observabilityConfig ?? { enabled: true };\n\n    await Core.initService(\n      'observability',\n      async () => {\n        await Core.initializeObservability(config, verbose, globalEnvironment);\n        Core.log('Observability service initialized', verbose);\n      },\n      verbose\n    );\n  }\n\n  /** Initialize storage service if not skipped (backend-only) */\n  private static async initStorageIfEnabled(options: CoreInitOptions): Promise<void> {\n    const { storage: storageConfig, skipStorage, verbose } = options;\n\n    // Skip if explicitly disabled\n    if (skipStorage) {\n      Core.log('Storage service skipped (skipStorage: true)', verbose);\n      return;\n    }\n\n    // Skip if no config provided\n    if (!storageConfig) {\n      Core.log('Storage service skipped (no config provided)', verbose);\n      return;\n    }\n\n    // Skip on frontend runtimes (storage is backend-only)\n    if (Core.isFrontend) {\n      Core.log('Storage service skipped (frontend runtime detected)', verbose);\n      return;\n    }\n\n    await Core.initService(\n      'storage',\n      async () => {\n        const StorageService = getCoreDependency('StorageService');\n        if (!StorageService) {\n          Core.log('Storage service skipped (dependency not registered)', verbose);\n          return;\n        }\n        await StorageService.initialize(storageConfig);\n        Core._coreServices.storage = StorageService.getInstance();\n        Core.log('Storage service initialized', verbose);\n      },\n      verbose\n    );\n  }\n\n  /** Initialize notifications service if not skipped (backend-only) */\n  private static async initNotificationsIfEnabled(options: CoreInitOptions): Promise<void> {\n    const { notifications: notificationsConfig, skipNotifications, verbose } = options;\n\n    // Skip if explicitly disabled\n    if (skipNotifications) {\n      Core.log('Notifications service skipped (skipNotifications: true)', verbose);\n      return;\n    }\n\n    // Skip if no config provided\n    if (!notificationsConfig) {\n      Core.log('Notifications service skipped (no config provided)', verbose);\n      return;\n    }\n\n    // Skip on frontend runtimes (notifications is backend-only)\n    if (Core.isFrontend) {\n      Core.log('Notifications service skipped (frontend runtime detected)', verbose);\n      return;\n    }\n\n    await Core.initService(\n      'notifications',\n      async () => {\n        const NotificationService = getCoreDependency('NotificationService');\n        if (!NotificationService) {\n          Core.log('Notifications service skipped (dependency not registered)', verbose);\n          return;\n        }\n        await NotificationService.initialize(notificationsConfig);\n        Core._coreServices.notifications = NotificationService.getInstance();\n        Core.log('Notifications service initialized', verbose);\n      },\n      verbose\n    );\n  }\n\n  /**\n   * StreamServer instance (created during streaming initialization)\n   */\n  private static _streamServer: InstanceType<typeof StreamServer> | null = null;\n\n  /**\n   * Get the stream server instance (if initialized)\n   */\n  static get streamServer(): InstanceType<typeof StreamServer> | null {\n    return Core._streamServer;\n  }\n\n  /**\n   * Initialize streaming service (SSE/WebSocket real-time events)\n   *\n   * Sets up StreamServer and StreamRegistry with domain endpoints.\n   * Streaming is backend-only for server-sent events.\n   *\n   * @param options - Core init options with streaming config\n   */\n  private static async initStreamingIfConfigured(options: CoreInitOptions): Promise<void> {\n    const { streaming: streamConfig, skipStreaming, verbose } = options;\n\n    // Skip if explicitly disabled\n    if (skipStreaming) {\n      Core.log('Streaming service skipped (skipStreaming: true)', verbose);\n      return;\n    }\n\n    // Skip if no config or disabled\n    if (!streamConfig || streamConfig.enabled === false) {\n      Core.log('Streaming service skipped (not configured or disabled)', verbose);\n      return;\n    }\n\n    // Skip on frontend (streaming is server-side only)\n    if (Core.isFrontend) {\n      Core.log('Streaming service skipped (frontend runtime)', verbose);\n      return;\n    }\n\n    await Core.initService(\n      'streaming',\n      // eslint-disable-next-line complexity\n      async () => {\n        // Create stream server with config\n        const serverConfig = streamConfig.server ?? {};\n        Core._streamServer = StreamServer.create()\n          .withSSE({\n            heartbeatInterval:\n              serverConfig.heartbeatInterval ?? STREAMING_DEFAULTS.HEARTBEAT_INTERVAL_MS,\n            maxConnections: serverConfig.maxConnections ?? STREAMING_DEFAULTS.MAX_CONNECTIONS,\n          })\n          .withDefaultChannels(\n            (serverConfig.defaultChannels ?? STREAMING_DEFAULTS.DEFAULT_CHANNELS) as never\n          )\n          .build();\n\n        // Initialize server\n        Core._streamServer.initialize();\n\n        // Get endpoints from config or use injected defaults\n        let endpoints = streamConfig.endpoints;\n        if (!endpoints && _getCoreStreamEndpoints) {\n          endpoints = await _getCoreStreamEndpoints();\n        }\n\n        // Skip if no endpoints available\n        if (!endpoints || endpoints.length === 0) {\n          Core.log('Streaming: No endpoints configured, skipping StreamRegistry', verbose);\n          return;\n        }\n\n        // Debug: Log endpoints being registered\n        Core.log('Streaming endpoints to register', verbose, {\n          count: endpoints.length,\n          endpoints: endpoints.map(e => ({\n            key: e.endpoint?.endpointKey,\n            enabled: e.config?.enabled,\n            name: e.config?.name,\n            channels: e.config?.channels,\n          })),\n        });\n\n        // Initialize StreamRegistry with endpoints\n        await StreamRegistry.initialize({\n          broadcaster: Core._streamServer.getBroadcaster(),\n          endpoints,\n        });\n\n        Core.log('Streaming service initialized', verbose, {\n          endpoints: StreamRegistry.getRegisteredKeys(),\n          channels: serverConfig.defaultChannels ?? ['uploads', 'system'],\n        });\n      },\n      verbose\n    );\n  }\n\n  /**\n   * Initialize domain services\n   *\n   * Loads core domain services using the injected loader (if available),\n   * then merges with any user-provided services.\n   * User-provided service configs override core defaults.\n   *\n   * Note: Frontend entries don't inject a loader, so they only use user-provided services.\n   */\n  private static async initDomainServicesIfConfigured(\n    options: CoreInitOptions,\n    globalEnvironment: CoreAppEnvironment\n  ): Promise<void> {\n    const { api: apiConfig, services: userServices, verbose } = options;\n    const runtime = Core._coreServices.runtime;\n\n    // Load core services using injected loader (backend sets this, frontend doesn't)\n    const coreDomainServices = _getCoreDomainServices\n      ? await _getCoreDomainServices(Core.isFrontend)\n      : [];\n\n    // Merge core services with user-provided services\n    // User services can override core service configs by using the same service class\n    const coreServiceKeys = new Set(coreDomainServices.map(s => s.service.serviceKey));\n    const userOverrides = (userServices ?? []).filter(s =>\n      coreServiceKeys.has(s.service.serviceKey)\n    );\n    const additionalUserServices = (userServices ?? []).filter(\n      s => !coreServiceKeys.has(s.service.serviceKey)\n    );\n\n    // Build merged services: core (with overrides applied) + additional user services\n    const mergedServices: CoreServiceEntry[] = coreDomainServices\n      .map(coreService => {\n        const override = userOverrides.find(\n          u => u.service.serviceKey === coreService.service.serviceKey\n        );\n        return override\n          ? { ...coreService, config: { ...coreService.config, ...override.config } }\n          : coreService;\n      })\n      .concat(additionalUserServices);\n\n    // Skip if somehow no services\n    if (mergedServices.length === 0) return;\n\n    await Core.initService(\n      'domain services',\n      async () => {\n        Core.log('Initializing domain services via ServiceRegistry...', verbose);\n        Core.logDebug('Core services', verbose, {\n          services: coreDomainServices.map(s => s.service.serviceKey),\n        });\n        if (userServices?.length) {\n          Core.logDebug('User services', verbose, {\n            services: userServices.map(s => s.service.serviceKey),\n          });\n        }\n        await ServiceRegistry.initialize({\n          environment: globalEnvironment,\n          runtime,\n          apiClient: apiConfig ? { baseURL: apiConfig.baseURL, ...apiConfig } : undefined,\n          db: options.db,\n          cache: options.cache,\n          storage: options.storage,\n          notifications: options.notifications,\n          observability: options.observability,\n          services: mergedServices,\n          stores: {\n            // Returns specific slice from namespaced root store (type-safe)\n            getStore: <K extends keyof RootStoreSlice>(key: K): RootStoreSlice[K] | undefined =>\n              Core.getDomainStore(key),\n          },\n        });\n        Core.log('Domain services initialized', verbose, {\n          keys: ServiceRegistry.getInitializedKeys(),\n        });\n      },\n      verbose\n    );\n  }\n\n  /**\n   * Initialize all core services\n   */\n\n  static async initialize(options: CoreInitOptions = {}): Promise<CoreServicesResult> {\n    // Store options for runtime access (e.g., configureNestApp)\n    Core._initOptions = options;\n\n    // Configure logger transport first (before any logs)\n    Core.configureLogger(options.logger?.transport);\n\n    // Already initialized - return immediately\n    if (Core.initialized) {\n      Core.log('Already initialized, returning existing services', options.verbose);\n      return Core._coreServices;\n    }\n\n    // Initialization in progress - return existing promise to avoid race conditions\n    if (Core._initPromise) {\n      Core.log('Initialization in progress, waiting...', options.verbose);\n      return Core._initPromise;\n    }\n\n    // Start initialization and store the promise\n    Core._initPromise = Core.performInitialization(options);\n    return Core._initPromise;\n  }\n\n  /**\n   * Internal initialization logic - called only once\n   */\n  private static async performInitialization(\n    options: CoreInitOptions\n  ): Promise<CoreServicesResult> {\n    const { db: dbConfig, featureFlags: featureFlagsConfig, skipDb, verbose } = options;\n    const globalEnvironment = await Core.setupEnvironment(options);\n\n    await Core.initErrorHandlerIfEnabled(options);\n\n    if (!Core.shouldSkipDbService(skipDb, verbose)) {\n      const db = await Core.initService(\n        'database',\n        () => Core.initializeDb(dbConfig, verbose),\n        verbose\n      );\n      Core._coreServices.db = db ?? null;\n    }\n\n    await Core.initApiIfEnabled(options, globalEnvironment);\n\n    await Core.initCacheIfEnabled(options);\n\n    await Core.initObservabilityIfEnabled(options, globalEnvironment);\n\n    await Core.initStorageIfEnabled(options);\n\n    await Core.initNotificationsIfEnabled(options);\n\n    await Core.initStreamingIfConfigured(options);\n\n    if (featureFlagsConfig?.enabled !== false) {\n      await Core.initService(\n        'feature flags',\n        () => Core.initializeFeatureFlags(featureFlagsConfig, verbose),\n        verbose\n      );\n    }\n\n    await Core.initDomainServicesIfConfigured(options, globalEnvironment);\n\n    Core.initialized = true;\n    Core.log('Initialization complete', verbose);\n    return Core._coreServices;\n  }\n\n  /**\n   * Get initialized domain service keys\n   * Use Core.getService(key) or ServiceRegistry.get(key) to access individual services.\n   *\n   * @example\n   * ```typescript\n   * const keys = Core.serviceKeys;\n   * const exampleService = Core.getService('example');\n   * ```\n   */\n  static get serviceKeys(): string[] {\n    return ServiceRegistry.getInitializedKeys();\n  }\n\n  /**\n   * All stores - unified access to ALL slices from single root store\n   * All stores (global + domain) are slices of ONE Zustand store instance.\n   *\n   * **Auto-generated from STORE_KEYS** - No manual registration needed!\n   *\n   * **Benefits:**\n   * - ✅ Access without hooks (store.getState())\n   * - ✅ Cross-slice subscriptions work automatically\n   * - ✅ Single source of truth\n   * - ✅ Automatically scales with new stores\n   *\n   * @example\n   * const errorStore = Core.stores.error;        // Global slice\n   * const flagsStore = Core.stores.featureFlags; // Global slice\n   * const exampleStore = Core.stores.example;    // Domain slice\n   */\n  static get stores(): Record<StoreKey, RootStoreSlice | undefined> {\n    const rootState = Core._rootStore?.getState();\n\n    // Dynamically generate store accessors from STORE_KEYS\n    return Object.values(STORE_KEYS).reduce(\n      (acc, key) => {\n        Object.defineProperty(acc, key, {\n          get: () => rootState,\n          enumerable: true,\n        });\n        return acc;\n      },\n      {} as Record<StoreKey, RootStoreSlice | undefined>\n    );\n  }\n\n  /**\n   * Get a specific store slice by key (for ServiceRegistry injection).\n   * Returns the actual slice from the namespaced root store.\n   *\n   * @param key - Store key (type-safe: 'example' | 'errors' | 'featureFlags')\n   * @returns Specific store slice or undefined\n   *\n   * @example\n   * ```typescript\n   * const exampleSlice = Core.getDomainStore('example');  // ✅ Returns ExampleFrontendStoreSlice\n   * const errorSlice = Core.getDomainStore('errors');     // ✅ Returns ErrorStoreSlice\n   * const invalid = Core.getDomainStore('invalid');       // ❌ TypeScript error!\n   * ```\n   */\n  static getDomainStore<K extends keyof RootStoreSlice>(key: K): RootStoreSlice[K] | undefined;\n  static getDomainStore<T = RootStoreSlice>(): T | undefined;\n  static getDomainStore<K extends keyof RootStoreSlice>(\n    key?: K\n  ): RootStoreSlice[K] | RootStoreSlice | undefined {\n    const rootState = Core._rootStore?.getState();\n    if (!rootState) return undefined;\n\n    // If no key provided, return entire root store\n    if (!key) return rootState;\n\n    // Return specific slice from namespaced store (type-safe)\n    return rootState[key];\n  }\n\n  /**\n   * Event manager for subscribing to domain events\n   * @example Core.events.on('example:created', handler)\n   */\n  static get events(): typeof CoreEventManager {\n    return CoreEventManager;\n  }\n\n  /**\n   * Get database service instance\n   * @throws Error if not initialized\n   */\n  static get db(): CoreDbServiceInstance {\n    if (!Core._coreServices.db) {\n      throw new CorePackageError(\n        'Database service not initialized. Call Core.initialize() first.',\n        ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n      );\n    }\n    return Core._coreServices.db;\n  }\n\n  /**\n   * Get API client service\n   */\n  static get api(): typeof ApiClientService {\n    if (!Core._coreServices.api) {\n      throw new CorePackageError(\n        'API client service not initialized. Call Core.initialize() first.',\n        ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n      );\n    }\n    return Core._coreServices.api;\n  }\n\n  /**\n   * Get cache service instance (backend-only)\n   * @throws Error if not initialized\n   */\n  static get cache(): CoreCacheServiceInstance {\n    if (!Core._coreServices.cache) {\n      throw new CorePackageError(\n        'Cache service not initialized. Call Core.initialize() with cache config first.',\n        ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n      );\n    }\n    return Core._coreServices.cache;\n  }\n\n  /**\n   * Get observability adapter instance\n   * @throws Error if not initialized\n   *\n   * @example\n   * ```typescript\n   * // Record a metric\n   * await Core.observability.recordMetric({\n   *   type: 'counter',\n   *   name: 'api.requests',\n   *   value: 1,\n   *   tags: { endpoint: '/users' },\n   * });\n   *\n   * // Start a span\n   * const span = Core.observability.startSpan({ name: 'processOrder' });\n   * try {\n   *   // ... do work\n   *   span.setStatus('ok');\n   * } catch (e) {\n   *   span.recordException(e);\n   *   span.setStatus('error');\n   * } finally {\n   *   span.end();\n   * }\n   * ```\n   */\n  static get observability(): ObservabilityAdapter {\n    if (!Core._coreServices.observability) {\n      throw new CorePackageError(\n        'Observability service not initialized. Call Core.initialize() first.',\n        ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n      );\n    }\n    return Core._coreServices.observability;\n  }\n\n  /**\n   * Check if observability is initialized\n   */\n  static get isObservabilityInitialized(): boolean {\n    return Core._coreServices.observability !== null;\n  }\n\n  /**\n   * Get observability configuration\n   */\n  static get observabilityConfig(): CoreObservabilityConfig {\n    return Core._observabilityConfig;\n  }\n\n  /**\n   * Get storage service instance (backend-only)\n   * @throws Error if not initialized\n   *\n   * @example\n   * ```typescript\n   * const storage = Core.storage.getStorage();\n   * await storage.uploadFile({ file, filename: 'doc.pdf' });\n   * ```\n   */\n  static get storage(): CoreStorageServiceInstance {\n    if (!Core._coreServices.storage) {\n      throw new CorePackageError(\n        'Storage service not initialized. Call Core.initialize() with storage config first.',\n        ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n      );\n    }\n    return Core._coreServices.storage;\n  }\n\n  /**\n   * Check if storage is initialized\n   */\n  static get isStorageInitialized(): boolean {\n    return Core._coreServices.storage !== null;\n  }\n\n  /**\n   * Get notifications service instance (backend-only)\n   * @throws Error if not initialized\n   *\n   * @example\n   * ```typescript\n   * const notifications = Core.notifications.getNotifications();\n   * await notifications.sendEmail({ to: 'user@example.com', templateId: 'welcome' });\n   * ```\n   */\n  static get notifications(): CoreNotificationServiceInstance {\n    if (!Core._coreServices.notifications) {\n      throw new CorePackageError(\n        'Notifications service not initialized. Call Core.initialize() with notifications config first.',\n        ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n      );\n    }\n    return Core._coreServices.notifications;\n  }\n\n  /**\n   * Check if notifications is initialized\n   */\n  static get isNotificationsInitialized(): boolean {\n    return Core._coreServices.notifications !== null;\n  }\n\n  /**\n   * Get root store (contains all slices: errors, feature flags, etc.)\n   * Use this to access the full store state and all slice actions globally.\n   *\n   * @example\n   * ```typescript\n   * // Access error actions\n   * const state = Core.rootStore.getState();\n   * state.addError({ ... });\n   *\n   * // Access flags\n   * console.log(state.flags);\n   *\n   * // Subscribe to store changes\n   * Core.rootStore.subscribe((state) => {\n   *   console.log('Errors:', state.errors);\n   *   console.log('Flags:', state.flags);\n   * });\n   * ```\n   */\n  static get rootStore(): StoreApi<RootStoreSlice> {\n    if (!Core._rootStore) {\n      throw new CorePackageError(\n        'Root store not initialized. Call Core.initialize() first.',\n        ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n      );\n    }\n    return Core._rootStore;\n  }\n\n  /**\n   * Get global error store actions.\n   * Provides access to the error store for querying and managing errors.\n   *\n   * @example\n   * ```typescript\n   * // Get all errors\n   * const allErrors = useErrorStore.getState().errors;\n   *\n   * // Clear all errors\n   * Core.errors.clearErrors();\n   *\n   * // Dismiss an error\n   * Core.errors.dismissError(errorId);\n   * ```\n   */\n  static get errors(): ErrorStoreActions {\n    if (!Core._errorHandler) {\n      throw new CorePackageError(\n        'Error handler not initialized. Call Core.initialize() first or set errorHandler.enabled: true.',\n        ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n      );\n    }\n    return Core._errorHandler.getStore();\n  }\n\n  /**\n   * Get feature flags store\n   * Provides synchronous access to feature flag values from the store.\n   *\n   * @example\n   * ```typescript\n   * // Check if a flag is enabled\n   * const isEnabled = Core.flags.isEnabled('NEW_FEATURE');\n   *\n   * // Get a flag value\n   * const provider = Core.flags.getValue<string>('PAYMENT_PROVIDER');\n   *\n   * // Refresh flags from source\n   * await Core.flags.refresh();\n   * ```\n   */\n  static get flags(): FeatureFlagStoreSlice {\n    if (!Core._rootStore) {\n      throw new CorePackageError(\n        'Root store not initialized. Call Core.initialize() first.',\n        ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n      );\n    }\n    // Return the feature flag slice from root store\n    // Root store state includes all flag methods (isEnabled, getValue, refresh, etc.)\n    return Core._rootStore.getState() as unknown as FeatureFlagStoreSlice;\n  }\n\n  /**\n   * Check if error handler is initialized\n   */\n  static get isErrorHandlerInitialized(): boolean {\n    return Core._errorHandler !== null;\n  }\n\n  /**\n   * Get the HTTP error handler/middleware based on runtime.\n   * Returns different types based on detected runtime:\n   *\n   * - **Express**: Error handler middleware function\n   *   ```typescript\n   *   app.use(Core.httpErrorHandler);\n   *   ```\n   *\n   * - **NestJS**: Exception filter class\n   *   ```typescript\n   *   app.useGlobalFilters(new (Core.httpErrorHandler)());\n   *   ```\n   *\n   * - **Next.js**: Object with App Router and Pages Router handlers\n   *   ```typescript\n   *   // App Router\n   *   export const GET = Core.httpErrorHandler.withErrorHandler(handler);\n   *   // Pages Router\n   *   export default Core.httpErrorHandler.createNextApiErrorHandler()(handler);\n   *   ```\n   *\n   * - **Node.js/Bun/Deno**: Object with handleError and createMiddleware\n   *   ```typescript\n   *   Core.httpErrorHandler.handleError(error, req, res);\n   *   ```\n   *\n   * - **Browser**: null (no HTTP handler needed)\n   *\n   * @returns The HTTP error handler for the current runtime\n   */\n  static get httpErrorHandler(): unknown {\n    return Core._httpErrorHandler;\n  }\n\n  /**\n   * Check if feature flags are initialized\n   */\n  static get isFlagsInitialized(): boolean {\n    return Core._rootStore?.getState()?.featureFlags?.isInitialized ?? false;\n  }\n\n  /**\n   * Get error handler configuration\n   */\n  static get errorConfig(): CoreErrorHandlerInitConfig {\n    return Core._errorConfig;\n  }\n\n  /**\n   * Get feature flag configuration\n   */\n  static get flagConfig(): CoreFeatureFlagInitConfig {\n    return Core._flagConfig;\n  }\n\n  /**\n   * Get loaded environment variables\n   */\n  static get env(): CoreEnvVars {\n    return Core._coreServices.env;\n  }\n\n  /**\n   * Get detected runtime environment\n   */\n  static get runtime(): CoreRuntimeEnvironment {\n    return Core._coreServices.runtime;\n  }\n\n  /**\n   * Get current app context\n   */\n  static get appContext(): CoreAppContext {\n    return Core._coreServices.appContext;\n  }\n\n  /**\n   * Check if Core is initialized\n   */\n  static get isInitialized(): boolean {\n    return Core.initialized;\n  }\n\n  /**\n   * Check if running on a backend runtime\n   */\n  static get isBackend(): boolean {\n    return BACKEND_RUNTIMES.includes(Core._coreServices.runtime);\n  }\n\n  /**\n   * Check if running on a frontend runtime\n   */\n  static get isFrontend(): boolean {\n    return FRONTEND_RUNTIMES.includes(Core._coreServices.runtime);\n  }\n\n  /**\n   * Get runtime context (backend, frontend, or universal)\n   * Universal means the runtime can be either (SSR frameworks like Next.js, Nuxt, Edge)\n   */\n  static getRuntimeContext(): CoreRuntimeContext {\n    if (BACKEND_RUNTIMES.includes(Core._coreServices.runtime)) {\n      return 'backend';\n    }\n    if (FRONTEND_RUNTIMES.includes(Core._coreServices.runtime)) {\n      return 'frontend';\n    }\n    return 'universal';\n  }\n\n  /**\n   * Assert that the current runtime matches the expected runtime(s)\n   * Throws an error if the runtime doesn't match\n   *\n   * @param expected - Expected runtime(s) to check against\n   * @param serviceName - Name of the service for error message\n   * @throws CorePackageError if runtime doesn't match\n   *\n   * @example\n   * ```typescript\n   * // Assert backend-only\n   * Core.assertRuntime('backend', 'DatabaseService');\n   *\n   * // Assert multiple runtimes\n   * Core.assertRuntime(['backend', 'universal'], 'CacheService');\n   * ```\n   */\n  static assertRuntime(\n    expected: CoreServiceRuntime | readonly CoreServiceRuntime[],\n    serviceName: string\n  ): void {\n    const runtimes = Array.isArray(expected) ? expected : [expected];\n    const currentContext = Core.getRuntimeContext();\n\n    // Check if current context matches any of the expected runtimes\n    const isAllowed = runtimes.some(runtime => {\n      if (runtime === 'universal') return true;\n      if (runtime === currentContext) return true;\n      // Universal context (SSR) can run both frontend and backend code\n      if (currentContext === 'universal') return true;\n      return false;\n    });\n\n    if (!isAllowed) {\n      throw new CorePackageError(\n        `${serviceName} cannot run in ${currentContext} runtime. ` +\n          `Allowed runtimes: ${runtimes.join(', ')}. ` +\n          `Current runtime: ${Core._coreServices.runtime}`,\n        ERROR_CODES.FEATURE_NOT_SUPPORTED\n      );\n    }\n  }\n\n  /**\n   * Check if a service runtime is compatible with current runtime\n   * Returns true/false instead of throwing\n   *\n   * @param expected - Expected runtime(s) to check against\n   */\n  static isRuntimeCompatible(\n    expected: CoreServiceRuntime | readonly CoreServiceRuntime[]\n  ): boolean {\n    const runtimes = Array.isArray(expected) ? expected : [expected];\n    const currentContext = Core.getRuntimeContext();\n\n    return runtimes.some(runtime => {\n      if (runtime === 'universal') return true;\n      if (runtime === currentContext) return true;\n      if (currentContext === 'universal') return true;\n      return false;\n    });\n  }\n\n  /**\n   * Get initialization options (for internal use by framework adapters)\n   * @internal\n   */\n  static get initOptions(): CoreInitOptions {\n    return Core._initOptions;\n  }\n\n  /**\n   * Get a registered domain service by key.\n   * Convenience method that wraps ServiceRegistry.get().\n   *\n   * @param key - Service key (e.g., 'featureFlags', 'example')\n   * @returns The service instance\n   *\n   * @example\n   * ```typescript\n   * const flags = Core.getService<FeatureFlagDomainService>('featureFlags');\n   * const isEnabled = await flags.isEnabled('my-flag');\n   * ```\n   */\n  static getService<T extends CoreDomainServiceInstance = CoreDomainServiceInstance>(\n    key: string\n  ): T {\n    return ServiceRegistry.get<T>(key);\n  }\n\n  /**\n   * Get a registered domain service by key with async initialization if needed.\n   * Convenience method that wraps ServiceRegistry.getAsync().\n   *\n   * @param key - Service key\n   * @returns Promise resolving to the service instance\n   */\n  static async getServiceAsync<T extends CoreDomainServiceInstance = CoreDomainServiceInstance>(\n    key: string\n  ): Promise<T> {\n    return ServiceRegistry.getAsync<T>(key);\n  }\n\n  /**\n   * Check if a domain service is registered.\n   */\n  static hasService(key: string): boolean {\n    return ServiceRegistry.has(key);\n  }\n\n  /**\n   * Reset Core (useful for testing)\n   */\n  // eslint-disable-next-line complexity\n  static async reset(): Promise<void> {\n    // Close database\n    if (Core._coreServices.db) {\n      await Core._coreServices.db.getDatabase()?.close?.();\n    }\n\n    // Dispose cache\n    if (Core._coreServices.cache) {\n      const CacheService = getCoreDependency('CacheService');\n      CacheService?.reset?.();\n    }\n\n    // Dispose observability\n    if (Core._coreServices.observability) {\n      await Core._coreServices.observability.shutdown();\n    }\n    Core._observabilityConfig = {};\n\n    // Dispose storage\n    if (Core._coreServices.storage) {\n      await Core._coreServices.storage.close();\n      const StorageService = getCoreDependency('StorageService');\n      await StorageService?.reset?.();\n    }\n\n    // Dispose notifications\n    if (Core._coreServices.notifications) {\n      await Core._coreServices.notifications.close();\n      const NotificationService = getCoreDependency('NotificationService');\n      await NotificationService?.reset?.();\n    }\n\n    // Dispose streaming\n    if (Core._streamServer) {\n      Core._streamServer.dispose();\n      Core._streamServer = null;\n    }\n    StreamRegistry.dispose();\n\n    // Dispose error handler\n    if (Core._errorHandler) {\n      Core._errorHandler.destroy();\n      Core._errorHandler = null;\n      clearEventEmitter(); // Clean up global error handler's CoreEventManager integration\n      BaseError.clearEventEmitter(); // Clean up BaseError auto-emit integration\n    }\n    Core._errorConfig = {};\n    Core._httpErrorHandler = null;\n\n    // Cleanup event listeners\n    for (const cleanup of Core._eventCleanupFns) {\n      cleanup();\n    }\n    Core._eventCleanupFns = [];\n\n    // Dispose feature flags slice and reset files store from root store\n    if (Core._rootStore) {\n      const state = Core._rootStore.getState();\n      if (state.featureFlags?.dispose) {\n        state.featureFlags.dispose();\n      }\n      // Reset files store slice\n      if (state.files?.reset) {\n        state.files.reset();\n      }\n      // Reset notifications store slice\n      if (state.notifications?.reset) {\n        state.notifications.reset();\n      }\n      Core._rootStore = null;\n    }\n    Core._flagConfig = {};\n\n    // Dispose all registered services via ServiceRegistry\n    ServiceRegistry.disposeAll();\n\n    // Dispose event manager\n    CoreEventManager.dispose();\n\n    Core._coreServices = {\n      db: null,\n      api: null,\n      cache: null,\n      observability: null,\n      storage: null,\n      notifications: null,\n      env: {},\n      runtime: 'unknown',\n      appContext: 'webapp',\n    };\n    Core.initialized = false;\n    Core._initPromise = null;\n  }\n\n  /**\n   * Determines whether to skip DbService initialization.\n   *\n   * DbService is backend-only and should never be initialized on frontend runtimes.\n   * This method:\n   * - Returns true (skip) if skipDb was explicitly set to true\n   * - Returns true (skip) if running on frontend, with a warning\n   * - Warns if someone explicitly tried to init DbService on frontend (skipDb: false)\n   *\n   * @param skipDb - User-provided skipDb option\n   * @param verbose - Enable verbose logging\n   * @returns true if DbService should be skipped\n   */\n  private static shouldSkipDbService(skipDb: boolean | undefined, verbose?: boolean): boolean {\n    // User explicitly requested to skip\n    if (skipDb === true) {\n      Core.log('Database service skipped (skipDb: true)', verbose);\n      return true;\n    }\n\n    // Check if running on frontend\n    const isFrontend = Core.isFrontend;\n\n    if (isFrontend) {\n      // User explicitly tried to init DbService on frontend (skipDb: false)\n      if (skipDb === false) {\n        Core.logger.warn(\n          'DbService cannot be initialized on frontend runtime. ' +\n            'DbService is backend-only and requires Node.js. ' +\n            'Use API calls from frontend instead. Skipping database initialization.'\n        );\n      } else if (verbose) {\n        // skipDb was undefined (default) - just log that we're skipping\n        Core.log(\n          'Database service skipped (frontend runtime detected). ' +\n            'DbService is only available on backend.',\n          verbose\n        );\n      }\n      return true;\n    }\n\n    // Backend or universal runtime - don't skip\n    return false;\n  }\n\n  /**\n   * Initialize database service\n   * Config validation is handled by DbService\n   */\n  private static async initializeDb(\n    config?: Partial<CoreDbServiceConfig>,\n    verbose?: boolean\n  ): Promise<CoreDbServiceInstance> {\n    Core.log(`Initializing database with adapter: ${config?.adapter ?? 'drizzle'}`, verbose);\n\n    const DbService = getCoreDependency('DbService');\n    if (!DbService) {\n      throw new CorePackageError(\n        'DbService not available. Ensure setCoreDependencies() was called in entry-backend.ts',\n        ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n      );\n    }\n    return DbService.initialize({\n      adapter: 'drizzle',\n      ...config,\n    } as CoreDbServiceConfig);\n  }\n\n  /**\n   * Initialize API client service\n   * Config validation is handled by ApiClientService\n   */\n  private static async initializeApi(\n    config?: CoreApiInitOptions,\n    globalEnvironment?: CoreAppEnvironment,\n    verbose?: boolean\n  ): Promise<void> {\n    const { env: apiEnv, setAsDefault, ...apiClientOptions } = config ?? {};\n    const resolvedEnv = apiEnv ?? globalEnvironment ?? 'development';\n\n    Core.log(`Initializing API client for environment: ${resolvedEnv}`, verbose);\n\n    await ApiClientService.init(\n      {\n        env: resolvedEnv,\n        setAsDefault: setAsDefault ?? true,\n      },\n      apiClientOptions\n    );\n  }\n\n  /**\n   * Initialize cache service (backend-only)\n   * Config validation is handled by CacheService\n   */\n  private static async initializeCache(config: CoreCacheConfig, verbose?: boolean): Promise<void> {\n    Core.log(`Initializing cache with strategy: ${config.strategy}`, verbose);\n\n    const CacheService = getCoreDependency('CacheService');\n    if (!CacheService) {\n      throw new CorePackageError(\n        'CacheService not available. Ensure setCoreDependencies() was called in entry-backend.ts',\n        ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n      );\n    }\n    await CacheService.initialize(config);\n  }\n\n  /**\n   * Initialize observability service based on config.\n   * Always includes LoggerAdapter as failover for console output.\n   */\n  private static async initializeObservability(\n    config: CoreObservabilityConfig,\n    verbose?: boolean,\n    environment?: CoreAppEnvironment\n  ): Promise<void> {\n    Core.log(`Initializing observability with provider: ${config.provider ?? 'auto'}`, verbose);\n\n    // Use environment from config or passed parameter\n    const env = config.environment ?? environment ?? 'development';\n    Core._observabilityConfig = { ...config, environment: env };\n\n    // Collect adapters with priorities\n    const adapters: { adapter: ObservabilityAdapter; priority: number; failover?: boolean }[] = [];\n\n    // Always add LoggerAdapter as failover for console output\n    const loggerAdapter = new LoggerAdapter();\n    await loggerAdapter.initialize({\n      enabled: config.enabled !== false,\n      serviceName: config.serviceName,\n      environment: env,\n      defaultTags: config.defaultTags,\n    });\n    adapters.push({ adapter: loggerAdapter, priority: -100, failover: true });\n\n    // TODO: Add DatadogAdapter when configured (high priority, primary)\n    // if (config.provider === 'datadog' || config.datadog) {\n    //   const datadogAdapter = new DatadogAdapter();\n    //   await datadogAdapter.initialize({\n    //     ...config,\n    //     ...config.datadog,\n    //     environment: env,\n    //   });\n    //   adapters.push({ adapter: datadogAdapter, priority: 100, failover: false });\n    // }\n\n    // Create ObservabilityService with all adapters\n    const observability = new ObservabilityService();\n    await observability.initialize({\n      mode: config.mode ?? 'parallel',\n      adapters,\n      enabled: config.enabled,\n      serviceName: config.serviceName,\n      environment: env,\n      defaultTags: config.defaultTags,\n      samplingRate: config.samplingRate,\n      flushInterval: config.flushInterval,\n      adapterTimeout: config.flushInterval,\n    });\n\n    Core.log(\n      `ObservabilityService initialized with ${adapters.length} adapters (env: ${env})`,\n      verbose\n    );\n\n    Core._coreServices.observability = observability;\n    // Set on ServiceRegistry for injection\n    ServiceRegistry.setObservabilityInstance(observability);\n  }\n\n  /**\n   * Initialize global error handler\n   */\n  /** Create and initialize root store (includes error store + all other slices) */\n  private static async initializeRootStore(\n    config?: CoreErrorHandlerInitConfig,\n    verbose?: boolean\n  ): Promise<void> {\n    const isFrontend = typeof window !== 'undefined';\n\n    if (isFrontend) {\n      if (!Core._injectedStoreHook) {\n        throw new CorePackageError(\n          'Root store hook not set. Call Core.setRootStoreHook(useRootStore) before Core.initialize(), ' +\n            'or use PlyazProvider with the store prop: <PlyazProvider store={useRootStore} ...>',\n          ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n        );\n      }\n      Core.log('Using frontend root store (Zustand) - injected via setRootStoreHook', verbose);\n      // Frontend: use the injected store hook's vanilla store API\n      Core._rootStore = Core._injectedStoreHook as unknown as StoreApi<RootStoreSlice>;\n    } else {\n      Core.log('Creating backend composite store (in-memory)', verbose);\n      const ServerErrorMiddleware = getCoreDependency('ServerErrorMiddleware');\n      if (!ServerErrorMiddleware) {\n        throw new CorePackageError(\n          'ServerErrorMiddleware not available. Ensure setCoreDependencies() was called in entry-backend.ts',\n          ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n        );\n      }\n\n      // Backend: create in-memory error store + feature flag store (NOT Zustand)\n      const backendErrorStore = ServerErrorMiddleware.createErrorStore({\n        maxErrors: config?.maxErrors ?? DEFAULT_MAX_ERRORS,\n        onErrorAdded: config?.onError as ((error: unknown) => void) | undefined,\n      });\n\n      // Create standalone feature flag store for backend\n      const backendFlagStore = createStandaloneFeatureFlagStore();\n\n      // Combine error + feature flag stores to match RootStoreSlice interface\n      // IMPORTANT: Must use namespaced keys (errors, featureFlags) to match frontend structure\n      const compositeStore = {\n        errors: backendErrorStore,\n        featureFlags: backendFlagStore,\n      };\n\n      // Wrap backend composite store to match root store interface (getState() pattern)\n      Core._rootStore = {\n        getState: () => compositeStore,\n        subscribe: () => () => {}, // No-op for backend\n        destroy: () => {\n          backendErrorStore.reset();\n          backendFlagStore.dispose?.();\n        },\n      } as unknown as StoreApi<RootStoreSlice>;\n    }\n  }\n\n  /**\n   * Serialize a PackageErrorLike to SerializedError format.\n   * Used by BaseError.setEventEmitter() to convert errors for the store.\n   */\n  private static serializePackageError(error: PackageErrorLike): SerializedError {\n    const serviceName = typeof error.context?.service === 'string' ? error.context.service : 'core';\n\n    return {\n      id: generateId(),\n      code: (error.errorCode as SerializedError['code']) ?? ERROR_CODES.UNKNOWN_ERROR,\n      message: error.message,\n      status: error.statusCode,\n      category: error.category ?? ERROR_CATEGORY.Server,\n      timestamp: error.timestamp ?? new Date().toISOString(),\n      isRetryable: error.retryable ?? false,\n      source: serviceName,\n      dismissed: false,\n      context: {\n        correlationId: error.correlationId,\n        ...error.context,\n      },\n    };\n  }\n\n  /** Get error store actions from root store */\n  private static getErrorStoreActions(): ErrorStoreActions {\n    if (!Core._rootStore) {\n      throw new CorePackageError(\n        'Root store not initialized. Call Core.initialize() first.',\n        ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n      );\n    }\n    return Core._rootStore.getState().errors;\n  }\n\n  /** Build global error handler config */\n\n  private static buildErrorHandlerConfig(\n    config?: CoreErrorHandlerInitConfig\n  ): Parameters<typeof initializeGlobalErrorHandler>[1] {\n    // Compose filter: skip BaseError instances (they auto-emit via setEventEmitter)\n    // then apply user's custom filter if provided\n    const baseErrorFilter = (error: unknown): boolean => {\n      // Skip BaseError instances - they already emit SYSTEM.ERROR via BaseError.setEventEmitter()\n      // This prevents duplicate entries in the error store for uncaught BaseErrors\n      if (error instanceof BaseError) {\n        return false;\n      }\n      // Apply user's custom filter if provided\n      return config?.filter ? config.filter(error) : true;\n    };\n\n    return {\n      source: config?.source ?? 'global',\n      maxErrors: config?.maxErrors ?? DEFAULT_MAX_ERRORS,\n      filter: baseErrorFilter,\n      onError: config?.onError,\n      logToConsole: config?.logToConsole ?? false,\n    };\n  }\n\n  // eslint-disable-next-line complexity\n  private static async initializeErrorHandler(\n    config?: CoreErrorHandlerInitConfig,\n    verbose?: boolean\n  ): Promise<void> {\n    if (config?.enabled === false) {\n      Core.log('Error handler disabled by configuration', verbose);\n      return;\n    }\n\n    Core._errorConfig = config ?? {};\n    Core.log('Initializing global error handler...', verbose);\n\n    // Initialize error system (translations, catalogs)\n    // This is safe to call multiple times - it checks if already initialized\n    initializeErrorSystem({\n      defaultLocale: Core._errorConfig.localization?.defaultLocale,\n      fallbackLocale: Core._errorConfig.localization?.fallbackLocale,\n      additionalCatalogs: Core._errorConfig.localization?.additionalCatalogs,\n      replaceBuiltIn: Core._errorConfig.localization?.replaceBuiltIn,\n    });\n\n    // Initialize root store (contains error store + all slices)\n    await Core.initializeRootStore(Core._errorConfig, verbose);\n\n    // Wire up CoreEventManager for automatic error event emission\n    // This allows errors captured by the global handler to emit events\n    setEventEmitter(CoreEventManager.emit.bind(CoreEventManager));\n\n    // Wire up BaseError to auto-emit CORE_EVENTS.SYSTEM.ERROR when ANY error is created\n    // This covers ALL BaseError subclasses: CorePackageError, DatabasePackageError,\n    // ValidationError, ApiPackageError, StoragePackageError, NotificationPackageError, etc.\n    BaseError.setEventEmitter(error => {\n      const serializedError = Core.serializePackageError(error);\n      const serviceName = serializedError.source ?? 'core';\n\n      CoreEventManager.emit(CORE_EVENTS.SYSTEM.ERROR, {\n        errors: [serializedError],\n        context: serviceName,\n        recoverable: error.retryable ?? false,\n      } satisfies CoreSystemErrorPayload);\n    });\n\n    const errorStore = Core.getErrorStoreActions();\n    Core._errorHandler = initializeGlobalErrorHandler(\n      errorStore,\n      Core.buildErrorHandlerConfig(Core._errorConfig)\n    );\n\n    // Subscribe to SYSTEM.ERROR events and setup store subscriptions\n    Core.setupErrorEventSubscription(verbose);\n    Core.setupErrorStoreSubscription(verbose);\n\n    Core.log('Global error handler initialized with CoreEventManager integration', verbose);\n\n    // Auto-create HTTP error handler based on runtime (unless disabled)\n    if (Core._errorConfig.httpHandler !== false) {\n      await Core.createHttpErrorHandler(Core._errorConfig, verbose);\n    }\n  }\n\n  /**\n   * Log serialized errors with full details.\n   */\n  private static logErrors(errors: SerializedError[], prefix = 'ErrorStore'): void {\n    for (const err of errors) {\n      Core.logger.error(`[${prefix}] ${err.code}: ${err.message}`, {\n        id: err.id,\n        code: err.code,\n        message: err.message,\n        category: err.category,\n        source: err.source,\n        status: err.status,\n        isRetryable: err.isRetryable,\n        context: err.context,\n        timestamp: err.timestamp,\n      });\n    }\n  }\n\n  /**\n   * Setup SYSTEM.ERROR event subscription for error store updates.\n   * Backend: Also logs errors with full details.\n   * Frontend: Only updates store (logging handled by store subscription).\n   */\n  private static setupErrorEventSubscription(verbose?: boolean): void {\n    const isBackend = BACKEND_RUNTIMES.includes(Core._coreServices.runtime);\n\n    const errorEventCleanup = CoreEventManager.on(\n      CORE_EVENTS.SYSTEM.ERROR,\n      (event: CoreEvent<CoreSystemErrorPayload>) => {\n        if (!Core._rootStore) return;\n\n        try {\n          const { errors } = event.data;\n          if (!errors || errors.length === 0) return;\n\n          Core._rootStore.getState().errors.addErrors(errors);\n          if (isBackend) Core.logErrors(errors);\n          Core.log(`Added ${errors.length} error(s) to store`, verbose);\n        } catch (e) {\n          Core.logger.error('Failed to handle error event', { error: e });\n        }\n      }\n    );\n\n    Core._eventCleanupFns.push(errorEventCleanup);\n  }\n\n  /**\n   * Setup error store subscription for frontend logging.\n   * Logs new errors when they're added to the store.\n   * Only active for non-backend runtimes (browser, nextjs, nuxt, edge).\n   */\n  private static setupErrorStoreSubscription(verbose?: boolean): void {\n    const isFrontend = !BACKEND_RUNTIMES.includes(Core._coreServices.runtime);\n    if (!isFrontend || !Core._rootStore) return;\n\n    let prevErrorCount = 0;\n    const storeUnsubscribe = Core._rootStore.subscribe(state => {\n      const currentCount = state.errors.errorCount;\n      if (currentCount <= prevErrorCount) {\n        prevErrorCount = currentCount;\n        return;\n      }\n      const newErrors = state.errors.errors.slice(0, currentCount - prevErrorCount);\n      Core.logErrors(newErrors, 'ErrorStore:FE');\n      prevErrorCount = currentCount;\n    });\n\n    Core._eventCleanupFns.push(storeUnsubscribe);\n    Core.log('Error store subscription initialized for frontend', verbose);\n  }\n\n  /**\n   * Create HTTP error handler based on detected runtime.\n   * Stores the handler in Core._httpErrorHandler for access via Core.httpErrorHandler\n   */\n  // eslint-disable-next-line complexity\n  private static async createHttpErrorHandler(\n    config?: CoreErrorHandlerInitConfig,\n    verbose?: boolean\n  ): Promise<void> {\n    const runtime = Core._coreServices.runtime;\n    const isProduction = Core._coreServices.env.NODE_ENV === 'production';\n\n    // Skip for browser runtime (no HTTP error handler needed)\n    if (runtime === 'browser') {\n      Core._httpErrorHandler = null;\n      Core.log('Skipping HTTP handler for browser runtime', verbose);\n      return;\n    }\n\n    const ServerErrorMiddleware = getCoreDependency('ServerErrorMiddleware');\n    if (!ServerErrorMiddleware) {\n      Core.log('Skipping HTTP handler (ServerErrorMiddleware not registered)', verbose);\n      return;\n    }\n\n    // Build common config for all HTTP handlers\n    const httpConfig = {\n      source: runtime,\n      includeStack: config?.includeStack ?? !isProduction,\n      logErrors: config?.logger ?? config?.logToConsole ?? true,\n      errorHandler: Core._errorHandler ?? undefined,\n    };\n\n    switch (runtime) {\n      case 'express':\n        Core._httpErrorHandler = ServerErrorMiddleware.createHttpErrorHandler(httpConfig);\n        Core.log('Created Express error handler middleware', verbose);\n        break;\n\n      case 'nestjs':\n        Core._httpErrorHandler = ServerErrorMiddleware.createNestJsExceptionFilter(httpConfig);\n        Core.log('Created NestJS exception filter', verbose);\n        break;\n\n      case 'nextjs':\n        // For Next.js, provide both App Router and Pages Router handlers\n        Core._httpErrorHandler = {\n          /** For App Router: export const GET = withErrorHandler(handler) */\n          withErrorHandler: <T>(handler: T, overrideConfig = {}) =>\n            ServerErrorMiddleware.withErrorHandler(\n              handler as Parameters<typeof ServerErrorMiddleware.withErrorHandler>[0],\n              { ...httpConfig, ...overrideConfig }\n            ),\n          /** For Pages Router: export default createNextApiErrorHandler()(handler) */\n          createNextApiErrorHandler: (overrideConfig = {}) =>\n            ServerErrorMiddleware.createNextApiErrorHandler({ ...httpConfig, ...overrideConfig }),\n        };\n        Core.log('Created Next.js error handlers', verbose);\n        break;\n\n      case 'node':\n      case 'bun':\n      case 'deno':\n        // Generic Node.js handler\n        Core._httpErrorHandler = {\n          /** Handle error: handleNodeError(error, req, res) */\n          handleError: (error: unknown, req: unknown, res: unknown) =>\n            ServerErrorMiddleware.handleNodeError(\n              error,\n              req as Parameters<typeof ServerErrorMiddleware.handleNodeError>[1],\n              // eslint-disable-next-line no-magic-numbers -- Type parameter index for handleNodeError\n              res as Parameters<typeof ServerErrorMiddleware.handleNodeError>[2],\n              httpConfig\n            ),\n          /** Create middleware for use with native http */\n          createMiddleware: () => ServerErrorMiddleware.createHttpErrorHandler(httpConfig),\n        };\n        Core.log(`Created ${runtime} error handler`, verbose);\n        break;\n\n      default:\n        // For unknown runtimes, provide generic handler\n        Core._httpErrorHandler = ServerErrorMiddleware.createHttpErrorHandler(httpConfig);\n        Core.log(`Created generic HTTP error handler for ${runtime}`, verbose);\n    }\n  }\n\n  /**\n   * Subscribe to CoreEventManager error events\n   * Forwards entity, API, validation, database, and auth errors to the global error handler.\n   *\n   * NOTE: SYSTEM.ERROR is NOT subscribed here - it's handled in initializeErrorHandler()\n   * via the BaseError.setEventEmitter() + addErrors() pattern to avoid duplicate subscriptions.\n   *\n   * For non-BaseError errors, domain-specific events (ENTITY.ERROR, API.REQUEST_ERROR, etc.)\n   * are captured here. BaseError instances are skipped (they already auto-emit via SYSTEM.ERROR).\n   *\n   * Database errors (DATABASE.ERROR) are only subscribed on backend runtimes since\n   * DbService is backend-only (skipDb: true on frontend).\n   */\n  private static subscribeToErrorEvents(verbose?: boolean): void {\n    if (!Core._errorHandler) {\n      return;\n    }\n\n    Core.log('Subscribing to error events...', verbose);\n\n    // NOTE: SYSTEM.ERROR subscription is in initializeErrorHandler() to avoid duplicates.\n    // All BaseError instances auto-emit to SYSTEM.ERROR via BaseError.setEventEmitter(),\n    // and that handler adds errors directly via addErrors().\n\n    // Helper: subscribe to error event, skip BaseError (already auto-emits via SYSTEM.ERROR)\n    const subscribeError = (event: string, source: string): (() => void) => {\n      return CoreEventManager.on(event, (e: CoreEvent<{ error?: unknown }>) => {\n        if (Core._errorHandler && e.data?.error && !(e.data.error instanceof BaseError)) {\n          Core._errorHandler.captureError(e.data.error, source);\n        }\n      });\n    };\n\n    // Universal error subscriptions (frontend + backend)\n    Core._eventCleanupFns.push(\n      subscribeError(CORE_EVENTS.ENTITY.ERROR, 'entity'),\n      subscribeError(CORE_EVENTS.API.REQUEST_ERROR, 'api'),\n      subscribeError(CORE_EVENTS.VALIDATION.FAILED, 'validation'),\n      subscribeError(CORE_EVENTS.AUTH.UNAUTHORIZED, 'auth'),\n      subscribeError(CORE_EVENTS.AUTH.SESSION_EXPIRED, 'auth')\n    );\n\n    // Backend-only error subscriptions\n    if (Core.isRuntimeCompatible('backend')) {\n      Core._eventCleanupFns.push(\n        subscribeError(CORE_EVENTS.DATABASE.ERROR, 'database'),\n        subscribeError(CORE_EVENTS.STORAGE.ERROR, 'storage'),\n        subscribeError(CORE_EVENTS.NOTIFICATION.ERROR, 'notification'),\n        subscribeError(CORE_EVENTS.CACHE.ERROR, 'cache')\n      );\n      Core.log(\n        'Subscribed to backend error events (database, storage, notification, cache)',\n        verbose\n      );\n    }\n\n    const eventTypes = ['entity', 'api', 'validation', 'auth'];\n    if (Core.isRuntimeCompatible('backend'))\n      eventTypes.push('database', 'storage', 'notification', 'cache');\n    Core.log(`Subscribed to domain error events: ${eventTypes.join(', ')}`, verbose);\n  }\n\n  /** Handle fetch flags error and return empty flags */\n  private static handleFetchFlagsError(\n    error: unknown,\n    config?: CoreFeatureFlagInitConfig,\n    verbose?: boolean\n  ): Record<string, FeatureFlagValue> {\n    if (verbose) Core.logger.error('Failed to fetch feature flags', { error });\n\n    // If already a package error, use as-is; otherwise wrap it\n    const packageError =\n      error instanceof BaseError\n        ? (error as CorePackageError)\n        : new CorePackageError(\n            error instanceof Error ? error.message : String(error),\n            ERROR_CODES.CORE_FEATURE_FLAG_PROVIDER_ERROR,\n            { cause: error instanceof Error ? error : undefined }\n          );\n    config?.onError?.(packageError);\n    return {};\n  }\n\n  /** Create fetch flags function */\n  private static createFetchFlagsFn(\n    config?: CoreFeatureFlagInitConfig,\n    verbose?: boolean\n  ): () => Promise<Record<string, FeatureFlagValue>> {\n    // eslint-disable-next-line complexity\n    return async () => {\n      // Only fetch from API when provider is explicitly 'api'\n      // All other providers (memory, undefined) use local defaults\n      if (config?.provider !== 'api') {\n        Core.log(\n          `Feature flags using ${config?.provider ?? 'default'} provider (no API fetch)`,\n          verbose\n        );\n        return config?.defaults ?? {};\n      }\n\n      try {\n        const client = ApiClientService.getClient();\n        const endpoint = config?.apiEndpoint ?? '/feature-flags';\n        const response = await client.get<{ flags: Record<string, FeatureFlagValue> }>(endpoint);\n\n        if (!response.isSuccess) {\n          throw new CorePackageError(\n            response.error?.message ?? 'Failed to fetch feature flags',\n            ERROR_CODES.CORE_FEATURE_FLAG_PROVIDER_ERROR\n          );\n        }\n\n        return response.data?.flags ?? {};\n      } catch (error) {\n        return Core.handleFetchFlagsError(error, config, verbose);\n      }\n    };\n  }\n\n  /**\n   * Initialize feature flags slice within root store\n   */\n\n  // eslint-disable-next-line complexity\n  private static async initializeFeatureFlags(\n    config?: CoreFeatureFlagInitConfig,\n    verbose?: boolean\n  ): Promise<void> {\n    if (config?.enabled === false) {\n      Core.log('Feature flags disabled by configuration', verbose);\n      return;\n    }\n\n    if (!Core._rootStore) {\n      throw new CorePackageError(\n        'Root store not initialized. Call Core.initializeErrorHandler() first.',\n        ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n      );\n    }\n\n    Core._flagConfig = config ?? {};\n    const isApiProvider = config?.provider === 'api';\n    Core.log(\n      `Initializing feature flags from root store (provider: ${config?.provider ?? 'default'})...`,\n      verbose\n    );\n\n    // Initialize the feature flag slice within the root store\n    const state = Core._rootStore.getState();\n    await state.featureFlags.initialize({\n      defaults: Core._flagConfig.defaults,\n      // Only enable polling for API provider\n      polling: isApiProvider ? Core._flagConfig.polling : undefined,\n      fetchFn: Core.createFetchFlagsFn(Core._flagConfig, verbose),\n      onFlagChange: Core._flagConfig.onFlagChange,\n      onError: Core._flagConfig.onError,\n    });\n\n    Core.log('Feature flags initialized', verbose);\n  }\n}\n\n// Export for convenience (excluding server-only services - use backend entry for those)\n// Note: CacheService and DEFAULT_ENCRYPTION_FIELDS are only exported from entry-backend.ts\nexport { ApiClientService };\n","/**\n * Base Domain Service\n *\n * Abstract base class for all domain services in @plyaz/core.\n * Follows the same pattern as BaseAdapter in @plyaz/notifications.\n *\n * Provides:\n * - API client initialization via constructor config\n * - Automatic mapper/validator instantiation\n * - Service enabled/disabled state management\n * - Default values handling\n * - Runtime context detection\n * - Lazy logger initialization\n *\n * Subclasses must implement:\n * - isAvailable() - Check if service is configured and ready\n * - dispose() - Cleanup resources\n *\n * @example\n * ```typescript\n * interface MyServiceConfig extends BaseDomainServiceConfig {\n *   apiBasePath?: string;\n * }\n *\n * class MyDomainService extends BaseDomainService<\n *   MyServiceConfig,\n *   MyMapper,\n *   MyValidator\n * > {\n *   constructor(config: MyServiceConfig) {\n *     super({\n *       serviceName: 'MyDomainService',\n *       supportedRuntimes: ['universal'],\n *       serviceConfig: config,\n *       apiClientConfig: {\n *         baseURL: config.apiBasePath || '/api', // Use || to treat empty strings as falsy\n *       },\n *       MapperClass: MyMapperClass,\n *       ValidatorClass: MyValidatorClass,\n *     });\n *   }\n *\n *   isAvailable(): boolean {\n *     return this.config.enabled !== false;\n *   }\n *\n *   dispose(): void {\n *     // Cleanup\n *   }\n *\n *   async create(data: unknown): Promise<MyEntity> {\n *     this.assertReady();\n *     const validated = this.validator.validateCreateOrThrow(data);\n *     const dto = this.mapper.toCreateDTO(validated);\n *     const response = await this.apiClient.post('/entities', dto);\n *     return this.mapper.toDomain(response.data);\n *   }\n * }\n *\n * // Usage\n * const service = new MyDomainService({ enabled: true, apiBasePath: '/api/v1' });\n * await service.ensureApiClientInitialized();\n * const entity = await service.create({ name: 'Test' });\n * ```\n */\n\nimport { PackageLogger } from '@plyaz/logger';\nimport { CorePackageError } from '@plyaz/errors';\nimport { ERROR_CODES } from '@plyaz/types/errors';\nimport { Core } from '../../init/CoreInitializer';\nimport type {\n  CoreBaseMapperInstance,\n  CoreBaseValidatorInstance,\n  CoreServiceRuntime,\n} from '@plyaz/types/core';\nimport type { FeatureFlagValue } from '@plyaz/types/features';\nimport type { ApiClientOptions } from '@plyaz/types/api';\nimport { setDefaultApiClient } from '@plyaz/api/frontend';\nimport { ApiClientService } from '../../services/ApiClientService';\n// Import types we need locally\nimport type {\n  CoreBaseDomainServiceConfig,\n  CoreMapperClass,\n  CoreValidatorClass,\n  CoreBaseServiceConfig,\n  CoreCacheManagerInstance,\n} from '@plyaz/types/core';\nimport type { DatabaseServiceInterface } from '@plyaz/types/db';\nimport type { ObservabilityAdapter, Span } from '@plyaz/types/observability';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * API client type (from @plyaz/core ApiClientService)\n */\nexport type ApiClient = Awaited<ReturnType<typeof ApiClientService.createStandaloneClient>>;\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Abstract Base Class\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Abstract base class for domain services\n *\n * Uses generics for strong typing:\n * - TConfig: Service configuration type\n * - TMapper: Mapper instance type\n * - TValidator: Validator instance type\n *\n * Subclasses use the super({...}) pattern:\n * ```typescript\n * class MyService extends BaseDomainService<MyConfig, MyMapper, MyValidator> {\n *   constructor(config: MyConfig) {\n *     super({\n *       serviceName: 'MyService',\n *       supportedRuntimes: ['universal'],\n *       serviceConfig: config,\n *       apiClientConfig: { baseURL: '/api' },\n *       MapperClass: MyMapperClass,\n *       ValidatorClass: MyValidatorClass,\n *     });\n *   }\n * }\n * ```\n */\nexport abstract class BaseDomainService<\n  TConfig extends CoreBaseDomainServiceConfig = CoreBaseDomainServiceConfig,\n  TMapper extends CoreBaseMapperInstance<unknown, unknown> = CoreBaseMapperInstance<\n    unknown,\n    unknown\n  >,\n  TValidator extends CoreBaseValidatorInstance = CoreBaseValidatorInstance,\n> {\n  // ─────────────────────────────────────────────────────────────────────────\n  // Instance Properties\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /** Service name for logging and error messages */\n  readonly serviceName: string;\n\n  /** Supported runtimes for this service */\n  readonly supportedRuntimes: readonly CoreServiceRuntime[];\n\n  /** Service configuration */\n  protected readonly config: TConfig;\n\n  /** Logger instance */\n  protected readonly logger: PackageLogger;\n\n  /** Initialization state */\n  protected _initialized: boolean = false;\n\n  // API Client (optional)\n  private _apiClient: ApiClient | null = null;\n  private _clientInitPromise: Promise<void> | null = null;\n  private readonly _apiClientConfig?: ApiClientOptions;\n  private readonly _setAsDefaultClient: boolean;\n\n  // Injected Services (cache, db, api, observability)\n  protected readonly cacheManager?: CoreCacheManagerInstance;\n  protected readonly dbService?: DatabaseServiceInterface;\n  protected readonly apiService?: ApiClient; // Injected ApiClient (different from _apiClient)\n  protected readonly observabilityService?: ObservabilityAdapter;\n\n  /**\n   * Cache prefix for namespacing cache keys (e.g., 'example', 'user', 'product').\n   * Subclasses can override by defining as a property.\n   * If not overridden, defaults to serviceName.toLowerCase().\n   *\n   * @example\n   * ```typescript\n   * protected cachePrefix = 'my-service'; // Override default\n   * ```\n   */\n  protected cachePrefix: string = '';\n\n  // Mapper and Validator instances (lazy)\n  private _mapperInstance: TMapper | null = null;\n  private _validatorInstance: TValidator | null = null;\n  private readonly _MapperClass?: CoreMapperClass<TMapper>;\n  private readonly _ValidatorClass?: CoreValidatorClass<TValidator>;\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Constructor\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Create a new domain service instance\n   *\n   * @param config - Base service configuration (passed via super({...}))\n   */\n  // eslint-disable-next-line complexity\n  constructor(config: CoreBaseServiceConfig<TConfig, TMapper, TValidator>) {\n    this.serviceName = config.serviceName;\n    this.supportedRuntimes = config.supportedRuntimes;\n    this.config = config.serviceConfig;\n    this._setAsDefaultClient = config.setAsDefaultClient ?? false;\n\n    // Initialize logger with Core's configured transport\n    this.logger = new PackageLogger({\n      packageName: 'core',\n      service: this.serviceName,\n      transport: Core.loggerTransport,\n    });\n\n    // Store API client config for lazy initialization\n    this._apiClientConfig = config.apiClientConfig;\n\n    // Store injected services (cache, db, api, observability)\n    // Cast from unknown (types package uses unknown to avoid circular deps)\n    this.cacheManager = config.injected?.cache as CoreCacheManagerInstance | undefined;\n    this.dbService = config.injected?.db as DatabaseServiceInterface | undefined;\n    this.apiService = config.injected?.api as ApiClient | undefined;\n    // observabilityOverride takes precedence over injected observability\n    this.observabilityService = (config.serviceConfig.observabilityOverride ??\n      config.injected?.observability) as ObservabilityAdapter | undefined;\n\n    // Initialize cache prefix to serviceName if not set by subclass\n    // Subclasses can override by setting in their constructor after super()\n    if (!this.cachePrefix) {\n      this.cachePrefix = this.serviceName.toLowerCase();\n    }\n\n    // Store mapper/validator classes for lazy initialization\n    this._MapperClass = config.mapperClass;\n    this._ValidatorClass = config.validatorClass;\n\n    // Initialize API client if config provided\n    if (this._apiClientConfig) {\n      this.initializeApiClient();\n    }\n\n    this.logger.debug(`${this.serviceName} created`, {\n      supportedRuntimes: this.supportedRuntimes,\n      hasApiClient: !!this._apiClientConfig,\n      injected: {\n        cache: !!this.cacheManager,\n        db: !!this.dbService,\n        api: !!this.apiService,\n        observability: !!this.observabilityService,\n      },\n      cachePrefix: this.cachePrefix,\n      hasMapper: !!this._MapperClass,\n      hasValidator: !!this._ValidatorClass,\n    });\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Getters\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Check if the service is enabled\n   * Service is enabled by default unless explicitly disabled\n   */\n  get isServiceEnabled(): boolean {\n    return this.config?.enabled !== false;\n  }\n\n  /**\n   * Check if the service is initialized (API client ready)\n   */\n  get isInitialized(): boolean {\n    return this._initialized;\n  }\n\n  /**\n   * Check if mapper is available\n   */\n  get hasMapper(): boolean {\n    return !!this._MapperClass;\n  }\n\n  /**\n   * Check if validator is available\n   */\n  get hasValidator(): boolean {\n    return !!this._ValidatorClass;\n  }\n\n  /**\n   * Get the mapper instance (lazy initialization)\n   * @throws CorePackageError if MapperClass was not provided\n   */\n  get mapper(): TMapper {\n    if (!this._mapperInstance && this._MapperClass) {\n      this._mapperInstance = new this._MapperClass();\n    }\n    if (!this._mapperInstance) {\n      throw new CorePackageError(\n        `${this.serviceName} does not have a Mapper configured`,\n        ERROR_CODES.FEATURE_NOT_SUPPORTED\n      );\n    }\n    return this._mapperInstance;\n  }\n\n  /**\n   * Set the mapper instance\n   * Allows subclasses to override mapper initialization\n   */\n  set mapper(value: TMapper) {\n    this._mapperInstance = value;\n  }\n\n  /**\n   * Get the validator instance (lazy initialization)\n   * @throws CorePackageError if ValidatorClass was not provided\n   */\n  get validator(): TValidator {\n    if (!this._validatorInstance && this._ValidatorClass) {\n      this._validatorInstance = new this._ValidatorClass();\n    }\n    if (!this._validatorInstance) {\n      throw new CorePackageError(\n        `${this.serviceName} does not have a Validator configured`,\n        ERROR_CODES.FEATURE_NOT_SUPPORTED\n      );\n    }\n    return this._validatorInstance;\n  }\n\n  /**\n   * Set the validator instance\n   * Allows subclasses to override validator initialization\n   */\n  set validator(value: TValidator) {\n    this._validatorInstance = value;\n  }\n\n  /**\n   * Get the API client (after initialization)\n   * @throws CorePackageError if API client was not configured or not initialized\n   */\n  get apiClient(): ApiClient {\n    if (!this._apiClient) {\n      throw new CorePackageError(\n        `${this.serviceName} API client not initialized. Call ensureApiClientInitialized() first.`,\n        ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n      );\n    }\n    return this._apiClient;\n  }\n\n  /**\n   * Get the observability adapter (if injected)\n   * Returns undefined if observability is not enabled\n   */\n  get observability(): ObservabilityAdapter | undefined {\n    return this.observabilityService;\n  }\n\n  /**\n   * Check if observability is available\n   */\n  get hasObservability(): boolean {\n    return !!this.observabilityService;\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // API Client Initialization\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Initialize API client asynchronously\n   * Called from constructor if apiClientConfig is provided\n   *\n   * Uses ApiClientService.createStandaloneClient() which includes:\n   * - Automatic error handling (single errors and arrays)\n   * - Event emission to CORE_EVENTS.SYSTEM.ERROR and CORE_EVENTS.API.REQUEST_ERROR\n   * - Serialization to unified SerializedError format\n   */\n  private initializeApiClient(): void {\n    if (this._clientInitPromise || !this._apiClientConfig) {\n      return;\n    }\n\n    this._clientInitPromise = (async () => {\n      try {\n        // Use ApiClientService.createStandaloneClient() which includes Core error handling\n        // This handles: single errors, error arrays, event emission, serialization\n        this._apiClient = await ApiClientService.createStandaloneClient(this._apiClientConfig!);\n\n        // Set as default client for all fetchers if configured\n        if (this._setAsDefaultClient) {\n          setDefaultApiClient(this._apiClient);\n        }\n\n        this._initialized = true;\n\n        this.logger.debug('API client initialized', {\n          service: this.serviceName,\n          baseURL: this._apiClientConfig!.baseURL,\n        });\n      } catch (error) {\n        this.logger.error('Failed to initialize API client', {\n          service: this.serviceName,\n          error: error instanceof Error ? error.message : String(error),\n        });\n        throw error;\n      }\n    })();\n  }\n\n  /**\n   * Ensure API client is initialized before use.\n   * Call this from methods that need the API client.\n   * Also called by ServiceRegistry.create() for services with async initialization.\n   */\n  async ensureApiClientInitialized(): Promise<void> {\n    if (this._clientInitPromise) {\n      await this._clientInitPromise;\n    }\n    if (this._apiClientConfig && !this._apiClient) {\n      throw new CorePackageError(\n        `${this.serviceName} API client not initialized`,\n        ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n      );\n    }\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Configuration Management\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Get current configuration (immutable copy)\n   */\n  getConfig(): Readonly<TConfig> {\n    return { ...this.config };\n  }\n\n  /**\n   * Get a default value\n   * @param key - The key to get the default for\n   */\n  getDefault<T = FeatureFlagValue>(key: string): T | undefined {\n    return this.config?.defaults?.[key] as T | undefined;\n  }\n\n  /**\n   * Set a default value (mutates config.defaults)\n   * @param key - The key to set the default for\n   * @param value - The default value\n   */\n  setDefault(key: string, value: FeatureFlagValue): void {\n    if (!this.config.defaults) {\n      (this.config as CoreBaseDomainServiceConfig).defaults = {};\n    }\n    this.config.defaults![key] = value;\n  }\n\n  /**\n   * Set multiple default values\n   * @param defaults - Record of default values\n   */\n  setDefaults(defaults: Record<string, FeatureFlagValue>): void {\n    if (!this.config.defaults) {\n      (this.config as CoreBaseDomainServiceConfig).defaults = {};\n    }\n    Object.assign(this.config.defaults!, defaults);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Assertions\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Assert that the service is available (configured and ready)\n   * @throws CorePackageError if not available\n   */\n  protected assertAvailable(): void {\n    if (!this.isAvailable()) {\n      throw new CorePackageError(\n        `${this.serviceName} is not available. Check configuration.`,\n        ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n      );\n    }\n  }\n\n  /**\n   * Assert that the service is enabled\n   * @throws CorePackageError if disabled\n   */\n  protected assertEnabled(): void {\n    if (!this.isServiceEnabled) {\n      throw new CorePackageError(\n        `${this.serviceName} is disabled. Set enabled: true in configuration.`,\n        ERROR_CODES.FEATURE_NOT_SUPPORTED\n      );\n    }\n  }\n\n  /**\n   * Assert that the service is ready (enabled AND available)\n   * @throws CorePackageError if not ready\n   */\n  protected assertReady(): void {\n    this.assertEnabled();\n    this.assertAvailable();\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Abstract Methods - Must be implemented by subclasses\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Check if service is available (configured and ready)\n   * Subclasses must implement this to check credentials, config, etc.\n   *\n   * @returns true if available\n   */\n  abstract isAvailable(): boolean;\n\n  /**\n   * Dispose/cleanup the service\n   * Subclasses must implement to release resources\n   */\n  abstract dispose(): void;\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Helper Methods\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Log debug message with service context\n   */\n  protected logDebug(message: string, data?: Record<string, unknown>): void {\n    this.logger.debug(message, {\n      service: this.serviceName,\n      ...data,\n    });\n  }\n\n  /**\n   * Log info message with service context\n   */\n  protected logInfo(message: string, data?: Record<string, unknown>): void {\n    this.logger.info(message, {\n      service: this.serviceName,\n      ...data,\n    });\n  }\n\n  /**\n   * Log warning message with service context\n   */\n  protected logWarn(message: string, data?: Record<string, unknown>): void {\n    this.logger.warn(message, {\n      service: this.serviceName,\n      ...data,\n    });\n  }\n\n  /**\n   * Log error message with service context\n   */\n  protected logError(message: string, data?: Record<string, unknown>): void {\n    this.logger.error(message, {\n      service: this.serviceName,\n      ...data,\n    });\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Observability Helpers\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Record a metric (no-op if observability not available)\n   */\n  protected async recordMetric(\n    name: string,\n    value: number,\n    tags?: Record<string, string>\n  ): Promise<void> {\n    if (!this.observabilityService) return;\n    await this.observabilityService.recordHistogram(name, value, {\n      service: this.serviceName,\n      ...tags,\n    });\n  }\n\n  /**\n   * Increment a counter (no-op if observability not available)\n   */\n  protected async incrementCounter(\n    name: string,\n    value = 1,\n    tags?: Record<string, string>\n  ): Promise<void> {\n    if (!this.observabilityService) return;\n    await this.observabilityService.incrementCounter(name, value, {\n      service: this.serviceName,\n      ...tags,\n    });\n  }\n\n  /**\n   * Start a span for tracing (returns noop span if observability not available)\n   */\n  protected startSpan(name: string, attributes?: Record<string, string | number | boolean>): Span {\n    if (!this.observabilityService) {\n      // Return a noop span\n      return {\n        context: { traceId: '', spanId: '' },\n        setAttribute: () => {},\n        setAttributes: () => {},\n        addEvent: () => {},\n        setStatus: () => {},\n        end: () => {},\n        recordException: () => {},\n      };\n    }\n    return this.observabilityService.startSpan({\n      name,\n      attributes: {\n        'service.name': this.serviceName,\n        ...attributes,\n      },\n    });\n  }\n\n  /**\n   * Execute a function within a traced span\n   */\n  protected async withSpan<T>(\n    name: string,\n    fn: (span: Span) => Promise<T>,\n    attributes?: Record<string, string | number | boolean>\n  ): Promise<T> {\n    if (!this.observabilityService) {\n      // Execute without tracing\n      const noopSpan = this.startSpan(name);\n      return fn(noopSpan);\n    }\n    return this.observabilityService.withSpan(\n      {\n        name,\n        attributes: {\n          'service.name': this.serviceName,\n          ...attributes,\n        },\n      },\n      fn\n    );\n  }\n}\n","/**\n * Base Frontend Domain Service\n *\n * Extends BaseDomainService with common frontend patterns:\n * - **Primary/Read Store Pattern**: Services have ONE primary store (mutate) + multiple read stores (read-only)\n * - **Automatic Store Injection**: Stores injected by ServiceRegistry from root store\n * - **Automatic Loading State**: Managed via setStoresLoading() on primary store\n * - **Generic CRUD Operations**: With fetchers from @plyaz/api\n * - **Event Emission**: Typed event payloads via CoreEventManager\n * - **Automatic DTO Mapping**: Via mapper classes\n *\n * ## Store Architecture (NEW)\n *\n * ### Primary Store (Mutate)\n * - Service has ONE primary store defined by `store: 'campaigns'` config\n * - Can call: setData(), updateData(), setLoading()\n * - syncToStores() syncs ONLY to primary store\n * - Access via: this.primaryStore\n *\n * ### Read Stores (Read-Only)\n * - Service can read from multiple stores: `readStores: ['users', 'error', 'featureFlags']`\n * - Can read state but should NOT call mutation methods\n * - Used for cross-domain data access (e.g., campaign service reading user data)\n * - Access via: this.getReadStore('users')\n *\n * ### All Stores from Root Store\n * - All stores (domain + global) are slices of ONE root Zustand store\n * - Automatically reactive - changes propagate to subscribers (React components)\n * - Error/featureFlags are built-in, domain stores added dynamically\n *\n * Frontend domain services should extend this class instead of BaseDomainService\n * to get automatic store integration and CRUD capabilities.\n *\n * All generic type parameters for full type safety:\n * - TConfig: Service configuration type\n * - TStore: Store interface type\n * - TData: Data type for store sync\n * - TEntity: Domain entity type\n * - TResponseDTO: API response DTO type (snake_case)\n * - TCreateDTO: Create request DTO type\n * - TPatchDTO: Patch request DTO type (partial update)\n * - TQueryDTO: Query/filter DTO type for fetchAll\n * - TStoreState: Serializable store state type\n * - TMapper: Mapper instance type\n * - TValidator: Optional validator type\n *\n * @example\n * ```typescript\n * class MyFrontendService extends BaseFrontendDomainService<\n *   MyConfig,\n *   MyStore,\n *   MyStoreData,\n *   MyEntity,\n *   MyResponseDTO,\n *   CreateMyDTO,\n *   PatchMyDTO,\n *   QueryMyDTO,\n *   MyStoreState,\n *   MyMapper\n * > {\n *   protected eventPrefix = 'myDomain';\n *   protected mapper: MyMapper;\n *\n *   constructor(config: MyConfig) {\n *     super({ ... mapperClass: MyMapperClass });\n *     this.mapper = new MyMapperClass();\n *   }\n *\n *   // All CRUD methods inherited!\n *   // - fetchAll(query?)\n *   // - fetchById(id)\n *   // - create(data)\n *   // - update(id, data)\n *   // - delete(id)\n * }\n * ```\n */\n\nimport { BaseDomainService } from './BaseDomainService';\nimport { STORE_KEYS } from '@plyaz/store';\nimport { PackageLogger } from '@plyaz/logger';\nimport { CoreEventManager } from '../../events/CoreEventManager';\nimport { BaseError, CorePackageError } from '@plyaz/errors';\nimport { ERROR_CODES } from '@plyaz/types/errors';\n\nconst logger = new PackageLogger({ packageName: 'core', service: 'BaseFrontendDomainService' });\nimport { OBSERVABILITY_METRICS } from '@plyaz/types/observability';\nimport { Core } from '../../init/CoreInitializer';\nimport type {\n  RootStoreSlice,\n  StreamStoreSlice,\n  StreamMessageHandler,\n  StreamMessageFilter,\n} from '@plyaz/types/store';\nimport type {\n  StreamChannel,\n  CoreStreamStoreGetter,\n  CoreStreamHandlerIds,\n  CoreStreamHandlerDeclaration,\n  CoreEntityCreatingPayload,\n  CoreEntityCreatedPayload,\n  CoreEntityPatchingPayload,\n  CoreEntityPatchedPayload,\n  CoreEntityDeletingPayload,\n  CoreEntityDeletedPayload,\n  CoreEntityErrorPayload,\n  CoreEntityCompletePayload,\n} from '@plyaz/types/core';\n\n// Import types for local use\nimport type {\n  CoreBaseFrontendStore,\n  CoreBaseFrontendServiceConfig,\n  CoreBaseFrontendServiceConstructorConfig,\n  CoreBaseMapperInstance,\n  CoreBaseValidatorInstance,\n  CoreStoreHandlers,\n  CoreOptimisticUpdateConfig,\n} from '@plyaz/types/core';\nimport { HTTP_STATUS } from '@plyaz/types';\nimport type {\n  UploadFileRequest,\n  UploadFileResponse,\n  UploadFilesRequest,\n  UploadFilesResponse,\n  GenerateDocumentRequest,\n  GenerateDocumentResponse,\n  ServiceOptions,\n} from '@plyaz/types/api';\nimport {\n  uploadFile as uploadFileFetcher,\n  uploadFiles as uploadFilesFetcher,\n  generateDocument as generateDocumentFetcher,\n} from '@plyaz/api';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Constants\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** Default polling interval in milliseconds (30 seconds) */\nconst DEFAULT_POLLING_INTERVAL_MS = 30000;\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Base Event Payload Type\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Base type for frontend event payloads\n * All frontend event payloads should extend this\n */\ntype BaseFrontendEventPayload =\n  | CoreEntityCreatingPayload<unknown>\n  | CoreEntityCreatedPayload<unknown, unknown>\n  | CoreEntityPatchingPayload<unknown>\n  | CoreEntityPatchedPayload<unknown, unknown>\n  | CoreEntityDeletingPayload\n  | CoreEntityDeletedPayload\n  | CoreEntityErrorPayload\n  | CoreEntityCompletePayload\n  | Record<string, unknown>;\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Abstract Base Class\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Abstract base class for frontend domain services with store integration and CRUD operations.\n *\n * Extends BaseDomainService with:\n * - Multi-store connection management\n * - Automatic sync to connected stores\n * - Loading/error state propagation\n * - Generic CRUD operations (fetchAll, fetchById, create, update, delete)\n * - Event emission with typed payloads\n * - Automatic DTO mapping via mapper\n *\n * @typeParam TConfig - Service configuration type\n * @typeParam TStore - Store interface type\n * @typeParam TData - Data type for store sync\n * @typeParam TEntity - Domain entity type\n * @typeParam TResponseDTO - API response DTO type\n * @typeParam TCreateDTO - Create request DTO type\n * @typeParam TPatchDTO - Patch request DTO type\n * @typeParam TQueryDTO - Query/filter DTO type for fetchAll (default: unknown)\n * @typeParam TStoreState - Serializable store state type\n * @typeParam TMapper - Mapper instance type\n * @typeParam TValidator - Optional validator type\n * @typeParam TDeleteResult - Delete operation result type (default: void for backwards compatibility)\n */\nexport abstract class BaseFrontendDomainService<\n  TConfig extends CoreBaseFrontendServiceConfig<TData, TStore>,\n  TStore extends CoreBaseFrontendStore<TData>,\n  TData = Record<string, unknown>,\n  TEntity = unknown,\n  TResponseDTO = unknown,\n  TCreateDTO = unknown,\n  TPatchDTO extends Partial<unknown> = Partial<TCreateDTO>,\n  TQueryDTO = unknown,\n  TStoreState = TEntity,\n  TMapper extends CoreBaseMapperInstance<\n    TEntity,\n    TResponseDTO,\n    TCreateDTO,\n    TCreateDTO,\n    TPatchDTO,\n    unknown,\n    TStoreState\n  > = CoreBaseMapperInstance<\n    TEntity,\n    TResponseDTO,\n    TCreateDTO,\n    TCreateDTO,\n    TPatchDTO,\n    unknown,\n    TStoreState\n  >,\n  TValidator extends CoreBaseValidatorInstance = CoreBaseValidatorInstance,\n  TDeleteResult = void,\n> extends BaseDomainService<TConfig, TMapper, TValidator> {\n  // ─────────────────────────────────────────────────────────────────────────\n  // Required Properties (Subclasses must provide)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Event prefix for all events emitted by this service\n   * E.g., 'example' → emits 'example:creating', 'example:created', etc.\n   *\n   * Required by subclasses\n   */\n  protected abstract eventPrefix: string;\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Store Properties\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /** Primary store - the main store this service can mutate */\n  private _primaryStore: TStore | null = null;\n\n  /**\n   * Primary store key - resolved from (in order of precedence):\n   * 1. serviceConfig.store (explicit config)\n   * 2. Static defaultStoreKey on class\n   * 3. undefined (no store integration)\n   *\n   * Override in subclass or set via config.\n   * @example protected primaryStoreKey = STORE_KEYS.EXAMPLE;\n   */\n  protected primaryStoreKey?: string;\n\n  /** Read-only stores - can read but not mutate */\n  private readonly _readStores = new Map<string, unknown>();\n\n  /**\n   * Read-only store keys - always includes error and featureFlags by default\n   * Override in subclass to add additional read stores\n   * @example protected readStoreKeys = [...super.readStoreKeys, STORE_KEYS.CAMPAIGNS];\n   */\n  protected readStoreKeys: string[] = [STORE_KEYS.ERROR, STORE_KEYS.FEATURE_FLAGS];\n\n  /** Store handlers for custom store synchronization */\n  protected readonly storeHandlers?: CoreStoreHandlers<TData, TStore>;\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Optimistic Update Properties\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /** Optimistic update configuration */\n  protected readonly optimisticConfig?: CoreOptimisticUpdateConfig;\n\n  /** Stack of previous states for rollback (LIFO) */\n  private readonly _rollbackStack: Array<{\n    operation: string;\n    previousState: TData | null;\n    timestamp: number;\n  }> = [];\n\n  /** Maximum rollback stack size */\n  private readonly _maxRollbackStackSize = 10;\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Polling Properties\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /** Polling timer reference */\n  private _pollingTimer: ReturnType<typeof setInterval> | null = null;\n\n  /**\n   * Registered stream handler IDs for auto-cleanup on dispose.\n   * IDs are added by registerStreamHandler() and removed on dispose().\n   */\n  private readonly _registeredStreamHandlerIds = new Set<string>();\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Static Stream Handler Properties\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Flag to track if static stream handlers are registered.\n   * Subclasses should set this in their registerStreamHandlers() method.\n   */\n  protected static _streamHandlersRegistered = false;\n\n  /**\n   * Stream handler IDs for auto-cleanup.\n   * Subclasses should define their handler IDs as a readonly object.\n   *\n   * @example\n   * ```typescript\n   * protected static readonly STREAM_HANDLER_IDS: CoreStreamHandlerIds<\n   *   'UPLOAD_PROGRESS' | 'DOWNLOAD_PROGRESS'\n   * > = {\n   *   UPLOAD_PROGRESS: 'files:upload-progress',\n   *   DOWNLOAD_PROGRESS: 'files:download-progress',\n   * } as const;\n   * ```\n   */\n  protected static readonly STREAM_HANDLER_IDS: CoreStreamHandlerIds<string> = {};\n\n  /**\n   * Declarative stream handlers configuration.\n   * Define handlers as an array - they will be auto-registered by registerStreamHandlersFromConfig().\n   *\n   * Each handler config includes:\n   * - id: Unique handler ID (should match a key in STREAM_HANDLER_IDS)\n   * - channels: Channels to listen to\n   * - events: Event types to listen to\n   * - priority: Handler priority (higher = called first)\n   * - handler: Handler function receiving typed message and store getter\n   *\n   * @example\n   * ```typescript\n   * protected static readonly STREAM_HANDLERS: CoreStreamHandlerDeclaration[] = [\n   *   {\n   *     id: 'files:upload-progress',\n   *     channels: ['uploads', 'upload:'],\n   *     events: ['progress', 'upload:progress'],\n   *     priority: 100,\n   *     handler: (message, getStore) => {\n   *       const filesStore = getStore()?.files;\n   *       filesStore?.setUploadProgress(message.data.fileId, { ... });\n   *     },\n   *   },\n   * ];\n   * ```\n   */\n  protected static readonly STREAM_HANDLERS: CoreStreamHandlerDeclaration[] = [];\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Constructor\n  // ─────────────────────────────────────────────────────────────────────────\n\n  // eslint-disable-next-line complexity\n  constructor(\n    config: CoreBaseFrontendServiceConstructorConfig<TConfig, TStore, TData, TMapper, TValidator>\n  ) {\n    // Auto-construct apiClientConfig from serviceConfig.apiBasePath if not provided\n    // This reduces boilerplate in child services - they only need to set apiBasePath\n    const resolvedConfig = BaseFrontendDomainService.resolveApiClientConfig(config);\n\n    super(resolvedConfig);\n\n    this.storeHandlers = config.serviceConfig.storeHandlers;\n    this.optimisticConfig = config.serviceConfig.optimisticUpdates;\n\n    // Initialize mapper if class provided\n    if (config.mapperClass) {\n      this.mapper = new config.mapperClass() as TMapper;\n    }\n\n    const serviceConfig = config.serviceConfig;\n\n    // Resolve primary store key with precedence:\n    // 1. Explicit config (serviceConfig.store) - allows override\n    // 2. Static primaryStoreKey on child class\n    if (serviceConfig.store !== undefined) {\n      this.primaryStoreKey = serviceConfig.store;\n    } else {\n      // Use static primaryStoreKey from child class\n      const staticKey = (this.constructor as { primaryStoreKey?: string }).primaryStoreKey;\n      if (staticKey) {\n        this.primaryStoreKey = staticKey;\n      }\n    }\n\n    // Merge readStores from config with base defaults\n    if (serviceConfig.readStores !== undefined) {\n      // Merge config readStores with base defaults (error, featureFlags)\n      // Use Set to avoid duplicates\n      this.readStoreKeys = Array.from(\n        new Set([\n          ...this.readStoreKeys, // Base defaults: error, featureFlags\n          ...serviceConfig.readStores, // Additional from config\n        ])\n      );\n    }\n\n    // Get injected stores from ServiceRegistry\n    const injectedStores = config.injected?.stores;\n\n    // Connect primary store (can mutate)\n    if (this.primaryStoreKey) {\n      const primaryStore = injectedStores?.[this.primaryStoreKey] as TStore;\n      if (primaryStore) {\n        this._primaryStore = primaryStore;\n        this.logDebug(`Connected primary store: '${this.primaryStoreKey}'`);\n      } else {\n        // Only warn on client - on server (SSR), stores are expected to be unavailable\n        // This is normal during SSR since Zustand stores only exist on the client\n        const isServer = typeof globalThis.window === 'undefined';\n        if (!isServer) {\n          // Warn instead of throw - store integration is optional for services\n          // Services can still work without stores, they just can't use store mutations\n          this.logWarn(\n            `Primary store '${this.primaryStoreKey}' not found. ` +\n              `Store mutations (setData/updateData/setLoading) will be disabled. ` +\n              `Configure stores in PlyazProvider to enable store integration.`\n          );\n        }\n      }\n    }\n\n    // Connect read-only stores (can only read)\n    for (const key of this.readStoreKeys) {\n      const readStore = injectedStores?.[key];\n      if (readStore) {\n        this._readStores.set(key, readStore);\n        this.logDebug(`Connected read-only store: '${key}'`);\n      } else {\n        this.logDebug(`Read-only store '${key}' not found in injected stores`);\n      }\n    }\n\n    // Log warning if no primary store configured\n    if (!this.primaryStoreKey) {\n      this.logWarn(\n        `No primary store configured. ` +\n          `Set 'store' in config to enable store mutations (setData/updateData/setLoading).`\n      );\n    }\n\n    this.logDebug('Frontend service initialized', {\n      primaryStore: this.primaryStoreKey,\n      readStores: this.readStoreKeys,\n    });\n  }\n\n  /**\n   * Auto-resolve apiClientConfig from serviceConfig.apiBasePath if not explicitly provided.\n   * This reduces boilerplate in child services - they only need to set apiBasePath in config.\n   *\n   * Priority:\n   * 1. Explicit apiClientConfig.baseURL (full control)\n   * 2. serviceConfig.apiBasePath (auto-constructed, merged with injected options)\n   * 3. undefined (no API client)\n   *\n   * When auto-constructing, merges injected API options (headers, timeout, etc.)\n   * with the service's apiBasePath as baseURL.\n   */\n  protected static resolveApiClientConfig<\n    T extends {\n      serviceConfig: { apiBasePath?: string };\n      apiClientConfig?: { baseURL?: string };\n      injected?: { api?: unknown };\n    },\n  >(config: T): T {\n    // If apiClientConfig with baseURL is already provided, use it as-is\n    if (config.apiClientConfig?.baseURL) {\n      return config;\n    }\n\n    // If apiBasePath is defined in serviceConfig, auto-construct apiClientConfig\n    const apiBasePath = config.serviceConfig.apiBasePath;\n    if (apiBasePath) {\n      // Merge injected API options (headers, timeout, etc.) with service's baseURL\n      const injectedOptions = config.injected?.api\n        ? {} // If using injected API client, don't merge its options here\n        : (config.apiClientConfig ?? {});\n\n      return {\n        ...config,\n        apiClientConfig: {\n          ...injectedOptions,\n          baseURL: apiBasePath, // Service's apiBasePath always takes precedence\n        },\n      };\n    }\n\n    // No apiClientConfig needed\n    return config;\n  }\n\n  /**\n   * Initialize service and wait for API client to be ready.\n   * Call this in child service's static create() method after constructing the instance.\n   *\n   * @param service - The service instance to initialize\n   * @returns The initialized service (same instance, for chaining)\n   *\n   * @example\n   * ```typescript\n   * static async create(config, options): Promise<MyService> {\n   *   const service = new MyService(config, options);\n   *   return this.initializeService(service);\n   * }\n   * ```\n   */\n  protected static async initializeService<\n    T extends { ensureApiClientInitialized(): Promise<void> },\n  >(service: T): Promise<T> {\n    await service.ensureApiClientInitialized();\n    return service;\n  }\n\n  /**\n   * Ensure service is ready for operations.\n   * Checks enabled/available status AND waits for API client initialization.\n   * Call this at the start of all CRUD methods.\n   *\n   * @throws CorePackageError if service is not enabled or available\n   */\n  protected async ensureReady(): Promise<void> {\n    this.assertReady();\n    await this.ensureApiClientInitialized();\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Store Management (Public API)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Get the number of connected stores (primary + read stores).\n   */\n  get connectedStoreCount(): number {\n    return (this._primaryStore ? 1 : 0) + this._readStores.size;\n  }\n\n  /**\n   * Check if any stores are connected (primary or read).\n   */\n  get hasConnectedStores(): boolean {\n    return !!this._primaryStore || this._readStores.size > 0;\n  }\n\n  /**\n   * Get primary store (protected).\n   * This is the store the service can mutate.\n   */\n  protected get primaryStore(): TStore | null {\n    return this._primaryStore;\n  }\n\n  /**\n   * Get a read-only store by key (protected).\n   * Can read state but should not call mutation methods.\n   *\n   * @param key - Store key (type-safe)\n   * @returns Store slice or undefined (auto-typed based on key)\n   */\n  protected getReadStore<K extends keyof RootStoreSlice>(key: K): RootStoreSlice[K] | undefined {\n    return this._readStores.get(key) as RootStoreSlice[K] | undefined;\n  }\n\n  /**\n   * Get a specific store slice by key (protected).\n   *\n   * **Namespaced Root Store Architecture:**\n   * - All stores are slices merged into ONE Zustand root store\n   * - Each slice is namespaced (e.g., store.example, store.errors)\n   * - This returns the SPECIFIC slice for the given key\n   * - Type-safe: only valid store keys allowed\n   *\n   * **Usage Guidelines:**\n   * - Can mutate stores that are NOT in readStoreKeys\n   * - Should NOT mutate stores in readStoreKeys (errors, featureFlags by default)\n   * - Useful for cross-domain updates (e.g., campaign service updating user stats)\n   *\n   * @param key - Store key (type-safe: 'example' | 'errors' | 'featureFlags')\n   * @returns Specific store slice (fully typed based on key)\n   *\n   * @example\n   * ```typescript\n   * // In CampaignService\n   * protected async afterCreate(id: string, campaign: Campaign) {\n   *   // Update primary store (campaigns)\n   *   this.primaryStore.addItem(campaign);\n   *\n   *   // Check feature flag (read-only) - auto-typed as FeatureFlagStoreSlice\n   *   const flagsSlice = this.getStore('featureFlags');  // ✅ Type-safe!\n   *   if (flagsSlice?.flags?.['update-user-stats']) {\n   *     // Update user store (cross-domain mutation - OK since not read-only)\n   *     const userSlice = this.getStore('users');  // ✅ Auto-typed!\n   *     userSlice?.incrementCampaignCount(campaign.userId);\n   *   }\n   * }\n   * ```\n   */\n  protected getStore<K extends keyof RootStoreSlice>(key: K): RootStoreSlice[K] | undefined {\n    // Returns specific slice from namespaced root store (type-safe)\n    return Core.getDomainStore(key);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Store Sync (Protected - for subclasses)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Sync data to primary store only (read stores are NOT updated).\n   * Uses setData (replace) or updateData (merge) based on `replace` parameter.\n   * If custom store handlers are configured, uses those instead of default behavior.\n   *\n   * @param data - Data to sync to primary store\n   * @param replace - If true, calls setData; if false, calls updateData\n   */\n  // eslint-disable-next-line complexity\n  protected syncToStores(data: TData, replace = false): void {\n    if (!this._primaryStore) {\n      this.logDebug('No primary store to sync to');\n      return;\n    }\n\n    // Check if store sync is disabled\n    if (this.storeHandlers?.disabled) {\n      this.logDebug('Store sync disabled via storeHandlers.disabled');\n      return;\n    }\n\n    try {\n      // Priority 1: Use custom handlers if configured\n      if (replace && this.storeHandlers?.setData) {\n        this.storeHandlers.setData(this._primaryStore, data);\n      } else if (!replace && this.storeHandlers?.updateData) {\n        this.storeHandlers.updateData(this._primaryStore, data as Partial<TData>);\n      }\n      // Priority 2: Use standard store methods\n      else if (replace && this._primaryStore.setData) {\n        this._primaryStore.setData(data);\n      } else if (!replace && this._primaryStore.updateData) {\n        this._primaryStore.updateData(data as Partial<TData>);\n      } else if (this._primaryStore.setData) {\n        // Fallback to setData if updateData not available\n        this._primaryStore.setData(data);\n      }\n\n      this.logDebug('Synced to primary store', {\n        primaryStore: this.primaryStoreKey,\n        replace,\n      });\n    } catch (error) {\n      this.logError('Failed to sync to primary store', { error });\n    }\n  }\n\n  /**\n   * Set loading state on primary store only.\n   * Read stores are NOT affected.\n   *\n   * Automatically called by CRUD methods before and after API calls.\n   *\n   * @param isLoading - Loading state\n   */\n  protected setStoresLoading(isLoading: boolean): void {\n    if (!this._primaryStore) return;\n\n    // Check if store sync is disabled\n    if (this.storeHandlers?.disabled) {\n      return;\n    }\n\n    // Use custom handler if configured\n    if (this.storeHandlers?.setLoading) {\n      this.storeHandlers.setLoading(this._primaryStore, isLoading);\n    }\n    // Fallback to default behavior\n    else if (this._primaryStore.setLoading) {\n      this._primaryStore.setLoading(isLoading);\n    }\n  }\n\n  /**\n   * Add entity to store (for create operations).\n   * Priority: storeHandlers.addData > store.addData\n   *\n   * @param entity - Entity to add\n   * @returns The converted store state (for reuse in event payloads)\n   */\n  protected addEntityToStore(entity: TEntity): TStoreState {\n    const storeState = this.mapper.toStoreState(entity);\n\n    if (this._primaryStore && !this.storeHandlers?.disabled) {\n      try {\n        if (this.storeHandlers?.addData) {\n          this.storeHandlers.addData(this._primaryStore, storeState);\n        } else if (this._primaryStore.addData) {\n          this._primaryStore.addData(storeState);\n        } else {\n          this.logDebug('Store does not support addData - skipping create sync');\n        }\n      } catch (error) {\n        this.logError('Failed to add entity to store', { error });\n      }\n    }\n\n    return storeState;\n  }\n\n  /**\n   * Update entity in store (for update operations).\n   * Priority: storeHandlers.updateDataById > store.updateDataById\n   *\n   * @param id - Entity ID\n   * @param entity - Updated entity\n   * @returns The converted store state (for reuse in event payloads)\n   */\n  protected updateEntityInStore(id: string, entity: TEntity): TStoreState {\n    const storeState = this.mapper.toStoreState(entity);\n\n    if (this._primaryStore && !this.storeHandlers?.disabled) {\n      try {\n        if (this.storeHandlers?.updateDataById) {\n          this.storeHandlers.updateDataById(this._primaryStore, id, storeState);\n        } else if (this._primaryStore.updateDataById) {\n          this._primaryStore.updateDataById(id, storeState);\n        } else {\n          this.logDebug('Store does not support updateDataById - skipping update sync');\n        }\n      } catch (error) {\n        this.logError('Failed to update entity in store', { error });\n      }\n    }\n\n    return storeState;\n  }\n\n  /**\n   * Sync multiple entities to store.\n   * Uses storeDataKey config to wrap entities in the correct structure.\n   *\n   * @param entities - Entities to sync\n   * @returns Array of converted store states\n   */\n  protected syncEntitiesToStore(entities: TEntity[]): TStoreState[] {\n    const storeStates = entities.map(entity => this.mapper.toStoreState(entity));\n\n    if (this._primaryStore && !this.storeHandlers?.disabled) {\n      // Build store data using configured key (default: 'items')\n      const storeDataKey = this.config.storeDataKey ?? 'items';\n      const storeData = this.buildNestedObject(storeDataKey, entities);\n      this.syncToStores(storeData as TData, true); // Replace with full list\n    }\n\n    return storeStates;\n  }\n\n  /**\n   * Build a nested object from a dot-notation key path.\n   * @example buildNestedObject('items', data) => { items: data }\n   * @example buildNestedObject('nested.items', data) => { nested: { items: data } }\n   */\n  private buildNestedObject(keyPath: string, value: unknown): Record<string, unknown> {\n    const keys = keyPath.split('.');\n    const result: Record<string, unknown> = {};\n\n    let current = result;\n    for (let i = 0; i < keys.length - 1; i++) {\n      current[keys[i]] = {};\n      current = current[keys[i]] as Record<string, unknown>;\n    }\n    current[keys[keys.length - 1]] = value;\n\n    return result;\n  }\n\n  /**\n   * Remove entity from store by ID.\n   * Priority: storeHandlers.removeData > store.removeData\n   *\n   * @param id - Entity ID to remove\n   */\n  protected removeEntityFromStore(id: string): void {\n    if (!this._primaryStore || this.storeHandlers?.disabled) return;\n\n    try {\n      // Priority 1: Custom handler for removeData\n      if (this.storeHandlers?.removeData) {\n        this.storeHandlers.removeData(this._primaryStore, id);\n      }\n      // Priority 2: Store's removeData method\n      else if (this._primaryStore.removeData) {\n        this._primaryStore.removeData(id);\n      } else {\n        this.logDebug('Store does not support removeData - skipping delete sync');\n        return;\n      }\n\n      this.logDebug('Removed entity from store', { entityId: id });\n    } catch (error) {\n      this.logError('Failed to remove entity from store', { error, entityId: id });\n    }\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Optimistic Update Helpers\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Check if optimistic updates are enabled for an operation.\n   */\n  protected isOptimisticEnabled(operation: 'create' | 'update' | 'delete'): boolean {\n    if (!this.optimisticConfig?.enabled) return false;\n    const ops = this.optimisticConfig.operations ?? ['create', 'update', 'delete'];\n    return ops.includes(operation);\n  }\n\n  /**\n   * Save current store state for potential rollback.\n   * Call this BEFORE making optimistic changes.\n   */\n  protected saveStateForRollback(operation: string): void {\n    if (!this._primaryStore?.getData) return;\n\n    const previousState = this._primaryStore.getData();\n    this._rollbackStack.push({\n      operation,\n      previousState: previousState ? { ...previousState } : null,\n      timestamp: Date.now(),\n    });\n\n    // Limit stack size\n    if (this._rollbackStack.length > this._maxRollbackStackSize) {\n      this._rollbackStack.shift();\n    }\n\n    this.logDebug('Saved state for rollback', { operation, stackSize: this._rollbackStack.length });\n  }\n\n  /**\n   * Rollback to previous state on error.\n   * Call this when an optimistic update fails.\n   */\n  protected rollbackState(operation: string, error: Error): void {\n    const entry = this._rollbackStack.pop();\n    if (!entry || !this._primaryStore) {\n      this.logWarn('No state to rollback', { operation });\n      return;\n    }\n\n    try {\n      if (entry.previousState && this._primaryStore.setData) {\n        this._primaryStore.setData(entry.previousState);\n        this.logInfo('Rolled back optimistic update', { operation });\n      }\n\n      // Call onRollback callback if configured\n      if (this.optimisticConfig?.onRollback) {\n        this.optimisticConfig.onRollback(operation, error, entry.previousState);\n      }\n\n      // Emit rollback event\n      this.emitEvent('optimistic:rollback', {\n        operation,\n        error: error.message,\n        previousState: entry.previousState,\n      } as Record<string, unknown>);\n    } catch (rollbackError) {\n      this.logError('Failed to rollback state', { error: rollbackError, operation });\n    }\n  }\n\n  /**\n   * Clear rollback state after successful operation.\n   * Call this when API succeeds.\n   */\n  protected clearRollbackState(operation: string): void {\n    // Remove the most recent entry for this operation\n    const index = this._rollbackStack.findIndex(e => e.operation === operation);\n    if (index >= 0) {\n      this._rollbackStack.splice(index, 1);\n    }\n  }\n\n  /**\n   * Resolve conflict between optimistic and server state.\n   */\n  // eslint-disable-next-line complexity\n  protected resolveConflict<T>(optimistic: T, server: T): T {\n    const resolution = this.optimisticConfig?.conflictResolution ?? 'server-wins';\n\n    switch (resolution) {\n      case 'server-wins':\n        return server;\n      case 'client-wins':\n        return optimistic;\n      case 'merge':\n        // Deep merge (simple implementation)\n        if (typeof optimistic === 'object' && typeof server === 'object') {\n          return { ...optimistic, ...server } as T;\n        }\n        return server;\n      case 'manual':\n        if (this.optimisticConfig?.onConflict) {\n          return this.optimisticConfig.onConflict(optimistic, server);\n        }\n        return server;\n      default:\n        return server;\n    }\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Response Unwrapping\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Unwrap response data if responseDataKey is configured.\n   *\n   * Handles wrapped API responses (e.g., SuccessResponseStandard) by extracting\n   * the actual data from a nested property. Supports nested keys with dot notation.\n   *\n   * @param data - Raw response data from fetcher\n   * @returns Unwrapped data or original data if no key configured\n   *\n   * @example\n   * ```typescript\n   * // Simple key: responseDataKey: 'data'\n   * // Input: { success: true, message: '...', data: [...], codeStatus: 200 }\n   * // Output: [...]\n   *\n   * // Nested key: responseDataKey: 'data.items'\n   * // Input: { data: { items: [...], total: 100 } }\n   * // Output: [...]\n   * ```\n   */\n  protected unwrapResponseData<T>(data: unknown): T {\n    const key = this.config.responseDataKey;\n    if (!key) return data as T;\n\n    // Support nested keys with dot notation (e.g., 'data.items')\n    const keys = key.split('.');\n    let result: unknown = data;\n\n    for (const k of keys) {\n      if (result && typeof result === 'object' && k in result) {\n        result = (result as Record<string, unknown>)[k];\n      } else {\n        // Key not found, return original data\n        return data as T;\n      }\n    }\n\n    return result as T;\n  }\n\n  /**\n   * Check if a response indicates success.\n   *\n   * Uses `responseSuccessKey` config if set, otherwise auto-detects from:\n   * - `isSuccess` (internal format)\n   * - `success` (alternative internal format)\n   * - `ok` (fetchff/fetch standard)\n   * - HTTP status code 200-299\n   *\n   * Supports nested keys via dot notation (e.g., `'meta.success'`).\n   *\n   * @param response - Response object from fetcher\n   * @returns true if response indicates success\n   */\n  // eslint-disable-next-line complexity\n  protected isResponseSuccess(response: unknown): boolean {\n    if (!response || typeof response !== 'object') {\n      return false;\n    }\n\n    const resp = response as Record<string, unknown>;\n    const successKey = this.config.responseSuccessKey;\n\n    // If successKey is configured, use it (supports nested keys)\n    if (successKey) {\n      const keys = successKey.split('.');\n      let result: unknown = resp;\n\n      for (const k of keys) {\n        if (result && typeof result === 'object' && k in result) {\n          result = (result as Record<string, unknown>)[k];\n        } else {\n          // Key not found, fall back to auto-detect\n          break;\n        }\n      }\n\n      // If we found a boolean value, use it\n      if (typeof result === 'boolean') {\n        return result;\n      }\n    }\n\n    // Auto-detect: check common success properties in order\n    if ('isSuccess' in resp && typeof resp.isSuccess === 'boolean') {\n      return resp.isSuccess;\n    }\n\n    if ('success' in resp && typeof resp.success === 'boolean') {\n      return resp.success;\n    }\n\n    if ('ok' in resp && typeof resp.ok === 'boolean') {\n      return resp.ok;\n    }\n\n    // Check HTTP status code\n    if ('status' in resp && typeof resp.status === 'number') {\n      return resp.status >= HTTP_STATUS.OK && resp.status < HTTP_STATUS.MULTIPLE_CHOICES;\n    }\n\n    // Default: assume success if we have data and no explicit error\n    return 'data' in resp && !('error' in resp && resp.error);\n  }\n\n  /**\n   * Extract error from API response.\n   *\n   * Uses `responseErrorKey` config if set, otherwise auto-detects from:\n   * - `error` (common format)\n   * - `errors` (array format, e.g., GraphQL)\n   *\n   * Supports nested keys via dot notation (e.g., `'meta.error'`).\n   *\n   * @param response - Response object from fetcher\n   * @returns Extracted error or undefined if not found\n   */\n  // eslint-disable-next-line complexity\n  protected extractResponseError(response: unknown): unknown {\n    if (!response || typeof response !== 'object') {\n      return undefined;\n    }\n\n    const resp = response as Record<string, unknown>;\n    const errorKey = this.config.responseErrorKey;\n\n    // If errorKey is configured, use it (supports nested keys)\n    if (errorKey) {\n      const keys = errorKey.split('.');\n      let result: unknown = resp;\n\n      for (const k of keys) {\n        if (result && typeof result === 'object' && k in result) {\n          result = (result as Record<string, unknown>)[k];\n        } else {\n          // Key not found\n          return undefined;\n        }\n      }\n\n      return result;\n    }\n\n    // Auto-detect: check common error properties\n    if ('error' in resp && resp.error) {\n      return resp.error;\n    }\n\n    if ('errors' in resp && resp.errors) {\n      return resp.errors;\n    }\n\n    return undefined;\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Generic CRUD Operations\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Fetch all entities from API\n   *\n   * Flow:\n   * 1. Assert service is ready\n   * 2. Check fetcher is available\n   * 3. Set stores loading\n   * 4. Emit 'fetching' event\n   * 5. Lifecycle hook: beforeFetchAll\n   * 6. Call fetcher (from @plyaz/api)\n   * 7. Map response DTOs to domain entities\n   * 8. Lifecycle hook: afterFetchAll\n   * 9. Emit 'fetched' event\n   * 10. Return entities\n   *\n   * Error Handling:\n   * - On API error: wrap and emit error event\n   * - Set error on all stores\n   * - Re-throw wrapped error\n   *\n   * @param query - Optional query/filter parameters (e.g., { status: 'active' })\n   * @param options - Optional service options for fetcher\n   * @returns Promise resolving to array of entities\n   * @throws CorePackageError if fetcher not configured or API call fails\n   *\n   * @example\n   * ```typescript\n   * // Fetch all entities\n   * const allItems = await service.fetchAll();\n   *\n   * // Fetch with filters\n   * const activeItems = await service.fetchAll({ status: 'active' });\n   *\n   * // Fetch with pagination\n   * const pagedItems = await service.fetchAll({ page: 2, limit: 10 });\n   * ```\n   */\n  // eslint-disable-next-line complexity\n  async fetchAll(query?: Partial<TQueryDTO>, options?: unknown): Promise<TEntity[]> {\n    await this.ensureReady();\n    const startTime = Date.now();\n\n    if (!this.config.fetchers?.fetchAll) {\n      throw new CorePackageError(\n        'fetchAll fetcher not configured. Pass fetchers.fetchAll in service config.',\n        ERROR_CODES.CORE_OPERATION_FAILED\n      );\n    }\n\n    this.setStoresLoading(true);\n    this.emitEvent('fetching', { query } as Record<string, unknown>);\n\n    try {\n      // 1. Lifecycle hook\n      await this.beforeFetchAll?.(query);\n\n      // 2. Call fetcher with query\n      const response = await this.config.fetchers.fetchAll(query, options);\n\n      // Check for success - support multiple response formats\n      if (!this.isResponseSuccess(response)) {\n        const extractedError = this.extractResponseError(response);\n        throw new CorePackageError(\n          'Failed to fetch entities',\n          ERROR_CODES.CONTEXT_OPERATION_FAILED,\n          {\n            context: { operation: 'fetchAll', query },\n            cause: extractedError instanceof Error ? extractedError : undefined,\n            details: extractedError,\n          }\n        );\n      }\n\n      // 3. Unwrap response data if needed (e.g., SuccessResponseStandard format)\n      const rawData = this.unwrapResponseData<TResponseDTO[]>(response.data);\n\n      // Debug: Log config and response to diagnose issues\n      this.logDebug('fetchAll: checking config keys', {\n        responseSuccessKey: this.config.responseSuccessKey,\n        responseErrorKey: this.config.responseErrorKey,\n        responseDataKey: this.config.responseDataKey,\n        configKeys: Object.keys(this.config),\n      });\n\n      this.logDebug('fetchAll: response structure', {\n        responseType: typeof response,\n        responseKeys: response ? Object.keys(response as object) : [],\n        responseDataType: typeof (response as Record<string, unknown>).data,\n        hasOk: 'ok' in (response as object),\n        hasData: 'data' in (response as object),\n      });\n\n      this.logDebug('fetchAll: after unwrap', {\n        rawDataType: typeof rawData,\n        isArray: Array.isArray(rawData),\n        rawDataKeys: rawData && typeof rawData === 'object' ? Object.keys(rawData as object) : [],\n      });\n\n      // 4. Validate rawData is an array before mapping\n      if (!Array.isArray(rawData)) {\n        this.logWarn('fetchAll: unwrapped data is not an array, check responseDataKey config', {\n          responseDataKey: this.config.responseDataKey,\n          actualType: typeof rawData,\n          // Help debug by showing what we got\n          receivedData: rawData,\n        });\n        // Return empty array to prevent crash - the warning will help debug\n        return [];\n      }\n\n      // 5. Map DTOs to domain entities\n      const entities = rawData.map(dto => this.mapper.toDomain(dto as TResponseDTO));\n\n      // 6. Sync to store and get converted store states (no duplicate toStoreState)\n      this.syncEntitiesToStore(entities);\n\n      // 6. Lifecycle hook\n      await this.afterFetchAll?.(entities, query);\n\n      // 7. Emit success event\n      this.emitEvent('fetched', {\n        count: entities.length,\n        query,\n      } as Record<string, unknown>);\n\n      // Record success metrics\n      await this.recordOperationMetrics('fetchAll', Date.now() - startTime, true);\n\n      this.logInfo('Fetched entities', { count: entities.length, query });\n      return entities;\n    } catch (error) {\n      // Record error metrics\n      await this.recordOperationMetrics('fetchAll', Date.now() - startTime, false);\n\n      const pkgError = this.wrapError(error, 'fetchAll', { query });\n      // Note: Errors are thrown and caught by global error handler\n      // Individual stores should NOT have error state - only global error store\n      this.emitEvent('fetch:error', {\n        error: pkgError,\n        data: { query },\n      } satisfies CoreEntityErrorPayload);\n      throw pkgError;\n    } finally {\n      this.setStoresLoading(false);\n    }\n  }\n\n  /**\n   * Fetch single entity by ID from API\n   *\n   * @param id - Entity ID\n   * @param options - Optional service options for fetcher\n   * @returns Entity or null if not found\n   * @throws CorePackageError if fetcher not configured or API call fails\n   */\n  // eslint-disable-next-line complexity\n  async fetchById<TInput = string, TOptions = unknown>(\n    id: TInput,\n    options?: TOptions\n  ): Promise<TEntity | null> {\n    await this.ensureReady();\n    const startTime = Date.now();\n\n    if (!this.config.fetchers?.fetchById) {\n      throw new CorePackageError(\n        'fetchById fetcher not configured. Pass fetchers.fetchById in service config.',\n        ERROR_CODES.CORE_OPERATION_FAILED\n      );\n    }\n\n    try {\n      // 1. Lifecycle hook\n      await this.beforeFetchById?.(id);\n\n      // 2. Call fetcher\n      const response = await this.config.fetchers.fetchById(String(id), options);\n\n      if (!this.isResponseSuccess(response)) {\n        const extractedError = this.extractResponseError(response);\n        const errorMessage =\n          extractedError instanceof Error ? extractedError.message : String(extractedError ?? '');\n        // Return null for 404 (not found)\n        if (\n          errorMessage.includes('404') ||\n          (response as Record<string, unknown>).status === HTTP_STATUS.NOT_FOUND\n        ) {\n          return null;\n        }\n        throw new CorePackageError('Failed to fetch entity', ERROR_CODES.CONTEXT_OPERATION_FAILED, {\n          context: { operation: 'fetchById', entityId: String(id) },\n          cause: extractedError instanceof Error ? extractedError : undefined,\n          details: extractedError,\n        });\n      }\n\n      // 3. Unwrap and map DTO to domain entity\n      const rawData = this.unwrapResponseData<TResponseDTO>(response.data);\n      const entity = rawData ? this.mapper.toDomain(rawData) : null;\n\n      // 4. Lifecycle hook\n      if (entity) {\n        await this.afterFetchById?.(entity);\n      }\n\n      // Record success metrics\n      await this.recordOperationMetrics('fetchById', Date.now() - startTime, true);\n\n      return entity;\n    } catch (error) {\n      // Record error metrics\n      await this.recordOperationMetrics('fetchById', Date.now() - startTime, false);\n\n      const pkgError = this.wrapError(error, 'fetchById', { entityId: String(id) });\n      throw pkgError;\n    }\n  }\n\n  /**\n   * Create new entity\n   *\n   * Flow:\n   * 1. Assert service is ready\n   * 2. Check fetcher is available\n   * 3. Set stores loading\n   * 4. Emit 'creating' event\n   * 5. Lifecycle hook: beforeCreate\n   * 6. Map input data to create DTO (if mapper available)\n   * 7. [Optimistic] Save state and add to store BEFORE API call\n   * 8. Call create fetcher (from @plyaz/api)\n   * 9. Map response DTO to domain entity\n   * 10. [Optimistic] Resolve conflicts if needed\n   * 11. Lifecycle hook: afterCreate\n   * 12. Emit 'created' event\n   * 13. Return entity\n   *\n   * @param data - Create data (can be partial domain entity or DTO)\n   * @param options - Optional service options for fetcher\n   * @returns Created entity\n   * @throws CorePackageError if fetcher not configured or creation fails\n   */\n  // eslint-disable-next-line complexity, max-lines-per-function\n  async create<TInput = unknown, TOptions = unknown>(\n    data: TInput,\n    options?: TOptions\n  ): Promise<TEntity> {\n    await this.ensureReady();\n    const startTime = Date.now();\n\n    if (!this.config.fetchers?.create) {\n      throw new CorePackageError(\n        'create fetcher not configured. Pass fetchers.create in service config.',\n        ERROR_CODES.CORE_OPERATION_FAILED\n      );\n    }\n\n    const isOptimistic = this.isOptimisticEnabled('create');\n\n    this.setStoresLoading(true);\n    this.emitEvent('creating', {\n      request: data,\n    } satisfies CoreEntityCreatingPayload<TInput>);\n\n    // Save state for rollback if optimistic\n    if (isOptimistic) {\n      this.saveStateForRollback('create');\n    }\n\n    // Create optimistic entity for immediate UI update\n    let optimisticEntity: TEntity | null = null;\n    let optimisticStoreState: TStoreState | null = null;\n\n    try {\n      // 1. Lifecycle hook\n      await this.beforeCreate?.(data);\n\n      // 2. Map to DTO if mapper available (optional - data might already be DTO)\n      const createDTO = this.mapper?.toCreateDTO\n        ? this.mapper.toCreateDTO(data as Partial<TEntity>)\n        : (data as unknown as TCreateDTO);\n\n      // 3. [Optimistic] Add to store BEFORE API call\n      if (isOptimistic) {\n        // Create a temporary entity for optimistic display\n        optimisticEntity = {\n          ...(data as object),\n          id: `temp-${Date.now()}`, // Temporary ID\n          _optimistic: true,\n        } as TEntity;\n        optimisticStoreState = this.addEntityToStore(optimisticEntity);\n\n        this.emitEvent('optimistic:create', {\n          entity: optimisticEntity,\n          storeState: optimisticStoreState,\n        } as Record<string, unknown>);\n      }\n\n      // 4. Call create fetcher\n      const response = await this.config.fetchers.create(createDTO, options);\n\n      if (!this.isResponseSuccess(response)) {\n        const extractedError = this.extractResponseError(response);\n        const errorMessage =\n          extractedError instanceof Error\n            ? extractedError.message\n            : typeof extractedError === 'string'\n              ? extractedError\n              : 'Failed to create entity';\n        throw new CorePackageError(errorMessage, ERROR_CODES.CONTEXT_OPERATION_FAILED, {\n          context: { operation: 'create' },\n          cause: extractedError instanceof Error ? extractedError : undefined,\n          details: extractedError,\n        });\n      }\n\n      // 5. Unwrap and map response to domain entity\n      const rawData = this.unwrapResponseData<TResponseDTO>(response.data);\n      const entity = this.mapper.toDomain(rawData);\n\n      // 6. Update store with real entity (replaces optimistic if used)\n      let storeState: TStoreState;\n      if (isOptimistic && optimisticEntity) {\n        // Remove optimistic entity and add real one\n        const tempId = (optimisticEntity as { id?: string }).id;\n        if (tempId) {\n          this.removeEntityFromStore(tempId);\n        }\n        storeState = this.addEntityToStore(entity);\n        this.clearRollbackState('create');\n      } else {\n        storeState = this.addEntityToStore(entity);\n      }\n\n      // 7. Lifecycle hook\n      await this.afterCreate?.(entity);\n\n      // 8. Emit created event (reuse storeState from sync)\n      this.emitEvent('created', {\n        entity,\n        storeState,\n      } satisfies CoreEntityCreatedPayload<TEntity, TStoreState>);\n\n      this.emitEvent('complete', {\n        success: true,\n      } satisfies CoreEntityCompletePayload);\n\n      // Record success metrics\n      await this.recordOperationMetrics('create', Date.now() - startTime, true);\n\n      this.logInfo('Entity created', { entityId: (entity as { id?: string }).id });\n      return entity;\n    } catch (error) {\n      // Record error metrics\n      await this.recordOperationMetrics('create', Date.now() - startTime, false);\n\n      // Rollback on error if optimistic\n      if (isOptimistic && this.optimisticConfig?.rollbackOnError !== false) {\n        this.rollbackState('create', error instanceof Error ? error : new Error(String(error)));\n      }\n\n      const pkgError = this.wrapError(error, 'create');\n      // Errors thrown to global error handler - not set on individual stores\n      this.emitEvent('create:error', {\n        error: pkgError,\n      } satisfies CoreEntityErrorPayload);\n      throw pkgError;\n    } finally {\n      this.setStoresLoading(false);\n    }\n  }\n\n  /**\n   * Update entity (partial update - PATCH)\n   *\n   * @param id - Entity ID\n   * @param data - Partial update data\n   * @param options - Optional service options for fetcher\n   * @returns Updated entity\n   * @throws CorePackageError if fetcher not configured or update fails\n   */\n  // eslint-disable-next-line complexity, max-lines-per-function\n  async update<TInput = unknown, TOptions = unknown>(\n    id: string,\n    data: TInput,\n    options?: TOptions\n  ): Promise<TEntity> {\n    await this.ensureReady();\n    const startTime = Date.now();\n\n    if (!this.config.fetchers?.update) {\n      throw new CorePackageError(\n        'update fetcher not configured. Pass fetchers.update in service config.',\n        ERROR_CODES.CORE_OPERATION_FAILED\n      );\n    }\n\n    const isOptimistic = this.isOptimisticEnabled('update');\n\n    this.setStoresLoading(true);\n    this.emitEvent('patching', {\n      id,\n      request: data,\n    } satisfies CoreEntityPatchingPayload<TInput>);\n\n    // Save state for rollback if optimistic\n    if (isOptimistic) {\n      this.saveStateForRollback('update');\n    }\n\n    try {\n      // 1. Lifecycle hook\n      await this.beforeUpdate?.(id, data);\n\n      // 2. Map to DTO if mapper available\n      const patchDTO = this.mapper?.toPatchDTO\n        ? this.mapper.toPatchDTO(data as Partial<TEntity>)\n        : (data as unknown as TPatchDTO);\n\n      // 3. [Optimistic] Update store BEFORE API call\n      let optimisticStoreState: TStoreState | null = null;\n      if (isOptimistic) {\n        // Create optimistic entity with merged data\n        const optimisticEntity = {\n          id,\n          ...(data as object),\n          _optimistic: true,\n        } as TEntity;\n        optimisticStoreState = this.updateEntityInStore(id, optimisticEntity);\n\n        this.emitEvent('optimistic:update', {\n          id,\n          entity: optimisticEntity,\n          storeState: optimisticStoreState,\n        } as Record<string, unknown>);\n      }\n\n      // 4. Call update fetcher\n      const response = await this.config.fetchers.update({ id, data: patchDTO }, options);\n\n      if (!this.isResponseSuccess(response)) {\n        const extractedError = this.extractResponseError(response);\n        const errorMessage =\n          extractedError instanceof Error\n            ? extractedError.message\n            : typeof extractedError === 'string'\n              ? extractedError\n              : 'Failed to update entity';\n        throw new CorePackageError(errorMessage, ERROR_CODES.CONTEXT_OPERATION_FAILED, {\n          context: { operation: 'update', entityId: id },\n          cause: extractedError instanceof Error ? extractedError : undefined,\n          details: extractedError,\n        });\n      }\n\n      // 5. Unwrap and map response to domain entity\n      const rawData = this.unwrapResponseData<TResponseDTO>(response.data);\n      const serverEntity = this.mapper.toDomain(rawData);\n\n      // 6. Resolve conflicts and update store with final entity\n      let finalEntity = serverEntity;\n      if (isOptimistic && optimisticStoreState) {\n        // Resolve any conflicts between optimistic and server response\n        finalEntity = this.resolveConflict({ id, ...(data as object) } as TEntity, serverEntity);\n        this.clearRollbackState('update');\n      }\n\n      // 7. Update in store with final entity\n      const storeState = this.updateEntityInStore(id, finalEntity);\n\n      // 8. Lifecycle hook\n      await this.afterUpdate?.(id, finalEntity);\n\n      // 9. Emit updated event (reuse storeState from sync)\n      this.emitEvent('patched', {\n        entity: finalEntity,\n        storeState,\n      } satisfies CoreEntityPatchedPayload<TEntity, TStoreState>);\n\n      this.emitEvent('complete', {\n        success: true,\n        entityId: id,\n      } satisfies CoreEntityCompletePayload);\n\n      // Record success metrics\n      await this.recordOperationMetrics('patch', Date.now() - startTime, true);\n\n      this.logInfo('Entity updated', { entityId: id });\n      return finalEntity;\n    } catch (error) {\n      // Record error metrics\n      await this.recordOperationMetrics('patch', Date.now() - startTime, false);\n\n      // Rollback on error if optimistic\n      if (isOptimistic && this.optimisticConfig?.rollbackOnError !== false) {\n        this.rollbackState('update', error instanceof Error ? error : new Error(String(error)));\n      }\n\n      const pkgError = this.wrapError(error, 'update', { entityId: id });\n      // Errors thrown to global error handler - not set on individual stores\n      this.emitEvent('update:error', {\n        error: pkgError,\n        entityId: id,\n      } satisfies CoreEntityErrorPayload);\n      throw pkgError;\n    } finally {\n      this.setStoresLoading(false);\n    }\n  }\n\n  /**\n   * Delete entity\n   *\n   * @param id - Entity ID\n   * @param options - Optional service options for fetcher\n   * @returns Delete operation result (type specified by TDeleteResult generic)\n   * @throws CorePackageError if fetcher not configured or deletion fails\n   */\n  // eslint-disable-next-line complexity\n  async delete<TInput = string, TOptions = unknown>(\n    id: TInput,\n    options?: TOptions\n  ): Promise<TDeleteResult> {\n    await this.ensureReady();\n    const startTime = Date.now();\n\n    if (!this.config.fetchers?.delete) {\n      throw new CorePackageError(\n        'delete fetcher not configured. Pass fetchers.delete in service config.',\n        ERROR_CODES.CORE_OPERATION_FAILED\n      );\n    }\n\n    const isOptimistic = this.isOptimisticEnabled('delete');\n\n    this.setStoresLoading(true);\n    this.emitEvent('deleting', {\n      id: String(id),\n    } satisfies CoreEntityDeletingPayload);\n\n    // Save state for rollback if optimistic\n    if (isOptimistic) {\n      this.saveStateForRollback('delete');\n    }\n\n    try {\n      // 1. Lifecycle hook\n      await this.beforeDelete?.(id);\n\n      // 2. [Optimistic] Remove from store BEFORE API call\n      if (isOptimistic) {\n        this.removeEntityFromStore(String(id));\n\n        this.emitEvent('optimistic:delete', {\n          id: String(id),\n        } as Record<string, unknown>);\n      }\n\n      // 3. Call delete fetcher\n      const response = await this.config.fetchers.delete(String(id), options);\n\n      if (!this.isResponseSuccess(response)) {\n        const extractedError = this.extractResponseError(response);\n        const errorMessage =\n          extractedError instanceof Error\n            ? extractedError.message\n            : typeof extractedError === 'string'\n              ? extractedError\n              : 'Failed to delete entity';\n        throw new CorePackageError(errorMessage, ERROR_CODES.CONTEXT_OPERATION_FAILED, {\n          context: { operation: 'delete', entityId: String(id) },\n          cause: extractedError instanceof Error ? extractedError : undefined,\n          details: extractedError,\n        });\n      }\n\n      // 4. Remove from store (if not already done optimistically)\n      if (!isOptimistic) {\n        this.removeEntityFromStore(String(id));\n      } else {\n        this.clearRollbackState('delete');\n      }\n\n      // 5. Lifecycle hook\n      await this.afterDelete?.(id);\n\n      // 6. Emit deleted event\n      this.emitEvent('deleted', {\n        id: String(id),\n        soft: false,\n      } satisfies CoreEntityDeletedPayload);\n\n      this.emitEvent('complete', {\n        success: true,\n        entityId: String(id),\n      } satisfies CoreEntityCompletePayload);\n\n      // Record success metrics\n      await this.recordOperationMetrics('delete', Date.now() - startTime, true);\n\n      this.logInfo('Entity deleted', { entityId: String(id) });\n\n      // 7. Return delete result\n      return response.data as TDeleteResult;\n    } catch (error) {\n      // Record error metrics\n      await this.recordOperationMetrics('delete', Date.now() - startTime, false);\n\n      // Rollback on error if optimistic\n      if (isOptimistic && this.optimisticConfig?.rollbackOnError !== false) {\n        this.rollbackState('delete', error instanceof Error ? error : new Error(String(error)));\n      }\n\n      const pkgError = this.wrapError(error, 'delete', { entityId: String(id) });\n      // Errors thrown to global error handler - not set on individual stores\n      this.emitEvent('delete:error', {\n        error: pkgError,\n        entityId: String(id),\n      } satisfies CoreEntityErrorPayload);\n      throw pkgError;\n    } finally {\n      this.setStoresLoading(false);\n    }\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Event Emission (Protected - for subclasses)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Emit event with automatic prefix\n   * Uses CoreEventManager under the hood\n   *\n   * @param event - Event name (without prefix)\n   * @param payload - Event payload\n   *\n   * @example\n   * ```typescript\n   * // If eventPrefix is 'example', this emits 'example:created'\n   * this.emitEvent('created', { entity, storeState });\n   * ```\n   */\n  protected emitEvent<TPayload extends BaseFrontendEventPayload>(\n    event: string,\n    payload: TPayload\n  ): void {\n    const eventName = `${this.eventPrefix}:${event}`;\n    CoreEventManager.emit(eventName, payload);\n    this.logDebug(`Event emitted: ${eventName}`, payload as unknown as Record<string, unknown>);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Lifecycle Hooks (Optional - Override in subclasses)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Called before fetchAll API call\n   * Override to add custom logic (e.g., cache check, validate query)\n   *\n   * @param query - Optional query/filter parameters\n   */\n  protected beforeFetchAll?(query?: Partial<TQueryDTO>): Promise<void>;\n\n  /**\n   * Called after fetchAll success\n   * Override to add custom logic (e.g., cache set, transform entities)\n   *\n   * @param entities - Fetched entities\n   * @param query - Optional query/filter parameters that were used\n   */\n  protected afterFetchAll?(entities: TEntity[], query?: Partial<TQueryDTO>): Promise<void>;\n\n  /**\n   * Called before fetchById API call\n   */\n  protected beforeFetchById?<TInput>(id: TInput): Promise<void>;\n\n  /**\n   * Called after fetchById success\n   */\n  protected afterFetchById?(entity: TEntity): Promise<void>;\n\n  /**\n   * Called before create API call\n   * Use this to modify data or validate before sending to API\n   */\n  protected beforeCreate?<TInput>(data: TInput): Promise<void>;\n\n  /**\n   * Called after create success\n   * Use this to update stores, show notifications, etc.\n   */\n  protected afterCreate?(entity: TEntity): Promise<void>;\n\n  /**\n   * Called before update API call\n   */\n  protected beforeUpdate?<TInput>(id: string, data: TInput): Promise<void>;\n\n  /**\n   * Called after update success\n   */\n  protected afterUpdate?(id: string, entity: TEntity): Promise<void>;\n\n  /**\n   * Called before delete API call\n   */\n  protected beforeDelete?<TInput>(id: TInput): Promise<void>;\n\n  /**\n   * Called after delete success\n   */\n  protected afterDelete?<TInput>(id: TInput): Promise<void>;\n\n  /**\n   * Called before OPTIONS request\n   *\n   * Use for custom logic before checking allowed methods/CORS headers.\n   *\n   * @param resource - Optional resource identifier or URL\n   */\n  protected beforeOptions?<TInput>(resource?: TInput): Promise<void>;\n\n  /**\n   * Called after OPTIONS request success\n   *\n   * Use for processing allowed methods/headers or logging.\n   *\n   * @param resource - Optional resource identifier or URL\n   * @param result - The OPTIONS response (allowed methods, CORS headers, etc.)\n   */\n  protected afterOptions?<TInput>(resource: TInput | undefined, result: unknown): Promise<void>;\n\n  /**\n   * Called before HEAD request\n   *\n   * Use for custom logic before checking resource existence/headers.\n   *\n   * @param resource - Optional resource identifier or URL\n   */\n  protected beforeHead?<TInput>(resource?: TInput): Promise<void>;\n\n  /**\n   * Called after HEAD request success\n   *\n   * Use for processing response headers or logging.\n   * Note: HEAD requests return no body, only headers.\n   *\n   * @param resource - Optional resource identifier or URL\n   * @param headers - Response headers (if available)\n   */\n  protected afterHead?<TInput>(resource: TInput | undefined, headers?: unknown): Promise<void>;\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Polling (Generic Feature)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Check if polling is currently active.\n   */\n  get isPolling(): boolean {\n    return this._pollingTimer !== null;\n  }\n\n  /**\n   * Start polling for updates.\n   * Uses provided interval, falls back to `config.pollingInterval`, then DEFAULT_POLLING_INTERVAL_MS (30s).\n   * Polling calls fetchAll() at the configured interval.\n   *\n   * Override in subclass for custom polling behavior.\n   *\n   * @param intervalMs - Optional polling interval in milliseconds. Overrides config.pollingInterval.\n   *\n   * @example\n   * ```typescript\n   * // Start polling with default/config interval\n   * service.startPolling();\n   *\n   * // Start polling with custom interval (5 seconds)\n   * service.startPolling(5000);\n   *\n   * // Or override in subclass for custom behavior\n   * startPolling(intervalMs?: number): void {\n   *   super.startPolling(intervalMs);\n   *   // Custom polling logic\n   * }\n   * ```\n   */\n  startPolling(intervalMs?: number): void {\n    if (this._pollingTimer) return;\n\n    // Priority: provided interval > config.pollingInterval > default (30s)\n    // Use || instead of ?? because pollingInterval may be 0 (meaning \"use default\")\n    // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n    const interval = intervalMs || this.config.pollingInterval || DEFAULT_POLLING_INTERVAL_MS;\n    this._pollingTimer = setInterval(() => {\n      this.fetchAll().catch(error => {\n        this.logError('Polling fetch failed', { error });\n      });\n    }, interval);\n\n    this.logDebug('Polling started', { interval });\n  }\n\n  /**\n   * Stop polling.\n   * Safe to call even if polling is not active.\n   */\n  stopPolling(): void {\n    if (this._pollingTimer) {\n      clearInterval(this._pollingTimer);\n      this._pollingTimer = null;\n      this.logDebug('Polling stopped');\n    }\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Lifecycle Management\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Dispose service and cleanup resources.\n   * Stops polling and performs base cleanup.\n   *\n   * Subclasses should override and call super.dispose() to ensure cleanup.\n   *\n   * @example\n   * ```typescript\n   * dispose(): void {\n   *   // Custom cleanup\n   *   this.customCleanup();\n   *   // Always call super\n   *   super.dispose();\n   * }\n   * ```\n   */\n  dispose(): void {\n    this.stopPolling();\n    this.unregisterAllStreamHandlers();\n    this.logInfo('Service disposed');\n  }\n\n  /**\n   * Check if service is available.\n   * Override in subclass for custom availability checks.\n   *\n   * @returns true if service is enabled and in a browser environment\n   */\n  isAvailable(): boolean {\n    return this.isServiceEnabled && typeof window !== 'undefined';\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Error Handling Helpers\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Wrap error in CorePackageError with context\n   *\n   * @param error - Original error\n   * @param operation - Operation that failed\n   * @param context - Additional context\n   * @returns Wrapped error\n   */\n  protected wrapError(\n    error: unknown,\n    operation: string,\n    context?: Record<string, unknown>\n  ): CorePackageError {\n    // If already a package error (BaseError subclass), return as-is\n    if (error instanceof BaseError) {\n      return error as CorePackageError;\n    }\n\n    // Wrap other errors in CorePackageError\n    return new CorePackageError(\n      error instanceof Error ? error.message : 'An unexpected error occurred',\n      ERROR_CODES.CONTEXT_OPERATION_FAILED,\n      {\n        context: { operation, ...context },\n        cause: error instanceof Error ? error : undefined,\n      }\n    );\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Observability Helper Methods\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Track a frontend operation with observability (span + metrics).\n   * Wraps an operation with automatic span creation, duration recording, and error tracking.\n   *\n   * @param operation - Operation name (fetchAll, fetchById, create, delete)\n   * @param entityId - Optional entity ID for context\n   * @param fn - The operation function to execute\n   * @returns Result of the operation\n   *\n   * @example\n   * ```typescript\n   * const entity = await this.trackOperation('create', undefined, async () => {\n   *   return await this.config.fetchers.create(data);\n   * });\n   * ```\n   */\n  protected async trackOperation<T>(\n    operation: 'fetchAll' | 'fetchById' | 'create' | 'patch' | 'delete',\n    entityId: string | undefined,\n    fn: () => Promise<T>\n  ): Promise<T> {\n    const startTime = Date.now();\n    const spanName = `${this.eventPrefix}.${operation}`;\n\n    return this.withSpan(spanName, async span => {\n      if (entityId) {\n        span.setAttribute('entity.id', entityId);\n      }\n      span.setAttribute('service.name', this.serviceName);\n      span.setAttribute('operation.name', operation);\n\n      try {\n        const result = await fn();\n\n        // Record success metrics\n        const duration = Date.now() - startTime;\n        await this.recordOperationMetrics(operation, duration, true);\n\n        span.setStatus('ok');\n        return result;\n      } catch (error) {\n        // Record error metrics\n        const duration = Date.now() - startTime;\n        await this.recordOperationMetrics(operation, duration, false);\n\n        span.recordException(error as Error);\n        span.setStatus('error', (error as Error).message);\n        throw error;\n      }\n    });\n  }\n\n  /**\n   * Record operation metrics (duration and count).\n   * Protected to allow subclasses to record metrics for custom operations.\n   */\n  protected async recordOperationMetrics(\n    operation: string,\n    duration: number,\n    success: boolean\n  ): Promise<void> {\n    if (!this.hasObservability) return;\n\n    const tags = {\n      service: this.serviceName,\n      operation,\n      entity: this.eventPrefix,\n      runtime: 'frontend',\n    };\n\n    // Record duration\n    await this.recordMetric(OBSERVABILITY_METRICS.SERVICE_OPERATION_DURATION, duration, tags);\n\n    // Record count\n    await this.incrementCounter(\n      success\n        ? OBSERVABILITY_METRICS.SERVICE_OPERATION_COUNT\n        : OBSERVABILITY_METRICS.SERVICE_OPERATION_ERROR,\n      1,\n      tags\n    );\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // File Upload (via backend API → @plyaz/storage)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Upload a file via backend API.\n   *\n   * Uses the uploadFile fetcher from @plyaz/api which calls POST /upload endpoint.\n   * On the backend, this uses @plyaz/storage for actual file operations.\n   *\n   * Supports multiple upload modes:\n   * - **Direct upload**: Provide `base64` content with `mimeType`\n   * - **Template generation**: Provide `templateId` with `templateData`\n   *\n   * @param data - Upload parameters (base64/templateId, category, entityType, entityId)\n   * @param options - Optional service options (apiConfig, etc.)\n   * @returns Promise resolving to upload result with file metadata and URL\n   */\n  async uploadFile(data: UploadFileRequest, options?: ServiceOptions): Promise<UploadFileResponse> {\n    await this.ensureReady();\n    const startTime = Date.now();\n\n    this.setStoresLoading(true);\n    this.emitEvent('upload:uploading', { request: data });\n\n    try {\n      // 1. Lifecycle hook\n      await this.beforeUploadFile?.(data);\n\n      // 2. Call upload fetcher from @plyaz/api\n      // Uses default API client which has file endpoints registered\n      const response = await uploadFileFetcher(data, options);\n\n      // 3. Check response success\n      if (!this.isResponseSuccess(response)) {\n        const error = this.extractResponseError(response);\n        throw new CorePackageError('Failed to upload file', ERROR_CODES.CONTEXT_OPERATION_FAILED, {\n          context: { operation: 'uploadFile' },\n          details: error,\n        });\n      }\n\n      // 4. Unwrap response\n      const result = this.unwrapResponseData<UploadFileResponse>(response.data);\n\n      // 5. Lifecycle hook\n      await this.afterUploadFile?.(result);\n\n      // 6. Emit success event\n      this.emitEvent('upload:uploaded', { result });\n\n      await this.recordOperationMetrics('uploadFile', Date.now() - startTime, true);\n      return result;\n    } catch (error) {\n      await this.recordOperationMetrics('uploadFile', Date.now() - startTime, false);\n      const pkgError = this.wrapError(error, 'uploadFile');\n      this.emitEvent('upload:error', { error: pkgError });\n      throw pkgError;\n    } finally {\n      this.setStoresLoading(false);\n    }\n  }\n\n  /**\n   * Lifecycle hook: called before file upload.\n   * Override in subclass for custom pre-upload logic.\n   */\n  protected beforeUploadFile?(data: UploadFileRequest): Promise<void>;\n\n  /**\n   * Lifecycle hook: called after file upload.\n   * Override in subclass for custom post-upload logic.\n   */\n  protected afterUploadFile?(result: UploadFileResponse): Promise<void>;\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Bulk File Upload (via backend API → @plyaz/storage)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Upload multiple files via backend API.\n   *\n   * Uses the uploadFiles fetcher from @plyaz/api which calls POST /upload/bulk endpoint.\n   * On the backend, this uses @plyaz/storage for actual file operations.\n   *\n   * @param data - Upload parameters (files array with base64 content)\n   * @param options - Optional service options (apiConfig, etc.)\n   * @returns Promise resolving to bulk upload result with individual file results\n   */\n  async uploadFiles(\n    data: UploadFilesRequest,\n    options?: ServiceOptions\n  ): Promise<UploadFilesResponse> {\n    await this.ensureReady();\n    const startTime = Date.now();\n\n    this.setStoresLoading(true);\n    this.emitEvent('upload:uploading', { request: data, bulk: true });\n\n    try {\n      // 1. Lifecycle hook\n      await this.beforeUploadFiles?.(data);\n\n      // 2. Call uploadFiles fetcher from @plyaz/api\n      const response = await uploadFilesFetcher(data, options);\n\n      // 3. Check response success\n      if (!this.isResponseSuccess(response)) {\n        const error = this.extractResponseError(response);\n        throw new CorePackageError('Failed to upload files', ERROR_CODES.CONTEXT_OPERATION_FAILED, {\n          context: { operation: 'uploadFiles' },\n          details: error,\n        });\n      }\n\n      // 4. Unwrap response\n      const result = this.unwrapResponseData<UploadFilesResponse>(response.data);\n\n      // 5. Lifecycle hook\n      await this.afterUploadFiles?.(result);\n\n      // 6. Emit success event\n      this.emitEvent('upload:uploaded', { result, bulk: true });\n\n      await this.recordOperationMetrics('uploadFiles', Date.now() - startTime, true);\n      return result;\n    } catch (error) {\n      await this.recordOperationMetrics('uploadFiles', Date.now() - startTime, false);\n      const pkgError = this.wrapError(error, 'uploadFiles');\n      this.emitEvent('upload:error', { error: pkgError, bulk: true });\n      throw pkgError;\n    } finally {\n      this.setStoresLoading(false);\n    }\n  }\n\n  /**\n   * Lifecycle hook: called before bulk file upload.\n   * Override in subclass for custom pre-upload logic.\n   */\n  protected beforeUploadFiles?(data: UploadFilesRequest): Promise<void>;\n\n  /**\n   * Lifecycle hook: called after bulk file upload.\n   * Override in subclass for custom post-upload logic.\n   */\n  protected afterUploadFiles?(result: UploadFilesResponse): Promise<void>;\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Document Generation (via backend API → @plyaz/storage)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Generate a document via backend API (NO upload - returns buffer).\n   *\n   * Uses the generateDocument fetcher from @plyaz/api which calls POST /generate-document.\n   * On the backend, this uses @plyaz/storage template engine.\n   * Returns the document as base64 buffer. Use uploadFile() for generation + upload.\n   *\n   * @param data - Generation parameters (templateId, templateData, outputFormat, etc.)\n   * @param options - Optional service options (apiConfig, etc.)\n   * @returns Promise resolving to generation result { buffer, size }\n   */\n  async generateFile(\n    data: GenerateDocumentRequest,\n    options?: ServiceOptions\n  ): Promise<GenerateDocumentResponse> {\n    await this.ensureReady();\n    const startTime = Date.now();\n\n    this.setStoresLoading(true);\n    this.emitEvent('document:generating', { request: data });\n\n    try {\n      // 1. Lifecycle hook\n      await this.beforeGenerateFile?.(data);\n\n      // 2. Call generateDocument fetcher from @plyaz/api\n      // Uses default API client which has file endpoints registered\n      const response = await generateDocumentFetcher(data, options);\n\n      // 3. Check response success\n      if (!this.isResponseSuccess(response)) {\n        const error = this.extractResponseError(response);\n        throw new CorePackageError(\n          'Failed to generate document',\n          ERROR_CODES.CONTEXT_OPERATION_FAILED,\n          { context: { operation: 'generateFile' }, details: error }\n        );\n      }\n\n      // 4. Unwrap response\n      const result = this.unwrapResponseData<GenerateDocumentResponse>(response.data);\n\n      // 5. Lifecycle hook\n      await this.afterGenerateFile?.(result);\n\n      // 6. Emit success event (include request for store to build GeneratedFileItem)\n      this.emitEvent('document:generated', { result, request: data });\n\n      await this.recordOperationMetrics('generateFile', Date.now() - startTime, true);\n      return result;\n    } catch (error) {\n      await this.recordOperationMetrics('generateFile', Date.now() - startTime, false);\n      const pkgError = this.wrapError(error, 'generateFile');\n      this.emitEvent('document:error', { error: pkgError });\n      throw pkgError;\n    } finally {\n      this.setStoresLoading(false);\n    }\n  }\n\n  /**\n   * Lifecycle hook: called before document generation.\n   * Override in subclass for custom pre-generation logic.\n   */\n  protected beforeGenerateFile?(data: GenerateDocumentRequest): Promise<void>;\n\n  /**\n   * Lifecycle hook: called after document generation.\n   * Override in subclass for custom post-generation logic.\n   */\n  protected afterGenerateFile?(result: GenerateDocumentResponse): Promise<void>;\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Real-Time Streaming (via Stream Store)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Get the stream store slice for real-time streaming.\n   * Used for subscribing to channels, registering handlers, and accessing stream state.\n   *\n   * @returns Stream store slice or undefined if not available\n   */\n  protected get streamStore(): StreamStoreSlice | undefined {\n    // Access stream slice directly from root store (it's a global slice like errors)\n    return this.getStore('stream' as keyof RootStoreSlice) as StreamStoreSlice | undefined;\n  }\n\n  /**\n   * Check if stream store is available.\n   */\n  protected get hasStreamStore(): boolean {\n    return !!this.streamStore;\n  }\n\n  /**\n   * Subscribe to a stream channel for real-time updates.\n   * Typically used for entity-specific progress (e.g., upload progress for a file).\n   *\n   * @param channel - Channel to subscribe to (e.g., 'upload:abc123')\n   *\n   * @example\n   * ```typescript\n   * // Subscribe to upload progress for a specific file\n   * this.subscribeToChannel(`upload:${fileId}`);\n   *\n   * // Subscribe to all uploads broadcast channel\n   * this.subscribeToChannel('uploads');\n   * ```\n   */\n  protected subscribeToChannel(channel: StreamChannel): void {\n    if (!this.streamStore) {\n      this.logWarn('Stream store not available, cannot subscribe to channel', { channel });\n      return;\n    }\n    this.streamStore.subscribeToChannel(channel);\n    this.logDebug('Subscribed to stream channel', { channel });\n  }\n\n  /**\n   * Subscribe to multiple stream channels at once.\n   *\n   * @param channels - Array of channels to subscribe to\n   */\n  protected subscribeToChannels(channels: StreamChannel[]): void {\n    if (!this.streamStore) {\n      this.logWarn('Stream store not available, cannot subscribe to channels', { channels });\n      return;\n    }\n    this.streamStore.subscribeToChannels(channels);\n    this.logDebug('Subscribed to stream channels', { channels });\n  }\n\n  /**\n   * Unsubscribe from a stream channel.\n   *\n   * @param channel - Channel to unsubscribe from\n   */\n  protected unsubscribeFromChannel(channel: StreamChannel): void {\n    if (!this.streamStore) return;\n    this.streamStore.unsubscribeFromChannel(channel);\n    this.logDebug('Unsubscribed from stream channel', { channel });\n  }\n\n  /**\n   * Subscribe to entity-specific progress channel.\n   * Convenience method that constructs the channel name from prefix and entity ID.\n   *\n   * @param prefix - Channel prefix (e.g., 'upload', 'download', 'generate')\n   * @param entityId - Entity ID (e.g., file ID)\n   *\n   * @example\n   * ```typescript\n   * // Subscribe to upload progress for file 'abc123'\n   * this.subscribeToEntityProgress('upload', 'abc123');\n   * // Subscribes to channel: 'upload:abc123'\n   * ```\n   */\n  protected subscribeToEntityProgress(prefix: string, entityId: string): void {\n    this.subscribeToChannel(`${prefix}:${entityId}` as StreamChannel);\n  }\n\n  /**\n   * Register a message handler for this domain.\n   * The handler will receive stream messages matching the specified filters.\n   *\n   * @param handler - Handler function to process stream messages\n   * @param options - Handler options (channels, events, priority)\n   * @returns Handler ID (use for unregistering)\n   *\n   * @example\n   * ```typescript\n   * // Register handler for upload progress\n   * const handlerId = this.registerStreamHandler(\n   *   (message) => {\n   *     if (message.event === 'upload:progress') {\n   *       this.updateUploadProgress(message.data);\n   *     }\n   *   },\n   *   {\n   *     channels: ['upload:'],\n   *     events: ['upload:progress', 'upload:completed', 'upload:failed'],\n   *   }\n   * );\n   * ```\n   */\n  protected registerStreamHandler<T = unknown>(\n    handler: StreamMessageHandler<T>,\n    options?: {\n      channels?: string[];\n      events?: string[];\n      priority?: number;\n    }\n  ): string {\n    if (!this.streamStore) {\n      this.logWarn('Stream store not available, cannot register handler');\n      return '';\n    }\n\n    // Generate unique handler ID based on service name\n    const handlerId = `${this.serviceName}-${Date.now()}`;\n    this.streamStore.registerHandler(handlerId, handler, options);\n\n    // Track for auto-cleanup on dispose\n    this._registeredStreamHandlerIds.add(handlerId);\n\n    this.logDebug('Registered stream handler', { handlerId, options });\n    return handlerId;\n  }\n\n  /**\n   * Unregister a stream message handler.\n   *\n   * @param handlerId - Handler ID returned by registerStreamHandler\n   */\n  protected unregisterStreamHandler(handlerId: string): void {\n    if (!this.streamStore || !handlerId) return;\n    this.streamStore.unregisterHandler(handlerId);\n\n    // Remove from tracking Set\n    this._registeredStreamHandlerIds.delete(handlerId);\n\n    this.logDebug('Unregistered stream handler', { handlerId });\n  }\n\n  /**\n   * Unregister all stream handlers registered by this service.\n   * Called automatically by dispose(), but can be called manually if needed.\n   */\n  protected unregisterAllStreamHandlers(): void {\n    if (!this.streamStore || this._registeredStreamHandlerIds.size === 0) return;\n\n    this._registeredStreamHandlerIds.forEach(handlerId => {\n      this.streamStore?.unregisterHandler(handlerId);\n    });\n\n    const count = this._registeredStreamHandlerIds.size;\n    this._registeredStreamHandlerIds.clear();\n\n    this.logDebug('Unregistered all stream handlers', { count });\n  }\n\n  /**\n   * Get stream messages filtered by domain scope.\n   * Convenience method that filters messages for this service's event prefix.\n   *\n   * @param filter - Additional filter criteria\n   * @returns Filtered stream messages\n   *\n   * @example\n   * ```typescript\n   * // Get recent upload progress messages for this domain\n   * const messages = this.getDomainStreamMessages({\n   *   subtype: 'upload',\n   *   limit: 10,\n   * });\n   * ```\n   */\n  protected getDomainStreamMessages(filter?: StreamMessageFilter): unknown[] {\n    if (!this.streamStore) return [];\n    // Filter by domain scope (uses eventPrefix as scope)\n    return this.streamStore.getMessages({\n      ...filter,\n      scope: this.eventPrefix as StreamMessageFilter['scope'],\n    });\n  }\n\n  /**\n   * Check if connected to stream server.\n   */\n  protected get isStreamConnected(): boolean {\n    return this.streamStore?.connected ?? false;\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Static Stream Handler Methods\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Get the stream store from Core.rootStore.\n   * Used by static methods that don't have access to instance.\n   */\n  protected static getStreamStore(): StreamStoreSlice | undefined {\n    try {\n      return Core.rootStore?.getState().stream;\n    } catch {\n      return undefined;\n    }\n  }\n\n  /**\n   * Cleanup all stream handlers using STREAM_HANDLER_IDS.\n   * Called by the cleanup function returned from registerStreamHandlers().\n   *\n   * @param handlerIds - Object with handler IDs to unregister\n   * @param onComplete - Optional callback after cleanup\n   */\n  protected static cleanupStreamHandlers(\n    handlerIds: Record<string, string>,\n    onComplete?: () => void\n  ): void {\n    const store = this.getStreamStore();\n    if (store) {\n      Object.values(handlerIds).forEach(handlerId => {\n        store.unregisterHandler(handlerId);\n      });\n    }\n    this._streamHandlersRegistered = false;\n    onComplete?.();\n  }\n\n  /**\n   * Register stream handlers from STREAM_HANDLERS declarative config.\n   *\n   * Call this from your registerStreamHandlers() override to auto-register\n   * all handlers defined in STREAM_HANDLERS.\n   *\n   * @param handlers - Array of handler declarations (defaults to this.STREAM_HANDLERS)\n   * @param verbose - Enable verbose logging\n   *\n   * @example\n   * ```typescript\n   * static override registerStreamHandlers(verbose?: boolean): () => void {\n   *   if (this._streamHandlersRegistered) return () => {};\n   *\n   *   // Auto-register from declarative config\n   *   this.registerStreamHandlersFromConfig(this.STREAM_HANDLERS, verbose);\n   *\n   *   // Optional: Add any custom logic here\n   *\n   *   this._streamHandlersRegistered = true;\n   *   return () => this.cleanupStreamHandlers(this.STREAM_HANDLER_IDS);\n   * }\n   * ```\n   */\n  protected static registerStreamHandlersFromConfig(\n    handlers: CoreStreamHandlerDeclaration[],\n    verbose?: boolean\n  ): void {\n    const streamStore = this.getStreamStore();\n    if (!streamStore) return;\n\n    // Store getter for handlers\n    const getStore: CoreStreamStoreGetter = () => {\n      try {\n        return Core.rootStore?.getState();\n      } catch {\n        return undefined;\n      }\n    };\n\n    const DEFAULT_HANDLER_PRIORITY = 100;\n    handlers.forEach(config => {\n      streamStore.registerHandler(config.id, message => config.handler(message, getStore), {\n        channels: config.channels,\n        events: config.events,\n        priority: config.priority ?? DEFAULT_HANDLER_PRIORITY,\n      });\n\n      if (verbose) {\n        logger.debug(`[StreamHandler] Registered: ${config.id}`, {\n          channels: config.channels,\n          events: config.events,\n        });\n      }\n    });\n  }\n\n  /**\n   * Register stream handlers for this domain service.\n   *\n   * Subclasses should override this static method to register their stream handlers.\n   * Use STREAM_HANDLER_IDS to define handler IDs and cleanupStreamHandlers() for cleanup.\n   *\n   * @param _verbose - Enable verbose logging\n   * @returns Cleanup function to unregister all handlers\n   *\n   * @example\n   * ```typescript\n   * class MyDomainService extends BaseFrontendDomainService<...> {\n   *   protected static readonly STREAM_HANDLER_IDS = {\n   *     MY_EVENT: 'my-domain:my-event',\n   *   } as const;\n   *\n   *   static override registerStreamHandlers(verbose?: boolean): () => void {\n   *     if (this._streamHandlersRegistered) return () => {};\n   *\n   *     const streamStore = this.getStreamStore();\n   *     if (!streamStore) return () => {};\n   *\n   *     streamStore.registerHandler<MyEventType>(\n   *       this.STREAM_HANDLER_IDS.MY_EVENT,\n   *       (message) => { // Handle message.data (typed!)  },\n   *       { channels: ['my-channel'], events: ['my-event'] }\n   *     );\n   *\n   *     this._streamHandlersRegistered = true;\n   *     return () => this.cleanupStreamHandlers(this.STREAM_HANDLER_IDS);\n   *   }\n   * }\n   * ```\n   */\n  static registerStreamHandlers(verbose?: boolean): () => void {\n    // Skip if already registered\n    if (this._streamHandlersRegistered) {\n      if (verbose) {\n        logger.debug(`[${this.name}] Stream handlers already registered`);\n      }\n      return () => {};\n    }\n\n    // Skip if no handlers defined\n    if (!this.STREAM_HANDLERS || this.STREAM_HANDLERS.length === 0) {\n      return () => {};\n    }\n\n    // Get stream store\n    const streamStore = this.getStreamStore();\n    if (!streamStore) {\n      if (verbose) {\n        logger.warn(`[${this.name}] Stream store not available, skipping stream handlers`);\n      }\n      return () => {};\n    }\n\n    // Auto-register from declarative config\n    this.registerStreamHandlersFromConfig(this.STREAM_HANDLERS, verbose);\n\n    this._streamHandlersRegistered = true;\n\n    if (verbose) {\n      logger.info(`[${this.name}] Stream handlers registered`, {\n        handlers: Object.values(this.STREAM_HANDLER_IDS),\n      });\n    }\n\n    // Return cleanup function\n    return () => {\n      this.cleanupStreamHandlers(this.STREAM_HANDLER_IDS, () => {\n        if (verbose) {\n          logger.debug(`[${this.name}] Stream handlers unregistered`);\n        }\n      });\n    };\n  }\n}\n","/**\n * Backend Event Persistence Handler\n *\n * Scalable pattern for handling event-to-DB persistence.\n * Registers event handlers that persist data to the database when events fire.\n *\n * Features:\n * - Dynamic repository and mapper loading (avoids circular deps)\n * - Deduplication via unique constraints\n * - Bulk event support\n * - Configurable per-domain\n *\n * @example\n * ```typescript\n * // Register file upload persistence\n * BackendEventPersistenceHandler.register({\n *   domain: 'files',\n *   events: {\n *     'files:upload:uploaded': {\n *       extractPayload: (p) => p.result,\n *       isBulk: false,\n *     },\n *     'files:upload:bulk:uploaded': {\n *       extractPayload: (p) => p.result?.results ?? [],\n *       isBulk: true,\n *     },\n *   },\n *   loadDependencies: async () => ({\n *     repository: FilesRepository.create(),\n *     mapper: FilesMapper,\n *   }),\n *   mapToDbRow: (mapper, item) => mapper.toDbRow(item),\n * });\n * ```\n */\n\nimport { PackageLogger } from '@plyaz/logger';\nimport { CoreEventManager } from './CoreEventManager';\nimport type { DomainPersistenceConfig, PersistOperationConfig } from '@plyaz/types/core';\n\nconst logger = new PackageLogger({ packageName: 'core', service: 'EventPersistence' });\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Handler Class\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Backend Event Persistence Handler\n *\n * Manages event subscriptions for persisting data to the database.\n * Provides a scalable, reusable pattern for all domains.\n */\nexport class BackendEventPersistenceHandler {\n  private static registeredDomains = new Map<string, () => void>();\n  private static cleanupFns: Array<() => void> = [];\n\n  /**\n   * Register event persistence for a domain\n   */\n  static register<TRepository, TMapper, TItem, TDbRow>(\n    config: DomainPersistenceConfig<TRepository, TMapper, TItem, TDbRow>\n  ): void {\n    const { domain, events, loadDependencies, mapToDbRow, createRecord, getUniqueKey, verbose } =\n      config;\n\n    // Prevent duplicate registration\n    if (this.registeredDomains.has(domain)) {\n      logger.warn(`Domain '${domain}' already registered for event persistence`);\n      return;\n    }\n\n    logger.info(`Registering event persistence for domain: ${domain}`);\n\n    // Register handlers for each event\n    for (const [eventName, eventConfig] of Object.entries(events)) {\n      const cleanup = CoreEventManager.on(eventName, async (payload: unknown) => {\n        try {\n          const { repository, mapper } = await loadDependencies();\n          const extracted = eventConfig.extractPayload(payload);\n\n          if (!extracted) {\n            if (verbose) {\n              logger.debug(`Event ${eventName}: No payload extracted, skipping`);\n            }\n            return;\n          }\n\n          const persistConfig: PersistOperationConfig<TRepository, TMapper, TItem, TDbRow> = {\n            repository,\n            mapper,\n            mapToDbRow,\n            createRecord,\n            validate: eventConfig.validate as ((item: TItem) => boolean) | undefined,\n            getUniqueKey,\n            eventName,\n            verbose,\n          };\n\n          if (eventConfig.isBulk) {\n            // Handle bulk items\n            const items = Array.isArray(extracted) ? extracted : [extracted];\n            await this.persistBulk(items as TItem[], persistConfig);\n          } else {\n            // Handle single item\n            await this.persistSingle(extracted as TItem, persistConfig);\n          }\n        } catch (error) {\n          logger.error(`Event ${eventName}: Persistence failed`, { error, payload });\n        }\n      });\n\n      this.cleanupFns.push(cleanup);\n    }\n\n    // Store cleanup function for this domain\n    this.registeredDomains.set(domain, () => {\n      logger.info(`Unregistering event persistence for domain: ${domain}`);\n    });\n  }\n\n  /**\n   * Persist a single item to the database\n   */\n  // eslint-disable-next-line complexity\n  private static async persistSingle<TRepository, TMapper, TItem, TDbRow>(\n    item: TItem,\n    config: PersistOperationConfig<TRepository, TMapper, TItem, TDbRow>\n  ): Promise<void> {\n    const {\n      repository,\n      mapper,\n      mapToDbRow,\n      createRecord,\n      validate,\n      getUniqueKey,\n      eventName,\n      verbose,\n    } = config;\n\n    // Validate if validator provided\n    if (validate && !validate(item)) {\n      if (verbose) {\n        logger.debug(`Event ${eventName}: Item failed validation, skipping`);\n      }\n      return;\n    }\n\n    const dbRow = mapToDbRow(mapper, item);\n\n    try {\n      await createRecord(repository, dbRow);\n      if (verbose) {\n        const key = getUniqueKey?.(item) ?? 'unknown';\n        logger.debug(`Event ${eventName}: Persisted item (key: ${key})`);\n      }\n    } catch (err) {\n      // Handle duplicate key errors gracefully\n      if (this.isDuplicateError(err)) {\n        const key = getUniqueKey?.(item) ?? 'unknown';\n        if (verbose) {\n          logger.debug(`Event ${eventName}: Item already exists (key: ${key}), skipping`);\n        }\n        return;\n      }\n      throw err;\n    }\n  }\n\n  /**\n   * Persist multiple items to the database\n   */\n  // eslint-disable-next-line complexity\n  private static async persistBulk<TRepository, TMapper, TItem, TDbRow>(\n    items: TItem[],\n    config: PersistOperationConfig<TRepository, TMapper, TItem, TDbRow>\n  ): Promise<void> {\n    const {\n      repository,\n      mapper,\n      mapToDbRow,\n      createRecord,\n      validate,\n      getUniqueKey,\n      eventName,\n      verbose,\n    } = config;\n    if (items.length === 0) {\n      if (verbose) {\n        logger.debug(`Event ${eventName}: No items to persist`);\n      }\n      return;\n    }\n\n    let persisted = 0;\n    let skipped = 0;\n    let failed = 0;\n\n    for (const item of items) {\n      // Validate if validator provided\n      if (validate && !validate(item)) {\n        skipped++;\n        continue;\n      }\n\n      try {\n        const dbRow = mapToDbRow(mapper, item);\n        await createRecord(repository, dbRow);\n        persisted++;\n      } catch (err) {\n        if (this.isDuplicateError(err)) {\n          skipped++;\n        } else {\n          failed++;\n          const key = getUniqueKey?.(item) ?? 'unknown';\n          logger.error(`Event ${eventName}: Failed to persist item (key: ${key})`, { error: err });\n        }\n      }\n    }\n\n    logger.info(\n      `Event ${eventName}: Bulk persist complete - persisted: ${persisted}, skipped: ${skipped}, failed: ${failed}`\n    );\n  }\n\n  /**\n   * Check if error is a duplicate key/unique constraint error\n   */\n  private static isDuplicateError(err: unknown): boolean {\n    if (!(err instanceof Error)) return false;\n    const message = err.message.toLowerCase();\n    return (\n      message.includes('duplicate') ||\n      message.includes('unique') ||\n      message.includes('already exists') ||\n      message.includes('conflict')\n    );\n  }\n\n  /**\n   * Unregister all event persistence handlers\n   */\n  static unregisterAll(): void {\n    for (const cleanup of this.cleanupFns) {\n      cleanup();\n    }\n    this.cleanupFns = [];\n    this.registeredDomains.clear();\n    logger.info('All event persistence handlers unregistered');\n  }\n\n  /**\n   * Check if a domain is registered\n   */\n  static isRegistered(domain: string): boolean {\n    return this.registeredDomains.has(domain);\n  }\n\n  /**\n   * Get list of registered domains\n   */\n  static getRegisteredDomains(): string[] {\n    return Array.from(this.registeredDomains.keys());\n  }\n}\n","/**\n * Frontend Event Persistence Handler\n *\n * Simple, scalable pattern for handling domain events to update frontend store.\n *\n * Features:\n * - Event-driven store updates (works from ANY service via CoreEventManager)\n * - Registration-based (prevents duplicate handlers)\n * - Safe for SSR (store getter called per event)\n * - Proper cleanup tracking\n *\n * @example\n * ```typescript\n * FrontendEventPersistenceHandler.register<FilesFrontendStoreSlice, FilesUploadEventPayload>({\n *   domain: 'files',\n *   events: {\n *     'files:upload:uploading': {\n *       handler: (store) => store.setUploading(true),\n *     },\n *     'files:upload:uploaded': {\n *       handler: (store, payload) => {\n *         store.setUploading(false);\n *         if (payload.result) {\n *           store.addUpload(FilesMapper.toDomain(payload.result));\n *         }\n *       },\n *     },\n *     'files:upload:error': {\n *       handler: (store) => store.setUploading(false),\n *     },\n *   },\n *   getStore: () => Core._rootStore?.getState().files,\n * });\n * ```\n */\n\nimport { PackageLogger } from '@plyaz/logger';\nimport { CoreEventManager } from './CoreEventManager';\nimport type {\n  DomainFrontendEventConfig,\n  CoreEvent,\n  FrontendEventHandlerConfig,\n} from '@plyaz/types/core';\n\nconst logger = new PackageLogger({ packageName: 'core', service: 'FrontendEventPersistence' });\n\n/**\n * Frontend Event Persistence Handler\n *\n * Manages event subscriptions for updating frontend store state.\n * Provides a scalable, reusable pattern for all domains.\n */\nexport class FrontendEventPersistenceHandler {\n  private static registeredDomains = new Map<string, () => void>();\n  private static cleanupFns: Array<() => void> = [];\n\n  /**\n   * Register event handlers for a domain\n   *\n   * @typeParam TStore - Store slice type\n   * @typeParam TPayload - Event payload type\n   * @param config - Domain event configuration\n   */\n  static register<TStore, TPayload = unknown>(\n    config: DomainFrontendEventConfig<TStore, TPayload>\n  ): void {\n    const { domain, events, getStore, verbose } = config;\n\n    // Prevent duplicate registration\n    if (this.registeredDomains.has(domain)) {\n      logger.warn(`Domain '${domain}' already registered for frontend event handling`);\n      return;\n    }\n\n    if (verbose) {\n      logger.info(`Registering frontend event handling for domain: ${domain}`);\n    }\n\n    // Register handlers for each event\n    for (const [eventName, eventConfig] of Object.entries(events)) {\n      const typedConfig = eventConfig as FrontendEventHandlerConfig<TStore, TPayload>;\n\n      const cleanup = CoreEventManager.on<TPayload>(eventName, (event: CoreEvent<TPayload>) => {\n        void (async () => {\n          try {\n            const store = getStore();\n\n            if (!store) {\n              if (verbose) {\n                logger.debug(`Event ${eventName}: Store not available, skipping`);\n              }\n              return;\n            }\n\n            await typedConfig.handler(store, event.data);\n\n            if (verbose) {\n              logger.debug(`Event ${eventName}: Handler executed`);\n            }\n          } catch (error) {\n            logger.error(`Event ${eventName}: Handler failed`, { error, event });\n          }\n        })();\n      });\n\n      this.cleanupFns.push(cleanup);\n    }\n\n    // Store cleanup function for this domain\n    this.registeredDomains.set(domain, () => {\n      if (verbose) {\n        logger.info(`Unregistering frontend event handling for domain: ${domain}`);\n      }\n    });\n  }\n\n  /**\n   * Unregister all event handlers\n   */\n  static unregisterAll(): void {\n    for (const cleanup of this.cleanupFns) {\n      cleanup();\n    }\n    this.cleanupFns = [];\n    this.registeredDomains.clear();\n    logger.info('All frontend event handlers unregistered');\n  }\n\n  /**\n   * Check if a domain is registered\n   */\n  static isRegistered(domain: string): boolean {\n    return this.registeredDomains.has(domain);\n  }\n\n  /**\n   * Get list of registered domains\n   */\n  static getRegisteredDomains(): string[] {\n    return Array.from(this.registeredDomains.keys());\n  }\n}\n","/**\n * Events Module Exports\n *\n * Type-safe event system with enums, constants, and typed payloads.\n *\n * @example\n * ```typescript\n * import { CoreEventManager, CORE_EVENTS, CoreEventScope } from '@plyaz/core/events';\n *\n * // Type-safe emission (automatic with CORE_EVENTS)\n * CoreEventManager.emit(CORE_EVENTS.AUTH.LOGIN, {\n *   userId: '123',\n *   method: 'email',\n * });\n *\n * // Type-safe subscription (automatic with CORE_EVENTS)\n * CoreEventManager.on(CORE_EVENTS.AUTH.LOGIN, (event) => {\n *   console.log(event.data.userId); // Typed!\n * });\n *\n * // Custom events with explicit type\n * CoreEventManager.emit<MyPayload>('custom:event', { custom: 'data' });\n * ```\n */\nexport { CoreEventManager } from './CoreEventManager';\nexport { BackendEventPersistenceHandler } from './BackendEventPersistenceHandler';\nexport { FrontendEventPersistenceHandler } from './FrontendEventPersistenceHandler';\n\n// Streaming module (SSE/WebSocket real-time events)\nexport * from './streaming';\n\n// Re-export all event types from @plyaz/types for convenience\nexport type {\n  // Backend event persistence types\n  EventPersistenceConfig,\n  DomainPersistenceConfig,\n\n  // Frontend event persistence types\n  FrontendEventHandlerConfig,\n  DomainFrontendEventConfig,\n  CoreEventPayloadMap,\n  CoreEventType,\n  CoreEventScopeType,\n  // Payload types\n  CoreSystemInitializedPayload,\n  CoreSystemReadyPayload,\n  CoreSystemShutdownPayload,\n  CoreSystemErrorPayload,\n  CoreSystemWarningPayload,\n  CoreApiRequestStartPayload,\n  CoreApiRequestSuccessPayload,\n  CoreApiRequestErrorPayload,\n  CoreApiRetryPayload,\n  CoreApiTimeoutPayload,\n  CoreCacheHitPayload,\n  CoreCacheMissPayload,\n  CoreCacheSetPayload,\n  CoreCacheDeletePayload,\n  CoreCacheClearPayload,\n  CoreCacheExpiredPayload,\n  CoreAuthLoginPayload,\n  CoreAuthLogoutPayload,\n  CoreAuthTokenRefreshPayload,\n  CoreAuthSessionExpiredPayload,\n  CoreAuthUnauthorizedPayload,\n  CoreFeatureFlagChangedPayload,\n  CoreFeatureFlagEvaluatedPayload,\n  CoreFeatureFlagRefreshedPayload,\n  CoreStoreUpdatedPayload,\n  CoreStoreResetPayload,\n  CoreStoreHydratedPayload,\n  CoreEntityCreatedPayload,\n  CoreEntityUpdatedPayload,\n  CoreEntityDeletedPayload,\n  CoreValidationStartedPayload,\n  CoreValidationSuccessPayload,\n  CoreValidationFailedPayload,\n} from '@plyaz/types/core';\n","/* eslint-disable no-undef */\n/**\n * Memory Cache Strategy\n *\n * In-memory cache implementation for fast local caching.\n * This will be moved to @plyaz/core when the package structure is finalized.\n *\n * @fileoverview Memory cache strategy implementation\n * @version 1.0.0\n */\n\nimport type { CacheStrategy, CacheEntry, CacheStats, MemoryCacheConfig } from '@plyaz/types';\nimport { CACHE_MAX_SIZE_DEFAULT, CACHE_CLEANUP_INTERVAL_DEFAULT } from '@plyaz/config';\n\n/**\n * In-memory cache strategy implementation.\n * Provides fast caching for single-instance applications.\n *\n * @class MemoryCacheStrategy\n * @implements {CacheStrategy}\n *\n * @example\n * ```typescript\n * const cache = new MemoryCacheStrategy({\n *   maxEntries: 500,\n *   cleanupInterval: 30000\n * });\n *\n * await cache.set('key', entry);\n * const cached = await cache.get('key');\n * ```\n */\nexport class MemoryCacheStrategy implements CacheStrategy {\n  private cache = new Map<string, CacheEntry>();\n  private accessOrder = new Map<string, number>();\n  private stats = {\n    hits: 0,\n    misses: 0,\n    sets: 0,\n    deletes: 0,\n  };\n  private cleanupTimer?: NodeJS.Timeout;\n  private readonly maxSize: number;\n  private readonly cleanupInterval: number;\n  private readonly onEvict?: (key: string, entry: CacheEntry) => void;\n\n  /**\n   * Creates a new memory cache strategy.\n   *\n   * @param config - Memory cache configuration\n   */\n  constructor(config: MemoryCacheConfig = {}) {\n    const defaultConfig = {\n      maxEntries: CACHE_MAX_SIZE_DEFAULT,\n      cleanupInterval: CACHE_CLEANUP_INTERVAL_DEFAULT,\n    };\n\n    this.maxSize = config.maxSize ?? config.maxEntries ?? defaultConfig.maxEntries;\n    this.cleanupInterval = config.cleanupInterval ?? defaultConfig.cleanupInterval;\n    this.onEvict = config.onEvict;\n\n    // Start cleanup timer\n    this.startCleanup();\n  }\n\n  /**\n   * Stores a cache entry in memory.\n   *\n   * @param key - Cache key\n   * @param entry - Cache entry to store\n   * @returns Promise that resolves when entry is stored\n   */\n  async set<T>(key: string, entry: CacheEntry<T>): Promise<void> {\n    // If maxSize is 0, don't store anything\n    if (this.maxSize === 0) {\n      this.stats.sets++;\n      return;\n    }\n\n    // Check if we need to evict entries to make room\n    // Only evict if this is a new key and we're at capacity\n    if (!this.cache.has(key) && this.cache.size >= this.maxSize) {\n      this.evictOldestEntries();\n    }\n\n    this.cache.set(key, entry);\n    this.accessOrder.set(key, Date.now());\n    this.stats.sets++;\n  }\n\n  /**\n   * Retrieves a cache entry from memory.\n   *\n   * @param key - Cache key\n   * @returns Promise that resolves to cache entry or null if not found\n   */\n  async get<T>(key: string): Promise<CacheEntry<T> | null> {\n    const entry = this.cache.get(key) as CacheEntry<T> | undefined;\n\n    if (!entry) {\n      this.stats.misses++;\n      return null;\n    }\n\n    // Update access time for LRU\n    this.accessOrder.set(key, Date.now());\n    this.stats.hits++;\n    return entry;\n  }\n\n  /**\n   * Removes a cache entry from memory.\n   *\n   * @param key - Cache key to remove\n   * @returns Promise that resolves when entry is removed\n   */\n  async delete(key: string): Promise<void> {\n    this.cache.delete(key);\n    this.accessOrder.delete(key);\n    this.stats.deletes++;\n  }\n\n  /**\n   * Clears all cache entries from memory.\n   *\n   * @returns Promise that resolves when cache is cleared\n   */\n  async clear(): Promise<void> {\n    this.cache.clear();\n    this.accessOrder.clear();\n    this.stats.hits = 0;\n    this.stats.misses = 0;\n    this.stats.sets = 0;\n    this.stats.deletes = 0;\n  }\n\n  /**\n   * Gets cache statistics.\n   *\n   * @returns Promise that resolves to cache statistics\n   */\n  async getStats(): Promise<CacheStats> {\n    const totalRequests = this.stats.hits + this.stats.misses;\n    const hitRatio = totalRequests > 0 ? this.stats.hits / totalRequests : 0;\n\n    return {\n      hits: this.stats.hits,\n      misses: this.stats.misses,\n      sets: this.stats.sets,\n      deletes: this.stats.deletes,\n      size: this.cache.size,\n      hitRatio,\n    };\n  }\n\n  /**\n   * Disposes of the memory cache and cleans up resources.\n   *\n   * @returns Promise that resolves when cleanup is complete\n   */\n  async dispose(): Promise<void> {\n    if (this.cleanupTimer) {\n      clearInterval(this.cleanupTimer);\n      this.cleanupTimer = undefined;\n    }\n\n    await this.clear();\n  }\n\n  /**\n   * Starts the periodic cleanup of expired entries.\n   *\n   * @private\n   */\n  private startCleanup(): void {\n    this.cleanupTimer = setInterval(() => {\n      this.cleanupExpiredEntries();\n    }, this.cleanupInterval);\n\n    if (this.cleanupTimer && typeof this.cleanupTimer.unref === 'function') {\n      this.cleanupTimer.unref();\n    }\n  }\n\n  /**\n   * Removes expired entries from the cache.\n   *\n   * @private\n   */\n  private cleanupExpiredEntries(): void {\n    const now = Date.now();\n    const expiredKeys: string[] = [];\n\n    for (const [key, entry] of Array.from(this.cache.entries())) {\n      if (now > entry.expiresAt) {\n        expiredKeys.push(key);\n      }\n    }\n\n    for (const key of expiredKeys) {\n      const entry = this.cache.get(key);\n      this.cache.delete(key);\n      this.accessOrder.delete(key);\n      if (entry && this.onEvict) {\n        this.onEvict(key, entry);\n      }\n    }\n  }\n\n  /**\n   * Evicts the oldest entries when cache is full.\n   * Uses LRU-like eviction by removing the oldest entries by creation time.\n   *\n   * @private\n   */\n  private evictOldestEntries(): void {\n    if (this.maxSize === 0) {\n      // If maxSize is 0, don't store anything\n      this.cache.clear();\n      this.accessOrder.clear();\n      return;\n    }\n\n    const EVICTION_PERCENTAGE = 0.1; // Evict 10% of entries\n    const entriesToEvict = Math.max(1, Math.ceil(this.maxSize * EVICTION_PERCENTAGE));\n\n    // Sort by access time (LRU)\n    const sortedEntries = Array.from(this.accessOrder.entries())\n      .sort(([, timeA], [, timeB]) => timeA - timeB)\n      .slice(0, entriesToEvict);\n\n    for (const [key] of sortedEntries) {\n      const entry = this.cache.get(key);\n      this.cache.delete(key);\n      this.accessOrder.delete(key);\n      if (entry && this.onEvict) {\n        this.onEvict(key, entry);\n      }\n    }\n  }\n}\n","/**\n * Cache Key Builder Utility\n *\n * Provides standardized methods for building cache keys with consistent patterns.\n * All keys are designed to be prefixed by the service (handled by service layer).\n *\n * Key pattern: {prefix}:{type}:{identifier}:{params}\n * Example: \"example:entity:123\" or \"user:list:page:1\"\n *\n * @fileoverview Cache key building utilities\n */\n\n/**\n * Cache key builder for standardized cache key generation.\n *\n * All methods return un-prefixed keys that should be prefixed by the service layer.\n * This allows each service to namespace their cache keys.\n *\n * @example\n * ```typescript\n * // In a service with cachePrefix = 'user'\n * const key = CacheKeyBuilder.entity('123');\n * // Returns: \"entity:123\"\n * // After service prefixing: \"user:entity:123\"\n * ```\n */\nexport class CacheKeyBuilder {\n  /**\n   * Build cache key for a single entity by ID\n   *\n   * @param id - Entity ID\n   * @returns Cache key (unprefixed)\n   *\n   * @example\n   * ```typescript\n   * CacheKeyBuilder.entity('123')\n   * // Returns: \"entity:123\"\n   * // With prefix \"user\": \"user:entity:123\"\n   * ```\n   */\n  static entity(id: string): string {\n    return `entity:${id}`;\n  }\n\n  /**\n   * Build cache key for a list/collection query\n   *\n   * @param params - Query parameters (page, limit, filters, etc.)\n   * @returns Cache key (unprefixed)\n   *\n   * @example\n   * ```typescript\n   * CacheKeyBuilder.list({ page: 1, limit: 10 })\n   * // Returns: \"list:limit:10:page:1\"\n   * // With prefix: \"user:list:limit:10:page:1\"\n   *\n   * CacheKeyBuilder.list() // No params\n   * // Returns: \"list:all\"\n   * ```\n   */\n  static list(params?: Record<string, unknown>): string {\n    if (!params || Object.keys(params).length === 0) {\n      return 'list:all';\n    }\n\n    // Sort keys for deterministic cache keys\n    const sortedKeys = Object.keys(params).sort();\n    const keyParts = sortedKeys.map(k => `${k}:${JSON.stringify(params[k])}`);\n    return `list:${keyParts.join(':')}`;\n  }\n\n  /**\n   * Build cache key for a named query/filter\n   *\n   * @param queryName - Name of the query (e.g., 'active', 'byStatus', 'search')\n   * @param params - Query parameters\n   * @returns Cache key (unprefixed)\n   *\n   * @example\n   * ```typescript\n   * CacheKeyBuilder.query('active', { status: 'published' })\n   * // Returns: \"query:active:status:\\\"published\\\"\"\n   *\n   * CacheKeyBuilder.query('search', { q: 'hello', limit: 10 })\n   * // Returns: \"query:search:limit:10:q:\\\"hello\\\"\"\n   * ```\n   */\n  static query(queryName: string, params?: Record<string, unknown>): string {\n    if (!params || Object.keys(params).length === 0) {\n      return `query:${queryName}`;\n    }\n\n    const sortedKeys = Object.keys(params).sort();\n    const keyParts = sortedKeys.map(k => `${k}:${JSON.stringify(params[k])}`);\n    return `query:${queryName}:${keyParts.join(':')}`;\n  }\n\n  /**\n   * Build cache key for aggregate/count operations\n   *\n   * @param operation - Operation name (e.g., 'count', 'sum', 'avg')\n   * @param field - Field name (optional)\n   * @param params - Additional parameters (optional)\n   * @returns Cache key (unprefixed)\n   *\n   * @example\n   * ```typescript\n   * CacheKeyBuilder.aggregate('count')\n   * // Returns: \"aggregate:count\"\n   *\n   * CacheKeyBuilder.aggregate('sum', 'amount')\n   * // Returns: \"aggregate:sum:amount\"\n   *\n   * CacheKeyBuilder.aggregate('count', 'users', { status: 'active' })\n   * // Returns: \"aggregate:count:users:status:\\\"active\\\"\"\n   * ```\n   */\n  static aggregate(operation: string, field?: string, params?: Record<string, unknown>): string {\n    const baseParts = field ? [operation, field] : [operation];\n\n    if (!params || Object.keys(params).length === 0) {\n      return `aggregate:${baseParts.join(':')}`;\n    }\n\n    const sortedKeys = Object.keys(params).sort();\n    const paramParts = sortedKeys.map(k => `${k}:${JSON.stringify(params[k])}`);\n    return `aggregate:${baseParts.join(':')}:${paramParts.join(':')}`;\n  }\n\n  /**\n   * Build a custom cache key with type and identifier\n   *\n   * @param type - Cache key type\n   * @param identifier - Unique identifier for this cache entry\n   * @param params - Additional parameters (optional)\n   * @returns Cache key (unprefixed)\n   *\n   * @example\n   * ```typescript\n   * CacheKeyBuilder.custom('session', 'abc123')\n   * // Returns: \"session:abc123\"\n   *\n   * CacheKeyBuilder.custom('report', 'monthly', { year: 2025, month: 1 })\n   * // Returns: \"report:monthly:month:1:year:2025\"\n   * ```\n   */\n  static custom(type: string, identifier: string, params?: Record<string, unknown>): string {\n    if (!params || Object.keys(params).length === 0) {\n      return `${type}:${identifier}`;\n    }\n\n    const sortedKeys = Object.keys(params).sort();\n    const paramParts = sortedKeys.map(k => `${k}:${JSON.stringify(params[k])}`);\n    return `${type}:${identifier}:${paramParts.join(':')}`;\n  }\n}\n","/**\n * Redis Cache Strategy\n *\n * Redis-based cache implementation for distributed caching.\n * This will be moved to @plyaz/core when the package structure is finalized.\n *\n * @fileoverview Redis cache strategy implementation\n * @version 1.0.0\n */\n\nimport { TIME_CONSTANTS } from '@plyaz/config';\nimport type { CacheStrategy, CacheEntry, CacheStats, RedisCacheConfig } from '@plyaz/types';\nimport { ERROR_CODES } from '@plyaz/types';\nimport { CorePackageError } from '@plyaz/errors';\nimport type { Redis as IoRedisClientType } from 'ioredis';\n\n/**\n * Redis cache strategy implementation.\n * Provides distributed caching for multi-instance applications.\n *\n * @class RedisCacheStrategy\n * @implements {CacheStrategy}\n *\n * @example\n * ```typescript\n * const cache = new RedisCacheStrategy({\n *   url: 'redis://localhost:6379',\n *   keyPrefix: 'app:cache:'\n * });\n *\n * await cache.set('key', entry);\n * const cached = await cache.get('key');\n * ```\n */\nexport class RedisCacheStrategy implements CacheStrategy {\n  private client!: IoRedisClientType;\n  private stats = {\n    hitCount: 0,\n    missCount: 0,\n    setCount: 0,\n    deleteCount: 0,\n  };\n  private isConnected = false;\n  private readonly keyPrefix: string;\n\n  /**\n   * Creates a new Redis cache strategy.\n   *\n   * @param config - Redis cache configuration\n   */\n  constructor(private config: RedisCacheConfig) {\n    if (!config.url) {\n      throw new CorePackageError('Redis URL is required', ERROR_CODES.CLIENT_INVALID_CONFIG);\n    }\n    this.keyPrefix = config.keyPrefix ?? 'cache:';\n  }\n\n  /**\n   * Stores a cache entry in Redis.\n   *\n   * @param key - Cache key\n   * @param entry - Cache entry to store\n   * @returns Promise that resolves when entry is stored\n   */\n  async set<T>(key: string, entry: CacheEntry<T>): Promise<void> {\n    await this.ensureConnected();\n\n    const redisKey = this.buildRedisKey(key);\n    const serializedEntry = JSON.stringify(entry);\n\n    // Calculate TTL in seconds\n    const ttlMs = entry.expiresAt - Date.now();\n    const ttlSeconds = Math.max(1, Math.ceil(ttlMs / TIME_CONSTANTS.MILLISECONDS_PER_SECOND));\n\n    await this.client.set(redisKey, serializedEntry, 'EX', ttlSeconds);\n    this.stats.setCount++;\n  }\n\n  /**\n   * Retrieves a cache entry from Redis.\n   *\n   * @param key - Cache key\n   * @returns Promise that resolves to cache entry or null if not found\n   */\n  async get<T>(key: string): Promise<CacheEntry<T> | null> {\n    await this.ensureConnected();\n\n    const redisKey = this.buildRedisKey(key);\n    const serializedEntry = await this.client.get(redisKey);\n\n    if (!serializedEntry || typeof serializedEntry !== 'string') {\n      this.stats.missCount++;\n      return null;\n    }\n\n    try {\n      const entry = JSON.parse(serializedEntry) as CacheEntry<T>;\n      this.stats.hitCount++;\n      return entry;\n    } catch {\n      // Invalid JSON, remove the corrupted entry\n      await this.client.del(redisKey);\n      this.stats.missCount++;\n      return null;\n    }\n  }\n\n  /**\n   * Removes a cache entry from Redis.\n   *\n   * @param key - Cache key to remove\n   * @returns Promise that resolves when entry is removed\n   */\n  async delete(key: string): Promise<void> {\n    await this.ensureConnected();\n\n    const redisKey = this.buildRedisKey(key);\n    await this.client.del(redisKey);\n    this.stats.deleteCount++;\n  }\n\n  /**\n   * Clears all cache entries from Redis.\n   * This removes all keys with the configured prefix.\n   *\n   * @returns Promise that resolves when cache is cleared\n   */\n  async clear(): Promise<void> {\n    await this.ensureConnected();\n\n    const pattern = `${this.keyPrefix}*`;\n\n    const keys = await this.client.keys(pattern);\n    if (keys.length > 0) {\n      await this.client.del(...keys);\n    }\n\n    this.stats.hitCount = 0;\n    this.stats.missCount = 0;\n  }\n\n  /**\n   * Gets cache statistics.\n   *\n   * @returns Promise that resolves to cache statistics\n   */\n  async getStats(): Promise<CacheStats> {\n    await this.ensureConnected();\n\n    // Get approximate entry count\n    const pattern = `${this.keyPrefix}*`;\n    const keys = await this.client.keys(pattern);\n    const entryCount = Array.isArray(keys) ? keys.length : 0;\n\n    const totalRequests = this.stats.hitCount + this.stats.missCount;\n    const hitRatio = totalRequests > 0 ? this.stats.hitCount / totalRequests : 0;\n\n    return {\n      hits: this.stats.hitCount,\n      misses: this.stats.missCount,\n      sets: this.stats.setCount,\n      deletes: this.stats.deleteCount,\n      size: entryCount,\n      hitRatio,\n    };\n  }\n\n  /**\n   * Disposes of the Redis cache and cleans up resources.\n   *\n   * @returns Promise that resolves when cleanup is complete\n   */\n  async dispose(): Promise<void> {\n    if (this.client && this.isConnected) {\n      await this.client.quit();\n      this.isConnected = false;\n    }\n  }\n\n  /**\n   * Ensures Redis connection is established.\n   *\n   * @private\n   * @returns Promise that resolves when connected\n   */\n  private async ensureConnected(): Promise<void> {\n    if (this.isConnected) return;\n\n    try {\n      this.client = await this.createIoRedisClient();\n      this.isConnected = true;\n    } catch (error) {\n      throw new CorePackageError(\n        `Failed to connect to Redis: ${error instanceof Error ? error.message : 'Unknown error'}`,\n        ERROR_CODES.DB_CONNECTION_FAILED\n      );\n    }\n  }\n\n  /**\n   * Creates an ioredis client.\n   *\n   * @private\n   * @returns Promise that resolves to ioredis client\n   */\n  private async createIoRedisClient(): Promise<IoRedisClientType> {\n    const DEFAULT_TIMEOUT = 5000;\n    const defaultOptions = {\n      connectTimeout: DEFAULT_TIMEOUT,\n      commandTimeout: DEFAULT_TIMEOUT,\n      enableOfflineQueue: false,\n    } satisfies {\n      connectTimeout: number;\n      commandTimeout: number;\n      enableOfflineQueue: boolean;\n    };\n\n    const Redis = await import('ioredis');\n    const client = new Redis.default(this.config.url, {\n      connectTimeout: this.config.connectTimeout ?? defaultOptions.connectTimeout,\n      commandTimeout: this.config.commandTimeout ?? defaultOptions.commandTimeout,\n      enableOfflineQueue: defaultOptions.enableOfflineQueue,\n    });\n\n    // Wait for connection\n    await new Promise((resolve, reject) => {\n      client.on('ready', resolve);\n      client.on('error', reject);\n    });\n\n    return client;\n  }\n\n  /**\n   * Builds a Redis key with the configured prefix.\n   *\n   * @private\n   * @param key - Base cache key\n   * @returns Redis key with prefix\n   */\n  private buildRedisKey(key: string): string {\n    return `${this.keyPrefix}${key}`;\n  }\n}\n","/**\n * Cache Manager - Core Caching Layer\n *\n * Main cache orchestration service that manages different caching strategies.\n * This will be moved to @plyaz/core when the package structure is finalized.\n *\n * @fileoverview Core caching infrastructure\n * @version 1.0.0\n */\n\nimport { TIME_CONSTANTS } from '@plyaz/config';\nimport { ERROR_CODES } from '@plyaz/types';\nimport { CorePackageError } from '@plyaz/errors';\nimport { MemoryCacheStrategy } from './strategies/memory';\nimport type { CacheStrategy, CacheConfig, CacheEntry, CacheManagerStats } from '@plyaz/types';\n\n/**\n * Cache manager that orchestrates different caching strategies.\n * Provides a unified interface for caching across the application.\n *\n * @class CacheManager\n *\n * @example\n * ```typescript\n * const cache = new CacheManager({\n *   isEnabled: true,\n *   ttl: 300,\n *   strategy: 'redis',\n *   redisConfig: { url: 'redis://localhost:6379' }\n * });\n *\n * await cache.set('key', value);\n * const cached = await cache.get('key');\n * ```\n */\nexport class CacheManager {\n  private strategy: CacheStrategy | null = null;\n  private strategyPromise: Promise<CacheStrategy> | null = null;\n\n  /**\n   * Creates a new cache manager with the specified configuration.\n   *\n   * @param config - Cache configuration\n   */\n  constructor(private config: CacheConfig) {\n    // Strategy is created lazily on first use\n  }\n\n  /**\n   * Gets the cache strategy, initializing it if needed.\n   * Uses lazy initialization to support dynamic imports for Redis.\n   */\n  private async getStrategy(): Promise<CacheStrategy> {\n    if (this.strategy) return this.strategy;\n    if (this.strategyPromise) return this.strategyPromise;\n\n    this.strategyPromise = this.createStrategy(this.config);\n    this.strategy = await this.strategyPromise;\n    return this.strategy;\n  }\n\n  /**\n   * Stores a value in the cache.\n   *\n   * @template T - Type of the value to cache\n   * @param key - Cache key\n   * @param value - Value to cache\n   * @param ttl - Optional TTL override in seconds\n   * @returns Promise that resolves when value is cached\n   */\n  async set<T>(key: string, value: T, ttl?: number): Promise<void> {\n    if (!this.config.isEnabled) return;\n\n    const finalTtl = ttl ?? this.config.ttl;\n    const entry: CacheEntry<T> = {\n      data: value,\n      expiresAt: Date.now() + finalTtl * TIME_CONSTANTS.MILLISECONDS_PER_SECOND,\n      createdAt: Date.now(),\n    };\n\n    const strategy = await this.getStrategy();\n    await strategy.set(key, entry);\n  }\n\n  /**\n   * Retrieves a value from the cache.\n   *\n   * @template T - Expected type of the cached value\n   * @param key - Cache key\n   * @returns Promise that resolves to cached value or null if not found/expired\n   */\n  async get<T>(key: string): Promise<T | null> {\n    if (!this.config.isEnabled) return null;\n\n    const strategy = await this.getStrategy();\n    const entry = await strategy.get<T>(key);\n    if (!entry) return null;\n\n    // Check if entry has expired\n    if (Date.now() > entry.expiresAt) {\n      await strategy.delete(key);\n      return null;\n    }\n\n    return entry.data;\n  }\n\n  /**\n   * Removes a value from the cache.\n   *\n   * @param key - Cache key to remove\n   * @returns Promise that resolves when value is removed\n   */\n  async delete(key: string): Promise<void> {\n    if (!this.config.isEnabled) return;\n    const strategy = await this.getStrategy();\n    await strategy.delete(key);\n  }\n\n  /**\n   * Clears all cached values.\n   *\n   * @returns Promise that resolves when cache is cleared\n   */\n  async clear(): Promise<void> {\n    if (!this.config.isEnabled) return;\n    const strategy = await this.getStrategy();\n    await strategy.clear();\n  }\n\n  /**\n   * Checks if a key exists in the cache.\n   *\n   * @param key - Cache key to check\n   * @returns Promise that resolves to true if key exists and is not expired\n   */\n  async has(key: string): Promise<boolean> {\n    if (!this.config.isEnabled) return false;\n\n    const strategy = await this.getStrategy();\n    const entry = await strategy.get(key);\n    if (!entry) return false;\n\n    // Check if entry has expired\n    if (Date.now() > entry.expiresAt) {\n      await strategy.delete(key);\n      return false;\n    }\n\n    return true;\n  }\n\n  /**\n   * Gets cache statistics.\n   *\n   * @returns Promise that resolves to cache statistics\n   */\n  async getStats(): Promise<CacheManagerStats> {\n    const strategy = await this.getStrategy();\n    return strategy.getStats();\n  }\n\n  /**\n   * Creates the appropriate cache strategy based on configuration.\n   * Uses dynamic import for Redis to avoid bundling ioredis in frontend.\n   *\n   * @private\n   * @param config - Cache configuration\n   * @returns Promise that resolves to cache strategy instance\n   */\n  private async createStrategy(config: CacheConfig): Promise<CacheStrategy> {\n    switch (config.strategy) {\n      case 'redis': {\n        if (!config.redisConfig) {\n          throw new CorePackageError(\n            'Redis configuration is required for Redis cache strategy',\n            ERROR_CODES.CLIENT_INVALID_CONFIG\n          );\n        }\n        // Dynamic import to avoid bundling ioredis in frontend builds\n        const { RedisCacheStrategy } = await import('./strategies/redis');\n        return new RedisCacheStrategy(config.redisConfig);\n      }\n\n      case 'memory':\n      default:\n        return new MemoryCacheStrategy(config.memoryConfig);\n    }\n  }\n\n  /**\n   * Disposes of the cache manager and cleans up resources.\n   *\n   * @returns Promise that resolves when cleanup is complete\n   */\n  async dispose(): Promise<void> {\n    if (this.strategy) {\n      await this.strategy.dispose?.();\n    }\n  }\n}\n\nexport { CacheKeyBuilder } from './CacheKeyBuilder';\n","/**\n * Base Backend Domain Service\n *\n * Extends BaseDomainService with common backend patterns:\n * - Automatic validation → mapper → repository → mapper flow\n * - Event emission throughout CRUD lifecycle\n * - Repository-based data access\n * - Configurable error throwing behavior\n * - Template methods with lifecycle hooks\n *\n * Backend domain services should extend this class to get automatic\n * CRUD operation handling with standardized validation, mapping, and events.\n *\n * Note: This class ONLY handles repository operations. If you need HTTP API\n * calls, import and use fetchers from `@plyaz/api` directly in your service.\n *\n * @example\n * ```typescript\n * import { BaseBackendDomainService } from '@plyaz/core/domain/base';\n * import type { BaseRepository } from '@plyaz/db';\n *\n * class MyBackendService extends BaseBackendDomainService<\n *   MyBackendServiceConfig,\n *   MyEntity,\n *   MyResponseDTO,\n *   CreateMyDTO,\n *   UpdateMyDTO,\n *   PatchMyDTO,\n *   QueryMyDTO,\n *   DeleteMyOptions,\n *   MyRepository,\n *   MyDatabaseRow,\n *   MyMapper,\n *   MyValidator\n * > {\n *   protected repository: MyRepository;\n *   protected eventPrefix = 'my-entity';\n *\n *   constructor(config: MyBackendServiceConfig) {\n *     super({\n *       serviceName: 'MyBackendService',\n *       supportedRuntimes: ['backend'],\n *       serviceConfig: config,\n *       mapperClass: MyMapperClass,\n *       validatorClass: MyValidatorClass,\n *     });\n *     this.repository = MyRepository.create();\n *   }\n * }\n * ```\n */\n\nimport { CoreEventManager } from '@/events';\nimport { CorePackageError } from '@plyaz/errors';\nimport { BaseDomainService } from './BaseDomainService';\nimport { type CacheManager, CacheKeyBuilder } from '@/base/cache';\nimport type { StreamChannel } from '@plyaz/types/core';\nimport { StreamRegistry } from '@/events/streaming/StreamRegistry';\nimport type {\n  CoreBaseBackendServiceConfig,\n  CoreBaseMapperInstance,\n  CoreBaseValidatorInstance,\n  CoreServiceCreateOptions,\n  CoreBaseServiceConfig,\n  CrudOperationOptions,\n  CoreStorageServiceInstance,\n  CoreNotificationServiceInstance,\n} from '@plyaz/types/core';\nimport { FILE_CATEGORY, ENTITY_TYPE } from '@plyaz/types/storage';\nimport type { UploadParams, UploadResult, GenerateFileParams } from '@plyaz/types/storage';\nimport type {\n  SendEmailParams,\n  NotificationResult,\n  NotificationResponse,\n} from '@plyaz/types/notifications';\nimport type {\n  DatabaseResult,\n  PaginatedResult,\n  QueryOptions,\n  OperationConfig,\n  TransactionFn,\n  TransactionOptions,\n} from '@plyaz/types/db';\nimport { TIME_CONSTANTS } from '@plyaz/config';\nimport type {\n  CoreValidationStartedPayload,\n  CoreValidationSuccessPayload,\n  CoreValidationFailedPayload,\n  CoreSanitizationStartedPayload,\n  CoreSanitizationSuccessPayload,\n  CoreEntityCreatingPayload,\n  CoreEntityCreatedPayload,\n  CoreEntityPatchingPayload,\n  CoreEntityPatchedPayload,\n  CoreEntityDeletingPayload,\n  CoreEntityDeletedPayload,\n  CoreEntityErrorPayload,\n  CoreEntityCompletePayload,\n  // Generic operation payloads for storage/notification events\n  CoreOperationRequestPayload,\n  CoreOperationResultPayload,\n  CoreOperationErrorPayload,\n} from '@plyaz/types/core';\nimport { ERROR_CODES } from '@plyaz/types/errors';\nimport { OBSERVABILITY_METRICS } from '@plyaz/types/observability';\n\n// Re-export types\nexport type { CoreBaseBackendServiceConfig } from '@plyaz/types/core';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Event Payload Types\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Union type of all event payloads used in BaseBackendDomainService.\n * Includes CRUD event payloads and generic storage/notification payloads.\n */\ntype BaseBackendEventPayload =\n  | CoreValidationStartedPayload\n  | CoreValidationSuccessPayload\n  | CoreValidationFailedPayload\n  | CoreSanitizationStartedPayload\n  | CoreSanitizationSuccessPayload\n  | CoreEntityCreatingPayload<unknown>\n  | CoreEntityCreatedPayload<unknown>\n  | CoreEntityPatchingPayload<unknown>\n  | CoreEntityPatchedPayload<unknown>\n  | CoreEntityDeletingPayload\n  | CoreEntityDeletedPayload\n  | CoreEntityErrorPayload\n  | CoreEntityCompletePayload\n  // Storage/notification operations use generic payloads\n  | CoreOperationRequestPayload\n  | CoreOperationResultPayload\n  | CoreOperationErrorPayload;\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Abstract Base Class\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Abstract base class for backend domain services with automatic CRUD handling.\n *\n * Provides:\n * - Template methods for create/patch/delete/getById\n * - Automatic validation → mapper → repository → mapper flow\n * - Event emission throughout lifecycle\n * - Repository-based data access only\n * - Configurable error throwing\n * - Lifecycle hooks for customization\n *\n * @typeParam TConfig - Service configuration type\n * @typeParam TEntity - Domain entity type\n * @typeParam TResponseDTO - API response DTO type\n * @typeParam TCreateDTO - Create DTO type (POST)\n * @typeParam TUpdateDTO - Update DTO type (PUT)\n * @typeParam TPatchDTO - Patch DTO type (PATCH)\n * @typeParam TQueryDTO - Query DTO type for listing/filtering (defaults to Record<string, unknown>)\n * @typeParam TDeleteOptions - Delete options type\n * @typeParam TRepository - Repository type (must have create/update/delete/findById/findMany methods)\n * @typeParam TDatabaseRow - Database row type\n * @typeParam TStoreState - Store state type (serializable)\n * @typeParam TMapper - Mapper type\n * @typeParam TValidator - Validator type\n */\nexport abstract class BaseBackendDomainService<\n  TConfig extends CoreBaseBackendServiceConfig,\n  TEntity,\n  TResponseDTO,\n  // TCreateDTO must be an object so it can be used in DB transactions\n  TCreateDTO extends object,\n  TUpdateDTO extends object = TCreateDTO,\n  TPatchDTO extends Partial<object> = Partial<TCreateDTO>,\n  TQueryDTO extends object = object,\n  TDeleteOptions = { soft: boolean },\n  // TDatabaseRow should be compatible with TCreateDTO (create input becomes row output)\n  TDatabaseRow extends object = TCreateDTO & { id: string },\n  TRepository extends {\n    create(data: TCreateDTO): Promise<DatabaseResult<TDatabaseRow>>;\n    update(id: string, data: TPatchDTO): Promise<DatabaseResult<TDatabaseRow>>;\n    softDelete(id: string): Promise<DatabaseResult<void>>;\n    delete(id: string): Promise<DatabaseResult<void>>;\n    findById(id: string): Promise<DatabaseResult<TDatabaseRow | null>>;\n    findMany(\n      options?: QueryOptions<TDatabaseRow>,\n      config?: OperationConfig\n    ): Promise<DatabaseResult<PaginatedResult<TDatabaseRow>>>;\n    /** Get table name for transaction operations */\n    getTableName(): string;\n  } = never,\n  TStoreState = TEntity,\n  TMapper extends CoreBaseMapperInstance<\n    TEntity,\n    TResponseDTO,\n    TCreateDTO,\n    TUpdateDTO,\n    TPatchDTO,\n    unknown,\n    TStoreState\n  > = CoreBaseMapperInstance<\n    TEntity,\n    TResponseDTO,\n    TCreateDTO,\n    TUpdateDTO,\n    TPatchDTO,\n    unknown,\n    TStoreState\n  >,\n  TValidator extends CoreBaseValidatorInstance<\n    TCreateDTO,\n    TUpdateDTO,\n    TPatchDTO,\n    TDeleteOptions\n  > = CoreBaseValidatorInstance<TCreateDTO, TUpdateDTO, TPatchDTO, TDeleteOptions>,\n> extends BaseDomainService<TConfig, TMapper, TValidator> {\n  // ─────────────────────────────────────────────────────────────────────────\n  // Abstract Properties - Must be implemented by subclasses\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Repository instance for database operations.\n   * Subclasses must initialize this in constructor.\n   */\n  protected abstract repository: TRepository;\n\n  /**\n   * Event prefix for event emission (e.g., 'example', 'user', 'product').\n   * Used to construct event names like '{prefix}:creating', '{prefix}:created'.\n   */\n  protected abstract eventPrefix: string;\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Optional Properties - Can be overridden by subclasses\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Whether to use cache by default for all CRUD operations.\n   * Set from config.cache.enabled or defaults to true.\n   * Individual operations can override this via options.cache.useCache.\n   * Only applies if cacheManager is available.\n   */\n  protected useCacheByDefault: boolean;\n\n  /**\n   * Default TTL for cache entries (in seconds).\n   * Set from config.cache.defaultTtl or defaults to 300 (5 minutes).\n   */\n  protected defaultCacheTtl: number;\n\n  /**\n   * Storage service instance for file upload and document generation.\n   * Injected by ServiceRegistry, backend-only.\n   *\n   * Provides:\n   * - uploadFile() - Upload file (with optional template-based generation)\n   * - generateFile() - Generate document from template (returns Buffer)\n   * - downloadFile(), deleteFile(), getSignedUrl()\n   */\n  protected readonly storageService?: CoreStorageServiceInstance;\n\n  /**\n   * Notification service instance for email, SMS, push.\n   * Injected by ServiceRegistry, backend-only.\n   *\n   * Provides:\n   * - sendEmail() - Send email using templates\n   * - sendSMS() - Send SMS using templates\n   * - sendPush() - Send push notifications\n   */\n  protected readonly notificationsService?: CoreNotificationServiceInstance;\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Configuration Getters\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Check if should throw on validation errors (default: true)\n   */\n  protected get throwOnValidationError(): boolean {\n    return this.config.throwOnValidationError ?? true;\n  }\n\n  /**\n   * Check if should throw on repository errors (default: true)\n   */\n  protected get throwOnRepositoryError(): boolean {\n    return this.config.throwOnRepositoryError ?? true;\n  }\n\n  /**\n   * Check if should emit events (default: true)\n   */\n  protected get emitEvents(): boolean {\n    return this.config.emitEvents ?? true;\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Constructor\n  // ─────────────────────────────────────────────────────────────────────────\n\n  // eslint-disable-next-line complexity\n  constructor(baseConfig: CoreBaseServiceConfig<TConfig, TMapper, TValidator>) {\n    super(baseConfig);\n\n    // Initialize cache settings from config\n    const config = baseConfig.serviceConfig;\n    this.useCacheByDefault = config?.cache?.enabled ?? true;\n    this.defaultCacheTtl = config?.cache?.defaultTtl ?? TIME_CONSTANTS.DEFAULT_CACHE_TTL;\n\n    // Get storage and notifications services from injected services (backend-only)\n    this.storageService = baseConfig.injected?.storage as CoreStorageServiceInstance | undefined;\n    this.notificationsService = baseConfig.injected?.notifications as\n      | CoreNotificationServiceInstance\n      | undefined;\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Public CRUD Methods (Template Pattern)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Create a new entity (POST)\n   *\n   * Flow:\n   * 1. Assert service is ready\n   * 2. Emit validation:started event\n   * 3. Validate data using validator\n   * 4. Emit validation:success event\n   * 5. Emit sanitization:started event (Zod transforms already applied)\n   * 6. Map to create DTO using mapper\n   * 7. Emit creating event\n   * 8. Call repository.create()\n   * 9. Map response to domain entity\n   * 10. Cache the new entity (if enabled)\n   * 11. Emit created event\n   *\n   * @param data - Raw data to validate and create\n   * @param options - Operation options (cache, etc.)\n   * @returns Created entity\n   * @throws ValidationError[] if validation fails (array of errors)\n   * @throws CorePackageError if repository call fails\n   */\n  // eslint-disable-next-line complexity\n  async create<TInput = unknown>(data: TInput, options?: CrudOperationOptions): Promise<TEntity> {\n    this.assertReady();\n    const startTime = Date.now();\n    this.logDebug('Creating entity', { data });\n\n    // 1. Validation phase\n    this.emitEvent('validation:started', {\n      operation: 'create',\n      data,\n    } satisfies CoreValidationStartedPayload);\n\n    let validatedData: TCreateDTO;\n    try {\n      validatedData = this.validator.validateCreateOrThrow(data);\n      this.emitEvent('validation:success', {\n        operation: 'create',\n        validatedData,\n      } satisfies CoreValidationSuccessPayload<TCreateDTO>);\n    } catch (error) {\n      this.emitEvent('validation:failed', {\n        error,\n        operation: 'create',\n      } satisfies CoreValidationFailedPayload);\n      throw error;\n    }\n\n    // 2. Sanitization phase (Zod transforms already applied)\n    this.emitEvent('sanitization:started', {\n      operation: 'create',\n      data: validatedData,\n    } satisfies CoreSanitizationStartedPayload);\n\n    // 3. Map to DTO (BEFORE insert)\n    const requestDTO = this.mapper.toCreateDTO!(validatedData as Partial<TEntity>);\n    this.emitEvent('sanitization:complete', {\n      operation: 'create',\n      sanitizedData: requestDTO,\n    } satisfies CoreSanitizationSuccessPayload<TCreateDTO>);\n\n    // 4. Lifecycle hook\n    await this.beforeCreate(requestDTO);\n\n    // 5. Emit creating event\n    this.emitEvent('creating', {\n      request: requestDTO,\n    } satisfies CoreEntityCreatingPayload<TCreateDTO>);\n\n    try {\n      // 6. Call repository\n      const result = await this.repository.create(requestDTO);\n\n      if (!result.success || !result.value) {\n        throw (\n          result.error ??\n          new CorePackageError('Failed to create entity', ERROR_CODES.CORE_OPERATION_FAILED)\n        );\n      }\n\n      // 7. Map response to domain (BEFORE return)\n      const responseDTO = this.mapper.toResponseDTO!(result.value);\n      const entity = this.mapper.toDomain(responseDTO);\n\n      // 8. Lifecycle hook\n      await this.afterCreate(entity);\n\n      // 9. Cache the new entity (if custom key provided in options)\n      const shouldCache = options?.cache?.useCache ?? this.useCacheByDefault;\n      if (shouldCache && this.hasCacheManager && options?.cache?.customKey) {\n        try {\n          const cacheTtl = options.cache.cacheTtl ?? this.defaultCacheTtl;\n          await this.cacheSet(options.cache.customKey, entity, cacheTtl);\n          this.logDebug('Cached new entity', {\n            cacheKey: this.buildCacheKey(options.cache.customKey),\n            ttl: cacheTtl,\n          });\n        } catch (error) {\n          this.logWarn('Failed to cache new entity', {\n            error: error instanceof Error ? error.message : String(error),\n          });\n        }\n      }\n\n      // 10. Emit created event\n      const storeState = this.mapper.toStoreState(entity);\n      this.emitEvent('created', {\n        entity,\n        storeState,\n      } satisfies CoreEntityCreatedPayload<TEntity, TStoreState>);\n\n      this.emitEvent('complete', {\n        success: true,\n      } satisfies CoreEntityCompletePayload);\n\n      // Record success metrics\n      await this.recordOperationMetrics('create', Date.now() - startTime, true);\n\n      return entity;\n    } catch (error) {\n      // Record error metrics\n      await this.recordOperationMetrics('create', Date.now() - startTime, false);\n\n      this.emitEvent('error', {\n        error,\n      } satisfies CoreEntityErrorPayload);\n      throw error;\n    }\n  }\n\n  /**\n   * Patch an entity (PATCH - partial update)\n   *\n   * Flow similar to create but for partial updates\n   *\n   * @param id - Entity ID\n   * @param data - Raw data to validate and patch\n   * @param options - Operation options (cache, etc.)\n   * @returns Updated entity\n   * @throws ValidationError[] if validation fails\n   * @throws CorePackageError if repository call fails\n   */\n  // eslint-disable-next-line complexity\n  async patch<TInput = unknown>(\n    id: string,\n    data: TInput,\n    options?: CrudOperationOptions\n  ): Promise<TEntity> {\n    this.assertReady();\n    const startTime = Date.now();\n    this.logDebug('Patching entity', { id, data });\n\n    // 1. Validation phase\n    this.emitEvent('validation:started', {\n      operation: 'patch',\n      entityId: id,\n      data,\n    } satisfies CoreValidationStartedPayload);\n\n    let validatedData: TPatchDTO;\n    try {\n      validatedData = this.validator.validatePatchOrThrow(data);\n      this.emitEvent('validation:success', {\n        operation: 'patch',\n        entityId: id,\n        validatedData,\n      } satisfies CoreValidationSuccessPayload<TPatchDTO>);\n    } catch (error) {\n      this.emitEvent('validation:failed', {\n        error,\n        entityId: id,\n        operation: 'patch',\n      } satisfies CoreValidationFailedPayload);\n      throw error;\n    }\n\n    // 2. Sanitization phase\n    this.emitEvent('sanitization:started', {\n      operation: 'patch',\n      entityId: id,\n      data: validatedData,\n    } satisfies CoreSanitizationStartedPayload);\n\n    // 3. Map to DTO\n    const requestDTO = this.mapper.toPatchDTO!(validatedData as Partial<TEntity>);\n    this.emitEvent('sanitization:complete', {\n      operation: 'patch',\n      entityId: id,\n      sanitizedData: requestDTO,\n    } satisfies CoreSanitizationSuccessPayload<TPatchDTO>);\n\n    // 4. Lifecycle hook\n    await this.beforePatch(id, requestDTO);\n\n    // 5. Emit updating event\n    this.emitEvent('patching', {\n      id,\n      request: requestDTO,\n    } satisfies CoreEntityPatchingPayload<TPatchDTO>);\n\n    try {\n      // 6. Call repository\n      const result = await this.repository.update(id, requestDTO);\n\n      if (!result.success || !result.value) {\n        throw (\n          result.error ??\n          new CorePackageError('Failed to update entity', ERROR_CODES.CORE_OPERATION_FAILED)\n        );\n      }\n\n      // 7. Map response to domain\n      const responseDTO = this.mapper.toResponseDTO!(result.value);\n      const entity = this.mapper.toDomain(responseDTO);\n\n      // 8. Lifecycle hook\n      await this.afterPatch(id, entity);\n\n      // 9. Invalidate cache for this entity (unless disabled)\n      const shouldInvalidate = options?.cache?.invalidateCache ?? true;\n      if (shouldInvalidate && this.hasCacheManager) {\n        try {\n          const cacheKey = options?.cache?.customKey ?? CacheKeyBuilder.entity(id);\n          await this.cacheDelete(cacheKey);\n          this.logDebug('Invalidated cache after patch', {\n            id,\n            cacheKey: this.buildCacheKey(cacheKey),\n          });\n        } catch (error) {\n          this.logWarn('Failed to invalidate cache after patch', {\n            id,\n            error: error instanceof Error ? error.message : String(error),\n          });\n        }\n      }\n\n      // 10. Emit updated event\n      const storeState = this.mapper.toStoreState(entity);\n      this.emitEvent('patched', {\n        entity,\n        storeState,\n      } satisfies CoreEntityPatchedPayload<TEntity, TStoreState>);\n\n      this.emitEvent('complete', {\n        success: true,\n        entityId: id,\n      } satisfies CoreEntityCompletePayload);\n\n      // Record success metrics\n      await this.recordOperationMetrics('patch', Date.now() - startTime, true);\n\n      return entity;\n    } catch (error) {\n      // Record error metrics\n      await this.recordOperationMetrics('patch', Date.now() - startTime, false);\n\n      this.emitEvent('error', {\n        error,\n        entityId: id,\n      } satisfies CoreEntityErrorPayload);\n      throw error;\n    }\n  }\n\n  /**\n   * Delete an entity (DELETE)\n   *\n   * @param id - Entity ID\n   * @param deleteOptions - Delete options (e.g., soft delete)\n   * @param crudOptions - CRUD operation options (cache, etc.)\n   * @returns void\n   * @throws ValidationError[] if options validation fails\n   * @throws CorePackageError if repository call fails\n   */\n  // eslint-disable-next-line complexity\n  async delete<TInput = TDeleteOptions>(\n    id: string,\n    deleteOptions?: TInput,\n    crudOptions?: CrudOperationOptions\n  ): Promise<void> {\n    this.assertReady();\n    const startTime = Date.now();\n    this.logDebug('Deleting entity', { id, deleteOptions, crudOptions });\n\n    // 1. Validate options if provided\n    const validatedOptions = deleteOptions\n      ? this.validator.validateDeleteOrThrow(deleteOptions)\n      : this.getDefaultDeleteOptions();\n\n    // 2. Lifecycle hook\n    await this.beforeDelete(id, validatedOptions);\n\n    // 3. Emit deleting event\n    const isSoftDelete = (validatedOptions as { soft?: boolean })?.soft ?? false;\n    this.emitEvent('deleting', {\n      id,\n      options: { soft: isSoftDelete },\n    } satisfies CoreEntityDeletingPayload);\n\n    try {\n      // 4. Call repository (soft or hard delete)\n      const result = isSoftDelete\n        ? await this.repository.softDelete(id)\n        : await this.repository.delete(id);\n\n      if (!result.success) {\n        throw (\n          result.error ??\n          new CorePackageError('Failed to delete entity', ERROR_CODES.CORE_OPERATION_FAILED)\n        );\n      }\n\n      // 5. Lifecycle hook\n      await this.afterDelete(id, validatedOptions);\n\n      // 6. Invalidate cache for this entity (unless disabled)\n      const shouldInvalidate = crudOptions?.cache?.invalidateCache ?? true;\n      if (shouldInvalidate && this.hasCacheManager) {\n        try {\n          const cacheKey = crudOptions?.cache?.customKey ?? CacheKeyBuilder.entity(id);\n          await this.cacheDelete(cacheKey);\n          this.logDebug('Invalidated cache after delete', {\n            id,\n            cacheKey: this.buildCacheKey(cacheKey),\n          });\n        } catch (error) {\n          this.logWarn('Failed to invalidate cache after delete', {\n            id,\n            error: error instanceof Error ? error.message : String(error),\n          });\n        }\n      }\n\n      // 7. Emit deleted event\n      this.emitEvent('deleted', {\n        id,\n        soft: isSoftDelete,\n      } satisfies CoreEntityDeletedPayload);\n\n      this.emitEvent('complete', {\n        success: true,\n        entityId: id,\n      } satisfies CoreEntityCompletePayload);\n\n      // Record success metrics\n      await this.recordOperationMetrics('delete', Date.now() - startTime, true);\n    } catch (error) {\n      // Record error metrics\n      await this.recordOperationMetrics('delete', Date.now() - startTime, false);\n\n      this.emitEvent('error', {\n        error,\n        entityId: id,\n      } satisfies CoreEntityErrorPayload);\n      throw error;\n    }\n  }\n\n  /**\n   * Get entity by ID (GET) with cache-aside pattern\n   *\n   * Cache-aside flow:\n   * 1. Check cache first (if enabled)\n   * 2. If cache hit, return cached entity\n   * 3. If cache miss, fetch from DB\n   * 4. Cache the result (if enabled)\n   *\n   * @param id - Entity ID\n   * @param options - Operation options (cache, pagination, etc.)\n   * @returns Entity or null if not found\n   * @throws CorePackageError if repository call fails\n   *\n   * @example\n   * ```typescript\n   * // With cache\n   * const entity = await service.getById('123', {\n   *   cache: { useCache: true, cacheTtl: 300 }\n   * });\n   *\n   * // Without cache\n   * const entity = await service.getById('123', {\n   *   cache: { useCache: false }\n   * });\n   *\n   * // With custom cache key (still prefixed with cachePrefix)\n   * const entity = await service.getById('123', {\n   *   cache: { customKey: 'user:active:123' }\n   * });\n   * // Final cache key will be: 'example:user:active:123'\n   * ```\n   */\n  // eslint-disable-next-line complexity\n  async getById(id: string, options?: CrudOperationOptions): Promise<TEntity | null> {\n    this.assertReady();\n    const startTime = Date.now();\n    this.logDebug('Fetching entity by ID', { id, options });\n\n    // Use cache if: (explicit option OR default setting) AND cache manager available\n    const useCacheOption = options?.cache?.useCache ?? this.useCacheByDefault;\n    const useCache = useCacheOption && this.hasCacheManager;\n    // Use custom key if provided, otherwise use default entity key\n    const cacheKey = options?.cache?.customKey ?? CacheKeyBuilder.entity(id);\n    const cacheTtl = options?.cache?.cacheTtl ?? this.defaultCacheTtl;\n\n    // 1. Try cache first (cache-aside pattern)\n    if (useCache) {\n      try {\n        const cached = await this.cacheGet<TEntity>(cacheKey);\n        if (cached) {\n          this.logDebug('Cache hit for entity', { id, cacheKey: this.buildCacheKey(cacheKey) });\n          await this.recordCacheMetric(true, 'getById');\n          await this.recordOperationMetrics('getById', Date.now() - startTime, true);\n          return cached;\n        }\n        this.logDebug('Cache miss for entity', { id, cacheKey: this.buildCacheKey(cacheKey) });\n        await this.recordCacheMetric(false, 'getById');\n      } catch (error) {\n        this.logWarn('Cache read failed, falling back to DB', {\n          id,\n          error: error instanceof Error ? error.message : String(error),\n        });\n      }\n    }\n\n    // 2. Fetch from database\n    try {\n      const result = await this.repository.findById(id);\n\n      if (!result.success) {\n        throw (\n          result.error ??\n          new CorePackageError('Failed to fetch entity', ERROR_CODES.CORE_OPERATION_FAILED)\n        );\n      }\n\n      if (!result.value) {\n        return null;\n      }\n\n      // 3. Map response to domain\n      const responseDTO = this.mapper.toResponseDTO!(result.value);\n      const entity = this.mapper.toDomain(responseDTO);\n\n      // 4. Cache the result\n      if (useCache && entity) {\n        try {\n          await this.cacheSet(cacheKey, entity, cacheTtl);\n          this.logDebug('Cached entity', {\n            id,\n            cacheKey: this.buildCacheKey(cacheKey),\n            ttl: cacheTtl,\n          });\n        } catch (error) {\n          this.logWarn('Cache write failed', {\n            id,\n            error: error instanceof Error ? error.message : String(error),\n          });\n        }\n      }\n\n      // Record success metrics\n      await this.recordOperationMetrics('getById', Date.now() - startTime, true);\n\n      return entity;\n    } catch (error) {\n      // Record error metrics\n      await this.recordOperationMetrics('getById', Date.now() - startTime, false);\n\n      this.emitEvent('error', {\n        error,\n        entityId: id,\n      } satisfies CoreEntityErrorPayload);\n      throw error;\n    }\n  }\n\n  /**\n   * Get all entities (list/query)\n   *\n   * Flow:\n   * 1. Check cache (if enabled)\n   * 2. If cache miss, fetch from repository\n   * 3. Map response to domain entities\n   * 4. Cache the result\n   * 5. Return entities\n   *\n   * @param query - Query parameters for filtering/pagination\n   * @param options - Operation options (cache, etc.)\n   * @returns Array of entities\n   *\n   * @example\n   * ```typescript\n   * // Basic list\n   * const users = await service.getAll();\n   *\n   * // With filters\n   * const users = await service.getAll({ status: 'active', page: 1, limit: 10 });\n   *\n   * // With cache options\n   * const users = await service.getAll(\n   *   { status: 'active' },\n   *   { cache: { useCache: true, cacheTtl: 600 } }\n   * );\n   *\n   * // With custom cache key\n   * const users = await service.getAll(\n   *   { status: 'active' },\n   *   { cache: { customKey: CacheKeyBuilder.query('active', { status: 'active' }) } }\n   * );\n   * ```\n   */\n  // eslint-disable-next-line complexity\n  async getAll(query?: Partial<TQueryDTO>, options?: CrudOperationOptions): Promise<TEntity[]> {\n    this.assertReady();\n    const startTime = Date.now();\n    this.logDebug('Fetching all entities', { query, options });\n\n    // Lifecycle hook\n    await this.beforeGetAll(query);\n\n    // Use cache if: (explicit option OR default setting) AND cache manager available\n    const useCacheOption = options?.cache?.useCache ?? this.useCacheByDefault;\n    const useCache = useCacheOption && this.hasCacheManager;\n    // Use custom key if provided, otherwise use list key with query params\n    const cacheKey =\n      options?.cache?.customKey ?? CacheKeyBuilder.list(query as Record<string, unknown>);\n    const cacheTtl = options?.cache?.cacheTtl ?? this.defaultCacheTtl;\n\n    // 1. Try cache first (cache-aside pattern)\n    if (useCache) {\n      try {\n        const cached = await this.cacheGet<TEntity[]>(cacheKey);\n        if (cached) {\n          this.logDebug('Cache hit for list', { query, cacheKey: this.buildCacheKey(cacheKey) });\n          await this.recordCacheMetric(true, 'getAll');\n          await this.recordOperationMetrics('getAll', Date.now() - startTime, true);\n          await this.afterGetAll(cached, query);\n          return cached;\n        }\n        this.logDebug('Cache miss for list', { query, cacheKey: this.buildCacheKey(cacheKey) });\n        await this.recordCacheMetric(false, 'getAll');\n      } catch (error) {\n        this.logWarn('Cache read failed, falling back to DB', {\n          query,\n          error: error instanceof Error ? error.message : String(error),\n        });\n      }\n    }\n\n    // 2. Fetch from database\n    try {\n      const result = await this.repository.findMany(query);\n\n      if (!result.success) {\n        throw (\n          result.error ??\n          new CorePackageError('Failed to fetch entities', ERROR_CODES.CORE_OPERATION_FAILED)\n        );\n      }\n\n      // 3. Map response to domain entities\n      const data = result.value?.data ?? result.value ?? [];\n      const entities = (Array.isArray(data) ? data : []).map((item: unknown) => {\n        const responseDTO = this.mapper.toResponseDTO!(item);\n        return this.mapper.toDomain(responseDTO);\n      });\n\n      // 4. Cache the result\n      if (useCache) {\n        try {\n          await this.cacheSet(cacheKey, entities, cacheTtl);\n          this.logDebug('Cached entity list', {\n            query,\n            count: entities.length,\n            cacheKey: this.buildCacheKey(cacheKey),\n            ttl: cacheTtl,\n          });\n        } catch (error) {\n          this.logWarn('Cache write failed', {\n            query,\n            error: error instanceof Error ? error.message : String(error),\n          });\n        }\n      }\n\n      // Lifecycle hook\n      await this.afterGetAll(entities, query);\n\n      // Record success metrics\n      await this.recordOperationMetrics('getAll', Date.now() - startTime, true);\n\n      return entities;\n    } catch (error) {\n      // Record error metrics\n      await this.recordOperationMetrics('getAll', Date.now() - startTime, false);\n\n      this.emitEvent('error', {\n        error,\n        data: { query },\n      } satisfies CoreEntityErrorPayload);\n      throw error;\n    }\n  }\n\n  /**\n   * Check if an entity exists by ID\n   *\n   * More efficient than getById when you only need to check existence.\n   * Uses cache if available, falls back to repository.findById.\n   *\n   * @param id - Entity ID to check\n   * @param options - Optional CRUD operation options\n   * @returns Promise resolving to boolean (true if exists, false otherwise)\n   *\n   * @example\n   * ```typescript\n   * const exists = await service.exists('123');\n   * if (exists) {\n   *   // Entity exists\n   * }\n   * ```\n   */\n  // eslint-disable-next-line complexity\n  async exists(id: string, options?: CrudOperationOptions): Promise<boolean> {\n    this.assertReady();\n    this.logDebug('Checking entity existence', { id, options });\n\n    // Lifecycle hook\n    await this.beforeExists(id);\n\n    // Use cache if enabled\n    const useCacheOption = options?.cache?.useCache ?? this.useCacheByDefault;\n    const useCache = useCacheOption && this.hasCacheManager;\n    const cacheKey = options?.cache?.customKey ?? CacheKeyBuilder.entity(id);\n\n    // 1. Try cache first\n    if (useCache) {\n      try {\n        const cached = await this.cacheGet<TEntity>(cacheKey);\n        if (cached) {\n          this.logDebug('Cache hit for exists check', {\n            id,\n            cacheKey: this.buildCacheKey(cacheKey),\n          });\n          await this.afterExists(id, true);\n          return true;\n        }\n        this.logDebug('Cache miss for exists check', {\n          id,\n          cacheKey: this.buildCacheKey(cacheKey),\n        });\n      } catch (error) {\n        this.logWarn('Cache read failed during exists check, falling back to DB', {\n          id,\n          error: error instanceof Error ? error.message : String(error),\n        });\n      }\n    }\n\n    // 2. Check repository\n    try {\n      const result = await this.repository.findById(id);\n\n      if (!result.success) {\n        throw (\n          result.error ??\n          new CorePackageError(\n            'Failed to check entity existence',\n            ERROR_CODES.CORE_OPERATION_FAILED\n          )\n        );\n      }\n\n      const exists = result.value !== null;\n\n      // Lifecycle hook\n      await this.afterExists(id, exists);\n\n      return exists;\n    } catch (error) {\n      this.emitEvent('error', {\n        error,\n        entityId: id,\n      } satisfies CoreEntityErrorPayload);\n      throw error;\n    }\n  }\n\n  /**\n   * Create multiple entities at once (bulk operation)\n   *\n   * **Transaction Support (Default: ON)**\n   * - Uses database transaction by default for atomic operations\n   * - All entities created successfully or none (rollback on failure)\n   * - Falls back to sequential creation if transactions not supported\n   * - Disable with `options.transaction.useTransaction: false`\n   *\n   * @param dataArray - Array of data to create entities from\n   * @param options - Optional CRUD operation options (includes transaction config)\n   * @returns Promise resolving to array of created entities\n   *\n   * @example\n   * ```typescript\n   * // Default: Uses transaction (atomic)\n   * const entities = await service.bulkCreate([\n   *   { name: 'Entity 1', amount: 100 },\n   *   { name: 'Entity 2', amount: 200 },\n   * ]);\n   *\n   * // Explicit: Disable transaction (sequential, partial failures possible)\n   * const entities = await service.bulkCreate(data, {\n   *   transaction: { useTransaction: false }\n   * });\n   * ```\n   */\n  // eslint-disable-next-line complexity\n  async bulkCreate<TInput = unknown>(\n    dataArray: TInput[],\n    options?: CrudOperationOptions\n  ): Promise<TEntity[]> {\n    this.assertReady();\n    const startTime = Date.now();\n    this.logDebug('Bulk creating entities', { count: dataArray.length, options });\n\n    if (!Array.isArray(dataArray)) {\n      throw new CorePackageError('Data must be an array', ERROR_CODES.VALIDATION_ERROR);\n    }\n\n    if (dataArray.length === 0) {\n      return [];\n    }\n\n    // Lifecycle hook - handle errors from hooks\n    try {\n      await this.beforeBulkCreate(dataArray);\n    } catch (error) {\n      this.logError('beforeBulkCreate hook failed', { error });\n      throw error;\n    }\n\n    // Determine if we should use transaction (default: true)\n    const useTransaction = options?.transaction?.useTransaction !== false;\n    const canUseTransaction = useTransaction && this.supportsTransactions;\n\n    let createdEntities: TEntity[];\n\n    if (canUseTransaction) {\n      // Use transaction for atomic bulk create\n      this.logDebug('Using transaction for bulk create', { count: dataArray.length });\n\n      const txResult = await this.withTransaction(async trx => {\n        const entities: TEntity[] = [];\n\n        for (const data of dataArray) {\n          // Validate\n          const validatedData = this.validator.validateCreateOrThrow(data);\n\n          // Map to DTO\n          const requestDTO = this.mapper.toCreateDTO!(validatedData as Partial<TEntity>);\n\n          // Create via transaction using repository's table name\n          // Transaction.create<T>(table, data: T) returns DatabaseResult<T>\n          const tableName = this.repository.getTableName();\n          const createResult = await trx.create(tableName, requestDTO);\n\n          if (!createResult.success || !createResult.value) {\n            throw (\n              createResult.error ??\n              new CorePackageError(\n                'Failed to create entity in transaction',\n                ERROR_CODES.CORE_OPERATION_FAILED\n              )\n            );\n          }\n\n          // Map the created row to domain entity\n          // The DB returns the created row which we map through responseDTO to domain\n          // Use unknown intermediate cast since DB result matches TDatabaseRow structure\n          const responseDTO = this.mapper.toResponseDTO!(\n            createResult.value as unknown as TDatabaseRow\n          );\n          const entity = this.mapper.toDomain(responseDTO);\n          entities.push(entity);\n        }\n\n        return entities;\n      }, options?.transaction);\n\n      if (!txResult.success || !txResult.value) {\n        throw (\n          txResult.error ??\n          new CorePackageError('Bulk create transaction failed', ERROR_CODES.CORE_OPERATION_FAILED)\n        );\n      }\n\n      createdEntities = txResult.value;\n\n      // Cache all entities after successful transaction\n      for (const entity of createdEntities) {\n        const entityId = (entity as { id?: string }).id;\n        if (entityId) {\n          const cacheKey = CacheKeyBuilder.entity(entityId);\n          await this.cacheSet(cacheKey, entity, this.defaultCacheTtl);\n        }\n      }\n    } else {\n      // Fallback: Sequential creation (no transaction support or disabled)\n      if (useTransaction && !this.supportsTransactions) {\n        this.logWarn('Transaction requested but not supported, falling back to sequential');\n      }\n\n      createdEntities = [];\n      for (const data of dataArray) {\n        const entity = await this.create(data, options);\n        createdEntities.push(entity);\n      }\n    }\n\n    // Lifecycle hook - handle errors from hooks\n    try {\n      await this.afterBulkCreate(createdEntities, dataArray);\n    } catch (error) {\n      this.logError('afterBulkCreate hook failed', { error });\n      throw error;\n    }\n\n    this.logDebug('Bulk create completed', {\n      count: createdEntities.length,\n      usedTransaction: canUseTransaction,\n    });\n\n    // Record success metrics\n    await this.recordOperationMetrics('bulkCreate', Date.now() - startTime, true);\n\n    return createdEntities;\n  }\n\n  /**\n   * Delete multiple entities at once (bulk operation)\n   *\n   * **Transaction Support (Default: ON)**\n   * - Uses database transaction by default for atomic operations\n   * - All entities deleted successfully or none (rollback on failure)\n   * - Falls back to sequential deletion if transactions not supported\n   * - Disable with `crudOptions.transaction.useTransaction: false`\n   *\n   * @param ids - Array of entity IDs to delete\n   * @param deleteOptions - Optional delete options (soft/hard delete)\n   * @param crudOptions - Optional CRUD operation options (includes transaction config)\n   * @returns Promise resolving when all deletions complete\n   *\n   * @example\n   * ```typescript\n   * // Default: Uses transaction (atomic)\n   * await service.bulkDelete(['id1', 'id2', 'id3'], { soft: true });\n   *\n   * // Explicit: Disable transaction\n   * await service.bulkDelete(ids, { soft: true }, {\n   *   transaction: { useTransaction: false }\n   * });\n   * ```\n   */\n  // eslint-disable-next-line complexity\n  async bulkDelete<TInput = TDeleteOptions>(\n    ids: string[],\n    deleteOptions?: TInput,\n    crudOptions?: CrudOperationOptions\n  ): Promise<void> {\n    this.assertReady();\n    const startTime = Date.now();\n    this.logDebug('Bulk deleting entities', { count: ids.length, deleteOptions, crudOptions });\n\n    if (!Array.isArray(ids)) {\n      throw new CorePackageError('IDs must be an array', ERROR_CODES.VALIDATION_ERROR);\n    }\n\n    if (ids.length === 0) {\n      return;\n    }\n\n    // Lifecycle hook - handle errors from hooks\n    try {\n      await this.beforeBulkDelete(ids, deleteOptions);\n    } catch (error) {\n      this.logError('beforeBulkDelete hook failed', { error });\n      throw error;\n    }\n\n    // Determine if we should use transaction (default: true)\n    const useTransaction = crudOptions?.transaction?.useTransaction !== false;\n    const canUseTransaction = useTransaction && this.supportsTransactions;\n\n    // Check if soft delete\n    const isSoftDelete = (deleteOptions as { soft?: boolean })?.soft !== false;\n\n    if (canUseTransaction) {\n      // Use transaction for atomic bulk delete\n      this.logDebug('Using transaction for bulk delete', { count: ids.length, isSoftDelete });\n\n      const txResult = await this.withTransaction(async trx => {\n        // Get table name from repository\n        const tableName = this.repository.getTableName();\n\n        for (const id of ids) {\n          // Validate delete options if validator supports it\n          if (deleteOptions && this.validator.validateDeleteOrThrow) {\n            this.validator.validateDeleteOrThrow(deleteOptions);\n          }\n\n          // Delete via transaction\n          const result = await trx.delete(tableName, id);\n\n          if (!result.success) {\n            throw (\n              result.error ??\n              new CorePackageError(\n                `Failed to delete entity ${id} in transaction`,\n                ERROR_CODES.CORE_OPERATION_FAILED\n              )\n            );\n          }\n        }\n\n        return ids;\n      }, crudOptions?.transaction);\n\n      if (!txResult.success) {\n        throw (\n          txResult.error ??\n          new CorePackageError('Bulk delete transaction failed', ERROR_CODES.CORE_OPERATION_FAILED)\n        );\n      }\n\n      // Invalidate cache for all deleted entities after successful transaction\n      for (const id of ids) {\n        const cacheKey = CacheKeyBuilder.entity(id);\n        await this.cacheDelete(cacheKey);\n      }\n    } else {\n      // Fallback: Sequential deletion (no transaction support or disabled)\n      if (useTransaction && !this.supportsTransactions) {\n        this.logWarn('Transaction requested but not supported, falling back to sequential');\n      }\n\n      for (const id of ids) {\n        await this.delete(id, deleteOptions, crudOptions);\n      }\n    }\n\n    // Lifecycle hook - handle errors from hooks\n    try {\n      await this.afterBulkDelete(ids, deleteOptions);\n    } catch (error) {\n      this.logError('afterBulkDelete hook failed', { error });\n      throw error;\n    }\n\n    this.logDebug('Bulk delete completed', {\n      count: ids.length,\n      usedTransaction: canUseTransaction,\n    });\n\n    // Record success metrics\n    await this.recordOperationMetrics('bulkDelete', Date.now() - startTime, true);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Transaction Support\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Execute operations within a database transaction\n   *\n   * Provides atomic operations with automatic rollback on failure.\n   * Uses the underlying database adapter's transaction support.\n   *\n   * @param fn - Function containing operations to execute within transaction\n   * @param options - Optional transaction configuration\n   * @returns Promise resolving to the transaction result\n   * @throws Error if transaction fails (auto-rollback occurs)\n   *\n   * @example\n   * ```typescript\n   * // Single service transaction\n   * const result = await userService.withTransaction(async (trx) => {\n   *   const user = await trx.create('users', userData);\n   *   const profile = await trx.create('profiles', { userId: user.id, ...profileData });\n   *   return { user, profile };\n   * });\n   *\n   * // Cross-service transaction (using shared db instance)\n   * const db = Core.db.getDatabase();\n   * const result = await db.transaction(async (trx) => {\n   *   await trx.create('users', userData);\n   *   await trx.create('audit_logs', { action: 'user_created', ... });\n   * });\n   * ```\n   */\n  async withTransaction<T>(\n    fn: TransactionFn<T>,\n    options?: TransactionOptions\n  ): Promise<DatabaseResult<T>> {\n    this.assertReady();\n    this.logDebug('Starting transaction', { options });\n\n    // Get the database service from injected services (typed in BaseDomainService)\n    const db = this.dbService;\n    if (!db) {\n      throw new CorePackageError(\n        'Database service not available for transactions. Ensure DbService is initialized.',\n        ERROR_CODES.CORE_OPERATION_FAILED\n      );\n    }\n\n    // Check if adapter supports transactions\n    if (typeof db.transaction !== 'function') {\n      throw new CorePackageError(\n        'Database adapter does not support transactions',\n        ERROR_CODES.CORE_OPERATION_FAILED\n      );\n    }\n\n    try {\n      // DatabaseServiceInterface.transaction returns DatabaseResult<T>\n      const result = await db.transaction(fn, options);\n\n      if (result.success) {\n        this.logDebug('Transaction completed successfully');\n      } else {\n        this.logWarn('Transaction failed', { error: result.error });\n      }\n\n      return result;\n    } catch (error) {\n      this.logError('Transaction error', { error });\n      throw error;\n    }\n  }\n\n  /**\n   * Check if transaction support is available\n   *\n   * @returns true if the database adapter supports transactions\n   */\n  get supportsTransactions(): boolean {\n    return this.dbService !== undefined && typeof this.dbService.transaction === 'function';\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Protected Lifecycle Hooks (Override for custom behavior)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Called before create operation\n   * Override to add custom logic before creating\n   */\n  // eslint-disable-next-line no-unused-vars\n  protected async beforeCreate(_data: TCreateDTO): Promise<void> {\n    // Default: no-op\n  }\n\n  /**\n   * Called after create operation\n   * Override to add custom logic after creating\n   */\n  // eslint-disable-next-line no-unused-vars\n  protected async afterCreate(_entity: TEntity): Promise<void> {\n    // Default: no-op\n  }\n\n  /**\n   * Called before bulk create operation\n   * Override to add custom logic before bulk creating\n   */\n  // eslint-disable-next-line no-unused-vars\n  protected async beforeBulkCreate<TInput = unknown>(_dataArray: TInput[]): Promise<void> {\n    // Default: no-op\n  }\n\n  /**\n   * Called after bulk create operation\n   * Override to add custom logic after bulk creating\n   */\n  protected async afterBulkCreate<TInput = unknown>(\n    // eslint-disable-next-line no-unused-vars\n    _entities: TEntity[],\n    // eslint-disable-next-line no-unused-vars\n    _dataArray: TInput[]\n  ): Promise<void> {\n    // Default: no-op\n  }\n\n  /**\n   * Called before getAll operation\n   * Override to add custom logic before fetching list\n   */\n  // eslint-disable-next-line no-unused-vars\n  protected async beforeGetAll(_query?: Partial<TQueryDTO>): Promise<void> {\n    // Default: no-op\n  }\n\n  /**\n   * Called after getAll operation\n   * Override to add custom logic after fetching list (e.g., invalidate related caches)\n   */\n  // eslint-disable-next-line no-unused-vars\n  protected async afterGetAll(_entities: TEntity[], _query?: Partial<TQueryDTO>): Promise<void> {\n    // Default: no-op\n  }\n\n  /**\n   * Called before patch operation\n   * Override to add custom logic before patching\n   */\n  // eslint-disable-next-line no-unused-vars\n  protected async beforePatch(_id: string, _data: TPatchDTO): Promise<void> {\n    // Default: no-op\n  }\n\n  /**\n   * Called after patch operation\n   * Override to add custom logic after patching\n   */\n  // eslint-disable-next-line no-unused-vars\n  protected async afterPatch(_id: string, _entity: TEntity): Promise<void> {\n    // Default: no-op\n  }\n\n  /**\n   * Called before delete operation\n   * Override to add custom logic before deleting\n   */\n  // eslint-disable-next-line no-unused-vars\n  protected async beforeDelete(_id: string, _options: TDeleteOptions): Promise<void> {\n    // Default: no-op\n  }\n\n  /**\n   * Called after delete operation\n   * Override to add custom logic after deleting\n   */\n  // eslint-disable-next-line no-unused-vars\n  protected async afterDelete(_id: string, _options: TDeleteOptions): Promise<void> {\n    // Default: no-op\n  }\n\n  /**\n   * Called before bulk delete operation\n   * Override to add custom logic before bulk deleting\n   */\n  protected async beforeBulkDelete<TInput = TDeleteOptions>(\n    // eslint-disable-next-line no-unused-vars\n    _ids: string[],\n    // eslint-disable-next-line no-unused-vars\n    _deleteOptions?: TInput\n  ): Promise<void> {\n    // Default: no-op\n  }\n\n  /**\n   * Called after bulk delete operation\n   * Override to add custom logic after bulk deleting\n   */\n  protected async afterBulkDelete<TInput = TDeleteOptions>(\n    // eslint-disable-next-line no-unused-vars\n    _ids: string[],\n    // eslint-disable-next-line no-unused-vars\n    _deleteOptions?: TInput\n  ): Promise<void> {\n    // Default: no-op\n  }\n\n  /**\n   * Called before exists check\n   * Override to add custom logic before checking existence\n   */\n  // eslint-disable-next-line no-unused-vars\n  protected async beforeExists(_id: string): Promise<void> {\n    // Default: no-op\n  }\n\n  /**\n   * Called after exists check\n   * Override to add custom logic after checking existence\n   */\n  // eslint-disable-next-line no-unused-vars\n  protected async afterExists(_id: string, _exists: boolean): Promise<void> {\n    // Default: no-op\n  }\n\n  /**\n   * Get default delete options\n   * Override to customize default behavior\n   */\n  protected getDefaultDeleteOptions(): TDeleteOptions {\n    return { soft: true } as TDeleteOptions;\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Protected Event Helpers\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Emit event with prefix\n   * Only emits if emitEvents is true\n   */\n  protected emitEvent<TPayload extends BaseBackendEventPayload>(\n    event: string,\n    payload: TPayload\n  ): void {\n    if (this.emitEvents) {\n      CoreEventManager.emit(`${this.eventPrefix}:${event}`, payload);\n    }\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Cache Helper Methods\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Build cache key with service prefix.\n   * ALWAYS applies the cachePrefix. Override this method to customize key structure.\n   *\n   * @param key - Cache key (without prefix)\n   * @returns Prefixed cache key (e.g., 'example:entity:123')\n   *\n   * @example\n   * ```typescript\n   * // Default behavior\n   * buildCacheKey('entity:123') // Returns: 'example:entity:123'\n   *\n   * // Override for custom namespacing\n   * protected buildCacheKey(key: string): string {\n   *   const baseKey = super.buildCacheKey(key);\n   *   return `${baseKey}:tenant:${this.tenantId}`;\n   * }\n   * ```\n   */\n  protected buildCacheKey(key: string): string {\n    return `${this.cachePrefix}:${key}`;\n  }\n\n  /**\n   * Get value from cache with automatic prefix.\n   * Prefix is ALWAYS applied via buildCacheKey().\n   *\n   * @param key - Cache key (will be prefixed automatically)\n   * @returns Cached value or null\n   */\n  protected async cacheGet<T = unknown>(key: string): Promise<T | null> {\n    if (!this.cacheManager) return null;\n    const cache = this.cacheManager as CacheManager;\n    const finalKey = this.buildCacheKey(key);\n    return cache.get<T>(finalKey);\n  }\n\n  /**\n   * Set value in cache with automatic prefix.\n   * Prefix is ALWAYS applied via buildCacheKey().\n   *\n   * @param key - Cache key (will be prefixed automatically)\n   * @param value - Value to cache\n   * @param ttl - TTL in seconds (optional)\n   */\n  protected async cacheSet<T = unknown>(key: string, value: T, ttl?: number): Promise<void> {\n    if (!this.cacheManager) return;\n    const cache = this.cacheManager as CacheManager;\n    const finalKey = this.buildCacheKey(key);\n    await cache.set(finalKey, value, ttl);\n  }\n\n  /**\n   * Delete value from cache with automatic prefix.\n   * Prefix is ALWAYS applied via buildCacheKey().\n   *\n   * @param key - Cache key (will be prefixed automatically)\n   */\n  protected async cacheDelete(key: string): Promise<void> {\n    if (!this.cacheManager) return;\n    const cache = this.cacheManager as CacheManager;\n    const finalKey = this.buildCacheKey(key);\n    await cache.delete(finalKey);\n  }\n\n  /**\n   * Clear all cache for this service (by prefix pattern)\n   */\n  protected async cacheClear(): Promise<void> {\n    if (!this.cacheManager) return;\n    const cache = this.cacheManager as CacheManager;\n    await cache.clear();\n  }\n\n  /**\n   * Check if cache is available\n   */\n  protected get hasCacheManager(): boolean {\n    return !!this.cacheManager;\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Static Helper Methods\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Get cache manager instance from create options.\n   * The cache instance is injected by ServiceRegistry, not created here.\n   *\n   * @param options - Service create options from ServiceRegistry\n   * @returns CacheManager instance or undefined if not available\n   */\n  static getCacheManager(options?: CoreServiceCreateOptions): CacheManager | undefined {\n    // Cache instance is already created/injected by ServiceRegistry\n    return options?.cache?.instance as CacheManager | undefined;\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Observability Helper Methods\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Track a CRUD operation with observability (span + metrics).\n   * Wraps an operation with automatic span creation, duration recording, and error tracking.\n   *\n   * @param operation - Operation name (create, patch, delete, getById, getAll)\n   * @param entityId - Optional entity ID for context\n   * @param fn - The operation function to execute\n   * @returns Result of the operation\n   *\n   * @example\n   * ```typescript\n   * const entity = await this.trackOperation('create', undefined, async () => {\n   *   return await this.repository.create(data);\n   * });\n   * ```\n   */\n  protected async trackOperation<T>(\n    operation:\n      | 'create'\n      | 'patch'\n      | 'delete'\n      | 'getById'\n      | 'getAll'\n      | 'bulkCreate'\n      | 'bulkDelete'\n      | 'transaction',\n    entityId: string | undefined,\n    fn: () => Promise<T>\n  ): Promise<T> {\n    const startTime = Date.now();\n    const spanName = `${this.eventPrefix}.${operation}`;\n\n    return this.withSpan(spanName, async span => {\n      if (entityId) {\n        span.setAttribute('entity.id', entityId);\n      }\n      span.setAttribute('service.name', this.serviceName);\n      span.setAttribute('operation.name', operation);\n\n      try {\n        const result = await fn();\n\n        // Record success metrics\n        const duration = Date.now() - startTime;\n        await this.recordOperationMetrics(operation, duration, true);\n\n        span.setStatus('ok');\n        return result;\n      } catch (error) {\n        // Record error metrics\n        const duration = Date.now() - startTime;\n        await this.recordOperationMetrics(operation, duration, false);\n\n        span.recordException(error as Error);\n        span.setStatus('error', (error as Error).message);\n        throw error;\n      }\n    });\n  }\n\n  /**\n   * Record operation metrics (duration and count).\n   * Called automatically by CRUD methods when observability is enabled.\n   */\n  protected async recordOperationMetrics(\n    operation: string,\n    duration: number,\n    success: boolean\n  ): Promise<void> {\n    if (!this.hasObservability) return;\n\n    const tags = {\n      service: this.serviceName,\n      operation,\n      entity: this.eventPrefix,\n    };\n\n    // Record duration\n    await this.recordMetric(OBSERVABILITY_METRICS.SERVICE_OPERATION_DURATION, duration, tags);\n\n    // Record count\n    await this.incrementCounter(\n      success\n        ? OBSERVABILITY_METRICS.SERVICE_OPERATION_COUNT\n        : OBSERVABILITY_METRICS.SERVICE_OPERATION_ERROR,\n      1,\n      tags\n    );\n  }\n\n  /**\n   * Record cache hit/miss metric.\n   */\n  protected async recordCacheMetric(hit: boolean, operation: string): Promise<void> {\n    if (!this.hasObservability) return;\n\n    const tags = {\n      service: this.serviceName,\n      operation,\n      entity: this.eventPrefix,\n    };\n\n    await this.incrementCounter(\n      hit ? OBSERVABILITY_METRICS.CACHE_HIT : OBSERVABILITY_METRICS.CACHE_MISS,\n      1,\n      tags\n    );\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // File Upload (via @plyaz/storage)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Upload a file to storage.\n   *\n   * Uses storageService.uploadFile() which supports:\n   * - Direct file upload (buffer/stream)\n   * - Template-based document generation + upload (when templateId provided)\n   *\n   * When templateId is provided:\n   * 1. Loads template from templates/{locale}/{category}/{templateId}.md\n   * 2. Renders with Handlebars + templateData\n   * 3. Converts to PDF/DOCX/XLSX\n   * 4. Uploads to storage (R2/Supabase)\n   * 5. Returns URL\n   *\n   * NOTE: In production, generated documents should be linked to entities via\n   * a media table with foreign keys (e.g., campaign_id -> media.entity_id).\n   *\n   * @param params - Upload parameters (supports all UploadParams options)\n   * @returns Promise resolving to upload result with URL\n   * @throws CorePackageError if storage service is not available\n   */\n  async uploadFile(params: Partial<UploadParams>): Promise<UploadResult> {\n    this.assertReady();\n    const startTime = Date.now();\n    const safeParams = params ?? {};\n\n    // 1. Emit uploading event\n    this.emitEvent('upload:uploading', { request: safeParams });\n\n    try {\n      // 2. Lifecycle hook\n      await this.beforeUploadFile?.(safeParams);\n\n      // 3. Check storage service availability\n      if (!this.storageService) {\n        throw new CorePackageError(\n          'Storage service not available. Ensure storage is configured in Core.initialize().',\n          ERROR_CODES.CORE_OPERATION_FAILED,\n          { context: { operation: 'uploadFile' } }\n        );\n      }\n\n      // 4. Upload via storage service\n      // Provide defaults for required fields if not specified\n      const uploadParams: UploadParams = {\n        category: safeParams.category ?? FILE_CATEGORY.DOCUMENT,\n        entityType: safeParams.entityType ?? ENTITY_TYPE.SYSTEM,\n        entityId: safeParams.entityId ?? `${this.eventPrefix}-${Date.now()}`,\n        ...safeParams,\n      } as UploadParams;\n\n      const result = await this.storageService.getStorage().uploadFile(uploadParams);\n\n      // 5. Lifecycle hook\n      await this.afterUploadFile?.(result);\n\n      // 6. Emit uploaded event\n      this.emitEvent('upload:uploaded', { result });\n      this.emitEvent('complete', { success: true, operation: 'uploadFile' });\n\n      await this.recordOperationMetrics('uploadFile', Date.now() - startTime, true);\n      return result;\n    } catch (error) {\n      await this.recordOperationMetrics('uploadFile', Date.now() - startTime, false);\n      this.emitEvent('upload:error', { error });\n      throw error;\n    }\n  }\n\n  /**\n   * Lifecycle hook: called before file upload.\n   * Override in subclass for custom pre-upload logic.\n   */\n  protected async beforeUploadFile?(params: Partial<UploadParams>): Promise<void>;\n\n  /**\n   * Lifecycle hook: called after file upload.\n   * Override in subclass for custom post-upload logic.\n   */\n  protected async afterUploadFile?(result: UploadResult): Promise<void>;\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Bulk File Upload (via @plyaz/storage)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Upload multiple files to storage with concurrency control.\n   *\n   * Uses storageService.uploadMultipleFiles() which:\n   * 1. Processes files in parallel with configurable concurrency\n   * 2. Optionally continues on error (partial success)\n   * 3. Returns results for each file\n   *\n   * @param files - Array of upload parameters for each file\n   * @param options - Bulk upload options (concurrency, continueOnError, useQueue)\n   * @returns Promise resolving to array of upload results\n   * @throws CorePackageError if storage service is not available\n   */\n  async uploadFiles(\n    files: Partial<UploadParams>[],\n    options?: {\n      concurrency?: number;\n      continueOnError?: boolean;\n      useQueue?: boolean;\n    }\n  ): Promise<UploadResult[]> {\n    this.assertReady();\n    const startTime = Date.now();\n\n    // 1. Emit uploading event (using CoreOperationRequestPayload format)\n    this.emitEvent('upload:bulk:uploading', { request: { fileCount: files.length, options } });\n\n    try {\n      // 2. Lifecycle hook\n      await this.beforeUploadFiles?.(files, options);\n\n      // 3. Check storage service availability\n      if (!this.storageService) {\n        throw new CorePackageError(\n          'Storage service not available. Ensure storage is configured in Core.initialize().',\n          ERROR_CODES.CORE_OPERATION_FAILED,\n          { context: { operation: 'uploadFiles' } }\n        );\n      }\n\n      // 4. Prepare upload params with defaults\n      const uploadParamsArray: UploadParams[] = files.map(params => ({\n        category: params.category ?? FILE_CATEGORY.DOCUMENT,\n        entityType: params.entityType ?? ENTITY_TYPE.SYSTEM,\n        entityId: params.entityId ?? `${this.eventPrefix}-${Date.now()}`,\n        ...params,\n      })) as UploadParams[];\n\n      // 5. Upload via storage service\n      const results = await this.storageService\n        .getStorage()\n        .uploadMultipleFiles(uploadParamsArray, options);\n\n      // 6. Lifecycle hook\n      await this.afterUploadFiles?.(results);\n\n      // 7. Emit uploaded event (using CoreOperationResultPayload format)\n      this.emitEvent('upload:bulk:uploaded', {\n        result: {\n          results,\n          summary: {\n            total: files.length,\n            succeeded: results.length,\n            failed: files.length - results.length,\n          },\n        },\n      });\n      this.emitEvent('complete', { success: true, operation: 'uploadFiles' });\n\n      await this.recordOperationMetrics('uploadFiles', Date.now() - startTime, true);\n      return results;\n    } catch (error) {\n      await this.recordOperationMetrics('uploadFiles', Date.now() - startTime, false);\n      this.emitEvent('upload:bulk:error', { error });\n      throw error;\n    }\n  }\n\n  /**\n   * Lifecycle hook: called before bulk file upload.\n   * Override in subclass for custom pre-upload logic.\n   */\n  protected async beforeUploadFiles?(\n    files: Partial<UploadParams>[],\n    options?: { concurrency?: number; continueOnError?: boolean; useQueue?: boolean }\n  ): Promise<void>;\n\n  /**\n   * Lifecycle hook: called after bulk file upload.\n   * Override in subclass for custom post-upload logic.\n   */\n  protected async afterUploadFiles?(results: UploadResult[]): Promise<void>;\n\n  /**\n   * Check if storage service is available.\n   */\n  protected get hasStorage(): boolean {\n    return !!this.storageService;\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Document Generation (via @plyaz/storage)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Generate a document from template (NO upload - returns Buffer).\n   *\n   * Uses storageService.generateFile() which:\n   * 1. Loads template from templates/{locale}/{category}/{templateId}.md\n   * 2. Renders with Handlebars + templateData\n   * 3. Converts to PDF/DOCX/XLSX\n   * 4. Returns Buffer (caller handles the buffer)\n   *\n   * For generation WITH upload, use uploadFile() with templateId instead.\n   *\n   * @param params - Generation parameters (templateId, templateData, outputFormat, etc.)\n   * @returns Promise resolving to generated document Buffer\n   * @throws CorePackageError if storage service is not available\n   */\n  async generateFile(params: Partial<GenerateFileParams>): Promise<Buffer> {\n    this.assertReady();\n    const startTime = Date.now();\n\n    // 1. Emit generating event\n    this.emitEvent('document:generating', { request: params });\n\n    try {\n      // 2. Lifecycle hook\n      await this.beforeGenerateFile?.(params);\n\n      // 3. Check storage service availability\n      if (!this.storageService) {\n        throw new CorePackageError(\n          'Storage service not available. Ensure storage is configured in Core.initialize().',\n          ERROR_CODES.CORE_OPERATION_FAILED,\n          { context: { operation: 'generateFile' } }\n        );\n      }\n\n      // 4. Generate document via storage template engine\n      const generateParams: GenerateFileParams = {\n        templateId: params.templateId ?? '',\n        templateData: params.templateData ?? {},\n        ...params,\n      } as GenerateFileParams;\n\n      const buffer = await this.storageService.getStorage().generateFile(generateParams);\n\n      // 5. Lifecycle hook\n      await this.afterGenerateFile?.(buffer);\n\n      // 6. Emit generated event\n      this.emitEvent('document:generated', { result: { size: buffer.length } });\n      this.emitEvent('complete', { success: true, operation: 'generateFile' });\n\n      await this.recordOperationMetrics('generateFile', Date.now() - startTime, true);\n      return buffer;\n    } catch (error) {\n      await this.recordOperationMetrics('generateFile', Date.now() - startTime, false);\n      this.emitEvent('document:error', { error });\n      throw error;\n    }\n  }\n\n  /**\n   * Lifecycle hook: called before document generation.\n   * Override in subclass for custom pre-generation logic.\n   */\n  protected async beforeGenerateFile?(params: Partial<GenerateFileParams>): Promise<void>;\n\n  /**\n   * Lifecycle hook: called after document generation.\n   * Override in subclass for custom post-generation logic.\n   */\n  protected async afterGenerateFile?(buffer: Buffer): Promise<void>;\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Email Sending (via @plyaz/notifications)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Send an email using notification templates.\n   *\n   * Uses notificationsService.sendEmail() which:\n   * 1. Loads template from templates/{locale}/email/{templateId}.md\n   * 2. Parses frontmatter (subject, layout, etc.)\n   * 3. Renders Markdown to HTML with templateData\n   * 4. Inlines CSS for email clients\n   * 5. Sends via configured provider (Infobip/SendGrid)\n   *\n   * NOTE: In production, sent emails should be tracked in a notifications\n   * table with foreign keys (e.g., campaign_id -> notifications.entity_id).\n   *\n   * @param params - Email parameters (to, templateId, templateData, etc.)\n   * @returns Promise resolving to send result\n   * @throws CorePackageError if notifications service is not available\n   */\n  // eslint-disable-next-line complexity\n  async sendEmail(\n    params: Partial<SendEmailParams>\n  ): Promise<NotificationResult<NotificationResponse>> {\n    this.assertReady();\n    const startTime = Date.now();\n\n    // 1. Emit sending event\n    this.emitEvent('email:sending', { request: params });\n\n    try {\n      // 2. Lifecycle hook\n      await this.beforeSendEmail?.(params);\n\n      // 3. Check notifications service availability\n      if (!this.notificationsService) {\n        throw new CorePackageError(\n          'Notification service not available. Ensure notifications is configured in Core.initialize().',\n          ERROR_CODES.CORE_OPERATION_FAILED,\n          { context: { operation: 'sendEmail' } }\n        );\n      }\n\n      // 4. Send email via notifications service\n      const emailParams: SendEmailParams = {\n        recipientId: params.recipientId ?? 'anonymous',\n        to: params.to ?? '',\n        templateId: params.templateId ?? '',\n        templateData: params.templateData ?? {},\n        locale: params.locale ?? 'en',\n        ...params,\n      } as SendEmailParams;\n\n      const result = await this.notificationsService.getNotifications().sendEmail(emailParams);\n\n      // 5. Lifecycle hook\n      await this.afterSendEmail?.(result);\n\n      // 6. Emit sent event\n      this.emitEvent('email:sent', { result });\n      this.emitEvent('complete', { success: true, operation: 'sendEmail' });\n\n      await this.recordOperationMetrics('sendEmail', Date.now() - startTime, true);\n      return result;\n    } catch (error) {\n      await this.recordOperationMetrics('sendEmail', Date.now() - startTime, false);\n      this.emitEvent('email:error', { error });\n      throw error;\n    }\n  }\n\n  /**\n   * Lifecycle hook: called before email sending.\n   * Override in subclass for custom pre-send logic.\n   */\n  protected async beforeSendEmail?(params: Partial<SendEmailParams>): Promise<void>;\n\n  /**\n   * Lifecycle hook: called after email sending.\n   * Override in subclass for custom post-send logic.\n   */\n  protected async afterSendEmail?(result: NotificationResult<NotificationResponse>): Promise<void>;\n\n  /**\n   * Check if notifications service is available.\n   */\n  protected get hasNotifications(): boolean {\n    return !!this.notificationsService;\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Real-Time Streaming (via StreamRegistry/StreamBroadcaster)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Check if stream server/broadcaster is available.\n   * The stream server must be initialized via StreamRegistry.initialize().\n   */\n  protected get hasStreamServer(): boolean {\n    return StreamRegistry.isInitialized();\n  }\n\n  /**\n   * Emit a custom stream event to connected clients.\n   *\n   * Use this for domain-specific events that aren't covered by the standard\n   * progress methods. The event is broadcast to the specified channel.\n   *\n   * @param channel - Channel to broadcast to (e.g., 'notifications', 'orders:123')\n   * @param event - Event name (e.g., 'order:status_changed')\n   * @param data - Event payload data\n   *\n   * @example\n   * ```typescript\n   * // Emit order status change\n   * this.emitStreamEvent(\n   *   `order:${orderId}`,\n   *   'order:status_changed',\n   *   { orderId, status: 'shipped', trackingNumber: '123ABC' }\n   * );\n   * ```\n   */\n  protected emitStreamEvent<T = unknown>(\n    channel: StreamChannel | string,\n    event: string,\n    data: T\n  ): void {\n    if (!this.hasStreamServer) {\n      this.logDebug('Stream server not available, skipping stream event emission', {\n        channel,\n        event,\n      });\n      return;\n    }\n\n    try {\n      const broadcaster = StreamRegistry.getBroadcaster();\n      broadcaster.broadcastToChannel(channel as StreamChannel, {\n        event,\n        data,\n      });\n      this.logDebug('Emitted stream event', { channel, event });\n    } catch (error) {\n      this.logWarn('Failed to emit stream event', {\n        channel,\n        event,\n        error: error instanceof Error ? error.message : String(error),\n      });\n    }\n  }\n\n  /**\n   * Emit an entity-specific stream event.\n   * Convenience method that constructs the channel from entity type and ID.\n   *\n   * @param entityType - Entity type (e.g., 'order', 'invoice', 'user')\n   * @param entityId - Entity ID\n   * @param event - Event name (e.g., 'updated', 'deleted')\n   * @param data - Event payload data\n   *\n   * @example\n   * ```typescript\n   * // Emit when an order is updated\n   * this.emitEntityStreamEvent('order', orderId, 'updated', { status: 'completed' });\n   * // Broadcasts to channel: 'order:abc123' with event: 'order:updated'\n   * ```\n   */\n  protected emitEntityStreamEvent<T = unknown>(\n    entityType: string,\n    entityId: string,\n    event: string,\n    data: T\n  ): void {\n    const channel = `${entityType}:${entityId}` as StreamChannel;\n    const fullEvent = `${entityType}:${event}`;\n    this.emitStreamEvent(channel, fullEvent, data);\n  }\n}\n","/**\n * Base Mapper\n *\n * Abstract base class for domain mappers handling data transformation.\n * Supports all HTTP operations with corresponding mapping methods.\n *\n * Mapping concerns:\n * - Request mapping (domain → API DTO for POST, PUT, PATCH, DELETE)\n * - Response mapping (API DTO → domain)\n * - Store mapping (domain ↔ Zustand state)\n * - Query mapping (filters → query params)\n *\n * Note: Validation is handled by BaseValidator, not here.\n *\n * @example\n * ```typescript\n * class ExampleMapper extends BaseMapper<\n *   ExampleEntity,      // Domain model\n *   ExampleResponseDTO, // API response\n *   CreateExampleDTO,   // POST body\n *   UpdateExampleDTO,   // PUT body\n *   PatchExampleDTO,    // PATCH body\n *   QueryExampleDTO,    // GET params\n *   ExampleStoreItem    // Store state\n * > {\n *   toDomain(dto) { ... }\n *   toCreateDTO(data) { ... }\n *   // ... implement needed methods\n * }\n * ```\n */\n// Import for local use\nimport type { CoreBaseMapperInstance } from '@plyaz/types/core';\n\n/**\n * Abstract base mapper with default implementations\n *\n * Required to implement:\n * - toDomain(dto): Convert API response to domain model\n *\n * Optional to implement (based on your needs):\n * - toCreateDTO(data): For POST requests\n * - toUpdateDTO(data): For PUT requests\n * - toPatchDTO(data): For PATCH requests\n * - toQueryDTO(filters): For GET query params\n * - toStoreState(domain): Custom store state shape\n * - fromStoreState(state): Restore domain from store\n */\nexport abstract class BaseMapper<\n  TDomain,\n  TResponseDTO,\n  TCreateDTO = unknown,\n  TUpdateDTO = TCreateDTO,\n  TPatchDTO = Partial<TCreateDTO>,\n  TQueryDTO = unknown,\n  TStoreState = TDomain,\n> implements\n    CoreBaseMapperInstance<\n      TDomain,\n      TResponseDTO,\n      TCreateDTO,\n      TUpdateDTO,\n      TPatchDTO,\n      TQueryDTO,\n      TStoreState\n    >\n{\n  // ─────────────────────────────────────────────────────────────────\n  // Abstract methods - must be implemented\n  // ─────────────────────────────────────────────────────────────────\n\n  /**\n   * Convert API response DTO to domain model\n   * Handle snake_case → camelCase, add computed properties\n   */\n  abstract toDomain(dto: TResponseDTO): TDomain;\n\n  // ─────────────────────────────────────────────────────────────────\n  // Request Mapping - override as needed\n  // ─────────────────────────────────────────────────────────────────\n\n  /**\n   * Convert domain data to create DTO (POST body)\n   * Handle camelCase → snake_case, pick required fields\n   */\n  toCreateDTO?(data: Partial<TDomain>): TCreateDTO;\n\n  /**\n   * Convert domain data to update DTO (PUT body - full replacement)\n   * Default: same as toCreateDTO\n   */\n  toUpdateDTO?(data: Partial<TDomain>): TUpdateDTO;\n\n  /**\n   * Convert domain data to patch DTO (PATCH body - partial)\n   * Default: picks only defined fields\n   */\n  toPatchDTO?(data: Partial<TDomain>): TPatchDTO;\n\n  /**\n   * Convert filter object to query params DTO (GET)\n   * Handle pagination, sorting, filtering\n   */\n  toQueryDTO?(filters: Partial<TQueryDTO>): TQueryDTO;\n\n  // ─────────────────────────────────────────────────────────────────\n  // Response Mapping - default implementations\n  // ─────────────────────────────────────────────────────────────────\n\n  /**\n   * Convert database row/repository result to response DTO\n   * Override to map repository output to API response format\n   * Useful when repository returns different format than API expects\n   */\n  toResponseDTO?(row: unknown): TResponseDTO;\n\n  /**\n   * Map array of DTOs to domain models\n   */\n  toDomainList(dtos: TResponseDTO[]): TDomain[] {\n    return dtos.map(dto => this.toDomain(dto));\n  }\n\n  // ─────────────────────────────────────────────────────────────────\n  // Store Mapping - default implementations\n  // ─────────────────────────────────────────────────────────────────\n\n  /**\n   * Convert domain model to store state (serializable)\n   * Default: strips functions, keeps data\n   */\n  toStoreState(domain: TDomain): TStoreState {\n    const state = {} as Record<string, unknown>;\n    for (const [key, value] of Object.entries(domain as Record<string, unknown>)) {\n      if (typeof value !== 'function') {\n        // Convert Date to ISO string for serialization\n        if (value instanceof Date) {\n          state[key] = value.toISOString();\n        } else {\n          state[key] = value;\n        }\n      }\n    }\n    return state as TStoreState;\n  }\n\n  /**\n   * Convert array of domain models to aggregated store state\n   * Override to customize how multiple items map to store\n   * Default: returns array of individual store states (as Partial since shape may differ)\n   */\n  toStoreStateList?(domains: TDomain[]): Partial<TStoreState> {\n    // Default: map each domain to store state and return as array\n    // Subclasses should override for custom aggregation (e.g., flags → Record<key, value>)\n    return domains.map(d => this.toStoreState(d)) as unknown as Partial<TStoreState>;\n  }\n\n  /**\n   * Restore domain model from store state\n   * Override to restore computed properties/methods\n   */\n  fromStoreState(state: TStoreState): TDomain {\n    return state as unknown as TDomain;\n  }\n}\n","/**\n * Base Validator\n *\n * Abstract base class for domain validators.\n * Handles validation AND sanitization using Zod schemas from @plyaz/types.\n *\n * Supports all HTTP operations:\n * - create (POST)\n * - update (PUT - full replacement)\n * - patch (PATCH - partial update)\n * - delete (DELETE with options)\n * - query (GET params)\n *\n * @example\n * ```typescript\n * import { CreateExampleSchema, PatchExampleSchema } from '@plyaz/types/examples';\n *\n * class ExampleValidator extends BaseValidator<\n *   CreateExampleDTO,   // create\n *   UpdateExampleDTO,   // update (full)\n *   PatchExampleDTO,    // patch (partial)\n *   DeleteExampleDTO,   // delete options\n *   QueryExampleDTO     // query params\n * > {\n *   constructor() {\n *     super({\n *       createSchema: CreateExampleSchema,\n *       patchSchema: PatchExampleSchema,\n *       // ... other schemas\n *     });\n *   }\n * }\n * ```\n */\n\nimport { ValidateAndFormatErrors, ValidationError } from '@plyaz/errors';\nimport type {\n  ValidationIssue,\n  BaseErrorContext,\n  InternalValidationSchema,\n} from '@plyaz/types/errors';\nimport { API_ERROR_CODES } from '@plyaz/types/errors';\nimport { HTTP_STATUS } from '@plyaz/config';\nimport type {\n  CoreValidationResult,\n  CoreValidatorConfig,\n  CoreBaseValidatorInstance,\n} from '@plyaz/types/core';\n\n/**\n * Abstract base validator with default implementations\n */\nexport abstract class BaseValidator<\n  TCreate = unknown,\n  TUpdate = TCreate,\n  TPatch = Partial<TCreate>,\n  TDelete = unknown,\n  TQuery = unknown,\n> implements CoreBaseValidatorInstance<TCreate, TUpdate, TPatch, TDelete, TQuery>\n{\n  protected readonly config: CoreValidatorConfig<TCreate, TUpdate, TPatch, TDelete, TQuery>;\n\n  constructor(config: CoreValidatorConfig<TCreate, TUpdate, TPatch, TDelete, TQuery> = {}) {\n    this.config = config;\n  }\n\n  // ─────────────────────────────────────────────────────────────────\n  // Validation Methods (return ValidationResult)\n  // ─────────────────────────────────────────────────────────────────\n\n  /**\n   * Validate data for create operation (POST)\n   */\n  validateCreate(data: unknown): CoreValidationResult<TCreate> {\n    if (!this.config.createSchema) {\n      return { success: true, data: data as TCreate };\n    }\n    return this.validate(data, this.config.createSchema);\n  }\n\n  /**\n   * Validate data for full update operation (PUT)\n   */\n  validateUpdate(data: unknown): CoreValidationResult<TUpdate> {\n    if (!this.config.updateSchema) {\n      return { success: true, data: data as TUpdate };\n    }\n    return this.validate(data, this.config.updateSchema);\n  }\n\n  /**\n   * Validate data for partial update operation (PATCH)\n   */\n  validatePatch(data: unknown): CoreValidationResult<TPatch> {\n    if (!this.config.patchSchema) {\n      return { success: true, data: data as TPatch };\n    }\n    return this.validate(data, this.config.patchSchema);\n  }\n\n  /**\n   * Validate data for delete operation (DELETE with options)\n   */\n  validateDelete(data: unknown): CoreValidationResult<TDelete> {\n    if (!this.config.deleteSchema) {\n      return { success: true, data: data as TDelete };\n    }\n    return this.validate(data, this.config.deleteSchema);\n  }\n\n  /**\n   * Validate query parameters (GET list)\n   */\n  validateQuery(data: unknown): CoreValidationResult<TQuery> {\n    if (!this.config.querySchema) {\n      return { success: true, data: data as TQuery };\n    }\n    return this.validate(data, this.config.querySchema);\n  }\n\n  // ─────────────────────────────────────────────────────────────────\n  // OrThrow Methods (throw ValidationError on failure)\n  // ─────────────────────────────────────────────────────────────────\n\n  /**\n   * Validate and throw if invalid (for create)\n   * @throws ValidationError[] (array) if validation fails\n   */\n  validateCreateOrThrow(data: unknown): TCreate {\n    const result = this.validateCreate(data);\n    if (!result.success && result.errors) {\n      const validationErrors = this.toValidationErrorArray(result.errors);\n      if (validationErrors.length > 0) {\n        throw validationErrors; // Throw array of errors\n      }\n    }\n    return result.data!;\n  }\n\n  /**\n   * Validate and throw if invalid (for update)\n   * @throws ValidationError[] (array) if validation fails\n   */\n  validateUpdateOrThrow(data: unknown): TUpdate {\n    const result = this.validateUpdate(data);\n    if (!result.success && result.errors) {\n      const validationErrors = this.toValidationErrorArray(result.errors);\n      if (validationErrors.length > 0) {\n        throw validationErrors; // Throw array of errors\n      }\n    }\n    return result.data!;\n  }\n\n  /**\n   * Validate and throw if invalid (for patch)\n   * @throws ValidationError[] (array) if validation fails\n   */\n  validatePatchOrThrow(data: unknown): TPatch {\n    const result = this.validatePatch(data);\n    if (!result.success && result.errors) {\n      const validationErrors = this.toValidationErrorArray(result.errors);\n      if (validationErrors.length > 0) {\n        throw validationErrors; // Throw array of errors\n      }\n    }\n    return result.data!;\n  }\n\n  /**\n   * Validate and throw if invalid (for delete)\n   * @throws ValidationError[] (array) if validation fails\n   */\n  validateDeleteOrThrow(data: unknown): TDelete {\n    const result = this.validateDelete(data);\n    if (!result.success && result.errors) {\n      const validationErrors = this.toValidationErrorArray(result.errors);\n      if (validationErrors.length > 0) {\n        throw validationErrors; // Throw array of errors\n      }\n    }\n    return result.data!;\n  }\n\n  /**\n   * Validate and throw if invalid (for query)\n   * @throws ValidationError[] (array) if validation fails\n   */\n  validateQueryOrThrow(data: unknown): TQuery {\n    const result = this.validateQuery(data);\n    if (!result.success && result.errors) {\n      const validationErrors = this.toValidationErrorArray(result.errors);\n      if (validationErrors.length > 0) {\n        throw validationErrors; // Throw array of errors\n      }\n    }\n    return result.data!;\n  }\n\n  // ─────────────────────────────────────────────────────────────────\n  // Protected Methods\n  // ─────────────────────────────────────────────────────────────────\n\n  /**\n   * Internal validation using ValidateAndFormatErrors from @plyaz/errors\n   * This handles both validation AND sanitization (via Zod transforms)\n   */\n  protected validate<T>(\n    data: unknown,\n    schema: InternalValidationSchema<T>\n  ): CoreValidationResult<T> {\n    const result = ValidateAndFormatErrors(schema, data);\n\n    if (!result.success) {\n      return {\n        success: false,\n        errors: result.errors,\n      };\n    }\n\n    return {\n      success: true,\n      data: result.data as T,\n    };\n  }\n\n  /**\n   * Convert ValidationIssue[] to array of ValidationError objects\n   * Each validation issue becomes a separate ValidationError\n   */\n  protected toValidationErrorArray(issues?: ValidationIssue[]): ValidationError[] {\n    if (!issues || issues.length === 0) {\n      return [];\n    }\n\n    return issues.map(issue => {\n      const field = issue.path.join('.');\n      return new ValidationError(\n        API_ERROR_CODES.VALIDATION_FAILED,\n        HTTP_STATUS.BAD_REQUEST,\n        issue.message,\n        {\n          field,\n          path: issue.path,\n          code: issue.code,\n        }\n      );\n    });\n  }\n\n  /**\n   * Convert ValidationIssue[] to BaseErrorContext (legacy)\n   * @deprecated Use toValidationErrorArray instead\n   */\n  protected toErrorContext(issues?: ValidationIssue[]): BaseErrorContext {\n    if (!issues || issues.length === 0) {\n      return {};\n    }\n    return {\n      errors: issues.map(issue => ({\n        errorCode: issue.code,\n        message: issue.message,\n        field: issue.path.join('.'),\n        context: {\n          path: issue.path,\n        },\n      })),\n    };\n  }\n}\n","/**\n * Mapper Utility Functions\n *\n * Common utilities for data transformation in mappers.\n */\n\n/**\n * Convert snake_case to camelCase\n */\nexport function snakeToCamel(str: string): string {\n  return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n}\n\n/**\n * Convert camelCase to snake_case\n */\nexport function camelToSnake(str: string): string {\n  return str.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);\n}\n\n/**\n * Parse ISO date string to Date object\n */\nexport function parseDate(dateString: string | null | undefined): Date | null {\n  if (!dateString) return null;\n  const date = new Date(dateString);\n  return isNaN(date.getTime()) ? null : date;\n}\n\n/**\n * Format Date to ISO string for API\n */\nexport function formatDate(date: Date | null | undefined): string | null {\n  return date?.toISOString() ?? null;\n}\n\n/**\n * Trim string if defined\n */\nexport function trimString(str: string | undefined): string | undefined {\n  return str?.trim();\n}\n\n/**\n * Pick only defined values from object (for PATCH requests)\n */\nexport function pickDefined<T extends Record<string, unknown>>(obj: T): Partial<T> {\n  const result: Partial<T> = {};\n  for (const [key, value] of Object.entries(obj)) {\n    if (value !== undefined) {\n      (result as Record<string, unknown>)[key] = value;\n    }\n  }\n  return result;\n}\n\n/**\n * Convert object keys from snake_case to camelCase\n */\nexport function keysToCamel<T extends Record<string, unknown>>(obj: T): Record<string, unknown> {\n  const result: Record<string, unknown> = {};\n  for (const [key, value] of Object.entries(obj)) {\n    result[snakeToCamel(key)] = value;\n  }\n  return result;\n}\n\n/**\n * Convert object keys from camelCase to snake_case\n */\nexport function keysToSnake<T extends Record<string, unknown>>(obj: T): Record<string, unknown> {\n  const result: Record<string, unknown> = {};\n  for (const [key, value] of Object.entries(obj)) {\n    result[camelToSnake(key)] = value;\n  }\n  return result;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Nullable/Optional Conversion Helpers\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Map nullable DB field to optional response field.\n * Converts null/undefined to undefined for API responses.\n */\nexport function toOptional<T>(value: T | null | undefined): T | undefined {\n  return value ?? undefined;\n}\n\n/**\n * Map optional entity value to nullable DB field.\n * Converts undefined to null for database storage.\n */\nexport function toNullable<T>(value: T | undefined): T | null {\n  return value ?? null;\n}\n\n/**\n * Map optional Date to nullable ISO string for DB storage.\n * Converts Date to ISO string, undefined to null.\n */\nexport function dateToNullable(value: Date | undefined): string | null {\n  return value?.toISOString() ?? null;\n}\n\n/**\n * Get field value from object supporting both snake_case and camelCase keys.\n * Useful for mappers that need to handle responses in either format.\n * Prefers camelCase if both exist.\n */\nexport function getField<T>(\n  data: Record<string, unknown>,\n  snakeKey: string,\n  camelKey: string\n): T | undefined {\n  return (data[camelKey] ?? data[snakeKey]) as T | undefined;\n}\n\n/**\n * Parse date from either string or Date, handling both formats.\n * Returns undefined for invalid dates.\n */\nexport function parseDateSafe(value: unknown): Date | undefined {\n  if (!value) return undefined;\n  if (value instanceof Date) return isNaN(value.getTime()) ? undefined : value;\n  const date = new Date(value as string);\n  return isNaN(date.getTime()) ? undefined : date;\n}\n","/**\n * Base Domain Exports\n */\n// Domain Service Base Classes\nexport { BaseDomainService } from './BaseDomainService';\nexport { BaseFrontendDomainService } from './BaseFrontendDomainService';\nexport { BaseBackendDomainService } from './BaseBackendDomainService';\n\n// Mapper (data transformation only)\nexport { BaseMapper } from './BaseMapper';\n\n// Validator (validation + sanitization)\nexport { BaseValidator } from './BaseValidator';\n\n// Re-export mapper utils\nexport * from '../../utils/mapperUtils';\n","/**\n * Example Mapper\n *\n * Demonstrates extending BaseMapper for a domain entity.\n * Uses types from @plyaz/types/examples.\n *\n * Note: Validation is handled by ExampleValidator, not here.\n */\n\nimport { PAGE_SIZES } from '@plyaz/config';\nimport { BaseMapper, trimString } from '../../base';\nimport { getField, parseDateSafe } from '../../../utils/mapperUtils';\nimport type {\n  ExampleEntity,\n  ExampleResponseDTO,\n  ExampleStoreItem,\n  CreateExampleDTO,\n  UpdateExampleDTO,\n  PatchExampleDTO,\n  QueryExampleDTO,\n} from '@plyaz/types/examples';\n\n/** Default pagination values */\nconst PAGINATION_DEFAULTS = {\n  PAGE: 1,\n  LIMIT: PAGE_SIZES.MEDIUM,\n} as const;\n\n/**\n * Example Mapper implementation\n *\n * Supports:\n * - toDomain: API response → Domain\n * - toCreateDTO: Domain → POST body\n * - toPatchDTO: Domain → PATCH body\n * - toStoreState: Domain → Zustand store\n */\nclass ExampleMapperClass extends BaseMapper<\n  ExampleEntity,\n  ExampleResponseDTO,\n  CreateExampleDTO,\n  UpdateExampleDTO,\n  PatchExampleDTO,\n  QueryExampleDTO,\n  ExampleStoreItem\n> {\n  /**\n   * API DTO → Domain Model\n   * Handles both snake_case (DTO) and camelCase (Entity) input formats\n   */\n  toDomain(dto: ExampleResponseDTO | ExampleEntity): ExampleEntity {\n    const data = dto as unknown as Record<string, unknown>;\n\n    return {\n      id: dto.id,\n      name: dto.name,\n      description: dto.description,\n      ownerId: getField<string>(data, 'owner_id', 'ownerId') ?? '',\n      status: dto.status,\n      amount: dto.amount,\n      isVisible: getField<boolean>(data, 'is_visible', 'isVisible') ?? false,\n      createdAt: parseDateSafe(getField(data, 'created_at', 'createdAt')) ?? new Date(),\n      updatedAt: parseDateSafe(getField(data, 'updated_at', 'updatedAt')) ?? new Date(),\n\n      // Computed properties\n      isActive: dto.status === 'active',\n      hasDescription: () => Boolean(dto.description),\n    };\n  }\n\n  /**\n   * Domain data → Create DTO (POST body)\n   */\n  toCreateDTO(data: Partial<ExampleEntity>): CreateExampleDTO {\n    return {\n      name: trimString(data.name) ?? '',\n      amount: data.amount ?? 0,\n      description: data.description ?? '',\n      is_visible: data.isVisible ?? true,\n    };\n  }\n\n  /**\n   * Domain data → Update DTO (PUT body - full)\n   */\n  toUpdateDTO(data: Partial<ExampleEntity>): UpdateExampleDTO {\n    return this.toCreateDTO(data);\n  }\n\n  /**\n   * Domain data → Patch DTO (PATCH body - partial)\n   */\n  toPatchDTO(data: Partial<ExampleEntity>): PatchExampleDTO {\n    const dto: PatchExampleDTO = {};\n\n    if (data.name !== undefined) {\n      dto.name = trimString(data.name);\n    }\n    if (data.amount !== undefined) {\n      dto.amount = data.amount;\n    }\n    if (data.description !== undefined) {\n      dto.description = data.description ?? undefined;\n    }\n    if (data.isVisible !== undefined) {\n      dto.is_visible = data.isVisible;\n    }\n\n    return dto;\n  }\n\n  /**\n   * Filters → Query params DTO (GET)\n   */\n  toQueryDTO(filters: Partial<QueryExampleDTO>): QueryExampleDTO {\n    return {\n      page: filters.page ?? PAGINATION_DEFAULTS.PAGE,\n      limit: filters.limit ?? PAGINATION_DEFAULTS.LIMIT,\n      sort_by: filters.sort_by ?? 'created_at',\n      sort_order: filters.sort_order ?? 'desc',\n      status: filters.status,\n      is_visible: filters.is_visible,\n      min_amount: filters.min_amount,\n      max_amount: filters.max_amount,\n      search: filters.search,\n    };\n  }\n\n  /**\n   * Domain → Store state (serializable)\n   */\n  toStoreState(domain: ExampleEntity): ExampleStoreItem {\n    return {\n      id: domain.id,\n      name: domain.name,\n      description: domain.description,\n      ownerId: domain.ownerId,\n      status: domain.status,\n      amount: domain.amount,\n      isVisible: domain.isVisible,\n      createdAt: domain.createdAt.toISOString(),\n      updatedAt: domain.updatedAt.toISOString(),\n      isActive: domain.isActive,\n      isSelected: false,\n    };\n  }\n\n  /**\n   * Store state → Domain (restore computed props)\n   */\n  fromStoreState(state: ExampleStoreItem): ExampleEntity {\n    return {\n      id: state.id,\n      name: state.name,\n      description: state.description,\n      ownerId: state.ownerId,\n      status: state.status,\n      amount: state.amount,\n      isVisible: state.isVisible,\n      createdAt: new Date(state.createdAt),\n      updatedAt: new Date(state.updatedAt),\n      isActive: state.isActive,\n      hasDescription: () => Boolean(state.description),\n    };\n  }\n\n  /**\n   * Database row → Response DTO\n   * Maps repository output to API response format\n   */\n  toResponseDTO(row: {\n    id: string;\n    name: string;\n    description: string | null;\n    amount: number;\n    owner_id: string;\n    status: string;\n    is_visible: boolean;\n    created_at: string;\n    updated_at: string;\n  }): ExampleResponseDTO {\n    return {\n      id: row.id,\n      name: row.name,\n      description: row.description,\n      amount: row.amount,\n      owner_id: row.owner_id,\n      status: row.status as 'draft' | 'active' | 'archived',\n      is_visible: row.is_visible,\n      created_at: row.created_at,\n      updated_at: row.updated_at,\n    };\n  }\n}\n\n// Export class for BaseDomainService.MapperClass\nexport { ExampleMapperClass };\n\n// Singleton instance (for direct usage)\nexport const ExampleMapper = new ExampleMapperClass();\n","/**\n * Example Frontend Service\n *\n * Demonstrates extending BaseFrontendDomainService which provides:\n * - Automatic CRUD operations (fetchAll, fetchById, create, update, delete)\n * - Store integration (Zustand-compatible)\n * - Error handling with @plyaz/errors\n * - Event emission and subscription\n * - Loading/error state management\n * - Automatic DTO validation and mapping via validator and mapper\n *\n * This service only needs to:\n * - Set eventPrefix for event emission\n * - Add any custom domain methods (e.g., polling)\n * - Override lifecycle hooks if needed\n *\n * All standard CRUD operations are inherited:\n * - fetchAll(query?) - Inherited from BaseFrontendDomainService\n * - fetchById(id) - Inherited from BaseFrontendDomainService\n * - create(data) - Inherited from BaseFrontendDomainService\n * - update(id, data) - Inherited from BaseFrontendDomainService\n * - delete(id) - Inherited from BaseFrontendDomainService\n *\n * Runtime: Frontend only (Browser/React/Next.js)\n *\n * @example\n * ```tsx\n * // Service automatically gets stores via ServiceRegistry injection\n * const service = await ServiceRegistry.getAsync<FrontendExampleDomainService>('example');\n *\n * // Or create directly (stores injected if configured)\n * const service = new FrontendExampleDomainService({\n *   enabled: true,\n *   apiBasePath: '/api/examples',\n * });\n *\n * // Use inherited CRUD methods\n * const items = await service.fetchAll();\n * const activeItems = await service.fetchAll({ status: 'active' });\n * const item = await service.create({ name: 'Test', amount: 100 });\n * const updated = await service.update(item.id, { amount: 200 });\n * await service.delete(item.id);\n * ```\n */\n\nimport { STORE_KEYS } from '@plyaz/store';\nimport { CorePackageError } from '@plyaz/errors';\nimport { ERROR_CODES } from '@plyaz/types';\nimport { SERVICE_KEYS } from '@plyaz/types/core';\nimport type {\n  ExampleEntity,\n  ExampleResponseDTO,\n  CreateExampleDTO,\n  PatchExampleDTO,\n  QueryExampleDTO,\n  ExampleStoreItem,\n  ExampleSendEmailResult,\n} from '@plyaz/types/examples';\nimport { BaseFrontendDomainService } from '../base/BaseFrontendDomainService';\nimport { CoreEventManager } from '../../events/CoreEventManager';\nimport { ExampleMapperClass } from './mappers/ExampleMapper';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Store/Config/Event Types - Re-exported from @plyaz/types\n// ─────────────────────────────────────────────────────────────────────────────\n\n// Re-export types from @plyaz/types\nexport type {\n  ExampleFrontendStoreData,\n  ExampleFrontendStoreSlice,\n  ExampleFrontendServiceConfig,\n  ExampleFrontendEventType,\n} from '@plyaz/types/examples';\n\n// Import for local use\nimport type {\n  ExampleFrontendStoreData,\n  ExampleFrontendStoreSlice,\n  ExampleFrontendServiceConfig as _ExampleFrontendServiceConfig,\n  ExampleFrontendEventType,\n} from '@plyaz/types/examples';\nimport type { CoreServiceCreateOptions } from '@plyaz/types/core';\nimport type { CoreBaseValidatorInstance } from '@plyaz/types/core';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Service\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Example Frontend Service\n *\n * Extends BaseFrontendDomainService with all generic types:\n * - TConfig: ExampleFrontendServiceConfig\n * - TStore: ExampleFrontendStoreSlice\n * - TData: ExampleFrontendStoreData\n * - TEntity: ExampleEntity\n * - TResponseDTO: ExampleResponseDTO\n * - TCreateDTO: CreateExampleDTO\n * - TPatchDTO: PatchExampleDTO\n * - TQueryDTO: QueryExampleDTO\n * - TStoreState: ExampleStoreItem\n * - TMapper: ExampleMapper\n *\n * All CRUD methods are inherited from base class - no need to implement!\n */\nexport class FrontendExampleDomainService extends BaseFrontendDomainService<\n  _ExampleFrontendServiceConfig,\n  ExampleFrontendStoreSlice,\n  ExampleFrontendStoreData,\n  ExampleEntity,\n  ExampleResponseDTO,\n  CreateExampleDTO,\n  PatchExampleDTO,\n  QueryExampleDTO,\n  ExampleStoreItem,\n  InstanceType<typeof ExampleMapperClass>,\n  CoreBaseValidatorInstance,\n  void // TDeleteResult - delete returns void (no response body)\n> {\n  // ─────────────────────────────────────────────────────────────────────────\n  // Required Properties\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Event prefix for all events emitted by this service\n   * Required by BaseFrontendDomainService\n   */\n  protected eventPrefix = 'example';\n\n  /**\n   * Read-only store keys - inherits error and featureFlags from base\n   * No need to redeclare them - they're always included by default\n   */\n  // protected readStoreKeys = [...super.readStoreKeys]; // Already includes ERROR, FEATURE_FLAGS\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Static: Service Registry Interface\n  // ─────────────────────────────────────────────────────────────────────────\n\n  static readonly serviceKey = SERVICE_KEYS.EXAMPLE_FRONTEND;\n\n  /**\n   * Primary store key for this service.\n   * Used by ServiceRegistry to auto-inject the store if not specified in config.\n   * Also used by base class constructor to set instance primaryStoreKey.\n   */\n  static readonly primaryStoreKey = STORE_KEYS.EXAMPLE;\n\n  /**\n   * Factory method for ServiceRegistry auto-initialization.\n   * Creates and initializes the service instance.\n   */\n  static async create(\n    config: _ExampleFrontendServiceConfig,\n    options?: CoreServiceCreateOptions\n  ): Promise<FrontendExampleDomainService> {\n    const mergedConfig: _ExampleFrontendServiceConfig = {\n      ...config,\n      // Use || instead of ?? because api.baseURL may be '' (empty string) for same-origin requests.\n      // The ?? operator only falls through on null/undefined, not empty strings.\n      // An empty string is not a valid API path, so we treat it as \"not provided\" and fall through to default.\n      // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n      apiBasePath: config.apiBasePath || options?.apiClient?.options?.baseURL || '',\n    };\n\n    const service = new FrontendExampleDomainService(mergedConfig, options);\n\n    if (mergedConfig.autoFetch) {\n      await service.fetchAll();\n    }\n\n    return service;\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Constructor\n  // ─────────────────────────────────────────────────────────────────────────\n\n  constructor(config: _ExampleFrontendServiceConfig = {}, options?: CoreServiceCreateOptions) {\n    // Use || instead of ?? because apiBasePath may be '' (empty string) from config.\n    // Empty string is not a valid API path, so treat it as \"not provided\" and use default.\n    // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n    const apiBasePath = config.apiBasePath || '';\n\n    super({\n      serviceName: 'ExampleFrontendService',\n      supportedRuntimes: ['frontend'],\n      serviceConfig: {\n        enabled: true,\n        apiBasePath,\n        autoFetch: false,\n        pollingInterval: 0,\n        ...config,\n        // Fetchff response format: { ok, status, data: { success, message, data, codeStatus }, error }\n        // Use 'ok' for success check (HTTP level)\n        responseSuccessKey: 'ok',\n        // Extract error from fetchff response\n        responseErrorKey: 'error',\n        // Unwrap SuccessResponseStandard: extract 'data' from response.data\n        responseDataKey: 'data',\n        // Store data key: wrap entities as { items: [...] } for store.setData()\n        storeDataKey: 'items',\n\n        // Fetchers - using apiClient directly for testing/example purposes\n        // In production, these would be imported from @plyaz/api services\n        // Note: Validation is handled by validator class, mapping by mapper class\n        // Note: Use relative paths since apiClient.baseURL is already set to apiBasePath\n        fetchers: {\n          fetchAll: async query => {\n            // Empty string = use baseURL directly (e.g., /api/examples)\n            return this.apiClient.get<ExampleResponseDTO[]>('/examples', { params: query });\n          },\n          fetchById: async id => {\n            // Relative path from baseURL (e.g., /api/examples/{id})\n            return this.apiClient.get<ExampleResponseDTO>(`/examples/${id}`);\n          },\n          create: async data => {\n            return this.apiClient.post<ExampleResponseDTO>('/examples', data);\n          },\n          update: async payload => {\n            const { id, data } = payload!;\n            return this.apiClient.patch<ExampleResponseDTO>(`/examples/${id}`, data);\n          },\n          delete: async id => {\n            return this.apiClient.delete(`/examples/${id}`);\n          },\n        },\n        // Store handlers - customize how data syncs to store\n        // Use domain-specific methods or call other stores:\n        // storeHandlers: {\n        //   setData: (store, data) => {\n        //     store.setData(data);\n        //     // Can also call domain-specific methods or other stores\n        //     // store.selectItem(data.selectedId);\n        //     // store.selectItem(data.selectedId);\n        //   },\n        //   updateData: (store, data) => store.updateData(data),\n        //   setLoading: (store, isLoading) => store.setLoading(isLoading),\n        //   addData: (store, item) => store.addData(item),\n        //   updateDataById: (store, id, item) => store.updateDataById(id, item),\n        //   removeData: (store, id) => store.removeData(id),\n        // },\n        // Or disable store sync: storeHandlers: { disabled: true }\n      },\n      mapperClass: ExampleMapperClass,\n      injected: options?.injected,\n    });\n\n    // Start polling if configured\n    if (this.config.pollingInterval && this.config.pollingInterval > 0) {\n      this.startPolling();\n    }\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Lifecycle Hooks (Optional Override Examples)\n  // ─────────────────────────────────────────────────────────────────────────\n  // Note: isAvailable(), dispose(), startPolling(), stopPolling() are inherited\n  // from BaseFrontendDomainService. Override here only if custom behavior needed.\n\n  /**\n   * After fetchAll - emit event (store sync handled automatically)\n   * Note: Base class automatically calls syncToStores() which uses storeHandlers\n   */\n  protected override async afterFetchAll(entities: ExampleEntity[]): Promise<void> {\n    // Store sync happens automatically via base class + storeHandlers\n    // Just emit domain-specific event\n    CoreEventManager.emit('example:store:synced', { items: entities });\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Optional: Manual Store Updates (Alternative to storeHandlers)\n  // ─────────────────────────────────────────────────────────────────────────\n  //\n  // Uncomment these for fine-grained control over store updates:\n  //\n  // protected override async afterCreate(entity: ExampleEntity): Promise<void> {\n  //   // Manual optimistic update for immediate UI feedback\n  //   this.primaryStore.addItem?.(entity);\n  // }\n  //\n  // protected override async afterUpdate(id: string, entity: ExampleEntity): Promise<void> {\n  //   // Targeted update using domain-specific method\n  //   this.primaryStore.updateItem?.(id, entity);\n  // }\n  //\n  // protected override async afterDelete<TInput>(id: TInput): Promise<void> {\n  //   // Remove from store using domain-specific method\n  //   this.primaryStore.removeItem?.(String(id));\n  // }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Custom Domain Methods\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Subscribe to service events\n   *\n   * @example\n   * ```tsx\n   * const unsubscribe = service.on('example:created', (data) => {\n   *   console.log('Item created:', data.entity);\n   * });\n   *\n   * // Later: cleanup\n   * unsubscribe();\n   * ```\n   */\n  on(event: ExampleFrontendEventType, handler: (data: unknown) => void): () => void {\n    return CoreEventManager.on(event, handler);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Demo Methods - fetchAll() with Query Examples\n  // ─────────────────────────────────────────────────────────────────────────\n  // Note: startPolling() and stopPolling() are inherited from BaseFrontendDomainService\n\n  /**\n   * Demo: Fetch all examples with optional filters\n   * Demonstrates the fetchAll() method with typed query parameters\n   *\n   * @param filters - Optional query filters (status, pagination, sorting)\n   * @returns Promise resolving to array of ExampleEntity\n   *\n   * @example\n   * ```typescript\n   * // Fetch all active examples\n   * const activeExamples = await service.getExamples({ status: 'active' });\n   *\n   * // Fetch archived examples with pagination\n   * const archivedExamples = await service.getExamples({\n   *   status: 'archived',\n   *   page: 2,\n   *   limit: 10\n   * });\n   *\n   * // Fetch all examples sorted by name\n   * const sortedExamples = await service.getExamples({\n   *   sort_by: 'name',\n   *   sort_order: 'asc'\n   * });\n   * ```\n   */\n  async getExamples(filters?: QueryExampleDTO): Promise<ExampleEntity[]> {\n    return this.fetchAll(filters); // Properly typed!\n  }\n\n  /**\n   * Demo: Fetch active examples only\n   * Convenience method demonstrating filtering\n   */\n  async getActiveExamples(): Promise<ExampleEntity[]> {\n    return this.fetchAll({ status: 'active' });\n  }\n\n  /**\n   * Demo: Fetch draft examples only\n   * Convenience method demonstrating filtering\n   */\n  async getDraftExamples(): Promise<ExampleEntity[]> {\n    return this.fetchAll({ status: 'draft' });\n  }\n\n  /**\n   * Demo: Fetch archived examples only\n   * Convenience method demonstrating filtering\n   */\n  async getArchivedExamples(): Promise<ExampleEntity[]> {\n    return this.fetchAll({ status: 'archived' });\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // NOTE: Storage Methods Are Inherited from BaseFrontendDomainService\n  // ─────────────────────────────────────────────────────────────────────────\n  //\n  // Storage Methods (via backend API → @plyaz/storage):\n  // - uploadFile(data, endpoint?) - Upload file (with optional template-based generation)\n  // - generateFile(data, endpoint?) - Generate document from template (returns buffer)\n  //\n  // All methods include:\n  // - Event emission (upload:uploading, document:generating, etc.)\n  // - Lifecycle hooks (beforeUploadFile, afterUploadFile, etc.)\n  // - Metrics recording\n  // - Error handling\n  // ─────────────────────────────────────────────────────────────────────────\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Email Sending (TEST ONLY - via backend API → @plyaz/notifications)\n  // ─────────────────────────────────────────────────────────────────────────\n  //\n  // NOTE: Email sending is a backend-only operation. This method is included\n  // here ONLY for testing/demo purposes. In production, email triggers should\n  // happen on the backend (e.g., after order placement, user registration, etc.)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Send an email via backend API (TEST/DEMO ONLY).\n   *\n   * Calls POST /api/examples/email which uses @plyaz/notifications template engine.\n   *\n   * **NOTE:** In production, email sending should be triggered from the backend\n   * (e.g., after successful order, user signup, etc.), not from the frontend.\n   * This method is included here only for testing the notification system.\n   *\n   * @typeParam TInput - Email parameters type\n   * @typeParam TOptions - Options type (can include endpoint override)\n   *\n   * @param data - Email parameters (to, templateId, templateData, etc.)\n   * @param options - Options (endpoint, etc.)\n   * @returns Promise resolving to send result\n   */\n  async sendEmail<TInput = unknown, TOptions = unknown>(\n    data: TInput,\n    options?: TOptions\n  ): Promise<ExampleSendEmailResult> {\n    await this.ensureReady();\n    const startTime = Date.now();\n    const endpoint = (options as { endpoint?: string } | undefined)?.endpoint ?? '/email';\n\n    this.setStoresLoading(true);\n    CoreEventManager.emit(`${this.eventPrefix}:email:sending`, { request: data });\n\n    try {\n      // Call backend API\n      const response = await this.apiClient.post<ExampleSendEmailResult>(endpoint, data);\n\n      // Check response success\n      if (!this.isResponseSuccess(response)) {\n        const error = this.extractResponseError(response);\n        throw new CorePackageError(\n          `Failed to send email: ${JSON.stringify(error)}`,\n          ERROR_CODES.CORE_OPERATION_FAILED\n        );\n      }\n\n      // Unwrap response\n      const result = this.unwrapResponseData<ExampleSendEmailResult>(response.data);\n\n      // Emit success event\n      CoreEventManager.emit(`${this.eventPrefix}:email:sent`, { result });\n\n      await this.recordOperationMetrics('sendEmail', Date.now() - startTime, true);\n      return result;\n    } catch (error) {\n      await this.recordOperationMetrics('sendEmail', Date.now() - startTime, false);\n      CoreEventManager.emit(`${this.eventPrefix}:email:error`, { error });\n      throw error;\n    } finally {\n      this.setStoresLoading(false);\n    }\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // NOTE: CRUD Methods Are Inherited from BaseFrontendDomainService\n  // ─────────────────────────────────────────────────────────────────────────\n  //\n  // The following methods are available but NOT implemented here:\n  // - fetchAll(query?: QueryExampleDTO): Promise<ExampleEntity[]>\n  // - fetchById(id: string): Promise<ExampleEntity | null>\n  // - create(data: unknown): Promise<ExampleEntity>\n  // - update(id: string, data: unknown): Promise<ExampleEntity>\n  // - delete(id: string): Promise<void>\n  //\n  // All API calls → validator → mapper → store sync → events are handled automatically!\n  // All events are emitted automatically with 'example:' prefix!\n  // ─────────────────────────────────────────────────────────────────────────\n}\n","/**\n * Files Mapper\n *\n * Maps between:\n * - API responses (UploadFileResponse/GetFileResponse) → FilesEntity\n * - FilesEntity → FilesStoreItem\n * - FilesDatabaseRow → API response (for backend)\n */\n\nimport { BaseMapper } from '../../base';\nimport { toNumber, isObject, isValidUUID } from '../../../utils/common';\nimport { toOptional, toNullable } from '../../../utils/mapperUtils';\nimport type { UploadFileResponse, GetFileResponse } from '@plyaz/types/api';\nimport { SYSTEM_USER_ID } from '@plyaz/types/core';\nimport type { FilesEntity, FilesDatabaseRow, FileType, FilesCreateInput } from '@plyaz/types/core';\nimport type { FilesStoreItem, GeneratedFileItem } from '@plyaz/types/store';\nimport type { UploadResult } from '@plyaz/types/storage';\n\n/**\n * Files Mapper implementation\n *\n * Maps between:\n * - API responses → Domain Entity (toDomain)\n * - Domain Entity → Store State (toStoreState)\n * - Database Row → API Response (toResponseDTO)\n */\nclass FilesMapperClass extends BaseMapper<\n  FilesEntity,\n  GetFileResponse,\n  FilesCreateInput,\n  FilesCreateInput,\n  Partial<FilesCreateInput>,\n  Record<string, unknown>,\n  FilesStoreItem\n> {\n  /**\n   * Type guard for UploadResult from event payloads\n   * Validates that the value has the required structure for DB mapping\n   */\n  static isUploadResult(value: unknown): value is UploadResult {\n    if (!isObject(value)) return false;\n    const obj = value as Record<string, unknown>;\n    if (!isObject(obj.metadata)) return false;\n    const metadata = obj.metadata as Record<string, unknown>;\n    return (\n      typeof metadata.fileId === 'string' &&\n      typeof metadata.filename === 'string' &&\n      typeof metadata.mimeType === 'string' &&\n      typeof metadata.size === 'number' &&\n      typeof metadata.path === 'string'\n    );\n  }\n\n  /**\n   * Infer file type from MIME type\n   * DB ENUM only supports: IMAGE, VIDEO, AUDIO, DOCUMENT\n   * Default to DOCUMENT for unknown types\n   */\n  static inferFileType(mimeType: string): FileType {\n    if (mimeType.startsWith('image/')) return 'IMAGE';\n    if (mimeType.startsWith('video/')) return 'VIDEO';\n    if (mimeType.startsWith('audio/')) return 'AUDIO';\n    // DOCUMENT is the default - covers PDFs, text, office docs, and unknown types\n    // Note: DB ENUM doesn't have 'OTHER', so we use DOCUMENT as fallback\n    return 'DOCUMENT';\n  }\n\n  /**\n   * API Response → Domain Entity\n   */\n  toDomain(dto: GetFileResponse | UploadFileResponse): FilesEntity {\n    const type = FilesMapperClass.inferFileType(dto.mimeType);\n    return {\n      id: dto.id,\n      key: dto.key,\n      filename: dto.filename,\n      mimeType: dto.mimeType,\n      size: dto.size,\n      checksum: dto.checksum,\n      url: dto.url,\n      publicUrl: dto.publicUrl,\n      signedUrl: dto.signedUrl,\n      bucket: dto.bucket,\n      entityType: dto.entityType,\n      entityId: dto.entityId,\n      category: dto.category,\n      uploadedAt: new Date(dto.uploadedAt),\n      expiresAt: dto.expiresAt ? new Date(dto.expiresAt) : undefined,\n      variants: (dto as UploadFileResponse).variants,\n      type,\n      isImage: type === 'IMAGE',\n      isVideo: type === 'VIDEO',\n      isDocument: type === 'DOCUMENT',\n      isAudio: type === 'AUDIO',\n    };\n  }\n\n  /**\n   * Domain Entity → Store State (serializable)\n   */\n  toStoreState(entity: FilesEntity): FilesStoreItem {\n    return {\n      id: entity.id,\n      key: entity.key,\n      filename: entity.filename,\n      mimeType: entity.mimeType,\n      size: entity.size,\n      url: entity.url,\n      publicUrl: entity.publicUrl,\n      bucket: entity.bucket,\n      entityType: entity.entityType,\n      entityId: entity.entityId,\n      category: entity.category,\n      uploadedAt: entity.uploadedAt.toISOString(),\n      type: entity.type,\n      isImage: entity.isImage,\n      isVideo: entity.isVideo,\n      isDocument: entity.isDocument,\n      isAudio: entity.isAudio,\n    };\n  }\n\n  /**\n   * Store State → Domain Entity\n   */\n  fromStoreState(state: FilesStoreItem): FilesEntity {\n    return {\n      id: state.id,\n      key: state.key,\n      filename: state.filename,\n      mimeType: state.mimeType,\n      size: state.size,\n      url: state.url,\n      publicUrl: state.publicUrl,\n      bucket: state.bucket,\n      entityType: state.entityType,\n      entityId: state.entityId,\n      category: state.category,\n      uploadedAt: new Date(state.uploadedAt),\n      type: state.type,\n      isImage: state.isImage,\n      isVideo: state.isVideo,\n      isDocument: state.isDocument,\n      isAudio: state.isAudio,\n    };\n  }\n\n  /**\n   * Database Row → API Response (for backend)\n   */\n  toResponseDTO(row: FilesDatabaseRow): GetFileResponse {\n    return {\n      id: row.id,\n      key: row.storage_path,\n      filename: row.filename,\n      mimeType: row.mime_type,\n      size: toNumber(row.file_size),\n      checksum: undefined,\n      url: toOptional(row.cdn_url),\n      publicUrl: toOptional(row.cdn_url),\n      signedUrl: undefined,\n      bucket: row.bucket ?? 'uploads', // Default bucket for legacy records\n      entityType: toOptional(row.entity_type),\n      entityId: toOptional(row.entity_id),\n      category: undefined,\n      uploadedAt: row.created_at,\n      expiresAt: undefined,\n    };\n  }\n\n  /**\n   * Create GeneratedFileItem from generation result\n   */\n  toGeneratedFileItem(\n    templateId: string,\n    buffer: string,\n    size: number,\n    outputFormat: string = 'pdf'\n  ): GeneratedFileItem {\n    return {\n      id: crypto.randomUUID(),\n      templateId,\n      buffer,\n      size,\n      mimeType: `application/${outputFormat}`,\n      filename: `${templateId}.${outputFormat}`,\n      generatedAt: new Date().toISOString(),\n    };\n  }\n\n  /**\n   * Convert upload result to database row format\n   * Used by event handlers to persist upload results to DB\n   *\n   * @param uploadResult - Result from storage upload\n   * @param userId - User ID who uploaded the file (from auth context)\n   * @returns Partial database row ready for repository.create()\n   */\n  toDbRow(uploadResult: UploadResult, userId?: string): Partial<FilesDatabaseRow> {\n    const { metadata, variants } = uploadResult;\n\n    // Note: We don't set 'id' here - let DB auto-generate UUID\n    // The fileId from storage (path) is stored in storage_path\n    return {\n      // Required fields\n      user_id: userId ?? SYSTEM_USER_ID,\n      type: FilesMapperClass.inferFileType(metadata.mimeType),\n      filename: metadata.filename,\n      original_filename: metadata.filename,\n      mime_type: metadata.mimeType,\n      file_size: metadata.size,\n      storage_path: metadata.path,\n      entity_type: metadata.entityType,\n      access_level: metadata.accessLevel,\n      is_virus_scanned: false,\n      // Optional nullable fields\n      cdn_url: toNullable(metadata.url),\n      width: toNullable(metadata.extractedMetadata?.width),\n      height: toNullable(metadata.extractedMetadata?.height),\n      duration: toNullable(metadata.extractedMetadata?.duration),\n      // DB column is UUID type - only set if value is a valid UUID, otherwise null\n      entity_id: isValidUUID(metadata.entityId) ? metadata.entityId : null,\n      bucket: toNullable(metadata.bucket),\n      virus_scan_result: null,\n      metadata: toNullable(metadata.customMetadata),\n      variants: toNullable(variants),\n    };\n  }\n}\n\nexport { FilesMapperClass };\nexport const FilesMapper = new FilesMapperClass();\n","/**\n * Frontend Files Domain Service\n *\n * Uses inherited methods from BaseFrontendDomainService:\n * - uploadFile() - inherited (POST /upload via @plyaz/api)\n * - uploadFiles() - inherited (POST /upload/bulk via @plyaz/api)\n * - generateFile() - inherited (POST /generate-document via @plyaz/api)\n * - fetchById() - via fetchers.fetchById (GET /files/:id)\n * - delete() - via fetchers.delete (DELETE /files/:id)\n *\n * Custom methods:\n * - download() - GET /files/:id/download\n * - getSignedUrlForFile() - GET /files/:id/signed-url\n */\n\nimport { STORE_KEYS } from '@plyaz/store';\nimport { PackageLogger } from '@plyaz/logger';\nimport { getFile, deleteFile, downloadFile, getSignedUrl } from '@plyaz/api';\nimport { SERVICE_KEYS } from '@plyaz/types/core';\nimport type { CoreBaseValidatorInstance, CoreServiceCreateOptions } from '@plyaz/types/core';\nimport type {\n  DownloadFileRequest,\n  DownloadFileResponse,\n  GetSignedUrlRequest,\n  GetSignedUrlResponse,\n  GetFileResponse,\n  ServiceOptions,\n} from '@plyaz/types/api';\nimport type {\n  FilesEntity,\n  FilesFrontendServiceConfig,\n  FilesCreateInput,\n  FilesUploadEventPayload,\n  FileDocumentGeneratedEventPayload,\n  FilesUploadStreamProgress,\n  FilesDownloadStreamProgress,\n  FilesGenerateStreamProgress,\n} from '@plyaz/types/core';\n\n/** Union of all files event payloads for type-safe handlers */\ntype FilesEventPayload = FilesUploadEventPayload | FileDocumentGeneratedEventPayload | void;\nimport type {\n  FilesFrontendStoreSlice,\n  FilesFrontendStoreData,\n  FilesStoreItem,\n} from '@plyaz/types/store';\nimport { BaseFrontendDomainService } from '../base';\nimport type {\n  CoreStreamHandlerDeclaration,\n  CoreStreamHandlerIds,\n  CoreStreamStoreGetter,\n  StreamMessage,\n} from '@plyaz/types/core';\nimport { FilesMapperClass, FilesMapper } from './mappers/FilesMapper';\nimport { FrontendEventPersistenceHandler } from '../../events/FrontendEventPersistenceHandler';\nimport { Core } from '../../init/CoreInitializer';\n\nconst logger = new PackageLogger({ packageName: 'core', service: 'FrontendFilesDomainService' });\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Service\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Frontend Files Domain Service\n *\n * Inherited from BaseFrontendDomainService:\n * - uploadFile() - upload single file\n * - uploadFiles() - upload multiple files\n * - generateFile() - generate document\n * - fetchById() - get file metadata\n * - delete() - delete file\n *\n * Custom methods:\n * - download() - download file content\n * - getSignedUrlForFile() - get signed URL\n */\nexport class FrontendFilesDomainService extends BaseFrontendDomainService<\n  FilesFrontendServiceConfig,\n  FilesFrontendStoreSlice,\n  FilesFrontendStoreData,\n  FilesEntity,\n  GetFileResponse,\n  FilesCreateInput,\n  Partial<FilesCreateInput>,\n  Record<string, unknown>,\n  FilesStoreItem,\n  InstanceType<typeof FilesMapperClass>,\n  CoreBaseValidatorInstance,\n  void\n> {\n  static readonly serviceKey = SERVICE_KEYS.FILES_FRONTEND;\n\n  /**\n   * Primary store key for this service.\n   * Used by ServiceRegistry to auto-inject the store.\n   * Must be static for base class constructor to access.\n   */\n  static readonly primaryStoreKey = STORE_KEYS.FILES;\n\n  protected eventPrefix = 'files';\n\n  static async create(\n    config: FilesFrontendServiceConfig = {},\n    options?: CoreServiceCreateOptions\n  ): Promise<FrontendFilesDomainService> {\n    // Auto-register event handlers when service is created\n    this.registerEventHandlers();\n\n    const mergedConfig: FilesFrontendServiceConfig = {\n      ...config,\n      // Use || instead of ?? because api.baseURL may be '' (empty string) for same-origin requests.\n      // The ?? operator only falls through on null/undefined, not empty strings.\n      // An empty string is not a valid API path, so we treat it as \"not provided\" and fall through to default.\n      // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n      apiBasePath: config.apiBasePath || options?.apiClient?.options?.baseURL || '',\n    };\n\n    return new FrontendFilesDomainService(mergedConfig, options);\n  }\n\n  constructor(config: FilesFrontendServiceConfig = {}, options?: CoreServiceCreateOptions) {\n    // Use || instead of ?? because apiBasePath may be '' (empty string) from config.\n    // Empty string is not a valid API path, so treat it as \"not provided\" and use default.\n    // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n    const apiBasePath = config.apiBasePath || '';\n\n    super({\n      serviceName: 'FrontendFilesDomainService',\n      supportedRuntimes: ['frontend'],\n      serviceConfig: {\n        enabled: true,\n        apiBasePath,\n        responseDataKey: 'data',\n        ...config,\n        // Configure fetchers for CRUD operations\n        // Note: ID validation handled by base class validator\n        fetchers: {\n          fetchById: async (id?: string) => {\n            return getFile({ id: id! });\n          },\n          delete: async (id?: string) => {\n            return deleteFile({ id: id! });\n          },\n        },\n        // Configure storeHandlers for domain-specific store operations\n        // These are called by base class methods (fetchById, delete, etc.)\n        storeHandlers: {\n          // Use addFile with duplicate check instead of generic addData\n          addData: (store, item) => store.addFile(item as FilesEntity),\n          // Remove from both files list and uploads list\n          removeData: (store, id) => {\n            store.removeFile(id);\n            store.removeUpload(id);\n          },\n        },\n      },\n      mapperClass: FilesMapperClass,\n      injected: options?.injected,\n    });\n  }\n\n  isAvailable(): boolean {\n    return this.isServiceEnabled && typeof window !== 'undefined';\n  }\n\n  dispose(): void {\n    // Call super to auto-cleanup stream handlers and stop polling\n    super.dispose();\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Static Event Registration\n  // ─────────────────────────────────────────────────────────────────────────\n\n  private static _eventHandlersRegistered = false;\n\n  /** Stream handler IDs - overrides base class pattern */\n  protected static override readonly STREAM_HANDLER_IDS: CoreStreamHandlerIds<\n    'UPLOAD_PROGRESS' | 'DOWNLOAD_PROGRESS' | 'GENERATE_PROGRESS'\n  > = {\n    UPLOAD_PROGRESS: 'files:upload-progress',\n    DOWNLOAD_PROGRESS: 'files:download-progress',\n    GENERATE_PROGRESS: 'files:generate-progress',\n  };\n\n  /** Default priority for stream handlers */\n  private static readonly DEFAULT_HANDLER_PRIORITY = 100;\n\n  /**\n   * Declarative stream handlers - auto-registered by base class\n   */\n  /* eslint-disable complexity */\n  protected static override readonly STREAM_HANDLERS: CoreStreamHandlerDeclaration[] = [\n    // Upload progress handler - only handles upload-specific events\n    {\n      id: FrontendFilesDomainService.STREAM_HANDLER_IDS.UPLOAD_PROGRESS,\n      channels: ['uploads', 'upload:'],\n      events: ['upload:progress', 'upload:completed', 'upload:failed'],\n      priority: FrontendFilesDomainService.DEFAULT_HANDLER_PRIORITY,\n      handler: (message: StreamMessage<unknown>, getStore: CoreStreamStoreGetter): void => {\n        const data = message.data as FilesUploadStreamProgress;\n        if (!data?.fileId) return;\n\n        const filesStore = getStore()?.[STORE_KEYS.FILES] as FilesFrontendStoreSlice | undefined;\n        if (!filesStore?.setUploadProgress) return;\n\n        filesStore.setUploadProgress(data.fileId, {\n          fileId: data.fileId,\n          filename: data.filename ?? 'unknown',\n          percentage: data.percentage ?? 0,\n          status: data.status ?? 'uploading',\n          loaded: data.loaded ?? 0,\n          total: data.total ?? 0,\n          speed: data.speed,\n          estimatedTimeRemaining: data.estimatedTimeRemaining,\n          error: data.error,\n        });\n      },\n    },\n    // Download progress handler - only handles download-specific events\n    {\n      id: FrontendFilesDomainService.STREAM_HANDLER_IDS.DOWNLOAD_PROGRESS,\n      channels: ['downloads', 'download:'],\n      events: ['download:progress', 'download:completed', 'download:failed'],\n      priority: FrontendFilesDomainService.DEFAULT_HANDLER_PRIORITY,\n      handler: (message: StreamMessage<unknown>, getStore: CoreStreamStoreGetter): void => {\n        const data = message.data as FilesDownloadStreamProgress;\n        if (!data?.fileId) return;\n\n        const filesStore = getStore()?.[STORE_KEYS.FILES] as FilesFrontendStoreSlice | undefined;\n        if (!filesStore?.setDownloadProgress) return;\n\n        filesStore.setDownloadProgress(data.fileId, {\n          fileId: data.fileId,\n          filename: data.filename ?? 'unknown',\n          percentage: data.percentage ?? 0,\n          status: data.status ?? 'downloading',\n          loaded: data.loaded ?? 0,\n          total: data.total ?? 0,\n          speed: data.speed,\n          estimatedTimeRemaining: data.estimatedTimeRemaining,\n          error: data.error,\n        });\n      },\n    },\n    // Generate progress handler - only handles generate-specific events\n    {\n      id: FrontendFilesDomainService.STREAM_HANDLER_IDS.GENERATE_PROGRESS,\n      channels: ['generations', 'generate:'],\n      events: ['generate:progress', 'generate:completed', 'generate:failed'],\n      priority: FrontendFilesDomainService.DEFAULT_HANDLER_PRIORITY,\n      handler: (message: StreamMessage<unknown>, getStore: CoreStreamStoreGetter): void => {\n        const data = message.data as FilesGenerateStreamProgress;\n        if (!data?.templateId) return;\n\n        const filesStore = getStore()?.[STORE_KEYS.FILES] as FilesFrontendStoreSlice | undefined;\n        if (!filesStore?.setGenerateProgress) return;\n\n        filesStore.setGenerateProgress({\n          templateId: data.templateId,\n          percentage: data.percentage ?? 0,\n          status: data.status ?? 'generating',\n        });\n      },\n    },\n  ];\n  /* eslint-enable complexity */\n\n  /**\n   * Register all frontend event handlers for files domain.\n   *\n   * Handles:\n   * 1. Loading state events (setUploading, setGenerating)\n   * 2. Data persistence events (addUpload, addGenerated)\n   *\n   * Uses CoreEventManager to listen for file events from ANY service.\n   * This ensures a single source of truth via events.\n   *\n   * @param verbose - Enable verbose logging\n   * @returns Cleanup function to unregister all handlers\n   *\n   * @example\n   * ```typescript\n   * // Auto-called during Core.initialize() for frontend\n   * FrontendFilesDomainService.registerEventHandlers(verbose);\n   * ```\n   */\n  static registerEventHandlers(verbose?: boolean): () => void {\n    // Skip if already registered\n    if (this._eventHandlersRegistered) {\n      logger.debug('Files frontend event handlers already registered');\n      return () => {};\n    }\n\n    // Helper to safely get files store\n    const getFilesStore = (): FilesFrontendStoreSlice | undefined => {\n      try {\n        return Core.rootStore?.getState().files;\n      } catch {\n        return undefined;\n      }\n    };\n\n    // Register all files events in one place\n    FrontendEventPersistenceHandler.register<FilesFrontendStoreSlice, FilesEventPayload>({\n      domain: 'files',\n      events: {\n        // Upload events\n        'files:upload:uploading': {\n          handler: (store: FilesFrontendStoreSlice) => store.setUploading(true),\n        },\n        'files:upload:uploaded': {\n          handler: (store: FilesFrontendStoreSlice, payload: FilesEventPayload) => {\n            store.setUploading(false);\n            const p = payload as FilesUploadEventPayload;\n            if (!p?.result) return;\n\n            // Bulk upload: result has results array\n            if (p.bulk) {\n              const entities = p.result.results\n                .filter((r: { success?: boolean; data?: unknown }) => r.success && r.data)\n                .map((r: { data?: unknown }) =>\n                  FilesMapper.toDomain(r.data as Parameters<typeof FilesMapper.toDomain>[0])\n                );\n              store.addUpload(entities);\n            } else {\n              // Single upload\n              store.addUpload(FilesMapper.toDomain(p.result));\n            }\n          },\n        },\n        'files:upload:error': {\n          handler: (store: FilesFrontendStoreSlice) => store.setUploading(false),\n        },\n\n        // Document generation events\n        'files:document:generating': {\n          handler: (store: FilesFrontendStoreSlice) => store.setGenerating(true),\n        },\n        'files:document:generated': {\n          handler: (store: FilesFrontendStoreSlice, payload: FilesEventPayload) => {\n            store.setGenerating(false);\n            const p = payload as FileDocumentGeneratedEventPayload;\n            if (!p?.result?.buffer) return;\n\n            const item = FilesMapper.toGeneratedFileItem(\n              p.request.templateId,\n              p.result.buffer,\n              p.result.size,\n              p.request.outputFormat ?? 'pdf'\n            );\n            store.addGenerated(item);\n          },\n        },\n        'files:document:error': {\n          handler: (store: FilesFrontendStoreSlice) => store.setGenerating(false),\n        },\n      },\n      getStore: getFilesStore,\n      verbose,\n    });\n\n    this._eventHandlersRegistered = true;\n    logger.info('Files frontend event handlers registered');\n\n    // Return cleanup function\n    return () => {\n      FrontendEventPersistenceHandler.unregisterAll();\n      this._eventHandlersRegistered = false;\n    };\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // File Operations (following base class CRUD pattern)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Download file content\n   * GET /files/:id/download\n   *\n   * Follows same pattern as CRUD methods:\n   * 1. ensureReady\n   * 2. Lifecycle hook: beforeDownload\n   * 3. Call fetcher\n   * 4. Lifecycle hook: afterDownload\n   * 5. Emit events\n   * 6. Record metrics\n   */\n  async download(\n    request: DownloadFileRequest,\n    options?: ServiceOptions\n  ): Promise<DownloadFileResponse> {\n    await this.ensureReady();\n    const startTime = Date.now();\n\n    this.emitEvent('download:downloading', { request });\n\n    try {\n      // 1. Lifecycle hook\n      await this.beforeDownload?.(request);\n\n      // 2. Call fetcher (pass serviceOptions for strategy/config overrides)\n      const response = await downloadFile(request, options);\n\n      // 3. Check response success\n      if (!this.isResponseSuccess(response)) {\n        const error = this.extractResponseError(response);\n        throw this.wrapError(error, 'download');\n      }\n\n      // 4. Unwrap response\n      const result = this.unwrapResponseData<DownloadFileResponse>(response.data);\n\n      // 5. Lifecycle hook\n      await this.afterDownload?.(result);\n\n      // 6. Emit success event\n      this.emitEvent('download:downloaded', { result });\n\n      await this.recordOperationMetrics('download', Date.now() - startTime, true);\n      return result;\n    } catch (error) {\n      await this.recordOperationMetrics('download', Date.now() - startTime, false);\n      this.emitEvent('download:error', { error });\n      throw this.wrapError(error, 'download');\n    }\n  }\n\n  /**\n   * Lifecycle hook: called before download.\n   * Override in subclass for custom pre-download logic.\n   */\n  protected beforeDownload?(request: DownloadFileRequest): Promise<void>;\n\n  /**\n   * Lifecycle hook: called after download.\n   * Override in subclass for custom post-download logic.\n   */\n  protected afterDownload?(result: DownloadFileResponse): Promise<void>;\n\n  /**\n   * Get signed URL for file\n   * GET /files/:id/signed-url\n   *\n   * Follows same pattern as CRUD methods.\n   */\n  async getSignedUrlForFile(request: GetSignedUrlRequest): Promise<GetSignedUrlResponse> {\n    await this.ensureReady();\n    const startTime = Date.now();\n\n    this.emitEvent('signedUrl:requesting', { request });\n\n    try {\n      // 1. Lifecycle hook\n      await this.beforeGetSignedUrl?.(request);\n\n      // 2. Call fetcher\n      const response = await getSignedUrl(request);\n\n      // 3. Check response success\n      if (!this.isResponseSuccess(response)) {\n        const error = this.extractResponseError(response);\n        throw this.wrapError(error, 'getSignedUrl');\n      }\n\n      // 4. Unwrap response\n      const result = this.unwrapResponseData<GetSignedUrlResponse>(response.data);\n\n      // 5. Lifecycle hook\n      await this.afterGetSignedUrl?.(result);\n\n      // 6. Emit success event\n      this.emitEvent('signedUrl:received', { result });\n\n      await this.recordOperationMetrics('getSignedUrl', Date.now() - startTime, true);\n      return result;\n    } catch (error) {\n      await this.recordOperationMetrics('getSignedUrl', Date.now() - startTime, false);\n      this.emitEvent('signedUrl:error', { error });\n      throw this.wrapError(error, 'getSignedUrl');\n    }\n  }\n\n  /**\n   * Lifecycle hook: called before getting signed URL.\n   * Override in subclass for custom pre-signedUrl logic.\n   */\n  protected beforeGetSignedUrl?(request: GetSignedUrlRequest): Promise<void>;\n\n  /**\n   * Lifecycle hook: called after getting signed URL.\n   * Override in subclass for custom post-signedUrl logic.\n   */\n  protected afterGetSignedUrl?(result: GetSignedUrlResponse): Promise<void>;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Singleton\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet _instance: FrontendFilesDomainService | null = null;\n\nexport async function getFrontendFilesDomainService(\n  config?: FilesFrontendServiceConfig,\n  options?: CoreServiceCreateOptions\n): Promise<FrontendFilesDomainService> {\n  _instance ??= await FrontendFilesDomainService.create(config, options);\n  return _instance;\n}\n\nexport function resetFilesFrontendService(): void {\n  if (_instance) {\n    _instance.dispose();\n    _instance = null;\n  }\n}\n","/**\n * Notifications Mapper\n *\n * Transforms data between API DTOs, domain models, and store state.\n * Supports IN_APP notifications only (not email/sms/push).\n *\n * Methods:\n * - toDomain: API DTO → Domain Model\n * - toQueryDTO: Filters → Query params\n * - toStoreState: Domain → Zustand store\n * - fromStoreState: Store → Domain\n * - toDbRow: Domain/Event payload → Database row\n * - toCreateDTO/toUpdateDTO/toPatchDTO: For backend operations\n */\n\nimport { PAGE_SIZES } from '@plyaz/config';\nimport { BaseMapper } from '../../base';\nimport { toOptional, getField, parseDateSafe } from '../../../utils/mapperUtils';\nimport { SYSTEM_USER_ID } from '@plyaz/types/core';\nimport type {\n  NotificationsEntity,\n  NotificationsResponseDTO,\n  NotificationStoreItem,\n  QueryNotificationsDTO,\n  CreateNotificationsDTO,\n  UpdateNotificationsDTO,\n  PatchNotificationsDTO,\n  NotificationsDatabaseRow,\n  NotificationCreatedStreamData,\n} from '@plyaz/types/core';\n\n/** Default pagination values */\nconst PAGINATION_DEFAULTS = {\n  PAGE: 1,\n  LIMIT: PAGE_SIZES.MEDIUM,\n} as const;\n\n/** Valid DB channel values */\nconst DB_CHANNELS = ['IN_APP', 'EMAIL', 'SMS', 'PUSH'] as const;\n\n/** Preference fields that can be toggled */\ntype PreferenceToggleField =\n  | 'marketing_enabled'\n  | 'promotional_enabled'\n  | 'social_enabled'\n  | 'system_enabled';\n\n/**\n * Notifications Mapper implementation\n * Supports IN_APP notifications only\n */\nclass NotificationsMapperClass extends BaseMapper<\n  NotificationsEntity,\n  NotificationsResponseDTO,\n  CreateNotificationsDTO,\n  UpdateNotificationsDTO,\n  PatchNotificationsDTO,\n  QueryNotificationsDTO,\n  NotificationStoreItem\n> {\n  // ─────────────────────────────────────────────────────────────────────────\n  // Static Methods: Channel/Category Conversion\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Map DTO channel to DB channel (uppercase)\n   * DTO: email, sms, push → DB: EMAIL, SMS, PUSH\n   */\n  static mapChannelToDb(channel?: string | null): NotificationsDatabaseRow['channel'] {\n    if (!channel) return 'IN_APP'; // Default to IN_APP\n    const upper = channel.toUpperCase();\n    if (DB_CHANNELS.includes(upper as (typeof DB_CHANNELS)[number])) {\n      return upper as NotificationsDatabaseRow['channel'];\n    }\n    return 'IN_APP';\n  }\n\n  /**\n   * Map category to DB format\n   */\n  static mapCategoryToDb(category?: string | null): NotificationsDatabaseRow['category'] {\n    if (!category) return 'transactional';\n    return category as NotificationsDatabaseRow['category'];\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Instance Methods\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * API DTO → Domain Model\n   * Handles both snake_case (DTO) and camelCase (Entity) input formats\n   */\n  toDomain(dto: NotificationsResponseDTO | NotificationsEntity): NotificationsEntity {\n    const data = dto as unknown as Record<string, unknown>;\n\n    return {\n      id: dto.id,\n      userId: getField<string>(data, 'user_id', 'userId') ?? '',\n      type: dto.type,\n      title: dto.title,\n      message: dto.message,\n      linkUrl: getField<string>(data, 'link_url', 'linkUrl'),\n      referenceId: getField<string>(data, 'reference_id', 'referenceId'),\n      referenceType: getField<string>(data, 'reference_type', 'referenceType'),\n      correlationId: getField<string>(data, 'correlation_id', 'correlationId'),\n      recipientId: getField<string>(data, 'recipient_id', 'recipientId') ?? '',\n      templateId: getField<string>(data, 'template_id', 'templateId'),\n      channel: dto.channel,\n      category: dto.category,\n      provider: dto.provider,\n      providerMessageId: getField<string>(data, 'provider_message_id', 'providerMessageId'),\n      status: dto.status,\n      sentAt: parseDateSafe(getField(data, 'sent_at', 'sentAt')),\n      deliveredAt: parseDateSafe(getField(data, 'delivered_at', 'deliveredAt')),\n      isRead: getField<boolean>(data, 'is_read', 'isRead') ?? false,\n      readAt: parseDateSafe(getField(data, 'read_at', 'readAt')),\n      errorMessage: getField<string>(data, 'error_message', 'errorMessage'),\n      retryCount: getField<number>(data, 'retry_count', 'retryCount') ?? 0,\n      createdAt: parseDateSafe(getField(data, 'created_at', 'createdAt')) ?? new Date(),\n      deletedAt: parseDateSafe(getField(data, 'deleted_at', 'deletedAt')),\n    };\n  }\n\n  /**\n   * Database Row → API Response DTO (for backend)\n   */\n  toResponseDTO(row: NotificationsDatabaseRow): NotificationsResponseDTO {\n    return {\n      // Required fields\n      id: row.id,\n      user_id: row.user_id,\n      type: row.type,\n      title: row.title,\n      message: row.message,\n      recipient_id: row.recipient_id,\n      status: row.status,\n      is_read: row.is_read,\n      retry_count: row.retry_count,\n      created_at: row.created_at,\n      // Optional fields\n      link_url: toOptional(row.link_url),\n      reference_id: toOptional(row.reference_id),\n      reference_type: toOptional(row.reference_type),\n      correlation_id: toOptional(row.correlation_id),\n      template_id: toOptional(row.template_id),\n      channel: toOptional(row.channel),\n      category: toOptional(row.category),\n      provider: toOptional(row.provider),\n      provider_message_id: toOptional(row.provider_message_id),\n      sent_at: toOptional(row.sent_at),\n      delivered_at: toOptional(row.delivered_at),\n      read_at: toOptional(row.read_at),\n      error_message: toOptional(row.error_message),\n      deleted_at: toOptional(row.deleted_at),\n    };\n  }\n\n  /**\n   * Filters → Query params DTO (GET)\n   */\n  toQueryDTO(filters: Partial<QueryNotificationsDTO>): QueryNotificationsDTO {\n    return {\n      page: filters.page ?? PAGINATION_DEFAULTS.PAGE,\n      limit: filters.limit ?? PAGINATION_DEFAULTS.LIMIT,\n      sort_by: filters.sort_by ?? 'created_at',\n      sort_order: filters.sort_order ?? 'desc',\n      user_id: filters.user_id,\n      channel: filters.channel,\n      status: filters.status,\n      category: filters.category,\n      template_id: filters.template_id,\n      recipient_id: filters.recipient_id,\n      type: filters.type,\n      is_read: filters.is_read,\n      created_after: filters.created_after,\n      created_before: filters.created_before,\n    };\n  }\n\n  /**\n   * Domain → Store state (serializable)\n   * For IN_APP notifications store\n   */\n  toStoreState(domain: NotificationsEntity): NotificationStoreItem {\n    return {\n      id: domain.id,\n      type: domain.type,\n      title: domain.title,\n      message: domain.message,\n      linkUrl: domain.linkUrl,\n      referenceId: domain.referenceId,\n      referenceType: domain.referenceType,\n      category: domain.category ?? 'transactional',\n      status: domain.status,\n      isRead: domain.isRead,\n      readAt: domain.readAt?.toISOString(),\n      createdAt: domain.createdAt.toISOString(),\n    };\n  }\n\n  /**\n   * Store state → Domain (restore)\n   */\n  fromStoreState(state: NotificationStoreItem): NotificationsEntity {\n    return {\n      id: state.id,\n      userId: '',\n      type: state.type as NotificationsEntity['type'],\n      title: state.title,\n      message: state.message,\n      linkUrl: state.linkUrl,\n      referenceId: state.referenceId,\n      referenceType: state.referenceType,\n      recipientId: '',\n      category: state.category,\n      status: state.status,\n      isRead: state.isRead,\n      readAt: state.readAt ? new Date(state.readAt) : undefined,\n      retryCount: 0,\n      createdAt: new Date(state.createdAt),\n    };\n  }\n\n  /**\n   * Domain Entity → Create DTO (for backend)\n   */\n  toCreateDTO(entity: NotificationsEntity): CreateNotificationsDTO {\n    return {\n      userId: entity.userId,\n      type: entity.type,\n      title: entity.title,\n      message: entity.message,\n      linkUrl: entity.linkUrl,\n      referenceId: entity.referenceId,\n      referenceType: entity.referenceType,\n      correlationId: entity.correlationId,\n      recipientId: entity.recipientId,\n      templateId: entity.templateId,\n      channel: entity.channel,\n      category: entity.category,\n      provider: entity.provider,\n      providerMessageId: entity.providerMessageId,\n    };\n  }\n\n  /**\n   * Domain Entity → Update DTO (for backend)\n   */\n  toUpdateDTO(entity: NotificationsEntity): UpdateNotificationsDTO {\n    return this.toCreateDTO(entity);\n  }\n\n  /**\n   * Partial Domain → Patch DTO (for backend)\n   */\n  toPatchDTO(partial: Partial<NotificationsEntity>): PatchNotificationsDTO {\n    return {\n      is_read: partial.isRead,\n      read_at: partial.readAt?.toISOString(),\n    };\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Stream Data Conversion\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Domain Entity → Stream Data (for broadcasting via SSE/WebSocket)\n   * Used by backend afterCreate hook to emit notification:created event\n   */\n  toStreamData(entity: NotificationsEntity): NotificationCreatedStreamData {\n    return {\n      notificationId: entity.id,\n      userId: entity.userId,\n      type: entity.type,\n      title: entity.title,\n      message: entity.message,\n      linkUrl: entity.linkUrl,\n      referenceId: entity.referenceId,\n      referenceType: entity.referenceType,\n      category: entity.category ?? 'transactional',\n      status: entity.status,\n      createdAt: entity.createdAt.toISOString(),\n      timestamp: new Date().toISOString(),\n    };\n  }\n\n  /**\n   * Stream Data → Store Item (for frontend store)\n   * Used by frontend stream handler to add notification to store\n   */\n  fromStreamData(streamData: NotificationCreatedStreamData): NotificationStoreItem {\n    return {\n      id: streamData.notificationId,\n      type: streamData.type,\n      title: streamData.title,\n      message: streamData.message,\n      linkUrl: streamData.linkUrl,\n      referenceId: streamData.referenceId,\n      referenceType: streamData.referenceType,\n      category: streamData.category,\n      status: streamData.status,\n      isRead: false,\n      createdAt: streamData.createdAt,\n    };\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Database Row Conversion\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Convert event payload/entity to database row format\n   * Used by event handlers to persist notifications to DB\n   */\n  toDbRow(\n    payload: Partial<NotificationsEntity> | Record<string, unknown>,\n    userId?: string\n  ): Partial<NotificationsDatabaseRow> {\n    const data = payload as Partial<NotificationsEntity>;\n    return {\n      user_id: userId ?? data.userId ?? SYSTEM_USER_ID,\n      type: data.type ?? 'SYSTEM',\n      title: data.title ?? '',\n      message: data.message ?? '',\n      link_url: data.linkUrl ?? null,\n      reference_id: data.referenceId ?? null,\n      reference_type: data.referenceType ?? null,\n      correlation_id: data.correlationId ?? null,\n      recipient_id: data.recipientId ?? '',\n      template_id: data.templateId ?? null,\n      channel: NotificationsMapperClass.mapChannelToDb(data.channel),\n      category: data.category ?? null,\n      provider: data.provider ?? null,\n      provider_message_id: data.providerMessageId ?? null,\n      status: data.status ?? 'queued',\n      sent_at: data.sentAt?.toISOString() ?? null,\n      delivered_at: data.deliveredAt?.toISOString() ?? null,\n      is_read: data.isRead ?? false,\n      read_at: data.readAt?.toISOString() ?? null,\n      error_message: data.errorMessage ?? null,\n      retry_count: data.retryCount ?? 0,\n    };\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Preference Mapping\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /** Category to preference field mapping */\n  private static readonly CATEGORY_PREFERENCE_MAP: Record<string, PreferenceToggleField> = {\n    marketing: 'marketing_enabled',\n    promotional: 'promotional_enabled',\n    social: 'social_enabled',\n    system: 'system_enabled',\n  };\n\n  /**\n   * Map notification category to preference database field.\n   * Returns the field name to disable for unsubscribe.\n   */\n  static mapCategoryToPreferenceField(category: string): PreferenceToggleField | undefined {\n    return this.CATEGORY_PREFERENCE_MAP[category];\n  }\n}\n\n// Export class for BaseDomainService.MapperClass\nexport { NotificationsMapperClass };\n\n// Singleton instance (for direct usage)\nexport const NotificationsMapper = new NotificationsMapperClass();\n","/**\n * Notifications Validator\n *\n * Validates and sanitizes Notifications DTOs using Zod schemas from @plyaz/types.\n * Supports list/delete operations for frontend, full CRUD for backend.\n *\n * Operations:\n * - delete (DELETE) - validateDelete, validateDeleteOrThrow\n * - query (GET)   - validateQuery, validateQueryOrThrow\n * - create (POST) - validateCreate, validateCreateOrThrow (backend)\n */\n\nimport { z } from 'zod';\nimport { BaseValidator } from '../../base';\nimport {\n  // Schemas (single source of truth from @plyaz/types)\n  DeleteNotificationsSchema,\n  QueryNotificationsSchema,\n  CreateNotificationsSchema,\n} from '@plyaz/types/core';\nimport type {\n  DeleteNotificationsDTO,\n  QueryNotificationsDTO,\n  CreateNotificationsDTO,\n} from '@plyaz/types/core';\nimport type { NotificationCategory, NotificationChannel } from '@plyaz/types/notifications';\nimport { NotificationPackageError } from '@plyaz/errors';\nimport { NOTIFICATION_ERROR_CODES } from '@plyaz/types/errors';\nimport { isInQuietHours } from '../../../utils/common';\nimport type { NotificationPreferencesDatabaseRow } from '../../../models/notifications';\n\n/** Categories that can be unsubscribed from (excludes 'transactional') */\nconst UNSUBSCRIBABLE_CATEGORIES: NotificationCategory[] = [\n  'marketing',\n  'promotional',\n  'social',\n  'system',\n];\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Validator Class\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Notifications Validator implementation\n * Supports list/delete for frontend, full CRUD for backend\n *\n * All schemas imported from @plyaz/types/core - single source of truth\n *\n * Available methods:\n * - validateDelete(data) → ValidationResult<DeleteNotificationsDTO>\n * - validateDeleteOrThrow(data) → DeleteNotificationsDTO\n * - validateQuery(data) → ValidationResult<QueryNotificationsDTO>\n * - validateQueryOrThrow(data) → QueryNotificationsDTO\n * - validateCreate(data) → ValidationResult<CreateNotificationsDTO>\n * - validateCreateOrThrow(data) → CreateNotificationsDTO\n */\nclass NotificationsValidatorClass extends BaseValidator<\n  CreateNotificationsDTO,\n  CreateNotificationsDTO, // Update same as create\n  Partial<CreateNotificationsDTO>, // Patch\n  DeleteNotificationsDTO,\n  QueryNotificationsDTO\n> {\n  constructor() {\n    super({\n      createSchema: CreateNotificationsSchema,\n      updateSchema: CreateNotificationsSchema,\n      patchSchema: CreateNotificationsSchema.partial(),\n      deleteSchema: DeleteNotificationsSchema,\n      querySchema: QueryNotificationsSchema,\n    });\n  }\n\n  /**\n   * Validate notification ID for delete\n   */\n  validateNotificationId(id: string): boolean {\n    const result = z.string().uuid().safeParse(id);\n    return result.success;\n  }\n\n  /**\n   * Validate query filters\n   */\n  validateFilters(filters: Partial<QueryNotificationsDTO>): boolean {\n    const result = QueryNotificationsSchema.safeParse(filters);\n    return result.success;\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Unsubscribe Validation\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Check if category is valid for unsubscribe.\n   */\n  isValidUnsubscribeCategory(category: string): category is NotificationCategory {\n    return UNSUBSCRIBABLE_CATEGORIES.includes(category as NotificationCategory);\n  }\n\n  /**\n   * Validate unsubscribe category - throws if invalid.\n   */\n  validateUnsubscribeCategoryOrThrow(category: string, isFullUnsubscribe: boolean): void {\n    if (!this.isValidUnsubscribeCategory(category) && !isFullUnsubscribe) {\n      throw new NotificationPackageError(\n        NOTIFICATION_ERROR_CODES.VALIDATION_FAILED,\n        NOTIFICATION_ERROR_CODES.VALIDATION_FAILED,\n        { context: { category, validCategories: UNSUBSCRIBABLE_CATEGORIES } }\n      );\n    }\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Preference Validation\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Check if preferences allow sending a notification.\n   * Validates channel, category, and quiet hours.\n   */\n  checkPreferencesAllowSend(\n    prefs: NotificationPreferencesDatabaseRow,\n    category: NotificationCategory,\n    channel: NotificationChannel\n  ): boolean {\n    // Check channel\n    if (channel === 'email' && !prefs.email_enabled) return false;\n    if (channel === 'sms' && !prefs.sms_enabled) return false;\n    if (channel === 'push' && !prefs.push_enabled) return false;\n\n    // Check category\n    if (category === 'marketing' && !prefs.marketing_enabled) return false;\n    if (category === 'social' && !prefs.social_enabled) return false;\n    if (category === 'system' && !prefs.system_enabled) return false;\n    if (category === 'promotional' && !prefs.promotional_enabled) return false;\n\n    // Check quiet hours\n    if (prefs.quiet_hours_enabled) {\n      const inQuietHours = isInQuietHours(\n        prefs.quiet_hours_start,\n        prefs.quiet_hours_end,\n        prefs.quiet_hours_timezone || 'UTC'\n      );\n      if (inQuietHours) return false;\n    }\n\n    return true;\n  }\n}\n\n// Export class for BaseDomainService.ValidatorClass\nexport { NotificationsValidatorClass };\n\n// Singleton instance (for direct usage)\nexport const NotificationsValidator = new NotificationsValidatorClass();\n","/**\n * Frontend Notifications Domain Service\n *\n * Handles IN_APP notifications only. Email, SMS, and Push notifications\n * are backend-only operations via @plyaz/notifications package.\n *\n * Uses inherited methods from BaseFrontendDomainService:\n * - fetchAll() - inherited (GET /notifications via @plyaz/api)\n * - delete() - inherited (DELETE /notifications/:id via @plyaz/api)\n *\n * Streaming support:\n * - Real-time in-app notification updates (created, updated, deleted, read, unread)\n *\n * Runtime: Frontend (React, Next.js, etc.)\n *\n * @example\n * ```typescript\n * const service = await getFrontendNotificationsDomainService();\n *\n * // List and delete in-app notifications\n * const items = await service.fetchAll({ status: 'queued' });\n * await service.delete('notification-id');\n * ```\n */\n\nimport { STORE_KEYS } from '@plyaz/store';\nimport { PackageLogger } from '@plyaz/logger';\nimport { CorePackageError } from '@plyaz/errors';\nimport { fetchNotifications, deleteNotification } from '@plyaz/api';\nimport { ERROR_CODES } from '@plyaz/types/errors';\nimport { SERVICE_KEYS } from '@plyaz/types/core';\nimport type {\n  CoreServiceCreateOptions,\n  CoreBaseValidatorInstance,\n  CoreStreamHandlerDeclaration,\n  CoreStreamHandlerIds,\n  CoreStreamStoreGetter,\n  StreamMessage,\n} from '@plyaz/types/core';\nimport type {\n  NotificationsFrontendStoreSlice,\n  NotificationsFrontendStoreData,\n  NotificationStoreItem,\n} from '@plyaz/types/store';\nimport { BaseFrontendDomainService } from '../base';\nimport { FrontendEventPersistenceHandler } from '../../events/FrontendEventPersistenceHandler';\nimport { Core } from '../../init/CoreInitializer';\nimport { NotificationsMapperClass, NotificationsMapper } from './mappers/NotificationsMapper';\nimport { NotificationsValidatorClass } from './validators/NotificationsValidator';\n\nconst logger = new PackageLogger({\n  packageName: 'core',\n  service: 'FrontendNotificationsDomainService',\n});\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types (from @plyaz/types - single source of truth)\n// ─────────────────────────────────────────────────────────────────────────────\n\nimport type {\n  NotificationsEntity,\n  NotificationsResponseDTO,\n  CreateNotificationsDTO,\n  PatchNotificationsDTO,\n  QueryNotificationsDTO,\n  NotificationsFrontendServiceConfig,\n  NotificationCreatedStreamData,\n} from '@plyaz/types/core';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Service\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Frontend Notifications Domain Service\n *\n * Extends BaseFrontendDomainService with all generic types.\n * All CRUD methods are inherited from base class.\n *\n * Inherited from BaseFrontendDomainService:\n * - fetchAll() - list all notifications\n * - delete() - delete a notification\n */\nexport class FrontendNotificationsDomainService extends BaseFrontendDomainService<\n  NotificationsFrontendServiceConfig,\n  NotificationsFrontendStoreSlice,\n  NotificationsFrontendStoreData,\n  NotificationsEntity,\n  NotificationsResponseDTO,\n  CreateNotificationsDTO,\n  PatchNotificationsDTO,\n  QueryNotificationsDTO,\n  NotificationStoreItem,\n  InstanceType<typeof NotificationsMapperClass>,\n  CoreBaseValidatorInstance,\n  void // TDeleteResult - delete returns void\n> {\n  // ─────────────────────────────────────────────────────────────────────────\n  // Required Properties\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /** Service key for registry */\n  static readonly serviceKey = SERVICE_KEYS.NOTIFICATIONS_FRONTEND;\n\n  /**\n   * Primary store key for this service.\n   * Used by ServiceRegistry to auto-inject the store.\n   * Must be static for base class constructor to access.\n   */\n  static readonly primaryStoreKey = STORE_KEYS.NOTIFICATIONS;\n\n  /** Event prefix for all events emitted by this service */\n  protected eventPrefix = 'notifications';\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Static Factory Method\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Factory method for ServiceRegistry auto-initialization.\n   * Auto-registers event handlers for store updates.\n   */\n  static async create(\n    config: NotificationsFrontendServiceConfig = {},\n    options?: CoreServiceCreateOptions\n  ): Promise<FrontendNotificationsDomainService> {\n    // Auto-register event handlers when service is created\n    this.registerEventHandlers();\n\n    const mergedConfig: NotificationsFrontendServiceConfig = {\n      ...config,\n      // Use || instead of ?? because api.baseURL may be '' (empty string) for same-origin requests.\n      // The ?? operator only falls through on null/undefined, not empty strings.\n      // An empty string is not a valid API path, so we treat it as \"not provided\" and fall through to default.\n      // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n      apiBasePath: config.apiBasePath || options?.apiClient?.options?.baseURL || '',\n    };\n\n    const service = new FrontendNotificationsDomainService(mergedConfig, options);\n\n    if (mergedConfig.autoFetch) {\n      await service.fetchAll();\n    }\n\n    return service;\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Static: Stream Handlers\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /** Stream handler IDs - overrides base class pattern */\n  protected static override readonly STREAM_HANDLER_IDS: CoreStreamHandlerIds<'LISTENER'> = {\n    LISTENER: 'notifications:listener',\n  };\n\n  /** Default priority for stream handlers */\n  private static readonly DEFAULT_HANDLER_PRIORITY = 100;\n\n  /**\n   * Declarative stream handlers - auto-registered by base class\n   * Handles real-time in-app notification delivery.\n   *\n   * Only notification:created is needed - user receives new notifications.\n   * User subscribes to user:notifications:{userId} channel.\n   */\n  protected static override readonly STREAM_HANDLERS: CoreStreamHandlerDeclaration[] = [\n    {\n      id: FrontendNotificationsDomainService.STREAM_HANDLER_IDS.LISTENER,\n      channels: ['user:notifications:', 'notifications'],\n      events: ['notification:created'],\n      priority: FrontendNotificationsDomainService.DEFAULT_HANDLER_PRIORITY,\n      handler: (message: StreamMessage<unknown>, getStore: CoreStreamStoreGetter): void => {\n        // Stream data is auto-unwrapped by useStreamConnection's parseResponse\n        // So message.data is directly NotificationCreatedStreamData (not wrapped in { success, data })\n        const streamData = message.data as NotificationCreatedStreamData;\n        if (!streamData?.notificationId || !streamData?.userId) return;\n\n        const store = getStore()?.[STORE_KEYS.NOTIFICATIONS] as\n          | NotificationsFrontendStoreSlice\n          | undefined;\n        if (!store) return;\n\n        // Use mapper to convert stream data to store item format\n        const notification = NotificationsMapper.fromStreamData(streamData);\n\n        // Add new notification to store\n        store.addNotification(notification);\n      },\n    },\n  ];\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Static: Event Handlers (for store updates)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  private static _eventHandlersRegistered = false;\n\n  /**\n   * Register event handlers for cross-service event reactions.\n   * Auto-called by create() method when service is initialized.\n   *\n   * IMPORTANT: When to use this vs storeHandlers in service config:\n   *\n   * **Use storeHandlers (service config)** for:\n   * - Simple, automatic store updates (addData, removeData, updateData)\n   * - Loading state management for THIS service's operations\n   * - Primary store population from API responses\n   * - Straightforward CRUD → store sync\n   *\n   * **Use FrontendEventPersistenceHandler (this method)** for:\n   * - Listening to events from OTHER services (cross-domain reactions)\n   * - Updating DIFFERENT stores based on events (not just primary store)\n   * - Complex conditional logic (e.g., block API calls when X event fires)\n   * - Side effects that storeHandlers cannot achieve\n   * - Coordinating multiple stores on a single event\n   *\n   * @example Cross-domain reaction\n   * ```typescript\n   * // When auth:logout fires, clear this domain's cached data\n   * 'auth:logout': {\n   *   handler: (store) => store.clearAll(),\n   * }\n   * ```\n   *\n   * @example Conditional logic\n   * ```typescript\n   * // Disable feature when maintenance mode event fires\n   * 'system:maintenance:started': {\n   *   handler: (store) => store.setDisabled(true),\n   * }\n   * ```\n   *\n   * @param verbose - Enable verbose logging\n   * @returns Cleanup function to unregister all handlers\n   */\n  static registerEventHandlers(verbose?: boolean): () => void {\n    // Skip if already registered\n    if (this._eventHandlersRegistered) {\n      logger.debug('Notifications frontend event handlers already registered');\n      return () => {};\n    }\n\n    // Helper to safely get store (SSR-safe)\n    // NOTE: This can access ANY store slice, not just this domain's primary store.\n    // Use this for cross-domain store updates that storeHandlers cannot achieve.\n    const getNotificationsStore = (): NotificationsFrontendStoreSlice | undefined => {\n      try {\n        return Core.rootStore?.getState().notifications;\n      } catch {\n        return undefined;\n      }\n    };\n\n    // Register cross-domain event handlers\n    // NOTE: For simple loading/CRUD operations on primary store, use storeHandlers instead.\n    // Use this for cross-domain reactions, conditional logic, or multi-store coordination.\n    FrontendEventPersistenceHandler.register<NotificationsFrontendStoreSlice, unknown>({\n      domain: 'notifications',\n      events: {\n        // ─────────────────────────────────────────────────────────────────────\n        // Cross-domain examples (react to OTHER services' events)\n        // ─────────────────────────────────────────────────────────────────────\n        // Example: Clear cache when user logs out\n        // 'auth:logout': {\n        //   handler: (store: NotificationsFrontendStoreSlice) => store.clearAll?.(),\n        // },\n        // Example: Disable operations during maintenance\n        // 'system:maintenance:started': {\n        //   handler: (store: NotificationsFrontendStoreSlice) => store.setDisabled?.(true),\n        // },\n        // 'system:maintenance:ended': {\n        //   handler: (store: NotificationsFrontendStoreSlice) => store.setDisabled?.(false),\n        // },\n        // Example: Refresh data when related domain changes\n        // 'relatedDomain:updated': {\n        //   handler: (store: NotificationsFrontendStoreSlice, payload: unknown) => {\n        //     // Trigger refetch or invalidate cache\n        //     store.setStale?.(true);\n        //   },\n        // },\n        // ─────────────────────────────────────────────────────────────────────\n        // Same-domain examples (only if storeHandlers are insufficient)\n        // ─────────────────────────────────────────────────────────────────────\n        // Example: Complex validation before allowing operation\n        // 'notifications:creating': {\n        //   handler: (store: NotificationsFrontendStoreSlice, payload: unknown) => {\n        //     // Check external conditions, emit blocking events, etc.\n        //   },\n        // },\n      },\n      getStore: getNotificationsStore,\n      verbose,\n    });\n\n    this._eventHandlersRegistered = true;\n    logger.info('Notifications frontend event handlers registered');\n\n    // Return cleanup function\n    return () => {\n      FrontendEventPersistenceHandler.unregisterAll();\n      this._eventHandlersRegistered = false;\n    };\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Constructor\n  // ─────────────────────────────────────────────────────────────────────────\n\n  constructor(config: NotificationsFrontendServiceConfig = {}, options?: CoreServiceCreateOptions) {\n    // Use || instead of ?? because apiBasePath may be '' (empty string) from config.\n    // Empty string is not a valid API path, so treat it as \"not provided\" and use default.\n    // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n    const apiBasePath = config.apiBasePath || '';\n\n    super({\n      serviceName: 'FrontendNotificationsDomainService',\n      supportedRuntimes: ['frontend'],\n      serviceConfig: {\n        enabled: true,\n        apiBasePath,\n        // Extract error from fetchff response\n        responseErrorKey: 'error',\n        // Unwrap API response: extract 'data' from response.data (ListNotificationResponse)\n        responseDataKey: 'data',\n        // Store data key: wrap entities as { notificationsList: [...] } for store.setData()\n        storeDataKey: 'notificationsList',\n        autoFetch: true,\n        pollingInterval: 30000,\n        ...config,\n        fetchers: {\n          fetchAll: async (query: QueryNotificationsDTO | undefined) => {\n            return fetchNotifications(query);\n          },\n          delete: async (id: string | undefined) => {\n            return deleteNotification(id!);\n          },\n        },\n      },\n      mapperClass: NotificationsMapperClass,\n      validatorClass: NotificationsValidatorClass,\n      injected: options?.injected,\n    });\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Abstract Implementations (Required by BaseDomainService)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  isAvailable(): boolean {\n    return this.isServiceEnabled && typeof window !== 'undefined';\n  }\n\n  dispose(): void {\n    super.dispose();\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Lifecycle Hooks (Optional - Override only if needed)\n  // ─────────────────────────────────────────────────────────────────────────\n  //\n  // Available hooks to override:\n  // - protected async beforeFetchAll(query?): Promise<void>\n  // - protected async afterFetchAll(entities, query?): Promise<void>\n  // - protected async beforeFetchById(id): Promise<void>\n  // - protected async afterFetchById(entity): Promise<void>\n  // - protected async beforeCreate(data): Promise<void>\n  // - protected async afterCreate(entity): Promise<void>\n  // - protected async beforeUpdate(id, data): Promise<void>\n  // - protected async afterUpdate(id, entity): Promise<void>\n  // - protected async beforeDelete(id): Promise<void>\n  // - protected async afterDelete(id): Promise<void>\n  //\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Singleton Instance\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet _instance: FrontendNotificationsDomainService | null = null;\n\n/**\n * Get or create singleton instance\n */\nexport async function getFrontendNotificationsDomainService(\n  config?: NotificationsFrontendServiceConfig,\n  options?: CoreServiceCreateOptions\n): Promise<FrontendNotificationsDomainService> {\n  _instance ??= await FrontendNotificationsDomainService.create(config, options);\n  return _instance;\n}\n\n/**\n * Lazy singleton proxy - creates instance on first access\n */\nexport const frontendNotificationsDomainService = new Proxy(\n  {} as FrontendNotificationsDomainService,\n  {\n    get(_, prop) {\n      if (!_instance) {\n        throw new CorePackageError(\n          'FrontendNotificationsDomainService not initialized. Call getFrontendNotificationsDomainService() first.',\n          ERROR_CODES.CORE_PROVIDER_INITIALIZATION_FAILED\n        );\n      }\n      return Reflect.get(_instance, prop);\n    },\n  }\n);\n\n/**\n * Reset singleton (for testing)\n */\nexport function resetNotificationsFrontendService(): void {\n  if (_instance) {\n    _instance.dispose();\n    _instance = null;\n  }\n}\n","/**\n * DbService - Singleton Database Connection Manager\n *\n * @description Manages database connections for the entire application using a singleton pattern.\n * This service wraps @plyaz/db and provides a centralized way to initialize and access\n * the database across all domains (feature flags, users, campaigns, backoffice, etc.).\n *\n * **Architecture:**\n * - Uses `createDatabaseService()` from @plyaz/db which builds an adapter chain\n * - Supports Drizzle (direct PostgreSQL), Supabase (REST API), or raw SQL adapters\n * - Extension layers: Encryption → SoftDelete → Caching → Audit → ReadReplica\n *\n * **Adapter Configuration:**\n * - **Drizzle**: Requires `connectionString` (PostgreSQL URL)\n * - **Supabase**: Requires `supabaseUrl`, `supabaseServiceKey`, `supabaseAnonKey`\n * - **SQL**: Requires `connectionString`\n *\n * **Required Environment Variables (Drizzle with Supabase):**\n * - DATABASE_URL: PostgreSQL connection string (from Supabase Dashboard > Database > URI)\n *\n * **Required Environment Variables (Supabase REST API):**\n * - SUPABASE_URL: Your Supabase project URL\n * - SUPABASE_SERVICE_ROLE_KEY: Service role key for admin operations\n * - SUPABASE_ANON_PUBLIC_KEY: Anonymous key for public operations\n *\n * @example Using with Core.initialize() (Recommended)\n * ```typescript\n * import { Core } from '@plyaz/core';\n *\n * // Core.initialize() handles loading env and passing to DbService\n * await Core.initialize({\n *   envPath: '.env',\n *   db: {\n *     adapter: 'sql',\n *     cache: { enabled: true, ttl: 60 },\n *   },\n * });\n *\n * // Access via Core.db\n * const db = Core.db.getDatabase();\n * const result = await db.list('users', { pagination: { limit: 10, offset: 0 } });\n * ```\n *\n * @example Direct Usage (requires explicit config)\n * ```typescript\n * // Direct usage requires explicit connectionString\n * await DbService.initialize({\n *   adapter: 'drizzle',\n *   drizzle: {\n *     connectionString: 'postgresql://user:pass@localhost:5432/db',\n *     poolSize: 20,\n *   },\n * });\n * ```\n *\n * @example With Extensions\n * ```typescript\n * await Core.initialize({\n *   envPath: '.env',\n *   db: {\n *     adapter: 'drizzle',\n *     softDelete: {\n *       enabled: true,\n *       field: 'deleted_at',\n *       excludeTables: ['audit_logs', 'feature_flag_evaluations'],\n *     },\n *     cache: {\n *       enabled: true,\n *       provider: 'memory',\n *       ttl: 300,\n *     },\n *     audit: {\n *       enabled: true,\n *       retentionDays: 90,\n *     },\n *   },\n * });\n * ```\n *\n * @example Using with BaseRepository\n * ```typescript\n * import { BaseRepository } from '@plyaz/db';\n * import { DbService } from '@plyaz/core';\n *\n * class UserRepository extends BaseRepository<User> {\n *   constructor() {\n *     super(DbService.getInstance().getDatabase(), 'users');\n *   }\n * }\n * ```\n *\n * @module services\n */\n\nimport { createDatabaseService } from '@plyaz/db';\nimport { DatabasePackageError } from '@plyaz/errors';\nimport {\n  type DatabaseServiceInterface,\n  type DatabaseServiceConfig,\n  type DrizzleConfig,\n  type SupabaseConfig,\n  type SqlConfig,\n  type Transaction,\n  type DatabaseEvents,\n} from '@plyaz/types/db';\nimport { DATABASE_ERROR_CODES } from '@plyaz/types/errors';\nimport { CORE_EVENTS, type CoreDatabaseErrorPayload } from '@plyaz/types/core';\nimport { CoreEventManager } from '../events/CoreEventManager';\nimport { PackageLogger } from '@plyaz/logger';\nimport { TIME_CONSTANTS } from '@plyaz/config';\n\nconst logger = new PackageLogger({ packageName: 'core', service: 'DbService' });\n\n/**\n * Default fields to encrypt per table\n * Contains sensitive PII and financial data that should be encrypted at rest\n *\n * @see docs/db-schemas/dbdiagram_schema.dbml for field definitions\n */\nexport const DEFAULT_ENCRYPTION_FIELDS: Record<string, string[]> = {\n  // User PII\n  users: ['password_hash', 'phone_number', 'date_of_birth'],\n\n  // KYC sensitive data\n  'backoffice.kyc_submissions': ['tax_id', 'address_line1', 'address_line2'],\n\n  // Connected accounts OAuth tokens\n  connected_accounts: ['access_token_encrypted', 'refresh_token_encrypted', 'wallet_address'],\n\n  // Payment payout accounts\n  user_payout_accounts: ['provider_account_id', 'account_holder_name'],\n\n  // Sessions\n  sessions: ['token'],\n};\n\n// Re-export DbServiceConfig from @plyaz/types/core\nexport type { CoreDbServiceConfig } from '@plyaz/types/core';\n\n// Local alias for internal use\nimport type {\n  CoreDbServiceConfig as DbServiceConfig,\n  CoreDbServiceInstance,\n} from '@plyaz/types/core';\n\n/**\n * Default configuration for DbService\n *\n * **Adapter Selection Guide:**\n *\n * | Adapter     | Connection       | Auto-Register | RLS      | Use Case                          |\n * |-------------|------------------|---------------|----------|-----------------------------------|\n * | `'sql'`     | PostgreSQL URL   | ✓ Yes         | Bypassed | **Recommended** for backend       |\n * | `'supabase'`| Supabase API     | ✓ Yes         | Enforced | Frontend / RLS-required scenarios |\n * | `'drizzle'` | PostgreSQL URL   | ✓ Yes*        | Bypassed | Type-safe ORM (with PgTable schemas) |\n *\n * *Drizzle supports dual-mode: uses PgTable schemas if registered, falls back to raw SQL otherwise.\n *\n * **Recommended:** Use `'sql'` adapter for backend services with Supabase PostgreSQL.\n * Direct PostgreSQL connection = best performance, bypasses RLS for full backend access.\n */\n// Database configuration constants\nconst DEFAULT_AUDIT_RETENTION_DAYS = 180; // GDPR/SOX compliance (6 months minimum)\nconst DEFAULT_POOL_SIZE = 10;\n\nconst DEFAULT_CONFIG: Partial<DbServiceConfig> = {\n  adapter: 'sql',\n  cache: {\n    enabled: true,\n    provider: 'memory',\n    ttl: TIME_CONSTANTS.DEFAULT_CACHE_TTL,\n  },\n  softDelete: {\n    enabled: true,\n    field: 'deleted_at',\n    excludeTables: [\n      'audit_logs',\n      'audit.audit_logs',\n      'audit.feature_flag_evaluations',\n      'feature_flag_evaluations',\n      'notification_events',\n      'payments_activity',\n      'campaign_analytics',\n      'admin_actions',\n      'backoffice.admin_actions',\n    ],\n  },\n  audit: {\n    enabled: true, // Enabled by default for compliance\n    retentionDays: DEFAULT_AUDIT_RETENTION_DAYS,\n    excludeFields: ['password_hash', 'api_key_hash', 'token_hash'],\n    excludeTables: ['audit_logs', 'audit.audit_logs'], // Don't audit the audit table itself\n    schema: 'audit', // Use dedicated audit schema\n    usePartitionedTables: true, // Use daily partitioned tables (audit_log_yyyy_mm_dd)\n  },\n  // NOTE: Encryption requires key from environment or DbService.initialize()\n  // Enable via: DbService.initialize({ encryption: { enabled: true, key: process.env.ENCRYPTION_KEY!, fields: DEFAULT_ENCRYPTION_FIELDS } })\n};\n\n/**\n * Complete table registry from database migrations\n * Maps logical table names to their ID columns\n *\n * @see docs/db-schemas/migrations/ for schema definitions\n * @see docs/db-schemas/dbdiagram_schema.dbml for full schema\n */\n/**\n * TABLE_REGISTRY - Custom ID Column and Schema Registry\n *\n * ONLY register tables with:\n * 1. Custom ID columns (anything other than 'id')\n * 2. Custom database schemas (anything other than 'public')\n *\n * Tables with standard 'id' column in 'public' schema do NOT need registration.\n * You can also override ID column and schema per-query using OperationConfig.\n *\n * Schema can be defined in the table key or in the config object (or both):\n * - 'schema.table': { idColumn: 'key' }              ← Schema in key only\n * - 'schema.table': { idColumn: 'key', schema: 'schema' } ← Redundant but allowed\n * - 'schema.table': {}                                ← Empty config, schema in key\n * - 'table': { idColumn: 'key', schema: 'schema' }   ← Schema in config only\n *\n * @example\n * ```typescript\n * // Using registry\n * await db.get('feature_flags', 'my-flag-key'); // Uses 'key' column from registry\n *\n * // Per-query override\n * await db.get('custom_table', 'some-key', { idColumn: 'custom_id' });\n *\n * // Schema override\n * await db.get('logs', '123', { schema: 'logging' });\n * ```\n */\nexport const TABLE_REGISTRY: Record<string, { idColumn?: string; schema?: string }> = {\n  // Migration 008: Feature Flags (custom ID column 'key')\n  feature_flags: { idColumn: 'key' },\n\n  // Test Feature Flags (custom ID column 'key')\n  test_feature_flags: { idColumn: 'key' },\n\n  // Migration 010: Universal Analytics (custom ID column 'user_id')\n  user_analytics_summary: { idColumn: 'user_id' },\n};\n\n/**\n * DbService - Singleton Database Connection Manager\n *\n * Provides centralized database connection management for all domains.\n * Uses @plyaz/db under the hood with configurable adapters and extensions.\n */\n/**\n * Global Singleton Pattern using globalThis\n *\n * @see CoreEventManager.ts for detailed explanation of why this pattern is needed.\n *\n * TL;DR: In Next.js and similar frameworks, module isolation can create multiple singleton\n * instances. Using globalThis + Symbol.for() ensures ONE instance per process, preventing\n * issues like multiple database connection pools or inconsistent state across API routes.\n */\nconst DB_SERVICE_KEY = Symbol.for('plyaz.DbService');\n\nfunction getDbServiceInstance(): DbService | null {\n  const globalAny = globalThis as unknown as { [key: symbol]: DbService | null };\n  return globalAny[DB_SERVICE_KEY] ?? null;\n}\n\nfunction setDbServiceInstance(instance: DbService | null): void {\n  const globalAny = globalThis as unknown as { [key: symbol]: DbService | null };\n  globalAny[DB_SERVICE_KEY] = instance;\n}\n\nexport class DbService implements CoreDbServiceInstance {\n  private databaseService: DatabaseServiceInterface | null = null;\n  private namedAdapters: Map<string, DatabaseServiceInterface> = new Map();\n  private config: DbServiceConfig | null = null;\n  private initialized = false;\n\n  private constructor() {}\n\n  /**\n   * Emits a database error event via CoreEventManager.\n   * Called when database operations fail to integrate with global error handling.\n   *\n   * @param error - The error that occurred\n   * @param operation - The operation that failed (e.g., 'transaction', 'query', 'healthCheck')\n   * @param table - Optional table name involved in the operation\n   * @param query - Optional query string that failed\n   * @param recoverable - Whether the error is recoverable (default: false)\n   */\n  private emitDatabaseError(\n    error: unknown,\n    operation: string,\n    options?: {\n      table?: string;\n      query?: string;\n      recoverable?: boolean;\n    }\n  ): void {\n    const payload: CoreDatabaseErrorPayload = {\n      error,\n      operation,\n      table: options?.table,\n      query: options?.query,\n      recoverable: options?.recoverable ?? false,\n    };\n    CoreEventManager.emit(CORE_EVENTS.DATABASE.ERROR, payload);\n  }\n\n  /**\n   * Creates merged event handlers that wrap user-provided handlers.\n   * Adds Core-level logging and forwards to user handlers.\n   *\n   * Note: Unlike StorageService/NotificationService, DB events don't emit\n   * to CoreEventManager by default (too verbose). User handlers can emit\n   * if needed.\n   *\n   * @param userHandlers - User-provided event handlers from config\n   * @returns Merged handlers with Core logging + user handlers\n   */\n  private static createMergedEventHandlers(userHandlers?: DatabaseEvents): DatabaseEvents {\n    return {\n      ...userHandlers,\n\n      onAfterWrite: async event => {\n        logger.debug('Database write completed', {\n          operation: event.operation,\n          table: event.table,\n          duration: event.duration,\n        });\n        if (userHandlers?.onAfterWrite) {\n          await userHandlers.onAfterWrite(event);\n        }\n      },\n\n      onAfterRead: async event => {\n        logger.debug('Database read completed', {\n          table: event.table,\n          duration: event.duration,\n        });\n        if (userHandlers?.onAfterRead) {\n          await userHandlers.onAfterRead(event);\n        }\n      },\n    };\n  }\n\n  /**\n   * Gets the singleton instance of DbService\n   *\n   * @returns {DbService} The singleton instance\n   */\n  static getInstance(): DbService {\n    let instance = getDbServiceInstance();\n    if (!instance) {\n      instance = new DbService();\n      setDbServiceInstance(instance);\n    }\n    return instance;\n  }\n\n  /**\n   * Checks if the database service has been initialized\n   *\n   * @returns {boolean} True if initialized\n   */\n  static isInitialized(): boolean {\n    return getDbServiceInstance()?.initialized ?? false;\n  }\n\n  /**\n   * Resets the database service by closing connections and clearing the singleton instance\n   *\n   * @description Properly closes the database connection and clears the singleton.\n   * Useful for testing or when you need to reinitialize with different configuration.\n   *\n   * @example\n   * ```typescript\n   * await DbService.reset();\n   * await DbService.initialize({ adapter: 'sql', ... });\n   * ```\n   */\n  static async reset(): Promise<void> {\n    const instance = getDbServiceInstance();\n    if (instance) {\n      try {\n        await instance.databaseService?.close?.();\n      } catch {\n        // Ignore close errors (pool might already be closed)\n      }\n      setDbServiceInstance(null);\n    }\n  }\n\n  /**\n   * Initializes the database connection\n   *\n   * @description Sets up the database connection using the provided configuration\n   * or environment variables. This method is idempotent - calling it multiple\n   * times won't create additional connections.\n   *\n   * **Environment Variables:**\n   * - `DATABASE_URL` - PostgreSQL connection string (for sql/drizzle adapters)\n   * - `ENCRYPTION_KEY` - 32-byte encryption key for field encryption (optional)\n   * - `SUPABASE_URL`, `SUPABASE_SERVICE_ROLE_KEY`, `SUPABASE_ANON_PUBLIC_KEY` - For supabase adapter\n   *\n   * **Encryption:** If `ENCRYPTION_KEY` env is set, encryption is auto-enabled\n   * using `DEFAULT_ENCRYPTION_FIELDS`. Override via config.encryption.\n   *\n   * @param {DbServiceConfig} [config] - Optional configuration\n   * @returns {Promise<DbService>} The initialized DbService instance\n   * @throws {DatabasePackageError} When configuration is invalid or connection fails\n   *\n   * @example\n   * ```typescript\n   * // Minimal - uses DATABASE_URL env, auto-enables encryption if ENCRYPTION_KEY set\n   * await DbService.initialize();\n   *\n   * // With explicit encryption\n   * await DbService.initialize({\n   *   adapter: 'sql',\n   *   encryption: {\n   *     enabled: true,\n   *     key: 'your-32-byte-encryption-key-here!!',\n   *     fields: DEFAULT_ENCRYPTION_FIELDS,\n   *   },\n   * });\n   *\n   * // Or via Core.initialize() with env:\n   * await Core.initialize({\n   *   env: { ENCRYPTION_KEY: '...' },\n   *   db: { adapter: 'sql' },\n   * });\n   * ```\n   */\n  /** Build encryption config from user config */\n  private static buildEncryptionConfig(config?: DbServiceConfig): DbServiceConfig['encryption'] {\n    const encryption = config?.encryption;\n    if (!encryption?.key) return undefined;\n\n    return {\n      enabled: encryption.enabled ?? true,\n      key: encryption.key,\n      fields: encryption.fields ?? DEFAULT_ENCRYPTION_FIELDS,\n      algorithm: encryption.algorithm ?? 'aes-256-gcm',\n    };\n  }\n\n  /** Merge user config with defaults */\n  private static mergeConfig(config?: DbServiceConfig): DbServiceConfig {\n    return {\n      ...DEFAULT_CONFIG,\n      ...config,\n      softDelete: { ...DEFAULT_CONFIG.softDelete, ...config?.softDelete },\n      cache: { ...DEFAULT_CONFIG.cache, ...config?.cache },\n      audit: { ...DEFAULT_CONFIG.audit, ...config?.audit },\n      encryption: DbService.buildEncryptionConfig(config),\n    } as DbServiceConfig;\n  }\n\n  /** Initialize named adapters */\n  private async initializeNamedAdapters(mergedConfig: DbServiceConfig): Promise<void> {\n    if (!mergedConfig.adapters) return;\n\n    for (const [name, adapterConfig] of Object.entries(mergedConfig.adapters)) {\n      const namedDbConfig = this.buildDatabaseConfig({\n        ...mergedConfig,\n        adapter: adapterConfig.adapter,\n        drizzle: adapterConfig.drizzle,\n        supabase: adapterConfig.supabase,\n        sql: adapterConfig.sql,\n      });\n\n      const namedService = await createDatabaseService(namedDbConfig);\n      this.namedAdapters.set(name, namedService);\n    }\n  }\n\n  static async initialize(config?: DbServiceConfig): Promise<DbService> {\n    const instance = DbService.getInstance();\n\n    if (instance.initialized) {\n      return instance;\n    }\n\n    const mergedConfig = DbService.mergeConfig(config);\n    instance.config = mergedConfig;\n\n    const dbConfig = instance.buildDatabaseConfig(mergedConfig);\n    instance.databaseService = await createDatabaseService(dbConfig);\n\n    await instance.initializeNamedAdapters(mergedConfig);\n\n    instance.initialized = true;\n    return instance;\n  }\n\n  /**\n   * Builds the DatabaseServiceConfig based on the adapter type\n   * @private\n   */\n\n  /** Builds adapter-specific config based on adapter type */\n  private buildAdapterConfig(\n    adapter: string,\n    config: DbServiceConfig\n  ): DrizzleConfig | SupabaseConfig | SqlConfig {\n    const builders: Record<string, () => DrizzleConfig | SupabaseConfig | SqlConfig> = {\n      drizzle: () => this.buildDrizzleConfig(config),\n      supabase: () => this.buildSupabaseConfig(config),\n      sql: () => this.buildSqlConfig(config),\n    };\n\n    const builder = builders[adapter];\n    if (!builder) {\n      throw new DatabasePackageError(\n        `Unsupported adapter type: ${adapter}`,\n        DATABASE_ERROR_CODES.CONFIG_REQUIRED\n      );\n    }\n    return builder();\n  }\n\n  /** Builds soft delete extension config */\n  private buildSoftDeleteExtension(\n    config: DbServiceConfig\n  ): DatabaseServiceConfig['softDelete'] | undefined {\n    if (!config.softDelete?.enabled) return undefined;\n    return {\n      enabled: true,\n      field: config.softDelete.field ?? 'deleted_at',\n      excludeTables: config.softDelete.excludeTables,\n    };\n  }\n\n  /** Builds cache extension config */\n  private buildCacheExtension(config: DbServiceConfig): DatabaseServiceConfig['cache'] | undefined {\n    if (!config.cache?.enabled) return undefined;\n    return {\n      enabled: true,\n      ttl: config.cache.ttl ?? TIME_CONSTANTS.DEFAULT_CACHE_TTL,\n      provider: config.cache.provider ?? 'memory',\n      invalidation: config.cache.invalidation ?? 'write',\n    };\n  }\n\n  /** Builds audit extension config */\n  private buildAuditExtension(config: DbServiceConfig): DatabaseServiceConfig['audit'] | undefined {\n    if (!config.audit?.enabled) return undefined;\n    return {\n      enabled: true,\n      retentionDays: config.audit.retentionDays ?? DEFAULT_AUDIT_RETENTION_DAYS,\n      excludeFields: config.audit.excludeFields,\n      excludeTables: config.audit.excludeTables,\n      schema: config.audit.schema ?? 'audit',\n      usePartitionedTables: config.audit.usePartitionedTables ?? true,\n    };\n  }\n\n  /** Builds encryption extension config */\n  private buildEncryptionExtension(\n    config: DbServiceConfig\n  ): DatabaseServiceConfig['encryption'] | undefined {\n    if (!config.encryption?.enabled || !config.encryption.key) return undefined;\n    return {\n      enabled: true,\n      key: config.encryption.key,\n      fields: config.encryption.fields ?? {},\n      algorithm: config.encryption.algorithm,\n    };\n  }\n\n  private buildDatabaseConfig(config: DbServiceConfig): DatabaseServiceConfig {\n    const adapter = config.adapter ?? 'drizzle';\n\n    const dbConfig: DatabaseServiceConfig = {\n      adapter: adapter as DatabaseServiceConfig['adapter'],\n      config: this.buildAdapterConfig(adapter, config),\n    };\n\n    // Apply extensions\n    const softDelete = this.buildSoftDeleteExtension(config);\n    const cache = this.buildCacheExtension(config);\n    const audit = this.buildAuditExtension(config);\n    const encryption = this.buildEncryptionExtension(config);\n\n    if (softDelete) dbConfig.softDelete = softDelete;\n    if (cache) dbConfig.cache = cache;\n    if (audit) dbConfig.audit = audit;\n    if (encryption) dbConfig.encryption = encryption;\n\n    // Apply merged event handlers\n    const events = DbService.createMergedEventHandlers(config.events);\n    if (events) dbConfig.events = events;\n\n    return dbConfig;\n  }\n\n  /**\n   * Builds Drizzle adapter configuration\n   * @private\n   */\n  private buildDrizzleConfig(config: DbServiceConfig): DrizzleConfig {\n    // Get connection string from config (Core.initialize() passes env values)\n    const connectionString = config.drizzle?.connectionString;\n\n    if (!connectionString) {\n      throw new DatabasePackageError(\n        'Drizzle adapter requires a PostgreSQL connection string. ' +\n          'Provide `drizzle.connectionString` in config or use Core.initialize() with DATABASE_URL in env. ' +\n          'For Supabase, find this in Dashboard > Database > Connection string (URI).',\n        DATABASE_ERROR_CODES.CONFIG_REQUIRED\n      );\n    }\n\n    // Build table ID column mappings from TABLE_REGISTRY\n    const tableIdColumns = this.buildTableIdColumns();\n\n    return {\n      connectionString,\n      poolSize: config.drizzle?.poolSize ?? DEFAULT_POOL_SIZE,\n      ssl: config.drizzle?.ssl,\n      schema: config.drizzle?.schema, // Pass through schema configuration\n      tableIdColumns,\n    };\n  }\n\n  /**\n   * Builds Supabase adapter configuration\n   * @private\n   */\n  // eslint-disable-next-line complexity\n  private buildSupabaseConfig(config: DbServiceConfig): SupabaseConfig {\n    // Get Supabase config (Core.initialize() passes env values)\n    const supabaseUrl = config.supabase?.supabaseUrl;\n    const supabaseServiceKey = config.supabase?.supabaseServiceKey;\n    const supabaseAnonKey = config.supabase?.supabaseAnonKey;\n\n    if (!supabaseUrl || !supabaseServiceKey) {\n      throw new DatabasePackageError(\n        'Supabase adapter requires supabaseUrl and supabaseServiceKey. ' +\n          'Provide in config or use Core.initialize() with SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY in env.',\n        DATABASE_ERROR_CODES.CONFIG_REQUIRED\n      );\n    }\n\n    if (!supabaseAnonKey) {\n      throw new DatabasePackageError(\n        'Supabase adapter requires supabaseAnonKey. ' +\n          'Provide in config or use Core.initialize() with SUPABASE_ANON_PUBLIC_KEY in env.',\n        DATABASE_ERROR_CODES.CONFIG_REQUIRED\n      );\n    }\n\n    // Build table ID column mappings from TABLE_REGISTRY\n    const tableIdColumns = this.buildTableIdColumns();\n\n    return {\n      supabaseUrl,\n      supabaseServiceKey,\n      supabaseAnonKey,\n      schema: config.supabase?.schema ?? 'public',\n      tableIdColumns,\n    };\n  }\n\n  /**\n   * Builds SQL adapter configuration\n   * @private\n   */\n  private buildSqlConfig(config: DbServiceConfig): SqlConfig {\n    // Get connection string from config (Core.initialize() passes env values)\n    const connectionString = config.sql?.connectionString;\n\n    if (!connectionString) {\n      throw new DatabasePackageError(\n        'SQL adapter requires a connection string. ' +\n          'Provide `sql.connectionString` in config or use Core.initialize() with DATABASE_URL in env.',\n        DATABASE_ERROR_CODES.CONFIG_REQUIRED\n      );\n    }\n\n    // Build table ID column mappings from TABLE_REGISTRY\n    const tableIdColumns = this.buildTableIdColumns();\n\n    return {\n      connectionString,\n      dialect: config.sql?.dialect ?? 'postgresql',\n      schema: config.sql?.schema, // Pass through schema configuration\n      tableIdColumns,\n    };\n  }\n\n  /**\n   * Builds table ID column mappings from TABLE_REGISTRY\n   * @private\n   * @returns Record of table names to ID column names\n   */\n  // eslint-disable-next-line complexity\n  private buildTableIdColumns(): Record<string, string> {\n    const tableIdColumns: Record<string, string> = {};\n    const baseNameConflicts = new Set<string>();\n    const baseNameMappings = new Map<string, string>();\n\n    // First pass: identify base name conflicts\n    // e.g., if we have both 'public.users' and 'backoffice.users',\n    // we can't map 'users' → one ID column\n    for (const tableName of Object.keys(TABLE_REGISTRY)) {\n      if (tableName.includes('.')) {\n        const baseName = tableName.split('.').pop()!;\n        if (baseNameMappings.has(baseName) || TABLE_REGISTRY[baseName]) {\n          baseNameConflicts.add(baseName);\n        } else {\n          baseNameMappings.set(baseName, tableName);\n        }\n      }\n    }\n\n    // Second pass: build ID column mappings\n    for (const [tableName, config] of Object.entries(TABLE_REGISTRY)) {\n      const idColumn = config.idColumn ?? 'id';\n\n      // Only include non-standard ID columns (not 'id')\n      if (idColumn === 'id') continue;\n\n      // Always map the full table name (with or without schema)\n      tableIdColumns[tableName] = idColumn;\n\n      // If the table name includes a schema (e.g., 'backoffice.flagged_content'),\n      // also map the base name (e.g., 'flagged_content') for convenience\n      // unless there's a conflict with another schema's table\n      if (!tableName.includes('.')) continue;\n\n      const baseName = tableName.split('.').pop()!;\n      if (!baseNameConflicts.has(baseName)) {\n        tableIdColumns[baseName] = idColumn;\n      }\n    }\n\n    return tableIdColumns;\n  }\n\n  /**\n   * Gets the initialized database service instance\n   *\n   * @param {string} [adapterName] - Optional named adapter to use instead of default\n   * @returns {DatabaseServiceInterface} The database service instance\n   * @throws {DatabasePackageError} When database is not initialized or named adapter not found\n   */\n  getDatabase(adapterName?: string): DatabaseServiceInterface {\n    if (adapterName) {\n      const namedAdapter = this.namedAdapters.get(adapterName);\n      if (!namedAdapter) {\n        throw new DatabasePackageError(\n          `Named adapter '${adapterName}' not found. Available adapters: ${Array.from(this.namedAdapters.keys()).join(', ')}`,\n          DATABASE_ERROR_CODES.INIT_FAILED\n        );\n      }\n      return namedAdapter;\n    }\n\n    if (!this.databaseService) {\n      throw new DatabasePackageError(\n        'Database not initialized. Call DbService.initialize() first.',\n        DATABASE_ERROR_CODES.INIT_FAILED\n      );\n    }\n    return this.databaseService;\n  }\n\n  /**\n   * Gets a named adapter by name\n   *\n   * @param {string} name - The name of the adapter\n   * @returns {DatabaseServiceInterface} The named adapter instance\n   * @throws {DatabasePackageError} When adapter not found\n   */\n  getAdapter(name: string): DatabaseServiceInterface {\n    return this.getDatabase(name);\n  }\n\n  /**\n   * Lists all available named adapters\n   *\n   * @returns {string[]} Array of adapter names\n   */\n  getAvailableAdapters(): string[] {\n    return ['default', ...Array.from(this.namedAdapters.keys())];\n  }\n\n  /**\n   * Executes a database transaction with automatic rollback on failure\n   *\n   * @template T The return type of the transaction callback\n   * @param {Function} callback - Function that receives transaction object\n   * @returns {Promise<T>} The result of the transaction callback\n   * @throws {DatabasePackageError} When transaction fails\n   */\n  async transaction<T>(callback: (tx: Transaction) => Promise<T>): Promise<T> {\n    const db = this.getDatabase();\n    const result = await db.transaction(callback);\n\n    if (!result.success) {\n      const errorMessage = result.error?.message ?? 'Transaction failed';\n      const error = new DatabasePackageError(errorMessage, DATABASE_ERROR_CODES.TRANSACTION_FAILED);\n      // Emit database error event for global error handling\n      this.emitDatabaseError(error, 'transaction', { recoverable: true });\n      throw error;\n    }\n\n    if (result.value === undefined || result.value === null) {\n      const error = new DatabasePackageError(\n        'Transaction returned no value',\n        DATABASE_ERROR_CODES.INVALID_RESULT\n      );\n      this.emitDatabaseError(error, 'transaction', { recoverable: false });\n      throw error;\n    }\n\n    return result.value;\n  }\n\n  /**\n   * Sets audit context for subsequent operations\n   *\n   * @param context - Audit context (userId, requestId, etc.)\n   */\n  async setAuditContext(context: {\n    userId?: string;\n    requestId?: string;\n    ipAddress?: string;\n    userAgent?: string;\n  }): Promise<void> {\n    const db = this.getDatabase();\n    await db.setAuditContext(context);\n  }\n\n  /**\n   * Performs a health check on the database connection\n   *\n   * @returns Health check result\n   */\n  async healthCheck(): Promise<{ isHealthy: boolean; responseTime?: number; error?: string }> {\n    try {\n      const db = this.getDatabase();\n      const result = await db.healthCheck();\n\n      if (result.success && result.value) {\n        return {\n          isHealthy: result.value.isHealthy,\n          responseTime: result.value.responseTime,\n        };\n      }\n\n      // Health check failed - emit error event\n      const errorMessage = result.error?.message ?? 'Health check failed';\n      this.emitDatabaseError(\n        new DatabasePackageError(errorMessage, DATABASE_ERROR_CODES.CONNECTION_ERROR),\n        'healthCheck',\n        { recoverable: true }\n      );\n\n      return {\n        isHealthy: false,\n        error: errorMessage,\n      };\n    } catch (error) {\n      // Exception during health check - emit error event\n      this.emitDatabaseError(error, 'healthCheck', { recoverable: true });\n\n      return {\n        isHealthy: false,\n        error: error instanceof Error ? error.message : 'Unknown error',\n      };\n    }\n  }\n\n  /**\n   * Gets the table registry with all known tables and their ID columns\n   *\n   * @returns The complete table registry\n   */\n  static getTableRegistry(): typeof TABLE_REGISTRY {\n    return TABLE_REGISTRY;\n  }\n\n  /**\n   * Gets ID column for a specific table\n   *\n   * @param tableName - Name of the table\n   * @returns ID column name or 'id' as default\n   */\n  static getTableIdColumn(tableName: string): string {\n    return TABLE_REGISTRY[tableName]?.idColumn ?? 'id';\n  }\n\n  /**\n   * Reinitializes the database connection with new config\n   *\n   * @param {DbServiceConfig} [config] - New configuration\n   * @returns {Promise<DbService>} The reinitialized DbService instance\n   */\n  static async reinitialize(config?: DbServiceConfig): Promise<DbService> {\n    const instance = DbService.getInstance();\n    await instance.close();\n    instance.initialized = false;\n    return DbService.initialize(config);\n  }\n\n  /**\n   * Closes the database connection and cleans up resources\n   */\n  async close(): Promise<void> {\n    this.databaseService = null;\n    this.initialized = false;\n    this.config = null;\n  }\n\n  /**\n   * Gets the current configuration\n   *\n   * @returns {DbServiceConfig | null} Current config or null if not initialized\n   */\n  getConfig(): DbServiceConfig | null {\n    return this.config;\n  }\n\n  /**\n   * Gets the current adapter type\n   *\n   * @returns The adapter type or null if not initialized\n   */\n  getAdapterType(): 'drizzle' | 'supabase' | 'sql' | null {\n    return this.config?.adapter ?? null;\n  }\n\n  /**\n   * Creates a dedicated database service instance (NOT the singleton)\n   *\n   * Use this when you need an isolated database connection with its own configuration\n   * that doesn't affect or get affected by the shared singleton instance.\n   *\n   * @param config - Database service configuration\n   * @returns Promise that resolves to a new dedicated DbService instance\n   *\n   * @example\n   * ```typescript\n   * // Create a dedicated instance for analytics database\n   * const analyticsDb = await DbService.createInstance({\n   *   adapter: 'sql',\n   *   sql: { connectionString: process.env.ANALYTICS_DB_URL },\n   *   cache: { enabled: false }, // No caching for analytics\n   * });\n   *\n   * // This instance is independent from DbService.getInstance()\n   * const data = await analyticsDb.getDatabase().list('events');\n   *\n   * // Clean up when done\n   * await analyticsDb.close();\n   * ```\n   */\n  // eslint-disable-next-line complexity\n  static async createInstance(config: DbServiceConfig): Promise<DbService> {\n    // Create a new instance (not the singleton)\n    const dedicatedInstance = new DbService();\n\n    // Build encryption config if key provided\n    const encryptionKey = config.encryption?.key;\n    const encryptionConfig = encryptionKey\n      ? {\n          enabled: config.encryption?.enabled ?? true,\n          key: encryptionKey,\n          fields: config.encryption?.fields ?? DEFAULT_ENCRYPTION_FIELDS,\n          algorithm: config.encryption?.algorithm ?? ('aes-256-gcm' as const),\n        }\n      : undefined;\n\n    const mergedConfig = {\n      ...DEFAULT_CONFIG,\n      ...config,\n      // Deep merge extensions\n      softDelete: { ...DEFAULT_CONFIG.softDelete, ...config.softDelete },\n      cache: { ...DEFAULT_CONFIG.cache, ...config.cache },\n      audit: { ...DEFAULT_CONFIG.audit, ...config.audit },\n      // Encryption only if key is available\n      encryption: encryptionConfig,\n    } as DbServiceConfig;\n\n    dedicatedInstance.config = mergedConfig;\n\n    // Build adapter configuration based on adapter type\n    const dbConfig = dedicatedInstance.buildDatabaseConfig(mergedConfig);\n\n    dedicatedInstance.databaseService = await createDatabaseService(dbConfig);\n\n    // Initialize named adapters if configured\n    if (mergedConfig.adapters) {\n      for (const [name, adapterConfig] of Object.entries(mergedConfig.adapters)) {\n        const namedDbConfig = dedicatedInstance.buildDatabaseConfig({\n          ...mergedConfig,\n          adapter: adapterConfig.adapter,\n          drizzle: adapterConfig.drizzle,\n          supabase: adapterConfig.supabase,\n          sql: adapterConfig.sql,\n        });\n\n        const namedService = await createDatabaseService(namedDbConfig);\n        dedicatedInstance.namedAdapters.set(name, namedService);\n      }\n    }\n\n    dedicatedInstance.initialized = true;\n\n    return dedicatedInstance;\n  }\n}\n\n/** Type alias for DbService instance (use for type-only imports to avoid bundling) */\nexport type DbServiceInstance = DbService;\n","/**\n * Example Repository\n *\n * Data access layer for Example entities.\n * Extends BaseRepository from @plyaz/db for consistent CRUD operations.\n * Falls back to in-memory dummy data when DbService is not initialized.\n *\n * @example\n * ```typescript\n * // With DbService initialized\n * const db = DbService.getInstance().getDatabase();\n * const repository = new ExampleRepository(db);\n *\n * // Get all entities\n * const result = await repository.findMany();\n * if (result.success) {\n *   console.log('Entities:', result.value.data);\n * }\n *\n * // Get by ID\n * const entity = await repository.findById('123');\n * ```\n */\n\nimport { BaseRepository } from '@plyaz/db';\nimport { DbService } from '../../services/DbService';\nimport { DATABASE_ERROR_CODES } from '@plyaz/types/errors';\nimport { DatabasePackageError } from '@plyaz/errors';\nimport { generateId } from '../../utils/common';\nimport { SYSTEM_USER_ID } from '@plyaz/types/core';\nimport type {\n  DatabaseResult,\n  PaginatedResult,\n  QueryOptions,\n  DatabaseServiceInterface,\n  OperationConfig,\n} from '@plyaz/types/db';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Database row type for Example entity (snake_case for DB)\n */\nexport interface ExampleDatabaseRow {\n  id: string;\n  name: string;\n  description: string | null;\n  amount: number;\n  owner_id: string;\n  status: string;\n  is_visible: boolean;\n  created_at: string;\n  updated_at: string;\n  deleted_at?: string | null;\n  [key: string]: unknown;\n}\n\n/**\n * Create input for Example entity\n */\nexport type ExampleCreateInput = Omit<\n  ExampleDatabaseRow,\n  'id' | 'created_at' | 'updated_at' | 'deleted_at'\n>;\n\n/**\n * Update input for Example entity\n */\nexport type ExampleUpdateInput = Partial<Omit<ExampleDatabaseRow, 'id' | 'created_at'>>;\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Constants\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** Default table name for examples */\nconst EXAMPLE_TABLE = 'examples';\n\n/** Default pagination limit for list queries */\nconst DEFAULT_PAGINATION_LIMIT = 100;\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Dummy Data (fallback when DbService not available)\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst DUMMY_DATA: ExampleDatabaseRow[] = [\n  {\n    id: 'example-001',\n    name: 'Premium Subscription',\n    description: 'Monthly premium subscription plan',\n    amount: 9999,\n    owner_id: 'user-001',\n    status: 'active',\n    is_visible: true,\n    created_at: '2024-01-15T10:00:00Z',\n    updated_at: '2024-01-15T10:00:00Z',\n  },\n  {\n    id: 'example-002',\n    name: 'Basic Plan',\n    description: 'Free tier with limited features',\n    amount: 0,\n    owner_id: 'user-001',\n    status: 'active',\n    is_visible: true,\n    created_at: '2024-01-10T08:30:00Z',\n    updated_at: '2024-01-12T14:20:00Z',\n  },\n  {\n    id: 'example-003',\n    name: 'Enterprise License',\n    description: 'Custom enterprise solution',\n    amount: 99999,\n    owner_id: 'user-002',\n    status: 'draft',\n    is_visible: false,\n    created_at: '2024-02-01T09:00:00Z',\n    updated_at: '2024-02-01T09:00:00Z',\n  },\n];\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Repository\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Example Repository\n *\n * Extends BaseRepository for consistent data access patterns.\n * When DbService is not initialized, falls back to in-memory dummy data.\n *\n * @example\n * ```typescript\n * // Create repository (auto-detects DbService availability)\n * const repo = ExampleRepository.create();\n *\n * // Or with explicit database service\n * const db = DbService.getInstance().getDatabase();\n * const repo = new ExampleRepository(db);\n *\n * // Use CRUD operations\n * const result = await repo.findById('example-001');\n * ```\n */\nexport class ExampleRepository extends BaseRepository<ExampleDatabaseRow> {\n  private readonly useDummyData: boolean;\n  private dummyStore: ExampleDatabaseRow[];\n\n  constructor(db: DatabaseServiceInterface, useDummyData = false) {\n    super(db, EXAMPLE_TABLE);\n    this.useDummyData = useDummyData;\n    this.dummyStore = [...DUMMY_DATA];\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Static Factory\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Create repository instance.\n   * Uses DbService if initialized, otherwise creates a dummy-data repository.\n   */\n  static create(): ExampleRepository {\n    if (DbService.isInitialized()) {\n      const db = DbService.getInstance().getDatabase();\n      return new ExampleRepository(db, false);\n    }\n\n    // Create with dummy mode - db won't be used\n    // We pass a mock db that won't be called when useDummyData is true\n    const mockDb = {} as DatabaseServiceInterface;\n    return new ExampleRepository(mockDb, true);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Override Base Methods to Support Dummy Data Fallback\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Find entity by ID\n   */\n  override async findById(\n    id: string,\n    config?: OperationConfig\n  ): Promise<DatabaseResult<ExampleDatabaseRow | null>> {\n    if (this.useDummyData) {\n      const row = this.dummyStore.find(r => r.id === id && !r.deleted_at);\n      return { success: true, value: row ?? null };\n    }\n    return super.findById(id, config);\n  }\n\n  /**\n   * Find multiple entities\n   */\n  // eslint-disable-next-line complexity\n  override async findMany(\n    options?: QueryOptions<ExampleDatabaseRow>,\n    config?: OperationConfig\n  ): Promise<DatabaseResult<PaginatedResult<ExampleDatabaseRow>>> {\n    if (this.useDummyData) {\n      let data = this.dummyStore.filter(r => !r.deleted_at);\n\n      // Apply basic filtering if provided\n      if (options?.filter && 'field' in options.filter) {\n        const { field, value } = options.filter;\n        data = data.filter(r => r[field as keyof ExampleDatabaseRow] === value);\n      }\n\n      // Apply pagination\n      const offset = options?.pagination?.offset ?? 0;\n      const limit = options?.pagination?.limit ?? DEFAULT_PAGINATION_LIMIT;\n      const paginatedData = data.slice(offset, offset + limit);\n\n      return {\n        success: true,\n        value: {\n          data: paginatedData,\n          total: data.length,\n          pagination: {\n            page: Math.floor(offset / limit) + 1,\n            limit,\n          },\n        },\n      };\n    }\n    return super.findMany(options, config);\n  }\n\n  /**\n   * Create new entity\n   *\n   * Note: `id` is auto-generated by DB (uuid_generate_v4) if not provided.\n   * `owner_id` is required by FK constraint - must be a valid user UUID (or null if DB allows).\n   */\n  // eslint-disable-next-line complexity\n  override async create(\n    data: Partial<ExampleDatabaseRow>,\n    config?: OperationConfig\n  ): Promise<DatabaseResult<ExampleDatabaseRow>> {\n    const now = new Date().toISOString();\n\n    // For dummy data mode, we need an ID since there's no DB to generate one\n    if (this.useDummyData) {\n      const row: ExampleDatabaseRow = {\n        id: data.id ?? generateId(),\n        name: data.name ?? '',\n        description: data.description ?? null,\n        amount: data.amount ?? 0,\n        owner_id: data.owner_id ?? SYSTEM_USER_ID,\n        status: data.status ?? 'draft',\n        is_visible: data.is_visible ?? true,\n        created_at: now,\n        updated_at: now,\n      };\n      this.dummyStore.push(row);\n      return { success: true, value: row };\n    }\n\n    // For real DB: let DB generate id via uuid_generate_v4() if not provided\n    const row: Omit<ExampleDatabaseRow, 'id'> & { id?: string } = {\n      ...(data.id && { id: data.id }),\n      name: data.name ?? '',\n      description: data.description ?? null,\n      amount: data.amount ?? 0,\n      owner_id: data.owner_id ?? SYSTEM_USER_ID,\n      status: data.status ?? 'draft',\n      is_visible: data.is_visible ?? true,\n      created_at: now,\n      updated_at: now,\n    };\n\n    return super.create(row, config);\n  }\n\n  /**\n   * Update entity\n   */\n  override async update(\n    id: string,\n    data: Partial<ExampleDatabaseRow>,\n    config?: OperationConfig\n  ): Promise<DatabaseResult<ExampleDatabaseRow>> {\n    const updateData = {\n      ...data,\n      updated_at: new Date().toISOString(),\n    };\n\n    if (this.useDummyData) {\n      const index = this.dummyStore.findIndex(r => r.id === id && !r.deleted_at);\n      if (index === -1) {\n        return {\n          success: false,\n          value: null as unknown as ExampleDatabaseRow,\n          error: new DatabasePackageError(\n            `Example not found: ${id}`,\n            DATABASE_ERROR_CODES.ENTITY_NOT_FOUND\n          ),\n        };\n      }\n      this.dummyStore[index] = { ...this.dummyStore[index], ...updateData };\n      return { success: true, value: this.dummyStore[index] };\n    }\n\n    return super.update(id, updateData, config);\n  }\n\n  /**\n   * Soft delete entity\n   */\n  override async softDelete(id: string, config?: OperationConfig): Promise<DatabaseResult<void>> {\n    if (this.useDummyData) {\n      const index = this.dummyStore.findIndex(r => r.id === id && !r.deleted_at);\n      if (index !== -1) {\n        this.dummyStore[index].deleted_at = new Date().toISOString();\n      }\n      return { success: true, value: undefined };\n    }\n    return super.softDelete(id, config);\n  }\n\n  /**\n   * Hard delete entity\n   */\n  override async delete(id: string, config?: OperationConfig): Promise<DatabaseResult<void>> {\n    if (this.useDummyData) {\n      const index = this.dummyStore.findIndex(r => r.id === id);\n      if (index !== -1) {\n        this.dummyStore.splice(index, 1);\n      }\n      return { success: true, value: undefined };\n    }\n    return super.delete(id, config);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Domain-Specific Query Methods (using QueryBuilder fluent API)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Find entities by status using fluent QueryBuilder\n   *\n   * @example\n   * ```typescript\n   * const result = await repo.findByStatus('active');\n   * ```\n   */\n  async findByStatus(status: string): Promise<DatabaseResult<PaginatedResult<ExampleDatabaseRow>>> {\n    if (this.useDummyData) {\n      return this.findMany({\n        filter: { field: 'status', operator: 'eq', value: status },\n      });\n    }\n    return this.query().where('status', 'eq', status).execute();\n  }\n\n  /**\n   * Find entities by owner using fluent QueryBuilder\n   *\n   * @example\n   * ```typescript\n   * const result = await repo.findByOwner('user-001');\n   * ```\n   */\n  async findByOwner(ownerId: string): Promise<DatabaseResult<PaginatedResult<ExampleDatabaseRow>>> {\n    if (this.useDummyData) {\n      return this.findMany({\n        filter: { field: 'owner_id', operator: 'eq', value: ownerId },\n      });\n    }\n    return this.query().where('owner_id', 'eq', ownerId).execute();\n  }\n\n  /**\n   * Find visible entities only using fluent QueryBuilder\n   *\n   * @example\n   * ```typescript\n   * const result = await repo.findVisible();\n   * ```\n   */\n  async findVisible(): Promise<DatabaseResult<PaginatedResult<ExampleDatabaseRow>>> {\n    if (this.useDummyData) {\n      return this.findMany({\n        filter: { field: 'is_visible', operator: 'eq', value: true },\n      });\n    }\n    return this.query().where('is_visible', 'eq', true).execute();\n  }\n\n  /**\n   * Find active and visible entities using complex QueryBuilder\n   *\n   * @example\n   * ```typescript\n   * const items = await repo.findActiveAndVisible();\n   * ```\n   */\n  async findActiveAndVisible(): Promise<ExampleDatabaseRow[]> {\n    if (this.useDummyData) {\n      return this.dummyStore.filter(r => r.status === 'active' && r.is_visible && !r.deleted_at);\n    }\n    return this.query()\n      .where('status', 'eq', 'active')\n      .andWhere('is_visible', 'eq', true)\n      .whereNull('deleted_at')\n      .orderByDesc('created_at')\n      .getMany();\n  }\n\n  /**\n   * Find entities by owner with status filter using QueryBuilder\n   *\n   * @example\n   * ```typescript\n   * const items = await repo.findByOwnerWithStatus('user-001', 'active');\n   * ```\n   */\n  async findByOwnerWithStatus(ownerId: string, status: string): Promise<ExampleDatabaseRow[]> {\n    if (this.useDummyData) {\n      return this.dummyStore.filter(\n        r => r.owner_id === ownerId && r.status === status && !r.deleted_at\n      );\n    }\n    return this.query()\n      .where('owner_id', 'eq', ownerId)\n      .andWhere('status', 'eq', status)\n      .orderByDesc('updated_at')\n      .getMany();\n  }\n\n  /**\n   * Count entities by status using QueryBuilder\n   *\n   * @example\n   * ```typescript\n   * const count = await repo.countByStatus('active');\n   * ```\n   */\n  async countByStatus(status: string): Promise<number> {\n    if (this.useDummyData) {\n      return this.dummyStore.filter(r => r.status === status && !r.deleted_at).length;\n    }\n    return this.query().where('status', 'eq', status).count();\n  }\n\n  /**\n   * Check if entity exists by ID\n   */\n  override async exists(id: string, config?: OperationConfig): Promise<DatabaseResult<boolean>> {\n    if (this.useDummyData) {\n      const exists = this.dummyStore.some(r => r.id === id && !r.deleted_at);\n      return { success: true, value: exists };\n    }\n    return super.exists(id, config);\n  }\n\n  /**\n   * Get the table name for this repository\n   * Used for transaction operations\n   */\n  override getTableName(): string {\n    return EXAMPLE_TABLE;\n  }\n}\n","/**\n * Example Models/Repositories\n *\n * Data access layer for Example entities.\n */\nexport {\n  ExampleRepository,\n  type ExampleDatabaseRow,\n  type ExampleCreateInput,\n  type ExampleUpdateInput,\n} from './ExampleRepository';\n","/**\n * Example Validator\n *\n * Demonstrates extending BaseValidator for a domain entity.\n * Uses schemas and types from @plyaz/types/examples.\n */\n\nimport { BaseValidator } from '../../base';\nimport {\n  CreateExampleSchema,\n  UpdateExampleSchema,\n  PatchExampleSchema,\n  DeleteExampleSchema,\n  QueryExampleSchema,\n} from '@plyaz/types/examples';\nimport type {\n  CreateExampleDTO,\n  UpdateExampleDTO,\n  PatchExampleDTO,\n  DeleteExampleDTO,\n  QueryExampleDTO,\n} from '@plyaz/types/examples';\n\n/**\n * Example Validator implementation\n *\n * Supports all HTTP operations:\n * - create (POST)\n * - update (PUT)\n * - patch (PATCH)\n * - delete (DELETE)\n * - query (GET)\n */\nclass ExampleValidatorClass extends BaseValidator<\n  CreateExampleDTO,\n  UpdateExampleDTO,\n  PatchExampleDTO,\n  DeleteExampleDTO,\n  QueryExampleDTO\n> {\n  constructor() {\n    super({\n      createSchema: CreateExampleSchema,\n      updateSchema: UpdateExampleSchema,\n      patchSchema: PatchExampleSchema,\n      deleteSchema: DeleteExampleSchema,\n      querySchema: QueryExampleSchema,\n    });\n  }\n\n  /**\n   * Custom validation: check if name is not reserved\n   * Use for business logic validation beyond schema validation\n   */\n  validateNameNotReserved(name: string): boolean {\n    const reserved = ['admin', 'system', 'root', 'test'];\n    return !reserved.includes(name.toLowerCase());\n  }\n\n  /**\n   * Custom validation: check if amount is within budget\n   */\n  validateAmountWithinBudget(amount: number, budget: number): boolean {\n    return amount <= budget;\n  }\n}\n\n// Export class for BaseDomainService.ValidatorClass\nexport { ExampleValidatorClass };\n\n// Singleton instance (for direct usage)\nexport const ExampleValidator = new ExampleValidatorClass();\n","/**\n * Backend Example Domain Service\n *\n * Demonstrates extending BaseBackendDomainService which provides:\n * - Automatic validation → mapper → repository/API → mapper flow\n * - Event emission throughout CRUD lifecycle\n * - Dual mode: Repository (DbService/dummy) OR HTTP API\n * - Configurable error throwing behavior\n *\n * This service only needs to:\n * - Initialize repository in constructor\n * - Set eventPrefix for event emission\n * - Implement isAvailable() and dispose()\n * - Add any custom domain methods\n *\n * All standard CRUD operations are inherited with cache support:\n * - create(data, options?) - Create with optional caching\n * - patch(id, data, options?) - Update with automatic cache invalidation\n * - delete(id, deleteOptions?, crudOptions?) - Delete with automatic cache invalidation\n * - getById(id, options?) - Read with cache-aside pattern\n *\n * Runtime: Backend (NestJS, Express, Node.js)\n * - Uses repository (DbService or dummy data fallback)\n * - Auto-initialized by Core.initialize() as part of DomainServices\n * - For HTTP API calls, use fetchers from @plyaz/api directly\n *\n * @example\n * ```tsx\n * // Create service\n * const service = await BackendExampleDomainService.create({\n *   throwOnValidationError: true, // Throw on validation errors (default)\n *   throwOnRepositoryError: true, // Throw on repository errors (default)\n * });\n *\n * // Use inherited CRUD methods\n * const entity = await service.create({ name: 'Test', amount: 100 });\n * const updated = await service.patch(entity.id, { amount: 200 });\n * await service.delete(entity.id, { soft: true });\n * ```\n */\n\nimport { BaseBackendDomainService } from '../base';\nimport type {\n  ExampleEntity,\n  ExampleResponseDTO,\n  CreateExampleDTO,\n  PatchExampleDTO,\n  QueryExampleDTO,\n  DeleteExampleDTO,\n  ExampleStoreItem,\n  ExampleDomainServiceConfig as _ExampleDomainServiceConfig,\n} from '@plyaz/types/examples';\nimport { SERVICE_KEYS } from '@plyaz/types/core';\nimport type { CoreServiceCreateOptions, CoreInjectedServices } from '@plyaz/types/core';\nimport { ExampleRepository, type ExampleDatabaseRow } from '../../models/example';\nimport { ExampleMapperClass } from './mappers/ExampleMapper';\nimport { ExampleValidatorClass } from './validators/ExampleValidator';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Mapper type for this service\n */\ntype ExampleMapper = InstanceType<typeof ExampleMapperClass>;\n\n/**\n * Validator type for this service\n */\ntype ExampleValidator = InstanceType<typeof ExampleValidatorClass>;\n\n/**\n * Example event types (for subscription)\n */\nexport type ExampleEventType =\n  // Lifecycle events\n  | 'example:creating'\n  | 'example:created'\n  | 'example:updating'\n  | 'example:updated'\n  | 'example:deleting'\n  | 'example:deleted'\n  | 'example:complete'\n  | 'example:error'\n  // Validation events\n  | 'example:validation:started'\n  | 'example:validation:success'\n  | 'example:validation:failed'\n  // Sanitization events\n  | 'example:sanitization:started'\n  | 'example:sanitization:complete'\n  // Document generation events (via @plyaz/storage - generateFile)\n  | 'example:document:generating'\n  | 'example:document:generated'\n  | 'example:document:error'\n  // File upload events (via @plyaz/storage - uploadFile with template)\n  | 'example:upload:uploading'\n  | 'example:upload:uploaded'\n  | 'example:upload:error'\n  // Email sending events (via @plyaz/notifications)\n  | 'example:email:sending'\n  | 'example:email:sent'\n  | 'example:email:error';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Service\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Backend Example Domain Service\n *\n * Extends BaseBackendDomainService with all generic types:\n * - TConfig: ExampleDomainServiceConfig\n * - TEntity: ExampleEntity\n * - TResponseDTO: ExampleResponseDTO\n * - TCreateDTO: CreateExampleDTO\n * - TUpdateDTO: CreateExampleDTO (same as create)\n * - TPatchDTO: PatchExampleDTO\n * - TQueryDTO: QueryExampleDTO\n * - TDeleteOptions: DeleteExampleDTO\n * - TRepository: ExampleRepository\n * - TDatabaseRow: ExampleDatabaseRow\n * - TStoreState: ExampleStoreItem\n * - TMapper: ExampleMapper\n * - TValidator: ExampleValidator\n *\n * All CRUD methods are inherited from base class - no need to implement!\n */\nexport class BackendExampleDomainService extends BaseBackendDomainService<\n  _ExampleDomainServiceConfig,\n  ExampleEntity,\n  ExampleResponseDTO,\n  CreateExampleDTO,\n  CreateExampleDTO, // Update same as create\n  PatchExampleDTO,\n  QueryExampleDTO, // Query/filter type for getAll()\n  DeleteExampleDTO,\n  ExampleDatabaseRow,\n  ExampleRepository,\n  ExampleStoreItem,\n  ExampleMapper,\n  ExampleValidator\n> {\n  // ─────────────────────────────────────────────────────────────────────────\n  // Required Properties\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Repository instance for data access\n   * Required by BaseBackendDomainService\n   */\n  protected repository: ExampleRepository;\n\n  /**\n   * Event prefix for all events emitted by this service\n   * Required by BaseBackendDomainService\n   */\n  protected eventPrefix = 'example';\n\n  /**\n   * Cache prefix for namespacing cache keys\n   * Optional: defaults to serviceName.toLowerCase() if not set\n   */\n  protected cachePrefix = 'example';\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Injected Services\n  // NOTE: storageService and notificationsService are inherited from BaseBackendDomainService\n  // - storageService: uploadFile(), generateFile(), downloadFile(), deleteFile(), getSignedUrl()\n  // - notificationsService: sendEmail(), sendSMS(), sendPush()\n  // ─────────────────────────────────────────────────────────────────────────\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Static: Service Registry Interface\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Unique key for this service (used by ServiceRegistry)\n   */\n  static readonly serviceKey = SERVICE_KEYS.EXAMPLE;\n\n  /**\n   * Factory method for ServiceRegistry auto-initialization.\n   * Creates and initializes the service instance.\n   *\n   * @param config - Service configuration\n   * @param options - Global options from the registry (includes cache, db, api instances)\n   * @returns Promise resolving to the initialized service instance\n   */\n  // eslint-disable-next-line complexity\n  static async create(\n    config: _ExampleDomainServiceConfig,\n    options?: CoreServiceCreateOptions\n  ): Promise<BackendExampleDomainService> {\n    // Build injected services from options (all injected by ServiceRegistry)\n    const injected: CoreInjectedServices = {\n      cache: options?.cache?.instance,\n      db: options?.db?.instance,\n      api: options?.apiClient?.instance,\n      storage: options?.storage?.instance,\n      notifications: options?.notifications?.instance,\n    };\n\n    const service = new BackendExampleDomainService(config, injected);\n    return service;\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Constructor\n  // ─────────────────────────────────────────────────────────────────────────\n\n  constructor(config: _ExampleDomainServiceConfig = {}, injected?: CoreInjectedServices) {\n    const serviceConfig: _ExampleDomainServiceConfig = {\n      enabled: true,\n      throwOnValidationError: true,\n      throwOnRepositoryError: true,\n      emitEvents: true,\n      cache: {\n        enabled: true, // Enable cache by default\n        defaultTtl: 300, // 5 minutes default TTL\n      },\n      ...config,\n    };\n\n    super({\n      serviceName: 'BackendExampleDomainService',\n      supportedRuntimes: ['backend'] as const,\n      serviceConfig,\n      mapperClass: ExampleMapperClass,\n      validatorClass: ExampleValidatorClass,\n      injected, // Pass all injected services (cache, db, api, storage, notifications)\n    });\n\n    // Initialize repository (uses DbService if available, else dummy data)\n    this.repository = ExampleRepository.create();\n\n    // NOTE: storageService and notificationsService are handled by BaseBackendDomainService\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Abstract Implementations (Required by BaseDomainService)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Check if service is available\n   * Service is available if enabled (repository is always available)\n   */\n  isAvailable(): boolean {\n    return this.isServiceEnabled;\n  }\n\n  /**\n   * Dispose/cleanup the service\n   */\n  dispose(): void {\n    this.logInfo('Service disposed');\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Custom Domain Methods (Optional)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Configure the service (mutates config)\n   * Use this to update configuration at runtime\n   */\n  configure(updates: Partial<_ExampleDomainServiceConfig>): void {\n    Object.assign(this.config, updates);\n    this.logDebug('Service configured', { config: this.config });\n  }\n\n  /**\n   * Subscribe to service events\n   * Uses CoreEventManager under the hood\n   *\n   * @param event - Event type to listen for\n   * @param handler - Event handler function\n   * @returns Unsubscribe function\n   */\n  // eslint-disable-next-line no-unused-vars\n  on(event: ExampleEventType, handler: (data: unknown) => void): () => void {\n    // Note: Events are emitted with prefix by BaseBackendDomainService\n    // E.g., 'creating' becomes 'example:creating'\n    return this.emitEvent as never; // Placeholder - actual implementation would use CoreEventManager\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Demo Methods - Error Handling Examples\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Demo: Single validation error\n   * Validates data with ONE field invalid to trigger single validation error in array\n   *\n   * @throws ValidationError[] (array with 1 error)\n   */\n  demoSingleValidationError(): void {\n    // Pass data with only ONE invalid field - validator throws [ValidationError]\n    this.validator.validateCreateOrThrow({\n      name: '', // Empty - required field (SINGLE ERROR)\n      amount: 100, // Valid\n      description: 'Valid description',\n      is_visible: true,\n    });\n  }\n\n  /**\n   * Demo: Multiple validation errors\n   * Validates data with MULTIPLE fields invalid to trigger array of validation errors\n   *\n   * @throws ValidationError[] (array with multiple errors)\n   */\n  demoMultipleValidationErrors(): void {\n    // Pass data with MULTIPLE invalid fields - validator throws [ValidationError, ValidationError, ...]\n    this.validator.validateCreateOrThrow({\n      name: '', // Empty - required field (ERROR 1)\n      amount: -100, // Negative - must be non-negative (ERROR 2)\n      description: '', // Empty - if required (ERROR 3)\n      is_visible: undefined, // Missing/invalid (ERROR 4)\n    });\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Demo Methods - getAll() Examples\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Demo: Get all examples with optional filters\n   * Demonstrates the getAll() method with typed query parameters\n   *\n   * @param filters - Optional query filters (status, pagination, sorting)\n   * @returns Promise resolving to array of ExampleEntity\n   *\n   * @example\n   * ```typescript\n   * // Get all active examples\n   * const activeExamples = await service.getExamples({ status: 'active' });\n   *\n   * // Get archived examples with pagination\n   * const archivedExamples = await service.getExamples({\n   *   status: 'archived',\n   *   page: 2,\n   *   limit: 10\n   * });\n   *\n   * // Get all examples sorted by name\n   * const sortedExamples = await service.getExamples({\n   *   sort_by: 'name',\n   *   sort_order: 'asc'\n   * });\n   * ```\n   */\n  async getExamples(filters?: QueryExampleDTO): Promise<ExampleEntity[]> {\n    return this.getAll(filters); // Properly typed!\n  }\n\n  /**\n   * Demo: Get active examples only\n   * Convenience method demonstrating filtering\n   */\n  async getActiveExamples(): Promise<ExampleEntity[]> {\n    return this.getAll({ status: 'active' });\n  }\n\n  /**\n   * Demo: Get draft examples only\n   * Convenience method demonstrating filtering\n   */\n  async getDraftExamples(): Promise<ExampleEntity[]> {\n    return this.getAll({ status: 'draft' });\n  }\n\n  /**\n   * Demo: Get archived examples only\n   * Convenience method demonstrating filtering\n   */\n  async getArchivedExamples(): Promise<ExampleEntity[]> {\n    return this.getAll({ status: 'archived' });\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Demo Methods - Bulk Operations & Existence Checks\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Demo: Check if an example exists\n   * More efficient than fetching the full entity when you only need existence\n   *\n   * @param id - Example ID to check\n   * @returns Promise resolving to boolean\n   *\n   * @example\n   * ```typescript\n   * const exists = await service.checkExampleExists('123');\n   * if (exists) {\n   *   console.log('Example exists!');\n   * }\n   * ```\n   */\n  async checkExampleExists(id: string): Promise<boolean> {\n    return this.exists(id);\n  }\n\n  /**\n   * Demo: Create multiple examples at once\n   * More efficient than calling create() multiple times\n   *\n   * @param dataArray - Array of example data to create\n   * @returns Promise resolving to array of created entities\n   *\n   * @example\n   * ```typescript\n   * const examples = await service.createMultipleExamples([\n   *   { name: 'Example 1', amount: 100 },\n   *   { name: 'Example 2', amount: 200 },\n   *   { name: 'Example 3', amount: 300 },\n   * ]);\n   * console.log(`Created ${examples.length} examples`);\n   * ```\n   */\n  async createMultipleExamples(dataArray: CreateExampleDTO[]): Promise<ExampleEntity[]> {\n    return this.bulkCreate(dataArray);\n  }\n\n  /**\n   * Demo: Delete multiple examples at once\n   * More efficient than calling delete() multiple times\n   *\n   * @param ids - Array of example IDs to delete\n   * @param soft - Whether to soft delete (default: true)\n   * @returns Promise resolving when all deletions complete\n   *\n   * @example\n   * ```typescript\n   * // Soft delete multiple examples\n   * await service.deleteMultipleExamples(['id1', 'id2', 'id3'], true);\n   *\n   * // Hard delete multiple examples\n   * await service.deleteMultipleExamples(['id1', 'id2', 'id3'], false);\n   * ```\n   */\n  async deleteMultipleExamples(ids: string[], soft = true): Promise<void> {\n    return this.bulkDelete(ids, { soft });\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // NOTE: Storage & Notification Methods Are Inherited from BaseBackendDomainService\n  // ─────────────────────────────────────────────────────────────────────────\n  //\n  // Storage Methods (via @plyaz/storage):\n  // - uploadFile(params) - Upload file (with optional template-based generation)\n  // - generateFile(params) - Generate document from template (returns Buffer)\n  //\n  // Notification Methods (via @plyaz/notifications):\n  // - sendEmail(params) - Send email using templates\n  //\n  // All methods include:\n  // - Event emission (upload:uploading, document:generating, email:sending, etc.)\n  // - Lifecycle hooks (beforeUploadFile, afterUploadFile, etc.)\n  // - Metrics recording\n  // - Error handling\n  //\n  // ─────────────────────────────────────────────────────────────────────────\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // NOTE: CRUD Methods Are Inherited from BaseBackendDomainService\n  // ─────────────────────────────────────────────────────────────────────────\n  //\n  // The following methods are available but NOT implemented here:\n  //\n  // Basic CRUD:\n  // - create(data: unknown): Promise<ExampleEntity>\n  // - getById(id: string, options?): Promise<ExampleEntity | null>\n  // - getAll(query?: QueryExampleDTO, options?): Promise<ExampleEntity[]>\n  // - patch(id: string, data: unknown, options?): Promise<ExampleEntity>\n  // - delete(id: string, deleteOptions?, crudOptions?): Promise<void>\n  //\n  // Utility Methods:\n  // - exists(id: string, options?): Promise<boolean>\n  //\n  // Bulk Operations:\n  // - bulkCreate(dataArray: unknown[], options?): Promise<ExampleEntity[]>\n  // - bulkDelete(ids: string[], deleteOptions?, crudOptions?): Promise<void>\n  //\n  // All validation → mapper → repository → mapper flow is handled automatically!\n  // All events are emitted automatically with 'example:' prefix!\n  // All cache operations are handled automatically (cache-aside, invalidation)!\n  // Bulk operations process sequentially (first error stops execution)!\n  // ─────────────────────────────────────────────────────────────────────────\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Lazy Singleton Instance\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet _instance: BackendExampleDomainService | null = null;\n\n/**\n * Get the singleton instance of BackendExampleDomainService\n * Instance is only created when first called, not at module load time.\n *\n * @example\n * ```tsx\n * import { getBackendExampleDomainService } from '@plyaz/core';\n *\n * const service = await getBackendExampleDomainService();\n * const entity = await service.create({ name: 'Test', amount: 100 });\n * ```\n */\nexport async function getBackendExampleDomainService(): Promise<BackendExampleDomainService> {\n  _instance ??= new BackendExampleDomainService();\n  return _instance;\n}\n\n/**\n * Reset singleton instance (for testing)\n */\nexport function resetExampleDomainService(): void {\n  _instance = null;\n}\n","/**\n * Files Repository\n *\n * Data access layer for Files/Media entities.\n * Extends BaseRepository from @plyaz/db for consistent CRUD operations.\n */\n\nimport { BaseRepository } from '@plyaz/db';\nimport { DbService } from '../../services/DbService';\nimport { DATABASE_ERROR_CODES } from '@plyaz/types/errors';\nimport { DatabasePackageError } from '@plyaz/errors';\nimport type {\n  DatabaseResult,\n  PaginatedResult,\n  QueryOptions,\n  DatabaseServiceInterface,\n  OperationConfig,\n} from '@plyaz/types/db';\nimport { SYSTEM_USER_ID } from '@plyaz/types/core';\nimport type { FilesDatabaseRow } from '@plyaz/types/core';\nimport type { ENTITY_TYPE } from '@plyaz/types/storage';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Constants\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** Table name for media (files) */\nconst TABLE_NAME = 'media';\n\n/** Default pagination limit */\nconst DEFAULT_LIMIT = 100;\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Repository\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Files Repository\n *\n * Data access layer for Files/Media entities.\n * Extends BaseRepository from @plyaz/db for consistent CRUD operations.\n *\n * Inherited from BaseRepository (used directly, no override needed):\n * - findById(id) - Get file by ID\n * - delete(id) - Hard delete file\n * - softDelete(id) - Soft delete file\n * - exists(id) - Check if file exists\n * - query() - Fluent QueryBuilder for complex queries\n * - count(filter) - Count files matching filter\n * - findOne(filter) - Find first matching file\n *\n * Overridden with domain logic:\n * - findMany(options) - Default sorting by created_at DESC\n * - create(data) - Auto-generate ID and timestamps\n *\n * Domain-specific methods:\n * - findByUserId(userId) - Get all files for a user\n * - findByEntityId(entityType, entityId) - Get files for an entity\n * - findByStoragePath(path) - Find file by storage path (for deduplication)\n * - countByUserId(userId) - Count files for a user\n */\nexport class FilesRepository extends BaseRepository<FilesDatabaseRow> {\n  constructor(db: DatabaseServiceInterface) {\n    super(db, TABLE_NAME);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Static Factory\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Create repository instance.\n   * Uses DbService if initialized.\n   */\n  static create(): FilesRepository {\n    if (!DbService.isInitialized()) {\n      throw new DatabasePackageError(\n        'DbService not initialized. Call DbService.initialize() first.',\n        DATABASE_ERROR_CODES.CONNECTION_FAILED\n      );\n    }\n    const db = DbService.getInstance().getDatabase();\n    return new FilesRepository(db);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Overridden Methods (with domain-specific logic)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Find multiple entities with default sorting\n   */\n  // eslint-disable-next-line complexity\n  override async findMany(\n    options?: QueryOptions<FilesDatabaseRow>,\n    config?: OperationConfig\n  ): Promise<DatabaseResult<PaginatedResult<FilesDatabaseRow>>> {\n    const mergedOptions: QueryOptions<FilesDatabaseRow> = {\n      sort: options?.sort ?? [{ field: 'created_at', direction: 'desc' }],\n      pagination: {\n        limit: options?.pagination?.limit ?? DEFAULT_LIMIT,\n        offset: options?.pagination?.offset ?? 0,\n      },\n      filter: options?.filter,\n    };\n\n    return super.findMany(mergedOptions, config);\n  }\n\n  /**\n   * Create new file record with timestamps (ID auto-generated by DB)\n   */\n  // eslint-disable-next-line complexity\n  override async create(\n    data: Partial<FilesDatabaseRow>,\n    config?: OperationConfig\n  ): Promise<DatabaseResult<FilesDatabaseRow>> {\n    const now = new Date().toISOString();\n\n    // Build row - let DB generate id via uuid_generate_v4() if not provided\n    const row: Omit<FilesDatabaseRow, 'id'> & { id?: string } = {\n      ...(data.id && { id: data.id }),\n      user_id: data.user_id ?? SYSTEM_USER_ID,\n      type: data.type ?? 'DOCUMENT',\n      filename: data.filename ?? '',\n      original_filename: data.original_filename ?? data.filename ?? '',\n      mime_type: data.mime_type ?? 'application/octet-stream',\n      file_size: data.file_size ?? 0,\n      storage_path: data.storage_path ?? '',\n      cdn_url: data.cdn_url ?? null,\n      width: data.width ?? null,\n      height: data.height ?? null,\n      duration: data.duration ?? null,\n      is_virus_scanned: data.is_virus_scanned ?? false,\n      virus_scan_result: data.virus_scan_result ?? null,\n      metadata: data.metadata ?? null,\n      variants: data.variants ?? null,\n      entity_type: data.entity_type ?? null,\n      entity_id: data.entity_id ?? null,\n      access_level: data.access_level ?? null,\n      bucket: data.bucket ?? null,\n      created_at: now,\n      updated_at: now,\n      deleted_at: null,\n    };\n\n    return super.create(row, config);\n  }\n\n  /**\n   * Get the table name for this repository\n   */\n  override getTableName(): string {\n    return TABLE_NAME;\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Domain-Specific Methods\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Find all files for a user\n   */\n  async findByUserId(\n    userId: string,\n    options?: { limit?: number; offset?: number }\n  ): Promise<DatabaseResult<PaginatedResult<FilesDatabaseRow>>> {\n    return this.findMany({\n      filter: { field: 'user_id', operator: 'eq', value: userId },\n      pagination: {\n        limit: options?.limit ?? DEFAULT_LIMIT,\n        offset: options?.offset ?? 0,\n      },\n    });\n  }\n\n  /**\n   * Find files for a specific entity (polymorphic association)\n   */\n  async findByEntityId(\n    entityType: ENTITY_TYPE,\n    entityId: string,\n    options?: { limit?: number; offset?: number }\n  ): Promise<DatabaseResult<PaginatedResult<FilesDatabaseRow>>> {\n    return this.query()\n      .where('entity_type', 'eq', entityType)\n      .andWhere('entity_id', 'eq', entityId)\n      .whereNull('deleted_at')\n      .orderByDesc('created_at')\n      .paginate(\n        Math.floor((options?.offset ?? 0) / (options?.limit ?? DEFAULT_LIMIT)) + 1,\n        options?.limit ?? DEFAULT_LIMIT\n      )\n      .execute();\n  }\n\n  /**\n   * Find file by storage path (for deduplication checks)\n   */\n  async findByStoragePath(storagePath: string): Promise<DatabaseResult<FilesDatabaseRow | null>> {\n    return this.findOne({ field: 'storage_path', operator: 'eq', value: storagePath });\n  }\n\n  /**\n   * Count files for a user\n   */\n  async countByUserId(userId: string): Promise<DatabaseResult<number>> {\n    return this.count({ field: 'user_id', operator: 'eq', value: userId });\n  }\n\n  /**\n   * Find files by MIME type\n   */\n  async findByMimeType(\n    mimeType: string,\n    options?: { limit?: number; offset?: number }\n  ): Promise<DatabaseResult<PaginatedResult<FilesDatabaseRow>>> {\n    return this.findMany({\n      filter: { field: 'mime_type', operator: 'eq', value: mimeType },\n      pagination: {\n        limit: options?.limit ?? DEFAULT_LIMIT,\n        offset: options?.offset ?? 0,\n      },\n    });\n  }\n\n  /**\n   * Find files by type (IMAGE, VIDEO, DOCUMENT, AUDIO)\n   */\n  async findByType(\n    type: string,\n    options?: { limit?: number; offset?: number }\n  ): Promise<DatabaseResult<PaginatedResult<FilesDatabaseRow>>> {\n    return this.findMany({\n      filter: { field: 'type', operator: 'eq', value: type },\n      pagination: {\n        limit: options?.limit ?? DEFAULT_LIMIT,\n        offset: options?.offset ?? 0,\n      },\n    });\n  }\n}\n","/**\n * Media Variants Repository\n *\n * Data access layer for media_variants table.\n * Provides normalized storage for file variants (thumbnail, mobile, desktop, 4k).\n *\n * Use this repository when you need to:\n * - Query variants by name (e.g., \"find all thumbnails\")\n * - Query variants by dimensions\n * - Aggregate variant storage usage\n * - Clean up orphaned variants\n *\n * For simple variant access, use FilesDatabaseRow.variants JSONB column instead.\n */\n\nimport { BaseRepository } from '@plyaz/db';\nimport { DbService } from '../../services/DbService';\nimport { DATABASE_ERROR_CODES } from '@plyaz/types/errors';\nimport { DatabasePackageError } from '@plyaz/errors';\nimport type {\n  DatabaseResult,\n  PaginatedResult,\n  QueryOptions,\n  DatabaseServiceInterface,\n  OperationConfig,\n} from '@plyaz/types/db';\nimport type { MediaVariantsDatabaseRow } from '@plyaz/types/core';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Constants\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** Table name for media variants */\nconst TABLE_NAME = 'media_variants';\n\n/** Default pagination limit */\nconst DEFAULT_LIMIT = 100;\n\n/** Standard variant names */\nexport const VARIANT_NAMES = {\n  THUMBNAIL: 'thumbnail',\n  MOBILE: 'mobile',\n  DESKTOP: 'desktop',\n  HD_4K: '4k',\n} as const;\n\nexport type VariantName = (typeof VARIANT_NAMES)[keyof typeof VARIANT_NAMES];\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Repository\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Media Variants Repository\n *\n * Extends BaseRepository for normalized variant storage and querying.\n *\n * Inherited from BaseRepository (used directly):\n * - findById(id) - Get variant by ID\n * - delete(id) - Delete variant\n * - exists(id) - Check if variant exists\n * - query() - Fluent QueryBuilder\n * - count(filter) - Count variants\n * - findOne(filter) - Find single variant\n *\n * Domain-specific methods:\n * - findByMediaId(mediaId) - Get all variants for a media file\n * - findByVariantName(name) - Get all variants of a specific type\n * - findByMediaIdAndName(mediaId, name) - Get specific variant for a media file\n * - deleteByMediaId(mediaId) - Delete all variants for a media file\n * - getTotalSizeByMediaId(mediaId) - Get total storage size for a file's variants\n */\nexport class MediaVariantsRepository extends BaseRepository<MediaVariantsDatabaseRow> {\n  constructor(db: DatabaseServiceInterface) {\n    super(db, TABLE_NAME);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Static Factory\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Create repository instance.\n   * Uses DbService if initialized.\n   */\n  static create(): MediaVariantsRepository {\n    if (!DbService.isInitialized()) {\n      throw new DatabasePackageError(\n        'DbService not initialized. Call DbService.initialize() first.',\n        DATABASE_ERROR_CODES.CONNECTION_FAILED\n      );\n    }\n    const db = DbService.getInstance().getDatabase();\n    return new MediaVariantsRepository(db);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Overridden Methods (with domain-specific logic)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Find multiple variants with default sorting\n   */\n  // eslint-disable-next-line complexity\n  override async findMany(\n    options?: QueryOptions<MediaVariantsDatabaseRow>,\n    config?: OperationConfig\n  ): Promise<DatabaseResult<PaginatedResult<MediaVariantsDatabaseRow>>> {\n    const mergedOptions: QueryOptions<MediaVariantsDatabaseRow> = {\n      sort: options?.sort ?? [{ field: 'created_at', direction: 'desc' }],\n      pagination: {\n        limit: options?.pagination?.limit ?? DEFAULT_LIMIT,\n        offset: options?.pagination?.offset ?? 0,\n      },\n      filter: options?.filter,\n    };\n\n    return super.findMany(mergedOptions, config);\n  }\n\n  /**\n   * Create new variant record with auto-generated ID\n   */\n  // eslint-disable-next-line complexity\n  override async create(\n    data: Partial<MediaVariantsDatabaseRow>,\n    config?: OperationConfig\n  ): Promise<DatabaseResult<MediaVariantsDatabaseRow>> {\n    const now = new Date().toISOString();\n\n    // Build row - let DB generate id via uuid_generate_v4() if not provided\n    const row: Omit<MediaVariantsDatabaseRow, 'id'> & { id?: string } = {\n      ...(data.id && { id: data.id }),\n      media_id: data.media_id ?? '',\n      variant_name: data.variant_name ?? '',\n      file_path: data.file_path ?? '',\n      cdn_url: data.cdn_url ?? null,\n      width: data.width ?? null,\n      height: data.height ?? null,\n      file_size: data.file_size ?? null,\n      created_at: now,\n    };\n\n    return super.create(row, config);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Domain-Specific Methods\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Find all variants for a media file\n   */\n  async findByMediaId(\n    mediaId: string,\n    options?: { limit?: number; offset?: number }\n  ): Promise<DatabaseResult<PaginatedResult<MediaVariantsDatabaseRow>>> {\n    return this.findMany({\n      filter: { field: 'media_id', operator: 'eq', value: mediaId },\n      pagination: {\n        limit: options?.limit ?? DEFAULT_LIMIT,\n        offset: options?.offset ?? 0,\n      },\n    });\n  }\n\n  /**\n   * Find all variants of a specific type (e.g., all thumbnails)\n   */\n  async findByVariantName(\n    variantName: VariantName | string,\n    options?: { limit?: number; offset?: number }\n  ): Promise<DatabaseResult<PaginatedResult<MediaVariantsDatabaseRow>>> {\n    return this.findMany({\n      filter: { field: 'variant_name', operator: 'eq', value: variantName },\n      pagination: {\n        limit: options?.limit ?? DEFAULT_LIMIT,\n        offset: options?.offset ?? 0,\n      },\n    });\n  }\n\n  /**\n   * Find a specific variant for a media file\n   */\n  async findByMediaIdAndName(\n    mediaId: string,\n    variantName: VariantName | string\n  ): Promise<DatabaseResult<MediaVariantsDatabaseRow | null>> {\n    const record = await this.query()\n      .where('media_id', 'eq', mediaId)\n      .andWhere('variant_name', 'eq', variantName)\n      .getOne();\n    return { success: true, value: record };\n  }\n\n  /**\n   * Delete all variants for a media file\n   */\n  async deleteByMediaId(mediaId: string): Promise<DatabaseResult<number>> {\n    const result = await this.findByMediaId(mediaId);\n    if (!result.success || !result.value) {\n      return { success: true, value: 0 };\n    }\n\n    let deleted = 0;\n    for (const variant of result.value.data) {\n      const deleteResult = await this.delete(variant.id);\n      if (deleteResult.success) {\n        deleted++;\n      }\n    }\n\n    return { success: true, value: deleted };\n  }\n\n  /**\n   * Count variants for a media file\n   */\n  async countByMediaId(mediaId: string): Promise<DatabaseResult<number>> {\n    return this.count({ field: 'media_id', operator: 'eq', value: mediaId });\n  }\n\n  /**\n   * Count all variants of a specific type\n   */\n  async countByVariantName(variantName: VariantName | string): Promise<DatabaseResult<number>> {\n    return this.count({ field: 'variant_name', operator: 'eq', value: variantName });\n  }\n\n  /**\n   * Find variants by dimensions (useful for responsive queries)\n   */\n  async findByMinWidth(\n    minWidth: number,\n    options?: { limit?: number; offset?: number }\n  ): Promise<DatabaseResult<PaginatedResult<MediaVariantsDatabaseRow>>> {\n    return this.query()\n      .where('width', 'gte', minWidth)\n      .orderByDesc('width')\n      .paginate(\n        Math.floor((options?.offset ?? 0) / (options?.limit ?? DEFAULT_LIMIT)) + 1,\n        options?.limit ?? DEFAULT_LIMIT\n      )\n      .execute();\n  }\n\n  /**\n   * Upsert variant - create or update if exists\n   */\n  async upsert(\n    mediaId: string,\n    variantName: VariantName | string,\n    data: Partial<MediaVariantsDatabaseRow>\n  ): Promise<DatabaseResult<MediaVariantsDatabaseRow>> {\n    const existing = await this.findByMediaIdAndName(mediaId, variantName);\n\n    if (existing.success && existing.value) {\n      // Update existing\n      return this.update(existing.value.id, {\n        ...data,\n        media_id: mediaId,\n        variant_name: variantName,\n      });\n    }\n\n    // Create new\n    return this.create({\n      ...data,\n      media_id: mediaId,\n      variant_name: variantName,\n    });\n  }\n}\n","/**\n * Files Models Exports\n *\n * Types (FilesDatabaseRow, FilesCreateInput, MediaVariantsDatabaseRow) are in @plyaz/types/core\n */\n\nexport { FilesRepository } from './FilesRepository';\nexport {\n  MediaVariantsRepository,\n  VARIANT_NAMES,\n  type VariantName,\n} from './MediaVariantsRepository';\n","/**\n * Files Validator\n *\n * Domain-level validation for files.\n * File content validation is handled by @plyaz/storage (FileValidator, FilePathGenerator).\n * This validator provides domain-specific business rules and DB row validation.\n *\n * Note: Most file operations (upload, download, delete) are validated by:\n * - @plyaz/storage FileValidator for content/MIME validation\n * - @plyaz/storage FilePathGenerator.sanitizeFilename for filename sanitization\n * - @plyaz/api schemas for request validation\n * - This validator for DB row validation before insert\n */\n\nimport { BaseValidator } from '../../base';\nimport { CreateFilesSchema, PatchFilesSchema } from '@plyaz/types/core';\nimport type { FilesCreateInput, FilesPatchInput, CoreDeleteOptions } from '@plyaz/types/core';\n\n/**\n * Files Validator\n *\n * Validates file/media records before DB operations.\n * - createSchema: Validates data before repository.create()\n * - patchSchema: Validates partial updates\n * Provides domain-specific access control.\n */\nclass FilesValidatorClass extends BaseValidator<\n  FilesCreateInput,\n  FilesCreateInput,\n  FilesPatchInput,\n  CoreDeleteOptions,\n  Record<string, unknown>\n> {\n  constructor() {\n    super({\n      createSchema: CreateFilesSchema,\n      patchSchema: PatchFilesSchema,\n    });\n  }\n\n  /**\n   * Check if user has permission to access file\n   */\n  validateUserAccess(\n    userId: string,\n    fileOwnerId: string,\n    accessLevel: string | null,\n    isAdmin = false\n  ): boolean {\n    if (isAdmin) return true;\n    if (userId === fileOwnerId) return true;\n    if (accessLevel === 'public') return true;\n    if (accessLevel === 'protected' && userId) return true;\n    return false;\n  }\n}\n\nexport { FilesValidatorClass };\nexport const FilesValidator = new FilesValidatorClass();\n","/**\n * Backend Files Domain Service\n *\n * Extends BaseBackendDomainService for CRUD operations on the `media` table.\n * Similar to ExampleDomainService - uses base class methods with domain-specific config.\n *\n * Note: File upload/download is handled by @plyaz/storage service.\n * This service manages file metadata in the database.\n */\n\nimport { BaseBackendDomainService } from '../base';\nimport { CoreEventManager } from '../../events/CoreEventManager';\nimport { DOWNLOAD_CONFIG, TIME_CONSTANTS } from '@plyaz/config';\nimport { CorePackageError } from '@plyaz/errors';\nimport { ERROR_CODES, SERVICE_KEYS } from '@plyaz/types';\nimport type {\n  CoreServiceCreateOptions,\n  CoreInjectedServices,\n  CoreDeleteOptions,\n  FilesDownloadStreamProgress,\n} from '@plyaz/types/core';\nimport { FilesRepository } from '../../models/files';\nimport { FilesMapperClass } from './mappers/FilesMapper';\nimport { FilesValidatorClass } from './validators/FilesValidator';\nimport type {\n  FilesEntity,\n  FilesDatabaseRow,\n  FilesDomainServiceConfig,\n  FilesCreateInput,\n} from '@plyaz/types/core';\nimport type { FilesStoreItem } from '@plyaz/types/store';\nimport type { GetFileResponse } from '@plyaz/types/api';\nimport type { FileMetadata, StorageResolvedVariant } from '@plyaz/types/storage';\nimport { FilesMapper } from './mappers/FilesMapper';\n\ntype FilesMapperType = InstanceType<typeof FilesMapperClass>;\ntype FilesValidatorType = InstanceType<typeof FilesValidatorClass>;\n\n/**\n * Backend Files Domain Service\n *\n * CRUD methods inherited from BaseBackendDomainService:\n * - getById(id): Promise<FilesEntity | null>\n * - getAll(query?): Promise<FilesEntity[]>\n * - patch(id, data): Promise<FilesEntity>\n * - delete(id): Promise<void>\n * - exists(id): Promise<boolean>\n */\nexport class BackendFilesDomainService extends BaseBackendDomainService<\n  FilesDomainServiceConfig,\n  FilesEntity,\n  GetFileResponse,\n  FilesCreateInput,\n  FilesCreateInput,\n  Partial<FilesCreateInput>,\n  Record<string, unknown>,\n  CoreDeleteOptions,\n  FilesDatabaseRow,\n  FilesRepository,\n  FilesStoreItem,\n  FilesMapperType,\n  FilesValidatorType\n> {\n  private _repository?: FilesRepository;\n  protected eventPrefix = 'files';\n  protected cachePrefix = 'files';\n\n  static readonly serviceKey = SERVICE_KEYS.FILES;\n\n  /**\n   * Lazy repository getter - creates repository on first access.\n   * Throws if DbService is not initialized.\n   */\n  protected get repository(): FilesRepository {\n    this._repository ??= FilesRepository.create();\n    return this._repository;\n  }\n\n  /**\n   * Create service instance\n   */\n  // eslint-disable-next-line complexity\n  static async create(\n    config: FilesDomainServiceConfig = {},\n    options?: CoreServiceCreateOptions\n  ): Promise<BackendFilesDomainService> {\n    const injected: CoreInjectedServices = {\n      cache: options?.cache?.instance,\n      db: options?.db?.instance,\n      api: options?.apiClient?.instance,\n      storage: options?.storage?.instance,\n      notifications: options?.notifications?.instance,\n    };\n    return new BackendFilesDomainService(config, injected);\n  }\n\n  constructor(config: FilesDomainServiceConfig = {}, injected?: CoreInjectedServices) {\n    super({\n      serviceName: 'BackendFilesDomainService',\n      supportedRuntimes: ['backend'] as const,\n      serviceConfig: {\n        enabled: true,\n        throwOnValidationError: true,\n        throwOnRepositoryError: true,\n        emitEvents: true,\n        ...config,\n      },\n      mapperClass: FilesMapperClass,\n      validatorClass: FilesValidatorClass,\n      injected,\n    });\n    // Repository is created lazily via getter when first accessed\n  }\n\n  isAvailable(): boolean {\n    return this.isServiceEnabled;\n  }\n\n  dispose(): void {\n    this.logInfo('Service disposed');\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Storage operations (via @plyaz/storage)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Download file content\n   * GET /files/:id/download\n   *\n   * Follows same pattern as base class CRUD methods:\n   * 1. assertReady\n   * 2. Record start time\n   * 3. Log debug info\n   * 4. Emit starting event\n   * 5. Execute operation\n   * 6. Emit success event\n   * 7. Record metrics\n   *\n   * @param params - Download parameters (fileId required)\n   * @returns Download result with buffer, filename, mimeType\n   */\n  // eslint-disable-next-line complexity\n  async downloadFile(params: { fileId: string }): Promise<{\n    buffer: string;\n    filename: string;\n    mimeType: string;\n  }> {\n    this.assertReady();\n    const startTime = Date.now();\n    this.logDebug('Downloading file', { fileId: params.fileId });\n\n    // 1. Emit starting progress event (0%) via CoreEventManager for streaming\n    const startProgressData: FilesDownloadStreamProgress = {\n      fileId: params.fileId,\n      filename: 'unknown',\n      loaded: 0,\n      total: 0,\n      percentage: 0,\n      status: 'downloading',\n    };\n    CoreEventManager.emit('download:progress', startProgressData);\n\n    try {\n      // 2. Lifecycle hook (if defined)\n      await this.beforeDownloadFile?.(params);\n\n      // 3. Check storage service availability\n      if (!this.storageService) {\n        throw new CorePackageError(\n          'Storage service not available. Ensure storage is configured in Core.initialize().',\n          ERROR_CODES.CORE_PROVIDER_INITIALIZATION_FAILED\n        );\n      }\n\n      // 4. Look up file metadata from DB by UUID to get storage_path and bucket\n      // Client passes DB UUID as fileId, we look it up to get the actual storage path\n      const fileRecord = await this.getById(params.fileId);\n      if (!fileRecord) {\n        throw new CorePackageError(\n          `File not found in database: ${params.fileId}`,\n          ERROR_CODES.CORE_OPERATION_FAILED,\n          { context: { fileId: params.fileId, reason: 'file_not_found' } }\n        );\n      }\n\n      // 5. Download via storage service using storage_path (key) and bucket from DB\n      const storage = this.storageService.getStorage();\n      const result = await storage.downloadFile({\n        fileId: fileRecord.key, // storage_path from DB\n        bucket: fileRecord.bucket,\n      });\n\n      // 5. Prepare response\n      // DownloadResult has: file (Buffer), metadata (FileMetadata with filename, mimeType)\n      const fileSize = result?.file?.length ?? 0;\n      const filename = result?.metadata?.filename ?? 'download';\n      const response = {\n        buffer: result?.file?.toString('base64') ?? '',\n        filename,\n        mimeType: result?.metadata?.mimeType ?? 'application/octet-stream',\n      };\n\n      // 6. Lifecycle hook (if defined)\n      await this.afterDownloadFile?.(response);\n\n      // 7. Emit completed event (100%) via CoreEventManager for streaming\n      const completedProgressData: FilesDownloadStreamProgress = {\n        fileId: params.fileId,\n        filename,\n        loaded: fileSize,\n        total: fileSize,\n        percentage: 100,\n        status: 'completed',\n      };\n      CoreEventManager.emit('download:completed', completedProgressData);\n      this.emitEvent('complete', { success: true, operation: 'downloadFile' });\n\n      // 8. Record success metrics\n      await this.recordOperationMetrics('downloadFile', Date.now() - startTime, true);\n\n      return response;\n    } catch (error) {\n      // Record error metrics\n      await this.recordOperationMetrics('downloadFile', Date.now() - startTime, false);\n      // Emit download error event via CoreEventManager for streaming\n      const errorMessage =\n        error && typeof error === 'object' && 'message' in error\n          ? String((error as { message: unknown }).message)\n          : 'Download failed';\n      const errorProgressData: FilesDownloadStreamProgress = {\n        fileId: params.fileId,\n        filename: 'unknown',\n        loaded: 0,\n        total: 0,\n        percentage: 0,\n        status: 'failed',\n        error: errorMessage,\n      };\n      CoreEventManager.emit('download:error', errorProgressData);\n      throw error;\n    }\n  }\n\n  /**\n   * Lifecycle hook: called before file download.\n   * Override in subclass for custom pre-download logic.\n   */\n  protected beforeDownloadFile?(params: { fileId: string }): Promise<void>;\n\n  /**\n   * Lifecycle hook: called after file download.\n   * Override in subclass for custom post-download logic.\n   */\n  protected afterDownloadFile?(result: {\n    buffer: string;\n    filename: string;\n    mimeType: string;\n  }): Promise<void>;\n\n  /**\n   * Get signed URL for file\n   * GET /files/:id/signed-url\n   *\n   * Follows same pattern as base class CRUD methods.\n   *\n   * @param params - Signed URL parameters (fileId required)\n   * @returns Signed URL result with url and expiresAt\n   */\n  // eslint-disable-next-line complexity\n  async getSignedUrl(params: { fileId: string; expiresIn?: number }): Promise<{\n    url: string;\n    expiresAt: string;\n  }> {\n    this.assertReady();\n    const startTime = Date.now();\n    this.logDebug('Getting signed URL', { fileId: params.fileId, expiresIn: params.expiresIn });\n\n    // 1. Emit starting event\n    this.emitEvent('signedUrl:requesting', { request: params });\n\n    try {\n      // 2. Lifecycle hook (if defined)\n      await this.beforeGetSignedUrl?.(params);\n\n      // 3. Check storage service availability\n      if (!this.storageService) {\n        throw new CorePackageError(\n          'Storage service not available. Ensure storage is configured in Core.initialize().',\n          ERROR_CODES.CORE_PROVIDER_INITIALIZATION_FAILED\n        );\n      }\n\n      // 4. Look up file metadata from DB by UUID to get storage_path and bucket\n      // Client passes DB UUID as fileId, we look it up to get the actual storage path\n      const fileRecord = await this.getById(params.fileId);\n      if (!fileRecord) {\n        throw new CorePackageError(\n          `File not found in database: ${params.fileId}`,\n          ERROR_CODES.CORE_OPERATION_FAILED,\n          { context: { fileId: params.fileId, reason: 'file_not_found' } }\n        );\n      }\n\n      // 5. Get signed URL via storage service using storage_path (key) and bucket from DB\n      const storage = this.storageService.getStorage();\n      const result = await storage.getSignedUrl({\n        fileId: fileRecord.key, // storage_path from DB\n        bucket: fileRecord.bucket,\n        expiresIn: params.expiresIn ?? DOWNLOAD_CONFIG.DEFAULT_SIGNED_URL_EXPIRY_SECONDS,\n        operation: 'get',\n      });\n\n      // 5. Prepare response\n      const response = {\n        url: result?.url ?? '',\n        expiresAt:\n          result?.expiresAt?.toISOString() ??\n          new Date(Date.now() + TIME_CONSTANTS.HOUR).toISOString(),\n      };\n\n      // 6. Lifecycle hook (if defined)\n      await this.afterGetSignedUrl?.(response);\n\n      // 7. Emit success event\n      this.emitEvent('signedUrl:received', { result: response });\n      this.emitEvent('complete', { success: true, operation: 'getSignedUrl' });\n\n      // 8. Record success metrics\n      await this.recordOperationMetrics('getSignedUrl', Date.now() - startTime, true);\n\n      return response;\n    } catch (error) {\n      // Record error metrics\n      await this.recordOperationMetrics('getSignedUrl', Date.now() - startTime, false);\n      this.emitEvent('signedUrl:error', { error });\n      throw error;\n    }\n  }\n\n  /**\n   * Lifecycle hook: called before getting signed URL.\n   * Override in subclass for custom pre-signedUrl logic.\n   */\n  protected beforeGetSignedUrl?(params: { fileId: string; expiresIn?: number }): Promise<void>;\n\n  /**\n   * Lifecycle hook: called after getting signed URL.\n   * Override in subclass for custom post-signedUrl logic.\n   */\n  protected afterGetSignedUrl?(result: { url: string; expiresAt: string }): Promise<void>;\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // DB Persistence (called by StorageService on upload complete)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Persist uploaded file metadata to the media table.\n   * Called by StorageService.onFileUploaded event handler.\n   *\n   * Uses upsert logic: updates existing record if storage_path exists,\n   * otherwise creates new record.\n   *\n   * @param metadata - File metadata from storage upload\n   * @param variants - Optional file variants (thumbnails, etc.)\n   * @param userId - Optional user ID who uploaded the file\n   * @returns The created/updated DB record with UUID\n   */\n  // eslint-disable-next-line complexity\n  async persistUploadedFile(\n    metadata: FileMetadata,\n    variants?: Record<string, StorageResolvedVariant>,\n    userId?: string\n  ): Promise<FilesDatabaseRow | undefined> {\n    const startTime = Date.now();\n    this.logDebug('Persisting uploaded file to DB', {\n      fileId: metadata.fileId,\n      filename: metadata.filename,\n      storagePath: metadata.path,\n    });\n\n    try {\n      // 1. Check if record already exists by storage_path (unique constraint)\n      const existing = await this.getByStoragePath(metadata.path);\n\n      // 2. Map storage metadata to DB row format\n      const dbRow = FilesMapper.toDbRow({ metadata, variants }, userId);\n\n      let result;\n\n      if (existing) {\n        // 3a. Update existing record\n        this.logDebug('File already exists in DB, updating', {\n          existingId: existing.id,\n          storagePath: metadata.path,\n        });\n\n        const validatedRow = this.validator.validateUpdateOrThrow(dbRow);\n        result = await this.repository.update(existing.id, validatedRow);\n\n        if (!result.success) {\n          throw (\n            result.error ??\n            new CorePackageError(\n              `Failed to update file in media table: ${metadata.fileId}`,\n              ERROR_CODES.CORE_OPERATION_FAILED,\n              { context: { fileId: metadata.fileId, filename: metadata.filename } }\n            )\n          );\n        }\n\n        this.logDebug('File updated in media table', {\n          fileId: metadata.fileId,\n          filename: metadata.filename,\n          dbId: existing.id,\n        });\n      } else {\n        // 3b. Create new record\n        const validatedRow = this.validator.validateCreateOrThrow(dbRow);\n        result = await this.repository.create(validatedRow);\n\n        if (!result.success) {\n          throw (\n            result.error ??\n            new CorePackageError(\n              `Failed to persist file to media table: ${metadata.fileId}`,\n              ERROR_CODES.CORE_OPERATION_FAILED,\n              { context: { fileId: metadata.fileId, filename: metadata.filename } }\n            )\n          );\n        }\n\n        this.logDebug('File persisted to media table', {\n          fileId: metadata.fileId,\n          filename: metadata.filename,\n          dbId: result.value?.id,\n        });\n      }\n\n      await this.recordOperationMetrics('persistUploadedFile', Date.now() - startTime, true);\n\n      // Return the DB record with UUID\n      return result.value ?? existing ?? undefined;\n    } catch (error) {\n      this.logError('Failed to persist file to media table', {\n        fileId: metadata.fileId,\n        filename: metadata.filename,\n        error: error instanceof Error ? error.message : String(error),\n      });\n      await this.recordOperationMetrics('persistUploadedFile', Date.now() - startTime, false);\n      throw error;\n    }\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // NOTE: CRUD and Storage Methods Are Inherited from BaseBackendDomainService\n  // ─────────────────────────────────────────────────────────────────────────\n  //\n  // CRUD methods:\n  // - getById(id) - for GET /files/:id\n  // - getAll(query) - for listing files\n  // - delete(id) - for DELETE /files/:id\n  // - exists(id) - check if file exists\n  //\n  // Storage methods (inherited):\n  // - uploadFile(params) - for POST /files/upload\n  // - generateFile(params) - for POST /files/generate-document\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Get file record by storage path\n   * Used to retrieve the DB record after upload (since event handler persists it)\n   */\n  async getByStoragePath(storagePath: string): Promise<FilesDatabaseRow | undefined> {\n    const result = await this.repository.findMany({\n      filter: { field: 'storage_path', operator: 'eq', value: storagePath },\n    });\n    const data = result.value?.data ?? [];\n    if (result.success && data.length > 0) {\n      return data[0];\n    }\n    return undefined;\n  }\n}\n\n// Singleton (for direct usage - prefer ServiceRegistry.get('files') for proper injection)\nlet _instance: BackendFilesDomainService | null = null;\n\nexport async function getBackendFilesDomainService(\n  config?: FilesDomainServiceConfig,\n  options?: CoreServiceCreateOptions\n): Promise<BackendFilesDomainService> {\n  _instance ??= await BackendFilesDomainService.create(config, options);\n  return _instance;\n}\n\nexport function resetFilesDomainService(): void {\n  if (_instance) {\n    _instance.dispose();\n    _instance = null;\n  }\n}\n","/**\n * Notifications Repository\n *\n * Data access layer for Notifications entities.\n * Extends BaseRepository from @plyaz/db for consistent CRUD operations.\n *\n * @example\n * ```typescript\n * const repo = NotificationsRepository.create();\n *\n * // Create operations\n * const entity = await repo.create({ user_id: '...', title: '...', message: '...' });\n *\n * // List operations (inherited from BaseRepository)\n * const all = await repo.findMany();\n * const entity = await repo.findById('123');\n *\n * // Delete operations\n * await repo.delete('123');\n * await repo.softDelete('123');\n * ```\n */\n\nimport { BaseRepository } from '@plyaz/db';\nimport { DbService } from '../../services/DbService';\nimport { DATABASE_ERROR_CODES } from '@plyaz/types/errors';\nimport { DatabasePackageError } from '@plyaz/errors';\nimport type {\n  DatabaseResult,\n  PaginatedResult,\n  QueryOptions,\n  DatabaseServiceInterface,\n  OperationConfig,\n} from '@plyaz/types/db';\nimport type { NotificationsDatabaseRow, CreateNotificationsDTO } from '@plyaz/types/core';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Constants\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** Table name for notifications */\nconst TABLE_NAME = 'notifications';\n\n/** Default pagination limit */\nconst DEFAULT_LIMIT = 100;\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Repository\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Notifications Repository\n *\n * Data access layer for Notifications entities.\n *\n * Inherited from BaseRepository (used directly):\n * - findById(id) - Get entity by ID\n * - delete(id) - Hard delete entity\n * - softDelete(id) - Soft delete entity\n * - exists(id) - Check if entity exists\n * - query() - Fluent QueryBuilder for complex queries\n * - count(filter) - Count entities matching filter\n * - findOne(filter) - Find first matching entity\n * - update(id, data) - Update entity\n *\n * Overridden with domain logic:\n * - findMany(options) - Default sorting by created_at DESC\n * - create(data) - Create with defaults for required fields\n */\nexport class NotificationsRepository extends BaseRepository<NotificationsDatabaseRow> {\n  constructor(db: DatabaseServiceInterface) {\n    super(db, TABLE_NAME);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Static Factory\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Create repository instance.\n   * Uses DbService singleton.\n   */\n  static create(): NotificationsRepository {\n    if (!DbService.isInitialized()) {\n      throw new DatabasePackageError(\n        'DbService not initialized. Call DbService.initialize() first.',\n        DATABASE_ERROR_CODES.CONNECTION_FAILED\n      );\n    }\n    const db = DbService.getInstance().getDatabase();\n    return new NotificationsRepository(db);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Overridden Methods (with domain-specific logic)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Find multiple entities with default sorting\n   */\n  override async findMany(\n    options?: QueryOptions<NotificationsDatabaseRow>,\n    config?: OperationConfig\n  ): Promise<DatabaseResult<PaginatedResult<NotificationsDatabaseRow>>> {\n    const mergedOptions: QueryOptions<NotificationsDatabaseRow> = {\n      sort: options?.sort ?? [{ field: 'created_at', direction: 'desc' }],\n      pagination: {\n        limit: options?.pagination?.limit ?? DEFAULT_LIMIT,\n        offset: options?.pagination?.offset ?? 0,\n      },\n      filter: options?.filter,\n    };\n    return super.findMany(mergedOptions, config);\n  }\n\n  /**\n   * Create new notification record with defaults\n   * Domain service handles DTO → DbRow conversion via mapper before calling this\n   */\n  override async create(\n    data: Partial<NotificationsDatabaseRow> &\n      Partial<\n        Pick<\n          CreateNotificationsDTO,\n          | 'userId'\n          | 'recipientId'\n          | 'linkUrl'\n          | 'referenceId'\n          | 'referenceType'\n          | 'correlationId'\n          | 'templateId'\n          | 'providerMessageId'\n        >\n      >,\n    config?: OperationConfig\n  ): Promise<DatabaseResult<NotificationsDatabaseRow>> {\n    const now = new Date().toISOString();\n\n    // Build row with defaults - accept both camelCase (DTO) and snake_case (DB) fields\n    const row: Omit<NotificationsDatabaseRow, 'id'> & { id?: string } = {\n      ...(data.id && { id: data.id }),\n      created_at: data.created_at ?? now,\n      user_id: data.user_id ?? data.userId ?? '',\n      type: data.type ?? 'SYSTEM',\n      title: data.title ?? '',\n      message: data.message ?? '',\n      recipient_id: data.recipient_id ?? data.recipientId ?? '',\n      link_url: data.link_url ?? data.linkUrl ?? null,\n      reference_id: data.reference_id ?? data.referenceId ?? null,\n      reference_type: data.reference_type ?? data.referenceType ?? null,\n      correlation_id: data.correlation_id ?? data.correlationId ?? null,\n      template_id: data.template_id ?? data.templateId ?? null,\n      channel: data.channel ?? 'IN_APP',\n      category: data.category ?? 'transactional',\n      provider: data.provider ?? null,\n      provider_message_id: data.provider_message_id ?? data.providerMessageId ?? null,\n      status: data.status ?? 'queued',\n      sent_at: data.sent_at ?? null,\n      delivered_at: data.delivered_at ?? null,\n      is_read: data.is_read ?? false,\n      read_at: data.read_at ?? null,\n      error_message: data.error_message ?? null,\n      retry_count: data.retry_count ?? 0,\n      deleted_at: data.deleted_at ?? null,\n    };\n\n    return super.create(row, config);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Domain-Specific Methods\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Find notifications by user ID\n   */\n  async findByUserId(\n    userId: string,\n    options?: { limit?: number; offset?: number }\n  ): Promise<DatabaseResult<PaginatedResult<NotificationsDatabaseRow>>> {\n    return this.findMany({\n      filter: { field: 'user_id', operator: 'eq', value: userId },\n      pagination: {\n        limit: options?.limit ?? DEFAULT_LIMIT,\n        offset: options?.offset ?? 0,\n      },\n    });\n  }\n\n  /**\n   * Find notifications by channel\n   */\n  async findByChannel(\n    channel: string,\n    options?: { limit?: number; offset?: number }\n  ): Promise<DatabaseResult<PaginatedResult<NotificationsDatabaseRow>>> {\n    return this.findMany({\n      filter: { field: 'channel', operator: 'eq', value: channel },\n      pagination: {\n        limit: options?.limit ?? DEFAULT_LIMIT,\n        offset: options?.offset ?? 0,\n      },\n    });\n  }\n\n  /**\n   * Get table name (for BaseBackendDomainService compatibility)\n   */\n  getTableName(): string {\n    return TABLE_NAME;\n  }\n}\n","/**\n * Notification Preferences Repository\n *\n * Data access layer for user notification preferences.\n * Used by DatabasePreferenceChecker to implement PreferenceChecker interface.\n */\n\nimport { BaseRepository } from '@plyaz/db';\nimport { DbService } from '../../services/DbService';\nimport { DATABASE_ERROR_CODES } from '@plyaz/types/errors';\nimport { DatabasePackageError } from '@plyaz/errors';\nimport type { DatabaseResult, DatabaseServiceInterface, OperationConfig } from '@plyaz/types/db';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Constants\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst TABLE_NAME = 'notification_preferences';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface NotificationPreferencesDatabaseRow extends Record<string, unknown> {\n  id: string;\n  user_id: string;\n  // Channel preferences\n  email_enabled: boolean;\n  sms_enabled: boolean;\n  push_enabled: boolean;\n  // Category preferences\n  transactional_enabled: boolean;\n  marketing_enabled: boolean;\n  social_enabled: boolean;\n  system_enabled: boolean;\n  promotional_enabled: boolean;\n  // Quiet hours\n  quiet_hours_enabled: boolean;\n  quiet_hours_start: string | null;\n  quiet_hours_end: string | null;\n  quiet_hours_timezone: string;\n  // Timestamps\n  created_at: string;\n  updated_at: string;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Repository\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport class NotificationPreferencesRepository extends BaseRepository<NotificationPreferencesDatabaseRow> {\n  constructor(db: DatabaseServiceInterface) {\n    super(db, TABLE_NAME);\n  }\n\n  static create(): NotificationPreferencesRepository {\n    if (!DbService.isInitialized()) {\n      throw new DatabasePackageError(\n        'DbService not initialized. Call DbService.initialize() first.',\n        DATABASE_ERROR_CODES.CONNECTION_FAILED\n      );\n    }\n    return new NotificationPreferencesRepository(DbService.getInstance().getDatabase());\n  }\n\n  /**\n   * Find preferences by user ID\n   */\n  async findByUserId(\n    userId: string\n  ): Promise<DatabaseResult<NotificationPreferencesDatabaseRow | null>> {\n    return this.findOne({ field: 'user_id', operator: 'eq', value: userId });\n  }\n\n  /**\n   * Create default preferences for a user\n   */\n  async createDefault(\n    userId: string,\n    config?: OperationConfig\n  ): Promise<DatabaseResult<NotificationPreferencesDatabaseRow>> {\n    const now = new Date().toISOString();\n    return this.create(\n      {\n        user_id: userId,\n        email_enabled: true,\n        sms_enabled: true,\n        push_enabled: true,\n        transactional_enabled: true,\n        marketing_enabled: true,\n        social_enabled: true,\n        system_enabled: true,\n        promotional_enabled: true,\n        quiet_hours_enabled: false,\n        quiet_hours_start: null,\n        quiet_hours_end: null,\n        quiet_hours_timezone: 'UTC',\n        created_at: now,\n        updated_at: now,\n      },\n      config\n    );\n  }\n\n  /**\n   * Get or create preferences for a user\n   */\n  async getOrCreate(userId: string): Promise<NotificationPreferencesDatabaseRow> {\n    const result = await this.findByUserId(userId);\n    if (result.success && result.value) {\n      return result.value;\n    }\n    const created = await this.createDefault(userId);\n    if (!created.success || !created.value) {\n      // Return default in-memory if creation fails\n      return {\n        id: '',\n        user_id: userId,\n        email_enabled: true,\n        sms_enabled: true,\n        push_enabled: true,\n        transactional_enabled: true,\n        marketing_enabled: true,\n        social_enabled: true,\n        system_enabled: true,\n        promotional_enabled: true,\n        quiet_hours_enabled: false,\n        quiet_hours_start: null,\n        quiet_hours_end: null,\n        quiet_hours_timezone: 'UTC',\n        created_at: new Date().toISOString(),\n        updated_at: new Date().toISOString(),\n      };\n    }\n    return created.value;\n  }\n\n  /**\n   * Update preferences for a user\n   */\n  async updateByUserId(\n    userId: string,\n    data: Partial<NotificationPreferencesDatabaseRow>\n  ): Promise<DatabaseResult<NotificationPreferencesDatabaseRow>> {\n    const existing = await this.findByUserId(userId);\n    if (!existing.success || !existing.value) {\n      // Create if doesn't exist\n      return this.createDefault(userId);\n    }\n    return this.update(existing.value.id, {\n      ...data,\n      updated_at: new Date().toISOString(),\n    });\n  }\n}\n","/**\n * Notifications Models Exports\n */\n\nexport { NotificationsRepository } from './NotificationsRepository';\nexport {\n  NotificationPreferencesRepository,\n  type NotificationPreferencesDatabaseRow,\n} from './NotificationPreferencesRepository';\n","/**\n * Short URL Repository\n *\n * Data access layer for URL shortening.\n * Extends BaseRepository from @plyaz/db for consistent CRUD operations.\n *\n * @example\n * ```typescript\n * // Use with StorageBackedUrlShortener\n * const shortener = new StorageBackedUrlShortener({\n *   baseUrl: 'https://s.example.com',\n *   storage: ShortUrlRepository.createStorage(),\n * });\n *\n * // Or use repository directly for queries\n * const repo = ShortUrlRepository.create();\n * const topUrls = await repo.findTopClicked(10);\n * ```\n */\n\nimport { BaseRepository } from '@plyaz/db';\nimport { DbService } from '../../services/DbService';\nimport { DATABASE_ERROR_CODES } from '@plyaz/types/errors';\nimport { DatabasePackageError } from '@plyaz/errors';\nimport type {\n  DatabaseResult,\n  PaginatedResult,\n  QueryOptions,\n  DatabaseServiceInterface,\n  OperationConfig,\n} from '@plyaz/types/db';\nimport type { UrlShortenerStorage, UrlAnalytics } from '@plyaz/types/notifications';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Constants\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst TABLE_NAME = 'short_urls';\nconst DEFAULT_LIMIT = 100;\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface ShortUrlDatabaseRow extends Record<string, unknown> {\n  short_code: string;\n  original_url: string;\n  created_at: string;\n  expires_at: string | null;\n  click_count: number;\n  last_clicked_at: string | null;\n  metadata: Record<string, unknown> | null;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Repository\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport class ShortUrlRepository extends BaseRepository<ShortUrlDatabaseRow> {\n  constructor(db: DatabaseServiceInterface) {\n    super(db, TABLE_NAME);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Static Factory\n  // ─────────────────────────────────────────────────────────────────────────\n\n  static create(): ShortUrlRepository {\n    if (!DbService.isInitialized()) {\n      throw new DatabasePackageError(\n        'DbService not initialized. Call DbService.initialize() first.',\n        DATABASE_ERROR_CODES.CONNECTION_FAILED\n      );\n    }\n    return new ShortUrlRepository(DbService.getInstance().getDatabase());\n  }\n\n  /**\n   * Create UrlShortenerStorage-compatible interface for StorageBackedUrlShortener\n   */\n  static createStorage(): UrlShortenerStorage {\n    const repo = ShortUrlRepository.create();\n    return {\n      store: (shortCode, originalUrl, options) => repo.store(shortCode, originalUrl, options),\n      retrieve: shortCode => repo.retrieve(shortCode),\n      exists: async shortCode => {\n        const result = await repo.findById(shortCode);\n        return result.success && result.value !== null;\n      },\n      incrementClicks: shortCode => repo.incrementClicks(shortCode),\n      getAnalytics: shortCode => repo.getAnalytics(shortCode),\n      cleanup: () => repo.cleanup(),\n    };\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Overridden Methods\n  // ─────────────────────────────────────────────────────────────────────────\n\n  override async findMany(\n    options?: QueryOptions<ShortUrlDatabaseRow>,\n    config?: OperationConfig\n  ): Promise<DatabaseResult<PaginatedResult<ShortUrlDatabaseRow>>> {\n    return super.findMany(\n      {\n        sort: options?.sort ?? [{ field: 'created_at', direction: 'desc' }],\n        pagination: {\n          limit: options?.pagination?.limit ?? DEFAULT_LIMIT,\n          offset: options?.pagination?.offset ?? 0,\n        },\n        filter: options?.filter,\n      },\n      config\n    );\n  }\n\n  override async create(\n    data: Partial<ShortUrlDatabaseRow>,\n    config?: OperationConfig\n  ): Promise<DatabaseResult<ShortUrlDatabaseRow>> {\n    const now = new Date().toISOString();\n    return super.create(\n      {\n        short_code: data.short_code ?? '',\n        original_url: data.original_url ?? '',\n        created_at: data.created_at ?? now,\n        expires_at: data.expires_at ?? null,\n        click_count: data.click_count ?? 0,\n        last_clicked_at: data.last_clicked_at ?? null,\n        metadata: data.metadata ?? null,\n      },\n      config\n    );\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // UrlShortenerStorage Methods\n  // ─────────────────────────────────────────────────────────────────────────\n\n  async store(\n    shortCode: string,\n    originalUrl: string,\n    options?: { expiresAt?: number; metadata?: Record<string, unknown> }\n  ): Promise<void> {\n    await this.create({\n      short_code: shortCode,\n      original_url: originalUrl,\n      expires_at: options?.expiresAt ? new Date(options.expiresAt).toISOString() : null,\n      metadata: options?.metadata ?? null,\n    });\n  }\n\n  async retrieve(shortCode: string): Promise<string | null> {\n    const result = await this.findById(shortCode);\n    if (!result.success || !result.value) return null;\n    if (result.value.expires_at && new Date(result.value.expires_at) < new Date()) return null;\n    return result.value.original_url;\n  }\n\n  async incrementClicks(shortCode: string): Promise<void> {\n    const result = await this.findById(shortCode);\n    if (!result.success || !result.value) return;\n    await this.update(shortCode, {\n      click_count: result.value.click_count + 1,\n      last_clicked_at: new Date().toISOString(),\n    });\n  }\n\n  async getAnalytics(shortCode: string): Promise<UrlAnalytics | null> {\n    const result = await this.findById(shortCode);\n    if (!result.success || !result.value) return null;\n    const row = result.value;\n    return {\n      shortUrl: shortCode,\n      originalUrl: row.original_url,\n      clicks: row.click_count,\n      createdAt: new Date(row.created_at).getTime(),\n      lastClickedAt: row.last_clicked_at ? new Date(row.last_clicked_at).getTime() : undefined,\n      expiresAt: row.expires_at ? new Date(row.expires_at).getTime() : undefined,\n      metadata: row.metadata ?? undefined,\n    };\n  }\n\n  async cleanup(): Promise<void> {\n    const now = new Date().toISOString();\n    const result = await this.query()\n      .where('expires_at', 'lt', now)\n      .whereNotNull('expires_at')\n      .execute();\n\n    if (!result.success || !result.value?.data) return;\n    for (const row of result.value.data) {\n      await this.delete(row.short_code);\n    }\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Domain-Specific Methods\n  // ─────────────────────────────────────────────────────────────────────────\n\n  async findByOriginalUrl(\n    originalUrl: string\n  ): Promise<DatabaseResult<ShortUrlDatabaseRow | null>> {\n    return this.findOne({ field: 'original_url', operator: 'eq', value: originalUrl });\n  }\n\n  async findTopClicked(\n    limit: number = 10\n  ): Promise<DatabaseResult<PaginatedResult<ShortUrlDatabaseRow>>> {\n    return this.query().orderByDesc('click_count').paginate(1, limit).execute();\n  }\n}\n","/**\n * Short URLs Models Exports\n *\n * Repository for URL shortening with analytics support.\n * Implements UrlShortenerStorage for use with StorageBackedUrlShortener.\n */\n\nexport { ShortUrlRepository, type ShortUrlDatabaseRow } from './ShortUrlRepository';\n","/**\n * Backend Notifications Domain Service\n *\n * Manages IN_APP notifications only. This service handles the creation, retrieval,\n * and deletion of in-app notifications (bell icon notifications, system alerts, etc.).\n *\n * NOTE: Email, SMS, and Push notifications are handled by @plyaz/notifications package,\n * NOT by this domain service. This service is strictly for IN_APP notifications that\n * appear in the user's notification center.\n *\n * Extends BaseBackendDomainService which provides:\n * - Automatic validation → mapper → repository → mapper flow\n * - Event emission throughout CRUD lifecycle\n * - Repository-based data access\n * - Configurable error throwing behavior\n * - Cache support for read operations\n *\n * Runtime: Backend (NestJS, Express, Node.js)\n *\n * @example\n * ```typescript\n * const service = await BackendNotificationsDomainService.create({\n *   throwOnValidationError: true,\n *   throwOnRepositoryError: true,\n * });\n *\n * // CRUD operations (inherited from base)\n * const entity = await service.create({\n *   userId: 'user-123',\n *   type: 'SYSTEM',\n *   title: 'Welcome!',\n *   message: 'Thanks for signing up.',\n *   category: 'transactional',\n * });\n * const fetched = await service.getById(entity.id);\n * await service.delete(entity.id, { soft: true });\n * const list = await service.getAll({ user_id: 'user-123' });\n * ```\n */\n\nimport { BaseBackendDomainService } from '../base';\nimport { BackendEventPersistenceHandler } from '../../events';\nimport { CoreEventManager } from '../../events/CoreEventManager';\nimport { SERVICE_KEYS } from '@plyaz/types/core';\nimport type { CoreServiceCreateOptions, CoreInjectedServices } from '@plyaz/types/core';\nimport {\n  NotificationsRepository,\n  NotificationPreferencesRepository,\n  type NotificationPreferencesDatabaseRow,\n} from '../../models/notifications';\nimport { ShortUrlRepository } from '../../models/shortUrls';\nimport type {\n  PreferenceChecker,\n  NotificationCategory,\n  NotificationChannel,\n  UrlAnalytics,\n  TokenPayload,\n  TokenStrategy,\n  TokenVerificationResult,\n} from '@plyaz/types/notifications';\nimport { verifyToken } from '@plyaz/notifications';\nimport { NotificationPackageError } from '@plyaz/errors';\nimport { NOTIFICATION_ERROR_CODES } from '@plyaz/types/errors';\nimport { NotificationsMapperClass } from './mappers/NotificationsMapper';\nimport { NotificationsValidatorClass } from './validators/NotificationsValidator';\nimport { TIME_CONSTANTS } from '@plyaz/config/time';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types (from @plyaz/types - single source of truth)\n// ─────────────────────────────────────────────────────────────────────────────\n\nimport type {\n  NotificationsEntity,\n  NotificationsResponseDTO,\n  CreateNotificationsDTO,\n  UpdateNotificationsDTO,\n  PatchNotificationsDTO,\n  QueryNotificationsDTO,\n  DeleteNotificationsDTO,\n  NotificationStoreItem,\n  NotificationsDomainServiceConfig,\n  NotificationsDatabaseRow,\n} from '@plyaz/types/core';\n\n/**\n * Mapper type for this service\n */\ntype NotificationsMapper = InstanceType<typeof NotificationsMapperClass>;\n\n/**\n * Validator type for this service\n */\ntype NotificationsValidator = InstanceType<typeof NotificationsValidatorClass>;\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Service\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Backend Notifications Domain Service\n *\n * All CRUD methods are inherited from BaseBackendDomainService:\n * - create(data): Promise<NotificationsEntity>\n * - getById(id): Promise<NotificationsEntity | null>\n * - getAll(query?): Promise<NotificationsEntity[]>\n * - patch(id, data): Promise<NotificationsEntity>\n * - delete(id, options?): Promise<void>\n * - exists(id): Promise<boolean>\n * - bulkCreate(dataArray): Promise<NotificationsEntity[]>\n * - bulkDelete(ids, options?): Promise<void>\n */\nexport class BackendNotificationsDomainService extends BaseBackendDomainService<\n  NotificationsDomainServiceConfig,\n  NotificationsEntity,\n  NotificationsResponseDTO,\n  CreateNotificationsDTO,\n  UpdateNotificationsDTO,\n  PatchNotificationsDTO,\n  QueryNotificationsDTO,\n  DeleteNotificationsDTO,\n  NotificationsDatabaseRow,\n  NotificationsRepository,\n  NotificationStoreItem,\n  NotificationsMapper,\n  NotificationsValidator\n> {\n  // ─────────────────────────────────────────────────────────────────────────\n  // Required Properties\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /** Lazy-loaded repository instance for data access */\n  private _repository?: NotificationsRepository;\n\n  /** Lazy-loaded short URL repository for URL shortening */\n  private _shortUrlRepository?: ShortUrlRepository;\n\n  /** Lazy-loaded preferences repository for opt-out checking */\n  private _preferencesRepository?: NotificationPreferencesRepository;\n\n  /** Preference cache for performance */\n  private _preferenceCache: Map<\n    string,\n    { prefs: NotificationPreferencesDatabaseRow; expiry: number }\n  > = new Map();\n\n  /** Event prefix for all events emitted by this service */\n  protected eventPrefix = 'notifications';\n\n  /** Cache prefix for namespacing cache keys */\n  protected cachePrefix = 'notifications';\n\n  /**\n   * Lazy repository getter - creates repository on first access.\n   * Defers DbService requirement until repository is actually used.\n   */\n  protected get repository(): NotificationsRepository {\n    this._repository ??= NotificationsRepository.create();\n    return this._repository;\n  }\n\n  /**\n   * Lazy short URL repository getter.\n   * Used for URL shortening in notifications (email tracking links, etc.)\n   */\n  protected get shortUrlRepository(): ShortUrlRepository {\n    this._shortUrlRepository ??= ShortUrlRepository.create();\n    return this._shortUrlRepository;\n  }\n\n  /**\n   * Lazy preferences repository getter.\n   * Used for checking user notification preferences (opt-out).\n   */\n  protected get preferencesRepository(): NotificationPreferencesRepository {\n    this._preferencesRepository ??= NotificationPreferencesRepository.create();\n    return this._preferencesRepository;\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Static: Service Registry Interface\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /** Unique key for this service (used by ServiceRegistry) */\n  static readonly serviceKey = SERVICE_KEYS.NOTIFICATIONS;\n\n  /**\n   * Factory method for ServiceRegistry auto-initialization.\n   * Auto-registers event handlers for DB persistence.\n   */\n  static async create(\n    config: NotificationsDomainServiceConfig = {},\n    options?: CoreServiceCreateOptions\n  ): Promise<BackendNotificationsDomainService> {\n    // Auto-register event handlers when service is created\n    this.registerEventHandlers();\n\n    const injected: CoreInjectedServices = {\n      cache: options?.cache?.instance,\n      db: options?.db?.instance,\n      api: options?.apiClient?.instance,\n      storage: options?.storage?.instance,\n      notifications: options?.notifications?.instance,\n    };\n\n    return new BackendNotificationsDomainService(config, injected);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Static: Event Handlers (for event-to-DB persistence)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Register event handlers for DB persistence.\n   * Auto-called by create() method when service is initialized.\n   *\n   * Customize this method to persist data to DB when domain events fire.\n   * Uses BackendEventPersistenceHandler for a scalable, reusable pattern.\n   *\n   * @param verbose - Enable verbose logging\n   */\n  static registerEventHandlers(verbose?: boolean): void {\n    // Skip if already registered\n    if (BackendEventPersistenceHandler.isRegistered('notifications')) {\n      return;\n    }\n\n    BackendEventPersistenceHandler.register<\n      NotificationsRepository,\n      InstanceType<typeof NotificationsMapperClass>,\n      Record<string, unknown>, // TPayload - customize per event\n      Partial<NotificationsDatabaseRow>\n    >({\n      domain: 'notifications',\n      events: {\n        // ─────────────────────────────────────────────────────────────────────\n        // Campaign Events → Create IN_APP Notifications\n        // Listen to campaign domain events and create notifications for users\n        //\n        // NOTE: This creates IN_APP notifications only (bell icon notifications).\n        // For email/SMS/push, use @plyaz/notifications package separately.\n        //\n        // extractPayload returns a NotificationsEntity-like object that\n        // gets passed to mapToDbRow (which uses mapper.toDbRow).\n        // The validate function uses validator methods for consistency.\n        // ─────────────────────────────────────────────────────────────────────\n        // Example: When a campaign is created, notify the creator (IN_APP)\n        // 'campaign:created': {\n        //   extractPayload: (payload: unknown, mapper: NotificationsMapperClass) => {\n        //     if (!payload || typeof payload !== 'object') return undefined;\n        //     const p = payload as { result?: { id: string; creator_id: string; title: string } };\n        //     if (!p.result) return undefined;\n        //     // Return entity-like object - mapper.toDbRow handles conversion\n        //     return {\n        //       userId: p.result.creator_id,\n        //       type: 'SYSTEM' as const,\n        //       title: 'Campaign Created',\n        //       message: `Your campaign \"${p.result.title}\" has been created successfully.`,\n        //       referenceId: p.result.id,\n        //       referenceType: 'campaign',\n        //       category: 'transactional',\n        //     };\n        //   },\n        //   isBulk: false,\n        //   validate: (item, validator: NotificationsValidatorClass) => {\n        //     // Use validator for consistent validation\n        //     return validator.validateCreate({ ...item }).success;\n        //   },\n        // },\n        // Example: When a campaign is funded/backed, notify the creator (IN_APP)\n        // 'campaign:funded': {\n        //   extractPayload: (payload: unknown, mapper: NotificationsMapperClass) => {\n        //     if (!payload || typeof payload !== 'object') return undefined;\n        //     const p = payload as {\n        //       campaign: { id: string; creator_id: string; title: string };\n        //       backer: { id: string; name: string };\n        //       amount: number;\n        //     };\n        //     if (!p.campaign || !p.backer) return undefined;\n        //     return {\n        //       userId: p.campaign.creator_id,\n        //       type: 'CAMPAIGN_BACKED' as const,\n        //       title: 'New Backer!',\n        //       message: `${p.backer.name} backed your campaign \"${p.campaign.title}\" with $${p.amount}.`,\n        //       referenceId: p.campaign.id,\n        //       referenceType: 'campaign',\n        //       category: 'transactional',\n        //     };\n        //   },\n        //   isBulk: false,\n        //   validate: (item, validator: NotificationsValidatorClass) => {\n        //     return validator.validateCreate({ ...item }).success;\n        //   },\n        // },\n        // Example: When campaign reaches funding goal, notify creator (IN_APP)\n        // 'campaign:goal:reached': {\n        //   extractPayload: (payload: unknown) => {\n        //     if (!payload || typeof payload !== 'object') return undefined;\n        //     const p = payload as { campaign: { id: string; creator_id: string; title: string; goal: number } };\n        //     if (!p.campaign) return undefined;\n        //     return {\n        //       userId: p.campaign.creator_id,\n        //       type: 'SYSTEM' as const,\n        //       title: 'Funding Goal Reached!',\n        //       message: `Congratulations! Your campaign \"${p.campaign.title}\" has reached its funding goal of $${p.campaign.goal}.`,\n        //       referenceId: p.campaign.id,\n        //       referenceType: 'campaign',\n        //       category: 'transactional',\n        //     };\n        //   },\n        //   isBulk: false,\n        //   validate: (item, validator: NotificationsValidatorClass) => {\n        //     return validator.validateCreate({ ...item }).success;\n        //   },\n        // },\n        // ─────────────────────────────────────────────────────────────────────\n        // Add your event handlers here\n        // Uncomment and customize the examples above, or add new handlers\n        // NOTE: This is for IN_APP notifications only. Use @plyaz/notifications\n        // for email, SMS, and push notification delivery.\n        // ─────────────────────────────────────────────────────────────────────\n      },\n      loadDependencies: async () => ({\n        repository: NotificationsRepository.create(),\n        mapper: new NotificationsMapperClass(),\n      }),\n      mapToDbRow: (mapper, item) => mapper.toDbRow(item),\n      createRecord: async (repository, dbRow) => repository.create(dbRow),\n      getUniqueKey: item => String(item?.id ?? 'unknown'),\n      verbose,\n    });\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Constructor\n  // ─────────────────────────────────────────────────────────────────────────\n\n  constructor(config: NotificationsDomainServiceConfig = {}, injected?: CoreInjectedServices) {\n    const serviceConfig: NotificationsDomainServiceConfig = {\n      enabled: true,\n      throwOnValidationError: true,\n      throwOnRepositoryError: true,\n      emitEvents: true,\n      cache: {\n        enabled: true,\n        defaultTtl: 300,\n      },\n      ...config,\n    };\n\n    super({\n      serviceName: 'BackendNotificationsDomainService',\n      supportedRuntimes: ['backend'] as const,\n      serviceConfig,\n      mapperClass: NotificationsMapperClass,\n      validatorClass: NotificationsValidatorClass,\n      injected,\n    });\n    // Repository is created lazily via getter when first accessed\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Abstract Implementations (Required by BaseDomainService)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Check if service is available\n   */\n  isAvailable(): boolean {\n    return this.isServiceEnabled;\n  }\n\n  /**\n   * Dispose/cleanup the service\n   */\n  dispose(): void {\n    this.logInfo('Service disposed');\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Custom Domain Methods (IN_APP notification operations)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Get all notifications for a user\n   */\n  async getByUserId(userId: string): Promise<NotificationsEntity[]> {\n    return this.getAll({ user_id: userId });\n  }\n\n  /**\n   * Soft delete with reason\n   */\n  async softDeleteWithReason(id: string, reason: string): Promise<void> {\n    await this.delete(id, { soft: true, reason });\n  }\n\n  // NOTE: Read/unread state management can be added later via REST APIs if needed.\n  // For now, keep it simple with just list, create, delete operations.\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Short URL Methods (for email tracking links, etc.)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Resolve a short URL and increment click count.\n   * Used by redirect endpoint to look up original URL.\n   *\n   * @param shortCode - The short code to resolve\n   * @returns Original URL or null if not found/expired\n   */\n  async resolveShortUrl(shortCode: string): Promise<string | null> {\n    const originalUrl = await this.shortUrlRepository.retrieve(shortCode);\n    if (originalUrl) {\n      // Increment click count in background (don't await)\n      this.shortUrlRepository.incrementClicks(shortCode).catch(() => {\n        // Silently ignore click tracking errors\n      });\n    }\n    return originalUrl;\n  }\n\n  /**\n   * Get analytics for a short URL.\n   *\n   * @param shortCode - The short code to get analytics for\n   * @returns Analytics data or null if not found\n   */\n  async getShortUrlAnalytics(shortCode: string): Promise<UrlAnalytics | null> {\n    return this.shortUrlRepository.getAnalytics(shortCode);\n  }\n\n  /**\n   * Clean up expired short URLs.\n   * Should be called periodically (e.g., via cron job).\n   */\n  async cleanupExpiredShortUrls(): Promise<void> {\n    await this.shortUrlRepository.cleanup();\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Preference Checking Methods (for @plyaz/notifications PreferenceChecker)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Check if a notification should be sent to a recipient.\n   * Implements PreferenceChecker.shouldSend() interface.\n   */\n  async shouldSendNotification(\n    recipientId: string,\n    category: NotificationCategory,\n    channel: NotificationChannel\n  ): Promise<boolean> {\n    // Transactional notifications always allowed (compliance)\n    if (category === 'transactional') return true;\n\n    const prefs = await this.getUserPreferences(recipientId);\n    return this.validator.checkPreferencesAllowSend(prefs, category, channel);\n  }\n\n  /**\n   * Bulk preference check for batch operations.\n   * Implements PreferenceChecker.shouldSendBulk() interface.\n   */\n  async shouldSendNotificationBulk(\n    recipients: Array<{\n      recipientId: string;\n      category: NotificationCategory;\n      channel: NotificationChannel;\n    }>\n  ): Promise<boolean[]> {\n    const uniqueIds = [...new Set(recipients.map(r => r.recipientId))];\n    const prefsMap = new Map<string, NotificationPreferencesDatabaseRow>();\n\n    await Promise.all(\n      uniqueIds.map(async id => {\n        const prefs = await this.getUserPreferences(id);\n        prefsMap.set(id, prefs);\n      })\n    );\n\n    return recipients.map(({ recipientId, category, channel }) => {\n      if (category === 'transactional') return true;\n      const prefs = prefsMap.get(recipientId);\n      if (!prefs) return true;\n      return this.validator.checkPreferencesAllowSend(prefs, category, channel);\n    });\n  }\n\n  /**\n   * Get user notification preferences.\n   */\n  async getUserPreferences(userId: string): Promise<NotificationPreferencesDatabaseRow> {\n    // Check cache\n    const cached = this._preferenceCache.get(userId);\n    if (cached && cached.expiry > Date.now()) {\n      return cached.prefs;\n    }\n\n    const prefs = await this.preferencesRepository.getOrCreate(userId);\n\n    // Cache preferences for 1 minute\n    this._preferenceCache.set(userId, {\n      prefs,\n      expiry: Date.now() + TIME_CONSTANTS.MINUTE,\n    });\n\n    return prefs;\n  }\n\n  /**\n   * Update user notification preferences.\n   */\n  async updateUserPreferences(\n    userId: string,\n    data: Partial<NotificationPreferencesDatabaseRow>\n  ): Promise<NotificationPreferencesDatabaseRow | null> {\n    const result = await this.preferencesRepository.updateByUserId(userId, data);\n    // Invalidate cache\n    this._preferenceCache.delete(userId);\n    return result.success ? (result.value ?? null) : null;\n  }\n\n  /**\n   * Handle unsubscribe request from email link.\n   * Verifies the token and updates user preferences to disable the category.\n   *\n   * @param token - Encrypted token from unsubscribe URL\n   * @param secret - Encryption key for token verification\n   * @param strategy - Token strategy (default: 'aes-256-gcm')\n   * @returns Result with payload on success\n   * @throws NotificationPackageError on token verification or update failure\n   */\n  async unsubscribe(\n    token: string,\n    secret: string,\n    strategy: TokenStrategy = 'aes-256-gcm'\n  ): Promise<{ success: boolean; message: string; payload: TokenPayload }> {\n    // Verify token\n    const result: TokenVerificationResult = verifyToken(token, secret, strategy);\n\n    if (!result.valid || !result.payload) {\n      throw new NotificationPackageError(\n        NOTIFICATION_ERROR_CODES.VALIDATION_FAILED,\n        NOTIFICATION_ERROR_CODES.VALIDATION_FAILED,\n        { context: { tokenError: result.error } }\n      );\n    }\n\n    const { recipientId, category, type } = result.payload;\n\n    // Determine what to disable based on token type\n    const isFullUnsubscribe = type === 'unsubscribe_url' || type === 'unsubscribe_webhook';\n    const preferenceField = NotificationsMapperClass.mapCategoryToPreferenceField(category);\n\n    // Validate category - throws if invalid and not a full unsubscribe\n    this.validator.validateUnsubscribeCategoryOrThrow(\n      category,\n      isFullUnsubscribe || !!preferenceField\n    );\n\n    // Update preferences\n    const updateData: Partial<NotificationPreferencesDatabaseRow> = {};\n\n    if (isFullUnsubscribe && preferenceField) {\n      // Disable just this category\n      updateData[preferenceField] = false;\n    } else if (isFullUnsubscribe) {\n      // If no specific category, disable marketing by default\n      updateData.marketing_enabled = false;\n    }\n\n    const updated = await this.updateUserPreferences(recipientId, updateData);\n\n    if (!updated) {\n      throw new NotificationPackageError(\n        NOTIFICATION_ERROR_CODES.UNKNOWN_ERROR,\n        NOTIFICATION_ERROR_CODES.UNKNOWN_ERROR,\n        { context: { recipientId, category } }\n      );\n    }\n\n    // Emit event for tracking\n    CoreEventManager.emit('notification:unsubscribed', {\n      userId: recipientId,\n      category,\n      type,\n      timestamp: new Date().toISOString(),\n    });\n\n    return {\n      success: true,\n      message: `Successfully unsubscribed from ${category || 'marketing'} notifications.`,\n      payload: result.payload,\n    };\n  }\n\n  /**\n   * Create a PreferenceChecker object for use with @plyaz/notifications.\n   * Pass this to NotificationService config.preferenceChecker.\n   */\n  createPreferenceChecker(): PreferenceChecker {\n    return {\n      shouldSend: (recipientId, category, channel) =>\n        this.shouldSendNotification(recipientId, category, channel),\n      shouldSendBulk: recipients => this.shouldSendNotificationBulk(recipients),\n    };\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Lifecycle Hooks\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * After creating a notification, emit streaming event for real-time delivery.\n   * Broadcasts to user:notifications:{userId} channel.\n   */\n  protected override async afterCreate(entity: NotificationsEntity): Promise<void> {\n    // Use mapper to convert entity to stream data format\n    const streamData = this.mapper.toStreamData(entity);\n    CoreEventManager.emit('notification:created', streamData);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // NOTE: CRUD Methods Are Inherited - No Need to Implement!\n  // ─────────────────────────────────────────────────────────────────────────\n  // - create(data): Promise<NotificationsEntity>\n  // - getById(id): Promise<NotificationsEntity | null>\n  // - getAll(query?): Promise<NotificationsEntity[]>\n  // - patch(id, data): Promise<NotificationsEntity>\n  // - delete(id, options?): Promise<void>\n  // - exists(id): Promise<boolean>\n  // - bulkCreate(dataArray): Promise<NotificationsEntity[]>\n  // - bulkDelete(ids, options?): Promise<void>\n  // ─────────────────────────────────────────────────────────────────────────\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Singleton Instance & Getters\n// ─────────────────────────────────────────────────────────────────────────────\n\nlet _instance: BackendNotificationsDomainService | null = null;\n\n/**\n * Get or create singleton instance\n */\nexport async function getBackendNotificationsDomainService(\n  config?: NotificationsDomainServiceConfig,\n  options?: CoreServiceCreateOptions\n): Promise<BackendNotificationsDomainService> {\n  _instance ??= await BackendNotificationsDomainService.create(config, options);\n  return _instance;\n}\n\n/**\n * Reset singleton instance (for testing)\n */\nexport function resetNotificationsDomainService(): void {\n  if (_instance) {\n    _instance.dispose();\n    _instance = null;\n  }\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n  function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n  ownKeys = Object.getOwnPropertyNames || function (o) {\n    var ar = [];\n    for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n    return ar;\n  };\n  return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  var r, s = 0;\n  function next() {\n    while (r = env.stack.pop()) {\n      try {\n        if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n        if (r.dispose) {\n          var result = r.dispose.call(r.value);\n          if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n        }\n        else s |= 1;\n      }\n      catch (e) {\n        fail(e);\n      }\n    }\n    if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n  if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n      return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n          return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n      });\n  }\n  return path;\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __esDecorate,\n  __runInitializers,\n  __propKey,\n  __setFunctionName,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n  __rewriteRelativeImportExtension,\n};\n","/*! *****************************************************************************\nCopyright (C) Microsoft. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nvar Reflect;\n(function (Reflect) {\n    // Metadata Proposal\n    // https://rbuckton.github.io/reflect-metadata/\n    (function (factory) {\n        var root = typeof globalThis === \"object\" ? globalThis :\n            typeof global === \"object\" ? global :\n                typeof self === \"object\" ? self :\n                    typeof this === \"object\" ? this :\n                        sloppyModeThis();\n        var exporter = makeExporter(Reflect);\n        if (typeof root.Reflect !== \"undefined\") {\n            exporter = makeExporter(root.Reflect, exporter);\n        }\n        factory(exporter, root);\n        if (typeof root.Reflect === \"undefined\") {\n            root.Reflect = Reflect;\n        }\n        function makeExporter(target, previous) {\n            return function (key, value) {\n                Object.defineProperty(target, key, { configurable: true, writable: true, value: value });\n                if (previous)\n                    previous(key, value);\n            };\n        }\n        function functionThis() {\n            try {\n                return Function(\"return this;\")();\n            }\n            catch (_) { }\n        }\n        function indirectEvalThis() {\n            try {\n                return (void 0, eval)(\"(function() { return this; })()\");\n            }\n            catch (_) { }\n        }\n        function sloppyModeThis() {\n            return functionThis() || indirectEvalThis();\n        }\n    })(function (exporter, root) {\n        var hasOwn = Object.prototype.hasOwnProperty;\n        // feature test for Symbol support\n        var supportsSymbol = typeof Symbol === \"function\";\n        var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== \"undefined\" ? Symbol.toPrimitive : \"@@toPrimitive\";\n        var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== \"undefined\" ? Symbol.iterator : \"@@iterator\";\n        var supportsCreate = typeof Object.create === \"function\"; // feature test for Object.create support\n        var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support\n        var downLevel = !supportsCreate && !supportsProto;\n        var HashMap = {\n            // create an object in dictionary mode (a.k.a. \"slow\" mode in v8)\n            create: supportsCreate\n                ? function () { return MakeDictionary(Object.create(null)); }\n                : supportsProto\n                    ? function () { return MakeDictionary({ __proto__: null }); }\n                    : function () { return MakeDictionary({}); },\n            has: downLevel\n                ? function (map, key) { return hasOwn.call(map, key); }\n                : function (map, key) { return key in map; },\n            get: downLevel\n                ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; }\n                : function (map, key) { return map[key]; },\n        };\n        // Load global or shim versions of Map, Set, and WeakMap\n        var functionPrototype = Object.getPrototypeOf(Function);\n        var _Map = typeof Map === \"function\" && typeof Map.prototype.entries === \"function\" ? Map : CreateMapPolyfill();\n        var _Set = typeof Set === \"function\" && typeof Set.prototype.entries === \"function\" ? Set : CreateSetPolyfill();\n        var _WeakMap = typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\n        var registrySymbol = supportsSymbol ? Symbol.for(\"@reflect-metadata:registry\") : undefined;\n        var metadataRegistry = GetOrCreateMetadataRegistry();\n        var metadataProvider = CreateMetadataProvider(metadataRegistry);\n        /**\n         * Applies a set of decorators to a property of a target object.\n         * @param decorators An array of decorators.\n         * @param target The target object.\n         * @param propertyKey (Optional) The property key to decorate.\n         * @param attributes (Optional) The property descriptor for the target key.\n         * @remarks Decorators are applied in reverse order.\n         * @example\n         *\n         *     class Example {\n         *         // property declarations are not part of ES6, though they are valid in TypeScript:\n         *         // static staticProperty;\n         *         // property;\n         *\n         *         constructor(p) { }\n         *         static staticMethod(p) { }\n         *         method(p) { }\n         *     }\n         *\n         *     // constructor\n         *     Example = Reflect.decorate(decoratorsArray, Example);\n         *\n         *     // property (on constructor)\n         *     Reflect.decorate(decoratorsArray, Example, \"staticProperty\");\n         *\n         *     // property (on prototype)\n         *     Reflect.decorate(decoratorsArray, Example.prototype, \"property\");\n         *\n         *     // method (on constructor)\n         *     Object.defineProperty(Example, \"staticMethod\",\n         *         Reflect.decorate(decoratorsArray, Example, \"staticMethod\",\n         *             Object.getOwnPropertyDescriptor(Example, \"staticMethod\")));\n         *\n         *     // method (on prototype)\n         *     Object.defineProperty(Example.prototype, \"method\",\n         *         Reflect.decorate(decoratorsArray, Example.prototype, \"method\",\n         *             Object.getOwnPropertyDescriptor(Example.prototype, \"method\")));\n         *\n         */\n        function decorate(decorators, target, propertyKey, attributes) {\n            if (!IsUndefined(propertyKey)) {\n                if (!IsArray(decorators))\n                    throw new TypeError();\n                if (!IsObject(target))\n                    throw new TypeError();\n                if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes))\n                    throw new TypeError();\n                if (IsNull(attributes))\n                    attributes = undefined;\n                propertyKey = ToPropertyKey(propertyKey);\n                return DecorateProperty(decorators, target, propertyKey, attributes);\n            }\n            else {\n                if (!IsArray(decorators))\n                    throw new TypeError();\n                if (!IsConstructor(target))\n                    throw new TypeError();\n                return DecorateConstructor(decorators, target);\n            }\n        }\n        exporter(\"decorate\", decorate);\n        // 4.1.2 Reflect.metadata(metadataKey, metadataValue)\n        // https://rbuckton.github.io/reflect-metadata/#reflect.metadata\n        /**\n         * A default metadata decorator factory that can be used on a class, class member, or parameter.\n         * @param metadataKey The key for the metadata entry.\n         * @param metadataValue The value for the metadata entry.\n         * @returns A decorator function.\n         * @remarks\n         * If `metadataKey` is already defined for the target and target key, the\n         * metadataValue for that key will be overwritten.\n         * @example\n         *\n         *     // constructor\n         *     @Reflect.metadata(key, value)\n         *     class Example {\n         *     }\n         *\n         *     // property (on constructor, TypeScript only)\n         *     class Example {\n         *         @Reflect.metadata(key, value)\n         *         static staticProperty;\n         *     }\n         *\n         *     // property (on prototype, TypeScript only)\n         *     class Example {\n         *         @Reflect.metadata(key, value)\n         *         property;\n         *     }\n         *\n         *     // method (on constructor)\n         *     class Example {\n         *         @Reflect.metadata(key, value)\n         *         static staticMethod() { }\n         *     }\n         *\n         *     // method (on prototype)\n         *     class Example {\n         *         @Reflect.metadata(key, value)\n         *         method() { }\n         *     }\n         *\n         */\n        function metadata(metadataKey, metadataValue) {\n            function decorator(target, propertyKey) {\n                if (!IsObject(target))\n                    throw new TypeError();\n                if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey))\n                    throw new TypeError();\n                OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n            }\n            return decorator;\n        }\n        exporter(\"metadata\", metadata);\n        /**\n         * Define a unique metadata entry on the target.\n         * @param metadataKey A key used to store and retrieve metadata.\n         * @param metadataValue A value that contains attached metadata.\n         * @param target The target object on which to define metadata.\n         * @param propertyKey (Optional) The property key for the target.\n         * @example\n         *\n         *     class Example {\n         *         // property declarations are not part of ES6, though they are valid in TypeScript:\n         *         // static staticProperty;\n         *         // property;\n         *\n         *         constructor(p) { }\n         *         static staticMethod(p) { }\n         *         method(p) { }\n         *     }\n         *\n         *     // constructor\n         *     Reflect.defineMetadata(\"custom:annotation\", options, Example);\n         *\n         *     // property (on constructor)\n         *     Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticProperty\");\n         *\n         *     // property (on prototype)\n         *     Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"property\");\n         *\n         *     // method (on constructor)\n         *     Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticMethod\");\n         *\n         *     // method (on prototype)\n         *     Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"method\");\n         *\n         *     // decorator factory as metadata-producing annotation.\n         *     function MyAnnotation(options): Decorator {\n         *         return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n         *     }\n         *\n         */\n        function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\n            if (!IsObject(target))\n                throw new TypeError();\n            if (!IsUndefined(propertyKey))\n                propertyKey = ToPropertyKey(propertyKey);\n            return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n        }\n        exporter(\"defineMetadata\", defineMetadata);\n        /**\n         * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n         * @param metadataKey A key used to store and retrieve metadata.\n         * @param target The target object on which the metadata is defined.\n         * @param propertyKey (Optional) The property key for the target.\n         * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n         * @example\n         *\n         *     class Example {\n         *         // property declarations are not part of ES6, though they are valid in TypeScript:\n         *         // static staticProperty;\n         *         // property;\n         *\n         *         constructor(p) { }\n         *         static staticMethod(p) { }\n         *         method(p) { }\n         *     }\n         *\n         *     // constructor\n         *     result = Reflect.hasMetadata(\"custom:annotation\", Example);\n         *\n         *     // property (on constructor)\n         *     result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\n         *\n         *     // property (on prototype)\n         *     result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\n         *\n         *     // method (on constructor)\n         *     result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\n         *\n         *     // method (on prototype)\n         *     result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\n         *\n         */\n        function hasMetadata(metadataKey, target, propertyKey) {\n            if (!IsObject(target))\n                throw new TypeError();\n            if (!IsUndefined(propertyKey))\n                propertyKey = ToPropertyKey(propertyKey);\n            return OrdinaryHasMetadata(metadataKey, target, propertyKey);\n        }\n        exporter(\"hasMetadata\", hasMetadata);\n        /**\n         * Gets a value indicating whether the target object has the provided metadata key defined.\n         * @param metadataKey A key used to store and retrieve metadata.\n         * @param target The target object on which the metadata is defined.\n         * @param propertyKey (Optional) The property key for the target.\n         * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\n         * @example\n         *\n         *     class Example {\n         *         // property declarations are not part of ES6, though they are valid in TypeScript:\n         *         // static staticProperty;\n         *         // property;\n         *\n         *         constructor(p) { }\n         *         static staticMethod(p) { }\n         *         method(p) { }\n         *     }\n         *\n         *     // constructor\n         *     result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\n         *\n         *     // property (on constructor)\n         *     result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n         *\n         *     // property (on prototype)\n         *     result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n         *\n         *     // method (on constructor)\n         *     result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n         *\n         *     // method (on prototype)\n         *     result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n         *\n         */\n        function hasOwnMetadata(metadataKey, target, propertyKey) {\n            if (!IsObject(target))\n                throw new TypeError();\n            if (!IsUndefined(propertyKey))\n                propertyKey = ToPropertyKey(propertyKey);\n            return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\n        }\n        exporter(\"hasOwnMetadata\", hasOwnMetadata);\n        /**\n         * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n         * @param metadataKey A key used to store and retrieve metadata.\n         * @param target The target object on which the metadata is defined.\n         * @param propertyKey (Optional) The property key for the target.\n         * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n         * @example\n         *\n         *     class Example {\n         *         // property declarations are not part of ES6, though they are valid in TypeScript:\n         *         // static staticProperty;\n         *         // property;\n         *\n         *         constructor(p) { }\n         *         static staticMethod(p) { }\n         *         method(p) { }\n         *     }\n         *\n         *     // constructor\n         *     result = Reflect.getMetadata(\"custom:annotation\", Example);\n         *\n         *     // property (on constructor)\n         *     result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\n         *\n         *     // property (on prototype)\n         *     result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\n         *\n         *     // method (on constructor)\n         *     result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\n         *\n         *     // method (on prototype)\n         *     result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\n         *\n         */\n        function getMetadata(metadataKey, target, propertyKey) {\n            if (!IsObject(target))\n                throw new TypeError();\n            if (!IsUndefined(propertyKey))\n                propertyKey = ToPropertyKey(propertyKey);\n            return OrdinaryGetMetadata(metadataKey, target, propertyKey);\n        }\n        exporter(\"getMetadata\", getMetadata);\n        /**\n         * Gets the metadata value for the provided metadata key on the target object.\n         * @param metadataKey A key used to store and retrieve metadata.\n         * @param target The target object on which the metadata is defined.\n         * @param propertyKey (Optional) The property key for the target.\n         * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n         * @example\n         *\n         *     class Example {\n         *         // property declarations are not part of ES6, though they are valid in TypeScript:\n         *         // static staticProperty;\n         *         // property;\n         *\n         *         constructor(p) { }\n         *         static staticMethod(p) { }\n         *         method(p) { }\n         *     }\n         *\n         *     // constructor\n         *     result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\n         *\n         *     // property (on constructor)\n         *     result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n         *\n         *     // property (on prototype)\n         *     result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n         *\n         *     // method (on constructor)\n         *     result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n         *\n         *     // method (on prototype)\n         *     result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n         *\n         */\n        function getOwnMetadata(metadataKey, target, propertyKey) {\n            if (!IsObject(target))\n                throw new TypeError();\n            if (!IsUndefined(propertyKey))\n                propertyKey = ToPropertyKey(propertyKey);\n            return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\n        }\n        exporter(\"getOwnMetadata\", getOwnMetadata);\n        /**\n         * Gets the metadata keys defined on the target object or its prototype chain.\n         * @param target The target object on which the metadata is defined.\n         * @param propertyKey (Optional) The property key for the target.\n         * @returns An array of unique metadata keys.\n         * @example\n         *\n         *     class Example {\n         *         // property declarations are not part of ES6, though they are valid in TypeScript:\n         *         // static staticProperty;\n         *         // property;\n         *\n         *         constructor(p) { }\n         *         static staticMethod(p) { }\n         *         method(p) { }\n         *     }\n         *\n         *     // constructor\n         *     result = Reflect.getMetadataKeys(Example);\n         *\n         *     // property (on constructor)\n         *     result = Reflect.getMetadataKeys(Example, \"staticProperty\");\n         *\n         *     // property (on prototype)\n         *     result = Reflect.getMetadataKeys(Example.prototype, \"property\");\n         *\n         *     // method (on constructor)\n         *     result = Reflect.getMetadataKeys(Example, \"staticMethod\");\n         *\n         *     // method (on prototype)\n         *     result = Reflect.getMetadataKeys(Example.prototype, \"method\");\n         *\n         */\n        function getMetadataKeys(target, propertyKey) {\n            if (!IsObject(target))\n                throw new TypeError();\n            if (!IsUndefined(propertyKey))\n                propertyKey = ToPropertyKey(propertyKey);\n            return OrdinaryMetadataKeys(target, propertyKey);\n        }\n        exporter(\"getMetadataKeys\", getMetadataKeys);\n        /**\n         * Gets the unique metadata keys defined on the target object.\n         * @param target The target object on which the metadata is defined.\n         * @param propertyKey (Optional) The property key for the target.\n         * @returns An array of unique metadata keys.\n         * @example\n         *\n         *     class Example {\n         *         // property declarations are not part of ES6, though they are valid in TypeScript:\n         *         // static staticProperty;\n         *         // property;\n         *\n         *         constructor(p) { }\n         *         static staticMethod(p) { }\n         *         method(p) { }\n         *     }\n         *\n         *     // constructor\n         *     result = Reflect.getOwnMetadataKeys(Example);\n         *\n         *     // property (on constructor)\n         *     result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\n         *\n         *     // property (on prototype)\n         *     result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\n         *\n         *     // method (on constructor)\n         *     result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\n         *\n         *     // method (on prototype)\n         *     result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\n         *\n         */\n        function getOwnMetadataKeys(target, propertyKey) {\n            if (!IsObject(target))\n                throw new TypeError();\n            if (!IsUndefined(propertyKey))\n                propertyKey = ToPropertyKey(propertyKey);\n            return OrdinaryOwnMetadataKeys(target, propertyKey);\n        }\n        exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\n        /**\n         * Deletes the metadata entry from the target object with the provided key.\n         * @param metadataKey A key used to store and retrieve metadata.\n         * @param target The target object on which the metadata is defined.\n         * @param propertyKey (Optional) The property key for the target.\n         * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n         * @example\n         *\n         *     class Example {\n         *         // property declarations are not part of ES6, though they are valid in TypeScript:\n         *         // static staticProperty;\n         *         // property;\n         *\n         *         constructor(p) { }\n         *         static staticMethod(p) { }\n         *         method(p) { }\n         *     }\n         *\n         *     // constructor\n         *     result = Reflect.deleteMetadata(\"custom:annotation\", Example);\n         *\n         *     // property (on constructor)\n         *     result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\n         *\n         *     // property (on prototype)\n         *     result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\n         *\n         *     // method (on constructor)\n         *     result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\n         *\n         *     // method (on prototype)\n         *     result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\n         *\n         */\n        function deleteMetadata(metadataKey, target, propertyKey) {\n            if (!IsObject(target))\n                throw new TypeError();\n            if (!IsUndefined(propertyKey))\n                propertyKey = ToPropertyKey(propertyKey);\n            if (!IsObject(target))\n                throw new TypeError();\n            if (!IsUndefined(propertyKey))\n                propertyKey = ToPropertyKey(propertyKey);\n            var provider = GetMetadataProvider(target, propertyKey, /*Create*/ false);\n            if (IsUndefined(provider))\n                return false;\n            return provider.OrdinaryDeleteMetadata(metadataKey, target, propertyKey);\n        }\n        exporter(\"deleteMetadata\", deleteMetadata);\n        function DecorateConstructor(decorators, target) {\n            for (var i = decorators.length - 1; i >= 0; --i) {\n                var decorator = decorators[i];\n                var decorated = decorator(target);\n                if (!IsUndefined(decorated) && !IsNull(decorated)) {\n                    if (!IsConstructor(decorated))\n                        throw new TypeError();\n                    target = decorated;\n                }\n            }\n            return target;\n        }\n        function DecorateProperty(decorators, target, propertyKey, descriptor) {\n            for (var i = decorators.length - 1; i >= 0; --i) {\n                var decorator = decorators[i];\n                var decorated = decorator(target, propertyKey, descriptor);\n                if (!IsUndefined(decorated) && !IsNull(decorated)) {\n                    if (!IsObject(decorated))\n                        throw new TypeError();\n                    descriptor = decorated;\n                }\n            }\n            return descriptor;\n        }\n        // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\n        // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\n        function OrdinaryHasMetadata(MetadataKey, O, P) {\n            var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n            if (hasOwn)\n                return true;\n            var parent = OrdinaryGetPrototypeOf(O);\n            if (!IsNull(parent))\n                return OrdinaryHasMetadata(MetadataKey, parent, P);\n            return false;\n        }\n        // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n        // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n        function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n            var provider = GetMetadataProvider(O, P, /*Create*/ false);\n            if (IsUndefined(provider))\n                return false;\n            return ToBoolean(provider.OrdinaryHasOwnMetadata(MetadataKey, O, P));\n        }\n        // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\n        // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\n        function OrdinaryGetMetadata(MetadataKey, O, P) {\n            var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n            if (hasOwn)\n                return OrdinaryGetOwnMetadata(MetadataKey, O, P);\n            var parent = OrdinaryGetPrototypeOf(O);\n            if (!IsNull(parent))\n                return OrdinaryGetMetadata(MetadataKey, parent, P);\n            return undefined;\n        }\n        // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n        // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n        function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n            var provider = GetMetadataProvider(O, P, /*Create*/ false);\n            if (IsUndefined(provider))\n                return;\n            return provider.OrdinaryGetOwnMetadata(MetadataKey, O, P);\n        }\n        // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n        // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n        function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n            var provider = GetMetadataProvider(O, P, /*Create*/ true);\n            provider.OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P);\n        }\n        // 3.1.6.1 OrdinaryMetadataKeys(O, P)\n        // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\n        function OrdinaryMetadataKeys(O, P) {\n            var ownKeys = OrdinaryOwnMetadataKeys(O, P);\n            var parent = OrdinaryGetPrototypeOf(O);\n            if (parent === null)\n                return ownKeys;\n            var parentKeys = OrdinaryMetadataKeys(parent, P);\n            if (parentKeys.length <= 0)\n                return ownKeys;\n            if (ownKeys.length <= 0)\n                return parentKeys;\n            var set = new _Set();\n            var keys = [];\n            for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\n                var key = ownKeys_1[_i];\n                var hasKey = set.has(key);\n                if (!hasKey) {\n                    set.add(key);\n                    keys.push(key);\n                }\n            }\n            for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\n                var key = parentKeys_1[_a];\n                var hasKey = set.has(key);\n                if (!hasKey) {\n                    set.add(key);\n                    keys.push(key);\n                }\n            }\n            return keys;\n        }\n        // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n        // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n        function OrdinaryOwnMetadataKeys(O, P) {\n            var provider = GetMetadataProvider(O, P, /*create*/ false);\n            if (!provider) {\n                return [];\n            }\n            return provider.OrdinaryOwnMetadataKeys(O, P);\n        }\n        // 6 ECMAScript Data Types and Values\n        // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\n        function Type(x) {\n            if (x === null)\n                return 1 /* Null */;\n            switch (typeof x) {\n                case \"undefined\": return 0 /* Undefined */;\n                case \"boolean\": return 2 /* Boolean */;\n                case \"string\": return 3 /* String */;\n                case \"symbol\": return 4 /* Symbol */;\n                case \"number\": return 5 /* Number */;\n                case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\n                default: return 6 /* Object */;\n            }\n        }\n        // 6.1.1 The Undefined Type\n        // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\n        function IsUndefined(x) {\n            return x === undefined;\n        }\n        // 6.1.2 The Null Type\n        // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\n        function IsNull(x) {\n            return x === null;\n        }\n        // 6.1.5 The Symbol Type\n        // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\n        function IsSymbol(x) {\n            return typeof x === \"symbol\";\n        }\n        // 6.1.7 The Object Type\n        // https://tc39.github.io/ecma262/#sec-object-type\n        function IsObject(x) {\n            return typeof x === \"object\" ? x !== null : typeof x === \"function\";\n        }\n        // 7.1 Type Conversion\n        // https://tc39.github.io/ecma262/#sec-type-conversion\n        // 7.1.1 ToPrimitive(input [, PreferredType])\n        // https://tc39.github.io/ecma262/#sec-toprimitive\n        function ToPrimitive(input, PreferredType) {\n            switch (Type(input)) {\n                case 0 /* Undefined */: return input;\n                case 1 /* Null */: return input;\n                case 2 /* Boolean */: return input;\n                case 3 /* String */: return input;\n                case 4 /* Symbol */: return input;\n                case 5 /* Number */: return input;\n            }\n            var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\n            var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\n            if (exoticToPrim !== undefined) {\n                var result = exoticToPrim.call(input, hint);\n                if (IsObject(result))\n                    throw new TypeError();\n                return result;\n            }\n            return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\n        }\n        // 7.1.1.1 OrdinaryToPrimitive(O, hint)\n        // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\n        function OrdinaryToPrimitive(O, hint) {\n            if (hint === \"string\") {\n                var toString_1 = O.toString;\n                if (IsCallable(toString_1)) {\n                    var result = toString_1.call(O);\n                    if (!IsObject(result))\n                        return result;\n                }\n                var valueOf = O.valueOf;\n                if (IsCallable(valueOf)) {\n                    var result = valueOf.call(O);\n                    if (!IsObject(result))\n                        return result;\n                }\n            }\n            else {\n                var valueOf = O.valueOf;\n                if (IsCallable(valueOf)) {\n                    var result = valueOf.call(O);\n                    if (!IsObject(result))\n                        return result;\n                }\n                var toString_2 = O.toString;\n                if (IsCallable(toString_2)) {\n                    var result = toString_2.call(O);\n                    if (!IsObject(result))\n                        return result;\n                }\n            }\n            throw new TypeError();\n        }\n        // 7.1.2 ToBoolean(argument)\n        // https://tc39.github.io/ecma262/2016/#sec-toboolean\n        function ToBoolean(argument) {\n            return !!argument;\n        }\n        // 7.1.12 ToString(argument)\n        // https://tc39.github.io/ecma262/#sec-tostring\n        function ToString(argument) {\n            return \"\" + argument;\n        }\n        // 7.1.14 ToPropertyKey(argument)\n        // https://tc39.github.io/ecma262/#sec-topropertykey\n        function ToPropertyKey(argument) {\n            var key = ToPrimitive(argument, 3 /* String */);\n            if (IsSymbol(key))\n                return key;\n            return ToString(key);\n        }\n        // 7.2 Testing and Comparison Operations\n        // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\n        // 7.2.2 IsArray(argument)\n        // https://tc39.github.io/ecma262/#sec-isarray\n        function IsArray(argument) {\n            return Array.isArray\n                ? Array.isArray(argument)\n                : argument instanceof Object\n                    ? argument instanceof Array\n                    : Object.prototype.toString.call(argument) === \"[object Array]\";\n        }\n        // 7.2.3 IsCallable(argument)\n        // https://tc39.github.io/ecma262/#sec-iscallable\n        function IsCallable(argument) {\n            // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\n            return typeof argument === \"function\";\n        }\n        // 7.2.4 IsConstructor(argument)\n        // https://tc39.github.io/ecma262/#sec-isconstructor\n        function IsConstructor(argument) {\n            // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\n            return typeof argument === \"function\";\n        }\n        // 7.2.7 IsPropertyKey(argument)\n        // https://tc39.github.io/ecma262/#sec-ispropertykey\n        function IsPropertyKey(argument) {\n            switch (Type(argument)) {\n                case 3 /* String */: return true;\n                case 4 /* Symbol */: return true;\n                default: return false;\n            }\n        }\n        function SameValueZero(x, y) {\n            return x === y || x !== x && y !== y;\n        }\n        // 7.3 Operations on Objects\n        // https://tc39.github.io/ecma262/#sec-operations-on-objects\n        // 7.3.9 GetMethod(V, P)\n        // https://tc39.github.io/ecma262/#sec-getmethod\n        function GetMethod(V, P) {\n            var func = V[P];\n            if (func === undefined || func === null)\n                return undefined;\n            if (!IsCallable(func))\n                throw new TypeError();\n            return func;\n        }\n        // 7.4 Operations on Iterator Objects\n        // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\n        function GetIterator(obj) {\n            var method = GetMethod(obj, iteratorSymbol);\n            if (!IsCallable(method))\n                throw new TypeError(); // from Call\n            var iterator = method.call(obj);\n            if (!IsObject(iterator))\n                throw new TypeError();\n            return iterator;\n        }\n        // 7.4.4 IteratorValue(iterResult)\n        // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\n        function IteratorValue(iterResult) {\n            return iterResult.value;\n        }\n        // 7.4.5 IteratorStep(iterator)\n        // https://tc39.github.io/ecma262/#sec-iteratorstep\n        function IteratorStep(iterator) {\n            var result = iterator.next();\n            return result.done ? false : result;\n        }\n        // 7.4.6 IteratorClose(iterator, completion)\n        // https://tc39.github.io/ecma262/#sec-iteratorclose\n        function IteratorClose(iterator) {\n            var f = iterator[\"return\"];\n            if (f)\n                f.call(iterator);\n        }\n        // 9.1 Ordinary Object Internal Methods and Internal Slots\n        // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\n        // 9.1.1.1 OrdinaryGetPrototypeOf(O)\n        // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\n        function OrdinaryGetPrototypeOf(O) {\n            var proto = Object.getPrototypeOf(O);\n            if (typeof O !== \"function\" || O === functionPrototype)\n                return proto;\n            // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\n            // Try to determine the superclass constructor. Compatible implementations\n            // must either set __proto__ on a subclass constructor to the superclass constructor,\n            // or ensure each class has a valid `constructor` property on its prototype that\n            // points back to the constructor.\n            // If this is not the same as Function.[[Prototype]], then this is definately inherited.\n            // This is the case when in ES6 or when using __proto__ in a compatible browser.\n            if (proto !== functionPrototype)\n                return proto;\n            // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\n            var prototype = O.prototype;\n            var prototypeProto = prototype && Object.getPrototypeOf(prototype);\n            if (prototypeProto == null || prototypeProto === Object.prototype)\n                return proto;\n            // If the constructor was not a function, then we cannot determine the heritage.\n            var constructor = prototypeProto.constructor;\n            if (typeof constructor !== \"function\")\n                return proto;\n            // If we have some kind of self-reference, then we cannot determine the heritage.\n            if (constructor === O)\n                return proto;\n            // we have a pretty good guess at the heritage.\n            return constructor;\n        }\n        // Global metadata registry\n        // - Allows `import \"reflect-metadata\"` and `import \"reflect-metadata/no-conflict\"` to interoperate.\n        // - Uses isolated metadata if `Reflect` is frozen before the registry can be installed.\n        /**\n         * Creates a registry used to allow multiple `reflect-metadata` providers.\n         */\n        function CreateMetadataRegistry() {\n            var fallback;\n            if (!IsUndefined(registrySymbol) &&\n                typeof root.Reflect !== \"undefined\" &&\n                !(registrySymbol in root.Reflect) &&\n                typeof root.Reflect.defineMetadata === \"function\") {\n                // interoperate with older version of `reflect-metadata` that did not support a registry.\n                fallback = CreateFallbackProvider(root.Reflect);\n            }\n            var first;\n            var second;\n            var rest;\n            var targetProviderMap = new _WeakMap();\n            var registry = {\n                registerProvider: registerProvider,\n                getProvider: getProvider,\n                setProvider: setProvider,\n            };\n            return registry;\n            function registerProvider(provider) {\n                if (!Object.isExtensible(registry)) {\n                    throw new Error(\"Cannot add provider to a frozen registry.\");\n                }\n                switch (true) {\n                    case fallback === provider: break;\n                    case IsUndefined(first):\n                        first = provider;\n                        break;\n                    case first === provider: break;\n                    case IsUndefined(second):\n                        second = provider;\n                        break;\n                    case second === provider: break;\n                    default:\n                        if (rest === undefined)\n                            rest = new _Set();\n                        rest.add(provider);\n                        break;\n                }\n            }\n            function getProviderNoCache(O, P) {\n                if (!IsUndefined(first)) {\n                    if (first.isProviderFor(O, P))\n                        return first;\n                    if (!IsUndefined(second)) {\n                        if (second.isProviderFor(O, P))\n                            return first;\n                        if (!IsUndefined(rest)) {\n                            var iterator = GetIterator(rest);\n                            while (true) {\n                                var next = IteratorStep(iterator);\n                                if (!next) {\n                                    return undefined;\n                                }\n                                var provider = IteratorValue(next);\n                                if (provider.isProviderFor(O, P)) {\n                                    IteratorClose(iterator);\n                                    return provider;\n                                }\n                            }\n                        }\n                    }\n                }\n                if (!IsUndefined(fallback) && fallback.isProviderFor(O, P)) {\n                    return fallback;\n                }\n                return undefined;\n            }\n            function getProvider(O, P) {\n                var providerMap = targetProviderMap.get(O);\n                var provider;\n                if (!IsUndefined(providerMap)) {\n                    provider = providerMap.get(P);\n                }\n                if (!IsUndefined(provider)) {\n                    return provider;\n                }\n                provider = getProviderNoCache(O, P);\n                if (!IsUndefined(provider)) {\n                    if (IsUndefined(providerMap)) {\n                        providerMap = new _Map();\n                        targetProviderMap.set(O, providerMap);\n                    }\n                    providerMap.set(P, provider);\n                }\n                return provider;\n            }\n            function hasProvider(provider) {\n                if (IsUndefined(provider))\n                    throw new TypeError();\n                return first === provider || second === provider || !IsUndefined(rest) && rest.has(provider);\n            }\n            function setProvider(O, P, provider) {\n                if (!hasProvider(provider)) {\n                    throw new Error(\"Metadata provider not registered.\");\n                }\n                var existingProvider = getProvider(O, P);\n                if (existingProvider !== provider) {\n                    if (!IsUndefined(existingProvider)) {\n                        return false;\n                    }\n                    var providerMap = targetProviderMap.get(O);\n                    if (IsUndefined(providerMap)) {\n                        providerMap = new _Map();\n                        targetProviderMap.set(O, providerMap);\n                    }\n                    providerMap.set(P, provider);\n                }\n                return true;\n            }\n        }\n        /**\n         * Gets or creates the shared registry of metadata providers.\n         */\n        function GetOrCreateMetadataRegistry() {\n            var metadataRegistry;\n            if (!IsUndefined(registrySymbol) && IsObject(root.Reflect) && Object.isExtensible(root.Reflect)) {\n                metadataRegistry = root.Reflect[registrySymbol];\n            }\n            if (IsUndefined(metadataRegistry)) {\n                metadataRegistry = CreateMetadataRegistry();\n            }\n            if (!IsUndefined(registrySymbol) && IsObject(root.Reflect) && Object.isExtensible(root.Reflect)) {\n                Object.defineProperty(root.Reflect, registrySymbol, {\n                    enumerable: false,\n                    configurable: false,\n                    writable: false,\n                    value: metadataRegistry\n                });\n            }\n            return metadataRegistry;\n        }\n        function CreateMetadataProvider(registry) {\n            // [[Metadata]] internal slot\n            // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots\n            var metadata = new _WeakMap();\n            var provider = {\n                isProviderFor: function (O, P) {\n                    var targetMetadata = metadata.get(O);\n                    if (IsUndefined(targetMetadata))\n                        return false;\n                    return targetMetadata.has(P);\n                },\n                OrdinaryDefineOwnMetadata: OrdinaryDefineOwnMetadata,\n                OrdinaryHasOwnMetadata: OrdinaryHasOwnMetadata,\n                OrdinaryGetOwnMetadata: OrdinaryGetOwnMetadata,\n                OrdinaryOwnMetadataKeys: OrdinaryOwnMetadataKeys,\n                OrdinaryDeleteMetadata: OrdinaryDeleteMetadata,\n            };\n            metadataRegistry.registerProvider(provider);\n            return provider;\n            function GetOrCreateMetadataMap(O, P, Create) {\n                var targetMetadata = metadata.get(O);\n                var createdTargetMetadata = false;\n                if (IsUndefined(targetMetadata)) {\n                    if (!Create)\n                        return undefined;\n                    targetMetadata = new _Map();\n                    metadata.set(O, targetMetadata);\n                    createdTargetMetadata = true;\n                }\n                var metadataMap = targetMetadata.get(P);\n                if (IsUndefined(metadataMap)) {\n                    if (!Create)\n                        return undefined;\n                    metadataMap = new _Map();\n                    targetMetadata.set(P, metadataMap);\n                    if (!registry.setProvider(O, P, provider)) {\n                        targetMetadata.delete(P);\n                        if (createdTargetMetadata) {\n                            metadata.delete(O);\n                        }\n                        throw new Error(\"Wrong provider for target.\");\n                    }\n                }\n                return metadataMap;\n            }\n            // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n            // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n            function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n                var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n                if (IsUndefined(metadataMap))\n                    return false;\n                return ToBoolean(metadataMap.has(MetadataKey));\n            }\n            // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n            // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n            function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n                var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n                if (IsUndefined(metadataMap))\n                    return undefined;\n                return metadataMap.get(MetadataKey);\n            }\n            // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n            // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n            function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n                var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\n                metadataMap.set(MetadataKey, MetadataValue);\n            }\n            // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n            // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n            function OrdinaryOwnMetadataKeys(O, P) {\n                var keys = [];\n                var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n                if (IsUndefined(metadataMap))\n                    return keys;\n                var keysObj = metadataMap.keys();\n                var iterator = GetIterator(keysObj);\n                var k = 0;\n                while (true) {\n                    var next = IteratorStep(iterator);\n                    if (!next) {\n                        keys.length = k;\n                        return keys;\n                    }\n                    var nextValue = IteratorValue(next);\n                    try {\n                        keys[k] = nextValue;\n                    }\n                    catch (e) {\n                        try {\n                            IteratorClose(iterator);\n                        }\n                        finally {\n                            throw e;\n                        }\n                    }\n                    k++;\n                }\n            }\n            function OrdinaryDeleteMetadata(MetadataKey, O, P) {\n                var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n                if (IsUndefined(metadataMap))\n                    return false;\n                if (!metadataMap.delete(MetadataKey))\n                    return false;\n                if (metadataMap.size === 0) {\n                    var targetMetadata = metadata.get(O);\n                    if (!IsUndefined(targetMetadata)) {\n                        targetMetadata.delete(P);\n                        if (targetMetadata.size === 0) {\n                            metadata.delete(targetMetadata);\n                        }\n                    }\n                }\n                return true;\n            }\n        }\n        function CreateFallbackProvider(reflect) {\n            var defineMetadata = reflect.defineMetadata, hasOwnMetadata = reflect.hasOwnMetadata, getOwnMetadata = reflect.getOwnMetadata, getOwnMetadataKeys = reflect.getOwnMetadataKeys, deleteMetadata = reflect.deleteMetadata;\n            var metadataOwner = new _WeakMap();\n            var provider = {\n                isProviderFor: function (O, P) {\n                    var metadataPropertySet = metadataOwner.get(O);\n                    if (!IsUndefined(metadataPropertySet) && metadataPropertySet.has(P)) {\n                        return true;\n                    }\n                    if (getOwnMetadataKeys(O, P).length) {\n                        if (IsUndefined(metadataPropertySet)) {\n                            metadataPropertySet = new _Set();\n                            metadataOwner.set(O, metadataPropertySet);\n                        }\n                        metadataPropertySet.add(P);\n                        return true;\n                    }\n                    return false;\n                },\n                OrdinaryDefineOwnMetadata: defineMetadata,\n                OrdinaryHasOwnMetadata: hasOwnMetadata,\n                OrdinaryGetOwnMetadata: getOwnMetadata,\n                OrdinaryOwnMetadataKeys: getOwnMetadataKeys,\n                OrdinaryDeleteMetadata: deleteMetadata,\n            };\n            return provider;\n        }\n        /**\n         * Gets the metadata provider for an object. If the object has no metadata provider and this is for a create operation,\n         * then this module's metadata provider is assigned to the object.\n         */\n        function GetMetadataProvider(O, P, Create) {\n            var registeredProvider = metadataRegistry.getProvider(O, P);\n            if (!IsUndefined(registeredProvider)) {\n                return registeredProvider;\n            }\n            if (Create) {\n                if (metadataRegistry.setProvider(O, P, metadataProvider)) {\n                    return metadataProvider;\n                }\n                throw new Error(\"Illegal state.\");\n            }\n            return undefined;\n        }\n        // naive Map shim\n        function CreateMapPolyfill() {\n            var cacheSentinel = {};\n            var arraySentinel = [];\n            var MapIterator = /** @class */ (function () {\n                function MapIterator(keys, values, selector) {\n                    this._index = 0;\n                    this._keys = keys;\n                    this._values = values;\n                    this._selector = selector;\n                }\n                MapIterator.prototype[\"@@iterator\"] = function () { return this; };\n                MapIterator.prototype[iteratorSymbol] = function () { return this; };\n                MapIterator.prototype.next = function () {\n                    var index = this._index;\n                    if (index >= 0 && index < this._keys.length) {\n                        var result = this._selector(this._keys[index], this._values[index]);\n                        if (index + 1 >= this._keys.length) {\n                            this._index = -1;\n                            this._keys = arraySentinel;\n                            this._values = arraySentinel;\n                        }\n                        else {\n                            this._index++;\n                        }\n                        return { value: result, done: false };\n                    }\n                    return { value: undefined, done: true };\n                };\n                MapIterator.prototype.throw = function (error) {\n                    if (this._index >= 0) {\n                        this._index = -1;\n                        this._keys = arraySentinel;\n                        this._values = arraySentinel;\n                    }\n                    throw error;\n                };\n                MapIterator.prototype.return = function (value) {\n                    if (this._index >= 0) {\n                        this._index = -1;\n                        this._keys = arraySentinel;\n                        this._values = arraySentinel;\n                    }\n                    return { value: value, done: true };\n                };\n                return MapIterator;\n            }());\n            var Map = /** @class */ (function () {\n                function Map() {\n                    this._keys = [];\n                    this._values = [];\n                    this._cacheKey = cacheSentinel;\n                    this._cacheIndex = -2;\n                }\n                Object.defineProperty(Map.prototype, \"size\", {\n                    get: function () { return this._keys.length; },\n                    enumerable: true,\n                    configurable: true\n                });\n                Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\n                Map.prototype.get = function (key) {\n                    var index = this._find(key, /*insert*/ false);\n                    return index >= 0 ? this._values[index] : undefined;\n                };\n                Map.prototype.set = function (key, value) {\n                    var index = this._find(key, /*insert*/ true);\n                    this._values[index] = value;\n                    return this;\n                };\n                Map.prototype.delete = function (key) {\n                    var index = this._find(key, /*insert*/ false);\n                    if (index >= 0) {\n                        var size = this._keys.length;\n                        for (var i = index + 1; i < size; i++) {\n                            this._keys[i - 1] = this._keys[i];\n                            this._values[i - 1] = this._values[i];\n                        }\n                        this._keys.length--;\n                        this._values.length--;\n                        if (SameValueZero(key, this._cacheKey)) {\n                            this._cacheKey = cacheSentinel;\n                            this._cacheIndex = -2;\n                        }\n                        return true;\n                    }\n                    return false;\n                };\n                Map.prototype.clear = function () {\n                    this._keys.length = 0;\n                    this._values.length = 0;\n                    this._cacheKey = cacheSentinel;\n                    this._cacheIndex = -2;\n                };\n                Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\n                Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\n                Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\n                Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\n                Map.prototype[iteratorSymbol] = function () { return this.entries(); };\n                Map.prototype._find = function (key, insert) {\n                    if (!SameValueZero(this._cacheKey, key)) {\n                        this._cacheIndex = -1;\n                        for (var i = 0; i < this._keys.length; i++) {\n                            if (SameValueZero(this._keys[i], key)) {\n                                this._cacheIndex = i;\n                                break;\n                            }\n                        }\n                    }\n                    if (this._cacheIndex < 0 && insert) {\n                        this._cacheIndex = this._keys.length;\n                        this._keys.push(key);\n                        this._values.push(undefined);\n                    }\n                    return this._cacheIndex;\n                };\n                return Map;\n            }());\n            return Map;\n            function getKey(key, _) {\n                return key;\n            }\n            function getValue(_, value) {\n                return value;\n            }\n            function getEntry(key, value) {\n                return [key, value];\n            }\n        }\n        // naive Set shim\n        function CreateSetPolyfill() {\n            var Set = /** @class */ (function () {\n                function Set() {\n                    this._map = new _Map();\n                }\n                Object.defineProperty(Set.prototype, \"size\", {\n                    get: function () { return this._map.size; },\n                    enumerable: true,\n                    configurable: true\n                });\n                Set.prototype.has = function (value) { return this._map.has(value); };\n                Set.prototype.add = function (value) { return this._map.set(value, value), this; };\n                Set.prototype.delete = function (value) { return this._map.delete(value); };\n                Set.prototype.clear = function () { this._map.clear(); };\n                Set.prototype.keys = function () { return this._map.keys(); };\n                Set.prototype.values = function () { return this._map.keys(); };\n                Set.prototype.entries = function () { return this._map.entries(); };\n                Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\n                Set.prototype[iteratorSymbol] = function () { return this.keys(); };\n                return Set;\n            }());\n            return Set;\n        }\n        // naive WeakMap shim\n        function CreateWeakMapPolyfill() {\n            var UUID_SIZE = 16;\n            var keys = HashMap.create();\n            var rootKey = CreateUniqueKey();\n            return /** @class */ (function () {\n                function WeakMap() {\n                    this._key = CreateUniqueKey();\n                }\n                WeakMap.prototype.has = function (target) {\n                    var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n                    return table !== undefined ? HashMap.has(table, this._key) : false;\n                };\n                WeakMap.prototype.get = function (target) {\n                    var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n                    return table !== undefined ? HashMap.get(table, this._key) : undefined;\n                };\n                WeakMap.prototype.set = function (target, value) {\n                    var table = GetOrCreateWeakMapTable(target, /*create*/ true);\n                    table[this._key] = value;\n                    return this;\n                };\n                WeakMap.prototype.delete = function (target) {\n                    var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n                    return table !== undefined ? delete table[this._key] : false;\n                };\n                WeakMap.prototype.clear = function () {\n                    // NOTE: not a real clear, just makes the previous data unreachable\n                    this._key = CreateUniqueKey();\n                };\n                return WeakMap;\n            }());\n            function CreateUniqueKey() {\n                var key;\n                do\n                    key = \"@@WeakMap@@\" + CreateUUID();\n                while (HashMap.has(keys, key));\n                keys[key] = true;\n                return key;\n            }\n            function GetOrCreateWeakMapTable(target, create) {\n                if (!hasOwn.call(target, rootKey)) {\n                    if (!create)\n                        return undefined;\n                    Object.defineProperty(target, rootKey, { value: HashMap.create() });\n                }\n                return target[rootKey];\n            }\n            function FillRandomBytes(buffer, size) {\n                for (var i = 0; i < size; ++i)\n                    buffer[i] = Math.random() * 0xff | 0;\n                return buffer;\n            }\n            function GenRandomBytes(size) {\n                if (typeof Uint8Array === \"function\") {\n                    var array = new Uint8Array(size);\n                    if (typeof crypto !== \"undefined\") {\n                        crypto.getRandomValues(array);\n                    }\n                    else if (typeof msCrypto !== \"undefined\") {\n                        msCrypto.getRandomValues(array);\n                    }\n                    else {\n                        FillRandomBytes(array, size);\n                    }\n                    return array;\n                }\n                return FillRandomBytes(new Array(size), size);\n            }\n            function CreateUUID() {\n                var data = GenRandomBytes(UUID_SIZE);\n                // mark as random - RFC 4122 § 4.4\n                data[6] = data[6] & 0x4f | 0x40;\n                data[8] = data[8] & 0xbf | 0x80;\n                var result = \"\";\n                for (var offset = 0; offset < UUID_SIZE; ++offset) {\n                    var byte = data[offset];\n                    if (offset === 4 || offset === 6 || offset === 8)\n                        result += \"-\";\n                    if (byte < 16)\n                        result += \"0\";\n                    result += byte.toString(16).toLowerCase();\n                }\n                return result;\n            }\n        }\n        // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\n        function MakeDictionary(obj) {\n            obj.__ = undefined;\n            delete obj.__;\n            return obj;\n        }\n    });\n})(Reflect || (Reflect = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Bind = Bind;\n/**\n * Decorator that binds *parameter decorators* to the method that follows.\n *\n * Useful when the language doesn't provide a 'Parameter Decorator' feature\n * (i.e., vanilla JavaScript).\n *\n * @param decorators one or more parameter decorators (e.g., `Req()`)\n *\n * @publicApi\n */\nfunction Bind(...decorators) {\n    return (target, key, descriptor) => {\n        decorators.forEach((fn, index) => fn(target, key, index));\n        return descriptor;\n    };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ENTRY_PROVIDER_WATERMARK = exports.CATCH_WATERMARK = exports.CONTROLLER_WATERMARK = exports.INJECTABLE_WATERMARK = exports.VERSION_METADATA = exports.SSE_METADATA = exports.RESPONSE_PASSTHROUGH_METADATA = exports.REDIRECT_METADATA = exports.HEADERS_METADATA = exports.MODULE_PATH = exports.HTTP_CODE_METADATA = exports.RENDER_METADATA = exports.ENHANCER_KEY_TO_SUBTYPE_MAP = exports.EXCEPTION_FILTERS_METADATA = exports.INTERCEPTORS_METADATA = exports.GUARDS_METADATA = exports.PIPES_METADATA = exports.FILTER_CATCH_EXCEPTIONS = exports.CUSTOM_ROUTE_ARGS_METADATA = exports.ROUTE_ARGS_METADATA = exports.METHOD_METADATA = exports.SCOPE_OPTIONS_METADATA = exports.OPTIONAL_PROPERTY_DEPS_METADATA = exports.PROPERTY_DEPS_METADATA = exports.OPTIONAL_DEPS_METADATA = exports.SELF_DECLARED_DEPS_METADATA = exports.PARAMTYPES_METADATA = exports.PATH_METADATA = exports.HOST_METADATA = exports.GLOBAL_MODULE_METADATA = exports.MODULE_METADATA = void 0;\nexports.MODULE_METADATA = {\n    IMPORTS: 'imports',\n    PROVIDERS: 'providers',\n    CONTROLLERS: 'controllers',\n    EXPORTS: 'exports',\n};\nexports.GLOBAL_MODULE_METADATA = '__module:global__';\nexports.HOST_METADATA = 'host';\nexports.PATH_METADATA = 'path';\nexports.PARAMTYPES_METADATA = 'design:paramtypes';\nexports.SELF_DECLARED_DEPS_METADATA = 'self:paramtypes';\nexports.OPTIONAL_DEPS_METADATA = 'optional:paramtypes';\nexports.PROPERTY_DEPS_METADATA = 'self:properties_metadata';\nexports.OPTIONAL_PROPERTY_DEPS_METADATA = 'optional:properties_metadata';\nexports.SCOPE_OPTIONS_METADATA = 'scope:options';\nexports.METHOD_METADATA = 'method';\nexports.ROUTE_ARGS_METADATA = '__routeArguments__';\nexports.CUSTOM_ROUTE_ARGS_METADATA = '__customRouteArgs__';\nexports.FILTER_CATCH_EXCEPTIONS = '__filterCatchExceptions__';\nexports.PIPES_METADATA = '__pipes__';\nexports.GUARDS_METADATA = '__guards__';\nexports.INTERCEPTORS_METADATA = '__interceptors__';\nexports.EXCEPTION_FILTERS_METADATA = '__exceptionFilters__';\nexports.ENHANCER_KEY_TO_SUBTYPE_MAP = {\n    [exports.GUARDS_METADATA]: 'guard',\n    [exports.INTERCEPTORS_METADATA]: 'interceptor',\n    [exports.PIPES_METADATA]: 'pipe',\n    [exports.EXCEPTION_FILTERS_METADATA]: 'filter',\n};\nexports.RENDER_METADATA = '__renderTemplate__';\nexports.HTTP_CODE_METADATA = '__httpCode__';\nexports.MODULE_PATH = '__module_path__';\nexports.HEADERS_METADATA = '__headers__';\nexports.REDIRECT_METADATA = '__redirect__';\nexports.RESPONSE_PASSTHROUGH_METADATA = '__responsePassthrough__';\nexports.SSE_METADATA = '__sse__';\nexports.VERSION_METADATA = '__version__';\nexports.INJECTABLE_WATERMARK = '__injectable__';\nexports.CONTROLLER_WATERMARK = '__controller__';\nexports.CATCH_WATERMARK = '__catch__';\nexports.ENTRY_PROVIDER_WATERMARK = '__entryProvider__';\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Catch = Catch;\nconst constants_1 = require(\"../../constants\");\n/**\n * Decorator that marks a class as a Nest exception filter. An exception filter\n * handles exceptions thrown by or not handled by your application code.\n *\n * The decorated class must implement the `ExceptionFilter` interface.\n *\n * @param exceptions one or more exception *types* specifying\n * the exceptions to be caught and handled by this filter.\n *\n * @see [Exception Filters](https://docs.nestjs.com/exception-filters)\n *\n * @usageNotes\n * Exception filters are applied using the `@UseFilters()` decorator, or (globally)\n * with `app.useGlobalFilters()`.\n *\n * @publicApi\n */\nfunction Catch(...exceptions) {\n    return (target) => {\n        Reflect.defineMetadata(constants_1.CATCH_WATERMARK, true, target);\n        Reflect.defineMetadata(constants_1.FILTER_CATCH_EXCEPTIONS, exceptions, target);\n    };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isSymbol = exports.isEmpty = exports.isNil = exports.isConstructor = exports.isNumber = exports.isString = exports.isFunction = exports.stripEndSlash = exports.normalizePath = exports.addLeadingSlash = exports.isPlainObject = exports.isObject = exports.isUndefined = void 0;\nconst isUndefined = (obj) => typeof obj === 'undefined';\nexports.isUndefined = isUndefined;\nconst isObject = (fn) => !(0, exports.isNil)(fn) && typeof fn === 'object';\nexports.isObject = isObject;\nconst isPlainObject = (fn) => {\n    if (!(0, exports.isObject)(fn)) {\n        return false;\n    }\n    const proto = Object.getPrototypeOf(fn);\n    if (proto === null) {\n        return true;\n    }\n    const ctor = Object.prototype.hasOwnProperty.call(proto, 'constructor') &&\n        proto.constructor;\n    return (typeof ctor === 'function' &&\n        ctor instanceof ctor &&\n        Function.prototype.toString.call(ctor) ===\n            Function.prototype.toString.call(Object));\n};\nexports.isPlainObject = isPlainObject;\nconst addLeadingSlash = (path) => path && typeof path === 'string'\n    ? path.charAt(0) !== '/' && path.substring(0, 2) !== '{/'\n        ? '/' + path\n        : path\n    : '';\nexports.addLeadingSlash = addLeadingSlash;\nconst normalizePath = (path) => path\n    ? path.startsWith('/')\n        ? ('/' + path.replace(/\\/+$/, '')).replace(/\\/+/g, '/')\n        : '/' + path.replace(/\\/+$/, '')\n    : '/';\nexports.normalizePath = normalizePath;\nconst stripEndSlash = (path) => path[path.length - 1] === '/' ? path.slice(0, path.length - 1) : path;\nexports.stripEndSlash = stripEndSlash;\nconst isFunction = (val) => typeof val === 'function';\nexports.isFunction = isFunction;\nconst isString = (val) => typeof val === 'string';\nexports.isString = isString;\nconst isNumber = (val) => typeof val === 'number';\nexports.isNumber = isNumber;\nconst isConstructor = (val) => val === 'constructor';\nexports.isConstructor = isConstructor;\nconst isNil = (val) => (0, exports.isUndefined)(val) || val === null;\nexports.isNil = isNil;\nconst isEmpty = (array) => !(array && array.length > 0);\nexports.isEmpty = isEmpty;\nconst isSymbol = (val) => typeof val === 'symbol';\nexports.isSymbol = isSymbol;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Controller = Controller;\nconst constants_1 = require(\"../../constants\");\nconst shared_utils_1 = require(\"../../utils/shared.utils\");\n/**\n * Decorator that marks a class as a Nest controller that can receive inbound\n * requests and produce responses.\n *\n * An HTTP Controller responds to inbound HTTP Requests and produces HTTP Responses.\n * It defines a class that provides the context for one or more related route\n * handlers that correspond to HTTP request methods and associated routes\n * for example `GET /api/profile`, `POST /users/resume`\n *\n * A Microservice Controller responds to requests as well as events, running over\n * a variety of transports [(read more here)](https://docs.nestjs.com/microservices/basics).\n * It defines a class that provides a context for one or more message or event\n * handlers.\n *\n * @param prefixOrOptions a `route path prefix` or a `ControllerOptions` object.\n * A `route path prefix` is pre-pended to the path specified in any request decorator\n * in the class. `ControllerOptions` is an options configuration object specifying:\n * - `scope` - symbol that determines the lifetime of a Controller instance.\n * [See Scope](https://docs.nestjs.com/fundamentals/injection-scopes#usage) for\n * more details.\n * - `prefix` - string that defines a `route path prefix`.  The prefix\n * is pre-pended to the path specified in any request decorator in the class.\n * - `version` - string, array of strings, or Symbol that defines the version\n * of all routes in the class. [See Versioning](https://docs.nestjs.com/techniques/versioning)\n * for more details.\n *\n * @see [Routing](https://docs.nestjs.com/controllers#routing)\n * @see [Controllers](https://docs.nestjs.com/controllers)\n * @see [Microservices](https://docs.nestjs.com/microservices/basics#request-response)\n * @see [Scope](https://docs.nestjs.com/fundamentals/injection-scopes#usage)\n * @see [Versioning](https://docs.nestjs.com/techniques/versioning)\n *\n * @publicApi\n */\nfunction Controller(prefixOrOptions) {\n    const defaultPath = '/';\n    const [path, host, scopeOptions, versionOptions] = (0, shared_utils_1.isUndefined)(prefixOrOptions)\n        ? [defaultPath, undefined, undefined, undefined]\n        : (0, shared_utils_1.isString)(prefixOrOptions) || Array.isArray(prefixOrOptions)\n            ? [prefixOrOptions, undefined, undefined, undefined]\n            : [\n                prefixOrOptions.path || defaultPath,\n                prefixOrOptions.host,\n                { scope: prefixOrOptions.scope, durable: prefixOrOptions.durable },\n                Array.isArray(prefixOrOptions.version)\n                    ? Array.from(new Set(prefixOrOptions.version))\n                    : prefixOrOptions.version,\n            ];\n    return (target) => {\n        Reflect.defineMetadata(constants_1.CONTROLLER_WATERMARK, true, target);\n        Reflect.defineMetadata(constants_1.PATH_METADATA, path, target);\n        Reflect.defineMetadata(constants_1.HOST_METADATA, host, target);\n        Reflect.defineMetadata(constants_1.SCOPE_OPTIONS_METADATA, scopeOptions, target);\n        Reflect.defineMetadata(constants_1.VERSION_METADATA, versionOptions, target);\n    };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Dependencies = void 0;\nexports.flatten = flatten;\nconst constants_1 = require(\"../../constants\");\nfunction flatten(arr) {\n    const flat = [].concat(...arr);\n    return flat.some(Array.isArray)\n        ? flatten(flat)\n        : flat;\n}\n/**\n * Decorator that sets required dependencies (required with a vanilla JavaScript objects)\n *\n * @publicApi\n */\nconst Dependencies = (...dependencies) => {\n    const flattenDeps = flatten(dependencies);\n    return (target) => {\n        Reflect.defineMetadata(constants_1.PARAMTYPES_METADATA, flattenDeps, target);\n    };\n};\nexports.Dependencies = Dependencies;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extendArrayMetadata = extendArrayMetadata;\nfunction extendArrayMetadata(key, metadata, target) {\n    const previousValue = Reflect.getMetadata(key, target) || [];\n    const value = [...previousValue, ...metadata];\n    Reflect.defineMetadata(key, value, target);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InvalidDecoratorItemException = void 0;\nexports.validateEach = validateEach;\nclass InvalidDecoratorItemException extends Error {\n    constructor(decorator, item, context) {\n        const message = `Invalid ${item} passed to ${decorator}() decorator (${context}).`;\n        super(message);\n        this.msg = message;\n    }\n    what() {\n        return this.msg;\n    }\n}\nexports.InvalidDecoratorItemException = InvalidDecoratorItemException;\nfunction validateEach(context, arr, predicate, decorator, item) {\n    if (!context || !context.name) {\n        return true;\n    }\n    const errors = arr.some(str => !predicate(str));\n    if (errors) {\n        throw new InvalidDecoratorItemException(decorator, item, context.name);\n    }\n    return true;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UseFilters = void 0;\nconst constants_1 = require(\"../../constants\");\nconst extend_metadata_util_1 = require(\"../../utils/extend-metadata.util\");\nconst shared_utils_1 = require(\"../../utils/shared.utils\");\nconst validate_each_util_1 = require(\"../../utils/validate-each.util\");\n/**\n * Decorator that binds exception filters to the scope of the controller or\n * method, depending on its context.\n *\n * When `@UseFilters` is used at the controller level, the filter will be\n * applied to every handler (method) in the controller.\n *\n * When `@UseFilters` is used at the individual handler level, the filter\n * will apply only to that specific method.\n *\n * @param filters exception filter instance or class, or a list of exception\n * filter instances or classes.\n *\n * @see [Exception filters](https://docs.nestjs.com/exception-filters)\n *\n * @usageNotes\n * Exception filters can also be set up globally for all controllers and routes\n * using `app.useGlobalFilters()`.  [See here for details](https://docs.nestjs.com/exception-filters#binding-filters)\n *\n * @publicApi\n */\nconst UseFilters = (...filters) => addExceptionFiltersMetadata(...filters);\nexports.UseFilters = UseFilters;\nfunction addExceptionFiltersMetadata(...filters) {\n    return (target, key, descriptor) => {\n        const isFilterValid = (filter) => filter && ((0, shared_utils_1.isFunction)(filter) || (0, shared_utils_1.isFunction)(filter.catch));\n        if (descriptor) {\n            (0, validate_each_util_1.validateEach)(target.constructor, filters, isFilterValid, '@UseFilters', 'filter');\n            (0, extend_metadata_util_1.extendArrayMetadata)(constants_1.EXCEPTION_FILTERS_METADATA, filters, descriptor.value);\n            return descriptor;\n        }\n        (0, validate_each_util_1.validateEach)(target, filters, isFilterValid, '@UseFilters', 'filter');\n        (0, extend_metadata_util_1.extendArrayMetadata)(constants_1.EXCEPTION_FILTERS_METADATA, filters, target);\n        return target;\n    };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Inject = Inject;\nconst constants_1 = require(\"../../constants\");\nconst shared_utils_1 = require(\"../../utils/shared.utils\");\n/**\n * Decorator that marks a constructor parameter as a target for\n * [Dependency Injection (DI)](https://docs.nestjs.com/providers#dependency-injection).\n *\n * Any injected provider must be visible within the module scope (loosely\n * speaking, the containing module) of the class it is being injected into. This\n * can be done by:\n *\n * - defining the provider in the same module scope\n * - exporting the provider from one module scope and importing that module into the\n *   module scope of the class being injected into\n * - exporting the provider from a module that is marked as global using the\n *   `@Global()` decorator\n *\n * #### Injection tokens\n * Can be *types* (class names), *strings* or *symbols*. This depends on how the\n * provider with which it is associated was defined. Providers defined with the\n * `@Injectable()` decorator use the class name. Custom Providers may use strings\n * or symbols as the injection token.\n *\n * @param token lookup key for the provider to be injected (assigned to the constructor\n * parameter).\n *\n * @see [Providers](https://docs.nestjs.com/providers)\n * @see [Custom Providers](https://docs.nestjs.com/fundamentals/custom-providers)\n * @see [Injection Scopes](https://docs.nestjs.com/fundamentals/injection-scopes)\n *\n * @publicApi\n */\nfunction Inject(token) {\n    const injectCallHasArguments = arguments.length > 0;\n    return (target, key, index) => {\n        let type = token || Reflect.getMetadata('design:type', target, key);\n        // Try to infer the token in a constructor-based injection\n        if (!type && !injectCallHasArguments) {\n            type = Reflect.getMetadata(constants_1.PARAMTYPES_METADATA, target, key)?.[index];\n        }\n        if (!(0, shared_utils_1.isUndefined)(index)) {\n            let dependencies = Reflect.getMetadata(constants_1.SELF_DECLARED_DEPS_METADATA, target) || [];\n            dependencies = [...dependencies, { index, param: type }];\n            Reflect.defineMetadata(constants_1.SELF_DECLARED_DEPS_METADATA, dependencies, target);\n            return;\n        }\n        let properties = Reflect.getMetadata(constants_1.PROPERTY_DEPS_METADATA, target.constructor) || [];\n        properties = [...properties, { key, type }];\n        Reflect.defineMetadata(constants_1.PROPERTY_DEPS_METADATA, properties, target.constructor);\n    };\n}\n","var IDX=256, HEX=[], SIZE=256, BUFFER;\nwhile (IDX--) HEX[IDX] = (IDX + 256).toString(16).substring(1);\n\nfunction uid(len) {\n\tvar i=0, tmp=(len || 11);\n\tif (!BUFFER || ((IDX + tmp) > SIZE*2)) {\n\t\tfor (BUFFER='',IDX=0; i < SIZE; i++) {\n\t\t\tBUFFER += HEX[Math.random() * 256 | 0];\n\t\t}\n\t}\n\n\treturn BUFFER.substring(IDX, IDX++ + tmp);\n}\n\nexports.uid = uid;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Injectable = Injectable;\nexports.mixin = mixin;\nconst uid_1 = require(\"uid\");\nconst constants_1 = require(\"../../constants\");\n/**\n * Decorator that marks a class as a [provider](https://docs.nestjs.com/providers).\n * Providers can be injected into other classes via constructor parameter injection\n * using Nest's built-in [Dependency Injection (DI)](https://docs.nestjs.com/providers#dependency-injection)\n * system.\n *\n * When injecting a provider, it must be visible within the module scope (loosely\n * speaking, the containing module) of the class it is being injected into. This\n * can be done by:\n *\n * - defining the provider in the same module scope\n * - exporting the provider from one module scope and importing that module into the\n *   module scope of the class being injected into\n * - exporting the provider from a module that is marked as global using the\n *   `@Global()` decorator\n *\n * Providers can also be defined in a more explicit and imperative form using\n * various [custom provider](https://docs.nestjs.com/fundamentals/custom-providers) techniques that expose\n * more capabilities of the DI system.\n *\n * @param options options specifying scope of injectable\n *\n * @see [Providers](https://docs.nestjs.com/providers)\n * @see [Custom Providers](https://docs.nestjs.com/fundamentals/custom-providers)\n * @see [Injection Scopes](https://docs.nestjs.com/fundamentals/injection-scopes)\n *\n * @publicApi\n */\nfunction Injectable(options) {\n    return (target) => {\n        Reflect.defineMetadata(constants_1.INJECTABLE_WATERMARK, true, target);\n        Reflect.defineMetadata(constants_1.SCOPE_OPTIONS_METADATA, options, target);\n    };\n}\n/**\n * @publicApi\n */\nfunction mixin(mixinClass) {\n    Object.defineProperty(mixinClass, 'name', {\n        value: (0, uid_1.uid)(21),\n    });\n    Injectable()(mixinClass);\n    return mixinClass;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Optional = Optional;\nconst constants_1 = require(\"../../constants\");\nconst shared_utils_1 = require(\"../../utils/shared.utils\");\n/**\n * Parameter decorator for an injected dependency marking the\n * dependency as optional.\n *\n * For example:\n * ```typescript\n * constructor(@Optional() @Inject('HTTP_OPTIONS')private readonly httpClient: T) {}\n * ```\n *\n * @see [Optional providers](https://docs.nestjs.com/providers#optional-providers)\n *\n * @publicApi\n */\nfunction Optional() {\n    return (target, key, index) => {\n        if (!(0, shared_utils_1.isUndefined)(index)) {\n            const args = Reflect.getMetadata(constants_1.OPTIONAL_DEPS_METADATA, target) || [];\n            Reflect.defineMetadata(constants_1.OPTIONAL_DEPS_METADATA, [...args, index], target);\n            return;\n        }\n        const properties = Reflect.getMetadata(constants_1.OPTIONAL_PROPERTY_DEPS_METADATA, target.constructor) || [];\n        Reflect.defineMetadata(constants_1.OPTIONAL_PROPERTY_DEPS_METADATA, [...properties, key], target.constructor);\n    };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SetMetadata = void 0;\n/**\n * Decorator that assigns metadata to the class/function using the\n * specified `key`.\n *\n * Requires two parameters:\n * - `key` - a value defining the key under which the metadata is stored\n * - `value` - metadata to be associated with `key`\n *\n * This metadata can be reflected using the `Reflector` class.\n *\n * Example: `@SetMetadata('roles', ['admin'])`\n *\n * @see [Reflection](https://docs.nestjs.com/fundamentals/execution-context#reflection-and-metadata)\n *\n * @publicApi\n */\nconst SetMetadata = (metadataKey, metadataValue) => {\n    const decoratorFactory = (target, key, descriptor) => {\n        if (descriptor) {\n            Reflect.defineMetadata(metadataKey, metadataValue, descriptor.value);\n            return descriptor;\n        }\n        Reflect.defineMetadata(metadataKey, metadataValue, target);\n        return target;\n    };\n    decoratorFactory.KEY = metadataKey;\n    return decoratorFactory;\n};\nexports.SetMetadata = SetMetadata;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UseGuards = UseGuards;\nconst constants_1 = require(\"../../constants\");\nconst extend_metadata_util_1 = require(\"../../utils/extend-metadata.util\");\nconst shared_utils_1 = require(\"../../utils/shared.utils\");\nconst validate_each_util_1 = require(\"../../utils/validate-each.util\");\n/**\n * Decorator that binds guards to the scope of the controller or method,\n * depending on its context.\n *\n * When `@UseGuards` is used at the controller level, the guard will be\n * applied to every handler (method) in the controller.\n *\n * When `@UseGuards` is used at the individual handler level, the guard\n * will apply only to that specific method.\n *\n * @param guards a single guard instance or class, or a list of guard instances\n * or classes.\n *\n * @see [Guards](https://docs.nestjs.com/guards)\n *\n * @usageNotes\n * Guards can also be set up globally for all controllers and routes\n * using `app.useGlobalGuards()`.  [See here for details](https://docs.nestjs.com/guards#binding-guards)\n *\n * @publicApi\n */\nfunction UseGuards(...guards) {\n    return (target, key, descriptor) => {\n        const isGuardValid = (guard) => guard && ((0, shared_utils_1.isFunction)(guard) || (0, shared_utils_1.isFunction)(guard.canActivate));\n        if (descriptor) {\n            (0, validate_each_util_1.validateEach)(target.constructor, guards, isGuardValid, '@UseGuards', 'guard');\n            (0, extend_metadata_util_1.extendArrayMetadata)(constants_1.GUARDS_METADATA, guards, descriptor.value);\n            return descriptor;\n        }\n        (0, validate_each_util_1.validateEach)(target, guards, isGuardValid, '@UseGuards', 'guard');\n        (0, extend_metadata_util_1.extendArrayMetadata)(constants_1.GUARDS_METADATA, guards, target);\n        return target;\n    };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UseInterceptors = UseInterceptors;\nconst constants_1 = require(\"../../constants\");\nconst extend_metadata_util_1 = require(\"../../utils/extend-metadata.util\");\nconst shared_utils_1 = require(\"../../utils/shared.utils\");\nconst validate_each_util_1 = require(\"../../utils/validate-each.util\");\n/**\n * Decorator that binds interceptors to the scope of the controller or method,\n * depending on its context.\n *\n * When `@UseInterceptors` is used at the controller level, the interceptor will\n * be applied to every handler (method) in the controller.\n *\n * When `@UseInterceptors` is used at the individual handler level, the interceptor\n * will apply only to that specific method.\n *\n * @param interceptors a single interceptor instance or class, or a list of\n * interceptor instances or classes.\n *\n * @see [Interceptors](https://docs.nestjs.com/interceptors)\n *\n * @usageNotes\n * Interceptors can also be set up globally for all controllers and routes\n * using `app.useGlobalInterceptors()`.  [See here for details](https://docs.nestjs.com/interceptors#binding-interceptors)\n *\n * @publicApi\n */\nfunction UseInterceptors(...interceptors) {\n    return (target, key, descriptor) => {\n        const isInterceptorValid = (interceptor) => interceptor &&\n            ((0, shared_utils_1.isFunction)(interceptor) || (0, shared_utils_1.isFunction)(interceptor.intercept));\n        if (descriptor) {\n            (0, validate_each_util_1.validateEach)(target.constructor, interceptors, isInterceptorValid, '@UseInterceptors', 'interceptor');\n            (0, extend_metadata_util_1.extendArrayMetadata)(constants_1.INTERCEPTORS_METADATA, interceptors, descriptor.value);\n            return descriptor;\n        }\n        (0, validate_each_util_1.validateEach)(target, interceptors, isInterceptorValid, '@UseInterceptors', 'interceptor');\n        (0, extend_metadata_util_1.extendArrayMetadata)(constants_1.INTERCEPTORS_METADATA, interceptors, target);\n        return target;\n    };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UsePipes = UsePipes;\nconst constants_1 = require(\"../../constants\");\nconst extend_metadata_util_1 = require(\"../../utils/extend-metadata.util\");\nconst shared_utils_1 = require(\"../../utils/shared.utils\");\nconst validate_each_util_1 = require(\"../../utils/validate-each.util\");\n/**\n * Decorator that binds pipes to the scope of the controller or method,\n * depending on its context.\n *\n * When `@UsePipes` is used at the controller level, the pipe will be\n * applied to every handler (method) in the controller.\n *\n * When `@UsePipes` is used at the individual handler level, the pipe\n * will apply only to that specific method.\n *\n * @param pipes a single pipe instance or class, or a list of pipe instances or\n * classes.\n *\n * @see [Pipes](https://docs.nestjs.com/pipes)\n *\n * @usageNotes\n * Pipes can also be set up globally for all controllers and routes\n * using `app.useGlobalPipes()`.  [See here for details](https://docs.nestjs.com/pipes#class-validator)\n *\n * @publicApi\n */\nfunction UsePipes(...pipes) {\n    return (target, key, descriptor) => {\n        const isPipeValid = (pipe) => pipe && ((0, shared_utils_1.isFunction)(pipe) || (0, shared_utils_1.isFunction)(pipe.transform));\n        if (descriptor) {\n            (0, extend_metadata_util_1.extendArrayMetadata)(constants_1.PIPES_METADATA, pipes, descriptor.value);\n            return descriptor;\n        }\n        (0, validate_each_util_1.validateEach)(target, pipes, isPipeValid, '@UsePipes', 'pipe');\n        (0, extend_metadata_util_1.extendArrayMetadata)(constants_1.PIPES_METADATA, pipes, target);\n        return target;\n    };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.applyDecorators = applyDecorators;\n/**\n * Function that returns a new decorator that applies all decorators provided by param\n *\n * Useful to build new decorators (or a decorator factory) encapsulating multiple decorators related with the same feature\n *\n * @param decorators one or more decorators (e.g., `ApplyGuard(...)`)\n *\n * @publicApi\n */\nfunction applyDecorators(...decorators) {\n    return (target, propertyKey, descriptor) => {\n        for (const decorator of decorators) {\n            if (target instanceof Function && !descriptor) {\n                decorator(target);\n                continue;\n            }\n            decorator(target, propertyKey, descriptor);\n        }\n    };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Version = Version;\nconst constants_1 = require(\"../../constants\");\n/**\n * Sets the version of the endpoint to the passed version\n *\n * @publicApi\n */\nfunction Version(version) {\n    if (Array.isArray(version)) {\n        // Drop duplicated versions\n        version = Array.from(new Set(version));\n    }\n    return (target, key, descriptor) => {\n        Reflect.defineMetadata(constants_1.VERSION_METADATA, version, descriptor.value);\n        return descriptor;\n    };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./bind.decorator\"), exports);\ntslib_1.__exportStar(require(\"./catch.decorator\"), exports);\ntslib_1.__exportStar(require(\"./controller.decorator\"), exports);\ntslib_1.__exportStar(require(\"./dependencies.decorator\"), exports);\ntslib_1.__exportStar(require(\"./exception-filters.decorator\"), exports);\ntslib_1.__exportStar(require(\"./inject.decorator\"), exports);\ntslib_1.__exportStar(require(\"./injectable.decorator\"), exports);\ntslib_1.__exportStar(require(\"./optional.decorator\"), exports);\ntslib_1.__exportStar(require(\"./set-metadata.decorator\"), exports);\ntslib_1.__exportStar(require(\"./use-guards.decorator\"), exports);\ntslib_1.__exportStar(require(\"./use-interceptors.decorator\"), exports);\ntslib_1.__exportStar(require(\"./use-pipes.decorator\"), exports);\ntslib_1.__exportStar(require(\"./apply-decorators\"), exports);\ntslib_1.__exportStar(require(\"./version.decorator\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Global = Global;\nconst constants_1 = require(\"../../constants\");\n/**\n * Decorator that makes a module global-scoped.\n *\n * Once imported into any module, a global-scoped module will be visible\n * in all modules. Thereafter, modules that wish to inject a service exported\n * from a global module do not need to import the provider module.\n *\n * @see [Global modules](https://docs.nestjs.com/modules#global-modules)\n *\n * @publicApi\n */\nfunction Global() {\n    return (target) => {\n        Reflect.defineMetadata(constants_1.GLOBAL_MODULE_METADATA, true, target);\n    };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.INVALID_MODULE_CONFIG_MESSAGE = void 0;\nexports.validateModuleKeys = validateModuleKeys;\nconst constants_1 = require(\"../constants\");\nconst INVALID_MODULE_CONFIG_MESSAGE = (text, property) => `Invalid property '${property}' passed into the @Module() decorator.`;\nexports.INVALID_MODULE_CONFIG_MESSAGE = INVALID_MODULE_CONFIG_MESSAGE;\nconst metadataKeys = [\n    constants_1.MODULE_METADATA.IMPORTS,\n    constants_1.MODULE_METADATA.EXPORTS,\n    constants_1.MODULE_METADATA.CONTROLLERS,\n    constants_1.MODULE_METADATA.PROVIDERS,\n];\nfunction validateModuleKeys(keys) {\n    const validateKey = (key) => {\n        if (metadataKeys.includes(key)) {\n            return;\n        }\n        throw new Error((0, exports.INVALID_MODULE_CONFIG_MESSAGE) `${key}`);\n    };\n    keys.forEach(validateKey);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Module = Module;\nconst validate_module_keys_util_1 = require(\"../../utils/validate-module-keys.util\");\n/**\n * Decorator that marks a class as a [module](https://docs.nestjs.com/modules).\n *\n * Modules are used by Nest to organize the application structure into scopes. Controllers\n * and Providers are scoped by the module they are declared in. Modules and their\n * classes (Controllers and Providers) form a graph that determines how Nest\n * performs [Dependency Injection (DI)](https://docs.nestjs.com/providers#dependency-injection).\n *\n * @param metadata module configuration metadata\n *\n * @see [Modules](https://docs.nestjs.com/modules)\n *\n * @publicApi\n */\nfunction Module(metadata) {\n    const propsKeys = Object.keys(metadata);\n    (0, validate_module_keys_util_1.validateModuleKeys)(propsKeys);\n    return (target) => {\n        for (const property in metadata) {\n            if (Object.hasOwnProperty.call(metadata, property)) {\n                Reflect.defineMetadata(property, metadata[property], target);\n            }\n        }\n    };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./global.decorator\"), exports);\ntslib_1.__exportStar(require(\"./module.decorator\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestMethod = void 0;\nvar RequestMethod;\n(function (RequestMethod) {\n    RequestMethod[RequestMethod[\"GET\"] = 0] = \"GET\";\n    RequestMethod[RequestMethod[\"POST\"] = 1] = \"POST\";\n    RequestMethod[RequestMethod[\"PUT\"] = 2] = \"PUT\";\n    RequestMethod[RequestMethod[\"DELETE\"] = 3] = \"DELETE\";\n    RequestMethod[RequestMethod[\"PATCH\"] = 4] = \"PATCH\";\n    RequestMethod[RequestMethod[\"ALL\"] = 5] = \"ALL\";\n    RequestMethod[RequestMethod[\"OPTIONS\"] = 6] = \"OPTIONS\";\n    RequestMethod[RequestMethod[\"HEAD\"] = 7] = \"HEAD\";\n    RequestMethod[RequestMethod[\"SEARCH\"] = 8] = \"SEARCH\";\n    RequestMethod[RequestMethod[\"PROPFIND\"] = 9] = \"PROPFIND\";\n    RequestMethod[RequestMethod[\"PROPPATCH\"] = 10] = \"PROPPATCH\";\n    RequestMethod[RequestMethod[\"MKCOL\"] = 11] = \"MKCOL\";\n    RequestMethod[RequestMethod[\"COPY\"] = 12] = \"COPY\";\n    RequestMethod[RequestMethod[\"MOVE\"] = 13] = \"MOVE\";\n    RequestMethod[RequestMethod[\"LOCK\"] = 14] = \"LOCK\";\n    RequestMethod[RequestMethod[\"UNLOCK\"] = 15] = \"UNLOCK\";\n})(RequestMethod || (exports.RequestMethod = RequestMethod = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Unlock = exports.Lock = exports.Move = exports.Copy = exports.Mkcol = exports.Proppatch = exports.Propfind = exports.Search = exports.All = exports.Head = exports.Options = exports.Patch = exports.Put = exports.Delete = exports.Get = exports.Post = exports.RequestMapping = void 0;\nconst constants_1 = require(\"../../constants\");\nconst request_method_enum_1 = require(\"../../enums/request-method.enum\");\nconst defaultMetadata = {\n    [constants_1.PATH_METADATA]: '/',\n    [constants_1.METHOD_METADATA]: request_method_enum_1.RequestMethod.GET,\n};\nconst RequestMapping = (metadata = defaultMetadata) => {\n    const pathMetadata = metadata[constants_1.PATH_METADATA];\n    const path = pathMetadata && pathMetadata.length ? pathMetadata : '/';\n    const requestMethod = metadata[constants_1.METHOD_METADATA] || request_method_enum_1.RequestMethod.GET;\n    return (target, key, descriptor) => {\n        Reflect.defineMetadata(constants_1.PATH_METADATA, path, descriptor.value);\n        Reflect.defineMetadata(constants_1.METHOD_METADATA, requestMethod, descriptor.value);\n        return descriptor;\n    };\n};\nexports.RequestMapping = RequestMapping;\nconst createMappingDecorator = (method) => (path) => {\n    return (0, exports.RequestMapping)({\n        [constants_1.PATH_METADATA]: path,\n        [constants_1.METHOD_METADATA]: method,\n    });\n};\n/**\n * Route handler (method) Decorator. Routes HTTP POST requests to the specified path.\n *\n * @see [Routing](https://docs.nestjs.com/controllers#routing)\n *\n * @publicApi\n */\nexports.Post = createMappingDecorator(request_method_enum_1.RequestMethod.POST);\n/**\n * Route handler (method) Decorator. Routes HTTP GET requests to the specified path.\n *\n * @see [Routing](https://docs.nestjs.com/controllers#routing)\n *\n * @publicApi\n */\nexports.Get = createMappingDecorator(request_method_enum_1.RequestMethod.GET);\n/**\n * Route handler (method) Decorator. Routes HTTP DELETE requests to the specified path.\n *\n * @see [Routing](https://docs.nestjs.com/controllers#routing)\n *\n * @publicApi\n */\nexports.Delete = createMappingDecorator(request_method_enum_1.RequestMethod.DELETE);\n/**\n * Route handler (method) Decorator. Routes HTTP PUT requests to the specified path.\n *\n * @see [Routing](https://docs.nestjs.com/controllers#routing)\n *\n * @publicApi\n */\nexports.Put = createMappingDecorator(request_method_enum_1.RequestMethod.PUT);\n/**\n * Route handler (method) Decorator. Routes HTTP PATCH requests to the specified path.\n *\n * @see [Routing](https://docs.nestjs.com/controllers#routing)\n *\n * @publicApi\n */\nexports.Patch = createMappingDecorator(request_method_enum_1.RequestMethod.PATCH);\n/**\n * Route handler (method) Decorator. Routes HTTP OPTIONS requests to the specified path.\n *\n * @see [Routing](https://docs.nestjs.com/controllers#routing)\n *\n * @publicApi\n */\nexports.Options = createMappingDecorator(request_method_enum_1.RequestMethod.OPTIONS);\n/**\n * Route handler (method) Decorator. Routes HTTP HEAD requests to the specified path.\n *\n * @see [Routing](https://docs.nestjs.com/controllers#routing)\n *\n * @publicApi\n */\nexports.Head = createMappingDecorator(request_method_enum_1.RequestMethod.HEAD);\n/**\n * Route handler (method) Decorator. Routes all HTTP requests to the specified path.\n *\n * @see [Routing](https://docs.nestjs.com/controllers#routing)\n *\n * @publicApi\n */\nexports.All = createMappingDecorator(request_method_enum_1.RequestMethod.ALL);\n/**\n * Route handler (method) Decorator. Routes HTTP SEARCH requests to the specified path.\n *\n * @see [Routing](https://docs.nestjs.com/controllers#routing)\n *\n * @publicApi\n */\nexports.Search = createMappingDecorator(request_method_enum_1.RequestMethod.SEARCH);\n/**\n * Route handler (method) Decorator. Routes Webdav PROPFIND requests to the specified path.\n *\n * @see [Routing](https://docs.nestjs.com/controllers#routing)\n *\n * @publicApi\n */\nexports.Propfind = createMappingDecorator(request_method_enum_1.RequestMethod.PROPFIND);\n/**\n * Route handler (method) Decorator. Routes Webdav PROPPATCH requests to the specified path.\n *\n * @see [Routing](https://docs.nestjs.com/controllers#routing)\n *\n * @publicApi\n */\nexports.Proppatch = createMappingDecorator(request_method_enum_1.RequestMethod.PROPPATCH);\n/**\n * Route handler (method) Decorator. Routes Webdav MKCOL requests to the specified path.\n *\n * @see [Routing](https://docs.nestjs.com/controllers#routing)\n *\n * @publicApi\n */\nexports.Mkcol = createMappingDecorator(request_method_enum_1.RequestMethod.MKCOL);\n/**\n * Route handler (method) Decorator. Routes Webdav COPY requests to the specified path.\n *\n * @see [Routing](https://docs.nestjs.com/controllers#routing)\n *\n * @publicApi\n */\nexports.Copy = createMappingDecorator(request_method_enum_1.RequestMethod.COPY);\n/**\n * Route handler (method) Decorator. Routes Webdav MOVE requests to the specified path.\n *\n * @see [Routing](https://docs.nestjs.com/controllers#routing)\n *\n * @publicApi\n */\nexports.Move = createMappingDecorator(request_method_enum_1.RequestMethod.MOVE);\n/**\n * Route handler (method) Decorator. Routes Webdav LOCK requests to the specified path.\n *\n * @see [Routing](https://docs.nestjs.com/controllers#routing)\n *\n * @publicApi\n */\nexports.Lock = createMappingDecorator(request_method_enum_1.RequestMethod.LOCK);\n/**\n * Route handler (method) Decorator. Routes Webdav UNLOCK requests to the specified path.\n *\n * @see [Routing](https://docs.nestjs.com/controllers#routing)\n *\n * @publicApi\n */\nexports.Unlock = createMappingDecorator(request_method_enum_1.RequestMethod.UNLOCK);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RouteParamtypes = void 0;\nvar RouteParamtypes;\n(function (RouteParamtypes) {\n    RouteParamtypes[RouteParamtypes[\"REQUEST\"] = 0] = \"REQUEST\";\n    RouteParamtypes[RouteParamtypes[\"RESPONSE\"] = 1] = \"RESPONSE\";\n    RouteParamtypes[RouteParamtypes[\"NEXT\"] = 2] = \"NEXT\";\n    RouteParamtypes[RouteParamtypes[\"BODY\"] = 3] = \"BODY\";\n    RouteParamtypes[RouteParamtypes[\"QUERY\"] = 4] = \"QUERY\";\n    RouteParamtypes[RouteParamtypes[\"PARAM\"] = 5] = \"PARAM\";\n    RouteParamtypes[RouteParamtypes[\"HEADERS\"] = 6] = \"HEADERS\";\n    RouteParamtypes[RouteParamtypes[\"SESSION\"] = 7] = \"SESSION\";\n    RouteParamtypes[RouteParamtypes[\"FILE\"] = 8] = \"FILE\";\n    RouteParamtypes[RouteParamtypes[\"FILES\"] = 9] = \"FILES\";\n    RouteParamtypes[RouteParamtypes[\"HOST\"] = 10] = \"HOST\";\n    RouteParamtypes[RouteParamtypes[\"IP\"] = 11] = \"IP\";\n    RouteParamtypes[RouteParamtypes[\"RAW_BODY\"] = 12] = \"RAW_BODY\";\n    RouteParamtypes[RouteParamtypes[\"ACK\"] = 13] = \"ACK\";\n})(RouteParamtypes || (exports.RouteParamtypes = RouteParamtypes = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Res = exports.Req = exports.Headers = exports.Session = exports.Ip = exports.Next = exports.Response = exports.Request = void 0;\nexports.assignMetadata = assignMetadata;\nexports.UploadedFile = UploadedFile;\nexports.UploadedFiles = UploadedFiles;\nexports.Query = Query;\nexports.Body = Body;\nexports.RawBody = RawBody;\nexports.Param = Param;\nexports.HostParam = HostParam;\nconst constants_1 = require(\"../../constants\");\nconst route_paramtypes_enum_1 = require(\"../../enums/route-paramtypes.enum\");\nconst shared_utils_1 = require(\"../../utils/shared.utils\");\nfunction assignMetadata(args, paramtype, index, data, ...pipes) {\n    return {\n        ...args,\n        [`${paramtype}:${index}`]: {\n            index,\n            data,\n            pipes,\n        },\n    };\n}\nfunction createRouteParamDecorator(paramtype) {\n    return (data) => (target, key, index) => {\n        const args = Reflect.getMetadata(constants_1.ROUTE_ARGS_METADATA, target.constructor, key) ||\n            {};\n        Reflect.defineMetadata(constants_1.ROUTE_ARGS_METADATA, assignMetadata(args, paramtype, index, data), target.constructor, key);\n    };\n}\nconst createPipesRouteParamDecorator = (paramtype) => (data, ...pipes) => (target, key, index) => {\n    const args = Reflect.getMetadata(constants_1.ROUTE_ARGS_METADATA, target.constructor, key) || {};\n    const hasParamData = (0, shared_utils_1.isNil)(data) || (0, shared_utils_1.isString)(data);\n    const paramData = hasParamData ? data : undefined;\n    const paramPipes = hasParamData ? pipes : [data, ...pipes];\n    Reflect.defineMetadata(constants_1.ROUTE_ARGS_METADATA, assignMetadata(args, paramtype, index, paramData, ...paramPipes), target.constructor, key);\n};\n/**\n * Route handler parameter decorator. Extracts the `Request`\n * object from the underlying platform and populates the decorated\n * parameter with the value of `Request`.\n *\n * Example: `logout(@Request() req)`\n *\n * @see [Request object](https://docs.nestjs.com/controllers#request-object)\n *\n * @publicApi\n */\nexports.Request = createRouteParamDecorator(route_paramtypes_enum_1.RouteParamtypes.REQUEST);\n/**\n * Route handler parameter decorator. Extracts the `Response`\n * object from the underlying platform and populates the decorated\n * parameter with the value of `Response`.\n *\n * Example: `logout(@Response() res)`\n *\n * @publicApi\n */\nconst Response = (options) => (target, key, index) => {\n    if (options?.passthrough) {\n        Reflect.defineMetadata(constants_1.RESPONSE_PASSTHROUGH_METADATA, options?.passthrough, target.constructor, key);\n    }\n    return createRouteParamDecorator(route_paramtypes_enum_1.RouteParamtypes.RESPONSE)()(target, key, index);\n};\nexports.Response = Response;\n/**\n * Route handler parameter decorator. Extracts reference to the `Next` function\n * from the underlying platform and populates the decorated\n * parameter with the value of `Next`.\n *\n * @publicApi\n */\nexports.Next = createRouteParamDecorator(route_paramtypes_enum_1.RouteParamtypes.NEXT);\n/**\n * Route handler parameter decorator. Extracts the `Ip` property\n * from the `req` object and populates the decorated\n * parameter with the value of `ip`.\n *\n * @see [Request object](https://docs.nestjs.com/controllers#request-object)\n *\n * @publicApi\n */\nexports.Ip = createRouteParamDecorator(route_paramtypes_enum_1.RouteParamtypes.IP);\n/**\n * Route handler parameter decorator. Extracts the `Session` object\n * from the underlying platform and populates the decorated\n * parameter with the value of `Session`.\n *\n * @see [Request object](https://docs.nestjs.com/controllers#request-object)\n *\n * @publicApi\n */\nexports.Session = createRouteParamDecorator(route_paramtypes_enum_1.RouteParamtypes.SESSION);\n/**\n * Route handler parameter decorator. Extracts the `file` object\n * and populates the decorated parameter with the value of `file`.\n * Used in conjunction with\n * [multer middleware](https://github.com/expressjs/multer) for Express-based applications.\n *\n * For example:\n * ```typescript\n * uploadFile(@UploadedFile() file) {\n *   console.log(file);\n * }\n * ```\n * @see [Request object](https://docs.nestjs.com/techniques/file-upload)\n *\n * @publicApi\n */\nfunction UploadedFile(fileKey, ...pipes) {\n    return createPipesRouteParamDecorator(route_paramtypes_enum_1.RouteParamtypes.FILE)(fileKey, ...pipes);\n}\n/**\n * Route handler parameter decorator. Extracts the `files` object\n * and populates the decorated parameter with the value of `files`.\n * Used in conjunction with\n * [multer middleware](https://github.com/expressjs/multer) for Express-based applications.\n *\n * For example:\n * ```typescript\n * uploadFile(@UploadedFiles() files) {\n *   console.log(files);\n * }\n * ```\n * @see [Request object](https://docs.nestjs.com/techniques/file-upload)\n *\n * @publicApi\n */\nfunction UploadedFiles(...pipes) {\n    return createPipesRouteParamDecorator(route_paramtypes_enum_1.RouteParamtypes.FILES)(undefined, ...pipes);\n}\n/**\n * Route handler parameter decorator. Extracts the `headers`\n * property from the `req` object and populates the decorated\n * parameter with the value of `headers`.\n *\n * For example: `async update(@Headers('Cache-Control') cacheControl: string)`\n *\n * @param property name of single header property to extract.\n *\n * @see [Request object](https://docs.nestjs.com/controllers#request-object)\n *\n * @publicApi\n */\nexports.Headers = createRouteParamDecorator(route_paramtypes_enum_1.RouteParamtypes.HEADERS);\n/**\n * Route handler parameter decorator. Extracts the `query`\n * property from the `req` object and populates the decorated\n * parameter with the value of `query`. May also apply pipes to the bound\n * query parameter.\n *\n * For example:\n * ```typescript\n * async find(@Query('user') user: string)\n * ```\n *\n * @param property name of single property to extract from the `query` object\n * @param pipes one or more pipes to apply to the bound query parameter\n *\n * @see [Request object](https://docs.nestjs.com/controllers#request-object)\n *\n * @publicApi\n */\nfunction Query(property, ...pipes) {\n    return createPipesRouteParamDecorator(route_paramtypes_enum_1.RouteParamtypes.QUERY)(property, ...pipes);\n}\n/**\n * Route handler parameter decorator. Extracts the entire `body` object\n * property, or optionally a named property of the `body` object, from\n * the `req` object and populates the decorated parameter with that value.\n * Also applies pipes to the bound body parameter.\n *\n * For example:\n * ```typescript\n * async create(@Body('role', new ValidationPipe()) role: string)\n * ```\n *\n * @param property name of single property to extract from the `body` object\n * @param pipes one or more pipes - either instances or classes - to apply to\n * the bound body parameter.\n *\n * @see [Request object](https://docs.nestjs.com/controllers#request-object)\n * @see [Working with pipes](https://docs.nestjs.com/custom-decorators#working-with-pipes)\n *\n * @publicApi\n */\nfunction Body(property, ...pipes) {\n    return createPipesRouteParamDecorator(route_paramtypes_enum_1.RouteParamtypes.BODY)(property, ...pipes);\n}\n/**\n * Route handler parameter decorator. Extracts the `rawBody` Buffer\n * property from the `req` object and populates the decorated parameter with that value.\n * Also applies pipes to the bound rawBody parameter.\n *\n * For example:\n * ```typescript\n * async create(@RawBody(new ValidationPipe()) rawBody: Buffer)\n * ```\n *\n * @param pipes one or more pipes - either instances or classes - to apply to\n * the bound body parameter.\n *\n * @see [Request object](https://docs.nestjs.com/controllers#request-object)\n * @see [Raw body](https://docs.nestjs.com/faq/raw-body)\n * @see [Working with pipes](https://docs.nestjs.com/custom-decorators#working-with-pipes)\n *\n * @publicApi\n */\nfunction RawBody(...pipes) {\n    return createPipesRouteParamDecorator(route_paramtypes_enum_1.RouteParamtypes.RAW_BODY)(undefined, ...pipes);\n}\n/**\n * Route handler parameter decorator. Extracts the `params`\n * property from the `req` object and populates the decorated\n * parameter with the value of `params`. May also apply pipes to the bound\n * parameter.\n *\n * For example, extracting all params:\n * ```typescript\n * findOne(@Param() params: string[])\n * ```\n *\n * For example, extracting a single param:\n * ```typescript\n * findOne(@Param('id') id: string)\n * ```\n * @param property name of single property to extract from the `req` object\n * @param pipes one or more pipes - either instances or classes - to apply to\n * the bound parameter.\n *\n * @see [Request object](https://docs.nestjs.com/controllers#request-object)\n * @see [Working with pipes](https://docs.nestjs.com/custom-decorators#working-with-pipes)\n *\n * @publicApi\n */\nfunction Param(property, ...pipes) {\n    return createPipesRouteParamDecorator(route_paramtypes_enum_1.RouteParamtypes.PARAM)(property, ...pipes);\n}\n/**\n * Route handler parameter decorator. Extracts the `hosts`\n * property from the `req` object and populates the decorated\n * parameter with the value of `params`. May also apply pipes to the bound\n * parameter.\n *\n * For example, extracting all params:\n * ```typescript\n * findOne(@HostParam() params: string[])\n * ```\n *\n * For example, extracting a single param:\n * ```typescript\n * findOne(@HostParam('id') id: string)\n * ```\n * @param property name of single property to extract from the `req` object\n *\n * @see [Request object](https://docs.nestjs.com/controllers#request-object)\n *\n * @publicApi\n */\nfunction HostParam(property) {\n    return createRouteParamDecorator(route_paramtypes_enum_1.RouteParamtypes.HOST)(property);\n}\nexports.Req = exports.Request;\nexports.Res = exports.Response;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpCode = HttpCode;\nconst constants_1 = require(\"../../constants\");\n/**\n * Request method Decorator.  Defines the HTTP response status code.  Overrides\n * default status code for the decorated request method.\n *\n * @param statusCode HTTP response code to be returned by route handler.\n *\n * @see [Http Status Codes](https://docs.nestjs.com/controllers#status-code)\n *\n * @publicApi\n */\nfunction HttpCode(statusCode) {\n    return (target, key, descriptor) => {\n        Reflect.defineMetadata(constants_1.HTTP_CODE_METADATA, statusCode, descriptor.value);\n        return descriptor;\n    };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assignCustomParameterMetadata = assignCustomParameterMetadata;\nconst constants_1 = require(\"../constants\");\nfunction assignCustomParameterMetadata(args, paramtype, index, factory, data, ...pipes) {\n    return {\n        ...args,\n        [`${paramtype}${constants_1.CUSTOM_ROUTE_ARGS_METADATA}:${index}`]: {\n            index,\n            factory,\n            data,\n            pipes,\n        },\n    };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createParamDecorator = createParamDecorator;\nconst uid_1 = require(\"uid\");\nconst constants_1 = require(\"../../constants\");\nconst assign_custom_metadata_util_1 = require(\"../../utils/assign-custom-metadata.util\");\nconst shared_utils_1 = require(\"../../utils/shared.utils\");\n/**\n * Defines HTTP route param decorator\n *\n * @param factory\n * @param enhancers\n *\n * @publicApi\n */\nfunction createParamDecorator(factory, enhancers = []) {\n    const paramtype = (0, uid_1.uid)(21);\n    return (data, ...pipes) => (target, key, index) => {\n        const args = Reflect.getMetadata(constants_1.ROUTE_ARGS_METADATA, target.constructor, key) ||\n            {};\n        const isPipe = (pipe) => pipe &&\n            (((0, shared_utils_1.isFunction)(pipe) &&\n                pipe.prototype &&\n                (0, shared_utils_1.isFunction)(pipe.prototype.transform)) ||\n                (0, shared_utils_1.isFunction)(pipe.transform));\n        const hasParamData = (0, shared_utils_1.isNil)(data) || !isPipe(data);\n        const paramData = hasParamData ? data : undefined;\n        const paramPipes = hasParamData ? pipes : [data, ...pipes];\n        Reflect.defineMetadata(constants_1.ROUTE_ARGS_METADATA, (0, assign_custom_metadata_util_1.assignCustomParameterMetadata)(args, paramtype, index, factory, paramData, ...paramPipes), target.constructor, key);\n        enhancers.forEach(fn => fn(target, key, index));\n    };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Render = Render;\nconst constants_1 = require(\"../../constants\");\n/**\n * Route handler method Decorator.  Defines a template to be rendered by the controller.\n *\n * For example: `@Render('index')`\n *\n * @param template name of the render engine template file\n *\n * @see [Model-View-Controller](https://docs.nestjs.com/techniques/mvc)\n *\n * @publicApi\n */\nfunction Render(template) {\n    return (target, key, descriptor) => {\n        Reflect.defineMetadata(constants_1.RENDER_METADATA, template, descriptor.value);\n        return descriptor;\n    };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Header = Header;\nconst constants_1 = require(\"../../constants\");\nconst extend_metadata_util_1 = require(\"../../utils/extend-metadata.util\");\n/**\n * Request method Decorator.  Sets a response header.\n *\n * For example:\n * `@Header('Cache-Control', 'none')`\n * `@Header('Cache-Control', () => 'none')`\n *\n * @param name string to be used for header name\n * @param value string to be used for header value\n *\n * @see [Headers](https://docs.nestjs.com/controllers#headers)\n *\n * @publicApi\n */\nfunction Header(name, value) {\n    return (target, key, descriptor) => {\n        (0, extend_metadata_util_1.extendArrayMetadata)(constants_1.HEADERS_METADATA, [{ name, value }], descriptor.value);\n        return descriptor;\n    };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Redirect = Redirect;\nconst constants_1 = require(\"../../constants\");\n/**\n * Redirects request to the specified URL.\n *\n * @publicApi\n */\nfunction Redirect(url = '', statusCode) {\n    return (target, key, descriptor) => {\n        Reflect.defineMetadata(constants_1.REDIRECT_METADATA, { statusCode, url }, descriptor.value);\n        return descriptor;\n    };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Sse = Sse;\nconst constants_1 = require(\"../../constants\");\nconst request_method_enum_1 = require(\"../../enums/request-method.enum\");\n/**\n * Declares this route as a Server-Sent-Events endpoint\n *\n * @publicApi\n */\nfunction Sse(path, options = {\n    [constants_1.METHOD_METADATA]: request_method_enum_1.RequestMethod.GET,\n}) {\n    return (target, key, descriptor) => {\n        path = path && path.length ? path : '/';\n        Reflect.defineMetadata(constants_1.PATH_METADATA, path, descriptor.value);\n        Reflect.defineMetadata(constants_1.METHOD_METADATA, options[constants_1.METHOD_METADATA], descriptor.value);\n        Reflect.defineMetadata(constants_1.SSE_METADATA, true, descriptor.value);\n        return descriptor;\n    };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./request-mapping.decorator\"), exports);\ntslib_1.__exportStar(require(\"./route-params.decorator\"), exports);\ntslib_1.__exportStar(require(\"./http-code.decorator\"), exports);\ntslib_1.__exportStar(require(\"./create-route-param-metadata.decorator\"), exports);\ntslib_1.__exportStar(require(\"./render.decorator\"), exports);\ntslib_1.__exportStar(require(\"./header.decorator\"), exports);\ntslib_1.__exportStar(require(\"./redirect.decorator\"), exports);\ntslib_1.__exportStar(require(\"./sse.decorator\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./core\"), exports);\ntslib_1.__exportStar(require(\"./modules\"), exports);\ntslib_1.__exportStar(require(\"./http\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpStatus = void 0;\n/**\n * @publicApi\n */\nvar HttpStatus;\n(function (HttpStatus) {\n    HttpStatus[HttpStatus[\"CONTINUE\"] = 100] = \"CONTINUE\";\n    HttpStatus[HttpStatus[\"SWITCHING_PROTOCOLS\"] = 101] = \"SWITCHING_PROTOCOLS\";\n    HttpStatus[HttpStatus[\"PROCESSING\"] = 102] = \"PROCESSING\";\n    HttpStatus[HttpStatus[\"EARLYHINTS\"] = 103] = \"EARLYHINTS\";\n    HttpStatus[HttpStatus[\"OK\"] = 200] = \"OK\";\n    HttpStatus[HttpStatus[\"CREATED\"] = 201] = \"CREATED\";\n    HttpStatus[HttpStatus[\"ACCEPTED\"] = 202] = \"ACCEPTED\";\n    HttpStatus[HttpStatus[\"NON_AUTHORITATIVE_INFORMATION\"] = 203] = \"NON_AUTHORITATIVE_INFORMATION\";\n    HttpStatus[HttpStatus[\"NO_CONTENT\"] = 204] = \"NO_CONTENT\";\n    HttpStatus[HttpStatus[\"RESET_CONTENT\"] = 205] = \"RESET_CONTENT\";\n    HttpStatus[HttpStatus[\"PARTIAL_CONTENT\"] = 206] = \"PARTIAL_CONTENT\";\n    HttpStatus[HttpStatus[\"MULTI_STATUS\"] = 207] = \"MULTI_STATUS\";\n    HttpStatus[HttpStatus[\"ALREADY_REPORTED\"] = 208] = \"ALREADY_REPORTED\";\n    HttpStatus[HttpStatus[\"CONTENT_DIFFERENT\"] = 210] = \"CONTENT_DIFFERENT\";\n    HttpStatus[HttpStatus[\"AMBIGUOUS\"] = 300] = \"AMBIGUOUS\";\n    HttpStatus[HttpStatus[\"MOVED_PERMANENTLY\"] = 301] = \"MOVED_PERMANENTLY\";\n    HttpStatus[HttpStatus[\"FOUND\"] = 302] = \"FOUND\";\n    HttpStatus[HttpStatus[\"SEE_OTHER\"] = 303] = \"SEE_OTHER\";\n    HttpStatus[HttpStatus[\"NOT_MODIFIED\"] = 304] = \"NOT_MODIFIED\";\n    HttpStatus[HttpStatus[\"TEMPORARY_REDIRECT\"] = 307] = \"TEMPORARY_REDIRECT\";\n    HttpStatus[HttpStatus[\"PERMANENT_REDIRECT\"] = 308] = \"PERMANENT_REDIRECT\";\n    HttpStatus[HttpStatus[\"BAD_REQUEST\"] = 400] = \"BAD_REQUEST\";\n    HttpStatus[HttpStatus[\"UNAUTHORIZED\"] = 401] = \"UNAUTHORIZED\";\n    HttpStatus[HttpStatus[\"PAYMENT_REQUIRED\"] = 402] = \"PAYMENT_REQUIRED\";\n    HttpStatus[HttpStatus[\"FORBIDDEN\"] = 403] = \"FORBIDDEN\";\n    HttpStatus[HttpStatus[\"NOT_FOUND\"] = 404] = \"NOT_FOUND\";\n    HttpStatus[HttpStatus[\"METHOD_NOT_ALLOWED\"] = 405] = \"METHOD_NOT_ALLOWED\";\n    HttpStatus[HttpStatus[\"NOT_ACCEPTABLE\"] = 406] = \"NOT_ACCEPTABLE\";\n    HttpStatus[HttpStatus[\"PROXY_AUTHENTICATION_REQUIRED\"] = 407] = \"PROXY_AUTHENTICATION_REQUIRED\";\n    HttpStatus[HttpStatus[\"REQUEST_TIMEOUT\"] = 408] = \"REQUEST_TIMEOUT\";\n    HttpStatus[HttpStatus[\"CONFLICT\"] = 409] = \"CONFLICT\";\n    HttpStatus[HttpStatus[\"GONE\"] = 410] = \"GONE\";\n    HttpStatus[HttpStatus[\"LENGTH_REQUIRED\"] = 411] = \"LENGTH_REQUIRED\";\n    HttpStatus[HttpStatus[\"PRECONDITION_FAILED\"] = 412] = \"PRECONDITION_FAILED\";\n    HttpStatus[HttpStatus[\"PAYLOAD_TOO_LARGE\"] = 413] = \"PAYLOAD_TOO_LARGE\";\n    HttpStatus[HttpStatus[\"URI_TOO_LONG\"] = 414] = \"URI_TOO_LONG\";\n    HttpStatus[HttpStatus[\"UNSUPPORTED_MEDIA_TYPE\"] = 415] = \"UNSUPPORTED_MEDIA_TYPE\";\n    HttpStatus[HttpStatus[\"REQUESTED_RANGE_NOT_SATISFIABLE\"] = 416] = \"REQUESTED_RANGE_NOT_SATISFIABLE\";\n    HttpStatus[HttpStatus[\"EXPECTATION_FAILED\"] = 417] = \"EXPECTATION_FAILED\";\n    HttpStatus[HttpStatus[\"I_AM_A_TEAPOT\"] = 418] = \"I_AM_A_TEAPOT\";\n    HttpStatus[HttpStatus[\"MISDIRECTED\"] = 421] = \"MISDIRECTED\";\n    HttpStatus[HttpStatus[\"UNPROCESSABLE_ENTITY\"] = 422] = \"UNPROCESSABLE_ENTITY\";\n    HttpStatus[HttpStatus[\"LOCKED\"] = 423] = \"LOCKED\";\n    HttpStatus[HttpStatus[\"FAILED_DEPENDENCY\"] = 424] = \"FAILED_DEPENDENCY\";\n    HttpStatus[HttpStatus[\"PRECONDITION_REQUIRED\"] = 428] = \"PRECONDITION_REQUIRED\";\n    HttpStatus[HttpStatus[\"TOO_MANY_REQUESTS\"] = 429] = \"TOO_MANY_REQUESTS\";\n    HttpStatus[HttpStatus[\"UNRECOVERABLE_ERROR\"] = 456] = \"UNRECOVERABLE_ERROR\";\n    HttpStatus[HttpStatus[\"INTERNAL_SERVER_ERROR\"] = 500] = \"INTERNAL_SERVER_ERROR\";\n    HttpStatus[HttpStatus[\"NOT_IMPLEMENTED\"] = 501] = \"NOT_IMPLEMENTED\";\n    HttpStatus[HttpStatus[\"BAD_GATEWAY\"] = 502] = \"BAD_GATEWAY\";\n    HttpStatus[HttpStatus[\"SERVICE_UNAVAILABLE\"] = 503] = \"SERVICE_UNAVAILABLE\";\n    HttpStatus[HttpStatus[\"GATEWAY_TIMEOUT\"] = 504] = \"GATEWAY_TIMEOUT\";\n    HttpStatus[HttpStatus[\"HTTP_VERSION_NOT_SUPPORTED\"] = 505] = \"HTTP_VERSION_NOT_SUPPORTED\";\n    HttpStatus[HttpStatus[\"INSUFFICIENT_STORAGE\"] = 507] = \"INSUFFICIENT_STORAGE\";\n    HttpStatus[HttpStatus[\"LOOP_DETECTED\"] = 508] = \"LOOP_DETECTED\";\n})(HttpStatus || (exports.HttpStatus = HttpStatus = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ShutdownSignal = void 0;\n/**\n * System signals which shut down a process\n */\nvar ShutdownSignal;\n(function (ShutdownSignal) {\n    ShutdownSignal[\"SIGHUP\"] = \"SIGHUP\";\n    ShutdownSignal[\"SIGINT\"] = \"SIGINT\";\n    ShutdownSignal[\"SIGQUIT\"] = \"SIGQUIT\";\n    ShutdownSignal[\"SIGILL\"] = \"SIGILL\";\n    ShutdownSignal[\"SIGTRAP\"] = \"SIGTRAP\";\n    ShutdownSignal[\"SIGABRT\"] = \"SIGABRT\";\n    ShutdownSignal[\"SIGBUS\"] = \"SIGBUS\";\n    ShutdownSignal[\"SIGFPE\"] = \"SIGFPE\";\n    ShutdownSignal[\"SIGSEGV\"] = \"SIGSEGV\";\n    ShutdownSignal[\"SIGUSR2\"] = \"SIGUSR2\";\n    ShutdownSignal[\"SIGTERM\"] = \"SIGTERM\";\n})(ShutdownSignal || (exports.ShutdownSignal = ShutdownSignal = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VersioningType = void 0;\n/**\n * @publicApi\n */\nvar VersioningType;\n(function (VersioningType) {\n    VersioningType[VersioningType[\"URI\"] = 0] = \"URI\";\n    VersioningType[VersioningType[\"HEADER\"] = 1] = \"HEADER\";\n    VersioningType[VersioningType[\"MEDIA_TYPE\"] = 2] = \"MEDIA_TYPE\";\n    VersioningType[VersioningType[\"CUSTOM\"] = 3] = \"CUSTOM\";\n})(VersioningType || (exports.VersioningType = VersioningType = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./request-method.enum\"), exports);\ntslib_1.__exportStar(require(\"./http-status.enum\"), exports);\ntslib_1.__exportStar(require(\"./shutdown-signal.enum\"), exports);\ntslib_1.__exportStar(require(\"./version-type.enum\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IntrinsicException = void 0;\n/**\n * Exception that represents an intrinsic error in the application.\n * When thrown, the default exception filter will not log the error message.\n *\n * @publicApi\n */\nclass IntrinsicException extends Error {\n}\nexports.IntrinsicException = IntrinsicException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpException = void 0;\nconst shared_utils_1 = require(\"../utils/shared.utils\");\nconst intrinsic_exception_1 = require(\"./intrinsic.exception\");\n/**\n * Defines the base Nest HTTP exception, which is handled by the default\n * Exceptions Handler.\n *\n * @see [Built-in HTTP exceptions](https://docs.nestjs.com/exception-filters#built-in-http-exceptions)\n *\n * @publicApi\n */\nclass HttpException extends intrinsic_exception_1.IntrinsicException {\n    /**\n     * Instantiate a plain HTTP Exception.\n     *\n     * @example\n     * throw new HttpException('message', HttpStatus.BAD_REQUEST)\n     * throw new HttpException('custom message', HttpStatus.BAD_REQUEST, {\n     *  cause: new Error('Cause Error'),\n     * })\n     *\n     *\n     * @usageNotes\n     * The constructor arguments define the response and the HTTP response status code.\n     * - The `response` argument (required) defines the JSON response body. alternatively, it can also be\n     *  an error object that is used to define an error [cause](https://nodejs.org/en/blog/release/v16.9.0/#error-cause).\n     * - The `status` argument (required) defines the HTTP Status Code.\n     * - The `options` argument (optional) defines additional error options. Currently, it supports the `cause` attribute,\n     *  and can be used as an alternative way to specify the error cause: `const error = new HttpException('description', 400, { cause: new Error() });`\n     *\n     * By default, the JSON response body contains two properties:\n     * - `statusCode`: the Http Status Code.\n     * - `message`: a short description of the HTTP error by default; override this\n     * by supplying a string in the `response` parameter.\n     *\n     * To override the entire JSON response body, pass an object to the `createBody`\n     * method. Nest will serialize the object and return it as the JSON response body.\n     *\n     * The `status` argument is required, and should be a valid HTTP status code.\n     * Best practice is to use the `HttpStatus` enum imported from `nestjs/common`.\n     *\n     * @param response string, object describing the error condition or the error cause.\n     * @param status HTTP response status code.\n     * @param options An object used to add an error cause.\n     */\n    constructor(response, status, options) {\n        super();\n        this.response = response;\n        this.status = status;\n        this.options = options;\n        this.initMessage();\n        this.initName();\n        this.initCause();\n    }\n    /**\n     * Configures error chaining support\n     *\n     * @see https://nodejs.org/en/blog/release/v16.9.0/#error-cause\n     * @see https://github.com/microsoft/TypeScript/issues/45167\n     */\n    initCause() {\n        if (this.options?.cause) {\n            this.cause = this.options.cause;\n            return;\n        }\n    }\n    initMessage() {\n        if ((0, shared_utils_1.isString)(this.response)) {\n            this.message = this.response;\n        }\n        else if ((0, shared_utils_1.isObject)(this.response) && (0, shared_utils_1.isString)(this.response.message)) {\n            this.message = this.response.message;\n        }\n        else if (this.constructor) {\n            this.message =\n                this.constructor.name.match(/[A-Z][a-z]+|[0-9]+/g)?.join(' ') ??\n                    'Error';\n        }\n    }\n    initName() {\n        this.name = this.constructor.name;\n    }\n    getResponse() {\n        return this.response;\n    }\n    getStatus() {\n        return this.status;\n    }\n    static createBody(arg0, arg1, statusCode) {\n        if (!arg0) {\n            return {\n                message: arg1,\n                statusCode: statusCode,\n            };\n        }\n        if ((0, shared_utils_1.isString)(arg0) || Array.isArray(arg0) || (0, shared_utils_1.isNumber)(arg0)) {\n            return {\n                message: arg0,\n                error: arg1,\n                statusCode: statusCode,\n            };\n        }\n        return arg0;\n    }\n    static getDescriptionFrom(descriptionOrOptions) {\n        return (0, shared_utils_1.isString)(descriptionOrOptions)\n            ? descriptionOrOptions\n            : descriptionOrOptions?.description;\n    }\n    static getHttpExceptionOptionsFrom(descriptionOrOptions) {\n        return (0, shared_utils_1.isString)(descriptionOrOptions) ? {} : descriptionOrOptions;\n    }\n    /**\n     * Utility method used to extract the error description and httpExceptionOptions from the given argument.\n     * This is used by inheriting classes to correctly parse both options.\n     * @returns the error description and the httpExceptionOptions as an object.\n     */\n    static extractDescriptionAndOptionsFrom(descriptionOrOptions) {\n        const description = (0, shared_utils_1.isString)(descriptionOrOptions)\n            ? descriptionOrOptions\n            : descriptionOrOptions?.description;\n        const httpExceptionOptions = (0, shared_utils_1.isString)(descriptionOrOptions)\n            ? {}\n            : descriptionOrOptions;\n        return {\n            description,\n            httpExceptionOptions,\n        };\n    }\n}\nexports.HttpException = HttpException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BadGatewayException = void 0;\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_exception_1 = require(\"./http.exception\");\n/**\n * Defines an HTTP exception for *Bad Gateway* type errors.\n *\n * @see [Built-in HTTP exceptions](https://docs.nestjs.com/exception-filters#built-in-http-exceptions)\n *\n * @publicApi\n */\nclass BadGatewayException extends http_exception_1.HttpException {\n    /**\n     * Instantiate a `BadGatewayException` Exception.\n     *\n     * @example\n     * `throw new BadGatewayException()`\n     *\n     * @usageNotes\n     * The HTTP response status code will be 502.\n     * - The `objectOrError` argument defines the JSON response body or the message string.\n     * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.\n     *\n     * By default, the JSON response body contains two properties:\n     * - `statusCode`: this will be the value 502.\n     * - `message`: the string `'Bad Gateway'` by default; override this by supplying\n     * a string in the `objectOrError` parameter.\n     *\n     * If the parameter `objectOrError` is a string, the response body will contain an\n     * additional property, `error`, with a short description of the HTTP error. To override the\n     * entire JSON response body, pass an object instead. Nest will serialize the object\n     * and return it as the JSON response body.\n     *\n     * @param objectOrError string or object describing the error condition.\n     * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause\n     */\n    constructor(objectOrError, descriptionOrOptions = 'Bad Gateway') {\n        const { description, httpExceptionOptions } = http_exception_1.HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);\n        super(http_exception_1.HttpException.createBody(objectOrError, description, http_status_enum_1.HttpStatus.BAD_GATEWAY), http_status_enum_1.HttpStatus.BAD_GATEWAY, httpExceptionOptions);\n    }\n}\nexports.BadGatewayException = BadGatewayException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BadRequestException = void 0;\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_exception_1 = require(\"./http.exception\");\n/**\n * Defines an HTTP exception for *Bad Request* type errors.\n *\n * @see [Built-in HTTP exceptions](https://docs.nestjs.com/exception-filters#built-in-http-exceptions)\n *\n * @publicApi\n */\nclass BadRequestException extends http_exception_1.HttpException {\n    /**\n     * Instantiate a `BadRequestException` Exception.\n     *\n     * @example\n     * `throw new BadRequestException()`\n     *\n     * @usageNotes\n     * The HTTP response status code will be 400.\n     * - The `objectOrError` argument defines the JSON response body or the message string.\n     * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.\n     *\n     * By default, the JSON response body contains two properties:\n     * - `statusCode`: this will be the value 400.\n     * - `message`: the string `'Bad Request'` by default; override this by supplying\n     * a string in the `objectOrError` parameter.\n     *\n     * If the parameter `objectOrError` is a string, the response body will contain an\n     * additional property, `error`, with a short description of the HTTP error. To override the\n     * entire JSON response body, pass an object instead. Nest will serialize the object\n     * and return it as the JSON response body.\n     *\n     * @param objectOrError string or object describing the error condition.\n     * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause\n     */\n    constructor(objectOrError, descriptionOrOptions = 'Bad Request') {\n        const { description, httpExceptionOptions } = http_exception_1.HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);\n        super(http_exception_1.HttpException.createBody(objectOrError, description, http_status_enum_1.HttpStatus.BAD_REQUEST), http_status_enum_1.HttpStatus.BAD_REQUEST, httpExceptionOptions);\n    }\n}\nexports.BadRequestException = BadRequestException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConflictException = void 0;\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_exception_1 = require(\"./http.exception\");\n/**\n * Defines an HTTP exception for *Conflict* type errors.\n *\n * @see [Built-in HTTP exceptions](https://docs.nestjs.com/exception-filters#built-in-http-exceptions)\n *\n * @publicApi\n */\nclass ConflictException extends http_exception_1.HttpException {\n    /**\n     * Instantiate a `ConflictException` Exception.\n     *\n     * @example\n     * `throw new ConflictException()`\n     *\n     * @usageNotes\n     * The HTTP response status code will be 409.\n     * - The `objectOrError` argument defines the JSON response body or the message string.\n     * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.\n     *\n     * By default, the JSON response body contains two properties:\n     * - `statusCode`: this will be the value 409.\n     * - `message`: the string `'Conflict'` by default; override this by supplying\n     * a string in the `objectOrError` parameter.\n     *\n     * If the parameter `objectOrError` is a string, the response body will contain an\n     * additional property, `error`, with a short description of the HTTP error. To override the\n     * entire JSON response body, pass an object instead. Nest will serialize the object\n     * and return it as the JSON response body.\n     *\n     * @param objectOrError string or object describing the error condition.\n     * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause\n     */\n    constructor(objectOrError, descriptionOrOptions = 'Conflict') {\n        const { description, httpExceptionOptions } = http_exception_1.HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);\n        super(http_exception_1.HttpException.createBody(objectOrError, description, http_status_enum_1.HttpStatus.CONFLICT), http_status_enum_1.HttpStatus.CONFLICT, httpExceptionOptions);\n    }\n}\nexports.ConflictException = ConflictException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ForbiddenException = void 0;\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_exception_1 = require(\"./http.exception\");\n/**\n * Defines an HTTP exception for *Forbidden* type errors.\n *\n * @see [Built-in HTTP exceptions](https://docs.nestjs.com/exception-filters#built-in-http-exceptions)\n *\n * @publicApi\n */\nclass ForbiddenException extends http_exception_1.HttpException {\n    /**\n     * Instantiate a `ForbiddenException` Exception.\n     *\n     * @example\n     * `throw new ForbiddenException()`\n     *\n     * @usageNotes\n     * The HTTP response status code will be 403.\n     * - The `objectOrError` argument defines the JSON response body or the message string.\n     * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.\n     *\n     * By default, the JSON response body contains two properties:\n     * - `statusCode`: this will be the value 403.\n     * - `message`: the string `'Forbidden'` by default; override this by supplying\n     * a string in the `objectOrError` parameter.\n     *\n     * If the parameter `objectOrError` is a string, the response body will contain an\n     * additional property, `error`, with a short description of the HTTP error. To override the\n     * entire JSON response body, pass an object instead. Nest will serialize the object\n     * and return it as the JSON response body.\n     *\n     * @param objectOrError string or object describing the error condition.\n     * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause\n     */\n    constructor(objectOrError, descriptionOrOptions = 'Forbidden') {\n        const { description, httpExceptionOptions } = http_exception_1.HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);\n        super(http_exception_1.HttpException.createBody(objectOrError, description, http_status_enum_1.HttpStatus.FORBIDDEN), http_status_enum_1.HttpStatus.FORBIDDEN, httpExceptionOptions);\n    }\n}\nexports.ForbiddenException = ForbiddenException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GatewayTimeoutException = void 0;\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_exception_1 = require(\"./http.exception\");\n/**\n * Defines an HTTP exception for *Gateway Timeout* type errors.\n *\n * @see [Built-in HTTP exceptions](https://docs.nestjs.com/exception-filters#built-in-http-exceptions)\n *\n * @publicApi\n */\nclass GatewayTimeoutException extends http_exception_1.HttpException {\n    /**\n     * Instantiate a `GatewayTimeoutException` Exception.\n     *\n     * @example\n     * `throw new GatewayTimeoutException()`\n     *\n     * @usageNotes\n     * The HTTP response status code will be 504.\n     * - The `objectOrError` argument defines the JSON response body or the message string.\n     * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.\n     *\n     * By default, the JSON response body contains two properties:\n     * - `statusCode`: this will be the value 504.\n     * - `message`: the string `'Gateway Timeout'` by default; override this by supplying\n     * a string in the `objectOrError` parameter.\n     *\n     * If the parameter `objectOrError` is a string, the response body will contain an\n     * additional property, `error`, with a short description of the HTTP error. To override the\n     * entire JSON response body, pass an object instead. Nest will serialize the object\n     * and return it as the JSON response body.\n     *\n     * @param objectOrError string or object describing the error condition.\n     * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause\n     */\n    constructor(objectOrError, descriptionOrOptions = 'Gateway Timeout') {\n        const { description, httpExceptionOptions } = http_exception_1.HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);\n        super(http_exception_1.HttpException.createBody(objectOrError, description, http_status_enum_1.HttpStatus.GATEWAY_TIMEOUT), http_status_enum_1.HttpStatus.GATEWAY_TIMEOUT, httpExceptionOptions);\n    }\n}\nexports.GatewayTimeoutException = GatewayTimeoutException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GoneException = void 0;\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_exception_1 = require(\"./http.exception\");\n/**\n * Defines an HTTP exception for *Gone* type errors.\n *\n * @see [Built-in HTTP exceptions](https://docs.nestjs.com/exception-filters#built-in-http-exceptions)\n *\n * @publicApi\n */\nclass GoneException extends http_exception_1.HttpException {\n    /**\n     * Instantiate a `GoneException` Exception.\n     *\n     * @example\n     * `throw new GoneException()`\n     *\n     * @usageNotes\n     * The HTTP response status code will be 410.\n     * - The `objectOrError` argument defines the JSON response body or the message string.\n     * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.\n     *\n     * By default, the JSON response body contains two properties:\n     * - `statusCode`: this will be the value 410.\n     * - `message`: the string `'Gone'` by default; override this by supplying\n     * a string in the `objectOrError` parameter.\n     *\n     * If the parameter `objectOrError` is a string, the response body will contain an\n     * additional property, `error`, with a short description of the HTTP error. To override the\n     * entire JSON response body, pass an object instead. Nest will serialize the object\n     * and return it as the JSON response body.\n     *\n     * @param objectOrError string or object describing the error condition.\n     * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause\n     */\n    constructor(objectOrError, descriptionOrOptions = 'Gone') {\n        const { description, httpExceptionOptions } = http_exception_1.HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);\n        super(http_exception_1.HttpException.createBody(objectOrError, description, http_status_enum_1.HttpStatus.GONE), http_status_enum_1.HttpStatus.GONE, httpExceptionOptions);\n    }\n}\nexports.GoneException = GoneException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpVersionNotSupportedException = void 0;\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_exception_1 = require(\"./http.exception\");\n/**\n * Defines an HTTP exception for *Http Version Not Supported* type errors.\n *\n * @see [Built-in HTTP exceptions](https://docs.nestjs.com/exception-filters#built-in-http-exceptions)\n *\n * @publicApi\n */\nclass HttpVersionNotSupportedException extends http_exception_1.HttpException {\n    /**\n     * Instantiate a `HttpVersionNotSupportedException` Exception.\n     *\n     * @example\n     * `throw new HttpVersionNotSupportedException()`\n     *\n     * @usageNotes\n     * The HTTP response status code will be 505.\n     * - The `objectOrError` argument defines the JSON response body or the message string.\n     * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.\n     *\n     * By default, the JSON response body contains two properties:\n     * - `statusCode`: this will be the value 505.\n     * - `message`: the string `'HTTP Version Not Supported'` by default; override this by supplying\n     * a string in the `objectOrError` parameter.\n     *\n     * If the parameter `objectOrError` is a string, the response body will contain an\n     * additional property, `error`, with a short description of the HTTP error. To override the\n     * entire JSON response body, pass an object instead. Nest will serialize the object\n     * and return it as the JSON response body.\n     *\n     * @param objectOrError string or object describing the error condition.\n     * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause\n     */\n    constructor(objectOrError, descriptionOrOptions = 'HTTP Version Not Supported') {\n        const { description, httpExceptionOptions } = http_exception_1.HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);\n        super(http_exception_1.HttpException.createBody(objectOrError, description, http_status_enum_1.HttpStatus.HTTP_VERSION_NOT_SUPPORTED), http_status_enum_1.HttpStatus.HTTP_VERSION_NOT_SUPPORTED, httpExceptionOptions);\n    }\n}\nexports.HttpVersionNotSupportedException = HttpVersionNotSupportedException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImATeapotException = void 0;\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_exception_1 = require(\"./http.exception\");\n/**\n * Defines an HTTP exception for *ImATeapotException* type errors.\n *\n * Any attempt to brew coffee with a teapot should result in the error code\n * \"418 I'm a teapot\". The resulting entity body MAY be short and stout.\n *\n * @see [Built-in HTTP exceptions](https://docs.nestjs.com/exception-filters#built-in-http-exceptions)\n *\n * @publicApi\n */\nclass ImATeapotException extends http_exception_1.HttpException {\n    /**\n     * Instantiate an `ImATeapotException` Exception.\n     *\n     * @example\n     * `throw new ImATeapotException()`\n     *\n     * @usageNotes\n     * The HTTP response status code will be 418.\n     * - The `objectOrError` argument defines the JSON response body or the message string.\n     * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.\n     *\n     * By default, the JSON response body contains two properties:\n     * - `statusCode`: this will be the value 418.\n     * - `message`: the string `\"I'm a Teapot\"` by default; override this by supplying\n     * a string in the `objectOrError` parameter.\n     *\n     * If the parameter `objectOrError` is a string, the response body will contain an\n     * additional property, `error`, with a short description of the HTTP error. To override the\n     * entire JSON response body, pass an object instead. Nest will serialize the object\n     * and return it as the JSON response body.\n     *\n     * @param objectOrError string or object describing the error condition.\n     * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause\n     */\n    constructor(objectOrError, descriptionOrOptions = `I'm a teapot`) {\n        const { description, httpExceptionOptions } = http_exception_1.HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);\n        super(http_exception_1.HttpException.createBody(objectOrError, description, http_status_enum_1.HttpStatus.I_AM_A_TEAPOT), http_status_enum_1.HttpStatus.I_AM_A_TEAPOT, httpExceptionOptions);\n    }\n}\nexports.ImATeapotException = ImATeapotException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InternalServerErrorException = void 0;\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_exception_1 = require(\"./http.exception\");\n/**\n * Defines an HTTP exception for *Internal Server Error* type errors.\n *\n * @see [Built-in HTTP exceptions](https://docs.nestjs.com/exception-filters#built-in-http-exceptions)\n *\n * @publicApi\n */\nclass InternalServerErrorException extends http_exception_1.HttpException {\n    /**\n     * Instantiate an `InternalServerErrorException` Exception.\n     *\n     * @example\n     * `throw new InternalServerErrorException()`\n     *\n     * @usageNotes\n     * The HTTP response status code will be 500.\n     * - The `objectOrError` argument defines the JSON response body or the message string.\n     * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.\n     *\n     * By default, the JSON response body contains two properties:\n     * - `statusCode`: this will be the value 500.\n     * - `message`: the string `'Internal Server Error'` by default; override this by supplying\n     * a string in the `objectOrError` parameter.\n     *\n     * If the parameter `objectOrError` is a string, the response body will contain an\n     * additional property, `error`, with a short description of the HTTP error. To override the\n     * entire JSON response body, pass an object instead. Nest will serialize the object\n     * and return it as the JSON response body.\n     *\n     * @param objectOrError string or object describing the error condition.\n     * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause\n     */\n    constructor(objectOrError, descriptionOrOptions = 'Internal Server Error') {\n        const { description, httpExceptionOptions } = http_exception_1.HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);\n        super(http_exception_1.HttpException.createBody(objectOrError, description, http_status_enum_1.HttpStatus.INTERNAL_SERVER_ERROR), http_status_enum_1.HttpStatus.INTERNAL_SERVER_ERROR, httpExceptionOptions);\n    }\n}\nexports.InternalServerErrorException = InternalServerErrorException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MethodNotAllowedException = void 0;\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_exception_1 = require(\"./http.exception\");\n/**\n * Defines an HTTP exception for *Method Not Allowed* type errors.\n *\n * @see [Built-in HTTP exceptions](https://docs.nestjs.com/exception-filters#built-in-http-exceptions)\n *\n * @publicApi\n */\nclass MethodNotAllowedException extends http_exception_1.HttpException {\n    /**\n     * Instantiate a `MethodNotAllowedException` Exception.\n     *\n     * @example\n     * `throw new MethodNotAllowedException()`\n     *\n     * @usageNotes\n     * The HTTP response status code will be 405.\n     * - The `objectOrError` argument defines the JSON response body or the message string.\n     * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.\n     *\n     * By default, the JSON response body contains two properties:\n     * - `statusCode`: this will be the value 405.\n     * - `message`: the string `'Method Not Allowed'` by default; override this by supplying\n     * a string in the `objectOrError` parameter.\n     *\n     * If the parameter `objectOrError` is a string, the response body will contain an\n     * additional property, `error`, with a short description of the HTTP error. To override the\n     * entire JSON response body, pass an object instead. Nest will serialize the object\n     * and return it as the JSON response body.\n     *\n     * @param objectOrError string or object describing the error condition.\n     * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause\n     */\n    constructor(objectOrError, descriptionOrOptions = 'Method Not Allowed') {\n        const { description, httpExceptionOptions } = http_exception_1.HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);\n        super(http_exception_1.HttpException.createBody(objectOrError, description, http_status_enum_1.HttpStatus.METHOD_NOT_ALLOWED), http_status_enum_1.HttpStatus.METHOD_NOT_ALLOWED, httpExceptionOptions);\n    }\n}\nexports.MethodNotAllowedException = MethodNotAllowedException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MisdirectedException = void 0;\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_exception_1 = require(\"./http.exception\");\n/**\n * Defines an HTTP exception for *Misdirected* type errors.\n *\n * @see [Built-in HTTP exceptions](https://docs.nestjs.com/exception-filters#built-in-http-exceptions)\n *\n * @publicApi\n */\nclass MisdirectedException extends http_exception_1.HttpException {\n    /**\n     * Instantiate a `MisdirectedException` Exception.\n     *\n     * @example\n     * `throw new MisdirectedException()`\n     *\n     * @usageNotes\n     * The HTTP response status code will be 421.\n     * - The `objectOrError` argument defines the JSON response body or the message string.\n     * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.\n     *\n     * By default, the JSON response body contains two properties:\n     * - `statusCode`: this will be the value 421.\n     * - `message`: the string `'Bad Gateway'` by default; override this by supplying\n     * a string in the `objectOrError` parameter.\n     *\n     * If the parameter `objectOrError` is a string, the response body will contain an\n     * additional property, `error`, with a short description of the HTTP error. To override the\n     * entire JSON response body, pass an object instead. Nest will serialize the object\n     * and return it as the JSON response body.\n     *\n     * @param objectOrError string or object describing the error condition.\n     * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause\n     */\n    constructor(objectOrError, descriptionOrOptions = 'Misdirected') {\n        const { description, httpExceptionOptions } = http_exception_1.HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);\n        super(http_exception_1.HttpException.createBody(objectOrError, description, http_status_enum_1.HttpStatus.MISDIRECTED), http_status_enum_1.HttpStatus.MISDIRECTED, httpExceptionOptions);\n    }\n}\nexports.MisdirectedException = MisdirectedException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NotAcceptableException = void 0;\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_exception_1 = require(\"./http.exception\");\n/**\n * Defines an HTTP exception for *Not Acceptable* type errors.\n *\n * @see [Built-in HTTP exceptions](https://docs.nestjs.com/exception-filters#built-in-http-exceptions)\n *\n * @publicApi\n */\nclass NotAcceptableException extends http_exception_1.HttpException {\n    /**\n     * Instantiate a `NotAcceptableException` Exception.\n     *\n     * @example\n     * `throw new NotAcceptableException()`\n     *\n     * @usageNotes\n     * The HTTP response status code will be 406.\n     * - The `objectOrError` argument defines the JSON response body or the message string.\n     * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.\n     *\n     * By default, the JSON response body contains two properties:\n     * - `statusCode`: this will be the value 406.\n     * - `error`: the string `'Not Acceptable'` by default; override this by supplying\n     * a string in the `error` parameter.\n     *\n     * If the parameter `objectOrError` is a string, the response body will contain an\n     * additional property, `error`, with a short description of the HTTP error. To override the\n     * entire JSON response body, pass an object instead. Nest will serialize the object\n     * and return it as the JSON response body.\n     *\n     * @param objectOrError string or object describing the error condition.\n     * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause\n     */\n    constructor(objectOrError, descriptionOrOptions = 'Not Acceptable') {\n        const { description, httpExceptionOptions } = http_exception_1.HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);\n        super(http_exception_1.HttpException.createBody(objectOrError, description, http_status_enum_1.HttpStatus.NOT_ACCEPTABLE), http_status_enum_1.HttpStatus.NOT_ACCEPTABLE, httpExceptionOptions);\n    }\n}\nexports.NotAcceptableException = NotAcceptableException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NotFoundException = void 0;\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_exception_1 = require(\"./http.exception\");\n/**\n * Defines an HTTP exception for *Not Found* type errors.\n *\n * @see [Built-in HTTP exceptions](https://docs.nestjs.com/exception-filters#built-in-http-exceptions)\n *\n * @publicApi\n */\nclass NotFoundException extends http_exception_1.HttpException {\n    /**\n     * Instantiate a `NotFoundException` Exception.\n     *\n     * @example\n     * `throw new NotFoundException()`\n     *\n     * @usageNotes\n     * The HTTP response status code will be 404.\n     * - The `objectOrError` argument defines the JSON response body or the message string.\n     * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.\n     *\n     * By default, the JSON response body contains two properties:\n     * - `statusCode`: this will be the value 404.\n     * - `message`: the string `'Not Found'` by default; override this by supplying\n     * a string in the `objectOrError` parameter.\n     *\n     * If the parameter `objectOrError` is a string, the response body will contain an\n     * additional property, `error`, with a short description of the HTTP error. To override the\n     * entire JSON response body, pass an object instead. Nest will serialize the object\n     * and return it as the JSON response body.\n     *\n     * @param objectOrError string or object describing the error condition.\n     * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause\n     */\n    constructor(objectOrError, descriptionOrOptions = 'Not Found') {\n        const { description, httpExceptionOptions } = http_exception_1.HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);\n        super(http_exception_1.HttpException.createBody(objectOrError, description, http_status_enum_1.HttpStatus.NOT_FOUND), http_status_enum_1.HttpStatus.NOT_FOUND, httpExceptionOptions);\n    }\n}\nexports.NotFoundException = NotFoundException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NotImplementedException = void 0;\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_exception_1 = require(\"./http.exception\");\n/**\n * Defines an HTTP exception for *Not Implemented* type errors.\n *\n * @see [Built-in HTTP exceptions](https://docs.nestjs.com/exception-filters#built-in-http-exceptions)\n *\n * @publicApi\n */\nclass NotImplementedException extends http_exception_1.HttpException {\n    /**\n     * Instantiate a `NotImplementedException` Exception.\n     *\n     * @example\n     * `throw new NotImplementedException()`\n     *\n     * @usageNotes\n     * The HTTP response status code will be 501.\n     * - The `objectOrError` argument defines the JSON response body or the message string.\n     * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.\n     *\n     * By default, the JSON response body contains two properties:\n     * - `statusCode`: this will be the value 501.\n     * - `message`: the string `'Not Implemented'` by default; override this by supplying\n     * a string in the `objectOrError` parameter.\n     *\n     * If the parameter `objectOrError` is a string, the response body will contain an\n     * additional property, `error`, with a short description of the HTTP error. To override the\n     * entire JSON response body, pass an object instead. Nest will serialize the object\n     * and return it as the JSON response body.\n     *\n     * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause\n     * @param error a short description of the HTTP error.\n     */\n    constructor(objectOrError, descriptionOrOptions = 'Not Implemented') {\n        const { description, httpExceptionOptions } = http_exception_1.HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);\n        super(http_exception_1.HttpException.createBody(objectOrError, description, http_status_enum_1.HttpStatus.NOT_IMPLEMENTED), http_status_enum_1.HttpStatus.NOT_IMPLEMENTED, httpExceptionOptions);\n    }\n}\nexports.NotImplementedException = NotImplementedException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PayloadTooLargeException = void 0;\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_exception_1 = require(\"./http.exception\");\n/**\n * Defines an HTTP exception for *Payload Too Large* type errors.\n *\n * @see [Built-in HTTP exceptions](https://docs.nestjs.com/exception-filters#built-in-http-exceptions)\n *\n * @publicApi\n */\nclass PayloadTooLargeException extends http_exception_1.HttpException {\n    /**\n     * Instantiate a `PayloadTooLargeException` Exception.\n     *\n     * @example\n     * `throw new PayloadTooLargeException()`\n     *\n     * @usageNotes\n     * The HTTP response status code will be 413.\n     * - The `objectOrError` argument defines the JSON response body or the message string.\n     * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.\n     *\n     * By default, the JSON response body contains two properties:\n     * - `statusCode`: this will be the value 413.\n     * - `message`: the string `'Payload Too Large'` by default; override this by supplying\n     * a string in the `objectOrError` parameter.\n     *\n     * If the parameter `objectOrError` is a string, the response body will contain an\n     * additional property, `error`, with a short description of the HTTP error. To override the\n     * entire JSON response body, pass an object instead. Nest will serialize the object\n     * and return it as the JSON response body.\n     *\n     * @param objectOrError string or object describing the error condition.\n     * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause\n     */\n    constructor(objectOrError, descriptionOrOptions = 'Payload Too Large') {\n        const { description, httpExceptionOptions } = http_exception_1.HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);\n        super(http_exception_1.HttpException.createBody(objectOrError, description, http_status_enum_1.HttpStatus.PAYLOAD_TOO_LARGE), http_status_enum_1.HttpStatus.PAYLOAD_TOO_LARGE, httpExceptionOptions);\n    }\n}\nexports.PayloadTooLargeException = PayloadTooLargeException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PreconditionFailedException = void 0;\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_exception_1 = require(\"./http.exception\");\n/**\n * Defines an HTTP exception for *Precondition Failed* type errors.\n *\n * @see [Built-in HTTP exceptions](https://docs.nestjs.com/exception-filters#built-in-http-exceptions)\n *\n * @publicApi\n */\nclass PreconditionFailedException extends http_exception_1.HttpException {\n    /**\n     * Instantiate a `PreconditionFailedException` Exception.\n     *\n     * @example\n     * `throw new PreconditionFailedException()`\n     *\n     * @usageNotes\n     * The HTTP response status code will be 412.\n     * - The `objectOrError` argument defines the JSON response body or the message string.\n     * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.\n     *\n     * By default, the JSON response body contains two properties:\n     * - `statusCode`: this will be the value 412.\n     * - `message`: the string `'Precondition Failed'` by default; override this by supplying\n     * a string in the `objectOrError` parameter.\n     *\n     * If the parameter `objectOrError` is a string, the response body will contain an\n     * additional property, `error`, with a short description of the HTTP error. To override the\n     * entire JSON response body, pass an object instead. Nest will serialize the object\n     * and return it as the JSON response body.\n     *\n     * @param objectOrError string or object describing the error condition.\n     * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause\n     */\n    constructor(objectOrError, descriptionOrOptions = 'Precondition Failed') {\n        const { description, httpExceptionOptions } = http_exception_1.HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);\n        super(http_exception_1.HttpException.createBody(objectOrError, description, http_status_enum_1.HttpStatus.PRECONDITION_FAILED), http_status_enum_1.HttpStatus.PRECONDITION_FAILED, httpExceptionOptions);\n    }\n}\nexports.PreconditionFailedException = PreconditionFailedException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestTimeoutException = void 0;\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_exception_1 = require(\"./http.exception\");\n/**\n * Defines an HTTP exception for *Request Timeout* type errors.\n *\n * @see [Built-in HTTP exceptions](https://docs.nestjs.com/exception-filters#built-in-http-exceptions)\n *\n * @publicApi\n */\nclass RequestTimeoutException extends http_exception_1.HttpException {\n    /**\n     * Instantiate a `RequestTimeoutException` Exception.\n     *\n     * @example\n     * `throw new RequestTimeoutException()`\n     *\n     * @usageNotes\n     * The HTTP response status code will be 408.\n     * - The `objectOrError` argument defines the JSON response body or the message string.\n     * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.\n     *\n     * By default, the JSON response body contains two properties:\n     * - `statusCode`: this will be the value 408.\n     * - `message`: the string `'Request Timeout'` by default; override this by supplying\n     * a string in the `objectOrError` parameter.\n     *\n     * If the parameter `objectOrError` is a string, the response body will contain an\n     * additional property, `error`, with a short description of the HTTP error. To override the\n     * entire JSON response body, pass an object instead. Nest will serialize the object\n     * and return it as the JSON response body.\n     *\n     * @param objectOrError string or object describing the error condition.\n     * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause\n     */\n    constructor(objectOrError, descriptionOrOptions = 'Request Timeout') {\n        const { description, httpExceptionOptions } = http_exception_1.HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);\n        super(http_exception_1.HttpException.createBody(objectOrError, description, http_status_enum_1.HttpStatus.REQUEST_TIMEOUT), http_status_enum_1.HttpStatus.REQUEST_TIMEOUT, httpExceptionOptions);\n    }\n}\nexports.RequestTimeoutException = RequestTimeoutException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ServiceUnavailableException = void 0;\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_exception_1 = require(\"./http.exception\");\n/**\n * Defines an HTTP exception for *Service Unavailable* type errors.\n *\n * @see [Built-in HTTP exceptions](https://docs.nestjs.com/exception-filters#built-in-http-exceptions)\n *\n * @publicApi\n */\nclass ServiceUnavailableException extends http_exception_1.HttpException {\n    /**\n     * Instantiate a `ServiceUnavailableException` Exception.\n     *\n     * @example\n     * `throw new ServiceUnavailableException()`\n     *\n     * @usageNotes\n     * The HTTP response status code will be 503.\n     * - The `objectOrError` argument defines the JSON response body or the message string.\n     * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.\n     *\n     * By default, the JSON response body contains two properties:\n     * - `statusCode`: this will be the value 503.\n     * - `message`: the string `'Service Unavailable'` by default; override this by supplying\n     * a string in the `objectOrError` parameter.\n     *\n     * If the parameter `objectOrError` is a string, the response body will contain an\n     * additional property, `error`, with a short description of the HTTP error. To override the\n     * entire JSON response body, pass an object instead. Nest will serialize the object\n     * and return it as the JSON response body.\n     *\n     * @param objectOrError string or object describing the error condition.\n     * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause\n     */\n    constructor(objectOrError, descriptionOrOptions = 'Service Unavailable') {\n        const { description, httpExceptionOptions } = http_exception_1.HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);\n        super(http_exception_1.HttpException.createBody(objectOrError, description, http_status_enum_1.HttpStatus.SERVICE_UNAVAILABLE), http_status_enum_1.HttpStatus.SERVICE_UNAVAILABLE, httpExceptionOptions);\n    }\n}\nexports.ServiceUnavailableException = ServiceUnavailableException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UnauthorizedException = void 0;\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_exception_1 = require(\"./http.exception\");\n/**\n * Defines an HTTP exception for *Unauthorized* type errors.\n *\n * @see [Built-in HTTP exceptions](https://docs.nestjs.com/exception-filters#built-in-http-exceptions)\n *\n * @publicApi\n */\nclass UnauthorizedException extends http_exception_1.HttpException {\n    /**\n     * Instantiate an `UnauthorizedException` Exception.\n     *\n     * @example\n     * `throw new UnauthorizedException()`\n     *\n     * @usageNotes\n     * The HTTP response status code will be 401.\n     * - The `objectOrError` argument defines the JSON response body or the message string.\n     * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.\n     *\n     * By default, the JSON response body contains two properties:\n     * - `statusCode`: this will be the value 401.\n     * - `message`: the string `'Unauthorized'` by default; override this by supplying\n     * a string in the `objectOrError` parameter.\n     *\n     * If the parameter `objectOrError` is a string, the response body will contain an\n     * additional property, `error`, with a short description of the HTTP error. To override the\n     * entire JSON response body, pass an object instead. Nest will serialize the object\n     * and return it as the JSON response body.\n     *\n     * @param objectOrError string or object describing the error condition.\n     * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause\n     */\n    constructor(objectOrError, descriptionOrOptions = 'Unauthorized') {\n        const { description, httpExceptionOptions } = http_exception_1.HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);\n        super(http_exception_1.HttpException.createBody(objectOrError, description, http_status_enum_1.HttpStatus.UNAUTHORIZED), http_status_enum_1.HttpStatus.UNAUTHORIZED, httpExceptionOptions);\n    }\n}\nexports.UnauthorizedException = UnauthorizedException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UnprocessableEntityException = void 0;\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_exception_1 = require(\"./http.exception\");\n/**\n * Defines an HTTP exception for *Unprocessable Entity* type errors.\n *\n * @see [Built-in HTTP exceptions](https://docs.nestjs.com/exception-filters#built-in-http-exceptions)\n *\n * @publicApi\n */\nclass UnprocessableEntityException extends http_exception_1.HttpException {\n    /**\n     * Instantiate an `UnprocessableEntityException` Exception.\n     *\n     * @example\n     * `throw new UnprocessableEntityException()`\n     *\n     * @usageNotes\n     * The HTTP response status code will be 422.\n     * - The `objectOrError` argument defines the JSON response body or the message string.\n     * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.\n     *\n     * By default, the JSON response body contains two properties:\n     * - `statusCode`: this will be the value 422.\n     * - `message`: the string `'Unprocessable Entity'` by default; override this by supplying\n     * a string in the `objectOrError` parameter.\n     *\n     * If the parameter `objectOrError` is a string, the response body will contain an\n     * additional property, `error`, with a short description of the HTTP error. To override the\n     * entire JSON response body, pass an object instead. Nest will serialize the object\n     * and return it as the JSON response body.\n     *\n     * @param objectOrError string or object describing the error condition.\n     * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause\n     */\n    constructor(objectOrError, descriptionOrOptions = 'Unprocessable Entity') {\n        const { description, httpExceptionOptions } = http_exception_1.HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);\n        super(http_exception_1.HttpException.createBody(objectOrError, description, http_status_enum_1.HttpStatus.UNPROCESSABLE_ENTITY), http_status_enum_1.HttpStatus.UNPROCESSABLE_ENTITY, httpExceptionOptions);\n    }\n}\nexports.UnprocessableEntityException = UnprocessableEntityException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UnsupportedMediaTypeException = void 0;\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_exception_1 = require(\"./http.exception\");\n/**\n * Defines an HTTP exception for *Unsupported Media Type* type errors.\n *\n * @see [Built-in HTTP exceptions](https://docs.nestjs.com/exception-filters#built-in-http-exceptions)\n *\n * @publicApi\n */\nclass UnsupportedMediaTypeException extends http_exception_1.HttpException {\n    /**\n     * Instantiate an `UnsupportedMediaTypeException` Exception.\n     *\n     * @example\n     * `throw new UnsupportedMediaTypeException()`\n     *\n     * @usageNotes\n     * The HTTP response status code will be 415.\n     * - The `objectOrError` argument defines the JSON response body or the message string.\n     * - The `descriptionOrOptions` argument contains either a short description of the HTTP error or an options object used to provide an underlying error cause.\n     *\n     * By default, the JSON response body contains two properties:\n     * - `statusCode`: this will be the value 415.\n     * - `message`: the string `'Unsupported Media Type'` by default; override this by supplying\n     * a string in the `objectOrError` parameter.\n     *\n     * If the parameter `objectOrError` is a string, the response body will contain an\n     * additional property, `error`, with a short description of the HTTP error. To override the\n     * entire JSON response body, pass an object instead. Nest will serialize the object\n     * and return it as the JSON response body.\n     *\n     * @param objectOrError string or object describing the error condition.\n     * @param descriptionOrOptions either a short description of the HTTP error or an options object used to provide an underlying error cause\n     */\n    constructor(objectOrError, descriptionOrOptions = 'Unsupported Media Type') {\n        const { description, httpExceptionOptions } = http_exception_1.HttpException.extractDescriptionAndOptionsFrom(descriptionOrOptions);\n        super(http_exception_1.HttpException.createBody(objectOrError, description, http_status_enum_1.HttpStatus.UNSUPPORTED_MEDIA_TYPE), http_status_enum_1.HttpStatus.UNSUPPORTED_MEDIA_TYPE, httpExceptionOptions);\n    }\n}\nexports.UnsupportedMediaTypeException = UnsupportedMediaTypeException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./bad-gateway.exception\"), exports);\ntslib_1.__exportStar(require(\"./bad-request.exception\"), exports);\ntslib_1.__exportStar(require(\"./conflict.exception\"), exports);\ntslib_1.__exportStar(require(\"./forbidden.exception\"), exports);\ntslib_1.__exportStar(require(\"./gateway-timeout.exception\"), exports);\ntslib_1.__exportStar(require(\"./gone.exception\"), exports);\ntslib_1.__exportStar(require(\"./http-version-not-supported.exception\"), exports);\ntslib_1.__exportStar(require(\"./http.exception\"), exports);\ntslib_1.__exportStar(require(\"./im-a-teapot.exception\"), exports);\ntslib_1.__exportStar(require(\"./internal-server-error.exception\"), exports);\ntslib_1.__exportStar(require(\"./intrinsic.exception\"), exports);\ntslib_1.__exportStar(require(\"./method-not-allowed.exception\"), exports);\ntslib_1.__exportStar(require(\"./misdirected.exception\"), exports);\ntslib_1.__exportStar(require(\"./not-acceptable.exception\"), exports);\ntslib_1.__exportStar(require(\"./not-found.exception\"), exports);\ntslib_1.__exportStar(require(\"./not-implemented.exception\"), exports);\ntslib_1.__exportStar(require(\"./payload-too-large.exception\"), exports);\ntslib_1.__exportStar(require(\"./precondition-failed.exception\"), exports);\ntslib_1.__exportStar(require(\"./request-timeout.exception\"), exports);\ntslib_1.__exportStar(require(\"./service-unavailable.exception\"), exports);\ntslib_1.__exportStar(require(\"./unauthorized.exception\"), exports);\ntslib_1.__exportStar(require(\"./unprocessable-entity.exception\"), exports);\ntslib_1.__exportStar(require(\"./unsupported-media-type.exception\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.yellow = exports.clc = exports.isColorAllowed = void 0;\nconst isColorAllowed = () => !process.env.NO_COLOR;\nexports.isColorAllowed = isColorAllowed;\nconst colorIfAllowed = (colorFn) => (text) => (0, exports.isColorAllowed)() ? colorFn(text) : text;\nexports.clc = {\n    bold: colorIfAllowed((text) => `\\x1B[1m${text}\\x1B[0m`),\n    green: colorIfAllowed((text) => `\\x1B[32m${text}\\x1B[39m`),\n    yellow: colorIfAllowed((text) => `\\x1B[33m${text}\\x1B[39m`),\n    red: colorIfAllowed((text) => `\\x1B[31m${text}\\x1B[39m`),\n    magentaBright: colorIfAllowed((text) => `\\x1B[95m${text}\\x1B[39m`),\n    cyanBright: colorIfAllowed((text) => `\\x1B[96m${text}\\x1B[39m`),\n};\nexports.yellow = colorIfAllowed((text) => `\\x1B[38;5;3m${text}\\x1B[39m`);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isLogLevelEnabled = isLogLevelEnabled;\nconst LOG_LEVEL_VALUES = {\n    verbose: 0,\n    debug: 1,\n    log: 2,\n    warn: 3,\n    error: 4,\n    fatal: 5,\n};\n/**\n * Checks if target level is enabled.\n * @param targetLevel target level\n * @param logLevels array of enabled log levels\n */\nfunction isLogLevelEnabled(targetLevel, logLevels) {\n    if (!logLevels || (Array.isArray(logLevels) && logLevels?.length === 0)) {\n        return false;\n    }\n    if (logLevels.includes(targetLevel)) {\n        return true;\n    }\n    let highestLogLevelValue = -Infinity;\n    for (const level of logLevels) {\n        const v = LOG_LEVEL_VALUES[level];\n        if (v > highestLogLevelValue)\n            highestLogLevelValue = v;\n    }\n    const targetLevelValue = LOG_LEVEL_VALUES[targetLevel];\n    return targetLevelValue >= highestLogLevelValue;\n}\n","\"use strict\";\nvar ConsoleLogger_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsoleLogger = void 0;\nconst tslib_1 = require(\"tslib\");\nconst util_1 = require(\"util\");\nconst core_1 = require(\"../decorators/core\");\nconst cli_colors_util_1 = require(\"../utils/cli-colors.util\");\nconst shared_utils_1 = require(\"../utils/shared.utils\");\nconst is_log_level_enabled_util_1 = require(\"./utils/is-log-level-enabled.util\");\nconst DEFAULT_DEPTH = 5;\nconst DEFAULT_LOG_LEVELS = [\n    'log',\n    'error',\n    'warn',\n    'debug',\n    'verbose',\n    'fatal',\n];\nconst dateTimeFormatter = new Intl.DateTimeFormat(undefined, {\n    year: 'numeric',\n    hour: 'numeric',\n    minute: 'numeric',\n    second: 'numeric',\n    day: '2-digit',\n    month: '2-digit',\n});\n/**\n * @publicApi\n */\nlet ConsoleLogger = ConsoleLogger_1 = class ConsoleLogger {\n    constructor(contextOrOptions, options) {\n        // eslint-disable-next-line prefer-const\n        let [context, opts] = (0, shared_utils_1.isString)(contextOrOptions)\n            ? [contextOrOptions, options]\n            : options\n                ? [undefined, options]\n                : [contextOrOptions?.context, contextOrOptions];\n        opts = opts ?? {};\n        opts.logLevels ??= DEFAULT_LOG_LEVELS;\n        opts.colors ??= opts.colors ?? (opts.json ? false : (0, cli_colors_util_1.isColorAllowed)());\n        opts.prefix ??= 'Nest';\n        this.options = opts;\n        this.inspectOptions = this.getInspectOptions();\n        if (context) {\n            this.context = context;\n            this.originalContext = context;\n        }\n    }\n    log(message, ...optionalParams) {\n        if (!this.isLevelEnabled('log')) {\n            return;\n        }\n        const { messages, context } = this.getContextAndMessagesToPrint([\n            message,\n            ...optionalParams,\n        ]);\n        this.printMessages(messages, context, 'log');\n    }\n    error(message, ...optionalParams) {\n        if (!this.isLevelEnabled('error')) {\n            return;\n        }\n        const { messages, context, stack } = this.getContextAndStackAndMessagesToPrint([message, ...optionalParams]);\n        this.printMessages(messages, context, 'error', 'stderr', stack);\n        this.printStackTrace(stack);\n    }\n    warn(message, ...optionalParams) {\n        if (!this.isLevelEnabled('warn')) {\n            return;\n        }\n        const { messages, context } = this.getContextAndMessagesToPrint([\n            message,\n            ...optionalParams,\n        ]);\n        this.printMessages(messages, context, 'warn');\n    }\n    debug(message, ...optionalParams) {\n        if (!this.isLevelEnabled('debug')) {\n            return;\n        }\n        const { messages, context } = this.getContextAndMessagesToPrint([\n            message,\n            ...optionalParams,\n        ]);\n        this.printMessages(messages, context, 'debug');\n    }\n    verbose(message, ...optionalParams) {\n        if (!this.isLevelEnabled('verbose')) {\n            return;\n        }\n        const { messages, context } = this.getContextAndMessagesToPrint([\n            message,\n            ...optionalParams,\n        ]);\n        this.printMessages(messages, context, 'verbose');\n    }\n    fatal(message, ...optionalParams) {\n        if (!this.isLevelEnabled('fatal')) {\n            return;\n        }\n        const { messages, context } = this.getContextAndMessagesToPrint([\n            message,\n            ...optionalParams,\n        ]);\n        this.printMessages(messages, context, 'fatal');\n    }\n    /**\n     * Set log levels\n     * @param levels log levels\n     */\n    setLogLevels(levels) {\n        if (!this.options) {\n            this.options = {};\n        }\n        this.options.logLevels = levels;\n    }\n    /**\n     * Set logger context\n     * @param context context\n     */\n    setContext(context) {\n        this.context = context;\n    }\n    /**\n     * Resets the logger context to the value that was passed in the constructor.\n     */\n    resetContext() {\n        this.context = this.originalContext;\n    }\n    isLevelEnabled(level) {\n        const logLevels = this.options?.logLevels;\n        return (0, is_log_level_enabled_util_1.isLogLevelEnabled)(level, logLevels);\n    }\n    getTimestamp() {\n        return dateTimeFormatter.format(Date.now());\n    }\n    printMessages(messages, context = '', logLevel = 'log', writeStreamType, errorStack) {\n        messages.forEach(message => {\n            if (this.options.json) {\n                this.printAsJson(message, {\n                    context,\n                    logLevel,\n                    writeStreamType,\n                    errorStack,\n                });\n                return;\n            }\n            const pidMessage = this.formatPid(process.pid);\n            const contextMessage = this.formatContext(context);\n            const timestampDiff = this.updateAndGetTimestampDiff();\n            const formattedLogLevel = logLevel.toUpperCase().padStart(7, ' ');\n            const formattedMessage = this.formatMessage(logLevel, message, pidMessage, formattedLogLevel, contextMessage, timestampDiff);\n            if (this.options.forceConsole) {\n                if (writeStreamType === 'stderr') {\n                    console.error(formattedMessage.trim());\n                }\n                else {\n                    console.log(formattedMessage.trim());\n                }\n            }\n            else {\n                process[writeStreamType ?? 'stdout'].write(formattedMessage);\n            }\n        });\n    }\n    printAsJson(message, options) {\n        const logObject = this.getJsonLogObject(message, options);\n        const formattedMessage = !this.options.colors && this.inspectOptions.compact === true\n            ? JSON.stringify(logObject, this.stringifyReplacer)\n            : (0, util_1.inspect)(logObject, this.inspectOptions);\n        if (this.options.forceConsole) {\n            if (options.writeStreamType === 'stderr') {\n                console.error(formattedMessage);\n            }\n            else {\n                console.log(formattedMessage);\n            }\n        }\n        else {\n            process[options.writeStreamType ?? 'stdout'].write(`${formattedMessage}\\n`);\n        }\n    }\n    getJsonLogObject(message, options) {\n        const logObject = {\n            level: options.logLevel,\n            pid: process.pid,\n            timestamp: Date.now(),\n            message,\n        };\n        if (options.context) {\n            logObject.context = options.context;\n        }\n        if (options.errorStack) {\n            logObject.stack = options.errorStack;\n        }\n        return logObject;\n    }\n    formatPid(pid) {\n        return `[${this.options.prefix}] ${pid}  - `;\n    }\n    formatContext(context) {\n        if (!context) {\n            return '';\n        }\n        context = `[${context}] `;\n        return this.options.colors ? (0, cli_colors_util_1.yellow)(context) : context;\n    }\n    formatMessage(logLevel, message, pidMessage, formattedLogLevel, contextMessage, timestampDiff) {\n        const output = this.stringifyMessage(message, logLevel);\n        pidMessage = this.colorize(pidMessage, logLevel);\n        formattedLogLevel = this.colorize(formattedLogLevel, logLevel);\n        return `${pidMessage}${this.getTimestamp()} ${formattedLogLevel} ${contextMessage}${output}${timestampDiff}\\n`;\n    }\n    stringifyMessage(message, logLevel) {\n        if ((0, shared_utils_1.isFunction)(message)) {\n            const messageAsStr = Function.prototype.toString.call(message);\n            const isClass = messageAsStr.startsWith('class ');\n            if (isClass) {\n                // If the message is a class, we will display the class name.\n                return this.stringifyMessage(message.name, logLevel);\n            }\n            // If the message is a non-class function, call it and re-resolve its value.\n            return this.stringifyMessage(message(), logLevel);\n        }\n        if (typeof message === 'string') {\n            return this.colorize(message, logLevel);\n        }\n        const outputText = (0, util_1.inspect)(message, this.inspectOptions);\n        if ((0, shared_utils_1.isPlainObject)(message)) {\n            return `Object(${Object.keys(message).length}) ${outputText}`;\n        }\n        if (Array.isArray(message)) {\n            return `Array(${message.length}) ${outputText}`;\n        }\n        return outputText;\n    }\n    colorize(message, logLevel) {\n        if (!this.options.colors || this.options.json) {\n            return message;\n        }\n        const color = this.getColorByLogLevel(logLevel);\n        return color(message);\n    }\n    printStackTrace(stack) {\n        if (!stack || this.options.json) {\n            return;\n        }\n        if (this.options.forceConsole) {\n            console.error(stack);\n        }\n        else {\n            process.stderr.write(`${stack}\\n`);\n        }\n    }\n    updateAndGetTimestampDiff() {\n        const includeTimestamp = ConsoleLogger_1.lastTimestampAt && this.options?.timestamp;\n        const result = includeTimestamp\n            ? this.formatTimestampDiff(Date.now() - ConsoleLogger_1.lastTimestampAt)\n            : '';\n        ConsoleLogger_1.lastTimestampAt = Date.now();\n        return result;\n    }\n    formatTimestampDiff(timestampDiff) {\n        const formattedDiff = ` +${timestampDiff}ms`;\n        return this.options.colors ? (0, cli_colors_util_1.yellow)(formattedDiff) : formattedDiff;\n    }\n    getInspectOptions() {\n        let breakLength = this.options.breakLength;\n        if (typeof breakLength === 'undefined') {\n            breakLength = this.options.colors\n                ? this.options.compact\n                    ? Infinity\n                    : undefined\n                : this.options.compact === false\n                    ? undefined\n                    : Infinity; // default breakLength to Infinity if inline is not set and colors is false\n        }\n        const inspectOptions = {\n            depth: this.options.depth ?? DEFAULT_DEPTH,\n            sorted: this.options.sorted,\n            showHidden: this.options.showHidden,\n            compact: this.options.compact ?? (this.options.json ? true : false),\n            colors: this.options.colors,\n            breakLength,\n        };\n        if (this.options.maxArrayLength) {\n            inspectOptions.maxArrayLength = this.options.maxArrayLength;\n        }\n        if (this.options.maxStringLength) {\n            inspectOptions.maxStringLength = this.options.maxStringLength;\n        }\n        return inspectOptions;\n    }\n    stringifyReplacer(key, value) {\n        // Mimic util.inspect behavior for JSON logger with compact on and colors off\n        if (typeof value === 'bigint') {\n            return value.toString();\n        }\n        if (typeof value === 'symbol') {\n            return value.toString();\n        }\n        if (value instanceof Map ||\n            value instanceof Set ||\n            value instanceof Error) {\n            return `${(0, util_1.inspect)(value, this.inspectOptions)}`;\n        }\n        return value;\n    }\n    getContextAndMessagesToPrint(args) {\n        if (args?.length <= 1) {\n            return { messages: args, context: this.context };\n        }\n        const lastElement = args[args.length - 1];\n        const isContext = (0, shared_utils_1.isString)(lastElement);\n        if (!isContext) {\n            return { messages: args, context: this.context };\n        }\n        return {\n            context: lastElement,\n            messages: args.slice(0, args.length - 1),\n        };\n    }\n    getContextAndStackAndMessagesToPrint(args) {\n        if (args.length === 2) {\n            return this.isStackFormat(args[1])\n                ? {\n                    messages: [args[0]],\n                    stack: args[1],\n                    context: this.context,\n                }\n                : {\n                    messages: [args[0]],\n                    context: args[1],\n                };\n        }\n        const { messages, context } = this.getContextAndMessagesToPrint(args);\n        if (messages?.length <= 1) {\n            return { messages, context };\n        }\n        const lastElement = messages[messages.length - 1];\n        const isStack = (0, shared_utils_1.isString)(lastElement);\n        // https://github.com/nestjs/nest/issues/11074#issuecomment-1421680060\n        if (!isStack && !(0, shared_utils_1.isUndefined)(lastElement)) {\n            return { messages, context };\n        }\n        return {\n            stack: lastElement,\n            messages: messages.slice(0, messages.length - 1),\n            context,\n        };\n    }\n    isStackFormat(stack) {\n        if (!(0, shared_utils_1.isString)(stack) && !(0, shared_utils_1.isUndefined)(stack)) {\n            return false;\n        }\n        return /^(.)+\\n\\s+at .+:\\d+:\\d+/.test(stack);\n    }\n    getColorByLogLevel(level) {\n        switch (level) {\n            case 'debug':\n                return cli_colors_util_1.clc.magentaBright;\n            case 'warn':\n                return cli_colors_util_1.clc.yellow;\n            case 'error':\n                return cli_colors_util_1.clc.red;\n            case 'verbose':\n                return cli_colors_util_1.clc.cyanBright;\n            case 'fatal':\n                return cli_colors_util_1.clc.bold;\n            default:\n                return cli_colors_util_1.clc.green;\n        }\n    }\n};\nexports.ConsoleLogger = ConsoleLogger;\nexports.ConsoleLogger = ConsoleLogger = ConsoleLogger_1 = tslib_1.__decorate([\n    (0, core_1.Injectable)(),\n    tslib_1.__param(0, (0, core_1.Optional)()),\n    tslib_1.__param(1, (0, core_1.Optional)()),\n    tslib_1.__metadata(\"design:paramtypes\", [Object, Object])\n], ConsoleLogger);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isLogLevel = isLogLevel;\nconst logger_service_1 = require(\"../logger.service\");\n/**\n * @publicApi\n */\nfunction isLogLevel(maybeLogLevel) {\n    return logger_service_1.LOG_LEVELS.includes(maybeLogLevel);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.filterLogLevels = filterLogLevels;\nconst logger_service_1 = require(\"../logger.service\");\nconst is_log_level_util_1 = require(\"./is-log-level.util\");\n/**\n * @publicApi\n */\nfunction filterLogLevels(parseableString = '') {\n    const sanitizedString = parseableString.replaceAll(' ', '').toLowerCase();\n    if (sanitizedString[0] === '>') {\n        const orEqual = sanitizedString[1] === '=';\n        const logLevelIndex = logger_service_1.LOG_LEVELS.indexOf(sanitizedString.substring(orEqual ? 2 : 1));\n        if (logLevelIndex === -1) {\n            throw new Error(`parse error (unknown log level): ${sanitizedString}`);\n        }\n        return logger_service_1.LOG_LEVELS.slice(orEqual ? logLevelIndex : logLevelIndex + 1);\n    }\n    else if (sanitizedString.includes(',')) {\n        return sanitizedString.split(',').filter(is_log_level_util_1.isLogLevel);\n    }\n    return (0, is_log_level_util_1.isLogLevel)(sanitizedString) ? [sanitizedString] : logger_service_1.LOG_LEVELS;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./filter-log-levels.util\"), exports);\ntslib_1.__exportStar(require(\"./is-log-level-enabled.util\"), exports);\ntslib_1.__exportStar(require(\"./is-log-level.util\"), exports);\n","\"use strict\";\nvar Logger_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Logger = exports.LOG_LEVELS = void 0;\nconst tslib_1 = require(\"tslib\");\nconst core_1 = require(\"../decorators/core\");\nconst shared_utils_1 = require(\"../utils/shared.utils\");\nconst console_logger_service_1 = require(\"./console-logger.service\");\nconst utils_1 = require(\"./utils\");\nexports.LOG_LEVELS = [\n    'verbose',\n    'debug',\n    'log',\n    'warn',\n    'error',\n    'fatal',\n];\nconst DEFAULT_LOGGER = new console_logger_service_1.ConsoleLogger();\nconst dateTimeFormatter = new Intl.DateTimeFormat(undefined, {\n    year: 'numeric',\n    hour: 'numeric',\n    minute: 'numeric',\n    second: 'numeric',\n    day: '2-digit',\n    month: '2-digit',\n});\n/**\n * @publicApi\n */\nlet Logger = Logger_1 = class Logger {\n    constructor(context, options = {}) {\n        this.context = context;\n        this.options = options;\n    }\n    get localInstance() {\n        if (Logger_1.staticInstanceRef === DEFAULT_LOGGER) {\n            return this.registerLocalInstanceRef();\n        }\n        else if (Logger_1.staticInstanceRef instanceof Logger_1) {\n            const prototype = Object.getPrototypeOf(Logger_1.staticInstanceRef);\n            if (prototype.constructor === Logger_1) {\n                return this.registerLocalInstanceRef();\n            }\n        }\n        return Logger_1.staticInstanceRef;\n    }\n    error(message, ...optionalParams) {\n        optionalParams = this.context\n            ? (optionalParams.length ? optionalParams : [undefined]).concat(this.context)\n            : optionalParams;\n        this.localInstance?.error(message, ...optionalParams);\n    }\n    log(message, ...optionalParams) {\n        optionalParams = this.context\n            ? optionalParams.concat(this.context)\n            : optionalParams;\n        this.localInstance?.log(message, ...optionalParams);\n    }\n    warn(message, ...optionalParams) {\n        optionalParams = this.context\n            ? optionalParams.concat(this.context)\n            : optionalParams;\n        this.localInstance?.warn(message, ...optionalParams);\n    }\n    debug(message, ...optionalParams) {\n        optionalParams = this.context\n            ? optionalParams.concat(this.context)\n            : optionalParams;\n        this.localInstance?.debug?.(message, ...optionalParams);\n    }\n    verbose(message, ...optionalParams) {\n        optionalParams = this.context\n            ? optionalParams.concat(this.context)\n            : optionalParams;\n        this.localInstance?.verbose?.(message, ...optionalParams);\n    }\n    fatal(message, ...optionalParams) {\n        optionalParams = this.context\n            ? optionalParams.concat(this.context)\n            : optionalParams;\n        this.localInstance?.fatal?.(message, ...optionalParams);\n    }\n    static error(message, ...optionalParams) {\n        this.staticInstanceRef?.error(message, ...optionalParams);\n    }\n    static log(message, ...optionalParams) {\n        this.staticInstanceRef?.log(message, ...optionalParams);\n    }\n    static warn(message, ...optionalParams) {\n        this.staticInstanceRef?.warn(message, ...optionalParams);\n    }\n    static debug(message, ...optionalParams) {\n        this.staticInstanceRef?.debug?.(message, ...optionalParams);\n    }\n    static verbose(message, ...optionalParams) {\n        this.staticInstanceRef?.verbose?.(message, ...optionalParams);\n    }\n    static fatal(message, ...optionalParams) {\n        this.staticInstanceRef?.fatal?.(message, ...optionalParams);\n    }\n    /**\n     * Print buffered logs and detach buffer.\n     */\n    static flush() {\n        this.isBufferAttached = false;\n        this.logBuffer.forEach(item => item.methodRef(...item.arguments));\n        this.logBuffer = [];\n    }\n    /**\n     * Attach buffer.\n     * Turns on initialization logs buffering.\n     */\n    static attachBuffer() {\n        this.isBufferAttached = true;\n    }\n    /**\n     * Detach buffer.\n     * Turns off initialization logs buffering.\n     */\n    static detachBuffer() {\n        this.isBufferAttached = false;\n    }\n    static getTimestamp() {\n        return dateTimeFormatter.format(Date.now());\n    }\n    static overrideLogger(logger) {\n        if (Array.isArray(logger)) {\n            Logger_1.logLevels = logger;\n            return this.staticInstanceRef?.setLogLevels?.(logger);\n        }\n        if ((0, shared_utils_1.isObject)(logger)) {\n            if (logger instanceof Logger_1 && logger.constructor !== Logger_1) {\n                const errorMessage = `Using the \"extends Logger\" instruction is not allowed in Nest v9. Please, use \"extends ConsoleLogger\" instead.`;\n                this.staticInstanceRef?.error(errorMessage);\n                throw new Error(errorMessage);\n            }\n            this.staticInstanceRef = logger;\n        }\n        else {\n            this.staticInstanceRef = undefined;\n        }\n    }\n    static isLevelEnabled(level) {\n        const logLevels = Logger_1.logLevels;\n        return (0, utils_1.isLogLevelEnabled)(level, logLevels);\n    }\n    registerLocalInstanceRef() {\n        if (this.localInstanceRef) {\n            return this.localInstanceRef;\n        }\n        this.localInstanceRef = new console_logger_service_1.ConsoleLogger(this.context, {\n            timestamp: this.options?.timestamp,\n            logLevels: Logger_1.logLevels,\n        });\n        return this.localInstanceRef;\n    }\n};\nexports.Logger = Logger;\nLogger.logBuffer = new Array();\nLogger.staticInstanceRef = DEFAULT_LOGGER;\nLogger.WrapBuffer = (target, propertyKey, descriptor) => {\n    const originalFn = descriptor.value;\n    descriptor.value = function (...args) {\n        if (Logger_1.isBufferAttached) {\n            Logger_1.logBuffer.push({\n                methodRef: originalFn.bind(this),\n                arguments: args,\n            });\n            return;\n        }\n        return originalFn.call(this, ...args);\n    };\n};\ntslib_1.__decorate([\n    Logger.WrapBuffer,\n    tslib_1.__metadata(\"design:type\", Function),\n    tslib_1.__metadata(\"design:paramtypes\", [Object, Object]),\n    tslib_1.__metadata(\"design:returntype\", void 0)\n], Logger.prototype, \"error\", null);\ntslib_1.__decorate([\n    Logger.WrapBuffer,\n    tslib_1.__metadata(\"design:type\", Function),\n    tslib_1.__metadata(\"design:paramtypes\", [Object, Object]),\n    tslib_1.__metadata(\"design:returntype\", void 0)\n], Logger.prototype, \"log\", null);\ntslib_1.__decorate([\n    Logger.WrapBuffer,\n    tslib_1.__metadata(\"design:type\", Function),\n    tslib_1.__metadata(\"design:paramtypes\", [Object, Object]),\n    tslib_1.__metadata(\"design:returntype\", void 0)\n], Logger.prototype, \"warn\", null);\ntslib_1.__decorate([\n    Logger.WrapBuffer,\n    tslib_1.__metadata(\"design:type\", Function),\n    tslib_1.__metadata(\"design:paramtypes\", [Object, Object]),\n    tslib_1.__metadata(\"design:returntype\", void 0)\n], Logger.prototype, \"debug\", null);\ntslib_1.__decorate([\n    Logger.WrapBuffer,\n    tslib_1.__metadata(\"design:type\", Function),\n    tslib_1.__metadata(\"design:paramtypes\", [Object, Object]),\n    tslib_1.__metadata(\"design:returntype\", void 0)\n], Logger.prototype, \"verbose\", null);\ntslib_1.__decorate([\n    Logger.WrapBuffer,\n    tslib_1.__metadata(\"design:type\", Function),\n    tslib_1.__metadata(\"design:paramtypes\", [Object, Object]),\n    tslib_1.__metadata(\"design:returntype\", void 0)\n], Logger.prototype, \"fatal\", null);\ntslib_1.__decorate([\n    Logger.WrapBuffer,\n    tslib_1.__metadata(\"design:type\", Function),\n    tslib_1.__metadata(\"design:paramtypes\", [Object, Object]),\n    tslib_1.__metadata(\"design:returntype\", void 0)\n], Logger, \"error\", null);\ntslib_1.__decorate([\n    Logger.WrapBuffer,\n    tslib_1.__metadata(\"design:type\", Function),\n    tslib_1.__metadata(\"design:paramtypes\", [Object, Object]),\n    tslib_1.__metadata(\"design:returntype\", void 0)\n], Logger, \"log\", null);\ntslib_1.__decorate([\n    Logger.WrapBuffer,\n    tslib_1.__metadata(\"design:type\", Function),\n    tslib_1.__metadata(\"design:paramtypes\", [Object, Object]),\n    tslib_1.__metadata(\"design:returntype\", void 0)\n], Logger, \"warn\", null);\ntslib_1.__decorate([\n    Logger.WrapBuffer,\n    tslib_1.__metadata(\"design:type\", Function),\n    tslib_1.__metadata(\"design:paramtypes\", [Object, Object]),\n    tslib_1.__metadata(\"design:returntype\", void 0)\n], Logger, \"debug\", null);\ntslib_1.__decorate([\n    Logger.WrapBuffer,\n    tslib_1.__metadata(\"design:type\", Function),\n    tslib_1.__metadata(\"design:paramtypes\", [Object, Object]),\n    tslib_1.__metadata(\"design:returntype\", void 0)\n], Logger, \"verbose\", null);\ntslib_1.__decorate([\n    Logger.WrapBuffer,\n    tslib_1.__metadata(\"design:type\", Function),\n    tslib_1.__metadata(\"design:paramtypes\", [Object, Object]),\n    tslib_1.__metadata(\"design:returntype\", void 0)\n], Logger, \"fatal\", null);\nexports.Logger = Logger = Logger_1 = tslib_1.__decorate([\n    (0, core_1.Injectable)(),\n    tslib_1.__param(0, (0, core_1.Optional)()),\n    tslib_1.__param(1, (0, core_1.Optional)()),\n    tslib_1.__metadata(\"design:paramtypes\", [String, Object])\n], Logger);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./console-logger.service\"), exports);\ntslib_1.__exportStar(require(\"./logger.service\"), exports);\ntslib_1.__exportStar(require(\"./utils/filter-log-levels.util\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StreamableFile = void 0;\nconst stream_1 = require(\"stream\");\nconst util_1 = require(\"util\");\nconst enums_1 = require(\"../enums\");\nconst services_1 = require(\"../services\");\nconst shared_utils_1 = require(\"../utils/shared.utils\");\n/**\n * @see [Streaming files](https://docs.nestjs.com/techniques/streaming-files)\n *\n * @publicApi\n */\nclass StreamableFile {\n    constructor(bufferOrReadStream, options = {}) {\n        this.options = options;\n        this.logger = new services_1.Logger('StreamableFile');\n        this.handleError = (err, res) => {\n            if (res.destroyed) {\n                return;\n            }\n            if (res.headersSent) {\n                res.end();\n                return;\n            }\n            res.statusCode = enums_1.HttpStatus.BAD_REQUEST;\n            res.send(err.message);\n        };\n        this.logError = (err) => {\n            this.logger.error(err);\n        };\n        if (util_1.types.isUint8Array(bufferOrReadStream)) {\n            this.stream = new stream_1.Readable();\n            this.stream.push(bufferOrReadStream);\n            this.stream.push(null);\n            this.options.length ??= bufferOrReadStream.length;\n        }\n        else if (bufferOrReadStream.pipe && (0, shared_utils_1.isFunction)(bufferOrReadStream.pipe)) {\n            this.stream = bufferOrReadStream;\n        }\n    }\n    getStream() {\n        return this.stream;\n    }\n    getHeaders() {\n        const { type = 'application/octet-stream', disposition = undefined, length = undefined, } = this.options;\n        return {\n            type,\n            disposition,\n            length,\n        };\n    }\n    get errorHandler() {\n        return this.handleError;\n    }\n    setErrorHandler(handler) {\n        this.handleError = handler;\n        return this;\n    }\n    get errorLogger() {\n        return this.logError;\n    }\n    setErrorLogger(handler) {\n        this.logError = handler;\n        return this;\n    }\n}\nexports.StreamableFile = StreamableFile;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./streamable-file\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./before-application-shutdown.interface\"), exports);\ntslib_1.__exportStar(require(\"./on-application-bootstrap.interface\"), exports);\ntslib_1.__exportStar(require(\"./on-application-shutdown.interface\"), exports);\ntslib_1.__exportStar(require(\"./on-destroy.interface\"), exports);\ntslib_1.__exportStar(require(\"./on-init.interface\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./http-exception-body.interface\"), exports);\ntslib_1.__exportStar(require(\"./http-redirect-response.interface\"), exports);\ntslib_1.__exportStar(require(\"./http-server.interface\"), exports);\ntslib_1.__exportStar(require(\"./message-event.interface\"), exports);\ntslib_1.__exportStar(require(\"./raw-body-request.interface\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./middleware-config-proxy.interface\"), exports);\ntslib_1.__exportStar(require(\"./middleware-configuration.interface\"), exports);\ntslib_1.__exportStar(require(\"./middleware-consumer.interface\"), exports);\ntslib_1.__exportStar(require(\"./nest-middleware.interface\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./dynamic-module.interface\"), exports);\ntslib_1.__exportStar(require(\"./forward-reference.interface\"), exports);\ntslib_1.__exportStar(require(\"./injection-token.interface\"), exports);\ntslib_1.__exportStar(require(\"./introspection-result.interface\"), exports);\ntslib_1.__exportStar(require(\"./module-metadata.interface\"), exports);\ntslib_1.__exportStar(require(\"./nest-module.interface\"), exports);\ntslib_1.__exportStar(require(\"./optional-factory-dependency.interface\"), exports);\ntslib_1.__exportStar(require(\"./provider.interface\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Scope = void 0;\n/**\n * @publicApi\n */\nvar Scope;\n(function (Scope) {\n    /**\n     * The provider can be shared across multiple classes. The provider lifetime\n     * is strictly tied to the application lifecycle. Once the application has\n     * bootstrapped, all providers have been instantiated.\n     */\n    Scope[Scope[\"DEFAULT\"] = 0] = \"DEFAULT\";\n    /**\n     * A new private instance of the provider is instantiated for every use\n     */\n    Scope[Scope[\"TRANSIENT\"] = 1] = \"TRANSIENT\";\n    /**\n     * A new instance is instantiated for each request processing pipeline\n     */\n    Scope[Scope[\"REQUEST\"] = 2] = \"REQUEST\";\n})(Scope || (exports.Scope = Scope = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSION_NEUTRAL = void 0;\n/**\n * Indicates that this will work for any version passed in the request, or no version.\n *\n * @publicApi\n */\nexports.VERSION_NEUTRAL = Symbol('VERSION_NEUTRAL');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./abstract.interface\"), exports);\ntslib_1.__exportStar(require(\"./controllers/controller-metadata.interface\"), exports);\ntslib_1.__exportStar(require(\"./controllers/controller.interface\"), exports);\ntslib_1.__exportStar(require(\"./exceptions/exception-filter.interface\"), exports);\ntslib_1.__exportStar(require(\"./exceptions/rpc-exception-filter.interface\"), exports);\ntslib_1.__exportStar(require(\"./exceptions/ws-exception-filter.interface\"), exports);\ntslib_1.__exportStar(require(\"./external/validation-error.interface\"), exports);\ntslib_1.__exportStar(require(\"./features/arguments-host.interface\"), exports);\ntslib_1.__exportStar(require(\"./features/can-activate.interface\"), exports);\ntslib_1.__exportStar(require(\"./features/custom-route-param-factory.interface\"), exports);\ntslib_1.__exportStar(require(\"./features/execution-context.interface\"), exports);\ntslib_1.__exportStar(require(\"./features/nest-interceptor.interface\"), exports);\ntslib_1.__exportStar(require(\"./features/paramtype.interface\"), exports);\ntslib_1.__exportStar(require(\"./features/pipe-transform.interface\"), exports);\ntslib_1.__exportStar(require(\"./global-prefix-options.interface\"), exports);\ntslib_1.__exportStar(require(\"./hooks\"), exports);\ntslib_1.__exportStar(require(\"./http\"), exports);\ntslib_1.__exportStar(require(\"./injectable.interface\"), exports);\ntslib_1.__exportStar(require(\"./microservices/nest-hybrid-application-options.interface\"), exports);\ntslib_1.__exportStar(require(\"./middleware\"), exports);\ntslib_1.__exportStar(require(\"./modules\"), exports);\ntslib_1.__exportStar(require(\"./nest-application-context.interface\"), exports);\ntslib_1.__exportStar(require(\"./nest-application-options.interface\"), exports);\ntslib_1.__exportStar(require(\"./nest-application.interface\"), exports);\ntslib_1.__exportStar(require(\"./nest-microservice.interface\"), exports);\ntslib_1.__exportStar(require(\"./scope-options.interface\"), exports);\ntslib_1.__exportStar(require(\"./shutdown-hooks-options.interface\"), exports);\ntslib_1.__exportStar(require(\"./type.interface\"), exports);\ntslib_1.__exportStar(require(\"./version-options.interface\"), exports);\ntslib_1.__exportStar(require(\"./websockets/web-socket-adapter.interface\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.randomStringGenerator = void 0;\nconst uid_1 = require(\"uid\");\nconst randomStringGenerator = () => (0, uid_1.uid)(21);\nexports.randomStringGenerator = randomStringGenerator;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ASYNC_OPTIONS_METADATA_KEYS = exports.CONFIGURABLE_MODULE_ID = exports.ASYNC_METHOD_SUFFIX = exports.DEFAULT_FACTORY_CLASS_METHOD_KEY = exports.DEFAULT_METHOD_KEY = void 0;\nexports.DEFAULT_METHOD_KEY = 'register';\nexports.DEFAULT_FACTORY_CLASS_METHOD_KEY = 'create';\nexports.ASYNC_METHOD_SUFFIX = 'Async';\nexports.CONFIGURABLE_MODULE_ID = 'CONFIGURABLE_MODULE_ID';\n/**\n * List of keys that are specific to ConfigurableModuleAsyncOptions\n * and should be excluded when extracting user-defined extras.\n */\nexports.ASYNC_OPTIONS_METADATA_KEYS = [\n    'useFactory',\n    'useClass',\n    'useExisting',\n    'inject',\n    'imports',\n    'provideInjectionTokensFrom',\n];\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateOptionsInjectionToken = generateOptionsInjectionToken;\nconst random_string_generator_util_1 = require(\"../../utils/random-string-generator.util\");\nfunction generateOptionsInjectionToken() {\n    const hash = (0, random_string_generator_util_1.randomStringGenerator)();\n    return `CONFIGURABLE_MODULE_OPTIONS[${hash}]`;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getInjectionProviders = getInjectionProviders;\nconst shared_utils_1 = require(\"../../utils/shared.utils\");\n/**\n * @param value\n * @returns `true` if value is `OptionalFactoryDependency`\n */\nfunction isOptionalFactoryDependency(value) {\n    return (!(0, shared_utils_1.isUndefined)(value.token) &&\n        !(0, shared_utils_1.isUndefined)(value.optional) &&\n        !value.prototype);\n}\nconst mapInjectToTokens = (t) => isOptionalFactoryDependency(t) ? t.token : t;\n/**\n *\n * @param providers List of a module's providers\n * @param tokens Injection tokens needed for a useFactory function (usually the module's options' token)\n * @returns All the providers needed for the tokens' injection (searched recursively)\n */\nfunction getInjectionProviders(providers, tokens) {\n    const result = [];\n    let search = tokens.map(mapInjectToTokens);\n    while (search.length > 0) {\n        const match = (providers ?? []).filter(p => !result.includes(p) && // this prevents circular loops and duplication\n            (search.includes(p) || search.includes(p?.provide)));\n        result.push(...match);\n        // get injection tokens of the matched providers, if any\n        search = match\n            .filter(p => p?.inject)\n            .flatMap(p => p.inject)\n            .map(mapInjectToTokens);\n    }\n    return result;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./generate-options-injection-token.util\"), exports);\ntslib_1.__exportStar(require(\"./get-injection-providers.util\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConfigurableModuleBuilder = void 0;\nconst logger_service_1 = require(\"../services/logger.service\");\nconst random_string_generator_util_1 = require(\"../utils/random-string-generator.util\");\nconst constants_1 = require(\"./constants\");\nconst utils_1 = require(\"./utils\");\n/**\n * Factory that lets you create configurable modules and\n * provides a way to reduce the majority of dynamic module boilerplate.\n *\n * @publicApi\n */\nclass ConfigurableModuleBuilder {\n    constructor(options = {}, parentBuilder) {\n        this.options = options;\n        this.logger = new logger_service_1.Logger(ConfigurableModuleBuilder.name);\n        if (parentBuilder) {\n            this.staticMethodKey = parentBuilder.staticMethodKey;\n            this.factoryClassMethodKey =\n                parentBuilder.factoryClassMethodKey;\n            this.transformModuleDefinition =\n                parentBuilder.transformModuleDefinition;\n            this.extras = parentBuilder.extras;\n        }\n    }\n    /**\n     * Registers the \"extras\" object (a set of extra options that can be used to modify the dynamic module definition).\n     * Values you specify within the \"extras\" object will be used as default values (that can be overridden by module consumers).\n     *\n     * This method also applies the so-called \"module definition transform function\" that takes the auto-generated\n     * dynamic module object (\"DynamicModule\") and the actual consumer \"extras\" object as input parameters.\n     * The \"extras\" object consists of values explicitly specified by module consumers and default values.\n     *\n     * @example\n     * ```typescript\n     * .setExtras<{ isGlobal?: boolean }>({ isGlobal: false }, (definition, extras) =>\n     *    ({ ...definition, global: extras.isGlobal })\n     * )\n     * ```\n     */\n    setExtras(extras, transformDefinition = def => def) {\n        const builder = new ConfigurableModuleBuilder(this.options, this);\n        builder.extras = extras;\n        builder.transformModuleDefinition = transformDefinition;\n        return builder;\n    }\n    /**\n     * Dynamic modules must expose public static methods that let you pass in\n     * configuration parameters (control the module's behavior from the outside).\n     * Some frequently used names that you may have seen in other modules are:\n     * \"forRoot\", \"forFeature\", \"register\", \"configure\".\n     *\n     * This method \"setClassMethodName\" lets you specify the name of the\n     * method that will be auto-generated.\n     *\n     * @param key name of the method\n     */\n    setClassMethodName(key) {\n        const builder = new ConfigurableModuleBuilder(this.options, this);\n        builder.staticMethodKey = key;\n        return builder;\n    }\n    /**\n     * Asynchronously configured modules (that rely on other modules, i.e. \"ConfigModule\")\n     * let you pass the configuration factory class that will be registered and instantiated as a provider.\n     * This provider then will be used to retrieve the module's configuration. To provide the configuration,\n     * the corresponding factory method must be implemented.\n     *\n     * This method (\"setFactoryMethodName\") lets you control what method name will have to be\n     * implemented by the config factory (default is \"create\").\n     *\n     * @param key name of the method\n     */\n    setFactoryMethodName(key) {\n        const builder = new ConfigurableModuleBuilder(this.options, this);\n        builder.factoryClassMethodKey = key;\n        return builder;\n    }\n    /**\n     * Returns an object consisting of multiple properties that lets you\n     * easily construct dynamic configurable modules. See \"ConfigurableModuleHost\" interface for more details.\n     */\n    build() {\n        this.staticMethodKey ??= constants_1.DEFAULT_METHOD_KEY;\n        this.factoryClassMethodKey ??=\n            constants_1.DEFAULT_FACTORY_CLASS_METHOD_KEY;\n        this.options.optionsInjectionToken ??= this.options.moduleName\n            ? this.constructInjectionTokenString()\n            : (0, utils_1.generateOptionsInjectionToken)();\n        this.transformModuleDefinition ??= definition => definition;\n        return {\n            ConfigurableModuleClass: this.createConfigurableModuleCls(),\n            MODULE_OPTIONS_TOKEN: this.options.optionsInjectionToken,\n            ASYNC_OPTIONS_TYPE: this.createTypeProxy('ASYNC_OPTIONS_TYPE'),\n            OPTIONS_TYPE: this.createTypeProxy('OPTIONS_TYPE'),\n        };\n    }\n    constructInjectionTokenString() {\n        const moduleNameInSnakeCase = this.options\n            .moduleName.trim()\n            .split(/(?=[A-Z])/)\n            .join('_')\n            .toUpperCase();\n        return `${moduleNameInSnakeCase}_MODULE_OPTIONS`;\n    }\n    createConfigurableModuleCls() {\n        // eslint-disable-next-line @typescript-eslint/no-this-alias\n        const self = this;\n        const asyncMethodKey = this.staticMethodKey + constants_1.ASYNC_METHOD_SUFFIX;\n        class InternalModuleClass {\n            static [self.staticMethodKey](options) {\n                const providers = [\n                    {\n                        provide: self.options.optionsInjectionToken,\n                        useValue: this.omitExtras(options, self.extras),\n                    },\n                ];\n                if (self.options.alwaysTransient) {\n                    providers.push({\n                        provide: constants_1.CONFIGURABLE_MODULE_ID,\n                        useValue: (0, random_string_generator_util_1.randomStringGenerator)(),\n                    });\n                }\n                return self.transformModuleDefinition({\n                    module: this,\n                    providers,\n                }, {\n                    ...self.extras,\n                    ...options,\n                });\n            }\n            static [asyncMethodKey](options) {\n                const providers = this.createAsyncProviders(options);\n                if (self.options.alwaysTransient) {\n                    providers.push({\n                        provide: constants_1.CONFIGURABLE_MODULE_ID,\n                        useValue: (0, random_string_generator_util_1.randomStringGenerator)(),\n                    });\n                }\n                return self.transformModuleDefinition({\n                    module: this,\n                    imports: options.imports || [],\n                    providers,\n                }, {\n                    ...self.extras,\n                    ...this.extractExtrasFromAsyncOptions(options, self.extras),\n                });\n            }\n            static omitExtras(input, extras) {\n                if (!extras) {\n                    return input;\n                }\n                const moduleOptions = {};\n                const extrasKeys = Object.keys(extras);\n                Object.keys(input)\n                    .filter(key => !extrasKeys.includes(key))\n                    .forEach(key => {\n                    moduleOptions[key] = input[key];\n                });\n                return moduleOptions;\n            }\n            static extractExtrasFromAsyncOptions(input, extras) {\n                if (!extras) {\n                    return {};\n                }\n                const extrasOptions = {};\n                Object.keys(input)\n                    .filter(key => !constants_1.ASYNC_OPTIONS_METADATA_KEYS.includes(key))\n                    .forEach(key => {\n                    extrasOptions[key] = input[key];\n                });\n                return extrasOptions;\n            }\n            static createAsyncProviders(options) {\n                if (options.useExisting || options.useFactory) {\n                    if (options.inject && options.provideInjectionTokensFrom) {\n                        return [\n                            this.createAsyncOptionsProvider(options),\n                            ...(0, utils_1.getInjectionProviders)(options.provideInjectionTokensFrom, options.inject),\n                        ];\n                    }\n                    return [this.createAsyncOptionsProvider(options)];\n                }\n                return [\n                    this.createAsyncOptionsProvider(options),\n                    {\n                        provide: options.useClass,\n                        useClass: options.useClass,\n                    },\n                ];\n            }\n            static createAsyncOptionsProvider(options) {\n                if (options.useFactory) {\n                    return {\n                        provide: self.options.optionsInjectionToken,\n                        useFactory: options.useFactory,\n                        inject: options.inject || [],\n                    };\n                }\n                return {\n                    provide: self.options.optionsInjectionToken,\n                    useFactory: async (optionsFactory) => await optionsFactory[self.factoryClassMethodKey](),\n                    inject: [options.useExisting || options.useClass],\n                };\n            }\n        }\n        return InternalModuleClass;\n    }\n    createTypeProxy(typeName) {\n        const proxy = new Proxy({}, {\n            get: () => {\n                throw new Error(`\"${typeName}\" is not supposed to be used as a value.`);\n            },\n        });\n        return proxy;\n    }\n}\nexports.ConfigurableModuleBuilder = ConfigurableModuleBuilder;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./configurable-module-async-options.interface\"), exports);\ntslib_1.__exportStar(require(\"./configurable-module-cls.interface\"), exports);\ntslib_1.__exportStar(require(\"./configurable-module-host.interface\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./configurable-module.builder\"), exports);\ntslib_1.__exportStar(require(\"./interfaces\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefaultValuePipe = void 0;\nconst tslib_1 = require(\"tslib\");\nconst injectable_decorator_1 = require(\"../decorators/core/injectable.decorator\");\nconst shared_utils_1 = require(\"../utils/shared.utils\");\n/**\n * Defines the built-in DefaultValue Pipe\n *\n * @see [Built-in Pipes](https://docs.nestjs.com/pipes#built-in-pipes)\n *\n * @publicApi\n */\nlet DefaultValuePipe = class DefaultValuePipe {\n    constructor(defaultValue) {\n        this.defaultValue = defaultValue;\n    }\n    transform(value, _metadata) {\n        if ((0, shared_utils_1.isNil)(value) ||\n            ((0, shared_utils_1.isNumber)(value) && isNaN(value))) {\n            return this.defaultValue;\n        }\n        return value;\n    }\n};\nexports.DefaultValuePipe = DefaultValuePipe;\nexports.DefaultValuePipe = DefaultValuePipe = tslib_1.__decorate([\n    (0, injectable_decorator_1.Injectable)(),\n    tslib_1.__metadata(\"design:paramtypes\", [Object])\n], DefaultValuePipe);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FileValidator = void 0;\n/**\n * Interface describing FileValidators, which can be added to a ParseFilePipe\n *\n * @see {ParseFilePipe}\n * @publicApi\n */\nclass FileValidator {\n    constructor(validationOptions) {\n        this.validationOptions = validationOptions;\n    }\n}\nexports.FileValidator = FileValidator;\n","module.exports = {\n    loadEsm: (module) => import(module)\n};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FileTypeValidator = void 0;\nconst logger_service_1 = require(\"../../services/logger.service\");\nconst file_validator_interface_1 = require(\"./file-validator.interface\");\nconst load_esm_1 = require(\"load-esm\");\nconst logger = new logger_service_1.Logger('FileTypeValidator');\n/**\n * Defines the built-in FileTypeValidator. It validates incoming files by examining\n * their magic numbers using the file-type package, providing more reliable file type validation\n * than just checking the mimetype string.\n *\n * @see [File Validators](https://docs.nestjs.com/techniques/file-upload#validators)\n *\n * @publicApi\n */\nclass FileTypeValidator extends file_validator_interface_1.FileValidator {\n    buildErrorMessage(file) {\n        const { errorMessage, ...config } = this.validationOptions;\n        if (errorMessage) {\n            return typeof errorMessage === 'function'\n                ? errorMessage({ file, config })\n                : errorMessage;\n        }\n        if (file?.mimetype) {\n            const baseMessage = `Validation failed (current file type is ${file.mimetype}, expected type is ${this.validationOptions.fileType})`;\n            /**\n             * If fallbackToMimetype is enabled, this means the validator failed to detect the file type\n             * via magic number inspection (e.g. due to an unknown or too short buffer),\n             * and instead used the mimetype string provided by the client as a fallback.\n             *\n             * This message clarifies that fallback logic was used, in case users rely on file signatures.\n             */\n            if (this.validationOptions.fallbackToMimetype) {\n                return `${baseMessage} - magic number detection failed, used mimetype fallback`;\n            }\n            return baseMessage;\n        }\n        return `Validation failed (expected type is ${this.validationOptions.fileType})`;\n    }\n    async isValid(file) {\n        if (!this.validationOptions) {\n            return true;\n        }\n        const isFileValid = !!file && 'mimetype' in file;\n        // Skip magic number validation if set\n        if (this.validationOptions.skipMagicNumbersValidation) {\n            return (isFileValid && !!file.mimetype.match(this.validationOptions.fileType));\n        }\n        if (!isFileValid)\n            return false;\n        if (!file.buffer) {\n            if (this.validationOptions.fallbackToMimetype) {\n                return !!file.mimetype.match(this.validationOptions.fileType);\n            }\n            return false;\n        }\n        try {\n            let fileTypePath;\n            try {\n                fileTypePath = require.resolve('file-type');\n            }\n            catch {\n                fileTypePath = 'file-type';\n            }\n            const { fileTypeFromBuffer } = await (0, load_esm_1.loadEsm)(fileTypePath);\n            const fileType = await fileTypeFromBuffer(file.buffer);\n            if (fileType) {\n                // Match detected mime type against allowed type\n                return !!fileType.mime.match(this.validationOptions.fileType);\n            }\n            /**\n             * Fallback logic: If file-type cannot detect magic number (e.g. file too small),\n             * Optionally fall back to mimetype string for compatibility.\n             * This is useful for plain text, CSVs, or files without recognizable signatures.\n             */\n            if (this.validationOptions.fallbackToMimetype) {\n                return !!file.mimetype.match(this.validationOptions.fileType);\n            }\n            return false;\n        }\n        catch (error) {\n            const errorMessage = error instanceof Error ? error.message : String(error);\n            // Check for common ESM loading issues\n            if (errorMessage.includes('ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING') ||\n                errorMessage.includes('Cannot find module') ||\n                errorMessage.includes('ERR_MODULE_NOT_FOUND')) {\n                logger.warn(`Failed to load the \"file-type\" package for magic number validation. ` +\n                    `If you are using Jest, run it with NODE_OPTIONS=\"--experimental-vm-modules\". ` +\n                    `Error: ${errorMessage}`);\n            }\n            // Fallback to mimetype if enabled\n            if (this.validationOptions.fallbackToMimetype) {\n                return !!file.mimetype.match(this.validationOptions.fileType);\n            }\n            return false;\n        }\n    }\n}\nexports.FileTypeValidator = FileTypeValidator;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MaxFileSizeValidator = void 0;\nconst file_validator_interface_1 = require(\"./file-validator.interface\");\n/**\n * Defines the built-in MaxSize File Validator\n *\n * @see [File Validators](https://docs.nestjs.com/techniques/file-upload#file-validation)\n *\n * @publicApi\n */\nclass MaxFileSizeValidator extends file_validator_interface_1.FileValidator {\n    buildErrorMessage(file) {\n        const { errorMessage, message, ...config } = this.validationOptions;\n        if (errorMessage) {\n            return typeof errorMessage === 'function'\n                ? errorMessage({ file, config })\n                : errorMessage;\n        }\n        if (message) {\n            return typeof message === 'function'\n                ? message(this.validationOptions.maxSize)\n                : message;\n        }\n        if (file?.size) {\n            return `Validation failed (current file size is ${file.size}, expected size is less than ${this.validationOptions.maxSize})`;\n        }\n        return `Validation failed (expected size is less than ${this.validationOptions.maxSize})`;\n    }\n    isValid(file) {\n        if (!this.validationOptions || !file) {\n            return true;\n        }\n        return 'size' in file && file.size < this.validationOptions.maxSize;\n    }\n}\nexports.MaxFileSizeValidator = MaxFileSizeValidator;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpErrorByCode = void 0;\nconst enums_1 = require(\"../enums\");\nconst exceptions_1 = require(\"../exceptions\");\nexports.HttpErrorByCode = {\n    [enums_1.HttpStatus.BAD_GATEWAY]: exceptions_1.BadGatewayException,\n    [enums_1.HttpStatus.BAD_REQUEST]: exceptions_1.BadRequestException,\n    [enums_1.HttpStatus.CONFLICT]: exceptions_1.ConflictException,\n    [enums_1.HttpStatus.FORBIDDEN]: exceptions_1.ForbiddenException,\n    [enums_1.HttpStatus.GATEWAY_TIMEOUT]: exceptions_1.GatewayTimeoutException,\n    [enums_1.HttpStatus.GONE]: exceptions_1.GoneException,\n    [enums_1.HttpStatus.I_AM_A_TEAPOT]: exceptions_1.ImATeapotException,\n    [enums_1.HttpStatus.INTERNAL_SERVER_ERROR]: exceptions_1.InternalServerErrorException,\n    [enums_1.HttpStatus.METHOD_NOT_ALLOWED]: exceptions_1.MethodNotAllowedException,\n    [enums_1.HttpStatus.NOT_ACCEPTABLE]: exceptions_1.NotAcceptableException,\n    [enums_1.HttpStatus.NOT_FOUND]: exceptions_1.NotFoundException,\n    [enums_1.HttpStatus.NOT_IMPLEMENTED]: exceptions_1.NotImplementedException,\n    [enums_1.HttpStatus.PAYLOAD_TOO_LARGE]: exceptions_1.PayloadTooLargeException,\n    [enums_1.HttpStatus.PRECONDITION_FAILED]: exceptions_1.PreconditionFailedException,\n    [enums_1.HttpStatus.REQUEST_TIMEOUT]: exceptions_1.RequestTimeoutException,\n    [enums_1.HttpStatus.SERVICE_UNAVAILABLE]: exceptions_1.ServiceUnavailableException,\n    [enums_1.HttpStatus.UNAUTHORIZED]: exceptions_1.UnauthorizedException,\n    [enums_1.HttpStatus.UNPROCESSABLE_ENTITY]: exceptions_1.UnprocessableEntityException,\n    [enums_1.HttpStatus.UNSUPPORTED_MEDIA_TYPE]: exceptions_1.UnsupportedMediaTypeException,\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ParseFilePipe = void 0;\nconst tslib_1 = require(\"tslib\");\nconst core_1 = require(\"../../decorators/core\");\nconst enums_1 = require(\"../../enums\");\nconst http_error_by_code_util_1 = require(\"../../utils/http-error-by-code.util\");\nconst shared_utils_1 = require(\"../../utils/shared.utils\");\n/**\n * Defines the built-in ParseFile Pipe. This pipe can be used to validate incoming files\n * with `@UploadedFile()` decorator. You can use either other specific built-in validators\n * or provide one of your own, simply implementing it through FileValidator interface\n * and adding it to ParseFilePipe's constructor.\n *\n * @see [Built-in Pipes](https://docs.nestjs.com/pipes#built-in-pipes)\n *\n * @publicApi\n */\nlet ParseFilePipe = class ParseFilePipe {\n    constructor(options = {}) {\n        const { exceptionFactory, errorHttpStatusCode = enums_1.HttpStatus.BAD_REQUEST, validators = [], fileIsRequired, } = options;\n        this.exceptionFactory =\n            exceptionFactory ||\n                (error => new http_error_by_code_util_1.HttpErrorByCode[errorHttpStatusCode](error));\n        this.validators = validators;\n        this.fileIsRequired = fileIsRequired ?? true;\n    }\n    async transform(value) {\n        const areThereAnyFilesIn = this.thereAreNoFilesIn(value);\n        if (areThereAnyFilesIn && this.fileIsRequired) {\n            throw this.exceptionFactory('File is required');\n        }\n        if (!areThereAnyFilesIn && this.validators.length) {\n            await this.validateFilesOrFile(value);\n        }\n        return value;\n    }\n    async validateFilesOrFile(value) {\n        if (Array.isArray(value)) {\n            await Promise.all(value.map(f => this.validate(f)));\n        }\n        else {\n            await this.validate(value);\n        }\n    }\n    thereAreNoFilesIn(value) {\n        const isEmptyArray = Array.isArray(value) && (0, shared_utils_1.isEmpty)(value);\n        const isEmptyObject = (0, shared_utils_1.isObject)(value) && (0, shared_utils_1.isEmpty)(Object.keys(value));\n        return (0, shared_utils_1.isUndefined)(value) || isEmptyArray || isEmptyObject;\n    }\n    async validate(file) {\n        for (const validator of this.validators) {\n            await this.validateOrThrow(file, validator);\n        }\n        return file;\n    }\n    async validateOrThrow(file, validator) {\n        const isValid = await validator.isValid(file);\n        if (!isValid) {\n            const errorMessage = validator.buildErrorMessage(file);\n            throw this.exceptionFactory(errorMessage);\n        }\n    }\n    /**\n     * @returns list of validators used in this pipe.\n     */\n    getValidators() {\n        return this.validators;\n    }\n};\nexports.ParseFilePipe = ParseFilePipe;\nexports.ParseFilePipe = ParseFilePipe = tslib_1.__decorate([\n    (0, core_1.Injectable)(),\n    tslib_1.__param(0, (0, core_1.Optional)()),\n    tslib_1.__metadata(\"design:paramtypes\", [Object])\n], ParseFilePipe);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ParseFilePipeBuilder = void 0;\nconst file_type_validator_1 = require(\"./file-type.validator\");\nconst max_file_size_validator_1 = require(\"./max-file-size.validator\");\nconst parse_file_pipe_1 = require(\"./parse-file.pipe\");\n/**\n * @publicApi\n */\nclass ParseFilePipeBuilder {\n    constructor() {\n        this.validators = [];\n    }\n    addMaxSizeValidator(options) {\n        return this.addValidator(new max_file_size_validator_1.MaxFileSizeValidator(options));\n    }\n    addFileTypeValidator(options) {\n        return this.addValidator(new file_type_validator_1.FileTypeValidator(options));\n    }\n    addValidator(validator) {\n        this.validators.push(validator);\n        return this;\n    }\n    build(additionalOptions) {\n        const parseFilePipe = new parse_file_pipe_1.ParseFilePipe({\n            ...additionalOptions,\n            validators: this.validators,\n        });\n        this.validators = [];\n        return parseFilePipe;\n    }\n}\nexports.ParseFilePipeBuilder = ParseFilePipeBuilder;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./file-type.validator\"), exports);\ntslib_1.__exportStar(require(\"./file-validator.interface\"), exports);\ntslib_1.__exportStar(require(\"./max-file-size.validator\"), exports);\ntslib_1.__exportStar(require(\"./parse-file-options.interface\"), exports);\ntslib_1.__exportStar(require(\"./parse-file.pipe\"), exports);\ntslib_1.__exportStar(require(\"./parse-file-pipe.builder\"), exports);\n",null,null,null,null,null,null,null,null,null,"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadPackage = loadPackage;\nconst logger_service_1 = require(\"../services/logger.service\");\nconst MISSING_REQUIRED_DEPENDENCY = (name, reason) => `The \"${name}\" package is missing. Please, make sure to install it to take advantage of ${reason}.`;\nconst logger = new logger_service_1.Logger('PackageLoader');\nfunction loadPackage(packageName, context, loaderFn) {\n    try {\n        return loaderFn ? loaderFn() : require(packageName);\n    }\n    catch (e) {\n        logger.error(MISSING_REQUIRED_DEPENDENCY(packageName, context));\n        logger_service_1.Logger.flush();\n        process.exit(1);\n    }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ValidationPipe = void 0;\nconst tslib_1 = require(\"tslib\");\nconst iterare_1 = require(\"iterare\");\nconst util_1 = require(\"util\");\nconst decorators_1 = require(\"../decorators\");\nconst core_1 = require(\"../decorators/core\");\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_error_by_code_util_1 = require(\"../utils/http-error-by-code.util\");\nconst load_package_util_1 = require(\"../utils/load-package.util\");\nconst shared_utils_1 = require(\"../utils/shared.utils\");\nlet classValidator = {};\nlet classTransformer = {};\n/**\n * @see [Validation](https://docs.nestjs.com/techniques/validation)\n *\n * @publicApi\n */\nlet ValidationPipe = class ValidationPipe {\n    constructor(options) {\n        options = options || {};\n        const { transform, disableErrorMessages, errorHttpStatusCode, expectedType, transformOptions, validateCustomDecorators, ...validatorOptions } = options;\n        // @see https://github.com/nestjs/nest/issues/10683#issuecomment-1413690508\n        this.validatorOptions = { forbidUnknownValues: false, ...validatorOptions };\n        this.isTransformEnabled = !!transform;\n        this.transformOptions = transformOptions;\n        this.isDetailedOutputDisabled = disableErrorMessages;\n        this.validateCustomDecorators = validateCustomDecorators || false;\n        this.errorHttpStatusCode = errorHttpStatusCode || http_status_enum_1.HttpStatus.BAD_REQUEST;\n        this.expectedType = expectedType;\n        this.exceptionFactory =\n            options.exceptionFactory || this.createExceptionFactory();\n        classValidator = this.loadValidator(options.validatorPackage);\n        classTransformer = this.loadTransformer(options.transformerPackage);\n    }\n    loadValidator(validatorPackage) {\n        return (validatorPackage ??\n            (0, load_package_util_1.loadPackage)('class-validator', 'ValidationPipe', () => require('class-validator')));\n    }\n    loadTransformer(transformerPackage) {\n        return (transformerPackage ??\n            (0, load_package_util_1.loadPackage)('class-transformer', 'ValidationPipe', () => require('class-transformer')));\n    }\n    async transform(value, metadata) {\n        if (this.expectedType) {\n            metadata = { ...metadata, metatype: this.expectedType };\n        }\n        const metatype = metadata.metatype;\n        if (!metatype || !this.toValidate(metadata)) {\n            return this.isTransformEnabled\n                ? this.transformPrimitive(value, metadata)\n                : value;\n        }\n        const originalValue = value;\n        value = this.toEmptyIfNil(value, metatype);\n        const isNil = value !== originalValue;\n        const isPrimitive = this.isPrimitive(value);\n        this.stripProtoKeys(value);\n        let entity = classTransformer.plainToInstance(metatype, value, this.transformOptions);\n        const originalEntity = entity;\n        const isCtorNotEqual = entity.constructor !== metatype;\n        if (isCtorNotEqual && !isPrimitive) {\n            entity.constructor = metatype;\n        }\n        else if (isCtorNotEqual) {\n            // when \"entity\" is a primitive value, we have to temporarily\n            // replace the entity to perform the validation against the original\n            // metatype defined inside the handler\n            entity = { constructor: metatype };\n        }\n        const errors = await this.validate(entity, this.validatorOptions);\n        if (errors.length > 0) {\n            throw await this.exceptionFactory(errors);\n        }\n        if (originalValue === undefined && originalEntity === '') {\n            // Since SWC requires empty string for validation (to avoid an error),\n            // a fallback is needed to revert to the original value (when undefined).\n            // @see https://github.com/nestjs/nest/issues/14430\n            return originalValue;\n        }\n        if (isPrimitive) {\n            // if the value is a primitive value and the validation process has been successfully completed\n            // we have to revert the original value passed through the pipe\n            entity = originalEntity;\n        }\n        if (this.isTransformEnabled) {\n            return entity;\n        }\n        if (isNil) {\n            // if the value was originally undefined or null, revert it back\n            return originalValue;\n        }\n        // we check if the number of keys of the \"validatorOptions\" is higher than 1 (instead of 0)\n        // because the \"forbidUnknownValues\" now fallbacks to \"false\" (in case it wasn't explicitly specified)\n        const shouldTransformToPlain = Object.keys(this.validatorOptions).length > 1;\n        return shouldTransformToPlain\n            ? classTransformer.classToPlain(entity, this.transformOptions)\n            : value;\n    }\n    createExceptionFactory() {\n        return (validationErrors = []) => {\n            if (this.isDetailedOutputDisabled) {\n                return new http_error_by_code_util_1.HttpErrorByCode[this.errorHttpStatusCode]();\n            }\n            const errors = this.flattenValidationErrors(validationErrors);\n            return new http_error_by_code_util_1.HttpErrorByCode[this.errorHttpStatusCode](errors);\n        };\n    }\n    toValidate(metadata) {\n        const { metatype, type } = metadata;\n        if (type === 'custom' && !this.validateCustomDecorators) {\n            return false;\n        }\n        const types = [String, Boolean, Number, Array, Object, Buffer, Date];\n        return !types.some(t => metatype === t) && !(0, shared_utils_1.isNil)(metatype);\n    }\n    transformPrimitive(value, metadata) {\n        if (!metadata.data) {\n            // leave top-level query/param objects unmodified\n            return value;\n        }\n        const { type, metatype } = metadata;\n        if (type !== 'param' && type !== 'query') {\n            return value;\n        }\n        if (metatype === Boolean) {\n            if ((0, shared_utils_1.isUndefined)(value)) {\n                // This is an workaround to deal with optional boolean values since\n                // optional booleans shouldn't be parsed to a valid boolean when\n                // they were not defined\n                return undefined;\n            }\n            // Any fasly value but `undefined` will be parsed to `false`\n            return value === true || value === 'true';\n        }\n        if (metatype === Number) {\n            if ((0, shared_utils_1.isUndefined)(value)) {\n                // This is a workaround to deal with optional numeric values since\n                // optional numerics shouldn't be parsed to a valid number when\n                // they were not defined\n                return undefined;\n            }\n            return +value;\n        }\n        if (metatype === String && !(0, shared_utils_1.isUndefined)(value)) {\n            return String(value);\n        }\n        return value;\n    }\n    toEmptyIfNil(value, metatype) {\n        if (!(0, shared_utils_1.isNil)(value)) {\n            return value;\n        }\n        if (typeof metatype === 'function' ||\n            (metatype && 'prototype' in metatype && metatype.prototype?.constructor)) {\n            return {};\n        }\n        // SWC requires empty string to be returned instead of an empty object\n        // when the value is nil and the metatype is not a class instance, but a plain object (enum, for example).\n        // Otherwise, the error will be thrown.\n        // @see https://github.com/nestjs/nest/issues/12680\n        return '';\n    }\n    stripProtoKeys(value) {\n        if (value == null ||\n            typeof value !== 'object' ||\n            util_1.types.isTypedArray(value)) {\n            return;\n        }\n        if (Array.isArray(value)) {\n            for (const v of value) {\n                this.stripProtoKeys(v);\n            }\n            return;\n        }\n        delete value.__proto__;\n        delete value.constructor;\n        delete value.prototype;\n        for (const key in value) {\n            this.stripProtoKeys(value[key]);\n        }\n    }\n    isPrimitive(value) {\n        return ['number', 'boolean', 'string'].includes(typeof value);\n    }\n    validate(object, validatorOptions) {\n        return classValidator.validate(object, validatorOptions);\n    }\n    flattenValidationErrors(validationErrors) {\n        return (0, iterare_1.iterate)(validationErrors)\n            .map(error => this.mapChildrenToValidationErrors(error))\n            .flatten()\n            .filter(item => !!item.constraints)\n            .map(item => Object.values(item.constraints))\n            .flatten()\n            .toArray();\n    }\n    mapChildrenToValidationErrors(error, parentPath) {\n        if (!(error.children && error.children.length)) {\n            return [error];\n        }\n        const validationErrors = [];\n        parentPath = parentPath\n            ? `${parentPath}.${error.property}`\n            : error.property;\n        for (const item of error.children) {\n            if (item.children && item.children.length) {\n                validationErrors.push(...this.mapChildrenToValidationErrors(item, parentPath));\n            }\n            validationErrors.push(this.prependConstraintsWithParentProp(parentPath, item));\n        }\n        return validationErrors;\n    }\n    prependConstraintsWithParentProp(parentPath, error) {\n        const constraints = {};\n        for (const key in error.constraints) {\n            constraints[key] = `${parentPath}.${error.constraints[key]}`;\n        }\n        return {\n            ...error,\n            constraints,\n        };\n    }\n};\nexports.ValidationPipe = ValidationPipe;\nexports.ValidationPipe = ValidationPipe = tslib_1.__decorate([\n    (0, core_1.Injectable)(),\n    tslib_1.__param(0, (0, decorators_1.Optional)()),\n    tslib_1.__metadata(\"design:paramtypes\", [Object])\n], ValidationPipe);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ParseArrayPipe = void 0;\nconst tslib_1 = require(\"tslib\");\nconst injectable_decorator_1 = require(\"../decorators/core/injectable.decorator\");\nconst optional_decorator_1 = require(\"../decorators/core/optional.decorator\");\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_error_by_code_util_1 = require(\"../utils/http-error-by-code.util\");\nconst shared_utils_1 = require(\"../utils/shared.utils\");\nconst validation_pipe_1 = require(\"./validation.pipe\");\nconst VALIDATION_ERROR_MESSAGE = 'Validation failed (parsable array expected)';\nconst DEFAULT_ARRAY_SEPARATOR = ',';\n/**\n * Defines the built-in ParseArray Pipe\n *\n * @see [Built-in Pipes](https://docs.nestjs.com/pipes#built-in-pipes)\n *\n * @publicApi\n */\nlet ParseArrayPipe = class ParseArrayPipe {\n    constructor(options = {}) {\n        this.options = options;\n        this.validationPipe = new validation_pipe_1.ValidationPipe({\n            transform: true,\n            validateCustomDecorators: true,\n            ...options,\n        });\n        const { exceptionFactory, errorHttpStatusCode = http_status_enum_1.HttpStatus.BAD_REQUEST } = options;\n        this.exceptionFactory =\n            exceptionFactory ||\n                (error => new http_error_by_code_util_1.HttpErrorByCode[errorHttpStatusCode](error));\n    }\n    /**\n     * Method that accesses and performs optional transformation on argument for\n     * in-flight requests.\n     *\n     * @param value currently processed route argument\n     * @param metadata contains metadata about the currently processed route argument\n     */\n    async transform(value, metadata) {\n        if (!value && !this.options.optional) {\n            throw this.exceptionFactory(VALIDATION_ERROR_MESSAGE);\n        }\n        else if ((0, shared_utils_1.isNil)(value) && this.options.optional) {\n            return value;\n        }\n        if (!Array.isArray(value)) {\n            if (!(0, shared_utils_1.isString)(value)) {\n                throw this.exceptionFactory(VALIDATION_ERROR_MESSAGE);\n            }\n            else {\n                try {\n                    value = value\n                        .trim()\n                        .split(this.options.separator || DEFAULT_ARRAY_SEPARATOR);\n                }\n                catch {\n                    throw this.exceptionFactory(VALIDATION_ERROR_MESSAGE);\n                }\n            }\n        }\n        if (this.options.items) {\n            const validationMetadata = {\n                metatype: this.options.items,\n                type: 'query',\n            };\n            const isExpectedTypePrimitive = this.isExpectedTypePrimitive();\n            const toClassInstance = (item, index) => {\n                if (this.options.items !== String) {\n                    try {\n                        item = JSON.parse(item);\n                    }\n                    catch {\n                        // Do nothing\n                    }\n                }\n                if (isExpectedTypePrimitive) {\n                    return this.validatePrimitive(item, index);\n                }\n                return this.validationPipe.transform(item, validationMetadata);\n            };\n            if (this.options.stopAtFirstError === false) {\n                // strict compare to \"false\" to make sure\n                // that this option is disabled by default\n                let errors = [];\n                const targetArray = value;\n                for (let i = 0; i < targetArray.length; i++) {\n                    try {\n                        targetArray[i] = await toClassInstance(targetArray[i]);\n                    }\n                    catch (err) {\n                        let message;\n                        if (err.getResponse) {\n                            const response = err.getResponse();\n                            if (Array.isArray(response.message)) {\n                                message = response.message.map((item) => `[${i}] ${item}`);\n                            }\n                            else {\n                                message = `[${i}] ${response.message}`;\n                            }\n                        }\n                        else {\n                            message = err;\n                        }\n                        errors = errors.concat(message);\n                    }\n                }\n                if (errors.length > 0) {\n                    throw this.exceptionFactory(errors);\n                }\n                return targetArray;\n            }\n            else {\n                value = await Promise.all(value.map(toClassInstance));\n            }\n        }\n        return value;\n    }\n    isExpectedTypePrimitive() {\n        return [Boolean, Number, String].includes(this.options.items);\n    }\n    validatePrimitive(originalValue, index) {\n        if (this.options.items === Number) {\n            const value = originalValue !== null && originalValue !== '' ? +originalValue : NaN;\n            if (isNaN(value)) {\n                throw this.exceptionFactory(`${(0, shared_utils_1.isUndefined)(index) ? '' : `[${index}] `}item must be a number`);\n            }\n            return value;\n        }\n        else if (this.options.items === String) {\n            if (!(0, shared_utils_1.isString)(originalValue)) {\n                return `${originalValue}`;\n            }\n        }\n        else if (this.options.items === Boolean) {\n            if (typeof originalValue !== 'boolean') {\n                throw this.exceptionFactory(`${(0, shared_utils_1.isUndefined)(index) ? '' : `[${index}] `}item must be a boolean value`);\n            }\n        }\n        return originalValue;\n    }\n};\nexports.ParseArrayPipe = ParseArrayPipe;\nexports.ParseArrayPipe = ParseArrayPipe = tslib_1.__decorate([\n    (0, injectable_decorator_1.Injectable)(),\n    tslib_1.__param(0, (0, optional_decorator_1.Optional)()),\n    tslib_1.__metadata(\"design:paramtypes\", [Object])\n], ParseArrayPipe);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ParseBoolPipe = void 0;\nconst tslib_1 = require(\"tslib\");\nconst injectable_decorator_1 = require(\"../decorators/core/injectable.decorator\");\nconst optional_decorator_1 = require(\"../decorators/core/optional.decorator\");\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_error_by_code_util_1 = require(\"../utils/http-error-by-code.util\");\nconst shared_utils_1 = require(\"../utils/shared.utils\");\n/**\n * Defines the built-in ParseBool Pipe\n *\n * @see [Built-in Pipes](https://docs.nestjs.com/pipes#built-in-pipes)\n *\n * @publicApi\n */\nlet ParseBoolPipe = class ParseBoolPipe {\n    constructor(options) {\n        this.options = options;\n        options = options || {};\n        const { exceptionFactory, errorHttpStatusCode = http_status_enum_1.HttpStatus.BAD_REQUEST } = options;\n        this.exceptionFactory =\n            exceptionFactory ||\n                (error => new http_error_by_code_util_1.HttpErrorByCode[errorHttpStatusCode](error));\n    }\n    /**\n     * Method that accesses and performs optional transformation on argument for\n     * in-flight requests.\n     *\n     * @param value currently processed route argument\n     * @param metadata contains metadata about the currently processed route argument\n     */\n    async transform(value, metadata) {\n        if ((0, shared_utils_1.isNil)(value) && this.options?.optional) {\n            return value;\n        }\n        if (this.isTrue(value)) {\n            return true;\n        }\n        if (this.isFalse(value)) {\n            return false;\n        }\n        throw this.exceptionFactory('Validation failed (boolean string is expected)');\n    }\n    /**\n     * @param value currently processed route argument\n     * @returns `true` if `value` is said 'true', ie., if it is equal to the boolean\n     * `true` or the string `\"true\"`\n     */\n    isTrue(value) {\n        return value === true || value === 'true';\n    }\n    /**\n     * @param value currently processed route argument\n     * @returns `true` if `value` is said 'false', ie., if it is equal to the boolean\n     * `false` or the string `\"false\"`\n     */\n    isFalse(value) {\n        return value === false || value === 'false';\n    }\n};\nexports.ParseBoolPipe = ParseBoolPipe;\nexports.ParseBoolPipe = ParseBoolPipe = tslib_1.__decorate([\n    (0, injectable_decorator_1.Injectable)(),\n    tslib_1.__param(0, (0, optional_decorator_1.Optional)()),\n    tslib_1.__metadata(\"design:paramtypes\", [Object])\n], ParseBoolPipe);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ParseDatePipe = void 0;\nconst tslib_1 = require(\"tslib\");\nconst injectable_decorator_1 = require(\"../decorators/core/injectable.decorator\");\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_error_by_code_util_1 = require(\"../utils/http-error-by-code.util\");\nconst shared_utils_1 = require(\"../utils/shared.utils\");\nlet ParseDatePipe = class ParseDatePipe {\n    constructor(options = {}) {\n        this.options = options;\n        const { exceptionFactory, errorHttpStatusCode = http_status_enum_1.HttpStatus.BAD_REQUEST } = options;\n        this.exceptionFactory =\n            exceptionFactory ||\n                (error => new http_error_by_code_util_1.HttpErrorByCode[errorHttpStatusCode](error));\n    }\n    /**\n     * Method that accesses and performs optional transformation on argument for\n     * in-flight requests.\n     *\n     * @param value currently processed route argument\n     * @param metadata contains metadata about the currently processed route argument\n     */\n    transform(value) {\n        if (this.options.optional && (0, shared_utils_1.isNil)(value)) {\n            return this.options.default ? this.options.default() : value;\n        }\n        if (!value) {\n            throw this.exceptionFactory('Validation failed (no Date provided)');\n        }\n        const transformedValue = new Date(value);\n        if (isNaN(transformedValue.getTime())) {\n            throw this.exceptionFactory('Validation failed (invalid date format)');\n        }\n        return transformedValue;\n    }\n};\nexports.ParseDatePipe = ParseDatePipe;\nexports.ParseDatePipe = ParseDatePipe = tslib_1.__decorate([\n    (0, injectable_decorator_1.Injectable)(),\n    tslib_1.__metadata(\"design:paramtypes\", [Object])\n], ParseDatePipe);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ParseEnumPipe = void 0;\nconst tslib_1 = require(\"tslib\");\nconst core_1 = require(\"../decorators/core\");\nconst index_1 = require(\"../index\");\nconst http_error_by_code_util_1 = require(\"../utils/http-error-by-code.util\");\nconst shared_utils_1 = require(\"../utils/shared.utils\");\n/**\n * Defines the built-in ParseEnum Pipe\n *\n * @see [Built-in Pipes](https://docs.nestjs.com/pipes#built-in-pipes)\n *\n * @publicApi\n */\nlet ParseEnumPipe = class ParseEnumPipe {\n    constructor(enumType, options) {\n        this.enumType = enumType;\n        this.options = options;\n        if (!enumType) {\n            throw new Error(`\"ParseEnumPipe\" requires \"enumType\" argument specified (to validate input values).`);\n        }\n        options = options || {};\n        const { exceptionFactory, errorHttpStatusCode = index_1.HttpStatus.BAD_REQUEST } = options;\n        this.exceptionFactory =\n            exceptionFactory ||\n                (error => new http_error_by_code_util_1.HttpErrorByCode[errorHttpStatusCode](error));\n    }\n    /**\n     * Method that accesses and performs optional transformation on argument for\n     * in-flight requests.\n     *\n     * @param value currently processed route argument\n     * @param metadata contains metadata about the currently processed route argument\n     */\n    async transform(value, metadata) {\n        if ((0, shared_utils_1.isNil)(value) && this.options?.optional) {\n            return value;\n        }\n        if (!this.isEnum(value)) {\n            throw this.exceptionFactory('Validation failed (enum string is expected)');\n        }\n        return value;\n    }\n    isEnum(value) {\n        const enumValues = Object.keys(this.enumType).map(item => this.enumType[item]);\n        return enumValues.includes(value);\n    }\n};\nexports.ParseEnumPipe = ParseEnumPipe;\nexports.ParseEnumPipe = ParseEnumPipe = tslib_1.__decorate([\n    (0, core_1.Injectable)(),\n    tslib_1.__param(1, (0, core_1.Optional)()),\n    tslib_1.__metadata(\"design:paramtypes\", [Object, Object])\n], ParseEnumPipe);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ParseFloatPipe = void 0;\nconst tslib_1 = require(\"tslib\");\nconst core_1 = require(\"../decorators/core\");\nconst index_1 = require(\"../index\");\nconst http_error_by_code_util_1 = require(\"../utils/http-error-by-code.util\");\nconst shared_utils_1 = require(\"../utils/shared.utils\");\n/**\n * Defines the built-in ParseFloat Pipe\n *\n * @see [Built-in Pipes](https://docs.nestjs.com/pipes#built-in-pipes)\n *\n * @publicApi\n */\nlet ParseFloatPipe = class ParseFloatPipe {\n    constructor(options) {\n        this.options = options;\n        options = options || {};\n        const { exceptionFactory, errorHttpStatusCode = index_1.HttpStatus.BAD_REQUEST } = options;\n        this.exceptionFactory =\n            exceptionFactory ||\n                (error => new http_error_by_code_util_1.HttpErrorByCode[errorHttpStatusCode](error));\n    }\n    /**\n     * Method that accesses and performs optional transformation on argument for\n     * in-flight requests.\n     *\n     * @param value currently processed route argument\n     * @param metadata contains metadata about the currently processed route argument\n     */\n    async transform(value, metadata) {\n        if ((0, shared_utils_1.isNil)(value) && this.options?.optional) {\n            return value;\n        }\n        if (!this.isNumeric(value)) {\n            throw this.exceptionFactory('Validation failed (numeric string is expected)');\n        }\n        return parseFloat(value);\n    }\n    /**\n     * @param value currently processed route argument\n     * @returns `true` if `value` is a valid float number\n     */\n    isNumeric(value) {\n        return (['string', 'number'].includes(typeof value) &&\n            !isNaN(parseFloat(value)) &&\n            isFinite(value));\n    }\n};\nexports.ParseFloatPipe = ParseFloatPipe;\nexports.ParseFloatPipe = ParseFloatPipe = tslib_1.__decorate([\n    (0, core_1.Injectable)(),\n    tslib_1.__param(0, (0, core_1.Optional)()),\n    tslib_1.__metadata(\"design:paramtypes\", [Object])\n], ParseFloatPipe);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ParseIntPipe = void 0;\nconst tslib_1 = require(\"tslib\");\nconst injectable_decorator_1 = require(\"../decorators/core/injectable.decorator\");\nconst optional_decorator_1 = require(\"../decorators/core/optional.decorator\");\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_error_by_code_util_1 = require(\"../utils/http-error-by-code.util\");\nconst shared_utils_1 = require(\"../utils/shared.utils\");\n/**\n * Defines the built-in ParseInt Pipe\n *\n * @see [Built-in Pipes](https://docs.nestjs.com/pipes#built-in-pipes)\n *\n * @publicApi\n */\nlet ParseIntPipe = class ParseIntPipe {\n    constructor(options) {\n        this.options = options;\n        options = options || {};\n        const { exceptionFactory, errorHttpStatusCode = http_status_enum_1.HttpStatus.BAD_REQUEST } = options;\n        this.exceptionFactory =\n            exceptionFactory ||\n                (error => new http_error_by_code_util_1.HttpErrorByCode[errorHttpStatusCode](error));\n    }\n    /**\n     * Method that accesses and performs optional transformation on argument for\n     * in-flight requests.\n     *\n     * @param value currently processed route argument\n     * @param metadata contains metadata about the currently processed route argument\n     */\n    async transform(value, metadata) {\n        if ((0, shared_utils_1.isNil)(value) && this.options?.optional) {\n            return value;\n        }\n        if (!this.isNumeric(value)) {\n            throw this.exceptionFactory('Validation failed (numeric string is expected)');\n        }\n        return parseInt(value, 10);\n    }\n    /**\n     * @param value currently processed route argument\n     * @returns `true` if `value` is a valid integer number\n     */\n    isNumeric(value) {\n        return (['string', 'number'].includes(typeof value) &&\n            /^-?\\d+$/.test(value) &&\n            isFinite(value));\n    }\n};\nexports.ParseIntPipe = ParseIntPipe;\nexports.ParseIntPipe = ParseIntPipe = tslib_1.__decorate([\n    (0, injectable_decorator_1.Injectable)(),\n    tslib_1.__param(0, (0, optional_decorator_1.Optional)()),\n    tslib_1.__metadata(\"design:paramtypes\", [Object])\n], ParseIntPipe);\n","\"use strict\";\nvar ParseUUIDPipe_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ParseUUIDPipe = void 0;\nconst tslib_1 = require(\"tslib\");\nconst injectable_decorator_1 = require(\"../decorators/core/injectable.decorator\");\nconst optional_decorator_1 = require(\"../decorators/core/optional.decorator\");\nconst http_status_enum_1 = require(\"../enums/http-status.enum\");\nconst http_error_by_code_util_1 = require(\"../utils/http-error-by-code.util\");\nconst shared_utils_1 = require(\"../utils/shared.utils\");\n/**\n * Defines the built-in ParseUUID Pipe\n *\n * @see [Built-in Pipes](https://docs.nestjs.com/pipes#built-in-pipes)\n *\n * @publicApi\n */\nlet ParseUUIDPipe = ParseUUIDPipe_1 = class ParseUUIDPipe {\n    constructor(options) {\n        this.options = options;\n        options = options || {};\n        const { exceptionFactory, errorHttpStatusCode = http_status_enum_1.HttpStatus.BAD_REQUEST, version, } = options;\n        this.version = version;\n        this.exceptionFactory =\n            exceptionFactory ||\n                (error => new http_error_by_code_util_1.HttpErrorByCode[errorHttpStatusCode](error));\n    }\n    async transform(value, metadata) {\n        if ((0, shared_utils_1.isNil)(value) && this.options?.optional) {\n            return value;\n        }\n        if (!this.isUUID(value, this.version)) {\n            throw this.exceptionFactory(`Validation failed (uuid${this.version ? ` v ${this.version}` : ''} is expected)`);\n        }\n        return value;\n    }\n    isUUID(str, version = 'all') {\n        if (!(0, shared_utils_1.isString)(str)) {\n            throw this.exceptionFactory('The value passed as UUID is not a string');\n        }\n        const pattern = ParseUUIDPipe_1.uuidRegExps[version];\n        return pattern?.test(str);\n    }\n};\nexports.ParseUUIDPipe = ParseUUIDPipe;\nParseUUIDPipe.uuidRegExps = {\n    3: /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,\n    4: /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,\n    5: /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,\n    7: /^[0-9A-F]{8}-[0-9A-F]{4}-7[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,\n    all: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i,\n};\nexports.ParseUUIDPipe = ParseUUIDPipe = ParseUUIDPipe_1 = tslib_1.__decorate([\n    (0, injectable_decorator_1.Injectable)(),\n    tslib_1.__param(0, (0, optional_decorator_1.Optional)()),\n    tslib_1.__metadata(\"design:paramtypes\", [Object])\n], ParseUUIDPipe);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./default-value.pipe\"), exports);\ntslib_1.__exportStar(require(\"./file\"), exports);\ntslib_1.__exportStar(require(\"./parse-array.pipe\"), exports);\ntslib_1.__exportStar(require(\"./parse-bool.pipe\"), exports);\ntslib_1.__exportStar(require(\"./parse-date.pipe\"), exports);\ntslib_1.__exportStar(require(\"./parse-enum.pipe\"), exports);\ntslib_1.__exportStar(require(\"./parse-float.pipe\"), exports);\ntslib_1.__exportStar(require(\"./parse-int.pipe\"), exports);\ntslib_1.__exportStar(require(\"./parse-uuid.pipe\"), exports);\ntslib_1.__exportStar(require(\"./validation.pipe\"), exports);\n","/**\n * Returns true if the object is a function.\n * @param value The value to check\n */\nexport function isFunction(value: any): value is (...args: any[]) => any {\n  return typeof value === 'function';\n}\n","import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction } from '../types';\nimport { isFunction } from './isFunction';\n\n/**\n * Used to determine if an object is an Observable with a lift function.\n */\nexport function hasLift(source: any): source is { lift: InstanceType<typeof Observable>['lift'] } {\n  return isFunction(source?.lift);\n}\n\n/**\n * Creates an `OperatorFunction`. Used to define operators throughout the library in a concise way.\n * @param init The logic to connect the liftedSource to the subscriber at the moment of subscription.\n */\nexport function operate<T, R>(\n  init: (liftedSource: Observable<T>, subscriber: Subscriber<R>) => (() => void) | void\n): OperatorFunction<T, R> {\n  return (source: Observable<T>) => {\n    if (hasLift(source)) {\n      return source.lift(function (this: Subscriber<R>, liftedSource: Observable<T>) {\n        try {\n          return init(liftedSource, this);\n        } catch (err) {\n          this.error(err);\n        }\n      });\n    }\n    throw new TypeError('Unable to lift unknown Observable type');\n  };\n}\n","export const isArrayLike = (<T>(x: any): x is ArrayLike<T> => x && typeof x.length === 'number' && typeof x !== 'function');","import { isFunction } from \"./isFunction\";\n\n/**\n * Tests to see if the object is \"thennable\".\n * @param value the object to test\n */\nexport function isPromise(value: any): value is PromiseLike<any> {\n  return isFunction(value?.then);\n}\n","/**\n * Used to create Error subclasses until the community moves away from ES5.\n *\n * This is because compiling from TypeScript down to ES5 has issues with subclassing Errors\n * as well as other built-in types: https://github.com/Microsoft/TypeScript/issues/12123\n *\n * @param createImpl A factory function to create the actual constructor implementation. The returned\n * function should be a named function that calls `_super` internally.\n */\nexport function createErrorClass<T>(createImpl: (_super: any) => any): T {\n  const _super = (instance: any) => {\n    Error.call(instance);\n    instance.stack = new Error().stack;\n  };\n\n  const ctorFunc = createImpl(_super);\n  ctorFunc.prototype = Object.create(Error.prototype);\n  ctorFunc.prototype.constructor = ctorFunc;\n  return ctorFunc;\n}\n","import { createErrorClass } from './createErrorClass';\n\nexport interface UnsubscriptionError extends Error {\n  readonly errors: any[];\n}\n\nexport interface UnsubscriptionErrorCtor {\n  /**\n   * @deprecated Internal implementation detail. Do not construct error instances.\n   * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n   */\n  new (errors: any[]): UnsubscriptionError;\n}\n\n/**\n * An error thrown when one or more errors have occurred during the\n * `unsubscribe` of a {@link Subscription}.\n */\nexport const UnsubscriptionError: UnsubscriptionErrorCtor = createErrorClass(\n  (_super) =>\n    function UnsubscriptionErrorImpl(this: any, errors: (Error | string)[]) {\n      _super(this);\n      this.message = errors\n        ? `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n  ')}`\n        : '';\n      this.name = 'UnsubscriptionError';\n      this.errors = errors;\n    }\n);\n","/**\n * Removes an item from an array, mutating it.\n * @param arr The array to remove the item from\n * @param item The item to remove\n */\nexport function arrRemove<T>(arr: T[] | undefined | null, item: T) {\n  if (arr) {\n    const index = arr.indexOf(item);\n    0 <= index && arr.splice(index, 1);\n  }\n}\n","import { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { SubscriptionLike, TeardownLogic, Unsubscribable } from './types';\nimport { arrRemove } from './util/arrRemove';\n\n/**\n * Represents a disposable resource, such as the execution of an Observable. A\n * Subscription has one important method, `unsubscribe`, that takes no argument\n * and just disposes the resource held by the subscription.\n *\n * Additionally, subscriptions may be grouped together through the `add()`\n * method, which will attach a child Subscription to the current Subscription.\n * When a Subscription is unsubscribed, all its children (and its grandchildren)\n * will be unsubscribed as well.\n */\nexport class Subscription implements SubscriptionLike {\n  public static EMPTY = (() => {\n    const empty = new Subscription();\n    empty.closed = true;\n    return empty;\n  })();\n\n  /**\n   * A flag to indicate whether this Subscription has already been unsubscribed.\n   */\n  public closed = false;\n\n  private _parentage: Subscription[] | Subscription | null = null;\n\n  /**\n   * The list of registered finalizers to execute upon unsubscription. Adding and removing from this\n   * list occurs in the {@link #add} and {@link #remove} methods.\n   */\n  private _finalizers: Exclude<TeardownLogic, void>[] | null = null;\n\n  /**\n   * @param initialTeardown A function executed first as part of the finalization\n   * process that is kicked off when {@link #unsubscribe} is called.\n   */\n  constructor(private initialTeardown?: () => void) {}\n\n  /**\n   * Disposes the resources held by the subscription. May, for instance, cancel\n   * an ongoing Observable execution or cancel any other type of work that\n   * started when the Subscription was created.\n   */\n  unsubscribe(): void {\n    let errors: any[] | undefined;\n\n    if (!this.closed) {\n      this.closed = true;\n\n      // Remove this from it's parents.\n      const { _parentage } = this;\n      if (_parentage) {\n        this._parentage = null;\n        if (Array.isArray(_parentage)) {\n          for (const parent of _parentage) {\n            parent.remove(this);\n          }\n        } else {\n          _parentage.remove(this);\n        }\n      }\n\n      const { initialTeardown: initialFinalizer } = this;\n      if (isFunction(initialFinalizer)) {\n        try {\n          initialFinalizer();\n        } catch (e) {\n          errors = e instanceof UnsubscriptionError ? e.errors : [e];\n        }\n      }\n\n      const { _finalizers } = this;\n      if (_finalizers) {\n        this._finalizers = null;\n        for (const finalizer of _finalizers) {\n          try {\n            execFinalizer(finalizer);\n          } catch (err) {\n            errors = errors ?? [];\n            if (err instanceof UnsubscriptionError) {\n              errors = [...errors, ...err.errors];\n            } else {\n              errors.push(err);\n            }\n          }\n        }\n      }\n\n      if (errors) {\n        throw new UnsubscriptionError(errors);\n      }\n    }\n  }\n\n  /**\n   * Adds a finalizer to this subscription, so that finalization will be unsubscribed/called\n   * when this subscription is unsubscribed. If this subscription is already {@link #closed},\n   * because it has already been unsubscribed, then whatever finalizer is passed to it\n   * will automatically be executed (unless the finalizer itself is also a closed subscription).\n   *\n   * Closed Subscriptions cannot be added as finalizers to any subscription. Adding a closed\n   * subscription to a any subscription will result in no operation. (A noop).\n   *\n   * Adding a subscription to itself, or adding `null` or `undefined` will not perform any\n   * operation at all. (A noop).\n   *\n   * `Subscription` instances that are added to this instance will automatically remove themselves\n   * if they are unsubscribed. Functions and {@link Unsubscribable} objects that you wish to remove\n   * will need to be removed manually with {@link #remove}\n   *\n   * @param teardown The finalization logic to add to this subscription.\n   */\n  add(teardown: TeardownLogic): void {\n    // Only add the finalizer if it's not undefined\n    // and don't add a subscription to itself.\n    if (teardown && teardown !== this) {\n      if (this.closed) {\n        // If this subscription is already closed,\n        // execute whatever finalizer is handed to it automatically.\n        execFinalizer(teardown);\n      } else {\n        if (teardown instanceof Subscription) {\n          // We don't add closed subscriptions, and we don't add the same subscription\n          // twice. Subscription unsubscribe is idempotent.\n          if (teardown.closed || teardown._hasParent(this)) {\n            return;\n          }\n          teardown._addParent(this);\n        }\n        (this._finalizers = this._finalizers ?? []).push(teardown);\n      }\n    }\n  }\n\n  /**\n   * Checks to see if a this subscription already has a particular parent.\n   * This will signal that this subscription has already been added to the parent in question.\n   * @param parent the parent to check for\n   */\n  private _hasParent(parent: Subscription) {\n    const { _parentage } = this;\n    return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n  }\n\n  /**\n   * Adds a parent to this subscription so it can be removed from the parent if it\n   * unsubscribes on it's own.\n   *\n   * NOTE: THIS ASSUMES THAT {@link _hasParent} HAS ALREADY BEEN CHECKED.\n   * @param parent The parent subscription to add\n   */\n  private _addParent(parent: Subscription) {\n    const { _parentage } = this;\n    this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n  }\n\n  /**\n   * Called on a child when it is removed via {@link #remove}.\n   * @param parent The parent to remove\n   */\n  private _removeParent(parent: Subscription) {\n    const { _parentage } = this;\n    if (_parentage === parent) {\n      this._parentage = null;\n    } else if (Array.isArray(_parentage)) {\n      arrRemove(_parentage, parent);\n    }\n  }\n\n  /**\n   * Removes a finalizer from this subscription that was previously added with the {@link #add} method.\n   *\n   * Note that `Subscription` instances, when unsubscribed, will automatically remove themselves\n   * from every other `Subscription` they have been added to. This means that using the `remove` method\n   * is not a common thing and should be used thoughtfully.\n   *\n   * If you add the same finalizer instance of a function or an unsubscribable object to a `Subscription` instance\n   * more than once, you will need to call `remove` the same number of times to remove all instances.\n   *\n   * All finalizer instances are removed to free up memory upon unsubscription.\n   *\n   * @param teardown The finalizer to remove from this subscription\n   */\n  remove(teardown: Exclude<TeardownLogic, void>): void {\n    const { _finalizers } = this;\n    _finalizers && arrRemove(_finalizers, teardown);\n\n    if (teardown instanceof Subscription) {\n      teardown._removeParent(this);\n    }\n  }\n}\n\nexport const EMPTY_SUBSCRIPTION = Subscription.EMPTY;\n\nexport function isSubscription(value: any): value is Subscription {\n  return (\n    value instanceof Subscription ||\n    (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe))\n  );\n}\n\nfunction execFinalizer(finalizer: Unsubscribable | (() => void)) {\n  if (isFunction(finalizer)) {\n    finalizer();\n  } else {\n    finalizer.unsubscribe();\n  }\n}\n","import { Subscriber } from './Subscriber';\nimport { ObservableNotification } from './types';\n\n/**\n * The {@link GlobalConfig} object for RxJS. It is used to configure things\n * like how to react on unhandled errors.\n */\nexport const config: GlobalConfig = {\n  onUnhandledError: null,\n  onStoppedNotification: null,\n  Promise: undefined,\n  useDeprecatedSynchronousErrorHandling: false,\n  useDeprecatedNextContext: false,\n};\n\n/**\n * The global configuration object for RxJS, used to configure things\n * like how to react on unhandled errors. Accessible via {@link config}\n * object.\n */\nexport interface GlobalConfig {\n  /**\n   * A registration point for unhandled errors from RxJS. These are errors that\n   * cannot were not handled by consuming code in the usual subscription path. For\n   * example, if you have this configured, and you subscribe to an observable without\n   * providing an error handler, errors from that subscription will end up here. This\n   * will _always_ be called asynchronously on another job in the runtime. This is because\n   * we do not want errors thrown in this user-configured handler to interfere with the\n   * behavior of the library.\n   */\n  onUnhandledError: ((err: any) => void) | null;\n\n  /**\n   * A registration point for notifications that cannot be sent to subscribers because they\n   * have completed, errored or have been explicitly unsubscribed. By default, next, complete\n   * and error notifications sent to stopped subscribers are noops. However, sometimes callers\n   * might want a different behavior. For example, with sources that attempt to report errors\n   * to stopped subscribers, a caller can configure RxJS to throw an unhandled error instead.\n   * This will _always_ be called asynchronously on another job in the runtime. This is because\n   * we do not want errors thrown in this user-configured handler to interfere with the\n   * behavior of the library.\n   */\n  onStoppedNotification: ((notification: ObservableNotification<any>, subscriber: Subscriber<any>) => void) | null;\n\n  /**\n   * The promise constructor used by default for {@link Observable#toPromise toPromise} and {@link Observable#forEach forEach}\n   * methods.\n   *\n   * @deprecated As of version 8, RxJS will no longer support this sort of injection of a\n   * Promise constructor. If you need a Promise implementation other than native promises,\n   * please polyfill/patch Promise as you see appropriate. Will be removed in v8.\n   */\n  Promise?: PromiseConstructorLike;\n\n  /**\n   * If true, turns on synchronous error rethrowing, which is a deprecated behavior\n   * in v6 and higher. This behavior enables bad patterns like wrapping a subscribe\n   * call in a try/catch block. It also enables producer interference, a nasty bug\n   * where a multicast can be broken for all observers by a downstream consumer with\n   * an unhandled error. DO NOT USE THIS FLAG UNLESS IT'S NEEDED TO BUY TIME\n   * FOR MIGRATION REASONS.\n   *\n   * @deprecated As of version 8, RxJS will no longer support synchronous throwing\n   * of unhandled errors. All errors will be thrown on a separate call stack to prevent bad\n   * behaviors described above. Will be removed in v8.\n   */\n  useDeprecatedSynchronousErrorHandling: boolean;\n\n  /**\n   * If true, enables an as-of-yet undocumented feature from v5: The ability to access\n   * `unsubscribe()` via `this` context in `next` functions created in observers passed\n   * to `subscribe`.\n   *\n   * This is being removed because the performance was severely problematic, and it could also cause\n   * issues when types other than POJOs are passed to subscribe as subscribers, as they will likely have\n   * their `this` context overwritten.\n   *\n   * @deprecated As of version 8, RxJS will no longer support altering the\n   * context of next functions provided as part of an observer to Subscribe. Instead,\n   * you will have access to a subscription or a signal or token that will allow you to do things like\n   * unsubscribe and test closed status. Will be removed in v8.\n   */\n  useDeprecatedNextContext: boolean;\n}\n","import type { TimerHandle } from './timerHandle';\ntype SetTimeoutFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;\ntype ClearTimeoutFunction = (handle: TimerHandle) => void;\n\ninterface TimeoutProvider {\n  setTimeout: SetTimeoutFunction;\n  clearTimeout: ClearTimeoutFunction;\n  delegate:\n    | {\n        setTimeout: SetTimeoutFunction;\n        clearTimeout: ClearTimeoutFunction;\n      }\n    | undefined;\n}\n\nexport const timeoutProvider: TimeoutProvider = {\n  // When accessing the delegate, use the variable rather than `this` so that\n  // the functions can be called without being bound to the provider.\n  setTimeout(handler: () => void, timeout?: number, ...args) {\n    const { delegate } = timeoutProvider;\n    if (delegate?.setTimeout) {\n      return delegate.setTimeout(handler, timeout, ...args);\n    }\n    return setTimeout(handler, timeout, ...args);\n  },\n  clearTimeout(handle) {\n    const { delegate } = timeoutProvider;\n    return (delegate?.clearTimeout || clearTimeout)(handle as any);\n  },\n  delegate: undefined,\n};\n","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\n\n/**\n * Handles an error on another job either with the user-configured {@link onUnhandledError},\n * or by throwing it on that new job so it can be picked up by `window.onerror`, `process.on('error')`, etc.\n *\n * This should be called whenever there is an error that is out-of-band with the subscription\n * or when an error hits a terminal boundary of the subscription and no error handler was provided.\n *\n * @param err the error to report\n */\nexport function reportUnhandledError(err: any) {\n  timeoutProvider.setTimeout(() => {\n    const { onUnhandledError } = config;\n    if (onUnhandledError) {\n      // Execute the user-configured error handler.\n      onUnhandledError(err);\n    } else {\n      // Throw so it is picked up by the runtime's uncaught error mechanism.\n      throw err;\n    }\n  });\n}\n","/* tslint:disable:no-empty */\nexport function noop() { }\n","import { CompleteNotification, NextNotification, ErrorNotification } from './types';\n\n/**\n * A completion object optimized for memory use and created to be the\n * same \"shape\" as other notifications in v8.\n * @internal\n */\nexport const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined) as CompleteNotification)();\n\n/**\n * Internal use only. Creates an optimized error notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function errorNotification(error: any): ErrorNotification {\n  return createNotification('E', undefined, error) as any;\n}\n\n/**\n * Internal use only. Creates an optimized next notification that is the same \"shape\"\n * as other notifications.\n * @internal\n */\nexport function nextNotification<T>(value: T) {\n  return createNotification('N', value, undefined) as NextNotification<T>;\n}\n\n/**\n * Ensures that all notifications created internally have the same \"shape\" in v8.\n *\n * TODO: This is only exported to support a crazy legacy test in `groupBy`.\n * @internal\n */\nexport function createNotification(kind: 'N' | 'E' | 'C', value: any, error: any) {\n  return {\n    kind,\n    value,\n    error,\n  };\n}\n","import { config } from '../config';\n\nlet context: { errorThrown: boolean; error: any } | null = null;\n\n/**\n * Handles dealing with errors for super-gross mode. Creates a context, in which\n * any synchronously thrown errors will be passed to {@link captureError}. Which\n * will record the error such that it will be rethrown after the call back is complete.\n * TODO: Remove in v8\n * @param cb An immediately executed function.\n */\nexport function errorContext(cb: () => void) {\n  if (config.useDeprecatedSynchronousErrorHandling) {\n    const isRoot = !context;\n    if (isRoot) {\n      context = { errorThrown: false, error: null };\n    }\n    cb();\n    if (isRoot) {\n      const { errorThrown, error } = context!;\n      context = null;\n      if (errorThrown) {\n        throw error;\n      }\n    }\n  } else {\n    // This is the general non-deprecated path for everyone that\n    // isn't crazy enough to use super-gross mode (useDeprecatedSynchronousErrorHandling)\n    cb();\n  }\n}\n\n/**\n * Captures errors only in super-gross mode.\n * @param err the error to capture\n */\nexport function captureError(err: any) {\n  if (config.useDeprecatedSynchronousErrorHandling && context) {\n    context.errorThrown = true;\n    context.error = err;\n  }\n}\n","import { isFunction } from './util/isFunction';\nimport { Observer, ObservableNotification } from './types';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\n\n/**\n * Implements the {@link Observer} interface and extends the\n * {@link Subscription} class. While the {@link Observer} is the public API for\n * consuming the values of an {@link Observable}, all Observers get converted to\n * a Subscriber, in order to provide Subscription-like capabilities such as\n * `unsubscribe`. Subscriber is a common type in RxJS, and crucial for\n * implementing operators, but it is rarely used as a public API.\n */\nexport class Subscriber<T> extends Subscription implements Observer<T> {\n  /**\n   * A static factory for a Subscriber, given a (potentially partial) definition\n   * of an Observer.\n   * @param next The `next` callback of an Observer.\n   * @param error The `error` callback of an\n   * Observer.\n   * @param complete The `complete` callback of an\n   * Observer.\n   * @return A Subscriber wrapping the (partially defined)\n   * Observer represented by the given arguments.\n   * @deprecated Do not use. Will be removed in v8. There is no replacement for this\n   * method, and there is no reason to be creating instances of `Subscriber` directly.\n   * If you have a specific use case, please file an issue.\n   */\n  static create<T>(next?: (x?: T) => void, error?: (e?: any) => void, complete?: () => void): Subscriber<T> {\n    return new SafeSubscriber(next, error, complete);\n  }\n\n  /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n  protected isStopped: boolean = false;\n  /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n  protected destination: Subscriber<any> | Observer<any>; // this `any` is the escape hatch to erase extra type param (e.g. R)\n\n  /**\n   * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n   * There is no reason to directly create an instance of Subscriber. This type is exported for typings reasons.\n   */\n  constructor(destination?: Subscriber<any> | Observer<any>) {\n    super();\n    if (destination) {\n      this.destination = destination;\n      // Automatically chain subscriptions together here.\n      // if destination is a Subscription, then it is a Subscriber.\n      if (isSubscription(destination)) {\n        destination.add(this);\n      }\n    } else {\n      this.destination = EMPTY_OBSERVER;\n    }\n  }\n\n  /**\n   * The {@link Observer} callback to receive notifications of type `next` from\n   * the Observable, with a value. The Observable may call this method 0 or more\n   * times.\n   * @param value The `next` value.\n   */\n  next(value: T): void {\n    if (this.isStopped) {\n      handleStoppedNotification(nextNotification(value), this);\n    } else {\n      this._next(value!);\n    }\n  }\n\n  /**\n   * The {@link Observer} callback to receive notifications of type `error` from\n   * the Observable, with an attached `Error`. Notifies the Observer that\n   * the Observable has experienced an error condition.\n   * @param err The `error` exception.\n   */\n  error(err?: any): void {\n    if (this.isStopped) {\n      handleStoppedNotification(errorNotification(err), this);\n    } else {\n      this.isStopped = true;\n      this._error(err);\n    }\n  }\n\n  /**\n   * The {@link Observer} callback to receive a valueless notification of type\n   * `complete` from the Observable. Notifies the Observer that the Observable\n   * has finished sending push-based notifications.\n   */\n  complete(): void {\n    if (this.isStopped) {\n      handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n    } else {\n      this.isStopped = true;\n      this._complete();\n    }\n  }\n\n  unsubscribe(): void {\n    if (!this.closed) {\n      this.isStopped = true;\n      super.unsubscribe();\n      this.destination = null!;\n    }\n  }\n\n  protected _next(value: T): void {\n    this.destination.next(value);\n  }\n\n  protected _error(err: any): void {\n    try {\n      this.destination.error(err);\n    } finally {\n      this.unsubscribe();\n    }\n  }\n\n  protected _complete(): void {\n    try {\n      this.destination.complete();\n    } finally {\n      this.unsubscribe();\n    }\n  }\n}\n\n/**\n * This bind is captured here because we want to be able to have\n * compatibility with monoid libraries that tend to use a method named\n * `bind`. In particular, a library called Monio requires this.\n */\nconst _bind = Function.prototype.bind;\n\nfunction bind<Fn extends (...args: any[]) => any>(fn: Fn, thisArg: any): Fn {\n  return _bind.call(fn, thisArg);\n}\n\n/**\n * Internal optimization only, DO NOT EXPOSE.\n * @internal\n */\nclass ConsumerObserver<T> implements Observer<T> {\n  constructor(private partialObserver: Partial<Observer<T>>) {}\n\n  next(value: T): void {\n    const { partialObserver } = this;\n    if (partialObserver.next) {\n      try {\n        partialObserver.next(value);\n      } catch (error) {\n        handleUnhandledError(error);\n      }\n    }\n  }\n\n  error(err: any): void {\n    const { partialObserver } = this;\n    if (partialObserver.error) {\n      try {\n        partialObserver.error(err);\n      } catch (error) {\n        handleUnhandledError(error);\n      }\n    } else {\n      handleUnhandledError(err);\n    }\n  }\n\n  complete(): void {\n    const { partialObserver } = this;\n    if (partialObserver.complete) {\n      try {\n        partialObserver.complete();\n      } catch (error) {\n        handleUnhandledError(error);\n      }\n    }\n  }\n}\n\nexport class SafeSubscriber<T> extends Subscriber<T> {\n  constructor(\n    observerOrNext?: Partial<Observer<T>> | ((value: T) => void) | null,\n    error?: ((e?: any) => void) | null,\n    complete?: (() => void) | null\n  ) {\n    super();\n\n    let partialObserver: Partial<Observer<T>>;\n    if (isFunction(observerOrNext) || !observerOrNext) {\n      // The first argument is a function, not an observer. The next\n      // two arguments *could* be observers, or they could be empty.\n      partialObserver = {\n        next: (observerOrNext ?? undefined) as ((value: T) => void) | undefined,\n        error: error ?? undefined,\n        complete: complete ?? undefined,\n      };\n    } else {\n      // The first argument is a partial observer.\n      let context: any;\n      if (this && config.useDeprecatedNextContext) {\n        // This is a deprecated path that made `this.unsubscribe()` available in\n        // next handler functions passed to subscribe. This only exists behind a flag\n        // now, as it is *very* slow.\n        context = Object.create(observerOrNext);\n        context.unsubscribe = () => this.unsubscribe();\n        partialObserver = {\n          next: observerOrNext.next && bind(observerOrNext.next, context),\n          error: observerOrNext.error && bind(observerOrNext.error, context),\n          complete: observerOrNext.complete && bind(observerOrNext.complete, context),\n        };\n      } else {\n        // The \"normal\" path. Just use the partial observer directly.\n        partialObserver = observerOrNext;\n      }\n    }\n\n    // Wrap the partial observer to ensure it's a full observer, and\n    // make sure proper error handling is accounted for.\n    this.destination = new ConsumerObserver(partialObserver);\n  }\n}\n\nfunction handleUnhandledError(error: any) {\n  if (config.useDeprecatedSynchronousErrorHandling) {\n    captureError(error);\n  } else {\n    // Ideal path, we report this as an unhandled error,\n    // which is thrown on a new call stack.\n    reportUnhandledError(error);\n  }\n}\n\n/**\n * An error handler used when no error handler was supplied\n * to the SafeSubscriber -- meaning no error handler was supplied\n * do the `subscribe` call on our observable.\n * @param err The error to handle\n */\nfunction defaultErrorHandler(err: any) {\n  throw err;\n}\n\n/**\n * A handler for notifications that cannot be sent to a stopped subscriber.\n * @param notification The notification being sent.\n * @param subscriber The stopped subscriber.\n */\nfunction handleStoppedNotification(notification: ObservableNotification<any>, subscriber: Subscriber<any>) {\n  const { onStoppedNotification } = config;\n  onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber));\n}\n\n/**\n * The observer used as a stub for subscriptions where the user did not\n * pass any arguments to `subscribe`. Comes with the default error handling\n * behavior.\n */\nexport const EMPTY_OBSERVER: Readonly<Observer<any>> & { closed: true } = {\n  closed: true,\n  next: noop,\n  error: defaultErrorHandler,\n  complete: noop,\n};\n","/**\n * Symbol.observable or a string \"@@observable\". Used for interop\n *\n * @deprecated We will no longer be exporting this symbol in upcoming versions of RxJS.\n * Instead polyfill and use Symbol.observable directly *or* use https://www.npmjs.com/package/symbol-observable\n */\nexport const observable: string | symbol = (() => (typeof Symbol === 'function' && Symbol.observable) || '@@observable')();\n","/**\n * This function takes one parameter and just returns it. Simply put,\n * this is like `<T>(x: T): T => x`.\n *\n * ## Examples\n *\n * This is useful in some cases when using things like `mergeMap`\n *\n * ```ts\n * import { interval, take, map, range, mergeMap, identity } from 'rxjs';\n *\n * const source$ = interval(1000).pipe(take(5));\n *\n * const result$ = source$.pipe(\n *   map(i => range(i)),\n *   mergeMap(identity) // same as mergeMap(x => x)\n * );\n *\n * result$.subscribe({\n *   next: console.log\n * });\n * ```\n *\n * Or when you want to selectively apply an operator\n *\n * ```ts\n * import { interval, take, identity } from 'rxjs';\n *\n * const shouldLimit = () => Math.random() < 0.5;\n *\n * const source$ = interval(1000);\n *\n * const result$ = source$.pipe(shouldLimit() ? take(5) : identity);\n *\n * result$.subscribe({\n *   next: console.log\n * });\n * ```\n *\n * @param x Any value that is returned by this function\n * @returns The value passed as the first parameter to this function\n */\nexport function identity<T>(x: T): T {\n  return x;\n}\n","import { identity } from './identity';\nimport { UnaryFunction } from '../types';\n\nexport function pipe(): typeof identity;\nexport function pipe<T, A>(fn1: UnaryFunction<T, A>): UnaryFunction<T, A>;\nexport function pipe<T, A, B>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>): UnaryFunction<T, B>;\nexport function pipe<T, A, B, C>(fn1: UnaryFunction<T, A>, fn2: UnaryFunction<A, B>, fn3: UnaryFunction<B, C>): UnaryFunction<T, C>;\nexport function pipe<T, A, B, C, D>(\n  fn1: UnaryFunction<T, A>,\n  fn2: UnaryFunction<A, B>,\n  fn3: UnaryFunction<B, C>,\n  fn4: UnaryFunction<C, D>\n): UnaryFunction<T, D>;\nexport function pipe<T, A, B, C, D, E>(\n  fn1: UnaryFunction<T, A>,\n  fn2: UnaryFunction<A, B>,\n  fn3: UnaryFunction<B, C>,\n  fn4: UnaryFunction<C, D>,\n  fn5: UnaryFunction<D, E>\n): UnaryFunction<T, E>;\nexport function pipe<T, A, B, C, D, E, F>(\n  fn1: UnaryFunction<T, A>,\n  fn2: UnaryFunction<A, B>,\n  fn3: UnaryFunction<B, C>,\n  fn4: UnaryFunction<C, D>,\n  fn5: UnaryFunction<D, E>,\n  fn6: UnaryFunction<E, F>\n): UnaryFunction<T, F>;\nexport function pipe<T, A, B, C, D, E, F, G>(\n  fn1: UnaryFunction<T, A>,\n  fn2: UnaryFunction<A, B>,\n  fn3: UnaryFunction<B, C>,\n  fn4: UnaryFunction<C, D>,\n  fn5: UnaryFunction<D, E>,\n  fn6: UnaryFunction<E, F>,\n  fn7: UnaryFunction<F, G>\n): UnaryFunction<T, G>;\nexport function pipe<T, A, B, C, D, E, F, G, H>(\n  fn1: UnaryFunction<T, A>,\n  fn2: UnaryFunction<A, B>,\n  fn3: UnaryFunction<B, C>,\n  fn4: UnaryFunction<C, D>,\n  fn5: UnaryFunction<D, E>,\n  fn6: UnaryFunction<E, F>,\n  fn7: UnaryFunction<F, G>,\n  fn8: UnaryFunction<G, H>\n): UnaryFunction<T, H>;\nexport function pipe<T, A, B, C, D, E, F, G, H, I>(\n  fn1: UnaryFunction<T, A>,\n  fn2: UnaryFunction<A, B>,\n  fn3: UnaryFunction<B, C>,\n  fn4: UnaryFunction<C, D>,\n  fn5: UnaryFunction<D, E>,\n  fn6: UnaryFunction<E, F>,\n  fn7: UnaryFunction<F, G>,\n  fn8: UnaryFunction<G, H>,\n  fn9: UnaryFunction<H, I>\n): UnaryFunction<T, I>;\nexport function pipe<T, A, B, C, D, E, F, G, H, I>(\n  fn1: UnaryFunction<T, A>,\n  fn2: UnaryFunction<A, B>,\n  fn3: UnaryFunction<B, C>,\n  fn4: UnaryFunction<C, D>,\n  fn5: UnaryFunction<D, E>,\n  fn6: UnaryFunction<E, F>,\n  fn7: UnaryFunction<F, G>,\n  fn8: UnaryFunction<G, H>,\n  fn9: UnaryFunction<H, I>,\n  ...fns: UnaryFunction<any, any>[]\n): UnaryFunction<T, unknown>;\n\n/**\n * pipe() can be called on one or more functions, each of which can take one argument (\"UnaryFunction\")\n * and uses it to return a value.\n * It returns a function that takes one argument, passes it to the first UnaryFunction, and then\n * passes the result to the next one, passes that result to the next one, and so on.  \n */\nexport function pipe(...fns: Array<UnaryFunction<any, any>>): UnaryFunction<any, any> {\n  return pipeFromArray(fns);\n}\n\n/** @internal */\nexport function pipeFromArray<T, R>(fns: Array<UnaryFunction<T, R>>): UnaryFunction<T, R> {\n  if (fns.length === 0) {\n    return identity as UnaryFunction<any, any>;\n  }\n\n  if (fns.length === 1) {\n    return fns[0];\n  }\n\n  return function piped(input: T): R {\n    return fns.reduce((prev: any, fn: UnaryFunction<T, R>) => fn(prev), input as any);\n  };\n}\n","import { Operator } from './Operator';\nimport { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription, Subscription } from './Subscription';\nimport { TeardownLogic, OperatorFunction, Subscribable, Observer } from './types';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A representation of any set of values over any amount of time. This is the most basic building block\n * of RxJS.\n */\nexport class Observable<T> implements Subscribable<T> {\n  /**\n   * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n   */\n  source: Observable<any> | undefined;\n\n  /**\n   * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n   */\n  operator: Operator<any, T> | undefined;\n\n  /**\n   * @param subscribe The function that is called when the Observable is\n   * initially subscribed to. This function is given a Subscriber, to which new values\n   * can be `next`ed, or an `error` method can be called to raise an error, or\n   * `complete` can be called to notify of a successful completion.\n   */\n  constructor(subscribe?: (this: Observable<T>, subscriber: Subscriber<T>) => TeardownLogic) {\n    if (subscribe) {\n      this._subscribe = subscribe;\n    }\n  }\n\n  // HACK: Since TypeScript inherits static properties too, we have to\n  // fight against TypeScript here so Subject can have a different static create signature\n  /**\n   * Creates a new Observable by calling the Observable constructor\n   * @param subscribe the subscriber function to be passed to the Observable constructor\n   * @return A new observable.\n   * @deprecated Use `new Observable()` instead. Will be removed in v8.\n   */\n  static create: (...args: any[]) => any = <T>(subscribe?: (subscriber: Subscriber<T>) => TeardownLogic) => {\n    return new Observable<T>(subscribe);\n  };\n\n  /**\n   * Creates a new Observable, with this Observable instance as the source, and the passed\n   * operator defined as the new observable's operator.\n   * @param operator the operator defining the operation to take on the observable\n   * @return A new observable with the Operator applied.\n   * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n   * If you have implemented an operator using `lift`, it is recommended that you create an\n   * operator by simply returning `new Observable()` directly. See \"Creating new operators from\n   * scratch\" section here: https://rxjs.dev/guide/operators\n   */\n  lift<R>(operator?: Operator<T, R>): Observable<R> {\n    const observable = new Observable<R>();\n    observable.source = this;\n    observable.operator = operator;\n    return observable;\n  }\n\n  subscribe(observerOrNext?: Partial<Observer<T>> | ((value: T) => void)): Subscription;\n  /** @deprecated Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments */\n  subscribe(next?: ((value: T) => void) | null, error?: ((error: any) => void) | null, complete?: (() => void) | null): Subscription;\n  /**\n   * Invokes an execution of an Observable and registers Observer handlers for notifications it will emit.\n   *\n   * <span class=\"informal\">Use it when you have all these Observables, but still nothing is happening.</span>\n   *\n   * `subscribe` is not a regular operator, but a method that calls Observable's internal `subscribe` function. It\n   * might be for example a function that you passed to Observable's constructor, but most of the time it is\n   * a library implementation, which defines what will be emitted by an Observable, and when it be will emitted. This means\n   * that calling `subscribe` is actually the moment when Observable starts its work, not when it is created, as it is often\n   * the thought.\n   *\n   * Apart from starting the execution of an Observable, this method allows you to listen for values\n   * that an Observable emits, as well as for when it completes or errors. You can achieve this in two\n   * of the following ways.\n   *\n   * The first way is creating an object that implements {@link Observer} interface. It should have methods\n   * defined by that interface, but note that it should be just a regular JavaScript object, which you can create\n   * yourself in any way you want (ES6 class, classic function constructor, object literal etc.). In particular, do\n   * not attempt to use any RxJS implementation details to create Observers - you don't need them. Remember also\n   * that your object does not have to implement all methods. If you find yourself creating a method that doesn't\n   * do anything, you can simply omit it. Note however, if the `error` method is not provided and an error happens,\n   * it will be thrown asynchronously. Errors thrown asynchronously cannot be caught using `try`/`catch`. Instead,\n   * use the {@link onUnhandledError} configuration option or use a runtime handler (like `window.onerror` or\n   * `process.on('error)`) to be notified of unhandled errors. Because of this, it's recommended that you provide\n   * an `error` method to avoid missing thrown errors.\n   *\n   * The second way is to give up on Observer object altogether and simply provide callback functions in place of its methods.\n   * This means you can provide three functions as arguments to `subscribe`, where the first function is equivalent\n   * of a `next` method, the second of an `error` method and the third of a `complete` method. Just as in case of an Observer,\n   * if you do not need to listen for something, you can omit a function by passing `undefined` or `null`,\n   * since `subscribe` recognizes these functions by where they were placed in function call. When it comes\n   * to the `error` function, as with an Observer, if not provided, errors emitted by an Observable will be thrown asynchronously.\n   *\n   * You can, however, subscribe with no parameters at all. This may be the case where you're not interested in terminal events\n   * and you also handled emissions internally by using operators (e.g. using `tap`).\n   *\n   * Whichever style of calling `subscribe` you use, in both cases it returns a Subscription object.\n   * This object allows you to call `unsubscribe` on it, which in turn will stop the work that an Observable does and will clean\n   * up all resources that an Observable used. Note that cancelling a subscription will not call `complete` callback\n   * provided to `subscribe` function, which is reserved for a regular completion signal that comes from an Observable.\n   *\n   * Remember that callbacks provided to `subscribe` are not guaranteed to be called asynchronously.\n   * It is an Observable itself that decides when these functions will be called. For example {@link of}\n   * by default emits all its values synchronously. Always check documentation for how given Observable\n   * will behave when subscribed and if its default behavior can be modified with a `scheduler`.\n   *\n   * #### Examples\n   *\n   * Subscribe with an {@link guide/observer Observer}\n   *\n   * ```ts\n   * import { of } from 'rxjs';\n   *\n   * const sumObserver = {\n   *   sum: 0,\n   *   next(value) {\n   *     console.log('Adding: ' + value);\n   *     this.sum = this.sum + value;\n   *   },\n   *   error() {\n   *     // We actually could just remove this method,\n   *     // since we do not really care about errors right now.\n   *   },\n   *   complete() {\n   *     console.log('Sum equals: ' + this.sum);\n   *   }\n   * };\n   *\n   * of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.\n   *   .subscribe(sumObserver);\n   *\n   * // Logs:\n   * // 'Adding: 1'\n   * // 'Adding: 2'\n   * // 'Adding: 3'\n   * // 'Sum equals: 6'\n   * ```\n   *\n   * Subscribe with functions ({@link deprecations/subscribe-arguments deprecated})\n   *\n   * ```ts\n   * import { of } from 'rxjs'\n   *\n   * let sum = 0;\n   *\n   * of(1, 2, 3).subscribe(\n   *   value => {\n   *     console.log('Adding: ' + value);\n   *     sum = sum + value;\n   *   },\n   *   undefined,\n   *   () => console.log('Sum equals: ' + sum)\n   * );\n   *\n   * // Logs:\n   * // 'Adding: 1'\n   * // 'Adding: 2'\n   * // 'Adding: 3'\n   * // 'Sum equals: 6'\n   * ```\n   *\n   * Cancel a subscription\n   *\n   * ```ts\n   * import { interval } from 'rxjs';\n   *\n   * const subscription = interval(1000).subscribe({\n   *   next(num) {\n   *     console.log(num)\n   *   },\n   *   complete() {\n   *     // Will not be called, even when cancelling subscription.\n   *     console.log('completed!');\n   *   }\n   * });\n   *\n   * setTimeout(() => {\n   *   subscription.unsubscribe();\n   *   console.log('unsubscribed!');\n   * }, 2500);\n   *\n   * // Logs:\n   * // 0 after 1s\n   * // 1 after 2s\n   * // 'unsubscribed!' after 2.5s\n   * ```\n   *\n   * @param observerOrNext Either an {@link Observer} with some or all callback methods,\n   * or the `next` handler that is called for each value emitted from the subscribed Observable.\n   * @param error A handler for a terminal event resulting from an error. If no error handler is provided,\n   * the error will be thrown asynchronously as unhandled.\n   * @param complete A handler for a terminal event resulting from successful completion.\n   * @return A subscription reference to the registered handlers.\n   */\n  subscribe(\n    observerOrNext?: Partial<Observer<T>> | ((value: T) => void) | null,\n    error?: ((error: any) => void) | null,\n    complete?: (() => void) | null\n  ): Subscription {\n    const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n\n    errorContext(() => {\n      const { operator, source } = this;\n      subscriber.add(\n        operator\n          ? // We're dealing with a subscription in the\n            // operator chain to one of our lifted operators.\n            operator.call(subscriber, source)\n          : source\n          ? // If `source` has a value, but `operator` does not, something that\n            // had intimate knowledge of our API, like our `Subject`, must have\n            // set it. We're going to just call `_subscribe` directly.\n            this._subscribe(subscriber)\n          : // In all other cases, we're likely wrapping a user-provided initializer\n            // function, so we need to catch errors and handle them appropriately.\n            this._trySubscribe(subscriber)\n      );\n    });\n\n    return subscriber;\n  }\n\n  /** @internal */\n  protected _trySubscribe(sink: Subscriber<T>): TeardownLogic {\n    try {\n      return this._subscribe(sink);\n    } catch (err) {\n      // We don't need to return anything in this case,\n      // because it's just going to try to `add()` to a subscription\n      // above.\n      sink.error(err);\n    }\n  }\n\n  /**\n   * Used as a NON-CANCELLABLE means of subscribing to an observable, for use with\n   * APIs that expect promises, like `async/await`. You cannot unsubscribe from this.\n   *\n   * **WARNING**: Only use this with observables you *know* will complete. If the source\n   * observable does not complete, you will end up with a promise that is hung up, and\n   * potentially all of the state of an async function hanging out in memory. To avoid\n   * this situation, look into adding something like {@link timeout}, {@link take},\n   * {@link takeWhile}, or {@link takeUntil} amongst others.\n   *\n   * #### Example\n   *\n   * ```ts\n   * import { interval, take } from 'rxjs';\n   *\n   * const source$ = interval(1000).pipe(take(4));\n   *\n   * async function getTotal() {\n   *   let total = 0;\n   *\n   *   await source$.forEach(value => {\n   *     total += value;\n   *     console.log('observable -> ' + value);\n   *   });\n   *\n   *   return total;\n   * }\n   *\n   * getTotal().then(\n   *   total => console.log('Total: ' + total)\n   * );\n   *\n   * // Expected:\n   * // 'observable -> 0'\n   * // 'observable -> 1'\n   * // 'observable -> 2'\n   * // 'observable -> 3'\n   * // 'Total: 6'\n   * ```\n   *\n   * @param next A handler for each value emitted by the observable.\n   * @return A promise that either resolves on observable completion or\n   * rejects with the handled error.\n   */\n  forEach(next: (value: T) => void): Promise<void>;\n\n  /**\n   * @param next a handler for each value emitted by the observable\n   * @param promiseCtor a constructor function used to instantiate the Promise\n   * @return a promise that either resolves on observable completion or\n   *  rejects with the handled error\n   * @deprecated Passing a Promise constructor will no longer be available\n   * in upcoming versions of RxJS. This is because it adds weight to the library, for very\n   * little benefit. If you need this functionality, it is recommended that you either\n   * polyfill Promise, or you create an adapter to convert the returned native promise\n   * to whatever promise implementation you wanted. Will be removed in v8.\n   */\n  forEach(next: (value: T) => void, promiseCtor: PromiseConstructorLike): Promise<void>;\n\n  forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise<void> {\n    promiseCtor = getPromiseCtor(promiseCtor);\n\n    return new promiseCtor<void>((resolve, reject) => {\n      const subscriber = new SafeSubscriber<T>({\n        next: (value) => {\n          try {\n            next(value);\n          } catch (err) {\n            reject(err);\n            subscriber.unsubscribe();\n          }\n        },\n        error: reject,\n        complete: resolve,\n      });\n      this.subscribe(subscriber);\n    }) as Promise<void>;\n  }\n\n  /** @internal */\n  protected _subscribe(subscriber: Subscriber<any>): TeardownLogic {\n    return this.source?.subscribe(subscriber);\n  }\n\n  /**\n   * An interop point defined by the es7-observable spec https://github.com/zenparsing/es-observable\n   * @return This instance of the observable.\n   */\n  [Symbol_observable]() {\n    return this;\n  }\n\n  /* tslint:disable:max-line-length */\n  pipe(): Observable<T>;\n  pipe<A>(op1: OperatorFunction<T, A>): Observable<A>;\n  pipe<A, B>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>): Observable<B>;\n  pipe<A, B, C>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>): Observable<C>;\n  pipe<A, B, C, D>(\n    op1: OperatorFunction<T, A>,\n    op2: OperatorFunction<A, B>,\n    op3: OperatorFunction<B, C>,\n    op4: OperatorFunction<C, D>\n  ): Observable<D>;\n  pipe<A, B, C, D, E>(\n    op1: OperatorFunction<T, A>,\n    op2: OperatorFunction<A, B>,\n    op3: OperatorFunction<B, C>,\n    op4: OperatorFunction<C, D>,\n    op5: OperatorFunction<D, E>\n  ): Observable<E>;\n  pipe<A, B, C, D, E, F>(\n    op1: OperatorFunction<T, A>,\n    op2: OperatorFunction<A, B>,\n    op3: OperatorFunction<B, C>,\n    op4: OperatorFunction<C, D>,\n    op5: OperatorFunction<D, E>,\n    op6: OperatorFunction<E, F>\n  ): Observable<F>;\n  pipe<A, B, C, D, E, F, G>(\n    op1: OperatorFunction<T, A>,\n    op2: OperatorFunction<A, B>,\n    op3: OperatorFunction<B, C>,\n    op4: OperatorFunction<C, D>,\n    op5: OperatorFunction<D, E>,\n    op6: OperatorFunction<E, F>,\n    op7: OperatorFunction<F, G>\n  ): Observable<G>;\n  pipe<A, B, C, D, E, F, G, H>(\n    op1: OperatorFunction<T, A>,\n    op2: OperatorFunction<A, B>,\n    op3: OperatorFunction<B, C>,\n    op4: OperatorFunction<C, D>,\n    op5: OperatorFunction<D, E>,\n    op6: OperatorFunction<E, F>,\n    op7: OperatorFunction<F, G>,\n    op8: OperatorFunction<G, H>\n  ): Observable<H>;\n  pipe<A, B, C, D, E, F, G, H, I>(\n    op1: OperatorFunction<T, A>,\n    op2: OperatorFunction<A, B>,\n    op3: OperatorFunction<B, C>,\n    op4: OperatorFunction<C, D>,\n    op5: OperatorFunction<D, E>,\n    op6: OperatorFunction<E, F>,\n    op7: OperatorFunction<F, G>,\n    op8: OperatorFunction<G, H>,\n    op9: OperatorFunction<H, I>\n  ): Observable<I>;\n  pipe<A, B, C, D, E, F, G, H, I>(\n    op1: OperatorFunction<T, A>,\n    op2: OperatorFunction<A, B>,\n    op3: OperatorFunction<B, C>,\n    op4: OperatorFunction<C, D>,\n    op5: OperatorFunction<D, E>,\n    op6: OperatorFunction<E, F>,\n    op7: OperatorFunction<F, G>,\n    op8: OperatorFunction<G, H>,\n    op9: OperatorFunction<H, I>,\n    ...operations: OperatorFunction<any, any>[]\n  ): Observable<unknown>;\n  /* tslint:enable:max-line-length */\n\n  /**\n   * Used to stitch together functional operators into a chain.\n   *\n   * ## Example\n   *\n   * ```ts\n   * import { interval, filter, map, scan } from 'rxjs';\n   *\n   * interval(1000)\n   *   .pipe(\n   *     filter(x => x % 2 === 0),\n   *     map(x => x + x),\n   *     scan((acc, x) => acc + x)\n   *   )\n   *   .subscribe(x => console.log(x));\n   * ```\n   *\n   * @return The Observable result of all the operators having been called\n   * in the order they were passed in.\n   */\n  pipe(...operations: OperatorFunction<any, any>[]): Observable<any> {\n    return pipeFromArray(operations)(this);\n  }\n\n  /* tslint:disable:max-line-length */\n  /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n  toPromise(): Promise<T | undefined>;\n  /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n  toPromise(PromiseCtor: typeof Promise): Promise<T | undefined>;\n  /** @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise */\n  toPromise(PromiseCtor: PromiseConstructorLike): Promise<T | undefined>;\n  /* tslint:enable:max-line-length */\n\n  /**\n   * Subscribe to this Observable and get a Promise resolving on\n   * `complete` with the last emission (if any).\n   *\n   * **WARNING**: Only use this with observables you *know* will complete. If the source\n   * observable does not complete, you will end up with a promise that is hung up, and\n   * potentially all of the state of an async function hanging out in memory. To avoid\n   * this situation, look into adding something like {@link timeout}, {@link take},\n   * {@link takeWhile}, or {@link takeUntil} amongst others.\n   *\n   * @param [promiseCtor] a constructor function used to instantiate\n   * the Promise\n   * @return A Promise that resolves with the last value emit, or\n   * rejects on an error. If there were no emissions, Promise\n   * resolves with undefined.\n   * @deprecated Replaced with {@link firstValueFrom} and {@link lastValueFrom}. Will be removed in v8. Details: https://rxjs.dev/deprecations/to-promise\n   */\n  toPromise(promiseCtor?: PromiseConstructorLike): Promise<T | undefined> {\n    promiseCtor = getPromiseCtor(promiseCtor);\n\n    return new promiseCtor((resolve, reject) => {\n      let value: T | undefined;\n      this.subscribe(\n        (x: T) => (value = x),\n        (err: any) => reject(err),\n        () => resolve(value)\n      );\n    }) as Promise<T | undefined>;\n  }\n}\n\n/**\n * Decides between a passed promise constructor from consuming code,\n * A default configured promise constructor, and the native promise\n * constructor and returns it. If nothing can be found, it will throw\n * an error.\n * @param promiseCtor The optional promise constructor to passed by consuming code\n */\nfunction getPromiseCtor(promiseCtor: PromiseConstructorLike | undefined) {\n  return promiseCtor ?? config.Promise ?? Promise;\n}\n\nfunction isObserver<T>(value: any): value is Observer<T> {\n  return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\n\nfunction isSubscriber<T>(value: any): value is Subscriber<T> {\n  return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n","import { InteropObservable } from '../types';\nimport { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being Observable (but not necessary an Rx Observable) */\nexport function isInteropObservable(input: any): input is InteropObservable<any> {\n  return isFunction(input[Symbol_observable]);\n}\n","import { isFunction } from './isFunction';\n\nexport function isAsyncIterable<T>(obj: any): obj is AsyncIterable<T> {\n  return Symbol.asyncIterator && isFunction(obj?.[Symbol.asyncIterator]);\n}\n","/**\n * Creates the TypeError to throw if an invalid object is passed to `from` or `scheduled`.\n * @param input The object that was passed.\n */\nexport function createInvalidObservableTypeError(input: any) {\n  // TODO: We should create error codes that can be looked up, so this can be less verbose.\n  return new TypeError(\n    `You provided ${\n      input !== null && typeof input === 'object' ? 'an invalid object' : `'${input}'`\n    } where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`\n  );\n}\n","export function getSymbolIterator(): symbol {\n  if (typeof Symbol !== 'function' || !Symbol.iterator) {\n    return '@@iterator' as any;\n  }\n\n  return Symbol.iterator;\n}\n\nexport const iterator = getSymbolIterator();\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\n\n/** Identifies an input as being an Iterable */\nexport function isIterable(input: any): input is Iterable<any> {\n  return isFunction(input?.[Symbol_iterator]);\n}\n","import { ReadableStreamLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport async function* readableStreamLikeToAsyncGenerator<T>(readableStream: ReadableStreamLike<T>): AsyncGenerator<T> {\n  const reader = readableStream.getReader();\n  try {\n    while (true) {\n      const { value, done } = await reader.read();\n      if (done) {\n        return;\n      }\n      yield value!;\n    }\n  } finally {\n    reader.releaseLock();\n  }\n}\n\nexport function isReadableStreamLike<T>(obj: any): obj is ReadableStreamLike<T> {\n  // We don't want to use instanceof checks because they would return\n  // false for instances from another Realm, like an <iframe>.\n  return isFunction(obj?.getReader);\n}\n","import { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { ObservableInput, ObservedValueOf, ReadableStreamLike } from '../types';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { Subscriber } from '../Subscriber';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\n\nexport function innerFrom<O extends ObservableInput<any>>(input: O): Observable<ObservedValueOf<O>>;\nexport function innerFrom<T>(input: ObservableInput<T>): Observable<T> {\n  if (input instanceof Observable) {\n    return input;\n  }\n  if (input != null) {\n    if (isInteropObservable(input)) {\n      return fromInteropObservable(input);\n    }\n    if (isArrayLike(input)) {\n      return fromArrayLike(input);\n    }\n    if (isPromise(input)) {\n      return fromPromise(input);\n    }\n    if (isAsyncIterable(input)) {\n      return fromAsyncIterable(input);\n    }\n    if (isIterable(input)) {\n      return fromIterable(input);\n    }\n    if (isReadableStreamLike(input)) {\n      return fromReadableStreamLike(input);\n    }\n  }\n\n  throw createInvalidObservableTypeError(input);\n}\n\n/**\n * Creates an RxJS Observable from an object that implements `Symbol.observable`.\n * @param obj An object that properly implements `Symbol.observable`.\n */\nexport function fromInteropObservable<T>(obj: any) {\n  return new Observable((subscriber: Subscriber<T>) => {\n    const obs = obj[Symbol_observable]();\n    if (isFunction(obs.subscribe)) {\n      return obs.subscribe(subscriber);\n    }\n    // Should be caught by observable subscribe function error handling.\n    throw new TypeError('Provided object does not correctly implement Symbol.observable');\n  });\n}\n\n/**\n * Synchronously emits the values of an array like and completes.\n * This is exported because there are creation functions and operators that need to\n * make direct use of the same logic, and there's no reason to make them run through\n * `from` conditionals because we *know* they're dealing with an array.\n * @param array The array to emit values from\n */\nexport function fromArrayLike<T>(array: ArrayLike<T>) {\n  return new Observable((subscriber: Subscriber<T>) => {\n    // Loop over the array and emit each value. Note two things here:\n    // 1. We're making sure that the subscriber is not closed on each loop.\n    //    This is so we don't continue looping over a very large array after\n    //    something like a `take`, `takeWhile`, or other synchronous unsubscription\n    //    has already unsubscribed.\n    // 2. In this form, reentrant code can alter that array we're looping over.\n    //    This is a known issue, but considered an edge case. The alternative would\n    //    be to copy the array before executing the loop, but this has\n    //    performance implications.\n    for (let i = 0; i < array.length && !subscriber.closed; i++) {\n      subscriber.next(array[i]);\n    }\n    subscriber.complete();\n  });\n}\n\nexport function fromPromise<T>(promise: PromiseLike<T>) {\n  return new Observable((subscriber: Subscriber<T>) => {\n    promise\n      .then(\n        (value) => {\n          if (!subscriber.closed) {\n            subscriber.next(value);\n            subscriber.complete();\n          }\n        },\n        (err: any) => subscriber.error(err)\n      )\n      .then(null, reportUnhandledError);\n  });\n}\n\nexport function fromIterable<T>(iterable: Iterable<T>) {\n  return new Observable((subscriber: Subscriber<T>) => {\n    for (const value of iterable) {\n      subscriber.next(value);\n      if (subscriber.closed) {\n        return;\n      }\n    }\n    subscriber.complete();\n  });\n}\n\nexport function fromAsyncIterable<T>(asyncIterable: AsyncIterable<T>) {\n  return new Observable((subscriber: Subscriber<T>) => {\n    process(asyncIterable, subscriber).catch((err) => subscriber.error(err));\n  });\n}\n\nexport function fromReadableStreamLike<T>(readableStream: ReadableStreamLike<T>) {\n  return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\n\nasync function process<T>(asyncIterable: AsyncIterable<T>, subscriber: Subscriber<T>) {\n  for await (const value of asyncIterable) {\n    subscriber.next(value);\n    // A side-effect may have closed our subscriber,\n    // check before the next iteration.\n    if (subscriber.closed) {\n      return;\n    }\n  }\n  subscriber.complete();\n}\n","import { Subscriber } from '../Subscriber';\n\n/**\n * Creates an instance of an `OperatorSubscriber`.\n * @param destination The downstream subscriber.\n * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n * and send to the `destination` error handler.\n * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n * this handler are sent to the `destination` error handler.\n * @param onFinalize Additional teardown logic here. This will only be called on teardown if the\n * subscriber itself is not already closed. This is called after all other teardown logic is executed.\n */\nexport function createOperatorSubscriber<T>(\n  destination: Subscriber<any>,\n  onNext?: (value: T) => void,\n  onComplete?: () => void,\n  onError?: (err: any) => void,\n  onFinalize?: () => void\n): Subscriber<T> {\n  return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\n\n/**\n * A generic helper for allowing operators to be created with a Subscriber and\n * use closures to capture necessary state from the operator function itself.\n */\nexport class OperatorSubscriber<T> extends Subscriber<T> {\n  /**\n   * Creates an instance of an `OperatorSubscriber`.\n   * @param destination The downstream subscriber.\n   * @param onNext Handles next values, only called if this subscriber is not stopped or closed. Any\n   * error that occurs in this function is caught and sent to the `error` method of this subscriber.\n   * @param onError Handles errors from the subscription, any errors that occur in this handler are caught\n   * and send to the `destination` error handler.\n   * @param onComplete Handles completion notification from the subscription. Any errors that occur in\n   * this handler are sent to the `destination` error handler.\n   * @param onFinalize Additional finalization logic here. This will only be called on finalization if the\n   * subscriber itself is not already closed. This is called after all other finalization logic is executed.\n   * @param shouldUnsubscribe An optional check to see if an unsubscribe call should truly unsubscribe.\n   * NOTE: This currently **ONLY** exists to support the strange behavior of {@link groupBy}, where unsubscription\n   * to the resulting observable does not actually disconnect from the source if there are active subscriptions\n   * to any grouped observable. (DO NOT EXPOSE OR USE EXTERNALLY!!!)\n   */\n  constructor(\n    destination: Subscriber<any>,\n    onNext?: (value: T) => void,\n    onComplete?: () => void,\n    onError?: (err: any) => void,\n    private onFinalize?: () => void,\n    private shouldUnsubscribe?: () => boolean\n  ) {\n    // It's important - for performance reasons - that all of this class's\n    // members are initialized and that they are always initialized in the same\n    // order. This will ensure that all OperatorSubscriber instances have the\n    // same hidden class in V8. This, in turn, will help keep the number of\n    // hidden classes involved in property accesses within the base class as\n    // low as possible. If the number of hidden classes involved exceeds four,\n    // the property accesses will become megamorphic and performance penalties\n    // will be incurred - i.e. inline caches won't be used.\n    //\n    // The reasons for ensuring all instances have the same hidden class are\n    // further discussed in this blog post from Benedikt Meurer:\n    // https://benediktmeurer.de/2018/03/23/impact-of-polymorphism-on-component-based-frameworks-like-react/\n    super(destination);\n    this._next = onNext\n      ? function (this: OperatorSubscriber<T>, value: T) {\n          try {\n            onNext(value);\n          } catch (err) {\n            destination.error(err);\n          }\n        }\n      : super._next;\n    this._error = onError\n      ? function (this: OperatorSubscriber<T>, err: any) {\n          try {\n            onError(err);\n          } catch (err) {\n            // Send any errors that occur down stream.\n            destination.error(err);\n          } finally {\n            // Ensure finalization.\n            this.unsubscribe();\n          }\n        }\n      : super._error;\n    this._complete = onComplete\n      ? function (this: OperatorSubscriber<T>) {\n          try {\n            onComplete();\n          } catch (err) {\n            // Send any errors that occur down stream.\n            destination.error(err);\n          } finally {\n            // Ensure finalization.\n            this.unsubscribe();\n          }\n        }\n      : super._complete;\n  }\n\n  unsubscribe() {\n    if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n      const { closed } = this;\n      super.unsubscribe();\n      // Execute additional teardown if we have any and we didn't already do so.\n      !closed && this.onFinalize?.();\n    }\n  }\n}\n","import { Subscriber } from '../Subscriber';\nimport { MonoTypeOperatorFunction, ObservableInput } from '../types';\n\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Ignores source values for a duration determined by another Observable, then\n * emits the most recent value from the source Observable, then repeats this\n * process.\n *\n * <span class=\"informal\">It's like {@link auditTime}, but the silencing\n * duration is determined by a second Observable.</span>\n *\n * ![](audit.svg)\n *\n * `audit` is similar to `throttle`, but emits the last value from the silenced\n * time window, instead of the first value. `audit` emits the most recent value\n * from the source Observable on the output Observable as soon as its internal\n * timer becomes disabled, and ignores source values while the timer is enabled.\n * Initially, the timer is disabled. As soon as the first source value arrives,\n * the timer is enabled by calling the `durationSelector` function with the\n * source value, which returns the \"duration\" Observable. When the duration\n * Observable emits a value, the timer is disabled, then the most\n * recent source value is emitted on the output Observable, and this process\n * repeats for the next source value.\n *\n * ## Example\n *\n * Emit clicks at a rate of at most one click per second\n *\n * ```ts\n * import { fromEvent, audit, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(audit(ev => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link delayWhen}\n * @see {@link sample}\n * @see {@link throttle}\n *\n * @param durationSelector A function\n * that receives a value from the source Observable, for computing the silencing\n * duration, returned as an Observable or a Promise.\n * @return A function that returns an Observable that performs rate-limiting of\n * emissions from the source Observable.\n */\nexport function audit<T>(durationSelector: (value: T) => ObservableInput<any>): MonoTypeOperatorFunction<T> {\n  return operate((source, subscriber) => {\n    let hasValue = false;\n    let lastValue: T | null = null;\n    let durationSubscriber: Subscriber<any> | null = null;\n    let isComplete = false;\n\n    const endDuration = () => {\n      durationSubscriber?.unsubscribe();\n      durationSubscriber = null;\n      if (hasValue) {\n        hasValue = false;\n        const value = lastValue!;\n        lastValue = null;\n        subscriber.next(value);\n      }\n      isComplete && subscriber.complete();\n    };\n\n    const cleanupDuration = () => {\n      durationSubscriber = null;\n      isComplete && subscriber.complete();\n    };\n\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (value) => {\n          hasValue = true;\n          lastValue = value;\n          if (!durationSubscriber) {\n            innerFrom(durationSelector(value)).subscribe(\n              (durationSubscriber = createOperatorSubscriber(subscriber, endDuration, cleanupDuration))\n            );\n          }\n        },\n        () => {\n          isComplete = true;\n          (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();\n        }\n      )\n    );\n  });\n}\n","import { Scheduler } from '../Scheduler';\nimport { Subscription } from '../Subscription';\nimport { SchedulerAction } from '../types';\n\n/**\n * A unit of work to be executed in a `scheduler`. An action is typically\n * created from within a {@link SchedulerLike} and an RxJS user does not need to concern\n * themselves about creating and manipulating an Action.\n *\n * ```ts\n * class Action<T> extends Subscription {\n *   new (scheduler: Scheduler, work: (state?: T) => void);\n *   schedule(state?: T, delay: number = 0): Subscription;\n * }\n * ```\n */\nexport class Action<T> extends Subscription {\n  constructor(scheduler: Scheduler, work: (this: SchedulerAction<T>, state?: T) => void) {\n    super();\n  }\n  /**\n   * Schedules this action on its parent {@link SchedulerLike} for execution. May be passed\n   * some context object, `state`. May happen at some point in the future,\n   * according to the `delay` parameter, if specified.\n   * @param state Some contextual data that the `work` function uses when called by the\n   * Scheduler.\n   * @param delay Time to wait before executing the work, where the time unit is implicit\n   * and defined by the Scheduler.\n   * @return A subscription in order to be able to unsubscribe the scheduled work.\n   */\n  public schedule(state?: T, delay: number = 0): Subscription {\n    return this;\n  }\n}\n","import type { TimerHandle } from './timerHandle';\ntype SetIntervalFunction = (handler: () => void, timeout?: number, ...args: any[]) => TimerHandle;\ntype ClearIntervalFunction = (handle: TimerHandle) => void;\n\ninterface IntervalProvider {\n  setInterval: SetIntervalFunction;\n  clearInterval: ClearIntervalFunction;\n  delegate:\n    | {\n        setInterval: SetIntervalFunction;\n        clearInterval: ClearIntervalFunction;\n      }\n    | undefined;\n}\n\nexport const intervalProvider: IntervalProvider = {\n  // When accessing the delegate, use the variable rather than `this` so that\n  // the functions can be called without being bound to the provider.\n  setInterval(handler: () => void, timeout?: number, ...args) {\n    const { delegate } = intervalProvider;\n    if (delegate?.setInterval) {\n      return delegate.setInterval(handler, timeout, ...args);\n    }\n    return setInterval(handler, timeout, ...args);\n  },\n  clearInterval(handle) {\n    const { delegate } = intervalProvider;\n    return (delegate?.clearInterval || clearInterval)(handle as any);\n  },\n  delegate: undefined,\n};\n","import { Action } from './Action';\nimport { SchedulerAction } from '../types';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nimport { TimerHandle } from './timerHandle';\n\nexport class AsyncAction<T> extends Action<T> {\n  public id: TimerHandle | undefined;\n  public state?: T;\n  // @ts-ignore: Property has no initializer and is not definitely assigned\n  public delay: number;\n  protected pending: boolean = false;\n\n  constructor(protected scheduler: AsyncScheduler, protected work: (this: SchedulerAction<T>, state?: T) => void) {\n    super(scheduler, work);\n  }\n\n  public schedule(state?: T, delay: number = 0): Subscription {\n    if (this.closed) {\n      return this;\n    }\n\n    // Always replace the current state with the new state.\n    this.state = state;\n\n    const id = this.id;\n    const scheduler = this.scheduler;\n\n    //\n    // Important implementation note:\n    //\n    // Actions only execute once by default, unless rescheduled from within the\n    // scheduled callback. This allows us to implement single and repeat\n    // actions via the same code path, without adding API surface area, as well\n    // as mimic traditional recursion but across asynchronous boundaries.\n    //\n    // However, JS runtimes and timers distinguish between intervals achieved by\n    // serial `setTimeout` calls vs. a single `setInterval` call. An interval of\n    // serial `setTimeout` calls can be individually delayed, which delays\n    // scheduling the next `setTimeout`, and so on. `setInterval` attempts to\n    // guarantee the interval callback will be invoked more precisely to the\n    // interval period, regardless of load.\n    //\n    // Therefore, we use `setInterval` to schedule single and repeat actions.\n    // If the action reschedules itself with the same delay, the interval is not\n    // canceled. If the action doesn't reschedule, or reschedules with a\n    // different delay, the interval will be canceled after scheduled callback\n    // execution.\n    //\n    if (id != null) {\n      this.id = this.recycleAsyncId(scheduler, id, delay);\n    }\n\n    // Set the pending flag indicating that this action has been scheduled, or\n    // has recursively rescheduled itself.\n    this.pending = true;\n\n    this.delay = delay;\n    // If this action has already an async Id, don't request a new one.\n    this.id = this.id ?? this.requestAsyncId(scheduler, this.id, delay);\n\n    return this;\n  }\n\n  protected requestAsyncId(scheduler: AsyncScheduler, _id?: TimerHandle, delay: number = 0): TimerHandle {\n    return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n  }\n\n  protected recycleAsyncId(_scheduler: AsyncScheduler, id?: TimerHandle, delay: number | null = 0): TimerHandle | undefined {\n    // If this action is rescheduled with the same delay time, don't clear the interval id.\n    if (delay != null && this.delay === delay && this.pending === false) {\n      return id;\n    }\n    // Otherwise, if the action's delay time is different from the current delay,\n    // or the action has been rescheduled before it's executed, clear the interval id\n    if (id != null) {\n      intervalProvider.clearInterval(id);\n    }\n\n    return undefined;\n  }\n\n  /**\n   * Immediately executes this action and the `work` it contains.\n   */\n  public execute(state: T, delay: number): any {\n    if (this.closed) {\n      return new Error('executing a cancelled action');\n    }\n\n    this.pending = false;\n    const error = this._execute(state, delay);\n    if (error) {\n      return error;\n    } else if (this.pending === false && this.id != null) {\n      // Dequeue if the action didn't reschedule itself. Don't call\n      // unsubscribe(), because the action could reschedule later.\n      // For example:\n      // ```\n      // scheduler.schedule(function doWork(counter) {\n      //   /* ... I'm a busy worker bee ... */\n      //   var originalAction = this;\n      //   /* wait 100ms before rescheduling the action */\n      //   setTimeout(function () {\n      //     originalAction.schedule(counter + 1);\n      //   }, 100);\n      // }, 1000);\n      // ```\n      this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n    }\n  }\n\n  protected _execute(state: T, _delay: number): any {\n    let errored: boolean = false;\n    let errorValue: any;\n    try {\n      this.work(state);\n    } catch (e) {\n      errored = true;\n      // HACK: Since code elsewhere is relying on the \"truthiness\" of the\n      // return here, we can't have it return \"\" or 0 or false.\n      // TODO: Clean this up when we refactor schedulers mid-version-8 or so.\n      errorValue = e ? e : new Error('Scheduled action threw falsy error');\n    }\n    if (errored) {\n      this.unsubscribe();\n      return errorValue;\n    }\n  }\n\n  unsubscribe() {\n    if (!this.closed) {\n      const { id, scheduler } = this;\n      const { actions } = scheduler;\n\n      this.work = this.state = this.scheduler = null!;\n      this.pending = false;\n\n      arrRemove(actions, this);\n      if (id != null) {\n        this.id = this.recycleAsyncId(scheduler, id, null);\n      }\n\n      this.delay = null!;\n      super.unsubscribe();\n    }\n  }\n}\n","import { TimestampProvider } from '../types';\n\ninterface DateTimestampProvider extends TimestampProvider {\n  delegate: TimestampProvider | undefined;\n}\n\nexport const dateTimestampProvider: DateTimestampProvider = {\n  now() {\n    // Use the variable rather than `this` so that the function can be called\n    // without being bound to the provider.\n    return (dateTimestampProvider.delegate || Date).now();\n  },\n  delegate: undefined,\n};\n","import { Action } from './scheduler/Action';\nimport { Subscription } from './Subscription';\nimport { SchedulerLike, SchedulerAction } from './types';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * An execution context and a data structure to order tasks and schedule their\n * execution. Provides a notion of (potentially virtual) time, through the\n * `now()` getter method.\n *\n * Each unit of work in a Scheduler is called an `Action`.\n *\n * ```ts\n * class Scheduler {\n *   now(): number;\n *   schedule(work, delay?, state?): Subscription;\n * }\n * ```\n *\n * @deprecated Scheduler is an internal implementation detail of RxJS, and\n * should not be used directly. Rather, create your own class and implement\n * {@link SchedulerLike}. Will be made internal in v8.\n */\nexport class Scheduler implements SchedulerLike {\n  public static now: () => number = dateTimestampProvider.now;\n\n  constructor(private schedulerActionCtor: typeof Action, now: () => number = Scheduler.now) {\n    this.now = now;\n  }\n\n  /**\n   * A getter method that returns a number representing the current time\n   * (at the time this function was called) according to the scheduler's own\n   * internal clock.\n   * @return A number that represents the current time. May or may not\n   * have a relation to wall-clock time. May or may not refer to a time unit\n   * (e.g. milliseconds).\n   */\n  public now: () => number;\n\n  /**\n   * Schedules a function, `work`, for execution. May happen at some point in\n   * the future, according to the `delay` parameter, if specified. May be passed\n   * some context object, `state`, which will be passed to the `work` function.\n   *\n   * The given arguments will be processed an stored as an Action object in a\n   * queue of actions.\n   *\n   * @param work A function representing a task, or some unit of work to be\n   * executed by the Scheduler.\n   * @param delay Time to wait before executing the work, where the time unit is\n   * implicit and defined by the Scheduler itself.\n   * @param state Some contextual data that the `work` function uses when called\n   * by the Scheduler.\n   * @return A subscription in order to be able to unsubscribe the scheduled work.\n   */\n  public schedule<T>(work: (this: SchedulerAction<T>, state?: T) => void, delay: number = 0, state?: T): Subscription {\n    return new this.schedulerActionCtor<T>(this, work).schedule(state, delay);\n  }\n}\n","import { Scheduler } from '../Scheduler';\nimport { Action } from './Action';\nimport { AsyncAction } from './AsyncAction';\nimport { TimerHandle } from './timerHandle';\n\nexport class AsyncScheduler extends Scheduler {\n  public actions: Array<AsyncAction<any>> = [];\n  /**\n   * A flag to indicate whether the Scheduler is currently executing a batch of\n   * queued actions.\n   * @internal\n   */\n  public _active: boolean = false;\n  /**\n   * An internal ID used to track the latest asynchronous task such as those\n   * coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and\n   * others.\n   * @internal\n   */\n  public _scheduled: TimerHandle | undefined;\n\n  constructor(SchedulerAction: typeof Action, now: () => number = Scheduler.now) {\n    super(SchedulerAction, now);\n  }\n\n  public flush(action: AsyncAction<any>): void {\n    const { actions } = this;\n\n    if (this._active) {\n      actions.push(action);\n      return;\n    }\n\n    let error: any;\n    this._active = true;\n\n    do {\n      if ((error = action.execute(action.state, action.delay))) {\n        break;\n      }\n    } while ((action = actions.shift()!)); // exhaust the scheduler queue\n\n    this._active = false;\n\n    if (error) {\n      while ((action = actions.shift()!)) {\n        action.unsubscribe();\n      }\n      throw error;\n    }\n  }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\n/**\n *\n * Async Scheduler\n *\n * <span class=\"informal\">Schedule task as if you used setTimeout(task, duration)</span>\n *\n * `async` scheduler schedules tasks asynchronously, by putting them on the JavaScript\n * event loop queue. It is best used to delay tasks in time or to schedule tasks repeating\n * in intervals.\n *\n * If you just want to \"defer\" task, that is to perform it right after currently\n * executing synchronous code ends (commonly achieved by `setTimeout(deferredTask, 0)`),\n * better choice will be the {@link asapScheduler} scheduler.\n *\n * ## Examples\n * Use async scheduler to delay task\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * const task = () => console.log('it works!');\n *\n * asyncScheduler.schedule(task, 2000);\n *\n * // After 2 seconds logs:\n * // \"it works!\"\n * ```\n *\n * Use async scheduler to repeat task in intervals\n * ```ts\n * import { asyncScheduler } from 'rxjs';\n *\n * function task(state) {\n *   console.log(state);\n *   this.schedule(state + 1, 1000); // `this` references currently executing Action,\n *                                   // which we reschedule with new state and delay\n * }\n *\n * asyncScheduler.schedule(task, 3000, 0);\n *\n * // Logs:\n * // 0 after 3s\n * // 1 after 4s\n * // 2 after 5s\n * // 3 after 6s\n * ```\n */\n\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\n\n/**\n * @deprecated Renamed to {@link asyncScheduler}. Will be removed in v8.\n */\nexport const async = asyncScheduler;\n","import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\n\nexport function isScheduler(value: any): value is SchedulerLike {\n  return value && isFunction(value.schedule);\n}\n","/**\n * Checks to see if a value is not only a `Date` object,\n * but a *valid* `Date` object that can be converted to a\n * number. For example, `new Date('blah')` is indeed an\n * `instanceof Date`, however it cannot be converted to a\n * number.\n */\nexport function isValidDate(value: any): value is Date {\n  return value instanceof Date && !isNaN(value as any);\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\n\n/**\n * Creates an observable that will wait for a specified time period, or exact date, before\n * emitting the number 0.\n *\n * <span class=\"informal\">Used to emit a notification after a delay.</span>\n *\n * This observable is useful for creating delays in code, or racing against other values\n * for ad-hoc timeouts.\n *\n * The `delay` is specified by default in milliseconds, however providing a custom scheduler could\n * create a different behavior.\n *\n * ## Examples\n *\n * Wait 3 seconds and start another observable\n *\n * You might want to use `timer` to delay subscription to an\n * observable by a set amount of time. Here we use a timer with\n * {@link concatMapTo} or {@link concatMap} in order to wait\n * a few seconds and start a subscription to a source.\n *\n * ```ts\n * import { of, timer, concatMap } from 'rxjs';\n *\n * // This could be any observable\n * const source = of(1, 2, 3);\n *\n * timer(3000)\n *   .pipe(concatMap(() => source))\n *   .subscribe(console.log);\n * ```\n *\n * Take all values until the start of the next minute\n *\n * Using a `Date` as the trigger for the first emission, you can\n * do things like wait until midnight to fire an event, or in this case,\n * wait until a new minute starts (chosen so the example wouldn't take\n * too long to run) in order to stop watching a stream. Leveraging\n * {@link takeUntil}.\n *\n * ```ts\n * import { interval, takeUntil, timer } from 'rxjs';\n *\n * // Build a Date object that marks the\n * // next minute.\n * const currentDate = new Date();\n * const startOfNextMinute = new Date(\n *   currentDate.getFullYear(),\n *   currentDate.getMonth(),\n *   currentDate.getDate(),\n *   currentDate.getHours(),\n *   currentDate.getMinutes() + 1\n * );\n *\n * // This could be any observable stream\n * const source = interval(1000);\n *\n * const result = source.pipe(\n *   takeUntil(timer(startOfNextMinute))\n * );\n *\n * result.subscribe(console.log);\n * ```\n *\n * ### Known Limitations\n *\n * - The {@link asyncScheduler} uses `setTimeout` which has limitations for how far in the future it can be scheduled.\n *\n * - If a `scheduler` is provided that returns a timestamp other than an epoch from `now()`, and\n * a `Date` object is passed to the `dueTime` argument, the calculation for when the first emission\n * should occur will be incorrect. In this case, it would be best to do your own calculations\n * ahead of time, and pass a `number` in as the `dueTime`.\n *\n * @param due If a `number`, the amount of time in milliseconds to wait before emitting.\n * If a `Date`, the exact time at which to emit.\n * @param scheduler The scheduler to use to schedule the delay. Defaults to {@link asyncScheduler}.\n */\nexport function timer(due: number | Date, scheduler?: SchedulerLike): Observable<0>;\n\n/**\n * Creates an observable that starts an interval after a specified delay, emitting incrementing numbers -- starting at `0` --\n * on each interval after words.\n *\n * The `delay` and `intervalDuration` are specified by default in milliseconds, however providing a custom scheduler could\n * create a different behavior.\n *\n * ## Example\n *\n * ### Start an interval that starts right away\n *\n * Since {@link interval} waits for the passed delay before starting,\n * sometimes that's not ideal. You may want to start an interval immediately.\n * `timer` works well for this. Here we have both side-by-side so you can\n * see them in comparison.\n *\n * Note that this observable will never complete.\n *\n * ```ts\n * import { timer, interval } from 'rxjs';\n *\n * timer(0, 1000).subscribe(n => console.log('timer', n));\n * interval(1000).subscribe(n => console.log('interval', n));\n * ```\n *\n * ### Known Limitations\n *\n * - The {@link asyncScheduler} uses `setTimeout` which has limitations for how far in the future it can be scheduled.\n *\n * - If a `scheduler` is provided that returns a timestamp other than an epoch from `now()`, and\n * a `Date` object is passed to the `dueTime` argument, the calculation for when the first emission\n * should occur will be incorrect. In this case, it would be best to do your own calculations\n * ahead of time, and pass a `number` in as the `startDue`.\n * @param startDue If a `number`, is the time to wait before starting the interval.\n * If a `Date`, is the exact time at which to start the interval.\n * @param intervalDuration The delay between each value emitted in the interval. Passing a\n * negative number here will result in immediate completion after the first value is emitted, as though\n * no `intervalDuration` was passed at all.\n * @param scheduler The scheduler to use to schedule the delay. Defaults to {@link asyncScheduler}.\n */\nexport function timer(startDue: number | Date, intervalDuration: number, scheduler?: SchedulerLike): Observable<number>;\n\n/**\n * @deprecated The signature allowing `undefined` to be passed for `intervalDuration` will be removed in v8. Use the `timer(dueTime, scheduler?)` signature instead.\n */\nexport function timer(dueTime: number | Date, unused: undefined, scheduler?: SchedulerLike): Observable<0>;\n\nexport function timer(\n  dueTime: number | Date = 0,\n  intervalOrScheduler?: number | SchedulerLike,\n  scheduler: SchedulerLike = asyncScheduler\n): Observable<number> {\n  // Since negative intervalDuration is treated as though no\n  // interval was specified at all, we start with a negative number.\n  let intervalDuration = -1;\n\n  if (intervalOrScheduler != null) {\n    // If we have a second argument, and it's a scheduler,\n    // override the scheduler we had defaulted. Otherwise,\n    // it must be an interval.\n    if (isScheduler(intervalOrScheduler)) {\n      scheduler = intervalOrScheduler;\n    } else {\n      // Note that this *could* be negative, in which case\n      // it's like not passing an intervalDuration at all.\n      intervalDuration = intervalOrScheduler;\n    }\n  }\n\n  return new Observable((subscriber) => {\n    // If a valid date is passed, calculate how long to wait before\n    // executing the first value... otherwise, if it's a number just schedule\n    // that many milliseconds (or scheduler-specified unit size) in the future.\n    let due = isValidDate(dueTime) ? +dueTime - scheduler!.now() : dueTime;\n\n    if (due < 0) {\n      // Ensure we don't schedule in the future.\n      due = 0;\n    }\n\n    // The incrementing value we emit.\n    let n = 0;\n\n    // Start the timer.\n    return scheduler.schedule(function () {\n      if (!subscriber.closed) {\n        // Emit the next value and increment.\n        subscriber.next(n++);\n\n        if (0 <= intervalDuration) {\n          // If we have a interval after the initial timer,\n          // reschedule with the period.\n          this.schedule(undefined, intervalDuration);\n        } else {\n          // We didn't have an interval. So just complete.\n          subscriber.complete();\n        }\n      }\n    }, due);\n  });\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\n\n/**\n * Ignores source values for `duration` milliseconds, then emits the most recent\n * value from the source Observable, then repeats this process.\n *\n * <span class=\"informal\">When it sees a source value, it ignores that plus\n * the next ones for `duration` milliseconds, and then it emits the most recent\n * value from the source.</span>\n *\n * ![](auditTime.png)\n *\n * `auditTime` is similar to `throttleTime`, but emits the last value from the\n * silenced time window, instead of the first value. `auditTime` emits the most\n * recent value from the source Observable on the output Observable as soon as\n * its internal timer becomes disabled, and ignores source values while the\n * timer is enabled. Initially, the timer is disabled. As soon as the first\n * source value arrives, the timer is enabled. After `duration` milliseconds (or\n * the time unit determined internally by the optional `scheduler`) has passed,\n * the timer is disabled, then the most recent source value is emitted on the\n * output Observable, and this process repeats for the next source value.\n * Optionally takes a {@link SchedulerLike} for managing timers.\n *\n * ## Example\n *\n * Emit clicks at a rate of at most one click per second\n *\n * ```ts\n * import { fromEvent, auditTime } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(auditTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttleTime}\n *\n * @param duration Time to wait before emitting the most recent source value,\n * measured in milliseconds or the time unit determined internally by the\n * optional `scheduler`.\n * @param scheduler The {@link SchedulerLike} to use for managing the timers\n * that handle the rate-limiting behavior.\n * @return A function that returns an Observable that performs rate-limiting of\n * emissions from the source Observable.\n */\nexport function auditTime<T>(duration: number, scheduler: SchedulerLike = asyncScheduler): MonoTypeOperatorFunction<T> {\n  return audit(() => timer(duration, scheduler));\n}\n","import { OperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\n\n/**\n * Buffers the source Observable values until `closingNotifier` emits.\n *\n * <span class=\"informal\">Collects values from the past as an array, and emits\n * that array only when another Observable emits.</span>\n *\n * ![](buffer.png)\n *\n * Buffers the incoming Observable values until the given `closingNotifier`\n * `ObservableInput` (that internally gets converted to an Observable)\n * emits a value, at which point it emits the buffer on the output\n * Observable and starts a new buffer internally, awaiting the next time\n * `closingNotifier` emits.\n *\n * ## Example\n *\n * On every click, emit array of most recent interval events\n *\n * ```ts\n * import { fromEvent, interval, buffer } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const intervalEvents = interval(1000);\n * const buffered = intervalEvents.pipe(buffer(clicks));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link window}\n *\n * @param closingNotifier An `ObservableInput` that signals the\n * buffer to be emitted on the output Observable.\n * @return A function that returns an Observable of buffers, which are arrays\n * of values.\n */\nexport function buffer<T>(closingNotifier: ObservableInput<any>): OperatorFunction<T, T[]> {\n  return operate((source, subscriber) => {\n    // The current buffered values.\n    let currentBuffer: T[] = [];\n\n    // Subscribe to our source.\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (value) => currentBuffer.push(value),\n        () => {\n          subscriber.next(currentBuffer);\n          subscriber.complete();\n        }\n      )\n    );\n\n    // Subscribe to the closing notifier.\n    innerFrom(closingNotifier).subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        () => {\n          // Start a new buffer and emit the previous one.\n          const b = currentBuffer;\n          currentBuffer = [];\n          subscriber.next(b);\n        },\n        noop\n      )\n    );\n\n    return () => {\n      // Ensure buffered values are released on finalization.\n      currentBuffer = null!;\n    };\n  });\n}\n","import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { arrRemove } from '../util/arrRemove';\n\n/**\n * Buffers the source Observable values until the size hits the maximum\n * `bufferSize` given.\n *\n * <span class=\"informal\">Collects values from the past as an array, and emits\n * that array only when its size reaches `bufferSize`.</span>\n *\n * ![](bufferCount.png)\n *\n * Buffers a number of values from the source Observable by `bufferSize` then\n * emits the buffer and clears it, and starts a new buffer each\n * `startBufferEvery` values. If `startBufferEvery` is not provided or is\n * `null`, then new buffers are started immediately at the start of the source\n * and when each buffer closes and is emitted.\n *\n * ## Examples\n *\n * Emit the last two click events as an array\n *\n * ```ts\n * import { fromEvent, bufferCount } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferCount(2));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * On every click, emit the last two click events as an array\n *\n * ```ts\n * import { fromEvent, bufferCount } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferCount(2, 1));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link pairwise}\n * @see {@link windowCount}\n *\n * @param bufferSize The maximum size of the buffer emitted.\n * @param startBufferEvery Interval at which to start a new buffer.\n * For example if `startBufferEvery` is `2`, then a new buffer will be started\n * on every other value from the source. A new buffer is started at the\n * beginning of the source by default.\n * @return A function that returns an Observable of arrays of buffered values.\n */\nexport function bufferCount<T>(bufferSize: number, startBufferEvery: number | null = null): OperatorFunction<T, T[]> {\n  // If no `startBufferEvery` value was supplied, then we're\n  // opening and closing on the bufferSize itself.\n  startBufferEvery = startBufferEvery ?? bufferSize;\n\n  return operate((source, subscriber) => {\n    let buffers: T[][] = [];\n    let count = 0;\n\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (value) => {\n          let toEmit: T[][] | null = null;\n\n          // Check to see if we need to start a buffer.\n          // This will start one at the first value, and then\n          // a new one every N after that.\n          if (count++ % startBufferEvery! === 0) {\n            buffers.push([]);\n          }\n\n          // Push our value into our active buffers.\n          for (const buffer of buffers) {\n            buffer.push(value);\n            // Check to see if we're over the bufferSize\n            // if we are, record it so we can emit it later.\n            // If we emitted it now and removed it, it would\n            // mutate the `buffers` array while we're looping\n            // over it.\n            if (bufferSize <= buffer.length) {\n              toEmit = toEmit ?? [];\n              toEmit.push(buffer);\n            }\n          }\n\n          if (toEmit) {\n            // We have found some buffers that are over the\n            // `bufferSize`. Emit them, and remove them from our\n            // buffers list.\n            for (const buffer of toEmit) {\n              arrRemove(buffers, buffer);\n              subscriber.next(buffer);\n            }\n          }\n        },\n        () => {\n          // When the source completes, emit all of our\n          // active buffers.\n          for (const buffer of buffers) {\n            subscriber.next(buffer);\n          }\n          subscriber.complete();\n        },\n        // Pass all errors through to consumer.\n        undefined,\n        () => {\n          // Clean up our memory when we finalize\n          buffers = null!;\n        }\n      )\n    );\n  });\n}\n","import { SchedulerLike } from '../types';\nimport { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\n\nfunction last<T>(arr: T[]): T | undefined {\n  return arr[arr.length - 1];\n}\n\nexport function popResultSelector(args: any[]): ((...args: unknown[]) => unknown) | undefined {\n  return isFunction(last(args)) ? args.pop() : undefined;\n}\n\nexport function popScheduler(args: any[]): SchedulerLike | undefined {\n  return isScheduler(last(args)) ? args.pop() : undefined;\n}\n\nexport function popNumber(args: any[], defaultValue: number): number {\n  return typeof last(args) === 'number' ? args.pop()! : defaultValue;\n}\n","import { Subscription } from '../Subscription';\nimport { SchedulerAction, SchedulerLike } from '../types';\n\nexport function executeSchedule(\n  parentSubscription: Subscription,\n  scheduler: SchedulerLike,\n  work: () => void,\n  delay: number,\n  repeat: true\n): void;\nexport function executeSchedule(\n  parentSubscription: Subscription,\n  scheduler: SchedulerLike,\n  work: () => void,\n  delay?: number,\n  repeat?: false\n): Subscription;\n\nexport function executeSchedule(\n  parentSubscription: Subscription,\n  scheduler: SchedulerLike,\n  work: () => void,\n  delay = 0,\n  repeat = false\n): Subscription | void {\n  const scheduleSubscription = scheduler.schedule(function (this: SchedulerAction<any>) {\n    work();\n    if (repeat) {\n      parentSubscription.add(this.schedule(null, delay));\n    } else {\n      this.unsubscribe();\n    }\n  }, delay);\n\n  parentSubscription.add(scheduleSubscription);\n\n  if (!repeat) {\n    // Because user-land scheduler implementations are unlikely to properly reuse\n    // Actions for repeat scheduling, we can't trust that the returned subscription\n    // will control repeat subscription scenarios. So we're trying to avoid using them\n    // incorrectly within this library.\n    return scheduleSubscription;\n  }\n}\n","import { Subscription } from '../Subscription';\nimport { OperatorFunction, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { arrRemove } from '../util/arrRemove';\nimport { asyncScheduler } from '../scheduler/async';\nimport { popScheduler } from '../util/args';\nimport { executeSchedule } from '../util/executeSchedule';\n\nexport function bufferTime<T>(bufferTimeSpan: number, scheduler?: SchedulerLike): OperatorFunction<T, T[]>;\nexport function bufferTime<T>(\n  bufferTimeSpan: number,\n  bufferCreationInterval: number | null | undefined,\n  scheduler?: SchedulerLike\n): OperatorFunction<T, T[]>;\nexport function bufferTime<T>(\n  bufferTimeSpan: number,\n  bufferCreationInterval: number | null | undefined,\n  maxBufferSize: number,\n  scheduler?: SchedulerLike\n): OperatorFunction<T, T[]>;\n\n/**\n * Buffers the source Observable values for a specific time period.\n *\n * <span class=\"informal\">Collects values from the past as an array, and emits\n * those arrays periodically in time.</span>\n *\n * ![](bufferTime.png)\n *\n * Buffers values from the source for a specific time duration `bufferTimeSpan`.\n * Unless the optional argument `bufferCreationInterval` is given, it emits and\n * resets the buffer every `bufferTimeSpan` milliseconds. If\n * `bufferCreationInterval` is given, this operator opens the buffer every\n * `bufferCreationInterval` milliseconds and closes (emits and resets) the\n * buffer every `bufferTimeSpan` milliseconds. When the optional argument\n * `maxBufferSize` is specified, the buffer will be closed either after\n * `bufferTimeSpan` milliseconds or when it contains `maxBufferSize` elements.\n *\n * ## Examples\n *\n * Every second, emit an array of the recent click events\n *\n * ```ts\n * import { fromEvent, bufferTime } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferTime(1000));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * Every 5 seconds, emit the click events from the next 2 seconds\n *\n * ```ts\n * import { fromEvent, bufferTime } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(bufferTime(2000, 5000));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferToggle}\n * @see {@link bufferWhen}\n * @see {@link windowTime}\n *\n * @param bufferTimeSpan The amount of time to fill each buffer array.\n * @param otherArgs Other configuration arguments such as:\n * - `bufferCreationInterval` - the interval at which to start new buffers;\n * - `maxBufferSize` - the maximum buffer size;\n * - `scheduler` - the scheduler on which to schedule the intervals that determine buffer boundaries.\n * @return A function that returns an Observable of arrays of buffered values.\n */\nexport function bufferTime<T>(bufferTimeSpan: number, ...otherArgs: any[]): OperatorFunction<T, T[]> {\n  const scheduler = popScheduler(otherArgs) ?? asyncScheduler;\n  const bufferCreationInterval = (otherArgs[0] as number) ?? null;\n  const maxBufferSize = (otherArgs[1] as number) || Infinity;\n\n  return operate((source, subscriber) => {\n    // The active buffers, their related subscriptions, and removal functions.\n    let bufferRecords: { buffer: T[]; subs: Subscription }[] | null = [];\n    // If true, it means that every time we emit a buffer, we want to start a new buffer\n    // this is only really used for when *just* the buffer time span is passed.\n    let restartOnEmit = false;\n\n    /**\n     * Does the work of emitting the buffer from the record, ensuring that the\n     * record is removed before the emission so reentrant code (from some custom scheduling, perhaps)\n     * does not alter the buffer. Also checks to see if a new buffer needs to be started\n     * after the emit.\n     */\n    const emit = (record: { buffer: T[]; subs: Subscription }) => {\n      const { buffer, subs } = record;\n      subs.unsubscribe();\n      arrRemove(bufferRecords, record);\n      subscriber.next(buffer);\n      restartOnEmit && startBuffer();\n    };\n\n    /**\n     * Called every time we start a new buffer. This does\n     * the work of scheduling a job at the requested bufferTimeSpan\n     * that will emit the buffer (if it's not unsubscribed before then).\n     */\n    const startBuffer = () => {\n      if (bufferRecords) {\n        const subs = new Subscription();\n        subscriber.add(subs);\n        const buffer: T[] = [];\n        const record = {\n          buffer,\n          subs,\n        };\n        bufferRecords.push(record);\n        executeSchedule(subs, scheduler, () => emit(record), bufferTimeSpan);\n      }\n    };\n\n    if (bufferCreationInterval !== null && bufferCreationInterval >= 0) {\n      // The user passed both a bufferTimeSpan (required), and a creation interval\n      // That means we need to start new buffers on the interval, and those buffers need\n      // to wait the required time span before emitting.\n      executeSchedule(subscriber, scheduler, startBuffer, bufferCreationInterval, true);\n    } else {\n      restartOnEmit = true;\n    }\n\n    startBuffer();\n\n    const bufferTimeSubscriber = createOperatorSubscriber(\n      subscriber,\n      (value: T) => {\n        // Copy the records, so if we need to remove one we\n        // don't mutate the array. It's hard, but not impossible to\n        // set up a buffer time that could mutate the array and\n        // cause issues here.\n        const recordsCopy = bufferRecords!.slice();\n        for (const record of recordsCopy) {\n          // Loop over all buffers and\n          const { buffer } = record;\n          buffer.push(value);\n          // If the buffer is over the max size, we need to emit it.\n          maxBufferSize <= buffer.length && emit(record);\n        }\n      },\n      () => {\n        // The source completed, emit all of the active\n        // buffers we have before we complete.\n        while (bufferRecords?.length) {\n          subscriber.next(bufferRecords.shift()!.buffer);\n        }\n        bufferTimeSubscriber?.unsubscribe();\n        subscriber.complete();\n        subscriber.unsubscribe();\n      },\n      // Pass all errors through to consumer.\n      undefined,\n      // Clean up\n      () => (bufferRecords = null)\n    );\n\n    source.subscribe(bufferTimeSubscriber);\n  });\n}\n","import { Subscription } from '../Subscription';\nimport { OperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nimport { arrRemove } from '../util/arrRemove';\n\n/**\n * Buffers the source Observable values starting from an emission from\n * `openings` and ending when the output of `closingSelector` emits.\n *\n * <span class=\"informal\">Collects values from the past as an array. Starts\n * collecting only when `opening` emits, and calls the `closingSelector`\n * function to get an Observable that tells when to close the buffer.</span>\n *\n * ![](bufferToggle.png)\n *\n * Buffers values from the source by opening the buffer via signals from an\n * Observable provided to `openings`, and closing and sending the buffers when\n * a Subscribable or Promise returned by the `closingSelector` function emits.\n *\n * ## Example\n *\n * Every other second, emit the click events from the next 500ms\n *\n * ```ts\n * import { fromEvent, interval, bufferToggle, EMPTY } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const openings = interval(1000);\n * const buffered = clicks.pipe(bufferToggle(openings, i =>\n *   i % 2 ? interval(500) : EMPTY\n * ));\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferWhen}\n * @see {@link windowToggle}\n *\n * @param openings A Subscribable or Promise of notifications to start new\n * buffers.\n * @param closingSelector A function that takes\n * the value emitted by the `openings` observable and returns a Subscribable or Promise,\n * which, when it emits, signals that the associated buffer should be emitted\n * and cleared.\n * @return A function that returns an Observable of arrays of buffered values.\n */\nexport function bufferToggle<T, O>(\n  openings: ObservableInput<O>,\n  closingSelector: (value: O) => ObservableInput<any>\n): OperatorFunction<T, T[]> {\n  return operate((source, subscriber) => {\n    const buffers: T[][] = [];\n\n    // Subscribe to the openings notifier first\n    innerFrom(openings).subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (openValue) => {\n          const buffer: T[] = [];\n          buffers.push(buffer);\n          // We use this composite subscription, so that\n          // when the closing notifier emits, we can tear it down.\n          const closingSubscription = new Subscription();\n\n          const emitBuffer = () => {\n            arrRemove(buffers, buffer);\n            subscriber.next(buffer);\n            closingSubscription.unsubscribe();\n          };\n\n          // The line below will add the subscription to the parent subscriber *and* the closing subscription.\n          closingSubscription.add(innerFrom(closingSelector(openValue)).subscribe(createOperatorSubscriber(subscriber, emitBuffer, noop)));\n        },\n        noop\n      )\n    );\n\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (value) => {\n          // Value from our source. Add it to all pending buffers.\n          for (const buffer of buffers) {\n            buffer.push(value);\n          }\n        },\n        () => {\n          // Source complete. Emit all pending buffers.\n          while (buffers.length > 0) {\n            subscriber.next(buffers.shift()!);\n          }\n          subscriber.complete();\n        }\n      )\n    );\n  });\n}\n","import { Subscriber } from '../Subscriber';\nimport { ObservableInput, OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\n\n/**\n * Buffers the source Observable values, using a factory function of closing\n * Observables to determine when to close, emit, and reset the buffer.\n *\n * <span class=\"informal\">Collects values from the past as an array. When it\n * starts collecting values, it calls a function that returns an Observable that\n * tells when to close the buffer and restart collecting.</span>\n *\n * ![](bufferWhen.svg)\n *\n * Opens a buffer immediately, then closes the buffer when the observable\n * returned by calling `closingSelector` function emits a value. When it closes\n * the buffer, it immediately opens a new buffer and repeats the process.\n *\n * ## Example\n *\n * Emit an array of the last clicks every [1-5] random seconds\n *\n * ```ts\n * import { fromEvent, bufferWhen, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const buffered = clicks.pipe(\n *   bufferWhen(() => interval(1000 + Math.random() * 4000))\n * );\n * buffered.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n * @see {@link bufferTime}\n * @see {@link bufferToggle}\n * @see {@link windowWhen}\n *\n * @param closingSelector A function that takes no arguments and returns an\n * Observable that signals buffer closure.\n * @return A function that returns an Observable of arrays of buffered values.\n */\nexport function bufferWhen<T>(closingSelector: () => ObservableInput<any>): OperatorFunction<T, T[]> {\n  return operate((source, subscriber) => {\n    // The buffer we keep and emit.\n    let buffer: T[] | null = null;\n    // A reference to the subscriber used to subscribe to\n    // the closing notifier. We need to hold this so we can\n    // end the subscription after the first notification.\n    let closingSubscriber: Subscriber<T> | null = null;\n\n    // Ends the previous closing notifier subscription, so it\n    // terminates after the first emission, then emits\n    // the current buffer  if there is one, starts a new buffer, and starts a\n    // new closing notifier.\n    const openBuffer = () => {\n      // Make sure to finalize the closing subscription, we only cared\n      // about one notification.\n      closingSubscriber?.unsubscribe();\n      // emit the buffer if we have one, and start a new buffer.\n      const b = buffer;\n      buffer = [];\n      b && subscriber.next(b);\n\n      // Get a new closing notifier and subscribe to it.\n      innerFrom(closingSelector()).subscribe((closingSubscriber = createOperatorSubscriber(subscriber, openBuffer, noop)));\n    };\n\n    // Start the first buffer.\n    openBuffer();\n\n    // Subscribe to our source.\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        // Add every new value to the current buffer.\n        (value) => buffer?.push(value),\n        // When we complete, emit the buffer if we have one,\n        // then complete the result.\n        () => {\n          buffer && subscriber.next(buffer);\n          subscriber.complete();\n        },\n        // Pass all errors through to consumer.\n        undefined,\n        // Release memory on finalization\n        () => (buffer = closingSubscriber = null!)\n      )\n    );\n  });\n}\n","import { Observable } from '../Observable';\n\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { Subscription } from '../Subscription';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { operate } from '../util/lift';\n\nexport function catchError<T, O extends ObservableInput<any>>(\n  selector: (err: any, caught: Observable<T>) => O\n): OperatorFunction<T, T | ObservedValueOf<O>>;\n\n/**\n * Catches errors on the observable to be handled by returning a new observable or throwing an error.\n *\n * <span class=\"informal\">\n * It only listens to the error channel and ignores notifications.\n * Handles errors from the source observable, and maps them to a new observable.\n * The error may also be rethrown, or a new error can be thrown to emit an error from the result.\n * </span>\n *\n * ![](catch.png)\n *\n * This operator handles errors, but forwards along all other events to the resulting observable.\n * If the source observable terminates with an error, it will map that error to a new observable,\n * subscribe to it, and forward all of its events to the resulting observable.\n *\n * ## Examples\n *\n * Continue with a different Observable when there's an error\n *\n * ```ts\n * import { of, map, catchError } from 'rxjs';\n *\n * of(1, 2, 3, 4, 5)\n *   .pipe(\n *     map(n => {\n *       if (n === 4) {\n *         throw 'four!';\n *       }\n *       return n;\n *     }),\n *     catchError(err => of('I', 'II', 'III', 'IV', 'V'))\n *   )\n *   .subscribe(x => console.log(x));\n *   // 1, 2, 3, I, II, III, IV, V\n * ```\n *\n * Retry the caught source Observable again in case of error, similar to `retry()` operator\n *\n * ```ts\n * import { of, map, catchError, take } from 'rxjs';\n *\n * of(1, 2, 3, 4, 5)\n *   .pipe(\n *     map(n => {\n *       if (n === 4) {\n *         throw 'four!';\n *       }\n *       return n;\n *     }),\n *     catchError((err, caught) => caught),\n *     take(30)\n *   )\n *   .subscribe(x => console.log(x));\n *   // 1, 2, 3, 1, 2, 3, ...\n * ```\n *\n * Throw a new error when the source Observable throws an error\n *\n * ```ts\n * import { of, map, catchError } from 'rxjs';\n *\n * of(1, 2, 3, 4, 5)\n *   .pipe(\n *     map(n => {\n *       if (n === 4) {\n *         throw 'four!';\n *       }\n *       return n;\n *     }),\n *     catchError(err => {\n *       throw 'error in source. Details: ' + err;\n *     })\n *   )\n *   .subscribe({\n *     next: x => console.log(x),\n *     error: err => console.log(err)\n *   });\n *   // 1, 2, 3, error in source. Details: four!\n * ```\n *\n * @see {@link onErrorResumeNext}\n * @see {@link repeat}\n * @see {@link repeatWhen}\n * @see {@link retry }\n * @see {@link retryWhen}\n *\n * @param selector A function that takes as arguments `err`, which is the error, and `caught`, which\n * is the source observable, in case you'd like to \"retry\" that observable by returning it again.\n * Whatever observable is returned by the `selector` will be used to continue the observable chain.\n * @return A function that returns an Observable that originates from either\n * the source or the Observable returned by the `selector` function.\n */\nexport function catchError<T, O extends ObservableInput<any>>(\n  selector: (err: any, caught: Observable<T>) => O\n): OperatorFunction<T, T | ObservedValueOf<O>> {\n  return operate((source, subscriber) => {\n    let innerSub: Subscription | null = null;\n    let syncUnsub = false;\n    let handledResult: Observable<ObservedValueOf<O>>;\n\n    innerSub = source.subscribe(\n      createOperatorSubscriber(subscriber, undefined, undefined, (err) => {\n        handledResult = innerFrom(selector(err, catchError(selector)(source)));\n        if (innerSub) {\n          innerSub.unsubscribe();\n          innerSub = null;\n          handledResult.subscribe(subscriber);\n        } else {\n          // We don't have an innerSub yet, that means the error was synchronous\n          // because the subscribe call hasn't returned yet.\n          syncUnsub = true;\n        }\n      })\n    );\n\n    if (syncUnsub) {\n      // We have a synchronous error, we need to make sure to\n      // finalize right away. This ensures that callbacks in the `finalize` operator are called\n      // at the right time, and that finalization occurs at the expected\n      // time between the source error and the subscription to the\n      // next observable.\n      innerSub.unsubscribe();\n      innerSub = null;\n      handledResult!.subscribe(subscriber);\n    }\n  });\n}\n","const { isArray } = Array;\nconst { getPrototypeOf, prototype: objectProto, keys: getKeys } = Object;\n\n/**\n * Used in functions where either a list of arguments, a single array of arguments, or a\n * dictionary of arguments can be returned. Returns an object with an `args` property with\n * the arguments in an array, if it is a dictionary, it will also return the `keys` in another\n * property.\n */\nexport function argsArgArrayOrObject<T, O extends Record<string, T>>(args: T[] | [O] | [T[]]): { args: T[]; keys: string[] | null } {\n  if (args.length === 1) {\n    const first = args[0];\n    if (isArray(first)) {\n      return { args: first, keys: null };\n    }\n    if (isPOJO(first)) {\n      const keys = getKeys(first);\n      return {\n        args: keys.map((key) => first[key]),\n        keys,\n      };\n    }\n  }\n\n  return { args: args as T[], keys: null };\n}\n\nfunction isPOJO(obj: any): obj is object {\n  return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n","/** @prettier */\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Re-emits all notifications from source Observable with specified scheduler.\n *\n * <span class=\"informal\">Ensure a specific scheduler is used, from outside of an Observable.</span>\n *\n * `observeOn` is an operator that accepts a scheduler as a first parameter, which will be used to reschedule\n * notifications emitted by the source Observable. It might be useful, if you do not have control over\n * internal scheduler of a given Observable, but want to control when its values are emitted nevertheless.\n *\n * Returned Observable emits the same notifications (nexted values, complete and error events) as the source Observable,\n * but rescheduled with provided scheduler. Note that this doesn't mean that source Observables internal\n * scheduler will be replaced in any way. Original scheduler still will be used, but when the source Observable emits\n * notification, it will be immediately scheduled again - this time with scheduler passed to `observeOn`.\n * An anti-pattern would be calling `observeOn` on Observable that emits lots of values synchronously, to split\n * that emissions into asynchronous chunks. For this to happen, scheduler would have to be passed into the source\n * Observable directly (usually into the operator that creates it). `observeOn` simply delays notifications a\n * little bit more, to ensure that they are emitted at expected moments.\n *\n * As a matter of fact, `observeOn` accepts second parameter, which specifies in milliseconds with what delay notifications\n * will be emitted. The main difference between {@link delay} operator and `observeOn` is that `observeOn`\n * will delay all notifications - including error notifications - while `delay` will pass through error\n * from source Observable immediately when it is emitted. In general it is highly recommended to use `delay` operator\n * for any kind of delaying of values in the stream, while using `observeOn` to specify which scheduler should be used\n * for notification emissions in general.\n *\n * ## Example\n *\n * Ensure values in subscribe are called just before browser repaint\n *\n * ```ts\n * import { interval, observeOn, animationFrameScheduler } from 'rxjs';\n *\n * const someDiv = document.createElement('div');\n * someDiv.style.cssText = 'width: 200px;background: #09c';\n * document.body.appendChild(someDiv);\n * const intervals = interval(10);      // Intervals are scheduled\n *                                      // with async scheduler by default...\n * intervals.pipe(\n *   observeOn(animationFrameScheduler) // ...but we will observe on animationFrame\n * )                                    // scheduler to ensure smooth animation.\n * .subscribe(val => {\n *   someDiv.style.height = val + 'px';\n * });\n * ```\n *\n * @see {@link delay}\n *\n * @param scheduler Scheduler that will be used to reschedule notifications from source Observable.\n * @param delay Number of milliseconds that states with what delay every notification should be rescheduled.\n * @return A function that returns an Observable that emits the same\n * notifications as the source Observable, but with provided scheduler.\n */\nexport function observeOn<T>(scheduler: SchedulerLike, delay = 0): MonoTypeOperatorFunction<T> {\n  return operate((source, subscriber) => {\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (value) => executeSchedule(subscriber, scheduler, () => subscriber.next(value), delay),\n        () => executeSchedule(subscriber, scheduler, () => subscriber.complete(), delay),\n        (err) => executeSchedule(subscriber, scheduler, () => subscriber.error(err), delay)\n      )\n    );\n  });\n}\n","import { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\n\n/**\n * Asynchronously subscribes Observers to this Observable on the specified {@link SchedulerLike}.\n *\n * With `subscribeOn` you can decide what type of scheduler a specific Observable will be using when it is subscribed to.\n *\n * Schedulers control the speed and order of emissions to observers from an Observable stream.\n *\n * ![](subscribeOn.png)\n *\n * ## Example\n *\n * Given the following code:\n *\n * ```ts\n * import { of, merge } from 'rxjs';\n *\n * const a = of(1, 2, 3);\n * const b = of(4, 5, 6);\n *\n * merge(a, b).subscribe(console.log);\n *\n * // Outputs\n * // 1\n * // 2\n * // 3\n * // 4\n * // 5\n * // 6\n * ```\n *\n * Both Observable `a` and `b` will emit their values directly and synchronously once they are subscribed to.\n *\n * If we instead use the `subscribeOn` operator declaring that we want to use the {@link asyncScheduler} for values emitted by Observable `a`:\n *\n * ```ts\n * import { of, subscribeOn, asyncScheduler, merge } from 'rxjs';\n *\n * const a = of(1, 2, 3).pipe(subscribeOn(asyncScheduler));\n * const b = of(4, 5, 6);\n *\n * merge(a, b).subscribe(console.log);\n *\n * // Outputs\n * // 4\n * // 5\n * // 6\n * // 1\n * // 2\n * // 3\n * ```\n *\n * The reason for this is that Observable `b` emits its values directly and synchronously like before\n * but the emissions from `a` are scheduled on the event loop because we are now using the {@link asyncScheduler} for that specific Observable.\n *\n * @param scheduler The {@link SchedulerLike} to perform subscription actions on.\n * @param delay A delay to pass to the scheduler to delay subscriptions\n * @return A function that returns an Observable modified so that its\n * subscriptions happen on the specified {@link SchedulerLike}.\n */\nexport function subscribeOn<T>(scheduler: SchedulerLike, delay: number = 0): MonoTypeOperatorFunction<T> {\n  return operate((source, subscriber) => {\n    subscriber.add(scheduler.schedule(() => source.subscribe(subscriber), delay));\n  });\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nimport { InteropObservable, SchedulerLike } from '../types';\n\nexport function scheduleObservable<T>(input: InteropObservable<T>, scheduler: SchedulerLike) {\n  return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nimport { SchedulerLike } from '../types';\n\nexport function schedulePromise<T>(input: PromiseLike<T>, scheduler: SchedulerLike) {\n  return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\nexport function scheduleArray<T>(input: ArrayLike<T>, scheduler: SchedulerLike) {\n  return new Observable<T>((subscriber) => {\n    // The current array index.\n    let i = 0;\n    // Start iterating over the array like on a schedule.\n    return scheduler.schedule(function () {\n      if (i === input.length) {\n        // If we have hit the end of the array like in the\n        // previous job, we can complete.\n        subscriber.complete();\n      } else {\n        // Otherwise let's next the value at the current index,\n        // then increment our index.\n        subscriber.next(input[i++]);\n        // If the last emission didn't cause us to close the subscriber\n        // (via take or some side effect), reschedule the job and we'll\n        // make another pass.\n        if (!subscriber.closed) {\n          this.schedule();\n        }\n      }\n    });\n  });\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\n\n/**\n * Used in {@link scheduled} to create an observable from an Iterable.\n * @param input The iterable to create an observable from\n * @param scheduler The scheduler to use\n */\nexport function scheduleIterable<T>(input: Iterable<T>, scheduler: SchedulerLike) {\n  return new Observable<T>((subscriber) => {\n    let iterator: Iterator<T, T>;\n\n    // Schedule the initial creation of the iterator from\n    // the iterable. This is so the code in the iterable is\n    // not called until the scheduled job fires.\n    executeSchedule(subscriber, scheduler, () => {\n      // Create the iterator.\n      iterator = (input as any)[Symbol_iterator]();\n\n      executeSchedule(\n        subscriber,\n        scheduler,\n        () => {\n          let value: T;\n          let done: boolean | undefined;\n          try {\n            // Pull the value out of the iterator\n            ({ value, done } = iterator.next());\n          } catch (err) {\n            // We got an error while pulling from the iterator\n            subscriber.error(err);\n            return;\n          }\n\n          if (done) {\n            // If it is \"done\" we just complete. This mimics the\n            // behavior of JavaScript's `for..of` consumption of\n            // iterables, which will not emit the value from an iterator\n            // result of `{ done: true: value: 'here' }`.\n            subscriber.complete();\n          } else {\n            // The iterable is not done, emit the value.\n            subscriber.next(value);\n          }\n        },\n        0,\n        true\n      );\n    });\n\n    // During finalization, if we see this iterator has a `return` method,\n    // then we know it is a Generator, and not just an Iterator. So we call\n    // the `return()` function. This will ensure that any `finally { }` blocks\n    // inside of the generator we can hit will be hit properly.\n    return () => isFunction(iterator?.return) && iterator.return();\n  });\n}\n","import { SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\n\nexport function scheduleAsyncIterable<T>(input: AsyncIterable<T>, scheduler: SchedulerLike) {\n  if (!input) {\n    throw new Error('Iterable cannot be null');\n  }\n  return new Observable<T>((subscriber) => {\n    executeSchedule(subscriber, scheduler, () => {\n      const iterator = input[Symbol.asyncIterator]();\n      executeSchedule(\n        subscriber,\n        scheduler,\n        () => {\n          iterator.next().then((result) => {\n            if (result.done) {\n              // This will remove the subscriptions from\n              // the parent subscription.\n              subscriber.complete();\n            } else {\n              subscriber.next(result.value);\n            }\n          });\n        },\n        0,\n        true\n      );\n    });\n  });\n}\n","import { SchedulerLike, ReadableStreamLike } from '../types';\nimport { Observable } from '../Observable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\n\nexport function scheduleReadableStreamLike<T>(input: ReadableStreamLike<T>, scheduler: SchedulerLike): Observable<T> {\n  return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { ObservableInput, SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\n\n/**\n * Converts from a common {@link ObservableInput} type to an observable where subscription and emissions\n * are scheduled on the provided scheduler.\n *\n * @see {@link from}\n * @see {@link of}\n *\n * @param input The observable, array, promise, iterable, etc you would like to schedule\n * @param scheduler The scheduler to use to schedule the subscription and emissions from\n * the returned observable.\n */\nexport function scheduled<T>(input: ObservableInput<T>, scheduler: SchedulerLike): Observable<T> {\n  if (input != null) {\n    if (isInteropObservable(input)) {\n      return scheduleObservable(input, scheduler);\n    }\n    if (isArrayLike(input)) {\n      return scheduleArray(input, scheduler);\n    }\n    if (isPromise(input)) {\n      return schedulePromise(input, scheduler);\n    }\n    if (isAsyncIterable(input)) {\n      return scheduleAsyncIterable(input, scheduler);\n    }\n    if (isIterable(input)) {\n      return scheduleIterable(input, scheduler);\n    }\n    if (isReadableStreamLike(input)) {\n      return scheduleReadableStreamLike(input, scheduler);\n    }\n  }\n  throw createInvalidObservableTypeError(input);\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf } from '../types';\nimport { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\n\nexport function from<O extends ObservableInput<any>>(input: O): Observable<ObservedValueOf<O>>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function from<O extends ObservableInput<any>>(input: O, scheduler: SchedulerLike | undefined): Observable<ObservedValueOf<O>>;\n\n/**\n * Creates an Observable from an Array, an array-like object, a Promise, an iterable object, or an Observable-like object.\n *\n * <span class=\"informal\">Converts almost anything to an Observable.</span>\n *\n * ![](from.png)\n *\n * `from` converts various other objects and data types into Observables. It also converts a Promise, an array-like, or an\n * <a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#iterable\" target=\"_blank\">iterable</a>\n * object into an Observable that emits the items in that promise, array, or iterable. A String, in this context, is treated\n * as an array of characters. Observable-like objects (contains a function named with the ES2015 Symbol for Observable) can also be\n * converted through this operator.\n *\n * ## Examples\n *\n * Converts an array to an Observable\n *\n * ```ts\n * import { from } from 'rxjs';\n *\n * const array = [10, 20, 30];\n * const result = from(array);\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 10\n * // 20\n * // 30\n * ```\n *\n * Convert an infinite iterable (from a generator) to an Observable\n *\n * ```ts\n * import { from, take } from 'rxjs';\n *\n * function* generateDoubles(seed) {\n *    let i = seed;\n *    while (true) {\n *      yield i;\n *      i = 2 * i; // double it\n *    }\n * }\n *\n * const iterator = generateDoubles(3);\n * const result = from(iterator).pipe(take(10));\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 3\n * // 6\n * // 12\n * // 24\n * // 48\n * // 96\n * // 192\n * // 384\n * // 768\n * // 1536\n * ```\n *\n * With `asyncScheduler`\n *\n * ```ts\n * import { from, asyncScheduler } from 'rxjs';\n *\n * console.log('start');\n *\n * const array = [10, 20, 30];\n * const result = from(array, asyncScheduler);\n *\n * result.subscribe(x => console.log(x));\n *\n * console.log('end');\n *\n * // Logs:\n * // 'start'\n * // 'end'\n * // 10\n * // 20\n * // 30\n * ```\n *\n * @see {@link fromEvent}\n * @see {@link fromEventPattern}\n *\n * @param input A subscription object, a Promise, an Observable-like,\n * an Array, an iterable, or an array-like object to be converted.\n * @param scheduler An optional {@link SchedulerLike} on which to schedule the emission of values.\n * @return An Observable converted from {@link ObservableInput}.\n */\nexport function from<T>(input: ObservableInput<T>, scheduler?: SchedulerLike): Observable<T> {\n  return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n","import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\nexport function map<T, R>(project: (value: T, index: number) => R): OperatorFunction<T, R>;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function map<T, R, A>(project: (this: A, value: T, index: number) => R, thisArg: A): OperatorFunction<T, R>;\n\n/**\n * Applies a given `project` function to each value emitted by the source\n * Observable, and emits the resulting values as an Observable.\n *\n * <span class=\"informal\">Like [Array.prototype.map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map),\n * it passes each source value through a transformation function to get\n * corresponding output values.</span>\n *\n * ![](map.png)\n *\n * Similar to the well known `Array.prototype.map` function, this operator\n * applies a projection to each value and emits that projection in the output\n * Observable.\n *\n * ## Example\n *\n * Map every click to the `clientX` position of that click\n *\n * ```ts\n * import { fromEvent, map } from 'rxjs';\n *\n * const clicks = fromEvent<PointerEvent>(document, 'click');\n * const positions = clicks.pipe(map(ev => ev.clientX));\n *\n * positions.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link mapTo}\n * @see {@link pluck}\n *\n * @param project The function to apply to each `value` emitted by the source\n * Observable. The `index` parameter is the number `i` for the i-th emission\n * that has happened since the subscription, starting from the number `0`.\n * @param thisArg An optional argument to define what `this` is in the\n * `project` function.\n * @return A function that returns an Observable that emits the values from the\n * source Observable transformed by the given `project` function.\n */\nexport function map<T, R>(project: (value: T, index: number) => R, thisArg?: any): OperatorFunction<T, R> {\n  return operate((source, subscriber) => {\n    // The index of the value from the source. Used with projection.\n    let index = 0;\n    // Subscribe to the source, all errors and completions are sent along\n    // to the consumer.\n    source.subscribe(\n      createOperatorSubscriber(subscriber, (value: T) => {\n        // Call the projection function with the appropriate this context,\n        // and send the resulting value to the consumer.\n        subscriber.next(project.call(thisArg, value, index++));\n      })\n    );\n  });\n}\n","import { OperatorFunction } from \"../types\";\nimport { map } from \"../operators/map\";\n\nconst { isArray } = Array;\n\nfunction callOrApply<T, R>(fn: ((...values: T[]) => R), args: T|T[]): R {\n    return isArray(args) ? fn(...args) : fn(args);\n}\n\n/**\n * Used in several -- mostly deprecated -- situations where we need to \n * apply a list of arguments or a single argument to a result selector.\n */\nexport function mapOneOrManyArgs<T, R>(fn: ((...values: T[]) => R)): OperatorFunction<T|T[], R> {\n    return map(args => callOrApply(fn, args))\n}","export function createObject(keys: string[], values: any[]) {\n  return keys.reduce((result, key, i) => ((result[key] = values[i]), result), {} as any);\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, SchedulerLike, ObservedValueOf, ObservableInputTuple } from '../types';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { Subscriber } from '../Subscriber';\nimport { from } from './from';\nimport { identity } from '../util/identity';\nimport { Subscription } from '../Subscription';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { popResultSelector, popScheduler } from '../util/args';\nimport { createObject } from '../util/createObject';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { AnyCatcher } from '../AnyCatcher';\nimport { executeSchedule } from '../util/executeSchedule';\n\n// combineLatest(any)\n// We put this first because we need to catch cases where the user has supplied\n// _exactly `any`_ as the argument. Since `any` literally matches _anything_,\n// we don't want it to randomly hit one of the other type signatures below,\n// as we have no idea at build-time what type we should be returning when given an any.\n\n/**\n * You have passed `any` here, we can't figure out if it is\n * an array or an object, so you're getting `unknown`. Use better types.\n * @param arg Something typed as `any`\n */\nexport function combineLatest<T extends AnyCatcher>(arg: T): Observable<unknown>;\n\n// combineLatest([a, b, c])\nexport function combineLatest(sources: []): Observable<never>;\nexport function combineLatest<A extends readonly unknown[]>(sources: readonly [...ObservableInputTuple<A>]): Observable<A>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `combineLatestAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function combineLatest<A extends readonly unknown[], R>(\n  sources: readonly [...ObservableInputTuple<A>],\n  resultSelector: (...values: A) => R,\n  scheduler: SchedulerLike\n): Observable<R>;\nexport function combineLatest<A extends readonly unknown[], R>(\n  sources: readonly [...ObservableInputTuple<A>],\n  resultSelector: (...values: A) => R\n): Observable<R>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `combineLatestAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function combineLatest<A extends readonly unknown[]>(\n  sources: readonly [...ObservableInputTuple<A>],\n  scheduler: SchedulerLike\n): Observable<A>;\n\n// combineLatest(a, b, c)\n/** @deprecated Pass an array of sources instead. The rest-parameters signature will be removed in v8. Details: https://rxjs.dev/deprecations/array-argument */\nexport function combineLatest<A extends readonly unknown[]>(...sources: [...ObservableInputTuple<A>]): Observable<A>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `combineLatestAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function combineLatest<A extends readonly unknown[], R>(\n  ...sourcesAndResultSelectorAndScheduler: [...ObservableInputTuple<A>, (...values: A) => R, SchedulerLike]\n): Observable<R>;\n/** @deprecated Pass an array of sources instead. The rest-parameters signature will be removed in v8. Details: https://rxjs.dev/deprecations/array-argument */\nexport function combineLatest<A extends readonly unknown[], R>(\n  ...sourcesAndResultSelector: [...ObservableInputTuple<A>, (...values: A) => R]\n): Observable<R>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `combineLatestAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function combineLatest<A extends readonly unknown[]>(\n  ...sourcesAndScheduler: [...ObservableInputTuple<A>, SchedulerLike]\n): Observable<A>;\n\n// combineLatest({a, b, c})\nexport function combineLatest(sourcesObject: { [K in any]: never }): Observable<never>;\nexport function combineLatest<T extends Record<string, ObservableInput<any>>>(\n  sourcesObject: T\n): Observable<{ [K in keyof T]: ObservedValueOf<T[K]> }>;\n\n/**\n * Combines multiple Observables to create an Observable whose values are\n * calculated from the latest values of each of its input Observables.\n *\n * <span class=\"informal\">Whenever any input Observable emits a value, it\n * computes a formula using the latest values from all the inputs, then emits\n * the output of that formula.</span>\n *\n * ![](combineLatest.png)\n *\n * `combineLatest` combines the values from all the Observables passed in the\n * observables array. This is done by subscribing to each Observable in order and,\n * whenever any Observable emits, collecting an array of the most recent\n * values from each Observable. So if you pass `n` Observables to this operator,\n * the returned Observable will always emit an array of `n` values, in an order\n * corresponding to the order of the passed Observables (the value from the first Observable\n * will be at index 0 of the array and so on).\n *\n * Static version of `combineLatest` accepts an array of Observables. Note that an array of\n * Observables is a good choice, if you don't know beforehand how many Observables\n * you will combine. Passing an empty array will result in an Observable that\n * completes immediately.\n *\n * To ensure the output array always has the same length, `combineLatest` will\n * actually wait for all input Observables to emit at least once,\n * before it starts emitting results. This means if some Observable emits\n * values before other Observables started emitting, all these values but the last\n * will be lost. On the other hand, if some Observable does not emit a value but\n * completes, resulting Observable will complete at the same moment without\n * emitting anything, since it will now be impossible to include a value from the\n * completed Observable in the resulting array. Also, if some input Observable does\n * not emit any value and never completes, `combineLatest` will also never emit\n * and never complete, since, again, it will wait for all streams to emit some\n * value.\n *\n * If at least one Observable was passed to `combineLatest` and all passed Observables\n * emitted something, the resulting Observable will complete when all combined\n * streams complete. So even if some Observable completes, the result of\n * `combineLatest` will still emit values when other Observables do. In case\n * of a completed Observable, its value from now on will always be the last\n * emitted value. On the other hand, if any Observable errors, `combineLatest`\n * will error immediately as well, and all other Observables will be unsubscribed.\n *\n * ## Examples\n *\n * Combine two timer Observables\n *\n * ```ts\n * import { timer, combineLatest } from 'rxjs';\n *\n * const firstTimer = timer(0, 1000); // emit 0, 1, 2... after every second, starting from now\n * const secondTimer = timer(500, 1000); // emit 0, 1, 2... after every second, starting 0,5s from now\n * const combinedTimers = combineLatest([firstTimer, secondTimer]);\n * combinedTimers.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0] after 0.5s\n * // [1, 0] after 1s\n * // [1, 1] after 1.5s\n * // [2, 1] after 2s\n * ```\n *\n * Combine a dictionary of Observables\n *\n * ```ts\n * import { of, delay, startWith, combineLatest } from 'rxjs';\n *\n * const observables = {\n *   a: of(1).pipe(delay(1000), startWith(0)),\n *   b: of(5).pipe(delay(5000), startWith(0)),\n *   c: of(10).pipe(delay(10000), startWith(0))\n * };\n * const combined = combineLatest(observables);\n * combined.subscribe(value => console.log(value));\n * // Logs\n * // { a: 0, b: 0, c: 0 } immediately\n * // { a: 1, b: 0, c: 0 } after 1s\n * // { a: 1, b: 5, c: 0 } after 5s\n * // { a: 1, b: 5, c: 10 } after 10s\n * ```\n *\n * Combine an array of Observables\n *\n * ```ts\n * import { of, delay, startWith, combineLatest } from 'rxjs';\n *\n * const observables = [1, 5, 10].map(\n *   n => of(n).pipe(\n *     delay(n * 1000), // emit 0 and then emit n after n seconds\n *     startWith(0)\n *   )\n * );\n * const combined = combineLatest(observables);\n * combined.subscribe(value => console.log(value));\n * // Logs\n * // [0, 0, 0] immediately\n * // [1, 0, 0] after 1s\n * // [1, 5, 0] after 5s\n * // [1, 5, 10] after 10s\n * ```\n *\n * Use map operator to dynamically calculate the Body-Mass Index\n *\n * ```ts\n * import { of, combineLatest, map } from 'rxjs';\n *\n * const weight = of(70, 72, 76, 79, 75);\n * const height = of(1.76, 1.77, 1.78);\n * const bmi = combineLatest([weight, height]).pipe(\n *   map(([w, h]) => w / (h * h)),\n * );\n * bmi.subscribe(x => console.log('BMI is ' + x));\n *\n * // With output to console:\n * // BMI is 24.212293388429753\n * // BMI is 23.93948099205209\n * // BMI is 23.671253629592222\n * ```\n *\n * @see {@link combineLatestAll}\n * @see {@link merge}\n * @see {@link withLatestFrom}\n *\n * @param args Any number of `ObservableInput`s provided either as an array or as an object\n * to combine with each other. If the last parameter is the function, it will be used to project the\n * values from the combined latest values into a new value on the output Observable.\n * @return An Observable of projected values from the most recent values from each `ObservableInput`,\n * or an array of the most recent values from each `ObservableInput`.\n */\nexport function combineLatest<O extends ObservableInput<any>, R>(...args: any[]): Observable<R> | Observable<ObservedValueOf<O>[]> {\n  const scheduler = popScheduler(args);\n  const resultSelector = popResultSelector(args);\n\n  const { args: observables, keys } = argsArgArrayOrObject(args);\n\n  if (observables.length === 0) {\n    // If no observables are passed, or someone has passed an empty array\n    // of observables, or even an empty object POJO, we need to just\n    // complete (EMPTY), but we have to honor the scheduler provided if any.\n    return from([], scheduler as any);\n  }\n\n  const result = new Observable<ObservedValueOf<O>[]>(\n    combineLatestInit(\n      observables as ObservableInput<ObservedValueOf<O>>[],\n      scheduler,\n      keys\n        ? // A handler for scrubbing the array of args into a dictionary.\n          (values) => createObject(keys, values)\n        : // A passthrough to just return the array\n          identity\n    )\n  );\n\n  return resultSelector ? (result.pipe(mapOneOrManyArgs(resultSelector)) as Observable<R>) : result;\n}\n\nexport function combineLatestInit(\n  observables: ObservableInput<any>[],\n  scheduler?: SchedulerLike,\n  valueTransform: (values: any[]) => any = identity\n) {\n  return (subscriber: Subscriber<any>) => {\n    // The outer subscription. We're capturing this in a function\n    // because we may have to schedule it.\n    maybeSchedule(\n      scheduler,\n      () => {\n        const { length } = observables;\n        // A store for the values each observable has emitted so far. We match observable to value on index.\n        const values = new Array(length);\n        // The number of currently active subscriptions, as they complete, we decrement this number to see if\n        // we are all done combining values, so we can complete the result.\n        let active = length;\n        // The number of inner sources that still haven't emitted the first value\n        // We need to track this because all sources need to emit one value in order\n        // to start emitting values.\n        let remainingFirstValues = length;\n        // The loop to kick off subscription. We're keying everything on index `i` to relate the observables passed\n        // in to the slot in the output array or the key in the array of keys in the output dictionary.\n        for (let i = 0; i < length; i++) {\n          maybeSchedule(\n            scheduler,\n            () => {\n              const source = from(observables[i], scheduler as any);\n              let hasFirstValue = false;\n              source.subscribe(\n                createOperatorSubscriber(\n                  subscriber,\n                  (value) => {\n                    // When we get a value, record it in our set of values.\n                    values[i] = value;\n                    if (!hasFirstValue) {\n                      // If this is our first value, record that.\n                      hasFirstValue = true;\n                      remainingFirstValues--;\n                    }\n                    if (!remainingFirstValues) {\n                      // We're not waiting for any more\n                      // first values, so we can emit!\n                      subscriber.next(valueTransform(values.slice()));\n                    }\n                  },\n                  () => {\n                    if (!--active) {\n                      // We only complete the result if we have no more active\n                      // inner observables.\n                      subscriber.complete();\n                    }\n                  }\n                )\n              );\n            },\n            subscriber\n          );\n        }\n      },\n      subscriber\n    );\n  };\n}\n\n/**\n * A small utility to handle the couple of locations where we want to schedule if a scheduler was provided,\n * but we don't if there was no scheduler.\n */\nfunction maybeSchedule(scheduler: SchedulerLike | undefined, execute: () => void, subscription: Subscription) {\n  if (scheduler) {\n    executeSchedule(subscription, scheduler, execute);\n  } else {\n    execute();\n  }\n}\n","import { Observable } from '../Observable';\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subscriber } from '../Subscriber';\nimport { ObservableInput, SchedulerLike } from '../types';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * A process embodying the general \"merge\" strategy. This is used in\n * `mergeMap` and `mergeScan` because the logic is otherwise nearly identical.\n * @param source The original source observable\n * @param subscriber The consumer subscriber\n * @param project The projection function to get our inner sources\n * @param concurrent The number of concurrent inner subscriptions\n * @param onBeforeNext Additional logic to apply before nexting to our consumer\n * @param expand If `true` this will perform an \"expand\" strategy, which differs only\n * in that it recurses, and the inner subscription must be schedule-able.\n * @param innerSubScheduler A scheduler to use to schedule inner subscriptions,\n * this is to support the expand strategy, mostly, and should be deprecated\n */\nexport function mergeInternals<T, R>(\n  source: Observable<T>,\n  subscriber: Subscriber<R>,\n  project: (value: T, index: number) => ObservableInput<R>,\n  concurrent: number,\n  onBeforeNext?: (innerValue: R) => void,\n  expand?: boolean,\n  innerSubScheduler?: SchedulerLike,\n  additionalFinalizer?: () => void\n) {\n  // Buffered values, in the event of going over our concurrency limit\n  const buffer: T[] = [];\n  // The number of active inner subscriptions.\n  let active = 0;\n  // An index to pass to our accumulator function\n  let index = 0;\n  // Whether or not the outer source has completed.\n  let isComplete = false;\n\n  /**\n   * Checks to see if we can complete our result or not.\n   */\n  const checkComplete = () => {\n    // If the outer has completed, and nothing is left in the buffer,\n    // and we don't have any active inner subscriptions, then we can\n    // Emit the state and complete.\n    if (isComplete && !buffer.length && !active) {\n      subscriber.complete();\n    }\n  };\n\n  // If we're under our concurrency limit, just start the inner subscription, otherwise buffer and wait.\n  const outerNext = (value: T) => (active < concurrent ? doInnerSub(value) : buffer.push(value));\n\n  const doInnerSub = (value: T) => {\n    // If we're expanding, we need to emit the outer values and the inner values\n    // as the inners will \"become outers\" in a way as they are recursively fed\n    // back to the projection mechanism.\n    expand && subscriber.next(value as any);\n\n    // Increment the number of active subscriptions so we can track it\n    // against our concurrency limit later.\n    active++;\n\n    // A flag used to show that the inner observable completed.\n    // This is checked during finalization to see if we should\n    // move to the next item in the buffer, if there is on.\n    let innerComplete = false;\n\n    // Start our inner subscription.\n    innerFrom(project(value, index++)).subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (innerValue) => {\n          // `mergeScan` has additional handling here. For example\n          // taking the inner value and updating state.\n          onBeforeNext?.(innerValue);\n\n          if (expand) {\n            // If we're expanding, then just recurse back to our outer\n            // handler. It will emit the value first thing.\n            outerNext(innerValue as any);\n          } else {\n            // Otherwise, emit the inner value.\n            subscriber.next(innerValue);\n          }\n        },\n        () => {\n          // Flag that we have completed, so we know to check the buffer\n          // during finalization.\n          innerComplete = true;\n        },\n        // Errors are passed to the destination.\n        undefined,\n        () => {\n          // During finalization, if the inner completed (it wasn't errored or\n          // cancelled), then we want to try the next item in the buffer if\n          // there is one.\n          if (innerComplete) {\n            // We have to wrap this in a try/catch because it happens during\n            // finalization, possibly asynchronously, and we want to pass\n            // any errors that happen (like in a projection function) to\n            // the outer Subscriber.\n            try {\n              // INNER SOURCE COMPLETE\n              // Decrement the active count to ensure that the next time\n              // we try to call `doInnerSub`, the number is accurate.\n              active--;\n              // If we have more values in the buffer, try to process those\n              // Note that this call will increment `active` ahead of the\n              // next conditional, if there were any more inner subscriptions\n              // to start.\n              while (buffer.length && active < concurrent) {\n                const bufferedValue = buffer.shift()!;\n                // Particularly for `expand`, we need to check to see if a scheduler was provided\n                // for when we want to start our inner subscription. Otherwise, we just start\n                // are next inner subscription.\n                if (innerSubScheduler) {\n                  executeSchedule(subscriber, innerSubScheduler, () => doInnerSub(bufferedValue));\n                } else {\n                  doInnerSub(bufferedValue);\n                }\n              }\n              // Check to see if we can complete, and complete if so.\n              checkComplete();\n            } catch (err) {\n              subscriber.error(err);\n            }\n          }\n        }\n      )\n    );\n  };\n\n  // Subscribe to our source observable.\n  source.subscribe(\n    createOperatorSubscriber(subscriber, outerNext, () => {\n      // Outer completed, make a note of it, and check to see if we can complete everything.\n      isComplete = true;\n      checkComplete();\n    })\n  );\n\n  // Additional finalization (for when the destination is torn down).\n  // Other finalization is added implicitly via subscription above.\n  return () => {\n    additionalFinalizer?.();\n  };\n}\n","import { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\n\n/* tslint:disable:max-line-length */\nexport function mergeMap<T, O extends ObservableInput<any>>(\n  project: (value: T, index: number) => O,\n  concurrent?: number\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function mergeMap<T, O extends ObservableInput<any>>(\n  project: (value: T, index: number) => O,\n  resultSelector: undefined,\n  concurrent?: number\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function mergeMap<T, R, O extends ObservableInput<any>>(\n  project: (value: T, index: number) => O,\n  resultSelector: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R,\n  concurrent?: number\n): OperatorFunction<T, R>;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link mergeAll}.</span>\n *\n * ![](mergeMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger.\n *\n * ## Example\n *\n * Map and flatten each letter to an Observable ticking every 1 second\n *\n * ```ts\n * import { of, mergeMap, interval, map } from 'rxjs';\n *\n * const letters = of('a', 'b', 'c');\n * const result = letters.pipe(\n *   mergeMap(x => interval(1000).pipe(map(i => x + i)))\n * );\n *\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // a0\n * // b0\n * // c0\n * // a1\n * // b1\n * // c1\n * // continues to list a, b, c every second with respective ascending integers\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param project A function that, when applied to an item emitted by the source\n * Observable, returns an Observable.\n * @param concurrent Maximum number of `ObservableInput`s being subscribed to concurrently.\n * @return A function that returns an Observable that emits the result of\n * applying the projection function (and the optional deprecated\n * `resultSelector`) to each item emitted by the source Observable and merging\n * the results of the Observables obtained from this transformation.\n */\nexport function mergeMap<T, R, O extends ObservableInput<any>>(\n  project: (value: T, index: number) => O,\n  resultSelector?: ((outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R) | number,\n  concurrent: number = Infinity\n): OperatorFunction<T, ObservedValueOf<O> | R> {\n  if (isFunction(resultSelector)) {\n    // DEPRECATED PATH\n    return mergeMap((a, i) => map((b: any, ii: number) => resultSelector(a, b, i, ii))(innerFrom(project(a, i))), concurrent);\n  } else if (typeof resultSelector === 'number') {\n    concurrent = resultSelector;\n  }\n\n  return operate((source, subscriber) => mergeInternals(source, subscriber, project, concurrent));\n}\n","import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * A basic scan operation. This is used for `scan` and `reduce`.\n * @param accumulator The accumulator to use\n * @param seed The seed value for the state to accumulate\n * @param hasSeed Whether or not a seed was provided\n * @param emitOnNext Whether or not to emit the state on next\n * @param emitBeforeComplete Whether or not to emit the before completion\n */\n\nexport function scanInternals<V, A, S>(\n  accumulator: (acc: V | A | S, value: V, index: number) => A,\n  seed: S,\n  hasSeed: boolean,\n  emitOnNext: boolean,\n  emitBeforeComplete?: undefined | true\n) {\n  return (source: Observable<V>, subscriber: Subscriber<any>) => {\n    // Whether or not we have state yet. This will only be\n    // false before the first value arrives if we didn't get\n    // a seed value.\n    let hasState = hasSeed;\n    // The state that we're tracking, starting with the seed,\n    // if there is one, and then updated by the return value\n    // from the accumulator on each emission.\n    let state: any = seed;\n    // An index to pass to the accumulator function.\n    let index = 0;\n\n    // Subscribe to our source. All errors and completions are passed through.\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (value) => {\n          // Always increment the index.\n          const i = index++;\n          // Set the state\n          state = hasState\n            ? // We already have state, so we can get the new state from the accumulator\n              accumulator(state, value, i)\n            : // We didn't have state yet, a seed value was not provided, so\n\n              // we set the state to the first value, and mark that we have state now\n              ((hasState = true), value);\n\n          // Maybe send it to the consumer.\n          emitOnNext && subscriber.next(state);\n        },\n        // If an onComplete was given, call it, otherwise\n        // just pass through the complete notification to the consumer.\n        emitBeforeComplete &&\n          (() => {\n            hasState && subscriber.next(state);\n            subscriber.complete();\n          })\n      )\n    );\n  };\n}\n","import { scanInternals } from './scanInternals';\nimport { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\n\nexport function reduce<V, A = V>(accumulator: (acc: A | V, value: V, index: number) => A): OperatorFunction<V, V | A>;\nexport function reduce<V, A>(accumulator: (acc: A, value: V, index: number) => A, seed: A): OperatorFunction<V, A>;\nexport function reduce<V, A, S = A>(accumulator: (acc: A | S, value: V, index: number) => A, seed: S): OperatorFunction<V, A>;\n\n/**\n * Applies an accumulator function over the source Observable, and returns the\n * accumulated result when the source completes, given an optional seed value.\n *\n * <span class=\"informal\">Combines together all values emitted on the source,\n * using an accumulator function that knows how to join a new source value into\n * the accumulation from the past.</span>\n *\n * ![](reduce.png)\n *\n * Like\n * [Array.prototype.reduce()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce),\n * `reduce` applies an `accumulator` function against an accumulation and each\n * value of the source Observable (from the past) to reduce it to a single\n * value, emitted on the output Observable. Note that `reduce` will only emit\n * one value, only when the source Observable completes. It is equivalent to\n * applying operator {@link scan} followed by operator {@link last}.\n *\n * Returns an Observable that applies a specified `accumulator` function to each\n * item emitted by the source Observable. If a `seed` value is specified, then\n * that value will be used as the initial value for the accumulator. If no seed\n * value is specified, the first item of the source is used as the seed.\n *\n * ## Example\n *\n * Count the number of click events that happened in 5 seconds\n *\n * ```ts\n * import { fromEvent, takeUntil, interval, map, reduce } from 'rxjs';\n *\n * const clicksInFiveSeconds = fromEvent(document, 'click')\n *   .pipe(takeUntil(interval(5000)));\n *\n * const ones = clicksInFiveSeconds.pipe(map(() => 1));\n * const seed = 0;\n * const count = ones.pipe(reduce((acc, one) => acc + one, seed));\n *\n * count.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link count}\n * @see {@link expand}\n * @see {@link mergeScan}\n * @see {@link scan}\n *\n * @param accumulator The accumulator function called on each source value.\n * @param seed The initial accumulation value.\n * @return A function that returns an Observable that emits a single value that\n * is the result of accumulating the values emitted by the source Observable.\n */\nexport function reduce<V, A>(accumulator: (acc: V | A, value: V, index: number) => A, seed?: any): OperatorFunction<V, V | A> {\n  return operate(scanInternals(accumulator, seed, arguments.length >= 2, false, true));\n}\n","import { reduce } from './reduce';\nimport { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\n\nconst arrReducer = (arr: any[], value: any) => (arr.push(value), arr);\n\n/**\n * Collects all source emissions and emits them as an array when the source completes.\n *\n * <span class=\"informal\">Get all values inside an array when the source completes</span>\n *\n * ![](toArray.png)\n *\n * `toArray` will wait until the source Observable completes before emitting\n * the array containing all emissions. When the source Observable errors no\n * array will be emitted.\n *\n * ## Example\n *\n * ```ts\n * import { interval, take, toArray } from 'rxjs';\n *\n * const source = interval(1000);\n * const example = source.pipe(\n *   take(10),\n *   toArray()\n * );\n *\n * example.subscribe(value => console.log(value));\n *\n * // output: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n * ```\n *\n * @return A function that returns an Observable that emits an array of items\n * emitted by the source Observable when source completes.\n */\nexport function toArray<T>(): OperatorFunction<T, T[]> {\n  // Because arrays are mutable, and we're mutating the array in this\n  // reducer process, we have to encapsulate the creation of the initial\n  // array within this `operate` function.\n  return operate((source, subscriber) => {\n    reduce(arrReducer, [] as T[])(source).subscribe(subscriber);\n  });\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, OperatorFunction } from '../types';\nimport { identity } from '../util/identity';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { pipe } from '../util/pipe';\nimport { mergeMap } from './mergeMap';\nimport { toArray } from './toArray';\n\n/**\n * Collects all of the inner sources from source observable. Then, once the\n * source completes, joins the values using the given static.\n *\n * This is used for {@link combineLatestAll} and {@link zipAll} which both have the\n * same behavior of collecting all inner observables, then operating on them.\n *\n * @param joinFn The type of static join to apply to the sources collected\n * @param project The projection function to apply to the values, if any\n */\nexport function joinAllInternals<T, R>(joinFn: (sources: ObservableInput<T>[]) => Observable<T>, project?: (...args: any[]) => R) {\n  return pipe(\n    // Collect all inner sources into an array, and emit them when the\n    // source completes.\n    toArray() as OperatorFunction<ObservableInput<T>, ObservableInput<T>[]>,\n    // Run the join function on the collected array of inner sources.\n    mergeMap((sources) => joinFn(sources)),\n    // If a projection function was supplied, apply it to each result.\n    project ? mapOneOrManyArgs(project) : (identity as any)\n  );\n}\n","import { combineLatest } from '../observable/combineLatest';\nimport { OperatorFunction, ObservableInput } from '../types';\nimport { joinAllInternals } from './joinAllInternals';\n\nexport function combineLatestAll<T>(): OperatorFunction<ObservableInput<T>, T[]>;\nexport function combineLatestAll<T>(): OperatorFunction<any, T[]>;\nexport function combineLatestAll<T, R>(project: (...values: T[]) => R): OperatorFunction<ObservableInput<T>, R>;\nexport function combineLatestAll<R>(project: (...values: Array<any>) => R): OperatorFunction<any, R>;\n\n/**\n * Flattens an Observable-of-Observables by applying {@link combineLatest} when the Observable-of-Observables completes.\n *\n * `combineLatestAll` takes an Observable of Observables, and collects all Observables from it. Once the outer Observable completes,\n * it subscribes to all collected Observables and combines their values using the {@link combineLatest} strategy, such that:\n *\n * * Every time an inner Observable emits, the output Observable emits\n * * When the returned observable emits, it emits all of the latest values by:\n *    * If a `project` function is provided, it is called with each recent value from each inner Observable in whatever order they\n *      arrived, and the result of the `project` function is what is emitted by the output Observable.\n *    * If there is no `project` function, an array of all the most recent values is emitted by the output Observable.\n *\n * ## Example\n *\n * Map two click events to a finite interval Observable, then apply `combineLatestAll`\n *\n * ```ts\n * import { fromEvent, map, interval, take, combineLatestAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n *   map(() => interval(Math.random() * 2000).pipe(take(3))),\n *   take(2)\n * );\n * const result = higherOrder.pipe(combineLatestAll());\n *\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatest}\n * @see {@link combineLatestWith}\n * @see {@link mergeAll}\n *\n * @param project optional function to map the most recent values from each inner Observable into a new result.\n * Takes each of the most recent values from each collected inner Observable as arguments, in order.\n * @return A function that returns an Observable that flattens Observables\n * emitted by the source Observable.\n */\nexport function combineLatestAll<R>(project?: (...values: Array<any>) => R) {\n  return joinAllInternals(combineLatest, project);\n}\n","import { combineLatestAll } from './combineLatestAll';\n\n/**\n * @deprecated Renamed to {@link combineLatestAll}. Will be removed in v8.\n */\nexport const combineAll = combineLatestAll;\n","const { isArray } = Array;\n\n/**\n * Used in operators and functions that accept either a list of arguments, or an array of arguments\n * as a single argument.\n */\nexport function argsOrArgArray<T>(args: (T | T[])[]): T[] {\n  return args.length === 1 && isArray(args[0]) ? args[0] : (args as T[]);\n}\n","import { combineLatestInit } from '../observable/combineLatest';\nimport { ObservableInput, ObservableInputTuple, OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { pipe } from '../util/pipe';\nimport { popResultSelector } from '../util/args';\n\n/** @deprecated Replaced with {@link combineLatestWith}. Will be removed in v8. */\nexport function combineLatest<T, A extends readonly unknown[], R>(\n  sources: [...ObservableInputTuple<A>],\n  project: (...values: [T, ...A]) => R\n): OperatorFunction<T, R>;\n/** @deprecated Replaced with {@link combineLatestWith}. Will be removed in v8. */\nexport function combineLatest<T, A extends readonly unknown[], R>(sources: [...ObservableInputTuple<A>]): OperatorFunction<T, [T, ...A]>;\n\n/** @deprecated Replaced with {@link combineLatestWith}. Will be removed in v8. */\nexport function combineLatest<T, A extends readonly unknown[], R>(\n  ...sourcesAndProject: [...ObservableInputTuple<A>, (...values: [T, ...A]) => R]\n): OperatorFunction<T, R>;\n/** @deprecated Replaced with {@link combineLatestWith}. Will be removed in v8. */\nexport function combineLatest<T, A extends readonly unknown[], R>(...sources: [...ObservableInputTuple<A>]): OperatorFunction<T, [T, ...A]>;\n\n/**\n * @deprecated Replaced with {@link combineLatestWith}. Will be removed in v8.\n */\nexport function combineLatest<T, R>(...args: (ObservableInput<any> | ((...values: any[]) => R))[]): OperatorFunction<T, unknown> {\n  const resultSelector = popResultSelector(args);\n  return resultSelector\n    ? pipe(combineLatest(...(args as Array<ObservableInput<any>>)), mapOneOrManyArgs(resultSelector))\n    : operate((source, subscriber) => {\n        combineLatestInit([source, ...argsOrArgArray(args)])(subscriber);\n      });\n}\n","import { ObservableInputTuple, OperatorFunction, Cons } from '../types';\nimport { combineLatest } from './combineLatest';\n\n/**\n * Create an observable that combines the latest values from all passed observables and the source\n * into arrays and emits them.\n *\n * Returns an observable, that when subscribed to, will subscribe to the source observable and all\n * sources provided as arguments. Once all sources emit at least one value, all of the latest values\n * will be emitted as an array. After that, every time any source emits a value, all of the latest values\n * will be emitted as an array.\n *\n * This is a useful operator for eagerly calculating values based off of changed inputs.\n *\n * ## Example\n *\n * Simple concatenation of values from two inputs\n *\n * ```ts\n * import { fromEvent, combineLatestWith, map } from 'rxjs';\n *\n * // Setup: Add two inputs to the page\n * const input1 = document.createElement('input');\n * document.body.appendChild(input1);\n * const input2 = document.createElement('input');\n * document.body.appendChild(input2);\n *\n * // Get streams of changes\n * const input1Changes$ = fromEvent(input1, 'change');\n * const input2Changes$ = fromEvent(input2, 'change');\n *\n * // Combine the changes by adding them together\n * input1Changes$.pipe(\n *   combineLatestWith(input2Changes$),\n *   map(([e1, e2]) => (<HTMLInputElement>e1.target).value + ' - ' + (<HTMLInputElement>e2.target).value)\n * )\n * .subscribe(x => console.log(x));\n * ```\n *\n * @param otherSources the other sources to subscribe to.\n * @return A function that returns an Observable that emits the latest\n * emissions from both source and provided Observables.\n */\nexport function combineLatestWith<T, A extends readonly unknown[]>(\n  ...otherSources: [...ObservableInputTuple<A>]\n): OperatorFunction<T, Cons<T, A>> {\n  return combineLatest(...otherSources);\n}\n","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nimport { OperatorFunction, ObservableInput, ObservedValueOf } from '../types';\n\n/**\n * Converts a higher-order Observable into a first-order Observable which\n * concurrently delivers all values that are emitted on the inner Observables.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables.</span>\n *\n * ![](mergeAll.png)\n *\n * `mergeAll` subscribes to an Observable that emits Observables, also known as\n * a higher-order Observable. Each time it observes one of these emitted inner\n * Observables, it subscribes to that and delivers all the values from the\n * inner Observable on the output Observable. The output Observable only\n * completes once all inner Observables have completed. Any error delivered by\n * a inner Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n *\n * Spawn a new interval Observable for each click event, and blend their outputs as one Observable\n *\n * ```ts\n * import { fromEvent, map, interval, mergeAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(map(() => interval(1000)));\n * const firstOrder = higherOrder.pipe(mergeAll());\n *\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * Count from 0 to 9 every second for each click, but only allow 2 concurrent timers\n *\n * ```ts\n * import { fromEvent, map, interval, take, mergeAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n *   map(() => interval(1000).pipe(take(10)))\n * );\n * const firstOrder = higherOrder.pipe(mergeAll(2));\n *\n * firstOrder.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatestAll}\n * @see {@link concatAll}\n * @see {@link exhaustAll}\n * @see {@link merge}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @param concurrent Maximum number of inner Observables being subscribed to\n * concurrently.\n * @return A function that returns an Observable that emits values coming from\n * all the inner Observables emitted by the source Observable.\n */\nexport function mergeAll<O extends ObservableInput<any>>(concurrent: number = Infinity): OperatorFunction<O, ObservedValueOf<O>> {\n  return mergeMap(identity, concurrent);\n}\n","import { mergeAll } from './mergeAll';\nimport { OperatorFunction, ObservableInput, ObservedValueOf } from '../types';\n\n/**\n * Converts a higher-order Observable into a first-order Observable by\n * concatenating the inner Observables in order.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables by putting one\n * inner Observable after the other.</span>\n *\n * ![](concatAll.svg)\n *\n * Joins every Observable emitted by the source (a higher-order Observable), in\n * a serial fashion. It subscribes to each inner Observable only after the\n * previous inner Observable has completed, and merges all of their values into\n * the returned observable.\n *\n * __Warning:__ If the source Observable emits Observables quickly and\n * endlessly, and the inner Observables it emits generally complete slower than\n * the source emits, you can run into memory issues as the incoming Observables\n * collect in an unbounded buffer.\n *\n * Note: `concatAll` is equivalent to `mergeAll` with concurrency parameter set\n * to `1`.\n *\n * ## Example\n *\n * For each click event, tick every second from 0 to 3, with no concurrency\n *\n * ```ts\n * import { fromEvent, map, interval, take, concatAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n *   map(() => interval(1000).pipe(take(4)))\n * );\n * const firstOrder = higherOrder.pipe(concatAll());\n * firstOrder.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link combineLatestAll}\n * @see {@link concat}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link exhaustAll}\n * @see {@link mergeAll}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link zipAll}\n *\n * @return A function that returns an Observable emitting values from all the\n * inner Observables concatenated.\n */\nexport function concatAll<O extends ObservableInput<any>>(): OperatorFunction<O, ObservedValueOf<O>> {\n  return mergeAll(1);\n}\n","import { ObservableInputTuple, OperatorFunction, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\nimport { concatAll } from './concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from '../observable/from';\n\n/** @deprecated Replaced with {@link concatWith}. Will be removed in v8. */\nexport function concat<T, A extends readonly unknown[]>(...sources: [...ObservableInputTuple<A>]): OperatorFunction<T, T | A[number]>;\n/** @deprecated Replaced with {@link concatWith}. Will be removed in v8. */\nexport function concat<T, A extends readonly unknown[]>(\n  ...sourcesAndScheduler: [...ObservableInputTuple<A>, SchedulerLike]\n): OperatorFunction<T, T | A[number]>;\n\n/**\n * @deprecated Replaced with {@link concatWith}. Will be removed in v8.\n */\nexport function concat<T, R>(...args: any[]): OperatorFunction<T, R> {\n  const scheduler = popScheduler(args);\n  return operate((source, subscriber) => {\n    concatAll()(from([source, ...args], scheduler)).subscribe(subscriber);\n  });\n}\n","import { mergeMap } from './mergeMap';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { isFunction } from '../util/isFunction';\n\n/* tslint:disable:max-line-length */\nexport function concatMap<T, O extends ObservableInput<any>>(\n  project: (value: T, index: number) => O\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function concatMap<T, O extends ObservableInput<any>>(\n  project: (value: T, index: number) => O,\n  resultSelector: undefined\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function concatMap<T, R, O extends ObservableInput<any>>(\n  project: (value: T, index: number) => O,\n  resultSelector: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, R>;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, in a serialized fashion waiting for each one to complete before\n * merging the next.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link concatAll}.</span>\n *\n * ![](concatMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each new inner Observable is\n * concatenated with the previous inner Observable.\n *\n * __Warning:__ if source values arrive endlessly and faster than their\n * corresponding inner Observables can complete, it will result in memory issues\n * as inner Observables amass in an unbounded buffer waiting for their turn to\n * be subscribed to.\n *\n * Note: `concatMap` is equivalent to `mergeMap` with concurrency parameter set\n * to `1`.\n *\n * ## Example\n *\n * For each click event, tick every second from 0 to 3, with no concurrency\n *\n * ```ts\n * import { fromEvent, concatMap, interval, take } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n *   concatMap(ev => interval(1000).pipe(take(4)))\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link concat}\n * @see {@link concatAll}\n * @see {@link concatMapTo}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchMap}\n *\n * @param project A function that, when applied to an item emitted by the source\n * Observable, returns an Observable.\n * @return A function that returns an Observable that emits the result of\n * applying the projection function (and the optional deprecated\n * `resultSelector`) to each item emitted by the source Observable and taking\n * values from each projected inner Observable sequentially.\n */\nexport function concatMap<T, R, O extends ObservableInput<any>>(\n  project: (value: T, index: number) => O,\n  resultSelector?: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, ObservedValueOf<O> | R> {\n  return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1);\n}\n","import { concatMap } from './concatMap';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { isFunction } from '../util/isFunction';\n\n/** @deprecated Will be removed in v9. Use {@link concatMap} instead: `concatMap(() => result)` */\nexport function concatMapTo<O extends ObservableInput<unknown>>(observable: O): OperatorFunction<unknown, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function concatMapTo<O extends ObservableInput<unknown>>(\n  observable: O,\n  resultSelector: undefined\n): OperatorFunction<unknown, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function concatMapTo<T, R, O extends ObservableInput<unknown>>(\n  observable: O,\n  resultSelector: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, R>;\n\n/**\n * Projects each source value to the same Observable which is merged multiple\n * times in a serialized fashion on the output Observable.\n *\n * <span class=\"informal\">It's like {@link concatMap}, but maps each value\n * always to the same inner Observable.</span>\n *\n * ![](concatMapTo.png)\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then flattens those resulting Observables into one\n * single Observable, which is the output Observable. Each new `innerObservable`\n * instance emitted on the output Observable is concatenated with the previous\n * `innerObservable` instance.\n *\n * __Warning:__ if source values arrive endlessly and faster than their\n * corresponding inner Observables can complete, it will result in memory issues\n * as inner Observables amass in an unbounded buffer waiting for their turn to\n * be subscribed to.\n *\n * Note: `concatMapTo` is equivalent to `mergeMapTo` with concurrency parameter\n * set to `1`.\n *\n * ## Example\n *\n * For each click event, tick every second from 0 to 3, with no concurrency\n *\n * ```ts\n * import { fromEvent, concatMapTo, interval, take } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n *   concatMapTo(interval(1000).pipe(take(4)))\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // (results are not concurrent)\n * // For every click on the \"document\" it will emit values 0 to 3 spaced\n * // on a 1000ms interval\n * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3\n * ```\n *\n * @see {@link concat}\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link mergeMapTo}\n * @see {@link switchMapTo}\n *\n * @param innerObservable An `ObservableInput` to replace each value from the\n * source Observable.\n * @return A function that returns an Observable of values merged together by\n * joining the passed Observable with itself, one after the other, for each\n * value emitted from the source.\n * @deprecated Will be removed in v9. Use {@link concatMap} instead: `concatMap(() => result)`\n */\nexport function concatMapTo<T, R, O extends ObservableInput<unknown>>(\n  innerObservable: O,\n  resultSelector?: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, ObservedValueOf<O> | R> {\n  return isFunction(resultSelector) ? concatMap(() => innerObservable, resultSelector) : concatMap(() => innerObservable);\n}\n","import { ObservableInputTuple, OperatorFunction } from '../types';\nimport { concat } from './concat';\n\n/**\n * Emits all of the values from the source observable, then, once it completes, subscribes\n * to each observable source provided, one at a time, emitting all of their values, and not subscribing\n * to the next one until it completes.\n *\n * `concat(a$, b$, c$)` is the same as `a$.pipe(concatWith(b$, c$))`.\n *\n * ## Example\n *\n * Listen for one mouse click, then listen for all mouse moves.\n *\n * ```ts\n * import { fromEvent, map, take, concatWith } from 'rxjs';\n *\n * const clicks$ = fromEvent(document, 'click');\n * const moves$ = fromEvent(document, 'mousemove');\n *\n * clicks$.pipe(\n *   map(() => 'click'),\n *   take(1),\n *   concatWith(\n *     moves$.pipe(\n *       map(() => 'move')\n *     )\n *   )\n * )\n * .subscribe(x => console.log(x));\n *\n * // 'click'\n * // 'move'\n * // 'move'\n * // 'move'\n * // ...\n * ```\n *\n * @param otherSources Other observable sources to subscribe to, in sequence, after the original source is complete.\n * @return A function that returns an Observable that concatenates\n * subscriptions to the source and provided Observables subscribing to the next\n * only once the current subscription completes.\n */\nexport function concatWith<T, A extends readonly unknown[]>(\n  ...otherSources: [...ObservableInputTuple<A>]\n): OperatorFunction<T, T | A[number]> {\n  return concat(...otherSources);\n}\n","import { createErrorClass } from './createErrorClass';\n\nexport interface ObjectUnsubscribedError extends Error {}\n\nexport interface ObjectUnsubscribedErrorCtor {\n  /**\n   * @deprecated Internal implementation detail. Do not construct error instances.\n   * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n   */\n  new (): ObjectUnsubscribedError;\n}\n\n/**\n * An error thrown when an action is invalid because the object has been\n * unsubscribed.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n *\n * @class ObjectUnsubscribedError\n */\nexport const ObjectUnsubscribedError: ObjectUnsubscribedErrorCtor = createErrorClass(\n  (_super) =>\n    function ObjectUnsubscribedErrorImpl(this: any) {\n      _super(this);\n      this.name = 'ObjectUnsubscribedError';\n      this.message = 'object unsubscribed';\n    }\n);\n","import { Operator } from './Operator';\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { Observer, SubscriptionLike, TeardownLogic } from './types';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\n\n/**\n * A Subject is a special type of Observable that allows values to be\n * multicasted to many Observers. Subjects are like EventEmitters.\n *\n * Every Subject is an Observable and an Observer. You can subscribe to a\n * Subject, and you can call next to feed values as well as error and complete.\n */\nexport class Subject<T> extends Observable<T> implements SubscriptionLike {\n  closed = false;\n\n  private currentObservers: Observer<T>[] | null = null;\n\n  /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n  observers: Observer<T>[] = [];\n  /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n  isStopped = false;\n  /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n  hasError = false;\n  /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n  thrownError: any = null;\n\n  /**\n   * Creates a \"subject\" by basically gluing an observer to an observable.\n   *\n   * @deprecated Recommended you do not use. Will be removed at some point in the future. Plans for replacement still under discussion.\n   */\n  static create: (...args: any[]) => any = <T>(destination: Observer<T>, source: Observable<T>): AnonymousSubject<T> => {\n    return new AnonymousSubject<T>(destination, source);\n  };\n\n  constructor() {\n    // NOTE: This must be here to obscure Observable's constructor.\n    super();\n  }\n\n  /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n  lift<R>(operator: Operator<T, R>): Observable<R> {\n    const subject = new AnonymousSubject(this, this);\n    subject.operator = operator as any;\n    return subject as any;\n  }\n\n  /** @internal */\n  protected _throwIfClosed() {\n    if (this.closed) {\n      throw new ObjectUnsubscribedError();\n    }\n  }\n\n  next(value: T) {\n    errorContext(() => {\n      this._throwIfClosed();\n      if (!this.isStopped) {\n        if (!this.currentObservers) {\n          this.currentObservers = Array.from(this.observers);\n        }\n        for (const observer of this.currentObservers) {\n          observer.next(value);\n        }\n      }\n    });\n  }\n\n  error(err: any) {\n    errorContext(() => {\n      this._throwIfClosed();\n      if (!this.isStopped) {\n        this.hasError = this.isStopped = true;\n        this.thrownError = err;\n        const { observers } = this;\n        while (observers.length) {\n          observers.shift()!.error(err);\n        }\n      }\n    });\n  }\n\n  complete() {\n    errorContext(() => {\n      this._throwIfClosed();\n      if (!this.isStopped) {\n        this.isStopped = true;\n        const { observers } = this;\n        while (observers.length) {\n          observers.shift()!.complete();\n        }\n      }\n    });\n  }\n\n  unsubscribe() {\n    this.isStopped = this.closed = true;\n    this.observers = this.currentObservers = null!;\n  }\n\n  get observed() {\n    return this.observers?.length > 0;\n  }\n\n  /** @internal */\n  protected _trySubscribe(subscriber: Subscriber<T>): TeardownLogic {\n    this._throwIfClosed();\n    return super._trySubscribe(subscriber);\n  }\n\n  /** @internal */\n  protected _subscribe(subscriber: Subscriber<T>): Subscription {\n    this._throwIfClosed();\n    this._checkFinalizedStatuses(subscriber);\n    return this._innerSubscribe(subscriber);\n  }\n\n  /** @internal */\n  protected _innerSubscribe(subscriber: Subscriber<any>) {\n    const { hasError, isStopped, observers } = this;\n    if (hasError || isStopped) {\n      return EMPTY_SUBSCRIPTION;\n    }\n    this.currentObservers = null;\n    observers.push(subscriber);\n    return new Subscription(() => {\n      this.currentObservers = null;\n      arrRemove(observers, subscriber);\n    });\n  }\n\n  /** @internal */\n  protected _checkFinalizedStatuses(subscriber: Subscriber<any>) {\n    const { hasError, thrownError, isStopped } = this;\n    if (hasError) {\n      subscriber.error(thrownError);\n    } else if (isStopped) {\n      subscriber.complete();\n    }\n  }\n\n  /**\n   * Creates a new Observable with this Subject as the source. You can do this\n   * to create custom Observer-side logic of the Subject and conceal it from\n   * code that uses the Observable.\n   * @return Observable that this Subject casts to.\n   */\n  asObservable(): Observable<T> {\n    const observable: any = new Observable<T>();\n    observable.source = this;\n    return observable;\n  }\n}\n\nexport class AnonymousSubject<T> extends Subject<T> {\n  constructor(\n    /** @deprecated Internal implementation detail, do not use directly. Will be made internal in v8. */\n    public destination?: Observer<T>,\n    source?: Observable<T>\n  ) {\n    super();\n    this.source = source;\n  }\n\n  next(value: T) {\n    this.destination?.next?.(value);\n  }\n\n  error(err: any) {\n    this.destination?.error?.(err);\n  }\n\n  complete() {\n    this.destination?.complete?.();\n  }\n\n  /** @internal */\n  protected _subscribe(subscriber: Subscriber<T>): Subscription {\n    return this.source?.subscribe(subscriber) ?? EMPTY_SUBSCRIPTION;\n  }\n}\n","import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscribable } from '../types';\n\n/**\n * Used to convert a subscribable to an observable.\n *\n * Currently, this is only used within internals.\n *\n * TODO: Discuss ObservableInput supporting \"Subscribable\".\n * https://github.com/ReactiveX/rxjs/issues/5909\n *\n * @param subscribable A subscribable\n */\nexport function fromSubscribable<T>(subscribable: Subscribable<T>) {\n  return new Observable((subscriber: Subscriber<T>) => subscribable.subscribe(subscriber));\n}\n","import { OperatorFunction, ObservableInput, ObservedValueOf, SubjectLike } from '../types';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { fromSubscribable } from '../observable/fromSubscribable';\n\n/**\n * An object used to configure {@link connect} operator.\n */\nexport interface ConnectConfig<T> {\n  /**\n   * A factory function used to create the Subject through which the source\n   * is multicast. By default, this creates a {@link Subject}.\n   */\n  connector: () => SubjectLike<T>;\n}\n\n/**\n * The default configuration for `connect`.\n */\nconst DEFAULT_CONFIG: ConnectConfig<unknown> = {\n  connector: () => new Subject<unknown>(),\n};\n\n/**\n * Creates an observable by multicasting the source within a function that\n * allows the developer to define the usage of the multicast prior to connection.\n *\n * This is particularly useful if the observable source you wish to multicast could\n * be synchronous or asynchronous. This sets it apart from {@link share}, which, in the\n * case of totally synchronous sources will fail to share a single subscription with\n * multiple consumers, as by the time the subscription to the result of {@link share}\n * has returned, if the source is synchronous its internal reference count will jump from\n * 0 to 1 back to 0 and reset.\n *\n * To use `connect`, you provide a `selector` function that will give you\n * a multicast observable that is not yet connected. You then use that multicast observable\n * to create a resulting observable that, when subscribed, will set up your multicast. This is\n * generally, but not always, accomplished with {@link merge}.\n *\n * Note that using a {@link takeUntil} inside of `connect`'s `selector` _might_ mean you were looking\n * to use the {@link takeWhile} operator instead.\n *\n * When you subscribe to the result of `connect`, the `selector` function will be called. After\n * the `selector` function returns, the observable it returns will be subscribed to, _then_ the\n * multicast will be connected to the source.\n *\n * ## Example\n *\n * Sharing a totally synchronous observable\n *\n * ```ts\n * import { of, tap, connect, merge, map, filter } from 'rxjs';\n *\n * const source$ = of(1, 2, 3, 4, 5).pipe(\n *   tap({\n *     subscribe: () => console.log('subscription started'),\n *     next: n => console.log(`source emitted ${ n }`)\n *   })\n * );\n *\n * source$.pipe(\n *   // Notice in here we're merging 3 subscriptions to `shared$`.\n *   connect(shared$ => merge(\n *     shared$.pipe(map(n => `all ${ n }`)),\n *     shared$.pipe(filter(n => n % 2 === 0), map(n => `even ${ n }`)),\n *     shared$.pipe(filter(n => n % 2 === 1), map(n => `odd ${ n }`))\n *   ))\n * )\n * .subscribe(console.log);\n *\n * // Expected output: (notice only one subscription)\n * 'subscription started'\n * 'source emitted 1'\n * 'all 1'\n * 'odd 1'\n * 'source emitted 2'\n * 'all 2'\n * 'even 2'\n * 'source emitted 3'\n * 'all 3'\n * 'odd 3'\n * 'source emitted 4'\n * 'all 4'\n * 'even 4'\n * 'source emitted 5'\n * 'all 5'\n * 'odd 5'\n * ```\n *\n * @param selector A function used to set up the multicast. Gives you a multicast observable\n * that is not yet connected. With that, you're expected to create and return\n * and Observable, that when subscribed to, will utilize the multicast observable.\n * After this function is executed -- and its return value subscribed to -- the\n * operator will subscribe to the source, and the connection will be made.\n * @param config The configuration object for `connect`.\n */\nexport function connect<T, O extends ObservableInput<unknown>>(\n  selector: (shared: Observable<T>) => O,\n  config: ConnectConfig<T> = DEFAULT_CONFIG\n): OperatorFunction<T, ObservedValueOf<O>> {\n  const { connector } = config;\n  return operate((source, subscriber) => {\n    const subject = connector();\n    innerFrom(selector(fromSubscribable(subject))).subscribe(subscriber);\n    subscriber.add(source.subscribe(subject));\n  });\n}\n","import { OperatorFunction } from '../types';\nimport { reduce } from './reduce';\n\n/**\n * Counts the number of emissions on the source and emits that number when the\n * source completes.\n *\n * <span class=\"informal\">Tells how many values were emitted, when the source\n * completes.</span>\n *\n * ![](count.png)\n *\n * `count` transforms an Observable that emits values into an Observable that\n * emits a single value that represents the number of values emitted by the\n * source Observable. If the source Observable terminates with an error, `count`\n * will pass this error notification along without emitting a value first. If\n * the source Observable does not terminate at all, `count` will neither emit\n * a value nor terminate. This operator takes an optional `predicate` function\n * as argument, in which case the output emission will represent the number of\n * source values that matched `true` with the `predicate`.\n *\n * ## Examples\n *\n * Counts how many seconds have passed before the first click happened\n *\n * ```ts\n * import { interval, fromEvent, takeUntil, count } from 'rxjs';\n *\n * const seconds = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const secondsBeforeClick = seconds.pipe(takeUntil(clicks));\n * const result = secondsBeforeClick.pipe(count());\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Counts how many odd numbers are there between 1 and 7\n *\n * ```ts\n * import { range, count } from 'rxjs';\n *\n * const numbers = range(1, 7);\n * const result = numbers.pipe(count(i => i % 2 === 1));\n * result.subscribe(x => console.log(x));\n * // Results in:\n * // 4\n * ```\n *\n * @see {@link max}\n * @see {@link min}\n * @see {@link reduce}\n *\n * @param predicate A function that is used to analyze the value and the index and\n * determine whether or not to increment the count. Return `true` to increment the count,\n * and return `false` to keep the count the same.\n * If the predicate is not provided, every value will be counted.\n * @return A function that returns an Observable that emits one number that\n * represents the count of emissions.\n */\nexport function count<T>(predicate?: (value: T, index: number) => boolean): OperatorFunction<T, number> {\n  return reduce((total, value, i) => (!predicate || predicate(value, i) ? total + 1 : total), 0);\n}\n","import { Subscriber } from '../Subscriber';\nimport { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\n\n/**\n * Emits a notification from the source Observable only after a particular time span\n * determined by another Observable has passed without another source emission.\n *\n * <span class=\"informal\">It's like {@link debounceTime}, but the time span of\n * emission silence is determined by a second Observable.</span>\n *\n * ![](debounce.svg)\n *\n * `debounce` delays notifications emitted by the source Observable, but drops previous\n * pending delayed emissions if a new notification arrives on the source Observable.\n * This operator keeps track of the most recent notification from the source\n * Observable, and spawns a duration Observable by calling the\n * `durationSelector` function. The notification is emitted only when the duration\n * Observable emits a next notification, and if no other notification was emitted on\n * the source Observable since the duration Observable was spawned. If a new\n * notification appears before the duration Observable emits, the previous notification will\n * not be emitted and a new duration is scheduled from `durationSelector` is scheduled.\n * If the completing event happens during the scheduled duration the last cached notification\n * is emitted before the completion event is forwarded to the output observable.\n * If the error event happens during the scheduled duration or after it only the error event is\n * forwarded to the output observable. The cache notification is not emitted in this case.\n *\n * Like {@link debounceTime}, this is a rate-limiting operator, and also a\n * delay-like operator since output emissions do not necessarily occur at the\n * same time as they did on the source Observable.\n *\n * ## Example\n *\n * Emit the most recent click after a burst of clicks\n *\n * ```ts\n * import { fromEvent, scan, debounce, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n *   scan(i => ++i, 1),\n *   debounce(i => interval(200 * i))\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link auditTime}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sample}\n * @see {@link sampleTime}\n * @see {@link throttle}\n * @see {@link throttleTime}\n *\n * @param durationSelector A function\n * that receives a value from the source Observable, for computing the timeout\n * duration for each source value, returned as an Observable or a Promise.\n * @return A function that returns an Observable that delays the emissions of\n * the source Observable by the specified duration Observable returned by\n * `durationSelector`, and may drop some values if they occur too frequently.\n */\nexport function debounce<T>(durationSelector: (value: T) => ObservableInput<any>): MonoTypeOperatorFunction<T> {\n  return operate((source, subscriber) => {\n    let hasValue = false;\n    let lastValue: T | null = null;\n    // The subscriber/subscription for the current debounce, if there is one.\n    let durationSubscriber: Subscriber<any> | null = null;\n\n    const emit = () => {\n      // Unsubscribe any current debounce subscription we have,\n      // we only cared about the first notification from it, and we\n      // want to clean that subscription up as soon as possible.\n      durationSubscriber?.unsubscribe();\n      durationSubscriber = null;\n      if (hasValue) {\n        // We have a value! Free up memory first, then emit the value.\n        hasValue = false;\n        const value = lastValue!;\n        lastValue = null;\n        subscriber.next(value);\n      }\n    };\n\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (value: T) => {\n          // Cancel any pending debounce duration. We don't\n          // need to null it out here yet tho, because we're just going\n          // to create another one in a few lines.\n          durationSubscriber?.unsubscribe();\n          hasValue = true;\n          lastValue = value;\n          // Capture our duration subscriber, so we can unsubscribe it when we're notified\n          // and we're going to emit the value.\n          durationSubscriber = createOperatorSubscriber(subscriber, emit, noop);\n          // Subscribe to the duration.\n          innerFrom(durationSelector(value)).subscribe(durationSubscriber);\n        },\n        () => {\n          // Source completed.\n          // Emit any pending debounced values then complete\n          emit();\n          subscriber.complete();\n        },\n        // Pass all errors through to consumer\n        undefined,\n        () => {\n          // Finalization.\n          lastValue = durationSubscriber = null;\n        }\n      )\n    );\n  });\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, SchedulerAction, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Emits a notification from the source Observable only after a particular time span\n * has passed without another source emission.\n *\n * <span class=\"informal\">It's like {@link delay}, but passes only the most\n * recent notification from each burst of emissions.</span>\n *\n * ![](debounceTime.png)\n *\n * `debounceTime` delays notifications emitted by the source Observable, but drops\n * previous pending delayed emissions if a new notification arrives on the source\n * Observable. This operator keeps track of the most recent notification from the\n * source Observable, and emits that only when `dueTime` has passed\n * without any other notification appearing on the source Observable. If a new value\n * appears before `dueTime` silence occurs, the previous notification will be dropped\n * and will not be emitted and a new `dueTime` is scheduled.\n * If the completing event happens during `dueTime` the last cached notification\n * is emitted before the completion event is forwarded to the output observable.\n * If the error event happens during `dueTime` or after it only the error event is\n * forwarded to the output observable. The cache notification is not emitted in this case.\n *\n * This is a rate-limiting operator, because it is impossible for more than one\n * notification to be emitted in any time window of duration `dueTime`, but it is also\n * a delay-like operator since output emissions do not occur at the same time as\n * they did on the source Observable. Optionally takes a {@link SchedulerLike} for\n * managing timers.\n *\n * ## Example\n *\n * Emit the most recent click after a burst of clicks\n *\n * ```ts\n * import { fromEvent, debounceTime } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(debounceTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link sample}\n * @see {@link sampleTime}\n * @see {@link throttle}\n * @see {@link throttleTime}\n *\n * @param dueTime The timeout duration in milliseconds (or the time unit determined\n * internally by the optional `scheduler`) for the window of time required to wait\n * for emission silence before emitting the most recent source value.\n * @param scheduler The {@link SchedulerLike} to use for managing the timers that\n * handle the timeout for each value.\n * @return A function that returns an Observable that delays the emissions of\n * the source Observable by the specified `dueTime`, and may drop some values\n * if they occur too frequently.\n */\nexport function debounceTime<T>(dueTime: number, scheduler: SchedulerLike = asyncScheduler): MonoTypeOperatorFunction<T> {\n  return operate((source, subscriber) => {\n    let activeTask: Subscription | null = null;\n    let lastValue: T | null = null;\n    let lastTime: number | null = null;\n\n    const emit = () => {\n      if (activeTask) {\n        // We have a value! Free up memory first, then emit the value.\n        activeTask.unsubscribe();\n        activeTask = null;\n        const value = lastValue!;\n        lastValue = null;\n        subscriber.next(value);\n      }\n    };\n    function emitWhenIdle(this: SchedulerAction<unknown>) {\n      // This is called `dueTime` after the first value\n      // but we might have received new values during this window!\n\n      const targetTime = lastTime! + dueTime;\n      const now = scheduler.now();\n      if (now < targetTime) {\n        // On that case, re-schedule to the new target\n        activeTask = this.schedule(undefined, targetTime - now);\n        subscriber.add(activeTask);\n        return;\n      }\n\n      emit();\n    }\n\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (value: T) => {\n          lastValue = value;\n          lastTime = scheduler.now();\n\n          // Only set up a task if it's not already up\n          if (!activeTask) {\n            activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n            subscriber.add(activeTask);\n          }\n        },\n        () => {\n          // Source completed.\n          // Emit any pending debounced values then complete\n          emit();\n          subscriber.complete();\n        },\n        // Pass all errors through to consumer.\n        undefined,\n        () => {\n          // Finalization.\n          lastValue = activeTask = null;\n        }\n      )\n    );\n  });\n}\n","import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Emits a given value if the source Observable completes without emitting any\n * `next` value, otherwise mirrors the source Observable.\n *\n * <span class=\"informal\">If the source Observable turns out to be empty, then\n * this operator will emit a default value.</span>\n *\n * ![](defaultIfEmpty.png)\n *\n * `defaultIfEmpty` emits the values emitted by the source Observable or a\n * specified default value if the source Observable is empty (completes without\n * having emitted any `next` value).\n *\n * ## Example\n *\n * If no clicks happen in 5 seconds, then emit 'no clicks'\n *\n * ```ts\n * import { fromEvent, takeUntil, interval, defaultIfEmpty } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const clicksBeforeFive = clicks.pipe(takeUntil(interval(5000)));\n * const result = clicksBeforeFive.pipe(defaultIfEmpty('no clicks'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link empty}\n * @see {@link last}\n *\n * @param defaultValue The default value used if the source\n * Observable is empty.\n * @return A function that returns an Observable that emits either the\n * specified `defaultValue` if the source Observable emits no items, or the\n * values emitted by the source Observable.\n */\nexport function defaultIfEmpty<T, R>(defaultValue: R): OperatorFunction<T, T | R> {\n  return operate((source, subscriber) => {\n    let hasValue = false;\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (value) => {\n          hasValue = true;\n          subscriber.next(value);\n        },\n        () => {\n          if (!hasValue) {\n            subscriber.next(defaultValue!);\n          }\n          subscriber.complete();\n        }\n      )\n    );\n  });\n}\n","import { Observable } from '../Observable';\nimport { ObservableInputTuple, SchedulerLike } from '../types';\nimport { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\n\nexport function concat<T extends readonly unknown[]>(...inputs: [...ObservableInputTuple<T>]): Observable<T[number]>;\nexport function concat<T extends readonly unknown[]>(\n  ...inputsAndScheduler: [...ObservableInputTuple<T>, SchedulerLike]\n): Observable<T[number]>;\n\n/**\n * Creates an output Observable which sequentially emits all values from the first given\n * Observable and then moves on to the next.\n *\n * <span class=\"informal\">Concatenates multiple Observables together by\n * sequentially emitting their values, one Observable after the other.</span>\n *\n * ![](concat.png)\n *\n * `concat` joins multiple Observables together, by subscribing to them one at a time and\n * merging their results into the output Observable. You can pass either an array of\n * Observables, or put them directly as arguments. Passing an empty array will result\n * in Observable that completes immediately.\n *\n * `concat` will subscribe to first input Observable and emit all its values, without\n * changing or affecting them in any way. When that Observable completes, it will\n * subscribe to then next Observable passed and, again, emit its values. This will be\n * repeated, until the operator runs out of Observables. When last input Observable completes,\n * `concat` will complete as well. At any given moment only one Observable passed to operator\n * emits values. If you would like to emit values from passed Observables concurrently, check out\n * {@link merge} instead, especially with optional `concurrent` parameter. As a matter of fact,\n * `concat` is an equivalent of `merge` operator with `concurrent` parameter set to `1`.\n *\n * Note that if some input Observable never completes, `concat` will also never complete\n * and Observables following the one that did not complete will never be subscribed. On the other\n * hand, if some Observable simply completes immediately after it is subscribed, it will be\n * invisible for `concat`, which will just move on to the next Observable.\n *\n * If any Observable in chain errors, instead of passing control to the next Observable,\n * `concat` will error immediately as well. Observables that would be subscribed after\n * the one that emitted error, never will.\n *\n * If you pass to `concat` the same Observable many times, its stream of values\n * will be \"replayed\" on every subscription, which means you can repeat given Observable\n * as many times as you like. If passing the same Observable to `concat` 1000 times becomes tedious,\n * you can always use {@link repeat}.\n *\n * ## Examples\n *\n * Concatenate a timer counting from 0 to 3 with a synchronous sequence from 1 to 10\n *\n * ```ts\n * import { interval, take, range, concat } from 'rxjs';\n *\n * const timer = interval(1000).pipe(take(4));\n * const sequence = range(1, 10);\n * const result = concat(timer, sequence);\n * result.subscribe(x => console.log(x));\n *\n * // results in:\n * // 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3 -immediate-> 1 ... 10\n * ```\n *\n * Concatenate 3 Observables\n *\n * ```ts\n * import { interval, take, concat } from 'rxjs';\n *\n * const timer1 = interval(1000).pipe(take(10));\n * const timer2 = interval(2000).pipe(take(6));\n * const timer3 = interval(500).pipe(take(10));\n *\n * const result = concat(timer1, timer2, timer3);\n * result.subscribe(x => console.log(x));\n *\n * // results in the following:\n * // (Prints to console sequentially)\n * // -1000ms-> 0 -1000ms-> 1 -1000ms-> ... 9\n * // -2000ms-> 0 -2000ms-> 1 -2000ms-> ... 5\n * // -500ms-> 0 -500ms-> 1 -500ms-> ... 9\n * ```\n *\n * Concatenate the same Observable to repeat it\n *\n * ```ts\n * import { interval, take, concat } from 'rxjs';\n *\n * const timer = interval(1000).pipe(take(2));\n *\n * concat(timer, timer) // concatenating the same Observable!\n *   .subscribe({\n *     next: value => console.log(value),\n *     complete: () => console.log('...and it is done!')\n *   });\n *\n * // Logs:\n * // 0 after 1s\n * // 1 after 2s\n * // 0 after 3s\n * // 1 after 4s\n * // '...and it is done!' also after 4s\n * ```\n *\n * @see {@link concatAll}\n * @see {@link concatMap}\n * @see {@link concatMapTo}\n * @see {@link startWith}\n * @see {@link endWith}\n *\n * @param args `ObservableInput`s to concatenate.\n */\nexport function concat(...args: any[]): Observable<unknown> {\n  return concatAll()(from(args, popScheduler(args)));\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\n\n/**\n * A simple Observable that emits no items to the Observer and immediately\n * emits a complete notification.\n *\n * <span class=\"informal\">Just emits 'complete', and nothing else.</span>\n *\n * ![](empty.png)\n *\n * A simple Observable that only emits the complete notification. It can be used\n * for composing with other Observables, such as in a {@link mergeMap}.\n *\n * ## Examples\n *\n * Log complete notification\n *\n * ```ts\n * import { EMPTY } from 'rxjs';\n *\n * EMPTY.subscribe({\n *   next: () => console.log('Next'),\n *   complete: () => console.log('Complete!')\n * });\n *\n * // Outputs\n * // Complete!\n * ```\n *\n * Emit the number 7, then complete\n *\n * ```ts\n * import { EMPTY, startWith } from 'rxjs';\n *\n * const result = EMPTY.pipe(startWith(7));\n * result.subscribe(x => console.log(x));\n *\n * // Outputs\n * // 7\n * ```\n *\n * Map and flatten only odd numbers to the sequence `'a'`, `'b'`, `'c'`\n *\n * ```ts\n * import { interval, mergeMap, of, EMPTY } from 'rxjs';\n *\n * const interval$ = interval(1000);\n * const result = interval$.pipe(\n *   mergeMap(x => x % 2 === 1 ? of('a', 'b', 'c') : EMPTY),\n * );\n * result.subscribe(x => console.log(x));\n *\n * // Results in the following to the console:\n * // x is equal to the count on the interval, e.g. (0, 1, 2, 3, ...)\n * // x will occur every 1000ms\n * // if x % 2 is equal to 1, print a, b, c (each on its own)\n * // if x % 2 is not equal to 1, nothing will be output\n * ```\n *\n * @see {@link Observable}\n * @see {@link NEVER}\n * @see {@link of}\n * @see {@link throwError}\n */\nexport const EMPTY = new Observable<never>((subscriber) => subscriber.complete());\n\n/**\n * @param scheduler A {@link SchedulerLike} to use for scheduling\n * the emission of the complete notification.\n * @deprecated Replaced with the {@link EMPTY} constant or {@link scheduled} (e.g. `scheduled([], scheduler)`). Will be removed in v8.\n */\nexport function empty(scheduler?: SchedulerLike) {\n  return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\n\nfunction emptyScheduled(scheduler: SchedulerLike) {\n  return new Observable<never>((subscriber) => scheduler.schedule(() => subscriber.complete()));\n}\n","import { MonoTypeOperatorFunction } from '../types';\nimport { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Emits only the first `count` values emitted by the source Observable.\n *\n * <span class=\"informal\">Takes the first `count` values from the source, then\n * completes.</span>\n *\n * ![](take.png)\n *\n * `take` returns an Observable that emits only the first `count` values emitted\n * by the source Observable. If the source emits fewer than `count` values then\n * all of its values are emitted. After that, it completes, regardless if the\n * source completes.\n *\n * ## Example\n *\n * Take the first 5 seconds of an infinite 1-second interval Observable\n *\n * ```ts\n * import { interval, take } from 'rxjs';\n *\n * const intervalCount = interval(1000);\n * const takeFive = intervalCount.pipe(take(5));\n * takeFive.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 0\n * // 1\n * // 2\n * // 3\n * // 4\n * ```\n *\n * @see {@link takeLast}\n * @see {@link takeUntil}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @param count The maximum number of `next` values to emit.\n * @return A function that returns an Observable that emits only the first\n * `count` values emitted by the source Observable, or all of the values from\n * the source if the source emits fewer than `count` values.\n */\nexport function take<T>(count: number): MonoTypeOperatorFunction<T> {\n  return count <= 0\n    ? // If we are taking no values, that's empty.\n      () => EMPTY\n    : operate((source, subscriber) => {\n        let seen = 0;\n        source.subscribe(\n          createOperatorSubscriber(subscriber, (value) => {\n            // Increment the number of values we have seen,\n            // then check it against the allowed count to see\n            // if we are still letting values through.\n            if (++seen <= count) {\n              subscriber.next(value);\n              // If we have met or passed our allowed count,\n              // we need to complete. We have to do <= here,\n              // because re-entrant code will increment `seen` twice.\n              if (count <= seen) {\n                subscriber.complete();\n              }\n            }\n          })\n        );\n      });\n}\n","import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\n\n/**\n * Ignores all items emitted by the source Observable and only passes calls of `complete` or `error`.\n *\n * ![](ignoreElements.png)\n *\n * The `ignoreElements` operator suppresses all items emitted by the source Observable,\n * but allows its termination notification (either `error` or `complete`) to pass through unchanged.\n *\n * If you do not care about the items being emitted by an Observable, but you do want to be notified\n * when it completes or when it terminates with an error, you can apply the `ignoreElements` operator\n * to the Observable, which will ensure that it will never call its observers’ `next` handlers.\n *\n * ## Example\n *\n * Ignore all `next` emissions from the source\n *\n * ```ts\n * import { of, ignoreElements } from 'rxjs';\n *\n * of('you', 'talking', 'to', 'me')\n *   .pipe(ignoreElements())\n *   .subscribe({\n *     next: word => console.log(word),\n *     error: err => console.log('error:', err),\n *     complete: () => console.log('the end'),\n *   });\n *\n * // result:\n * // 'the end'\n * ```\n *\n * @return A function that returns an empty Observable that only calls\n * `complete` or `error`, based on which one is called by the source\n * Observable.\n */\nexport function ignoreElements(): OperatorFunction<unknown, never> {\n  return operate((source, subscriber) => {\n    source.subscribe(createOperatorSubscriber(subscriber, noop));\n  });\n}\n","import { OperatorFunction } from '../types';\nimport { map } from './map';\n\n/** @deprecated To be removed in v9. Use {@link map} instead: `map(() => value)`. */\nexport function mapTo<R>(value: R): OperatorFunction<unknown, R>;\n/**\n * @deprecated Do not specify explicit type parameters. Signatures with type parameters\n * that cannot be inferred will be removed in v8. `mapTo` itself will be removed in v9,\n * use {@link map} instead: `map(() => value)`.\n * */\nexport function mapTo<T, R>(value: R): OperatorFunction<T, R>;\n\n/**\n * Emits the given constant value on the output Observable every time the source\n * Observable emits a value.\n *\n * <span class=\"informal\">Like {@link map}, but it maps every source value to\n * the same output value every time.</span>\n *\n * ![](mapTo.png)\n *\n * Takes a constant `value` as argument, and emits that whenever the source\n * Observable emits a value. In other words, ignores the actual source value,\n * and simply uses the emission moment to know when to emit the given `value`.\n *\n * ## Example\n *\n * Map every click to the string `'Hi'`\n *\n * ```ts\n * import { fromEvent, mapTo } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const greetings = clicks.pipe(mapTo('Hi'));\n *\n * greetings.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link map}\n *\n * @param value The value to map each source value to.\n * @return A function that returns an Observable that emits the given `value`\n * every time the source Observable emits.\n * @deprecated To be removed in v9. Use {@link map} instead: `map(() => value)`.\n */\nexport function mapTo<R>(value: R): OperatorFunction<unknown, R> {\n  return map(() => value);\n}\n","import { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nimport { innerFrom } from '../observable/innerFrom';\n\n/** @deprecated The `subscriptionDelay` parameter will be removed in v8. */\nexport function delayWhen<T>(\n  delayDurationSelector: (value: T, index: number) => ObservableInput<any>,\n  subscriptionDelay: Observable<any>\n): MonoTypeOperatorFunction<T>;\nexport function delayWhen<T>(delayDurationSelector: (value: T, index: number) => ObservableInput<any>): MonoTypeOperatorFunction<T>;\n\n/**\n * Delays the emission of items from the source Observable by a given time span\n * determined by the emissions of another Observable.\n *\n * <span class=\"informal\">It's like {@link delay}, but the time span of the\n * delay duration is determined by a second Observable.</span>\n *\n * ![](delayWhen.png)\n *\n * `delayWhen` operator shifts each emitted value from the source Observable by\n * a time span determined by another Observable. When the source emits a value,\n * the `delayDurationSelector` function is called with the value emitted from\n * the source Observable as the first argument to the `delayDurationSelector`.\n * The `delayDurationSelector` function should return an {@link ObservableInput},\n * that is internally converted to an Observable that is called the \"duration\"\n * Observable.\n *\n * The source value is emitted on the output Observable only when the \"duration\"\n * Observable emits ({@link guide/glossary-and-semantics#next next}s) any value.\n * Upon that, the \"duration\" Observable gets unsubscribed.\n *\n * Before RxJS V7, the {@link guide/glossary-and-semantics#complete completion}\n * of the \"duration\" Observable would have been triggering the emission of the\n * source value to the output Observable, but with RxJS V7, this is not the case\n * anymore.\n *\n * Only next notifications (from the \"duration\" Observable) trigger values from\n * the source Observable to be passed to the output Observable. If the \"duration\"\n * Observable only emits the complete notification (without next), the value\n * emitted by the source Observable will never get to the output Observable - it\n * will be swallowed. If the \"duration\" Observable errors, the error will be\n * propagated to the output Observable.\n *\n * Optionally, `delayWhen` takes a second argument, `subscriptionDelay`, which\n * is an Observable. When `subscriptionDelay` emits its first value or\n * completes, the source Observable is subscribed to and starts behaving like\n * described in the previous paragraph. If `subscriptionDelay` is not provided,\n * `delayWhen` will subscribe to the source Observable as soon as the output\n * Observable is subscribed.\n *\n * ## Example\n *\n * Delay each click by a random amount of time, between 0 and 5 seconds\n *\n * ```ts\n * import { fromEvent, delayWhen, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const delayedClicks = clicks.pipe(\n *   delayWhen(() => interval(Math.random() * 5000))\n * );\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link delay}\n * @see {@link throttle}\n * @see {@link throttleTime}\n * @see {@link debounce}\n * @see {@link debounceTime}\n * @see {@link sample}\n * @see {@link sampleTime}\n * @see {@link audit}\n * @see {@link auditTime}\n *\n * @param delayDurationSelector A function that returns an `ObservableInput` for\n * each `value` emitted by the source Observable, which is then used to delay the\n * emission of that `value` on the output Observable until the `ObservableInput`\n * returned from this function emits a next value. When called, beside `value`,\n * this function receives a zero-based `index` of the emission order.\n * @param subscriptionDelay An Observable that triggers the subscription to the\n * source Observable once it emits any value.\n * @return A function that returns an Observable that delays the emissions of\n * the source Observable by an amount of time specified by the Observable\n * returned by `delayDurationSelector`.\n */\nexport function delayWhen<T>(\n  delayDurationSelector: (value: T, index: number) => ObservableInput<any>,\n  subscriptionDelay?: Observable<any>\n): MonoTypeOperatorFunction<T> {\n  if (subscriptionDelay) {\n    // DEPRECATED PATH\n    return (source: Observable<T>) =>\n      concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n  }\n\n  return mergeMap((value, index) => innerFrom(delayDurationSelector(value, index)).pipe(take(1), mapTo(value)));\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\n\n/**\n * Delays the emission of items from the source Observable by a given timeout or\n * until a given Date.\n *\n * <span class=\"informal\">Time shifts each item by some specified amount of\n * milliseconds.</span>\n *\n * ![](delay.svg)\n *\n * If the delay argument is a Number, this operator time shifts the source\n * Observable by that amount of time expressed in milliseconds. The relative\n * time intervals between the values are preserved.\n *\n * If the delay argument is a Date, this operator time shifts the start of the\n * Observable execution until the given date occurs.\n *\n * ## Examples\n *\n * Delay each click by one second\n *\n * ```ts\n * import { fromEvent, delay } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const delayedClicks = clicks.pipe(delay(1000)); // each click emitted after 1 second\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * Delay all clicks until a future date happens\n *\n * ```ts\n * import { fromEvent, delay } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const date = new Date('March 15, 2050 12:00:00'); // in the future\n * const delayedClicks = clicks.pipe(delay(date)); // click emitted only after that date\n * delayedClicks.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link delayWhen}\n * @see {@link throttle}\n * @see {@link throttleTime}\n * @see {@link debounce}\n * @see {@link debounceTime}\n * @see {@link sample}\n * @see {@link sampleTime}\n * @see {@link audit}\n * @see {@link auditTime}\n *\n * @param due The delay duration in milliseconds (a `number`) or a `Date` until\n * which the emission of the source items is delayed.\n * @param scheduler The {@link SchedulerLike} to use for managing the timers\n * that handle the time-shift for each item.\n * @return A function that returns an Observable that delays the emissions of\n * the source Observable by the specified timeout or Date.\n */\nexport function delay<T>(due: number | Date, scheduler: SchedulerLike = asyncScheduler): MonoTypeOperatorFunction<T> {\n  const duration = timer(due, scheduler);\n  return delayWhen(() => duration);\n}\n","import { SchedulerLike, ValueFromArray } from '../types';\nimport { Observable } from '../Observable';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\n\n// Devs are more likely to pass null or undefined than they are a scheduler\n// without accompanying values. To make things easier for (naughty) devs who\n// use the `strictNullChecks: false` TypeScript compiler option, these\n// overloads with explicit null and undefined values are included.\n\nexport function of(value: null): Observable<null>;\nexport function of(value: undefined): Observable<undefined>;\n\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function of(scheduler: SchedulerLike): Observable<never>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function of<A extends readonly unknown[]>(...valuesAndScheduler: [...A, SchedulerLike]): Observable<ValueFromArray<A>>;\n\nexport function of(): Observable<never>;\n/** @deprecated Do not specify explicit type parameters. Signatures with type parameters that cannot be inferred will be removed in v8. */\nexport function of<T>(): Observable<T>;\nexport function of<T>(value: T): Observable<T>;\nexport function of<A extends readonly unknown[]>(...values: A): Observable<ValueFromArray<A>>;\n\n/**\n * Converts the arguments to an observable sequence.\n *\n * <span class=\"informal\">Each argument becomes a `next` notification.</span>\n *\n * ![](of.png)\n *\n * Unlike {@link from}, it does not do any flattening and emits each argument in whole\n * as a separate `next` notification.\n *\n * ## Examples\n *\n * Emit the values `10, 20, 30`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of(10, 20, 30)\n *   .subscribe({\n *     next: value => console.log('next:', value),\n *     error: err => console.log('error:', err),\n *     complete: () => console.log('the end'),\n *   });\n *\n * // Outputs\n * // next: 10\n * // next: 20\n * // next: 30\n * // the end\n * ```\n *\n * Emit the array `[1, 2, 3]`\n *\n * ```ts\n * import { of } from 'rxjs';\n *\n * of([1, 2, 3])\n *   .subscribe({\n *     next: value => console.log('next:', value),\n *     error: err => console.log('error:', err),\n *     complete: () => console.log('the end'),\n *   });\n *\n * // Outputs\n * // next: [1, 2, 3]\n * // the end\n * ```\n *\n * @see {@link from}\n * @see {@link range}\n *\n * @param args A comma separated list of arguments you want to be emitted.\n * @return An Observable that synchronously emits the arguments described\n * above and then immediately completes.\n */\nexport function of<T>(...args: Array<T | SchedulerLike>): Observable<T> {\n  const scheduler = popScheduler(args);\n  return from(args as T[], scheduler);\n}\n","import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { SchedulerLike } from '../types';\nimport { isFunction } from '../util/isFunction';\n\n/**\n * Creates an observable that will create an error instance and push it to the consumer as an error\n * immediately upon subscription.\n *\n * <span class=\"informal\">Just errors and does nothing else</span>\n *\n * ![](throw.png)\n *\n * This creation function is useful for creating an observable that will create an error and error every\n * time it is subscribed to. Generally, inside of most operators when you might want to return an errored\n * observable, this is unnecessary. In most cases, such as in the inner return of {@link concatMap},\n * {@link mergeMap}, {@link defer}, and many others, you can simply throw the error, and RxJS will pick\n * that up and notify the consumer of the error.\n *\n * ## Example\n *\n * Create a simple observable that will create a new error with a timestamp and log it\n * and the message every time you subscribe to it\n *\n * ```ts\n * import { throwError } from 'rxjs';\n *\n * let errorCount = 0;\n *\n * const errorWithTimestamp$ = throwError(() => {\n *   const error: any = new Error(`This is error number ${ ++errorCount }`);\n *   error.timestamp = Date.now();\n *   return error;\n * });\n *\n * errorWithTimestamp$.subscribe({\n *   error: err => console.log(err.timestamp, err.message)\n * });\n *\n * errorWithTimestamp$.subscribe({\n *   error: err => console.log(err.timestamp, err.message)\n * });\n *\n * // Logs the timestamp and a new error message for each subscription\n * ```\n *\n * ### Unnecessary usage\n *\n * Using `throwError` inside of an operator or creation function\n * with a callback, is usually not necessary\n *\n * ```ts\n * import { of, concatMap, timer, throwError } from 'rxjs';\n *\n * const delays$ = of(1000, 2000, Infinity, 3000);\n *\n * delays$.pipe(\n *   concatMap(ms => {\n *     if (ms < 10000) {\n *       return timer(ms);\n *     } else {\n *       // This is probably overkill.\n *       return throwError(() => new Error(`Invalid time ${ ms }`));\n *     }\n *   })\n * )\n * .subscribe({\n *   next: console.log,\n *   error: console.error\n * });\n * ```\n *\n * You can just throw the error instead\n *\n * ```ts\n * import { of, concatMap, timer } from 'rxjs';\n *\n * const delays$ = of(1000, 2000, Infinity, 3000);\n *\n * delays$.pipe(\n *   concatMap(ms => {\n *     if (ms < 10000) {\n *       return timer(ms);\n *     } else {\n *       // Cleaner and easier to read for most folks.\n *       throw new Error(`Invalid time ${ ms }`);\n *     }\n *   })\n * )\n * .subscribe({\n *   next: console.log,\n *   error: console.error\n * });\n * ```\n *\n * @param errorFactory A factory function that will create the error instance that is pushed.\n */\nexport function throwError(errorFactory: () => any): Observable<never>;\n\n/**\n * Returns an observable that will error with the specified error immediately upon subscription.\n *\n * @param error The error instance to emit\n * @deprecated Support for passing an error value will be removed in v8. Instead, pass a factory function to `throwError(() => new Error('test'))`. This is\n * because it will create the error at the moment it should be created and capture a more appropriate stack trace. If\n * for some reason you need to create the error ahead of time, you can still do that: `const err = new Error('test'); throwError(() => err);`.\n */\nexport function throwError(error: any): Observable<never>;\n\n/**\n * Notifies the consumer of an error using a given scheduler by scheduling it at delay `0` upon subscription.\n *\n * @param errorOrErrorFactory An error instance or error factory\n * @param scheduler A scheduler to use to schedule the error notification\n * @deprecated The `scheduler` parameter will be removed in v8.\n * Use `throwError` in combination with {@link observeOn}: `throwError(() => new Error('test')).pipe(observeOn(scheduler));`.\n * Details: https://rxjs.dev/deprecations/scheduler-argument\n */\nexport function throwError(errorOrErrorFactory: any, scheduler: SchedulerLike): Observable<never>;\n\nexport function throwError(errorOrErrorFactory: any, scheduler?: SchedulerLike): Observable<never> {\n  const errorFactory = isFunction(errorOrErrorFactory) ? errorOrErrorFactory : () => errorOrErrorFactory;\n  const init = (subscriber: Subscriber<never>) => subscriber.error(errorFactory());\n  return new Observable(scheduler ? (subscriber) => scheduler.schedule(init as any, 0, subscriber) : init);\n}\n","import { PartialObserver, ObservableNotification, CompleteNotification, NextNotification, ErrorNotification } from './types';\nimport { Observable } from './Observable';\nimport { EMPTY } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nimport { isFunction } from './util/isFunction';\n\n// TODO: When this enum is removed, replace it with a type alias. See #4556.\n/**\n * @deprecated Use a string literal instead. `NotificationKind` will be replaced with a type alias in v8.\n * It will not be replaced with a const enum as those are not compatible with isolated modules.\n */\nexport enum NotificationKind {\n  NEXT = 'N',\n  ERROR = 'E',\n  COMPLETE = 'C',\n}\n\n/**\n * Represents a push-based event or value that an {@link Observable} can emit.\n * This class is particularly useful for operators that manage notifications,\n * like {@link materialize}, {@link dematerialize}, {@link observeOn}, and\n * others. Besides wrapping the actual delivered value, it also annotates it\n * with metadata of, for instance, what type of push message it is (`next`,\n * `error`, or `complete`).\n *\n * @see {@link materialize}\n * @see {@link dematerialize}\n * @see {@link observeOn}\n * @deprecated It is NOT recommended to create instances of `Notification` directly.\n * Rather, try to create POJOs matching the signature outlined in {@link ObservableNotification}.\n * For example: `{ kind: 'N', value: 1 }`, `{ kind: 'E', error: new Error('bad') }`, or `{ kind: 'C' }`.\n * Will be removed in v8.\n */\nexport class Notification<T> {\n  /**\n   * A value signifying that the notification will \"next\" if observed. In truth,\n   * This is really synonymous with just checking `kind === \"N\"`.\n   * @deprecated Will be removed in v8. Instead, just check to see if the value of `kind` is `\"N\"`.\n   */\n  readonly hasValue: boolean;\n\n  /**\n   * Creates a \"Next\" notification object.\n   * @param kind Always `'N'`\n   * @param value The value to notify with if observed.\n   * @deprecated Internal implementation detail. Use {@link Notification#createNext createNext} instead.\n   */\n  constructor(kind: 'N', value?: T);\n  /**\n   * Creates an \"Error\" notification object.\n   * @param kind Always `'E'`\n   * @param value Always `undefined`\n   * @param error The error to notify with if observed.\n   * @deprecated Internal implementation detail. Use {@link Notification#createError createError} instead.\n   */\n  constructor(kind: 'E', value: undefined, error: any);\n  /**\n   * Creates a \"completion\" notification object.\n   * @param kind Always `'C'`\n   * @deprecated Internal implementation detail. Use {@link Notification#createComplete createComplete} instead.\n   */\n  constructor(kind: 'C');\n  constructor(public readonly kind: 'N' | 'E' | 'C', public readonly value?: T, public readonly error?: any) {\n    this.hasValue = kind === 'N';\n  }\n\n  /**\n   * Executes the appropriate handler on a passed `observer` given the `kind` of notification.\n   * If the handler is missing it will do nothing. Even if the notification is an error, if\n   * there is no error handler on the observer, an error will not be thrown, it will noop.\n   * @param observer The observer to notify.\n   */\n  observe(observer: PartialObserver<T>): void {\n    return observeNotification(this as ObservableNotification<T>, observer);\n  }\n\n  /**\n   * Executes a notification on the appropriate handler from a list provided.\n   * If a handler is missing for the kind of notification, nothing is called\n   * and no error is thrown, it will be a noop.\n   * @param next A next handler\n   * @param error An error handler\n   * @param complete A complete handler\n   * @deprecated Replaced with {@link Notification#observe observe}. Will be removed in v8.\n   */\n  do(next: (value: T) => void, error: (err: any) => void, complete: () => void): void;\n  /**\n   * Executes a notification on the appropriate handler from a list provided.\n   * If a handler is missing for the kind of notification, nothing is called\n   * and no error is thrown, it will be a noop.\n   * @param next A next handler\n   * @param error An error handler\n   * @deprecated Replaced with {@link Notification#observe observe}. Will be removed in v8.\n   */\n  do(next: (value: T) => void, error: (err: any) => void): void;\n  /**\n   * Executes the next handler if the Notification is of `kind` `\"N\"`. Otherwise\n   * this will not error, and it will be a noop.\n   * @param next The next handler\n   * @deprecated Replaced with {@link Notification#observe observe}. Will be removed in v8.\n   */\n  do(next: (value: T) => void): void;\n  do(nextHandler: (value: T) => void, errorHandler?: (err: any) => void, completeHandler?: () => void): void {\n    const { kind, value, error } = this;\n    return kind === 'N' ? nextHandler?.(value!) : kind === 'E' ? errorHandler?.(error) : completeHandler?.();\n  }\n\n  /**\n   * Executes a notification on the appropriate handler from a list provided.\n   * If a handler is missing for the kind of notification, nothing is called\n   * and no error is thrown, it will be a noop.\n   * @param next A next handler\n   * @param error An error handler\n   * @param complete A complete handler\n   * @deprecated Replaced with {@link Notification#observe observe}. Will be removed in v8.\n   */\n  accept(next: (value: T) => void, error: (err: any) => void, complete: () => void): void;\n  /**\n   * Executes a notification on the appropriate handler from a list provided.\n   * If a handler is missing for the kind of notification, nothing is called\n   * and no error is thrown, it will be a noop.\n   * @param next A next handler\n   * @param error An error handler\n   * @deprecated Replaced with {@link Notification#observe observe}. Will be removed in v8.\n   */\n  accept(next: (value: T) => void, error: (err: any) => void): void;\n  /**\n   * Executes the next handler if the Notification is of `kind` `\"N\"`. Otherwise\n   * this will not error, and it will be a noop.\n   * @param next The next handler\n   * @deprecated Replaced with {@link Notification#observe observe}. Will be removed in v8.\n   */\n  accept(next: (value: T) => void): void;\n\n  /**\n   * Executes the appropriate handler on a passed `observer` given the `kind` of notification.\n   * If the handler is missing it will do nothing. Even if the notification is an error, if\n   * there is no error handler on the observer, an error will not be thrown, it will noop.\n   * @param observer The observer to notify.\n   * @deprecated Replaced with {@link Notification#observe observe}. Will be removed in v8.\n   */\n  accept(observer: PartialObserver<T>): void;\n  accept(nextOrObserver: PartialObserver<T> | ((value: T) => void), error?: (err: any) => void, complete?: () => void) {\n    return isFunction((nextOrObserver as any)?.next)\n      ? this.observe(nextOrObserver as PartialObserver<T>)\n      : this.do(nextOrObserver as (value: T) => void, error as any, complete as any);\n  }\n\n  /**\n   * Returns a simple Observable that just delivers the notification represented\n   * by this Notification instance.\n   *\n   * @deprecated Will be removed in v8. To convert a `Notification` to an {@link Observable},\n   * use {@link of} and {@link dematerialize}: `of(notification).pipe(dematerialize())`.\n   */\n  toObservable(): Observable<T> {\n    const { kind, value, error } = this;\n    // Select the observable to return by `kind`\n    const result =\n      kind === 'N'\n        ? // Next kind. Return an observable of that value.\n          of(value!)\n        : //\n        kind === 'E'\n        ? // Error kind. Return an observable that emits the error.\n          throwError(() => error)\n        : //\n        kind === 'C'\n        ? // Completion kind. Kind is \"C\", return an observable that just completes.\n          EMPTY\n        : // Unknown kind, return falsy, so we error below.\n          0;\n    if (!result) {\n      // TODO: consider removing this check. The only way to cause this would be to\n      // use the Notification constructor directly in a way that is not type-safe.\n      // and direct use of the Notification constructor is deprecated.\n      throw new TypeError(`Unexpected notification kind ${kind}`);\n    }\n    return result;\n  }\n\n  private static completeNotification = new Notification('C') as Notification<never> & CompleteNotification;\n  /**\n   * A shortcut to create a Notification instance of the type `next` from a\n   * given value.\n   * @param value The `next` value.\n   * @return The \"next\" Notification representing the argument.\n   * @deprecated It is NOT recommended to create instances of `Notification` directly.\n   * Rather, try to create POJOs matching the signature outlined in {@link ObservableNotification}.\n   * For example: `{ kind: 'N', value: 1 }`, `{ kind: 'E', error: new Error('bad') }`, or `{ kind: 'C' }`.\n   * Will be removed in v8.\n   */\n  static createNext<T>(value: T) {\n    return new Notification('N', value) as Notification<T> & NextNotification<T>;\n  }\n\n  /**\n   * A shortcut to create a Notification instance of the type `error` from a\n   * given error.\n   * @param err The `error` error.\n   * @return The \"error\" Notification representing the argument.\n   * @deprecated It is NOT recommended to create instances of `Notification` directly.\n   * Rather, try to create POJOs matching the signature outlined in {@link ObservableNotification}.\n   * For example: `{ kind: 'N', value: 1 }`, `{ kind: 'E', error: new Error('bad') }`, or `{ kind: 'C' }`.\n   * Will be removed in v8.\n   */\n  static createError(err?: any) {\n    return new Notification('E', undefined, err) as Notification<never> & ErrorNotification;\n  }\n\n  /**\n   * A shortcut to create a Notification instance of the type `complete`.\n   * @return The valueless \"complete\" Notification.\n   * @deprecated It is NOT recommended to create instances of `Notification` directly.\n   * Rather, try to create POJOs matching the signature outlined in {@link ObservableNotification}.\n   * For example: `{ kind: 'N', value: 1 }`, `{ kind: 'E', error: new Error('bad') }`, or `{ kind: 'C' }`.\n   * Will be removed in v8.\n   */\n  static createComplete(): Notification<never> & CompleteNotification {\n    return Notification.completeNotification;\n  }\n}\n\n/**\n * Executes the appropriate handler on a passed `observer` given the `kind` of notification.\n * If the handler is missing it will do nothing. Even if the notification is an error, if\n * there is no error handler on the observer, an error will not be thrown, it will noop.\n * @param notification The notification object to observe.\n * @param observer The observer to notify.\n */\nexport function observeNotification<T>(notification: ObservableNotification<T>, observer: PartialObserver<T>) {\n  const { kind, value, error } = notification as any;\n  if (typeof kind !== 'string') {\n    throw new TypeError('Invalid notification, missing \"kind\"');\n  }\n  kind === 'N' ? observer.next?.(value!) : kind === 'E' ? observer.error?.(error) : observer.complete?.();\n}\n","import { observeNotification } from '../Notification';\nimport { OperatorFunction, ObservableNotification, ValueFromNotification } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Converts an Observable of {@link ObservableNotification} objects into the emissions\n * that they represent.\n *\n * <span class=\"informal\">Unwraps {@link ObservableNotification} objects as actual `next`,\n * `error` and `complete` emissions. The opposite of {@link materialize}.</span>\n *\n * ![](dematerialize.png)\n *\n * `dematerialize` is assumed to operate an Observable that only emits\n * {@link ObservableNotification} objects as `next` emissions, and does not emit any\n * `error`. Such Observable is the output of a `materialize` operation. Those\n * notifications are then unwrapped using the metadata they contain, and emitted\n * as `next`, `error`, and `complete` on the output Observable.\n *\n * Use this operator in conjunction with {@link materialize}.\n *\n * ## Example\n *\n * Convert an Observable of Notifications to an actual Observable\n *\n * ```ts\n * import { NextNotification, ErrorNotification, of, dematerialize } from 'rxjs';\n *\n * const notifA: NextNotification<string> = { kind: 'N', value: 'A' };\n * const notifB: NextNotification<string> = { kind: 'N', value: 'B' };\n * const notifE: ErrorNotification = { kind: 'E', error: new TypeError('x.toUpperCase is not a function') };\n *\n * const materialized = of(notifA, notifB, notifE);\n *\n * const upperCase = materialized.pipe(dematerialize());\n * upperCase.subscribe({\n *   next: x => console.log(x),\n *   error: e => console.error(e)\n * });\n *\n * // Results in:\n * // A\n * // B\n * // TypeError: x.toUpperCase is not a function\n * ```\n *\n * @see {@link materialize}\n *\n * @return A function that returns an Observable that emits items and\n * notifications embedded in Notification objects emitted by the source\n * Observable.\n */\nexport function dematerialize<N extends ObservableNotification<any>>(): OperatorFunction<N, ValueFromNotification<N>> {\n  return operate((source, subscriber) => {\n    source.subscribe(createOperatorSubscriber(subscriber, (notification) => observeNotification(notification, subscriber)));\n  });\n}\n","import { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nimport { innerFrom } from '../observable/innerFrom';\n\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from previous items.\n *\n * If a `keySelector` function is provided, then it will project each value from the source observable into a new value that it will\n * check for equality with previously projected values. If the `keySelector` function is not provided, it will use each value from the\n * source observable directly with an equality check against previous values.\n *\n * In JavaScript runtimes that support `Set`, this operator will use a `Set` to improve performance of the distinct value checking.\n *\n * In other runtimes, this operator will use a minimal implementation of `Set` that relies on an `Array` and `indexOf` under the\n * hood, so performance will degrade as more values are checked for distinction. Even in newer browsers, a long-running `distinct`\n * use might result in memory leaks. To help alleviate this in some scenarios, an optional `flushes` parameter is also provided so\n * that the internal `Set` can be \"flushed\", basically clearing it of values.\n *\n * ## Examples\n *\n * A simple example with numbers\n *\n * ```ts\n * import { of, distinct } from 'rxjs';\n *\n * of(1, 1, 2, 2, 2, 1, 2, 3, 4, 3, 2, 1)\n *   .pipe(distinct())\n *   .subscribe(x => console.log(x));\n *\n * // Outputs\n * // 1\n * // 2\n * // 3\n * // 4\n * ```\n *\n * An example using the `keySelector` function\n *\n * ```ts\n * import { of, distinct } from 'rxjs';\n *\n * of(\n *   { age: 4, name: 'Foo'},\n *   { age: 7, name: 'Bar'},\n *   { age: 5, name: 'Foo'}\n * )\n * .pipe(distinct(({ name }) => name))\n * .subscribe(x => console.log(x));\n *\n * // Outputs\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n * ```\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n *\n * @param keySelector Optional `function` to select which value you want to check as distinct.\n * @param flushes Optional `ObservableInput` for flushing the internal HashSet of the operator.\n * @return A function that returns an Observable that emits items from the\n * source Observable with distinct values.\n */\nexport function distinct<T, K>(keySelector?: (value: T) => K, flushes?: ObservableInput<any>): MonoTypeOperatorFunction<T> {\n  return operate((source, subscriber) => {\n    const distinctKeys = new Set();\n    source.subscribe(\n      createOperatorSubscriber(subscriber, (value) => {\n        const key = keySelector ? keySelector(value) : value;\n        if (!distinctKeys.has(key)) {\n          distinctKeys.add(key);\n          subscriber.next(value);\n        }\n      })\n    );\n\n    flushes && innerFrom(flushes).subscribe(createOperatorSubscriber(subscriber, () => distinctKeys.clear(), noop));\n  });\n}\n","import { MonoTypeOperatorFunction } from '../types';\nimport { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\nexport function distinctUntilChanged<T>(comparator?: (previous: T, current: T) => boolean): MonoTypeOperatorFunction<T>;\nexport function distinctUntilChanged<T, K>(\n  comparator: (previous: K, current: K) => boolean,\n  keySelector: (value: T) => K\n): MonoTypeOperatorFunction<T>;\n\n/**\n * Returns a result {@link Observable} that emits all values pushed by the source observable if they\n * are distinct in comparison to the last value the result observable emitted.\n *\n * When provided without parameters or with the first parameter (`{@link distinctUntilChanged#comparator comparator}`),\n * it behaves like this:\n *\n * 1. It will always emit the first value from the source.\n * 2. For all subsequent values pushed by the source, they will be compared to the previously emitted values\n *    using the provided `comparator` or an `===` equality check.\n * 3. If the value pushed by the source is determined to be unequal by this check, that value is emitted and\n *    becomes the new \"previously emitted value\" internally.\n *\n * When the second parameter (`{@link distinctUntilChanged#keySelector keySelector}`) is provided, the behavior\n * changes:\n *\n * 1. It will always emit the first value from the source.\n * 2. The `keySelector` will be run against all values, including the first value.\n * 3. For all values after the first, the selected key will be compared against the key selected from\n *    the previously emitted value using the `comparator`.\n * 4. If the keys are determined to be unequal by this check, the value (not the key), is emitted\n *    and the selected key from that value is saved for future comparisons against other keys.\n *\n * ## Examples\n *\n * A very basic example with no `{@link distinctUntilChanged#comparator comparator}`. Note that `1` is emitted more than once,\n * because it's distinct in comparison to the _previously emitted_ value,\n * not in comparison to _all other emitted values_.\n *\n * ```ts\n * import { of, distinctUntilChanged } from 'rxjs';\n *\n * of(1, 1, 1, 2, 2, 2, 1, 1, 3, 3)\n *   .pipe(distinctUntilChanged())\n *   .subscribe(console.log);\n * // Logs: 1, 2, 1, 3\n * ```\n *\n * With a `{@link distinctUntilChanged#comparator comparator}`, you can do custom comparisons. Let's say\n * you only want to emit a value when all of its components have\n * changed:\n *\n * ```ts\n * import { of, distinctUntilChanged } from 'rxjs';\n *\n * const totallyDifferentBuilds$ = of(\n *   { engineVersion: '1.1.0', transmissionVersion: '1.2.0' },\n *   { engineVersion: '1.1.0', transmissionVersion: '1.4.0' },\n *   { engineVersion: '1.3.0', transmissionVersion: '1.4.0' },\n *   { engineVersion: '1.3.0', transmissionVersion: '1.5.0' },\n *   { engineVersion: '2.0.0', transmissionVersion: '1.5.0' }\n * ).pipe(\n *   distinctUntilChanged((prev, curr) => {\n *     return (\n *       prev.engineVersion === curr.engineVersion ||\n *       prev.transmissionVersion === curr.transmissionVersion\n *     );\n *   })\n * );\n *\n * totallyDifferentBuilds$.subscribe(console.log);\n *\n * // Logs:\n * // { engineVersion: '1.1.0', transmissionVersion: '1.2.0' }\n * // { engineVersion: '1.3.0', transmissionVersion: '1.4.0' }\n * // { engineVersion: '2.0.0', transmissionVersion: '1.5.0' }\n * ```\n *\n * You can also provide a custom `{@link distinctUntilChanged#comparator comparator}` to check that emitted\n * changes are only in one direction. Let's say you only want to get\n * the next record temperature:\n *\n * ```ts\n * import { of, distinctUntilChanged } from 'rxjs';\n *\n * const temps$ = of(30, 31, 20, 34, 33, 29, 35, 20);\n *\n * const recordHighs$ = temps$.pipe(\n *   distinctUntilChanged((prevHigh, temp) => {\n *     // If the current temp is less than\n *     // or the same as the previous record,\n *     // the record hasn't changed.\n *     return temp <= prevHigh;\n *   })\n * );\n *\n * recordHighs$.subscribe(console.log);\n * // Logs: 30, 31, 34, 35\n * ```\n *\n * Selecting update events only when the `updatedBy` field shows\n * the account changed hands.\n *\n * ```ts\n * import { of, distinctUntilChanged } from 'rxjs';\n *\n * // A stream of updates to a given account\n * const accountUpdates$ = of(\n *   { updatedBy: 'blesh', data: [] },\n *   { updatedBy: 'blesh', data: [] },\n *   { updatedBy: 'ncjamieson', data: [] },\n *   { updatedBy: 'ncjamieson', data: [] },\n *   { updatedBy: 'blesh', data: [] }\n * );\n *\n * // We only want the events where it changed hands\n * const changedHands$ = accountUpdates$.pipe(\n *   distinctUntilChanged(undefined, update => update.updatedBy)\n * );\n *\n * changedHands$.subscribe(console.log);\n * // Logs:\n * // { updatedBy: 'blesh', data: Array[0] }\n * // { updatedBy: 'ncjamieson', data: Array[0] }\n * // { updatedBy: 'blesh', data: Array[0] }\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilKeyChanged}\n *\n * @param comparator A function used to compare the previous and current keys for\n * equality. Defaults to a `===` check.\n * @param keySelector Used to select a key value to be passed to the `comparator`.\n *\n * @return A function that returns an Observable that emits items from the\n * source Observable with distinct values.\n */\nexport function distinctUntilChanged<T, K>(\n  comparator?: (previous: K, current: K) => boolean,\n  keySelector: (value: T) => K = identity as (value: T) => K\n): MonoTypeOperatorFunction<T> {\n  // We've been allowing `null` do be passed as the `compare`, so we can't do\n  // a default value for the parameter, because that will only work\n  // for `undefined`.\n  comparator = comparator ?? defaultCompare;\n\n  return operate((source, subscriber) => {\n    // The previous key, used to compare against keys selected\n    // from new arrivals to determine \"distinctiveness\".\n    let previousKey: K;\n    // Whether or not this is the first value we've gotten.\n    let first = true;\n\n    source.subscribe(\n      createOperatorSubscriber(subscriber, (value) => {\n        // We always call the key selector.\n        const currentKey = keySelector(value);\n\n        // If it's the first value, we always emit it.\n        // Otherwise, we compare this key to the previous key, and\n        // if the comparer returns false, we emit.\n        if (first || !comparator!(previousKey, currentKey)) {\n          // Update our state *before* we emit the value\n          // as emission can be the source of re-entrant code\n          // in functional libraries like this. We only really\n          // need to do this if it's the first value, or if the\n          // key we're tracking in previous needs to change.\n          first = false;\n          previousKey = currentKey;\n\n          // Emit the value!\n          subscriber.next(value);\n        }\n      })\n    );\n  });\n}\n\nfunction defaultCompare(a: any, b: any) {\n  return a === b;\n}\n","import { distinctUntilChanged } from './distinctUntilChanged';\nimport { MonoTypeOperatorFunction } from '../types';\n\nexport function distinctUntilKeyChanged<T>(key: keyof T): MonoTypeOperatorFunction<T>;\nexport function distinctUntilKeyChanged<T, K extends keyof T>(key: K, compare: (x: T[K], y: T[K]) => boolean): MonoTypeOperatorFunction<T>;\n\n/**\n * Returns an Observable that emits all items emitted by the source Observable that\n * are distinct by comparison from the previous item, using a property accessed by\n * using the key provided to check if the two items are distinct.\n *\n * If a comparator function is provided, then it will be called for each item to\n * test for whether that value should be emitted or not.\n *\n * If a comparator function is not provided, an equality check is used by default.\n *\n * ## Examples\n *\n * An example comparing the name of persons\n *\n * ```ts\n * import { of, distinctUntilKeyChanged } from 'rxjs';\n *\n * of(\n *   { age: 4, name: 'Foo' },\n *   { age: 7, name: 'Bar' },\n *   { age: 5, name: 'Foo' },\n *   { age: 6, name: 'Foo' }\n * ).pipe(\n *   distinctUntilKeyChanged('name')\n * )\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo' }\n * ```\n *\n * An example comparing the first letters of the name\n *\n * ```ts\n * import { of, distinctUntilKeyChanged } from 'rxjs';\n *\n * of(\n *   { age: 4, name: 'Foo1' },\n *   { age: 7, name: 'Bar' },\n *   { age: 5, name: 'Foo2' },\n *   { age: 6, name: 'Foo3' }\n * ).pipe(\n *   distinctUntilKeyChanged('name', (x, y) => x.substring(0, 3) === y.substring(0, 3))\n * )\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo1' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo2' }\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n *\n * @param key String key for object property lookup on each item.\n * @param compare Optional comparison function called to test if an item is distinct\n * from the previous item in the source.\n * @return A function that returns an Observable that emits items from the source\n * Observable with distinct values based on the key specified.\n */\nexport function distinctUntilKeyChanged<T, K extends keyof T>(\n  key: K,\n  compare?: (x: T[K], y: T[K]) => boolean\n): MonoTypeOperatorFunction<T> {\n  return distinctUntilChanged((x: T, y: T) => (compare ? compare(x[key], y[key]) : x[key] === y[key]));\n}\n","import { createErrorClass } from './createErrorClass';\n\nexport interface ArgumentOutOfRangeError extends Error {}\n\nexport interface ArgumentOutOfRangeErrorCtor {\n  /**\n   * @deprecated Internal implementation detail. Do not construct error instances.\n   * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n   */\n  new (): ArgumentOutOfRangeError;\n}\n\n/**\n * An error thrown when an element was queried at a certain index of an\n * Observable, but no such index or position exists in that sequence.\n *\n * @see {@link elementAt}\n * @see {@link take}\n * @see {@link takeLast}\n */\nexport const ArgumentOutOfRangeError: ArgumentOutOfRangeErrorCtor = createErrorClass(\n  (_super) =>\n    function ArgumentOutOfRangeErrorImpl(this: any) {\n      _super(this);\n      this.name = 'ArgumentOutOfRangeError';\n      this.message = 'argument out of range';\n    }\n);\n","import { OperatorFunction, MonoTypeOperatorFunction, TruthyTypesOf } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function filter<T, S extends T, A>(predicate: (this: A, value: T, index: number) => value is S, thisArg: A): OperatorFunction<T, S>;\nexport function filter<T, S extends T>(predicate: (value: T, index: number) => value is S): OperatorFunction<T, S>;\nexport function filter<T>(predicate: BooleanConstructor): OperatorFunction<T, TruthyTypesOf<T>>;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function filter<T, A>(predicate: (this: A, value: T, index: number) => boolean, thisArg: A): MonoTypeOperatorFunction<T>;\nexport function filter<T>(predicate: (value: T, index: number) => boolean): MonoTypeOperatorFunction<T>;\n\n/**\n * Filter items emitted by the source Observable by only emitting those that\n * satisfy a specified predicate.\n *\n * <span class=\"informal\">Like\n * [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n * it only emits a value from the source if it passes a criterion function.</span>\n *\n * ![](filter.png)\n *\n * Similar to the well-known `Array.prototype.filter` method, this operator\n * takes values from the source Observable, passes them through a `predicate`\n * function and only emits those values that yielded `true`.\n *\n * ## Example\n *\n * Emit only click events whose target was a DIV element\n *\n * ```ts\n * import { fromEvent, filter } from 'rxjs';\n *\n * const div = document.createElement('div');\n * div.style.cssText = 'width: 200px; height: 200px; background: #09c;';\n * document.body.appendChild(div);\n *\n * const clicks = fromEvent(document, 'click');\n * const clicksOnDivs = clicks.pipe(filter(ev => (<HTMLElement>ev.target).tagName === 'DIV'));\n * clicksOnDivs.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilChanged}\n * @see {@link distinctUntilKeyChanged}\n * @see {@link ignoreElements}\n * @see {@link partition}\n * @see {@link skip}\n *\n * @param predicate A function that\n * evaluates each value emitted by the source Observable. If it returns `true`,\n * the value is emitted, if `false` the value is not passed to the output\n * Observable. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number\n * `0`.\n * @param thisArg An optional argument to determine the value of `this`\n * in the `predicate` function.\n * @return A function that returns an Observable that emits items from the\n * source Observable that satisfy the specified `predicate`.\n */\nexport function filter<T>(predicate: (value: T, index: number) => boolean, thisArg?: any): MonoTypeOperatorFunction<T> {\n  return operate((source, subscriber) => {\n    // An index passed to our predicate function on each call.\n    let index = 0;\n\n    // Subscribe to the source, all errors and completions are\n    // forwarded to the consumer.\n    source.subscribe(\n      // Call the predicate with the appropriate `this` context,\n      // if the predicate returns `true`, then send the value\n      // to the consumer.\n      createOperatorSubscriber(subscriber, (value) => predicate.call(thisArg, value, index++) && subscriber.next(value))\n    );\n  });\n}\n","import { createErrorClass } from './createErrorClass';\n\nexport interface EmptyError extends Error {}\n\nexport interface EmptyErrorCtor {\n  /**\n   * @deprecated Internal implementation detail. Do not construct error instances.\n   * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n   */\n  new (): EmptyError;\n}\n\n/**\n * An error thrown when an Observable or a sequence was queried but has no\n * elements.\n *\n * @see {@link first}\n * @see {@link last}\n * @see {@link single}\n * @see {@link firstValueFrom}\n * @see {@link lastValueFrom}\n */\nexport const EmptyError: EmptyErrorCtor = createErrorClass(\n  (_super) =>\n    function EmptyErrorImpl(this: any) {\n      _super(this);\n      this.name = 'EmptyError';\n      this.message = 'no elements in sequence';\n    }\n);\n","import { EmptyError } from '../util/EmptyError';\nimport { MonoTypeOperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * If the source observable completes without emitting a value, it will emit\n * an error. The error will be created at that time by the optional\n * `errorFactory` argument, otherwise, the error will be {@link EmptyError}.\n *\n * ![](throwIfEmpty.png)\n *\n * ## Example\n *\n * Throw an error if the document wasn't clicked within 1 second\n *\n * ```ts\n * import { fromEvent, takeUntil, timer, throwIfEmpty } from 'rxjs';\n *\n * const click$ = fromEvent(document, 'click');\n *\n * click$.pipe(\n *   takeUntil(timer(1000)),\n *   throwIfEmpty(() => new Error('The document was not clicked within 1 second'))\n * )\n * .subscribe({\n *   next() {\n *    console.log('The document was clicked');\n *   },\n *   error(err) {\n *     console.error(err.message);\n *   }\n * });\n * ```\n *\n * @param errorFactory A factory function called to produce the\n * error to be thrown when the source observable completes without emitting a\n * value.\n * @return A function that returns an Observable that throws an error if the\n * source Observable completed without emitting.\n */\nexport function throwIfEmpty<T>(errorFactory: () => any = defaultErrorFactory): MonoTypeOperatorFunction<T> {\n  return operate((source, subscriber) => {\n    let hasValue = false;\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (value) => {\n          hasValue = true;\n          subscriber.next(value);\n        },\n        () => (hasValue ? subscriber.complete() : subscriber.error(errorFactory()))\n      )\n    );\n  });\n}\n\nfunction defaultErrorFactory() {\n  return new EmptyError();\n}\n","import { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { Observable } from '../Observable';\nimport { OperatorFunction } from '../types';\nimport { filter } from './filter';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { take } from './take';\n\n/**\n * Emits the single value at the specified `index` in a sequence of emissions\n * from the source Observable.\n *\n * <span class=\"informal\">Emits only the i-th value, then completes.</span>\n *\n * ![](elementAt.png)\n *\n * `elementAt` returns an Observable that emits the item at the specified\n * `index` in the source Observable, or a default value if that `index` is out\n * of range and the `default` argument is provided. If the `default` argument is\n * not given and the `index` is out of range, the output Observable will emit an\n * `ArgumentOutOfRangeError` error.\n *\n * ## Example\n *\n * Emit only the third click event\n *\n * ```ts\n * import { fromEvent, elementAt } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(elementAt(2));\n * result.subscribe(x => console.log(x));\n *\n * // Results in:\n * // click 1 = nothing\n * // click 2 = nothing\n * // click 3 = MouseEvent object logged to console\n * ```\n *\n * @see {@link first}\n * @see {@link last}\n * @see {@link skip}\n * @see {@link single}\n * @see {@link take}\n *\n * @throws {ArgumentOutOfRangeError} When using `elementAt(i)`, it delivers an\n * `ArgumentOutOfRangeError` to the Observer's `error` callback if `i < 0` or the\n * Observable has completed before emitting the i-th `next` notification.\n *\n * @param index Is the number `i` for the i-th source emission that has happened\n * since the subscription, starting from the number `0`.\n * @param defaultValue The default value returned for missing indices.\n * @return A function that returns an Observable that emits a single item, if\n * it is found. Otherwise, it will emit the default value if given. If not, it\n * emits an error.\n */\nexport function elementAt<T, D = T>(index: number, defaultValue?: D): OperatorFunction<T, T | D> {\n  if (index < 0) {\n    throw new ArgumentOutOfRangeError();\n  }\n  const hasDefaultValue = arguments.length >= 2;\n  return (source: Observable<T>) =>\n    source.pipe(\n      filter((v, i) => i === index),\n      take(1),\n      hasDefaultValue ? defaultIfEmpty(defaultValue!) : throwIfEmpty(() => new ArgumentOutOfRangeError())\n    );\n}\n","/** prettier */\nimport { Observable } from '../Observable';\nimport { concat } from '../observable/concat';\nimport { of } from '../observable/of';\nimport { MonoTypeOperatorFunction, SchedulerLike, OperatorFunction, ValueFromArray } from '../types';\n\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `concatAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function endWith<T>(scheduler: SchedulerLike): MonoTypeOperatorFunction<T>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `concatAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function endWith<T, A extends unknown[] = T[]>(\n  ...valuesAndScheduler: [...A, SchedulerLike]\n): OperatorFunction<T, T | ValueFromArray<A>>;\n\nexport function endWith<T, A extends unknown[] = T[]>(...values: A): OperatorFunction<T, T | ValueFromArray<A>>;\n\n/**\n * Returns an observable that will emit all values from the source, then synchronously emit\n * the provided value(s) immediately after the source completes.\n *\n * NOTE: Passing a last argument of a Scheduler is _deprecated_, and may result in incorrect\n * types in TypeScript.\n *\n * This is useful for knowing when an observable ends. Particularly when paired with an\n * operator like {@link takeUntil}\n *\n * ![](endWith.png)\n *\n * ## Example\n *\n * Emit values to know when an interval starts and stops. The interval will\n * stop when a user clicks anywhere on the document.\n *\n * ```ts\n * import { interval, map, fromEvent, startWith, takeUntil, endWith } from 'rxjs';\n *\n * const ticker$ = interval(5000).pipe(\n *   map(() => 'tick')\n * );\n *\n * const documentClicks$ = fromEvent(document, 'click');\n *\n * ticker$.pipe(\n *   startWith('interval started'),\n *   takeUntil(documentClicks$),\n *   endWith('interval ended by click')\n * )\n * .subscribe(x => console.log(x));\n *\n * // Result (assuming a user clicks after 15 seconds)\n * // 'interval started'\n * // 'tick'\n * // 'tick'\n * // 'tick'\n * // 'interval ended by click'\n * ```\n *\n * @see {@link startWith}\n * @see {@link concat}\n * @see {@link takeUntil}\n *\n * @param values Items you want the modified Observable to emit last.\n * @return A function that returns an Observable that emits all values from the\n * source, then synchronously emits the provided value(s) immediately after the\n * source completes.\n */\nexport function endWith<T>(...values: Array<T | SchedulerLike>): MonoTypeOperatorFunction<T> {\n  return (source: Observable<T>) => concat(source, of(...values)) as Observable<T>;\n}\n","import { Observable } from '../Observable';\nimport { Falsy, OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\nexport function every<T>(predicate: BooleanConstructor): OperatorFunction<T, Exclude<T, Falsy> extends never ? false : boolean>;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function every<T>(\n  predicate: BooleanConstructor,\n  thisArg: any\n): OperatorFunction<T, Exclude<T, Falsy> extends never ? false : boolean>;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function every<T, A>(\n  predicate: (this: A, value: T, index: number, source: Observable<T>) => boolean,\n  thisArg: A\n): OperatorFunction<T, boolean>;\nexport function every<T>(predicate: (value: T, index: number, source: Observable<T>) => boolean): OperatorFunction<T, boolean>;\n\n/**\n * Returns an Observable that emits whether or not every item of the source satisfies the condition specified.\n *\n * <span class=\"informal\">If all values pass predicate before the source completes, emits true before completion,\n * otherwise emit false, then complete.</span>\n *\n * ![](every.png)\n *\n * ## Example\n *\n * A simple example emitting true if all elements are less than 5, false otherwise\n *\n * ```ts\n * import { of, every } from 'rxjs';\n *\n * of(1, 2, 3, 4, 5, 6)\n *   .pipe(every(x => x < 5))\n *   .subscribe(x => console.log(x)); // -> false\n * ```\n *\n * @param predicate A function for determining if an item meets a specified condition.\n * @param thisArg Optional object to use for `this` in the callback.\n * @return A function that returns an Observable of booleans that determines if\n * all items of the source Observable meet the condition specified.\n */\nexport function every<T>(\n  predicate: (value: T, index: number, source: Observable<T>) => boolean,\n  thisArg?: any\n): OperatorFunction<T, boolean> {\n  return operate((source, subscriber) => {\n    let index = 0;\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (value) => {\n          if (!predicate.call(thisArg, value, index++, source)) {\n            subscriber.next(false);\n            subscriber.complete();\n          }\n        },\n        () => {\n          subscriber.next(true);\n          subscriber.complete();\n        }\n      )\n    );\n  });\n}\n","import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/* tslint:disable:max-line-length */\nexport function exhaustMap<T, O extends ObservableInput<any>>(\n  project: (value: T, index: number) => O\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function exhaustMap<T, O extends ObservableInput<any>>(\n  project: (value: T, index: number) => O,\n  resultSelector: undefined\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function exhaustMap<T, I, R>(\n  project: (value: T, index: number) => ObservableInput<I>,\n  resultSelector: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, R>;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable only if the previous projected Observable has completed.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link exhaustAll}.</span>\n *\n * ![](exhaustMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. When it projects a source value to\n * an Observable, the output Observable begins emitting the items emitted by\n * that projected Observable. However, `exhaustMap` ignores every new projected\n * Observable if the previous projected Observable has not yet completed. Once\n * that one completes, it will accept and flatten the next projected Observable\n * and repeat this process.\n *\n * ## Example\n *\n * Run a finite timer for each click, only if there is no currently active timer\n *\n * ```ts\n * import { fromEvent, exhaustMap, interval, take } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n *   exhaustMap(() => interval(1000).pipe(take(5)))\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaust}\n * @see {@link mergeMap}\n * @see {@link switchMap}\n *\n * @param project A function that, when applied to an item emitted by the source\n * Observable, returns an Observable.\n * @return A function that returns an Observable containing projected\n * Observables of each item of the source, ignoring projected Observables that\n * start before their preceding Observable has completed.\n */\nexport function exhaustMap<T, R, O extends ObservableInput<any>>(\n  project: (value: T, index: number) => O,\n  resultSelector?: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, ObservedValueOf<O> | R> {\n  if (resultSelector) {\n    // DEPRECATED PATH\n    return (source: Observable<T>) =>\n      source.pipe(exhaustMap((a, i) => innerFrom(project(a, i)).pipe(map((b: any, ii: any) => resultSelector(a, b, i, ii)))));\n  }\n  return operate((source, subscriber) => {\n    let index = 0;\n    let innerSub: Subscriber<T> | null = null;\n    let isComplete = false;\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (outerValue) => {\n          if (!innerSub) {\n            innerSub = createOperatorSubscriber(subscriber, undefined, () => {\n              innerSub = null;\n              isComplete && subscriber.complete();\n            });\n            innerFrom(project(outerValue, index++)).subscribe(innerSub);\n          }\n        },\n        () => {\n          isComplete = true;\n          !innerSub && subscriber.complete();\n        }\n      )\n    );\n  });\n}\n","import { OperatorFunction, ObservableInput, ObservedValueOf } from '../types';\nimport { exhaustMap } from './exhaustMap';\nimport { identity } from '../util/identity';\n\n/**\n * Converts a higher-order Observable into a first-order Observable by dropping\n * inner Observables while the previous inner Observable has not yet completed.\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables by dropping the\n * next inner Observables while the current inner is still executing.</span>\n *\n * ![](exhaustAll.svg)\n *\n * `exhaustAll` subscribes to an Observable that emits Observables, also known as a\n * higher-order Observable. Each time it observes one of these emitted inner\n * Observables, the output Observable begins emitting the items emitted by that\n * inner Observable. So far, it behaves like {@link mergeAll}. However,\n * `exhaustAll` ignores every new inner Observable if the previous Observable has\n * not yet completed. Once that one completes, it will accept and flatten the\n * next inner Observable and repeat this process.\n *\n * ## Example\n *\n * Run a finite timer for each click, only if there is no currently active timer\n *\n * ```ts\n * import { fromEvent, map, interval, take, exhaustAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const higherOrder = clicks.pipe(\n *   map(() => interval(1000).pipe(take(5)))\n * );\n * const result = higherOrder.pipe(exhaustAll());\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatestAll}\n * @see {@link concatAll}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link mergeAll}\n * @see {@link exhaustMap}\n * @see {@link zipAll}\n *\n * @return A function that returns an Observable that takes a source of\n * Observables and propagates the first Observable exclusively until it\n * completes before subscribing to the next.\n */\nexport function exhaustAll<O extends ObservableInput<any>>(): OperatorFunction<O, ObservedValueOf<O>> {\n  return exhaustMap(identity);\n}\n","import { exhaustAll } from './exhaustAll';\n\n/**\n * @deprecated Renamed to {@link exhaustAll}. Will be removed in v8.\n */\nexport const exhaust = exhaustAll;\n","import { OperatorFunction, ObservableInput, ObservedValueOf, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\n\n/* tslint:disable:max-line-length */\nexport function expand<T, O extends ObservableInput<unknown>>(\n  project: (value: T, index: number) => O,\n  concurrent?: number,\n  scheduler?: SchedulerLike\n): OperatorFunction<T, ObservedValueOf<O>>;\n/**\n * @deprecated The `scheduler` parameter will be removed in v8. If you need to schedule the inner subscription,\n * use `subscribeOn` within the projection function: `expand((value) => fn(value).pipe(subscribeOn(scheduler)))`.\n * Details: Details: https://rxjs.dev/deprecations/scheduler-argument\n */\nexport function expand<T, O extends ObservableInput<unknown>>(\n  project: (value: T, index: number) => O,\n  concurrent: number | undefined,\n  scheduler: SchedulerLike\n): OperatorFunction<T, ObservedValueOf<O>>;\n/* tslint:enable:max-line-length */\n\n/**\n * Recursively projects each source value to an Observable which is merged in\n * the output Observable.\n *\n * <span class=\"informal\">It's similar to {@link mergeMap}, but applies the\n * projection function to every source value as well as every output value.\n * It's recursive.</span>\n *\n * ![](expand.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an Observable, and then merging those resulting Observables and\n * emitting the results of this merger. *Expand* will re-emit on the output\n * Observable every source value. Then, each output value is given to the\n * `project` function which returns an inner Observable to be merged on the\n * output Observable. Those output values resulting from the projection are also\n * given to the `project` function to produce new output values. This is how\n * *expand* behaves recursively.\n *\n * ## Example\n *\n * Start emitting the powers of two on every click, at most 10 of them\n *\n * ```ts\n * import { fromEvent, map, expand, of, delay, take } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const powersOfTwo = clicks.pipe(\n *   map(() => 1),\n *   expand(x => of(2 * x).pipe(delay(1000))),\n *   take(10)\n * );\n * powersOfTwo.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link mergeMap}\n * @see {@link mergeScan}\n *\n * @param project A function that, when applied to an item emitted by the source\n * or the output Observable, returns an Observable.\n * @param concurrent Maximum number of input Observables being subscribed to\n * concurrently.\n * @param scheduler The {@link SchedulerLike} to use for subscribing to\n * each projected inner Observable.\n * @return A function that returns an Observable that emits the source values\n * and also result of applying the projection function to each value emitted on\n * the output Observable and merging the results of the Observables obtained\n * from this transformation.\n */\nexport function expand<T, O extends ObservableInput<unknown>>(\n  project: (value: T, index: number) => O,\n  concurrent = Infinity,\n  scheduler?: SchedulerLike\n): OperatorFunction<T, ObservedValueOf<O>> {\n  concurrent = (concurrent || 0) < 1 ? Infinity : concurrent;\n  return operate((source, subscriber) =>\n    mergeInternals(\n      // General merge params\n      source,\n      subscriber,\n      project,\n      concurrent,\n\n      // onBeforeNext\n      undefined,\n\n      // Expand-specific\n      true, // Use expand path\n      scheduler // Inner subscription scheduler\n    )\n  );\n}\n","import { MonoTypeOperatorFunction } from '../types';\nimport { operate } from '../util/lift';\n\n/**\n * Returns an Observable that mirrors the source Observable, but will call a specified function when\n * the source terminates on complete or error.\n * The specified function will also be called when the subscriber explicitly unsubscribes.\n *\n * ## Examples\n *\n * Execute callback function when the observable completes\n *\n * ```ts\n * import { interval, take, finalize } from 'rxjs';\n *\n * // emit value in sequence every 1 second\n * const source = interval(1000);\n * const example = source.pipe(\n *   take(5), //take only the first 5 values\n *   finalize(() => console.log('Sequence complete')) // Execute when the observable completes\n * );\n * const subscribe = example.subscribe(val => console.log(val));\n *\n * // results:\n * // 0\n * // 1\n * // 2\n * // 3\n * // 4\n * // 'Sequence complete'\n * ```\n *\n * Execute callback function when the subscriber explicitly unsubscribes\n *\n * ```ts\n * import { interval, finalize, tap, noop, timer } from 'rxjs';\n *\n * const source = interval(100).pipe(\n *   finalize(() => console.log('[finalize] Called')),\n *   tap({\n *     next: () => console.log('[next] Called'),\n *     error: () => console.log('[error] Not called'),\n *     complete: () => console.log('[tap complete] Not called')\n *   })\n * );\n *\n * const sub = source.subscribe({\n *   next: x => console.log(x),\n *   error: noop,\n *   complete: () => console.log('[complete] Not called')\n * });\n *\n * timer(150).subscribe(() => sub.unsubscribe());\n *\n * // results:\n * // '[next] Called'\n * // 0\n * // '[finalize] Called'\n * ```\n *\n * @param callback Function to be called when source terminates.\n * @return A function that returns an Observable that mirrors the source, but\n * will call the specified function on termination.\n */\nexport function finalize<T>(callback: () => void): MonoTypeOperatorFunction<T> {\n  return operate((source, subscriber) => {\n    // TODO: This try/finally was only added for `useDeprecatedSynchronousErrorHandling`.\n    // REMOVE THIS WHEN THAT HOT GARBAGE IS REMOVED IN V8.\n    try {\n      source.subscribe(subscriber);\n    } finally {\n      subscriber.add(callback);\n    }\n  });\n}\n","import { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction, TruthyTypesOf } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\nexport function find<T>(predicate: BooleanConstructor): OperatorFunction<T, TruthyTypesOf<T>>;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function find<T, S extends T, A>(\n  predicate: (this: A, value: T, index: number, source: Observable<T>) => value is S,\n  thisArg: A\n): OperatorFunction<T, S | undefined>;\nexport function find<T, S extends T>(\n  predicate: (value: T, index: number, source: Observable<T>) => value is S\n): OperatorFunction<T, S | undefined>;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function find<T, A>(\n  predicate: (this: A, value: T, index: number, source: Observable<T>) => boolean,\n  thisArg: A\n): OperatorFunction<T, T | undefined>;\nexport function find<T>(predicate: (value: T, index: number, source: Observable<T>) => boolean): OperatorFunction<T, T | undefined>;\n/**\n * Emits only the first value emitted by the source Observable that meets some\n * condition.\n *\n * <span class=\"informal\">Finds the first value that passes some test and emits\n * that.</span>\n *\n * ![](find.png)\n *\n * `find` searches for the first item in the source Observable that matches the\n * specified condition embodied by the `predicate`, and returns the first\n * occurrence in the source. Unlike {@link first}, the `predicate` is required\n * in `find`, and does not emit an error if a valid value is not found\n * (emits `undefined` instead).\n *\n * ## Example\n *\n * Find and emit the first click that happens on a DIV element\n *\n * ```ts\n * import { fromEvent, find } from 'rxjs';\n *\n * const div = document.createElement('div');\n * div.style.cssText = 'width: 200px; height: 200px; background: #09c;';\n * document.body.appendChild(div);\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(find(ev => (<HTMLElement>ev.target).tagName === 'DIV'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link filter}\n * @see {@link first}\n * @see {@link findIndex}\n * @see {@link take}\n *\n * @param predicate A function called with each item to test for condition matching.\n * @param thisArg An optional argument to determine the value of `this` in the\n * `predicate` function.\n * @return A function that returns an Observable that emits the first item that\n * matches the condition.\n */\nexport function find<T>(\n  predicate: (value: T, index: number, source: Observable<T>) => boolean,\n  thisArg?: any\n): OperatorFunction<T, T | undefined> {\n  return operate(createFind(predicate, thisArg, 'value'));\n}\n\nexport function createFind<T>(\n  predicate: (value: T, index: number, source: Observable<T>) => boolean,\n  thisArg: any,\n  emit: 'value' | 'index'\n) {\n  const findIndex = emit === 'index';\n  return (source: Observable<T>, subscriber: Subscriber<any>) => {\n    let index = 0;\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (value) => {\n          const i = index++;\n          if (predicate.call(thisArg, value, i, source)) {\n            subscriber.next(findIndex ? i : value);\n            subscriber.complete();\n          }\n        },\n        () => {\n          subscriber.next(findIndex ? -1 : undefined);\n          subscriber.complete();\n        }\n      )\n    );\n  };\n}\n","import { Observable } from '../Observable';\nimport { Falsy, OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createFind } from './find';\n\nexport function findIndex<T>(predicate: BooleanConstructor): OperatorFunction<T, T extends Falsy ? -1 : number>;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function findIndex<T>(predicate: BooleanConstructor, thisArg: any): OperatorFunction<T, T extends Falsy ? -1 : number>;\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function findIndex<T, A>(\n  predicate: (this: A, value: T, index: number, source: Observable<T>) => boolean,\n  thisArg: A\n): OperatorFunction<T, number>;\nexport function findIndex<T>(predicate: (value: T, index: number, source: Observable<T>) => boolean): OperatorFunction<T, number>;\n\n/**\n * Emits only the index of the first value emitted by the source Observable that\n * meets some condition.\n *\n * <span class=\"informal\">It's like {@link find}, but emits the index of the\n * found value, not the value itself.</span>\n *\n * ![](findIndex.png)\n *\n * `findIndex` searches for the first item in the source Observable that matches\n * the specified condition embodied by the `predicate`, and returns the\n * (zero-based) index of the first occurrence in the source. Unlike\n * {@link first}, the `predicate` is required in `findIndex`, and does not emit\n * an error if a valid value is not found.\n *\n * ## Example\n *\n * Emit the index of first click that happens on a DIV element\n *\n * ```ts\n * import { fromEvent, findIndex } from 'rxjs';\n *\n * const div = document.createElement('div');\n * div.style.cssText = 'width: 200px; height: 200px; background: #09c;';\n * document.body.appendChild(div);\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(findIndex(ev => (<HTMLElement>ev.target).tagName === 'DIV'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link filter}\n * @see {@link find}\n * @see {@link first}\n * @see {@link take}\n *\n * @param predicate A function called with each item to test for condition matching.\n * @param thisArg An optional argument to determine the value of `this` in the\n * `predicate` function.\n * @return A function that returns an Observable that emits the index of the\n * first item that matches the condition.\n */\nexport function findIndex<T>(\n  predicate: (value: T, index: number, source: Observable<T>) => boolean,\n  thisArg?: any\n): OperatorFunction<T, number> {\n  return operate(createFind(predicate, thisArg, 'index'));\n}\n","import { Observable } from '../Observable';\nimport { EmptyError } from '../util/EmptyError';\nimport { OperatorFunction, TruthyTypesOf } from '../types';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\n\nexport function first<T, D = T>(predicate?: null, defaultValue?: D): OperatorFunction<T, T | D>;\nexport function first<T>(predicate: BooleanConstructor): OperatorFunction<T, TruthyTypesOf<T>>;\nexport function first<T, D>(predicate: BooleanConstructor, defaultValue: D): OperatorFunction<T, TruthyTypesOf<T> | D>;\nexport function first<T, S extends T>(\n  predicate: (value: T, index: number, source: Observable<T>) => value is S,\n  defaultValue?: S\n): OperatorFunction<T, S>;\nexport function first<T, S extends T, D>(\n  predicate: (value: T, index: number, source: Observable<T>) => value is S,\n  defaultValue: D\n): OperatorFunction<T, S | D>;\nexport function first<T, D = T>(\n  predicate: (value: T, index: number, source: Observable<T>) => boolean,\n  defaultValue?: D\n): OperatorFunction<T, T | D>;\n\n/**\n * Emits only the first value (or the first value that meets some condition)\n * emitted by the source Observable.\n *\n * <span class=\"informal\">Emits only the first value. Or emits only the first\n * value that passes some test.</span>\n *\n * ![](first.png)\n *\n * If called with no arguments, `first` emits the first value of the source\n * Observable, then completes. If called with a `predicate` function, `first`\n * emits the first value of the source that matches the specified condition. Emits an error\n * notification if `defaultValue` was not provided and a matching element is not found.\n *\n * ## Examples\n *\n * Emit only the first click that happens on the DOM\n *\n * ```ts\n * import { fromEvent, first } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(first());\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Emits the first click that happens on a DIV\n *\n * ```ts\n * import { fromEvent, first } from 'rxjs';\n *\n * const div = document.createElement('div');\n * div.style.cssText = 'width: 200px; height: 200px; background: #09c;';\n * document.body.appendChild(div);\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(first(ev => (<HTMLElement>ev.target).tagName === 'DIV'));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link filter}\n * @see {@link find}\n * @see {@link take}\n * @see {@link last}\n *\n * @throws {EmptyError} Delivers an `EmptyError` to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n * This is how `first()` is different from `take(1)` which completes instead.\n *\n * @param predicate An optional function called with each item to test for condition\n * matching.\n * @param defaultValue The default value emitted in case no valid value was found on\n * the source.\n * @return A function that returns an Observable that emits the first item that\n * matches the condition.\n */\nexport function first<T, D>(\n  predicate?: ((value: T, index: number, source: Observable<T>) => boolean) | null,\n  defaultValue?: D\n): OperatorFunction<T, T | D> {\n  const hasDefaultValue = arguments.length >= 2;\n  return (source: Observable<T>) =>\n    source.pipe(\n      predicate ? filter((v, i) => predicate(v, i, source)) : identity,\n      take(1),\n      hasDefaultValue ? defaultIfEmpty(defaultValue!) : throwIfEmpty(() => new EmptyError())\n    );\n}\n","import { Observable } from '../Observable';\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { ObservableInput, Observer, OperatorFunction, SubjectLike } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber, OperatorSubscriber } from './OperatorSubscriber';\n\nexport interface BasicGroupByOptions<K, T> {\n  element?: undefined;\n  duration?: (grouped: GroupedObservable<K, T>) => ObservableInput<any>;\n  connector?: () => SubjectLike<T>;\n}\n\nexport interface GroupByOptionsWithElement<K, E, T> {\n  element: (value: T) => E;\n  duration?: (grouped: GroupedObservable<K, E>) => ObservableInput<any>;\n  connector?: () => SubjectLike<E>;\n}\n\nexport function groupBy<T, K>(key: (value: T) => K, options: BasicGroupByOptions<K, T>): OperatorFunction<T, GroupedObservable<K, T>>;\n\nexport function groupBy<T, K, E>(\n  key: (value: T) => K,\n  options: GroupByOptionsWithElement<K, E, T>\n): OperatorFunction<T, GroupedObservable<K, E>>;\n\nexport function groupBy<T, K extends T>(\n  key: (value: T) => value is K\n): OperatorFunction<T, GroupedObservable<true, K> | GroupedObservable<false, Exclude<T, K>>>;\n\nexport function groupBy<T, K>(key: (value: T) => K): OperatorFunction<T, GroupedObservable<K, T>>;\n\n/**\n * @deprecated use the options parameter instead.\n */\nexport function groupBy<T, K>(\n  key: (value: T) => K,\n  element: void,\n  duration: (grouped: GroupedObservable<K, T>) => Observable<any>\n): OperatorFunction<T, GroupedObservable<K, T>>;\n\n/**\n * @deprecated use the options parameter instead.\n */\nexport function groupBy<T, K, R>(\n  key: (value: T) => K,\n  element?: (value: T) => R,\n  duration?: (grouped: GroupedObservable<K, R>) => Observable<any>\n): OperatorFunction<T, GroupedObservable<K, R>>;\n\n/**\n * Groups the items emitted by an Observable according to a specified criterion,\n * and emits these grouped items as `GroupedObservables`, one\n * {@link GroupedObservable} per group.\n *\n * ![](groupBy.png)\n *\n * When the Observable emits an item, a key is computed for this item with the key function.\n *\n * If a {@link GroupedObservable} for this key exists, this {@link GroupedObservable} emits. Otherwise, a new\n * {@link GroupedObservable} for this key is created and emits.\n *\n * A {@link GroupedObservable} represents values belonging to the same group represented by a common key. The common\n * key is available as the `key` field of a {@link GroupedObservable} instance.\n *\n * The elements emitted by {@link GroupedObservable}s are by default the items emitted by the Observable, or elements\n * returned by the element function.\n *\n * ## Examples\n *\n * Group objects by `id` and return as array\n *\n * ```ts\n * import { of, groupBy, mergeMap, reduce } from 'rxjs';\n *\n * of(\n *   { id: 1, name: 'JavaScript' },\n *   { id: 2, name: 'Parcel' },\n *   { id: 2, name: 'webpack' },\n *   { id: 1, name: 'TypeScript' },\n *   { id: 3, name: 'TSLint' }\n * ).pipe(\n *   groupBy(p => p.id),\n *   mergeMap(group$ => group$.pipe(reduce((acc, cur) => [...acc, cur], [])))\n * )\n * .subscribe(p => console.log(p));\n *\n * // displays:\n * // [{ id: 1, name: 'JavaScript' }, { id: 1, name: 'TypeScript'}]\n * // [{ id: 2, name: 'Parcel' }, { id: 2, name: 'webpack'}]\n * // [{ id: 3, name: 'TSLint' }]\n * ```\n *\n * Pivot data on the `id` field\n *\n * ```ts\n * import { of, groupBy, mergeMap, reduce, map } from 'rxjs';\n *\n * of(\n *   { id: 1, name: 'JavaScript' },\n *   { id: 2, name: 'Parcel' },\n *   { id: 2, name: 'webpack' },\n *   { id: 1, name: 'TypeScript' },\n *   { id: 3, name: 'TSLint' }\n * ).pipe(\n *   groupBy(p => p.id, { element: p => p.name }),\n *   mergeMap(group$ => group$.pipe(reduce((acc, cur) => [...acc, cur], [`${ group$.key }`]))),\n *   map(arr => ({ id: parseInt(arr[0], 10), values: arr.slice(1) }))\n * )\n * .subscribe(p => console.log(p));\n *\n * // displays:\n * // { id: 1, values: [ 'JavaScript', 'TypeScript' ] }\n * // { id: 2, values: [ 'Parcel', 'webpack' ] }\n * // { id: 3, values: [ 'TSLint' ] }\n * ```\n *\n * @param key A function that extracts the key\n * for each item.\n * @param element A function that extracts the\n * return element for each item.\n * @param duration\n * A function that returns an Observable to determine how long each group should\n * exist.\n * @param connector Factory function to create an\n * intermediate Subject through which grouped elements are emitted.\n * @return A function that returns an Observable that emits GroupedObservables,\n * each of which corresponds to a unique key value and each of which emits\n * those items from the source Observable that share that key value.\n *\n * @deprecated Use the options parameter instead.\n */\nexport function groupBy<T, K, R>(\n  key: (value: T) => K,\n  element?: (value: T) => R,\n  duration?: (grouped: GroupedObservable<K, R>) => Observable<any>,\n  connector?: () => Subject<R>\n): OperatorFunction<T, GroupedObservable<K, R>>;\n\n// Impl\nexport function groupBy<T, K, R>(\n  keySelector: (value: T) => K,\n  elementOrOptions?: ((value: any) => any) | void | BasicGroupByOptions<K, T> | GroupByOptionsWithElement<K, R, T>,\n  duration?: (grouped: GroupedObservable<any, any>) => ObservableInput<any>,\n  connector?: () => SubjectLike<any>\n): OperatorFunction<T, GroupedObservable<K, R>> {\n  return operate((source, subscriber) => {\n    let element: ((value: any) => any) | void;\n    if (!elementOrOptions || typeof elementOrOptions === 'function') {\n      element = elementOrOptions as ((value: any) => any);\n    } else {\n      ({ duration, element, connector } = elementOrOptions);\n    }\n\n    // A lookup for the groups that we have so far.\n    const groups = new Map<K, SubjectLike<any>>();\n\n    // Used for notifying all groups and the subscriber in the same way.\n    const notify = (cb: (group: Observer<any>) => void) => {\n      groups.forEach(cb);\n      cb(subscriber);\n    };\n\n    // Used to handle errors from the source, AND errors that occur during the\n    // next call from the source.\n    const handleError = (err: any) => notify((consumer) => consumer.error(err));\n\n    // The number of actively subscribed groups\n    let activeGroups = 0;\n\n    // Whether or not teardown was attempted on this subscription.\n    let teardownAttempted = false;\n\n    // Capturing a reference to this, because we need a handle to it\n    // in `createGroupedObservable` below. This is what we use to\n    // subscribe to our source observable. This sometimes needs to be unsubscribed\n    // out-of-band with our `subscriber` which is the downstream subscriber, or destination,\n    // in cases where a user unsubscribes from the main resulting subscription, but\n    // still has groups from this subscription subscribed and would expect values from it\n    // Consider:  `source.pipe(groupBy(fn), take(2))`.\n    const groupBySourceSubscriber = new OperatorSubscriber(\n      subscriber,\n      (value: T) => {\n        // Because we have to notify all groups of any errors that occur in here,\n        // we have to add our own try/catch to ensure that those errors are propagated.\n        // OperatorSubscriber will only send the error to the main subscriber.\n        try {\n          const key = keySelector(value);\n\n          let group = groups.get(key);\n          if (!group) {\n            // Create our group subject\n            groups.set(key, (group = connector ? connector() : new Subject<any>()));\n\n            // Emit the grouped observable. Note that we can't do a simple `asObservable()` here,\n            // because the grouped observable has special semantics around reference counting\n            // to ensure we don't sever our connection to the source prematurely.\n            const grouped = createGroupedObservable(key, group);\n            subscriber.next(grouped);\n\n            if (duration) {\n              const durationSubscriber = createOperatorSubscriber(\n                // Providing the group here ensures that it is disposed of -- via `unsubscribe` --\n                // when the duration subscription is torn down. That is important, because then\n                // if someone holds a handle to the grouped observable and tries to subscribe to it\n                // after the connection to the source has been severed, they will get an\n                // `ObjectUnsubscribedError` and know they can't possibly get any notifications.\n                group as any,\n                () => {\n                  // Our duration notified! We can complete the group.\n                  // The group will be removed from the map in the finalization phase.\n                  group!.complete();\n                  durationSubscriber?.unsubscribe();\n                },\n                // Completions are also sent to the group, but just the group.\n                undefined,\n                // Errors on the duration subscriber are sent to the group\n                // but only the group. They are not sent to the main subscription.\n                undefined,\n                // Finalization: Remove this group from our map.\n                () => groups.delete(key)\n              );\n\n              // Start our duration notifier.\n              groupBySourceSubscriber.add(innerFrom(duration(grouped)).subscribe(durationSubscriber));\n            }\n          }\n\n          // Send the value to our group.\n          group.next(element ? element(value) : value);\n        } catch (err) {\n          handleError(err);\n        }\n      },\n      // Source completes.\n      () => notify((consumer) => consumer.complete()),\n      // Error from the source.\n      handleError,\n      // Free up memory.\n      // When the source subscription is _finally_ torn down, release the subjects and keys\n      // in our groups Map, they may be quite large and we don't want to keep them around if we\n      // don't have to.\n      () => groups.clear(),\n      () => {\n        teardownAttempted = true;\n        // We only kill our subscription to the source if we have\n        // no active groups. As stated above, consider this scenario:\n        // source$.pipe(groupBy(fn), take(2)).\n        return activeGroups === 0;\n      }\n    );\n\n    // Subscribe to the source\n    source.subscribe(groupBySourceSubscriber);\n\n    /**\n     * Creates the actual grouped observable returned.\n     * @param key The key of the group\n     * @param groupSubject The subject that fuels the group\n     */\n    function createGroupedObservable(key: K, groupSubject: SubjectLike<any>) {\n      const result: any = new Observable<T>((groupSubscriber) => {\n        activeGroups++;\n        const innerSub = groupSubject.subscribe(groupSubscriber);\n        return () => {\n          innerSub.unsubscribe();\n          // We can kill the subscription to our source if we now have no more\n          // active groups subscribed, and a finalization was already attempted on\n          // the source.\n          --activeGroups === 0 && teardownAttempted && groupBySourceSubscriber.unsubscribe();\n        };\n      });\n      result.key = key;\n      return result;\n    }\n  });\n}\n\n/**\n * An observable of values that is the emitted by the result of a {@link groupBy} operator,\n * contains a `key` property for the grouping.\n */\nexport interface GroupedObservable<K, T> extends Observable<T> {\n  /**\n   * The key value for the grouped notifications.\n   */\n  readonly key: K;\n}\n","import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Emits `false` if the input Observable emits any values, or emits `true` if the\n * input Observable completes without emitting any values.\n *\n * <span class=\"informal\">Tells whether any values are emitted by an Observable.</span>\n *\n * ![](isEmpty.png)\n *\n * `isEmpty` transforms an Observable that emits values into an Observable that\n * emits a single boolean value representing whether or not any values were\n * emitted by the source Observable. As soon as the source Observable emits a\n * value, `isEmpty` will emit a `false` and complete.  If the source Observable\n * completes having not emitted anything, `isEmpty` will emit a `true` and\n * complete.\n *\n * A similar effect could be achieved with {@link count}, but `isEmpty` can emit\n * a `false` value sooner.\n *\n * ## Examples\n *\n * Emit `false` for a non-empty Observable\n *\n * ```ts\n * import { Subject, isEmpty } from 'rxjs';\n *\n * const source = new Subject<string>();\n * const result = source.pipe(isEmpty());\n *\n * source.subscribe(x => console.log(x));\n * result.subscribe(x => console.log(x));\n *\n * source.next('a');\n * source.next('b');\n * source.next('c');\n * source.complete();\n *\n * // Outputs\n * // 'a'\n * // false\n * // 'b'\n * // 'c'\n * ```\n *\n * Emit `true` for an empty Observable\n *\n * ```ts\n * import { EMPTY, isEmpty } from 'rxjs';\n *\n * const result = EMPTY.pipe(isEmpty());\n * result.subscribe(x => console.log(x));\n *\n * // Outputs\n * // true\n * ```\n *\n * @see {@link count}\n * @see {@link EMPTY}\n *\n * @return A function that returns an Observable that emits boolean value\n * indicating whether the source Observable was empty or not.\n */\nexport function isEmpty<T>(): OperatorFunction<T, boolean> {\n  return operate((source, subscriber) => {\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        () => {\n          subscriber.next(false);\n          subscriber.complete();\n        },\n        () => {\n          subscriber.next(true);\n          subscriber.complete();\n        }\n      )\n    );\n  });\n}\n","import { EMPTY } from '../observable/empty';\nimport { MonoTypeOperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Waits for the source to complete, then emits the last N values from the source,\n * as specified by the `count` argument.\n *\n * ![](takeLast.png)\n *\n * `takeLast` results in an observable that will hold values up to `count` values in memory,\n * until the source completes. It then pushes all values in memory to the consumer, in the\n * order they were received from the source, then notifies the consumer that it is\n * complete.\n *\n * If for some reason the source completes before the `count` supplied to `takeLast` is reached,\n * all values received until that point are emitted, and then completion is notified.\n *\n * **Warning**: Using `takeLast` with an observable that never completes will result\n * in an observable that never emits a value.\n *\n * ## Example\n *\n * Take the last 3 values of an Observable with many values\n *\n * ```ts\n * import { range, takeLast } from 'rxjs';\n *\n * const many = range(1, 100);\n * const lastThree = many.pipe(takeLast(3));\n * lastThree.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeUntil}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @param count The maximum number of values to emit from the end of\n * the sequence of values emitted by the source Observable.\n * @return A function that returns an Observable that emits at most the last\n * `count` values emitted by the source Observable.\n */\nexport function takeLast<T>(count: number): MonoTypeOperatorFunction<T> {\n  return count <= 0\n    ? () => EMPTY\n    : operate((source, subscriber) => {\n        // This buffer will hold the values we are going to emit\n        // when the source completes. Since we only want to take the\n        // last N values, we can't emit until we're sure we're not getting\n        // any more values.\n        let buffer: T[] = [];\n        source.subscribe(\n          createOperatorSubscriber(\n            subscriber,\n            (value) => {\n              // Add the most recent value onto the end of our buffer.\n              buffer.push(value);\n              // If our buffer is now larger than the number of values we\n              // want to take, we remove the oldest value from the buffer.\n              count < buffer.length && buffer.shift();\n            },\n            () => {\n              // The source completed, we now know what are last values\n              // are, emit them in the order they were received.\n              for (const value of buffer) {\n                subscriber.next(value);\n              }\n              subscriber.complete();\n            },\n            // Errors are passed through to the consumer\n            undefined,\n            () => {\n              // During finalization release the values in our buffer.\n              buffer = null!;\n            }\n          )\n        );\n      });\n}\n","import { Observable } from '../Observable';\nimport { EmptyError } from '../util/EmptyError';\nimport { OperatorFunction, TruthyTypesOf } from '../types';\nimport { filter } from './filter';\nimport { takeLast } from './takeLast';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { identity } from '../util/identity';\n\nexport function last<T>(predicate: BooleanConstructor): OperatorFunction<T, TruthyTypesOf<T>>;\nexport function last<T, D>(predicate: BooleanConstructor, defaultValue: D): OperatorFunction<T, TruthyTypesOf<T> | D>;\nexport function last<T, D = T>(predicate?: null, defaultValue?: D): OperatorFunction<T, T | D>;\nexport function last<T, S extends T>(\n  predicate: (value: T, index: number, source: Observable<T>) => value is S,\n  defaultValue?: S\n): OperatorFunction<T, S>;\nexport function last<T, D = T>(\n  predicate: (value: T, index: number, source: Observable<T>) => boolean,\n  defaultValue?: D\n): OperatorFunction<T, T | D>;\n\n/**\n * Returns an Observable that emits only the last item emitted by the source Observable.\n * It optionally takes a predicate function as a parameter, in which case, rather than emitting\n * the last item from the source Observable, the resulting Observable will emit the last item\n * from the source Observable that satisfies the predicate.\n *\n * ![](last.png)\n *\n * It will emit an error notification if the source completes without notification or one that matches\n * the predicate. It returns the last value or if a predicate is provided last value that matches the\n * predicate. It returns the given default value if no notification is emitted or matches the predicate.\n *\n * ## Examples\n *\n * Last alphabet from the sequence\n *\n * ```ts\n * import { from, last } from 'rxjs';\n *\n * const source = from(['x', 'y', 'z']);\n * const result = source.pipe(last());\n *\n * result.subscribe(value => console.log(`Last alphabet: ${ value }`));\n *\n * // Outputs\n * // Last alphabet: z\n * ```\n *\n * Default value when the value in the predicate is not matched\n *\n * ```ts\n * import { from, last } from 'rxjs';\n *\n * const source = from(['x', 'y', 'z']);\n * const result = source.pipe(last(char => char === 'a', 'not found'));\n *\n * result.subscribe(value => console.log(`'a' is ${ value }.`));\n *\n * // Outputs\n * // 'a' is not found.\n * ```\n *\n * @see {@link skip}\n * @see {@link skipUntil}\n * @see {@link skipLast}\n * @see {@link skipWhile}\n * @see {@link first}\n *\n * @throws {EmptyError} Delivers an `EmptyError` to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n *\n * @param predicate The condition any source emitted item has to satisfy.\n * @param defaultValue An optional default value to provide if last `predicate`\n * isn't met or no values were emitted.\n * @return A function that returns an Observable that emits only the last item\n * satisfying the given condition from the source, or an error notification\n * with an `EmptyError` object if no such items are emitted.\n */\nexport function last<T, D>(\n  predicate?: ((value: T, index: number, source: Observable<T>) => boolean) | null,\n  defaultValue?: D\n): OperatorFunction<T, T | D> {\n  const hasDefaultValue = arguments.length >= 2;\n  return (source: Observable<T>) =>\n    source.pipe(\n      predicate ? filter((v, i) => predicate(v, i, source)) : identity,\n      takeLast(1),\n      hasDefaultValue ? defaultIfEmpty(defaultValue!) : throwIfEmpty(() => new EmptyError())\n    );\n}\n","import { Notification } from '../Notification';\nimport { OperatorFunction, ObservableNotification } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Represents all of the notifications from the source Observable as `next`\n * emissions marked with their original types within {@link Notification}\n * objects.\n *\n * <span class=\"informal\">Wraps `next`, `error` and `complete` emissions in\n * {@link Notification} objects, emitted as `next` on the output Observable.\n * </span>\n *\n * ![](materialize.png)\n *\n * `materialize` returns an Observable that emits a `next` notification for each\n * `next`, `error`, or `complete` emission of the source Observable. When the\n * source Observable emits `complete`, the output Observable will emit `next` as\n * a Notification of type \"complete\", and then it will emit `complete` as well.\n * When the source Observable emits `error`, the output will emit `next` as a\n * Notification of type \"error\", and then `complete`.\n *\n * This operator is useful for producing metadata of the source Observable, to\n * be consumed as `next` emissions. Use it in conjunction with\n * {@link dematerialize}.\n *\n * ## Example\n *\n * Convert a faulty Observable to an Observable of Notifications\n *\n * ```ts\n * import { of, materialize, map } from 'rxjs';\n *\n * const letters = of('a', 'b', 13, 'd');\n * const upperCase = letters.pipe(map((x: any) => x.toUpperCase()));\n * const materialized = upperCase.pipe(materialize());\n *\n * materialized.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - Notification { kind: 'N', value: 'A', error: undefined, hasValue: true }\n * // - Notification { kind: 'N', value: 'B', error: undefined, hasValue: true }\n * // - Notification { kind: 'E', value: undefined, error: TypeError { message: x.toUpperCase is not a function }, hasValue: false }\n * ```\n *\n * @see {@link Notification}\n * @see {@link dematerialize}\n *\n * @return A function that returns an Observable that emits\n * {@link Notification} objects that wrap the original emissions from the\n * source Observable with metadata.\n */\nexport function materialize<T>(): OperatorFunction<T, Notification<T> & ObservableNotification<T>> {\n  return operate((source, subscriber) => {\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (value) => {\n          subscriber.next(Notification.createNext(value));\n        },\n        () => {\n          subscriber.next(Notification.createComplete());\n          subscriber.complete();\n        },\n        (err) => {\n          subscriber.next(Notification.createError(err));\n          subscriber.complete();\n        }\n      )\n    );\n  });\n}\n","import { reduce } from './reduce';\nimport { MonoTypeOperatorFunction } from '../types';\nimport { isFunction } from '../util/isFunction';\n\n/**\n * The `max` operator operates on an Observable that emits numbers (or items that\n * can be compared with a provided function), and when source Observable completes\n * it emits a single item: the item with the largest value.\n *\n * ![](max.png)\n *\n * ## Examples\n *\n * Get the maximal value of a series of numbers\n *\n * ```ts\n * import { of, max } from 'rxjs';\n *\n * of(5, 4, 7, 2, 8)\n *   .pipe(max())\n *   .subscribe(x => console.log(x));\n *\n * // Outputs\n * // 8\n * ```\n *\n * Use a comparer function to get the maximal item\n *\n * ```ts\n * import { of, max } from 'rxjs';\n *\n * of(\n *   { age: 7, name: 'Foo' },\n *   { age: 5, name: 'Bar' },\n *   { age: 9, name: 'Beer' }\n * ).pipe(\n *   max((a, b) => a.age < b.age ? -1 : 1)\n * )\n * .subscribe(x => console.log(x.name));\n *\n * // Outputs\n * // 'Beer'\n * ```\n *\n * @see {@link min}\n *\n * @param comparer Optional comparer function that it will use instead of its\n * default to compare the value of two items.\n * @return A function that returns an Observable that emits item with the\n * largest value.\n */\nexport function max<T>(comparer?: (x: T, y: T) => number): MonoTypeOperatorFunction<T> {\n  return reduce(isFunction(comparer) ? (x, y) => (comparer(x, y) > 0 ? x : y) : (x, y) => (x > y ? x : y));\n}\n","import { ObservableInput, ObservableInputTuple, OperatorFunction, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\nimport { mergeAll } from './mergeAll';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from '../observable/from';\n\n/** @deprecated Replaced with {@link mergeWith}. Will be removed in v8. */\nexport function merge<T, A extends readonly unknown[]>(...sources: [...ObservableInputTuple<A>]): OperatorFunction<T, T | A[number]>;\n/** @deprecated Replaced with {@link mergeWith}. Will be removed in v8. */\nexport function merge<T, A extends readonly unknown[]>(\n  ...sourcesAndConcurrency: [...ObservableInputTuple<A>, number]\n): OperatorFunction<T, T | A[number]>;\n/** @deprecated Replaced with {@link mergeWith}. Will be removed in v8. */\nexport function merge<T, A extends readonly unknown[]>(\n  ...sourcesAndScheduler: [...ObservableInputTuple<A>, SchedulerLike]\n): OperatorFunction<T, T | A[number]>;\n/** @deprecated Replaced with {@link mergeWith}. Will be removed in v8. */\nexport function merge<T, A extends readonly unknown[]>(\n  ...sourcesAndConcurrencyAndScheduler: [...ObservableInputTuple<A>, number, SchedulerLike]\n): OperatorFunction<T, T | A[number]>;\n\nexport function merge<T>(...args: unknown[]): OperatorFunction<T, unknown> {\n  const scheduler = popScheduler(args);\n  const concurrent = popNumber(args, Infinity);\n\n  return operate((source, subscriber) => {\n    mergeAll(concurrent)(from([source, ...(args as ObservableInput<T>[])], scheduler)).subscribe(subscriber);\n  });\n}\n","import { mergeMap } from './mergeMap';\n\n/**\n * @deprecated Renamed to {@link mergeMap}. Will be removed in v8.\n */\nexport const flatMap = mergeMap;\n","import { OperatorFunction, ObservedValueOf, ObservableInput } from '../types';\nimport { mergeMap } from './mergeMap';\nimport { isFunction } from '../util/isFunction';\n\n/** @deprecated Will be removed in v9. Use {@link mergeMap} instead: `mergeMap(() => result)` */\nexport function mergeMapTo<O extends ObservableInput<unknown>>(\n  innerObservable: O,\n  concurrent?: number\n): OperatorFunction<unknown, ObservedValueOf<O>>;\n/**\n * @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead.\n * Details: https://rxjs.dev/deprecations/resultSelector\n */\nexport function mergeMapTo<T, R, O extends ObservableInput<unknown>>(\n  innerObservable: O,\n  resultSelector: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R,\n  concurrent?: number\n): OperatorFunction<T, R>;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to the same Observable which is merged multiple\n * times in the output Observable.\n *\n * <span class=\"informal\">It's like {@link mergeMap}, but maps each value always\n * to the same inner Observable.</span>\n *\n * ![](mergeMapTo.png)\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then merges those resulting Observables into one\n * single Observable, which is the output Observable.\n *\n * ## Example\n *\n * For each click event, start an interval Observable ticking every 1 second\n *\n * ```ts\n * import { fromEvent, mergeMapTo, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(mergeMapTo(interval(1000)));\n *\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMapTo}\n * @see {@link merge}\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeScan}\n * @see {@link switchMapTo}\n *\n * @param innerObservable An `ObservableInput` to replace each value from the\n * source Observable.\n * @param concurrent Maximum number of input Observables being subscribed to\n * concurrently.\n * @return A function that returns an Observable that emits items from the\n * given `innerObservable`.\n * @deprecated Will be removed in v9. Use {@link mergeMap} instead: `mergeMap(() => result)`\n */\nexport function mergeMapTo<T, R, O extends ObservableInput<unknown>>(\n  innerObservable: O,\n  resultSelector?: ((outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R) | number,\n  concurrent: number = Infinity\n): OperatorFunction<T, ObservedValueOf<O> | R> {\n  if (isFunction(resultSelector)) {\n    return mergeMap(() => innerObservable, resultSelector, concurrent);\n  }\n  if (typeof resultSelector === 'number') {\n    concurrent = resultSelector;\n  }\n  return mergeMap(() => innerObservable, concurrent);\n}\n","import { ObservableInput, OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\n\n/**\n * Applies an accumulator function over the source Observable where the\n * accumulator function itself returns an Observable, then each intermediate\n * Observable returned is merged into the output Observable.\n *\n * <span class=\"informal\">It's like {@link scan}, but the Observables returned\n * by the accumulator are merged into the outer Observable.</span>\n *\n * The first parameter of the `mergeScan` is an `accumulator` function which is\n * being called every time the source Observable emits a value. `mergeScan` will\n * subscribe to the value returned by the `accumulator` function and will emit\n * values to the subscriber emitted by inner Observable.\n *\n * The `accumulator` function is being called with three parameters passed to it:\n * `acc`, `value` and `index`. The `acc` parameter is used as the state parameter\n * whose value is initially set to the `seed` parameter (the second parameter\n * passed to the `mergeScan` operator).\n *\n * `mergeScan` internally keeps the value of the `acc` parameter: as long as the\n * source Observable emits without inner Observable emitting, the `acc` will be\n * set to `seed`. The next time the inner Observable emits a value, `mergeScan`\n * will internally remember it and it will be passed to the `accumulator`\n * function as `acc` parameter the next time source emits.\n *\n * The `value` parameter of the `accumulator` function is the value emitted by the\n * source Observable, while the `index` is a number which represent the order of the\n * current emission by the source Observable. It starts with 0.\n *\n * The last parameter to the `mergeScan` is the `concurrent` value which defaults\n * to Infinity. It represents the maximum number of inner Observable subscriptions\n * at a time.\n *\n * ## Example\n *\n * Count the number of click events\n *\n * ```ts\n * import { fromEvent, map, mergeScan, of } from 'rxjs';\n *\n * const click$ = fromEvent(document, 'click');\n * const one$ = click$.pipe(map(() => 1));\n * const seed = 0;\n * const count$ = one$.pipe(\n *   mergeScan((acc, one) => of(acc + one), seed)\n * );\n *\n * count$.subscribe(x => console.log(x));\n *\n * // Results:\n * // 1\n * // 2\n * // 3\n * // 4\n * // ...and so on for each click\n * ```\n *\n * @see {@link scan}\n * @see {@link switchScan}\n *\n * @param accumulator The accumulator function called on each source value.\n * @param seed The initial accumulation value.\n * @param concurrent Maximum number of input Observables being subscribed to\n * concurrently.\n * @return A function that returns an Observable of the accumulated values.\n */\nexport function mergeScan<T, R>(\n  accumulator: (acc: R, value: T, index: number) => ObservableInput<R>,\n  seed: R,\n  concurrent = Infinity\n): OperatorFunction<T, R> {\n  return operate((source, subscriber) => {\n    // The accumulated state.\n    let state = seed;\n\n    return mergeInternals(\n      source,\n      subscriber,\n      (value, index) => accumulator(state, value, index),\n      concurrent,\n      (value) => {\n        state = value;\n      },\n      false,\n      undefined,\n      () => (state = null!)\n    );\n  });\n}\n","import { ObservableInputTuple, OperatorFunction } from '../types';\nimport { merge } from './merge';\n\n/**\n * Merge the values from all observables to a single observable result.\n *\n * Creates an observable, that when subscribed to, subscribes to the source\n * observable, and all other sources provided as arguments. All values from\n * every source are emitted from the resulting subscription.\n *\n * When all sources complete, the resulting observable will complete.\n *\n * When any source errors, the resulting observable will error.\n *\n * ## Example\n *\n * Joining all outputs from multiple user input event streams\n *\n * ```ts\n * import { fromEvent, map, mergeWith } from 'rxjs';\n *\n * const clicks$ = fromEvent(document, 'click').pipe(map(() => 'click'));\n * const mousemoves$ = fromEvent(document, 'mousemove').pipe(map(() => 'mousemove'));\n * const dblclicks$ = fromEvent(document, 'dblclick').pipe(map(() => 'dblclick'));\n *\n * mousemoves$\n *   .pipe(mergeWith(clicks$, dblclicks$))\n *   .subscribe(x => console.log(x));\n *\n * // result (assuming user interactions)\n * // 'mousemove'\n * // 'mousemove'\n * // 'mousemove'\n * // 'click'\n * // 'click'\n * // 'dblclick'\n * ```\n *\n * @see {@link merge}\n *\n * @param otherSources the sources to combine the current source with.\n * @return A function that returns an Observable that merges the values from\n * all given Observables.\n */\nexport function mergeWith<T, A extends readonly unknown[]>(\n  ...otherSources: [...ObservableInputTuple<A>]\n): OperatorFunction<T, T | A[number]> {\n  return merge(...otherSources);\n}\n","import { reduce } from './reduce';\nimport { MonoTypeOperatorFunction } from '../types';\nimport { isFunction } from '../util/isFunction';\n\n/**\n * The `min` operator operates on an Observable that emits numbers (or items that\n * can be compared with a provided function), and when source Observable completes\n * it emits a single item: the item with the smallest value.\n *\n * ![](min.png)\n *\n * ## Examples\n *\n * Get the minimal value of a series of numbers\n *\n * ```ts\n * import { of, min } from 'rxjs';\n *\n * of(5, 4, 7, 2, 8)\n *   .pipe(min())\n *   .subscribe(x => console.log(x));\n *\n * // Outputs\n * // 2\n * ```\n *\n * Use a comparer function to get the minimal item\n *\n * ```ts\n * import { of, min } from 'rxjs';\n *\n * of(\n *   { age: 7, name: 'Foo' },\n *   { age: 5, name: 'Bar' },\n *   { age: 9, name: 'Beer' }\n * ).pipe(\n *   min((a, b) => a.age < b.age ? -1 : 1)\n * )\n * .subscribe(x => console.log(x.name));\n *\n * // Outputs\n * // 'Bar'\n * ```\n *\n * @see {@link max}\n *\n * @param comparer Optional comparer function that it will use instead of its\n * default to compare the value of two items.\n * @return A function that returns an Observable that emits item with the\n * smallest value.\n */\nexport function min<T>(comparer?: (x: T, y: T) => number): MonoTypeOperatorFunction<T> {\n  return reduce(isFunction(comparer) ? (x, y) => (comparer(x, y) < 0 ? x : y) : (x, y) => (x < y ? x : y));\n}\n","import { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Make a {@link ConnectableObservable} behave like a ordinary observable and automates the way\n * you can connect to it.\n *\n * Internally it counts the subscriptions to the observable and subscribes (only once) to the source if\n * the number of subscriptions is larger than 0. If the number of subscriptions is smaller than 1, it\n * unsubscribes from the source. This way you can make sure that everything before the *published*\n * refCount has only a single subscription independently of the number of subscribers to the target\n * observable.\n *\n * Note that using the {@link share} operator is exactly the same as using the `multicast(() => new Subject())` operator\n * (making the observable hot) and the *refCount* operator in a sequence.\n *\n * ![](refCount.png)\n *\n * ## Example\n *\n * In the following example there are two intervals turned into connectable observables\n * by using the *publish* operator. The first one uses the *refCount* operator, the\n * second one does not use it. You will notice that a connectable observable does nothing\n * until you call its connect function.\n *\n * ```ts\n * import { interval, tap, publish, refCount } from 'rxjs';\n *\n * // Turn the interval observable into a ConnectableObservable (hot)\n * const refCountInterval = interval(400).pipe(\n *   tap(num => console.log(`refCount ${ num }`)),\n *   publish(),\n *   refCount()\n * );\n *\n * const publishedInterval = interval(400).pipe(\n *   tap(num => console.log(`publish ${ num }`)),\n *   publish()\n * );\n *\n * refCountInterval.subscribe();\n * refCountInterval.subscribe();\n * // 'refCount 0' -----> 'refCount 1' -----> etc\n * // All subscriptions will receive the same value and the tap (and\n * // every other operator) before the `publish` operator will be executed\n * // only once per event independently of the number of subscriptions.\n *\n * publishedInterval.subscribe();\n * // Nothing happens until you call .connect() on the observable.\n * ```\n *\n * @return A function that returns an Observable that automates the connection\n * to ConnectableObservable.\n * @see {@link ConnectableObservable}\n * @see {@link share}\n * @see {@link publish}\n * @deprecated Replaced with the {@link share} operator. How `share` is used\n * will depend on the connectable observable you created just prior to the\n * `refCount` operator.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function refCount<T>(): MonoTypeOperatorFunction<T> {\n  return operate((source, subscriber) => {\n    let connection: Subscription | null = null;\n\n    (source as any)._refCount++;\n\n    const refCounter = createOperatorSubscriber(subscriber, undefined, undefined, undefined, () => {\n      if (!source || (source as any)._refCount <= 0 || 0 < --(source as any)._refCount) {\n        connection = null;\n        return;\n      }\n\n      ///\n      // Compare the local RefCountSubscriber's connection Subscription to the\n      // connection Subscription on the shared ConnectableObservable. In cases\n      // where the ConnectableObservable source synchronously emits values, and\n      // the RefCountSubscriber's downstream Observers synchronously unsubscribe,\n      // execution continues to here before the RefCountOperator has a chance to\n      // supply the RefCountSubscriber with the shared connection Subscription.\n      // For example:\n      // ```\n      // range(0, 10).pipe(\n      //   publish(),\n      //   refCount(),\n      //   take(5),\n      // )\n      // .subscribe();\n      // ```\n      // In order to account for this case, RefCountSubscriber should only dispose\n      // the ConnectableObservable's shared connection Subscription if the\n      // connection Subscription exists, *and* either:\n      //   a. RefCountSubscriber doesn't have a reference to the shared connection\n      //      Subscription yet, or,\n      //   b. RefCountSubscriber's connection Subscription reference is identical\n      //      to the shared connection Subscription\n      ///\n\n      const sharedConnection = (source as any)._connection;\n      const conn = connection;\n      connection = null;\n\n      if (sharedConnection && (!conn || sharedConnection === conn)) {\n        sharedConnection.unsubscribe();\n      }\n\n      subscriber.unsubscribe();\n    });\n\n    source.subscribe(refCounter);\n\n    if (!refCounter.closed) {\n      connection = (source as ConnectableObservable<T>).connect();\n    }\n  });\n}\n","import { Subject } from '../Subject';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { hasLift } from '../util/lift';\n\n/**\n * @class ConnectableObservable<T>\n * @deprecated Will be removed in v8. Use {@link connectable} to create a connectable observable.\n * If you are using the `refCount` method of `ConnectableObservable`, use the {@link share} operator\n * instead.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport class ConnectableObservable<T> extends Observable<T> {\n  protected _subject: Subject<T> | null = null;\n  protected _refCount: number = 0;\n  protected _connection: Subscription | null = null;\n\n  /**\n   * @param source The source observable\n   * @param subjectFactory The factory that creates the subject used internally.\n   * @deprecated Will be removed in v8. Use {@link connectable} to create a connectable observable.\n   * `new ConnectableObservable(source, factory)` is equivalent to\n   * `connectable(source, { connector: factory })`.\n   * When the `refCount()` method is needed, the {@link share} operator should be used instead:\n   * `new ConnectableObservable(source, factory).refCount()` is equivalent to\n   * `source.pipe(share({ connector: factory }))`.\n   * Details: https://rxjs.dev/deprecations/multicasting\n   */\n  constructor(public source: Observable<T>, protected subjectFactory: () => Subject<T>) {\n    super();\n    // If we have lift, monkey patch that here. This is done so custom observable\n    // types will compose through multicast. Otherwise the resulting observable would\n    // simply be an instance of `ConnectableObservable`.\n    if (hasLift(source)) {\n      this.lift = source.lift;\n    }\n  }\n\n  /** @internal */\n  protected _subscribe(subscriber: Subscriber<T>) {\n    return this.getSubject().subscribe(subscriber);\n  }\n\n  protected getSubject(): Subject<T> {\n    const subject = this._subject;\n    if (!subject || subject.isStopped) {\n      this._subject = this.subjectFactory();\n    }\n    return this._subject!;\n  }\n\n  protected _teardown() {\n    this._refCount = 0;\n    const { _connection } = this;\n    this._subject = this._connection = null;\n    _connection?.unsubscribe();\n  }\n\n  /**\n   * @deprecated {@link ConnectableObservable} will be removed in v8. Use {@link connectable} instead.\n   * Details: https://rxjs.dev/deprecations/multicasting\n   */\n  connect(): Subscription {\n    let connection = this._connection;\n    if (!connection) {\n      connection = this._connection = new Subscription();\n      const subject = this.getSubject();\n      connection.add(\n        this.source.subscribe(\n          createOperatorSubscriber(\n            subject as any,\n            undefined,\n            () => {\n              this._teardown();\n              subject.complete();\n            },\n            (err) => {\n              this._teardown();\n              subject.error(err);\n            },\n            () => this._teardown()\n          )\n        )\n      );\n\n      if (connection.closed) {\n        this._connection = null;\n        connection = Subscription.EMPTY;\n      }\n    }\n    return connection;\n  }\n\n  /**\n   * @deprecated {@link ConnectableObservable} will be removed in v8. Use the {@link share} operator instead.\n   * Details: https://rxjs.dev/deprecations/multicasting\n   */\n  refCount(): Observable<T> {\n    return higherOrderRefCount()(this) as Observable<T>;\n  }\n}\n","import { Subject } from '../Subject';\nimport { Observable } from '../Observable';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { OperatorFunction, UnaryFunction, ObservedValueOf, ObservableInput } from '../types';\nimport { isFunction } from '../util/isFunction';\nimport { connect } from './connect';\n\n/**\n * An operator that creates a {@link ConnectableObservable}, that when connected,\n * with the `connect` method, will use the provided subject to multicast the values\n * from the source to all consumers.\n *\n * @param subject The subject to multicast through.\n * @return A function that returns a {@link ConnectableObservable}\n * @deprecated Will be removed in v8. To create a connectable observable, use {@link connectable}.\n * If you're using {@link refCount} after `multicast`, use the {@link share} operator instead.\n * `multicast(subject), refCount()` is equivalent to\n * `share({ connector: () => subject, resetOnError: false, resetOnComplete: false, resetOnRefCountZero: false })`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function multicast<T>(subject: Subject<T>): UnaryFunction<Observable<T>, ConnectableObservable<T>>;\n\n/**\n * Because this is deprecated in favor of the {@link connect} operator, and was otherwise poorly documented,\n * rather than duplicate the effort of documenting the same behavior, please see documentation for the\n * {@link connect} operator.\n *\n * @param subject The subject used to multicast.\n * @param selector A setup function to setup the multicast\n * @return A function that returns an observable that mirrors the observable returned by the selector.\n * @deprecated Will be removed in v8. Use the {@link connect} operator instead.\n * `multicast(subject, selector)` is equivalent to\n * `connect(selector, { connector: () => subject })`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function multicast<T, O extends ObservableInput<any>>(\n  subject: Subject<T>,\n  selector: (shared: Observable<T>) => O\n): OperatorFunction<T, ObservedValueOf<O>>;\n\n/**\n * An operator that creates a {@link ConnectableObservable}, that when connected,\n * with the `connect` method, will use the provided subject to multicast the values\n * from the source to all consumers.\n *\n * @param subjectFactory A factory that will be called to create the subject. Passing a function here\n * will cause the underlying subject to be \"reset\" on error, completion, or refCounted unsubscription of\n * the source.\n * @return A function that returns a {@link ConnectableObservable}\n * @deprecated Will be removed in v8. To create a connectable observable, use {@link connectable}.\n * If you're using {@link refCount} after `multicast`, use the {@link share} operator instead.\n * `multicast(() => new BehaviorSubject('test')), refCount()` is equivalent to\n * `share({ connector: () => new BehaviorSubject('test') })`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function multicast<T>(subjectFactory: () => Subject<T>): UnaryFunction<Observable<T>, ConnectableObservable<T>>;\n\n/**\n * Because this is deprecated in favor of the {@link connect} operator, and was otherwise poorly documented,\n * rather than duplicate the effort of documenting the same behavior, please see documentation for the\n * {@link connect} operator.\n *\n * @param subjectFactory A factory that creates the subject used to multicast.\n * @param selector A function to setup the multicast and select the output.\n * @return A function that returns an observable that mirrors the observable returned by the selector.\n * @deprecated Will be removed in v8. Use the {@link connect} operator instead.\n * `multicast(subjectFactory, selector)` is equivalent to\n * `connect(selector, { connector: subjectFactory })`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function multicast<T, O extends ObservableInput<any>>(\n  subjectFactory: () => Subject<T>,\n  selector: (shared: Observable<T>) => O\n): OperatorFunction<T, ObservedValueOf<O>>;\n\n/**\n * @deprecated Will be removed in v8. Use the {@link connectable} observable, the {@link connect} operator or the\n * {@link share} operator instead. See the overloads below for equivalent replacement examples of this operator's\n * behaviors.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function multicast<T, R>(\n  subjectOrSubjectFactory: Subject<T> | (() => Subject<T>),\n  selector?: (source: Observable<T>) => Observable<R>\n): OperatorFunction<T, R> {\n  const subjectFactory = isFunction(subjectOrSubjectFactory) ? subjectOrSubjectFactory : () => subjectOrSubjectFactory;\n\n  if (isFunction(selector)) {\n    // If a selector function is provided, then we're a \"normal\" operator that isn't\n    // going to return a ConnectableObservable. We can use `connect` to do what we\n    // need to do.\n    return connect(selector, {\n      connector: subjectFactory,\n    });\n  }\n\n  return (source: Observable<T>) => new ConnectableObservable<any>(source, subjectFactory);\n}\n","import { Observable } from '../Observable';\nimport { ObservableInputTuple } from '../types';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { OperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { noop } from '../util/noop';\nimport { innerFrom } from './innerFrom';\n\nexport function onErrorResumeNext<A extends readonly unknown[]>(sources: [...ObservableInputTuple<A>]): Observable<A[number]>;\nexport function onErrorResumeNext<A extends readonly unknown[]>(...sources: [...ObservableInputTuple<A>]): Observable<A[number]>;\n\n/**\n * When any of the provided Observable emits a complete or an error notification, it immediately subscribes to the next one\n * that was passed.\n *\n * <span class=\"informal\">Execute series of Observables no matter what, even if it means swallowing errors.</span>\n *\n * ![](onErrorResumeNext.png)\n *\n * `onErrorResumeNext` will subscribe to each observable source it is provided, in order.\n * If the source it's subscribed to emits an error or completes, it will move to the next source\n * without error.\n *\n * If `onErrorResumeNext` is provided no arguments, or a single, empty array, it will return {@link EMPTY}.\n *\n * `onErrorResumeNext` is basically {@link concat}, only it will continue, even if one of its\n * sources emits an error.\n *\n * Note that there is no way to handle any errors thrown by sources via the result of\n * `onErrorResumeNext`. If you want to handle errors thrown in any given source, you can\n * always use the {@link catchError} operator on them before passing them into `onErrorResumeNext`.\n *\n * ## Example\n *\n * Subscribe to the next Observable after map fails\n *\n * ```ts\n * import { onErrorResumeNext, of, map } from 'rxjs';\n *\n * onErrorResumeNext(\n *   of(1, 2, 3, 0).pipe(\n *     map(x => {\n *       if (x === 0) {\n *         throw Error();\n *       }\n *       return 10 / x;\n *     })\n *   ),\n *   of(1, 2, 3)\n * )\n * .subscribe({\n *   next: value => console.log(value),\n *   error: err => console.log(err),     // Will never be called.\n *   complete: () => console.log('done')\n * });\n *\n * // Logs:\n * // 10\n * // 5\n * // 3.3333333333333335\n * // 1\n * // 2\n * // 3\n * // 'done'\n * ```\n *\n * @see {@link concat}\n * @see {@link catchError}\n *\n * @param sources `ObservableInput`s passed either directly or as an array.\n * @return An Observable that concatenates all sources, one after the other,\n * ignoring all errors, such that any error causes it to move on to the next source.\n */\nexport function onErrorResumeNext<A extends readonly unknown[]>(\n  ...sources: [[...ObservableInputTuple<A>]] | [...ObservableInputTuple<A>]\n): Observable<A[number]> {\n  const nextSources: ObservableInputTuple<A> = argsOrArgArray(sources) as any;\n\n  return new Observable((subscriber) => {\n    let sourceIndex = 0;\n    const subscribeNext = () => {\n      if (sourceIndex < nextSources.length) {\n        let nextSource: Observable<A[number]>;\n        try {\n          nextSource = innerFrom(nextSources[sourceIndex++]);\n        } catch (err) {\n          subscribeNext();\n          return;\n        }\n        const innerSubscriber = new OperatorSubscriber(subscriber, undefined, noop, noop);\n        nextSource.subscribe(innerSubscriber);\n        innerSubscriber.add(subscribeNext);\n      } else {\n        subscriber.complete();\n      }\n    };\n    subscribeNext();\n  });\n}\n","import { ObservableInputTuple, OperatorFunction } from '../types';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { onErrorResumeNext as oERNCreate } from '../observable/onErrorResumeNext';\n\nexport function onErrorResumeNextWith<T, A extends readonly unknown[]>(\n  sources: [...ObservableInputTuple<A>]\n): OperatorFunction<T, T | A[number]>;\nexport function onErrorResumeNextWith<T, A extends readonly unknown[]>(\n  ...sources: [...ObservableInputTuple<A>]\n): OperatorFunction<T, T | A[number]>;\n\n/**\n * When any of the provided Observable emits an complete or error notification, it immediately subscribes to the next one\n * that was passed.\n *\n * <span class=\"informal\">Execute series of Observables, subscribes to next one on error or complete.</span>\n *\n * ![](onErrorResumeNext.png)\n *\n * `onErrorResumeNext` is an operator that accepts a series of Observables, provided either directly as\n * arguments or as an array. If no single Observable is provided, returned Observable will simply behave the same\n * as the source.\n *\n * `onErrorResumeNext` returns an Observable that starts by subscribing and re-emitting values from the source Observable.\n * When its stream of values ends - no matter if Observable completed or emitted an error - `onErrorResumeNext`\n * will subscribe to the first Observable that was passed as an argument to the method. It will start re-emitting\n * its values as well and - again - when that stream ends, `onErrorResumeNext` will proceed to subscribing yet another\n * Observable in provided series, no matter if previous Observable completed or ended with an error. This will\n * be happening until there is no more Observables left in the series, at which point returned Observable will\n * complete - even if the last subscribed stream ended with an error.\n *\n * `onErrorResumeNext` can be therefore thought of as version of {@link concat} operator, which is more permissive\n * when it comes to the errors emitted by its input Observables. While `concat` subscribes to the next Observable\n * in series only if previous one successfully completed, `onErrorResumeNext` subscribes even if it ended with\n * an error.\n *\n * Note that you do not get any access to errors emitted by the Observables. In particular do not\n * expect these errors to appear in error callback passed to {@link Observable#subscribe}. If you want to take\n * specific actions based on what error was emitted by an Observable, you should try out {@link catchError} instead.\n *\n *\n * ## Example\n *\n * Subscribe to the next Observable after map fails\n *\n * ```ts\n * import { of, onErrorResumeNext, map } from 'rxjs';\n *\n * of(1, 2, 3, 0)\n *   .pipe(\n *     map(x => {\n *       if (x === 0) {\n *         throw Error();\n *       }\n *\n *       return 10 / x;\n *     }),\n *     onErrorResumeNext(of(1, 2, 3))\n *   )\n *   .subscribe({\n *     next: val => console.log(val),\n *     error: err => console.log(err),          // Will never be called.\n *     complete: () => console.log('that\\'s it!')\n *   });\n *\n * // Logs:\n * // 10\n * // 5\n * // 3.3333333333333335\n * // 1\n * // 2\n * // 3\n * // 'that's it!'\n * ```\n *\n * @see {@link concat}\n * @see {@link catchError}\n *\n * @param sources `ObservableInput`s passed either directly or as an array.\n * @return A function that returns an Observable that emits values from source\n * Observable, but - if it errors - subscribes to the next passed Observable\n * and so on, until it completes or runs out of Observables.\n */\nexport function onErrorResumeNextWith<T, A extends readonly unknown[]>(\n  ...sources: [[...ObservableInputTuple<A>]] | [...ObservableInputTuple<A>]\n): OperatorFunction<T, T | A[number]> {\n  // For some reason, TS 4.1 RC gets the inference wrong here and infers the\n  // result to be `A[number][]` - completely dropping the ObservableInput part\n  // of the type. This makes no sense whatsoever. As a workaround, the type is\n  // asserted explicitly.\n  const nextSources = argsOrArgArray(sources) as unknown as ObservableInputTuple<A>;\n\n  return (source) => oERNCreate(source, ...nextSources);\n}\n\n/**\n * @deprecated Renamed. Use {@link onErrorResumeNextWith} instead. Will be removed in v8.\n */\nexport const onErrorResumeNext = onErrorResumeNextWith;\n","import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Groups pairs of consecutive emissions together and emits them as an array of\n * two values.\n *\n * <span class=\"informal\">Puts the current value and previous value together as\n * an array, and emits that.</span>\n *\n * ![](pairwise.png)\n *\n * The Nth emission from the source Observable will cause the output Observable\n * to emit an array [(N-1)th, Nth] of the previous and the current value, as a\n * pair. For this reason, `pairwise` emits on the second and subsequent\n * emissions from the source Observable, but not on the first emission, because\n * there is no previous value in that case.\n *\n * ## Example\n *\n * On every click (starting from the second), emit the relative distance to the previous click\n *\n * ```ts\n * import { fromEvent, pairwise, map } from 'rxjs';\n *\n * const clicks = fromEvent<PointerEvent>(document, 'click');\n * const pairs = clicks.pipe(pairwise());\n * const distance = pairs.pipe(\n *   map(([first, second]) => {\n *     const x0 = first.clientX;\n *     const y0 = first.clientY;\n *     const x1 = second.clientX;\n *     const y1 = second.clientY;\n *     return Math.sqrt(Math.pow(x0 - x1, 2) + Math.pow(y0 - y1, 2));\n *   })\n * );\n *\n * distance.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n *\n * @return A function that returns an Observable of pairs (as arrays) of\n * consecutive values from the source Observable.\n */\nexport function pairwise<T>(): OperatorFunction<T, [T, T]> {\n  return operate((source, subscriber) => {\n    let prev: T;\n    let hasPrev = false;\n    source.subscribe(\n      createOperatorSubscriber(subscriber, (value) => {\n        const p = prev;\n        prev = value;\n        hasPrev && subscriber.next([p, value]);\n        hasPrev = true;\n      })\n    );\n  });\n}\n","export function not<T>(pred: (value: T, index: number) => boolean, thisArg: any): (value: T, index: number) => boolean {\n  return (value: T, index: number) => !pred.call(thisArg, value, index); \n}","import { not } from '../util/not';\nimport { filter } from './filter';\nimport { Observable } from '../Observable';\nimport { UnaryFunction } from '../types';\n\n/**\n * Splits the source Observable into two, one with values that satisfy a\n * predicate, and another with values that don't satisfy the predicate.\n *\n * <span class=\"informal\">It's like {@link filter}, but returns two Observables:\n * one like the output of {@link filter}, and the other with values that did not\n * pass the condition.</span>\n *\n * ![](partition.png)\n *\n * `partition` outputs an array with two Observables that partition the values\n * from the source Observable through the given `predicate` function. The first\n * Observable in that array emits source values for which the predicate argument\n * returns true. The second Observable emits source values for which the\n * predicate returns false. The first behaves like {@link filter} and the second\n * behaves like {@link filter} with the predicate negated.\n *\n * ## Example\n *\n * Partition click events into those on DIV elements and those elsewhere\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { partition } from 'rxjs/operators';\n *\n * const div = document.createElement('div');\n * div.style.cssText = 'width: 200px; height: 200px; background: #09c;';\n * document.body.appendChild(div);\n *\n * const clicks = fromEvent(document, 'click');\n * const [clicksOnDivs, clicksElsewhere] = clicks.pipe(partition(ev => (<HTMLElement>ev.target).tagName === 'DIV'));\n *\n * clicksOnDivs.subscribe(x => console.log('DIV clicked: ', x));\n * clicksElsewhere.subscribe(x => console.log('Other clicked: ', x));\n * ```\n *\n * @see {@link filter}\n *\n * @param predicate A function that evaluates each value emitted by the source\n * Observable. If it returns `true`, the value is emitted on the first Observable\n * in the returned array, if `false` the value is emitted on the second Observable\n * in the array. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number `0`.\n * @param thisArg An optional argument to determine the value of `this` in the\n * `predicate` function.\n * @return A function that returns an array with two Observables: one with\n * values that passed the predicate, and another with values that did not pass\n * the predicate.\n * @deprecated Replaced with the {@link partition} static creation function. Will be removed in v8.\n */\nexport function partition<T>(\n  predicate: (value: T, index: number) => boolean,\n  thisArg?: any\n): UnaryFunction<Observable<T>, [Observable<T>, Observable<T>]> {\n  return (source: Observable<T>) =>\n    [filter(predicate, thisArg)(source), filter(not(predicate, thisArg))(source)] as [Observable<T>, Observable<T>];\n}\n","import { map } from './map';\nimport { OperatorFunction } from '../types';\n\n/* tslint:disable:max-line-length */\n/** @deprecated Use {@link map} and optional chaining: `pluck('foo', 'bar')` is `map(x => x?.foo?.bar)`. Will be removed in v8. */\nexport function pluck<T, K1 extends keyof T>(k1: K1): OperatorFunction<T, T[K1]>;\n/** @deprecated Use {@link map} and optional chaining: `pluck('foo', 'bar')` is `map(x => x?.foo?.bar)`. Will be removed in v8. */\nexport function pluck<T, K1 extends keyof T, K2 extends keyof T[K1]>(k1: K1, k2: K2): OperatorFunction<T, T[K1][K2]>;\n/** @deprecated Use {@link map} and optional chaining: `pluck('foo', 'bar')` is `map(x => x?.foo?.bar)`. Will be removed in v8. */\nexport function pluck<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2]>(\n  k1: K1,\n  k2: K2,\n  k3: K3\n): OperatorFunction<T, T[K1][K2][K3]>;\n/** @deprecated Use {@link map} and optional chaining: `pluck('foo', 'bar')` is `map(x => x?.foo?.bar)`. Will be removed in v8. */\nexport function pluck<T, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2], K4 extends keyof T[K1][K2][K3]>(\n  k1: K1,\n  k2: K2,\n  k3: K3,\n  k4: K4\n): OperatorFunction<T, T[K1][K2][K3][K4]>;\n/** @deprecated Use {@link map} and optional chaining: `pluck('foo', 'bar')` is `map(x => x?.foo?.bar)`. Will be removed in v8. */\nexport function pluck<\n  T,\n  K1 extends keyof T,\n  K2 extends keyof T[K1],\n  K3 extends keyof T[K1][K2],\n  K4 extends keyof T[K1][K2][K3],\n  K5 extends keyof T[K1][K2][K3][K4]\n>(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5): OperatorFunction<T, T[K1][K2][K3][K4][K5]>;\n/** @deprecated Use {@link map} and optional chaining: `pluck('foo', 'bar')` is `map(x => x?.foo?.bar)`. Will be removed in v8. */\nexport function pluck<\n  T,\n  K1 extends keyof T,\n  K2 extends keyof T[K1],\n  K3 extends keyof T[K1][K2],\n  K4 extends keyof T[K1][K2][K3],\n  K5 extends keyof T[K1][K2][K3][K4],\n  K6 extends keyof T[K1][K2][K3][K4][K5]\n>(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6): OperatorFunction<T, T[K1][K2][K3][K4][K5][K6]>;\n/** @deprecated Use {@link map} and optional chaining: `pluck('foo', 'bar')` is `map(x => x?.foo?.bar)`. Will be removed in v8. */\nexport function pluck<\n  T,\n  K1 extends keyof T,\n  K2 extends keyof T[K1],\n  K3 extends keyof T[K1][K2],\n  K4 extends keyof T[K1][K2][K3],\n  K5 extends keyof T[K1][K2][K3][K4],\n  K6 extends keyof T[K1][K2][K3][K4][K5]\n>(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6, ...rest: string[]): OperatorFunction<T, unknown>;\n/** @deprecated Use {@link map} and optional chaining: `pluck('foo', 'bar')` is `map(x => x?.foo?.bar)`. Will be removed in v8. */\nexport function pluck<T>(...properties: string[]): OperatorFunction<T, unknown>;\n/* tslint:enable:max-line-length */\n\n/**\n * Maps each source value to its specified nested property.\n *\n * <span class=\"informal\">Like {@link map}, but meant only for picking one of\n * the nested properties of every emitted value.</span>\n *\n * ![](pluck.png)\n *\n * Given a list of strings or numbers describing a path to a property, retrieves\n * the value of a specified nested property from all values in the source\n * Observable. If a property can't be resolved, it will return `undefined` for\n * that value.\n *\n * ## Example\n *\n * Map every click to the tagName of the clicked target element\n *\n * ```ts\n * import { fromEvent, pluck } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const tagNames = clicks.pipe(pluck('target', 'tagName'));\n *\n * tagNames.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link map}\n *\n * @param properties The nested properties to pluck from each source\n * value.\n * @return A function that returns an Observable of property values from the\n * source values.\n * @deprecated Use {@link map} and optional chaining: `pluck('foo', 'bar')` is `map(x => x?.foo?.bar)`. Will be removed in v8.\n */\nexport function pluck<T, R>(...properties: Array<string | number | symbol>): OperatorFunction<T, R> {\n  const length = properties.length;\n  if (length === 0) {\n    throw new Error('list of properties cannot be empty.');\n  }\n  return map((x) => {\n    let currentProp: any = x;\n    for (let i = 0; i < length; i++) {\n      const p = currentProp?.[properties[i]];\n      if (typeof p !== 'undefined') {\n        currentProp = p;\n      } else {\n        return undefined;\n      }\n    }\n    return currentProp;\n  });\n}\n","import { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { multicast } from './multicast';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { MonoTypeOperatorFunction, OperatorFunction, UnaryFunction, ObservableInput, ObservedValueOf } from '../types';\nimport { connect } from './connect';\n\n/**\n * Returns a connectable observable that, when connected, will multicast\n * all values through a single underlying {@link Subject} instance.\n *\n * @deprecated Will be removed in v8. To create a connectable observable, use {@link connectable}.\n * `source.pipe(publish())` is equivalent to\n * `connectable(source, { connector: () => new Subject(), resetOnDisconnect: false })`.\n * If you're using {@link refCount} after `publish`, use {@link share} operator instead.\n * `source.pipe(publish(), refCount())` is equivalent to\n * `source.pipe(share({ resetOnError: false, resetOnComplete: false, resetOnRefCountZero: false }))`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function publish<T>(): UnaryFunction<Observable<T>, ConnectableObservable<T>>;\n\n/**\n * Returns an observable, that when subscribed to, creates an underlying {@link Subject},\n * provides an observable view of it to a `selector` function, takes the observable result of\n * that selector function and subscribes to it, sending its values to the consumer, _then_ connects\n * the subject to the original source.\n *\n * @param selector A function used to setup multicasting prior to automatic connection.\n *\n * @deprecated Will be removed in v8. Use the {@link connect} operator instead.\n * `publish(selector)` is equivalent to `connect(selector)`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function publish<T, O extends ObservableInput<any>>(selector: (shared: Observable<T>) => O): OperatorFunction<T, ObservedValueOf<O>>;\n\n/**\n * Returns a ConnectableObservable, which is a variety of Observable that waits until its connect method is called\n * before it begins emitting items to those Observers that have subscribed to it.\n *\n * <span class=\"informal\">Makes a cold Observable hot</span>\n *\n * ![](publish.png)\n *\n * ## Examples\n *\n * Make `source$` hot by applying `publish` operator, then merge each inner observable into a single one\n * and subscribe\n *\n * ```ts\n * import { zip, interval, of, map, publish, merge, tap } from 'rxjs';\n *\n * const source$ = zip(interval(2000), of(1, 2, 3, 4, 5, 6, 7, 8, 9))\n *   .pipe(map(([, number]) => number));\n *\n * source$\n *   .pipe(\n *     publish(multicasted$ =>\n *       merge(\n *         multicasted$.pipe(tap(x => console.log('Stream 1:', x))),\n *         multicasted$.pipe(tap(x => console.log('Stream 2:', x))),\n *         multicasted$.pipe(tap(x => console.log('Stream 3:', x)))\n *       )\n *     )\n *   )\n *   .subscribe();\n *\n * // Results every two seconds\n * // Stream 1: 1\n * // Stream 2: 1\n * // Stream 3: 1\n * // ...\n * // Stream 1: 9\n * // Stream 2: 9\n * // Stream 3: 9\n * ```\n *\n * @see {@link publishLast}\n * @see {@link publishReplay}\n * @see {@link publishBehavior}\n *\n * @param selector Optional selector function which can use the multicasted source sequence as many times\n * as needed, without causing multiple subscriptions to the source sequence.\n * Subscribers to the given source will receive all notifications of the source from the time of the subscription on.\n * @return A function that returns a ConnectableObservable that upon connection\n * causes the source Observable to emit items to its Observers.\n * @deprecated Will be removed in v8. Use the {@link connectable} observable, the {@link connect} operator or the\n * {@link share} operator instead. See the overloads below for equivalent replacement examples of this operator's\n * behaviors.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function publish<T, R>(selector?: OperatorFunction<T, R>): MonoTypeOperatorFunction<T> | OperatorFunction<T, R> {\n  return selector ? (source) => connect(selector)(source) : (source) => multicast(new Subject<T>())(source);\n}\n","import { Subject } from './Subject';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\n\n/**\n * A variant of Subject that requires an initial value and emits its current\n * value whenever it is subscribed to.\n */\nexport class BehaviorSubject<T> extends Subject<T> {\n  constructor(private _value: T) {\n    super();\n  }\n\n  get value(): T {\n    return this.getValue();\n  }\n\n  /** @internal */\n  protected _subscribe(subscriber: Subscriber<T>): Subscription {\n    const subscription = super._subscribe(subscriber);\n    !subscription.closed && subscriber.next(this._value);\n    return subscription;\n  }\n\n  getValue(): T {\n    const { hasError, thrownError, _value } = this;\n    if (hasError) {\n      throw thrownError;\n    }\n    this._throwIfClosed();\n    return _value;\n  }\n\n  next(value: T): void {\n    super.next((this._value = value));\n  }\n}\n","import { Observable } from '../Observable';\nimport { BehaviorSubject } from '../BehaviorSubject';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { UnaryFunction } from '../types';\n\n/**\n * Creates a {@link ConnectableObservable} that utilizes a {@link BehaviorSubject}.\n *\n * @param initialValue The initial value passed to the {@link BehaviorSubject}.\n * @return A function that returns a {@link ConnectableObservable}\n * @deprecated Will be removed in v8. To create a connectable observable that uses a\n * {@link BehaviorSubject} under the hood, use {@link connectable}.\n * `source.pipe(publishBehavior(initValue))` is equivalent to\n * `connectable(source, { connector: () => new BehaviorSubject(initValue), resetOnDisconnect: false })`.\n * If you're using {@link refCount} after `publishBehavior`, use the {@link share} operator instead.\n * `source.pipe(publishBehavior(initValue), refCount())` is equivalent to\n * `source.pipe(share({ connector: () => new BehaviorSubject(initValue), resetOnError: false, resetOnComplete: false, resetOnRefCountZero: false  }))`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function publishBehavior<T>(initialValue: T): UnaryFunction<Observable<T>, ConnectableObservable<T>> {\n  // Note that this has *never* supported the selector function.\n  return (source) => {\n    const subject = new BehaviorSubject<T>(initialValue);\n    return new ConnectableObservable(source, () => subject);\n  };\n}\n","import { Subject } from './Subject';\nimport { Subscriber } from './Subscriber';\n\n/**\n * A variant of Subject that only emits a value when it completes. It will emit\n * its latest value to all its observers on completion.\n */\nexport class AsyncSubject<T> extends Subject<T> {\n  private _value: T | null = null;\n  private _hasValue = false;\n  private _isComplete = false;\n\n  /** @internal */\n  protected _checkFinalizedStatuses(subscriber: Subscriber<T>) {\n    const { hasError, _hasValue, _value, thrownError, isStopped, _isComplete } = this;\n    if (hasError) {\n      subscriber.error(thrownError);\n    } else if (isStopped || _isComplete) {\n      _hasValue && subscriber.next(_value!);\n      subscriber.complete();\n    }\n  }\n\n  next(value: T): void {\n    if (!this.isStopped) {\n      this._value = value;\n      this._hasValue = true;\n    }\n  }\n\n  complete(): void {\n    const { _hasValue, _value, _isComplete } = this;\n    if (!_isComplete) {\n      this._isComplete = true;\n      _hasValue && super.next(_value!);\n      super.complete();\n    }\n  }\n}\n","import { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { UnaryFunction } from '../types';\n\n/**\n * Returns a connectable observable sequence that shares a single subscription to the\n * underlying sequence containing only the last notification.\n *\n * ![](publishLast.png)\n *\n * Similar to {@link publish}, but it waits until the source observable completes and stores\n * the last emitted value.\n * Similarly to {@link publishReplay} and {@link publishBehavior}, this keeps storing the last\n * value even if it has no more subscribers. If subsequent subscriptions happen, they will\n * immediately get that last stored value and complete.\n *\n * ## Example\n *\n * ```ts\n * import { ConnectableObservable, interval, publishLast, tap, take } from 'rxjs';\n *\n * const connectable = <ConnectableObservable<number>>interval(1000)\n *   .pipe(\n *     tap(x => console.log('side effect', x)),\n *     take(3),\n *     publishLast()\n *   );\n *\n * connectable.subscribe({\n *   next: x => console.log('Sub. A', x),\n *   error: err => console.log('Sub. A Error', err),\n *   complete: () => console.log('Sub. A Complete')\n * });\n *\n * connectable.subscribe({\n *   next: x => console.log('Sub. B', x),\n *   error: err => console.log('Sub. B Error', err),\n *   complete: () => console.log('Sub. B Complete')\n * });\n *\n * connectable.connect();\n *\n * // Results:\n * // 'side effect 0'   - after one second\n * // 'side effect 1'   - after two seconds\n * // 'side effect 2'   - after three seconds\n * // 'Sub. A 2'        - immediately after 'side effect 2'\n * // 'Sub. B 2'\n * // 'Sub. A Complete'\n * // 'Sub. B Complete'\n * ```\n *\n * @see {@link ConnectableObservable}\n * @see {@link publish}\n * @see {@link publishReplay}\n * @see {@link publishBehavior}\n *\n * @return A function that returns an Observable that emits elements of a\n * sequence produced by multicasting the source sequence.\n * @deprecated Will be removed in v8. To create a connectable observable with an\n * {@link AsyncSubject} under the hood, use {@link connectable}.\n * `source.pipe(publishLast())` is equivalent to\n * `connectable(source, { connector: () => new AsyncSubject(), resetOnDisconnect: false })`.\n * If you're using {@link refCount} after `publishLast`, use the {@link share} operator instead.\n * `source.pipe(publishLast(), refCount())` is equivalent to\n * `source.pipe(share({ connector: () => new AsyncSubject(), resetOnError: false, resetOnComplete: false, resetOnRefCountZero: false }))`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function publishLast<T>(): UnaryFunction<Observable<T>, ConnectableObservable<T>> {\n  // Note that this has *never* supported a selector function like `publish` and `publishReplay`.\n  return (source) => {\n    const subject = new AsyncSubject<T>();\n    return new ConnectableObservable(source, () => subject);\n  };\n}\n","import { Subject } from './Subject';\nimport { TimestampProvider } from './types';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\n\n/**\n * A variant of {@link Subject} that \"replays\" old values to new subscribers by emitting them when they first subscribe.\n *\n * `ReplaySubject` has an internal buffer that will store a specified number of values that it has observed. Like `Subject`,\n * `ReplaySubject` \"observes\" values by having them passed to its `next` method. When it observes a value, it will store that\n * value for a time determined by the configuration of the `ReplaySubject`, as passed to its constructor.\n *\n * When a new subscriber subscribes to the `ReplaySubject` instance, it will synchronously emit all values in its buffer in\n * a First-In-First-Out (FIFO) manner. The `ReplaySubject` will also complete, if it has observed completion; and it will\n * error if it has observed an error.\n *\n * There are two main configuration items to be concerned with:\n *\n * 1. `bufferSize` - This will determine how many items are stored in the buffer, defaults to infinite.\n * 2. `windowTime` - The amount of time to hold a value in the buffer before removing it from the buffer.\n *\n * Both configurations may exist simultaneously. So if you would like to buffer a maximum of 3 values, as long as the values\n * are less than 2 seconds old, you could do so with a `new ReplaySubject(3, 2000)`.\n *\n * ### Differences with BehaviorSubject\n *\n * `BehaviorSubject` is similar to `new ReplaySubject(1)`, with a couple of exceptions:\n *\n * 1. `BehaviorSubject` comes \"primed\" with a single value upon construction.\n * 2. `ReplaySubject` will replay values, even after observing an error, where `BehaviorSubject` will not.\n *\n * @see {@link Subject}\n * @see {@link BehaviorSubject}\n * @see {@link shareReplay}\n */\nexport class ReplaySubject<T> extends Subject<T> {\n  private _buffer: (T | number)[] = [];\n  private _infiniteTimeWindow = true;\n\n  /**\n   * @param _bufferSize The size of the buffer to replay on subscription\n   * @param _windowTime The amount of time the buffered items will stay buffered\n   * @param _timestampProvider An object with a `now()` method that provides the current timestamp. This is used to\n   * calculate the amount of time something has been buffered.\n   */\n  constructor(\n    private _bufferSize = Infinity,\n    private _windowTime = Infinity,\n    private _timestampProvider: TimestampProvider = dateTimestampProvider\n  ) {\n    super();\n    this._infiniteTimeWindow = _windowTime === Infinity;\n    this._bufferSize = Math.max(1, _bufferSize);\n    this._windowTime = Math.max(1, _windowTime);\n  }\n\n  next(value: T): void {\n    const { isStopped, _buffer, _infiniteTimeWindow, _timestampProvider, _windowTime } = this;\n    if (!isStopped) {\n      _buffer.push(value);\n      !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n    }\n    this._trimBuffer();\n    super.next(value);\n  }\n\n  /** @internal */\n  protected _subscribe(subscriber: Subscriber<T>): Subscription {\n    this._throwIfClosed();\n    this._trimBuffer();\n\n    const subscription = this._innerSubscribe(subscriber);\n\n    const { _infiniteTimeWindow, _buffer } = this;\n    // We use a copy here, so reentrant code does not mutate our array while we're\n    // emitting it to a new subscriber.\n    const copy = _buffer.slice();\n    for (let i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n      subscriber.next(copy[i] as T);\n    }\n\n    this._checkFinalizedStatuses(subscriber);\n\n    return subscription;\n  }\n\n  private _trimBuffer() {\n    const { _bufferSize, _timestampProvider, _buffer, _infiniteTimeWindow } = this;\n    // If we don't have an infinite buffer size, and we're over the length,\n    // use splice to truncate the old buffer values off. Note that we have to\n    // double the size for instances where we're not using an infinite time window\n    // because we're storing the values and the timestamps in the same array.\n    const adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n    _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n\n    // Now, if we're not in an infinite time window, remove all values where the time is\n    // older than what is allowed.\n    if (!_infiniteTimeWindow) {\n      const now = _timestampProvider.now();\n      let last = 0;\n      // Search the array for the first timestamp that isn't expired and\n      // truncate the buffer up to that point.\n      for (let i = 1; i < _buffer.length && (_buffer[i] as number) <= now; i += 2) {\n        last = i;\n      }\n      last && _buffer.splice(0, last + 1);\n    }\n  }\n}\n","import { Observable } from '../Observable';\nimport { ReplaySubject } from '../ReplaySubject';\nimport { multicast } from './multicast';\nimport { MonoTypeOperatorFunction, OperatorFunction, TimestampProvider, ObservableInput, ObservedValueOf } from '../types';\nimport { isFunction } from '../util/isFunction';\n\n/**\n * Creates a {@link ConnectableObservable} that uses a {@link ReplaySubject}\n * internally.\n *\n * @param bufferSize The buffer size for the underlying {@link ReplaySubject}.\n * @param windowTime The window time for the underlying {@link ReplaySubject}.\n * @param timestampProvider The timestamp provider for the underlying {@link ReplaySubject}.\n * @deprecated Will be removed in v8. To create a connectable observable that uses a\n * {@link ReplaySubject} under the hood, use {@link connectable}.\n * `source.pipe(publishReplay(size, time, scheduler))` is equivalent to\n * `connectable(source, { connector: () => new ReplaySubject(size, time, scheduler), resetOnDisconnect: false })`.\n * If you're using {@link refCount} after `publishReplay`, use the {@link share} operator instead.\n * `publishReplay(size, time, scheduler), refCount()` is equivalent to\n * `share({ connector: () => new ReplaySubject(size, time, scheduler), resetOnError: false, resetOnComplete: false, resetOnRefCountZero: false })`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function publishReplay<T>(\n  bufferSize?: number,\n  windowTime?: number,\n  timestampProvider?: TimestampProvider\n): MonoTypeOperatorFunction<T>;\n\n/**\n * Creates an observable, that when subscribed to, will create a {@link ReplaySubject},\n * and pass an observable from it (using [asObservable](api/index/class/Subject#asObservable)) to\n * the `selector` function, which then returns an observable that is subscribed to before\n * \"connecting\" the source to the internal `ReplaySubject`.\n *\n * Since this is deprecated, for additional details see the documentation for {@link connect}.\n *\n * @param bufferSize The buffer size for the underlying {@link ReplaySubject}.\n * @param windowTime The window time for the underlying {@link ReplaySubject}.\n * @param selector A function used to setup the multicast.\n * @param timestampProvider The timestamp provider for the underlying {@link ReplaySubject}.\n * @deprecated Will be removed in v8. Use the {@link connect} operator instead.\n * `source.pipe(publishReplay(size, window, selector, scheduler))` is equivalent to\n * `source.pipe(connect(selector, { connector: () => new ReplaySubject(size, window, scheduler) }))`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function publishReplay<T, O extends ObservableInput<any>>(\n  bufferSize: number | undefined,\n  windowTime: number | undefined,\n  selector: (shared: Observable<T>) => O,\n  timestampProvider?: TimestampProvider\n): OperatorFunction<T, ObservedValueOf<O>>;\n\n/**\n * Creates a {@link ConnectableObservable} that uses a {@link ReplaySubject}\n * internally.\n *\n * @param bufferSize The buffer size for the underlying {@link ReplaySubject}.\n * @param windowTime The window time for the underlying {@link ReplaySubject}.\n * @param selector Passing `undefined` here determines that this operator will return a {@link ConnectableObservable}.\n * @param timestampProvider The timestamp provider for the underlying {@link ReplaySubject}.\n * @deprecated Will be removed in v8. To create a connectable observable that uses a\n * {@link ReplaySubject} under the hood, use {@link connectable}.\n * `source.pipe(publishReplay(size, time, scheduler))` is equivalent to\n * `connectable(source, { connector: () => new ReplaySubject(size, time, scheduler), resetOnDisconnect: false })`.\n * If you're using {@link refCount} after `publishReplay`, use the {@link share} operator instead.\n * `publishReplay(size, time, scheduler), refCount()` is equivalent to\n * `share({ connector: () => new ReplaySubject(size, time, scheduler), resetOnError: false, resetOnComplete: false, resetOnRefCountZero: false })`.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function publishReplay<T, O extends ObservableInput<any>>(\n  bufferSize: number | undefined,\n  windowTime: number | undefined,\n  selector: undefined,\n  timestampProvider: TimestampProvider\n): OperatorFunction<T, ObservedValueOf<O>>;\n\n/**\n * @deprecated Will be removed in v8. Use the {@link connectable} observable, the {@link connect} operator or the\n * {@link share} operator instead. See the overloads below for equivalent replacement examples of this operator's\n * behaviors.\n * Details: https://rxjs.dev/deprecations/multicasting\n */\nexport function publishReplay<T, R>(\n  bufferSize?: number,\n  windowTime?: number,\n  selectorOrScheduler?: TimestampProvider | OperatorFunction<T, R>,\n  timestampProvider?: TimestampProvider\n) {\n  if (selectorOrScheduler && !isFunction(selectorOrScheduler)) {\n    timestampProvider = selectorOrScheduler;\n  }\n  const selector = isFunction(selectorOrScheduler) ? selectorOrScheduler : undefined;\n  // Note, we're passing `selector!` here, because at runtime, `undefined` is an acceptable argument\n  // but it makes our TypeScript signature for `multicast` unhappy (as it should, because it's gross).\n  return (source: Observable<T>) => multicast(new ReplaySubject<T>(bufferSize, windowTime, timestampProvider), selector!)(source);\n}\n","import { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\nimport { Subscription } from '../Subscription';\nimport { ObservableInput, ObservableInputTuple } from '../types';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { Subscriber } from '../Subscriber';\n\nexport function race<T extends readonly unknown[]>(inputs: [...ObservableInputTuple<T>]): Observable<T[number]>;\nexport function race<T extends readonly unknown[]>(...inputs: [...ObservableInputTuple<T>]): Observable<T[number]>;\n\n/**\n * Returns an observable that mirrors the first source observable to emit an item.\n *\n * ![](race.png)\n *\n * `race` returns an observable, that when subscribed to, subscribes to all source observables immediately.\n * As soon as one of the source observables emits a value, the result unsubscribes from the other sources.\n * The resulting observable will forward all notifications, including error and completion, from the \"winning\"\n * source observable.\n *\n * If one of the used source observable throws an errors before a first notification\n * the race operator will also throw an error, no matter if another source observable\n * could potentially win the race.\n *\n * `race` can be useful for selecting the response from the fastest network connection for\n * HTTP or WebSockets. `race` can also be useful for switching observable context based on user\n * input.\n *\n * ## Example\n *\n * Subscribes to the observable that was the first to start emitting.\n *\n * ```ts\n * import { interval, map, race } from 'rxjs';\n *\n * const obs1 = interval(7000).pipe(map(() => 'slow one'));\n * const obs2 = interval(3000).pipe(map(() => 'fast one'));\n * const obs3 = interval(5000).pipe(map(() => 'medium one'));\n *\n * race(obs1, obs2, obs3)\n *   .subscribe(winner => console.log(winner));\n *\n * // Outputs\n * // a series of 'fast one'\n * ```\n *\n * @param sources Used to race for which `ObservableInput` emits first.\n * @return An Observable that mirrors the output of the first Observable to emit an item.\n */\nexport function race<T>(...sources: (ObservableInput<T> | ObservableInput<T>[])[]): Observable<any> {\n  sources = argsOrArgArray(sources);\n  // If only one source was passed, just return it. Otherwise return the race.\n  return sources.length === 1 ? innerFrom(sources[0] as ObservableInput<T>) : new Observable<T>(raceInit(sources as ObservableInput<T>[]));\n}\n\n/**\n * An observable initializer function for both the static version and the\n * operator version of race.\n * @param sources The sources to race\n */\nexport function raceInit<T>(sources: ObservableInput<T>[]) {\n  return (subscriber: Subscriber<T>) => {\n    let subscriptions: Subscription[] = [];\n\n    // Subscribe to all of the sources. Note that we are checking `subscriptions` here\n    // Is is an array of all actively \"racing\" subscriptions, and it is `null` after the\n    // race has been won. So, if we have racer that synchronously \"wins\", this loop will\n    // stop before it subscribes to any more.\n    for (let i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) {\n      subscriptions.push(\n        innerFrom(sources[i] as ObservableInput<T>).subscribe(\n          createOperatorSubscriber(subscriber, (value) => {\n            if (subscriptions) {\n              // We're still racing, but we won! So unsubscribe\n              // all other subscriptions that we have, except this one.\n              for (let s = 0; s < subscriptions.length; s++) {\n                s !== i && subscriptions[s].unsubscribe();\n              }\n              subscriptions = null!;\n            }\n            subscriber.next(value);\n          })\n        )\n      );\n    }\n  };\n}\n","import { OperatorFunction, ObservableInputTuple } from '../types';\nimport { raceInit } from '../observable/race';\nimport { operate } from '../util/lift';\nimport { identity } from '../util/identity';\n\n/**\n * Creates an Observable that mirrors the first source Observable to emit a next,\n * error or complete notification from the combination of the Observable to which\n * the operator is applied and supplied Observables.\n *\n * ## Example\n *\n * ```ts\n * import { interval, map, raceWith } from 'rxjs';\n *\n * const obs1 = interval(7000).pipe(map(() => 'slow one'));\n * const obs2 = interval(3000).pipe(map(() => 'fast one'));\n * const obs3 = interval(5000).pipe(map(() => 'medium one'));\n *\n * obs1\n *   .pipe(raceWith(obs2, obs3))\n *   .subscribe(winner => console.log(winner));\n *\n * // Outputs\n * // a series of 'fast one'\n * ```\n *\n * @param otherSources Sources used to race for which Observable emits first.\n * @return A function that returns an Observable that mirrors the output of the\n * first Observable to emit an item.\n */\nexport function raceWith<T, A extends readonly unknown[]>(\n  ...otherSources: [...ObservableInputTuple<A>]\n): OperatorFunction<T, T | A[number]> {\n  return !otherSources.length\n    ? identity\n    : operate((source, subscriber) => {\n        raceInit<T | A[number]>([source, ...otherSources])(subscriber);\n      });\n}\n","import { ObservableInputTuple, OperatorFunction } from '../types';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { raceWith } from './raceWith';\n\n/** @deprecated Replaced with {@link raceWith}. Will be removed in v8. */\nexport function race<T, A extends readonly unknown[]>(otherSources: [...ObservableInputTuple<A>]): OperatorFunction<T, T | A[number]>;\n/** @deprecated Replaced with {@link raceWith}. Will be removed in v8. */\nexport function race<T, A extends readonly unknown[]>(...otherSources: [...ObservableInputTuple<A>]): OperatorFunction<T, T | A[number]>;\n\n/**\n * Returns an Observable that mirrors the first source Observable to emit a next,\n * error or complete notification from the combination of this Observable and supplied Observables.\n * @param args Sources used to race for which Observable emits first.\n * @return A function that returns an Observable that mirrors the output of the\n * first Observable to emit an item.\n * @deprecated Replaced with {@link raceWith}. Will be removed in v8.\n */\nexport function race<T>(...args: any[]): OperatorFunction<T, unknown> {\n  return raceWith(...argsOrArgArray(args));\n}\n","import { Subscription } from '../Subscription';\nimport { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { timer } from '../observable/timer';\n\nexport interface RepeatConfig {\n  /**\n   * The number of times to repeat the source. Defaults to `Infinity`.\n   */\n  count?: number;\n\n  /**\n   * If a `number`, will delay the repeat of the source by that number of milliseconds.\n   * If a function, it will provide the number of times the source has been subscribed to,\n   * and the return value should be a valid observable input that will notify when the source\n   * should be repeated. If the notifier observable is empty, the result will complete.\n   */\n  delay?: number | ((count: number) => ObservableInput<any>);\n}\n\n/**\n * Returns an Observable that will resubscribe to the source stream when the source stream completes.\n *\n * <span class=\"informal\">Repeats all values emitted on the source. It's like {@link retry}, but for non error cases.</span>\n *\n * ![](repeat.png)\n *\n * Repeat will output values from a source until the source completes, then it will resubscribe to the\n * source a specified number of times, with a specified delay. Repeat can be particularly useful in\n * combination with closing operators like {@link take}, {@link takeUntil}, {@link first}, or {@link takeWhile},\n * as it can be used to restart a source again from scratch.\n *\n * Repeat is very similar to {@link retry}, where {@link retry} will resubscribe to the source in the error case, but\n * `repeat` will resubscribe if the source completes.\n *\n * Note that `repeat` will _not_ catch errors. Use {@link retry} for that.\n *\n * - `repeat(0)` returns an empty observable\n * - `repeat()` will repeat forever\n * - `repeat({ delay: 200 })` will repeat forever, with a delay of 200ms between repetitions.\n * - `repeat({ count: 2, delay: 400 })` will repeat twice, with a delay of 400ms between repetitions.\n * - `repeat({ delay: (count) => timer(count * 1000) })` will repeat forever, but will have a delay that grows by one second for each repetition.\n *\n * ## Example\n *\n * Repeat a message stream\n *\n * ```ts\n * import { of, repeat } from 'rxjs';\n *\n * const source = of('Repeat message');\n * const result = source.pipe(repeat(3));\n *\n * result.subscribe(x => console.log(x));\n *\n * // Results\n * // 'Repeat message'\n * // 'Repeat message'\n * // 'Repeat message'\n * ```\n *\n * Repeat 3 values, 2 times\n *\n * ```ts\n * import { interval, take, repeat } from 'rxjs';\n *\n * const source = interval(1000);\n * const result = source.pipe(take(3), repeat(2));\n *\n * result.subscribe(x => console.log(x));\n *\n * // Results every second\n * // 0\n * // 1\n * // 2\n * // 0\n * // 1\n * // 2\n * ```\n *\n * Defining two complex repeats with delays on the same source.\n * Note that the second repeat cannot be called until the first\n * repeat as exhausted it's count.\n *\n * ```ts\n * import { defer, of, repeat } from 'rxjs';\n *\n * const source = defer(() => {\n *    return of(`Hello, it is ${new Date()}`)\n * });\n *\n * source.pipe(\n *    // Repeat 3 times with a delay of 1 second between repetitions\n *    repeat({\n *      count: 3,\n *      delay: 1000,\n *    }),\n *\n *    // *Then* repeat forever, but with an exponential step-back\n *    // maxing out at 1 minute.\n *    repeat({\n *      delay: (count) => timer(Math.min(60000, 2 ^ count * 1000))\n *    })\n * )\n * ```\n *\n * @see {@link repeatWhen}\n * @see {@link retry}\n *\n * @param countOrConfig Either the number of times the source Observable items are repeated\n * (a count of 0 will yield an empty Observable) or a {@link RepeatConfig} object.\n */\nexport function repeat<T>(countOrConfig?: number | RepeatConfig): MonoTypeOperatorFunction<T> {\n  let count = Infinity;\n  let delay: RepeatConfig['delay'];\n\n  if (countOrConfig != null) {\n    if (typeof countOrConfig === 'object') {\n      ({ count = Infinity, delay } = countOrConfig);\n    } else {\n      count = countOrConfig;\n    }\n  }\n\n  return count <= 0\n    ? () => EMPTY\n    : operate((source, subscriber) => {\n        let soFar = 0;\n        let sourceSub: Subscription | null;\n\n        const resubscribe = () => {\n          sourceSub?.unsubscribe();\n          sourceSub = null;\n          if (delay != null) {\n            const notifier = typeof delay === 'number' ? timer(delay) : innerFrom(delay(soFar));\n            const notifierSubscriber = createOperatorSubscriber(subscriber, () => {\n              notifierSubscriber.unsubscribe();\n              subscribeToSource();\n            });\n            notifier.subscribe(notifierSubscriber);\n          } else {\n            subscribeToSource();\n          }\n        };\n\n        const subscribeToSource = () => {\n          let syncUnsub = false;\n          sourceSub = source.subscribe(\n            createOperatorSubscriber(subscriber, undefined, () => {\n              if (++soFar < count) {\n                if (sourceSub) {\n                  resubscribe();\n                } else {\n                  syncUnsub = true;\n                }\n              } else {\n                subscriber.complete();\n              }\n            })\n          );\n\n          if (syncUnsub) {\n            resubscribe();\n          }\n        };\n\n        subscribeToSource();\n      });\n}\n","import { Observable } from '../Observable';\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\n\nimport { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Returns an Observable that mirrors the source Observable with the exception of a `complete`. If the source\n * Observable calls `complete`, this method will emit to the Observable returned from `notifier`. If that Observable\n * calls `complete` or `error`, then this method will call `complete` or `error` on the child subscription. Otherwise\n * this method will resubscribe to the source Observable.\n *\n * ![](repeatWhen.png)\n *\n * ## Example\n *\n * Repeat a message stream on click\n *\n * ```ts\n * import { of, fromEvent, repeatWhen } from 'rxjs';\n *\n * const source = of('Repeat message');\n * const documentClick$ = fromEvent(document, 'click');\n *\n * const result = source.pipe(repeatWhen(() => documentClick$));\n *\n * result.subscribe(data => console.log(data))\n * ```\n *\n * @see {@link repeat}\n * @see {@link retry}\n * @see {@link retryWhen}\n *\n * @param notifier Function that receives an Observable of notifications with\n * which a user can `complete` or `error`, aborting the repetition.\n * @return A function that returns an Observable that mirrors the source\n * Observable with the exception of a `complete`.\n * @deprecated Will be removed in v9 or v10. Use {@link repeat}'s {@link RepeatConfig#delay delay} option instead.\n * Instead of `repeatWhen(() => notify$)`, use: `repeat({ delay: () => notify$ })`.\n */\nexport function repeatWhen<T>(notifier: (notifications: Observable<void>) => ObservableInput<any>): MonoTypeOperatorFunction<T> {\n  return operate((source, subscriber) => {\n    let innerSub: Subscription | null;\n    let syncResub = false;\n    let completions$: Subject<void>;\n    let isNotifierComplete = false;\n    let isMainComplete = false;\n\n    /**\n     * Checks to see if we can complete the result, completes it, and returns `true` if it was completed.\n     */\n    const checkComplete = () => isMainComplete && isNotifierComplete && (subscriber.complete(), true);\n    /**\n     * Gets the subject to send errors through. If it doesn't exist,\n     * we know we need to setup the notifier.\n     */\n    const getCompletionSubject = () => {\n      if (!completions$) {\n        completions$ = new Subject();\n\n        // If the call to `notifier` throws, it will be caught by the OperatorSubscriber\n        // In the main subscription -- in `subscribeForRepeatWhen`.\n        innerFrom(notifier(completions$)).subscribe(\n          createOperatorSubscriber(\n            subscriber,\n            () => {\n              if (innerSub) {\n                subscribeForRepeatWhen();\n              } else {\n                // If we don't have an innerSub yet, that's because the inner subscription\n                // call hasn't even returned yet. We've arrived here synchronously.\n                // So we flag that we want to resub, such that we can ensure finalization\n                // happens before we resubscribe.\n                syncResub = true;\n              }\n            },\n            () => {\n              isNotifierComplete = true;\n              checkComplete();\n            }\n          )\n        );\n      }\n      return completions$;\n    };\n\n    const subscribeForRepeatWhen = () => {\n      isMainComplete = false;\n\n      innerSub = source.subscribe(\n        createOperatorSubscriber(subscriber, undefined, () => {\n          isMainComplete = true;\n          // Check to see if we are complete, and complete if so.\n          // If we are not complete. Get the subject. This calls the `notifier` function.\n          // If that function fails, it will throw and `.next()` will not be reached on this\n          // line. The thrown error is caught by the _complete handler in this\n          // `OperatorSubscriber` and handled appropriately.\n          !checkComplete() && getCompletionSubject().next();\n        })\n      );\n\n      if (syncResub) {\n        // Ensure that the inner subscription is torn down before\n        // moving on to the next subscription in the synchronous case.\n        // If we don't do this here, all inner subscriptions will not be\n        // torn down until the entire observable is done.\n        innerSub.unsubscribe();\n        // It is important to null this out. Not only to free up memory, but\n        // to make sure code above knows we are in a subscribing state to\n        // handle synchronous resubscription.\n        innerSub = null;\n        // We may need to do this multiple times, so reset the flags.\n        syncResub = false;\n        // Resubscribe\n        subscribeForRepeatWhen();\n      }\n    };\n\n    // Start the subscription\n    subscribeForRepeatWhen();\n  });\n}\n","import { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { Subscription } from '../Subscription';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nimport { timer } from '../observable/timer';\nimport { innerFrom } from '../observable/innerFrom';\n\n/**\n * The {@link retry} operator configuration object. `retry` either accepts a `number`\n * or an object described by this interface.\n */\nexport interface RetryConfig {\n  /**\n   * The maximum number of times to retry. If `count` is omitted, `retry` will try to\n   * resubscribe on errors infinite number of times.\n   */\n  count?: number;\n  /**\n   * The number of milliseconds to delay before retrying, OR a function to\n   * return a notifier for delaying. If a function is given, that function should\n   * return a notifier that, when it emits will retry the source. If the notifier\n   * completes _without_ emitting, the resulting observable will complete without error,\n   * if the notifier errors, the error will be pushed to the result.\n   */\n  delay?: number | ((error: any, retryCount: number) => ObservableInput<any>);\n  /**\n   * Whether or not to reset the retry counter when the retried subscription\n   * emits its first value.\n   */\n  resetOnSuccess?: boolean;\n}\n\nexport function retry<T>(count?: number): MonoTypeOperatorFunction<T>;\nexport function retry<T>(config: RetryConfig): MonoTypeOperatorFunction<T>;\n\n/**\n * Returns an Observable that mirrors the source Observable with the exception of an `error`.\n *\n * If the source Observable calls `error`, this method will resubscribe to the source Observable for a maximum of\n * `count` resubscriptions rather than propagating the `error` call.\n *\n * ![](retry.png)\n *\n * The number of retries is determined by the `count` parameter. It can be set either by passing a number to\n * `retry` function or by setting `count` property when `retry` is configured using {@link RetryConfig}. If\n * `count` is omitted, `retry` will try to resubscribe on errors infinite number of times.\n *\n * Any and all items emitted by the source Observable will be emitted by the resulting Observable, even those\n * emitted during failed subscriptions. For example, if an Observable fails at first but emits `[1, 2]` then\n * succeeds the second time and emits: `[1, 2, 3, 4, 5, complete]` then the complete stream of emissions and\n * notifications would be: `[1, 2, 1, 2, 3, 4, 5, complete]`.\n *\n * ## Example\n *\n * ```ts\n * import { interval, mergeMap, throwError, of, retry } from 'rxjs';\n *\n * const source = interval(1000);\n * const result = source.pipe(\n *   mergeMap(val => val > 5 ? throwError(() => 'Error!') : of(val)),\n *   retry(2) // retry 2 times on error\n * );\n *\n * result.subscribe({\n *   next: value => console.log(value),\n *   error: err => console.log(`${ err }: Retried 2 times then quit!`)\n * });\n *\n * // Output:\n * // 0..1..2..3..4..5..\n * // 0..1..2..3..4..5..\n * // 0..1..2..3..4..5..\n * // 'Error!: Retried 2 times then quit!'\n * ```\n *\n * @see {@link retryWhen}\n *\n * @param configOrCount Either number of retry attempts before failing or a\n * {@link RetryConfig} object.\n * @return A function that returns an Observable that will resubscribe to the\n * source stream when the source stream errors, at most `count` times.\n */\nexport function retry<T>(configOrCount: number | RetryConfig = Infinity): MonoTypeOperatorFunction<T> {\n  let config: RetryConfig;\n  if (configOrCount && typeof configOrCount === 'object') {\n    config = configOrCount;\n  } else {\n    config = {\n      count: configOrCount as number,\n    };\n  }\n  const { count = Infinity, delay, resetOnSuccess: resetOnSuccess = false } = config;\n\n  return count <= 0\n    ? identity\n    : operate((source, subscriber) => {\n        let soFar = 0;\n        let innerSub: Subscription | null;\n        const subscribeForRetry = () => {\n          let syncUnsub = false;\n          innerSub = source.subscribe(\n            createOperatorSubscriber(\n              subscriber,\n              (value) => {\n                // If we're resetting on success\n                if (resetOnSuccess) {\n                  soFar = 0;\n                }\n                subscriber.next(value);\n              },\n              // Completions are passed through to consumer.\n              undefined,\n              (err) => {\n                if (soFar++ < count) {\n                  // We are still under our retry count\n                  const resub = () => {\n                    if (innerSub) {\n                      innerSub.unsubscribe();\n                      innerSub = null;\n                      subscribeForRetry();\n                    } else {\n                      syncUnsub = true;\n                    }\n                  };\n\n                  if (delay != null) {\n                    // The user specified a retry delay.\n                    // They gave us a number, use a timer, otherwise, it's a function,\n                    // and we're going to call it to get a notifier.\n                    const notifier = typeof delay === 'number' ? timer(delay) : innerFrom(delay(err, soFar));\n                    const notifierSubscriber = createOperatorSubscriber(\n                      subscriber,\n                      () => {\n                        // After we get the first notification, we\n                        // unsubscribe from the notifier, because we don't want anymore\n                        // and we resubscribe to the source.\n                        notifierSubscriber.unsubscribe();\n                        resub();\n                      },\n                      () => {\n                        // The notifier completed without emitting.\n                        // The author is telling us they want to complete.\n                        subscriber.complete();\n                      }\n                    );\n                    notifier.subscribe(notifierSubscriber);\n                  } else {\n                    // There was no notifier given. Just resub immediately.\n                    resub();\n                  }\n                } else {\n                  // We're past our maximum number of retries.\n                  // Just send along the error.\n                  subscriber.error(err);\n                }\n              }\n            )\n          );\n          if (syncUnsub) {\n            innerSub.unsubscribe();\n            innerSub = null;\n            subscribeForRetry();\n          }\n        };\n        subscribeForRetry();\n      });\n}\n","import { Observable } from '../Observable';\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\n\nimport { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Returns an Observable that mirrors the source Observable with the exception of an `error`. If the source Observable\n * calls `error`, this method will emit the Throwable that caused the error to the `ObservableInput` returned from `notifier`.\n * If that Observable calls `complete` or `error` then this method will call `complete` or `error` on the child\n * subscription. Otherwise this method will resubscribe to the source Observable.\n *\n * ![](retryWhen.png)\n *\n * Retry an observable sequence on error based on custom criteria.\n *\n * ## Example\n *\n * ```ts\n * import { interval, map, retryWhen, tap, delayWhen, timer } from 'rxjs';\n *\n * const source = interval(1000);\n * const result = source.pipe(\n *   map(value => {\n *     if (value > 5) {\n *       // error will be picked up by retryWhen\n *       throw value;\n *     }\n *     return value;\n *   }),\n *   retryWhen(errors =>\n *     errors.pipe(\n *       // log error message\n *       tap(value => console.log(`Value ${ value } was too high!`)),\n *       // restart in 5 seconds\n *       delayWhen(value => timer(value * 1000))\n *     )\n *   )\n * );\n *\n * result.subscribe(value => console.log(value));\n *\n * // results:\n * // 0\n * // 1\n * // 2\n * // 3\n * // 4\n * // 5\n * // 'Value 6 was too high!'\n * // - Wait 5 seconds then repeat\n * ```\n *\n * @see {@link retry}\n *\n * @param notifier Function that receives an Observable of notifications with which a\n * user can `complete` or `error`, aborting the retry.\n * @return A function that returns an Observable that mirrors the source\n * Observable with the exception of an `error`.\n * @deprecated Will be removed in v9 or v10, use {@link retry}'s `delay` option instead.\n * Will be removed in v9 or v10. Use {@link retry}'s {@link RetryConfig#delay delay} option instead.\n * Instead of `retryWhen(() => notify$)`, use: `retry({ delay: () => notify$ })`.\n */\nexport function retryWhen<T>(notifier: (errors: Observable<any>) => ObservableInput<any>): MonoTypeOperatorFunction<T> {\n  return operate((source, subscriber) => {\n    let innerSub: Subscription | null;\n    let syncResub = false;\n    let errors$: Subject<any>;\n\n    const subscribeForRetryWhen = () => {\n      innerSub = source.subscribe(\n        createOperatorSubscriber(subscriber, undefined, undefined, (err) => {\n          if (!errors$) {\n            errors$ = new Subject();\n            innerFrom(notifier(errors$)).subscribe(\n              createOperatorSubscriber(subscriber, () =>\n                // If we have an innerSub, this was an asynchronous call, kick off the retry.\n                // Otherwise, if we don't have an innerSub yet, that's because the inner subscription\n                // call hasn't even returned yet. We've arrived here synchronously.\n                // So we flag that we want to resub, such that we can ensure finalization\n                // happens before we resubscribe.\n                innerSub ? subscribeForRetryWhen() : (syncResub = true)\n              )\n            );\n          }\n          if (errors$) {\n            // We have set up the notifier without error.\n            errors$.next(err);\n          }\n        })\n      );\n\n      if (syncResub) {\n        // Ensure that the inner subscription is torn down before\n        // moving on to the next subscription in the synchronous case.\n        // If we don't do this here, all inner subscriptions will not be\n        // torn down until the entire observable is done.\n        innerSub.unsubscribe();\n        innerSub = null;\n        // We may need to do this multiple times, so reset the flag.\n        syncResub = false;\n        // Resubscribe\n        subscribeForRetryWhen();\n      }\n    };\n\n    // Start the subscription\n    subscribeForRetryWhen();\n  });\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Emits the most recently emitted value from the source Observable whenever\n * another Observable, the `notifier`, emits.\n *\n * <span class=\"informal\">It's like {@link sampleTime}, but samples whenever\n * the `notifier` `ObservableInput` emits something.</span>\n *\n * ![](sample.png)\n *\n * Whenever the `notifier` `ObservableInput` emits a value, `sample`\n * looks at the source Observable and emits whichever value it has most recently\n * emitted since the previous sampling, unless the source has not emitted\n * anything since the previous sampling. The `notifier` is subscribed to as soon\n * as the output Observable is subscribed.\n *\n * ## Example\n *\n * On every click, sample the most recent `seconds` timer\n *\n * ```ts\n * import { fromEvent, interval, sample } from 'rxjs';\n *\n * const seconds = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const result = seconds.pipe(sample(clicks));\n *\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounce}\n * @see {@link sampleTime}\n * @see {@link throttle}\n *\n * @param notifier The `ObservableInput` to use for sampling the\n * source Observable.\n * @return A function that returns an Observable that emits the results of\n * sampling the values emitted by the source Observable whenever the notifier\n * Observable emits value or completes.\n */\nexport function sample<T>(notifier: ObservableInput<any>): MonoTypeOperatorFunction<T> {\n  return operate((source, subscriber) => {\n    let hasValue = false;\n    let lastValue: T | null = null;\n    source.subscribe(\n      createOperatorSubscriber(subscriber, (value) => {\n        hasValue = true;\n        lastValue = value;\n      })\n    );\n    innerFrom(notifier).subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        () => {\n          if (hasValue) {\n            hasValue = false;\n            const value = lastValue!;\n            lastValue = null;\n            subscriber.next(value);\n          }\n        },\n        noop\n      )\n    );\n  });\n}\n","import { Observable } from '../Observable';\nimport { asyncScheduler } from '../scheduler/async';\nimport { SchedulerLike } from '../types';\nimport { timer } from './timer';\n\n/**\n * Creates an Observable that emits sequential numbers every specified\n * interval of time, on a specified {@link SchedulerLike}.\n *\n * <span class=\"informal\">Emits incremental numbers periodically in time.</span>\n *\n * ![](interval.png)\n *\n * `interval` returns an Observable that emits an infinite sequence of\n * ascending integers, with a constant interval of time of your choosing\n * between those emissions. The first emission is not sent immediately, but\n * only after the first period has passed. By default, this operator uses the\n * `async` {@link SchedulerLike} to provide a notion of time, but you may pass any\n * {@link SchedulerLike} to it.\n *\n * ## Example\n *\n * Emits ascending numbers, one every second (1000ms) up to the number 3\n *\n * ```ts\n * import { interval, take } from 'rxjs';\n *\n * const numbers = interval(1000);\n *\n * const takeFourNumbers = numbers.pipe(take(4));\n *\n * takeFourNumbers.subscribe(x => console.log('Next: ', x));\n *\n * // Logs:\n * // Next: 0\n * // Next: 1\n * // Next: 2\n * // Next: 3\n * ```\n *\n * @see {@link timer}\n * @see {@link delay}\n *\n * @param period The interval size in milliseconds (by default) or the time unit determined\n * by the scheduler's clock.\n * @param scheduler The {@link SchedulerLike} to use for scheduling the emission of values,\n * and providing a notion of \"time\".\n * @return An Observable that emits a sequential number each time interval.\n */\nexport function interval(period = 0, scheduler: SchedulerLike = asyncScheduler): Observable<number> {\n  if (period < 0) {\n    // We cannot schedule an interval in the past.\n    period = 0;\n  }\n\n  return timer(period, period, scheduler);\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { sample } from './sample';\nimport { interval } from '../observable/interval';\n\n/**\n * Emits the most recently emitted value from the source Observable within\n * periodic time intervals.\n *\n * <span class=\"informal\">Samples the source Observable at periodic time\n * intervals, emitting what it samples.</span>\n *\n * ![](sampleTime.png)\n *\n * `sampleTime` periodically looks at the source Observable and emits whichever\n * value it has most recently emitted since the previous sampling, unless the\n * source has not emitted anything since the previous sampling. The sampling\n * happens periodically in time every `period` milliseconds (or the time unit\n * defined by the optional `scheduler` argument). The sampling starts as soon as\n * the output Observable is subscribed.\n *\n * ## Example\n *\n * Every second, emit the most recent click at most once\n *\n * ```ts\n * import { fromEvent, sampleTime } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(sampleTime(1000));\n *\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link auditTime}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sample}\n * @see {@link throttleTime}\n *\n * @param period The sampling period expressed in milliseconds or the time unit\n * determined internally by the optional `scheduler`.\n * @param scheduler The {@link SchedulerLike} to use for managing the timers\n * that handle the sampling.\n * @return A function that returns an Observable that emits the results of\n * sampling the values emitted by the source Observable at the specified time\n * interval.\n */\nexport function sampleTime<T>(period: number, scheduler: SchedulerLike = asyncScheduler): MonoTypeOperatorFunction<T> {\n  return sample(interval(period, scheduler));\n}\n","import { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { scanInternals } from './scanInternals';\n\nexport function scan<V, A = V>(accumulator: (acc: A | V, value: V, index: number) => A): OperatorFunction<V, V | A>;\nexport function scan<V, A>(accumulator: (acc: A, value: V, index: number) => A, seed: A): OperatorFunction<V, A>;\nexport function scan<V, A, S>(accumulator: (acc: A | S, value: V, index: number) => A, seed: S): OperatorFunction<V, A>;\n\n// TODO: link to a \"redux pattern\" section in the guide (location TBD)\n\n/**\n * Useful for encapsulating and managing state. Applies an accumulator (or \"reducer function\")\n * to each value from the source after an initial state is established -- either via\n * a `seed` value (second argument), or from the first value from the source.\n *\n * <span class=\"informal\">It's like {@link reduce}, but emits the current\n * accumulation state after each update</span>\n *\n * ![](scan.png)\n *\n * This operator maintains an internal state and emits it after processing each value as follows:\n *\n * 1. First value arrives\n *   - If a `seed` value was supplied (as the second argument to `scan`), let `state = seed` and `value = firstValue`.\n *   - If NO `seed` value was supplied (no second argument), let `state = firstValue` and go to 3.\n * 2. Let `state = accumulator(state, value)`.\n *   - If an error is thrown by `accumulator`, notify the consumer of an error. The process ends.\n * 3. Emit `state`.\n * 4. Next value arrives, let `value = nextValue`, go to 2.\n *\n * ## Examples\n *\n * An average of previous numbers. This example shows how\n * not providing a `seed` can prime the stream with the\n * first value from the source.\n *\n * ```ts\n * import { of, scan, map } from 'rxjs';\n *\n * const numbers$ = of(1, 2, 3);\n *\n * numbers$\n *   .pipe(\n *     // Get the sum of the numbers coming in.\n *     scan((total, n) => total + n),\n *     // Get the average by dividing the sum by the total number\n *     // received so far (which is 1 more than the zero-based index).\n *     map((sum, index) => sum / (index + 1))\n *   )\n *   .subscribe(console.log);\n * ```\n *\n * The Fibonacci sequence. This example shows how you can use\n * a seed to prime accumulation process. Also... you know... Fibonacci.\n * So important to like, computers and stuff that its whiteboarded\n * in job interviews. Now you can show them the Rx version! (Please don't, haha)\n *\n * ```ts\n * import { interval, scan, map, startWith } from 'rxjs';\n *\n * const firstTwoFibs = [0, 1];\n * // An endless stream of Fibonacci numbers.\n * const fibonacci$ = interval(1000).pipe(\n *   // Scan to get the fibonacci numbers (after 0, 1)\n *   scan(([a, b]) => [b, a + b], firstTwoFibs),\n *   // Get the second number in the tuple, it's the one you calculated\n *   map(([, n]) => n),\n *   // Start with our first two digits :)\n *   startWith(...firstTwoFibs)\n * );\n *\n * fibonacci$.subscribe(console.log);\n * ```\n *\n * @see {@link expand}\n * @see {@link mergeScan}\n * @see {@link reduce}\n * @see {@link switchScan}\n *\n * @param accumulator A \"reducer function\". This will be called for each value after an initial state is\n * acquired.\n * @param seed The initial state. If this is not provided, the first value from the source will\n * be used as the initial state, and emitted without going through the accumulator. All subsequent values\n * will be processed by the accumulator function. If this is provided, all values will go through\n * the accumulator function.\n * @return A function that returns an Observable of the accumulated values.\n */\nexport function scan<V, A, S>(accumulator: (acc: V | A | S, value: V, index: number) => A, seed?: S): OperatorFunction<V, V | A> {\n  // providing a seed of `undefined` *should* be valid and trigger\n  // hasSeed! so don't use `seed !== undefined` checks!\n  // For this reason, we have to check it here at the original call site\n  // otherwise inside Operator/Subscriber we won't know if `undefined`\n  // means they didn't provide anything or if they literally provided `undefined`\n  return operate(scanInternals(accumulator, seed as S, arguments.length >= 2, true));\n}\n","import { OperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\n\n/**\n * Compares all values of two observables in sequence using an optional comparator function\n * and returns an observable of a single boolean value representing whether or not the two sequences\n * are equal.\n *\n * <span class=\"informal\">Checks to see of all values emitted by both observables are equal, in order.</span>\n *\n * ![](sequenceEqual.png)\n *\n * `sequenceEqual` subscribes to source observable and `compareTo` `ObservableInput` (that internally\n * gets converted to an observable) and buffers incoming values from each observable. Whenever either\n * observable emits a value, the value is buffered and the buffers are shifted and compared from the bottom\n * up; If any value pair doesn't match, the returned observable will emit `false` and complete. If one of the\n * observables completes, the operator will wait for the other observable to complete; If the other\n * observable emits before completing, the returned observable will emit `false` and complete. If one observable never\n * completes or emits after the other completes, the returned observable will never complete.\n *\n * ## Example\n *\n * Figure out if the Konami code matches\n *\n * ```ts\n * import { from, fromEvent, map, bufferCount, mergeMap, sequenceEqual } from 'rxjs';\n *\n * const codes = from([\n *   'ArrowUp',\n *   'ArrowUp',\n *   'ArrowDown',\n *   'ArrowDown',\n *   'ArrowLeft',\n *   'ArrowRight',\n *   'ArrowLeft',\n *   'ArrowRight',\n *   'KeyB',\n *   'KeyA',\n *   'Enter', // no start key, clearly.\n * ]);\n *\n * const keys = fromEvent<KeyboardEvent>(document, 'keyup').pipe(map(e => e.code));\n * const matches = keys.pipe(\n *   bufferCount(11, 1),\n *   mergeMap(last11 => from(last11).pipe(sequenceEqual(codes)))\n * );\n * matches.subscribe(matched => console.log('Successful cheat at Contra? ', matched));\n * ```\n *\n * @see {@link combineLatest}\n * @see {@link zip}\n * @see {@link withLatestFrom}\n *\n * @param compareTo The `ObservableInput` sequence to compare the source sequence to.\n * @param comparator An optional function to compare each value pair.\n *\n * @return A function that returns an Observable that emits a single boolean\n * value representing whether or not the values emitted by the source\n * Observable and provided `ObservableInput` were equal in sequence.\n */\nexport function sequenceEqual<T>(\n  compareTo: ObservableInput<T>,\n  comparator: (a: T, b: T) => boolean = (a, b) => a === b\n): OperatorFunction<T, boolean> {\n  return operate((source, subscriber) => {\n    // The state for the source observable\n    const aState = createState<T>();\n    // The state for the compareTo observable;\n    const bState = createState<T>();\n\n    /** A utility to emit and complete */\n    const emit = (isEqual: boolean) => {\n      subscriber.next(isEqual);\n      subscriber.complete();\n    };\n\n    /**\n     * Creates a subscriber that subscribes to one of the sources, and compares its collected\n     * state -- `selfState` -- to the other source's collected state -- `otherState`. This\n     * is used for both streams.\n     */\n    const createSubscriber = (selfState: SequenceState<T>, otherState: SequenceState<T>) => {\n      const sequenceEqualSubscriber = createOperatorSubscriber(\n        subscriber,\n        (a: T) => {\n          const { buffer, complete } = otherState;\n          if (buffer.length === 0) {\n            // If there's no values in the other buffer\n            // and the other stream is complete, we know\n            // this isn't a match, because we got one more value.\n            // Otherwise, we push onto our buffer, so when the other\n            // stream emits, it can pull this value off our buffer and check it\n            // at the appropriate time.\n            complete ? emit(false) : selfState.buffer.push(a);\n          } else {\n            // If the other stream *does* have values in its buffer,\n            // pull the oldest one off so we can compare it to what we\n            // just got. If it wasn't a match, emit `false` and complete.\n            !comparator(a, buffer.shift()!) && emit(false);\n          }\n        },\n        () => {\n          // Or observable completed\n          selfState.complete = true;\n          const { complete, buffer } = otherState;\n          // If the other observable is also complete, and there's\n          // still stuff left in their buffer, it doesn't match, if their\n          // buffer is empty, then it does match. This is because we can't\n          // possibly get more values here anymore.\n          complete && emit(buffer.length === 0);\n          // Be sure to clean up our stream as soon as possible if we can.\n          sequenceEqualSubscriber?.unsubscribe();\n        }\n      );\n\n      return sequenceEqualSubscriber;\n    };\n\n    // Subscribe to each source.\n    source.subscribe(createSubscriber(aState, bState));\n    innerFrom(compareTo).subscribe(createSubscriber(bState, aState));\n  });\n}\n\n/**\n * A simple structure for the data used to test each sequence\n */\ninterface SequenceState<T> {\n  /** A temporary store for arrived values before they are checked */\n  buffer: T[];\n  /** Whether or not the sequence source has completed. */\n  complete: boolean;\n}\n\n/**\n * Creates a simple structure that is used to represent\n * data used to test each sequence.\n */\nfunction createState<T>(): SequenceState<T> {\n  return {\n    buffer: [],\n    complete: false,\n  };\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, SubjectLike, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\n\nexport interface ShareConfig<T> {\n  /**\n   * The factory used to create the subject that will connect the source observable to\n   * multicast consumers.\n   */\n  connector?: () => SubjectLike<T>;\n  /**\n   * If `true`, the resulting observable will reset internal state on error from source and return to a \"cold\" state. This\n   * allows the resulting observable to be \"retried\" in the event of an error.\n   * If `false`, when an error comes from the source it will push the error into the connecting subject, and the subject\n   * will remain the connecting subject, meaning the resulting observable will not go \"cold\" again, and subsequent retries\n   * or resubscriptions will resubscribe to that same subject. In all cases, RxJS subjects will emit the same error again, however\n   * {@link ReplaySubject} will also push its buffered values before pushing the error.\n   * It is also possible to pass a notifier factory returning an `ObservableInput` instead which grants more fine-grained\n   * control over how and when the reset should happen. This allows behaviors like conditional or delayed resets.\n   */\n  resetOnError?: boolean | ((error: any) => ObservableInput<any>);\n  /**\n   * If `true`, the resulting observable will reset internal state on completion from source and return to a \"cold\" state. This\n   * allows the resulting observable to be \"repeated\" after it is done.\n   * If `false`, when the source completes, it will push the completion through the connecting subject, and the subject\n   * will remain the connecting subject, meaning the resulting observable will not go \"cold\" again, and subsequent repeats\n   * or resubscriptions will resubscribe to that same subject.\n   * It is also possible to pass a notifier factory returning an `ObservableInput` instead which grants more fine-grained\n   * control over how and when the reset should happen. This allows behaviors like conditional or delayed resets.\n   */\n  resetOnComplete?: boolean | (() => ObservableInput<any>);\n  /**\n   * If `true`, when the number of subscribers to the resulting observable reaches zero due to those subscribers unsubscribing, the\n   * internal state will be reset and the resulting observable will return to a \"cold\" state. This means that the next\n   * time the resulting observable is subscribed to, a new subject will be created and the source will be subscribed to\n   * again.\n   * If `false`, when the number of subscribers to the resulting observable reaches zero due to unsubscription, the subject\n   * will remain connected to the source, and new subscriptions to the result will be connected through that same subject.\n   * It is also possible to pass a notifier factory returning an `ObservableInput` instead which grants more fine-grained\n   * control over how and when the reset should happen. This allows behaviors like conditional or delayed resets.\n   */\n  resetOnRefCountZero?: boolean | (() => ObservableInput<any>);\n}\n\nexport function share<T>(): MonoTypeOperatorFunction<T>;\n\nexport function share<T>(options: ShareConfig<T>): MonoTypeOperatorFunction<T>;\n\n/**\n * Returns a new Observable that multicasts (shares) the original Observable. As long as there is at least one\n * Subscriber this Observable will be subscribed and emitting data. When all subscribers have unsubscribed it will\n * unsubscribe from the source Observable. Because the Observable is multicasting it makes the stream `hot`.\n * This is an alias for `multicast(() => new Subject()), refCount()`.\n *\n * The subscription to the underlying source Observable can be reset (unsubscribe and resubscribe for new subscribers),\n * if the subscriber count to the shared observable drops to 0, or if the source Observable errors or completes. It is\n * possible to use notifier factories for the resets to allow for behaviors like conditional or delayed resets. Please\n * note that resetting on error or complete of the source Observable does not behave like a transparent retry or restart\n * of the source because the error or complete will be forwarded to all subscribers and their subscription will be\n * closed. Only new subscribers after a reset on error or complete happened will cause a fresh subscription to the\n * source. To achieve transparent retries or restarts pipe the source through appropriate operators before sharing.\n *\n * ![](share.png)\n *\n * ## Example\n *\n * Generate new multicast Observable from the `source` Observable value\n *\n * ```ts\n * import { interval, tap, map, take, share } from 'rxjs';\n *\n * const source = interval(1000).pipe(\n *   tap(x => console.log('Processing: ', x)),\n *   map(x => x * x),\n *   take(6),\n *   share()\n * );\n *\n * source.subscribe(x => console.log('subscription 1: ', x));\n * source.subscribe(x => console.log('subscription 2: ', x));\n *\n * // Logs:\n * // Processing: 0\n * // subscription 1: 0\n * // subscription 2: 0\n * // Processing: 1\n * // subscription 1: 1\n * // subscription 2: 1\n * // Processing: 2\n * // subscription 1: 4\n * // subscription 2: 4\n * // Processing: 3\n * // subscription 1: 9\n * // subscription 2: 9\n * // Processing: 4\n * // subscription 1: 16\n * // subscription 2: 16\n * // Processing: 5\n * // subscription 1: 25\n * // subscription 2: 25\n * ```\n *\n * ## Example with notifier factory: Delayed reset\n *\n * ```ts\n * import { interval, take, share, timer } from 'rxjs';\n *\n * const source = interval(1000).pipe(\n *   take(3),\n *   share({\n *     resetOnRefCountZero: () => timer(1000)\n *   })\n * );\n *\n * const subscriptionOne = source.subscribe(x => console.log('subscription 1: ', x));\n * setTimeout(() => subscriptionOne.unsubscribe(), 1300);\n *\n * setTimeout(() => source.subscribe(x => console.log('subscription 2: ', x)), 1700);\n *\n * setTimeout(() => source.subscribe(x => console.log('subscription 3: ', x)), 5000);\n *\n * // Logs:\n * // subscription 1:  0\n * // (subscription 1 unsubscribes here)\n * // (subscription 2 subscribes here ~400ms later, source was not reset)\n * // subscription 2:  1\n * // subscription 2:  2\n * // (subscription 2 unsubscribes here)\n * // (subscription 3 subscribes here ~2000ms later, source did reset before)\n * // subscription 3:  0\n * // subscription 3:  1\n * // subscription 3:  2\n * ```\n *\n * @see {@link shareReplay}\n *\n * @return A function that returns an Observable that mirrors the source.\n */\nexport function share<T>(options: ShareConfig<T> = {}): MonoTypeOperatorFunction<T> {\n  const { connector = () => new Subject<T>(), resetOnError = true, resetOnComplete = true, resetOnRefCountZero = true } = options;\n  // It's necessary to use a wrapper here, as the _operator_ must be\n  // referentially transparent. Otherwise, it cannot be used in calls to the\n  // static `pipe` function - to create a partial pipeline.\n  //\n  // The _operator function_ - the function returned by the _operator_ - will\n  // not be referentially transparent - as it shares its source - but the\n  // _operator function_ is called when the complete pipeline is composed via a\n  // call to a source observable's `pipe` method - not when the static `pipe`\n  // function is called.\n  return (wrapperSource) => {\n    let connection: SafeSubscriber<T> | undefined;\n    let resetConnection: Subscription | undefined;\n    let subject: SubjectLike<T> | undefined;\n    let refCount = 0;\n    let hasCompleted = false;\n    let hasErrored = false;\n\n    const cancelReset = () => {\n      resetConnection?.unsubscribe();\n      resetConnection = undefined;\n    };\n    // Used to reset the internal state to a \"cold\"\n    // state, as though it had never been subscribed to.\n    const reset = () => {\n      cancelReset();\n      connection = subject = undefined;\n      hasCompleted = hasErrored = false;\n    };\n    const resetAndUnsubscribe = () => {\n      // We need to capture the connection before\n      // we reset (if we need to reset).\n      const conn = connection;\n      reset();\n      conn?.unsubscribe();\n    };\n\n    return operate<T, T>((source, subscriber) => {\n      refCount++;\n      if (!hasErrored && !hasCompleted) {\n        cancelReset();\n      }\n\n      // Create the subject if we don't have one yet. Grab a local reference to\n      // it as well, which avoids non-null assertions when using it and, if we\n      // connect to it now, then error/complete need a reference after it was\n      // reset.\n      const dest = (subject = subject ?? connector());\n\n      // Add the finalization directly to the subscriber - instead of returning it -\n      // so that the handling of the subscriber's unsubscription will be wired\n      // up _before_ the subscription to the source occurs. This is done so that\n      // the assignment to the source connection's `closed` property will be seen\n      // by synchronous firehose sources.\n      subscriber.add(() => {\n        refCount--;\n\n        // If we're resetting on refCount === 0, and it's 0, we only want to do\n        // that on \"unsubscribe\", really. Resetting on error or completion is a different\n        // configuration.\n        if (refCount === 0 && !hasErrored && !hasCompleted) {\n          resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n        }\n      });\n\n      // The following line adds the subscription to the subscriber passed.\n      // Basically, `subscriber === dest.subscribe(subscriber)` is `true`.\n      dest.subscribe(subscriber);\n\n      if (\n        !connection &&\n        // Check this shareReplay is still activate - it can be reset to 0\n        // and be \"unsubscribed\" _before_ it actually subscribes.\n        // If we were to subscribe then, it'd leak and get stuck.\n        refCount > 0\n      ) {\n        // We need to create a subscriber here - rather than pass an observer and\n        // assign the returned subscription to connection - because it's possible\n        // for reentrant subscriptions to the shared observable to occur and in\n        // those situations we want connection to be already-assigned so that we\n        // don't create another connection to the source.\n        connection = new SafeSubscriber({\n          next: (value) => dest.next(value),\n          error: (err) => {\n            hasErrored = true;\n            cancelReset();\n            resetConnection = handleReset(reset, resetOnError, err);\n            dest.error(err);\n          },\n          complete: () => {\n            hasCompleted = true;\n            cancelReset();\n            resetConnection = handleReset(reset, resetOnComplete);\n            dest.complete();\n          },\n        });\n        innerFrom(source).subscribe(connection);\n      }\n    })(wrapperSource);\n  };\n}\n\nfunction handleReset<T extends unknown[] = never[]>(\n  reset: () => void,\n  on: boolean | ((...args: T) => ObservableInput<any>),\n  ...args: T\n): Subscription | undefined {\n  if (on === true) {\n    reset();\n    return;\n  }\n\n  if (on === false) {\n    return;\n  }\n\n  const onSubscriber = new SafeSubscriber({\n    next: () => {\n      onSubscriber.unsubscribe();\n      reset();\n    },\n  });\n\n  return innerFrom(on(...args)).subscribe(onSubscriber);\n}\n","import { ReplaySubject } from '../ReplaySubject';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { share } from './share';\n\nexport interface ShareReplayConfig {\n  bufferSize?: number;\n  windowTime?: number;\n  refCount: boolean;\n  scheduler?: SchedulerLike;\n}\n\nexport function shareReplay<T>(config: ShareReplayConfig): MonoTypeOperatorFunction<T>;\nexport function shareReplay<T>(bufferSize?: number, windowTime?: number, scheduler?: SchedulerLike): MonoTypeOperatorFunction<T>;\n\n/**\n * Share source and replay specified number of emissions on subscription.\n *\n * This operator is a specialization of `replay` that connects to a source observable\n * and multicasts through a `ReplaySubject` constructed with the specified arguments.\n * A successfully completed source will stay cached in the `shareReplay`ed observable forever,\n * but an errored source can be retried.\n *\n * ## Why use `shareReplay`?\n *\n * You generally want to use `shareReplay` when you have side-effects or taxing computations\n * that you do not wish to be executed amongst multiple subscribers.\n * It may also be valuable in situations where you know you will have late subscribers to\n * a stream that need access to previously emitted values.\n * This ability to replay values on subscription is what differentiates {@link share} and `shareReplay`.\n *\n * ## Reference counting\n *\n * By default `shareReplay` will use `refCount` of false, meaning that it will _not_ unsubscribe the\n * source when the reference counter drops to zero, i.e. the inner `ReplaySubject` will _not_ be unsubscribed\n * (and potentially run for ever).\n * This is the default as it is expected that `shareReplay` is often used to keep around expensive to setup\n * observables which we want to keep running instead of having to do the expensive setup again.\n *\n * As of RXJS version 6.4.0 a new overload signature was added to allow for manual control over what\n * happens when the operators internal reference counter drops to zero.\n * If `refCount` is true, the source will be unsubscribed from once the reference count drops to zero, i.e.\n * the inner `ReplaySubject` will be unsubscribed. All new subscribers will receive value emissions from a\n * new `ReplaySubject` which in turn will cause a new subscription to the source observable.\n *\n * ## Examples\n *\n * Example with a third subscriber coming late to the party\n *\n * ```ts\n * import { interval, take, shareReplay } from 'rxjs';\n *\n * const shared$ = interval(2000).pipe(\n *   take(6),\n *   shareReplay(3)\n * );\n *\n * shared$.subscribe(x => console.log('sub A: ', x));\n * shared$.subscribe(y => console.log('sub B: ', y));\n *\n * setTimeout(() => {\n *   shared$.subscribe(y => console.log('sub C: ', y));\n * }, 11000);\n *\n * // Logs:\n * // (after ~2000 ms)\n * // sub A: 0\n * // sub B: 0\n * // (after ~4000 ms)\n * // sub A: 1\n * // sub B: 1\n * // (after ~6000 ms)\n * // sub A: 2\n * // sub B: 2\n * // (after ~8000 ms)\n * // sub A: 3\n * // sub B: 3\n * // (after ~10000 ms)\n * // sub A: 4\n * // sub B: 4\n * // (after ~11000 ms, sub C gets the last 3 values)\n * // sub C: 2\n * // sub C: 3\n * // sub C: 4\n * // (after ~12000 ms)\n * // sub A: 5\n * // sub B: 5\n * // sub C: 5\n * ```\n *\n * Example for `refCount` usage\n *\n * ```ts\n * import { Observable, tap, interval, shareReplay, take } from 'rxjs';\n *\n * const log = <T>(name: string, source: Observable<T>) => source.pipe(\n *   tap({\n *     subscribe: () => console.log(`${ name }: subscribed`),\n *     next: value => console.log(`${ name }: ${ value }`),\n *     complete: () => console.log(`${ name }: completed`),\n *     finalize: () => console.log(`${ name }: unsubscribed`)\n *   })\n * );\n *\n * const obs$ = log('source', interval(1000));\n *\n * const shared$ = log('shared', obs$.pipe(\n *   shareReplay({ bufferSize: 1, refCount: true }),\n *   take(2)\n * ));\n *\n * shared$.subscribe(x => console.log('sub A: ', x));\n * shared$.subscribe(y => console.log('sub B: ', y));\n *\n * // PRINTS:\n * // shared: subscribed <-- reference count = 1\n * // source: subscribed\n * // shared: subscribed <-- reference count = 2\n * // source: 0\n * // shared: 0\n * // sub A: 0\n * // shared: 0\n * // sub B: 0\n * // source: 1\n * // shared: 1\n * // sub A: 1\n * // shared: completed <-- take(2) completes the subscription for sub A\n * // shared: unsubscribed <-- reference count = 1\n * // shared: 1\n * // sub B: 1\n * // shared: completed <-- take(2) completes the subscription for sub B\n * // shared: unsubscribed <-- reference count = 0\n * // source: unsubscribed <-- replaySubject unsubscribes from source observable because the reference count dropped to 0 and refCount is true\n *\n * // In case of refCount being false, the unsubscribe is never called on the source and the source would keep on emitting, even if no subscribers\n * // are listening.\n * // source: 2\n * // source: 3\n * // source: 4\n * // ...\n * ```\n *\n * @see {@link publish}\n * @see {@link share}\n * @see {@link publishReplay}\n *\n * @param configOrBufferSize Maximum element count of the replay buffer or {@link ShareReplayConfig configuration}\n * object.\n * @param windowTime Maximum time length of the replay buffer in milliseconds.\n * @param scheduler Scheduler where connected observers within the selector function\n * will be invoked on.\n * @return A function that returns an Observable sequence that contains the\n * elements of a sequence produced by multicasting the source sequence within a\n * selector function.\n */\nexport function shareReplay<T>(\n  configOrBufferSize?: ShareReplayConfig | number,\n  windowTime?: number,\n  scheduler?: SchedulerLike\n): MonoTypeOperatorFunction<T> {\n  let bufferSize: number;\n  let refCount = false;\n  if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n    ({ bufferSize = Infinity, windowTime = Infinity, refCount = false, scheduler } = configOrBufferSize);\n  } else {\n    bufferSize = (configOrBufferSize ?? Infinity) as number;\n  }\n  return share<T>({\n    connector: () => new ReplaySubject(bufferSize, windowTime, scheduler),\n    resetOnError: true,\n    resetOnComplete: false,\n    resetOnRefCountZero: refCount,\n  });\n}\n","import { createErrorClass } from './createErrorClass';\n\nexport interface SequenceError extends Error {}\n\nexport interface SequenceErrorCtor {\n  /**\n   * @deprecated Internal implementation detail. Do not construct error instances.\n   * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n   */\n  new (message: string): SequenceError;\n}\n\n/**\n * An error thrown when something is wrong with the sequence of\n * values arriving on the observable.\n *\n * @see {@link operators/single}\n */\nexport const SequenceError: SequenceErrorCtor = createErrorClass(\n  (_super) =>\n    function SequenceErrorImpl(this: any, message: string) {\n      _super(this);\n      this.name = 'SequenceError';\n      this.message = message;\n    }\n);\n","import { createErrorClass } from './createErrorClass';\n\nexport interface NotFoundError extends Error {}\n\nexport interface NotFoundErrorCtor {\n  /**\n   * @deprecated Internal implementation detail. Do not construct error instances.\n   * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n   */\n  new (message: string): NotFoundError;\n}\n\n/**\n * An error thrown when a value or values are missing from an\n * observable sequence.\n *\n * @see {@link operators/single}\n */\nexport const NotFoundError: NotFoundErrorCtor = createErrorClass(\n  (_super) =>\n    function NotFoundErrorImpl(this: any, message: string) {\n      _super(this);\n      this.name = 'NotFoundError';\n      this.message = message;\n    }\n);\n","import { Observable } from '../Observable';\nimport { EmptyError } from '../util/EmptyError';\n\nimport { MonoTypeOperatorFunction, OperatorFunction, TruthyTypesOf } from '../types';\nimport { SequenceError } from '../util/SequenceError';\nimport { NotFoundError } from '../util/NotFoundError';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\nexport function single<T>(predicate: BooleanConstructor): OperatorFunction<T, TruthyTypesOf<T>>;\nexport function single<T>(predicate?: (value: T, index: number, source: Observable<T>) => boolean): MonoTypeOperatorFunction<T>;\n\n/**\n * Returns an observable that asserts that only one value is\n * emitted from the observable that matches the predicate. If no\n * predicate is provided, then it will assert that the observable\n * only emits one value.\n *\n * If the source Observable did not emit `next` before completion, it\n * will emit an {@link EmptyError} to the Observer's `error` callback.\n *\n * In the event that two values are found that match the predicate,\n * or when there are two values emitted and no predicate, it will\n * emit a {@link SequenceError} to the Observer's `error` callback.\n *\n * In the event that no values match the predicate, if one is provided,\n * it will emit a {@link NotFoundError} to the Observer's `error` callback.\n *\n * ## Example\n *\n * Expect only `name` beginning with `'B'`\n *\n * ```ts\n * import { of, single } from 'rxjs';\n *\n * const source1 = of(\n *  { name: 'Ben' },\n *  { name: 'Tracy' },\n *  { name: 'Laney' },\n *  { name: 'Lily' }\n * );\n *\n * source1\n *   .pipe(single(x => x.name.startsWith('B')))\n *   .subscribe(x => console.log(x));\n * // Emits 'Ben'\n *\n *\n * const source2 = of(\n *  { name: 'Ben' },\n *  { name: 'Tracy' },\n *  { name: 'Bradley' },\n *  { name: 'Lincoln' }\n * );\n *\n * source2\n *   .pipe(single(x => x.name.startsWith('B')))\n *   .subscribe({ error: err => console.error(err) });\n * // Error emitted: SequenceError('Too many values match')\n *\n *\n * const source3 = of(\n *  { name: 'Laney' },\n *  { name: 'Tracy' },\n *  { name: 'Lily' },\n *  { name: 'Lincoln' }\n * );\n *\n * source3\n *   .pipe(single(x => x.name.startsWith('B')))\n *   .subscribe({ error: err => console.error(err) });\n * // Error emitted: NotFoundError('No values match')\n * ```\n *\n * @see {@link first}\n * @see {@link find}\n * @see {@link findIndex}\n * @see {@link elementAt}\n *\n * @throws {NotFoundError} Delivers a `NotFoundError` to the Observer's `error`\n * callback if the Observable completes before any `next` notification was sent.\n * @throws {SequenceError} Delivers a `SequenceError` if more than one value is\n * emitted that matches the provided predicate. If no predicate is provided, it\n * will deliver a `SequenceError` if more than one value comes from the source.\n * @throws {EmptyError} Delivers an `EmptyError` if no values were `next`ed prior\n * to completion.\n *\n * @param predicate A predicate function to evaluate items emitted by the source\n * Observable.\n * @return A function that returns an Observable that emits the single item\n * emitted by the source Observable that matches the predicate.\n */\nexport function single<T>(predicate?: (value: T, index: number, source: Observable<T>) => boolean): MonoTypeOperatorFunction<T> {\n  return operate((source, subscriber) => {\n    let hasValue = false;\n    let singleValue: T;\n    let seenValue = false;\n    let index = 0;\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (value) => {\n          seenValue = true;\n          if (!predicate || predicate(value, index++, source)) {\n            hasValue && subscriber.error(new SequenceError('Too many matching values'));\n            hasValue = true;\n            singleValue = value;\n          }\n        },\n        () => {\n          if (hasValue) {\n            subscriber.next(singleValue);\n            subscriber.complete();\n          } else {\n            subscriber.error(seenValue ? new NotFoundError('No matching values') : new EmptyError());\n          }\n        }\n      )\n    );\n  });\n}\n","import { MonoTypeOperatorFunction } from '../types';\nimport { filter } from './filter';\n\n/**\n * Returns an Observable that skips the first `count` items emitted by the source Observable.\n *\n * ![](skip.png)\n *\n * Skips the values until the sent notifications are equal or less than provided skip count. It raises\n * an error if skip count is equal or more than the actual number of emits and source raises an error.\n *\n * ## Example\n *\n * Skip the values before the emission\n *\n * ```ts\n * import { interval, skip } from 'rxjs';\n *\n * // emit every half second\n * const source = interval(500);\n * // skip the first 10 emitted values\n * const result = source.pipe(skip(10));\n *\n * result.subscribe(value => console.log(value));\n * // output: 10...11...12...13...\n * ```\n *\n * @see {@link last}\n * @see {@link skipWhile}\n * @see {@link skipUntil}\n * @see {@link skipLast}\n *\n * @param count The number of times, items emitted by source Observable should be skipped.\n * @return A function that returns an Observable that skips the first `count`\n * values emitted by the source Observable.\n */\nexport function skip<T>(count: number): MonoTypeOperatorFunction<T> {\n  return filter((_, index) => count <= index);\n}\n","import { MonoTypeOperatorFunction } from '../types';\nimport { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Skip a specified number of values before the completion of an observable.\n *\n * ![](skipLast.png)\n *\n * Returns an observable that will emit values as soon as it can, given a number of\n * skipped values. For example, if you `skipLast(3)` on a source, when the source\n * emits its fourth value, the first value the source emitted will finally be emitted\n * from the returned observable, as it is no longer part of what needs to be skipped.\n *\n * All values emitted by the result of `skipLast(N)` will be delayed by `N` emissions,\n * as each value is held in a buffer until enough values have been emitted that that\n * the buffered value may finally be sent to the consumer.\n *\n * After subscribing, unsubscribing will not result in the emission of the buffered\n * skipped values.\n *\n * ## Example\n *\n * Skip the last 2 values of an observable with many values\n *\n * ```ts\n * import { of, skipLast } from 'rxjs';\n *\n * const numbers = of(1, 2, 3, 4, 5);\n * const skipLastTwo = numbers.pipe(skipLast(2));\n * skipLastTwo.subscribe(x => console.log(x));\n *\n * // Results in:\n * // 1 2 3\n * // (4 and 5 are skipped)\n * ```\n *\n * @see {@link skip}\n * @see {@link skipUntil}\n * @see {@link skipWhile}\n * @see {@link take}\n *\n * @param skipCount Number of elements to skip from the end of the source Observable.\n * @return A function that returns an Observable that skips the last `count`\n * values emitted by the source Observable.\n */\nexport function skipLast<T>(skipCount: number): MonoTypeOperatorFunction<T> {\n  return skipCount <= 0\n    ? // For skipCounts less than or equal to zero, we are just mirroring the source.\n      identity\n    : operate((source, subscriber) => {\n        // A ring buffer to hold the values while we wait to see\n        // if we can emit it or it's part of the \"skipped\" last values.\n        // Note that it is the _same size_ as the skip count.\n        let ring: T[] = new Array(skipCount);\n        // The number of values seen so far. This is used to get\n        // the index of the current value when it arrives.\n        let seen = 0;\n        source.subscribe(\n          createOperatorSubscriber(subscriber, (value) => {\n            // Get the index of the value we have right now\n            // relative to all other values we've seen, then\n            // increment `seen`. This ensures we've moved to\n            // the next slot in our ring buffer.\n            const valueIndex = seen++;\n            if (valueIndex < skipCount) {\n              // If we haven't seen enough values to fill our buffer yet,\n              // Then we aren't to a number of seen values where we can\n              // emit anything, so let's just start by filling the ring buffer.\n              ring[valueIndex] = value;\n            } else {\n              // We are traversing over the ring array in such\n              // a way that when we get to the end, we loop back\n              // and go to the start.\n              const index = valueIndex % skipCount;\n              // Pull the oldest value out so we can emit it,\n              // and stuff the new value in it's place.\n              const oldValue = ring[index];\n              ring[index] = value;\n              // Emit the old value. It is important that this happens\n              // after we swap the value in the buffer, if it happens\n              // before we swap the value in the buffer, then a synchronous\n              // source can get the buffer out of whack.\n              subscriber.next(oldValue);\n            }\n          })\n        );\n\n        return () => {\n          // Release our values in memory\n          ring = null!;\n        };\n      });\n}\n","import { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\n\n/**\n * Returns an Observable that skips items emitted by the source Observable until a second Observable emits an item.\n *\n * The `skipUntil` operator causes the observable stream to skip the emission of values until the passed in observable\n * emits the first value. This can be particularly useful in combination with user interactions, responses of HTTP\n * requests or waiting for specific times to pass by.\n *\n * ![](skipUntil.png)\n *\n * Internally, the `skipUntil` operator subscribes to the passed in `notifier` `ObservableInput` (which gets converted\n * to an Observable) in order to recognize the emission of its first value. When `notifier` emits next, the operator\n * unsubscribes from it and starts emitting the values of the *source* observable until it completes or errors. It\n * will never let the *source* observable emit any values if the `notifier` completes or throws an error without\n * emitting a value before.\n *\n * ## Example\n *\n * In the following example, all emitted values of the interval observable are skipped until the user clicks anywhere\n * within the page\n *\n * ```ts\n * import { interval, fromEvent, skipUntil } from 'rxjs';\n *\n * const intervalObservable = interval(1000);\n * const click = fromEvent(document, 'click');\n *\n * const emitAfterClick = intervalObservable.pipe(\n *   skipUntil(click)\n * );\n * // clicked at 4.6s. output: 5...6...7...8........ or\n * // clicked at 7.3s. output: 8...9...10..11.......\n * emitAfterClick.subscribe(value => console.log(value));\n * ```\n *\n * @see {@link last}\n * @see {@link skip}\n * @see {@link skipWhile}\n * @see {@link skipLast}\n *\n * @param notifier An `ObservableInput` that has to emit an item before the source Observable elements begin to\n * be mirrored by the resulting Observable.\n * @return A function that returns an Observable that skips items from the\n * source Observable until the `notifier` Observable emits an item, then emits the\n * remaining items.\n */\nexport function skipUntil<T>(notifier: ObservableInput<any>): MonoTypeOperatorFunction<T> {\n  return operate((source, subscriber) => {\n    let taking = false;\n\n    const skipSubscriber = createOperatorSubscriber(\n      subscriber,\n      () => {\n        skipSubscriber?.unsubscribe();\n        taking = true;\n      },\n      noop\n    );\n\n    innerFrom(notifier).subscribe(skipSubscriber);\n\n    source.subscribe(createOperatorSubscriber(subscriber, (value) => taking && subscriber.next(value)));\n  });\n}\n","import { Falsy, MonoTypeOperatorFunction, OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\nexport function skipWhile<T>(predicate: BooleanConstructor): OperatorFunction<T, Extract<T, Falsy> extends never ? never : T>;\nexport function skipWhile<T>(predicate: (value: T, index: number) => true): OperatorFunction<T, never>;\nexport function skipWhile<T>(predicate: (value: T, index: number) => boolean): MonoTypeOperatorFunction<T>;\n\n/**\n * Returns an Observable that skips all items emitted by the source Observable as long as a specified condition holds\n * true, but emits all further source items as soon as the condition becomes false.\n *\n * ![](skipWhile.png)\n *\n * Skips all the notifications with a truthy predicate. It will not skip the notifications when the predicate is falsy.\n * It can also be skipped using index. Once the predicate is true, it will not be called again.\n *\n * ## Example\n *\n * Skip some super heroes\n *\n * ```ts\n * import { from, skipWhile } from 'rxjs';\n *\n * const source = from(['Green Arrow', 'SuperMan', 'Flash', 'SuperGirl', 'Black Canary'])\n * // Skip the heroes until SuperGirl\n * const example = source.pipe(skipWhile(hero => hero !== 'SuperGirl'));\n * // output: SuperGirl, Black Canary\n * example.subscribe(femaleHero => console.log(femaleHero));\n * ```\n *\n * Skip values from the array until index 5\n *\n * ```ts\n * import { from, skipWhile } from 'rxjs';\n *\n * const source = from([1, 2, 3, 4, 5, 6, 7, 9, 10]);\n * const example = source.pipe(skipWhile((_, i) => i !== 5));\n * // output: 6, 7, 9, 10\n * example.subscribe(value => console.log(value));\n * ```\n *\n * @see {@link last}\n * @see {@link skip}\n * @see {@link skipUntil}\n * @see {@link skipLast}\n *\n * @param predicate A function to test each item emitted from the source Observable.\n * @return A function that returns an Observable that begins emitting items\n * emitted by the source Observable when the specified predicate becomes false.\n */\nexport function skipWhile<T>(predicate: (value: T, index: number) => boolean): MonoTypeOperatorFunction<T> {\n  return operate((source, subscriber) => {\n    let taking = false;\n    let index = 0;\n    source.subscribe(\n      createOperatorSubscriber(subscriber, (value) => (taking || (taking = !predicate(value, index++))) && subscriber.next(value))\n    );\n  });\n}\n","import { concat } from '../observable/concat';\nimport { OperatorFunction, SchedulerLike, ValueFromArray } from '../types';\nimport { popScheduler } from '../util/args';\nimport { operate } from '../util/lift';\n\n// Devs are more likely to pass null or undefined than they are a scheduler\n// without accompanying values. To make things easier for (naughty) devs who\n// use the `strictNullChecks: false` TypeScript compiler option, these\n// overloads with explicit null and undefined values are included.\n\nexport function startWith<T>(value: null): OperatorFunction<T, T | null>;\nexport function startWith<T>(value: undefined): OperatorFunction<T, T | undefined>;\n\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `concatAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function startWith<T, A extends readonly unknown[] = T[]>(\n  ...valuesAndScheduler: [...A, SchedulerLike]\n): OperatorFunction<T, T | ValueFromArray<A>>;\nexport function startWith<T, A extends readonly unknown[] = T[]>(...values: A): OperatorFunction<T, T | ValueFromArray<A>>;\n\n/**\n * Returns an observable that, at the moment of subscription, will synchronously emit all\n * values provided to this operator, then subscribe to the source and mirror all of its emissions\n * to subscribers.\n *\n * This is a useful way to know when subscription has occurred on an existing observable.\n *\n * <span class=\"informal\">First emits its arguments in order, and then any\n * emissions from the source.</span>\n *\n * ![](startWith.png)\n *\n * ## Examples\n *\n * Emit a value when a timer starts.\n *\n * ```ts\n * import { timer, map, startWith } from 'rxjs';\n *\n * timer(1000)\n *   .pipe(\n *     map(() => 'timer emit'),\n *     startWith('timer start')\n *   )\n *   .subscribe(x => console.log(x));\n *\n * // results:\n * // 'timer start'\n * // 'timer emit'\n * ```\n *\n * @param values Items you want the modified Observable to emit first.\n * @return A function that returns an Observable that synchronously emits\n * provided values before subscribing to the source Observable.\n *\n * @see {@link endWith}\n * @see {@link finalize}\n * @see {@link concat}\n */\nexport function startWith<T, D>(...values: D[]): OperatorFunction<T, T | D> {\n  const scheduler = popScheduler(values);\n  return operate((source, subscriber) => {\n    // Here we can't pass `undefined` as a scheduler, because if we did, the\n    // code inside of `concat` would be confused by the `undefined`, and treat it\n    // like an invalid observable. So we have to split it two different ways.\n    (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber);\n  });\n}\n","import { Subscriber } from '../Subscriber';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/* tslint:disable:max-line-length */\nexport function switchMap<T, O extends ObservableInput<any>>(\n  project: (value: T, index: number) => O\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function switchMap<T, O extends ObservableInput<any>>(\n  project: (value: T, index: number) => O,\n  resultSelector: undefined\n): OperatorFunction<T, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function switchMap<T, R, O extends ObservableInput<any>>(\n  project: (value: T, index: number) => O,\n  resultSelector: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, R>;\n/* tslint:enable:max-line-length */\n\n/**\n * Projects each source value to an Observable which is merged in the output\n * Observable, emitting values only from the most recently projected Observable.\n *\n * <span class=\"informal\">Maps each value to an Observable, then flattens all of\n * these inner Observables using {@link switchAll}.</span>\n *\n * ![](switchMap.png)\n *\n * Returns an Observable that emits items based on applying a function that you\n * supply to each item emitted by the source Observable, where that function\n * returns an (so-called \"inner\") Observable. Each time it observes one of these\n * inner Observables, the output Observable begins emitting the items emitted by\n * that inner Observable. When a new inner Observable is emitted, `switchMap`\n * stops emitting items from the earlier-emitted inner Observable and begins\n * emitting items from the new one. It continues to behave like this for\n * subsequent inner Observables.\n *\n * ## Example\n *\n * Generate new Observable according to source Observable values\n *\n * ```ts\n * import { of, switchMap } from 'rxjs';\n *\n * const switched = of(1, 2, 3).pipe(switchMap(x => of(x, x ** 2, x ** 3)));\n * switched.subscribe(x => console.log(x));\n * // outputs\n * // 1\n * // 1\n * // 1\n * // 2\n * // 4\n * // 8\n * // 3\n * // 9\n * // 27\n * ```\n *\n * Restart an interval Observable on every click event\n *\n * ```ts\n * import { fromEvent, switchMap, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(switchMap(() => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMap}\n * @see {@link exhaustMap}\n * @see {@link mergeMap}\n * @see {@link switchAll}\n * @see {@link switchMapTo}\n *\n * @param project A function that, when applied to an item emitted by the source\n * Observable, returns an Observable.\n * @return A function that returns an Observable that emits the result of\n * applying the projection function (and the optional deprecated\n * `resultSelector`) to each item emitted by the source Observable and taking\n * only the values from the most recently projected inner Observable.\n */\nexport function switchMap<T, R, O extends ObservableInput<any>>(\n  project: (value: T, index: number) => O,\n  resultSelector?: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, ObservedValueOf<O> | R> {\n  return operate((source, subscriber) => {\n    let innerSubscriber: Subscriber<ObservedValueOf<O>> | null = null;\n    let index = 0;\n    // Whether or not the source subscription has completed\n    let isComplete = false;\n\n    // We only complete the result if the source is complete AND we don't have an active inner subscription.\n    // This is called both when the source completes and when the inners complete.\n    const checkComplete = () => isComplete && !innerSubscriber && subscriber.complete();\n\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (value) => {\n          // Cancel the previous inner subscription if there was one\n          innerSubscriber?.unsubscribe();\n          let innerIndex = 0;\n          const outerIndex = index++;\n          // Start the next inner subscription\n          innerFrom(project(value, outerIndex)).subscribe(\n            (innerSubscriber = createOperatorSubscriber(\n              subscriber,\n              // When we get a new inner value, next it through. Note that this is\n              // handling the deprecate result selector here. This is because with this architecture\n              // it ends up being smaller than using the map operator.\n              (innerValue) => subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue),\n              () => {\n                // The inner has completed. Null out the inner subscriber to\n                // free up memory and to signal that we have no inner subscription\n                // currently.\n                innerSubscriber = null!;\n                checkComplete();\n              }\n            ))\n          );\n        },\n        () => {\n          isComplete = true;\n          checkComplete();\n        }\n      )\n    );\n  });\n}\n","import { OperatorFunction, ObservableInput, ObservedValueOf } from '../types';\nimport { switchMap } from './switchMap';\nimport { identity } from '../util/identity';\n\n/**\n * Converts a higher-order Observable into a first-order Observable\n * producing values only from the most recent observable sequence\n *\n * <span class=\"informal\">Flattens an Observable-of-Observables.</span>\n *\n * ![](switchAll.png)\n *\n * `switchAll` subscribes to a source that is an observable of observables, also known as a\n * \"higher-order observable\" (or `Observable<Observable<T>>`). It subscribes to the most recently\n * provided \"inner observable\" emitted by the source, unsubscribing from any previously subscribed\n * to inner observable, such that only the most recent inner observable may be subscribed to at\n * any point in time. The resulting observable returned by `switchAll` will only complete if the\n * source observable completes, *and* any currently subscribed to inner observable also has completed,\n * if there are any.\n *\n * ## Examples\n *\n * Spawn a new interval observable for each click event, but for every new\n * click, cancel the previous interval and subscribe to the new one\n *\n * ```ts\n * import { fromEvent, tap, map, interval, switchAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click').pipe(tap(() => console.log('click')));\n * const source = clicks.pipe(map(() => interval(1000)));\n *\n * source\n *   .pipe(switchAll())\n *   .subscribe(x => console.log(x));\n *\n * // Output\n * // click\n * // 0\n * // 1\n * // 2\n * // 3\n * // ...\n * // click\n * // 0\n * // 1\n * // 2\n * // ...\n * // click\n * // ...\n * ```\n *\n * @see {@link combineLatestAll}\n * @see {@link concatAll}\n * @see {@link exhaustAll}\n * @see {@link switchMap}\n * @see {@link switchMapTo}\n * @see {@link mergeAll}\n *\n * @return A function that returns an Observable that converts a higher-order\n * Observable into a first-order Observable producing values only from the most\n * recent Observable sequence.\n */\nexport function switchAll<O extends ObservableInput<any>>(): OperatorFunction<O, ObservedValueOf<O>> {\n  return switchMap(identity);\n}\n","import { switchMap } from './switchMap';\nimport { ObservableInput, OperatorFunction, ObservedValueOf } from '../types';\nimport { isFunction } from '../util/isFunction';\n\n/** @deprecated Will be removed in v9. Use {@link switchMap} instead: `switchMap(() => result)` */\nexport function switchMapTo<O extends ObservableInput<unknown>>(observable: O): OperatorFunction<unknown, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function switchMapTo<O extends ObservableInput<unknown>>(\n  observable: O,\n  resultSelector: undefined\n): OperatorFunction<unknown, ObservedValueOf<O>>;\n/** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */\nexport function switchMapTo<T, R, O extends ObservableInput<unknown>>(\n  observable: O,\n  resultSelector: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, R>;\n\n/**\n * Projects each source value to the same Observable which is flattened multiple\n * times with {@link switchMap} in the output Observable.\n *\n * <span class=\"informal\">It's like {@link switchMap}, but maps each value\n * always to the same inner Observable.</span>\n *\n * ![](switchMapTo.png)\n *\n * Maps each source value to the given Observable `innerObservable` regardless\n * of the source value, and then flattens those resulting Observables into one\n * single Observable, which is the output Observable. The output Observables\n * emits values only from the most recently emitted instance of\n * `innerObservable`.\n *\n * ## Example\n *\n * Restart an interval Observable on every click event\n *\n * ```ts\n * import { fromEvent, switchMapTo, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(switchMapTo(interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link concatMapTo}\n * @see {@link switchAll}\n * @see {@link switchMap}\n * @see {@link mergeMapTo}\n *\n * @param innerObservable An `ObservableInput` to replace each value from the\n * source Observable.\n * @return A function that returns an Observable that emits items from the\n * given `innerObservable` (and optionally transformed through the deprecated\n * `resultSelector`) every time a value is emitted on the source Observable,\n * and taking only the values from the most recently projected inner\n * Observable.\n * @deprecated Will be removed in v9. Use {@link switchMap} instead: `switchMap(() => result)`\n */\nexport function switchMapTo<T, R, O extends ObservableInput<unknown>>(\n  innerObservable: O,\n  resultSelector?: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R\n): OperatorFunction<T, ObservedValueOf<O> | R> {\n  return isFunction(resultSelector) ? switchMap(() => innerObservable, resultSelector) : switchMap(() => innerObservable);\n}\n","import { ObservableInput, ObservedValueOf, OperatorFunction } from '../types';\nimport { switchMap } from './switchMap';\nimport { operate } from '../util/lift';\n\n// TODO: Generate a marble diagram for these docs.\n\n/**\n * Applies an accumulator function over the source Observable where the\n * accumulator function itself returns an Observable, emitting values\n * only from the most recently returned Observable.\n *\n * <span class=\"informal\">It's like {@link mergeScan}, but only the most recent\n * Observable returned by the accumulator is merged into the outer Observable.</span>\n *\n * @see {@link scan}\n * @see {@link mergeScan}\n * @see {@link switchMap}\n *\n * @param accumulator\n * The accumulator function called on each source value.\n * @param seed The initial accumulation value.\n * @return A function that returns an observable of the accumulated values.\n */\nexport function switchScan<T, R, O extends ObservableInput<any>>(\n  accumulator: (acc: R, value: T, index: number) => O,\n  seed: R\n): OperatorFunction<T, ObservedValueOf<O>> {\n  return operate((source, subscriber) => {\n    // The state we will keep up to date to pass into our\n    // accumulator function at each new value from the source.\n    let state = seed;\n\n    // Use `switchMap` on our `source` to do the work of creating\n    // this operator. Note the backwards order here of `switchMap()(source)`\n    // to avoid needing to use `pipe` unnecessarily\n    switchMap(\n      // On each value from the source, call the accumulator with\n      // our previous state, the value and the index.\n      (value: T, index) => accumulator(state, value, index),\n      // Using the deprecated result selector here as a dirty trick\n      // to update our state with the flattened value.\n      (_, innerValue) => ((state = innerValue), innerValue)\n    )(source).subscribe(subscriber);\n\n    return () => {\n      // Release state on finalization\n      state = null!;\n    };\n  });\n}\n","import { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\n\n/**\n * Emits the values emitted by the source Observable until a `notifier`\n * Observable emits a value.\n *\n * <span class=\"informal\">Lets values pass until a second Observable,\n * `notifier`, emits a value. Then, it completes.</span>\n *\n * ![](takeUntil.png)\n *\n * `takeUntil` subscribes and begins mirroring the source Observable. It also\n * monitors a second Observable, `notifier` that you provide. If the `notifier`\n * emits a value, the output Observable stops mirroring the source Observable\n * and completes. If the `notifier` doesn't emit any value and completes\n * then `takeUntil` will pass all values.\n *\n * ## Example\n *\n * Tick every second until the first click happens\n *\n * ```ts\n * import { interval, fromEvent, takeUntil } from 'rxjs';\n *\n * const source = interval(1000);\n * const clicks = fromEvent(document, 'click');\n * const result = source.pipe(takeUntil(clicks));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeWhile}\n * @see {@link skip}\n *\n * @param notifier The `ObservableInput` whose first emitted value will cause the output\n * Observable of `takeUntil` to stop emitting values from the source Observable.\n * @return A function that returns an Observable that emits the values from the\n * source Observable until `notifier` emits its first value.\n */\nexport function takeUntil<T>(notifier: ObservableInput<any>): MonoTypeOperatorFunction<T> {\n  return operate((source, subscriber) => {\n    innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, () => subscriber.complete(), noop));\n    !subscriber.closed && source.subscribe(subscriber);\n  });\n}\n","import { OperatorFunction, MonoTypeOperatorFunction, TruthyTypesOf } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\nexport function takeWhile<T>(predicate: BooleanConstructor, inclusive: true): MonoTypeOperatorFunction<T>;\nexport function takeWhile<T>(predicate: BooleanConstructor, inclusive: false): OperatorFunction<T, TruthyTypesOf<T>>;\nexport function takeWhile<T>(predicate: BooleanConstructor): OperatorFunction<T, TruthyTypesOf<T>>;\nexport function takeWhile<T, S extends T>(predicate: (value: T, index: number) => value is S): OperatorFunction<T, S>;\nexport function takeWhile<T, S extends T>(predicate: (value: T, index: number) => value is S, inclusive: false): OperatorFunction<T, S>;\nexport function takeWhile<T>(predicate: (value: T, index: number) => boolean, inclusive?: boolean): MonoTypeOperatorFunction<T>;\n\n/**\n * Emits values emitted by the source Observable so long as each value satisfies\n * the given `predicate`, and then completes as soon as this `predicate` is not\n * satisfied.\n *\n * <span class=\"informal\">Takes values from the source only while they pass the\n * condition given. When the first value does not satisfy, it completes.</span>\n *\n * ![](takeWhile.png)\n *\n * `takeWhile` subscribes and begins mirroring the source Observable. Each value\n * emitted on the source is given to the `predicate` function which returns a\n * boolean, representing a condition to be satisfied by the source values. The\n * output Observable emits the source values until such time as the `predicate`\n * returns false, at which point `takeWhile` stops mirroring the source\n * Observable and completes the output Observable.\n *\n * ## Example\n *\n * Emit click events only while the clientX property is greater than 200\n *\n * ```ts\n * import { fromEvent, takeWhile } from 'rxjs';\n *\n * const clicks = fromEvent<PointerEvent>(document, 'click');\n * const result = clicks.pipe(takeWhile(ev => ev.clientX > 200));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link take}\n * @see {@link takeLast}\n * @see {@link takeUntil}\n * @see {@link skip}\n *\n * @param predicate A function that evaluates a value emitted by the source\n * Observable and returns a boolean. Also takes the (zero-based) index as the\n * second argument.\n * @param inclusive When set to `true` the value that caused `predicate` to\n * return `false` will also be emitted.\n * @return A function that returns an Observable that emits values from the\n * source Observable so long as each value satisfies the condition defined by\n * the `predicate`, then completes.\n */\nexport function takeWhile<T>(predicate: (value: T, index: number) => boolean, inclusive = false): MonoTypeOperatorFunction<T> {\n  return operate((source, subscriber) => {\n    let index = 0;\n    source.subscribe(\n      createOperatorSubscriber(subscriber, (value) => {\n        const result = predicate(value, index++);\n        (result || inclusive) && subscriber.next(value);\n        !result && subscriber.complete();\n      })\n    );\n  });\n}\n","import { MonoTypeOperatorFunction, Observer } from '../types';\nimport { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\n\n/**\n * An extension to the {@link Observer} interface used only by the {@link tap} operator.\n *\n * It provides a useful set of callbacks a user can register to do side-effects in\n * cases other than what the usual {@link Observer} callbacks are\n * ({@link guide/glossary-and-semantics#next next},\n * {@link guide/glossary-and-semantics#error error} and/or\n * {@link guide/glossary-and-semantics#complete complete}).\n *\n * ## Example\n *\n * ```ts\n * import { fromEvent, switchMap, tap, interval, take } from 'rxjs';\n *\n * const source$ = fromEvent(document, 'click');\n * const result$ = source$.pipe(\n *   switchMap((_, i) => i % 2 === 0\n *     ? fromEvent(document, 'mousemove').pipe(\n *         tap({\n *           subscribe: () => console.log('Subscribed to the mouse move events after click #' + i),\n *           unsubscribe: () => console.log('Mouse move events #' + i + ' unsubscribed'),\n *           finalize: () => console.log('Mouse move events #' + i + ' finalized')\n *         })\n *       )\n *     : interval(1_000).pipe(\n *         take(5),\n *         tap({\n *           subscribe: () => console.log('Subscribed to the 1-second interval events after click #' + i),\n *           unsubscribe: () => console.log('1-second interval events #' + i + ' unsubscribed'),\n *           finalize: () => console.log('1-second interval events #' + i + ' finalized')\n *         })\n *       )\n *   )\n * );\n *\n * const subscription = result$.subscribe({\n *   next: console.log\n * });\n *\n * setTimeout(() => {\n *   console.log('Unsubscribe after 60 seconds');\n *   subscription.unsubscribe();\n * }, 60_000);\n * ```\n */\nexport interface TapObserver<T> extends Observer<T> {\n  /**\n   * The callback that `tap` operator invokes at the moment when the source Observable\n   * gets subscribed to.\n   */\n  subscribe: () => void;\n  /**\n   * The callback that `tap` operator invokes when an explicit\n   * {@link guide/glossary-and-semantics#unsubscription unsubscribe} happens. It won't get invoked on\n   * `error` or `complete` events.\n   */\n  unsubscribe: () => void;\n  /**\n   * The callback that `tap` operator invokes when any kind of\n   * {@link guide/glossary-and-semantics#finalization finalization} happens - either when\n   * the source Observable `error`s or `complete`s or when it gets explicitly unsubscribed\n   * by the user. There is no difference in using this callback or the {@link finalize}\n   * operator, but if you're already using `tap` operator, you can use this callback\n   * instead. You'd get the same result in either case.\n   */\n  finalize: () => void;\n}\nexport function tap<T>(observerOrNext?: Partial<TapObserver<T>> | ((value: T) => void)): MonoTypeOperatorFunction<T>;\n/** @deprecated Instead of passing separate callback arguments, use an observer argument. Signatures taking separate callback arguments will be removed in v8. Details: https://rxjs.dev/deprecations/subscribe-arguments */\nexport function tap<T>(\n  next?: ((value: T) => void) | null,\n  error?: ((error: any) => void) | null,\n  complete?: (() => void) | null\n): MonoTypeOperatorFunction<T>;\n\n/**\n * Used to perform side-effects for notifications from the source observable\n *\n * <span class=\"informal\">Used when you want to affect outside state with a notification without altering the notification</span>\n *\n * ![](tap.png)\n *\n * Tap is designed to allow the developer a designated place to perform side effects. While you _could_ perform side-effects\n * inside of a `map` or a `mergeMap`, that would make their mapping functions impure, which isn't always a big deal, but will\n * make it so you can't do things like memoize those functions. The `tap` operator is designed solely for such side-effects to\n * help you remove side-effects from other operations.\n *\n * For any notification, next, error, or complete, `tap` will call the appropriate callback you have provided to it, via a function\n * reference, or a partial observer, then pass that notification down the stream.\n *\n * The observable returned by `tap` is an exact mirror of the source, with one exception: Any error that occurs -- synchronously -- in a handler\n * provided to `tap` will be emitted as an error from the returned observable.\n *\n * > Be careful! You can mutate objects as they pass through the `tap` operator's handlers.\n *\n * The most common use of `tap` is actually for debugging. You can place a `tap(console.log)` anywhere\n * in your observable `pipe`, log out the notifications as they are emitted by the source returned by the previous\n * operation.\n *\n * ## Examples\n *\n * Check a random number before it is handled. Below is an observable that will use a random number between 0 and 1,\n * and emit `'big'` or `'small'` depending on the size of that number. But we wanted to log what the original number\n * was, so we have added a `tap(console.log)`.\n *\n * ```ts\n * import { of, tap, map } from 'rxjs';\n *\n * of(Math.random()).pipe(\n *   tap(console.log),\n *   map(n => n > 0.5 ? 'big' : 'small')\n * ).subscribe(console.log);\n * ```\n *\n * Using `tap` to analyze a value and force an error. Below is an observable where in our system we only\n * want to emit numbers 3 or less we get from another source. We can force our observable to error\n * using `tap`.\n *\n * ```ts\n * import { of, tap } from 'rxjs';\n *\n * const source = of(1, 2, 3, 4, 5);\n *\n * source.pipe(\n *   tap(n => {\n *     if (n > 3) {\n *       throw new TypeError(`Value ${ n } is greater than 3`);\n *     }\n *   })\n * )\n * .subscribe({ next: console.log, error: err => console.log(err.message) });\n * ```\n *\n * We want to know when an observable completes before moving on to the next observable. The system\n * below will emit a random series of `'X'` characters from 3 different observables in sequence. The\n * only way we know when one observable completes and moves to the next one, in this case, is because\n * we have added a `tap` with the side effect of logging to console.\n *\n * ```ts\n * import { of, concatMap, interval, take, map, tap } from 'rxjs';\n *\n * of(1, 2, 3).pipe(\n *   concatMap(n => interval(1000).pipe(\n *     take(Math.round(Math.random() * 10)),\n *     map(() => 'X'),\n *     tap({ complete: () => console.log(`Done with ${ n }`) })\n *   ))\n * )\n * .subscribe(console.log);\n * ```\n *\n * @see {@link finalize}\n * @see {@link TapObserver}\n *\n * @param observerOrNext A next handler or partial observer\n * @param error An error handler\n * @param complete A completion handler\n * @return A function that returns an Observable identical to the source, but\n * runs the specified Observer or callback(s) for each item.\n */\nexport function tap<T>(\n  observerOrNext?: Partial<TapObserver<T>> | ((value: T) => void) | null,\n  error?: ((e: any) => void) | null,\n  complete?: (() => void) | null\n): MonoTypeOperatorFunction<T> {\n  // We have to check to see not only if next is a function,\n  // but if error or complete were passed. This is because someone\n  // could technically call tap like `tap(null, fn)` or `tap(null, null, fn)`.\n  const tapObserver =\n    isFunction(observerOrNext) || error || complete\n      ? // tslint:disable-next-line: no-object-literal-type-assertion\n        ({ next: observerOrNext as Exclude<typeof observerOrNext, Partial<TapObserver<T>>>, error, complete } as Partial<TapObserver<T>>)\n      : observerOrNext;\n\n  return tapObserver\n    ? operate((source, subscriber) => {\n        tapObserver.subscribe?.();\n        let isUnsub = true;\n        source.subscribe(\n          createOperatorSubscriber(\n            subscriber,\n            (value) => {\n              tapObserver.next?.(value);\n              subscriber.next(value);\n            },\n            () => {\n              isUnsub = false;\n              tapObserver.complete?.();\n              subscriber.complete();\n            },\n            (err) => {\n              isUnsub = false;\n              tapObserver.error?.(err);\n              subscriber.error(err);\n            },\n            () => {\n              if (isUnsub) {\n                tapObserver.unsubscribe?.();\n              }\n              tapObserver.finalize?.();\n            }\n          )\n        );\n      })\n    : // Tap was called with no valid tap observer or handler\n      // (e.g. `tap(null, null, null)` or `tap(null)` or `tap()`)\n      // so we're going to just mirror the source.\n      identity;\n}\n","import { Subscription } from '../Subscription';\n\nimport { MonoTypeOperatorFunction, ObservableInput } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\n\n/**\n * An object interface used by {@link throttle} or {@link throttleTime} that ensure\n * configuration options of these operators.\n *\n * @see {@link throttle}\n * @see {@link throttleTime}\n */\nexport interface ThrottleConfig {\n  /**\n   * If `true`, the resulting Observable will emit the first value from the source\n   * Observable at the **start** of the \"throttling\" process (when starting an\n   * internal timer that prevents other emissions from the source to pass through).\n   * If `false`, it will not emit the first value from the source Observable at the\n   * start of the \"throttling\" process.\n   *\n   * If not provided, defaults to: `true`.\n   */\n  leading?: boolean;\n  /**\n   * If `true`, the resulting Observable will emit the last value from the source\n   * Observable at the **end** of the \"throttling\" process (when ending an internal\n   * timer that prevents other emissions from the source to pass through).\n   * If `false`, it will not emit the last value from the source Observable at the\n   * end of the \"throttling\" process.\n   *\n   * If not provided, defaults to: `false`.\n   */\n  trailing?: boolean;\n}\n\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for a duration determined by another Observable, then repeats this\n * process.\n *\n * <span class=\"informal\">It's like {@link throttleTime}, but the silencing\n * duration is determined by a second Observable.</span>\n *\n * ![](throttle.svg)\n *\n * `throttle` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled by calling the `durationSelector` function with the source value,\n * which returns the \"duration\" Observable. When the duration Observable emits a\n * value, the timer is disabled, and this process repeats for the\n * next source value.\n *\n * ## Example\n *\n * Emit clicks at a rate of at most one click per second\n *\n * ```ts\n * import { fromEvent, throttle, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(throttle(() => interval(1000)));\n *\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounce}\n * @see {@link delayWhen}\n * @see {@link sample}\n * @see {@link throttleTime}\n *\n * @param durationSelector A function that receives a value from the source\n * Observable, for computing the silencing duration for each source value,\n * returned as an `ObservableInput`.\n * @param config A configuration object to define `leading` and `trailing`\n * behavior. Defaults to `{ leading: true, trailing: false }`.\n * @return A function that returns an Observable that performs the throttle\n * operation to limit the rate of emissions from the source.\n */\nexport function throttle<T>(durationSelector: (value: T) => ObservableInput<any>, config?: ThrottleConfig): MonoTypeOperatorFunction<T> {\n  return operate((source, subscriber) => {\n    const { leading = true, trailing = false } = config ?? {};\n    let hasValue = false;\n    let sendValue: T | null = null;\n    let throttled: Subscription | null = null;\n    let isComplete = false;\n\n    const endThrottling = () => {\n      throttled?.unsubscribe();\n      throttled = null;\n      if (trailing) {\n        send();\n        isComplete && subscriber.complete();\n      }\n    };\n\n    const cleanupThrottling = () => {\n      throttled = null;\n      isComplete && subscriber.complete();\n    };\n\n    const startThrottle = (value: T) =>\n      (throttled = innerFrom(durationSelector(value)).subscribe(createOperatorSubscriber(subscriber, endThrottling, cleanupThrottling)));\n\n    const send = () => {\n      if (hasValue) {\n        // Ensure we clear out our value and hasValue flag\n        // before we emit, otherwise reentrant code can cause\n        // issues here.\n        hasValue = false;\n        const value = sendValue!;\n        sendValue = null;\n        // Emit the value.\n        subscriber.next(value);\n        !isComplete && startThrottle(value);\n      }\n    };\n\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        // Regarding the presence of throttled.closed in the following\n        // conditions, if a synchronous duration selector is specified - weird,\n        // but legal - an already-closed subscription will be assigned to\n        // throttled, so the subscription's closed property needs to be checked,\n        // too.\n        (value) => {\n          hasValue = true;\n          sendValue = value;\n          !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));\n        },\n        () => {\n          isComplete = true;\n          !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();\n        }\n      )\n    );\n  });\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { throttle, ThrottleConfig } from './throttle';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\nimport { timer } from '../observable/timer';\n\n/**\n * Emits a value from the source Observable, then ignores subsequent source\n * values for `duration` milliseconds, then repeats this process.\n *\n * <span class=\"informal\">Lets a value pass, then ignores source values for the\n * next `duration` milliseconds.</span>\n *\n * ![](throttleTime.png)\n *\n * `throttleTime` emits the source Observable values on the output Observable\n * when its internal timer is disabled, and ignores source values when the timer\n * is enabled. Initially, the timer is disabled. As soon as the first source\n * value arrives, it is forwarded to the output Observable, and then the timer\n * is enabled. After `duration` milliseconds (or the time unit determined\n * internally by the optional `scheduler`) has passed, the timer is disabled,\n * and this process repeats for the next source value. Optionally takes a\n * {@link SchedulerLike} for managing timers.\n *\n * ## Examples\n *\n * ### Limit click rate\n *\n * Emit clicks at a rate of at most one click per second\n *\n * ```ts\n * import { fromEvent, throttleTime } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(throttleTime(1000));\n *\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link auditTime}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttle}\n *\n * @param duration Time to wait before emitting another value after\n * emitting the last value, measured in milliseconds or the time unit determined\n * internally by the optional `scheduler`.\n * @param scheduler The {@link SchedulerLike} to use for\n * managing the timers that handle the throttling. Defaults to {@link asyncScheduler}.\n * @param config A configuration object to define `leading` and\n * `trailing` behavior. Defaults to `{ leading: true, trailing: false }`.\n * @return A function that returns an Observable that performs the throttle\n * operation to limit the rate of emissions from the source.\n */\nexport function throttleTime<T>(\n  duration: number,\n  scheduler: SchedulerLike = asyncScheduler,\n  config?: ThrottleConfig\n): MonoTypeOperatorFunction<T> {\n  const duration$ = timer(duration, scheduler);\n  return throttle(() => duration$, config);\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { SchedulerLike, OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Emits an object containing the current value, and the time that has\n * passed between emitting the current value and the previous value, which is\n * calculated by using the provided `scheduler`'s `now()` method to retrieve\n * the current time at each emission, then calculating the difference. The `scheduler`\n * defaults to {@link asyncScheduler}, so by default, the `interval` will be in\n * milliseconds.\n *\n * <span class=\"informal\">Convert an Observable that emits items into one that\n * emits indications of the amount of time elapsed between those emissions.</span>\n *\n * ![](timeInterval.png)\n *\n * ## Example\n *\n * Emit interval between current value with the last value\n *\n * ```ts\n * import { interval, timeInterval } from 'rxjs';\n *\n * const seconds = interval(1000);\n *\n * seconds\n *   .pipe(timeInterval())\n *   .subscribe(value => console.log(value));\n *\n * // NOTE: The values will never be this precise,\n * // intervals created with `interval` or `setInterval`\n * // are non-deterministic.\n *\n * // { value: 0, interval: 1000 }\n * // { value: 1, interval: 1000 }\n * // { value: 2, interval: 1000 }\n * ```\n *\n * @param scheduler Scheduler used to get the current time.\n * @return A function that returns an Observable that emits information about\n * value and interval.\n */\nexport function timeInterval<T>(scheduler: SchedulerLike = asyncScheduler): OperatorFunction<T, TimeInterval<T>> {\n  return operate((source, subscriber) => {\n    let last = scheduler.now();\n    source.subscribe(\n      createOperatorSubscriber(subscriber, (value) => {\n        const now = scheduler.now();\n        const interval = now - last;\n        last = now;\n        subscriber.next(new TimeInterval(value, interval));\n      })\n    );\n  });\n}\n\n// TODO(benlesh): make this an interface, export the interface, but not the implemented class,\n// there's no reason users should be manually creating this type.\n\nexport class TimeInterval<T> {\n  /**\n   * @deprecated Internal implementation detail, do not construct directly. Will be made an interface in v8.\n   */\n  constructor(public value: T, public interval: number) {}\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { MonoTypeOperatorFunction, SchedulerLike, OperatorFunction, ObservableInput, ObservedValueOf } from '../types';\nimport { isValidDate } from '../util/isDate';\nimport { Subscription } from '../Subscription';\nimport { operate } from '../util/lift';\nimport { Observable } from '../Observable';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createErrorClass } from '../util/createErrorClass';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\n\nexport interface TimeoutConfig<T, O extends ObservableInput<unknown> = ObservableInput<T>, M = unknown> {\n  /**\n   * The time allowed between values from the source before timeout is triggered.\n   */\n  each?: number;\n\n  /**\n   * The relative time as a `number` in milliseconds, or a specific time as a `Date` object,\n   * by which the first value must arrive from the source before timeout is triggered.\n   */\n  first?: number | Date;\n\n  /**\n   * The scheduler to use with time-related operations within this operator. Defaults to {@link asyncScheduler}\n   */\n  scheduler?: SchedulerLike;\n\n  /**\n   * A factory used to create observable to switch to when timeout occurs. Provides\n   * a {@link TimeoutInfo} about the source observable's emissions and what delay or\n   * exact time triggered the timeout.\n   */\n  with?: (info: TimeoutInfo<T, M>) => O;\n\n  /**\n   * Optional additional metadata you can provide to code that handles\n   * the timeout, will be provided through the {@link TimeoutError}.\n   * This can be used to help identify the source of a timeout or pass along\n   * other information related to the timeout.\n   */\n  meta?: M;\n}\n\nexport interface TimeoutInfo<T, M = unknown> {\n  /** Optional metadata that was provided to the timeout configuration. */\n  readonly meta: M;\n  /** The number of messages seen before the timeout */\n  readonly seen: number;\n  /** The last message seen */\n  readonly lastValue: T | null;\n}\n\n/**\n * An error emitted when a timeout occurs.\n */\nexport interface TimeoutError<T = unknown, M = unknown> extends Error {\n  /**\n   * The information provided to the error by the timeout\n   * operation that created the error. Will be `null` if\n   * used directly in non-RxJS code with an empty constructor.\n   * (Note that using this constructor directly is not recommended,\n   * you should create your own errors)\n   */\n  info: TimeoutInfo<T, M> | null;\n}\n\nexport interface TimeoutErrorCtor {\n  /**\n   * @deprecated Internal implementation detail. Do not construct error instances.\n   * Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269\n   */\n  new <T = unknown, M = unknown>(info?: TimeoutInfo<T, M>): TimeoutError<T, M>;\n}\n\n/**\n * An error thrown by the {@link timeout} operator.\n *\n * Provided so users can use as a type and do quality comparisons.\n * We recommend you do not subclass this or create instances of this class directly.\n * If you have need of a error representing a timeout, you should\n * create your own error class and use that.\n *\n * @see {@link timeout}\n */\nexport const TimeoutError: TimeoutErrorCtor = createErrorClass(\n  (_super) =>\n    function TimeoutErrorImpl(this: any, info: TimeoutInfo<any> | null = null) {\n      _super(this);\n      this.message = 'Timeout has occurred';\n      this.name = 'TimeoutError';\n      this.info = info;\n    }\n);\n\n/**\n * If `with` is provided, this will return an observable that will switch to a different observable if the source\n * does not push values within the specified time parameters.\n *\n * <span class=\"informal\">The most flexible option for creating a timeout behavior.</span>\n *\n * The first thing to know about the configuration is if you do not provide a `with` property to the configuration,\n * when timeout conditions are met, this operator will emit a {@link TimeoutError}. Otherwise, it will use the factory\n * function provided by `with`, and switch your subscription to the result of that. Timeout conditions are provided by\n * the settings in `first` and `each`.\n *\n * The `first` property can be either a `Date` for a specific time, a `number` for a time period relative to the\n * point of subscription, or it can be skipped. This property is to check timeout conditions for the arrival of\n * the first value from the source _only_. The timings of all subsequent values  from the source will be checked\n * against the time period provided by `each`, if it was provided.\n *\n * The `each` property can be either a `number` or skipped. If a value for `each` is provided, it represents the amount of\n * time the resulting observable will wait between the arrival of values from the source before timing out. Note that if\n * `first` is _not_ provided, the value from `each` will be used to check timeout conditions for the arrival of the first\n * value and all subsequent values. If `first` _is_ provided, `each` will only be use to check all values after the first.\n *\n * ## Examples\n *\n * Emit a custom error if there is too much time between values\n *\n * ```ts\n * import { interval, timeout, throwError } from 'rxjs';\n *\n * class CustomTimeoutError extends Error {\n *   constructor() {\n *     super('It was too slow');\n *     this.name = 'CustomTimeoutError';\n *   }\n * }\n *\n * const slow$ = interval(900);\n *\n * slow$.pipe(\n *   timeout({\n *     each: 1000,\n *     with: () => throwError(() => new CustomTimeoutError())\n *   })\n * )\n * .subscribe({\n *   error: console.error\n * });\n * ```\n *\n * Switch to a faster observable if your source is slow.\n *\n * ```ts\n * import { interval, timeout } from 'rxjs';\n *\n * const slow$ = interval(900);\n * const fast$ = interval(500);\n *\n * slow$.pipe(\n *   timeout({\n *     each: 1000,\n *     with: () => fast$,\n *   })\n * )\n * .subscribe(console.log);\n * ```\n * @param config The configuration for the timeout.\n */\nexport function timeout<T, O extends ObservableInput<unknown>, M = unknown>(\n  config: TimeoutConfig<T, O, M> & { with: (info: TimeoutInfo<T, M>) => O }\n): OperatorFunction<T, T | ObservedValueOf<O>>;\n\n/**\n * Returns an observable that will error or switch to a different observable if the source does not push values\n * within the specified time parameters.\n *\n * <span class=\"informal\">The most flexible option for creating a timeout behavior.</span>\n *\n * The first thing to know about the configuration is if you do not provide a `with` property to the configuration,\n * when timeout conditions are met, this operator will emit a {@link TimeoutError}. Otherwise, it will use the factory\n * function provided by `with`, and switch your subscription to the result of that. Timeout conditions are provided by\n * the settings in `first` and `each`.\n *\n * The `first` property can be either a `Date` for a specific time, a `number` for a time period relative to the\n * point of subscription, or it can be skipped. This property is to check timeout conditions for the arrival of\n * the first value from the source _only_. The timings of all subsequent values  from the source will be checked\n * against the time period provided by `each`, if it was provided.\n *\n * The `each` property can be either a `number` or skipped. If a value for `each` is provided, it represents the amount of\n * time the resulting observable will wait between the arrival of values from the source before timing out. Note that if\n * `first` is _not_ provided, the value from `each` will be used to check timeout conditions for the arrival of the first\n * value and all subsequent values. If `first` _is_ provided, `each` will only be use to check all values after the first.\n *\n * ### Handling TimeoutErrors\n *\n * If no `with` property was provided, subscriptions to the resulting observable may emit an error of {@link TimeoutError}.\n * The timeout error provides useful information you can examine when you're handling the error. The most common way to handle\n * the error would be with {@link catchError}, although you could use {@link tap} or just the error handler in your `subscribe` call\n * directly, if your error handling is only a side effect (such as notifying the user, or logging).\n *\n * In this case, you would check the error for `instanceof TimeoutError` to validate that the error was indeed from `timeout`, and\n * not from some other source. If it's not from `timeout`, you should probably rethrow it if you're in a `catchError`.\n *\n * ## Examples\n *\n * Emit a {@link TimeoutError} if the first value, and _only_ the first value, does not arrive within 5 seconds\n *\n * ```ts\n * import { interval, timeout } from 'rxjs';\n *\n * // A random interval that lasts between 0 and 10 seconds per tick\n * const source$ = interval(Math.round(Math.random() * 10_000));\n *\n * source$.pipe(\n *   timeout({ first: 5_000 })\n * )\n * .subscribe({\n *   next: console.log,\n *   error: console.error\n * });\n * ```\n *\n * Emit a {@link TimeoutError} if the source waits longer than 5 seconds between any two values or the first value\n * and subscription.\n *\n * ```ts\n * import { timer, timeout, expand } from 'rxjs';\n *\n * const getRandomTime = () => Math.round(Math.random() * 10_000);\n *\n * // An observable that waits a random amount of time between each delivered value\n * const source$ = timer(getRandomTime())\n *   .pipe(expand(() => timer(getRandomTime())));\n *\n * source$\n *   .pipe(timeout({ each: 5_000 }))\n *   .subscribe({\n *     next: console.log,\n *     error: console.error\n *   });\n * ```\n *\n * Emit a {@link TimeoutError} if the source does not emit before 7 seconds, _or_ if the source waits longer than\n * 5 seconds between any two values after the first.\n *\n * ```ts\n * import { timer, timeout, expand } from 'rxjs';\n *\n * const getRandomTime = () => Math.round(Math.random() * 10_000);\n *\n * // An observable that waits a random amount of time between each delivered value\n * const source$ = timer(getRandomTime())\n *   .pipe(expand(() => timer(getRandomTime())));\n *\n * source$\n *   .pipe(timeout({ first: 7_000, each: 5_000 }))\n *   .subscribe({\n *     next: console.log,\n *     error: console.error\n *   });\n * ```\n */\nexport function timeout<T, M = unknown>(config: Omit<TimeoutConfig<T, any, M>, 'with'>): OperatorFunction<T, T>;\n\n/**\n * Returns an observable that will error if the source does not push its first value before the specified time passed as a `Date`.\n * This is functionally the same as `timeout({ first: someDate })`.\n *\n * <span class=\"informal\">Errors if the first value doesn't show up before the given date and time</span>\n *\n * ![](timeout.png)\n *\n * @param first The date to at which the resulting observable will timeout if the source observable\n * does not emit at least one value.\n * @param scheduler The scheduler to use. Defaults to {@link asyncScheduler}.\n */\nexport function timeout<T>(first: Date, scheduler?: SchedulerLike): MonoTypeOperatorFunction<T>;\n\n/**\n * Returns an observable that will error if the source does not push a value within the specified time in milliseconds.\n * This is functionally the same as `timeout({ each: milliseconds })`.\n *\n * <span class=\"informal\">Errors if it waits too long between any value</span>\n *\n * ![](timeout.png)\n *\n * @param each The time allowed between each pushed value from the source before the resulting observable\n * will timeout.\n * @param scheduler The scheduler to use. Defaults to {@link asyncScheduler}.\n */\nexport function timeout<T>(each: number, scheduler?: SchedulerLike): MonoTypeOperatorFunction<T>;\n\n/**\n *\n * Errors if Observable does not emit a value in given time span.\n *\n * <span class=\"informal\">Timeouts on Observable that doesn't emit values fast enough.</span>\n *\n * ![](timeout.png)\n *\n * @see {@link timeoutWith}\n *\n * @return A function that returns an Observable that mirrors behaviour of the\n * source Observable, unless timeout happens when it throws an error.\n */\nexport function timeout<T, O extends ObservableInput<any>, M>(\n  config: number | Date | TimeoutConfig<T, O, M>,\n  schedulerArg?: SchedulerLike\n): OperatorFunction<T, T | ObservedValueOf<O>> {\n  // Intentionally terse code.\n  // If the first argument is a valid `Date`, then we use it as the `first` config.\n  // Otherwise, if the first argument is a `number`, then we use it as the `each` config.\n  // Otherwise, it can be assumed the first argument is the configuration object itself, and\n  // we destructure that into what we're going to use, setting important defaults as we do.\n  // NOTE: The default for `scheduler` will be the `scheduler` argument if it exists, or\n  // it will default to the `asyncScheduler`.\n  const {\n    first,\n    each,\n    with: _with = timeoutErrorFactory,\n    scheduler = schedulerArg ?? asyncScheduler,\n    meta = null!,\n  } = (isValidDate(config) ? { first: config } : typeof config === 'number' ? { each: config } : config) as TimeoutConfig<T, O, M>;\n\n  if (first == null && each == null) {\n    // Ensure timeout was provided at runtime.\n    throw new TypeError('No timeout provided.');\n  }\n\n  return operate((source, subscriber) => {\n    // This subscription encapsulates our subscription to the\n    // source for this operator. We're capturing it separately,\n    // because if there is a `with` observable to fail over to,\n    // we want to unsubscribe from our original subscription, and\n    // hand of the subscription to that one.\n    let originalSourceSubscription: Subscription;\n    // The subscription for our timeout timer. This changes\n    // every time we get a new value.\n    let timerSubscription: Subscription;\n    // A bit of state we pass to our with and error factories to\n    // tell what the last value we saw was.\n    let lastValue: T | null = null;\n    // A bit of state we pass to the with and error factories to\n    // tell how many values we have seen so far.\n    let seen = 0;\n    const startTimer = (delay: number) => {\n      timerSubscription = executeSchedule(\n        subscriber,\n        scheduler,\n        () => {\n          try {\n            originalSourceSubscription.unsubscribe();\n            innerFrom(\n              _with!({\n                meta,\n                lastValue,\n                seen,\n              })\n            ).subscribe(subscriber);\n          } catch (err) {\n            subscriber.error(err);\n          }\n        },\n        delay\n      );\n    };\n\n    originalSourceSubscription = source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (value: T) => {\n          // clear the timer so we can emit and start another one.\n          timerSubscription?.unsubscribe();\n          seen++;\n          // Emit\n          subscriber.next((lastValue = value));\n          // null | undefined are both < 0. Thanks, JavaScript.\n          each! > 0 && startTimer(each!);\n        },\n        undefined,\n        undefined,\n        () => {\n          if (!timerSubscription?.closed) {\n            timerSubscription?.unsubscribe();\n          }\n          // Be sure not to hold the last value in memory after unsubscription\n          // it could be quite large.\n          lastValue = null;\n        }\n      )\n    );\n\n    // Intentionally terse code.\n    // If we've `seen` a value, that means the \"first\" clause was met already, if it existed.\n    //   it also means that a timer was already started for \"each\" (in the next handler above).\n    // If `first` was provided, and it's a number, then use it.\n    // If `first` was provided and it's not a number, it's a Date, and we get the difference between it and \"now\".\n    // If `first` was not provided at all, then our first timer will be the value from `each`.\n    !seen && startTimer(first != null ? (typeof first === 'number' ? first : +first - scheduler!.now()) : each!);\n  });\n}\n\n/**\n * The default function to use to emit an error when timeout occurs and a `with` function\n * is not specified.\n * @param info The information about the timeout to pass along to the error\n */\nfunction timeoutErrorFactory(info: TimeoutInfo<any>): Observable<never> {\n  throw new TimeoutError(info);\n}\n","import { async } from '../scheduler/async';\nimport { isValidDate } from '../util/isDate';\nimport { ObservableInput, OperatorFunction, SchedulerLike } from '../types';\nimport { timeout } from './timeout';\n\n/** @deprecated Replaced with {@link timeout}. Instead of `timeoutWith(someDate, a$, scheduler)`, use the configuration object\n * `timeout({ first: someDate, with: () => a$, scheduler })`. Will be removed in v8. */\nexport function timeoutWith<T, R>(dueBy: Date, switchTo: ObservableInput<R>, scheduler?: SchedulerLike): OperatorFunction<T, T | R>;\n/** @deprecated Replaced with {@link timeout}. Instead of `timeoutWith(100, a$, scheduler)`, use the configuration object\n *  `timeout({ each: 100, with: () => a$, scheduler })`. Will be removed in v8. */\nexport function timeoutWith<T, R>(waitFor: number, switchTo: ObservableInput<R>, scheduler?: SchedulerLike): OperatorFunction<T, T | R>;\n\n/**\n * When the passed timespan elapses before the source emits any given value, it will unsubscribe from the source,\n * and switch the subscription to another observable.\n *\n * <span class=\"informal\">Used to switch to a different observable if your source is being slow.</span>\n *\n * Useful in cases where:\n *\n * - You want to switch to a different source that may be faster.\n * - You want to notify a user that the data stream is slow.\n * - You want to emit a custom error rather than the {@link TimeoutError} emitted\n *   by the default usage of {@link timeout}.\n *\n * If the first parameter is passed as Date and the time of the Date arrives before the first value arrives from the source,\n * it will unsubscribe from the source and switch the subscription to another observable.\n *\n * <span class=\"informal\">Use Date object to switch to a different observable if the first value doesn't arrive by a specific time.</span>\n *\n * Can be used to set a timeout only for the first value, however it's recommended to use the {@link timeout} operator with\n * the `first` configuration to get the same effect.\n *\n * ## Examples\n *\n * Fallback to a faster observable\n *\n * ```ts\n * import { interval, timeoutWith } from 'rxjs';\n *\n * const slow$ = interval(1000);\n * const faster$ = interval(500);\n *\n * slow$\n *   .pipe(timeoutWith(900, faster$))\n *   .subscribe(console.log);\n * ```\n *\n * Emit your own custom timeout error\n *\n * ```ts\n * import { interval, timeoutWith, throwError } from 'rxjs';\n *\n * class CustomTimeoutError extends Error {\n *   constructor() {\n *     super('It was too slow');\n *     this.name = 'CustomTimeoutError';\n *   }\n * }\n *\n * const slow$ = interval(1000);\n *\n * slow$\n *   .pipe(timeoutWith(900, throwError(() => new CustomTimeoutError())))\n *   .subscribe({\n *     error: err => console.error(err.message)\n *   });\n * ```\n *\n * @see {@link timeout}\n *\n * @param due When passed a number, used as the time (in milliseconds) allowed between each value from the source before timeout\n * is triggered. When passed a Date, used as the exact time at which the timeout will be triggered if the first value does not arrive.\n * @param withObservable The observable to switch to when timeout occurs.\n * @param scheduler The scheduler to use with time-related operations within this operator. Defaults to {@link asyncScheduler}\n * @return A function that returns an Observable that mirrors behaviour of the\n * source Observable, unless timeout happens when it starts emitting values\n * from the `ObservableInput` passed as a second parameter.\n * @deprecated Replaced with {@link timeout}. Instead of `timeoutWith(100, a$, scheduler)`, use {@link timeout} with the configuration\n * object: `timeout({ each: 100, with: () => a$, scheduler })`. Instead of `timeoutWith(someDate, a$, scheduler)`, use {@link timeout}\n * with the configuration object: `timeout({ first: someDate, with: () => a$, scheduler })`. Will be removed in v8.\n */\nexport function timeoutWith<T, R>(\n  due: number | Date,\n  withObservable: ObservableInput<R>,\n  scheduler?: SchedulerLike\n): OperatorFunction<T, T | R> {\n  let first: number | Date | undefined;\n  let each: number | undefined;\n  let _with: () => ObservableInput<R>;\n  scheduler = scheduler ?? async;\n\n  if (isValidDate(due)) {\n    first = due;\n  } else if (typeof due === 'number') {\n    each = due;\n  }\n\n  if (withObservable) {\n    _with = () => withObservable;\n  } else {\n    throw new TypeError('No observable provided to switch to');\n  }\n\n  if (first == null && each == null) {\n    // Ensure timeout was provided at runtime.\n    throw new TypeError('No timeout provided.');\n  }\n\n  return timeout<T, ObservableInput<R>>({\n    first,\n    each,\n    scheduler,\n    with: _with,\n  });\n}\n","import { OperatorFunction, TimestampProvider, Timestamp } from '../types';\nimport { dateTimestampProvider } from '../scheduler/dateTimestampProvider';\nimport { map } from './map';\n\n/**\n * Attaches a timestamp to each item emitted by an observable indicating when it was emitted\n *\n * The `timestamp` operator maps the *source* observable stream to an object of type\n * `{value: T, timestamp: R}`. The properties are generically typed. The `value` property contains the value\n * and type of the *source* observable. The `timestamp` is generated by the schedulers `now` function. By\n * default, it uses the `asyncScheduler` which simply returns `Date.now()` (milliseconds since 1970/01/01\n * 00:00:00:000) and therefore is of type `number`.\n *\n * ![](timestamp.png)\n *\n * ## Example\n *\n * In this example there is a timestamp attached to the document's click events\n *\n * ```ts\n * import { fromEvent, timestamp } from 'rxjs';\n *\n * const clickWithTimestamp = fromEvent(document, 'click').pipe(\n *   timestamp()\n * );\n *\n * // Emits data of type { value: PointerEvent, timestamp: number }\n * clickWithTimestamp.subscribe(data => {\n *   console.log(data);\n * });\n * ```\n *\n * @param timestampProvider An object with a `now()` method used to get the current timestamp.\n * @return A function that returns an Observable that attaches a timestamp to\n * each item emitted by the source Observable indicating when it was emitted.\n */\nexport function timestamp<T>(timestampProvider: TimestampProvider = dateTimestampProvider): OperatorFunction<T, Timestamp<T>> {\n  return map((value: T) => ({ value, timestamp: timestampProvider.now() }));\n}\n","import { Observable } from '../Observable';\nimport { OperatorFunction, ObservableInput } from '../types';\nimport { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nimport { innerFrom } from '../observable/innerFrom';\n\n/**\n * Branch out the source Observable values as a nested Observable whenever\n * `windowBoundaries` emits.\n *\n * <span class=\"informal\">It's like {@link buffer}, but emits a nested Observable\n * instead of an array.</span>\n *\n * ![](window.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits connected, non-overlapping\n * windows. It emits the current window and opens a new one whenever the\n * `windowBoundaries` emits an item. `windowBoundaries` can be any type that\n * `ObservableInput` accepts. It internally gets converted to an Observable.\n * Because each window is an Observable, the output is a higher-order Observable.\n *\n * ## Example\n *\n * In every window of 1 second each, emit at most 2 click events\n *\n * ```ts\n * import { fromEvent, interval, window, map, take, mergeAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const sec = interval(1000);\n * const result = clicks.pipe(\n *   window(sec),\n *   map(win => win.pipe(take(2))), // take at most 2 emissions from each window\n *   mergeAll()                     // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link windowWhen}\n * @see {@link buffer}\n *\n * @param windowBoundaries An `ObservableInput` that completes the\n * previous window and starts a new window.\n * @return A function that returns an Observable of windows, which are\n * Observables emitting values of the source Observable.\n */\nexport function window<T>(windowBoundaries: ObservableInput<any>): OperatorFunction<T, Observable<T>> {\n  return operate((source, subscriber) => {\n    let windowSubject: Subject<T> = new Subject<T>();\n\n    subscriber.next(windowSubject.asObservable());\n\n    const errorHandler = (err: any) => {\n      windowSubject.error(err);\n      subscriber.error(err);\n    };\n\n    // Subscribe to our source\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (value) => windowSubject?.next(value),\n        () => {\n          windowSubject.complete();\n          subscriber.complete();\n        },\n        errorHandler\n      )\n    );\n\n    // Subscribe to the window boundaries.\n    innerFrom(windowBoundaries).subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        () => {\n          windowSubject.complete();\n          subscriber.next((windowSubject = new Subject()));\n        },\n        noop,\n        errorHandler\n      )\n    );\n\n    return () => {\n      // Unsubscribing the subject ensures that anyone who has captured\n      // a reference to this window that tries to use it after it can\n      // no longer get values from the source will get an ObjectUnsubscribedError.\n      windowSubject?.unsubscribe();\n      windowSubject = null!;\n    };\n  });\n}\n","import { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\n\n/**\n * Branch out the source Observable values as a nested Observable with each\n * nested Observable emitting at most `windowSize` values.\n *\n * <span class=\"informal\">It's like {@link bufferCount}, but emits a nested\n * Observable instead of an array.</span>\n *\n * ![](windowCount.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits windows every `startWindowEvery`\n * items, each containing no more than `windowSize` items. When the source\n * Observable completes or encounters an error, the output Observable emits\n * the current window and propagates the notification from the source\n * Observable. If `startWindowEvery` is not provided, then new windows are\n * started immediately at the start of the source and when each window completes\n * with size `windowSize`.\n *\n * ## Examples\n *\n * Ignore every 3rd click event, starting from the first one\n *\n * ```ts\n * import { fromEvent, windowCount, map, skip, mergeAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n *   windowCount(3),\n *   map(win => win.pipe(skip(1))), // skip first of every 3 clicks\n *   mergeAll()                     // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Ignore every 3rd click event, starting from the third one\n *\n * ```ts\n * import { fromEvent, windowCount, mergeAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n *   windowCount(2, 3),\n *   mergeAll() // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link windowWhen}\n * @see {@link bufferCount}\n *\n * @param windowSize The maximum number of values emitted by each window.\n * @param startWindowEvery Interval at which to start a new window. For example\n * if `startWindowEvery` is `2`, then a new window will be started on every\n * other value from the source. A new window is started at the beginning of the\n * source by default.\n * @return A function that returns an Observable of windows, which in turn are\n * Observable of values.\n */\nexport function windowCount<T>(windowSize: number, startWindowEvery: number = 0): OperatorFunction<T, Observable<T>> {\n  const startEvery = startWindowEvery > 0 ? startWindowEvery : windowSize;\n\n  return operate((source, subscriber) => {\n    let windows = [new Subject<T>()];\n    let starts: number[] = [];\n    let count = 0;\n\n    // Open the first window.\n    subscriber.next(windows[0].asObservable());\n\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (value: T) => {\n          // Emit the value through all current windows.\n          // We don't need to create a new window yet, we\n          // do that as soon as we close one.\n          for (const window of windows) {\n            window.next(value);\n          }\n          // Here we're using the size of the window array to figure\n          // out if the oldest window has emitted enough values. We can do this\n          // because the size of the window array is a function of the values\n          // seen by the subscription. If it's time to close it, we complete\n          // it and remove it.\n          const c = count - windowSize + 1;\n          if (c >= 0 && c % startEvery === 0) {\n            windows.shift()!.complete();\n          }\n\n          // Look to see if the next count tells us it's time to open a new window.\n          // TODO: We need to figure out if this really makes sense. We're technically\n          // emitting windows *before* we have a value to emit them for. It's probably\n          // more expected that we should be emitting the window when the start\n          // count is reached -- not before.\n          if (++count % startEvery === 0) {\n            const window = new Subject<T>();\n            windows.push(window);\n            subscriber.next(window.asObservable());\n          }\n        },\n        () => {\n          while (windows.length > 0) {\n            windows.shift()!.complete();\n          }\n          subscriber.complete();\n        },\n        (err) => {\n          while (windows.length > 0) {\n            windows.shift()!.error(err);\n          }\n          subscriber.error(err);\n        },\n        () => {\n          starts = null!;\n          windows = null!;\n        }\n      )\n    );\n  });\n}\n","import { Subject } from '../Subject';\nimport { asyncScheduler } from '../scheduler/async';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { Observer, OperatorFunction, SchedulerLike } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { arrRemove } from '../util/arrRemove';\nimport { popScheduler } from '../util/args';\nimport { executeSchedule } from '../util/executeSchedule';\n\nexport function windowTime<T>(windowTimeSpan: number, scheduler?: SchedulerLike): OperatorFunction<T, Observable<T>>;\nexport function windowTime<T>(\n  windowTimeSpan: number,\n  windowCreationInterval: number,\n  scheduler?: SchedulerLike\n): OperatorFunction<T, Observable<T>>;\nexport function windowTime<T>(\n  windowTimeSpan: number,\n  windowCreationInterval: number | null | void,\n  maxWindowSize: number,\n  scheduler?: SchedulerLike\n): OperatorFunction<T, Observable<T>>;\n\n/**\n * Branch out the source Observable values as a nested Observable periodically\n * in time.\n *\n * <span class=\"informal\">It's like {@link bufferTime}, but emits a nested\n * Observable instead of an array.</span>\n *\n * ![](windowTime.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable starts a new window periodically, as\n * determined by the `windowCreationInterval` argument. It emits each window\n * after a fixed timespan, specified by the `windowTimeSpan` argument. When the\n * source Observable completes or encounters an error, the output Observable\n * emits the current window and propagates the notification from the source\n * Observable. If `windowCreationInterval` is not provided, the output\n * Observable starts a new window when the previous window of duration\n * `windowTimeSpan` completes. If `maxWindowCount` is provided, each window\n * will emit at most fixed number of values. Window will complete immediately\n * after emitting last value and next one still will open as specified by\n * `windowTimeSpan` and `windowCreationInterval` arguments.\n *\n * ## Examples\n *\n * In every window of 1 second each, emit at most 2 click events\n *\n * ```ts\n * import { fromEvent, windowTime, map, take, mergeAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n *   windowTime(1000),\n *   map(win => win.pipe(take(2))), // take at most 2 emissions from each window\n *   mergeAll()                     // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Every 5 seconds start a window 1 second long, and emit at most 2 click events per window\n *\n * ```ts\n * import { fromEvent, windowTime, map, take, mergeAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n *   windowTime(1000, 5000),\n *   map(win => win.pipe(take(2))), // take at most 2 emissions from each window\n *   mergeAll()                     // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * Same as example above but with `maxWindowCount` instead of `take`\n *\n * ```ts\n * import { fromEvent, windowTime, mergeAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n *   windowTime(1000, 5000, 2), // take at most 2 emissions from each window\n *   mergeAll()                 // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowCount}\n * @see {@link windowToggle}\n * @see {@link windowWhen}\n * @see {@link bufferTime}\n *\n * @param windowTimeSpan The amount of time, in milliseconds, to fill each window.\n * @param windowCreationInterval The interval at which to start new\n * windows.\n * @param maxWindowSize Max number of\n * values each window can emit before completion.\n * @param scheduler The scheduler on which to schedule the\n * intervals that determine window boundaries.\n * @return A function that returns an Observable of windows, which in turn are\n * Observables.\n */\nexport function windowTime<T>(windowTimeSpan: number, ...otherArgs: any[]): OperatorFunction<T, Observable<T>> {\n  const scheduler = popScheduler(otherArgs) ?? asyncScheduler;\n  const windowCreationInterval = (otherArgs[0] as number) ?? null;\n  const maxWindowSize = (otherArgs[1] as number) || Infinity;\n\n  return operate((source, subscriber) => {\n    // The active windows, their related subscriptions, and removal functions.\n    let windowRecords: WindowRecord<T>[] | null = [];\n    // If true, it means that every time we close a window, we want to start a new window.\n    // This is only really used for when *just* the time span is passed.\n    let restartOnClose = false;\n\n    const closeWindow = (record: { window: Subject<T>; subs: Subscription }) => {\n      const { window, subs } = record;\n      window.complete();\n      subs.unsubscribe();\n      arrRemove(windowRecords, record);\n      restartOnClose && startWindow();\n    };\n\n    /**\n     * Called every time we start a new window. This also does\n     * the work of scheduling the job to close the window.\n     */\n    const startWindow = () => {\n      if (windowRecords) {\n        const subs = new Subscription();\n        subscriber.add(subs);\n        const window = new Subject<T>();\n        const record = {\n          window,\n          subs,\n          seen: 0,\n        };\n        windowRecords.push(record);\n        subscriber.next(window.asObservable());\n        executeSchedule(subs, scheduler, () => closeWindow(record), windowTimeSpan);\n      }\n    };\n\n    if (windowCreationInterval !== null && windowCreationInterval >= 0) {\n      // The user passed both a windowTimeSpan (required), and a creation interval\n      // That means we need to start new window on the interval, and those windows need\n      // to wait the required time span before completing.\n      executeSchedule(subscriber, scheduler, startWindow, windowCreationInterval, true);\n    } else {\n      restartOnClose = true;\n    }\n\n    startWindow();\n\n    /**\n     * We need to loop over a copy of the window records several times in this operator.\n     * This is to save bytes over the wire more than anything.\n     * The reason we copy the array is that reentrant code could mutate the array while\n     * we are iterating over it.\n     */\n    const loop = (cb: (record: WindowRecord<T>) => void) => windowRecords!.slice().forEach(cb);\n\n    /**\n     * Used to notify all of the windows and the subscriber in the same way\n     * in the error and complete handlers.\n     */\n    const terminate = (cb: (consumer: Observer<any>) => void) => {\n      loop(({ window }) => cb(window));\n      cb(subscriber);\n      subscriber.unsubscribe();\n    };\n\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (value: T) => {\n          // Notify all windows of the value.\n          loop((record) => {\n            record.window.next(value);\n            // If the window is over the max size, we need to close it.\n            maxWindowSize <= ++record.seen && closeWindow(record);\n          });\n        },\n        // Complete the windows and the downstream subscriber and clean up.\n        () => terminate((consumer) => consumer.complete()),\n        // Notify the windows and the downstream subscriber of the error and clean up.\n        (err) => terminate((consumer) => consumer.error(err))\n      )\n    );\n\n    // Additional finalization. This will be called when the\n    // destination tears down. Other finalizations are registered implicitly\n    // above via subscription.\n    return () => {\n      // Ensure that the buffer is released.\n      windowRecords = null!;\n    };\n  });\n}\n\ninterface WindowRecord<T> {\n  seen: number;\n  window: Subject<T>;\n  subs: Subscription;\n}\n","import { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\nimport { ObservableInput, OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nimport { arrRemove } from '../util/arrRemove';\n\n/**\n * Branch out the source Observable values as a nested Observable starting from\n * an emission from `openings` and ending when the output of `closingSelector`\n * emits.\n *\n * <span class=\"informal\">It's like {@link bufferToggle}, but emits a nested\n * Observable instead of an array.</span>\n *\n * ![](windowToggle.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits windows that contain those items\n * emitted by the source Observable between the time when the `openings`\n * Observable emits an item and when the Observable returned by\n * `closingSelector` emits an item.\n *\n * ## Example\n *\n * Every other second, emit the click events from the next 500ms\n *\n * ```ts\n * import { fromEvent, interval, windowToggle, EMPTY, mergeAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const openings = interval(1000);\n * const result = clicks.pipe(\n *   windowToggle(openings, i => i % 2 ? interval(500) : EMPTY),\n *   mergeAll()\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowWhen}\n * @see {@link bufferToggle}\n *\n * @param openings An observable of notifications to start new windows.\n * @param closingSelector A function that takes the value emitted by the\n * `openings` observable and returns an Observable, which, when it emits a next\n * notification, signals that the associated window should complete.\n * @return A function that returns an Observable of windows, which in turn are\n * Observables.\n */\nexport function windowToggle<T, O>(\n  openings: ObservableInput<O>,\n  closingSelector: (openValue: O) => ObservableInput<any>\n): OperatorFunction<T, Observable<T>> {\n  return operate((source, subscriber) => {\n    const windows: Subject<T>[] = [];\n\n    const handleError = (err: any) => {\n      while (0 < windows.length) {\n        windows.shift()!.error(err);\n      }\n      subscriber.error(err);\n    };\n\n    innerFrom(openings).subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (openValue) => {\n          const window = new Subject<T>();\n          windows.push(window);\n          const closingSubscription = new Subscription();\n          const closeWindow = () => {\n            arrRemove(windows, window);\n            window.complete();\n            closingSubscription.unsubscribe();\n          };\n\n          let closingNotifier: Observable<any>;\n          try {\n            closingNotifier = innerFrom(closingSelector(openValue));\n          } catch (err) {\n            handleError(err);\n            return;\n          }\n\n          subscriber.next(window.asObservable());\n\n          closingSubscription.add(closingNotifier.subscribe(createOperatorSubscriber(subscriber, closeWindow, noop, handleError)));\n        },\n        noop\n      )\n    );\n\n    // Subscribe to the source to get things started.\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (value: T) => {\n          // Copy the windows array before we emit to\n          // make sure we don't have issues with reentrant code.\n          const windowsCopy = windows.slice();\n          for (const window of windowsCopy) {\n            window.next(value);\n          }\n        },\n        () => {\n          // Complete all of our windows before we complete.\n          while (0 < windows.length) {\n            windows.shift()!.complete();\n          }\n          subscriber.complete();\n        },\n        handleError,\n        () => {\n          // Add this finalization so that all window subjects are\n          // disposed of. This way, if a user tries to subscribe\n          // to a window *after* the outer subscription has been unsubscribed,\n          // they will get an error, instead of waiting forever to\n          // see if a value arrives.\n          while (0 < windows.length) {\n            windows.shift()!.unsubscribe();\n          }\n        }\n      )\n    );\n  });\n}\n","import { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nimport { ObservableInput, OperatorFunction } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\n\n/**\n * Branch out the source Observable values as a nested Observable using a\n * factory function of closing Observables to determine when to start a new\n * window.\n *\n * <span class=\"informal\">It's like {@link bufferWhen}, but emits a nested\n * Observable instead of an array.</span>\n *\n * ![](windowWhen.png)\n *\n * Returns an Observable that emits windows of items it collects from the source\n * Observable. The output Observable emits connected, non-overlapping windows.\n * It emits the current window and opens a new one whenever the Observable\n * produced by the specified `closingSelector` function emits an item. The first\n * window is opened immediately when subscribing to the output Observable.\n *\n * ## Example\n *\n * Emit only the first two clicks events in every window of [1-5] random seconds\n *\n * ```ts\n * import { fromEvent, windowWhen, interval, map, take, mergeAll } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(\n *   windowWhen(() => interval(1000 + Math.random() * 4000)),\n *   map(win => win.pipe(take(2))), // take at most 2 emissions from each window\n *   mergeAll()                     // flatten the Observable-of-Observables\n * );\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link window}\n * @see {@link windowCount}\n * @see {@link windowTime}\n * @see {@link windowToggle}\n * @see {@link bufferWhen}\n *\n * @param closingSelector A function that takes no arguments and returns an\n * {@link ObservableInput} (that gets converted to Observable) that signals\n * (on either `next` or `complete`) when to close the previous window and\n * start a new one.\n * @return A function that returns an Observable of windows, which in turn are\n * Observables.\n */\nexport function windowWhen<T>(closingSelector: () => ObservableInput<any>): OperatorFunction<T, Observable<T>> {\n  return operate((source, subscriber) => {\n    let window: Subject<T> | null;\n    let closingSubscriber: Subscriber<any> | undefined;\n\n    /**\n     * When we get an error, we have to notify both the\n     * destination subscriber and the window.\n     */\n    const handleError = (err: any) => {\n      window!.error(err);\n      subscriber.error(err);\n    };\n\n    /**\n     * Called every time we need to open a window.\n     * Recursive, as it will start the closing notifier, which\n     * inevitably *should* call openWindow -- but may not if\n     * it is a \"never\" observable.\n     */\n    const openWindow = () => {\n      // We need to clean up our closing subscription,\n      // we only cared about the first next or complete notification.\n      closingSubscriber?.unsubscribe();\n\n      // Close our window before starting a new one.\n      window?.complete();\n\n      // Start the new window.\n      window = new Subject<T>();\n      subscriber.next(window.asObservable());\n\n      // Get our closing notifier.\n      let closingNotifier: Observable<any>;\n      try {\n        closingNotifier = innerFrom(closingSelector());\n      } catch (err) {\n        handleError(err);\n        return;\n      }\n\n      // Subscribe to the closing notifier, be sure\n      // to capture the subscriber (aka Subscription)\n      // so we can clean it up when we close the window\n      // and open a new one.\n      closingNotifier.subscribe((closingSubscriber = createOperatorSubscriber(subscriber, openWindow, openWindow, handleError)));\n    };\n\n    // Start the first window.\n    openWindow();\n\n    // Subscribe to the source\n    source.subscribe(\n      createOperatorSubscriber(\n        subscriber,\n        (value) => window!.next(value),\n        () => {\n          // The source completed, close the window and complete.\n          window!.complete();\n          subscriber.complete();\n        },\n        handleError,\n        () => {\n          // Be sure to clean up our closing subscription\n          // when this tears down.\n          closingSubscriber?.unsubscribe();\n          window = null!;\n        }\n      )\n    );\n  });\n}\n","import { OperatorFunction, ObservableInputTuple } from '../types';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { identity } from '../util/identity';\nimport { noop } from '../util/noop';\nimport { popResultSelector } from '../util/args';\n\nexport function withLatestFrom<T, O extends unknown[]>(...inputs: [...ObservableInputTuple<O>]): OperatorFunction<T, [T, ...O]>;\n\nexport function withLatestFrom<T, O extends unknown[], R>(\n  ...inputs: [...ObservableInputTuple<O>, (...value: [T, ...O]) => R]\n): OperatorFunction<T, R>;\n\n/**\n * Combines the source Observable with other Observables to create an Observable\n * whose values are calculated from the latest values of each, only when the\n * source emits.\n *\n * <span class=\"informal\">Whenever the source Observable emits a value, it\n * computes a formula using that value plus the latest values from other input\n * Observables, then emits the output of that formula.</span>\n *\n * ![](withLatestFrom.png)\n *\n * `withLatestFrom` combines each value from the source Observable (the\n * instance) with the latest values from the other input Observables only when\n * the source emits a value, optionally using a `project` function to determine\n * the value to be emitted on the output Observable. All input Observables must\n * emit at least one value before the output Observable will emit a value.\n *\n * ## Example\n *\n * On every click event, emit an array with the latest timer event plus the click event\n *\n * ```ts\n * import { fromEvent, interval, withLatestFrom } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const timer = interval(1000);\n * const result = clicks.pipe(withLatestFrom(timer));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link combineLatest}\n *\n * @param inputs An input Observable to combine with the source Observable. More\n * than one input Observables may be given as argument. If the last parameter is\n * a function, it will be used as a projection function for combining values\n * together. When the function is called, it receives all values in order of the\n * Observables passed, where the first parameter is a value from the source\n * Observable. (e.g.\n * `a.pipe(withLatestFrom(b, c), map(([a1, b1, c1]) => a1 + b1 + c1))`). If this\n * is not passed, arrays will be emitted on the output Observable.\n * @return A function that returns an Observable of projected values from the\n * most recent values from each input Observable, or an array of the most\n * recent values from each input Observable.\n */\nexport function withLatestFrom<T, R>(...inputs: any[]): OperatorFunction<T, R | any[]> {\n  const project = popResultSelector(inputs) as ((...args: any[]) => R) | undefined;\n\n  return operate((source, subscriber) => {\n    const len = inputs.length;\n    const otherValues = new Array(len);\n    // An array of whether or not the other sources have emitted. Matched with them by index.\n    // TODO: At somepoint, we should investigate the performance implications here, and look\n    // into using a `Set()` and checking the `size` to see if we're ready.\n    let hasValue = inputs.map(() => false);\n    // Flipped true when we have at least one value from all other sources and\n    // we are ready to start emitting values.\n    let ready = false;\n\n    // Other sources. Note that here we are not checking `subscriber.closed`,\n    // this causes all inputs to be subscribed to, even if nothing can be emitted\n    // from them. This is an important distinction because subscription constitutes\n    // a side-effect.\n    for (let i = 0; i < len; i++) {\n      innerFrom(inputs[i]).subscribe(\n        createOperatorSubscriber(\n          subscriber,\n          (value) => {\n            otherValues[i] = value;\n            if (!ready && !hasValue[i]) {\n              // If we're not ready yet, flag to show this observable has emitted.\n              hasValue[i] = true;\n              // Intentionally terse code.\n              // If all of our other observables have emitted, set `ready` to `true`,\n              // so we know we can start emitting values, then clean up the `hasValue` array,\n              // because we don't need it anymore.\n              (ready = hasValue.every(identity)) && (hasValue = null!);\n            }\n          },\n          // Completing one of the other sources has\n          // no bearing on the completion of our result.\n          noop\n        )\n      );\n    }\n\n    // Source subscription\n    source.subscribe(\n      createOperatorSubscriber(subscriber, (value) => {\n        if (ready) {\n          // We have at least one value from the other sources. Go ahead and emit.\n          const values = [value, ...otherValues];\n          subscriber.next(project ? project(...values) : values);\n        }\n      })\n    );\n  });\n}\n","import { Observable } from '../Observable';\nimport { ObservableInputTuple } from '../types';\nimport { innerFrom } from './innerFrom';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { EMPTY } from './empty';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { popResultSelector } from '../util/args';\n\nexport function zip<A extends readonly unknown[]>(sources: [...ObservableInputTuple<A>]): Observable<A>;\nexport function zip<A extends readonly unknown[], R>(\n  sources: [...ObservableInputTuple<A>],\n  resultSelector: (...values: A) => R\n): Observable<R>;\nexport function zip<A extends readonly unknown[]>(...sources: [...ObservableInputTuple<A>]): Observable<A>;\nexport function zip<A extends readonly unknown[], R>(\n  ...sourcesAndResultSelector: [...ObservableInputTuple<A>, (...values: A) => R]\n): Observable<R>;\n\n/**\n * Combines multiple Observables to create an Observable whose values are calculated from the values, in order, of each\n * of its input Observables.\n *\n * If the last parameter is a function, this function is used to compute the created value from the input values.\n * Otherwise, an array of the input values is returned.\n *\n * ## Example\n *\n * Combine age and name from different sources\n *\n * ```ts\n * import { of, zip, map } from 'rxjs';\n *\n * const age$ = of(27, 25, 29);\n * const name$ = of('Foo', 'Bar', 'Beer');\n * const isDev$ = of(true, true, false);\n *\n * zip(age$, name$, isDev$).pipe(\n *   map(([age, name, isDev]) => ({ age, name, isDev }))\n * )\n * .subscribe(x => console.log(x));\n *\n * // Outputs\n * // { age: 27, name: 'Foo', isDev: true }\n * // { age: 25, name: 'Bar', isDev: true }\n * // { age: 29, name: 'Beer', isDev: false }\n * ```\n *\n * @param args Any number of `ObservableInput`s provided either as an array or as an object\n * to combine with each other.\n * @return An Observable of array values of the values emitted at the same index from each\n * individual `ObservableInput`.\n */\nexport function zip(...args: unknown[]): Observable<unknown> {\n  const resultSelector = popResultSelector(args);\n\n  const sources = argsOrArgArray(args) as Observable<unknown>[];\n\n  return sources.length\n    ? new Observable<unknown[]>((subscriber) => {\n        // A collection of buffers of values from each source.\n        // Keyed by the same index with which the sources were passed in.\n        let buffers: unknown[][] = sources.map(() => []);\n\n        // An array of flags of whether or not the sources have completed.\n        // This is used to check to see if we should complete the result.\n        // Keyed by the same index with which the sources were passed in.\n        let completed = sources.map(() => false);\n\n        // When everything is done, release the arrays above.\n        subscriber.add(() => {\n          buffers = completed = null!;\n        });\n\n        // Loop over our sources and subscribe to each one. The index `i` is\n        // especially important here, because we use it in closures below to\n        // access the related buffers and completion properties\n        for (let sourceIndex = 0; !subscriber.closed && sourceIndex < sources.length; sourceIndex++) {\n          innerFrom(sources[sourceIndex]).subscribe(\n            createOperatorSubscriber(\n              subscriber,\n              (value) => {\n                buffers[sourceIndex].push(value);\n                // if every buffer has at least one value in it, then we\n                // can shift out the oldest value from each buffer and emit\n                // them as an array.\n                if (buffers.every((buffer) => buffer.length)) {\n                  const result: any = buffers.map((buffer) => buffer.shift()!);\n                  // Emit the array. If theres' a result selector, use that.\n                  subscriber.next(resultSelector ? resultSelector(...result) : result);\n                  // If any one of the sources is both complete and has an empty buffer\n                  // then we complete the result. This is because we cannot possibly have\n                  // any more values to zip together.\n                  if (buffers.some((buffer, i) => !buffer.length && completed[i])) {\n                    subscriber.complete();\n                  }\n                }\n              },\n              () => {\n                // This source completed. Mark it as complete so we can check it later\n                // if we have to.\n                completed[sourceIndex] = true;\n                // But, if this complete source has nothing in its buffer, then we\n                // can complete the result, because we can't possibly have any more\n                // values from this to zip together with the other values.\n                !buffers[sourceIndex].length && subscriber.complete();\n              }\n            )\n          );\n        }\n\n        // When everything is done, release the arrays above.\n        return () => {\n          buffers = completed = null!;\n        };\n      })\n    : EMPTY;\n}\n","import { zip as zipStatic } from '../observable/zip';\nimport { ObservableInput, ObservableInputTuple, OperatorFunction, Cons } from '../types';\nimport { operate } from '../util/lift';\n\n/** @deprecated Replaced with {@link zipWith}. Will be removed in v8. */\nexport function zip<T, A extends readonly unknown[]>(otherInputs: [...ObservableInputTuple<A>]): OperatorFunction<T, Cons<T, A>>;\n/** @deprecated Replaced with {@link zipWith}. Will be removed in v8. */\nexport function zip<T, A extends readonly unknown[], R>(\n  otherInputsAndProject: [...ObservableInputTuple<A>],\n  project: (...values: Cons<T, A>) => R\n): OperatorFunction<T, R>;\n/** @deprecated Replaced with {@link zipWith}. Will be removed in v8. */\nexport function zip<T, A extends readonly unknown[]>(...otherInputs: [...ObservableInputTuple<A>]): OperatorFunction<T, Cons<T, A>>;\n/** @deprecated Replaced with {@link zipWith}. Will be removed in v8. */\nexport function zip<T, A extends readonly unknown[], R>(\n  ...otherInputsAndProject: [...ObservableInputTuple<A>, (...values: Cons<T, A>) => R]\n): OperatorFunction<T, R>;\n\n/**\n * @deprecated Replaced with {@link zipWith}. Will be removed in v8.\n */\nexport function zip<T, R>(...sources: Array<ObservableInput<any> | ((...values: Array<any>) => R)>): OperatorFunction<T, any> {\n  return operate((source, subscriber) => {\n    zipStatic(source as ObservableInput<any>, ...(sources as Array<ObservableInput<any>>)).subscribe(subscriber);\n  });\n}\n","import { OperatorFunction, ObservableInput } from '../types';\nimport { zip } from '../observable/zip';\nimport { joinAllInternals } from './joinAllInternals';\n\n/**\n * Collects all observable inner sources from the source, once the source completes,\n * it will subscribe to all inner sources, combining their values by index and emitting\n * them.\n *\n * @see {@link zipWith}\n * @see {@link zip}\n */\nexport function zipAll<T>(): OperatorFunction<ObservableInput<T>, T[]>;\nexport function zipAll<T>(): OperatorFunction<any, T[]>;\nexport function zipAll<T, R>(project: (...values: T[]) => R): OperatorFunction<ObservableInput<T>, R>;\nexport function zipAll<R>(project: (...values: Array<any>) => R): OperatorFunction<any, R>;\n\nexport function zipAll<T, R>(project?: (...values: T[]) => R) {\n  return joinAllInternals(zip, project);\n}\n","import { ObservableInputTuple, OperatorFunction, Cons } from '../types';\nimport { zip } from './zip';\n\n/**\n * Subscribes to the source, and the observable inputs provided as arguments, and combines their values, by index, into arrays.\n *\n * What is meant by \"combine by index\": The first value from each will be made into a single array, then emitted,\n * then the second value from each will be combined into a single array and emitted, then the third value\n * from each will be combined into a single array and emitted, and so on.\n *\n * This will continue until it is no longer able to combine values of the same index into an array.\n *\n * After the last value from any one completed source is emitted in an array, the resulting observable will complete,\n * as there is no way to continue \"zipping\" values together by index.\n *\n * Use-cases for this operator are limited. There are memory concerns if one of the streams is emitting\n * values at a much faster rate than the others. Usage should likely be limited to streams that emit\n * at a similar pace, or finite streams of known length.\n *\n * In many cases, authors want `combineLatestWith` and not `zipWith`.\n *\n * @param otherInputs other observable inputs to collate values from.\n * @return A function that returns an Observable that emits items by index\n * combined from the source Observable and provided Observables, in form of an\n * array.\n */\nexport function zipWith<T, A extends readonly unknown[]>(...otherInputs: [...ObservableInputTuple<A>]): OperatorFunction<T, Cons<T, A>> {\n  return zip(...otherInputs);\n}\n","/* Operator exports */\nexport { audit } from '../internal/operators/audit';\nexport { auditTime } from '../internal/operators/auditTime';\nexport { buffer } from '../internal/operators/buffer';\nexport { bufferCount } from '../internal/operators/bufferCount';\nexport { bufferTime } from '../internal/operators/bufferTime';\nexport { bufferToggle } from '../internal/operators/bufferToggle';\nexport { bufferWhen } from '../internal/operators/bufferWhen';\nexport { catchError } from '../internal/operators/catchError';\nexport { combineAll } from '../internal/operators/combineAll';\nexport { combineLatestAll } from '../internal/operators/combineLatestAll';\nexport { combineLatest } from '../internal/operators/combineLatest';\nexport { combineLatestWith } from '../internal/operators/combineLatestWith';\nexport { concat } from '../internal/operators/concat';\nexport { concatAll } from '../internal/operators/concatAll';\nexport { concatMap } from '../internal/operators/concatMap';\nexport { concatMapTo } from '../internal/operators/concatMapTo';\nexport { concatWith } from '../internal/operators/concatWith';\nexport { connect, ConnectConfig } from '../internal/operators/connect';\nexport { count } from '../internal/operators/count';\nexport { debounce } from '../internal/operators/debounce';\nexport { debounceTime } from '../internal/operators/debounceTime';\nexport { defaultIfEmpty } from '../internal/operators/defaultIfEmpty';\nexport { delay } from '../internal/operators/delay';\nexport { delayWhen } from '../internal/operators/delayWhen';\nexport { dematerialize } from '../internal/operators/dematerialize';\nexport { distinct } from '../internal/operators/distinct';\nexport { distinctUntilChanged } from '../internal/operators/distinctUntilChanged';\nexport { distinctUntilKeyChanged } from '../internal/operators/distinctUntilKeyChanged';\nexport { elementAt } from '../internal/operators/elementAt';\nexport { endWith } from '../internal/operators/endWith';\nexport { every } from '../internal/operators/every';\nexport { exhaust } from '../internal/operators/exhaust';\nexport { exhaustAll } from '../internal/operators/exhaustAll';\nexport { exhaustMap } from '../internal/operators/exhaustMap';\nexport { expand } from '../internal/operators/expand';\nexport { filter } from '../internal/operators/filter';\nexport { finalize } from '../internal/operators/finalize';\nexport { find } from '../internal/operators/find';\nexport { findIndex } from '../internal/operators/findIndex';\nexport { first } from '../internal/operators/first';\nexport { groupBy, BasicGroupByOptions, GroupByOptionsWithElement } from '../internal/operators/groupBy';\nexport { ignoreElements } from '../internal/operators/ignoreElements';\nexport { isEmpty } from '../internal/operators/isEmpty';\nexport { last } from '../internal/operators/last';\nexport { map } from '../internal/operators/map';\nexport { mapTo } from '../internal/operators/mapTo';\nexport { materialize } from '../internal/operators/materialize';\nexport { max } from '../internal/operators/max';\nexport { merge } from '../internal/operators/merge';\nexport { mergeAll } from '../internal/operators/mergeAll';\nexport { flatMap } from '../internal/operators/flatMap';\nexport { mergeMap } from '../internal/operators/mergeMap';\nexport { mergeMapTo } from '../internal/operators/mergeMapTo';\nexport { mergeScan } from '../internal/operators/mergeScan';\nexport { mergeWith } from '../internal/operators/mergeWith';\nexport { min } from '../internal/operators/min';\nexport { multicast } from '../internal/operators/multicast';\nexport { observeOn } from '../internal/operators/observeOn';\nexport { onErrorResumeNext } from '../internal/operators/onErrorResumeNextWith';\nexport { pairwise } from '../internal/operators/pairwise';\nexport { partition } from '../internal/operators/partition';\nexport { pluck } from '../internal/operators/pluck';\nexport { publish } from '../internal/operators/publish';\nexport { publishBehavior } from '../internal/operators/publishBehavior';\nexport { publishLast } from '../internal/operators/publishLast';\nexport { publishReplay } from '../internal/operators/publishReplay';\nexport { race } from '../internal/operators/race';\nexport { raceWith } from '../internal/operators/raceWith';\nexport { reduce } from '../internal/operators/reduce';\nexport { repeat, RepeatConfig } from '../internal/operators/repeat';\nexport { repeatWhen } from '../internal/operators/repeatWhen';\nexport { retry, RetryConfig } from '../internal/operators/retry';\nexport { retryWhen } from '../internal/operators/retryWhen';\nexport { refCount } from '../internal/operators/refCount';\nexport { sample } from '../internal/operators/sample';\nexport { sampleTime } from '../internal/operators/sampleTime';\nexport { scan } from '../internal/operators/scan';\nexport { sequenceEqual } from '../internal/operators/sequenceEqual';\nexport { share, ShareConfig } from '../internal/operators/share';\nexport { shareReplay, ShareReplayConfig } from '../internal/operators/shareReplay';\nexport { single } from '../internal/operators/single';\nexport { skip } from '../internal/operators/skip';\nexport { skipLast } from '../internal/operators/skipLast';\nexport { skipUntil } from '../internal/operators/skipUntil';\nexport { skipWhile } from '../internal/operators/skipWhile';\nexport { startWith } from '../internal/operators/startWith';\nexport { subscribeOn } from '../internal/operators/subscribeOn';\nexport { switchAll } from '../internal/operators/switchAll';\nexport { switchMap } from '../internal/operators/switchMap';\nexport { switchMapTo } from '../internal/operators/switchMapTo';\nexport { switchScan } from '../internal/operators/switchScan';\nexport { take } from '../internal/operators/take';\nexport { takeLast } from '../internal/operators/takeLast';\nexport { takeUntil } from '../internal/operators/takeUntil';\nexport { takeWhile } from '../internal/operators/takeWhile';\nexport { tap, TapObserver } from '../internal/operators/tap';\nexport { throttle, ThrottleConfig } from '../internal/operators/throttle';\nexport { throttleTime } from '../internal/operators/throttleTime';\nexport { throwIfEmpty } from '../internal/operators/throwIfEmpty';\nexport { timeInterval } from '../internal/operators/timeInterval';\nexport { timeout, TimeoutConfig, TimeoutInfo } from '../internal/operators/timeout';\nexport { timeoutWith } from '../internal/operators/timeoutWith';\nexport { timestamp } from '../internal/operators/timestamp';\nexport { toArray } from '../internal/operators/toArray';\nexport { window } from '../internal/operators/window';\nexport { windowCount } from '../internal/operators/windowCount';\nexport { windowTime } from '../internal/operators/windowTime';\nexport { windowToggle } from '../internal/operators/windowToggle';\nexport { windowWhen } from '../internal/operators/windowWhen';\nexport { withLatestFrom } from '../internal/operators/withLatestFrom';\nexport { zip } from '../internal/operators/zip';\nexport { zipAll } from '../internal/operators/zipAll';\nexport { zipWith } from '../internal/operators/zipWith';\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CLASS_SERIALIZER_OPTIONS = void 0;\nexports.CLASS_SERIALIZER_OPTIONS = 'class_serializer:options';\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClassSerializerInterceptor = void 0;\nconst tslib_1 = require(\"tslib\");\nconst operators_1 = require(\"rxjs/operators\");\nconst core_1 = require(\"../decorators/core\");\nconst file_stream_1 = require(\"../file-stream\");\nconst load_package_util_1 = require(\"../utils/load-package.util\");\nconst shared_utils_1 = require(\"../utils/shared.utils\");\nconst class_serializer_constants_1 = require(\"./class-serializer.constants\");\nlet classTransformer = {};\n// NOTE (external)\n// We need to deduplicate them here due to the circular dependency\n// between core and common packages\nconst REFLECTOR = 'Reflector';\n/**\n * @publicApi\n */\nlet ClassSerializerInterceptor = class ClassSerializerInterceptor {\n    constructor(reflector, defaultOptions = {}) {\n        this.reflector = reflector;\n        this.defaultOptions = defaultOptions;\n        classTransformer =\n            defaultOptions?.transformerPackage ??\n                (0, load_package_util_1.loadPackage)('class-transformer', 'ClassSerializerInterceptor', () => require('class-transformer'));\n        if (!defaultOptions?.transformerPackage) {\n            require('class-transformer');\n        }\n    }\n    intercept(context, next) {\n        const contextOptions = this.getContextOptions(context);\n        const options = {\n            ...this.defaultOptions,\n            ...contextOptions,\n        };\n        return next\n            .handle()\n            .pipe((0, operators_1.map)((res) => this.serialize(res, options)));\n    }\n    /**\n     * Serializes responses that are non-null objects nor streamable files.\n     */\n    serialize(response, options) {\n        if (!(0, shared_utils_1.isObject)(response) || response instanceof file_stream_1.StreamableFile) {\n            return response;\n        }\n        return Array.isArray(response)\n            ? response.map(item => this.transformToPlain(item, options))\n            : this.transformToPlain(response, options);\n    }\n    transformToPlain(plainOrClass, options) {\n        if (!plainOrClass) {\n            return plainOrClass;\n        }\n        if (!options.type) {\n            return classTransformer.classToPlain(plainOrClass, options);\n        }\n        if (plainOrClass instanceof options.type) {\n            return classTransformer.classToPlain(plainOrClass, options);\n        }\n        const instance = classTransformer.plainToInstance(options.type, plainOrClass, options);\n        return classTransformer.classToPlain(instance, options);\n    }\n    getContextOptions(context) {\n        return this.reflector.getAllAndOverride(class_serializer_constants_1.CLASS_SERIALIZER_OPTIONS, [\n            context.getHandler(),\n            context.getClass(),\n        ]);\n    }\n};\nexports.ClassSerializerInterceptor = ClassSerializerInterceptor;\nexports.ClassSerializerInterceptor = ClassSerializerInterceptor = tslib_1.__decorate([\n    (0, core_1.Injectable)(),\n    tslib_1.__param(0, (0, core_1.Inject)(REFLECTOR)),\n    tslib_1.__param(1, (0, core_1.Optional)()),\n    tslib_1.__metadata(\"design:paramtypes\", [Object, Object])\n], ClassSerializerInterceptor);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SerializeOptions = void 0;\nconst decorators_1 = require(\"../../decorators\");\nconst class_serializer_constants_1 = require(\"../class-serializer.constants\");\n/**\n * @publicApi\n */\nconst SerializeOptions = (options) => (0, decorators_1.SetMetadata)(class_serializer_constants_1.CLASS_SERIALIZER_OPTIONS, options);\nexports.SerializeOptions = SerializeOptions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./serialize-options.decorator\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./class-serializer.interceptor\"), exports);\ntslib_1.__exportStar(require(\"./decorators\"), exports);\ntslib_1.__exportStar(require(\"./class-serializer.interfaces\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.forwardRef = void 0;\n/**\n * @publicApi\n */\nconst forwardRef = (fn) => ({\n    forwardRef: fn,\n});\nexports.forwardRef = forwardRef;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./forward-ref.util\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSION_NEUTRAL = exports.Scope = void 0;\nconst tslib_1 = require(\"tslib\");\n/*\n * Nest @common\n * Copyright(c) 2017 - 2025 Kamil Mysliwiec\n * https://nestjs.com\n * MIT Licensed\n */\nrequire(\"reflect-metadata\");\ntslib_1.__exportStar(require(\"./decorators\"), exports);\ntslib_1.__exportStar(require(\"./enums\"), exports);\ntslib_1.__exportStar(require(\"./exceptions\"), exports);\ntslib_1.__exportStar(require(\"./file-stream\"), exports);\nvar interfaces_1 = require(\"./interfaces\");\nObject.defineProperty(exports, \"Scope\", { enumerable: true, get: function () { return interfaces_1.Scope; } });\nObject.defineProperty(exports, \"VERSION_NEUTRAL\", { enumerable: true, get: function () { return interfaces_1.VERSION_NEUTRAL; } });\ntslib_1.__exportStar(require(\"./module-utils\"), exports);\ntslib_1.__exportStar(require(\"./pipes\"), exports);\ntslib_1.__exportStar(require(\"./serializer\"), exports);\ntslib_1.__exportStar(require(\"./services\"), exports);\ntslib_1.__exportStar(require(\"./utils\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractHttpAdapter = void 0;\n/**\n * @publicApi\n */\nclass AbstractHttpAdapter {\n    constructor(instance) {\n        this.instance = instance;\n    }\n    async init() { }\n    use(...args) {\n        return this.instance.use(...args);\n    }\n    get(...args) {\n        return this.instance.get(...args);\n    }\n    post(...args) {\n        return this.instance.post(...args);\n    }\n    head(...args) {\n        return this.instance.head(...args);\n    }\n    delete(...args) {\n        return this.instance.delete(...args);\n    }\n    put(...args) {\n        return this.instance.put(...args);\n    }\n    patch(...args) {\n        return this.instance.patch(...args);\n    }\n    propfind(...args) {\n        return this.instance.propfind(...args);\n    }\n    proppatch(...args) {\n        return this.instance.proppatch(...args);\n    }\n    mkcol(...args) {\n        return this.instance.mkcol(...args);\n    }\n    copy(...args) {\n        return this.instance.copy(...args);\n    }\n    move(...args) {\n        return this.instance.move(...args);\n    }\n    lock(...args) {\n        return this.instance.lock(...args);\n    }\n    unlock(...args) {\n        return this.instance.unlock(...args);\n    }\n    all(...args) {\n        return this.instance.all(...args);\n    }\n    search(...args) {\n        return this.instance.search(...args);\n    }\n    options(...args) {\n        return this.instance.options(...args);\n    }\n    listen(port, hostname, callback) {\n        return this.instance.listen(port, hostname, callback);\n    }\n    getHttpServer() {\n        return this.httpServer;\n    }\n    setHttpServer(httpServer) {\n        this.httpServer = httpServer;\n    }\n    setInstance(instance) {\n        this.instance = instance;\n    }\n    getInstance() {\n        return this.instance;\n    }\n    normalizePath(path) {\n        return path;\n    }\n    setOnRouteTriggered(onRouteTriggered) {\n        this.onRouteTriggered = onRouteTriggered;\n    }\n    getOnRouteTriggered() {\n        return this.onRouteTriggered;\n    }\n    setOnRequestHook(onRequestHook) { }\n    setOnResponseHook(onResponseHook) { }\n}\nexports.AbstractHttpAdapter = AbstractHttpAdapter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RouterMethodFactory = exports.REQUEST_METHOD_MAP = void 0;\nconst request_method_enum_1 = require(\"@nestjs/common/enums/request-method.enum\");\nexports.REQUEST_METHOD_MAP = {\n    [request_method_enum_1.RequestMethod.GET]: 'get',\n    [request_method_enum_1.RequestMethod.POST]: 'post',\n    [request_method_enum_1.RequestMethod.PUT]: 'put',\n    [request_method_enum_1.RequestMethod.DELETE]: 'delete',\n    [request_method_enum_1.RequestMethod.PATCH]: 'patch',\n    [request_method_enum_1.RequestMethod.ALL]: 'all',\n    [request_method_enum_1.RequestMethod.OPTIONS]: 'options',\n    [request_method_enum_1.RequestMethod.HEAD]: 'head',\n    [request_method_enum_1.RequestMethod.SEARCH]: 'search',\n    [request_method_enum_1.RequestMethod.PROPFIND]: 'propfind',\n    [request_method_enum_1.RequestMethod.PROPPATCH]: 'proppatch',\n    [request_method_enum_1.RequestMethod.MKCOL]: 'mkcol',\n    [request_method_enum_1.RequestMethod.COPY]: 'copy',\n    [request_method_enum_1.RequestMethod.MOVE]: 'move',\n    [request_method_enum_1.RequestMethod.LOCK]: 'lock',\n    [request_method_enum_1.RequestMethod.UNLOCK]: 'unlock',\n};\nclass RouterMethodFactory {\n    get(target, requestMethod) {\n        const methodName = exports.REQUEST_METHOD_MAP[requestMethod];\n        const method = target[methodName];\n        if (!method) {\n            return target.use;\n        }\n        return method;\n    }\n}\nexports.RouterMethodFactory = RouterMethodFactory;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LegacyRouteConverter = void 0;\nconst common_1 = require(\"@nestjs/common\");\nconst UNSUPPORTED_PATH_MESSAGE = (text, route) => `Unsupported route path: \"${route}\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide.`;\nclass LegacyRouteConverter {\n    /**\n     * Convert legacy routes to the new format (syntax).\n     * path-to-regexp used by Express>=v5 and @fastify/middie>=v9 no longer support unnamed wildcards.\n     * This method attempts to convert the old syntax to the new one, and logs an error if it fails.\n     * @param route The route to convert.\n     * @param options Options object.\n     * @returns The converted route, or the original route if it cannot be converted.\n     */\n    static tryConvert(route, options) {\n        // Normalize path to eliminate additional if statements.\n        const routeWithLeadingSlash = route.startsWith('/') ? route : `/${route}`;\n        const normalizedRoute = route.endsWith('/')\n            ? routeWithLeadingSlash\n            : `${routeWithLeadingSlash}/`;\n        const loggingEnabled = options?.logs ?? true;\n        const printWarning = loggingEnabled\n            ? this.printWarning.bind(this)\n            : () => { };\n        if (normalizedRoute.endsWith('/(.*)/')) {\n            // Skip printing warning for the \"all\" wildcard.\n            if (normalizedRoute !== '/(.*)/') {\n                printWarning(route);\n            }\n            return route.replace('(.*)', '{*path}');\n        }\n        if (normalizedRoute.endsWith('/*/')) {\n            // Skip printing warning for the \"all\" wildcard.\n            if (normalizedRoute !== '/*/') {\n                printWarning(route);\n            }\n            return route.replace('*', '{*path}');\n        }\n        if (normalizedRoute.endsWith('/+/')) {\n            printWarning(route);\n            return route.replace('/+', '/*path');\n        }\n        // When route includes any wildcard segments in the middle.\n        if (normalizedRoute.includes('/*/')) {\n            printWarning(route);\n            // Replace each /*/ segment with a named parameter using different name for each segment.\n            return route.replaceAll('/*/', (match, offset) => {\n                return `/*path${offset}/`;\n            });\n        }\n        return route;\n    }\n    static printError(route) {\n        this.logger.error(UNSUPPORTED_PATH_MESSAGE `${route}`);\n    }\n    static printWarning(route) {\n        this.logger.warn(UNSUPPORTED_PATH_MESSAGE `${route}` + ' Attempting to auto-convert...');\n    }\n}\nexports.LegacyRouteConverter = LegacyRouteConverter;\nLegacyRouteConverter.logger = new common_1.Logger(LegacyRouteConverter.name);\n","const DEFAULT_DELIMITER = \"/\";\nconst NOOP_VALUE = (value: string) => value;\nconst ID_START = /^[$_\\p{ID_Start}]$/u;\nconst ID_CONTINUE = /^[$\\u200c\\u200d\\p{ID_Continue}]$/u;\n\n/**\n * Encode a string into another string.\n */\nexport type Encode = (value: string) => string;\n\n/**\n * Decode a string into another string.\n */\nexport type Decode = (value: string) => string;\n\nexport interface ParseOptions {\n  /**\n   * A function for encoding input strings.\n   */\n  encodePath?: Encode;\n}\n\nexport interface PathToRegexpOptions {\n  /**\n   * Matches the path completely without trailing characters. (default: `true`)\n   */\n  end?: boolean;\n  /**\n   * Allows optional trailing delimiter to match. (default: `true`)\n   */\n  trailing?: boolean;\n  /**\n   * Match will be case sensitive. (default: `false`)\n   */\n  sensitive?: boolean;\n  /**\n   * The default delimiter for segments. (default: `'/'`)\n   */\n  delimiter?: string;\n}\n\nexport interface MatchOptions extends PathToRegexpOptions {\n  /**\n   * Function for decoding strings for params, or `false` to disable entirely. (default: `decodeURIComponent`)\n   */\n  decode?: Decode | false;\n}\n\nexport interface CompileOptions {\n  /**\n   * Function for encoding input strings for output into the path, or `false` to disable entirely. (default: `encodeURIComponent`)\n   */\n  encode?: Encode | false;\n  /**\n   * The default delimiter for segments. (default: `'/'`)\n   */\n  delimiter?: string;\n}\n\ntype TokenType =\n  | \"{\"\n  | \"}\"\n  | \"wildcard\"\n  | \"param\"\n  | \"char\"\n  | \"escape\"\n  | \"end\"\n  // Reserved for use or ambiguous due to past use.\n  | \"(\"\n  | \")\"\n  | \"[\"\n  | \"]\"\n  | \"+\"\n  | \"?\"\n  | \"!\";\n\n/**\n * Tokenizer results.\n */\ninterface LexToken {\n  type: TokenType;\n  index: number;\n  value: string;\n}\n\nconst SIMPLE_TOKENS: Record<string, TokenType> = {\n  // Groups.\n  \"{\": \"{\",\n  \"}\": \"}\",\n  // Reserved.\n  \"(\": \"(\",\n  \")\": \")\",\n  \"[\": \"[\",\n  \"]\": \"]\",\n  \"+\": \"+\",\n  \"?\": \"?\",\n  \"!\": \"!\",\n};\n\n/**\n * Escape text for stringify to path.\n */\nfunction escapeText(str: string) {\n  return str.replace(/[{}()\\[\\]+?!:*\\\\]/g, \"\\\\$&\");\n}\n\n/**\n * Escape a regular expression string.\n */\nfunction escape(str: string) {\n  return str.replace(/[.+*?^${}()[\\]|/\\\\]/g, \"\\\\$&\");\n}\n\n/**\n * Plain text.\n */\nexport interface Text {\n  type: \"text\";\n  value: string;\n}\n\n/**\n * A parameter designed to match arbitrary text within a segment.\n */\nexport interface Parameter {\n  type: \"param\";\n  name: string;\n}\n\n/**\n * A wildcard parameter designed to match multiple segments.\n */\nexport interface Wildcard {\n  type: \"wildcard\";\n  name: string;\n}\n\n/**\n * A set of possible tokens to expand when matching.\n */\nexport interface Group {\n  type: \"group\";\n  tokens: Token[];\n}\n\n/**\n * A token that corresponds with a regexp capture.\n */\nexport type Key = Parameter | Wildcard;\n\n/**\n * A sequence of `path-to-regexp` keys that match capturing groups.\n */\nexport type Keys = Array<Key>;\n\n/**\n * A sequence of path match characters.\n */\nexport type Token = Text | Parameter | Wildcard | Group;\n\n/**\n * Tokenized path instance.\n */\nexport class TokenData {\n  constructor(\n    public readonly tokens: Token[],\n    public readonly originalPath?: string,\n  ) {}\n}\n\n/**\n * ParseError is thrown when there is an error processing the path.\n */\nexport class PathError extends TypeError {\n  constructor(\n    message: string,\n    public readonly originalPath: string | undefined,\n  ) {\n    let text = message;\n    if (originalPath) text += `: ${originalPath}`;\n    text += `; visit https://git.new/pathToRegexpError for info`;\n    super(text);\n  }\n}\n\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str: string, options: ParseOptions = {}): TokenData {\n  const { encodePath = NOOP_VALUE } = options;\n  const chars = [...str];\n  const tokens: Array<LexToken> = [];\n  let index = 0;\n  let pos = 0;\n\n  function name() {\n    let value = \"\";\n\n    if (ID_START.test(chars[index])) {\n      do {\n        value += chars[index++];\n      } while (ID_CONTINUE.test(chars[index]));\n    } else if (chars[index] === '\"') {\n      let quoteStart = index;\n\n      while (index++ < chars.length) {\n        if (chars[index] === '\"') {\n          index++;\n          quoteStart = 0;\n          break;\n        }\n\n        // Increment over escape characters.\n        if (chars[index] === \"\\\\\") index++;\n\n        value += chars[index];\n      }\n\n      if (quoteStart) {\n        throw new PathError(`Unterminated quote at index ${quoteStart}`, str);\n      }\n    }\n\n    if (!value) {\n      throw new PathError(`Missing parameter name at index ${index}`, str);\n    }\n\n    return value;\n  }\n\n  while (index < chars.length) {\n    const value = chars[index];\n    const type = SIMPLE_TOKENS[value];\n\n    if (type) {\n      tokens.push({ type, index: index++, value });\n    } else if (value === \"\\\\\") {\n      tokens.push({ type: \"escape\", index: index++, value: chars[index++] });\n    } else if (value === \":\") {\n      tokens.push({ type: \"param\", index: index++, value: name() });\n    } else if (value === \"*\") {\n      tokens.push({ type: \"wildcard\", index: index++, value: name() });\n    } else {\n      tokens.push({ type: \"char\", index: index++, value });\n    }\n  }\n\n  tokens.push({ type: \"end\", index, value: \"\" });\n\n  function consumeUntil(endType: TokenType): Token[] {\n    const output: Token[] = [];\n\n    while (true) {\n      const token = tokens[pos++];\n      if (token.type === endType) break;\n\n      if (token.type === \"char\" || token.type === \"escape\") {\n        let path = token.value;\n        let cur = tokens[pos];\n\n        while (cur.type === \"char\" || cur.type === \"escape\") {\n          path += cur.value;\n          cur = tokens[++pos];\n        }\n\n        output.push({\n          type: \"text\",\n          value: encodePath(path),\n        });\n        continue;\n      }\n\n      if (token.type === \"param\" || token.type === \"wildcard\") {\n        output.push({\n          type: token.type,\n          name: token.value,\n        });\n        continue;\n      }\n\n      if (token.type === \"{\") {\n        output.push({\n          type: \"group\",\n          tokens: consumeUntil(\"}\"),\n        });\n        continue;\n      }\n\n      throw new PathError(\n        `Unexpected ${token.type} at index ${token.index}, expected ${endType}`,\n        str,\n      );\n    }\n\n    return output;\n  }\n\n  return new TokenData(consumeUntil(\"end\"), str);\n}\n\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile<P extends ParamData = ParamData>(\n  path: Path,\n  options: CompileOptions & ParseOptions = {},\n) {\n  const { encode = encodeURIComponent, delimiter = DEFAULT_DELIMITER } =\n    options;\n  const data = typeof path === \"object\" ? path : parse(path, options);\n  const fn = tokensToFunction(data.tokens, delimiter, encode);\n\n  return function path(params: P = {} as P) {\n    const [path, ...missing] = fn(params);\n    if (missing.length) {\n      throw new TypeError(`Missing parameters: ${missing.join(\", \")}`);\n    }\n    return path;\n  };\n}\n\nexport type ParamData = Partial<Record<string, string | string[]>>;\nexport type PathFunction<P extends ParamData> = (data?: P) => string;\n\nfunction tokensToFunction(\n  tokens: Token[],\n  delimiter: string,\n  encode: Encode | false,\n) {\n  const encoders = tokens.map((token) =>\n    tokenToFunction(token, delimiter, encode),\n  );\n\n  return (data: ParamData) => {\n    const result: string[] = [\"\"];\n\n    for (const encoder of encoders) {\n      const [value, ...extras] = encoder(data);\n      result[0] += value;\n      result.push(...extras);\n    }\n\n    return result;\n  };\n}\n\n/**\n * Convert a single token into a path building function.\n */\nfunction tokenToFunction(\n  token: Token,\n  delimiter: string,\n  encode: Encode | false,\n): (data: ParamData) => string[] {\n  if (token.type === \"text\") return () => [token.value];\n\n  if (token.type === \"group\") {\n    const fn = tokensToFunction(token.tokens, delimiter, encode);\n\n    return (data) => {\n      const [value, ...missing] = fn(data);\n      if (!missing.length) return [value];\n      return [\"\"];\n    };\n  }\n\n  const encodeValue = encode || NOOP_VALUE;\n\n  if (token.type === \"wildcard\" && encode !== false) {\n    return (data) => {\n      const value = data[token.name];\n      if (value == null) return [\"\", token.name];\n\n      if (!Array.isArray(value) || value.length === 0) {\n        throw new TypeError(`Expected \"${token.name}\" to be a non-empty array`);\n      }\n\n      return [\n        value\n          .map((value, index) => {\n            if (typeof value !== \"string\") {\n              throw new TypeError(\n                `Expected \"${token.name}/${index}\" to be a string`,\n              );\n            }\n\n            return encodeValue(value);\n          })\n          .join(delimiter),\n      ];\n    };\n  }\n\n  return (data) => {\n    const value = data[token.name];\n    if (value == null) return [\"\", token.name];\n\n    if (typeof value !== \"string\") {\n      throw new TypeError(`Expected \"${token.name}\" to be a string`);\n    }\n\n    return [encodeValue(value)];\n  };\n}\n\n/**\n * A match result contains data about the path match.\n */\nexport interface MatchResult<P extends ParamData> {\n  path: string;\n  params: P;\n}\n\n/**\n * A match is either `false` (no match) or a match result.\n */\nexport type Match<P extends ParamData> = false | MatchResult<P>;\n\n/**\n * The match function takes a string and returns whether it matched the path.\n */\nexport type MatchFunction<P extends ParamData> = (path: string) => Match<P>;\n\n/**\n * Supported path types.\n */\nexport type Path = string | TokenData;\n\n/**\n * Transform a path into a match function.\n */\nexport function match<P extends ParamData>(\n  path: Path | Path[],\n  options: MatchOptions & ParseOptions = {},\n): MatchFunction<P> {\n  const { decode = decodeURIComponent, delimiter = DEFAULT_DELIMITER } =\n    options;\n  const { regexp, keys } = pathToRegexp(path, options);\n\n  const decoders = keys.map((key) => {\n    if (decode === false) return NOOP_VALUE;\n    if (key.type === \"param\") return decode;\n    return (value: string) => value.split(delimiter).map(decode);\n  });\n\n  return function match(input: string) {\n    const m = regexp.exec(input);\n    if (!m) return false;\n\n    const path = m[0];\n    const params = Object.create(null);\n\n    for (let i = 1; i < m.length; i++) {\n      if (m[i] === undefined) continue;\n\n      const key = keys[i - 1];\n      const decoder = decoders[i - 1];\n      params[key.name] = decoder(m[i]);\n    }\n\n    return { path, params };\n  };\n}\n\nexport function pathToRegexp(\n  path: Path | Path[],\n  options: PathToRegexpOptions & ParseOptions = {},\n) {\n  const {\n    delimiter = DEFAULT_DELIMITER,\n    end = true,\n    sensitive = false,\n    trailing = true,\n  } = options;\n  const keys: Keys = [];\n  const flags = sensitive ? \"\" : \"i\";\n  const sources: string[] = [];\n\n  for (const input of pathsToArray(path, [])) {\n    const data = typeof input === \"object\" ? input : parse(input, options);\n    for (const tokens of flatten(data.tokens, 0, [])) {\n      sources.push(toRegExpSource(tokens, delimiter, keys, data.originalPath));\n    }\n  }\n\n  let pattern = `^(?:${sources.join(\"|\")})`;\n  if (trailing) pattern += `(?:${escape(delimiter)}$)?`;\n  pattern += end ? \"$\" : `(?=${escape(delimiter)}|$)`;\n\n  const regexp = new RegExp(pattern, flags);\n  return { regexp, keys };\n}\n\n/**\n * Convert a path or array of paths into a flat array.\n */\nfunction pathsToArray(paths: Path | Path[], init: Path[]): Path[] {\n  if (Array.isArray(paths)) {\n    for (const p of paths) pathsToArray(p, init);\n  } else {\n    init.push(paths);\n  }\n  return init;\n}\n\n/**\n * Flattened token set.\n */\ntype FlatToken = Text | Parameter | Wildcard;\n\n/**\n * Generate a flat list of sequence tokens from the given tokens.\n */\nfunction* flatten(\n  tokens: Token[],\n  index: number,\n  init: FlatToken[],\n): Generator<FlatToken[]> {\n  if (index === tokens.length) {\n    return yield init;\n  }\n\n  const token = tokens[index];\n\n  if (token.type === \"group\") {\n    for (const seq of flatten(token.tokens, 0, init.slice())) {\n      yield* flatten(tokens, index + 1, seq);\n    }\n  } else {\n    init.push(token);\n  }\n\n  yield* flatten(tokens, index + 1, init);\n}\n\n/**\n * Transform a flat sequence of tokens into a regular expression.\n */\nfunction toRegExpSource(\n  tokens: FlatToken[],\n  delimiter: string,\n  keys: Keys,\n  originalPath: string | undefined,\n): string {\n  let result = \"\";\n  let backtrack = \"\";\n  let isSafeSegmentParam = true;\n\n  for (const token of tokens) {\n    if (token.type === \"text\") {\n      result += escape(token.value);\n      backtrack += token.value;\n      isSafeSegmentParam ||= token.value.includes(delimiter);\n      continue;\n    }\n\n    if (token.type === \"param\" || token.type === \"wildcard\") {\n      if (!isSafeSegmentParam && !backtrack) {\n        throw new PathError(\n          `Missing text before \"${token.name}\" ${token.type}`,\n          originalPath,\n        );\n      }\n\n      if (token.type === \"param\") {\n        result += `(${negate(delimiter, isSafeSegmentParam ? \"\" : backtrack)}+)`;\n      } else {\n        result += `([\\\\s\\\\S]+)`;\n      }\n\n      keys.push(token);\n      backtrack = \"\";\n      isSafeSegmentParam = false;\n      continue;\n    }\n  }\n\n  return result;\n}\n\n/**\n * Block backtracking on previous text and ignore delimiter string.\n */\nfunction negate(delimiter: string, backtrack: string): string {\n  if (backtrack.length < 2) {\n    if (delimiter.length < 2) return `[^${escape(delimiter + backtrack)}]`;\n    return `(?:(?!${escape(delimiter)})[^${escape(backtrack)}])`;\n  }\n  if (delimiter.length < 2) {\n    return `(?:(?!${escape(backtrack)})[^${escape(delimiter)}])`;\n  }\n  return `(?:(?!${escape(backtrack)}|${escape(delimiter)})[\\\\s\\\\S])`;\n}\n\n/**\n * Stringify an array of tokens into a path string.\n */\nfunction stringifyTokens(tokens: Token[]): string {\n  let value = \"\";\n  let i = 0;\n\n  function name(value: string) {\n    const isSafe = isNameSafe(value) && isNextNameSafe(tokens[i]);\n    return isSafe ? value : JSON.stringify(value);\n  }\n\n  while (i < tokens.length) {\n    const token = tokens[i++];\n\n    if (token.type === \"text\") {\n      value += escapeText(token.value);\n      continue;\n    }\n\n    if (token.type === \"group\") {\n      value += `{${stringifyTokens(token.tokens)}}`;\n      continue;\n    }\n\n    if (token.type === \"param\") {\n      value += `:${name(token.name)}`;\n      continue;\n    }\n\n    if (token.type === \"wildcard\") {\n      value += `*${name(token.name)}`;\n      continue;\n    }\n\n    throw new TypeError(`Unknown token type: ${(token as any).type}`);\n  }\n\n  return value;\n}\n\n/**\n * Stringify token data into a path string.\n */\nexport function stringify(data: TokenData): string {\n  return stringifyTokens(data.tokens);\n}\n\n/**\n * Validate the parameter name contains valid ID characters.\n */\nfunction isNameSafe(name: string): boolean {\n  const [first, ...rest] = name;\n  return ID_START.test(first) && rest.every((char) => ID_CONTINUE.test(char));\n}\n\n/**\n * Validate the next token does not interfere with the current param name.\n */\nfunction isNextNameSafe(token: Token | undefined): boolean {\n  if (token && token.type === \"text\") return !ID_CONTINUE.test(token.value[0]);\n  return true;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBodyParserOptions = getBodyParserOptions;\nconst rawBodyParser = (req, _res, buffer) => {\n    if (Buffer.isBuffer(buffer)) {\n        req.rawBody = buffer;\n    }\n    return true;\n};\nfunction getBodyParserOptions(rawBody, options) {\n    let parserOptions = (options || {});\n    if (rawBody === true) {\n        parserOptions = {\n            ...parserOptions,\n            verify: rawBodyParser,\n        };\n    }\n    return parserOptions;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExpressAdapter = void 0;\nconst common_1 = require(\"@nestjs/common\");\nconst shared_utils_1 = require(\"@nestjs/common/utils/shared.utils\");\nconst http_adapter_1 = require(\"@nestjs/core/adapters/http-adapter\");\nconst router_method_factory_1 = require(\"@nestjs/core/helpers/router-method-factory\");\nconst legacy_route_converter_1 = require(\"@nestjs/core/router/legacy-route-converter\");\nconst cors = require(\"cors\");\nconst express = require(\"express\");\nconst http = require(\"http\");\nconst https = require(\"https\");\nconst path_to_regexp_1 = require(\"path-to-regexp\");\nconst get_body_parser_options_util_1 = require(\"./utils/get-body-parser-options.util\");\n/**\n * @publicApi\n */\nclass ExpressAdapter extends http_adapter_1.AbstractHttpAdapter {\n    constructor(instance) {\n        super(instance || express());\n        this.routerMethodFactory = new router_method_factory_1.RouterMethodFactory();\n        this.logger = new common_1.Logger(ExpressAdapter.name);\n        this.openConnections = new Set();\n        this.instance.use((req, res, next) => {\n            if (this.onResponseHook) {\n                res.on('finish', () => {\n                    void this.onResponseHook.apply(this, [req, res]);\n                });\n            }\n            if (this.onRequestHook) {\n                void this.onRequestHook.apply(this, [req, res, next]);\n            }\n            else {\n                next();\n            }\n        });\n    }\n    setOnRequestHook(onRequestHook) {\n        this.onRequestHook = onRequestHook;\n    }\n    setOnResponseHook(onResponseHook) {\n        this.onResponseHook = onResponseHook;\n    }\n    reply(response, body, statusCode) {\n        if (statusCode) {\n            response.status(statusCode);\n        }\n        if ((0, shared_utils_1.isNil)(body)) {\n            return response.send();\n        }\n        if (body instanceof common_1.StreamableFile) {\n            const streamHeaders = body.getHeaders();\n            if (response.getHeader('Content-Type') === undefined &&\n                streamHeaders.type !== undefined) {\n                response.setHeader('Content-Type', streamHeaders.type);\n            }\n            if (response.getHeader('Content-Disposition') === undefined &&\n                streamHeaders.disposition !== undefined) {\n                response.setHeader('Content-Disposition', streamHeaders.disposition);\n            }\n            if (response.getHeader('Content-Length') === undefined &&\n                streamHeaders.length !== undefined) {\n                response.setHeader('Content-Length', streamHeaders.length);\n            }\n            const stream = body.getStream();\n            stream.once('error', err => {\n                body.errorHandler(err, response);\n            });\n            return stream\n                .pipe(response)\n                .on('error', (err) => body.errorLogger(err));\n        }\n        const responseContentType = response.getHeader('Content-Type');\n        if (typeof responseContentType === 'string' &&\n            !responseContentType.startsWith('application/json') &&\n            body?.statusCode >= common_1.HttpStatus.BAD_REQUEST) {\n            this.logger.warn(\"Content-Type doesn't match Reply body, you might need a custom ExceptionFilter for non-JSON responses\");\n            response.setHeader('Content-Type', 'application/json');\n        }\n        return (0, shared_utils_1.isObject)(body) ? response.json(body) : response.send(String(body));\n    }\n    status(response, statusCode) {\n        return response.status(statusCode);\n    }\n    end(response, message) {\n        return response.end(message);\n    }\n    render(response, view, options) {\n        return response.render(view, options);\n    }\n    redirect(response, statusCode, url) {\n        return response.redirect(statusCode, url);\n    }\n    setErrorHandler(handler, prefix) {\n        return this.use(handler);\n    }\n    setNotFoundHandler(handler, prefix) {\n        return this.use(handler);\n    }\n    isHeadersSent(response) {\n        return response.headersSent;\n    }\n    getHeader(response, name) {\n        return response.get(name);\n    }\n    setHeader(response, name, value) {\n        return response.set(name, value);\n    }\n    appendHeader(response, name, value) {\n        return response.append(name, value);\n    }\n    normalizePath(path) {\n        try {\n            const convertedPath = legacy_route_converter_1.LegacyRouteConverter.tryConvert(path);\n            // Call \"pathToRegexp\" to trigger a TypeError if the path is invalid\n            (0, path_to_regexp_1.pathToRegexp)(convertedPath);\n            return convertedPath;\n        }\n        catch (e) {\n            if (e instanceof TypeError) {\n                legacy_route_converter_1.LegacyRouteConverter.printError(path);\n            }\n            throw e;\n        }\n    }\n    listen(port, ...args) {\n        return this.httpServer.listen(port, ...args);\n    }\n    close() {\n        this.closeOpenConnections();\n        if (!this.httpServer) {\n            return undefined;\n        }\n        return new Promise(resolve => this.httpServer.close(resolve));\n    }\n    set(...args) {\n        return this.instance.set(...args);\n    }\n    enable(...args) {\n        return this.instance.enable(...args);\n    }\n    disable(...args) {\n        return this.instance.disable(...args);\n    }\n    engine(...args) {\n        return this.instance.engine(...args);\n    }\n    useStaticAssets(path, options) {\n        if (options && options.prefix) {\n            return this.use(options.prefix, express.static(path, options));\n        }\n        return this.use(express.static(path, options));\n    }\n    setBaseViewsDir(path) {\n        return this.set('views', path);\n    }\n    setViewEngine(engine) {\n        return this.set('view engine', engine);\n    }\n    getRequestHostname(request) {\n        return request.hostname;\n    }\n    getRequestMethod(request) {\n        return request.method;\n    }\n    getRequestUrl(request) {\n        return request.originalUrl;\n    }\n    enableCors(options) {\n        return this.use(cors(options));\n    }\n    createMiddlewareFactory(requestMethod) {\n        return (path, callback) => {\n            try {\n                const convertedPath = legacy_route_converter_1.LegacyRouteConverter.tryConvert(path);\n                return this.routerMethodFactory\n                    .get(this.instance, requestMethod)\n                    .call(this.instance, convertedPath, callback);\n            }\n            catch (e) {\n                if (e instanceof TypeError) {\n                    legacy_route_converter_1.LegacyRouteConverter.printError(path);\n                }\n                throw e;\n            }\n        };\n    }\n    initHttpServer(options) {\n        const isHttpsEnabled = options && options.httpsOptions;\n        if (isHttpsEnabled) {\n            this.httpServer = https.createServer(options.httpsOptions, this.getInstance());\n        }\n        else {\n            this.httpServer = http.createServer(this.getInstance());\n        }\n        if (options?.forceCloseConnections) {\n            this.trackOpenConnections();\n        }\n    }\n    registerParserMiddleware(prefix, rawBody) {\n        const bodyParserJsonOptions = (0, get_body_parser_options_util_1.getBodyParserOptions)(rawBody);\n        const bodyParserUrlencodedOptions = (0, get_body_parser_options_util_1.getBodyParserOptions)(rawBody, {\n            extended: true,\n        });\n        const parserMiddleware = {\n            jsonParser: express.json(bodyParserJsonOptions),\n            urlencodedParser: express.urlencoded(bodyParserUrlencodedOptions),\n        };\n        Object.keys(parserMiddleware)\n            .filter(parser => !this.isMiddlewareApplied(parser))\n            .forEach(parserKey => this.use(parserMiddleware[parserKey]));\n    }\n    useBodyParser(type, rawBody, options) {\n        const parserOptions = (0, get_body_parser_options_util_1.getBodyParserOptions)(rawBody, options);\n        const parser = express[type](parserOptions);\n        this.use(parser);\n        return this;\n    }\n    setLocal(key, value) {\n        this.instance.locals[key] = value;\n        return this;\n    }\n    getType() {\n        return 'express';\n    }\n    applyVersionFilter(handler, version, versioningOptions) {\n        const callNextHandler = (req, res, next) => {\n            if (!next) {\n                throw new common_1.InternalServerErrorException('HTTP adapter does not support filtering on version');\n            }\n            return next();\n        };\n        if (version === common_1.VERSION_NEUTRAL ||\n            // URL Versioning is done via the path, so the filter continues forward\n            versioningOptions.type === common_1.VersioningType.URI) {\n            const handlerForNoVersioning = (req, res, next) => handler(req, res, next);\n            return handlerForNoVersioning;\n        }\n        // Custom Extractor Versioning Handler\n        if (versioningOptions.type === common_1.VersioningType.CUSTOM) {\n            const handlerForCustomVersioning = (req, res, next) => {\n                const extractedVersion = versioningOptions.extractor(req);\n                if (Array.isArray(version)) {\n                    if (Array.isArray(extractedVersion) &&\n                        version.filter(v => extractedVersion.includes(v)).length) {\n                        return handler(req, res, next);\n                    }\n                    if ((0, shared_utils_1.isString)(extractedVersion) &&\n                        version.includes(extractedVersion)) {\n                        return handler(req, res, next);\n                    }\n                }\n                else if ((0, shared_utils_1.isString)(version)) {\n                    // Known bug here - if there are multiple versions supported across separate\n                    // handlers/controllers, we can't select the highest matching handler.\n                    // Since this code is evaluated per-handler, then we can't see if the highest\n                    // specified version exists in a different handler.\n                    if (Array.isArray(extractedVersion) &&\n                        extractedVersion.includes(version)) {\n                        return handler(req, res, next);\n                    }\n                    if ((0, shared_utils_1.isString)(extractedVersion) && version === extractedVersion) {\n                        return handler(req, res, next);\n                    }\n                }\n                return callNextHandler(req, res, next);\n            };\n            return handlerForCustomVersioning;\n        }\n        // Media Type (Accept Header) Versioning Handler\n        if (versioningOptions.type === common_1.VersioningType.MEDIA_TYPE) {\n            const handlerForMediaTypeVersioning = (req, res, next) => {\n                const MEDIA_TYPE_HEADER = 'Accept';\n                const acceptHeaderValue = req.headers?.[MEDIA_TYPE_HEADER] ||\n                    req.headers?.[MEDIA_TYPE_HEADER.toLowerCase()];\n                const acceptHeaderVersionParameter = acceptHeaderValue\n                    ? acceptHeaderValue.split(';')[1]\n                    : undefined;\n                // No version was supplied\n                if ((0, shared_utils_1.isUndefined)(acceptHeaderVersionParameter)) {\n                    if (Array.isArray(version)) {\n                        if (version.includes(common_1.VERSION_NEUTRAL)) {\n                            return handler(req, res, next);\n                        }\n                    }\n                }\n                else {\n                    const headerVersion = acceptHeaderVersionParameter.split(versioningOptions.key)[1];\n                    if (Array.isArray(version)) {\n                        if (version.includes(headerVersion)) {\n                            return handler(req, res, next);\n                        }\n                    }\n                    else if ((0, shared_utils_1.isString)(version)) {\n                        if (version === headerVersion) {\n                            return handler(req, res, next);\n                        }\n                    }\n                }\n                return callNextHandler(req, res, next);\n            };\n            return handlerForMediaTypeVersioning;\n        }\n        // Header Versioning Handler\n        if (versioningOptions.type === common_1.VersioningType.HEADER) {\n            const handlerForHeaderVersioning = (req, res, next) => {\n                const customHeaderVersionParameter = req.headers?.[versioningOptions.header] ||\n                    req.headers?.[versioningOptions.header.toLowerCase()];\n                // No version was supplied\n                if ((0, shared_utils_1.isUndefined)(customHeaderVersionParameter)) {\n                    if (Array.isArray(version)) {\n                        if (version.includes(common_1.VERSION_NEUTRAL)) {\n                            return handler(req, res, next);\n                        }\n                    }\n                }\n                else {\n                    if (Array.isArray(version)) {\n                        if (version.includes(customHeaderVersionParameter)) {\n                            return handler(req, res, next);\n                        }\n                    }\n                    else if ((0, shared_utils_1.isString)(version)) {\n                        if (version === customHeaderVersionParameter) {\n                            return handler(req, res, next);\n                        }\n                    }\n                }\n                return callNextHandler(req, res, next);\n            };\n            return handlerForHeaderVersioning;\n        }\n        throw new Error('Unsupported versioning options');\n    }\n    trackOpenConnections() {\n        this.httpServer.on('connection', (socket) => {\n            this.openConnections.add(socket);\n            socket.on('close', () => this.openConnections.delete(socket));\n        });\n    }\n    closeOpenConnections() {\n        for (const socket of this.openConnections) {\n            socket.destroy();\n            this.openConnections.delete(socket);\n        }\n    }\n    isMiddlewareApplied(name) {\n        const app = this.getInstance();\n        return (!!app.router &&\n            !!app.router.stack &&\n            (0, shared_utils_1.isFunction)(app.router.stack.filter) &&\n            app.router.stack.some((layer) => layer && layer.handle && layer.handle.name === name));\n    }\n}\nexports.ExpressAdapter = ExpressAdapter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./express-adapter\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./nest-express-application.interface\"), exports);\ntslib_1.__exportStar(require(\"./nest-express-body-parser.interface\"), exports);\n","/*!\n * media-typer\n * Copyright(c) 2014 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 2616 sec 3.7\n *\n * parameter     = token \"=\" ( token | quoted-string )\n * token         = 1*<any CHAR except CTLs or separators>\n * separators    = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n *               | \",\" | \";\" | \":\" | \"\\\" | <\">\n *               | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n *               | \"{\" | \"}\" | SP | HT\n * quoted-string = ( <\"> *(qdtext | quoted-pair ) <\"> )\n * qdtext        = <any TEXT except <\">>\n * quoted-pair   = \"\\\" CHAR\n * CHAR          = <any US-ASCII character (octets 0 - 127)>\n * TEXT          = <any OCTET except CTLs, but including LWS>\n * LWS           = [CRLF] 1*( SP | HT )\n * CRLF          = CR LF\n * CR            = <US-ASCII CR, carriage return (13)>\n * LF            = <US-ASCII LF, linefeed (10)>\n * SP            = <US-ASCII SP, space (32)>\n * SHT           = <US-ASCII HT, horizontal-tab (9)>\n * CTL           = <any US-ASCII control character (octets 0 - 31) and DEL (127)>\n * OCTET         = <any 8-bit sequence of data>\n */\nvar paramRegExp = /; *([!#$%&'\\*\\+\\-\\.0-9A-Z\\^_`a-z\\|~]+) *= *(\"(?:[ !\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u0020-\\u007e])*\"|[!#$%&'\\*\\+\\-\\.0-9A-Z\\^_`a-z\\|~]+) */g;\nvar textRegExp = /^[\\u0020-\\u007e\\u0080-\\u00ff]+$/\nvar tokenRegExp = /^[!#$%&'\\*\\+\\-\\.0-9A-Z\\^_`a-z\\|~]+$/\n\n/**\n * RegExp to match quoted-pair in RFC 2616\n *\n * quoted-pair = \"\\\" CHAR\n * CHAR        = <any US-ASCII character (octets 0 - 127)>\n */\nvar qescRegExp = /\\\\([\\u0000-\\u007f])/g;\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 2616\n */\nvar quoteRegExp = /([\\\\\"])/g;\n\n/**\n * RegExp to match type in RFC 6838\n *\n * type-name = restricted-name\n * subtype-name = restricted-name\n * restricted-name = restricted-name-first *126restricted-name-chars\n * restricted-name-first  = ALPHA / DIGIT\n * restricted-name-chars  = ALPHA / DIGIT / \"!\" / \"#\" /\n *                          \"$\" / \"&\" / \"-\" / \"^\" / \"_\"\n * restricted-name-chars =/ \".\" ; Characters before first dot always\n *                              ; specify a facet name\n * restricted-name-chars =/ \"+\" ; Characters after last plus always\n *                              ; specify a structured syntax suffix\n * ALPHA =  %x41-5A / %x61-7A   ; A-Z / a-z\n * DIGIT =  %x30-39             ; 0-9\n */\nvar subtypeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/\nvar typeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/\nvar typeRegExp = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/;\n\n/**\n * Module exports.\n */\n\nexports.format = format\nexports.parse = parse\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @api public\n */\n\nfunction format(obj) {\n  if (!obj || typeof obj !== 'object') {\n    throw new TypeError('argument obj is required')\n  }\n\n  var parameters = obj.parameters\n  var subtype = obj.subtype\n  var suffix = obj.suffix\n  var type = obj.type\n\n  if (!type || !typeNameRegExp.test(type)) {\n    throw new TypeError('invalid type')\n  }\n\n  if (!subtype || !subtypeNameRegExp.test(subtype)) {\n    throw new TypeError('invalid subtype')\n  }\n\n  // format as type/subtype\n  var string = type + '/' + subtype\n\n  // append +suffix\n  if (suffix) {\n    if (!typeNameRegExp.test(suffix)) {\n      throw new TypeError('invalid suffix')\n    }\n\n    string += '+' + suffix\n  }\n\n  // append parameters\n  if (parameters && typeof parameters === 'object') {\n    var param\n    var params = Object.keys(parameters).sort()\n\n    for (var i = 0; i < params.length; i++) {\n      param = params[i]\n\n      if (!tokenRegExp.test(param)) {\n        throw new TypeError('invalid parameter name')\n      }\n\n      string += '; ' + param + '=' + qstring(parameters[param])\n    }\n  }\n\n  return string\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} string\n * @return {Object}\n * @api public\n */\n\nfunction parse(string) {\n  if (!string) {\n    throw new TypeError('argument string is required')\n  }\n\n  // support req/res-like objects as argument\n  if (typeof string === 'object') {\n    string = getcontenttype(string)\n  }\n\n  if (typeof string !== 'string') {\n    throw new TypeError('argument string is required to be a string')\n  }\n\n  var index = string.indexOf(';')\n  var type = index !== -1\n    ? string.substr(0, index)\n    : string\n\n  var key\n  var match\n  var obj = splitType(type)\n  var params = {}\n  var value\n\n  paramRegExp.lastIndex = index\n\n  while (match = paramRegExp.exec(string)) {\n    if (match.index !== index) {\n      throw new TypeError('invalid parameter format')\n    }\n\n    index += match[0].length\n    key = match[1].toLowerCase()\n    value = match[2]\n\n    if (value[0] === '\"') {\n      // remove quotes and escapes\n      value = value\n        .substr(1, value.length - 2)\n        .replace(qescRegExp, '$1')\n    }\n\n    params[key] = value\n  }\n\n  if (index !== -1 && index !== string.length) {\n    throw new TypeError('invalid parameter format')\n  }\n\n  obj.parameters = params\n\n  return obj\n}\n\n/**\n * Get content-type from req/res objects.\n *\n * @param {object}\n * @return {Object}\n * @api private\n */\n\nfunction getcontenttype(obj) {\n  if (typeof obj.getHeader === 'function') {\n    // res-like\n    return obj.getHeader('content-type')\n  }\n\n  if (typeof obj.headers === 'object') {\n    // req-like\n    return obj.headers && obj.headers['content-type']\n  }\n}\n\n/**\n * Quote a string if necessary.\n *\n * @param {string} val\n * @return {string}\n * @api private\n */\n\nfunction qstring(val) {\n  var str = String(val)\n\n  // no need to quote tokens\n  if (tokenRegExp.test(str)) {\n    return str\n  }\n\n  if (str.length > 0 && !textRegExp.test(str)) {\n    throw new TypeError('invalid parameter value')\n  }\n\n  return '\"' + str.replace(quoteRegExp, '\\\\$1') + '\"'\n}\n\n/**\n * Simply \"type/subtype+siffx\" into parts.\n *\n * @param {string} string\n * @return {Object}\n * @api private\n */\n\nfunction splitType(string) {\n  var match = typeRegExp.exec(string.toLowerCase())\n\n  if (!match) {\n    throw new TypeError('invalid media type')\n  }\n\n  var type = match[1]\n  var subtype = match[2]\n  var suffix\n\n  // suffix after last +\n  var index = subtype.lastIndexOf('+')\n  if (index !== -1) {\n    suffix = subtype.substr(index + 1)\n    subtype = subtype.substr(0, index)\n  }\n\n  var obj = {\n    type: type,\n    subtype: subtype,\n    suffix: suffix\n  }\n\n  return obj\n}\n","{\n  \"application/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/3gpdash-qoe-report+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/3gpp-ims+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/3gpphal+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/3gpphalforms+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/a2l\": {\n    \"source\": \"iana\"\n  },\n  \"application/ace+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/activemessage\": {\n    \"source\": \"iana\"\n  },\n  \"application/activity+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-costmap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-costmapfilter+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-directory+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointcost+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointcostparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointprop+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointpropparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-error+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-networkmap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-networkmapfilter+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-updatestreamcontrol+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-updatestreamparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/aml\": {\n    \"source\": \"iana\"\n  },\n  \"application/andrew-inset\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ez\"]\n  },\n  \"application/applefile\": {\n    \"source\": \"iana\"\n  },\n  \"application/applixware\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aw\"]\n  },\n  \"application/at+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/atf\": {\n    \"source\": \"iana\"\n  },\n  \"application/atfx\": {\n    \"source\": \"iana\"\n  },\n  \"application/atom+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atom\"]\n  },\n  \"application/atomcat+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atomcat\"]\n  },\n  \"application/atomdeleted+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atomdeleted\"]\n  },\n  \"application/atomicmail\": {\n    \"source\": \"iana\"\n  },\n  \"application/atomsvc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atomsvc\"]\n  },\n  \"application/atsc-dwd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dwd\"]\n  },\n  \"application/atsc-dynamic-event-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/atsc-held+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"held\"]\n  },\n  \"application/atsc-rdt+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/atsc-rsat+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rsat\"]\n  },\n  \"application/atxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/auth-policy+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/bacnet-xdd+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/batch-smtp\": {\n    \"source\": \"iana\"\n  },\n  \"application/bdoc\": {\n    \"compressible\": false,\n    \"extensions\": [\"bdoc\"]\n  },\n  \"application/beep+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/calendar+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/calendar+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xcs\"]\n  },\n  \"application/call-completion\": {\n    \"source\": \"iana\"\n  },\n  \"application/cals-1840\": {\n    \"source\": \"iana\"\n  },\n  \"application/captive+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/cbor-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/cccex\": {\n    \"source\": \"iana\"\n  },\n  \"application/ccmp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ccxml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ccxml\"]\n  },\n  \"application/cdfx+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"cdfx\"]\n  },\n  \"application/cdmi-capability\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmia\"]\n  },\n  \"application/cdmi-container\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmic\"]\n  },\n  \"application/cdmi-domain\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmid\"]\n  },\n  \"application/cdmi-object\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmio\"]\n  },\n  \"application/cdmi-queue\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmiq\"]\n  },\n  \"application/cdni\": {\n    \"source\": \"iana\"\n  },\n  \"application/cea\": {\n    \"source\": \"iana\"\n  },\n  \"application/cea-2018+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cellml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cfw\": {\n    \"source\": \"iana\"\n  },\n  \"application/city+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/clr\": {\n    \"source\": \"iana\"\n  },\n  \"application/clue+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/clue_info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cms\": {\n    \"source\": \"iana\"\n  },\n  \"application/cnrp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/coap-group+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/coap-payload\": {\n    \"source\": \"iana\"\n  },\n  \"application/commonground\": {\n    \"source\": \"iana\"\n  },\n  \"application/conference-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cose\": {\n    \"source\": \"iana\"\n  },\n  \"application/cose-key\": {\n    \"source\": \"iana\"\n  },\n  \"application/cose-key-set\": {\n    \"source\": \"iana\"\n  },\n  \"application/cpl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"cpl\"]\n  },\n  \"application/csrattrs\": {\n    \"source\": \"iana\"\n  },\n  \"application/csta+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cstadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/csvm+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cu-seeme\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cu\"]\n  },\n  \"application/cwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/cybercash\": {\n    \"source\": \"iana\"\n  },\n  \"application/dart\": {\n    \"compressible\": true\n  },\n  \"application/dash+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpd\"]\n  },\n  \"application/dash-patch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpp\"]\n  },\n  \"application/dashdelta\": {\n    \"source\": \"iana\"\n  },\n  \"application/davmount+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"davmount\"]\n  },\n  \"application/dca-rft\": {\n    \"source\": \"iana\"\n  },\n  \"application/dcd\": {\n    \"source\": \"iana\"\n  },\n  \"application/dec-dx\": {\n    \"source\": \"iana\"\n  },\n  \"application/dialog-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dicom\": {\n    \"source\": \"iana\"\n  },\n  \"application/dicom+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dicom+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dii\": {\n    \"source\": \"iana\"\n  },\n  \"application/dit\": {\n    \"source\": \"iana\"\n  },\n  \"application/dns\": {\n    \"source\": \"iana\"\n  },\n  \"application/dns+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dns-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/docbook+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"dbk\"]\n  },\n  \"application/dots+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/dskpp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dssc+der\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dssc\"]\n  },\n  \"application/dssc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdssc\"]\n  },\n  \"application/dvcs\": {\n    \"source\": \"iana\"\n  },\n  \"application/ecmascript\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"es\",\"ecma\"]\n  },\n  \"application/edi-consent\": {\n    \"source\": \"iana\"\n  },\n  \"application/edi-x12\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/edifact\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/efi\": {\n    \"source\": \"iana\"\n  },\n  \"application/elm+json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/elm+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.cap+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.comment+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.control+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.deviceinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.ecall.msd\": {\n    \"source\": \"iana\"\n  },\n  \"application/emergencycalldata.providerinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.serviceinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.subscriberinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.veds+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emma+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"emma\"]\n  },\n  \"application/emotionml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"emotionml\"]\n  },\n  \"application/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"application/epp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/epub+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"epub\"]\n  },\n  \"application/eshop\": {\n    \"source\": \"iana\"\n  },\n  \"application/exi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"exi\"]\n  },\n  \"application/expect-ct-report+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/express\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"exp\"]\n  },\n  \"application/fastinfoset\": {\n    \"source\": \"iana\"\n  },\n  \"application/fastsoap\": {\n    \"source\": \"iana\"\n  },\n  \"application/fdt+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"fdt\"]\n  },\n  \"application/fhir+json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/fhir+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/fido.trusted-apps+json\": {\n    \"compressible\": true\n  },\n  \"application/fits\": {\n    \"source\": \"iana\"\n  },\n  \"application/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/font-sfnt\": {\n    \"source\": \"iana\"\n  },\n  \"application/font-tdpfr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pfr\"]\n  },\n  \"application/font-woff\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/framework-attributes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/geo+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"geojson\"]\n  },\n  \"application/geo+json-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/geopackage+sqlite3\": {\n    \"source\": \"iana\"\n  },\n  \"application/geoxacml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/gltf-buffer\": {\n    \"source\": \"iana\"\n  },\n  \"application/gml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"gml\"]\n  },\n  \"application/gpx+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"gpx\"]\n  },\n  \"application/gxf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gxf\"]\n  },\n  \"application/gzip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"gz\"]\n  },\n  \"application/h224\": {\n    \"source\": \"iana\"\n  },\n  \"application/held+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/hjson\": {\n    \"extensions\": [\"hjson\"]\n  },\n  \"application/http\": {\n    \"source\": \"iana\"\n  },\n  \"application/hyperstudio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"stk\"]\n  },\n  \"application/ibe-key-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ibe-pkg-reply+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ibe-pp-data\": {\n    \"source\": \"iana\"\n  },\n  \"application/iges\": {\n    \"source\": \"iana\"\n  },\n  \"application/im-iscomposing+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/index\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.cmd\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.obj\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.response\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.vnd\": {\n    \"source\": \"iana\"\n  },\n  \"application/inkml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ink\",\"inkml\"]\n  },\n  \"application/iotp\": {\n    \"source\": \"iana\"\n  },\n  \"application/ipfix\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ipfix\"]\n  },\n  \"application/ipp\": {\n    \"source\": \"iana\"\n  },\n  \"application/isup\": {\n    \"source\": \"iana\"\n  },\n  \"application/its+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"its\"]\n  },\n  \"application/java-archive\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"jar\",\"war\",\"ear\"]\n  },\n  \"application/java-serialized-object\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"ser\"]\n  },\n  \"application/java-vm\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"class\"]\n  },\n  \"application/javascript\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"js\",\"mjs\"]\n  },\n  \"application/jf2feed+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jose\": {\n    \"source\": \"iana\"\n  },\n  \"application/jose+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jrd+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jscalendar+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"json\",\"map\"]\n  },\n  \"application/json-patch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/json-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/json5\": {\n    \"extensions\": [\"json5\"]\n  },\n  \"application/jsonml+json\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"jsonml\"]\n  },\n  \"application/jwk+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jwk-set+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/kpml-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/kpml-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ld+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"jsonld\"]\n  },\n  \"application/lgr+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lgr\"]\n  },\n  \"application/link-format\": {\n    \"source\": \"iana\"\n  },\n  \"application/load-control+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/lost+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lostxml\"]\n  },\n  \"application/lostsync+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/lpf+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/lxf\": {\n    \"source\": \"iana\"\n  },\n  \"application/mac-binhex40\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hqx\"]\n  },\n  \"application/mac-compactpro\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cpt\"]\n  },\n  \"application/macwriteii\": {\n    \"source\": \"iana\"\n  },\n  \"application/mads+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mads\"]\n  },\n  \"application/manifest+json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"webmanifest\"]\n  },\n  \"application/marc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mrc\"]\n  },\n  \"application/marcxml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mrcx\"]\n  },\n  \"application/mathematica\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ma\",\"nb\",\"mb\"]\n  },\n  \"application/mathml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mathml\"]\n  },\n  \"application/mathml-content+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mathml-presentation+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-associated-procedure-description+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-deregister+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-envelope+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-msk+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-msk-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-protection-description+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-reception-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-register+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-register-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-schedule+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-user-service-description+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbox\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mbox\"]\n  },\n  \"application/media-policy-dataset+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpf\"]\n  },\n  \"application/media_control+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mediaservercontrol+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mscml\"]\n  },\n  \"application/merge-patch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/metalink+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"metalink\"]\n  },\n  \"application/metalink4+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"meta4\"]\n  },\n  \"application/mets+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mets\"]\n  },\n  \"application/mf4\": {\n    \"source\": \"iana\"\n  },\n  \"application/mikey\": {\n    \"source\": \"iana\"\n  },\n  \"application/mipc\": {\n    \"source\": \"iana\"\n  },\n  \"application/missing-blocks+cbor-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/mmt-aei+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"maei\"]\n  },\n  \"application/mmt-usd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"musd\"]\n  },\n  \"application/mods+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mods\"]\n  },\n  \"application/moss-keys\": {\n    \"source\": \"iana\"\n  },\n  \"application/moss-signature\": {\n    \"source\": \"iana\"\n  },\n  \"application/mosskey-data\": {\n    \"source\": \"iana\"\n  },\n  \"application/mosskey-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/mp21\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"m21\",\"mp21\"]\n  },\n  \"application/mp4\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mp4s\",\"m4p\"]\n  },\n  \"application/mpeg4-generic\": {\n    \"source\": \"iana\"\n  },\n  \"application/mpeg4-iod\": {\n    \"source\": \"iana\"\n  },\n  \"application/mpeg4-iod-xmt\": {\n    \"source\": \"iana\"\n  },\n  \"application/mrb-consumer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mrb-publish+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/msc-ivr+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/msc-mixer+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/msword\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"doc\",\"dot\"]\n  },\n  \"application/mud+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/multipart-core\": {\n    \"source\": \"iana\"\n  },\n  \"application/mxf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxf\"]\n  },\n  \"application/n-quads\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nq\"]\n  },\n  \"application/n-triples\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nt\"]\n  },\n  \"application/nasdata\": {\n    \"source\": \"iana\"\n  },\n  \"application/news-checkgroups\": {\n    \"source\": \"iana\",\n    \"charset\": \"US-ASCII\"\n  },\n  \"application/news-groupinfo\": {\n    \"source\": \"iana\",\n    \"charset\": \"US-ASCII\"\n  },\n  \"application/news-transmission\": {\n    \"source\": \"iana\"\n  },\n  \"application/nlsml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/node\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cjs\"]\n  },\n  \"application/nss\": {\n    \"source\": \"iana\"\n  },\n  \"application/oauth-authz-req+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/oblivious-dns-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/ocsp-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/ocsp-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/octet-stream\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"]\n  },\n  \"application/oda\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oda\"]\n  },\n  \"application/odm+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/odx\": {\n    \"source\": \"iana\"\n  },\n  \"application/oebps-package+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"opf\"]\n  },\n  \"application/ogg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ogx\"]\n  },\n  \"application/omdoc+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"omdoc\"]\n  },\n  \"application/onenote\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\"]\n  },\n  \"application/opc-nodeset+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/oscore\": {\n    \"source\": \"iana\"\n  },\n  \"application/oxps\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oxps\"]\n  },\n  \"application/p21\": {\n    \"source\": \"iana\"\n  },\n  \"application/p21+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/p2p-overlay+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"relo\"]\n  },\n  \"application/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/passport\": {\n    \"source\": \"iana\"\n  },\n  \"application/patch-ops-error+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xer\"]\n  },\n  \"application/pdf\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"pdf\"]\n  },\n  \"application/pdx\": {\n    \"source\": \"iana\"\n  },\n  \"application/pem-certificate-chain\": {\n    \"source\": \"iana\"\n  },\n  \"application/pgp-encrypted\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"pgp\"]\n  },\n  \"application/pgp-keys\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"asc\"]\n  },\n  \"application/pgp-signature\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"asc\",\"sig\"]\n  },\n  \"application/pics-rules\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"prf\"]\n  },\n  \"application/pidf+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/pidf-diff+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/pkcs10\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p10\"]\n  },\n  \"application/pkcs12\": {\n    \"source\": \"iana\"\n  },\n  \"application/pkcs7-mime\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p7m\",\"p7c\"]\n  },\n  \"application/pkcs7-signature\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p7s\"]\n  },\n  \"application/pkcs8\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p8\"]\n  },\n  \"application/pkcs8-encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/pkix-attr-cert\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ac\"]\n  },\n  \"application/pkix-cert\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cer\"]\n  },\n  \"application/pkix-crl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"crl\"]\n  },\n  \"application/pkix-pkipath\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pkipath\"]\n  },\n  \"application/pkixcmp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pki\"]\n  },\n  \"application/pls+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"pls\"]\n  },\n  \"application/poc-settings+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/postscript\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ai\",\"eps\",\"ps\"]\n  },\n  \"application/ppsp-tracker+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/problem+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/problem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/provenance+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"provx\"]\n  },\n  \"application/prs.alvestrand.titrax-sheet\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.cww\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cww\"]\n  },\n  \"application/prs.cyn\": {\n    \"source\": \"iana\",\n    \"charset\": \"7-BIT\"\n  },\n  \"application/prs.hpub+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/prs.nprend\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.plucker\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.rdf-xml-crypt\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.xsf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/pskc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"pskcxml\"]\n  },\n  \"application/pvd+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/qsig\": {\n    \"source\": \"iana\"\n  },\n  \"application/raml+yaml\": {\n    \"compressible\": true,\n    \"extensions\": [\"raml\"]\n  },\n  \"application/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/rdap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/rdf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rdf\",\"owl\"]\n  },\n  \"application/reginfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rif\"]\n  },\n  \"application/relax-ng-compact-syntax\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rnc\"]\n  },\n  \"application/remote-printing\": {\n    \"source\": \"iana\"\n  },\n  \"application/reputon+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/resource-lists+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rl\"]\n  },\n  \"application/resource-lists-diff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rld\"]\n  },\n  \"application/rfc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/riscos\": {\n    \"source\": \"iana\"\n  },\n  \"application/rlmi+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/rls-services+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rs\"]\n  },\n  \"application/route-apd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rapd\"]\n  },\n  \"application/route-s-tsid+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sls\"]\n  },\n  \"application/route-usd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rusd\"]\n  },\n  \"application/rpki-ghostbusters\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gbr\"]\n  },\n  \"application/rpki-manifest\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mft\"]\n  },\n  \"application/rpki-publication\": {\n    \"source\": \"iana\"\n  },\n  \"application/rpki-roa\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"roa\"]\n  },\n  \"application/rpki-updown\": {\n    \"source\": \"iana\"\n  },\n  \"application/rsd+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"rsd\"]\n  },\n  \"application/rss+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"rss\"]\n  },\n  \"application/rtf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rtf\"]\n  },\n  \"application/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"application/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"application/samlassertion+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/samlmetadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sarif+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sarif-external-properties+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sbe\": {\n    \"source\": \"iana\"\n  },\n  \"application/sbml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sbml\"]\n  },\n  \"application/scaip+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/scim+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/scvp-cv-request\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"scq\"]\n  },\n  \"application/scvp-cv-response\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"scs\"]\n  },\n  \"application/scvp-vp-request\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spq\"]\n  },\n  \"application/scvp-vp-response\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spp\"]\n  },\n  \"application/sdp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sdp\"]\n  },\n  \"application/secevent+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/senml+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/senml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/senml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"senmlx\"]\n  },\n  \"application/senml-etch+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/senml-etch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/senml-exi\": {\n    \"source\": \"iana\"\n  },\n  \"application/sensml+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/sensml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sensml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sensmlx\"]\n  },\n  \"application/sensml-exi\": {\n    \"source\": \"iana\"\n  },\n  \"application/sep+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sep-exi\": {\n    \"source\": \"iana\"\n  },\n  \"application/session-info\": {\n    \"source\": \"iana\"\n  },\n  \"application/set-payment\": {\n    \"source\": \"iana\"\n  },\n  \"application/set-payment-initiation\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"setpay\"]\n  },\n  \"application/set-registration\": {\n    \"source\": \"iana\"\n  },\n  \"application/set-registration-initiation\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"setreg\"]\n  },\n  \"application/sgml\": {\n    \"source\": \"iana\"\n  },\n  \"application/sgml-open-catalog\": {\n    \"source\": \"iana\"\n  },\n  \"application/shf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"shf\"]\n  },\n  \"application/sieve\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"siv\",\"sieve\"]\n  },\n  \"application/simple-filter+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/simple-message-summary\": {\n    \"source\": \"iana\"\n  },\n  \"application/simplesymbolcontainer\": {\n    \"source\": \"iana\"\n  },\n  \"application/sipc\": {\n    \"source\": \"iana\"\n  },\n  \"application/slate\": {\n    \"source\": \"iana\"\n  },\n  \"application/smil\": {\n    \"source\": \"iana\"\n  },\n  \"application/smil+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"smi\",\"smil\"]\n  },\n  \"application/smpte336m\": {\n    \"source\": \"iana\"\n  },\n  \"application/soap+fastinfoset\": {\n    \"source\": \"iana\"\n  },\n  \"application/soap+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sparql-query\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rq\"]\n  },\n  \"application/sparql-results+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"srx\"]\n  },\n  \"application/spdx+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/spirits-event+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sql\": {\n    \"source\": \"iana\"\n  },\n  \"application/srgs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gram\"]\n  },\n  \"application/srgs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"grxml\"]\n  },\n  \"application/sru+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sru\"]\n  },\n  \"application/ssdl+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ssdl\"]\n  },\n  \"application/ssml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ssml\"]\n  },\n  \"application/stix+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/swid+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"swidtag\"]\n  },\n  \"application/tamp-apex-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-apex-update-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-community-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-community-update-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-error\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-sequence-adjust\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-sequence-adjust-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-status-query\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-status-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-update-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tar\": {\n    \"compressible\": true\n  },\n  \"application/taxii+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/td+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/tei+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"tei\",\"teicorpus\"]\n  },\n  \"application/tetra_isi\": {\n    \"source\": \"iana\"\n  },\n  \"application/thraud+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"tfi\"]\n  },\n  \"application/timestamp-query\": {\n    \"source\": \"iana\"\n  },\n  \"application/timestamp-reply\": {\n    \"source\": \"iana\"\n  },\n  \"application/timestamped-data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tsd\"]\n  },\n  \"application/tlsrpt+gzip\": {\n    \"source\": \"iana\"\n  },\n  \"application/tlsrpt+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/tnauthlist\": {\n    \"source\": \"iana\"\n  },\n  \"application/token-introspection+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/toml\": {\n    \"compressible\": true,\n    \"extensions\": [\"toml\"]\n  },\n  \"application/trickle-ice-sdpfrag\": {\n    \"source\": \"iana\"\n  },\n  \"application/trig\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"trig\"]\n  },\n  \"application/ttml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ttml\"]\n  },\n  \"application/tve-trigger\": {\n    \"source\": \"iana\"\n  },\n  \"application/tzif\": {\n    \"source\": \"iana\"\n  },\n  \"application/tzif-leap\": {\n    \"source\": \"iana\"\n  },\n  \"application/ubjson\": {\n    \"compressible\": false,\n    \"extensions\": [\"ubj\"]\n  },\n  \"application/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/urc-grpsheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/urc-ressheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rsheet\"]\n  },\n  \"application/urc-targetdesc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"td\"]\n  },\n  \"application/urc-uisocketdesc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vcard+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vcard+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vemmi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vividence.scriptfile\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.1000minds.decision-model+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"1km\"]\n  },\n  \"application/vnd.3gpp-prose+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-prose-pc3ch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-v2x-local-service-information\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.5gnas\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.access-transfer-events+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.bsf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.gmop+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.gtpc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.interworking-data\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.lpp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mc-signalling-ear\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mcdata-affiliation-command+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-payload\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mcdata-service-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-signalling\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mcdata-ue-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-user-profile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-affiliation-command+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-floor-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-location-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-mbms-usage-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-service-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-signed+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-ue-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-ue-init-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-user-profile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-affiliation-command+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-affiliation-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-location-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-mbms-usage-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-service-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-transmission-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-ue-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-user-profile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mid-call+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.ngap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.pfcp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.pic-bw-large\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"plb\"]\n  },\n  \"application/vnd.3gpp.pic-bw-small\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"psb\"]\n  },\n  \"application/vnd.3gpp.pic-bw-var\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pvb\"]\n  },\n  \"application/vnd.3gpp.s1ap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.sms\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.sms+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.srvcc-ext+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.srvcc-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.state-and-event-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.ussd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp2.bcmcsinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp2.sms\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp2.tcap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tcap\"]\n  },\n  \"application/vnd.3lightssoftware.imagescal\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3m.post-it-notes\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pwn\"]\n  },\n  \"application/vnd.accpac.simply.aso\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"aso\"]\n  },\n  \"application/vnd.accpac.simply.imp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"imp\"]\n  },\n  \"application/vnd.acucobol\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"acu\"]\n  },\n  \"application/vnd.acucorp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"atc\",\"acutc\"]\n  },\n  \"application/vnd.adobe.air-application-installer-package+zip\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"air\"]\n  },\n  \"application/vnd.adobe.flash.movie\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.adobe.formscentral.fcdt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fcdt\"]\n  },\n  \"application/vnd.adobe.fxp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fxp\",\"fxpl\"]\n  },\n  \"application/vnd.adobe.partial-upload\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.adobe.xdp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdp\"]\n  },\n  \"application/vnd.adobe.xfdf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xfdf\"]\n  },\n  \"application/vnd.aether.imp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.afplinedata\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.afplinedata-pagedef\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.cmoca-cmresource\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.foca-charset\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.foca-codedfont\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.foca-codepage\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-cmtable\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-formdef\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-mediummap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-objectcontainer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-overlay\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-pagesegment\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.age\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"age\"]\n  },\n  \"application/vnd.ah-barcode\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ahead.space\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ahead\"]\n  },\n  \"application/vnd.airzip.filesecure.azf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"azf\"]\n  },\n  \"application/vnd.airzip.filesecure.azs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"azs\"]\n  },\n  \"application/vnd.amadeus+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.amazon.ebook\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"azw\"]\n  },\n  \"application/vnd.amazon.mobi8-ebook\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.americandynamics.acc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"acc\"]\n  },\n  \"application/vnd.amiga.ami\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ami\"]\n  },\n  \"application/vnd.amundsen.maze+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.android.ota\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.android.package-archive\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"apk\"]\n  },\n  \"application/vnd.anki\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.anser-web-certificate-issue-initiation\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cii\"]\n  },\n  \"application/vnd.anser-web-funds-transfer-initiation\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fti\"]\n  },\n  \"application/vnd.antix.game-component\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"atx\"]\n  },\n  \"application/vnd.apache.arrow.file\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.arrow.stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.thrift.binary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.thrift.compact\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.thrift.json\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.api+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.aplextor.warrp+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.apothekende.reservation+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.apple.installer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpkg\"]\n  },\n  \"application/vnd.apple.keynote\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"key\"]\n  },\n  \"application/vnd.apple.mpegurl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"m3u8\"]\n  },\n  \"application/vnd.apple.numbers\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"numbers\"]\n  },\n  \"application/vnd.apple.pages\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pages\"]\n  },\n  \"application/vnd.apple.pkpass\": {\n    \"compressible\": false,\n    \"extensions\": [\"pkpass\"]\n  },\n  \"application/vnd.arastra.swi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.aristanetworks.swi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"swi\"]\n  },\n  \"application/vnd.artisan+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.artsquare\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.astraea-software.iota\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"iota\"]\n  },\n  \"application/vnd.audiograph\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"aep\"]\n  },\n  \"application/vnd.autopackage\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.avalon+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.avistar+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.balsamiq.bmml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"bmml\"]\n  },\n  \"application/vnd.balsamiq.bmpr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.banana-accounting\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bbf.usp.error\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bbf.usp.msg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bbf.usp.msg+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.bekitzur-stech+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.bint.med-content\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.biopax.rdf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.blink-idb-value-wrapper\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.blueice.multipass\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpm\"]\n  },\n  \"application/vnd.bluetooth.ep.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bluetooth.le.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bmi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bmi\"]\n  },\n  \"application/vnd.bpf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bpf3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.businessobjects\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rep\"]\n  },\n  \"application/vnd.byu.uapi+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cab-jscript\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.canon-cpdl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.canon-lips\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.capasystems-pg+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cendio.thinlinc.clientconf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.century-systems.tcp_stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.chemdraw+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"cdxml\"]\n  },\n  \"application/vnd.chess-pgn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.chipnuts.karaoke-mmd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mmd\"]\n  },\n  \"application/vnd.ciedi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cinderella\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdy\"]\n  },\n  \"application/vnd.cirpack.isdn-ext\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.citationstyles.style+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"csl\"]\n  },\n  \"application/vnd.claymore\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cla\"]\n  },\n  \"application/vnd.cloanto.rp9\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rp9\"]\n  },\n  \"application/vnd.clonk.c4group\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"c4g\",\"c4d\",\"c4f\",\"c4p\",\"c4u\"]\n  },\n  \"application/vnd.cluetrust.cartomobile-config\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"c11amc\"]\n  },\n  \"application/vnd.cluetrust.cartomobile-config-pkg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"c11amz\"]\n  },\n  \"application/vnd.coffeescript\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.document\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.document-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.presentation\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.presentation-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.spreadsheet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.spreadsheet-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collection+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.collection.doc+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.collection.next+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.comicbook+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.comicbook-rar\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.commerce-battelle\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.commonspace\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"csp\"]\n  },\n  \"application/vnd.contact.cmsg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdbcmsg\"]\n  },\n  \"application/vnd.coreos.ignition+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cosmocaller\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cmc\"]\n  },\n  \"application/vnd.crick.clicker\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkx\"]\n  },\n  \"application/vnd.crick.clicker.keyboard\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkk\"]\n  },\n  \"application/vnd.crick.clicker.palette\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkp\"]\n  },\n  \"application/vnd.crick.clicker.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkt\"]\n  },\n  \"application/vnd.crick.clicker.wordbank\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkw\"]\n  },\n  \"application/vnd.criticaltools.wbs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wbs\"]\n  },\n  \"application/vnd.cryptii.pipe+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.crypto-shade-file\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cryptomator.encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cryptomator.vault\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ctc-posml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pml\"]\n  },\n  \"application/vnd.ctct.ws+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cups-pdf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cups-postscript\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cups-ppd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppd\"]\n  },\n  \"application/vnd.cups-raster\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cups-raw\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.curl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.curl.car\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"car\"]\n  },\n  \"application/vnd.curl.pcurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pcurl\"]\n  },\n  \"application/vnd.cyan.dean.root+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cybank\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cyclonedx+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cyclonedx+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.d2l.coursepackage1p0+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.d3m-dataset\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.d3m-problem\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dart\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dart\"]\n  },\n  \"application/vnd.data-vision.rdz\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rdz\"]\n  },\n  \"application/vnd.datapackage+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dataresource+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dbf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dbf\"]\n  },\n  \"application/vnd.debian.binary-package\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dece.data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvf\",\"uvvf\",\"uvd\",\"uvvd\"]\n  },\n  \"application/vnd.dece.ttml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"uvt\",\"uvvt\"]\n  },\n  \"application/vnd.dece.unspecified\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvx\",\"uvvx\"]\n  },\n  \"application/vnd.dece.zip\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvz\",\"uvvz\"]\n  },\n  \"application/vnd.denovo.fcselayout-link\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fe_launch\"]\n  },\n  \"application/vnd.desmume.movie\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dir-bi.plate-dl-nosuffix\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dm.delegation+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dna\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dna\"]\n  },\n  \"application/vnd.document+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dolby.mlp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mlp\"]\n  },\n  \"application/vnd.dolby.mobile.1\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dolby.mobile.2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.doremir.scorecloud-binary-document\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dpgraph\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dpg\"]\n  },\n  \"application/vnd.dreamfactory\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dfac\"]\n  },\n  \"application/vnd.drive+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ds-keypoint\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"kpxx\"]\n  },\n  \"application/vnd.dtg.local\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dtg.local.flash\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dtg.local.html\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ait\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ait\"]\n  },\n  \"application/vnd.dvb.dvbisl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.dvbj\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.esgcontainer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcdftnotifaccess\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcesgaccess\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcesgaccess2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcesgpdd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcroaming\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.iptv.alfec-base\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.iptv.alfec-enhancement\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.notif-aggregate-root+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-container+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-generic+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-ia-msglist+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-ia-registration-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-ia-registration-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-init+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.pfr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.service\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"svc\"]\n  },\n  \"application/vnd.dxr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dynageo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"geo\"]\n  },\n  \"application/vnd.dzr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.easykaraoke.cdgdownload\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecdis-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecip.rlp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eclipse.ditto+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ecowin.chart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mag\"]\n  },\n  \"application/vnd.ecowin.filerequest\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.fileupdate\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.series\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.seriesrequest\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.seriesupdate\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.efi.img\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.efi.iso\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.emclient.accessrequest+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.enliven\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nml\"]\n  },\n  \"application/vnd.enphase.envoy\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eprints.data+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.epson.esf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"esf\"]\n  },\n  \"application/vnd.epson.msf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"msf\"]\n  },\n  \"application/vnd.epson.quickanime\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qam\"]\n  },\n  \"application/vnd.epson.salt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"slt\"]\n  },\n  \"application/vnd.epson.ssf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ssf\"]\n  },\n  \"application/vnd.ericsson.quickcall\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.espass-espass+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.eszigno3+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"es3\",\"et3\"]\n  },\n  \"application/vnd.etsi.aoc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.asic-e+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.etsi.asic-s+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.etsi.cug+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvcommand+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvdiscovery+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsad-bc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsad-cod+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsad-npvr+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvservice+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsync+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvueprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.mcid+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.mheg5\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.etsi.overload-control-policy-dataset+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.pstn+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.sci+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.simservs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.timestamp-token\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.etsi.tsl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.tsl.der\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eu.kasparian.car+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.eudora.data\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.evolv.ecig.profile\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.evolv.ecig.settings\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.evolv.ecig.theme\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.exstream-empower+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.exstream-package\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ezpix-album\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ez2\"]\n  },\n  \"application/vnd.ezpix-package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ez3\"]\n  },\n  \"application/vnd.f-secure.mobile\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.familysearch.gedcom+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.fastcopy-disk-image\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fdf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fdf\"]\n  },\n  \"application/vnd.fdsn.mseed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mseed\"]\n  },\n  \"application/vnd.fdsn.seed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"seed\",\"dataless\"]\n  },\n  \"application/vnd.ffsns\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ficlab.flb+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.filmit.zfc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fints\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.firemonkeys.cloudcell\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.flographit\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gph\"]\n  },\n  \"application/vnd.fluxtime.clip\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ftc\"]\n  },\n  \"application/vnd.font-fontforge-sfd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.framemaker\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fm\",\"frame\",\"maker\",\"book\"]\n  },\n  \"application/vnd.frogans.fnc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fnc\"]\n  },\n  \"application/vnd.frogans.ltf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ltf\"]\n  },\n  \"application/vnd.fsc.weblaunch\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fsc\"]\n  },\n  \"application/vnd.fujifilm.fb.docuworks\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujifilm.fb.docuworks.binder\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujifilm.fb.docuworks.container\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujifilm.fb.jfi+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.fujitsu.oasys\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oas\"]\n  },\n  \"application/vnd.fujitsu.oasys2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oa2\"]\n  },\n  \"application/vnd.fujitsu.oasys3\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oa3\"]\n  },\n  \"application/vnd.fujitsu.oasysgp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fg5\"]\n  },\n  \"application/vnd.fujitsu.oasysprs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bh2\"]\n  },\n  \"application/vnd.fujixerox.art-ex\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujixerox.art4\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujixerox.ddd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ddd\"]\n  },\n  \"application/vnd.fujixerox.docuworks\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xdw\"]\n  },\n  \"application/vnd.fujixerox.docuworks.binder\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xbd\"]\n  },\n  \"application/vnd.fujixerox.docuworks.container\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujixerox.hbpl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fut-misnet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.futoin+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.futoin+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.fuzzysheet\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fzs\"]\n  },\n  \"application/vnd.genomatix.tuxedo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"txd\"]\n  },\n  \"application/vnd.gentics.grd+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.geo+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.geocube+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.geogebra.file\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ggb\"]\n  },\n  \"application/vnd.geogebra.slides\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.geogebra.tool\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ggt\"]\n  },\n  \"application/vnd.geometry-explorer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gex\",\"gre\"]\n  },\n  \"application/vnd.geonext\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gxt\"]\n  },\n  \"application/vnd.geoplan\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"g2w\"]\n  },\n  \"application/vnd.geospace\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"g3w\"]\n  },\n  \"application/vnd.gerber\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.globalplatform.card-content-mgt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.globalplatform.card-content-mgt-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gmx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gmx\"]\n  },\n  \"application/vnd.google-apps.document\": {\n    \"compressible\": false,\n    \"extensions\": [\"gdoc\"]\n  },\n  \"application/vnd.google-apps.presentation\": {\n    \"compressible\": false,\n    \"extensions\": [\"gslides\"]\n  },\n  \"application/vnd.google-apps.spreadsheet\": {\n    \"compressible\": false,\n    \"extensions\": [\"gsheet\"]\n  },\n  \"application/vnd.google-earth.kml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"kml\"]\n  },\n  \"application/vnd.google-earth.kmz\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"kmz\"]\n  },\n  \"application/vnd.gov.sk.e-form+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.gov.sk.e-form+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.gov.sk.xmldatacontainer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.grafeq\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gqf\",\"gqs\"]\n  },\n  \"application/vnd.gridmp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.groove-account\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gac\"]\n  },\n  \"application/vnd.groove-help\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ghf\"]\n  },\n  \"application/vnd.groove-identity-message\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gim\"]\n  },\n  \"application/vnd.groove-injector\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"grv\"]\n  },\n  \"application/vnd.groove-tool-message\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gtm\"]\n  },\n  \"application/vnd.groove-tool-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tpl\"]\n  },\n  \"application/vnd.groove-vcard\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vcg\"]\n  },\n  \"application/vnd.hal+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hal+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"hal\"]\n  },\n  \"application/vnd.handheld-entertainment+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"zmm\"]\n  },\n  \"application/vnd.hbci\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hbci\"]\n  },\n  \"application/vnd.hc+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hcl-bireports\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.hdt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.heroku+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hhe.lesson-player\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"les\"]\n  },\n  \"application/vnd.hl7cda+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.hl7v2+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.hp-hpgl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hpgl\"]\n  },\n  \"application/vnd.hp-hpid\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hpid\"]\n  },\n  \"application/vnd.hp-hps\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hps\"]\n  },\n  \"application/vnd.hp-jlyt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jlt\"]\n  },\n  \"application/vnd.hp-pcl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pcl\"]\n  },\n  \"application/vnd.hp-pclxl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pclxl\"]\n  },\n  \"application/vnd.httphone\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.hydrostatix.sof-data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sfd-hdstx\"]\n  },\n  \"application/vnd.hyper+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hyper-item+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hyperdrive+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hzn-3d-crossword\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ibm.afplinedata\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ibm.electronic-media\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ibm.minipay\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpy\"]\n  },\n  \"application/vnd.ibm.modcap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"afp\",\"listafp\",\"list3820\"]\n  },\n  \"application/vnd.ibm.rights-management\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"irm\"]\n  },\n  \"application/vnd.ibm.secure-container\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sc\"]\n  },\n  \"application/vnd.iccprofile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"icc\",\"icm\"]\n  },\n  \"application/vnd.ieee.1905\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.igloader\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"igl\"]\n  },\n  \"application/vnd.imagemeter.folder+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.imagemeter.image+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.immervision-ivp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ivp\"]\n  },\n  \"application/vnd.immervision-ivu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ivu\"]\n  },\n  \"application/vnd.ims.imsccv1p1\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ims.imsccv1p2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ims.imsccv1p3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ims.lis.v2.result+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolconsumerprofile+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolproxy+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolproxy.id+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolsettings+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolsettings.simple+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.informedcontrol.rms+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.informix-visionary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.infotech.project\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.infotech.project+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.innopath.wamp.notification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.insors.igm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"igm\"]\n  },\n  \"application/vnd.intercon.formnet\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xpw\",\"xpx\"]\n  },\n  \"application/vnd.intergeo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"i2g\"]\n  },\n  \"application/vnd.intertrust.digibox\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.intertrust.nncp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.intu.qbo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qbo\"]\n  },\n  \"application/vnd.intu.qfx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qfx\"]\n  },\n  \"application/vnd.iptc.g2.catalogitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.conceptitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.knowledgeitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.newsitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.newsmessage+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.packageitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.planningitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ipunplugged.rcprofile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rcprofile\"]\n  },\n  \"application/vnd.irepository.package+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"irp\"]\n  },\n  \"application/vnd.is-xpr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xpr\"]\n  },\n  \"application/vnd.isac.fcs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fcs\"]\n  },\n  \"application/vnd.iso11783-10+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.jam\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jam\"]\n  },\n  \"application/vnd.japannet-directory-service\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-jpnstore-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-payment-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-registration\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-registration-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-setstore-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-verification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-verification-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.jcp.javame.midlet-rms\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rms\"]\n  },\n  \"application/vnd.jisp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jisp\"]\n  },\n  \"application/vnd.joost.joda-archive\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"joda\"]\n  },\n  \"application/vnd.jsk.isdn-ngn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.kahootz\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ktz\",\"ktr\"]\n  },\n  \"application/vnd.kde.karbon\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"karbon\"]\n  },\n  \"application/vnd.kde.kchart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"chrt\"]\n  },\n  \"application/vnd.kde.kformula\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kfo\"]\n  },\n  \"application/vnd.kde.kivio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"flw\"]\n  },\n  \"application/vnd.kde.kontour\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kon\"]\n  },\n  \"application/vnd.kde.kpresenter\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kpr\",\"kpt\"]\n  },\n  \"application/vnd.kde.kspread\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ksp\"]\n  },\n  \"application/vnd.kde.kword\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kwd\",\"kwt\"]\n  },\n  \"application/vnd.kenameaapp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"htke\"]\n  },\n  \"application/vnd.kidspiration\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kia\"]\n  },\n  \"application/vnd.kinar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kne\",\"knp\"]\n  },\n  \"application/vnd.koan\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"skp\",\"skd\",\"skt\",\"skm\"]\n  },\n  \"application/vnd.kodak-descriptor\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sse\"]\n  },\n  \"application/vnd.las\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.las.las+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.las.las+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lasxml\"]\n  },\n  \"application/vnd.laszip\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.leap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.liberty-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.llamagraphics.life-balance.desktop\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lbd\"]\n  },\n  \"application/vnd.llamagraphics.life-balance.exchange+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lbe\"]\n  },\n  \"application/vnd.logipipe.circuit+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.loom\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.lotus-1-2-3\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"123\"]\n  },\n  \"application/vnd.lotus-approach\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"apr\"]\n  },\n  \"application/vnd.lotus-freelance\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pre\"]\n  },\n  \"application/vnd.lotus-notes\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nsf\"]\n  },\n  \"application/vnd.lotus-organizer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"org\"]\n  },\n  \"application/vnd.lotus-screencam\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"scm\"]\n  },\n  \"application/vnd.lotus-wordpro\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lwp\"]\n  },\n  \"application/vnd.macports.portpkg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"portpkg\"]\n  },\n  \"application/vnd.mapbox-vector-tile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mvt\"]\n  },\n  \"application/vnd.marlin.drm.actiontoken+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.marlin.drm.conftoken+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.marlin.drm.license+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.marlin.drm.mdcf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mason+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.maxar.archive.3tz+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.maxmind.maxmind-db\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mcd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mcd\"]\n  },\n  \"application/vnd.medcalcdata\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mc1\"]\n  },\n  \"application/vnd.mediastation.cdkey\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdkey\"]\n  },\n  \"application/vnd.meridian-slingshot\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mfer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mwf\"]\n  },\n  \"application/vnd.mfmp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mfm\"]\n  },\n  \"application/vnd.micro+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.micrografx.flo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"flo\"]\n  },\n  \"application/vnd.micrografx.igx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"igx\"]\n  },\n  \"application/vnd.microsoft.portable-executable\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.microsoft.windows.thumbnail-cache\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.miele+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.mif\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mif\"]\n  },\n  \"application/vnd.minisoft-hp3000-save\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mitsubishi.misty-guard.trustweb\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mobius.daf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"daf\"]\n  },\n  \"application/vnd.mobius.dis\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dis\"]\n  },\n  \"application/vnd.mobius.mbk\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mbk\"]\n  },\n  \"application/vnd.mobius.mqy\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mqy\"]\n  },\n  \"application/vnd.mobius.msl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"msl\"]\n  },\n  \"application/vnd.mobius.plc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"plc\"]\n  },\n  \"application/vnd.mobius.txf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"txf\"]\n  },\n  \"application/vnd.mophun.application\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpn\"]\n  },\n  \"application/vnd.mophun.certificate\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpc\"]\n  },\n  \"application/vnd.motorola.flexsuite\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.adsi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.fis\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.gotap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.kmr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.ttc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.wem\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.iprm\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mozilla.xul+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xul\"]\n  },\n  \"application/vnd.ms-3mfdocument\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-artgalry\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cil\"]\n  },\n  \"application/vnd.ms-asf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-cab-compressed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cab\"]\n  },\n  \"application/vnd.ms-color.iccprofile\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.ms-excel\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"xls\",\"xlm\",\"xla\",\"xlc\",\"xlt\",\"xlw\"]\n  },\n  \"application/vnd.ms-excel.addin.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xlam\"]\n  },\n  \"application/vnd.ms-excel.sheet.binary.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xlsb\"]\n  },\n  \"application/vnd.ms-excel.sheet.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xlsm\"]\n  },\n  \"application/vnd.ms-excel.template.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xltm\"]\n  },\n  \"application/vnd.ms-fontobject\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"eot\"]\n  },\n  \"application/vnd.ms-htmlhelp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"chm\"]\n  },\n  \"application/vnd.ms-ims\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ims\"]\n  },\n  \"application/vnd.ms-lrm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lrm\"]\n  },\n  \"application/vnd.ms-office.activex+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-officetheme\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"thmx\"]\n  },\n  \"application/vnd.ms-opentype\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-outlook\": {\n    \"compressible\": false,\n    \"extensions\": [\"msg\"]\n  },\n  \"application/vnd.ms-package.obfuscated-opentype\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.ms-pki.seccat\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cat\"]\n  },\n  \"application/vnd.ms-pki.stl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"stl\"]\n  },\n  \"application/vnd.ms-playready.initiator+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-powerpoint\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ppt\",\"pps\",\"pot\"]\n  },\n  \"application/vnd.ms-powerpoint.addin.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppam\"]\n  },\n  \"application/vnd.ms-powerpoint.presentation.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pptm\"]\n  },\n  \"application/vnd.ms-powerpoint.slide.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sldm\"]\n  },\n  \"application/vnd.ms-powerpoint.slideshow.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppsm\"]\n  },\n  \"application/vnd.ms-powerpoint.template.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"potm\"]\n  },\n  \"application/vnd.ms-printdevicecapabilities+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-printing.printticket+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-printschematicket+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-project\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpp\",\"mpt\"]\n  },\n  \"application/vnd.ms-tnef\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.devicepairing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.nwprinting.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.printerpairing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.wsd.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.lic-chlg-req\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.lic-resp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.meter-chlg-req\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.meter-resp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-word.document.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"docm\"]\n  },\n  \"application/vnd.ms-word.template.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dotm\"]\n  },\n  \"application/vnd.ms-works\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wps\",\"wks\",\"wcm\",\"wdb\"]\n  },\n  \"application/vnd.ms-wpl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wpl\"]\n  },\n  \"application/vnd.ms-xpsdocument\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"xps\"]\n  },\n  \"application/vnd.msa-disk-image\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mseq\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mseq\"]\n  },\n  \"application/vnd.msign\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.multiad.creator\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.multiad.creator.cif\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.music-niff\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.musician\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mus\"]\n  },\n  \"application/vnd.muvee.style\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"msty\"]\n  },\n  \"application/vnd.mynfc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"taglet\"]\n  },\n  \"application/vnd.nacamar.ybrid+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ncd.control\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ncd.reference\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nearst.inv+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nebumind.line\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nervana\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.netfpx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.neurolanguage.nlu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nlu\"]\n  },\n  \"application/vnd.nimn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nintendo.nitro.rom\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nintendo.snes.rom\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nitf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ntf\",\"nitf\"]\n  },\n  \"application/vnd.noblenet-directory\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nnd\"]\n  },\n  \"application/vnd.noblenet-sealer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nns\"]\n  },\n  \"application/vnd.noblenet-web\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nnw\"]\n  },\n  \"application/vnd.nokia.catalogs\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.conml+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.conml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.iptv.config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.isds-radio-presets\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.landmark+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.landmark+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.landmarkcollection+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.n-gage.ac+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ac\"]\n  },\n  \"application/vnd.nokia.n-gage.data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ngdat\"]\n  },\n  \"application/vnd.nokia.n-gage.symbian.install\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"n-gage\"]\n  },\n  \"application/vnd.nokia.ncd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.pcd+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.pcd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.radio-preset\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rpst\"]\n  },\n  \"application/vnd.nokia.radio-presets\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rpss\"]\n  },\n  \"application/vnd.novadigm.edm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"edm\"]\n  },\n  \"application/vnd.novadigm.edx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"edx\"]\n  },\n  \"application/vnd.novadigm.ext\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ext\"]\n  },\n  \"application/vnd.ntt-local.content-share\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.file-transfer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.ogw_remote-access\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.sip-ta_remote\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.sip-ta_tcp_stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oasis.opendocument.chart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odc\"]\n  },\n  \"application/vnd.oasis.opendocument.chart-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"otc\"]\n  },\n  \"application/vnd.oasis.opendocument.database\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odb\"]\n  },\n  \"application/vnd.oasis.opendocument.formula\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odf\"]\n  },\n  \"application/vnd.oasis.opendocument.formula-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odft\"]\n  },\n  \"application/vnd.oasis.opendocument.graphics\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"odg\"]\n  },\n  \"application/vnd.oasis.opendocument.graphics-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"otg\"]\n  },\n  \"application/vnd.oasis.opendocument.image\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odi\"]\n  },\n  \"application/vnd.oasis.opendocument.image-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oti\"]\n  },\n  \"application/vnd.oasis.opendocument.presentation\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"odp\"]\n  },\n  \"application/vnd.oasis.opendocument.presentation-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"otp\"]\n  },\n  \"application/vnd.oasis.opendocument.spreadsheet\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ods\"]\n  },\n  \"application/vnd.oasis.opendocument.spreadsheet-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ots\"]\n  },\n  \"application/vnd.oasis.opendocument.text\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"odt\"]\n  },\n  \"application/vnd.oasis.opendocument.text-master\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odm\"]\n  },\n  \"application/vnd.oasis.opendocument.text-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ott\"]\n  },\n  \"application/vnd.oasis.opendocument.text-web\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oth\"]\n  },\n  \"application/vnd.obn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ocf+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oci.image.manifest.v1+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oftn.l10n+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.contentaccessdownload+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.contentaccessstreaming+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.cspg-hexbinary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oipf.dae.svg+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.dae.xhtml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.mippvcontrolmessage+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.pae.gem\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oipf.spdiscovery+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.spdlist+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.ueprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.userprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.olpc-sugar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xo\"]\n  },\n  \"application/vnd.oma-scws-config\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma-scws-http-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma-scws-http-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.associated-procedure-parameter+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.drm-trigger+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.imd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.ltkm\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.notification+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.provisioningtrigger\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.sgboot\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.sgdd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.sgdu\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.simple-symbol-container\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.smartcard-trigger+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.sprov+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.stkm\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.cab-address-book+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-feature-handler+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-pcc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-subs-invite+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-user-prefs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.dcd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.dcdc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.dd2+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dd2\"]\n  },\n  \"application/vnd.oma.drm.risd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.group-usage-list+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.lwm2m+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.lwm2m+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.lwm2m+tlv\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.pal+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.detailed-progress-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.final-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.groups+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.invocation-descriptor+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.optimized-progress-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.push\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.scidm.messages+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.xcap-directory+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.omads-email+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.omads-file+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.omads-folder+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.omaloc-supl-init\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepager\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertamp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertamx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertat\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertatp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertatx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openblox.game+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"obgx\"]\n  },\n  \"application/vnd.openblox.game-binary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openeye.oeb\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openofficeorg.extension\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"oxt\"]\n  },\n  \"application/vnd.openstreetmap.data+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"osm\"]\n  },\n  \"application/vnd.opentimestamps.ots\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openxmlformats-officedocument.custom-properties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.customxmlproperties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawing+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.extended-properties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.comments+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.presentation\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"pptx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slide\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sldx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slide+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slideshow\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppsx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.tags+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"potx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"xlsx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xltx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.theme+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.themeoverride+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.vmldrawing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"docx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dotx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-package.core-properties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-package.relationships+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oracle.resource+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.orange.indata\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.osa.netdeploy\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.osgeo.mapguide.package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mgp\"]\n  },\n  \"application/vnd.osgi.bundle\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.osgi.dp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dp\"]\n  },\n  \"application/vnd.osgi.subsystem\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"esa\"]\n  },\n  \"application/vnd.otps.ct-kip+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oxli.countgraph\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pagerduty+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.palm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pdb\",\"pqa\",\"oprc\"]\n  },\n  \"application/vnd.panoply\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.paos.xml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.patentdive\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.patientecommsdoc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pawaafile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"paw\"]\n  },\n  \"application/vnd.pcos\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pg.format\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"str\"]\n  },\n  \"application/vnd.pg.osasli\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ei6\"]\n  },\n  \"application/vnd.piaccess.application-licence\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.picsel\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"efif\"]\n  },\n  \"application/vnd.pmi.widget\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wg\"]\n  },\n  \"application/vnd.poc.group-advertisement+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.pocketlearn\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"plf\"]\n  },\n  \"application/vnd.powerbuilder6\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pbd\"]\n  },\n  \"application/vnd.powerbuilder6-s\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder7\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder7-s\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder75\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder75-s\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.preminet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.previewsystems.box\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"box\"]\n  },\n  \"application/vnd.proteus.magazine\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mgz\"]\n  },\n  \"application/vnd.psfs\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.publishare-delta-tree\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qps\"]\n  },\n  \"application/vnd.pvi.ptid1\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ptid\"]\n  },\n  \"application/vnd.pwg-multiplexed\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pwg-xhtml-print+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.qualcomm.brew-app-res\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.quarantainenet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.quark.quarkxpress\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qxd\",\"qxt\",\"qwd\",\"qwt\",\"qxl\",\"qxb\"]\n  },\n  \"application/vnd.quobject-quoxdocument\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.radisys.moml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-conf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-conn+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-dialog+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-stream+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-conf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-base+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-fax-detect+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-fax-sendrecv+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-group+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-speech+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-transform+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.rainstor.data\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.rapid\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.rar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rar\"]\n  },\n  \"application/vnd.realvnc.bed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bed\"]\n  },\n  \"application/vnd.recordare.musicxml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxl\"]\n  },\n  \"application/vnd.recordare.musicxml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"musicxml\"]\n  },\n  \"application/vnd.renlearn.rlprint\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.resilient.logic\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.restful+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.rig.cryptonote\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cryptonote\"]\n  },\n  \"application/vnd.rim.cod\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cod\"]\n  },\n  \"application/vnd.rn-realmedia\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rm\"]\n  },\n  \"application/vnd.rn-realmedia-vbr\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rmvb\"]\n  },\n  \"application/vnd.route66.link66+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"link66\"]\n  },\n  \"application/vnd.rs-274x\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ruckus.download\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.s3sms\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sailingtracker.track\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"st\"]\n  },\n  \"application/vnd.sar\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sbm.cid\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sbm.mid2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.scribus\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.3df\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.csf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.doc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.eml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.mht\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.net\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.ppt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.tiff\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.xls\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealedmedia.softseal.html\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealedmedia.softseal.pdf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.seemail\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"see\"]\n  },\n  \"application/vnd.seis+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.sema\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sema\"]\n  },\n  \"application/vnd.semd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"semd\"]\n  },\n  \"application/vnd.semf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"semf\"]\n  },\n  \"application/vnd.shade-save-file\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.shana.informed.formdata\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ifm\"]\n  },\n  \"application/vnd.shana.informed.formtemplate\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"itp\"]\n  },\n  \"application/vnd.shana.informed.interchange\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"iif\"]\n  },\n  \"application/vnd.shana.informed.package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ipk\"]\n  },\n  \"application/vnd.shootproof+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.shopkick+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.shp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.shx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sigrok.session\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.simtech-mindmapper\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"twd\",\"twds\"]\n  },\n  \"application/vnd.siren+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.smaf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mmf\"]\n  },\n  \"application/vnd.smart.notebook\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.smart.teacher\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"teacher\"]\n  },\n  \"application/vnd.snesdev-page-table\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.software602.filler.form+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"fo\"]\n  },\n  \"application/vnd.software602.filler.form-xml-zip\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.solent.sdkm+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sdkm\",\"sdkd\"]\n  },\n  \"application/vnd.spotfire.dxp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dxp\"]\n  },\n  \"application/vnd.spotfire.sfs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sfs\"]\n  },\n  \"application/vnd.sqlite3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sss-cod\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sss-dtf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sss-ntf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.stardivision.calc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sdc\"]\n  },\n  \"application/vnd.stardivision.draw\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sda\"]\n  },\n  \"application/vnd.stardivision.impress\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sdd\"]\n  },\n  \"application/vnd.stardivision.math\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"smf\"]\n  },\n  \"application/vnd.stardivision.writer\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sdw\",\"vor\"]\n  },\n  \"application/vnd.stardivision.writer-global\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sgl\"]\n  },\n  \"application/vnd.stepmania.package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"smzip\"]\n  },\n  \"application/vnd.stepmania.stepchart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sm\"]\n  },\n  \"application/vnd.street-stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sun.wadl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wadl\"]\n  },\n  \"application/vnd.sun.xml.calc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxc\"]\n  },\n  \"application/vnd.sun.xml.calc.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"stc\"]\n  },\n  \"application/vnd.sun.xml.draw\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxd\"]\n  },\n  \"application/vnd.sun.xml.draw.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"std\"]\n  },\n  \"application/vnd.sun.xml.impress\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxi\"]\n  },\n  \"application/vnd.sun.xml.impress.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sti\"]\n  },\n  \"application/vnd.sun.xml.math\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxm\"]\n  },\n  \"application/vnd.sun.xml.writer\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxw\"]\n  },\n  \"application/vnd.sun.xml.writer.global\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxg\"]\n  },\n  \"application/vnd.sun.xml.writer.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"stw\"]\n  },\n  \"application/vnd.sus-calendar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sus\",\"susp\"]\n  },\n  \"application/vnd.svd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"svd\"]\n  },\n  \"application/vnd.swiftview-ics\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sycle+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.syft+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.symbian.install\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sis\",\"sisx\"]\n  },\n  \"application/vnd.syncml+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"xsm\"]\n  },\n  \"application/vnd.syncml.dm+wbxml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"bdm\"]\n  },\n  \"application/vnd.syncml.dm+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"xdm\"]\n  },\n  \"application/vnd.syncml.dm.notification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.syncml.dmddf+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.syncml.dmddf+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"ddf\"]\n  },\n  \"application/vnd.syncml.dmtnds+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.syncml.dmtnds+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.syncml.ds.notification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.tableschema+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.tao.intent-module-archive\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tao\"]\n  },\n  \"application/vnd.tcpdump.pcap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pcap\",\"cap\",\"dmp\"]\n  },\n  \"application/vnd.think-cell.ppttc+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.tmd.mediaflex.api+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.tml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.tmobile-livetv\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tmo\"]\n  },\n  \"application/vnd.tri.onesource\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.trid.tpt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tpt\"]\n  },\n  \"application/vnd.triscape.mxs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxs\"]\n  },\n  \"application/vnd.trueapp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tra\"]\n  },\n  \"application/vnd.truedoc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ubisoft.webplayer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ufdl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ufd\",\"ufdl\"]\n  },\n  \"application/vnd.uiq.theme\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"utz\"]\n  },\n  \"application/vnd.umajin\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"umj\"]\n  },\n  \"application/vnd.unity\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"unityweb\"]\n  },\n  \"application/vnd.uoml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"uoml\"]\n  },\n  \"application/vnd.uplanet.alert\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.alert-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.bearer-choice\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.bearer-choice-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.cacheop\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.cacheop-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.channel\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.channel-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.list\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.list-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.listcmd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.listcmd-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.signal\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uri-map\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.valve.source.material\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vcx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vcx\"]\n  },\n  \"application/vnd.vd-study\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vectorworks\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vel+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.verimatrix.vcas\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.veritone.aion+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.veryant.thin\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ves.encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vidsoft.vidconference\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.visio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vsd\",\"vst\",\"vss\",\"vsw\"]\n  },\n  \"application/vnd.visionary\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vis\"]\n  },\n  \"application/vnd.vividence.scriptfile\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vsf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vsf\"]\n  },\n  \"application/vnd.wap.sic\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wap.slc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wap.wbxml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"wbxml\"]\n  },\n  \"application/vnd.wap.wmlc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmlc\"]\n  },\n  \"application/vnd.wap.wmlscriptc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmlsc\"]\n  },\n  \"application/vnd.webturbo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wtb\"]\n  },\n  \"application/vnd.wfa.dpp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wfa.p2p\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wfa.wsc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.windows.devicepairing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wmc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wmf.bootstrap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wolfram.mathematica\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wolfram.mathematica.package\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wolfram.player\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nbp\"]\n  },\n  \"application/vnd.wordperfect\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wpd\"]\n  },\n  \"application/vnd.wqd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wqd\"]\n  },\n  \"application/vnd.wrq-hp3000-labelled\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wt.stf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"stf\"]\n  },\n  \"application/vnd.wv.csp+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wv.csp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.wv.ssp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.xacml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.xara\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xar\"]\n  },\n  \"application/vnd.xfdl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xfdl\"]\n  },\n  \"application/vnd.xfdl.webform\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmi+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.xmpie.cpkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.dpkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.plan\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.ppkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.xlim\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yamaha.hv-dic\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hvd\"]\n  },\n  \"application/vnd.yamaha.hv-script\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hvs\"]\n  },\n  \"application/vnd.yamaha.hv-voice\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hvp\"]\n  },\n  \"application/vnd.yamaha.openscoreformat\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"osf\"]\n  },\n  \"application/vnd.yamaha.openscoreformat.osfpvg+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"osfpvg\"]\n  },\n  \"application/vnd.yamaha.remote-setup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yamaha.smaf-audio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"saf\"]\n  },\n  \"application/vnd.yamaha.smaf-phrase\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spf\"]\n  },\n  \"application/vnd.yamaha.through-ngn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yamaha.tunnel-udpencap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yaoweme\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yellowriver-custom-menu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cmp\"]\n  },\n  \"application/vnd.youtube.yt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.zul\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"zir\",\"zirz\"]\n  },\n  \"application/vnd.zzazz.deck+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"zaz\"]\n  },\n  \"application/voicexml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"vxml\"]\n  },\n  \"application/voucher-cms+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vq-rtcpxr\": {\n    \"source\": \"iana\"\n  },\n  \"application/wasm\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wasm\"]\n  },\n  \"application/watcherinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wif\"]\n  },\n  \"application/webpush-options+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/whoispp-query\": {\n    \"source\": \"iana\"\n  },\n  \"application/whoispp-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/widget\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wgt\"]\n  },\n  \"application/winhlp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"hlp\"]\n  },\n  \"application/wita\": {\n    \"source\": \"iana\"\n  },\n  \"application/wordperfect5.1\": {\n    \"source\": \"iana\"\n  },\n  \"application/wsdl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wsdl\"]\n  },\n  \"application/wspolicy+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wspolicy\"]\n  },\n  \"application/x-7z-compressed\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"7z\"]\n  },\n  \"application/x-abiword\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"abw\"]\n  },\n  \"application/x-ace-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ace\"]\n  },\n  \"application/x-amf\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-apple-diskimage\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dmg\"]\n  },\n  \"application/x-arj\": {\n    \"compressible\": false,\n    \"extensions\": [\"arj\"]\n  },\n  \"application/x-authorware-bin\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aab\",\"x32\",\"u32\",\"vox\"]\n  },\n  \"application/x-authorware-map\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aam\"]\n  },\n  \"application/x-authorware-seg\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aas\"]\n  },\n  \"application/x-bcpio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"bcpio\"]\n  },\n  \"application/x-bdoc\": {\n    \"compressible\": false,\n    \"extensions\": [\"bdoc\"]\n  },\n  \"application/x-bittorrent\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"torrent\"]\n  },\n  \"application/x-blorb\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"blb\",\"blorb\"]\n  },\n  \"application/x-bzip\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"bz\"]\n  },\n  \"application/x-bzip2\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"bz2\",\"boz\"]\n  },\n  \"application/x-cbr\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cbr\",\"cba\",\"cbt\",\"cbz\",\"cb7\"]\n  },\n  \"application/x-cdlink\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vcd\"]\n  },\n  \"application/x-cfs-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cfs\"]\n  },\n  \"application/x-chat\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"chat\"]\n  },\n  \"application/x-chess-pgn\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pgn\"]\n  },\n  \"application/x-chrome-extension\": {\n    \"extensions\": [\"crx\"]\n  },\n  \"application/x-cocoa\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"cco\"]\n  },\n  \"application/x-compress\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-conference\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nsc\"]\n  },\n  \"application/x-cpio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cpio\"]\n  },\n  \"application/x-csh\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"csh\"]\n  },\n  \"application/x-deb\": {\n    \"compressible\": false\n  },\n  \"application/x-debian-package\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"deb\",\"udeb\"]\n  },\n  \"application/x-dgc-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dgc\"]\n  },\n  \"application/x-director\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dir\",\"dcr\",\"dxr\",\"cst\",\"cct\",\"cxt\",\"w3d\",\"fgd\",\"swa\"]\n  },\n  \"application/x-doom\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wad\"]\n  },\n  \"application/x-dtbncx+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ncx\"]\n  },\n  \"application/x-dtbook+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"dtb\"]\n  },\n  \"application/x-dtbresource+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"res\"]\n  },\n  \"application/x-dvi\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"dvi\"]\n  },\n  \"application/x-envoy\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"evy\"]\n  },\n  \"application/x-eva\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"eva\"]\n  },\n  \"application/x-font-bdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"bdf\"]\n  },\n  \"application/x-font-dos\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-framemaker\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-ghostscript\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gsf\"]\n  },\n  \"application/x-font-libgrx\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-linux-psf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"psf\"]\n  },\n  \"application/x-font-pcf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pcf\"]\n  },\n  \"application/x-font-snf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"snf\"]\n  },\n  \"application/x-font-speedo\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-sunos-news\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-type1\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pfa\",\"pfb\",\"pfm\",\"afm\"]\n  },\n  \"application/x-font-vfont\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-freearc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"arc\"]\n  },\n  \"application/x-futuresplash\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"spl\"]\n  },\n  \"application/x-gca-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gca\"]\n  },\n  \"application/x-glulx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ulx\"]\n  },\n  \"application/x-gnumeric\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gnumeric\"]\n  },\n  \"application/x-gramps-xml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gramps\"]\n  },\n  \"application/x-gtar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gtar\"]\n  },\n  \"application/x-gzip\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-hdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"hdf\"]\n  },\n  \"application/x-httpd-php\": {\n    \"compressible\": true,\n    \"extensions\": [\"php\"]\n  },\n  \"application/x-install-instructions\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"install\"]\n  },\n  \"application/x-iso9660-image\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"iso\"]\n  },\n  \"application/x-iwork-keynote-sffkey\": {\n    \"extensions\": [\"key\"]\n  },\n  \"application/x-iwork-numbers-sffnumbers\": {\n    \"extensions\": [\"numbers\"]\n  },\n  \"application/x-iwork-pages-sffpages\": {\n    \"extensions\": [\"pages\"]\n  },\n  \"application/x-java-archive-diff\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"jardiff\"]\n  },\n  \"application/x-java-jnlp-file\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"jnlp\"]\n  },\n  \"application/x-javascript\": {\n    \"compressible\": true\n  },\n  \"application/x-keepass2\": {\n    \"extensions\": [\"kdbx\"]\n  },\n  \"application/x-latex\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"latex\"]\n  },\n  \"application/x-lua-bytecode\": {\n    \"extensions\": [\"luac\"]\n  },\n  \"application/x-lzh-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"lzh\",\"lha\"]\n  },\n  \"application/x-makeself\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"run\"]\n  },\n  \"application/x-mie\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mie\"]\n  },\n  \"application/x-mobipocket-ebook\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"prc\",\"mobi\"]\n  },\n  \"application/x-mpegurl\": {\n    \"compressible\": false\n  },\n  \"application/x-ms-application\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"application\"]\n  },\n  \"application/x-ms-shortcut\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"lnk\"]\n  },\n  \"application/x-ms-wmd\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmd\"]\n  },\n  \"application/x-ms-wmz\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmz\"]\n  },\n  \"application/x-ms-xbap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xbap\"]\n  },\n  \"application/x-msaccess\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mdb\"]\n  },\n  \"application/x-msbinder\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"obd\"]\n  },\n  \"application/x-mscardfile\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"crd\"]\n  },\n  \"application/x-msclip\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"clp\"]\n  },\n  \"application/x-msdos-program\": {\n    \"extensions\": [\"exe\"]\n  },\n  \"application/x-msdownload\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"exe\",\"dll\",\"com\",\"bat\",\"msi\"]\n  },\n  \"application/x-msmediaview\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mvb\",\"m13\",\"m14\"]\n  },\n  \"application/x-msmetafile\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmf\",\"wmz\",\"emf\",\"emz\"]\n  },\n  \"application/x-msmoney\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mny\"]\n  },\n  \"application/x-mspublisher\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pub\"]\n  },\n  \"application/x-msschedule\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"scd\"]\n  },\n  \"application/x-msterminal\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"trm\"]\n  },\n  \"application/x-mswrite\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wri\"]\n  },\n  \"application/x-netcdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nc\",\"cdf\"]\n  },\n  \"application/x-ns-proxy-autoconfig\": {\n    \"compressible\": true,\n    \"extensions\": [\"pac\"]\n  },\n  \"application/x-nzb\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nzb\"]\n  },\n  \"application/x-perl\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"pl\",\"pm\"]\n  },\n  \"application/x-pilot\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"prc\",\"pdb\"]\n  },\n  \"application/x-pkcs12\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"p12\",\"pfx\"]\n  },\n  \"application/x-pkcs7-certificates\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"p7b\",\"spc\"]\n  },\n  \"application/x-pkcs7-certreqresp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"p7r\"]\n  },\n  \"application/x-pki-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/x-rar-compressed\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"rar\"]\n  },\n  \"application/x-redhat-package-manager\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"rpm\"]\n  },\n  \"application/x-research-info-systems\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ris\"]\n  },\n  \"application/x-sea\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"sea\"]\n  },\n  \"application/x-sh\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"sh\"]\n  },\n  \"application/x-shar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"shar\"]\n  },\n  \"application/x-shockwave-flash\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"swf\"]\n  },\n  \"application/x-silverlight-app\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xap\"]\n  },\n  \"application/x-sql\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sql\"]\n  },\n  \"application/x-stuffit\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"sit\"]\n  },\n  \"application/x-stuffitx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sitx\"]\n  },\n  \"application/x-subrip\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"srt\"]\n  },\n  \"application/x-sv4cpio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sv4cpio\"]\n  },\n  \"application/x-sv4crc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sv4crc\"]\n  },\n  \"application/x-t3vm-image\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"t3\"]\n  },\n  \"application/x-tads\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gam\"]\n  },\n  \"application/x-tar\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"tar\"]\n  },\n  \"application/x-tcl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tcl\",\"tk\"]\n  },\n  \"application/x-tex\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tex\"]\n  },\n  \"application/x-tex-tfm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tfm\"]\n  },\n  \"application/x-texinfo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"texinfo\",\"texi\"]\n  },\n  \"application/x-tgif\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"obj\"]\n  },\n  \"application/x-ustar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ustar\"]\n  },\n  \"application/x-virtualbox-hdd\": {\n    \"compressible\": true,\n    \"extensions\": [\"hdd\"]\n  },\n  \"application/x-virtualbox-ova\": {\n    \"compressible\": true,\n    \"extensions\": [\"ova\"]\n  },\n  \"application/x-virtualbox-ovf\": {\n    \"compressible\": true,\n    \"extensions\": [\"ovf\"]\n  },\n  \"application/x-virtualbox-vbox\": {\n    \"compressible\": true,\n    \"extensions\": [\"vbox\"]\n  },\n  \"application/x-virtualbox-vbox-extpack\": {\n    \"compressible\": false,\n    \"extensions\": [\"vbox-extpack\"]\n  },\n  \"application/x-virtualbox-vdi\": {\n    \"compressible\": true,\n    \"extensions\": [\"vdi\"]\n  },\n  \"application/x-virtualbox-vhd\": {\n    \"compressible\": true,\n    \"extensions\": [\"vhd\"]\n  },\n  \"application/x-virtualbox-vmdk\": {\n    \"compressible\": true,\n    \"extensions\": [\"vmdk\"]\n  },\n  \"application/x-wais-source\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"src\"]\n  },\n  \"application/x-web-app-manifest+json\": {\n    \"compressible\": true,\n    \"extensions\": [\"webapp\"]\n  },\n  \"application/x-www-form-urlencoded\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/x-x509-ca-cert\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"der\",\"crt\",\"pem\"]\n  },\n  \"application/x-x509-ca-ra-cert\": {\n    \"source\": \"iana\"\n  },\n  \"application/x-x509-next-ca-cert\": {\n    \"source\": \"iana\"\n  },\n  \"application/x-xfig\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fig\"]\n  },\n  \"application/x-xliff+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xlf\"]\n  },\n  \"application/x-xpinstall\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"xpi\"]\n  },\n  \"application/x-xz\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xz\"]\n  },\n  \"application/x-zmachine\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"z1\",\"z2\",\"z3\",\"z4\",\"z5\",\"z6\",\"z7\",\"z8\"]\n  },\n  \"application/x400-bp\": {\n    \"source\": \"iana\"\n  },\n  \"application/xacml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xaml+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xaml\"]\n  },\n  \"application/xcap-att+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xav\"]\n  },\n  \"application/xcap-caps+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xca\"]\n  },\n  \"application/xcap-diff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdf\"]\n  },\n  \"application/xcap-el+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xel\"]\n  },\n  \"application/xcap-error+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xcap-ns+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xns\"]\n  },\n  \"application/xcon-conference-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xcon-conference-info-diff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xenc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xenc\"]\n  },\n  \"application/xhtml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xhtml\",\"xht\"]\n  },\n  \"application/xhtml-voice+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/xliff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xlf\"]\n  },\n  \"application/xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xml\",\"xsl\",\"xsd\",\"rng\"]\n  },\n  \"application/xml-dtd\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dtd\"]\n  },\n  \"application/xml-external-parsed-entity\": {\n    \"source\": \"iana\"\n  },\n  \"application/xml-patch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xmpp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xop+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xop\"]\n  },\n  \"application/xproc+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xpl\"]\n  },\n  \"application/xslt+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xsl\",\"xslt\"]\n  },\n  \"application/xspf+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xspf\"]\n  },\n  \"application/xv+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mxml\",\"xhvml\",\"xvml\",\"xvm\"]\n  },\n  \"application/yang\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"yang\"]\n  },\n  \"application/yang-data+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-data+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-patch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-patch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yin+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"yin\"]\n  },\n  \"application/zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"zip\"]\n  },\n  \"application/zlib\": {\n    \"source\": \"iana\"\n  },\n  \"application/zstd\": {\n    \"source\": \"iana\"\n  },\n  \"audio/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/32kadpcm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/3gpp\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"3gpp\"]\n  },\n  \"audio/3gpp2\": {\n    \"source\": \"iana\"\n  },\n  \"audio/aac\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ac3\": {\n    \"source\": \"iana\"\n  },\n  \"audio/adpcm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"adp\"]\n  },\n  \"audio/amr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"amr\"]\n  },\n  \"audio/amr-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/amr-wb+\": {\n    \"source\": \"iana\"\n  },\n  \"audio/aptx\": {\n    \"source\": \"iana\"\n  },\n  \"audio/asc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/atrac-advanced-lossless\": {\n    \"source\": \"iana\"\n  },\n  \"audio/atrac-x\": {\n    \"source\": \"iana\"\n  },\n  \"audio/atrac3\": {\n    \"source\": \"iana\"\n  },\n  \"audio/basic\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"au\",\"snd\"]\n  },\n  \"audio/bv16\": {\n    \"source\": \"iana\"\n  },\n  \"audio/bv32\": {\n    \"source\": \"iana\"\n  },\n  \"audio/clearmode\": {\n    \"source\": \"iana\"\n  },\n  \"audio/cn\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dat12\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dls\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es201108\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es202050\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es202211\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es202212\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dv\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dvi4\": {\n    \"source\": \"iana\"\n  },\n  \"audio/eac3\": {\n    \"source\": \"iana\"\n  },\n  \"audio/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc-qcp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcb0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcb1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcnw\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcnw0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcnw1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcwb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcwb0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcwb1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evs\": {\n    \"source\": \"iana\"\n  },\n  \"audio/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/fwdred\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g711-0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g719\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g722\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g7221\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g723\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-16\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-24\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-32\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-40\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g728\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g729\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g7291\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g729d\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g729e\": {\n    \"source\": \"iana\"\n  },\n  \"audio/gsm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/gsm-efr\": {\n    \"source\": \"iana\"\n  },\n  \"audio/gsm-hr-08\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ilbc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ip-mr_v2.5\": {\n    \"source\": \"iana\"\n  },\n  \"audio/isac\": {\n    \"source\": \"apache\"\n  },\n  \"audio/l16\": {\n    \"source\": \"iana\"\n  },\n  \"audio/l20\": {\n    \"source\": \"iana\"\n  },\n  \"audio/l24\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"audio/l8\": {\n    \"source\": \"iana\"\n  },\n  \"audio/lpc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp1200\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp2400\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp600\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mhas\": {\n    \"source\": \"iana\"\n  },\n  \"audio/midi\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mid\",\"midi\",\"kar\",\"rmi\"]\n  },\n  \"audio/mobile-xmf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxmf\"]\n  },\n  \"audio/mp3\": {\n    \"compressible\": false,\n    \"extensions\": [\"mp3\"]\n  },\n  \"audio/mp4\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"m4a\",\"mp4a\"]\n  },\n  \"audio/mp4a-latm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mpa\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mpa-robust\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mpeg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"]\n  },\n  \"audio/mpeg4-generic\": {\n    \"source\": \"iana\"\n  },\n  \"audio/musepack\": {\n    \"source\": \"apache\"\n  },\n  \"audio/ogg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"oga\",\"ogg\",\"spx\",\"opus\"]\n  },\n  \"audio/opus\": {\n    \"source\": \"iana\"\n  },\n  \"audio/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcma\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcma-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcmu\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcmu-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/prs.sid\": {\n    \"source\": \"iana\"\n  },\n  \"audio/qcelp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/red\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtp-enc-aescm128\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtp-midi\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"audio/s3m\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"s3m\"]\n  },\n  \"audio/scip\": {\n    \"source\": \"iana\"\n  },\n  \"audio/silk\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sil\"]\n  },\n  \"audio/smv\": {\n    \"source\": \"iana\"\n  },\n  \"audio/smv-qcp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/smv0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/sofa\": {\n    \"source\": \"iana\"\n  },\n  \"audio/sp-midi\": {\n    \"source\": \"iana\"\n  },\n  \"audio/speex\": {\n    \"source\": \"iana\"\n  },\n  \"audio/t140c\": {\n    \"source\": \"iana\"\n  },\n  \"audio/t38\": {\n    \"source\": \"iana\"\n  },\n  \"audio/telephone-event\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tetra_acelp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tetra_acelp_bb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tone\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tsvcis\": {\n    \"source\": \"iana\"\n  },\n  \"audio/uemclip\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/usac\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vdvi\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vmr-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.3gpp.iufp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.4sb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.audiokoz\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.celp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cisco.nse\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cmles.radio-events\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cns.anp1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cns.inf1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dece.audio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uva\",\"uvva\"]\n  },\n  \"audio/vnd.digital-winds\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"eol\"]\n  },\n  \"audio/vnd.dlna.adts\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.heaac.1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.heaac.2\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.mlp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.mps\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pl2\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pl2x\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pl2z\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pulse.1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dra\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dra\"]\n  },\n  \"audio/vnd.dts\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dts\"]\n  },\n  \"audio/vnd.dts.hd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dtshd\"]\n  },\n  \"audio/vnd.dts.uhd\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dvb.file\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.everad.plj\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.hns.audio\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.lucent.voice\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lvp\"]\n  },\n  \"audio/vnd.ms-playready.media.pya\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pya\"]\n  },\n  \"audio/vnd.nokia.mobile-xmf\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.nortel.vbk\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.nuera.ecelp4800\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ecelp4800\"]\n  },\n  \"audio/vnd.nuera.ecelp7470\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ecelp7470\"]\n  },\n  \"audio/vnd.nuera.ecelp9600\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ecelp9600\"]\n  },\n  \"audio/vnd.octel.sbc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.presonus.multitrack\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.qcelp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.rhetorex.32kadpcm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.rip\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rip\"]\n  },\n  \"audio/vnd.rn-realaudio\": {\n    \"compressible\": false\n  },\n  \"audio/vnd.sealedmedia.softseal.mpeg\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.vmx.cvsd\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.wave\": {\n    \"compressible\": false\n  },\n  \"audio/vorbis\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"audio/vorbis-config\": {\n    \"source\": \"iana\"\n  },\n  \"audio/wav\": {\n    \"compressible\": false,\n    \"extensions\": [\"wav\"]\n  },\n  \"audio/wave\": {\n    \"compressible\": false,\n    \"extensions\": [\"wav\"]\n  },\n  \"audio/webm\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"weba\"]\n  },\n  \"audio/x-aac\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"aac\"]\n  },\n  \"audio/x-aiff\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aif\",\"aiff\",\"aifc\"]\n  },\n  \"audio/x-caf\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"caf\"]\n  },\n  \"audio/x-flac\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"flac\"]\n  },\n  \"audio/x-m4a\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"m4a\"]\n  },\n  \"audio/x-matroska\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mka\"]\n  },\n  \"audio/x-mpegurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"m3u\"]\n  },\n  \"audio/x-ms-wax\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wax\"]\n  },\n  \"audio/x-ms-wma\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wma\"]\n  },\n  \"audio/x-pn-realaudio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ram\",\"ra\"]\n  },\n  \"audio/x-pn-realaudio-plugin\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rmp\"]\n  },\n  \"audio/x-realaudio\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"ra\"]\n  },\n  \"audio/x-tta\": {\n    \"source\": \"apache\"\n  },\n  \"audio/x-wav\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wav\"]\n  },\n  \"audio/xm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xm\"]\n  },\n  \"chemical/x-cdx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cdx\"]\n  },\n  \"chemical/x-cif\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cif\"]\n  },\n  \"chemical/x-cmdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cmdf\"]\n  },\n  \"chemical/x-cml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cml\"]\n  },\n  \"chemical/x-csml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"csml\"]\n  },\n  \"chemical/x-pdb\": {\n    \"source\": \"apache\"\n  },\n  \"chemical/x-xyz\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xyz\"]\n  },\n  \"font/collection\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ttc\"]\n  },\n  \"font/otf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"otf\"]\n  },\n  \"font/sfnt\": {\n    \"source\": \"iana\"\n  },\n  \"font/ttf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ttf\"]\n  },\n  \"font/woff\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"woff\"]\n  },\n  \"font/woff2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"woff2\"]\n  },\n  \"image/aces\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"exr\"]\n  },\n  \"image/apng\": {\n    \"compressible\": false,\n    \"extensions\": [\"apng\"]\n  },\n  \"image/avci\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"avci\"]\n  },\n  \"image/avcs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"avcs\"]\n  },\n  \"image/avif\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"avif\"]\n  },\n  \"image/bmp\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"bmp\"]\n  },\n  \"image/cgm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cgm\"]\n  },\n  \"image/dicom-rle\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"drle\"]\n  },\n  \"image/emf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"emf\"]\n  },\n  \"image/fits\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fits\"]\n  },\n  \"image/g3fax\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"g3\"]\n  },\n  \"image/gif\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"gif\"]\n  },\n  \"image/heic\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heic\"]\n  },\n  \"image/heic-sequence\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heics\"]\n  },\n  \"image/heif\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heif\"]\n  },\n  \"image/heif-sequence\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heifs\"]\n  },\n  \"image/hej2k\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hej2\"]\n  },\n  \"image/hsj2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hsj2\"]\n  },\n  \"image/ief\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ief\"]\n  },\n  \"image/jls\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jls\"]\n  },\n  \"image/jp2\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jp2\",\"jpg2\"]\n  },\n  \"image/jpeg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jpeg\",\"jpg\",\"jpe\"]\n  },\n  \"image/jph\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jph\"]\n  },\n  \"image/jphc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jhc\"]\n  },\n  \"image/jpm\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jpm\"]\n  },\n  \"image/jpx\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jpx\",\"jpf\"]\n  },\n  \"image/jxr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxr\"]\n  },\n  \"image/jxra\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxra\"]\n  },\n  \"image/jxrs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxrs\"]\n  },\n  \"image/jxs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxs\"]\n  },\n  \"image/jxsc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxsc\"]\n  },\n  \"image/jxsi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxsi\"]\n  },\n  \"image/jxss\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxss\"]\n  },\n  \"image/ktx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ktx\"]\n  },\n  \"image/ktx2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ktx2\"]\n  },\n  \"image/naplps\": {\n    \"source\": \"iana\"\n  },\n  \"image/pjpeg\": {\n    \"compressible\": false\n  },\n  \"image/png\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"png\"]\n  },\n  \"image/prs.btif\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"btif\"]\n  },\n  \"image/prs.pti\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pti\"]\n  },\n  \"image/pwg-raster\": {\n    \"source\": \"iana\"\n  },\n  \"image/sgi\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sgi\"]\n  },\n  \"image/svg+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"svg\",\"svgz\"]\n  },\n  \"image/t38\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"t38\"]\n  },\n  \"image/tiff\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"tif\",\"tiff\"]\n  },\n  \"image/tiff-fx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tfx\"]\n  },\n  \"image/vnd.adobe.photoshop\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"psd\"]\n  },\n  \"image/vnd.airzip.accelerator.azv\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"azv\"]\n  },\n  \"image/vnd.cns.inf2\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.dece.graphic\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvi\",\"uvvi\",\"uvg\",\"uvvg\"]\n  },\n  \"image/vnd.djvu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"djvu\",\"djv\"]\n  },\n  \"image/vnd.dvb.subtitle\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sub\"]\n  },\n  \"image/vnd.dwg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dwg\"]\n  },\n  \"image/vnd.dxf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dxf\"]\n  },\n  \"image/vnd.fastbidsheet\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fbs\"]\n  },\n  \"image/vnd.fpx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fpx\"]\n  },\n  \"image/vnd.fst\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fst\"]\n  },\n  \"image/vnd.fujixerox.edmics-mmr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mmr\"]\n  },\n  \"image/vnd.fujixerox.edmics-rlc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rlc\"]\n  },\n  \"image/vnd.globalgraphics.pgb\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.microsoft.icon\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ico\"]\n  },\n  \"image/vnd.mix\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.mozilla.apng\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.ms-dds\": {\n    \"compressible\": true,\n    \"extensions\": [\"dds\"]\n  },\n  \"image/vnd.ms-modi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mdi\"]\n  },\n  \"image/vnd.ms-photo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wdp\"]\n  },\n  \"image/vnd.net-fpx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"npx\"]\n  },\n  \"image/vnd.pco.b16\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"b16\"]\n  },\n  \"image/vnd.radiance\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.sealed.png\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.sealedmedia.softseal.gif\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.sealedmedia.softseal.jpg\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.svf\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.tencent.tap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tap\"]\n  },\n  \"image/vnd.valve.source.texture\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vtf\"]\n  },\n  \"image/vnd.wap.wbmp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wbmp\"]\n  },\n  \"image/vnd.xiff\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xif\"]\n  },\n  \"image/vnd.zbrush.pcx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pcx\"]\n  },\n  \"image/webp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"webp\"]\n  },\n  \"image/wmf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmf\"]\n  },\n  \"image/x-3ds\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"3ds\"]\n  },\n  \"image/x-cmu-raster\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ras\"]\n  },\n  \"image/x-cmx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cmx\"]\n  },\n  \"image/x-freehand\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fh\",\"fhc\",\"fh4\",\"fh5\",\"fh7\"]\n  },\n  \"image/x-icon\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ico\"]\n  },\n  \"image/x-jng\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"jng\"]\n  },\n  \"image/x-mrsid-image\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sid\"]\n  },\n  \"image/x-ms-bmp\": {\n    \"source\": \"nginx\",\n    \"compressible\": true,\n    \"extensions\": [\"bmp\"]\n  },\n  \"image/x-pcx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pcx\"]\n  },\n  \"image/x-pict\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pic\",\"pct\"]\n  },\n  \"image/x-portable-anymap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pnm\"]\n  },\n  \"image/x-portable-bitmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pbm\"]\n  },\n  \"image/x-portable-graymap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pgm\"]\n  },\n  \"image/x-portable-pixmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ppm\"]\n  },\n  \"image/x-rgb\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rgb\"]\n  },\n  \"image/x-tga\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tga\"]\n  },\n  \"image/x-xbitmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xbm\"]\n  },\n  \"image/x-xcf\": {\n    \"compressible\": false\n  },\n  \"image/x-xpixmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xpm\"]\n  },\n  \"image/x-xwindowdump\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xwd\"]\n  },\n  \"message/cpim\": {\n    \"source\": \"iana\"\n  },\n  \"message/delivery-status\": {\n    \"source\": \"iana\"\n  },\n  \"message/disposition-notification\": {\n    \"source\": \"iana\",\n    \"extensions\": [\n      \"disposition-notification\"\n    ]\n  },\n  \"message/external-body\": {\n    \"source\": \"iana\"\n  },\n  \"message/feedback-report\": {\n    \"source\": \"iana\"\n  },\n  \"message/global\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8msg\"]\n  },\n  \"message/global-delivery-status\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8dsn\"]\n  },\n  \"message/global-disposition-notification\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8mdn\"]\n  },\n  \"message/global-headers\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8hdr\"]\n  },\n  \"message/http\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"message/imdn+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"message/news\": {\n    \"source\": \"iana\"\n  },\n  \"message/partial\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"message/rfc822\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"eml\",\"mime\"]\n  },\n  \"message/s-http\": {\n    \"source\": \"iana\"\n  },\n  \"message/sip\": {\n    \"source\": \"iana\"\n  },\n  \"message/sipfrag\": {\n    \"source\": \"iana\"\n  },\n  \"message/tracking-status\": {\n    \"source\": \"iana\"\n  },\n  \"message/vnd.si.simp\": {\n    \"source\": \"iana\"\n  },\n  \"message/vnd.wfa.wsc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wsc\"]\n  },\n  \"model/3mf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3mf\"]\n  },\n  \"model/e57\": {\n    \"source\": \"iana\"\n  },\n  \"model/gltf+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"gltf\"]\n  },\n  \"model/gltf-binary\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"glb\"]\n  },\n  \"model/iges\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"igs\",\"iges\"]\n  },\n  \"model/mesh\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"msh\",\"mesh\",\"silo\"]\n  },\n  \"model/mtl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mtl\"]\n  },\n  \"model/obj\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"obj\"]\n  },\n  \"model/step\": {\n    \"source\": \"iana\"\n  },\n  \"model/step+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"stpx\"]\n  },\n  \"model/step+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"stpz\"]\n  },\n  \"model/step-xml+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"stpxz\"]\n  },\n  \"model/stl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"stl\"]\n  },\n  \"model/vnd.collada+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dae\"]\n  },\n  \"model/vnd.dwf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dwf\"]\n  },\n  \"model/vnd.flatland.3dml\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.gdl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gdl\"]\n  },\n  \"model/vnd.gs-gdl\": {\n    \"source\": \"apache\"\n  },\n  \"model/vnd.gs.gdl\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.gtw\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gtw\"]\n  },\n  \"model/vnd.moml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"model/vnd.mts\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mts\"]\n  },\n  \"model/vnd.opengex\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ogex\"]\n  },\n  \"model/vnd.parasolid.transmit.binary\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x_b\"]\n  },\n  \"model/vnd.parasolid.transmit.text\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x_t\"]\n  },\n  \"model/vnd.pytha.pyox\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.rosette.annotated-data-model\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.sap.vds\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vds\"]\n  },\n  \"model/vnd.usdz+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"usdz\"]\n  },\n  \"model/vnd.valve.source.compiled-map\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bsp\"]\n  },\n  \"model/vnd.vtu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vtu\"]\n  },\n  \"model/vrml\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"wrl\",\"vrml\"]\n  },\n  \"model/x3d+binary\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"x3db\",\"x3dbz\"]\n  },\n  \"model/x3d+fastinfoset\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x3db\"]\n  },\n  \"model/x3d+vrml\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"x3dv\",\"x3dvz\"]\n  },\n  \"model/x3d+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"x3d\",\"x3dz\"]\n  },\n  \"model/x3d-vrml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x3dv\"]\n  },\n  \"multipart/alternative\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/appledouble\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/byteranges\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/digest\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/encrypted\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/form-data\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/header-set\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/mixed\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/multilingual\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/parallel\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/related\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/report\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/signed\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/vnd.bint.med-plus\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/voice-message\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/x-mixed-replace\": {\n    \"source\": \"iana\"\n  },\n  \"text/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/cache-manifest\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"appcache\",\"manifest\"]\n  },\n  \"text/calendar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ics\",\"ifb\"]\n  },\n  \"text/calender\": {\n    \"compressible\": true\n  },\n  \"text/cmd\": {\n    \"compressible\": true\n  },\n  \"text/coffeescript\": {\n    \"extensions\": [\"coffee\",\"litcoffee\"]\n  },\n  \"text/cql\": {\n    \"source\": \"iana\"\n  },\n  \"text/cql-expression\": {\n    \"source\": \"iana\"\n  },\n  \"text/cql-identifier\": {\n    \"source\": \"iana\"\n  },\n  \"text/css\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"css\"]\n  },\n  \"text/csv\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"csv\"]\n  },\n  \"text/csv-schema\": {\n    \"source\": \"iana\"\n  },\n  \"text/directory\": {\n    \"source\": \"iana\"\n  },\n  \"text/dns\": {\n    \"source\": \"iana\"\n  },\n  \"text/ecmascript\": {\n    \"source\": \"iana\"\n  },\n  \"text/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"text/enriched\": {\n    \"source\": \"iana\"\n  },\n  \"text/fhirpath\": {\n    \"source\": \"iana\"\n  },\n  \"text/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/fwdred\": {\n    \"source\": \"iana\"\n  },\n  \"text/gff3\": {\n    \"source\": \"iana\"\n  },\n  \"text/grammar-ref-list\": {\n    \"source\": \"iana\"\n  },\n  \"text/html\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"html\",\"htm\",\"shtml\"]\n  },\n  \"text/jade\": {\n    \"extensions\": [\"jade\"]\n  },\n  \"text/javascript\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"text/jcr-cnd\": {\n    \"source\": \"iana\"\n  },\n  \"text/jsx\": {\n    \"compressible\": true,\n    \"extensions\": [\"jsx\"]\n  },\n  \"text/less\": {\n    \"compressible\": true,\n    \"extensions\": [\"less\"]\n  },\n  \"text/markdown\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"markdown\",\"md\"]\n  },\n  \"text/mathml\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"mml\"]\n  },\n  \"text/mdx\": {\n    \"compressible\": true,\n    \"extensions\": [\"mdx\"]\n  },\n  \"text/mizar\": {\n    \"source\": \"iana\"\n  },\n  \"text/n3\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"n3\"]\n  },\n  \"text/parameters\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/plain\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"]\n  },\n  \"text/provenance-notation\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/prs.fallenstein.rst\": {\n    \"source\": \"iana\"\n  },\n  \"text/prs.lines.tag\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dsc\"]\n  },\n  \"text/prs.prop.logic\": {\n    \"source\": \"iana\"\n  },\n  \"text/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/red\": {\n    \"source\": \"iana\"\n  },\n  \"text/rfc822-headers\": {\n    \"source\": \"iana\"\n  },\n  \"text/richtext\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rtx\"]\n  },\n  \"text/rtf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rtf\"]\n  },\n  \"text/rtp-enc-aescm128\": {\n    \"source\": \"iana\"\n  },\n  \"text/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"text/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"text/sgml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sgml\",\"sgm\"]\n  },\n  \"text/shaclc\": {\n    \"source\": \"iana\"\n  },\n  \"text/shex\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"shex\"]\n  },\n  \"text/slim\": {\n    \"extensions\": [\"slim\",\"slm\"]\n  },\n  \"text/spdx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spdx\"]\n  },\n  \"text/strings\": {\n    \"source\": \"iana\"\n  },\n  \"text/stylus\": {\n    \"extensions\": [\"stylus\",\"styl\"]\n  },\n  \"text/t140\": {\n    \"source\": \"iana\"\n  },\n  \"text/tab-separated-values\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"tsv\"]\n  },\n  \"text/troff\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"]\n  },\n  \"text/turtle\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"ttl\"]\n  },\n  \"text/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/uri-list\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"uri\",\"uris\",\"urls\"]\n  },\n  \"text/vcard\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"vcard\"]\n  },\n  \"text/vnd.a\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.abc\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.ascii-art\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.curl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"curl\"]\n  },\n  \"text/vnd.curl.dcurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dcurl\"]\n  },\n  \"text/vnd.curl.mcurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mcurl\"]\n  },\n  \"text/vnd.curl.scurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"scurl\"]\n  },\n  \"text/vnd.debian.copyright\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/vnd.dmclientscript\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.dvb.subtitle\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sub\"]\n  },\n  \"text/vnd.esmertec.theme-descriptor\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/vnd.familysearch.gedcom\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ged\"]\n  },\n  \"text/vnd.ficlab.flt\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.fly\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fly\"]\n  },\n  \"text/vnd.fmi.flexstor\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"flx\"]\n  },\n  \"text/vnd.gml\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.graphviz\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gv\"]\n  },\n  \"text/vnd.hans\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.hgl\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.in3d.3dml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3dml\"]\n  },\n  \"text/vnd.in3d.spot\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spot\"]\n  },\n  \"text/vnd.iptc.newsml\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.iptc.nitf\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.latex-z\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.motorola.reflex\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.ms-mediapackage\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.net2phone.commcenter.command\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.radisys.msml-basic-layout\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.senx.warpscript\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.si.uricatalogue\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.sosi\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.sun.j2me.app-descriptor\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"jad\"]\n  },\n  \"text/vnd.trolltech.linguist\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/vnd.wap.si\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.wap.sl\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.wap.wml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wml\"]\n  },\n  \"text/vnd.wap.wmlscript\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmls\"]\n  },\n  \"text/vtt\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"vtt\"]\n  },\n  \"text/x-asm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"s\",\"asm\"]\n  },\n  \"text/x-c\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"c\",\"cc\",\"cxx\",\"cpp\",\"h\",\"hh\",\"dic\"]\n  },\n  \"text/x-component\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"htc\"]\n  },\n  \"text/x-fortran\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"f\",\"for\",\"f77\",\"f90\"]\n  },\n  \"text/x-gwt-rpc\": {\n    \"compressible\": true\n  },\n  \"text/x-handlebars-template\": {\n    \"extensions\": [\"hbs\"]\n  },\n  \"text/x-java-source\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"java\"]\n  },\n  \"text/x-jquery-tmpl\": {\n    \"compressible\": true\n  },\n  \"text/x-lua\": {\n    \"extensions\": [\"lua\"]\n  },\n  \"text/x-markdown\": {\n    \"compressible\": true,\n    \"extensions\": [\"mkd\"]\n  },\n  \"text/x-nfo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nfo\"]\n  },\n  \"text/x-opml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"opml\"]\n  },\n  \"text/x-org\": {\n    \"compressible\": true,\n    \"extensions\": [\"org\"]\n  },\n  \"text/x-pascal\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"p\",\"pas\"]\n  },\n  \"text/x-processing\": {\n    \"compressible\": true,\n    \"extensions\": [\"pde\"]\n  },\n  \"text/x-sass\": {\n    \"extensions\": [\"sass\"]\n  },\n  \"text/x-scss\": {\n    \"extensions\": [\"scss\"]\n  },\n  \"text/x-setext\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"etx\"]\n  },\n  \"text/x-sfv\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sfv\"]\n  },\n  \"text/x-suse-ymp\": {\n    \"compressible\": true,\n    \"extensions\": [\"ymp\"]\n  },\n  \"text/x-uuencode\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"uu\"]\n  },\n  \"text/x-vcalendar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vcs\"]\n  },\n  \"text/x-vcard\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vcf\"]\n  },\n  \"text/xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xml\"]\n  },\n  \"text/xml-external-parsed-entity\": {\n    \"source\": \"iana\"\n  },\n  \"text/yaml\": {\n    \"compressible\": true,\n    \"extensions\": [\"yaml\",\"yml\"]\n  },\n  \"video/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/3gpp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3gp\",\"3gpp\"]\n  },\n  \"video/3gpp-tt\": {\n    \"source\": \"iana\"\n  },\n  \"video/3gpp2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3g2\"]\n  },\n  \"video/av1\": {\n    \"source\": \"iana\"\n  },\n  \"video/bmpeg\": {\n    \"source\": \"iana\"\n  },\n  \"video/bt656\": {\n    \"source\": \"iana\"\n  },\n  \"video/celb\": {\n    \"source\": \"iana\"\n  },\n  \"video/dv\": {\n    \"source\": \"iana\"\n  },\n  \"video/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"video/ffv1\": {\n    \"source\": \"iana\"\n  },\n  \"video/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/h261\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"h261\"]\n  },\n  \"video/h263\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"h263\"]\n  },\n  \"video/h263-1998\": {\n    \"source\": \"iana\"\n  },\n  \"video/h263-2000\": {\n    \"source\": \"iana\"\n  },\n  \"video/h264\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"h264\"]\n  },\n  \"video/h264-rcdo\": {\n    \"source\": \"iana\"\n  },\n  \"video/h264-svc\": {\n    \"source\": \"iana\"\n  },\n  \"video/h265\": {\n    \"source\": \"iana\"\n  },\n  \"video/iso.segment\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"m4s\"]\n  },\n  \"video/jpeg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jpgv\"]\n  },\n  \"video/jpeg2000\": {\n    \"source\": \"iana\"\n  },\n  \"video/jpm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"jpm\",\"jpgm\"]\n  },\n  \"video/jxsv\": {\n    \"source\": \"iana\"\n  },\n  \"video/mj2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mj2\",\"mjp2\"]\n  },\n  \"video/mp1s\": {\n    \"source\": \"iana\"\n  },\n  \"video/mp2p\": {\n    \"source\": \"iana\"\n  },\n  \"video/mp2t\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ts\"]\n  },\n  \"video/mp4\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"mp4\",\"mp4v\",\"mpg4\"]\n  },\n  \"video/mp4v-es\": {\n    \"source\": \"iana\"\n  },\n  \"video/mpeg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"]\n  },\n  \"video/mpeg4-generic\": {\n    \"source\": \"iana\"\n  },\n  \"video/mpv\": {\n    \"source\": \"iana\"\n  },\n  \"video/nv\": {\n    \"source\": \"iana\"\n  },\n  \"video/ogg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ogv\"]\n  },\n  \"video/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/pointer\": {\n    \"source\": \"iana\"\n  },\n  \"video/quicktime\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"qt\",\"mov\"]\n  },\n  \"video/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/raw\": {\n    \"source\": \"iana\"\n  },\n  \"video/rtp-enc-aescm128\": {\n    \"source\": \"iana\"\n  },\n  \"video/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"video/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"video/scip\": {\n    \"source\": \"iana\"\n  },\n  \"video/smpte291\": {\n    \"source\": \"iana\"\n  },\n  \"video/smpte292m\": {\n    \"source\": \"iana\"\n  },\n  \"video/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/vc1\": {\n    \"source\": \"iana\"\n  },\n  \"video/vc2\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.cctv\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dece.hd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvh\",\"uvvh\"]\n  },\n  \"video/vnd.dece.mobile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvm\",\"uvvm\"]\n  },\n  \"video/vnd.dece.mp4\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dece.pd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvp\",\"uvvp\"]\n  },\n  \"video/vnd.dece.sd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvs\",\"uvvs\"]\n  },\n  \"video/vnd.dece.video\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvv\",\"uvvv\"]\n  },\n  \"video/vnd.directv.mpeg\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.directv.mpeg-tts\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dlna.mpeg-tts\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dvb.file\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dvb\"]\n  },\n  \"video/vnd.fvt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fvt\"]\n  },\n  \"video/vnd.hns.video\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.1dparityfec-1010\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.1dparityfec-2005\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.2dparityfec-1010\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.2dparityfec-2005\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.ttsavc\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.ttsmpeg2\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.motorola.video\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.motorola.videop\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.mpegurl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxu\",\"m4u\"]\n  },\n  \"video/vnd.ms-playready.media.pyv\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pyv\"]\n  },\n  \"video/vnd.nokia.interleaved-multimedia\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.nokia.mp4vr\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.nokia.videovoip\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.objectvideo\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.radgamettools.bink\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.radgamettools.smacker\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealed.mpeg1\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealed.mpeg4\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealed.swf\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealedmedia.softseal.mov\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.uvvu.mp4\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvu\",\"uvvu\"]\n  },\n  \"video/vnd.vivo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"viv\"]\n  },\n  \"video/vnd.youtube.yt\": {\n    \"source\": \"iana\"\n  },\n  \"video/vp8\": {\n    \"source\": \"iana\"\n  },\n  \"video/vp9\": {\n    \"source\": \"iana\"\n  },\n  \"video/webm\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"webm\"]\n  },\n  \"video/x-f4v\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"f4v\"]\n  },\n  \"video/x-fli\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fli\"]\n  },\n  \"video/x-flv\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"flv\"]\n  },\n  \"video/x-m4v\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"m4v\"]\n  },\n  \"video/x-matroska\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"mkv\",\"mk3d\",\"mks\"]\n  },\n  \"video/x-mng\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mng\"]\n  },\n  \"video/x-ms-asf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"asf\",\"asx\"]\n  },\n  \"video/x-ms-vob\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vob\"]\n  },\n  \"video/x-ms-wm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wm\"]\n  },\n  \"video/x-ms-wmv\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"wmv\"]\n  },\n  \"video/x-ms-wmx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmx\"]\n  },\n  \"video/x-ms-wvx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wvx\"]\n  },\n  \"video/x-msvideo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"avi\"]\n  },\n  \"video/x-sgi-movie\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"movie\"]\n  },\n  \"video/x-smv\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"smv\"]\n  },\n  \"x-conference/x-cooltalk\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ice\"]\n  },\n  \"x-shader/x-fragment\": {\n    \"compressible\": true\n  },\n  \"x-shader/x-vertex\": {\n    \"compressible\": true\n  }\n}\n","/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n","/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction charset (type) {\n  if (!type || typeof type !== 'string') {\n    return false\n  }\n\n  // TODO: use media-typer\n  var match = EXTRACT_TYPE_REGEXP.exec(type)\n  var mime = match && db[match[1].toLowerCase()]\n\n  if (mime && mime.charset) {\n    return mime.charset\n  }\n\n  // default text/* to utf-8\n  if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n    return 'UTF-8'\n  }\n\n  return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {boolean|string}\n */\n\nfunction contentType (str) {\n  // TODO: should this even be in this module?\n  if (!str || typeof str !== 'string') {\n    return false\n  }\n\n  var mime = str.indexOf('/') === -1\n    ? exports.lookup(str)\n    : str\n\n  if (!mime) {\n    return false\n  }\n\n  // TODO: use content-type or other module\n  if (mime.indexOf('charset') === -1) {\n    var charset = exports.charset(mime)\n    if (charset) mime += '; charset=' + charset.toLowerCase()\n  }\n\n  return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction extension (type) {\n  if (!type || typeof type !== 'string') {\n    return false\n  }\n\n  // TODO: use media-typer\n  var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n  // get extensions\n  var exts = match && exports.extensions[match[1].toLowerCase()]\n\n  if (!exts || !exts.length) {\n    return false\n  }\n\n  return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {boolean|string}\n */\n\nfunction lookup (path) {\n  if (!path || typeof path !== 'string') {\n    return false\n  }\n\n  // get the extension (\"ext\" or \".ext\" or full path)\n  var extension = extname('x.' + path)\n    .toLowerCase()\n    .substr(1)\n\n  if (!extension) {\n    return false\n  }\n\n  return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n  // source preference (least -> most)\n  var preference = ['nginx', 'apache', undefined, 'iana']\n\n  Object.keys(db).forEach(function forEachMimeType (type) {\n    var mime = db[type]\n    var exts = mime.extensions\n\n    if (!exts || !exts.length) {\n      return\n    }\n\n    // mime -> extensions\n    extensions[type] = exts\n\n    // extension -> mime\n    for (var i = 0; i < exts.length; i++) {\n      var extension = exts[i]\n\n      if (types[extension]) {\n        var from = preference.indexOf(db[types[extension]].source)\n        var to = preference.indexOf(mime.source)\n\n        if (types[extension] !== 'application/octet-stream' &&\n          (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {\n          // skip the remapping\n          continue\n        }\n      }\n\n      // set the extension -> mime\n      types[extension] = type\n    }\n  })\n}\n","/*!\n * type-is\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar typer = require('media-typer')\nvar mime = require('mime-types')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = typeofrequest\nmodule.exports.is = typeis\nmodule.exports.hasBody = hasbody\nmodule.exports.normalize = normalize\nmodule.exports.match = mimeMatch\n\n/**\n * Compare a `value` content-type with `types`.\n * Each `type` can be an extension like `html`,\n * a special shortcut like `multipart` or `urlencoded`,\n * or a mime type.\n *\n * If no types match, `false` is returned.\n * Otherwise, the first `type` that matches is returned.\n *\n * @param {String} value\n * @param {Array} types\n * @public\n */\n\nfunction typeis (value, types_) {\n  var i\n  var types = types_\n\n  // remove parameters and normalize\n  var val = tryNormalizeType(value)\n\n  // no type or invalid\n  if (!val) {\n    return false\n  }\n\n  // support flattened arguments\n  if (types && !Array.isArray(types)) {\n    types = new Array(arguments.length - 1)\n    for (i = 0; i < types.length; i++) {\n      types[i] = arguments[i + 1]\n    }\n  }\n\n  // no types, return the content type\n  if (!types || !types.length) {\n    return val\n  }\n\n  var type\n  for (i = 0; i < types.length; i++) {\n    if (mimeMatch(normalize(type = types[i]), val)) {\n      return type[0] === '+' || type.indexOf('*') !== -1\n        ? val\n        : type\n    }\n  }\n\n  // no matches\n  return false\n}\n\n/**\n * Check if a request has a request body.\n * A request with a body __must__ either have `transfer-encoding`\n * or `content-length` headers set.\n * http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3\n *\n * @param {Object} request\n * @return {Boolean}\n * @public\n */\n\nfunction hasbody (req) {\n  return req.headers['transfer-encoding'] !== undefined ||\n    !isNaN(req.headers['content-length'])\n}\n\n/**\n * Check if the incoming request contains the \"Content-Type\"\n * header field, and it contains any of the give mime `type`s.\n * If there is no request body, `null` is returned.\n * If there is no content type, `false` is returned.\n * Otherwise, it returns the first `type` that matches.\n *\n * Examples:\n *\n *     // With Content-Type: text/html; charset=utf-8\n *     this.is('html'); // => 'html'\n *     this.is('text/html'); // => 'text/html'\n *     this.is('text/*', 'application/json'); // => 'text/html'\n *\n *     // When Content-Type is application/json\n *     this.is('json', 'urlencoded'); // => 'json'\n *     this.is('application/json'); // => 'application/json'\n *     this.is('html', 'application/*'); // => 'application/json'\n *\n *     this.is('html'); // => false\n *\n * @param {String|Array} types...\n * @return {String|false|null}\n * @public\n */\n\nfunction typeofrequest (req, types_) {\n  var types = types_\n\n  // no body\n  if (!hasbody(req)) {\n    return null\n  }\n\n  // support flattened arguments\n  if (arguments.length > 2) {\n    types = new Array(arguments.length - 1)\n    for (var i = 0; i < types.length; i++) {\n      types[i] = arguments[i + 1]\n    }\n  }\n\n  // request content type\n  var value = req.headers['content-type']\n\n  return typeis(value, types)\n}\n\n/**\n * Normalize a mime type.\n * If it's a shorthand, expand it to a valid mime type.\n *\n * In general, you probably want:\n *\n *   var type = is(req, ['urlencoded', 'json', 'multipart']);\n *\n * Then use the appropriate body parsers.\n * These three are the most common request body types\n * and are thus ensured to work.\n *\n * @param {String} type\n * @private\n */\n\nfunction normalize (type) {\n  if (typeof type !== 'string') {\n    // invalid type\n    return false\n  }\n\n  switch (type) {\n    case 'urlencoded':\n      return 'application/x-www-form-urlencoded'\n    case 'multipart':\n      return 'multipart/*'\n  }\n\n  if (type[0] === '+') {\n    // \"+json\" -> \"*/*+json\" expando\n    return '*/*' + type\n  }\n\n  return type.indexOf('/') === -1\n    ? mime.lookup(type)\n    : type\n}\n\n/**\n * Check if `expected` mime type\n * matches `actual` mime type with\n * wildcard and +suffix support.\n *\n * @param {String} expected\n * @param {String} actual\n * @return {Boolean}\n * @private\n */\n\nfunction mimeMatch (expected, actual) {\n  // invalid type\n  if (expected === false) {\n    return false\n  }\n\n  // split types\n  var actualParts = actual.split('/')\n  var expectedParts = expected.split('/')\n\n  // invalid format\n  if (actualParts.length !== 2 || expectedParts.length !== 2) {\n    return false\n  }\n\n  // validate type\n  if (expectedParts[0] !== '*' && expectedParts[0] !== actualParts[0]) {\n    return false\n  }\n\n  // validate suffix wildcard\n  if (expectedParts[1].substr(0, 2) === '*+') {\n    return expectedParts[1].length <= actualParts[1].length + 1 &&\n      expectedParts[1].substr(1) === actualParts[1].substr(1 - expectedParts[1].length)\n  }\n\n  // validate subtype\n  if (expectedParts[1] !== '*' && expectedParts[1] !== actualParts[1]) {\n    return false\n  }\n\n  return true\n}\n\n/**\n * Normalize a type and remove parameters.\n *\n * @param {string} value\n * @return {string}\n * @private\n */\n\nfunction normalizeType (value) {\n  // parse the type\n  var type = typer.parse(value)\n\n  // remove the parameters\n  type.parameters = undefined\n\n  // reformat it\n  return typer.format(type)\n}\n\n/**\n * Try to normalize a type and remove parameters.\n *\n * @param {string} value\n * @return {string}\n * @private\n */\n\nfunction tryNormalizeType (value) {\n  if (!value) {\n    return null\n  }\n\n  try {\n    return normalizeType(value)\n  } catch (err) {\n    return null\n  }\n}\n","'use strict';\n\nfunction parseContentType(str) {\n  if (str.length === 0)\n    return;\n\n  const params = Object.create(null);\n  let i = 0;\n\n  // Parse type\n  for (; i < str.length; ++i) {\n    const code = str.charCodeAt(i);\n    if (TOKEN[code] !== 1) {\n      if (code !== 47/* '/' */ || i === 0)\n        return;\n      break;\n    }\n  }\n  // Check for type without subtype\n  if (i === str.length)\n    return;\n\n  const type = str.slice(0, i).toLowerCase();\n\n  // Parse subtype\n  const subtypeStart = ++i;\n  for (; i < str.length; ++i) {\n    const code = str.charCodeAt(i);\n    if (TOKEN[code] !== 1) {\n      // Make sure we have a subtype\n      if (i === subtypeStart)\n        return;\n\n      if (parseContentTypeParams(str, i, params) === undefined)\n        return;\n      break;\n    }\n  }\n  // Make sure we have a subtype\n  if (i === subtypeStart)\n    return;\n\n  const subtype = str.slice(subtypeStart, i).toLowerCase();\n\n  return { type, subtype, params };\n}\n\nfunction parseContentTypeParams(str, i, params) {\n  while (i < str.length) {\n    // Consume whitespace\n    for (; i < str.length; ++i) {\n      const code = str.charCodeAt(i);\n      if (code !== 32/* ' ' */ && code !== 9/* '\\t' */)\n        break;\n    }\n\n    // Ended on whitespace\n    if (i === str.length)\n      break;\n\n    // Check for malformed parameter\n    if (str.charCodeAt(i++) !== 59/* ';' */)\n      return;\n\n    // Consume whitespace\n    for (; i < str.length; ++i) {\n      const code = str.charCodeAt(i);\n      if (code !== 32/* ' ' */ && code !== 9/* '\\t' */)\n        break;\n    }\n\n    // Ended on whitespace (malformed)\n    if (i === str.length)\n      return;\n\n    let name;\n    const nameStart = i;\n    // Parse parameter name\n    for (; i < str.length; ++i) {\n      const code = str.charCodeAt(i);\n      if (TOKEN[code] !== 1) {\n        if (code !== 61/* '=' */)\n          return;\n        break;\n      }\n    }\n\n    // No value (malformed)\n    if (i === str.length)\n      return;\n\n    name = str.slice(nameStart, i);\n    ++i; // Skip over '='\n\n    // No value (malformed)\n    if (i === str.length)\n      return;\n\n    let value = '';\n    let valueStart;\n    if (str.charCodeAt(i) === 34/* '\"' */) {\n      valueStart = ++i;\n      let escaping = false;\n      // Parse quoted value\n      for (; i < str.length; ++i) {\n        const code = str.charCodeAt(i);\n        if (code === 92/* '\\\\' */) {\n          if (escaping) {\n            valueStart = i;\n            escaping = false;\n          } else {\n            value += str.slice(valueStart, i);\n            escaping = true;\n          }\n          continue;\n        }\n        if (code === 34/* '\"' */) {\n          if (escaping) {\n            valueStart = i;\n            escaping = false;\n            continue;\n          }\n          value += str.slice(valueStart, i);\n          break;\n        }\n        if (escaping) {\n          valueStart = i - 1;\n          escaping = false;\n        }\n        // Invalid unescaped quoted character (malformed)\n        if (QDTEXT[code] !== 1)\n          return;\n      }\n\n      // No end quote (malformed)\n      if (i === str.length)\n        return;\n\n      ++i; // Skip over double quote\n    } else {\n      valueStart = i;\n      // Parse unquoted value\n      for (; i < str.length; ++i) {\n        const code = str.charCodeAt(i);\n        if (TOKEN[code] !== 1) {\n          // No value (malformed)\n          if (i === valueStart)\n            return;\n          break;\n        }\n      }\n      value = str.slice(valueStart, i);\n    }\n\n    name = name.toLowerCase();\n    if (params[name] === undefined)\n      params[name] = value;\n  }\n\n  return params;\n}\n\nfunction parseDisposition(str, defDecoder) {\n  if (str.length === 0)\n    return;\n\n  const params = Object.create(null);\n  let i = 0;\n\n  for (; i < str.length; ++i) {\n    const code = str.charCodeAt(i);\n    if (TOKEN[code] !== 1) {\n      if (parseDispositionParams(str, i, params, defDecoder) === undefined)\n        return;\n      break;\n    }\n  }\n\n  const type = str.slice(0, i).toLowerCase();\n\n  return { type, params };\n}\n\nfunction parseDispositionParams(str, i, params, defDecoder) {\n  while (i < str.length) {\n    // Consume whitespace\n    for (; i < str.length; ++i) {\n      const code = str.charCodeAt(i);\n      if (code !== 32/* ' ' */ && code !== 9/* '\\t' */)\n        break;\n    }\n\n    // Ended on whitespace\n    if (i === str.length)\n      break;\n\n    // Check for malformed parameter\n    if (str.charCodeAt(i++) !== 59/* ';' */)\n      return;\n\n    // Consume whitespace\n    for (; i < str.length; ++i) {\n      const code = str.charCodeAt(i);\n      if (code !== 32/* ' ' */ && code !== 9/* '\\t' */)\n        break;\n    }\n\n    // Ended on whitespace (malformed)\n    if (i === str.length)\n      return;\n\n    let name;\n    const nameStart = i;\n    // Parse parameter name\n    for (; i < str.length; ++i) {\n      const code = str.charCodeAt(i);\n      if (TOKEN[code] !== 1) {\n        if (code === 61/* '=' */)\n          break;\n        return;\n      }\n    }\n\n    // No value (malformed)\n    if (i === str.length)\n      return;\n\n    let value = '';\n    let valueStart;\n    let charset;\n    //~ let lang;\n    name = str.slice(nameStart, i);\n    if (name.charCodeAt(name.length - 1) === 42/* '*' */) {\n      // Extended value\n\n      const charsetStart = ++i;\n      // Parse charset name\n      for (; i < str.length; ++i) {\n        const code = str.charCodeAt(i);\n        if (CHARSET[code] !== 1) {\n          if (code !== 39/* '\\'' */)\n            return;\n          break;\n        }\n      }\n\n      // Incomplete charset (malformed)\n      if (i === str.length)\n        return;\n\n      charset = str.slice(charsetStart, i);\n      ++i; // Skip over the '\\''\n\n      //~ const langStart = ++i;\n      // Parse language name\n      for (; i < str.length; ++i) {\n        const code = str.charCodeAt(i);\n        if (code === 39/* '\\'' */)\n          break;\n      }\n\n      // Incomplete language (malformed)\n      if (i === str.length)\n        return;\n\n      //~ lang = str.slice(langStart, i);\n      ++i; // Skip over the '\\''\n\n      // No value (malformed)\n      if (i === str.length)\n        return;\n\n      valueStart = i;\n\n      let encode = 0;\n      // Parse value\n      for (; i < str.length; ++i) {\n        const code = str.charCodeAt(i);\n        if (EXTENDED_VALUE[code] !== 1) {\n          if (code === 37/* '%' */) {\n            let hexUpper;\n            let hexLower;\n            if (i + 2 < str.length\n                && (hexUpper = HEX_VALUES[str.charCodeAt(i + 1)]) !== -1\n                && (hexLower = HEX_VALUES[str.charCodeAt(i + 2)]) !== -1) {\n              const byteVal = (hexUpper << 4) + hexLower;\n              value += str.slice(valueStart, i);\n              value += String.fromCharCode(byteVal);\n              i += 2;\n              valueStart = i + 1;\n              if (byteVal >= 128)\n                encode = 2;\n              else if (encode === 0)\n                encode = 1;\n              continue;\n            }\n            // '%' disallowed in non-percent encoded contexts (malformed)\n            return;\n          }\n          break;\n        }\n      }\n\n      value += str.slice(valueStart, i);\n      value = convertToUTF8(value, charset, encode);\n      if (value === undefined)\n        return;\n    } else {\n      // Non-extended value\n\n      ++i; // Skip over '='\n\n      // No value (malformed)\n      if (i === str.length)\n        return;\n\n      if (str.charCodeAt(i) === 34/* '\"' */) {\n        valueStart = ++i;\n        let escaping = false;\n        // Parse quoted value\n        for (; i < str.length; ++i) {\n          const code = str.charCodeAt(i);\n          if (code === 92/* '\\\\' */) {\n            if (escaping) {\n              valueStart = i;\n              escaping = false;\n            } else {\n              value += str.slice(valueStart, i);\n              escaping = true;\n            }\n            continue;\n          }\n          if (code === 34/* '\"' */) {\n            if (escaping) {\n              valueStart = i;\n              escaping = false;\n              continue;\n            }\n            value += str.slice(valueStart, i);\n            break;\n          }\n          if (escaping) {\n            valueStart = i - 1;\n            escaping = false;\n          }\n          // Invalid unescaped quoted character (malformed)\n          if (QDTEXT[code] !== 1)\n            return;\n        }\n\n        // No end quote (malformed)\n        if (i === str.length)\n          return;\n\n        ++i; // Skip over double quote\n      } else {\n        valueStart = i;\n        // Parse unquoted value\n        for (; i < str.length; ++i) {\n          const code = str.charCodeAt(i);\n          if (TOKEN[code] !== 1) {\n            // No value (malformed)\n            if (i === valueStart)\n              return;\n            break;\n          }\n        }\n        value = str.slice(valueStart, i);\n      }\n\n      value = defDecoder(value, 2);\n      if (value === undefined)\n        return;\n    }\n\n    name = name.toLowerCase();\n    if (params[name] === undefined)\n      params[name] = value;\n  }\n\n  return params;\n}\n\nfunction getDecoder(charset) {\n  let lc;\n  while (true) {\n    switch (charset) {\n      case 'utf-8':\n      case 'utf8':\n        return decoders.utf8;\n      case 'latin1':\n      case 'ascii': // TODO: Make these a separate, strict decoder?\n      case 'us-ascii':\n      case 'iso-8859-1':\n      case 'iso8859-1':\n      case 'iso88591':\n      case 'iso_8859-1':\n      case 'windows-1252':\n      case 'iso_8859-1:1987':\n      case 'cp1252':\n      case 'x-cp1252':\n        return decoders.latin1;\n      case 'utf16le':\n      case 'utf-16le':\n      case 'ucs2':\n      case 'ucs-2':\n        return decoders.utf16le;\n      case 'base64':\n        return decoders.base64;\n      default:\n        if (lc === undefined) {\n          lc = true;\n          charset = charset.toLowerCase();\n          continue;\n        }\n        return decoders.other.bind(charset);\n    }\n  }\n}\n\nconst decoders = {\n  utf8: (data, hint) => {\n    if (data.length === 0)\n      return '';\n    if (typeof data === 'string') {\n      // If `data` never had any percent-encoded bytes or never had any that\n      // were outside of the ASCII range, then we can safely just return the\n      // input since UTF-8 is ASCII compatible\n      if (hint < 2)\n        return data;\n\n      data = Buffer.from(data, 'latin1');\n    }\n    return data.utf8Slice(0, data.length);\n  },\n\n  latin1: (data, hint) => {\n    if (data.length === 0)\n      return '';\n    if (typeof data === 'string')\n      return data;\n    return data.latin1Slice(0, data.length);\n  },\n\n  utf16le: (data, hint) => {\n    if (data.length === 0)\n      return '';\n    if (typeof data === 'string')\n      data = Buffer.from(data, 'latin1');\n    return data.ucs2Slice(0, data.length);\n  },\n\n  base64: (data, hint) => {\n    if (data.length === 0)\n      return '';\n    if (typeof data === 'string')\n      data = Buffer.from(data, 'latin1');\n    return data.base64Slice(0, data.length);\n  },\n\n  other: (data, hint) => {\n    if (data.length === 0)\n      return '';\n    if (typeof data === 'string')\n      data = Buffer.from(data, 'latin1');\n    try {\n      const decoder = new TextDecoder(this);\n      return decoder.decode(data);\n    } catch {}\n  },\n};\n\nfunction convertToUTF8(data, charset, hint) {\n  const decode = getDecoder(charset);\n  if (decode)\n    return decode(data, hint);\n}\n\nfunction basename(path) {\n  if (typeof path !== 'string')\n    return '';\n  for (let i = path.length - 1; i >= 0; --i) {\n    switch (path.charCodeAt(i)) {\n      case 0x2F: // '/'\n      case 0x5C: // '\\'\n        path = path.slice(i + 1);\n        return (path === '..' || path === '.' ? '' : path);\n    }\n  }\n  return (path === '..' || path === '.' ? '' : path);\n}\n\nconst TOKEN = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,\n  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n];\n\nconst QDTEXT = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\n\nconst CHARSET = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,\n  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n];\n\nconst EXTENDED_VALUE = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,\n  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n];\n\n/* eslint-disable no-multi-spaces */\nconst HEX_VALUES = [\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, -1, -1, -1, -1, -1, -1,\n  -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n/* eslint-enable no-multi-spaces */\n\nmodule.exports = {\n  basename,\n  convertToUTF8,\n  getDecoder,\n  parseContentType,\n  parseDisposition,\n};\n","'use strict';\n/*\n  Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation\n  by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool\n*/\nfunction memcmp(buf1, pos1, buf2, pos2, num) {\n  for (let i = 0; i < num; ++i) {\n    if (buf1[pos1 + i] !== buf2[pos2 + i])\n      return false;\n  }\n  return true;\n}\n\nclass SBMH {\n  constructor(needle, cb) {\n    if (typeof cb !== 'function')\n      throw new Error('Missing match callback');\n\n    if (typeof needle === 'string')\n      needle = Buffer.from(needle);\n    else if (!Buffer.isBuffer(needle))\n      throw new Error(`Expected Buffer for needle, got ${typeof needle}`);\n\n    const needleLen = needle.length;\n\n    this.maxMatches = Infinity;\n    this.matches = 0;\n\n    this._cb = cb;\n    this._lookbehindSize = 0;\n    this._needle = needle;\n    this._bufPos = 0;\n\n    this._lookbehind = Buffer.allocUnsafe(needleLen);\n\n    // Initialize occurrence table.\n    this._occ = [\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen\n    ];\n\n    // Populate occurrence table with analysis of the needle, ignoring the last\n    // letter.\n    if (needleLen > 1) {\n      for (let i = 0; i < needleLen - 1; ++i)\n        this._occ[needle[i]] = needleLen - 1 - i;\n    }\n  }\n\n  reset() {\n    this.matches = 0;\n    this._lookbehindSize = 0;\n    this._bufPos = 0;\n  }\n\n  push(chunk, pos) {\n    let result;\n    if (!Buffer.isBuffer(chunk))\n      chunk = Buffer.from(chunk, 'latin1');\n    const chunkLen = chunk.length;\n    this._bufPos = pos || 0;\n    while (result !== chunkLen && this.matches < this.maxMatches)\n      result = feed(this, chunk);\n    return result;\n  }\n\n  destroy() {\n    const lbSize = this._lookbehindSize;\n    if (lbSize)\n      this._cb(false, this._lookbehind, 0, lbSize, false);\n    this.reset();\n  }\n}\n\nfunction feed(self, data) {\n  const len = data.length;\n  const needle = self._needle;\n  const needleLen = needle.length;\n\n  // Positive: points to a position in `data`\n  //           pos == 3 points to data[3]\n  // Negative: points to a position in the lookbehind buffer\n  //           pos == -2 points to lookbehind[lookbehindSize - 2]\n  let pos = -self._lookbehindSize;\n  const lastNeedleCharPos = needleLen - 1;\n  const lastNeedleChar = needle[lastNeedleCharPos];\n  const end = len - needleLen;\n  const occ = self._occ;\n  const lookbehind = self._lookbehind;\n\n  if (pos < 0) {\n    // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool\n    // search with character lookup code that considers both the\n    // lookbehind buffer and the current round's haystack data.\n    //\n    // Loop until\n    //   there is a match.\n    // or until\n    //   we've moved past the position that requires the\n    //   lookbehind buffer. In this case we switch to the\n    //   optimized loop.\n    // or until\n    //   the character to look at lies outside the haystack.\n    while (pos < 0 && pos <= end) {\n      const nextPos = pos + lastNeedleCharPos;\n      const ch = (nextPos < 0\n                  ? lookbehind[self._lookbehindSize + nextPos]\n                  : data[nextPos]);\n\n      if (ch === lastNeedleChar\n          && matchNeedle(self, data, pos, lastNeedleCharPos)) {\n        self._lookbehindSize = 0;\n        ++self.matches;\n        if (pos > -self._lookbehindSize)\n          self._cb(true, lookbehind, 0, self._lookbehindSize + pos, false);\n        else\n          self._cb(true, undefined, 0, 0, true);\n\n        return (self._bufPos = pos + needleLen);\n      }\n\n      pos += occ[ch];\n    }\n\n    // No match.\n\n    // There's too few data for Boyer-Moore-Horspool to run,\n    // so let's use a different algorithm to skip as much as\n    // we can.\n    // Forward pos until\n    //   the trailing part of lookbehind + data\n    //   looks like the beginning of the needle\n    // or until\n    //   pos == 0\n    while (pos < 0 && !matchNeedle(self, data, pos, len - pos))\n      ++pos;\n\n    if (pos < 0) {\n      // Cut off part of the lookbehind buffer that has\n      // been processed and append the entire haystack\n      // into it.\n      const bytesToCutOff = self._lookbehindSize + pos;\n\n      if (bytesToCutOff > 0) {\n        // The cut off data is guaranteed not to contain the needle.\n        self._cb(false, lookbehind, 0, bytesToCutOff, false);\n      }\n\n      self._lookbehindSize -= bytesToCutOff;\n      lookbehind.copy(lookbehind, 0, bytesToCutOff, self._lookbehindSize);\n      lookbehind.set(data, self._lookbehindSize);\n      self._lookbehindSize += len;\n\n      self._bufPos = len;\n      return len;\n    }\n\n    // Discard lookbehind buffer.\n    self._cb(false, lookbehind, 0, self._lookbehindSize, false);\n    self._lookbehindSize = 0;\n  }\n\n  pos += self._bufPos;\n\n  const firstNeedleChar = needle[0];\n\n  // Lookbehind buffer is now empty. Perform Boyer-Moore-Horspool\n  // search with optimized character lookup code that only considers\n  // the current round's haystack data.\n  while (pos <= end) {\n    const ch = data[pos + lastNeedleCharPos];\n\n    if (ch === lastNeedleChar\n        && data[pos] === firstNeedleChar\n        && memcmp(needle, 0, data, pos, lastNeedleCharPos)) {\n      ++self.matches;\n      if (pos > 0)\n        self._cb(true, data, self._bufPos, pos, true);\n      else\n        self._cb(true, undefined, 0, 0, true);\n\n      return (self._bufPos = pos + needleLen);\n    }\n\n    pos += occ[ch];\n  }\n\n  // There was no match. If there's trailing haystack data that we cannot\n  // match yet using the Boyer-Moore-Horspool algorithm (because the trailing\n  // data is less than the needle size) then match using a modified\n  // algorithm that starts matching from the beginning instead of the end.\n  // Whatever trailing data is left after running this algorithm is added to\n  // the lookbehind buffer.\n  while (pos < len) {\n    if (data[pos] !== firstNeedleChar\n        || !memcmp(data, pos, needle, 0, len - pos)) {\n      ++pos;\n      continue;\n    }\n    data.copy(lookbehind, 0, pos, len);\n    self._lookbehindSize = len - pos;\n    break;\n  }\n\n  // Everything until `pos` is guaranteed not to contain needle data.\n  if (pos > 0)\n    self._cb(false, data, self._bufPos, pos < len ? pos : len, true);\n\n  self._bufPos = len;\n  return len;\n}\n\nfunction matchNeedle(self, data, pos, len) {\n  const lb = self._lookbehind;\n  const lbSize = self._lookbehindSize;\n  const needle = self._needle;\n\n  for (let i = 0; i < len; ++i, ++pos) {\n    const ch = (pos < 0 ? lb[lbSize + pos] : data[pos]);\n    if (ch !== needle[i])\n      return false;\n  }\n  return true;\n}\n\nmodule.exports = SBMH;\n","'use strict';\n\nconst { Readable, Writable } = require('stream');\n\nconst StreamSearch = require('streamsearch');\n\nconst {\n  basename,\n  convertToUTF8,\n  getDecoder,\n  parseContentType,\n  parseDisposition,\n} = require('../utils.js');\n\nconst BUF_CRLF = Buffer.from('\\r\\n');\nconst BUF_CR = Buffer.from('\\r');\nconst BUF_DASH = Buffer.from('-');\n\nfunction noop() {}\n\nconst MAX_HEADER_PAIRS = 2000; // From node\nconst MAX_HEADER_SIZE = 16 * 1024; // From node (its default value)\n\nconst HPARSER_NAME = 0;\nconst HPARSER_PRE_OWS = 1;\nconst HPARSER_VALUE = 2;\nclass HeaderParser {\n  constructor(cb) {\n    this.header = Object.create(null);\n    this.pairCount = 0;\n    this.byteCount = 0;\n    this.state = HPARSER_NAME;\n    this.name = '';\n    this.value = '';\n    this.crlf = 0;\n    this.cb = cb;\n  }\n\n  reset() {\n    this.header = Object.create(null);\n    this.pairCount = 0;\n    this.byteCount = 0;\n    this.state = HPARSER_NAME;\n    this.name = '';\n    this.value = '';\n    this.crlf = 0;\n  }\n\n  push(chunk, pos, end) {\n    let start = pos;\n    while (pos < end) {\n      switch (this.state) {\n        case HPARSER_NAME: {\n          let done = false;\n          for (; pos < end; ++pos) {\n            if (this.byteCount === MAX_HEADER_SIZE)\n              return -1;\n            ++this.byteCount;\n            const code = chunk[pos];\n            if (TOKEN[code] !== 1) {\n              if (code !== 58/* ':' */)\n                return -1;\n              this.name += chunk.latin1Slice(start, pos);\n              if (this.name.length === 0)\n                return -1;\n              ++pos;\n              done = true;\n              this.state = HPARSER_PRE_OWS;\n              break;\n            }\n          }\n          if (!done) {\n            this.name += chunk.latin1Slice(start, pos);\n            break;\n          }\n          // FALLTHROUGH\n        }\n        case HPARSER_PRE_OWS: {\n          // Skip optional whitespace\n          let done = false;\n          for (; pos < end; ++pos) {\n            if (this.byteCount === MAX_HEADER_SIZE)\n              return -1;\n            ++this.byteCount;\n            const code = chunk[pos];\n            if (code !== 32/* ' ' */ && code !== 9/* '\\t' */) {\n              start = pos;\n              done = true;\n              this.state = HPARSER_VALUE;\n              break;\n            }\n          }\n          if (!done)\n            break;\n          // FALLTHROUGH\n        }\n        case HPARSER_VALUE:\n          switch (this.crlf) {\n            case 0: // Nothing yet\n              for (; pos < end; ++pos) {\n                if (this.byteCount === MAX_HEADER_SIZE)\n                  return -1;\n                ++this.byteCount;\n                const code = chunk[pos];\n                if (FIELD_VCHAR[code] !== 1) {\n                  if (code !== 13/* '\\r' */)\n                    return -1;\n                  ++this.crlf;\n                  break;\n                }\n              }\n              this.value += chunk.latin1Slice(start, pos++);\n              break;\n            case 1: // Received CR\n              if (this.byteCount === MAX_HEADER_SIZE)\n                return -1;\n              ++this.byteCount;\n              if (chunk[pos++] !== 10/* '\\n' */)\n                return -1;\n              ++this.crlf;\n              break;\n            case 2: { // Received CR LF\n              if (this.byteCount === MAX_HEADER_SIZE)\n                return -1;\n              ++this.byteCount;\n              const code = chunk[pos];\n              if (code === 32/* ' ' */ || code === 9/* '\\t' */) {\n                // Folded value\n                start = pos;\n                this.crlf = 0;\n              } else {\n                if (++this.pairCount < MAX_HEADER_PAIRS) {\n                  this.name = this.name.toLowerCase();\n                  if (this.header[this.name] === undefined)\n                    this.header[this.name] = [this.value];\n                  else\n                    this.header[this.name].push(this.value);\n                }\n                if (code === 13/* '\\r' */) {\n                  ++this.crlf;\n                  ++pos;\n                } else {\n                  // Assume start of next header field name\n                  start = pos;\n                  this.crlf = 0;\n                  this.state = HPARSER_NAME;\n                  this.name = '';\n                  this.value = '';\n                }\n              }\n              break;\n            }\n            case 3: { // Received CR LF CR\n              if (this.byteCount === MAX_HEADER_SIZE)\n                return -1;\n              ++this.byteCount;\n              if (chunk[pos++] !== 10/* '\\n' */)\n                return -1;\n              // End of header\n              const header = this.header;\n              this.reset();\n              this.cb(header);\n              return pos;\n            }\n          }\n          break;\n      }\n    }\n\n    return pos;\n  }\n}\n\nclass FileStream extends Readable {\n  constructor(opts, owner) {\n    super(opts);\n    this.truncated = false;\n    this._readcb = null;\n    this.once('end', () => {\n      // We need to make sure that we call any outstanding _writecb() that is\n      // associated with this file so that processing of the rest of the form\n      // can continue. This may not happen if the file stream ends right after\n      // backpressure kicks in, so we force it here.\n      this._read();\n      if (--owner._fileEndsLeft === 0 && owner._finalcb) {\n        const cb = owner._finalcb;\n        owner._finalcb = null;\n        // Make sure other 'end' event handlers get a chance to be executed\n        // before busboy's 'finish' event is emitted\n        process.nextTick(cb);\n      }\n    });\n  }\n  _read(n) {\n    const cb = this._readcb;\n    if (cb) {\n      this._readcb = null;\n      cb();\n    }\n  }\n}\n\nconst ignoreData = {\n  push: (chunk, pos) => {},\n  destroy: () => {},\n};\n\nfunction callAndUnsetCb(self, err) {\n  const cb = self._writecb;\n  self._writecb = null;\n  if (err)\n    self.destroy(err);\n  else if (cb)\n    cb();\n}\n\nfunction nullDecoder(val, hint) {\n  return val;\n}\n\nclass Multipart extends Writable {\n  constructor(cfg) {\n    const streamOpts = {\n      autoDestroy: true,\n      emitClose: true,\n      highWaterMark: (typeof cfg.highWaterMark === 'number'\n                      ? cfg.highWaterMark\n                      : undefined),\n    };\n    super(streamOpts);\n\n    if (!cfg.conType.params || typeof cfg.conType.params.boundary !== 'string')\n      throw new Error('Multipart: Boundary not found');\n\n    const boundary = cfg.conType.params.boundary;\n    const paramDecoder = (typeof cfg.defParamCharset === 'string'\n                            && cfg.defParamCharset\n                          ? getDecoder(cfg.defParamCharset)\n                          : nullDecoder);\n    const defCharset = (cfg.defCharset || 'utf8');\n    const preservePath = cfg.preservePath;\n    const fileOpts = {\n      autoDestroy: true,\n      emitClose: true,\n      highWaterMark: (typeof cfg.fileHwm === 'number'\n                      ? cfg.fileHwm\n                      : undefined),\n    };\n\n    const limits = cfg.limits;\n    const fieldSizeLimit = (limits && typeof limits.fieldSize === 'number'\n                            ? limits.fieldSize\n                            : 1 * 1024 * 1024);\n    const fileSizeLimit = (limits && typeof limits.fileSize === 'number'\n                           ? limits.fileSize\n                           : Infinity);\n    const filesLimit = (limits && typeof limits.files === 'number'\n                        ? limits.files\n                        : Infinity);\n    const fieldsLimit = (limits && typeof limits.fields === 'number'\n                         ? limits.fields\n                         : Infinity);\n    const partsLimit = (limits && typeof limits.parts === 'number'\n                        ? limits.parts\n                        : Infinity);\n\n    let parts = -1; // Account for initial boundary\n    let fields = 0;\n    let files = 0;\n    let skipPart = false;\n\n    this._fileEndsLeft = 0;\n    this._fileStream = undefined;\n    this._complete = false;\n    let fileSize = 0;\n\n    let field;\n    let fieldSize = 0;\n    let partCharset;\n    let partEncoding;\n    let partType;\n    let partName;\n    let partTruncated = false;\n\n    let hitFilesLimit = false;\n    let hitFieldsLimit = false;\n\n    this._hparser = null;\n    const hparser = new HeaderParser((header) => {\n      this._hparser = null;\n      skipPart = false;\n\n      partType = 'text/plain';\n      partCharset = defCharset;\n      partEncoding = '7bit';\n      partName = undefined;\n      partTruncated = false;\n\n      let filename;\n      if (!header['content-disposition']) {\n        skipPart = true;\n        return;\n      }\n\n      const disp = parseDisposition(header['content-disposition'][0],\n                                    paramDecoder);\n      if (!disp || disp.type !== 'form-data') {\n        skipPart = true;\n        return;\n      }\n\n      if (disp.params) {\n        if (disp.params.name)\n          partName = disp.params.name;\n\n        if (disp.params['filename*'])\n          filename = disp.params['filename*'];\n        else if (disp.params.filename)\n          filename = disp.params.filename;\n\n        if (filename !== undefined && !preservePath)\n          filename = basename(filename);\n      }\n\n      if (header['content-type']) {\n        const conType = parseContentType(header['content-type'][0]);\n        if (conType) {\n          partType = `${conType.type}/${conType.subtype}`;\n          if (conType.params && typeof conType.params.charset === 'string')\n            partCharset = conType.params.charset.toLowerCase();\n        }\n      }\n\n      if (header['content-transfer-encoding'])\n        partEncoding = header['content-transfer-encoding'][0].toLowerCase();\n\n      if (partType === 'application/octet-stream' || filename !== undefined) {\n        // File\n\n        if (files === filesLimit) {\n          if (!hitFilesLimit) {\n            hitFilesLimit = true;\n            this.emit('filesLimit');\n          }\n          skipPart = true;\n          return;\n        }\n        ++files;\n\n        if (this.listenerCount('file') === 0) {\n          skipPart = true;\n          return;\n        }\n\n        fileSize = 0;\n        this._fileStream = new FileStream(fileOpts, this);\n        ++this._fileEndsLeft;\n        this.emit(\n          'file',\n          partName,\n          this._fileStream,\n          { filename,\n            encoding: partEncoding,\n            mimeType: partType }\n        );\n      } else {\n        // Non-file\n\n        if (fields === fieldsLimit) {\n          if (!hitFieldsLimit) {\n            hitFieldsLimit = true;\n            this.emit('fieldsLimit');\n          }\n          skipPart = true;\n          return;\n        }\n        ++fields;\n\n        if (this.listenerCount('field') === 0) {\n          skipPart = true;\n          return;\n        }\n\n        field = [];\n        fieldSize = 0;\n      }\n    });\n\n    let matchPostBoundary = 0;\n    const ssCb = (isMatch, data, start, end, isDataSafe) => {\nretrydata:\n      while (data) {\n        if (this._hparser !== null) {\n          const ret = this._hparser.push(data, start, end);\n          if (ret === -1) {\n            this._hparser = null;\n            hparser.reset();\n            this.emit('error', new Error('Malformed part header'));\n            break;\n          }\n          start = ret;\n        }\n\n        if (start === end)\n          break;\n\n        if (matchPostBoundary !== 0) {\n          if (matchPostBoundary === 1) {\n            switch (data[start]) {\n              case 45: // '-'\n                // Try matching '--' after boundary\n                matchPostBoundary = 2;\n                ++start;\n                break;\n              case 13: // '\\r'\n                // Try matching CR LF before header\n                matchPostBoundary = 3;\n                ++start;\n                break;\n              default:\n                matchPostBoundary = 0;\n            }\n            if (start === end)\n              return;\n          }\n\n          if (matchPostBoundary === 2) {\n            matchPostBoundary = 0;\n            if (data[start] === 45/* '-' */) {\n              // End of multipart data\n              this._complete = true;\n              this._bparser = ignoreData;\n              return;\n            }\n            // We saw something other than '-', so put the dash we consumed\n            // \"back\"\n            const writecb = this._writecb;\n            this._writecb = noop;\n            ssCb(false, BUF_DASH, 0, 1, false);\n            this._writecb = writecb;\n          } else if (matchPostBoundary === 3) {\n            matchPostBoundary = 0;\n            if (data[start] === 10/* '\\n' */) {\n              ++start;\n              if (parts >= partsLimit)\n                break;\n              // Prepare the header parser\n              this._hparser = hparser;\n              if (start === end)\n                break;\n              // Process the remaining data as a header\n              continue retrydata;\n            } else {\n              // We saw something other than LF, so put the CR we consumed\n              // \"back\"\n              const writecb = this._writecb;\n              this._writecb = noop;\n              ssCb(false, BUF_CR, 0, 1, false);\n              this._writecb = writecb;\n            }\n          }\n        }\n\n        if (!skipPart) {\n          if (this._fileStream) {\n            let chunk;\n            const actualLen = Math.min(end - start, fileSizeLimit - fileSize);\n            if (!isDataSafe) {\n              chunk = Buffer.allocUnsafe(actualLen);\n              data.copy(chunk, 0, start, start + actualLen);\n            } else {\n              chunk = data.slice(start, start + actualLen);\n            }\n\n            fileSize += chunk.length;\n            if (fileSize === fileSizeLimit) {\n              if (chunk.length > 0)\n                this._fileStream.push(chunk);\n              this._fileStream.emit('limit');\n              this._fileStream.truncated = true;\n              skipPart = true;\n            } else if (!this._fileStream.push(chunk)) {\n              if (this._writecb)\n                this._fileStream._readcb = this._writecb;\n              this._writecb = null;\n            }\n          } else if (field !== undefined) {\n            let chunk;\n            const actualLen = Math.min(\n              end - start,\n              fieldSizeLimit - fieldSize\n            );\n            if (!isDataSafe) {\n              chunk = Buffer.allocUnsafe(actualLen);\n              data.copy(chunk, 0, start, start + actualLen);\n            } else {\n              chunk = data.slice(start, start + actualLen);\n            }\n\n            fieldSize += actualLen;\n            field.push(chunk);\n            if (fieldSize === fieldSizeLimit) {\n              skipPart = true;\n              partTruncated = true;\n            }\n          }\n        }\n\n        break;\n      }\n\n      if (isMatch) {\n        matchPostBoundary = 1;\n\n        if (this._fileStream) {\n          // End the active file stream if the previous part was a file\n          this._fileStream.push(null);\n          this._fileStream = null;\n        } else if (field !== undefined) {\n          let data;\n          switch (field.length) {\n            case 0:\n              data = '';\n              break;\n            case 1:\n              data = convertToUTF8(field[0], partCharset, 0);\n              break;\n            default:\n              data = convertToUTF8(\n                Buffer.concat(field, fieldSize),\n                partCharset,\n                0\n              );\n          }\n          field = undefined;\n          fieldSize = 0;\n          this.emit(\n            'field',\n            partName,\n            data,\n            { nameTruncated: false,\n              valueTruncated: partTruncated,\n              encoding: partEncoding,\n              mimeType: partType }\n          );\n        }\n\n        if (++parts === partsLimit)\n          this.emit('partsLimit');\n      }\n    };\n    this._bparser = new StreamSearch(`\\r\\n--${boundary}`, ssCb);\n\n    this._writecb = null;\n    this._finalcb = null;\n\n    // Just in case there is no preamble\n    this.write(BUF_CRLF);\n  }\n\n  static detect(conType) {\n    return (conType.type === 'multipart' && conType.subtype === 'form-data');\n  }\n\n  _write(chunk, enc, cb) {\n    this._writecb = cb;\n    this._bparser.push(chunk, 0);\n    if (this._writecb)\n      callAndUnsetCb(this);\n  }\n\n  _destroy(err, cb) {\n    this._hparser = null;\n    this._bparser = ignoreData;\n    if (!err)\n      err = checkEndState(this);\n    const fileStream = this._fileStream;\n    if (fileStream) {\n      this._fileStream = null;\n      fileStream.destroy(err);\n    }\n    cb(err);\n  }\n\n  _final(cb) {\n    this._bparser.destroy();\n    if (!this._complete)\n      return cb(new Error('Unexpected end of form'));\n    if (this._fileEndsLeft)\n      this._finalcb = finalcb.bind(null, this, cb);\n    else\n      finalcb(this, cb);\n  }\n}\n\nfunction finalcb(self, cb, err) {\n  if (err)\n    return cb(err);\n  err = checkEndState(self);\n  cb(err);\n}\n\nfunction checkEndState(self) {\n  if (self._hparser)\n    return new Error('Malformed part header');\n  const fileStream = self._fileStream;\n  if (fileStream) {\n    self._fileStream = null;\n    fileStream.destroy(new Error('Unexpected end of file'));\n  }\n  if (!self._complete)\n    return new Error('Unexpected end of form');\n}\n\nconst TOKEN = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,\n  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n];\n\nconst FIELD_VCHAR = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\n\nmodule.exports = Multipart;\n","'use strict';\n\nconst { Writable } = require('stream');\n\nconst { getDecoder } = require('../utils.js');\n\nclass URLEncoded extends Writable {\n  constructor(cfg) {\n    const streamOpts = {\n      autoDestroy: true,\n      emitClose: true,\n      highWaterMark: (typeof cfg.highWaterMark === 'number'\n                      ? cfg.highWaterMark\n                      : undefined),\n    };\n    super(streamOpts);\n\n    let charset = (cfg.defCharset || 'utf8');\n    if (cfg.conType.params && typeof cfg.conType.params.charset === 'string')\n      charset = cfg.conType.params.charset;\n\n    this.charset = charset;\n\n    const limits = cfg.limits;\n    this.fieldSizeLimit = (limits && typeof limits.fieldSize === 'number'\n                           ? limits.fieldSize\n                           : 1 * 1024 * 1024);\n    this.fieldsLimit = (limits && typeof limits.fields === 'number'\n                        ? limits.fields\n                        : Infinity);\n    this.fieldNameSizeLimit = (\n      limits && typeof limits.fieldNameSize === 'number'\n      ? limits.fieldNameSize\n      : 100\n    );\n\n    this._inKey = true;\n    this._keyTrunc = false;\n    this._valTrunc = false;\n    this._bytesKey = 0;\n    this._bytesVal = 0;\n    this._fields = 0;\n    this._key = '';\n    this._val = '';\n    this._byte = -2;\n    this._lastPos = 0;\n    this._encode = 0;\n    this._decoder = getDecoder(charset);\n  }\n\n  static detect(conType) {\n    return (conType.type === 'application'\n            && conType.subtype === 'x-www-form-urlencoded');\n  }\n\n  _write(chunk, enc, cb) {\n    if (this._fields >= this.fieldsLimit)\n      return cb();\n\n    let i = 0;\n    const len = chunk.length;\n    this._lastPos = 0;\n\n    // Check if we last ended mid-percent-encoded byte\n    if (this._byte !== -2) {\n      i = readPctEnc(this, chunk, i, len);\n      if (i === -1)\n        return cb(new Error('Malformed urlencoded form'));\n      if (i >= len)\n        return cb();\n      if (this._inKey)\n        ++this._bytesKey;\n      else\n        ++this._bytesVal;\n    }\n\nmain:\n    while (i < len) {\n      if (this._inKey) {\n        // Parsing key\n\n        i = skipKeyBytes(this, chunk, i, len);\n\n        while (i < len) {\n          switch (chunk[i]) {\n            case 61: // '='\n              if (this._lastPos < i)\n                this._key += chunk.latin1Slice(this._lastPos, i);\n              this._lastPos = ++i;\n              this._key = this._decoder(this._key, this._encode);\n              this._encode = 0;\n              this._inKey = false;\n              continue main;\n            case 38: // '&'\n              if (this._lastPos < i)\n                this._key += chunk.latin1Slice(this._lastPos, i);\n              this._lastPos = ++i;\n              this._key = this._decoder(this._key, this._encode);\n              this._encode = 0;\n              if (this._bytesKey > 0) {\n                this.emit(\n                  'field',\n                  this._key,\n                  '',\n                  { nameTruncated: this._keyTrunc,\n                    valueTruncated: false,\n                    encoding: this.charset,\n                    mimeType: 'text/plain' }\n                );\n              }\n              this._key = '';\n              this._val = '';\n              this._keyTrunc = false;\n              this._valTrunc = false;\n              this._bytesKey = 0;\n              this._bytesVal = 0;\n              if (++this._fields >= this.fieldsLimit) {\n                this.emit('fieldsLimit');\n                return cb();\n              }\n              continue;\n            case 43: // '+'\n              if (this._lastPos < i)\n                this._key += chunk.latin1Slice(this._lastPos, i);\n              this._key += ' ';\n              this._lastPos = i + 1;\n              break;\n            case 37: // '%'\n              if (this._encode === 0)\n                this._encode = 1;\n              if (this._lastPos < i)\n                this._key += chunk.latin1Slice(this._lastPos, i);\n              this._lastPos = i + 1;\n              this._byte = -1;\n              i = readPctEnc(this, chunk, i + 1, len);\n              if (i === -1)\n                return cb(new Error('Malformed urlencoded form'));\n              if (i >= len)\n                return cb();\n              ++this._bytesKey;\n              i = skipKeyBytes(this, chunk, i, len);\n              continue;\n          }\n          ++i;\n          ++this._bytesKey;\n          i = skipKeyBytes(this, chunk, i, len);\n        }\n        if (this._lastPos < i)\n          this._key += chunk.latin1Slice(this._lastPos, i);\n      } else {\n        // Parsing value\n\n        i = skipValBytes(this, chunk, i, len);\n\n        while (i < len) {\n          switch (chunk[i]) {\n            case 38: // '&'\n              if (this._lastPos < i)\n                this._val += chunk.latin1Slice(this._lastPos, i);\n              this._lastPos = ++i;\n              this._inKey = true;\n              this._val = this._decoder(this._val, this._encode);\n              this._encode = 0;\n              if (this._bytesKey > 0 || this._bytesVal > 0) {\n                this.emit(\n                  'field',\n                  this._key,\n                  this._val,\n                  { nameTruncated: this._keyTrunc,\n                    valueTruncated: this._valTrunc,\n                    encoding: this.charset,\n                    mimeType: 'text/plain' }\n                );\n              }\n              this._key = '';\n              this._val = '';\n              this._keyTrunc = false;\n              this._valTrunc = false;\n              this._bytesKey = 0;\n              this._bytesVal = 0;\n              if (++this._fields >= this.fieldsLimit) {\n                this.emit('fieldsLimit');\n                return cb();\n              }\n              continue main;\n            case 43: // '+'\n              if (this._lastPos < i)\n                this._val += chunk.latin1Slice(this._lastPos, i);\n              this._val += ' ';\n              this._lastPos = i + 1;\n              break;\n            case 37: // '%'\n              if (this._encode === 0)\n                this._encode = 1;\n              if (this._lastPos < i)\n                this._val += chunk.latin1Slice(this._lastPos, i);\n              this._lastPos = i + 1;\n              this._byte = -1;\n              i = readPctEnc(this, chunk, i + 1, len);\n              if (i === -1)\n                return cb(new Error('Malformed urlencoded form'));\n              if (i >= len)\n                return cb();\n              ++this._bytesVal;\n              i = skipValBytes(this, chunk, i, len);\n              continue;\n          }\n          ++i;\n          ++this._bytesVal;\n          i = skipValBytes(this, chunk, i, len);\n        }\n        if (this._lastPos < i)\n          this._val += chunk.latin1Slice(this._lastPos, i);\n      }\n    }\n\n    cb();\n  }\n\n  _final(cb) {\n    if (this._byte !== -2)\n      return cb(new Error('Malformed urlencoded form'));\n    if (!this._inKey || this._bytesKey > 0 || this._bytesVal > 0) {\n      if (this._inKey)\n        this._key = this._decoder(this._key, this._encode);\n      else\n        this._val = this._decoder(this._val, this._encode);\n      this.emit(\n        'field',\n        this._key,\n        this._val,\n        { nameTruncated: this._keyTrunc,\n          valueTruncated: this._valTrunc,\n          encoding: this.charset,\n          mimeType: 'text/plain' }\n      );\n    }\n    cb();\n  }\n}\n\nfunction readPctEnc(self, chunk, pos, len) {\n  if (pos >= len)\n    return len;\n\n  if (self._byte === -1) {\n    // We saw a '%' but no hex characters yet\n    const hexUpper = HEX_VALUES[chunk[pos++]];\n    if (hexUpper === -1)\n      return -1;\n\n    if (hexUpper >= 8)\n      self._encode = 2; // Indicate high bits detected\n\n    if (pos < len) {\n      // Both hex characters are in this chunk\n      const hexLower = HEX_VALUES[chunk[pos++]];\n      if (hexLower === -1)\n        return -1;\n\n      if (self._inKey)\n        self._key += String.fromCharCode((hexUpper << 4) + hexLower);\n      else\n        self._val += String.fromCharCode((hexUpper << 4) + hexLower);\n\n      self._byte = -2;\n      self._lastPos = pos;\n    } else {\n      // Only one hex character was available in this chunk\n      self._byte = hexUpper;\n    }\n  } else {\n    // We saw only one hex character so far\n    const hexLower = HEX_VALUES[chunk[pos++]];\n    if (hexLower === -1)\n      return -1;\n\n    if (self._inKey)\n      self._key += String.fromCharCode((self._byte << 4) + hexLower);\n    else\n      self._val += String.fromCharCode((self._byte << 4) + hexLower);\n\n    self._byte = -2;\n    self._lastPos = pos;\n  }\n\n  return pos;\n}\n\nfunction skipKeyBytes(self, chunk, pos, len) {\n  // Skip bytes if we've truncated\n  if (self._bytesKey > self.fieldNameSizeLimit) {\n    if (!self._keyTrunc) {\n      if (self._lastPos < pos)\n        self._key += chunk.latin1Slice(self._lastPos, pos - 1);\n    }\n    self._keyTrunc = true;\n    for (; pos < len; ++pos) {\n      const code = chunk[pos];\n      if (code === 61/* '=' */ || code === 38/* '&' */)\n        break;\n      ++self._bytesKey;\n    }\n    self._lastPos = pos;\n  }\n\n  return pos;\n}\n\nfunction skipValBytes(self, chunk, pos, len) {\n  // Skip bytes if we've truncated\n  if (self._bytesVal > self.fieldSizeLimit) {\n    if (!self._valTrunc) {\n      if (self._lastPos < pos)\n        self._val += chunk.latin1Slice(self._lastPos, pos - 1);\n    }\n    self._valTrunc = true;\n    for (; pos < len; ++pos) {\n      if (chunk[pos] === 38/* '&' */)\n        break;\n      ++self._bytesVal;\n    }\n    self._lastPos = pos;\n  }\n\n  return pos;\n}\n\n/* eslint-disable no-multi-spaces */\nconst HEX_VALUES = [\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, -1, -1, -1, -1, -1, -1,\n  -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n/* eslint-enable no-multi-spaces */\n\nmodule.exports = URLEncoded;\n","'use strict';\n\nconst { parseContentType } = require('./utils.js');\n\nfunction getInstance(cfg) {\n  const headers = cfg.headers;\n  const conType = parseContentType(headers['content-type']);\n  if (!conType)\n    throw new Error('Malformed content type');\n\n  for (const type of TYPES) {\n    const matched = type.detect(conType);\n    if (!matched)\n      continue;\n\n    const instanceCfg = {\n      limits: cfg.limits,\n      headers,\n      conType,\n      highWaterMark: undefined,\n      fileHwm: undefined,\n      defCharset: undefined,\n      defParamCharset: undefined,\n      preservePath: false,\n    };\n    if (cfg.highWaterMark)\n      instanceCfg.highWaterMark = cfg.highWaterMark;\n    if (cfg.fileHwm)\n      instanceCfg.fileHwm = cfg.fileHwm;\n    instanceCfg.defCharset = cfg.defCharset;\n    instanceCfg.defParamCharset = cfg.defParamCharset;\n    instanceCfg.preservePath = cfg.preservePath;\n    return new type(instanceCfg);\n  }\n\n  throw new Error(`Unsupported content type: ${headers['content-type']}`);\n}\n\n// Note: types are explicitly listed here for easier bundling\n// See: https://github.com/mscdex/busboy/issues/121\nconst TYPES = [\n  require('./types/multipart'),\n  require('./types/urlencoded'),\n].filter(function(typemod) { return typeof typemod.detect === 'function'; });\n\nmodule.exports = (cfg) => {\n  if (typeof cfg !== 'object' || cfg === null)\n    cfg = {};\n\n  if (typeof cfg.headers !== 'object'\n      || cfg.headers === null\n      || typeof cfg.headers['content-type'] !== 'string') {\n    throw new Error('Missing Content-Type');\n  }\n\n  return getInstance(cfg);\n};\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n    var target = {}\n\n    for (var i = 0; i < arguments.length; i++) {\n        var source = arguments[i]\n\n        for (var key in source) {\n            if (hasOwnProperty.call(source, key)) {\n                target[key] = source[key]\n            }\n        }\n    }\n\n    return target\n}\n","var reFirstKey = /^[^\\[]*/\nvar reDigitPath = /^\\[(\\d+)\\]/\nvar reNormalPath = /^\\[([^\\]]+)\\]/\n\nfunction parsePath (key) {\n  function failure () {\n    return [{ type: 'object', key: key, last: true }]\n  }\n\n  var firstKey = reFirstKey.exec(key)[0]\n  if (!firstKey) return failure()\n\n  var len = key.length\n  var pos = firstKey.length\n  var tail = { type: 'object', key: firstKey }\n  var steps = [tail]\n\n  while (pos < len) {\n    var m\n\n    if (key[pos] === '[' && key[pos + 1] === ']') {\n      pos += 2\n      tail.append = true\n      if (pos !== len) return failure()\n      continue\n    }\n\n    m = reDigitPath.exec(key.substring(pos))\n    if (m !== null) {\n      pos += m[0].length\n      tail.nextType = 'array'\n      tail = { type: 'array', key: parseInt(m[1], 10) }\n      steps.push(tail)\n      continue\n    }\n\n    m = reNormalPath.exec(key.substring(pos))\n    if (m !== null) {\n      pos += m[0].length\n      tail.nextType = 'object'\n      tail = { type: 'object', key: m[1] }\n      steps.push(tail)\n      continue\n    }\n\n    return failure()\n  }\n\n  tail.last = true\n  return steps\n}\n\nmodule.exports = parsePath\n","function valueType (value) {\n  if (value === undefined) return 'undefined'\n  if (Array.isArray(value)) return 'array'\n  if (typeof value === 'object') return 'object'\n  return 'scalar'\n}\n\nfunction setLastValue (context, step, currentValue, entryValue) {\n  switch (valueType(currentValue)) {\n    case 'undefined':\n      if (step.append) {\n        context[step.key] = [entryValue]\n      } else {\n        context[step.key] = entryValue\n      }\n      break\n    case 'array':\n      context[step.key].push(entryValue)\n      break\n    case 'object':\n      return setLastValue(currentValue, { type: 'object', key: '', last: true }, currentValue[''], entryValue)\n    case 'scalar':\n      context[step.key] = [context[step.key], entryValue]\n      break\n  }\n\n  return context\n}\n\nfunction setValue (context, step, currentValue, entryValue) {\n  if (step.last) return setLastValue(context, step, currentValue, entryValue)\n\n  var obj\n  switch (valueType(currentValue)) {\n    case 'undefined':\n      if (step.nextType === 'array') {\n        context[step.key] = []\n      } else {\n        context[step.key] = Object.create(null)\n      }\n      return context[step.key]\n    case 'object':\n      return context[step.key]\n    case 'array':\n      if (step.nextType === 'array') {\n        return currentValue\n      }\n\n      obj = Object.create(null)\n      context[step.key] = obj\n      currentValue.forEach(function (item, i) {\n        if (item !== undefined) obj['' + i] = item\n      })\n\n      return obj\n    case 'scalar':\n      obj = Object.create(null)\n      obj[''] = currentValue\n      context[step.key] = obj\n      return obj\n  }\n}\n\nmodule.exports = setValue\n","var parsePath = require('./lib/parse-path')\nvar setValue = require('./lib/set-value')\n\nfunction appendField (store, key, value) {\n  var steps = parsePath(key)\n\n  steps.reduce(function (context, step) {\n    return setValue(context, step, context[step.key], value)\n  }, store)\n}\n\nmodule.exports = appendField\n","var EventEmitter = require('events').EventEmitter\n\nfunction Counter () {\n  EventEmitter.call(this)\n  this.value = 0\n}\n\nCounter.prototype = Object.create(EventEmitter.prototype)\n\nCounter.prototype.increment = function increment () {\n  this.value++\n}\n\nCounter.prototype.decrement = function decrement () {\n  if (--this.value === 0) this.emit('zero')\n}\n\nCounter.prototype.isZero = function isZero () {\n  return (this.value === 0)\n}\n\nCounter.prototype.onceZero = function onceZero (fn) {\n  if (this.isZero()) return fn()\n\n  this.once('zero', fn)\n}\n\nmodule.exports = Counter\n","var util = require('util')\n\nvar errorMessages = {\n  LIMIT_PART_COUNT: 'Too many parts',\n  LIMIT_FILE_SIZE: 'File too large',\n  LIMIT_FILE_COUNT: 'Too many files',\n  LIMIT_FIELD_KEY: 'Field name too long',\n  LIMIT_FIELD_VALUE: 'Field value too long',\n  LIMIT_FIELD_COUNT: 'Too many fields',\n  LIMIT_UNEXPECTED_FILE: 'Unexpected field',\n  MISSING_FIELD_NAME: 'Field name missing'\n}\n\nfunction MulterError (code, field) {\n  Error.captureStackTrace(this, this.constructor)\n  this.name = this.constructor.name\n  this.message = errorMessages[code]\n  this.code = code\n  if (field) this.field = field\n}\n\nutil.inherits(MulterError, Error)\n\nmodule.exports = MulterError\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","var objectAssign = require('object-assign')\n\nfunction arrayRemove (arr, item) {\n  var idx = arr.indexOf(item)\n  if (~idx) arr.splice(idx, 1)\n}\n\nfunction FileAppender (strategy, req) {\n  this.strategy = strategy\n  this.req = req\n\n  switch (strategy) {\n    case 'NONE': break\n    case 'VALUE': break\n    case 'ARRAY': req.files = []; break\n    case 'OBJECT': req.files = Object.create(null); break\n    default: throw new Error('Unknown file strategy: ' + strategy)\n  }\n}\n\nFileAppender.prototype.insertPlaceholder = function (file) {\n  var placeholder = {\n    fieldname: file.fieldname\n  }\n\n  switch (this.strategy) {\n    case 'NONE': break\n    case 'VALUE': break\n    case 'ARRAY': this.req.files.push(placeholder); break\n    case 'OBJECT':\n      if (this.req.files[file.fieldname]) {\n        this.req.files[file.fieldname].push(placeholder)\n      } else {\n        this.req.files[file.fieldname] = [placeholder]\n      }\n      break\n  }\n\n  return placeholder\n}\n\nFileAppender.prototype.removePlaceholder = function (placeholder) {\n  switch (this.strategy) {\n    case 'NONE': break\n    case 'VALUE': break\n    case 'ARRAY': arrayRemove(this.req.files, placeholder); break\n    case 'OBJECT':\n      if (this.req.files[placeholder.fieldname].length === 1) {\n        delete this.req.files[placeholder.fieldname]\n      } else {\n        arrayRemove(this.req.files[placeholder.fieldname], placeholder)\n      }\n      break\n  }\n}\n\nFileAppender.prototype.replacePlaceholder = function (placeholder, file) {\n  if (this.strategy === 'VALUE') {\n    this.req.file = file\n    return\n  }\n\n  delete placeholder.fieldname\n  objectAssign(placeholder, file)\n}\n\nmodule.exports = FileAppender\n","function removeUploadedFiles (uploadedFiles, remove, cb) {\n  var length = uploadedFiles.length\n  var errors = []\n\n  if (length === 0) return cb(null, errors)\n\n  function handleFile (idx) {\n    var file = uploadedFiles[idx]\n\n    remove(file, function (err) {\n      if (err) {\n        err.file = file\n        err.field = file.fieldname\n        errors.push(err)\n      }\n\n      if (idx < length - 1) {\n        handleFile(idx + 1)\n      } else {\n        cb(null, errors)\n      }\n    })\n  }\n\n  handleFile(0)\n}\n\nmodule.exports = removeUploadedFiles\n","var is = require('type-is')\nvar Busboy = require('busboy')\nvar extend = require('xtend')\nvar appendField = require('append-field')\n\nvar Counter = require('./counter')\nvar MulterError = require('./multer-error')\nvar FileAppender = require('./file-appender')\nvar removeUploadedFiles = require('./remove-uploaded-files')\n\nfunction drainStream (stream) {\n  stream.on('readable', () => {\n    while (stream.read() !== null) {}\n  })\n}\n\nfunction makeMiddleware (setup) {\n  return function multerMiddleware (req, res, next) {\n    if (!is(req, ['multipart'])) return next()\n\n    var options = setup()\n\n    var limits = options.limits\n    var storage = options.storage\n    var fileFilter = options.fileFilter\n    var fileStrategy = options.fileStrategy\n    var preservePath = options.preservePath\n\n    req.body = Object.create(null)\n\n    req.on('error', function (err) {\n      abortWithError(err)\n    })\n\n    var busboy\n\n    try {\n      busboy = Busboy({ headers: req.headers, limits: limits, preservePath: preservePath })\n    } catch (err) {\n      return next(err)\n    }\n\n    var appender = new FileAppender(fileStrategy, req)\n    var isDone = false\n    var readFinished = false\n    var errorOccured = false\n    var pendingWrites = new Counter()\n    var uploadedFiles = []\n\n    function done (err) {\n      if (isDone) return\n      isDone = true\n      req.unpipe(busboy)\n      drainStream(req)\n      req.resume()\n      setImmediate(() => {\n        busboy.removeAllListeners()\n      })\n      next(err)\n    }\n\n    function indicateDone () {\n      if (readFinished && pendingWrites.isZero() && !errorOccured) done()\n    }\n\n    function abortWithError (uploadError) {\n      if (errorOccured) return\n      errorOccured = true\n\n      pendingWrites.onceZero(function () {\n        function remove (file, cb) {\n          storage._removeFile(req, file, cb)\n        }\n\n        removeUploadedFiles(uploadedFiles, remove, function (err, storageErrors) {\n          if (err) return done(err)\n\n          uploadError.storageErrors = storageErrors\n          done(uploadError)\n        })\n      })\n    }\n\n    function abortWithCode (code, optionalField) {\n      abortWithError(new MulterError(code, optionalField))\n    }\n\n    // handle text field data\n    busboy.on('field', function (fieldname, value, { nameTruncated, valueTruncated }) {\n      if (fieldname == null) return abortWithCode('MISSING_FIELD_NAME')\n      if (nameTruncated) return abortWithCode('LIMIT_FIELD_KEY')\n      if (valueTruncated) return abortWithCode('LIMIT_FIELD_VALUE', fieldname)\n\n      // Work around bug in Busboy (https://github.com/mscdex/busboy/issues/6)\n      if (limits && Object.prototype.hasOwnProperty.call(limits, 'fieldNameSize')) {\n        if (fieldname.length > limits.fieldNameSize) return abortWithCode('LIMIT_FIELD_KEY')\n      }\n\n      appendField(req.body, fieldname, value)\n    })\n\n    // handle files\n    busboy.on('file', function (fieldname, fileStream, { filename, encoding, mimeType }) {\n      var pendingWritesIncremented = false\n\n      fileStream.on('error', function (err) {\n        if (pendingWritesIncremented) {\n          pendingWrites.decrement()\n        }\n        abortWithError(err)\n      })\n\n      if (fieldname == null) return abortWithCode('MISSING_FIELD_NAME')\n\n      // don't attach to the files object, if there is no file\n      if (!filename) return fileStream.resume()\n\n      // Work around bug in Busboy (https://github.com/mscdex/busboy/issues/6)\n      if (limits && Object.prototype.hasOwnProperty.call(limits, 'fieldNameSize')) {\n        if (fieldname.length > limits.fieldNameSize) return abortWithCode('LIMIT_FIELD_KEY')\n      }\n\n      var file = {\n        fieldname: fieldname,\n        originalname: filename,\n        encoding: encoding,\n        mimetype: mimeType\n      }\n\n      var placeholder = appender.insertPlaceholder(file)\n\n      fileFilter(req, file, function (err, includeFile) {\n        if (err) {\n          appender.removePlaceholder(placeholder)\n          return abortWithError(err)\n        }\n\n        if (!includeFile) {\n          appender.removePlaceholder(placeholder)\n          return fileStream.resume()\n        }\n\n        var aborting = false\n        pendingWritesIncremented = true\n        pendingWrites.increment()\n\n        Object.defineProperty(file, 'stream', {\n          configurable: true,\n          enumerable: false,\n          value: fileStream\n        })\n\n        fileStream.on('limit', function () {\n          aborting = true\n          abortWithCode('LIMIT_FILE_SIZE', fieldname)\n        })\n\n        storage._handleFile(req, file, function (err, info) {\n          if (aborting) {\n            appender.removePlaceholder(placeholder)\n            uploadedFiles.push(extend(file, info))\n            return pendingWrites.decrement()\n          }\n\n          if (err) {\n            appender.removePlaceholder(placeholder)\n            pendingWrites.decrement()\n            return abortWithError(err)\n          }\n\n          var fileInfo = extend(file, info)\n\n          appender.replacePlaceholder(placeholder, fileInfo)\n          uploadedFiles.push(fileInfo)\n          pendingWrites.decrement()\n          indicateDone()\n        })\n      })\n    })\n\n    busboy.on('error', function (err) { abortWithError(err) })\n    busboy.on('partsLimit', function () { abortWithCode('LIMIT_PART_COUNT') })\n    busboy.on('filesLimit', function () { abortWithCode('LIMIT_FILE_COUNT') })\n    busboy.on('fieldsLimit', function () { abortWithCode('LIMIT_FIELD_COUNT') })\n    busboy.on('close', function () {\n      readFinished = true\n      indicateDone()\n    })\n\n    req.pipe(busboy)\n  }\n}\n\nmodule.exports = makeMiddleware\n","var path = require('path');\nvar fs = require('fs');\nvar _0777 = parseInt('0777', 8);\n\nmodule.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;\n\nfunction mkdirP (p, opts, f, made) {\n    if (typeof opts === 'function') {\n        f = opts;\n        opts = {};\n    }\n    else if (!opts || typeof opts !== 'object') {\n        opts = { mode: opts };\n    }\n    \n    var mode = opts.mode;\n    var xfs = opts.fs || fs;\n    \n    if (mode === undefined) {\n        mode = _0777\n    }\n    if (!made) made = null;\n    \n    var cb = f || /* istanbul ignore next */ function () {};\n    p = path.resolve(p);\n    \n    xfs.mkdir(p, mode, function (er) {\n        if (!er) {\n            made = made || p;\n            return cb(null, made);\n        }\n        switch (er.code) {\n            case 'ENOENT':\n                /* istanbul ignore if */\n                if (path.dirname(p) === p) return cb(er);\n                mkdirP(path.dirname(p), opts, function (er, made) {\n                    /* istanbul ignore if */\n                    if (er) cb(er, made);\n                    else mkdirP(p, opts, cb, made);\n                });\n                break;\n\n            // In the case of any other error, just see if there's a dir\n            // there already.  If so, then hooray!  If not, then something\n            // is borked.\n            default:\n                xfs.stat(p, function (er2, stat) {\n                    // if the stat fails, then that's super weird.\n                    // let the original error be the failure reason.\n                    if (er2 || !stat.isDirectory()) cb(er, made)\n                    else cb(null, made);\n                });\n                break;\n        }\n    });\n}\n\nmkdirP.sync = function sync (p, opts, made) {\n    if (!opts || typeof opts !== 'object') {\n        opts = { mode: opts };\n    }\n    \n    var mode = opts.mode;\n    var xfs = opts.fs || fs;\n    \n    if (mode === undefined) {\n        mode = _0777\n    }\n    if (!made) made = null;\n\n    p = path.resolve(p);\n\n    try {\n        xfs.mkdirSync(p, mode);\n        made = made || p;\n    }\n    catch (err0) {\n        switch (err0.code) {\n            case 'ENOENT' :\n                made = sync(path.dirname(p), opts, made);\n                sync(p, opts, made);\n                break;\n\n            // In the case of any other error, just see if there's a dir\n            // there already.  If so, then hooray!  If not, then something\n            // is borked.\n            default:\n                var stat;\n                try {\n                    stat = xfs.statSync(p);\n                }\n                catch (err1) /* istanbul ignore next */ {\n                    throw err0;\n                }\n                /* istanbul ignore if */\n                if (!stat.isDirectory()) throw err0;\n                break;\n        }\n    }\n\n    return made;\n};\n","var fs = require('fs')\nvar os = require('os')\nvar path = require('path')\nvar crypto = require('crypto')\nvar mkdirp = require('mkdirp')\n\nfunction getFilename (req, file, cb) {\n  crypto.randomBytes(16, function (err, raw) {\n    cb(err, err ? undefined : raw.toString('hex'))\n  })\n}\n\nfunction getDestination (req, file, cb) {\n  cb(null, os.tmpdir())\n}\n\nfunction DiskStorage (opts) {\n  this.getFilename = (opts.filename || getFilename)\n\n  if (typeof opts.destination === 'string') {\n    mkdirp.sync(opts.destination)\n    this.getDestination = function ($0, $1, cb) { cb(null, opts.destination) }\n  } else {\n    this.getDestination = (opts.destination || getDestination)\n  }\n}\n\nDiskStorage.prototype._handleFile = function _handleFile (req, file, cb) {\n  var that = this\n\n  that.getDestination(req, file, function (err, destination) {\n    if (err) return cb(err)\n\n    that.getFilename(req, file, function (err, filename) {\n      if (err) return cb(err)\n\n      var finalPath = path.join(destination, filename)\n      var outStream = fs.createWriteStream(finalPath)\n\n      file.stream.pipe(outStream)\n      outStream.on('error', cb)\n      outStream.on('finish', function () {\n        cb(null, {\n          destination: destination,\n          filename: filename,\n          path: finalPath,\n          size: outStream.bytesWritten\n        })\n      })\n    })\n  })\n}\n\nDiskStorage.prototype._removeFile = function _removeFile (req, file, cb) {\n  var path = file.path\n\n  delete file.destination\n  delete file.filename\n  delete file.path\n\n  fs.unlink(path, cb)\n}\n\nmodule.exports = function (opts) {\n  return new DiskStorage(opts)\n}\n","module.exports = require('stream');\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n  _createClass(BufferList, [{\n    key: \"push\",\n    value: function push(v) {\n      var entry = {\n        data: v,\n        next: null\n      };\n      if (this.length > 0) this.tail.next = entry;else this.head = entry;\n      this.tail = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"unshift\",\n    value: function unshift(v) {\n      var entry = {\n        data: v,\n        next: this.head\n      };\n      if (this.length === 0) this.tail = entry;\n      this.head = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"shift\",\n    value: function shift() {\n      if (this.length === 0) return;\n      var ret = this.head.data;\n      if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n      --this.length;\n      return ret;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.head = this.tail = null;\n      this.length = 0;\n    }\n  }, {\n    key: \"join\",\n    value: function join(s) {\n      if (this.length === 0) return '';\n      var p = this.head;\n      var ret = '' + p.data;\n      while (p = p.next) ret += s + p.data;\n      return ret;\n    }\n  }, {\n    key: \"concat\",\n    value: function concat(n) {\n      if (this.length === 0) return Buffer.alloc(0);\n      var ret = Buffer.allocUnsafe(n >>> 0);\n      var p = this.head;\n      var i = 0;\n      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\n      if (n < this.head.data.length) {\n        // `slice` is the same for buffers and strings.\n        ret = this.head.data.slice(0, n);\n        this.head.data = this.head.data.slice(n);\n      } else if (n === this.head.data.length) {\n        // First chunk is a perfect match.\n        ret = this.shift();\n      } else {\n        // Result spans more than one buffer.\n        ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n      }\n      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\n  }, {\n    key: \"_getString\",\n    value: function _getString(n) {\n      var p = this.head;\n      var c = 1;\n      var ret = p.data;\n      n -= ret.length;\n      while (p = p.next) {\n        var str = p.data;\n        var nb = n > str.length ? str.length : n;\n        if (nb === str.length) ret += str;else ret += str.slice(0, n);\n        n -= nb;\n        if (n === 0) {\n          if (nb === str.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = str.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\n  }, {\n    key: \"_getBuffer\",\n    value: function _getBuffer(n) {\n      var ret = Buffer.allocUnsafe(n);\n      var p = this.head;\n      var c = 1;\n      p.data.copy(ret);\n      n -= p.data.length;\n      while (p = p.next) {\n        var buf = p.data;\n        var nb = n > buf.length ? buf.length : n;\n        buf.copy(ret, ret.length - n, 0, nb);\n        n -= nb;\n        if (n === 0) {\n          if (nb === buf.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = buf.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err) {\n      if (!this._writableState) {\n        process.nextTick(emitErrorNT, this, err);\n      } else if (!this._writableState.errorEmitted) {\n        this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorNT, this, err);\n      }\n    }\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      if (!_this._writableState) {\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else if (!_this._writableState.errorEmitted) {\n        _this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else {\n        process.nextTick(emitCloseNT, _this);\n      }\n    } else if (cb) {\n      process.nextTick(emitCloseNT, _this);\n      cb(err);\n    } else {\n      process.nextTick(emitCloseNT, _this);\n    }\n  });\n  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n  if (self._writableState && !self._writableState.emitClose) return;\n  if (self._readableState && !self._readableState.emitClose) return;\n  self.emit('close');\n}\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finalCalled = false;\n    this._writableState.prefinished = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n  // We have tests that rely on errors being emitted\n  // in the same tick, so changing this is semver major.\n  // For now when you opt-in to autoDestroy we allow\n  // the error to be emitted nextTick. In a future\n  // semver major update we should change the default to this.\n\n  var rState = stream._readableState;\n  var wState = stream._writableState;\n  if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};","'use strict';\n\nconst codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error\n  }\n\n  function getMessage (arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message\n    } else {\n      return message(arg1, arg2, arg3)\n    }\n  }\n\n  class NodeError extends Base {\n    constructor (arg1, arg2, arg3) {\n      super(getMessage(arg1, arg2, arg3));\n    }\n  }\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n\n  codes[code] = NodeError;\n}\n\n// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    const len = expected.length;\n    expected = expected.map((i) => String(i));\n    if (len > 2) {\n      return `one of ${thing} ${expected.slice(0, len - 1).join(', ')}, or ` +\n             expected[len - 1];\n    } else if (len === 2) {\n      return `one of ${thing} ${expected[0]} or ${expected[1]}`;\n    } else {\n      return `of ${thing} ${expected[0]}`;\n    }\n  } else {\n    return `of ${thing} ${String(expected)}`;\n  }\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\nfunction startsWith(str, search, pos) {\n\treturn str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n\tif (this_len === undefined || this_len > str.length) {\n\t\tthis_len = str.length;\n\t}\n\treturn str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\nfunction includes(str, search, start) {\n  if (typeof start !== 'number') {\n    start = 0;\n  }\n\n  if (start + search.length > str.length) {\n    return false;\n  } else {\n    return str.indexOf(search, start) !== -1;\n  }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n  return 'The value \"' + value + '\" is invalid for option \"' + name + '\"'\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n  // determiner: 'must be' or 'must not be'\n  let determiner;\n  if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n    determiner = 'must not be';\n    expected = expected.replace(/^not /, '');\n  } else {\n    determiner = 'must be';\n  }\n\n  let msg;\n  if (endsWith(name, ' argument')) {\n    // For cases like 'first argument'\n    msg = `The ${name} ${determiner} ${oneOf(expected, 'type')}`;\n  } else {\n    const type = includes(name, '.') ? 'property' : 'argument';\n    msg = `The \"${name}\" ${type} ${determiner} ${oneOf(expected, 'type')}`;\n  }\n\n  msg += `. Received type ${typeof actual}`;\n  return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n  return 'The ' + name + ' method is not implemented'\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n  return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n  return 'Unknown encoding: ' + arg\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\n\nmodule.exports.codes = codes;\n","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n  if (hwm != null) {\n    if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n      var name = isDuplex ? duplexKey : 'highWaterMark';\n      throw new ERR_INVALID_OPT_VALUE(name, hwm);\n    }\n    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\n};","if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n          value: ctor,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      })\n    }\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      var TempCtor = function () {}\n      TempCtor.prototype = superCtor.prototype\n      ctor.prototype = new TempCtor()\n      ctor.prototype.constructor = ctor\n    }\n  }\n}\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n  if (config('noDeprecation')) {\n    return fn;\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (config('throwDeprecation')) {\n        throw new Error(msg);\n      } else if (config('traceDeprecation')) {\n        console.trace(msg);\n      } else {\n        console.warn(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n  // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n  try {\n    if (!global.localStorage) return false;\n  } catch (_) {\n    return false;\n  }\n  var val = global.localStorage[name];\n  if (null == val) return false;\n  return String(val).toLowerCase() === 'true';\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n  ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n  ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n  ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream,\n  // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function writableStateBufferGetter() {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function value(object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function realHasInstance(object) {\n    return object instanceof this;\n  };\n}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n  this._writableState = new WritableState(options, this, isDuplex);\n\n  // legacy.\n  this.writable = true;\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n    if (typeof options.writev === 'function') this._writev = options.writev;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\n  if (chunk === null) {\n    er = new ERR_STREAM_NULL_VALUES();\n  } else if (typeof chunk !== 'string' && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n  }\n  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n  if (typeof cb !== 'function') cb = nop;\n  if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n  return ret;\n};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    process.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    process.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n  if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n  onwriteStateUpdate(state);\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state) || stream.destroyed;\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.pendingcb++;\n      state.finalCalled = true;\n      process.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n      if (state.autoDestroy) {\n        // In case of duplex streams we need a way to detect\n        // if the readable side is ready for autoDestroy as well\n        var rState = stream._readableState;\n        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n  Readable.call(this, options);\n  Writable.call(this, options);\n  this.allowHalfOpen = true;\n  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\n    }\n  }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n  encoding = '' + encoding;\n  switch (encoding && encoding.toLowerCase()) {\n    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n      return true;\n    default:\n      return false;\n  }\n};\n\nfunction _normalizeEncoding(enc) {\n  if (!enc) return 'utf8';\n  var retried;\n  while (true) {\n    switch (enc) {\n      case 'utf8':\n      case 'utf-8':\n        return 'utf8';\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return 'utf16le';\n      case 'latin1':\n      case 'binary':\n        return 'latin1';\n      case 'base64':\n      case 'ascii':\n      case 'hex':\n        return enc;\n      default:\n        if (retried) return; // undefined\n        enc = ('' + enc).toLowerCase();\n        retried = true;\n    }\n  }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n  var nenc = _normalizeEncoding(enc);\n  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n  return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n  this.encoding = normalizeEncoding(encoding);\n  var nb;\n  switch (this.encoding) {\n    case 'utf16le':\n      this.text = utf16Text;\n      this.end = utf16End;\n      nb = 4;\n      break;\n    case 'utf8':\n      this.fillLast = utf8FillLast;\n      nb = 4;\n      break;\n    case 'base64':\n      this.text = base64Text;\n      this.end = base64End;\n      nb = 3;\n      break;\n    default:\n      this.write = simpleWrite;\n      this.end = simpleEnd;\n      return;\n  }\n  this.lastNeed = 0;\n  this.lastTotal = 0;\n  this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n  if (buf.length === 0) return '';\n  var r;\n  var i;\n  if (this.lastNeed) {\n    r = this.fillLast(buf);\n    if (r === undefined) return '';\n    i = this.lastNeed;\n    this.lastNeed = 0;\n  } else {\n    i = 0;\n  }\n  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n  return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n  this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n  return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n  var j = buf.length - 1;\n  if (j < i) return 0;\n  var nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 1;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 2;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) {\n      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n    }\n    return nb;\n  }\n  return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n  if ((buf[0] & 0xC0) !== 0x80) {\n    self.lastNeed = 0;\n    return '\\ufffd';\n  }\n  if (self.lastNeed > 1 && buf.length > 1) {\n    if ((buf[1] & 0xC0) !== 0x80) {\n      self.lastNeed = 1;\n      return '\\ufffd';\n    }\n    if (self.lastNeed > 2 && buf.length > 2) {\n      if ((buf[2] & 0xC0) !== 0x80) {\n        self.lastNeed = 2;\n        return '\\ufffd';\n      }\n    }\n  }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n  var p = this.lastTotal - this.lastNeed;\n  var r = utf8CheckExtraBytes(this, buf, p);\n  if (r !== undefined) return r;\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, p, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, p, 0, buf.length);\n  this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n  var total = utf8CheckIncomplete(this, buf, i);\n  if (!this.lastNeed) return buf.toString('utf8', i);\n  this.lastTotal = total;\n  var end = buf.length - (total - this.lastNeed);\n  buf.copy(this.lastChar, 0, end);\n  return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + '\\ufffd';\n  return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n  if ((buf.length - i) % 2 === 0) {\n    var r = buf.toString('utf16le', i);\n    if (r) {\n      var c = r.charCodeAt(r.length - 1);\n      if (c >= 0xD800 && c <= 0xDBFF) {\n        this.lastNeed = 2;\n        this.lastTotal = 4;\n        this.lastChar[0] = buf[buf.length - 2];\n        this.lastChar[1] = buf[buf.length - 1];\n        return r.slice(0, -1);\n      }\n    }\n    return r;\n  }\n  this.lastNeed = 1;\n  this.lastTotal = 2;\n  this.lastChar[0] = buf[buf.length - 1];\n  return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) {\n    var end = this.lastTotal - this.lastNeed;\n    return r + this.lastChar.toString('utf16le', 0, end);\n  }\n  return r;\n}\n\nfunction base64Text(buf, i) {\n  var n = (buf.length - i) % 3;\n  if (n === 0) return buf.toString('base64', i);\n  this.lastNeed = 3 - n;\n  this.lastTotal = 3;\n  if (n === 1) {\n    this.lastChar[0] = buf[buf.length - 1];\n  } else {\n    this.lastChar[0] = buf[buf.length - 2];\n    this.lastChar[1] = buf[buf.length - 1];\n  }\n  return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n  return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n  return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n  return buf && buf.length ? this.write(buf) : '';\n}","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n  if (typeof opts === 'function') return eos(stream, null, opts);\n  if (!opts) opts = {};\n  callback = once(callback || noop);\n  var readable = opts.readable || opts.readable !== false && stream.readable;\n  var writable = opts.writable || opts.writable !== false && stream.writable;\n  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\n    if (readable && !readableEnded) {\n      if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n    if (writable && !writableEnded) {\n      if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n  };\n  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\n  };\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish);\n    stream.on('abort', onclose);\n    if (stream.req) onrequest();else stream.on('request', onrequest);\n  } else if (writable && !stream._writableState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish);\n    stream.on('close', onlegacyfinish);\n  }\n  stream.on('end', onend);\n  stream.on('finish', onfinish);\n  if (opts.error !== false) stream.on('error', onerror);\n  stream.on('close', onclose);\n  return function () {\n    stream.removeListener('complete', onfinish);\n    stream.removeListener('abort', onclose);\n    stream.removeListener('request', onrequest);\n    if (stream.req) stream.req.removeListener('finish', onfinish);\n    stream.removeListener('end', onlegacyfinish);\n    stream.removeListener('close', onlegacyfinish);\n    stream.removeListener('finish', onfinish);\n    stream.removeListener('end', onend);\n    stream.removeListener('error', onerror);\n    stream.removeListener('close', onclose);\n  };\n}\nmodule.exports = eos;","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\n    }\n  }\n}\nfunction onReadable(iter) {\n  // we wait for the next tick, because it might\n  // emit an error with process.nextTick\n  process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n  return function (resolve, reject) {\n    lastPromise.then(function () {\n      if (iter[kEnded]) {\n        resolve(createIterResult(undefined, true));\n        return;\n      }\n      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\n    }\n    if (this[kStream].destroyed) {\n      // We need to defer via nextTick because if .destroy(err) is\n      // called, the error will be emitted via nextTick, and\n      // we cannot guarantee that there is no error lingering around\n      // waiting to be emitted.\n      return new Promise(function (resolve, reject) {\n        process.nextTick(function () {\n          if (_this[kError]) {\n            reject(_this[kError]);\n          } else {\n            resolve(createIterResult(undefined, true));\n          }\n        });\n      });\n    }\n\n    // if we have multiple next() calls\n    // we will wait for the previous Promise to finish\n    // this logic is optimized to support for await loops,\n    // where next() is only called once at a time\n    var lastPromise = this[kLastPromise];\n    var promise;\n    if (lastPromise) {\n      promise = new Promise(wrapForNext(lastPromise, this));\n    } else {\n      // fast path needed to support multiple this.push()\n      // without triggering the next() queue\n      var data = this[kStream].read();\n      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\n    }\n    this[kLastPromise] = promise;\n    return promise;\n  }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n  return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n  var _this2 = this;\n  // destroy(err, cb) is a private API\n  // we can guarantee we have that here, because we control the\n  // Readable class this is attached to\n  return new Promise(function (resolve, reject) {\n    _this2[kStream].destroy(null, function (err) {\n      if (err) {\n        reject(err);\n        return;\n      }\n      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\n  var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n    value: stream,\n    writable: true\n  }), _defineProperty(_Object$create, kLastResolve, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kLastReject, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kError, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kEnded, {\n    value: stream._readableState.endEmitted,\n    writable: true\n  }), _defineProperty(_Object$create, kHandlePromise, {\n    value: function value(resolve, reject) {\n      var data = iterator[kStream].read();\n      if (data) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        resolve(createIterResult(data, false));\n      } else {\n        iterator[kLastResolve] = resolve;\n        iterator[kLastReject] = reject;\n      }\n    },\n    writable: true\n  }), _Object$create));\n  iterator[kLastPromise] = null;\n  finished(stream, function (err) {\n    if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n      var reject = iterator[kLastReject];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar ERR_INVALID_ARG_TYPE = require('../../../errors').codes.ERR_INVALID_ARG_TYPE;\nfunction from(Readable, iterable, opts) {\n  var iterator;\n  if (iterable && typeof iterable.next === 'function') {\n    iterator = iterable;\n  } else if (iterable && iterable[Symbol.asyncIterator]) iterator = iterable[Symbol.asyncIterator]();else if (iterable && iterable[Symbol.iterator]) iterator = iterable[Symbol.iterator]();else throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable);\n  var readable = new Readable(_objectSpread({\n    objectMode: true\n  }, opts));\n  // Reading boolean to protect against _read\n  // being called before last iteration completion.\n  var reading = false;\n  readable._read = function () {\n    if (!reading) {\n      reading = true;\n      next();\n    }\n  };\n  function next() {\n    return _next2.apply(this, arguments);\n  }\n  function _next2() {\n    _next2 = _asyncToGenerator(function* () {\n      try {\n        var _yield$iterator$next = yield iterator.next(),\n          value = _yield$iterator$next.value,\n          done = _yield$iterator$next.done;\n        if (done) {\n          readable.push(null);\n        } else if (readable.push(yield value)) {\n          next();\n        } else {\n          reading = false;\n        }\n      } catch (err) {\n        readable.destroy(err);\n      }\n    });\n    return _next2.apply(this, arguments);\n  }\n  return readable;\n}\nmodule.exports = from;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n  Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      errorOrDestroy(stream, er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n      if (addToFront) {\n        if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n      } else if (state.destroyed) {\n        return false;\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n      maybeReadMore(stream, state);\n    }\n  }\n\n  // We can push more data if we are below the highWaterMark.\n  // Also, if we have no data yet, we can stand some more bytes.\n  // This is to work around cases where hwm=0, such as the repl.\n  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    state.awaitDrain = 0;\n    stream.emit('data', chunk);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n  }\n  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark;\n    n = 0;\n  } else {\n    state.length -= n;\n    state.awaitDrain = 0;\n  }\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n  if (state.sync) {\n    // if we are sync, wait until next tick to emit the data.\n    // Otherwise we risk emitting data in the flow()\n    // the readable code triggers during a read() call\n    emitReadable(stream);\n  } else {\n    // emit 'readable' now to make sure it gets picked up.\n    state.needReadable = false;\n    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\n  // The stream needs another readable event if\n  // 1. It is not flowing, as the flow mechanism will take\n  //    care of it.\n  // 2. It is not ended.\n  // 3. It is below the highWaterMark, so we can schedule\n  //    another readable later.\n  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\n  }\n}\nfunction maybeReadMore_(stream, state) {\n  // Attempt to read more data if we should.\n  //\n  // The conditions for reading more data are (one of):\n  // - Not enough data buffered (state.length < state.highWaterMark). The loop\n  //   is responsible for filling the buffer with enough data if such data\n  //   is available. If highWaterMark is 0 and we are not in the flowing mode\n  //   we should _not_ attempt to buffer any extra data. We'll get more data\n  //   when the stream consumer calls read() instead.\n  // - No data in the buffer, and the stream is in flowing mode. In this mode\n  //   the loop below is responsible for ensuring read() is called. Failing to\n  //   call read here would abort the flow and there's no other mechanism for\n  //   continuing the flow if the stream consumer has just subscribed to the\n  //   'data' event.\n  //\n  // In addition to the above conditions to keep reading data, the following\n  // conditions prevent the data from being read:\n  // - The stream has ended (state.ended).\n  // - There is already a pending 'read' operation (state.reading). This is a\n  //   case where the the stream has called the implementation defined _read()\n  //   method, but they are processing the call asynchronously and have _not_\n  //   called push() with new data. In this case we skip performing more\n  //   read()s. The execution ends in this method again after the _read() ends\n  //   up calling push() with more data.\n  while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n    var len = state.length;\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\n    if (ret === false) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', state.awaitDrain);\n        state.awaitDrain++;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\n};\nfunction pipeOnDrain(src) {\n  return function pipeOnDrainFunctionResult() {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n  dest.emit('unpipe', this, unpipeInfo);\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\n  if (ev === 'data') {\n    // update readableListening so that resume() may be a no-op\n    // a few lines down. This is needed to support once('readable').\n    state.readableListening = this.listenerCount('readable') > 0;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\n    if (state.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.flowing = false;\n      state.emittedReadable = false;\n      debug('on readable', state.length, state.reading);\n      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\n  if (ev === 'readable') {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n  if (ev === 'readable' || ev === undefined) {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\n  if (state.resumeScheduled && !state.paused) {\n    // flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n    _this.push(null);\n  });\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function methodWrap(method) {\n        return function methodWrapReturnFunction() {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\n  };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.highWaterMark;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState && this._readableState.buffer;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.flowing;\n  },\n  set: function set(state) {\n    if (this._readableState) {\n      this._readableState.flowing = state;\n    }\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.length;\n  }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = state.buffer.consume(n, state.decoder);\n  }\n  return ret;\n}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n    if (state.autoDestroy) {\n      // In case of duplex streams we need a way to detect\n      // if the writable side is ready for autoDestroy as well\n      var wState = stream._writableState;\n      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\n      }\n    }\n  }\n}\nif (typeof Symbol === 'function') {\n  Readable.from = function (iterable, opts) {\n    if (from === undefined) {\n      from = require('./internal/streams/from');\n    }\n    return from(Readable, iterable, opts);\n  };\n}\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n  ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    this.push(data);\n  cb(er);\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n  Duplex.call(this, options);\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\n  if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // TODO(BridgeAR): Write a test for these two error cases\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n  if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n  return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    callback.apply(void 0, arguments);\n  };\n}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n  callback = once(callback);\n  var closed = false;\n  stream.on('close', function () {\n    closed = true;\n  });\n  if (eos === undefined) eos = require('./end-of-stream');\n  eos(stream, {\n    readable: reading,\n    writable: writing\n  }, function (err) {\n    if (err) return callback(err);\n    closed = true;\n    callback();\n  });\n  var destroyed = false;\n  return function (err) {\n    if (closed) return;\n    if (destroyed) return;\n    destroyed = true;\n\n    // request.destroy just do .end - .abort is what we want\n    if (isRequest(stream)) return stream.abort();\n    if (typeof stream.destroy === 'function') return stream.destroy();\n    callback(err || new ERR_STREAM_DESTROYED('pipe'));\n  };\n}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\n}\nfunction popCallback(streams) {\n  if (!streams.length) return noop;\n  if (typeof streams[streams.length - 1] !== 'function') return noop;\n  return streams.pop();\n}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\n  }\n  var error;\n  var destroys = streams.map(function (stream, i) {\n    var reading = i < streams.length - 1;\n    var writing = i > 0;\n    return destroyer(stream, reading, writing, function (err) {\n      if (!error) error = err;\n      if (err) destroys.forEach(call);\n      if (reading) return;\n      destroys.forEach(call);\n      callback(error);\n    });\n  });\n  return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","var Stream = require('stream');\nif (process.env.READABLE_STREAM === 'disable' && Stream) {\n  module.exports = Stream.Readable;\n  Object.assign(module.exports, Stream);\n  module.exports.Stream = Stream;\n} else {\n  exports = module.exports = require('./lib/_stream_readable.js');\n  exports.Stream = Stream || exports;\n  exports.Readable = exports;\n  exports.Writable = require('./lib/_stream_writable.js');\n  exports.Duplex = require('./lib/_stream_duplex.js');\n  exports.Transform = require('./lib/_stream_transform.js');\n  exports.PassThrough = require('./lib/_stream_passthrough.js');\n  exports.finished = require('./lib/internal/streams/end-of-stream.js');\n  exports.pipeline = require('./lib/internal/streams/pipeline.js');\n}\n","/* eslint-disable node/no-deprecated-api */\n\nvar toString = Object.prototype.toString\n\nvar isModern = (\n  typeof Buffer !== 'undefined' &&\n  typeof Buffer.alloc === 'function' &&\n  typeof Buffer.allocUnsafe === 'function' &&\n  typeof Buffer.from === 'function'\n)\n\nfunction isArrayBuffer (input) {\n  return toString.call(input).slice(8, -1) === 'ArrayBuffer'\n}\n\nfunction fromArrayBuffer (obj, byteOffset, length) {\n  byteOffset >>>= 0\n\n  var maxLength = obj.byteLength - byteOffset\n\n  if (maxLength < 0) {\n    throw new RangeError(\"'offset' is out of bounds\")\n  }\n\n  if (length === undefined) {\n    length = maxLength\n  } else {\n    length >>>= 0\n\n    if (length > maxLength) {\n      throw new RangeError(\"'length' is out of bounds\")\n    }\n  }\n\n  return isModern\n    ? Buffer.from(obj.slice(byteOffset, byteOffset + length))\n    : new Buffer(new Uint8Array(obj.slice(byteOffset, byteOffset + length)))\n}\n\nfunction fromString (string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding')\n  }\n\n  return isModern\n    ? Buffer.from(string, encoding)\n    : new Buffer(string, encoding)\n}\n\nfunction bufferFrom (value, encodingOrOffset, length) {\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number')\n  }\n\n  if (isArrayBuffer(value)) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'string') {\n    return fromString(value, encodingOrOffset)\n  }\n\n  return isModern\n    ? Buffer.from(value)\n    : new Buffer(value)\n}\n\nmodule.exports = bufferFrom\n","var undefined = (void 0); // Paranoia\n\n// Beyond this value, index getters/setters (i.e. array[0], array[1]) are so slow to\n// create, and consume so much memory, that the browser appears frozen.\nvar MAX_ARRAY_LENGTH = 1e5;\n\n// Approximations of internal ECMAScript conversion functions\nvar ECMAScript = (function() {\n  // Stash a copy in case other scripts modify these\n  var opts = Object.prototype.toString,\n      ophop = Object.prototype.hasOwnProperty;\n\n  return {\n    // Class returns internal [[Class]] property, used to avoid cross-frame instanceof issues:\n    Class: function(v) { return opts.call(v).replace(/^\\[object *|\\]$/g, ''); },\n    HasProperty: function(o, p) { return p in o; },\n    HasOwnProperty: function(o, p) { return ophop.call(o, p); },\n    IsCallable: function(o) { return typeof o === 'function'; },\n    ToInt32: function(v) { return v >> 0; },\n    ToUint32: function(v) { return v >>> 0; }\n  };\n}());\n\n// Snapshot intrinsics\nvar LN2 = Math.LN2,\n    abs = Math.abs,\n    floor = Math.floor,\n    log = Math.log,\n    min = Math.min,\n    pow = Math.pow,\n    round = Math.round;\n\n// ES5: lock down object properties\nfunction configureProperties(obj) {\n  if (getOwnPropNames && defineProp) {\n    var props = getOwnPropNames(obj), i;\n    for (i = 0; i < props.length; i += 1) {\n      defineProp(obj, props[i], {\n        value: obj[props[i]],\n        writable: false,\n        enumerable: false,\n        configurable: false\n      });\n    }\n  }\n}\n\n// emulate ES5 getter/setter API using legacy APIs\n// http://blogs.msdn.com/b/ie/archive/2010/09/07/transitioning-existing-code-to-the-es5-getter-setter-apis.aspx\n// (second clause tests for Object.defineProperty() in IE<9 that only supports extending DOM prototypes, but\n// note that IE<9 does not support __defineGetter__ or __defineSetter__ so it just renders the method harmless)\nvar defineProp\nif (Object.defineProperty && (function() {\n      try {\n        Object.defineProperty({}, 'x', {});\n        return true;\n      } catch (e) {\n        return false;\n      }\n    })()) {\n  defineProp = Object.defineProperty;\n} else {\n  defineProp = function(o, p, desc) {\n    if (!o === Object(o)) throw new TypeError(\"Object.defineProperty called on non-object\");\n    if (ECMAScript.HasProperty(desc, 'get') && Object.prototype.__defineGetter__) { Object.prototype.__defineGetter__.call(o, p, desc.get); }\n    if (ECMAScript.HasProperty(desc, 'set') && Object.prototype.__defineSetter__) { Object.prototype.__defineSetter__.call(o, p, desc.set); }\n    if (ECMAScript.HasProperty(desc, 'value')) { o[p] = desc.value; }\n    return o;\n  };\n}\n\nvar getOwnPropNames = Object.getOwnPropertyNames || function (o) {\n  if (o !== Object(o)) throw new TypeError(\"Object.getOwnPropertyNames called on non-object\");\n  var props = [], p;\n  for (p in o) {\n    if (ECMAScript.HasOwnProperty(o, p)) {\n      props.push(p);\n    }\n  }\n  return props;\n};\n\n// ES5: Make obj[index] an alias for obj._getter(index)/obj._setter(index, value)\n// for index in 0 ... obj.length\nfunction makeArrayAccessors(obj) {\n  if (!defineProp) { return; }\n\n  if (obj.length > MAX_ARRAY_LENGTH) throw new RangeError(\"Array too large for polyfill\");\n\n  function makeArrayAccessor(index) {\n    defineProp(obj, index, {\n      'get': function() { return obj._getter(index); },\n      'set': function(v) { obj._setter(index, v); },\n      enumerable: true,\n      configurable: false\n    });\n  }\n\n  var i;\n  for (i = 0; i < obj.length; i += 1) {\n    makeArrayAccessor(i);\n  }\n}\n\n// Internal conversion functions:\n//    pack<Type>()   - take a number (interpreted as Type), output a byte array\n//    unpack<Type>() - take a byte array, output a Type-like number\n\nfunction as_signed(value, bits) { var s = 32 - bits; return (value << s) >> s; }\nfunction as_unsigned(value, bits) { var s = 32 - bits; return (value << s) >>> s; }\n\nfunction packI8(n) { return [n & 0xff]; }\nfunction unpackI8(bytes) { return as_signed(bytes[0], 8); }\n\nfunction packU8(n) { return [n & 0xff]; }\nfunction unpackU8(bytes) { return as_unsigned(bytes[0], 8); }\n\nfunction packU8Clamped(n) { n = round(Number(n)); return [n < 0 ? 0 : n > 0xff ? 0xff : n & 0xff]; }\n\nfunction packI16(n) { return [(n >> 8) & 0xff, n & 0xff]; }\nfunction unpackI16(bytes) { return as_signed(bytes[0] << 8 | bytes[1], 16); }\n\nfunction packU16(n) { return [(n >> 8) & 0xff, n & 0xff]; }\nfunction unpackU16(bytes) { return as_unsigned(bytes[0] << 8 | bytes[1], 16); }\n\nfunction packI32(n) { return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff]; }\nfunction unpackI32(bytes) { return as_signed(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32); }\n\nfunction packU32(n) { return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff]; }\nfunction unpackU32(bytes) { return as_unsigned(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32); }\n\nfunction packIEEE754(v, ebits, fbits) {\n\n  var bias = (1 << (ebits - 1)) - 1,\n      s, e, f, ln,\n      i, bits, str, bytes;\n\n  function roundToEven(n) {\n    var w = floor(n), f = n - w;\n    if (f < 0.5)\n      return w;\n    if (f > 0.5)\n      return w + 1;\n    return w % 2 ? w + 1 : w;\n  }\n\n  // Compute sign, exponent, fraction\n  if (v !== v) {\n    // NaN\n    // http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping\n    e = (1 << ebits) - 1; f = pow(2, fbits - 1); s = 0;\n  } else if (v === Infinity || v === -Infinity) {\n    e = (1 << ebits) - 1; f = 0; s = (v < 0) ? 1 : 0;\n  } else if (v === 0) {\n    e = 0; f = 0; s = (1 / v === -Infinity) ? 1 : 0;\n  } else {\n    s = v < 0;\n    v = abs(v);\n\n    if (v >= pow(2, 1 - bias)) {\n      e = min(floor(log(v) / LN2), 1023);\n      f = roundToEven(v / pow(2, e) * pow(2, fbits));\n      if (f / pow(2, fbits) >= 2) {\n        e = e + 1;\n        f = 1;\n      }\n      if (e > bias) {\n        // Overflow\n        e = (1 << ebits) - 1;\n        f = 0;\n      } else {\n        // Normalized\n        e = e + bias;\n        f = f - pow(2, fbits);\n      }\n    } else {\n      // Denormalized\n      e = 0;\n      f = roundToEven(v / pow(2, 1 - bias - fbits));\n    }\n  }\n\n  // Pack sign, exponent, fraction\n  bits = [];\n  for (i = fbits; i; i -= 1) { bits.push(f % 2 ? 1 : 0); f = floor(f / 2); }\n  for (i = ebits; i; i -= 1) { bits.push(e % 2 ? 1 : 0); e = floor(e / 2); }\n  bits.push(s ? 1 : 0);\n  bits.reverse();\n  str = bits.join('');\n\n  // Bits to bytes\n  bytes = [];\n  while (str.length) {\n    bytes.push(parseInt(str.substring(0, 8), 2));\n    str = str.substring(8);\n  }\n  return bytes;\n}\n\nfunction unpackIEEE754(bytes, ebits, fbits) {\n\n  // Bytes to bits\n  var bits = [], i, j, b, str,\n      bias, s, e, f;\n\n  for (i = bytes.length; i; i -= 1) {\n    b = bytes[i - 1];\n    for (j = 8; j; j -= 1) {\n      bits.push(b % 2 ? 1 : 0); b = b >> 1;\n    }\n  }\n  bits.reverse();\n  str = bits.join('');\n\n  // Unpack sign, exponent, fraction\n  bias = (1 << (ebits - 1)) - 1;\n  s = parseInt(str.substring(0, 1), 2) ? -1 : 1;\n  e = parseInt(str.substring(1, 1 + ebits), 2);\n  f = parseInt(str.substring(1 + ebits), 2);\n\n  // Produce number\n  if (e === (1 << ebits) - 1) {\n    return f !== 0 ? NaN : s * Infinity;\n  } else if (e > 0) {\n    // Normalized\n    return s * pow(2, e - bias) * (1 + f / pow(2, fbits));\n  } else if (f !== 0) {\n    // Denormalized\n    return s * pow(2, -(bias - 1)) * (f / pow(2, fbits));\n  } else {\n    return s < 0 ? -0 : 0;\n  }\n}\n\nfunction unpackF64(b) { return unpackIEEE754(b, 11, 52); }\nfunction packF64(v) { return packIEEE754(v, 11, 52); }\nfunction unpackF32(b) { return unpackIEEE754(b, 8, 23); }\nfunction packF32(v) { return packIEEE754(v, 8, 23); }\n\n\n//\n// 3 The ArrayBuffer Type\n//\n\n(function() {\n\n  /** @constructor */\n  var ArrayBuffer = function ArrayBuffer(length) {\n    length = ECMAScript.ToInt32(length);\n    if (length < 0) throw new RangeError('ArrayBuffer size is not a small enough positive integer');\n\n    this.byteLength = length;\n    this._bytes = [];\n    this._bytes.length = length;\n\n    var i;\n    for (i = 0; i < this.byteLength; i += 1) {\n      this._bytes[i] = 0;\n    }\n\n    configureProperties(this);\n  };\n\n  exports.ArrayBuffer = exports.ArrayBuffer || ArrayBuffer;\n\n  //\n  // 4 The ArrayBufferView Type\n  //\n\n  // NOTE: this constructor is not exported\n  /** @constructor */\n  var ArrayBufferView = function ArrayBufferView() {\n    //this.buffer = null;\n    //this.byteOffset = 0;\n    //this.byteLength = 0;\n  };\n\n  //\n  // 5 The Typed Array View Types\n  //\n\n  function makeConstructor(bytesPerElement, pack, unpack) {\n    // Each TypedArray type requires a distinct constructor instance with\n    // identical logic, which this produces.\n\n    var ctor;\n    ctor = function(buffer, byteOffset, length) {\n      var array, sequence, i, s;\n\n      if (!arguments.length || typeof arguments[0] === 'number') {\n        // Constructor(unsigned long length)\n        this.length = ECMAScript.ToInt32(arguments[0]);\n        if (length < 0) throw new RangeError('ArrayBufferView size is not a small enough positive integer');\n\n        this.byteLength = this.length * this.BYTES_PER_ELEMENT;\n        this.buffer = new ArrayBuffer(this.byteLength);\n        this.byteOffset = 0;\n      } else if (typeof arguments[0] === 'object' && arguments[0].constructor === ctor) {\n        // Constructor(TypedArray array)\n        array = arguments[0];\n\n        this.length = array.length;\n        this.byteLength = this.length * this.BYTES_PER_ELEMENT;\n        this.buffer = new ArrayBuffer(this.byteLength);\n        this.byteOffset = 0;\n\n        for (i = 0; i < this.length; i += 1) {\n          this._setter(i, array._getter(i));\n        }\n      } else if (typeof arguments[0] === 'object' &&\n                 !(arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) {\n        // Constructor(sequence<type> array)\n        sequence = arguments[0];\n\n        this.length = ECMAScript.ToUint32(sequence.length);\n        this.byteLength = this.length * this.BYTES_PER_ELEMENT;\n        this.buffer = new ArrayBuffer(this.byteLength);\n        this.byteOffset = 0;\n\n        for (i = 0; i < this.length; i += 1) {\n          s = sequence[i];\n          this._setter(i, Number(s));\n        }\n      } else if (typeof arguments[0] === 'object' &&\n                 (arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) {\n        // Constructor(ArrayBuffer buffer,\n        //             optional unsigned long byteOffset, optional unsigned long length)\n        this.buffer = buffer;\n\n        this.byteOffset = ECMAScript.ToUint32(byteOffset);\n        if (this.byteOffset > this.buffer.byteLength) {\n          throw new RangeError(\"byteOffset out of range\");\n        }\n\n        if (this.byteOffset % this.BYTES_PER_ELEMENT) {\n          // The given byteOffset must be a multiple of the element\n          // size of the specific type, otherwise an exception is raised.\n          throw new RangeError(\"ArrayBuffer length minus the byteOffset is not a multiple of the element size.\");\n        }\n\n        if (arguments.length < 3) {\n          this.byteLength = this.buffer.byteLength - this.byteOffset;\n\n          if (this.byteLength % this.BYTES_PER_ELEMENT) {\n            throw new RangeError(\"length of buffer minus byteOffset not a multiple of the element size\");\n          }\n          this.length = this.byteLength / this.BYTES_PER_ELEMENT;\n        } else {\n          this.length = ECMAScript.ToUint32(length);\n          this.byteLength = this.length * this.BYTES_PER_ELEMENT;\n        }\n\n        if ((this.byteOffset + this.byteLength) > this.buffer.byteLength) {\n          throw new RangeError(\"byteOffset and length reference an area beyond the end of the buffer\");\n        }\n      } else {\n        throw new TypeError(\"Unexpected argument type(s)\");\n      }\n\n      this.constructor = ctor;\n\n      configureProperties(this);\n      makeArrayAccessors(this);\n    };\n\n    ctor.prototype = new ArrayBufferView();\n    ctor.prototype.BYTES_PER_ELEMENT = bytesPerElement;\n    ctor.prototype._pack = pack;\n    ctor.prototype._unpack = unpack;\n    ctor.BYTES_PER_ELEMENT = bytesPerElement;\n\n    // getter type (unsigned long index);\n    ctor.prototype._getter = function(index) {\n      if (arguments.length < 1) throw new SyntaxError(\"Not enough arguments\");\n\n      index = ECMAScript.ToUint32(index);\n      if (index >= this.length) {\n        return undefined;\n      }\n\n      var bytes = [], i, o;\n      for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT;\n           i < this.BYTES_PER_ELEMENT;\n           i += 1, o += 1) {\n        bytes.push(this.buffer._bytes[o]);\n      }\n      return this._unpack(bytes);\n    };\n\n    // NONSTANDARD: convenience alias for getter: type get(unsigned long index);\n    ctor.prototype.get = ctor.prototype._getter;\n\n    // setter void (unsigned long index, type value);\n    ctor.prototype._setter = function(index, value) {\n      if (arguments.length < 2) throw new SyntaxError(\"Not enough arguments\");\n\n      index = ECMAScript.ToUint32(index);\n      if (index >= this.length) {\n        return undefined;\n      }\n\n      var bytes = this._pack(value), i, o;\n      for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT;\n           i < this.BYTES_PER_ELEMENT;\n           i += 1, o += 1) {\n        this.buffer._bytes[o] = bytes[i];\n      }\n    };\n\n    // void set(TypedArray array, optional unsigned long offset);\n    // void set(sequence<type> array, optional unsigned long offset);\n    ctor.prototype.set = function(index, value) {\n      if (arguments.length < 1) throw new SyntaxError(\"Not enough arguments\");\n      var array, sequence, offset, len,\n          i, s, d,\n          byteOffset, byteLength, tmp;\n\n      if (typeof arguments[0] === 'object' && arguments[0].constructor === this.constructor) {\n        // void set(TypedArray array, optional unsigned long offset);\n        array = arguments[0];\n        offset = ECMAScript.ToUint32(arguments[1]);\n\n        if (offset + array.length > this.length) {\n          throw new RangeError(\"Offset plus length of array is out of range\");\n        }\n\n        byteOffset = this.byteOffset + offset * this.BYTES_PER_ELEMENT;\n        byteLength = array.length * this.BYTES_PER_ELEMENT;\n\n        if (array.buffer === this.buffer) {\n          tmp = [];\n          for (i = 0, s = array.byteOffset; i < byteLength; i += 1, s += 1) {\n            tmp[i] = array.buffer._bytes[s];\n          }\n          for (i = 0, d = byteOffset; i < byteLength; i += 1, d += 1) {\n            this.buffer._bytes[d] = tmp[i];\n          }\n        } else {\n          for (i = 0, s = array.byteOffset, d = byteOffset;\n               i < byteLength; i += 1, s += 1, d += 1) {\n            this.buffer._bytes[d] = array.buffer._bytes[s];\n          }\n        }\n      } else if (typeof arguments[0] === 'object' && typeof arguments[0].length !== 'undefined') {\n        // void set(sequence<type> array, optional unsigned long offset);\n        sequence = arguments[0];\n        len = ECMAScript.ToUint32(sequence.length);\n        offset = ECMAScript.ToUint32(arguments[1]);\n\n        if (offset + len > this.length) {\n          throw new RangeError(\"Offset plus length of array is out of range\");\n        }\n\n        for (i = 0; i < len; i += 1) {\n          s = sequence[i];\n          this._setter(offset + i, Number(s));\n        }\n      } else {\n        throw new TypeError(\"Unexpected argument type(s)\");\n      }\n    };\n\n    // TypedArray subarray(long begin, optional long end);\n    ctor.prototype.subarray = function(start, end) {\n      function clamp(v, min, max) { return v < min ? min : v > max ? max : v; }\n\n      start = ECMAScript.ToInt32(start);\n      end = ECMAScript.ToInt32(end);\n\n      if (arguments.length < 1) { start = 0; }\n      if (arguments.length < 2) { end = this.length; }\n\n      if (start < 0) { start = this.length + start; }\n      if (end < 0) { end = this.length + end; }\n\n      start = clamp(start, 0, this.length);\n      end = clamp(end, 0, this.length);\n\n      var len = end - start;\n      if (len < 0) {\n        len = 0;\n      }\n\n      return new this.constructor(\n        this.buffer, this.byteOffset + start * this.BYTES_PER_ELEMENT, len);\n    };\n\n    return ctor;\n  }\n\n  var Int8Array = makeConstructor(1, packI8, unpackI8);\n  var Uint8Array = makeConstructor(1, packU8, unpackU8);\n  var Uint8ClampedArray = makeConstructor(1, packU8Clamped, unpackU8);\n  var Int16Array = makeConstructor(2, packI16, unpackI16);\n  var Uint16Array = makeConstructor(2, packU16, unpackU16);\n  var Int32Array = makeConstructor(4, packI32, unpackI32);\n  var Uint32Array = makeConstructor(4, packU32, unpackU32);\n  var Float32Array = makeConstructor(4, packF32, unpackF32);\n  var Float64Array = makeConstructor(8, packF64, unpackF64);\n\n  exports.Int8Array = exports.Int8Array || Int8Array;\n  exports.Uint8Array = exports.Uint8Array || Uint8Array;\n  exports.Uint8ClampedArray = exports.Uint8ClampedArray || Uint8ClampedArray;\n  exports.Int16Array = exports.Int16Array || Int16Array;\n  exports.Uint16Array = exports.Uint16Array || Uint16Array;\n  exports.Int32Array = exports.Int32Array || Int32Array;\n  exports.Uint32Array = exports.Uint32Array || Uint32Array;\n  exports.Float32Array = exports.Float32Array || Float32Array;\n  exports.Float64Array = exports.Float64Array || Float64Array;\n}());\n\n//\n// 6 The DataView View Type\n//\n\n(function() {\n  function r(array, index) {\n    return ECMAScript.IsCallable(array.get) ? array.get(index) : array[index];\n  }\n\n  var IS_BIG_ENDIAN = (function() {\n    var u16array = new(exports.Uint16Array)([0x1234]),\n        u8array = new(exports.Uint8Array)(u16array.buffer);\n    return r(u8array, 0) === 0x12;\n  }());\n\n  // Constructor(ArrayBuffer buffer,\n  //             optional unsigned long byteOffset,\n  //             optional unsigned long byteLength)\n  /** @constructor */\n  var DataView = function DataView(buffer, byteOffset, byteLength) {\n    if (arguments.length === 0) {\n      buffer = new exports.ArrayBuffer(0);\n    } else if (!(buffer instanceof exports.ArrayBuffer || ECMAScript.Class(buffer) === 'ArrayBuffer')) {\n      throw new TypeError(\"TypeError\");\n    }\n\n    this.buffer = buffer || new exports.ArrayBuffer(0);\n\n    this.byteOffset = ECMAScript.ToUint32(byteOffset);\n    if (this.byteOffset > this.buffer.byteLength) {\n      throw new RangeError(\"byteOffset out of range\");\n    }\n\n    if (arguments.length < 3) {\n      this.byteLength = this.buffer.byteLength - this.byteOffset;\n    } else {\n      this.byteLength = ECMAScript.ToUint32(byteLength);\n    }\n\n    if ((this.byteOffset + this.byteLength) > this.buffer.byteLength) {\n      throw new RangeError(\"byteOffset and length reference an area beyond the end of the buffer\");\n    }\n\n    configureProperties(this);\n  };\n\n  function makeGetter(arrayType) {\n    return function(byteOffset, littleEndian) {\n\n      byteOffset = ECMAScript.ToUint32(byteOffset);\n\n      if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) {\n        throw new RangeError(\"Array index out of range\");\n      }\n      byteOffset += this.byteOffset;\n\n      var uint8Array = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT),\n          bytes = [], i;\n      for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) {\n        bytes.push(r(uint8Array, i));\n      }\n\n      if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) {\n        bytes.reverse();\n      }\n\n      return r(new arrayType(new exports.Uint8Array(bytes).buffer), 0);\n    };\n  }\n\n  DataView.prototype.getUint8 = makeGetter(exports.Uint8Array);\n  DataView.prototype.getInt8 = makeGetter(exports.Int8Array);\n  DataView.prototype.getUint16 = makeGetter(exports.Uint16Array);\n  DataView.prototype.getInt16 = makeGetter(exports.Int16Array);\n  DataView.prototype.getUint32 = makeGetter(exports.Uint32Array);\n  DataView.prototype.getInt32 = makeGetter(exports.Int32Array);\n  DataView.prototype.getFloat32 = makeGetter(exports.Float32Array);\n  DataView.prototype.getFloat64 = makeGetter(exports.Float64Array);\n\n  function makeSetter(arrayType) {\n    return function(byteOffset, value, littleEndian) {\n\n      byteOffset = ECMAScript.ToUint32(byteOffset);\n      if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) {\n        throw new RangeError(\"Array index out of range\");\n      }\n\n      // Get bytes\n      var typeArray = new arrayType([value]),\n          byteArray = new exports.Uint8Array(typeArray.buffer),\n          bytes = [], i, byteView;\n\n      for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) {\n        bytes.push(r(byteArray, i));\n      }\n\n      // Flip if necessary\n      if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) {\n        bytes.reverse();\n      }\n\n      // Write them\n      byteView = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT);\n      byteView.set(bytes);\n    };\n  }\n\n  DataView.prototype.setUint8 = makeSetter(exports.Uint8Array);\n  DataView.prototype.setInt8 = makeSetter(exports.Int8Array);\n  DataView.prototype.setUint16 = makeSetter(exports.Uint16Array);\n  DataView.prototype.setInt16 = makeSetter(exports.Int16Array);\n  DataView.prototype.setUint32 = makeSetter(exports.Uint32Array);\n  DataView.prototype.setInt32 = makeSetter(exports.Int32Array);\n  DataView.prototype.setFloat32 = makeSetter(exports.Float32Array);\n  DataView.prototype.setFloat64 = makeSetter(exports.Float64Array);\n\n  exports.DataView = exports.DataView || DataView;\n\n}());\n","var Writable = require('readable-stream').Writable\nvar inherits = require('inherits')\nvar bufferFrom = require('buffer-from')\n\nif (typeof Uint8Array === 'undefined') {\n  var U8 = require('typedarray').Uint8Array\n} else {\n  var U8 = Uint8Array\n}\n\nfunction ConcatStream(opts, cb) {\n  if (!(this instanceof ConcatStream)) return new ConcatStream(opts, cb)\n\n  if (typeof opts === 'function') {\n    cb = opts\n    opts = {}\n  }\n  if (!opts) opts = {}\n\n  var encoding = opts.encoding\n  var shouldInferEncoding = false\n\n  if (!encoding) {\n    shouldInferEncoding = true\n  } else {\n    encoding =  String(encoding).toLowerCase()\n    if (encoding === 'u8' || encoding === 'uint8') {\n      encoding = 'uint8array'\n    }\n  }\n\n  Writable.call(this, { objectMode: true })\n\n  this.encoding = encoding\n  this.shouldInferEncoding = shouldInferEncoding\n\n  if (cb) this.on('finish', function () { cb(this.getBody()) })\n  this.body = []\n}\n\nmodule.exports = ConcatStream\ninherits(ConcatStream, Writable)\n\nConcatStream.prototype._write = function(chunk, enc, next) {\n  this.body.push(chunk)\n  next()\n}\n\nConcatStream.prototype.inferEncoding = function (buff) {\n  var firstBuffer = buff === undefined ? this.body[0] : buff;\n  if (Buffer.isBuffer(firstBuffer)) return 'buffer'\n  if (typeof Uint8Array !== 'undefined' && firstBuffer instanceof Uint8Array) return 'uint8array'\n  if (Array.isArray(firstBuffer)) return 'array'\n  if (typeof firstBuffer === 'string') return 'string'\n  if (Object.prototype.toString.call(firstBuffer) === \"[object Object]\") return 'object'\n  return 'buffer'\n}\n\nConcatStream.prototype.getBody = function () {\n  if (!this.encoding && this.body.length === 0) return []\n  if (this.shouldInferEncoding) this.encoding = this.inferEncoding()\n  if (this.encoding === 'array') return arrayConcat(this.body)\n  if (this.encoding === 'string') return stringConcat(this.body)\n  if (this.encoding === 'buffer') return bufferConcat(this.body)\n  if (this.encoding === 'uint8array') return u8Concat(this.body)\n  return this.body\n}\n\nvar isArray = Array.isArray || function (arr) {\n  return Object.prototype.toString.call(arr) == '[object Array]'\n}\n\nfunction isArrayish (arr) {\n  return /Array\\]$/.test(Object.prototype.toString.call(arr))\n}\n\nfunction isBufferish (p) {\n  return typeof p === 'string' || isArrayish(p) || (p && typeof p.subarray === 'function')\n}\n\nfunction stringConcat (parts) {\n  var strings = []\n  var needsToString = false\n  for (var i = 0; i < parts.length; i++) {\n    var p = parts[i]\n    if (typeof p === 'string') {\n      strings.push(p)\n    } else if (Buffer.isBuffer(p)) {\n      strings.push(p)\n    } else if (isBufferish(p)) {\n      strings.push(bufferFrom(p))\n    } else {\n      strings.push(bufferFrom(String(p)))\n    }\n  }\n  if (Buffer.isBuffer(parts[0])) {\n    strings = Buffer.concat(strings)\n    strings = strings.toString('utf8')\n  } else {\n    strings = strings.join('')\n  }\n  return strings\n}\n\nfunction bufferConcat (parts) {\n  var bufs = []\n  for (var i = 0; i < parts.length; i++) {\n    var p = parts[i]\n    if (Buffer.isBuffer(p)) {\n      bufs.push(p)\n    } else if (isBufferish(p)) {\n      bufs.push(bufferFrom(p))\n    } else {\n      bufs.push(bufferFrom(String(p)))\n    }\n  }\n  return Buffer.concat(bufs)\n}\n\nfunction arrayConcat (parts) {\n  var res = []\n  for (var i = 0; i < parts.length; i++) {\n    res.push.apply(res, parts[i])\n  }\n  return res\n}\n\nfunction u8Concat (parts) {\n  var len = 0\n  for (var i = 0; i < parts.length; i++) {\n    if (typeof parts[i] === 'string') {\n      parts[i] = bufferFrom(parts[i])\n    }\n    len += parts[i].length\n  }\n  var u8 = new U8(len)\n  for (var i = 0, offset = 0; i < parts.length; i++) {\n    var part = parts[i]\n    for (var j = 0; j < part.length; j++) {\n      u8[offset++] = part[j]\n    }\n  }\n  return u8\n}\n","var concat = require('concat-stream')\n\nfunction MemoryStorage (opts) {}\n\nMemoryStorage.prototype._handleFile = function _handleFile (req, file, cb) {\n  file.stream.pipe(concat({ encoding: 'buffer' }, function (data) {\n    cb(null, {\n      buffer: data,\n      size: data.length\n    })\n  }))\n}\n\nMemoryStorage.prototype._removeFile = function _removeFile (req, file, cb) {\n  delete file.buffer\n  cb(null)\n}\n\nmodule.exports = function (opts) {\n  return new MemoryStorage(opts)\n}\n","var makeMiddleware = require('./lib/make-middleware')\n\nvar diskStorage = require('./storage/disk')\nvar memoryStorage = require('./storage/memory')\nvar MulterError = require('./lib/multer-error')\n\nfunction allowAll (req, file, cb) {\n  cb(null, true)\n}\n\nfunction Multer (options) {\n  if (options.storage) {\n    this.storage = options.storage\n  } else if (options.dest) {\n    this.storage = diskStorage({ destination: options.dest })\n  } else {\n    this.storage = memoryStorage()\n  }\n\n  this.limits = options.limits\n  this.preservePath = options.preservePath\n  this.fileFilter = options.fileFilter || allowAll\n}\n\nMulter.prototype._makeMiddleware = function (fields, fileStrategy) {\n  function setup () {\n    var fileFilter = this.fileFilter\n    var filesLeft = Object.create(null)\n\n    fields.forEach(function (field) {\n      if (typeof field.maxCount === 'number') {\n        filesLeft[field.name] = field.maxCount\n      } else {\n        filesLeft[field.name] = Infinity\n      }\n    })\n\n    function wrappedFileFilter (req, file, cb) {\n      if ((filesLeft[file.fieldname] || 0) <= 0) {\n        return cb(new MulterError('LIMIT_UNEXPECTED_FILE', file.fieldname))\n      }\n\n      filesLeft[file.fieldname] -= 1\n      fileFilter(req, file, cb)\n    }\n\n    return {\n      limits: this.limits,\n      preservePath: this.preservePath,\n      storage: this.storage,\n      fileFilter: wrappedFileFilter,\n      fileStrategy: fileStrategy\n    }\n  }\n\n  return makeMiddleware(setup.bind(this))\n}\n\nMulter.prototype.single = function (name) {\n  return this._makeMiddleware([{ name: name, maxCount: 1 }], 'VALUE')\n}\n\nMulter.prototype.array = function (name, maxCount) {\n  return this._makeMiddleware([{ name: name, maxCount: maxCount }], 'ARRAY')\n}\n\nMulter.prototype.fields = function (fields) {\n  return this._makeMiddleware(fields, 'OBJECT')\n}\n\nMulter.prototype.none = function () {\n  return this._makeMiddleware([], 'NONE')\n}\n\nMulter.prototype.any = function () {\n  function setup () {\n    return {\n      limits: this.limits,\n      preservePath: this.preservePath,\n      storage: this.storage,\n      fileFilter: this.fileFilter,\n      fileStrategy: 'ARRAY'\n    }\n  }\n\n  return makeMiddleware(setup.bind(this))\n}\n\nfunction multer (options) {\n  if (options === undefined) {\n    return new Multer({})\n  }\n\n  if (typeof options === 'object' && options !== null) {\n    return new Multer(options)\n  }\n\n  throw new TypeError('Expected object for argument options')\n}\n\nmodule.exports = multer\nmodule.exports.diskStorage = diskStorage\nmodule.exports.memoryStorage = memoryStorage\nmodule.exports.MulterError = MulterError\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MULTER_MODULE_OPTIONS = void 0;\nexports.MULTER_MODULE_OPTIONS = 'MULTER_MODULE_OPTIONS';\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.busboyExceptions = exports.multerExceptions = void 0;\nexports.multerExceptions = {\n    // from https://github.com/expressjs/multer/blob/master/lib/multer-error.js\n    LIMIT_PART_COUNT: 'Too many parts',\n    LIMIT_FILE_SIZE: 'File too large',\n    LIMIT_FILE_COUNT: 'Too many files',\n    LIMIT_FIELD_KEY: 'Field name too long',\n    LIMIT_FIELD_VALUE: 'Field value too long',\n    LIMIT_FIELD_COUNT: 'Too many fields',\n    LIMIT_UNEXPECTED_FILE: 'Unexpected field',\n    MISSING_FIELD_NAME: 'Field name missing',\n};\nexports.busboyExceptions = {\n    // from https://github.com/mscdex/busboy/blob/master/lib/types/multipart.js\n    MULTIPART_BOUNDARY_NOT_FOUND: 'Multipart: Boundary not found',\n    MULTIPART_MALFORMED_PART_HEADER: 'Malformed part header',\n    MULTIPART_UNEXPECTED_END_OF_FORM: 'Unexpected end of form',\n    MULTIPART_UNEXPECTED_END_OF_FILE: 'Unexpected end of file',\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformException = transformException;\nconst common_1 = require(\"@nestjs/common\");\nconst multer_constants_1 = require(\"./multer.constants\");\n// Multer may add in a 'field' property to the error\n// https://github.com/expressjs/multer/blob/aa42bea6ac7d0cb8fcb279b15a7278cda805dc63/lib/multer-error.js#L19\nfunction transformException(error) {\n    if (!error || error instanceof common_1.HttpException) {\n        return error;\n    }\n    switch (error.message) {\n        case multer_constants_1.multerExceptions.LIMIT_FILE_SIZE:\n            return new common_1.PayloadTooLargeException(error.message);\n        case multer_constants_1.multerExceptions.LIMIT_FILE_COUNT:\n        case multer_constants_1.multerExceptions.LIMIT_FIELD_KEY:\n        case multer_constants_1.multerExceptions.LIMIT_FIELD_VALUE:\n        case multer_constants_1.multerExceptions.LIMIT_FIELD_COUNT:\n        case multer_constants_1.multerExceptions.LIMIT_UNEXPECTED_FILE:\n        case multer_constants_1.multerExceptions.LIMIT_PART_COUNT:\n        case multer_constants_1.multerExceptions.MISSING_FIELD_NAME:\n            if (error.field) {\n                return new common_1.BadRequestException(`${error.message} - ${error.field}`);\n            }\n            return new common_1.BadRequestException(error.message);\n        case multer_constants_1.busboyExceptions.MULTIPART_BOUNDARY_NOT_FOUND:\n            return new common_1.BadRequestException(error.message);\n        case multer_constants_1.busboyExceptions.MULTIPART_MALFORMED_PART_HEADER:\n        case multer_constants_1.busboyExceptions.MULTIPART_UNEXPECTED_END_OF_FORM:\n        case multer_constants_1.busboyExceptions.MULTIPART_UNEXPECTED_END_OF_FILE:\n            return new common_1.BadRequestException(`Multipart: ${error.message}`);\n    }\n    return error;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AnyFilesInterceptor = AnyFilesInterceptor;\nconst tslib_1 = require(\"tslib\");\nconst common_1 = require(\"@nestjs/common\");\nconst multer = require(\"multer\");\nconst files_constants_1 = require(\"../files.constants\");\nconst multer_utils_1 = require(\"../multer/multer.utils\");\n/**\n * @param localOptions\n *\n * @publicApi\n */\nfunction AnyFilesInterceptor(localOptions) {\n    let MixinInterceptor = class MixinInterceptor {\n        constructor(options = {}) {\n            this.multer = multer({\n                ...options,\n                ...localOptions,\n            });\n        }\n        async intercept(context, next) {\n            const ctx = context.switchToHttp();\n            await new Promise((resolve, reject) => this.multer.any()(ctx.getRequest(), ctx.getResponse(), (err) => {\n                if (err) {\n                    const error = (0, multer_utils_1.transformException)(err);\n                    return reject(error);\n                }\n                resolve();\n            }));\n            return next.handle();\n        }\n    };\n    MixinInterceptor = tslib_1.__decorate([\n        tslib_1.__param(0, (0, common_1.Optional)()),\n        tslib_1.__param(0, (0, common_1.Inject)(files_constants_1.MULTER_MODULE_OPTIONS)),\n        tslib_1.__metadata(\"design:paramtypes\", [Object])\n    ], MixinInterceptor);\n    const Interceptor = (0, common_1.mixin)(MixinInterceptor);\n    return Interceptor;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FileFieldsInterceptor = FileFieldsInterceptor;\nconst tslib_1 = require(\"tslib\");\nconst common_1 = require(\"@nestjs/common\");\nconst multer = require(\"multer\");\nconst files_constants_1 = require(\"../files.constants\");\nconst multer_utils_1 = require(\"../multer/multer.utils\");\n/**\n * @param uploadFields\n * @param localOptions\n * @publicApi\n */\nfunction FileFieldsInterceptor(uploadFields, localOptions) {\n    let MixinInterceptor = class MixinInterceptor {\n        constructor(options = {}) {\n            this.multer = multer({\n                ...options,\n                ...localOptions,\n            });\n        }\n        async intercept(context, next) {\n            const ctx = context.switchToHttp();\n            await new Promise((resolve, reject) => this.multer.fields(uploadFields)(ctx.getRequest(), ctx.getResponse(), (err) => {\n                if (err) {\n                    const error = (0, multer_utils_1.transformException)(err);\n                    return reject(error);\n                }\n                resolve();\n            }));\n            return next.handle();\n        }\n    };\n    MixinInterceptor = tslib_1.__decorate([\n        tslib_1.__param(0, (0, common_1.Optional)()),\n        tslib_1.__param(0, (0, common_1.Inject)(files_constants_1.MULTER_MODULE_OPTIONS)),\n        tslib_1.__metadata(\"design:paramtypes\", [Object])\n    ], MixinInterceptor);\n    const Interceptor = (0, common_1.mixin)(MixinInterceptor);\n    return Interceptor;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FileInterceptor = FileInterceptor;\nconst tslib_1 = require(\"tslib\");\nconst common_1 = require(\"@nestjs/common\");\nconst multer = require(\"multer\");\nconst files_constants_1 = require(\"../files.constants\");\nconst multer_utils_1 = require(\"../multer/multer.utils\");\n/**\n * @param fieldName\n * @param localOptions\n *\n * @publicApi\n */\nfunction FileInterceptor(fieldName, localOptions) {\n    let MixinInterceptor = class MixinInterceptor {\n        constructor(options = {}) {\n            this.multer = multer({\n                ...options,\n                ...localOptions,\n            });\n        }\n        async intercept(context, next) {\n            const ctx = context.switchToHttp();\n            await new Promise((resolve, reject) => this.multer.single(fieldName)(ctx.getRequest(), ctx.getResponse(), (err) => {\n                if (err) {\n                    const error = (0, multer_utils_1.transformException)(err);\n                    return reject(error);\n                }\n                resolve();\n            }));\n            return next.handle();\n        }\n    };\n    MixinInterceptor = tslib_1.__decorate([\n        tslib_1.__param(0, (0, common_1.Optional)()),\n        tslib_1.__param(0, (0, common_1.Inject)(files_constants_1.MULTER_MODULE_OPTIONS)),\n        tslib_1.__metadata(\"design:paramtypes\", [Object])\n    ], MixinInterceptor);\n    const Interceptor = (0, common_1.mixin)(MixinInterceptor);\n    return Interceptor;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FilesInterceptor = FilesInterceptor;\nconst tslib_1 = require(\"tslib\");\nconst common_1 = require(\"@nestjs/common\");\nconst multer = require(\"multer\");\nconst files_constants_1 = require(\"../files.constants\");\nconst multer_utils_1 = require(\"../multer/multer.utils\");\n/**\n *\n * @param fieldName\n * @param maxCount\n * @param localOptions\n *\n * @publicApi\n */\nfunction FilesInterceptor(fieldName, maxCount, localOptions) {\n    let MixinInterceptor = class MixinInterceptor {\n        constructor(options = {}) {\n            this.multer = multer({\n                ...options,\n                ...localOptions,\n            });\n        }\n        async intercept(context, next) {\n            const ctx = context.switchToHttp();\n            await new Promise((resolve, reject) => this.multer.array(fieldName, maxCount)(ctx.getRequest(), ctx.getResponse(), (err) => {\n                if (err) {\n                    const error = (0, multer_utils_1.transformException)(err);\n                    return reject(error);\n                }\n                resolve();\n            }));\n            return next.handle();\n        }\n    };\n    MixinInterceptor = tslib_1.__decorate([\n        tslib_1.__param(0, (0, common_1.Optional)()),\n        tslib_1.__param(0, (0, common_1.Inject)(files_constants_1.MULTER_MODULE_OPTIONS)),\n        tslib_1.__metadata(\"design:paramtypes\", [Object])\n    ], MixinInterceptor);\n    const Interceptor = (0, common_1.mixin)(MixinInterceptor);\n    return Interceptor;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoFilesInterceptor = NoFilesInterceptor;\nconst tslib_1 = require(\"tslib\");\nconst common_1 = require(\"@nestjs/common\");\nconst multer = require(\"multer\");\nconst files_constants_1 = require(\"../files.constants\");\nconst multer_utils_1 = require(\"../multer/multer.utils\");\n/**\n *\n * @param localOptions\n * @publicApi\n */\nfunction NoFilesInterceptor(localOptions) {\n    let MixinInterceptor = class MixinInterceptor {\n        constructor(options = {}) {\n            this.multer = multer({\n                ...options,\n                ...localOptions,\n            });\n        }\n        async intercept(context, next) {\n            const ctx = context.switchToHttp();\n            await new Promise((resolve, reject) => this.multer.none()(ctx.getRequest(), ctx.getResponse(), (err) => {\n                if (err) {\n                    const error = (0, multer_utils_1.transformException)(err);\n                    return reject(error);\n                }\n                resolve();\n            }));\n            return next.handle();\n        }\n    };\n    MixinInterceptor = tslib_1.__decorate([\n        tslib_1.__param(0, (0, common_1.Optional)()),\n        tslib_1.__param(0, (0, common_1.Inject)(files_constants_1.MULTER_MODULE_OPTIONS)),\n        tslib_1.__metadata(\"design:paramtypes\", [Object])\n    ], MixinInterceptor);\n    const Interceptor = (0, common_1.mixin)(MixinInterceptor);\n    return Interceptor;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./any-files.interceptor\"), exports);\ntslib_1.__exportStar(require(\"./file-fields.interceptor\"), exports);\ntslib_1.__exportStar(require(\"./file.interceptor\"), exports);\ntslib_1.__exportStar(require(\"./files.interceptor\"), exports);\ntslib_1.__exportStar(require(\"./no-files.interceptor\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./files-upload-module.interface\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MULTER_MODULE_ID = void 0;\nexports.MULTER_MODULE_ID = 'MULTER_MODULE_ID';\n","\"use strict\";\nvar MulterModule_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MulterModule = void 0;\nconst tslib_1 = require(\"tslib\");\nconst common_1 = require(\"@nestjs/common\");\nconst random_string_generator_util_1 = require(\"@nestjs/common/utils/random-string-generator.util\");\nconst files_constants_1 = require(\"./files.constants\");\nconst multer_constants_1 = require(\"./multer.constants\");\n/**\n * @publicApi\n */\nlet MulterModule = MulterModule_1 = class MulterModule {\n    static register(options = {}) {\n        return {\n            module: MulterModule_1,\n            providers: [\n                { provide: files_constants_1.MULTER_MODULE_OPTIONS, useFactory: () => options },\n                {\n                    provide: multer_constants_1.MULTER_MODULE_ID,\n                    useValue: (0, random_string_generator_util_1.randomStringGenerator)(),\n                },\n            ],\n            exports: [files_constants_1.MULTER_MODULE_OPTIONS],\n        };\n    }\n    static registerAsync(options) {\n        return {\n            module: MulterModule_1,\n            imports: options.imports,\n            providers: [\n                ...this.createAsyncProviders(options),\n                {\n                    provide: multer_constants_1.MULTER_MODULE_ID,\n                    useValue: (0, random_string_generator_util_1.randomStringGenerator)(),\n                },\n            ],\n            exports: [files_constants_1.MULTER_MODULE_OPTIONS],\n        };\n    }\n    static createAsyncProviders(options) {\n        if (options.useExisting || options.useFactory) {\n            return [this.createAsyncOptionsProvider(options)];\n        }\n        return [\n            this.createAsyncOptionsProvider(options),\n            {\n                provide: options.useClass,\n                useClass: options.useClass,\n            },\n        ];\n    }\n    static createAsyncOptionsProvider(options) {\n        if (options.useFactory) {\n            return {\n                provide: files_constants_1.MULTER_MODULE_OPTIONS,\n                useFactory: options.useFactory,\n                inject: options.inject || [],\n            };\n        }\n        return {\n            provide: files_constants_1.MULTER_MODULE_OPTIONS,\n            useFactory: async (optionsFactory) => optionsFactory.createMulterOptions(),\n            inject: [options.useExisting || options.useClass],\n        };\n    }\n};\nexports.MulterModule = MulterModule;\nexports.MulterModule = MulterModule = MulterModule_1 = tslib_1.__decorate([\n    (0, common_1.Module)({})\n], MulterModule);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./interceptors\"), exports);\ntslib_1.__exportStar(require(\"./interfaces\"), exports);\ntslib_1.__exportStar(require(\"./multer.module\"), exports);\n","\"use strict\";\n/*\n * Nest @platform-express\n * Copyright(c) 2017 - 2025 Kamil Mysliwiec\n * https://nestjs.com\n * MIT Licensed\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./adapters\"), exports);\ntslib_1.__exportStar(require(\"./interfaces\"), exports);\ntslib_1.__exportStar(require(\"./multer\"), exports);\n","import { TimestampProvider } from '../types';\n\ninterface PerformanceTimestampProvider extends TimestampProvider {\n  delegate: TimestampProvider | undefined;\n}\n\nexport const performanceTimestampProvider: PerformanceTimestampProvider = {\n  now() {\n    // Use the variable rather than `this` so that the function can be called\n    // without being bound to the provider.\n    return (performanceTimestampProvider.delegate || performance).now();\n  },\n  delegate: undefined,\n};\n","import { Subscription } from '../Subscription';\n\ninterface AnimationFrameProvider {\n  schedule(callback: FrameRequestCallback): Subscription;\n  requestAnimationFrame: typeof requestAnimationFrame;\n  cancelAnimationFrame: typeof cancelAnimationFrame;\n  delegate:\n    | {\n        requestAnimationFrame: typeof requestAnimationFrame;\n        cancelAnimationFrame: typeof cancelAnimationFrame;\n      }\n    | undefined;\n}\n\nexport const animationFrameProvider: AnimationFrameProvider = {\n  // When accessing the delegate, use the variable rather than `this` so that\n  // the functions can be called without being bound to the provider.\n  schedule(callback) {\n    let request = requestAnimationFrame;\n    let cancel: typeof cancelAnimationFrame | undefined = cancelAnimationFrame;\n    const { delegate } = animationFrameProvider;\n    if (delegate) {\n      request = delegate.requestAnimationFrame;\n      cancel = delegate.cancelAnimationFrame;\n    }\n    const handle = request((timestamp) => {\n      // Clear the cancel function. The request has been fulfilled, so\n      // attempting to cancel the request upon unsubscription would be\n      // pointless.\n      cancel = undefined;\n      callback(timestamp);\n    });\n    return new Subscription(() => cancel?.(handle));\n  },\n  requestAnimationFrame(...args) {\n    const { delegate } = animationFrameProvider;\n    return (delegate?.requestAnimationFrame || requestAnimationFrame)(...args);\n  },\n  cancelAnimationFrame(...args) {\n    const { delegate } = animationFrameProvider;\n    return (delegate?.cancelAnimationFrame || cancelAnimationFrame)(...args);\n  },\n  delegate: undefined,\n};\n","import { Observable } from '../../Observable';\nimport { TimestampProvider } from '../../types';\nimport { performanceTimestampProvider } from '../../scheduler/performanceTimestampProvider';\nimport { animationFrameProvider } from '../../scheduler/animationFrameProvider';\n\n/**\n * An observable of animation frames\n *\n * Emits the amount of time elapsed since subscription and the timestamp on each animation frame.\n * Defaults to milliseconds provided to the requestAnimationFrame's callback. Does not end on its own.\n *\n * Every subscription will start a separate animation loop. Since animation frames are always scheduled\n * by the browser to occur directly before a repaint, scheduling more than one animation frame synchronously\n * should not be much different or have more overhead than looping over an array of events during\n * a single animation frame. However, if for some reason the developer would like to ensure the\n * execution of animation-related handlers are all executed during the same task by the engine,\n * the `share` operator can be used.\n *\n * This is useful for setting up animations with RxJS.\n *\n * ## Examples\n *\n * Tweening a div to move it on the screen\n *\n * ```ts\n * import { animationFrames, map, takeWhile, endWith } from 'rxjs';\n *\n * function tween(start: number, end: number, duration: number) {\n *   const diff = end - start;\n *   return animationFrames().pipe(\n *     // Figure out what percentage of time has passed\n *     map(({ elapsed }) => elapsed / duration),\n *     // Take the vector while less than 100%\n *     takeWhile(v => v < 1),\n *     // Finish with 100%\n *     endWith(1),\n *     // Calculate the distance traveled between start and end\n *     map(v => v * diff + start)\n *   );\n * }\n *\n * // Setup a div for us to move around\n * const div = document.createElement('div');\n * document.body.appendChild(div);\n * div.style.position = 'absolute';\n * div.style.width = '40px';\n * div.style.height = '40px';\n * div.style.backgroundColor = 'lime';\n * div.style.transform = 'translate3d(10px, 0, 0)';\n *\n * tween(10, 200, 4000).subscribe(x => {\n *   div.style.transform = `translate3d(${ x }px, 0, 0)`;\n * });\n * ```\n *\n * Providing a custom timestamp provider\n *\n * ```ts\n * import { animationFrames, TimestampProvider } from 'rxjs';\n *\n * // A custom timestamp provider\n * let now = 0;\n * const customTSProvider: TimestampProvider = {\n *   now() { return now++; }\n * };\n *\n * const source$ = animationFrames(customTSProvider);\n *\n * // Log increasing numbers 0...1...2... on every animation frame.\n * source$.subscribe(({ elapsed }) => console.log(elapsed));\n * ```\n *\n * @param timestampProvider An object with a `now` method that provides a numeric timestamp\n */\nexport function animationFrames(timestampProvider?: TimestampProvider) {\n  return timestampProvider ? animationFramesFactory(timestampProvider) : DEFAULT_ANIMATION_FRAMES;\n}\n\n/**\n * Does the work of creating the observable for `animationFrames`.\n * @param timestampProvider The timestamp provider to use to create the observable\n */\nfunction animationFramesFactory(timestampProvider?: TimestampProvider) {\n  return new Observable<{ timestamp: number; elapsed: number }>((subscriber) => {\n    // If no timestamp provider is specified, use performance.now() - as it\n    // will return timestamps 'compatible' with those passed to the run\n    // callback and won't be affected by NTP adjustments, etc.\n    const provider = timestampProvider || performanceTimestampProvider;\n\n    // Capture the start time upon subscription, as the run callback can remain\n    // queued for a considerable period of time and the elapsed time should\n    // represent the time elapsed since subscription - not the time since the\n    // first rendered animation frame.\n    const start = provider.now();\n\n    let id = 0;\n    const run = () => {\n      if (!subscriber.closed) {\n        id = animationFrameProvider.requestAnimationFrame((timestamp: DOMHighResTimeStamp | number) => {\n          id = 0;\n          // Use the provider's timestamp to calculate the elapsed time. Note that\n          // this means - if the caller hasn't passed a provider - that\n          // performance.now() will be used instead of the timestamp that was\n          // passed to the run callback. The reason for this is that the timestamp\n          // passed to the callback can be earlier than the start time, as it\n          // represents the time at which the browser decided it would render any\n          // queued frames - and that time can be earlier the captured start time.\n          const now = provider.now();\n          subscriber.next({\n            timestamp: timestampProvider ? now : timestamp,\n            elapsed: now - start,\n          });\n          run();\n        });\n      }\n    };\n\n    run();\n\n    return () => {\n      if (id) {\n        animationFrameProvider.cancelAnimationFrame(id);\n      }\n    };\n  });\n}\n\n/**\n * In the common case, where the timestamp provided by the rAF API is used,\n * we use this shared observable to reduce overhead.\n */\nconst DEFAULT_ANIMATION_FRAMES = animationFramesFactory();\n","let nextHandle = 1;\n// The promise needs to be created lazily otherwise it won't be patched by Zones\nlet resolved: Promise<any>;\nconst activeHandles: { [key: number]: any } = {};\n\n/**\n * Finds the handle in the list of active handles, and removes it.\n * Returns `true` if found, `false` otherwise. Used both to clear\n * Immediate scheduled tasks, and to identify if a task should be scheduled.\n */\nfunction findAndClearHandle(handle: number): boolean {\n  if (handle in activeHandles) {\n    delete activeHandles[handle];\n    return true;\n  }\n  return false;\n}\n\n/**\n * Helper functions to schedule and unschedule microtasks.\n */\nexport const Immediate = {\n  setImmediate(cb: () => void): number {\n    const handle = nextHandle++;\n    activeHandles[handle] = true;\n    if (!resolved) {\n      resolved = Promise.resolve();\n    }\n    resolved.then(() => findAndClearHandle(handle) && cb());\n    return handle;\n  },\n\n  clearImmediate(handle: number): void {\n    findAndClearHandle(handle);\n  },\n};\n\n/**\n * Used for internal testing purposes only. Do not export from library.\n */\nexport const TestTools = {\n  pending() {\n    return Object.keys(activeHandles).length;\n  }\n};\n","import { Immediate } from '../util/Immediate';\nimport type { TimerHandle } from './timerHandle';\nconst { setImmediate, clearImmediate } = Immediate;\n\ntype SetImmediateFunction = (handler: () => void, ...args: any[]) => TimerHandle;\ntype ClearImmediateFunction = (handle: TimerHandle) => void;\n\ninterface ImmediateProvider {\n  setImmediate: SetImmediateFunction;\n  clearImmediate: ClearImmediateFunction;\n  delegate:\n    | {\n        setImmediate: SetImmediateFunction;\n        clearImmediate: ClearImmediateFunction;\n      }\n    | undefined;\n}\n\nexport const immediateProvider: ImmediateProvider = {\n  // When accessing the delegate, use the variable rather than `this` so that\n  // the functions can be called without being bound to the provider.\n  setImmediate(...args) {\n    const { delegate } = immediateProvider;\n    return (delegate?.setImmediate || setImmediate)(...args);\n  },\n  clearImmediate(handle) {\n    const { delegate } = immediateProvider;\n    return (delegate?.clearImmediate || clearImmediate)(handle as any);\n  },\n  delegate: undefined,\n};\n","import { AsyncAction } from './AsyncAction';\nimport { AsapScheduler } from './AsapScheduler';\nimport { SchedulerAction } from '../types';\nimport { immediateProvider } from './immediateProvider';\nimport { TimerHandle } from './timerHandle';\n\nexport class AsapAction<T> extends AsyncAction<T> {\n  constructor(protected scheduler: AsapScheduler, protected work: (this: SchedulerAction<T>, state?: T) => void) {\n    super(scheduler, work);\n  }\n\n  protected requestAsyncId(scheduler: AsapScheduler, id?: TimerHandle, delay: number = 0): TimerHandle {\n    // If delay is greater than 0, request as an async action.\n    if (delay !== null && delay > 0) {\n      return super.requestAsyncId(scheduler, id, delay);\n    }\n    // Push the action to the end of the scheduler queue.\n    scheduler.actions.push(this);\n    // If a microtask has already been scheduled, don't schedule another\n    // one. If a microtask hasn't been scheduled yet, schedule one now. Return\n    // the current scheduled microtask id.\n    return scheduler._scheduled || (scheduler._scheduled = immediateProvider.setImmediate(scheduler.flush.bind(scheduler, undefined)));\n  }\n\n  protected recycleAsyncId(scheduler: AsapScheduler, id?: TimerHandle, delay: number = 0): TimerHandle | undefined {\n    // If delay exists and is greater than 0, or if the delay is null (the\n    // action wasn't rescheduled) but was originally scheduled as an async\n    // action, then recycle as an async action.\n    if (delay != null ? delay > 0 : this.delay > 0) {\n      return super.recycleAsyncId(scheduler, id, delay);\n    }\n    // If the scheduler queue has no remaining actions with the same async id,\n    // cancel the requested microtask and set the scheduled flag to undefined\n    // so the next AsapAction will request its own.\n    const { actions } = scheduler;\n    if (id != null && actions[actions.length - 1]?.id !== id) {\n      immediateProvider.clearImmediate(id);\n      if (scheduler._scheduled === id) {\n        scheduler._scheduled = undefined;\n      }\n    }\n    // Return undefined so the action knows to request a new async id if it's rescheduled.\n    return undefined;\n  }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AsapScheduler extends AsyncScheduler {\n  public flush(action?: AsyncAction<any>): void {\n    this._active = true;\n    // The async id that effects a call to flush is stored in _scheduled.\n    // Before executing an action, it's necessary to check the action's async\n    // id to determine whether it's supposed to be executed in the current\n    // flush.\n    // Previous implementations of this method used a count to determine this,\n    // but that was unsound, as actions that are unsubscribed - i.e. cancelled -\n    // are removed from the actions array and that can shift actions that are\n    // scheduled to be executed in a subsequent flush into positions at which\n    // they are executed within the current flush.\n    const flushId = this._scheduled;\n    this._scheduled = undefined;\n\n    const { actions } = this;\n    let error: any;\n    action = action || actions.shift()!;\n\n    do {\n      if ((error = action.execute(action.state, action.delay))) {\n        break;\n      }\n    } while ((action = actions[0]) && action.id === flushId && actions.shift());\n\n    this._active = false;\n\n    if (error) {\n      while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n        action.unsubscribe();\n      }\n      throw error;\n    }\n  }\n}\n","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\n\n/**\n *\n * Asap Scheduler\n *\n * <span class=\"informal\">Perform task as fast as it can be performed asynchronously</span>\n *\n * `asap` scheduler behaves the same as {@link asyncScheduler} scheduler when you use it to delay task\n * in time. If however you set delay to `0`, `asap` will wait for current synchronously executing\n * code to end and then it will try to execute given task as fast as possible.\n *\n * `asap` scheduler will do its best to minimize time between end of currently executing code\n * and start of scheduled task. This makes it best candidate for performing so called \"deferring\".\n * Traditionally this was achieved by calling `setTimeout(deferredTask, 0)`, but that technique involves\n * some (although minimal) unwanted delay.\n *\n * Note that using `asap` scheduler does not necessarily mean that your task will be first to process\n * after currently executing code. In particular, if some task was also scheduled with `asap` before,\n * that task will execute first. That being said, if you need to schedule task asynchronously, but\n * as soon as possible, `asap` scheduler is your best bet.\n *\n * ## Example\n * Compare async and asap scheduler<\n * ```ts\n * import { asapScheduler, asyncScheduler } from 'rxjs';\n *\n * asyncScheduler.schedule(() => console.log('async')); // scheduling 'async' first...\n * asapScheduler.schedule(() => console.log('asap'));\n *\n * // Logs:\n * // \"asap\"\n * // \"async\"\n * // ... but 'asap' goes first!\n * ```\n */\n\nexport const asapScheduler = new AsapScheduler(AsapAction);\n\n/**\n * @deprecated Renamed to {@link asapScheduler}. Will be removed in v8.\n */\nexport const asap = asapScheduler;\n","import { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { QueueScheduler } from './QueueScheduler';\nimport { SchedulerAction } from '../types';\nimport { TimerHandle } from './timerHandle';\n\nexport class QueueAction<T> extends AsyncAction<T> {\n  constructor(protected scheduler: QueueScheduler, protected work: (this: SchedulerAction<T>, state?: T) => void) {\n    super(scheduler, work);\n  }\n\n  public schedule(state?: T, delay: number = 0): Subscription {\n    if (delay > 0) {\n      return super.schedule(state, delay);\n    }\n    this.delay = delay;\n    this.state = state;\n    this.scheduler.flush(this);\n    return this;\n  }\n\n  public execute(state: T, delay: number): any {\n    return delay > 0 || this.closed ? super.execute(state, delay) : this._execute(state, delay);\n  }\n\n  protected requestAsyncId(scheduler: QueueScheduler, id?: TimerHandle, delay: number = 0): TimerHandle {\n    // If delay exists and is greater than 0, or if the delay is null (the\n    // action wasn't rescheduled) but was originally scheduled as an async\n    // action, then recycle as an async action.\n\n    if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) {\n      return super.requestAsyncId(scheduler, id, delay);\n    }\n\n    // Otherwise flush the scheduler starting with this action.\n    scheduler.flush(this);\n\n    // HACK: In the past, this was returning `void`. However, `void` isn't a valid\n    // `TimerHandle`, and generally the return value here isn't really used. So the\n    // compromise is to return `0` which is both \"falsy\" and a valid `TimerHandle`,\n    // as opposed to refactoring every other instanceo of `requestAsyncId`.\n    return 0;\n  }\n}\n","import { AsyncScheduler } from './AsyncScheduler';\n\nexport class QueueScheduler extends AsyncScheduler {\n}\n","import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\n\n/**\n *\n * Queue Scheduler\n *\n * <span class=\"informal\">Put every next task on a queue, instead of executing it immediately</span>\n *\n * `queue` scheduler, when used with delay, behaves the same as {@link asyncScheduler} scheduler.\n *\n * When used without delay, it schedules given task synchronously - executes it right when\n * it is scheduled. However when called recursively, that is when inside the scheduled task,\n * another task is scheduled with queue scheduler, instead of executing immediately as well,\n * that task will be put on a queue and wait for current one to finish.\n *\n * This means that when you execute task with `queue` scheduler, you are sure it will end\n * before any other task scheduled with that scheduler will start.\n *\n * ## Examples\n * Schedule recursively first, then do something\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(() => {\n *   queueScheduler.schedule(() => console.log('second')); // will not happen now, but will be put on a queue\n *\n *   console.log('first');\n * });\n *\n * // Logs:\n * // \"first\"\n * // \"second\"\n * ```\n *\n * Reschedule itself recursively\n * ```ts\n * import { queueScheduler } from 'rxjs';\n *\n * queueScheduler.schedule(function(state) {\n *   if (state !== 0) {\n *     console.log('before', state);\n *     this.schedule(state - 1); // `this` references currently executing Action,\n *                               // which we reschedule with new state\n *     console.log('after', state);\n *   }\n * }, 0, 3);\n *\n * // In scheduler that runs recursively, you would expect:\n * // \"before\", 3\n * // \"before\", 2\n * // \"before\", 1\n * // \"after\", 1\n * // \"after\", 2\n * // \"after\", 3\n *\n * // But with queue it logs:\n * // \"before\", 3\n * // \"after\", 3\n * // \"before\", 2\n * // \"after\", 2\n * // \"before\", 1\n * // \"after\", 1\n * ```\n */\n\nexport const queueScheduler = new QueueScheduler(QueueAction);\n\n/**\n * @deprecated Renamed to {@link queueScheduler}. Will be removed in v8.\n */\nexport const queue = queueScheduler;\n","import { AsyncAction } from './AsyncAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nimport { SchedulerAction } from '../types';\nimport { animationFrameProvider } from './animationFrameProvider';\nimport { TimerHandle } from './timerHandle';\n\nexport class AnimationFrameAction<T> extends AsyncAction<T> {\n  constructor(protected scheduler: AnimationFrameScheduler, protected work: (this: SchedulerAction<T>, state?: T) => void) {\n    super(scheduler, work);\n  }\n\n  protected requestAsyncId(scheduler: AnimationFrameScheduler, id?: TimerHandle, delay: number = 0): TimerHandle {\n    // If delay is greater than 0, request as an async action.\n    if (delay !== null && delay > 0) {\n      return super.requestAsyncId(scheduler, id, delay);\n    }\n    // Push the action to the end of the scheduler queue.\n    scheduler.actions.push(this);\n    // If an animation frame has already been requested, don't request another\n    // one. If an animation frame hasn't been requested yet, request one. Return\n    // the current animation frame request id.\n    return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(() => scheduler.flush(undefined)));\n  }\n\n  protected recycleAsyncId(scheduler: AnimationFrameScheduler, id?: TimerHandle, delay: number = 0): TimerHandle | undefined {\n    // If delay exists and is greater than 0, or if the delay is null (the\n    // action wasn't rescheduled) but was originally scheduled as an async\n    // action, then recycle as an async action.\n    if (delay != null ? delay > 0 : this.delay > 0) {\n      return super.recycleAsyncId(scheduler, id, delay);\n    }\n    // If the scheduler queue has no remaining actions with the same async id,\n    // cancel the requested animation frame and set the scheduled flag to\n    // undefined so the next AnimationFrameAction will request its own.\n    const { actions } = scheduler;\n    if (id != null && id === scheduler._scheduled && actions[actions.length - 1]?.id !== id) {\n      animationFrameProvider.cancelAnimationFrame(id as number);\n      scheduler._scheduled = undefined;\n    }\n    // Return undefined so the action knows to request a new async id if it's rescheduled.\n    return undefined;\n  }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AnimationFrameScheduler extends AsyncScheduler {\n  public flush(action?: AsyncAction<any>): void {\n    this._active = true;\n    // The async id that effects a call to flush is stored in _scheduled.\n    // Before executing an action, it's necessary to check the action's async\n    // id to determine whether it's supposed to be executed in the current\n    // flush.\n    // Previous implementations of this method used a count to determine this,\n    // but that was unsound, as actions that are unsubscribed - i.e. cancelled -\n    // are removed from the actions array and that can shift actions that are\n    // scheduled to be executed in a subsequent flush into positions at which\n    // they are executed within the current flush.\n    let flushId;\n    if (action) {\n      flushId = action.id;\n    } else {\n      flushId = this._scheduled;\n      this._scheduled = undefined;\n    }\n\n    const { actions } = this;\n    let error: any;\n    action = action || actions.shift()!;\n\n    do {\n      if ((error = action.execute(action.state, action.delay))) {\n        break;\n      }\n    } while ((action = actions[0]) && action.id === flushId && actions.shift());\n\n    this._active = false;\n\n    if (error) {\n      while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n        action.unsubscribe();\n      }\n      throw error;\n    }\n  }\n}\n","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\n\n/**\n *\n * Animation Frame Scheduler\n *\n * <span class=\"informal\">Perform task when `window.requestAnimationFrame` would fire</span>\n *\n * When `animationFrame` scheduler is used with delay, it will fall back to {@link asyncScheduler} scheduler\n * behaviour.\n *\n * Without delay, `animationFrame` scheduler can be used to create smooth browser animations.\n * It makes sure scheduled task will happen just before next browser content repaint,\n * thus performing animations as efficiently as possible.\n *\n * ## Example\n * Schedule div height animation\n * ```ts\n * // html: <div style=\"background: #0ff;\"></div>\n * import { animationFrameScheduler } from 'rxjs';\n *\n * const div = document.querySelector('div');\n *\n * animationFrameScheduler.schedule(function(height) {\n *   div.style.height = height + \"px\";\n *\n *   this.schedule(height + 1);  // `this` references currently executing Action,\n *                               // which we reschedule with new state\n * }, 0, 0);\n *\n * // You will see a div element growing in height\n * ```\n */\n\nexport const animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\n\n/**\n * @deprecated Renamed to {@link animationFrameScheduler}. Will be removed in v8.\n */\nexport const animationFrame = animationFrameScheduler;\n","import { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nimport { SchedulerAction } from '../types';\nimport { TimerHandle } from './timerHandle';\n\nexport class VirtualTimeScheduler extends AsyncScheduler {\n  /** @deprecated Not used in VirtualTimeScheduler directly. Will be removed in v8. */\n  static frameTimeFactor = 10;\n\n  /**\n   * The current frame for the state of the virtual scheduler instance. The difference\n   * between two \"frames\" is synonymous with the passage of \"virtual time units\". So if\n   * you record `scheduler.frame` to be `1`, then later, observe `scheduler.frame` to be at `11`,\n   * that means `10` virtual time units have passed.\n   */\n  public frame: number = 0;\n\n  /**\n   * Used internally to examine the current virtual action index being processed.\n   * @deprecated Internal implementation detail, do not use directly. Will be made internal in v8.\n   */\n  public index: number = -1;\n\n  /**\n   * This creates an instance of a `VirtualTimeScheduler`. Experts only. The signature of\n   * this constructor is likely to change in the long run.\n   *\n   * @param schedulerActionCtor The type of Action to initialize when initializing actions during scheduling.\n   * @param maxFrames The maximum number of frames to process before stopping. Used to prevent endless flush cycles.\n   */\n  constructor(schedulerActionCtor: typeof AsyncAction = VirtualAction as any, public maxFrames: number = Infinity) {\n    super(schedulerActionCtor, () => this.frame);\n  }\n\n  /**\n   * Prompt the Scheduler to execute all of its queued actions, therefore\n   * clearing its queue.\n   */\n  public flush(): void {\n    const { actions, maxFrames } = this;\n    let error: any;\n    let action: AsyncAction<any> | undefined;\n\n    while ((action = actions[0]) && action.delay <= maxFrames) {\n      actions.shift();\n      this.frame = action.delay;\n\n      if ((error = action.execute(action.state, action.delay))) {\n        break;\n      }\n    }\n\n    if (error) {\n      while ((action = actions.shift())) {\n        action.unsubscribe();\n      }\n      throw error;\n    }\n  }\n}\n\nexport class VirtualAction<T> extends AsyncAction<T> {\n  protected active: boolean = true;\n\n  constructor(\n    protected scheduler: VirtualTimeScheduler,\n    protected work: (this: SchedulerAction<T>, state?: T) => void,\n    protected index: number = (scheduler.index += 1)\n  ) {\n    super(scheduler, work);\n    this.index = scheduler.index = index;\n  }\n\n  public schedule(state?: T, delay: number = 0): Subscription {\n    if (Number.isFinite(delay)) {\n      if (!this.id) {\n        return super.schedule(state, delay);\n      }\n      this.active = false;\n      // If an action is rescheduled, we save allocations by mutating its state,\n      // pushing it to the end of the scheduler queue, and recycling the action.\n      // But since the VirtualTimeScheduler is used for testing, VirtualActions\n      // must be immutable so they can be inspected later.\n      const action = new VirtualAction(this.scheduler, this.work);\n      this.add(action);\n      return action.schedule(state, delay);\n    } else {\n      // If someone schedules something with Infinity, it'll never happen. So we\n      // don't even schedule it.\n      return Subscription.EMPTY;\n    }\n  }\n\n  protected requestAsyncId(scheduler: VirtualTimeScheduler, id?: any, delay: number = 0): TimerHandle {\n    this.delay = scheduler.frame + delay;\n    const { actions } = scheduler;\n    actions.push(this);\n    (actions as Array<VirtualAction<T>>).sort(VirtualAction.sortActions);\n    return 1;\n  }\n\n  protected recycleAsyncId(scheduler: VirtualTimeScheduler, id?: any, delay: number = 0): TimerHandle | undefined {\n    return undefined;\n  }\n\n  protected _execute(state: T, delay: number): any {\n    if (this.active === true) {\n      return super._execute(state, delay);\n    }\n  }\n\n  private static sortActions<T>(a: VirtualAction<T>, b: VirtualAction<T>) {\n    if (a.delay === b.delay) {\n      if (a.index === b.index) {\n        return 0;\n      } else if (a.index > b.index) {\n        return 1;\n      } else {\n        return -1;\n      }\n    } else if (a.delay > b.delay) {\n      return 1;\n    } else {\n      return -1;\n    }\n  }\n}\n","/** prettier */\nimport { Observable } from '../Observable';\nimport { isFunction } from './isFunction';\n\n/**\n * Tests to see if the object is an RxJS {@link Observable}\n * @param obj the object to test\n */\nexport function isObservable(obj: any): obj is Observable<unknown> {\n  // The !! is to ensure that this publicly exposed function returns\n  // `false` if something like `null` or `0` is passed.\n  return !!obj && (obj instanceof Observable || (isFunction(obj.lift) && isFunction(obj.subscribe)));\n}\n","import { Observable } from './Observable';\nimport { EmptyError } from './util/EmptyError';\n\nexport interface LastValueFromConfig<T> {\n  defaultValue: T;\n}\n\nexport function lastValueFrom<T, D>(source: Observable<T>, config: LastValueFromConfig<D>): Promise<T | D>;\nexport function lastValueFrom<T>(source: Observable<T>): Promise<T>;\n\n/**\n * Converts an observable to a promise by subscribing to the observable,\n * waiting for it to complete, and resolving the returned promise with the\n * last value from the observed stream.\n *\n * If the observable stream completes before any values were emitted, the\n * returned promise will reject with {@link EmptyError} or will resolve\n * with the default value if a default was specified.\n *\n * If the observable stream emits an error, the returned promise will reject\n * with that error.\n *\n * **WARNING**: Only use this with observables you *know* will complete. If the source\n * observable does not complete, you will end up with a promise that is hung up, and\n * potentially all of the state of an async function hanging out in memory. To avoid\n * this situation, look into adding something like {@link timeout}, {@link take},\n * {@link takeWhile}, or {@link takeUntil} amongst others.\n *\n * ## Example\n *\n * Wait for the last value from a stream and emit it from a promise in\n * an async function\n *\n * ```ts\n * import { interval, take, lastValueFrom } from 'rxjs';\n *\n * async function execute() {\n *   const source$ = interval(2000).pipe(take(10));\n *   const finalNumber = await lastValueFrom(source$);\n *   console.log(`The final number is ${ finalNumber }`);\n * }\n *\n * execute();\n *\n * // Expected output:\n * // 'The final number is 9'\n * ```\n *\n * @see {@link firstValueFrom}\n *\n * @param source the observable to convert to a promise\n * @param config a configuration object to define the `defaultValue` to use if the source completes without emitting a value\n */\nexport function lastValueFrom<T, D>(source: Observable<T>, config?: LastValueFromConfig<D>): Promise<T | D> {\n  const hasConfig = typeof config === 'object';\n  return new Promise<T | D>((resolve, reject) => {\n    let _hasValue = false;\n    let _value: T;\n    source.subscribe({\n      next: (value) => {\n        _value = value;\n        _hasValue = true;\n      },\n      error: reject,\n      complete: () => {\n        if (_hasValue) {\n          resolve(_value);\n        } else if (hasConfig) {\n          resolve(config!.defaultValue);\n        } else {\n          reject(new EmptyError());\n        }\n      },\n    });\n  });\n}\n","import { Observable } from './Observable';\nimport { EmptyError } from './util/EmptyError';\nimport { SafeSubscriber } from './Subscriber';\n\nexport interface FirstValueFromConfig<T> {\n  defaultValue: T;\n}\n\nexport function firstValueFrom<T, D>(source: Observable<T>, config: FirstValueFromConfig<D>): Promise<T | D>;\nexport function firstValueFrom<T>(source: Observable<T>): Promise<T>;\n\n/**\n * Converts an observable to a promise by subscribing to the observable,\n * and returning a promise that will resolve as soon as the first value\n * arrives from the observable. The subscription will then be closed.\n *\n * If the observable stream completes before any values were emitted, the\n * returned promise will reject with {@link EmptyError} or will resolve\n * with the default value if a default was specified.\n *\n * If the observable stream emits an error, the returned promise will reject\n * with that error.\n *\n * **WARNING**: Only use this with observables you *know* will emit at least one value,\n * *OR* complete. If the source observable does not emit one value or complete, you will\n * end up with a promise that is hung up, and potentially all of the state of an\n * async function hanging out in memory. To avoid this situation, look into adding\n * something like {@link timeout}, {@link take}, {@link takeWhile}, or {@link takeUntil}\n * amongst others.\n *\n * ## Example\n *\n * Wait for the first value from a stream and emit it from a promise in\n * an async function\n *\n * ```ts\n * import { interval, firstValueFrom } from 'rxjs';\n *\n * async function execute() {\n *   const source$ = interval(2000);\n *   const firstNumber = await firstValueFrom(source$);\n *   console.log(`The first number is ${ firstNumber }`);\n * }\n *\n * execute();\n *\n * // Expected output:\n * // 'The first number is 0'\n * ```\n *\n * @see {@link lastValueFrom}\n *\n * @param source the observable to convert to a promise\n * @param config a configuration object to define the `defaultValue` to use if the source completes without emitting a value\n */\nexport function firstValueFrom<T, D>(source: Observable<T>, config?: FirstValueFromConfig<D>): Promise<T | D> {\n  const hasConfig = typeof config === 'object';\n  return new Promise<T | D>((resolve, reject) => {\n    const subscriber = new SafeSubscriber<T>({\n      next: (value) => {\n        resolve(value);\n        subscriber.unsubscribe();\n      },\n      error: reject,\n      complete: () => {\n        if (hasConfig) {\n          resolve(config!.defaultValue);\n        } else {\n          reject(new EmptyError());\n        }\n      },\n    });\n    source.subscribe(subscriber);\n  });\n}\n","import { SchedulerLike } from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { Observable } from '../Observable';\nimport { subscribeOn } from '../operators/subscribeOn';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { observeOn } from '../operators/observeOn';\nimport { AsyncSubject } from '../AsyncSubject';\n\nexport function bindCallbackInternals(\n  isNodeStyle: boolean,\n  callbackFunc: any,\n  resultSelector?: any,\n  scheduler?: SchedulerLike\n): (...args: any[]) => Observable<unknown> {\n  if (resultSelector) {\n    if (isScheduler(resultSelector)) {\n      scheduler = resultSelector;\n    } else {\n      // The user provided a result selector.\n      return function (this: any, ...args: any[]) {\n        return (bindCallbackInternals(isNodeStyle, callbackFunc, scheduler) as any)\n          .apply(this, args)\n          .pipe(mapOneOrManyArgs(resultSelector as any));\n      };\n    }\n  }\n\n  // If a scheduler was passed, use our `subscribeOn` and `observeOn` operators\n  // to compose that behavior for the user.\n  if (scheduler) {\n    return function (this: any, ...args: any[]) {\n      return (bindCallbackInternals(isNodeStyle, callbackFunc) as any)\n        .apply(this, args)\n        .pipe(subscribeOn(scheduler!), observeOn(scheduler!));\n    };\n  }\n\n  return function (this: any, ...args: any[]): Observable<any> {\n    // We're using AsyncSubject, because it emits when it completes,\n    // and it will play the value to all late-arriving subscribers.\n    const subject = new AsyncSubject<any>();\n\n    // If this is true, then we haven't called our function yet.\n    let uninitialized = true;\n    return new Observable((subscriber) => {\n      // Add our subscriber to the subject.\n      const subs = subject.subscribe(subscriber);\n\n      if (uninitialized) {\n        uninitialized = false;\n        // We're going to execute the bound function\n        // This bit is to signal that we are hitting the callback asynchronously.\n        // Because we don't have any anti-\"Zalgo\" guarantees with whatever\n        // function we are handed, we use this bit to figure out whether or not\n        // we are getting hit in a callback synchronously during our call.\n        let isAsync = false;\n\n        // This is used to signal that the callback completed synchronously.\n        let isComplete = false;\n\n        // Call our function that has a callback. If at any time during this\n        // call, an error is thrown, it will be caught by the Observable\n        // subscription process and sent to the consumer.\n        callbackFunc.apply(\n          // Pass the appropriate `this` context.\n          this,\n          [\n            // Pass the arguments.\n            ...args,\n            // And our callback handler.\n            (...results: any[]) => {\n              if (isNodeStyle) {\n                // If this is a node callback, shift the first value off of the\n                // results and check it, as it is the error argument. By shifting,\n                // we leave only the argument(s) we want to pass to the consumer.\n                const err = results.shift();\n                if (err != null) {\n                  subject.error(err);\n                  // If we've errored, we can stop processing this function\n                  // as there's nothing else to do. Just return to escape.\n                  return;\n                }\n              }\n              // If we have one argument, notify the consumer\n              // of it as a single value, otherwise, if there's more than one, pass\n              // them as an array. Note that if there are no arguments, `undefined`\n              // will be emitted.\n              subject.next(1 < results.length ? results : results[0]);\n              // Flip this flag, so we know we can complete it in the synchronous\n              // case below.\n              isComplete = true;\n              // If we're not asynchronous, we need to defer the `complete` call\n              // until after the call to the function is over. This is because an\n              // error could be thrown in the function after it calls our callback,\n              // and if that is the case, if we complete here, we are unable to notify\n              // the consumer than an error occurred.\n              if (isAsync) {\n                subject.complete();\n              }\n            },\n          ]\n        );\n        // If we flipped `isComplete` during the call, we resolved synchronously,\n        // notify complete, because we skipped it in the callback to wait\n        // to make sure there were no errors during the call.\n        if (isComplete) {\n          subject.complete();\n        }\n\n        // We're no longer synchronous. If the callback is called at this point\n        // we can notify complete on the spot.\n        isAsync = true;\n      }\n\n      // Return the subscription from adding our subscriber to the subject.\n      return subs;\n    });\n  };\n}\n","/* @prettier */\nimport { SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\nimport { bindCallbackInternals } from './bindCallbackInternals';\n\nexport function bindCallback(\n  callbackFunc: (...args: any[]) => void,\n  resultSelector: (...args: any[]) => any,\n  scheduler?: SchedulerLike\n): (...args: any[]) => Observable<any>;\n\n// args is the arguments array and we push the callback on the rest tuple since the rest parameter must be last (only item) in a parameter list\nexport function bindCallback<A extends readonly unknown[], R extends readonly unknown[]>(\n  callbackFunc: (...args: [...A, (...res: R) => void]) => void,\n  schedulerLike?: SchedulerLike\n): (...arg: A) => Observable<R extends [] ? void : R extends [any] ? R[0] : R>;\n\n/**\n * Converts a callback API to a function that returns an Observable.\n *\n * <span class=\"informal\">Give it a function `f` of type `f(x, callback)` and\n * it will return a function `g` that when called as `g(x)` will output an\n * Observable.</span>\n *\n * `bindCallback` is not an operator because its input and output are not\n * Observables. The input is a function `func` with some parameters. The\n * last parameter must be a callback function that `func` calls when it is\n * done.\n *\n * The output of `bindCallback` is a function that takes the same parameters\n * as `func`, except the last one (the callback). When the output function\n * is called with arguments it will return an Observable. If function `func`\n * calls its callback with one argument, the Observable will emit that value.\n * If on the other hand the callback is called with multiple values the resulting\n * Observable will emit an array with said values as arguments.\n *\n * It is **very important** to remember that input function `func` is not called\n * when the output function is, but rather when the Observable returned by the output\n * function is subscribed. This means if `func` makes an AJAX request, that request\n * will be made every time someone subscribes to the resulting Observable, but not before.\n *\n * The last optional parameter - `scheduler` - can be used to control when the call\n * to `func` happens after someone subscribes to Observable, as well as when results\n * passed to callback will be emitted. By default, the subscription to an Observable calls `func`\n * synchronously, but using {@link asyncScheduler} as the last parameter will defer the call to `func`,\n * just like wrapping the call in `setTimeout` with a timeout of `0` would. If you were to use the async Scheduler\n * and call `subscribe` on the output Observable, all function calls that are currently executing\n * will end before `func` is invoked.\n *\n * By default, results passed to the callback are emitted immediately after `func` invokes the callback.\n * In particular, if the callback is called synchronously, then the subscription of the resulting Observable\n * will call the `next` function synchronously as well.  If you want to defer that call,\n * you may use {@link asyncScheduler} just as before.  This means that by using `Scheduler.async` you can\n * ensure that `func` always calls its callback asynchronously, thus avoiding terrifying Zalgo.\n *\n * Note that the Observable created by the output function will always emit a single value\n * and then complete immediately. If `func` calls the callback multiple times, values from subsequent\n * calls will not appear in the stream. If you need to listen for multiple calls,\n *  you probably want to use {@link fromEvent} or {@link fromEventPattern} instead.\n *\n * If `func` depends on some context (`this` property) and is not already bound, the context of `func`\n * will be the context that the output function has at call time. In particular, if `func`\n * is called as a method of some object and if `func` is not already bound, in order to preserve the context\n * it is recommended that the context of the output function is set to that object as well.\n *\n * If the input function calls its callback in the \"node style\" (i.e. first argument to callback is\n * optional error parameter signaling whether the call failed or not), {@link bindNodeCallback}\n * provides convenient error handling and probably is a better choice.\n * `bindCallback` will treat such functions the same as any other and error parameters\n * (whether passed or not) will always be interpreted as regular callback argument.\n *\n * ## Examples\n *\n * Convert jQuery's getJSON to an Observable API\n *\n * ```ts\n * import { bindCallback } from 'rxjs';\n * import * as jQuery from 'jquery';\n *\n * // Suppose we have jQuery.getJSON('/my/url', callback)\n * const getJSONAsObservable = bindCallback(jQuery.getJSON);\n * const result = getJSONAsObservable('/my/url');\n * result.subscribe(x => console.log(x), e => console.error(e));\n * ```\n *\n * Receive an array of arguments passed to a callback\n *\n * ```ts\n * import { bindCallback } from 'rxjs';\n *\n * const someFunction = (n, s, cb) => {\n *   cb(n, s, { someProperty: 'someValue' });\n * };\n *\n * const boundSomeFunction = bindCallback(someFunction);\n * boundSomeFunction(5, 'some string').subscribe((values) => {\n *   console.log(values); // [5, 'some string', {someProperty: 'someValue'}]\n * });\n * ```\n *\n * Compare behaviour with and without `asyncScheduler`\n *\n * ```ts\n * import { bindCallback, asyncScheduler } from 'rxjs';\n *\n * function iCallMyCallbackSynchronously(cb) {\n *   cb();\n * }\n *\n * const boundSyncFn = bindCallback(iCallMyCallbackSynchronously);\n * const boundAsyncFn = bindCallback(iCallMyCallbackSynchronously, null, asyncScheduler);\n *\n * boundSyncFn().subscribe(() => console.log('I was sync!'));\n * boundAsyncFn().subscribe(() => console.log('I was async!'));\n * console.log('This happened...');\n *\n * // Logs:\n * // I was sync!\n * // This happened...\n * // I was async!\n * ```\n *\n * Use `bindCallback` on an object method\n *\n * ```ts\n * import { bindCallback } from 'rxjs';\n *\n * const boundMethod = bindCallback(someObject.methodWithCallback);\n * boundMethod\n *   .call(someObject) // make sure methodWithCallback has access to someObject\n *   .subscribe(subscriber);\n * ```\n *\n * @see {@link bindNodeCallback}\n * @see {@link from}\n *\n * @param callbackFunc A function with a callback as the last parameter.\n * @param resultSelector A mapping function used to transform callback events.\n * @param scheduler The scheduler on which to schedule the callbacks.\n * @return A function which returns the Observable that delivers the same\n * values the callback would deliver.\n */\nexport function bindCallback(\n  callbackFunc: (...args: [...any[], (...res: any) => void]) => void,\n  resultSelector?: ((...args: any[]) => any) | SchedulerLike,\n  scheduler?: SchedulerLike\n): (...args: any[]) => Observable<unknown> {\n  return bindCallbackInternals(false, callbackFunc, resultSelector, scheduler);\n}\n","/* @prettier */\nimport { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { bindCallbackInternals } from './bindCallbackInternals';\n\nexport function bindNodeCallback(\n  callbackFunc: (...args: any[]) => void,\n  resultSelector: (...args: any[]) => any,\n  scheduler?: SchedulerLike\n): (...args: any[]) => Observable<any>;\n\n// args is the arguments array and we push the callback on the rest tuple since the rest parameter must be last (only item) in a parameter list\nexport function bindNodeCallback<A extends readonly unknown[], R extends readonly unknown[]>(\n  callbackFunc: (...args: [...A, (err: any, ...res: R) => void]) => void,\n  schedulerLike?: SchedulerLike\n): (...arg: A) => Observable<R extends [] ? void : R extends [any] ? R[0] : R>;\n\n/**\n * Converts a Node.js-style callback API to a function that returns an\n * Observable.\n *\n * <span class=\"informal\">It's just like {@link bindCallback}, but the\n * callback is expected to be of type `callback(error, result)`.</span>\n *\n * `bindNodeCallback` is not an operator because its input and output are not\n * Observables. The input is a function `func` with some parameters, but the\n * last parameter must be a callback function that `func` calls when it is\n * done. The callback function is expected to follow Node.js conventions,\n * where the first argument to the callback is an error object, signaling\n * whether call was successful. If that object is passed to callback, it means\n * something went wrong.\n *\n * The output of `bindNodeCallback` is a function that takes the same\n * parameters as `func`, except the last one (the callback). When the output\n * function is called with arguments, it will return an Observable.\n * If `func` calls its callback with error parameter present, Observable will\n * error with that value as well. If error parameter is not passed, Observable will emit\n * second parameter. If there are more parameters (third and so on),\n * Observable will emit an array with all arguments, except first error argument.\n *\n * Note that `func` will not be called at the same time output function is,\n * but rather whenever resulting Observable is subscribed. By default call to\n * `func` will happen synchronously after subscription, but that can be changed\n * with proper `scheduler` provided as optional third parameter. {@link SchedulerLike}\n * can also control when values from callback will be emitted by Observable.\n * To find out more, check out documentation for {@link bindCallback}, where\n * {@link SchedulerLike} works exactly the same.\n *\n * As in {@link bindCallback}, context (`this` property) of input function will be set to context\n * of returned function, when it is called.\n *\n * After Observable emits value, it will complete immediately. This means\n * even if `func` calls callback again, values from second and consecutive\n * calls will never appear on the stream. If you need to handle functions\n * that call callbacks multiple times, check out {@link fromEvent} or\n * {@link fromEventPattern} instead.\n *\n * Note that `bindNodeCallback` can be used in non-Node.js environments as well.\n * \"Node.js-style\" callbacks are just a convention, so if you write for\n * browsers or any other environment and API you use implements that callback style,\n * `bindNodeCallback` can be safely used on that API functions as well.\n *\n * Remember that Error object passed to callback does not have to be an instance\n * of JavaScript built-in `Error` object. In fact, it does not even have to an object.\n * Error parameter of callback function is interpreted as \"present\", when value\n * of that parameter is truthy. It could be, for example, non-zero number, non-empty\n * string or boolean `true`. In all of these cases resulting Observable would error\n * with that value. This means usually regular style callbacks will fail very often when\n * `bindNodeCallback` is used. If your Observable errors much more often then you\n * would expect, check if callback really is called in Node.js-style and, if not,\n * switch to {@link bindCallback} instead.\n *\n * Note that even if error parameter is technically present in callback, but its value\n * is falsy, it still won't appear in array emitted by Observable.\n *\n * ## Examples\n *\n *  Read a file from the filesystem and get the data as an Observable\n *\n * ```ts\n * import * as fs from 'fs';\n * const readFileAsObservable = bindNodeCallback(fs.readFile);\n * const result = readFileAsObservable('./roadNames.txt', 'utf8');\n * result.subscribe(x => console.log(x), e => console.error(e));\n * ```\n *\n * Use on function calling callback with multiple arguments\n *\n * ```ts\n * someFunction((err, a, b) => {\n *   console.log(err); // null\n *   console.log(a); // 5\n *   console.log(b); // \"some string\"\n * });\n * const boundSomeFunction = bindNodeCallback(someFunction);\n * boundSomeFunction()\n * .subscribe(value => {\n *   console.log(value); // [5, \"some string\"]\n * });\n * ```\n *\n * Use on function calling callback in regular style\n *\n * ```ts\n * someFunction(a => {\n *   console.log(a); // 5\n * });\n * const boundSomeFunction = bindNodeCallback(someFunction);\n * boundSomeFunction()\n * .subscribe(\n *   value => {}             // never gets called\n *   err => console.log(err) // 5\n * );\n * ```\n *\n * @see {@link bindCallback}\n * @see {@link from}\n *\n * @param callbackFunc Function with a Node.js-style callback as the last parameter.\n * @param resultSelector A mapping function used to transform callback events.\n * @param scheduler The scheduler on which to schedule the callbacks.\n * @return A function which returns the Observable that delivers the same values the\n * Node.js callback would deliver.\n */\nexport function bindNodeCallback(\n  callbackFunc: (...args: [...any[], (err: any, ...res: any) => void]) => void,\n  resultSelector?: ((...args: any[]) => any) | SchedulerLike,\n  scheduler?: SchedulerLike\n): (...args: any[]) => Observable<any> {\n  return bindCallbackInternals(true, callbackFunc, resultSelector, scheduler);\n}\n","import { Observable } from '../Observable';\nimport { ObservedValueOf, ObservableInput } from '../types';\nimport { innerFrom } from './innerFrom';\n\n/**\n * Creates an Observable that, on subscribe, calls an Observable factory to\n * make an Observable for each new Observer.\n *\n * <span class=\"informal\">Creates the Observable lazily, that is, only when it\n * is subscribed.\n * </span>\n *\n * ![](defer.png)\n *\n * `defer` allows you to create an Observable only when the Observer\n * subscribes. It waits until an Observer subscribes to it, calls the given\n * factory function to get an Observable -- where a factory function typically\n * generates a new Observable -- and subscribes the Observer to this Observable.\n * In case the factory function returns a falsy value, then EMPTY is used as\n * Observable instead. Last but not least, an exception during the factory\n * function call is transferred to the Observer by calling `error`.\n *\n * ## Example\n *\n * Subscribe to either an Observable of clicks or an Observable of interval, at random\n *\n * ```ts\n * import { defer, fromEvent, interval } from 'rxjs';\n *\n * const clicksOrInterval = defer(() => {\n *   return Math.random() > 0.5\n *     ? fromEvent(document, 'click')\n *     : interval(1000);\n * });\n * clicksOrInterval.subscribe(x => console.log(x));\n *\n * // Results in the following behavior:\n * // If the result of Math.random() is greater than 0.5 it will listen\n * // for clicks anywhere on the \"document\"; when document is clicked it\n * // will log a MouseEvent object to the console. If the result is less\n * // than 0.5 it will emit ascending numbers, one every second(1000ms).\n * ```\n *\n * @see {@link Observable}\n *\n * @param observableFactory The Observable factory function to invoke for each\n * Observer that subscribes to the output Observable. May also return any\n * `ObservableInput`, which will be converted on the fly to an Observable.\n * @return An Observable whose Observers' subscriptions trigger an invocation of the\n * given Observable factory function.\n */\nexport function defer<R extends ObservableInput<any>>(observableFactory: () => R): Observable<ObservedValueOf<R>> {\n  return new Observable<ObservedValueOf<R>>((subscriber) => {\n    innerFrom(observableFactory()).subscribe(subscriber);\n  });\n}\n","import { Connectable, ObservableInput, SubjectLike } from '../types';\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\nimport { Observable } from '../Observable';\nimport { defer } from './defer';\n\nexport interface ConnectableConfig<T> {\n  /**\n   * A factory function used to create the Subject through which the source\n   * is multicast. By default this creates a {@link Subject}.\n   */\n  connector: () => SubjectLike<T>;\n  /**\n   * If true, the resulting observable will reset internal state upon disconnection\n   * and return to a \"cold\" state. This allows the resulting observable to be\n   * reconnected.\n   * If false, upon disconnection, the connecting subject will remain the\n   * connecting subject, meaning the resulting observable will not go \"cold\" again,\n   * and subsequent repeats or resubscriptions will resubscribe to that same subject.\n   */\n  resetOnDisconnect?: boolean;\n}\n\n/**\n * The default configuration for `connectable`.\n */\nconst DEFAULT_CONFIG: ConnectableConfig<unknown> = {\n  connector: () => new Subject<unknown>(),\n  resetOnDisconnect: true,\n};\n\n/**\n * Creates an observable that multicasts once `connect()` is called on it.\n *\n * @param source The observable source to make connectable.\n * @param config The configuration object for `connectable`.\n * @returns A \"connectable\" observable, that has a `connect()` method, that you must call to\n * connect the source to all consumers through the subject provided as the connector.\n */\nexport function connectable<T>(source: ObservableInput<T>, config: ConnectableConfig<T> = DEFAULT_CONFIG): Connectable<T> {\n  // The subscription representing the connection.\n  let connection: Subscription | null = null;\n  const { connector, resetOnDisconnect = true } = config;\n  let subject = connector();\n\n  const result: any = new Observable<T>((subscriber) => {\n    return subject.subscribe(subscriber);\n  });\n\n  // Define the `connect` function. This is what users must call\n  // in order to \"connect\" the source to the subject that is\n  // multicasting it.\n  result.connect = () => {\n    if (!connection || connection.closed) {\n      connection = defer(() => source).subscribe(subject);\n      if (resetOnDisconnect) {\n        connection.add(() => (subject = connector()));\n      }\n    }\n    return connection;\n  };\n\n  return result;\n}\n","import { Observable } from '../Observable';\nimport { ObservedValueOf, ObservableInputTuple, ObservableInput } from '../types';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { innerFrom } from './innerFrom';\nimport { popResultSelector } from '../util/args';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { createObject } from '../util/createObject';\nimport { AnyCatcher } from '../AnyCatcher';\n\n// forkJoin(any)\n// We put this first because we need to catch cases where the user has supplied\n// _exactly `any`_ as the argument. Since `any` literally matches _anything_,\n// we don't want it to randomly hit one of the other type signatures below,\n// as we have no idea at build-time what type we should be returning when given an any.\n\n/**\n * You have passed `any` here, we can't figure out if it is\n * an array or an object, so you're getting `unknown`. Use better types.\n * @param arg Something typed as `any`\n */\nexport function forkJoin<T extends AnyCatcher>(arg: T): Observable<unknown>;\n\n// forkJoin(null | undefined)\nexport function forkJoin(scheduler: null | undefined): Observable<never>;\n\n// forkJoin([a, b, c])\nexport function forkJoin(sources: readonly []): Observable<never>;\nexport function forkJoin<A extends readonly unknown[]>(sources: readonly [...ObservableInputTuple<A>]): Observable<A>;\nexport function forkJoin<A extends readonly unknown[], R>(\n  sources: readonly [...ObservableInputTuple<A>],\n  resultSelector: (...values: A) => R\n): Observable<R>;\n\n// forkJoin(a, b, c)\n/** @deprecated Pass an array of sources instead. The rest-parameters signature will be removed in v8. Details: https://rxjs.dev/deprecations/array-argument */\nexport function forkJoin<A extends readonly unknown[]>(...sources: [...ObservableInputTuple<A>]): Observable<A>;\n/** @deprecated Pass an array of sources instead. The rest-parameters signature will be removed in v8. Details: https://rxjs.dev/deprecations/array-argument */\nexport function forkJoin<A extends readonly unknown[], R>(\n  ...sourcesAndResultSelector: [...ObservableInputTuple<A>, (...values: A) => R]\n): Observable<R>;\n\n// forkJoin({a, b, c})\nexport function forkJoin(sourcesObject: { [K in any]: never }): Observable<never>;\nexport function forkJoin<T extends Record<string, ObservableInput<any>>>(\n  sourcesObject: T\n): Observable<{ [K in keyof T]: ObservedValueOf<T[K]> }>;\n\n/**\n * Accepts an `Array` of {@link ObservableInput} or a dictionary `Object` of {@link ObservableInput} and returns\n * an {@link Observable} that emits either an array of values in the exact same order as the passed array,\n * or a dictionary of values in the same shape as the passed dictionary.\n *\n * <span class=\"informal\">Wait for Observables to complete and then combine last values they emitted;\n * complete immediately if an empty array is passed.</span>\n *\n * ![](forkJoin.png)\n *\n * `forkJoin` is an operator that takes any number of input observables which can be passed either as an array\n * or a dictionary of input observables. If no input observables are provided (e.g. an empty array is passed),\n * then the resulting stream will complete immediately.\n *\n * `forkJoin` will wait for all passed observables to emit and complete and then it will emit an array or an object with last\n * values from corresponding observables.\n *\n * If you pass an array of `n` observables to the operator, then the resulting\n * array will have `n` values, where the first value is the last one emitted by the first observable,\n * second value is the last one emitted by the second observable and so on.\n *\n * If you pass a dictionary of observables to the operator, then the resulting\n * objects will have the same keys as the dictionary passed, with their last values they have emitted\n * located at the corresponding key.\n *\n * That means `forkJoin` will not emit more than once and it will complete after that. If you need to emit combined\n * values not only at the end of the lifecycle of passed observables, but also throughout it, try out {@link combineLatest}\n * or {@link zip} instead.\n *\n * In order for the resulting array to have the same length as the number of input observables, whenever any of\n * the given observables completes without emitting any value, `forkJoin` will complete at that moment as well\n * and it will not emit anything either, even if it already has some last values from other observables.\n * Conversely, if there is an observable that never completes, `forkJoin` will never complete either,\n * unless at any point some other observable completes without emitting a value, which brings us back to\n * the previous case. Overall, in order for `forkJoin` to emit a value, all given observables\n * have to emit something at least once and complete.\n *\n * If any given observable errors at some point, `forkJoin` will error as well and immediately unsubscribe\n * from the other observables.\n *\n * Optionally `forkJoin` accepts a `resultSelector` function, that will be called with values which normally\n * would land in the emitted array. Whatever is returned by the `resultSelector`, will appear in the output\n * observable instead. This means that the default `resultSelector` can be thought of as a function that takes\n * all its arguments and puts them into an array. Note that the `resultSelector` will be called only\n * when `forkJoin` is supposed to emit a result.\n *\n * ## Examples\n *\n * Use `forkJoin` with a dictionary of observable inputs\n *\n * ```ts\n * import { forkJoin, of, timer } from 'rxjs';\n *\n * const observable = forkJoin({\n *   foo: of(1, 2, 3, 4),\n *   bar: Promise.resolve(8),\n *   baz: timer(4000)\n * });\n * observable.subscribe({\n *  next: value => console.log(value),\n *  complete: () => console.log('This is how it ends!'),\n * });\n *\n * // Logs:\n * // { foo: 4, bar: 8, baz: 0 } after 4 seconds\n * // 'This is how it ends!' immediately after\n * ```\n *\n * Use `forkJoin` with an array of observable inputs\n *\n * ```ts\n * import { forkJoin, of, timer } from 'rxjs';\n *\n * const observable = forkJoin([\n *   of(1, 2, 3, 4),\n *   Promise.resolve(8),\n *   timer(4000)\n * ]);\n * observable.subscribe({\n *  next: value => console.log(value),\n *  complete: () => console.log('This is how it ends!'),\n * });\n *\n * // Logs:\n * // [4, 8, 0] after 4 seconds\n * // 'This is how it ends!' immediately after\n * ```\n *\n * @see {@link combineLatest}\n * @see {@link zip}\n *\n * @param args Any number of `ObservableInput`s provided either as an array, as an object\n * or as arguments passed directly to the operator.\n * @return Observable emitting either an array of last values emitted by passed Observables\n * or value from project function.\n */\nexport function forkJoin(...args: any[]): Observable<any> {\n  const resultSelector = popResultSelector(args);\n  const { args: sources, keys } = argsArgArrayOrObject(args);\n  const result = new Observable((subscriber) => {\n    const { length } = sources;\n    if (!length) {\n      subscriber.complete();\n      return;\n    }\n    const values = new Array(length);\n    let remainingCompletions = length;\n    let remainingEmissions = length;\n    for (let sourceIndex = 0; sourceIndex < length; sourceIndex++) {\n      let hasValue = false;\n      innerFrom(sources[sourceIndex]).subscribe(\n        createOperatorSubscriber(\n          subscriber,\n          (value) => {\n            if (!hasValue) {\n              hasValue = true;\n              remainingEmissions--;\n            }\n            values[sourceIndex] = value;\n          },\n          () => remainingCompletions--,\n          undefined,\n          () => {\n            if (!remainingCompletions || !hasValue) {\n              if (!remainingEmissions) {\n                subscriber.next(keys ? createObject(keys, values) : values);\n              }\n              subscriber.complete();\n            }\n          }\n        )\n      );\n    }\n  });\n  return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\n\n// These constants are used to create handler registry functions using array mapping below.\nconst nodeEventEmitterMethods = ['addListener', 'removeListener'] as const;\nconst eventTargetMethods = ['addEventListener', 'removeEventListener'] as const;\nconst jqueryMethods = ['on', 'off'] as const;\n\nexport interface NodeStyleEventEmitter {\n  addListener(eventName: string | symbol, handler: NodeEventHandler): this;\n  removeListener(eventName: string | symbol, handler: NodeEventHandler): this;\n}\n\nexport type NodeEventHandler = (...args: any[]) => void;\n\n// For APIs that implement `addListener` and `removeListener` methods that may\n// not use the same arguments or return EventEmitter values\n// such as React Native\nexport interface NodeCompatibleEventEmitter {\n  addListener(eventName: string, handler: NodeEventHandler): void | {};\n  removeListener(eventName: string, handler: NodeEventHandler): void | {};\n}\n\n// Use handler types like those in @types/jquery. See:\n// https://github.com/DefinitelyTyped/DefinitelyTyped/blob/847731ba1d7fa6db6b911c0e43aa0afe596e7723/types/jquery/misc.d.ts#L6395\nexport interface JQueryStyleEventEmitter<TContext, T> {\n  on(eventName: string, handler: (this: TContext, t: T, ...args: any[]) => any): void;\n  off(eventName: string, handler: (this: TContext, t: T, ...args: any[]) => any): void;\n}\n\nexport interface EventListenerObject<E> {\n  handleEvent(evt: E): void;\n}\n\nexport interface HasEventTargetAddRemove<E> {\n  addEventListener(\n    type: string,\n    listener: ((evt: E) => void) | EventListenerObject<E> | null,\n    options?: boolean | AddEventListenerOptions\n  ): void;\n  removeEventListener(\n    type: string,\n    listener: ((evt: E) => void) | EventListenerObject<E> | null,\n    options?: EventListenerOptions | boolean\n  ): void;\n}\n\nexport interface EventListenerOptions {\n  capture?: boolean;\n  passive?: boolean;\n  once?: boolean;\n}\n\nexport interface AddEventListenerOptions extends EventListenerOptions {\n  once?: boolean;\n  passive?: boolean;\n}\n\nexport function fromEvent<T>(target: HasEventTargetAddRemove<T> | ArrayLike<HasEventTargetAddRemove<T>>, eventName: string): Observable<T>;\nexport function fromEvent<T, R>(\n  target: HasEventTargetAddRemove<T> | ArrayLike<HasEventTargetAddRemove<T>>,\n  eventName: string,\n  resultSelector: (event: T) => R\n): Observable<R>;\nexport function fromEvent<T>(\n  target: HasEventTargetAddRemove<T> | ArrayLike<HasEventTargetAddRemove<T>>,\n  eventName: string,\n  options: EventListenerOptions\n): Observable<T>;\nexport function fromEvent<T, R>(\n  target: HasEventTargetAddRemove<T> | ArrayLike<HasEventTargetAddRemove<T>>,\n  eventName: string,\n  options: EventListenerOptions,\n  resultSelector: (event: T) => R\n): Observable<R>;\n\nexport function fromEvent(target: NodeStyleEventEmitter | ArrayLike<NodeStyleEventEmitter>, eventName: string): Observable<unknown>;\n/** @deprecated Do not specify explicit type parameters. Signatures with type parameters that cannot be inferred will be removed in v8. */\nexport function fromEvent<T>(target: NodeStyleEventEmitter | ArrayLike<NodeStyleEventEmitter>, eventName: string): Observable<T>;\nexport function fromEvent<R>(\n  target: NodeStyleEventEmitter | ArrayLike<NodeStyleEventEmitter>,\n  eventName: string,\n  resultSelector: (...args: any[]) => R\n): Observable<R>;\n\nexport function fromEvent(\n  target: NodeCompatibleEventEmitter | ArrayLike<NodeCompatibleEventEmitter>,\n  eventName: string\n): Observable<unknown>;\n/** @deprecated Do not specify explicit type parameters. Signatures with type parameters that cannot be inferred will be removed in v8. */\nexport function fromEvent<T>(target: NodeCompatibleEventEmitter | ArrayLike<NodeCompatibleEventEmitter>, eventName: string): Observable<T>;\nexport function fromEvent<R>(\n  target: NodeCompatibleEventEmitter | ArrayLike<NodeCompatibleEventEmitter>,\n  eventName: string,\n  resultSelector: (...args: any[]) => R\n): Observable<R>;\n\nexport function fromEvent<T>(\n  target: JQueryStyleEventEmitter<any, T> | ArrayLike<JQueryStyleEventEmitter<any, T>>,\n  eventName: string\n): Observable<T>;\nexport function fromEvent<T, R>(\n  target: JQueryStyleEventEmitter<any, T> | ArrayLike<JQueryStyleEventEmitter<any, T>>,\n  eventName: string,\n  resultSelector: (value: T, ...args: any[]) => R\n): Observable<R>;\n\n/**\n * Creates an Observable that emits events of a specific type coming from the\n * given event target.\n *\n * <span class=\"informal\">Creates an Observable from DOM events, or Node.js\n * EventEmitter events or others.</span>\n *\n * ![](fromEvent.png)\n *\n * `fromEvent` accepts as a first argument event target, which is an object with methods\n * for registering event handler functions. As a second argument it takes string that indicates\n * type of event we want to listen for. `fromEvent` supports selected types of event targets,\n * which are described in detail below. If your event target does not match any of the ones listed,\n * you should use {@link fromEventPattern}, which can be used on arbitrary APIs.\n * When it comes to APIs supported by `fromEvent`, their methods for adding and removing event\n * handler functions have different names, but they all accept a string describing event type\n * and function itself, which will be called whenever said event happens.\n *\n * Every time resulting Observable is subscribed, event handler function will be registered\n * to event target on given event type. When that event fires, value\n * passed as a first argument to registered function will be emitted by output Observable.\n * When Observable is unsubscribed, function will be unregistered from event target.\n *\n * Note that if event target calls registered function with more than one argument, second\n * and following arguments will not appear in resulting stream. In order to get access to them,\n * you can pass to `fromEvent` optional project function, which will be called with all arguments\n * passed to event handler. Output Observable will then emit value returned by project function,\n * instead of the usual value.\n *\n * Remember that event targets listed below are checked via duck typing. It means that\n * no matter what kind of object you have and no matter what environment you work in,\n * you can safely use `fromEvent` on that object if it exposes described methods (provided\n * of course they behave as was described above). So for example if Node.js library exposes\n * event target which has the same method names as DOM EventTarget, `fromEvent` is still\n * a good choice.\n *\n * If the API you use is more callback then event handler oriented (subscribed\n * callback function fires only once and thus there is no need to manually\n * unregister it), you should use {@link bindCallback} or {@link bindNodeCallback}\n * instead.\n *\n * `fromEvent` supports following types of event targets:\n *\n * **DOM EventTarget**\n *\n * This is an object with `addEventListener` and `removeEventListener` methods.\n *\n * In the browser, `addEventListener` accepts - apart from event type string and event\n * handler function arguments - optional third parameter, which is either an object or boolean,\n * both used for additional configuration how and when passed function will be called. When\n * `fromEvent` is used with event target of that type, you can provide this values\n * as third parameter as well.\n *\n * **Node.js EventEmitter**\n *\n * An object with `addListener` and `removeListener` methods.\n *\n * **JQuery-style event target**\n *\n * An object with `on` and `off` methods\n *\n * **DOM NodeList**\n *\n * List of DOM Nodes, returned for example by `document.querySelectorAll` or `Node.childNodes`.\n *\n * Although this collection is not event target in itself, `fromEvent` will iterate over all Nodes\n * it contains and install event handler function in every of them. When returned Observable\n * is unsubscribed, function will be removed from all Nodes.\n *\n * **DOM HtmlCollection**\n *\n * Just as in case of NodeList it is a collection of DOM nodes. Here as well event handler function is\n * installed and removed in each of elements.\n *\n *\n * ## Examples\n *\n * Emit clicks happening on the DOM document\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * clicks.subscribe(x => console.log(x));\n *\n * // Results in:\n * // MouseEvent object logged to console every time a click\n * // occurs on the document.\n * ```\n *\n * Use `addEventListener` with capture option\n *\n * ```ts\n * import { fromEvent } from 'rxjs';\n *\n * const div = document.createElement('div');\n * div.style.cssText = 'width: 200px; height: 200px; background: #09c;';\n * document.body.appendChild(div);\n *\n * // note optional configuration parameter which will be passed to addEventListener\n * const clicksInDocument = fromEvent(document, 'click', { capture: true });\n * const clicksInDiv = fromEvent(div, 'click');\n *\n * clicksInDocument.subscribe(() => console.log('document'));\n * clicksInDiv.subscribe(() => console.log('div'));\n *\n * // By default events bubble UP in DOM tree, so normally\n * // when we would click on div in document\n * // \"div\" would be logged first and then \"document\".\n * // Since we specified optional `capture` option, document\n * // will catch event when it goes DOWN DOM tree, so console\n * // will log \"document\" and then \"div\".\n * ```\n *\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n * @see {@link fromEventPattern}\n *\n * @param target The DOM EventTarget, Node.js EventEmitter, JQuery-like event target,\n * NodeList or HTMLCollection to attach the event handler to.\n * @param eventName The event name of interest, being emitted by the `target`.\n * @param options Options to pass through to the underlying `addListener`,\n * `addEventListener` or `on` functions.\n * @param resultSelector A mapping function used to transform events. It takes the\n * arguments from the event handler and should return a single value.\n * @return An Observable emitting events registered through `target`'s\n * listener handlers.\n */\nexport function fromEvent<T>(\n  target: any,\n  eventName: string,\n  options?: EventListenerOptions | ((...args: any[]) => T),\n  resultSelector?: (...args: any[]) => T\n): Observable<T> {\n  if (isFunction(options)) {\n    resultSelector = options;\n    options = undefined;\n  }\n  if (resultSelector) {\n    return fromEvent<T>(target, eventName, options as EventListenerOptions).pipe(mapOneOrManyArgs(resultSelector));\n  }\n\n  // Figure out our add and remove methods. In order to do this,\n  // we are going to analyze the target in a preferred order, if\n  // the target matches a given signature, we take the two \"add\" and \"remove\"\n  // method names and apply them to a map to create opposite versions of the\n  // same function. This is because they all operate in duplicate pairs,\n  // `addListener(name, handler)`, `removeListener(name, handler)`, for example.\n  // The call only differs by method name, as to whether or not you're adding or removing.\n  const [add, remove] =\n    // If it is an EventTarget, we need to use a slightly different method than the other two patterns.\n    isEventTarget(target)\n      ? eventTargetMethods.map((methodName) => (handler: any) => target[methodName](eventName, handler, options as EventListenerOptions))\n      : // In all other cases, the call pattern is identical with the exception of the method names.\n      isNodeStyleEventEmitter(target)\n      ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n      : isJQueryStyleEventEmitter(target)\n      ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n      : [];\n\n  // If add is falsy, it's because we didn't match a pattern above.\n  // Check to see if it is an ArrayLike, because if it is, we want to\n  // try to apply fromEvent to all of it's items. We do this check last,\n  // because there are may be some types that are both ArrayLike *and* implement\n  // event registry points, and we'd rather delegate to that when possible.\n  if (!add) {\n    if (isArrayLike(target)) {\n      return mergeMap((subTarget: any) => fromEvent(subTarget, eventName, options as EventListenerOptions))(\n        innerFrom(target)\n      ) as Observable<T>;\n    }\n  }\n\n  // If add is falsy and we made it here, it's because we didn't\n  // match any valid target objects above.\n  if (!add) {\n    throw new TypeError('Invalid event target');\n  }\n\n  return new Observable<T>((subscriber) => {\n    // The handler we are going to register. Forwards the event object, by itself, or\n    // an array of arguments to the event handler, if there is more than one argument,\n    // to the consumer.\n    const handler = (...args: any[]) => subscriber.next(1 < args.length ? args : args[0]);\n    // Do the work of adding the handler to the target.\n    add(handler);\n    // When we finalize, we want to remove the handler and free up memory.\n    return () => remove!(handler);\n  });\n}\n\n/**\n * Used to create `add` and `remove` functions to register and unregister event handlers\n * from a target in the most common handler pattern, where there are only two arguments.\n * (e.g.  `on(name, fn)`, `off(name, fn)`, `addListener(name, fn)`, or `removeListener(name, fn)`)\n * @param target The target we're calling methods on\n * @param eventName The event name for the event we're creating register or unregister functions for\n */\nfunction toCommonHandlerRegistry(target: any, eventName: string) {\n  return (methodName: string) => (handler: any) => target[methodName](eventName, handler);\n}\n\n/**\n * Checks to see if the target implements the required node-style EventEmitter methods\n * for adding and removing event handlers.\n * @param target the object to check\n */\nfunction isNodeStyleEventEmitter(target: any): target is NodeStyleEventEmitter {\n  return isFunction(target.addListener) && isFunction(target.removeListener);\n}\n\n/**\n * Checks to see if the target implements the required jQuery-style EventEmitter methods\n * for adding and removing event handlers.\n * @param target the object to check\n */\nfunction isJQueryStyleEventEmitter(target: any): target is JQueryStyleEventEmitter<any, any> {\n  return isFunction(target.on) && isFunction(target.off);\n}\n\n/**\n * Checks to see if the target implements the required EventTarget methods\n * for adding and removing event handlers.\n * @param target the object to check\n */\nfunction isEventTarget(target: any): target is HasEventTargetAddRemove<any> {\n  return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n","import { Observable } from '../Observable';\nimport { isFunction } from '../util/isFunction';\nimport { NodeEventHandler } from './fromEvent';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\n\n/* tslint:disable:max-line-length */\nexport function fromEventPattern<T>(\n  addHandler: (handler: NodeEventHandler) => any,\n  removeHandler?: (handler: NodeEventHandler, signal?: any) => void\n): Observable<T>;\nexport function fromEventPattern<T>(\n  addHandler: (handler: NodeEventHandler) => any,\n  removeHandler?: (handler: NodeEventHandler, signal?: any) => void,\n  resultSelector?: (...args: any[]) => T\n): Observable<T>;\n/* tslint:enable:max-line-length */\n\n/**\n * Creates an Observable from an arbitrary API for registering event handlers.\n *\n * <span class=\"informal\">When that method for adding event handler was something {@link fromEvent}\n * was not prepared for.</span>\n *\n * ![](fromEventPattern.png)\n *\n * `fromEventPattern` allows you to convert into an Observable any API that supports registering handler functions\n * for events. It is similar to {@link fromEvent}, but far\n * more flexible. In fact, all use cases of {@link fromEvent} could be easily handled by\n * `fromEventPattern` (although in slightly more verbose way).\n *\n * This operator accepts as a first argument an `addHandler` function, which will be injected with\n * handler parameter. That handler is actually an event handler function that you now can pass\n * to API expecting it. `addHandler` will be called whenever Observable\n * returned by the operator is subscribed, so registering handler in API will not\n * necessarily happen when `fromEventPattern` is called.\n *\n * After registration, every time an event that we listen to happens,\n * Observable returned by `fromEventPattern` will emit value that event handler\n * function was called with. Note that if event handler was called with more\n * than one argument, second and following arguments will not appear in the Observable.\n *\n * If API you are using allows to unregister event handlers as well, you can pass to `fromEventPattern`\n * another function - `removeHandler` - as a second parameter. It will be injected\n * with the same handler function as before, which now you can use to unregister\n * it from the API. `removeHandler` will be called when consumer of resulting Observable\n * unsubscribes from it.\n *\n * In some APIs unregistering is actually handled differently. Method registering an event handler\n * returns some kind of token, which is later used to identify which function should\n * be unregistered or it itself has method that unregisters event handler.\n * If that is the case with your API, make sure token returned\n * by registering method is returned by `addHandler`. Then it will be passed\n * as a second argument to `removeHandler`, where you will be able to use it.\n *\n * If you need access to all event handler parameters (not only the first one),\n * or you need to transform them in any way, you can call `fromEventPattern` with optional\n * third parameter - project function which will accept all arguments passed to\n * event handler when it is called. Whatever is returned from project function will appear on\n * resulting stream instead of usual event handlers first argument. This means\n * that default project can be thought of as function that takes its first parameter\n * and ignores the rest.\n *\n * ## Examples\n *\n * Emits clicks happening on the DOM document\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * function addClickHandler(handler) {\n *   document.addEventListener('click', handler);\n * }\n *\n * function removeClickHandler(handler) {\n *   document.removeEventListener('click', handler);\n * }\n *\n * const clicks = fromEventPattern(\n *   addClickHandler,\n *   removeClickHandler\n * );\n * clicks.subscribe(x => console.log(x));\n *\n * // Whenever you click anywhere in the browser, DOM MouseEvent\n * // object will be logged.\n * ```\n *\n * Use with API that returns cancellation token\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * const token = someAPI.registerEventHandler(function() {});\n * someAPI.unregisterEventHandler(token); // this APIs cancellation method accepts\n *                                        // not handler itself, but special token.\n *\n * const someAPIObservable = fromEventPattern(\n *   function(handler) { return someAPI.registerEventHandler(handler); }, // Note that we return the token here...\n *   function(handler, token) { someAPI.unregisterEventHandler(token); }  // ...to then use it here.\n * );\n * ```\n *\n * Use with project function\n *\n * ```ts\n * import { fromEventPattern } from 'rxjs';\n *\n * someAPI.registerEventHandler((eventType, eventMessage) => {\n *   console.log(eventType, eventMessage); // Logs 'EVENT_TYPE' 'EVENT_MESSAGE' to console.\n * });\n *\n * const someAPIObservable = fromEventPattern(\n *   handler => someAPI.registerEventHandler(handler),\n *   handler => someAPI.unregisterEventHandler(handler)\n *   (eventType, eventMessage) => eventType + ' --- ' + eventMessage // without that function only 'EVENT_TYPE'\n * );                                                                // would be emitted by the Observable\n *\n * someAPIObservable.subscribe(value => console.log(value));\n *\n * // Logs:\n * // 'EVENT_TYPE --- EVENT_MESSAGE'\n * ```\n *\n * @see {@link fromEvent}\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n *\n * @param addHandler A function that takes a `handler` function as argument and attaches it\n * somehow to the actual source of events.\n * @param removeHandler A function that takes a `handler` function as an argument and removes\n * it from the event source. If `addHandler` returns some kind of token, `removeHandler` function\n * will have it as a second parameter.\n * @param resultSelector A function to transform results. It takes the arguments from the event\n * handler and should return a single value.\n * @return Observable which, when an event happens, emits first parameter passed to registered\n * event handler. Alternatively it emits whatever project function returns at that moment.\n */\nexport function fromEventPattern<T>(\n  addHandler: (handler: NodeEventHandler) => any,\n  removeHandler?: (handler: NodeEventHandler, signal?: any) => void,\n  resultSelector?: (...args: any[]) => T\n): Observable<T | T[]> {\n  if (resultSelector) {\n    return fromEventPattern<T>(addHandler, removeHandler).pipe(mapOneOrManyArgs(resultSelector));\n  }\n\n  return new Observable<T | T[]>((subscriber) => {\n    const handler = (...e: T[]) => subscriber.next(e.length === 1 ? e[0] : e);\n    const retValue = addHandler(handler);\n    return isFunction(removeHandler) ? () => removeHandler(handler, retValue) : undefined;\n  });\n}\n","import { Observable } from '../Observable';\nimport { identity } from '../util/identity';\nimport { ObservableInput, SchedulerLike } from '../types';\nimport { isScheduler } from '../util/isScheduler';\nimport { defer } from './defer';\nimport { scheduleIterable } from '../scheduled/scheduleIterable';\n\ntype ConditionFunc<S> = (state: S) => boolean;\ntype IterateFunc<S> = (state: S) => S;\ntype ResultFunc<S, T> = (state: S) => T;\n\nexport interface GenerateBaseOptions<S> {\n  /**\n   * Initial state.\n   */\n  initialState: S;\n  /**\n   * Condition function that accepts state and returns boolean.\n   * When it returns false, the generator stops.\n   * If not specified, a generator never stops.\n   */\n  condition?: ConditionFunc<S>;\n  /**\n   * Iterate function that accepts state and returns new state.\n   */\n  iterate: IterateFunc<S>;\n  /**\n   * SchedulerLike to use for generation process.\n   * By default, a generator starts immediately.\n   */\n  scheduler?: SchedulerLike;\n}\n\nexport interface GenerateOptions<T, S> extends GenerateBaseOptions<S> {\n  /**\n   * Result selection function that accepts state and returns a value to emit.\n   */\n  resultSelector: ResultFunc<S, T>;\n}\n\n/**\n * Generates an observable sequence by running a state-driven loop\n * producing the sequence's elements, using the specified scheduler\n * to send out observer messages.\n *\n * ![](generate.png)\n *\n * ## Examples\n *\n * Produces sequence of numbers\n *\n * ```ts\n * import { generate } from 'rxjs';\n *\n * const result = generate(0, x => x < 3, x => x + 1, x => x);\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 0\n * // 1\n * // 2\n * ```\n *\n * Use `asapScheduler`\n *\n * ```ts\n * import { generate, asapScheduler } from 'rxjs';\n *\n * const result = generate(1, x => x < 5, x => x * 2, x => x + 1, asapScheduler);\n *\n * result.subscribe(x => console.log(x));\n *\n * // Logs:\n * // 2\n * // 3\n * // 5\n * ```\n *\n * @see {@link from}\n * @see {@link Observable}\n *\n * @param initialState Initial state.\n * @param condition Condition to terminate generation (upon returning false).\n * @param iterate Iteration step function.\n * @param resultSelector Selector function for results produced in the sequence.\n * @param scheduler A {@link SchedulerLike} on which to run the generator loop.\n * If not provided, defaults to emit immediately.\n * @returns The generated sequence.\n * @deprecated Instead of passing separate arguments, use the options argument.\n * Signatures taking separate arguments will be removed in v8.\n */\nexport function generate<T, S>(\n  initialState: S,\n  condition: ConditionFunc<S>,\n  iterate: IterateFunc<S>,\n  resultSelector: ResultFunc<S, T>,\n  scheduler?: SchedulerLike\n): Observable<T>;\n\n/**\n * Generates an Observable by running a state-driven loop\n * that emits an element on each iteration.\n *\n * <span class=\"informal\">Use it instead of nexting values in a for loop.</span>\n *\n * ![](generate.png)\n *\n * `generate` allows you to create a stream of values generated with a loop very similar to\n * a traditional for loop. The first argument of `generate` is a beginning value. The second argument\n * is a function that accepts this value and tests if some condition still holds. If it does,\n * then the loop continues, if not, it stops. The third value is a function which takes the\n * previously defined value and modifies it in some way on each iteration. Note how these three parameters\n * are direct equivalents of three expressions in a traditional for loop: the first expression\n * initializes some state (for example, a numeric index), the second tests if the loop can perform the next\n * iteration (for example, if the index is lower than 10) and the third states how the defined value\n * will be modified on every step (for example, the index will be incremented by one).\n *\n * Return value of a `generate` operator is an Observable that on each loop iteration\n * emits a value. First of all, the condition function is ran. If it returns true, then the Observable\n * emits the currently stored value (initial value at the first iteration) and finally updates\n * that value with iterate function. If at some point the condition returns false, then the Observable\n * completes at that moment.\n *\n * Optionally you can pass a fourth parameter to `generate` - a result selector function which allows you\n * to immediately map the value that would normally be emitted by an Observable.\n *\n * If you find three anonymous functions in `generate` call hard to read, you can provide\n * a single object to the operator instead where the object has the properties: `initialState`,\n * `condition`, `iterate` and `resultSelector`, which should have respective values that you\n * would normally pass to `generate`. `resultSelector` is still optional, but that form\n * of calling `generate` allows you to omit `condition` as well. If you omit it, that means\n * condition always holds, or in other words the resulting Observable will never complete.\n *\n * Both forms of `generate` can optionally accept a scheduler. In case of a multi-parameter call,\n * scheduler simply comes as a last argument (no matter if there is a `resultSelector`\n * function or not). In case of a single-parameter call, you can provide it as a\n * `scheduler` property on the object passed to the operator. In both cases, a scheduler decides when\n * the next iteration of the loop will happen and therefore when the next value will be emitted\n * by the Observable. For example, to ensure that each value is pushed to the Observer\n * on a separate task in the event loop, you could use the `async` scheduler. Note that\n * by default (when no scheduler is passed) values are simply emitted synchronously.\n *\n *\n * ## Examples\n *\n * Use with condition and iterate functions\n *\n * ```ts\n * import { generate } from 'rxjs';\n *\n * const result = generate(0, x => x < 3, x => x + 1);\n *\n * result.subscribe({\n *   next: value => console.log(value),\n *   complete: () => console.log('Complete!')\n * });\n *\n * // Logs:\n * // 0\n * // 1\n * // 2\n * // 'Complete!'\n * ```\n *\n * Use with condition, iterate and resultSelector functions\n *\n * ```ts\n * import { generate } from 'rxjs';\n *\n * const result = generate(0, x => x < 3, x => x + 1, x => x * 1000);\n *\n * result.subscribe({\n *   next: value => console.log(value),\n *   complete: () => console.log('Complete!')\n * });\n *\n * // Logs:\n * // 0\n * // 1000\n * // 2000\n * // 'Complete!'\n * ```\n *\n * Use with options object\n *\n * ```ts\n * import { generate } from 'rxjs';\n *\n * const result = generate({\n *   initialState: 0,\n *   condition(value) { return value < 3; },\n *   iterate(value) { return value + 1; },\n *   resultSelector(value) { return value * 1000; }\n * });\n *\n * result.subscribe({\n *   next: value => console.log(value),\n *   complete: () => console.log('Complete!')\n * });\n *\n * // Logs:\n * // 0\n * // 1000\n * // 2000\n * // 'Complete!'\n * ```\n *\n * Use options object without condition function\n *\n * ```ts\n * import { generate } from 'rxjs';\n *\n * const result = generate({\n *   initialState: 0,\n *   iterate(value) { return value + 1; },\n *   resultSelector(value) { return value * 1000; }\n * });\n *\n * result.subscribe({\n *   next: value => console.log(value),\n *   complete: () => console.log('Complete!') // This will never run\n * });\n *\n * // Logs:\n * // 0\n * // 1000\n * // 2000\n * // 3000\n * // ...and never stops.\n * ```\n *\n * @see {@link from}\n *\n * @param initialState Initial state.\n * @param condition Condition to terminate generation (upon returning false).\n * @param iterate Iteration step function.\n * @param scheduler A {@link Scheduler} on which to run the generator loop. If not\n * provided, defaults to emitting immediately.\n * @return The generated sequence.\n * @deprecated Instead of passing separate arguments, use the options argument.\n * Signatures taking separate arguments will be removed in v8.\n */\nexport function generate<S>(\n  initialState: S,\n  condition: ConditionFunc<S>,\n  iterate: IterateFunc<S>,\n  scheduler?: SchedulerLike\n): Observable<S>;\n\n/**\n * Generates an observable sequence by running a state-driven loop\n * producing the sequence's elements, using the specified scheduler\n * to send out observer messages.\n * The overload accepts options object that might contain initial state, iterate,\n * condition and scheduler.\n *\n * ![](generate.png)\n *\n * ## Examples\n *\n * Use options object with condition function\n *\n * ```ts\n * import { generate } from 'rxjs';\n *\n * const result = generate({\n *   initialState: 0,\n *   condition: x => x < 3,\n *   iterate: x => x + 1\n * });\n *\n * result.subscribe({\n *   next: value => console.log(value),\n *   complete: () => console.log('Complete!')\n * });\n *\n * // Logs:\n * // 0\n * // 1\n * // 2\n * // 'Complete!'\n * ```\n *\n * @see {@link from}\n * @see {@link Observable}\n *\n * @param options Object that must contain initialState, iterate and might contain condition and scheduler.\n * @returns The generated sequence.\n */\nexport function generate<S>(options: GenerateBaseOptions<S>): Observable<S>;\n\n/**\n * Generates an observable sequence by running a state-driven loop\n * producing the sequence's elements, using the specified scheduler\n * to send out observer messages.\n * The overload accepts options object that might contain initial state, iterate,\n * condition, result selector and scheduler.\n *\n * ![](generate.png)\n *\n * ## Examples\n *\n * Use options object with condition and iterate function\n *\n * ```ts\n * import { generate } from 'rxjs';\n *\n * const result = generate({\n *   initialState: 0,\n *   condition: x => x < 3,\n *   iterate: x => x + 1,\n *   resultSelector: x => x\n * });\n *\n * result.subscribe({\n *   next: value => console.log(value),\n *   complete: () => console.log('Complete!')\n * });\n *\n * // Logs:\n * // 0\n * // 1\n * // 2\n * // 'Complete!'\n * ```\n *\n * @see {@link from}\n * @see {@link Observable}\n *\n * @param options Object that must contain initialState, iterate, resultSelector and might contain condition and scheduler.\n * @returns The generated sequence.\n */\nexport function generate<T, S>(options: GenerateOptions<T, S>): Observable<T>;\n\nexport function generate<T, S>(\n  initialStateOrOptions: S | GenerateOptions<T, S>,\n  condition?: ConditionFunc<S>,\n  iterate?: IterateFunc<S>,\n  resultSelectorOrScheduler?: ResultFunc<S, T> | SchedulerLike,\n  scheduler?: SchedulerLike\n): Observable<T> {\n  let resultSelector: ResultFunc<S, T>;\n  let initialState: S;\n\n  // TODO: Remove this as we move away from deprecated signatures\n  // and move towards a configuration object argument.\n  if (arguments.length === 1) {\n    // If we only have one argument, we can assume it is a configuration object.\n    // Note that folks not using TypeScript may trip over this.\n    ({\n      initialState,\n      condition,\n      iterate,\n      resultSelector = identity as ResultFunc<S, T>,\n      scheduler,\n    } = initialStateOrOptions as GenerateOptions<T, S>);\n  } else {\n    // Deprecated arguments path. Figure out what the user\n    // passed and set it here.\n    initialState = initialStateOrOptions as S;\n    if (!resultSelectorOrScheduler || isScheduler(resultSelectorOrScheduler)) {\n      resultSelector = identity as ResultFunc<S, T>;\n      scheduler = resultSelectorOrScheduler as SchedulerLike;\n    } else {\n      resultSelector = resultSelectorOrScheduler as ResultFunc<S, T>;\n    }\n  }\n\n  // The actual generator used to \"generate\" values.\n  function* gen() {\n    for (let state = initialState; !condition || condition(state); state = iterate!(state)) {\n      yield resultSelector(state);\n    }\n  }\n\n  // We use `defer` because we want to defer the creation of the iterator from the iterable.\n  return defer(\n    (scheduler\n      ? // If a scheduler was provided, use `scheduleIterable` to ensure that iteration/generation\n        // happens on the scheduler.\n        () => scheduleIterable(gen(), scheduler!)\n      : // Otherwise, if there's no scheduler, we can just use the generator function directly in\n        // `defer` and executing it will return the generator (which is iterable).\n        gen) as () => ObservableInput<T>\n  );\n}\n","import { Observable } from '../Observable';\nimport { defer } from './defer';\nimport { ObservableInput } from '../types';\n\n/**\n * Checks a boolean at subscription time, and chooses between one of two observable sources\n *\n * `iif` expects a function that returns a boolean (the `condition` function), and two sources,\n * the `trueResult` and the `falseResult`, and returns an Observable.\n *\n * At the moment of subscription, the `condition` function is called. If the result is `true`, the\n * subscription will be to the source passed as the `trueResult`, otherwise, the subscription will be\n * to the source passed as the `falseResult`.\n *\n * If you need to check more than two options to choose between more than one observable, have a look at the {@link defer} creation method.\n *\n * ## Examples\n *\n * Change at runtime which Observable will be subscribed\n *\n * ```ts\n * import { iif, of } from 'rxjs';\n *\n * let subscribeToFirst;\n * const firstOrSecond = iif(\n *   () => subscribeToFirst,\n *   of('first'),\n *   of('second')\n * );\n *\n * subscribeToFirst = true;\n * firstOrSecond.subscribe(value => console.log(value));\n *\n * // Logs:\n * // 'first'\n *\n * subscribeToFirst = false;\n * firstOrSecond.subscribe(value => console.log(value));\n *\n * // Logs:\n * // 'second'\n * ```\n *\n * Control access to an Observable\n *\n * ```ts\n * import { iif, of, EMPTY } from 'rxjs';\n *\n * let accessGranted;\n * const observableIfYouHaveAccess = iif(\n *   () => accessGranted,\n *   of('It seems you have an access...'),\n *   EMPTY\n * );\n *\n * accessGranted = true;\n * observableIfYouHaveAccess.subscribe({\n *   next: value => console.log(value),\n *   complete: () => console.log('The end')\n * });\n *\n * // Logs:\n * // 'It seems you have an access...'\n * // 'The end'\n *\n * accessGranted = false;\n * observableIfYouHaveAccess.subscribe({\n *   next: value => console.log(value),\n *   complete: () => console.log('The end')\n * });\n *\n * // Logs:\n * // 'The end'\n * ```\n *\n * @see {@link defer}\n *\n * @param condition Condition which Observable should be chosen.\n * @param trueResult An Observable that will be subscribed if condition is true.\n * @param falseResult An Observable that will be subscribed if condition is false.\n * @return An observable that proxies to `trueResult` or `falseResult`, depending on the result of the `condition` function.\n */\nexport function iif<T, F>(condition: () => boolean, trueResult: ObservableInput<T>, falseResult: ObservableInput<F>): Observable<T | F> {\n  return defer(() => (condition() ? trueResult : falseResult));\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput, ObservableInputTuple, SchedulerLike } from '../types';\nimport { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\n\nexport function merge<A extends readonly unknown[]>(...sources: [...ObservableInputTuple<A>]): Observable<A[number]>;\nexport function merge<A extends readonly unknown[]>(...sourcesAndConcurrency: [...ObservableInputTuple<A>, number?]): Observable<A[number]>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `mergeAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function merge<A extends readonly unknown[]>(\n  ...sourcesAndScheduler: [...ObservableInputTuple<A>, SchedulerLike?]\n): Observable<A[number]>;\n/** @deprecated The `scheduler` parameter will be removed in v8. Use `scheduled` and `mergeAll`. Details: https://rxjs.dev/deprecations/scheduler-argument */\nexport function merge<A extends readonly unknown[]>(\n  ...sourcesAndConcurrencyAndScheduler: [...ObservableInputTuple<A>, number?, SchedulerLike?]\n): Observable<A[number]>;\n\n/**\n * Creates an output Observable which concurrently emits all values from every\n * given input Observable.\n *\n * <span class=\"informal\">Flattens multiple Observables together by blending\n * their values into one Observable.</span>\n *\n * ![](merge.png)\n *\n * `merge` subscribes to each given input Observable (as arguments), and simply\n * forwards (without doing any transformation) all the values from all the input\n * Observables to the output Observable. The output Observable only completes\n * once all input Observables have completed. Any error delivered by an input\n * Observable will be immediately emitted on the output Observable.\n *\n * ## Examples\n *\n * Merge together two Observables: 1s interval and clicks\n *\n * ```ts\n * import { merge, fromEvent, interval } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * const timer = interval(1000);\n * const clicksOrTimer = merge(clicks, timer);\n * clicksOrTimer.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // timer will emit ascending values, one every second(1000ms) to console\n * // clicks logs MouseEvents to console every time the \"document\" is clicked\n * // Since the two streams are merged you see these happening\n * // as they occur.\n * ```\n *\n * Merge together 3 Observables, but run only 2 concurrently\n *\n * ```ts\n * import { interval, take, merge } from 'rxjs';\n *\n * const timer1 = interval(1000).pipe(take(10));\n * const timer2 = interval(2000).pipe(take(6));\n * const timer3 = interval(500).pipe(take(10));\n *\n * const concurrent = 2; // the argument\n * const merged = merge(timer1, timer2, timer3, concurrent);\n * merged.subscribe(x => console.log(x));\n *\n * // Results in the following:\n * // - First timer1 and timer2 will run concurrently\n * // - timer1 will emit a value every 1000ms for 10 iterations\n * // - timer2 will emit a value every 2000ms for 6 iterations\n * // - after timer1 hits its max iteration, timer2 will\n * //   continue, and timer3 will start to run concurrently with timer2\n * // - when timer2 hits its max iteration it terminates, and\n * //   timer3 will continue to emit a value every 500ms until it is complete\n * ```\n *\n * @see {@link mergeAll}\n * @see {@link mergeMap}\n * @see {@link mergeMapTo}\n * @see {@link mergeScan}\n *\n * @param args `ObservableInput`s to merge together. If the last parameter\n * is of type number, `merge` will use it to limit number of concurrently\n * subscribed `ObservableInput`s. If the last parameter is {@link SchedulerLike},\n * it will be used for scheduling the emission of values.\n * @return An Observable that emits items that are the result of every input Observable.\n */\nexport function merge(...args: (ObservableInput<unknown> | number | SchedulerLike)[]): Observable<unknown> {\n  const scheduler = popScheduler(args);\n  const concurrent = popNumber(args, Infinity);\n  const sources = args as ObservableInput<unknown>[];\n  return !sources.length\n    ? // No source provided\n      EMPTY\n    : sources.length === 1\n    ? // One source? Just return it.\n      innerFrom(sources[0])\n    : // Merge all sources\n      mergeAll(concurrent)(from(sources, scheduler));\n}\n","import { Observable } from '../Observable';\nimport { noop } from '../util/noop';\n\n/**\n * An Observable that emits no items to the Observer and never completes.\n *\n * ![](never.png)\n *\n * A simple Observable that emits neither values nor errors nor the completion\n * notification. It can be used for testing purposes or for composing with other\n * Observables. Please note that by never emitting a complete notification, this\n * Observable keeps the subscription from being disposed automatically.\n * Subscriptions need to be manually disposed.\n *\n * ##  Example\n *\n * Emit the number 7, then never emit anything else (not even complete)\n *\n * ```ts\n * import { NEVER, startWith } from 'rxjs';\n *\n * const info = () => console.log('Will not be called');\n *\n * const result = NEVER.pipe(startWith(7));\n * result.subscribe({\n *   next: x => console.log(x),\n *   error: info,\n *   complete: info\n * });\n * ```\n *\n * @see {@link Observable}\n * @see {@link EMPTY}\n * @see {@link of}\n * @see {@link throwError}\n */\nexport const NEVER = new Observable<never>(noop);\n\n/**\n * @deprecated Replaced with the {@link NEVER} constant. Will be removed in v8.\n */\nexport function never() {\n  return NEVER;\n}\n","import { Observable } from '../Observable';\nimport { SchedulerLike } from '../types';\nimport { from } from './from';\n\n/**\n * @deprecated Use `from(Object.entries(obj))` instead. Will be removed in v8.\n */\nexport function pairs<T>(arr: readonly T[], scheduler?: SchedulerLike): Observable<[string, T]>;\n/**\n * @deprecated Use `from(Object.entries(obj))` instead. Will be removed in v8.\n */\nexport function pairs<O extends Record<string, unknown>>(obj: O, scheduler?: SchedulerLike): Observable<[keyof O, O[keyof O]]>;\n/**\n * @deprecated Use `from(Object.entries(obj))` instead. Will be removed in v8.\n */\nexport function pairs<T>(iterable: Iterable<T>, scheduler?: SchedulerLike): Observable<[string, T]>;\n/**\n * @deprecated Use `from(Object.entries(obj))` instead. Will be removed in v8.\n */\nexport function pairs(\n  n: number | bigint | boolean | ((...args: any[]) => any) | symbol,\n  scheduler?: SchedulerLike\n): Observable<[never, never]>;\n\n/**\n * Convert an object into an Observable of `[key, value]` pairs.\n *\n * <span class=\"informal\">Turn entries of an object into a stream.</span>\n *\n * ![](pairs.png)\n *\n * `pairs` takes an arbitrary object and returns an Observable that emits arrays. Each\n * emitted array has exactly two elements - the first is a key from the object\n * and the second is a value corresponding to that key. Keys are extracted from\n * an object via `Object.keys` function, which means that they will be only\n * enumerable keys that are present on an object directly - not ones inherited\n * via prototype chain.\n *\n * By default, these arrays are emitted synchronously. To change that you can\n * pass a {@link SchedulerLike} as a second argument to `pairs`.\n *\n * ## Example\n *\n * Converts an object to an Observable\n *\n * ```ts\n * import { pairs } from 'rxjs';\n *\n * const obj = {\n *   foo: 42,\n *   bar: 56,\n *   baz: 78\n * };\n *\n * pairs(obj).subscribe({\n *   next: value => console.log(value),\n *   complete: () => console.log('Complete!')\n * });\n *\n * // Logs:\n * // ['foo', 42]\n * // ['bar', 56]\n * // ['baz', 78]\n * // 'Complete!'\n * ```\n *\n * ### Object.entries required\n *\n * In IE, you will need to polyfill `Object.entries` in order to use this.\n * [MDN has a polyfill here](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries)\n *\n * @param obj The object to inspect and turn into an Observable sequence.\n * @param scheduler An optional IScheduler to schedule when resulting\n * Observable will emit values.\n * @returns An observable sequence of [key, value] pairs from the object.\n * @deprecated Use `from(Object.entries(obj))` instead. Will be removed in v8.\n */\nexport function pairs(obj: any, scheduler?: SchedulerLike) {\n  return from(Object.entries(obj), scheduler as any);\n}\n","import { not } from '../util/not';\nimport { filter } from '../operators/filter';\nimport { ObservableInput } from '../types';\nimport { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\n\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function partition<T, U extends T, A>(\n  source: ObservableInput<T>,\n  predicate: (this: A, value: T, index: number) => value is U,\n  thisArg: A\n): [Observable<U>, Observable<Exclude<T, U>>];\nexport function partition<T, U extends T>(\n  source: ObservableInput<T>,\n  predicate: (value: T, index: number) => value is U\n): [Observable<U>, Observable<Exclude<T, U>>];\n\n/** @deprecated Use a closure instead of a `thisArg`. Signatures accepting a `thisArg` will be removed in v8. */\nexport function partition<T, A>(\n  source: ObservableInput<T>,\n  predicate: (this: A, value: T, index: number) => boolean,\n  thisArg: A\n): [Observable<T>, Observable<T>];\nexport function partition<T>(source: ObservableInput<T>, predicate: (value: T, index: number) => boolean): [Observable<T>, Observable<T>];\n\n/**\n * Splits the source Observable into two, one with values that satisfy a\n * predicate, and another with values that don't satisfy the predicate.\n *\n * <span class=\"informal\">It's like {@link filter}, but returns two Observables:\n * one like the output of {@link filter}, and the other with values that did not\n * pass the condition.</span>\n *\n * ![](partition.png)\n *\n * `partition` outputs an array with two Observables that partition the values\n * from the source Observable through the given `predicate` function. The first\n * Observable in that array emits source values for which the predicate argument\n * returns true. The second Observable emits source values for which the\n * predicate returns false. The first behaves like {@link filter} and the second\n * behaves like {@link filter} with the predicate negated.\n *\n * ## Example\n *\n * Partition a set of numbers into odds and evens observables\n *\n * ```ts\n * import { of, partition } from 'rxjs';\n *\n * const observableValues = of(1, 2, 3, 4, 5, 6);\n * const [evens$, odds$] = partition(observableValues, value => value % 2 === 0);\n *\n * odds$.subscribe(x => console.log('odds', x));\n * evens$.subscribe(x => console.log('evens', x));\n *\n * // Logs:\n * // odds 1\n * // odds 3\n * // odds 5\n * // evens 2\n * // evens 4\n * // evens 6\n * ```\n *\n * @see {@link filter}\n *\n * @param source The source `ObservableInput` that will be split into a tuple of\n * two Observable elements.\n * @param predicate A function that evaluates each value emitted by the source\n * Observable. If it returns `true`, the value is emitted on the first Observable\n * in the returned array, if `false` the value is emitted on the second Observable\n * in the array. The `index` parameter is the number `i` for the i-th source\n * emission that has happened since the subscription, starting from the number `0`.\n * @param thisArg An optional argument to determine the value of `this` in the\n * `predicate` function.\n * @return An array with two Observables: one with values that passed the\n * predicate, and another with values that did not pass the predicate.\n */\nexport function partition<T>(\n  source: ObservableInput<T>,\n  predicate: (this: any, value: T, index: number) => boolean,\n  thisArg?: any\n): [Observable<T>, Observable<T>] {\n  return [filter(predicate, thisArg)(innerFrom(source)), filter(not(predicate, thisArg))(innerFrom(source))] as [\n    Observable<T>,\n    Observable<T>\n  ];\n}\n","import { SchedulerLike } from '../types';\nimport { Observable } from '../Observable';\nimport { EMPTY } from './empty';\n\nexport function range(start: number, count?: number): Observable<number>;\n\n/**\n * @deprecated The `scheduler` parameter will be removed in v8. Use `range(start, count).pipe(observeOn(scheduler))` instead. Details: Details: https://rxjs.dev/deprecations/scheduler-argument\n */\nexport function range(start: number, count: number | undefined, scheduler: SchedulerLike): Observable<number>;\n\n/**\n * Creates an Observable that emits a sequence of numbers within a specified\n * range.\n *\n * <span class=\"informal\">Emits a sequence of numbers in a range.</span>\n *\n * ![](range.png)\n *\n * `range` operator emits a range of sequential integers, in order, where you\n * select the `start` of the range and its `length`. By default, uses no\n * {@link SchedulerLike} and just delivers the notifications synchronously, but may use\n * an optional {@link SchedulerLike} to regulate those deliveries.\n *\n * ## Example\n *\n * Produce a range of numbers\n *\n * ```ts\n * import { range } from 'rxjs';\n *\n * const numbers = range(1, 3);\n *\n * numbers.subscribe({\n *   next: value => console.log(value),\n *   complete: () => console.log('Complete!')\n * });\n *\n * // Logs:\n * // 1\n * // 2\n * // 3\n * // 'Complete!'\n * ```\n *\n * @see {@link timer}\n * @see {@link interval}\n *\n * @param start The value of the first integer in the sequence.\n * @param count The number of sequential integers to generate.\n * @param scheduler A {@link SchedulerLike} to use for scheduling the emissions\n * of the notifications.\n * @return An Observable of numbers that emits a finite range of sequential integers.\n */\nexport function range(start: number, count?: number, scheduler?: SchedulerLike): Observable<number> {\n  if (count == null) {\n    // If one argument was passed, it's the count, not the start.\n    count = start;\n    start = 0;\n  }\n\n  if (count <= 0) {\n    // No count? We're going nowhere. Return EMPTY.\n    return EMPTY;\n  }\n\n  // Where the range should stop.\n  const end = count + start;\n\n  return new Observable(\n    scheduler\n      ? // The deprecated scheduled path.\n        (subscriber) => {\n          let n = start;\n          return scheduler.schedule(function () {\n            if (n < end) {\n              subscriber.next(n++);\n              this.schedule();\n            } else {\n              subscriber.complete();\n            }\n          });\n        }\n      : // Standard synchronous range.\n        (subscriber) => {\n          let n = start;\n          while (n < end && !subscriber.closed) {\n            subscriber.next(n++);\n          }\n          subscriber.complete();\n        }\n  );\n}\n","import { Observable } from '../Observable';\nimport { Unsubscribable, ObservableInput, ObservedValueOf } from '../types';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\n\n/**\n * Creates an Observable that uses a resource which will be disposed at the same time as the Observable.\n *\n * <span class=\"informal\">Use it when you catch yourself cleaning up after an Observable.</span>\n *\n * `using` is a factory operator, which accepts two functions. First function returns a disposable resource.\n * It can be an arbitrary object that implements `unsubscribe` method. Second function will be injected with\n * that object and should return an Observable. That Observable can use resource object during its execution.\n * Both functions passed to `using` will be called every time someone subscribes - neither an Observable nor\n * resource object will be shared in any way between subscriptions.\n *\n * When Observable returned by `using` is subscribed, Observable returned from the second function will be subscribed\n * as well. All its notifications (nexted values, completion and error events) will be emitted unchanged by the output\n * Observable. If however someone unsubscribes from the Observable or source Observable completes or errors by itself,\n * the `unsubscribe` method on resource object will be called. This can be used to do any necessary clean up, which\n * otherwise would have to be handled by hand. Note that complete or error notifications are not emitted when someone\n * cancels subscription to an Observable via `unsubscribe`, so `using` can be used as a hook, allowing you to make\n * sure that all resources which need to exist during an Observable execution will be disposed at appropriate time.\n *\n * @see {@link defer}\n *\n * @param resourceFactory A function which creates any resource object that implements `unsubscribe` method.\n * @param observableFactory A function which creates an Observable, that can use injected resource object.\n * @return An Observable that behaves the same as Observable returned by `observableFactory`, but\n * which - when completed, errored or unsubscribed - will also call `unsubscribe` on created resource object.\n */\nexport function using<T extends ObservableInput<any>>(\n  resourceFactory: () => Unsubscribable | void,\n  observableFactory: (resource: Unsubscribable | void) => T | void\n): Observable<ObservedValueOf<T>> {\n  return new Observable<ObservedValueOf<T>>((subscriber) => {\n    const resource = resourceFactory();\n    const result = observableFactory(resource);\n    const source = result ? innerFrom(result) : EMPTY;\n    source.subscribe(subscriber);\n    return () => {\n      // NOTE: Optional chaining did not work here.\n      // Related TS Issue: https://github.com/microsoft/TypeScript/issues/40818\n      if (resource) {\n        resource.unsubscribe();\n      }\n    };\n  });\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map","//////////////////////////////////////////////////////////\n// Here we need to reference our other deep imports\n// so VS code will figure out where they are\n// see conversation here:\n// https://github.com/microsoft/TypeScript/issues/43034\n//////////////////////////////////////////////////////////\n\n// tslint:disable: no-reference\n// It's tempting to add references to all of the deep-import locations, but\n// adding references to those that require DOM types breaks Node projects.\n/// <reference path=\"./operators/index.ts\" />\n/// <reference path=\"./testing/index.ts\" />\n// tslint:enable: no-reference\n\n/* Observable */\nexport { Observable } from './internal/Observable';\nexport { ConnectableObservable } from './internal/observable/ConnectableObservable';\nexport { GroupedObservable } from './internal/operators/groupBy';\nexport { Operator } from './internal/Operator';\nexport { observable } from './internal/symbol/observable';\nexport { animationFrames } from './internal/observable/dom/animationFrames';\n\n/* Subjects */\nexport { Subject } from './internal/Subject';\nexport { BehaviorSubject } from './internal/BehaviorSubject';\nexport { ReplaySubject } from './internal/ReplaySubject';\nexport { AsyncSubject } from './internal/AsyncSubject';\n\n/* Schedulers */\nexport { asap, asapScheduler } from './internal/scheduler/asap';\nexport { async, asyncScheduler } from './internal/scheduler/async';\nexport { queue, queueScheduler } from './internal/scheduler/queue';\nexport { animationFrame, animationFrameScheduler } from './internal/scheduler/animationFrame';\nexport { VirtualTimeScheduler, VirtualAction } from './internal/scheduler/VirtualTimeScheduler';\nexport { Scheduler } from './internal/Scheduler';\n\n/* Subscription */\nexport { Subscription } from './internal/Subscription';\nexport { Subscriber } from './internal/Subscriber';\n\n/* Notification */\nexport { Notification, NotificationKind } from './internal/Notification';\n\n/* Utils */\nexport { pipe } from './internal/util/pipe';\nexport { noop } from './internal/util/noop';\nexport { identity } from './internal/util/identity';\nexport { isObservable } from './internal/util/isObservable';\n\n/* Promise Conversion */\nexport { lastValueFrom } from './internal/lastValueFrom';\nexport { firstValueFrom } from './internal/firstValueFrom';\n\n/* Error types */\nexport { ArgumentOutOfRangeError } from './internal/util/ArgumentOutOfRangeError';\nexport { EmptyError } from './internal/util/EmptyError';\nexport { NotFoundError } from './internal/util/NotFoundError';\nexport { ObjectUnsubscribedError } from './internal/util/ObjectUnsubscribedError';\nexport { SequenceError } from './internal/util/SequenceError';\nexport { TimeoutError } from './internal/operators/timeout';\nexport { UnsubscriptionError } from './internal/util/UnsubscriptionError';\n\n/* Static observable creation exports */\nexport { bindCallback } from './internal/observable/bindCallback';\nexport { bindNodeCallback } from './internal/observable/bindNodeCallback';\nexport { combineLatest } from './internal/observable/combineLatest';\nexport { concat } from './internal/observable/concat';\nexport { connectable } from './internal/observable/connectable';\nexport { defer } from './internal/observable/defer';\nexport { empty } from './internal/observable/empty';\nexport { forkJoin } from './internal/observable/forkJoin';\nexport { from } from './internal/observable/from';\nexport { fromEvent } from './internal/observable/fromEvent';\nexport { fromEventPattern } from './internal/observable/fromEventPattern';\nexport { generate } from './internal/observable/generate';\nexport { iif } from './internal/observable/iif';\nexport { interval } from './internal/observable/interval';\nexport { merge } from './internal/observable/merge';\nexport { never } from './internal/observable/never';\nexport { of } from './internal/observable/of';\nexport { onErrorResumeNext } from './internal/observable/onErrorResumeNext';\nexport { pairs } from './internal/observable/pairs';\nexport { partition } from './internal/observable/partition';\nexport { race } from './internal/observable/race';\nexport { range } from './internal/observable/range';\nexport { throwError } from './internal/observable/throwError';\nexport { timer } from './internal/observable/timer';\nexport { using } from './internal/observable/using';\nexport { zip } from './internal/observable/zip';\nexport { scheduled } from './internal/scheduled/scheduled';\n\n/* Constants */\nexport { EMPTY } from './internal/observable/empty';\nexport { NEVER } from './internal/observable/never';\n\n/* Types */\nexport * from './internal/types';\n\n/* Config */\nexport { config, GlobalConfig } from './internal/config';\n\n/* Operators */\nexport { audit } from './internal/operators/audit';\nexport { auditTime } from './internal/operators/auditTime';\nexport { buffer } from './internal/operators/buffer';\nexport { bufferCount } from './internal/operators/bufferCount';\nexport { bufferTime } from './internal/operators/bufferTime';\nexport { bufferToggle } from './internal/operators/bufferToggle';\nexport { bufferWhen } from './internal/operators/bufferWhen';\nexport { catchError } from './internal/operators/catchError';\nexport { combineAll } from './internal/operators/combineAll';\nexport { combineLatestAll } from './internal/operators/combineLatestAll';\nexport { combineLatestWith } from './internal/operators/combineLatestWith';\nexport { concatAll } from './internal/operators/concatAll';\nexport { concatMap } from './internal/operators/concatMap';\nexport { concatMapTo } from './internal/operators/concatMapTo';\nexport { concatWith } from './internal/operators/concatWith';\nexport { connect, ConnectConfig } from './internal/operators/connect';\nexport { count } from './internal/operators/count';\nexport { debounce } from './internal/operators/debounce';\nexport { debounceTime } from './internal/operators/debounceTime';\nexport { defaultIfEmpty } from './internal/operators/defaultIfEmpty';\nexport { delay } from './internal/operators/delay';\nexport { delayWhen } from './internal/operators/delayWhen';\nexport { dematerialize } from './internal/operators/dematerialize';\nexport { distinct } from './internal/operators/distinct';\nexport { distinctUntilChanged } from './internal/operators/distinctUntilChanged';\nexport { distinctUntilKeyChanged } from './internal/operators/distinctUntilKeyChanged';\nexport { elementAt } from './internal/operators/elementAt';\nexport { endWith } from './internal/operators/endWith';\nexport { every } from './internal/operators/every';\nexport { exhaust } from './internal/operators/exhaust';\nexport { exhaustAll } from './internal/operators/exhaustAll';\nexport { exhaustMap } from './internal/operators/exhaustMap';\nexport { expand } from './internal/operators/expand';\nexport { filter } from './internal/operators/filter';\nexport { finalize } from './internal/operators/finalize';\nexport { find } from './internal/operators/find';\nexport { findIndex } from './internal/operators/findIndex';\nexport { first } from './internal/operators/first';\nexport { groupBy, BasicGroupByOptions, GroupByOptionsWithElement } from './internal/operators/groupBy';\nexport { ignoreElements } from './internal/operators/ignoreElements';\nexport { isEmpty } from './internal/operators/isEmpty';\nexport { last } from './internal/operators/last';\nexport { map } from './internal/operators/map';\nexport { mapTo } from './internal/operators/mapTo';\nexport { materialize } from './internal/operators/materialize';\nexport { max } from './internal/operators/max';\nexport { mergeAll } from './internal/operators/mergeAll';\nexport { flatMap } from './internal/operators/flatMap';\nexport { mergeMap } from './internal/operators/mergeMap';\nexport { mergeMapTo } from './internal/operators/mergeMapTo';\nexport { mergeScan } from './internal/operators/mergeScan';\nexport { mergeWith } from './internal/operators/mergeWith';\nexport { min } from './internal/operators/min';\nexport { multicast } from './internal/operators/multicast';\nexport { observeOn } from './internal/operators/observeOn';\nexport { onErrorResumeNextWith } from './internal/operators/onErrorResumeNextWith';\nexport { pairwise } from './internal/operators/pairwise';\nexport { pluck } from './internal/operators/pluck';\nexport { publish } from './internal/operators/publish';\nexport { publishBehavior } from './internal/operators/publishBehavior';\nexport { publishLast } from './internal/operators/publishLast';\nexport { publishReplay } from './internal/operators/publishReplay';\nexport { raceWith } from './internal/operators/raceWith';\nexport { reduce } from './internal/operators/reduce';\nexport { repeat, RepeatConfig } from './internal/operators/repeat';\nexport { repeatWhen } from './internal/operators/repeatWhen';\nexport { retry, RetryConfig } from './internal/operators/retry';\nexport { retryWhen } from './internal/operators/retryWhen';\nexport { refCount } from './internal/operators/refCount';\nexport { sample } from './internal/operators/sample';\nexport { sampleTime } from './internal/operators/sampleTime';\nexport { scan } from './internal/operators/scan';\nexport { sequenceEqual } from './internal/operators/sequenceEqual';\nexport { share, ShareConfig } from './internal/operators/share';\nexport { shareReplay, ShareReplayConfig } from './internal/operators/shareReplay';\nexport { single } from './internal/operators/single';\nexport { skip } from './internal/operators/skip';\nexport { skipLast } from './internal/operators/skipLast';\nexport { skipUntil } from './internal/operators/skipUntil';\nexport { skipWhile } from './internal/operators/skipWhile';\nexport { startWith } from './internal/operators/startWith';\nexport { subscribeOn } from './internal/operators/subscribeOn';\nexport { switchAll } from './internal/operators/switchAll';\nexport { switchMap } from './internal/operators/switchMap';\nexport { switchMapTo } from './internal/operators/switchMapTo';\nexport { switchScan } from './internal/operators/switchScan';\nexport { take } from './internal/operators/take';\nexport { takeLast } from './internal/operators/takeLast';\nexport { takeUntil } from './internal/operators/takeUntil';\nexport { takeWhile } from './internal/operators/takeWhile';\nexport { tap, TapObserver } from './internal/operators/tap';\nexport { throttle, ThrottleConfig } from './internal/operators/throttle';\nexport { throttleTime } from './internal/operators/throttleTime';\nexport { throwIfEmpty } from './internal/operators/throwIfEmpty';\nexport { timeInterval } from './internal/operators/timeInterval';\nexport { timeout, TimeoutConfig, TimeoutInfo } from './internal/operators/timeout';\nexport { timeoutWith } from './internal/operators/timeoutWith';\nexport { timestamp } from './internal/operators/timestamp';\nexport { toArray } from './internal/operators/toArray';\nexport { window } from './internal/operators/window';\nexport { windowCount } from './internal/operators/windowCount';\nexport { windowTime } from './internal/operators/windowTime';\nexport { windowToggle } from './internal/operators/windowToggle';\nexport { windowWhen } from './internal/operators/windowWhen';\nexport { withLatestFrom } from './internal/operators/withLatestFrom';\nexport { zipAll } from './internal/operators/zipAll';\nexport { zipWith } from './internal/operators/zipWith';\n","/**\n * Backend Entry Point\n *\n * Exports all core functionality including database access and backend services.\n * Use this entry point for Node.js, NestJS, Express, and other server-side environments.\n *\n * @example\n * ```typescript\n * import { Core, DbService, FeatureFlagModule } from '@plyaz/core/backend';\n *\n * await Core.initialize({\n *   appContext: 'backoffice',\n *   db: { adapter: 'drizzle' },\n *   api: { baseURL: 'https://api.example.com' },\n * });\n *\n * const db = Core.db;\n * ```\n */\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Backend Dependencies Registration\n// ─────────────────────────────────────────────────────────────────────────────\n// Register backend-only services so CoreInitializer can use them without\n// static imports that would bundle backend dependencies in frontend builds.\n\nimport { setCoreDependencies } from './config/dependencies';\nimport { setGetCoreDomainServices, setGetCoreStreamEndpoints } from './init/CoreInitializer';\nimport { getCoreDomainServices } from './init/getCoreDomainServices';\nimport { getCoreStreamEndpoints } from './init/getCoreStreamEndpoints';\nimport { DbService } from './services/DbService';\nimport { CacheService } from './services/CacheService';\nimport { StorageService } from './services/StorageService';\nimport { NotificationService } from './services/NotificationService';\nimport * as ServerErrorMiddleware from '@plyaz/errors/middleware/backend';\n\n// Register all backend dependencies at import time\nsetCoreDependencies({\n  DbService,\n  CacheService,\n  StorageService,\n  NotificationService,\n  ServerErrorMiddleware,\n});\n\n// Inject the domain services loader for Core.initialize()\nsetGetCoreDomainServices(getCoreDomainServices);\n\n// Inject the stream endpoints loader for Core.initialize()\nsetGetCoreStreamEndpoints(getCoreStreamEndpoints);\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Exports\n// ─────────────────────────────────────────────────────────────────────────────\n\n// NOTE: Do NOT re-export from './index' - it includes React-based frontend code\n// Only export backend-safe modules\n\n// Global type declarations\nimport '@plyaz/types/globals';\n\n// Core initializer and services (no React)\nexport * from './init';\n\n// Domain base classes (backend-safe only)\nexport { BaseDomainService } from './domain/base/BaseDomainService';\nexport { BaseBackendDomainService } from './domain/base/BaseBackendDomainService';\nexport { BaseMapper } from './domain/base/BaseMapper';\nexport { BaseValidator } from './domain/base/BaseValidator';\nexport * from './utils/mapperUtils';\n\n// Backend domain services\nexport * from './domain/example/BackendExampleDomainService';\nexport * from './domain/files/BackendFilesDomainService';\nexport * from './domain/notifications/BackendNotificationsDomainService';\n\n// Models/Repositories (backend-safe)\nexport * from './models';\n\n// Other backend-safe modules\nexport * from './engine';\nexport * from './base';\nexport * from './utils';\nexport * from './services';\nexport * from './version';\nexport * from './config';\nexport * from './events';\n\n// Explicit backend-specific exports for clarity\nexport { DbService, DEFAULT_ENCRYPTION_FIELDS, type DbServiceInstance } from './services/DbService';\n\n// Cache service (backend-only due to ioredis)\nexport { CacheService, getCacheService } from './services/CacheService';\n\n// Server-only services (have puppeteer/playwright dependencies)\nexport { StorageService, type StorageServiceInstance } from './services/StorageService';\nexport {\n  NotificationService,\n  type NotificationServiceInstance,\n} from './services/NotificationService';\n\n// Backend modules (NestJS)\nexport * from './backend';\n\n// NestJS utilities\nexport { configureNestApp } from './init/nestjs';\n\n// Adapters\nexport * from './adapters';\n","/**\n * Backend-only: Get default domain services based on runtime.\n *\n * IMPORTANT: This file must only be imported from entry-backend.ts.\n * Do NOT import from frontend entries or CoreInitializer directly.\n */\n\nimport type { CoreServiceEntry } from '@plyaz/types/core';\n\n/**\n * Get default domain services based on runtime.\n * Dynamically imports services to avoid bundling backend code in frontend.\n *\n * @internal Only used by backend entry point\n */\nexport async function getCoreDomainServices(isFrontend: boolean): Promise<CoreServiceEntry[]> {\n  const services: CoreServiceEntry[] = [];\n\n  if (isFrontend) {\n    // Frontend: Only load frontend-safe services\n    const [\n      { FrontendExampleDomainService },\n      { FrontendFilesDomainService },\n      { FrontendNotificationsDomainService },\n    ] = await Promise.all([\n      import('../domain/example/FrontendExampleDomainService'),\n      import('../domain/files/FrontendFilesDomainService'),\n\n      import('../domain/notifications/FrontendNotificationsDomainService'),\n    ]);\n    services.push(\n      { service: FrontendExampleDomainService, config: { enabled: true } },\n      { service: FrontendFilesDomainService, config: { enabled: true } },\n      { service: FrontendNotificationsDomainService, config: { enabled: true } }\n    );\n  } else {\n    // Backend: Load both backend and frontend services\n    const [\n      { BackendExampleDomainService },\n      { FrontendExampleDomainService },\n      { BackendFilesDomainService },\n      { FrontendFilesDomainService },\n      { BackendNotificationsDomainService },\n      { FrontendNotificationsDomainService },\n    ] = await Promise.all([\n      import('../domain/example/BackendExampleDomainService'),\n      import('../domain/example/FrontendExampleDomainService'),\n      import('../domain/files/BackendFilesDomainService'),\n      import('../domain/files/FrontendFilesDomainService'),\n      import('../domain/notifications/BackendNotificationsDomainService'),\n      import('../domain/notifications/FrontendNotificationsDomainService'),\n    ]);\n    services.push(\n      { service: BackendExampleDomainService, config: { enabled: true } },\n      { service: FrontendExampleDomainService, config: { enabled: true } },\n      { service: BackendFilesDomainService, config: { enabled: true } },\n      { service: FrontendFilesDomainService, config: { enabled: true } },\n      { service: BackendNotificationsDomainService, config: { enabled: true } },\n      { service: FrontendNotificationsDomainService, config: { enabled: true } }\n    );\n  }\n\n  return services;\n}\n","/**\n * Backend-only: Get default stream endpoints.\n *\n * IMPORTANT: This file must only be imported from entry-backend.ts.\n * Do NOT import from frontend entries or CoreInitializer directly.\n *\n * Stream endpoints are backend-only (SSE/WebSocket servers).\n */\n\nimport type { StreamEndpointEntry } from '@plyaz/types/core';\n\n/**\n * Get default stream endpoints for the streaming system.\n * Dynamically imports endpoints to avoid bundling in frontend.\n *\n * @internal Only used by backend entry point\n */\nexport async function getCoreStreamEndpoints(): Promise<StreamEndpointEntry[]> {\n  const [{ FilesStreamEndpoint }, { NotificationsStreamEndpoint }, { SystemStreamEndpoint }] =\n    await Promise.all([\n      import('../domain/files/streaming/FilesStreamEndpoint'),\n      import('../domain/notifications/streaming/NotificationsStreamEndpoint'),\n      import('../events/streaming/endpoints/system/SystemStreamEndpoint'),\n    ]);\n\n  return [\n    {\n      endpoint: FilesStreamEndpoint,\n      config: {\n        enabled: true,\n        name: 'files',\n        channels: ['uploads', 'downloads', 'generations'],\n      },\n    },\n    {\n      endpoint: NotificationsStreamEndpoint,\n      config: {\n        enabled: true,\n        name: 'notifications',\n        channels: ['notifications', 'user:notifications:'],\n      },\n    },\n    {\n      endpoint: SystemStreamEndpoint,\n      config: {\n        enabled: true,\n        name: 'system',\n        channels: ['system'],\n      },\n    },\n  ];\n}\n","/**\n * CacheService - Singleton Cache Manager\n *\n * @description Manages cache instance for the entire application using a singleton pattern.\n * This service wraps the CacheManager from @plyaz/core/base/cache and provides a centralized\n * way to initialize and access caching across all backend services.\n *\n * **Architecture:**\n * - Supports multiple strategies: Memory (in-process), Redis (distributed)\n * - Configurable TTL, key prefixing, and strategy-specific options\n * - Singleton pattern ensures single cache instance across application\n *\n * **Strategy Configuration:**\n * - **Memory**: In-process LRU cache, no external dependencies\n * - **Redis**: Distributed cache using ioredis, requires Redis server\n *\n * **Required Environment Variables (Redis):**\n * - REDIS_URL: Redis connection string (e.g., redis://localhost:6379)\n * - Or REDIS_HOST, REDIS_PORT, REDIS_PASSWORD for individual config\n *\n * @example Using with Core.initialize() (Recommended)\n * ```typescript\n * import { Core } from '@plyaz/core';\n *\n * await Core.initialize({\n *   envPath: '.env',\n *   cache: {\n *     strategy: 'memory',\n *     isEnabled: true,\n *     ttl: 300, // 5 minutes default\n *   },\n * });\n *\n * // Access via Core.cache\n * const cache = Core.cache.getCacheManager();\n * await cache.set('user:123', userData, 600); // 10 minutes TTL\n * const cached = await cache.get('user:123');\n * ```\n *\n * @example With Redis Strategy\n * ```typescript\n * await Core.initialize({\n *   envPath: '.env',\n *   cache: {\n *     strategy: 'redis',\n *     isEnabled: true,\n *     ttl: 300,\n *     prefix: 'myapp',\n *     redis: {\n *       url: process.env.REDIS_URL,\n *       // Or individual options:\n *       // host: process.env.REDIS_HOST,\n *       // port: parseInt(process.env.REDIS_PORT),\n *       // password: process.env.REDIS_PASSWORD,\n *     },\n *   },\n * });\n * ```\n *\n * @example Direct Usage\n * ```typescript\n * import { CacheService } from '@plyaz/core/services';\n *\n * await CacheService.initialize({\n *   strategy: 'memory',\n *   isEnabled: true,\n *   ttl: 300,\n * });\n *\n * const cache = CacheService.getInstance().getCacheManager();\n * await cache.set('key', value);\n * ```\n *\n * @example Skip Cache (Disable Caching)\n * ```typescript\n * await Core.initialize({\n *   skipCache: true, // Cache will not be initialized\n * });\n * ```\n *\n * @fileoverview Cache service singleton\n * @module services/CacheService\n */\n\nimport { CacheManager } from '../base/cache';\nimport { CorePackageError } from '@plyaz/errors';\nimport { ERROR_CODES } from '@plyaz/types/errors';\nimport type { CoreCacheConfig, CoreCacheServiceInstance } from '@plyaz/types/core';\nimport { CORE_EVENTS, type CoreCacheErrorPayload } from '@plyaz/types/core';\nimport type { CacheConfig } from '@plyaz/types';\nimport { CACHE_STRATEGIES } from '@plyaz/types/features';\nimport { CoreLogger } from '@plyaz/logger';\nimport { TIME_CONSTANTS } from '@plyaz/config';\nimport { CoreEventManager } from '../events/CoreEventManager';\n\n/**\n * Global Singleton Pattern using globalThis\n *\n * @see CoreEventManager.ts for detailed explanation of why this pattern is needed.\n *\n * TL;DR: In Next.js and similar frameworks, module isolation can create multiple singleton\n * instances. Using globalThis + Symbol.for() ensures ONE instance per process, preventing\n * issues like multiple cache instances with inconsistent data across API routes.\n */\nconst CACHE_SERVICE_KEY = Symbol.for('plyaz.CacheService');\n\nfunction getCacheServiceInstance(): CacheService | null {\n  const globalAny = globalThis as unknown as { [key: symbol]: CacheService | null };\n  return globalAny[CACHE_SERVICE_KEY] ?? null;\n}\n\nfunction setCacheServiceInstance(instance: CacheService | null): void {\n  const globalAny = globalThis as unknown as { [key: symbol]: CacheService | null };\n  globalAny[CACHE_SERVICE_KEY] = instance;\n}\n\n/**\n * Singleton service for managing application-wide cache\n *\n * Provides centralized access to cache functionality across all backend services.\n * Automatically integrates with BaseBackendDomainService when initialized.\n */\nexport class CacheService implements CoreCacheServiceInstance {\n  /** Cache manager instance */\n  private cacheManager: CacheManager | null = null;\n\n  /** Configuration used to initialize cache */\n  private config: CoreCacheConfig | null = null;\n\n  /** Logger instance */\n  private logger = new CoreLogger({ service: 'CacheService' });\n\n  /** Private constructor to enforce singleton */\n  private constructor() {}\n\n  // ─────────────────────────────────────────────────────────────────\n  // Error Handling\n  // ─────────────────────────────────────────────────────────────────\n\n  /**\n   * Emits a cache error event via CoreEventManager.\n   * Called when cache operations fail to integrate with global error handling.\n   */\n  private emitCacheError(\n    error: unknown,\n    operation: string,\n    options?: { key?: string; recoverable?: boolean }\n  ): void {\n    const payload: CoreCacheErrorPayload = {\n      error,\n      operation,\n      key: options?.key,\n      recoverable: options?.recoverable ?? true,\n    };\n    CoreEventManager.emit(CORE_EVENTS.CACHE.ERROR, payload);\n  }\n\n  /**\n   * Initialize the cache service with configuration\n   *\n   * @param config - Cache configuration\n   * @throws {CorePackageError} If already initialized or config is invalid\n   *\n   * @example\n   * ```typescript\n   * await CacheService.initialize({\n   *   strategy: 'redis',\n   *   isEnabled: true,\n   *   ttl: 300,\n   *   prefix: 'app',\n   *   redis: { url: process.env.REDIS_URL },\n   * });\n   * ```\n   */\n  static async initialize(config: CoreCacheConfig): Promise<void> {\n    const existingInstance = getCacheServiceInstance();\n    if (existingInstance?.cacheManager) {\n      throw new CorePackageError(\n        'CacheService is already initialized. Call reset() first if you need to reinitialize.',\n        ERROR_CODES.VALIDATION_ERROR\n      );\n    }\n\n    const service = existingInstance ?? new CacheService();\n    setCacheServiceInstance(service);\n\n    try {\n      service.logger.info('[CacheService] Initializing cache...', {\n        strategy: config.strategy,\n        isEnabled: config.isEnabled,\n        ttl: config.ttl,\n      });\n\n      // Validate configuration\n      service.validateConfig(config);\n\n      // Create cache manager with validated config (ensure required fields)\n      const cacheConfig: CacheConfig = {\n        ...config,\n        ttl: config.ttl ?? TIME_CONSTANTS.DEFAULT_CACHE_TTL,\n      };\n      service.cacheManager = new CacheManager(cacheConfig);\n      service.config = config;\n\n      service.logger.info('[CacheService] Cache initialized successfully', {\n        strategy: config.strategy,\n      });\n    } catch (error) {\n      service.logger.error('[CacheService] Failed to initialize cache', { error });\n      // Emit cache error event for global error handling\n      service.emitCacheError(error, 'initialize', { recoverable: false });\n      throw new CorePackageError(\n        `Failed to initialize cache: ${error instanceof Error ? error.message : String(error)}`,\n        ERROR_CODES.VALIDATION_ERROR,\n        { cause: error instanceof Error ? error : undefined }\n      );\n    }\n  }\n\n  /**\n   * Get the singleton instance\n   *\n   * @throws {CorePackageError} If not initialized\n   * @returns CacheService singleton instance\n   *\n   * @example\n   * ```typescript\n   * const cacheService = CacheService.getInstance();\n   * const cache = cacheService.getCacheManager();\n   * ```\n   */\n  static getInstance(): CacheService {\n    const instance = getCacheServiceInstance();\n    if (!instance) {\n      throw new CorePackageError(\n        'CacheService not initialized. Call CacheService.initialize() first.',\n        ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n      );\n    }\n    return instance;\n  }\n\n  /**\n   * Get the cache manager instance\n   *\n   * @throws {CorePackageError} If cache not initialized\n   * @returns CacheManager instance\n   *\n   * @example\n   * ```typescript\n   * const cache = CacheService.getInstance().getCacheManager();\n   * await cache.set('user:123', userData);\n   * const user = await cache.get('user:123');\n   * ```\n   */\n  getCacheManager(): CacheManager {\n    if (!this.cacheManager) {\n      throw new CorePackageError(\n        'Cache manager not initialized. Call CacheService.initialize() first.',\n        ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n      );\n    }\n    return this.cacheManager;\n  }\n\n  /**\n   * Get current cache configuration\n   *\n   * @returns Current cache configuration or null if not initialized\n   */\n  getConfig(): CoreCacheConfig | null {\n    return this.config;\n  }\n\n  /**\n   * Check if cache is initialized and enabled\n   *\n   * @returns True if cache is ready to use\n   */\n  isInitialized(): boolean {\n    return this.cacheManager !== null && (this.config?.isEnabled ?? false);\n  }\n\n  /**\n   * Reset the cache service (useful for testing)\n   *\n   * @internal\n   */\n  static reset(): void {\n    const instance = getCacheServiceInstance();\n    if (instance?.cacheManager) {\n      instance.logger.info('[CacheService] Resetting cache service');\n      // Clear cache manager\n      instance.cacheManager.clear().catch(error => {\n        instance?.logger.error('[CacheService] Error clearing cache during reset', { error });\n      });\n    }\n    setCacheServiceInstance(null);\n  }\n\n  /**\n   * Validate cache configuration\n   *\n   * @param config - Configuration to validate\n   * @throws {CorePackageError} If configuration is invalid\n   * @private\n   */\n  // eslint-disable-next-line complexity\n  private validateConfig(config: CoreCacheConfig): void {\n    // Validate strategy\n    if (!CACHE_STRATEGIES.includes(config.strategy as (typeof CACHE_STRATEGIES)[number])) {\n      throw new CorePackageError(\n        `Invalid cache strategy: ${config.strategy}. Must be one of: ${CACHE_STRATEGIES.join(', ')}`,\n        ERROR_CODES.VALIDATION_ERROR\n      );\n    }\n\n    // Validate TTL\n    if (config.ttl !== undefined && (config.ttl < 0 || !Number.isFinite(config.ttl))) {\n      throw new CorePackageError(\n        `Invalid TTL value: ${config.ttl}. Must be a positive number.`,\n        ERROR_CODES.VALIDATION_ERROR\n      );\n    }\n\n    // Validate Redis config when strategy is redis\n    if (config.strategy === 'redis') {\n      if (!config.redis?.url && !config.redis?.host) {\n        throw new CorePackageError(\n          'Redis strategy requires either redis.url or redis.host configuration',\n          ERROR_CODES.VALIDATION_ERROR\n        );\n      }\n    }\n\n    this.logger.debug('[CacheService] Configuration validated successfully');\n  }\n}\n\n// Export singleton instance getter for convenience\nexport const getCacheService = (): CacheService => CacheService.getInstance();\n","/**\n * StorageService - Singleton File Storage Manager\n *\n * @description Manages file storage operations for the entire application using a singleton pattern.\n * This service wraps @plyaz/storage and provides a centralized way to initialize and access\n * file storage across all domains (media uploads, compliance documents, user avatars, etc.).\n *\n * **Architecture:**\n * - Uses `StorageService` from @plyaz/storage which supports multi-provider setup\n * - Supports Cloudflare R2 (compliance documents) and Supabase Storage (assets/media)\n * - Automatic failover between providers based on health status\n * - Event-driven architecture with 40+ event types\n * - **Proxy-based method forwarding**: All methods from the underlying service are\n *   automatically available with error handling - no manual wrapping needed\n *\n * **Provider Configuration:**\n * - **Cloudflare R2**: For compliance documents (tax, invoices, KYC) with zero egress fees\n * - **Supabase Storage**: For assets like images, user avatars, media files\n *\n * **Required Environment Variables (Cloudflare R2):**\n * - CLOUDFLARE_ACCOUNT_ID: Your Cloudflare account ID\n * - R2_ACCESS_KEY_ID: R2 access key\n * - R2_SECRET_ACCESS_KEY: R2 secret key\n * - R2_BUCKET_NAME: Default bucket name\n *\n * **Required Environment Variables (Supabase Storage):**\n * - SUPABASE_URL: Your Supabase project URL\n * - SUPABASE_SERVICE_ROLE_KEY: Service role key for storage operations\n *\n * @example Using with Core.initialize() (Recommended)\n * ```typescript\n * import { Core } from '@plyaz/core';\n *\n * await Core.initialize({\n *   storage: {\n *     adapters: [r2Adapter, supabaseAdapter],\n *     plugins: [virusScanPlugin, sharpImagePlugin],\n *   },\n * });\n *\n * // Access via Core.storage - all methods automatically available\n * const result = await Core.storage.uploadFile({\n *   file: buffer,\n *   filename: 'document.pdf',\n *   category: FILE_CATEGORY.COMPLIANCE_DOCUMENT,\n * });\n * ```\n *\n * @module services\n */\n\nimport type { BaseStorageAdapter } from '@plyaz/storage';\nimport { StorageService as StorageServiceImpl } from '@plyaz/storage';\nimport { StoragePackageError } from '@plyaz/errors';\nimport type { CoreStorageConfig, CoreStorageServiceInstance } from '@plyaz/types/core';\nimport type {\n  StorageServiceConfig,\n  StorageEventPayload,\n  StorageEventHandlers,\n  UploadProgressEvent,\n} from '@plyaz/types/storage';\nimport { CORE_EVENTS, type CoreStorageErrorPayload } from '@plyaz/types/core';\nimport type { FilesUploadStreamProgress } from '@plyaz/types/core';\nimport { STORAGE_ERROR_CODES } from '@plyaz/types/errors';\nimport { CoreEventManager } from '../events/CoreEventManager';\nimport { PackageLogger } from '@plyaz/logger';\nimport { getBackendFilesDomainService } from '../domain/files/BackendFilesDomainService';\n\nconst logger = new PackageLogger({ packageName: 'core', service: 'StorageService' });\n\n// Re-export types for convenience\nexport type { CoreStorageConfig } from '@plyaz/types/core';\n\n/** Internal type for properly typed storage config */\ntype TypedStorageConfig = StorageServiceConfig<BaseStorageAdapter>;\n\n/** Error context options for storage operations */\ninterface StorageErrorOptions {\n  fileId?: string;\n  filename?: string;\n  recoverable?: boolean;\n}\n\n/**\n * Global Singleton Pattern using globalThis\n *\n * @see CoreEventManager.ts for detailed explanation of why this pattern is needed.\n *\n * TL;DR: In Next.js and similar frameworks, module isolation can create multiple singleton\n * instances. Using globalThis + Symbol.for() ensures ONE instance per process, preventing\n * issues like multiple storage service instances with inconsistent adapter configurations.\n */\nconst STORAGE_SERVICE_KEY = Symbol.for('plyaz.StorageService');\n\nfunction getStorageServiceInstance(): StorageService | null {\n  const globalAny = globalThis as unknown as { [key: symbol]: StorageService | null };\n  return globalAny[STORAGE_SERVICE_KEY] ?? null;\n}\n\nfunction setStorageServiceInstance(instance: StorageService | null): void {\n  const globalAny = globalThis as unknown as { [key: symbol]: StorageService | null };\n  globalAny[STORAGE_SERVICE_KEY] = instance;\n}\n\n/**\n * StorageService - Singleton File Storage Manager with Proxy-based method forwarding\n *\n * Provides centralized file storage management for all domains.\n * Uses @plyaz/storage under the hood with configurable providers and plugins.\n *\n * All methods from the underlying StorageServiceImpl are automatically available\n * via Proxy - when new methods are added to @plyaz/storage, they're instantly\n * accessible here with automatic error handling.\n */\nexport class StorageService implements CoreStorageServiceInstance {\n  private storageService: StorageServiceImpl | null = null;\n  private config: CoreStorageConfig | null = null;\n  private initialized = false;\n\n  private constructor() {}\n\n  // ─────────────────────────────────────────────────────────────────\n  // Error Handling\n  // ─────────────────────────────────────────────────────────────────\n\n  /**\n   * Emits a storage error event via CoreEventManager.\n   * Called when storage operations fail to integrate with global error handling.\n   */\n  private emitStorageError(error: unknown, operation: string, options?: StorageErrorOptions): void {\n    const payload: CoreStorageErrorPayload = {\n      error,\n      operation,\n      fileId: options?.fileId,\n      filename: options?.filename,\n      recoverable: options?.recoverable ?? false,\n    };\n    CoreEventManager.emit(CORE_EVENTS.STORAGE.ERROR, payload);\n  }\n\n  // ─────────────────────────────────────────────────────────────────\n  // Singleton Management\n  // ─────────────────────────────────────────────────────────────────\n\n  /**\n   * Gets the singleton instance of StorageService\n   */\n  static getInstance(): StorageService {\n    let instance = getStorageServiceInstance();\n    if (!instance) {\n      instance = new StorageService();\n      setStorageServiceInstance(instance);\n    }\n    return instance;\n  }\n\n  /**\n   * Checks if the storage service has been initialized\n   */\n  static isInitialized(): boolean {\n    return getStorageServiceInstance()?.initialized ?? false;\n  }\n\n  /**\n   * Resets the storage service by clearing the singleton instance\n   */\n  static async reset(): Promise<void> {\n    const instance = getStorageServiceInstance();\n    if (instance) {\n      instance.storageService = null;\n      instance.config = null;\n      instance.initialized = false;\n      setStorageServiceInstance(null);\n    }\n  }\n\n  /**\n   * Creates merged event handlers that persist uploads to the media table\n   * and emit progress events for real-time streaming.\n   * Merges Core's internal handlers with user-provided handlers.\n   *\n   * @param userHandlers - User-provided event handlers from config\n   * @returns Merged handlers with DB persistence + streaming + user handlers\n   */\n  private static createMergedEventHandlers(\n    userHandlers?: StorageEventHandlers\n  ): StorageEventHandlers {\n    return {\n      ...userHandlers,\n\n      // Emit upload progress for real-time streaming, then call user handler\n      // eslint-disable-next-line complexity\n      onUploadProgress: async (payload: StorageEventPayload) => {\n        // Emit to CoreEventManager for StreamBroadcaster to pick up\n        // StreamBroadcaster listens to 'upload:progress' and broadcasts to SSE/WebSocket clients\n        // Progress data is in payload.data as UploadProgressEvent\n        const progressEvent = payload.data as UploadProgressEvent | undefined;\n        if (progressEvent) {\n          const progressData: FilesUploadStreamProgress = {\n            fileId: progressEvent.fileId ?? payload.metadata?.fileId ?? 'unknown',\n            filename: progressEvent.filename ?? payload.metadata?.filename ?? 'unknown',\n            percentage: progressEvent.percentage ?? 0,\n            status: 'uploading',\n            loaded: progressEvent.loaded ?? 0,\n            total: progressEvent.total ?? 0,\n            speed: progressEvent.speed,\n            estimatedTimeRemaining: progressEvent.estimatedTimeRemaining,\n          };\n\n          CoreEventManager.emit('upload:progress', progressData);\n        }\n\n        // Call user's handler if provided\n        if (userHandlers?.onUploadProgress) {\n          await userHandlers.onUploadProgress(payload);\n        }\n      },\n\n      // Persist uploaded files to media table, then call user handler\n      onFileUploaded: async (payload: StorageEventPayload) => {\n        // Persist to media table via BackendFilesDomainService\n        // Wrapped in try-catch to not break upload flow if DB is unavailable\n        if (payload.metadata) {\n          try {\n            const filesService = await getBackendFilesDomainService();\n            await filesService.persistUploadedFile(payload.metadata);\n          } catch (error) {\n            // Log error but don't break the upload flow\n            // DB persistence is optional - upload already succeeded to storage\n            logger.warn('[StorageService] Failed to persist file to DB (upload still succeeded)', {\n              fileId: payload.metadata.fileId,\n              filename: payload.metadata.filename,\n              error: error instanceof Error ? error.message : String(error),\n            });\n          }\n        }\n\n        // Call user's handler if provided\n        if (userHandlers?.onFileUploaded) {\n          await userHandlers.onFileUploaded(payload);\n        }\n      },\n\n      // Emit upload failure for real-time streaming error handling\n      // eslint-disable-next-line complexity\n      onFileUploadFailed: async (payload: StorageEventPayload) => {\n        // Emit error event for streaming clients\n        if (payload.metadata) {\n          // Error info might be in payload.data\n          const errorInfo = payload.data as { message?: string } | undefined;\n          const errorData: FilesUploadStreamProgress = {\n            fileId: payload.metadata.fileId ?? 'unknown',\n            filename: payload.metadata.filename ?? 'unknown',\n            percentage: 0,\n            status: 'failed',\n            loaded: 0,\n            total: payload.metadata.size ?? 0,\n            error: errorInfo?.message ?? 'Upload failed',\n          };\n\n          CoreEventManager.emit('upload:progress', errorData);\n        }\n\n        // Call user's handler if provided\n        if (userHandlers?.onFileUploadFailed) {\n          await userHandlers.onFileUploadFailed(payload);\n        }\n      },\n    };\n  }\n\n  /**\n   * Initializes the storage service\n   *\n   * @param config - Storage service configuration\n   * @returns The initialized StorageService instance\n   */\n  static async initialize(config: CoreStorageConfig): Promise<StorageService> {\n    const instance = StorageService.getInstance();\n\n    if (instance.initialized) {\n      return instance;\n    }\n\n    instance.config = config;\n\n    // Merge user event handlers with Core's internal handlers for DB persistence\n    const mergedHandlers = StorageService.createMergedEventHandlers(config.handlers);\n\n    const mergedConfig: TypedStorageConfig = {\n      ...config,\n      handlers: mergedHandlers,\n    } as TypedStorageConfig;\n\n    logger.info('[StorageService] Initializing with merged event handlers for DB persistence');\n\n    // Cast to properly typed config (CoreStorageConfig is the user-facing type,\n    // TypedStorageConfig ensures proper generic parameter for StorageServiceImpl)\n    instance.storageService = new StorageServiceImpl(mergedConfig);\n    instance.initialized = true;\n\n    return instance;\n  }\n\n  /**\n   * Gets the raw underlying storage service instance without error handling wrapper.\n   * Use this only if you need direct access to the underlying service.\n   *\n   * @returns The raw StorageService instance from @plyaz/storage\n   * @throws {StoragePackageError} When storage is not initialized\n   */\n  private getRawStorage(): StorageServiceImpl {\n    if (!this.storageService) {\n      throw new StoragePackageError(\n        'Storage not initialized. Call StorageService.initialize() first or use Core.initialize() with storage config.',\n        STORAGE_ERROR_CODES.INITIALIZATION_FAILED\n      );\n    }\n    return this.storageService;\n  }\n\n  // ─────────────────────────────────────────────────────────────────\n  // Service Access\n  // ─────────────────────────────────────────────────────────────────\n\n  /**\n   * Gets the storage service with automatic error handling.\n   * All method calls are wrapped with try/catch and emit error events on failure.\n   * Any method added to @plyaz/storage will be automatically available.\n   *\n   * @example\n   * ```typescript\n   * const storage = StorageService.getInstance().getStorage();\n   * await storage.uploadFile({ file, filename: 'doc.pdf' });\n   * await storage.deleteFile({ fileId: '123' });\n   * ```\n   *\n   * @returns StorageServiceImpl with automatic error handling\n   */\n  getStorage(): StorageServiceImpl {\n    const self = this;\n\n    return new Proxy({} as StorageServiceImpl, {\n      get(_, prop: string | symbol) {\n        // Skip symbol properties\n        if (typeof prop === 'symbol') {\n          return undefined;\n        }\n\n        const storage = self.getRawStorage();\n        const value = storage[prop as keyof StorageServiceImpl];\n\n        // If it's not a function, return the value directly\n        if (typeof value !== 'function') {\n          return value;\n        }\n\n        // Wrap function calls with error handling\n        return (...args: unknown[]) => {\n          try {\n            const result = (value as Function).apply(storage, args);\n\n            // Handle async methods\n            if (result instanceof Promise) {\n              return result.catch((error: unknown) => {\n                self.emitStorageError(error, prop, { recoverable: true });\n                throw error;\n              });\n            }\n\n            return result;\n          } catch (error) {\n            self.emitStorageError(error, prop, { recoverable: true });\n            throw error;\n          }\n        };\n      },\n    });\n  }\n\n  // ─────────────────────────────────────────────────────────────────\n  // Health Check (special handling for response transformation)\n  // ─────────────────────────────────────────────────────────────────\n\n  /**\n   * Performs a health check on the storage service by checking all adapter health.\n   * This method has special handling to transform the response format.\n   */\n  async healthCheck(): Promise<{ isHealthy: boolean; responseTime?: number; error?: string }> {\n    const startTime = Date.now();\n    try {\n      const storage = this.getRawStorage();\n      // Use checkAllAdaptersHealth and getHealthSummary if available\n      if (typeof storage.checkAllAdaptersHealth === 'function') {\n        await storage.checkAllAdaptersHealth();\n      }\n\n      const summary =\n        typeof storage.getHealthSummary === 'function' ? storage.getHealthSummary() : null;\n      const responseTime = Date.now() - startTime;\n\n      return {\n        // Check if all adapters are healthy (healthy count equals total count)\n        isHealthy: summary ? summary.healthy === summary.total : true,\n        responseTime,\n        error: undefined,\n      };\n    } catch (error) {\n      this.emitStorageError(error, 'healthCheck', { recoverable: true });\n\n      return {\n        isHealthy: false,\n        responseTime: Date.now() - startTime,\n        error: error instanceof Error ? error.message : 'Unknown error',\n      };\n    }\n  }\n\n  // ─────────────────────────────────────────────────────────────────\n  // Lifecycle\n  // ─────────────────────────────────────────────────────────────────\n\n  /**\n   * Gets the current configuration\n   */\n  getConfig(): CoreStorageConfig | null {\n    return this.config;\n  }\n\n  /**\n   * Closes the storage service and cleans up resources\n   */\n  async close(): Promise<void> {\n    if (this.storageService) {\n      await this.storageService.destroy();\n    }\n    this.storageService = null;\n    this.initialized = false;\n    this.config = null;\n  }\n\n  /**\n   * Creates a dedicated storage service instance (NOT the singleton)\n   *\n   * Use this when you need an isolated storage connection with its own configuration.\n   *\n   * @param config - Storage service configuration\n   * @returns Promise that resolves to a new dedicated StorageService instance\n   */\n  static async createInstance(config: CoreStorageConfig): Promise<StorageService> {\n    const dedicatedInstance = new StorageService();\n    dedicatedInstance.config = config;\n    // Cast to properly typed config (CoreStorageConfig is the user-facing type,\n    // TypedStorageConfig ensures proper generic parameter for StorageServiceImpl)\n    dedicatedInstance.storageService = new StorageServiceImpl(config as TypedStorageConfig);\n    dedicatedInstance.initialized = true;\n    return dedicatedInstance;\n  }\n}\n\n/** Type alias for StorageService instance (use for type-only imports to avoid bundling) */\nexport type StorageServiceInstance = StorageService;\n","/**\n * NotificationService - Singleton Notification Manager\n *\n * @description Manages notification delivery for the entire application using a singleton pattern.\n * This service wraps @plyaz/notifications and provides a centralized way to initialize and access\n * notification capabilities across all domains (transactional, marketing, system alerts, etc.).\n *\n * **Architecture:**\n * - Uses `NotificationService` from @plyaz/notifications which supports multi-provider setup\n * - Supports email (Infobip primary, SendGrid fallback), SMS, and push notifications\n * - Automatic failover between providers based on health status\n * - Event-driven architecture for tracking delivery, opens, clicks\n * - **Proxy-based method forwarding**: All methods from the underlying service are\n *   automatically available with error handling - no manual wrapping needed\n *\n * **Provider Configuration:**\n * - **Infobip**: Primary email provider (unified omnichannel platform)\n * - **SendGrid**: Fallback email provider for transactional emails\n *\n * **Required Environment Variables (Infobip):**\n * - INFOBIP_API_KEY: Your Infobip API key\n * - INFOBIP_BASE_URL: Infobip API base URL\n * - FROM_EMAIL: Default sender email address\n *\n * **Required Environment Variables (SendGrid):**\n * - SENDGRID_API_KEY: Your SendGrid API key\n * - FROM_EMAIL: Default sender email address\n *\n * @example Using with Core.initialize() (Recommended)\n * ```typescript\n * import { Core } from '@plyaz/core';\n *\n * await Core.initialize({\n *   notifications: {\n *     providers: {\n *       email: [infobipAdapter, sendGridAdapter],\n *       sms: [],\n *       push: [],\n *     },\n *     events: {\n *       onSent: (event) => console.log('Notification sent:', event),\n *       onFailed: (event) => console.error('Notification failed:', event),\n *     },\n *   },\n * });\n *\n * // Access via Core.notifications - all methods automatically available\n * await Core.notifications.sendEmail({\n *   recipientId: 'user-123',\n *   to: 'user@example.com',\n *   templateId: 'welcome',\n *   templateData: { userName: 'John' },\n * });\n * ```\n *\n * @module services\n */\n\nimport { NotificationService as NotificationServiceImpl } from '@plyaz/notifications';\nimport { NotificationPackageError } from '@plyaz/errors';\nimport type { CoreNotificationConfig, CoreNotificationServiceInstance } from '@plyaz/types/core';\nimport { CORE_EVENTS, type CoreNotificationErrorPayload } from '@plyaz/types/core';\nimport type { NotificationEventCallbacks } from '@plyaz/types/notifications';\nimport { NOTIFICATION_ERROR_CODES } from '@plyaz/types/errors';\nimport { CoreEventManager } from '../events/CoreEventManager';\n\n// Re-export types for convenience\nexport type { CoreNotificationConfig } from '@plyaz/types/core';\n\n/** Error context options for notification operations */\ninterface NotificationErrorOptions {\n  recipientId?: string;\n  channel?: string;\n  recoverable?: boolean;\n}\n\nconst MAX_FAIL_ATTEMPTS = 3;\n\n/**\n * Global Singleton Pattern using globalThis\n *\n * @see CoreEventManager.ts for detailed explanation of why this pattern is needed.\n *\n * TL;DR: In Next.js and similar frameworks, module isolation can create multiple singleton\n * instances. Using globalThis + Symbol.for() ensures ONE instance per process, preventing\n * issues like duplicate notification delivery or inconsistent provider state across API routes.\n */\nconst NOTIFICATION_SERVICE_KEY = Symbol.for('plyaz.NotificationService');\n\nfunction getNotificationServiceInstance(): NotificationService | null {\n  const globalAny = globalThis as unknown as { [key: symbol]: NotificationService | null };\n  return globalAny[NOTIFICATION_SERVICE_KEY] ?? null;\n}\n\nfunction setNotificationServiceInstance(instance: NotificationService | null): void {\n  const globalAny = globalThis as unknown as { [key: symbol]: NotificationService | null };\n  globalAny[NOTIFICATION_SERVICE_KEY] = instance;\n}\n\n/**\n * NotificationService - Singleton Notification Manager with Proxy-based method forwarding\n *\n * Provides centralized notification management for all domains.\n * Uses @plyaz/notifications under the hood with configurable providers and templates.\n *\n * All methods from the underlying NotificationServiceImpl are automatically available\n * via Proxy - when new methods are added to @plyaz/notifications, they're instantly\n * accessible here with automatic error handling.\n */\nexport class NotificationService implements CoreNotificationServiceInstance {\n  private notificationService: NotificationServiceImpl | null = null;\n  private config: CoreNotificationConfig | null = null;\n  private initialized = false;\n\n  private constructor() {}\n\n  // ─────────────────────────────────────────────────────────────────\n  // Error Handling\n  // ─────────────────────────────────────────────────────────────────\n\n  /**\n   * Emits a notification error event via CoreEventManager.\n   * Called when notification operations fail to integrate with global error handling.\n   */\n  private emitNotificationError(\n    error: unknown,\n    operation: string,\n    options?: NotificationErrorOptions\n  ): void {\n    const payload: CoreNotificationErrorPayload = {\n      error,\n      operation,\n      recipientId: options?.recipientId,\n      channel: options?.channel,\n      recoverable: options?.recoverable ?? false,\n    };\n    CoreEventManager.emit(CORE_EVENTS.NOTIFICATION.ERROR, payload);\n  }\n\n  // ─────────────────────────────────────────────────────────────────\n  // Merged Event Handlers\n  // ─────────────────────────────────────────────────────────────────\n\n  /**\n   * Creates merged event handlers that emit to CoreEventManager.\n   * Merges Core's internal handlers with user-provided handlers.\n   *\n   * @param userHandlers - User-provided event handlers from config\n   * @returns Merged handlers with Core event emission + user handlers\n   */\n  private static createMergedEventHandlers(\n    userHandlers?: NotificationEventCallbacks\n  ): NotificationEventCallbacks {\n    return {\n      ...userHandlers,\n\n      // Emit to CoreEventManager on sent, then call user handler\n      onSent: async payload => {\n        CoreEventManager.emit(CORE_EVENTS.NOTIFICATION.SENT, {\n          notificationId: payload.notificationId,\n          recipientId: payload.recipientId,\n          channel: payload.channel,\n          provider: payload.provider,\n        });\n        if (userHandlers?.onSent) {\n          await userHandlers.onSent(payload);\n        }\n      },\n\n      // Emit to CoreEventManager on failed, then call user handler\n      onFailed: async payload => {\n        CoreEventManager.emit(CORE_EVENTS.NOTIFICATION.FAILED, {\n          notificationId: payload.notificationId,\n          recipientId: payload.recipientId,\n          channel: payload.channel,\n          error: payload.error,\n          retryable: payload.retryCount < MAX_FAIL_ATTEMPTS,\n        });\n        if (userHandlers?.onFailed) {\n          await userHandlers.onFailed(payload);\n        }\n      },\n\n      // Emit to CoreEventManager on delivered, then call user handler\n      onDelivered: async payload => {\n        CoreEventManager.emit(CORE_EVENTS.NOTIFICATION.DELIVERED, {\n          notificationId: payload.notificationId,\n          recipientId: payload.recipientId,\n          channel: payload.channel,\n          deliveredAt: payload.deliveredAt,\n        });\n        if (userHandlers?.onDelivered) {\n          await userHandlers.onDelivered(payload);\n        }\n      },\n    };\n  }\n\n  // ─────────────────────────────────────────────────────────────────\n  // Singleton Management\n  // ─────────────────────────────────────────────────────────────────\n\n  /**\n   * Gets the singleton instance of NotificationService\n   */\n  static getInstance(): NotificationService {\n    let instance = getNotificationServiceInstance();\n    if (!instance) {\n      instance = new NotificationService();\n      setNotificationServiceInstance(instance);\n    }\n    return instance;\n  }\n\n  /**\n   * Checks if the notification service has been initialized\n   */\n  static isInitialized(): boolean {\n    return getNotificationServiceInstance()?.initialized ?? false;\n  }\n\n  /**\n   * Resets the notification service by clearing the singleton instance\n   */\n  static async reset(): Promise<void> {\n    const instance = getNotificationServiceInstance();\n    if (instance) {\n      instance.notificationService = null;\n      instance.config = null;\n      instance.initialized = false;\n      setNotificationServiceInstance(null);\n    }\n  }\n\n  /**\n   * Initializes the notification service\n   *\n   * @param config - Notification service configuration\n   * @returns The initialized NotificationService instance\n   */\n  static async initialize(config: CoreNotificationConfig): Promise<NotificationService> {\n    const instance = NotificationService.getInstance();\n\n    if (instance.initialized) {\n      return instance;\n    }\n\n    // Merge user event handlers with Core's internal handlers\n    const mergedEvents = NotificationService.createMergedEventHandlers(config.events);\n\n    instance.config = config;\n    instance.notificationService = new NotificationServiceImpl({\n      ...config,\n      events: mergedEvents,\n    });\n    instance.initialized = true;\n\n    return instance;\n  }\n\n  /**\n   * Gets the raw underlying notification service instance without error handling wrapper.\n   * Use this only if you need direct access to the underlying service.\n   *\n   * @returns The raw NotificationService instance from @plyaz/notifications\n   * @throws {NotificationsPackageError} When notifications is not initialized\n   */\n  private getRawNotifications(): NotificationServiceImpl {\n    if (!this.notificationService) {\n      throw new NotificationPackageError(\n        'Notifications not initialized. Call NotificationService.initialize() first or use Core.initialize() with notifications config.',\n        NOTIFICATION_ERROR_CODES.INITIALIZATION_FAILED\n      );\n    }\n    return this.notificationService;\n  }\n\n  // ─────────────────────────────────────────────────────────────────\n  // Service Access\n  // ─────────────────────────────────────────────────────────────────\n\n  /**\n   * Gets the notification service with automatic error handling.\n   * All method calls are wrapped with try/catch and emit error events on failure.\n   * Any method added to @plyaz/notifications will be automatically available.\n   *\n   * @example\n   * ```typescript\n   * const notifications = NotificationService.getInstance().getNotifications();\n   * await notifications.sendEmail({ to: 'user@example.com', templateId: 'welcome' });\n   * await notifications.sendSMS({ to: '+1234567890', message: 'Hello!' });\n   * ```\n   *\n   * @returns NotificationServiceImpl with automatic error handling\n   */\n  getNotifications(): NotificationServiceImpl {\n    const self = this;\n\n    return new Proxy({} as NotificationServiceImpl, {\n      get(_, prop: string | symbol) {\n        // Skip symbol properties\n        if (typeof prop === 'symbol') {\n          return undefined;\n        }\n\n        const notifications = self.getRawNotifications();\n        const value = notifications[prop as keyof NotificationServiceImpl];\n\n        // If it's not a function, return the value directly\n        if (typeof value !== 'function') {\n          return value;\n        }\n\n        // Wrap function calls with error handling\n        return (...args: unknown[]) => {\n          try {\n            const result = (value as Function).apply(notifications, args);\n\n            // Handle async methods\n            if (result instanceof Promise) {\n              return result.catch((error: unknown) => {\n                self.emitNotificationError(error, prop, { recoverable: true });\n                throw error;\n              });\n            }\n\n            return result;\n          } catch (error) {\n            self.emitNotificationError(error, prop, { recoverable: true });\n            throw error;\n          }\n        };\n      },\n    });\n  }\n\n  // ─────────────────────────────────────────────────────────────────\n  // Health Check (special handling for response transformation)\n  // ─────────────────────────────────────────────────────────────────\n\n  /**\n   * Performs a health check on the notification service.\n   * This method has special handling to transform the response format.\n   */\n  async healthCheck(): Promise<{ isHealthy: boolean; providers?: unknown[]; error?: string }> {\n    try {\n      const notifications = this.getRawNotifications();\n      const result = await notifications.healthCheck();\n\n      return {\n        isHealthy: result.healthy,\n        providers: result.providers,\n        // Use optional chaining since error may not exist on all health check results\n        error: 'error' in result ? (result as { error?: string }).error : undefined,\n      };\n    } catch (error) {\n      this.emitNotificationError(error, 'healthCheck', { recoverable: true });\n\n      return {\n        isHealthy: false,\n        error: error instanceof Error ? error.message : 'Unknown error',\n      };\n    }\n  }\n\n  // ─────────────────────────────────────────────────────────────────\n  // Lifecycle\n  // ─────────────────────────────────────────────────────────────────\n\n  /**\n   * Gets the current configuration\n   */\n  getConfig(): CoreNotificationConfig | null {\n    return this.config;\n  }\n\n  /**\n   * Closes the notification service and cleans up resources\n   */\n  async close(): Promise<void> {\n    this.notificationService = null;\n    this.initialized = false;\n    this.config = null;\n  }\n\n  /**\n   * Creates a dedicated notification service instance (NOT the singleton)\n   *\n   * Use this when you need an isolated notification service with its own configuration.\n   *\n   * @param config - Notification service configuration\n   * @returns Promise that resolves to a new dedicated NotificationService instance\n   */\n  static async createInstance(config: CoreNotificationConfig): Promise<NotificationService> {\n    // Merge user event handlers with Core's internal handlers\n    const mergedEvents = NotificationService.createMergedEventHandlers(config.events);\n\n    const dedicatedInstance = new NotificationService();\n    dedicatedInstance.config = config;\n    dedicatedInstance.notificationService = new NotificationServiceImpl({\n      ...config,\n      events: mergedEvents,\n    });\n    dedicatedInstance.initialized = true;\n    return dedicatedInstance;\n  }\n}\n\n/** Type alias for NotificationService instance (use for type-only imports to avoid bundling) */\nexport type NotificationServiceInstance = NotificationService;\n","/**\n * Core initialization exports\n *\n * Import runtime types directly from '@plyaz/types/core':\n * - CoreRuntimeEnvironment, CoreRuntimeContext\n * - BACKEND_RUNTIMES, FRONTEND_RUNTIMES, UNIVERSAL_RUNTIMES\n *\n * For backend-only exports (DbService, DEFAULT_ENCRYPTION_FIELDS),\n * use '@plyaz/core/backend' entry point.\n */\nexport { Core } from './CoreInitializer';\n\nexport type { CoreInitOptions, CoreServicesResult } from './CoreInitializer';\n\n// Core types from types package\nexport type {\n  CoreEnvVars,\n  CoreFeatureFlagInitConfig,\n  CoreErrorHandlerInitConfig,\n} from '@plyaz/types/core';\n\n// Service Registry (universal - works in frontend & backend)\nexport { ServiceRegistry } from './ServiceRegistry';\n\n// Re-export universal services only\nexport { ApiClientService } from '../services/ApiClientService';\n","/**\n * Database Repository Implementation\n *\n * Database adapter integration with @plyaz/db for feature flag storage.\n * Extends BaseRepository for consistent CRUD operations and QueryBuilder support.\n *\n * @fileoverview Database repository for feature flags\n */\n\nimport { BaseRepository } from '@plyaz/db';\nimport {\n  type FeatureFlag,\n  type FeatureFlagRule,\n  type FeatureFlagValue,\n  type CreateFlagRequest,\n  type FeatureFlagContext,\n} from '@plyaz/types';\nimport { DATABASE_ERROR_CODES } from '@plyaz/types/errors';\nimport type { FeatureFlagKey } from '@domain/types';\nimport { DbService } from '../../services/DbService';\nimport { PackageLogger } from '@plyaz/logger';\nimport {\n  SORT_DIRECTION,\n  FEATURE_FLAG_TABLE,\n  FEATURE_FLAG_FIELD,\n  FEATURE_FLAG_RULE_FIELD,\n  type CoreDatabaseFeatureFlagRow,\n  type CoreDatabaseFeatureFlagRuleRow,\n  type CoreDatabaseOverrideRow,\n  type CoreDatabaseEvaluationRow,\n  type CoreEnvironmentFilterRow,\n  type CoreFeatureFlagTableConfig,\n} from '@plyaz/types/core';\nimport {\n  DATABASE_FIELDS,\n  SYSTEM_USERS,\n  EVALUATION_REASONS,\n  FEATURE_FLAG_TYPES,\n} from '@plyaz/types/core';\nimport { DatabasePackageError } from '@plyaz/errors';\nimport type { DatabaseServiceInterface } from '@plyaz/types/db';\n\n/**\n * Extended row type with index signature for BaseRepository compatibility\n */\ntype FeatureFlagRow = CoreDatabaseFeatureFlagRow & Record<string, unknown>;\n\n/**\n * Default table configuration using standard table names.\n */\nconst DEFAULT_TABLE_CONFIG: CoreFeatureFlagTableConfig = {\n  flagsTable: FEATURE_FLAG_TABLE.FeatureFlags,\n  rulesTable: FEATURE_FLAG_TABLE.FeatureFlagRules,\n  evaluationsTable: FEATURE_FLAG_TABLE.FeatureFlagEvaluations,\n  overridesTable: FEATURE_FLAG_TABLE.FeatureFlagOverrides,\n  evaluationsSchema: 'public',\n};\n\n/** Default pagination limit */\nconst DEFAULT_LIMIT = 1000;\n\n/**\n * Database Repository for Feature Flags\n *\n * Extends BaseRepository for consistent CRUD operations and QueryBuilder support.\n * Manages feature flags, rules, evaluations, and overrides across multiple tables.\n *\n * @template TKey - Feature flag key type (extends string)\n *\n * @example\n * ```typescript\n * // Create repository\n * const repository = FeatureFlagDatabaseRepository.create();\n *\n * // Use QueryBuilder for complex queries\n * const enabledFlags = await repository.query()\n *   .where('is_enabled', 'eq', true)\n *   .orderByAsc('key')\n *   .getMany();\n *\n * // Get all flags with environment filter\n * const prodFlags = await repository.getAllFlags('production');\n * ```\n */\nexport class FeatureFlagDatabaseRepository<\n  TKey extends string = FeatureFlagKey,\n> extends BaseRepository<FeatureFlagRow> {\n  private readonly tableConfig: CoreFeatureFlagTableConfig;\n  private readonly logger = new PackageLogger({\n    packageName: 'core',\n    service: 'FeatureFlagRepository',\n  });\n\n  /**\n   * Creates a new repository with optional custom table names.\n   *\n   * @param db - Database service interface\n   * @param tableConfig - Optional custom table configuration\n   */\n  constructor(db: DatabaseServiceInterface, tableConfig?: Partial<CoreFeatureFlagTableConfig>) {\n    const config = { ...DEFAULT_TABLE_CONFIG, ...tableConfig };\n    // BaseRepository uses 'id' by default, but feature flags use 'key'\n    super(db, config.flagsTable, { idColumn: 'key' });\n    this.tableConfig = config;\n  }\n\n  /**\n   * Factory method to create repository instance.\n   * Uses DbService singleton if initialized.\n   */\n  static create<TKey extends string = FeatureFlagKey>(\n    tableConfig?: Partial<CoreFeatureFlagTableConfig>\n  ): FeatureFlagDatabaseRepository<TKey> {\n    if (!DbService.isInitialized()) {\n      throw new DatabasePackageError(\n        'DbService must be initialized before creating FeatureFlagDatabaseRepository',\n        DATABASE_ERROR_CODES.CONNECTION_FAILED\n      );\n    }\n    const db = DbService.getInstance().getDatabase();\n    return new FeatureFlagDatabaseRepository<TKey>(db, tableConfig);\n  }\n\n  /**\n   * Gets the current table configuration.\n   */\n  getTableConfig(): CoreFeatureFlagTableConfig {\n    return { ...this.tableConfig };\n  }\n\n  /**\n   * Gets the full table name including schema if needed.\n   */\n  private getEvaluationsTableName(): string {\n    const { evaluationsSchema, evaluationsTable } = this.tableConfig;\n    return evaluationsSchema && evaluationsSchema !== 'public'\n      ? `${evaluationsSchema}.${evaluationsTable}`\n      : evaluationsTable;\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Feature Flags (using QueryBuilder)\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Retrieves all feature flags with optional environment filtering.\n   * Uses QueryBuilder fluent API for the query.\n   *\n   * @param environment - Optional environment filter\n   * @returns Array of feature flags\n   */\n  async getAllFlags(environment?: string): Promise<FeatureFlag<TKey>[]> {\n    try {\n      const rows = await this.query()\n        .orderByAsc('key' as keyof FeatureFlagRow & string)\n        .limit(DEFAULT_LIMIT)\n        .getMany();\n\n      const filteredRows = environment\n        ? (rows as unknown as CoreEnvironmentFilterRow[]).filter(row =>\n            Boolean(row.environments?.includes(environment))\n          )\n        : rows;\n\n      return filteredRows.map(row => this.mapToFeatureFlag(row as FeatureFlagRow));\n    } catch (error) {\n      this.logger.warn('getAllFlags failed, returning empty array', { error });\n      return [];\n    }\n  }\n\n  /**\n   * Retrieves a specific feature flag by its key.\n   * Uses findById with 'key' as the ID column.\n   *\n   * @param key - The feature flag key\n   * @returns The feature flag or null\n   */\n  async getFlag(key: TKey): Promise<FeatureFlag<TKey> | null> {\n    const result = await this.findById(key);\n\n    if (!result.success) {\n      throw new DatabasePackageError(\n        `Failed to get flag: ${result.error?.message}`,\n        DATABASE_ERROR_CODES.NO_DATA\n      );\n    }\n\n    return result.value ? this.mapToFeatureFlag(result.value) : null;\n  }\n\n  /**\n   * Find flags by enabled status using QueryBuilder.\n   *\n   * @param isEnabled - Filter by enabled status\n   * @returns Array of matching flags\n   */\n  async findByEnabled(isEnabled: boolean): Promise<FeatureFlag<TKey>[]> {\n    const rows = await this.query()\n      .where('is_enabled', 'eq', isEnabled)\n      .orderByAsc('key' as keyof FeatureFlagRow & string)\n      .getMany();\n\n    return rows.map(row => this.mapToFeatureFlag(row));\n  }\n\n  /**\n   * Count flags by enabled status using QueryBuilder.\n   */\n  async countByEnabled(isEnabled: boolean): Promise<number> {\n    return this.query().where('is_enabled', 'eq', isEnabled).count();\n  }\n\n  /**\n   * Creates a new feature flag.\n   *\n   * @param data - Flag creation data\n   * @returns The created flag\n   */\n  async createFlag(data: CreateFlagRequest<TKey>): Promise<FeatureFlag<TKey>> {\n    const flagData: Record<string, unknown> = {\n      key: data.key,\n      name: data.name ?? data.key,\n      value: data.value,\n      type: this.toTypeField(data.value),\n      is_enabled: data.isEnabled ?? true,\n      environments: data.environment ? [data.environment] : undefined,\n      description: data.description,\n      updated_at: new Date().toISOString(),\n    };\n\n    const result = await this.create(flagData as Partial<FeatureFlagRow>);\n\n    if (!result.success || !result.value) {\n      throw new DatabasePackageError(\n        `Failed to create flag: ${result.error?.message}`,\n        DATABASE_ERROR_CODES.CREATE_FAILED\n      );\n    }\n\n    return this.mapToFeatureFlag(result.value);\n  }\n\n  /**\n   * Updates an existing feature flag.\n   *\n   * @param key - Flag key to update\n   * @param data - Partial update data\n   * @returns The updated flag\n   */\n  // eslint-disable-next-line complexity\n  async updateFlag(key: TKey, data: Partial<CreateFlagRequest<TKey>>): Promise<FeatureFlag<TKey>> {\n    const updateData: Record<string, unknown> = {\n      [FEATURE_FLAG_FIELD.UpdatedAt]: new Date().toISOString(),\n    };\n\n    if (data.value !== undefined) {\n      updateData[FEATURE_FLAG_FIELD.Value] = data.value;\n      updateData[FEATURE_FLAG_FIELD.Type] = this.toTypeField(data.value);\n    }\n    if (data.isEnabled !== undefined) {\n      updateData[FEATURE_FLAG_FIELD.IsEnabled] = data.isEnabled;\n    }\n    if (data.description !== undefined) {\n      updateData[FEATURE_FLAG_FIELD.Description] = data.description;\n    }\n    if (data.name !== undefined) {\n      updateData[FEATURE_FLAG_FIELD.Name] = data.name;\n    }\n    if (data.environment !== undefined) {\n      updateData[FEATURE_FLAG_FIELD.Environments] = [data.environment];\n    }\n\n    const result = await this.update(key, updateData as Partial<FeatureFlagRow>);\n\n    if (!result.success || !result.value) {\n      throw new DatabasePackageError(\n        `Failed to update flag: ${result.error?.message}`,\n        DATABASE_ERROR_CODES.UPDATE_FAILED\n      );\n    }\n\n    return this.mapToFeatureFlag(result.value);\n  }\n\n  /**\n   * Deletes a feature flag.\n   *\n   * @param key - Flag key to delete\n   */\n  async deleteFlag(key: TKey): Promise<void> {\n    const result = await this.delete(key);\n\n    if (!result.success) {\n      throw new DatabasePackageError(\n        `Failed to delete flag: ${result.error?.message}`,\n        DATABASE_ERROR_CODES.DELETE_FAILED\n      );\n    }\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Feature Flag Rules\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Retrieves rules for a specific flag using direct db query.\n   * Rules are in a separate table, so we use the underlying db service.\n   *\n   * @param key - Flag key to get rules for\n   * @returns Array of rules\n   */\n  async getFlagRules(key: TKey): Promise<FeatureFlagRule<TKey>[]> {\n    const result = await this.db.list<CoreDatabaseFeatureFlagRuleRow>(this.tableConfig.rulesTable, {\n      filter: {\n        field: FEATURE_FLAG_RULE_FIELD.FlagKey as keyof CoreDatabaseFeatureFlagRuleRow,\n        operator: 'eq',\n        value: key as string,\n      },\n      sort: [\n        {\n          field: FEATURE_FLAG_RULE_FIELD.Priority as keyof CoreDatabaseFeatureFlagRuleRow,\n          direction: SORT_DIRECTION.Desc,\n        },\n      ],\n    });\n\n    if (!result.success) {\n      this.logger.warn('getFlagRules failed', {\n        error: result.error?.message,\n      });\n      return [];\n    }\n\n    const rules = result.value?.data ?? [];\n    return rules.map(rule =>\n      this.mapToFeatureFlagRule(rule as unknown as CoreDatabaseFeatureFlagRuleRow)\n    );\n  }\n\n  /**\n   * Retrieves all enabled rules across all flags.\n   *\n   * @returns Array of all enabled rules\n   */\n  async getAllRules(): Promise<FeatureFlagRule<TKey>[]> {\n    const result = await this.db.list<CoreDatabaseFeatureFlagRuleRow>(this.tableConfig.rulesTable, {\n      filter: {\n        field: FEATURE_FLAG_RULE_FIELD.IsEnabled as keyof CoreDatabaseFeatureFlagRuleRow,\n        operator: 'eq',\n        value: true,\n      },\n      sort: [\n        {\n          field: FEATURE_FLAG_RULE_FIELD.FlagKey as keyof CoreDatabaseFeatureFlagRuleRow,\n          direction: SORT_DIRECTION.Asc,\n        },\n        {\n          field: FEATURE_FLAG_RULE_FIELD.Priority as keyof CoreDatabaseFeatureFlagRuleRow,\n          direction: SORT_DIRECTION.Desc,\n        },\n      ],\n    });\n\n    if (!result.success) {\n      this.logger.warn('getAllRules failed', { error: result.error?.message });\n      return [];\n    }\n\n    const rules = result.value?.data ?? [];\n    return rules.map(rule =>\n      this.mapToFeatureFlagRule(rule as unknown as CoreDatabaseFeatureFlagRuleRow)\n    );\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Evaluations & Overrides\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Logs a feature flag evaluation for audit purposes.\n   */\n  async logEvaluation(params: {\n    flagKey: TKey;\n    userId?: string;\n    context?: FeatureFlagContext;\n    result: FeatureFlagValue;\n  }): Promise<void> {\n    try {\n      // Don't include id - let DB generate via uuid_generate_v4()\n      const evaluationData: Omit<CoreDatabaseEvaluationRow, 'id'> = {\n        flag_key: params.flagKey as string,\n        user_id: params.userId,\n        context: params.context as Record<string, string | number | boolean> | undefined,\n        value: params.result,\n        is_enabled: typeof params.result === 'boolean' ? params.result : !!params.result,\n        reason: EVALUATION_REASONS.Default,\n        evaluated_at: new Date().toISOString(),\n      };\n\n      const result = await this.db.create(\n        this.getEvaluationsTableName(),\n        evaluationData as Record<string, unknown>\n      );\n\n      if (!result.success) {\n        this.logger.warn('logEvaluation failed', {\n          error: result.error?.message,\n        });\n      }\n    } catch (error) {\n      this.logger.warn('logEvaluation error', { error });\n    }\n  }\n\n  /**\n   * Sets a user-specific override for a feature flag.\n   */\n  async setOverride(\n    flagKey: TKey,\n    userId: string,\n    value: FeatureFlagValue,\n    expiresAt?: Date\n  ): Promise<void> {\n    // Don't include id - let DB generate via uuid_generate_v4()\n    const overrideData: Omit<CoreDatabaseOverrideRow, 'id'> = {\n      flag_key: flagKey as string,\n      user_id: userId,\n      value,\n      expires_at: expiresAt?.toISOString(),\n      created_at: new Date().toISOString(),\n    };\n\n    const result = await this.db.create(\n      this.tableConfig.overridesTable,\n      overrideData as Record<string, unknown>\n    );\n\n    if (!result.success) {\n      this.logger.warn('setOverride failed', { error: result.error?.message });\n    }\n  }\n\n  /**\n   * Retrieves a user-specific override for a feature flag.\n   */\n  async getOverride(flagKey: TKey, userId: string): Promise<FeatureFlagValue | null> {\n    const result = await this.db.list<CoreDatabaseOverrideRow>(this.tableConfig.overridesTable, {\n      filter: {\n        field: DATABASE_FIELDS.FlagKey as keyof CoreDatabaseOverrideRow,\n        operator: 'eq',\n        value: flagKey as string,\n      },\n    });\n\n    if (!result.success || !result.value?.data) {\n      return null;\n    }\n\n    const typedData = result.value.data as unknown as CoreDatabaseOverrideRow[];\n    const validOverrides = typedData.filter(override => {\n      if (override.user_id !== userId) return false;\n      if (override.expires_at && new Date(override.expires_at) < new Date()) return false;\n      return true;\n    });\n\n    return validOverrides.length > 0 ? validOverrides[0].value : null;\n  }\n\n  /**\n   * Removes user-specific overrides for a feature flag.\n   */\n  async removeOverride(flagKey: TKey, userId: string): Promise<void> {\n    const listResult = await this.db.list<CoreDatabaseOverrideRow>(\n      this.tableConfig.overridesTable,\n      {\n        filter: {\n          field: DATABASE_FIELDS.FlagKey as keyof CoreDatabaseOverrideRow,\n          operator: 'eq',\n          value: flagKey as string,\n        },\n      }\n    );\n\n    if (!listResult.success || !listResult.value?.data) {\n      return;\n    }\n\n    const typedOverrides = listResult.value.data as unknown as CoreDatabaseOverrideRow[];\n    const overridesToDelete = typedOverrides.filter(override => override.user_id === userId);\n\n    for (const override of overridesToDelete) {\n      await this.db.delete(this.tableConfig.overridesTable, override.id);\n    }\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Mappers\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Infers the type of a value for the type field.\n   */\n  private toTypeField(value: unknown): string {\n    if (typeof value === 'boolean') return 'boolean';\n    if (typeof value === 'string') return 'string';\n    if (typeof value === 'number') return 'number';\n    return 'json';\n  }\n\n  /**\n   * Maps a database row to a FeatureFlag object.\n   */\n  // eslint-disable-next-line complexity\n  private mapToFeatureFlag(row: FeatureFlagRow): FeatureFlag<TKey> {\n    return {\n      key: row.key as TKey,\n      type: FEATURE_FLAG_TYPES.BOOLEAN,\n      name: row.key,\n      value: row.value,\n      isEnabled: row.isEnabled ?? row.is_enabled ?? true,\n      environment: row.environments?.[0] ?? '',\n      description: row.description ?? '',\n      createdAt: row.createdAt ?? (row.created_at ? new Date(row.created_at) : new Date()),\n      updatedAt: row.updatedAt ?? (row.updated_at ? new Date(row.updated_at) : new Date()),\n      createdBy: SYSTEM_USERS.SYSTEM,\n      updatedBy: SYSTEM_USERS.SYSTEM,\n    };\n  }\n\n  /**\n   * Maps a database row to a FeatureFlagRule object.\n   */\n  private mapToFeatureFlagRule(row: CoreDatabaseFeatureFlagRuleRow): FeatureFlagRule<TKey> {\n    return {\n      id: row.id,\n      flagKey: (row.flagKey ?? row.flag_key) as TKey,\n      name: row.name,\n      conditions: row.conditions,\n      value: row.value,\n      priority: row.priority,\n      isEnabled: row.isEnabled ?? row.is_enabled ?? true,\n    };\n  }\n}\n","/**\n * Feature Flag Evaluation Engine\n *\n * Core engine for evaluating feature flags with rules, targeting, and rollouts.\n * This will be moved to @plyaz/core when the package structure is finalized.\n *\n * @fileoverview Core feature flag evaluation engine\n * @version 1.0.0\n */\n\nimport type {\n  FeatureFlag,\n  FeatureFlagRule,\n  FeatureFlagCondition,\n  FeatureFlagContext,\n  FeatureFlagEvaluation,\n  FeatureFlagValue,\n} from '@plyaz/types';\nimport { PackageLogger } from '@plyaz/logger';\nimport { isInRollout, createRolloutIdentifier, isTruthy } from '@utils/common';\nimport { ContextUtils, evaluateConditionOperator } from '@utils/featureFlags';\n\n/**\n * Core feature flag evaluation engine.\n * Handles all the logic for evaluating feature flags including rules, targeting, and rollouts.\n *\n * @class FeatureFlagEngine\n *\n * @example\n * ```typescript\n * const engine = new FeatureFlagEngine(defaultFlags, true);\n * engine.setFlags(flagsFromDatabase);\n * engine.setRules(rulesFromDatabase);\n *\n * const evaluation = engine.evaluate('AUTH_GOOGLE', context);\n * console.log(evaluation.isEnabled); // true/false\n * ```\n */\nexport class FeatureFlagEngine<FeatureFlagKey extends string> {\n  /** Logger instance */\n  private readonly logger = new PackageLogger({\n    packageName: 'core',\n    service: 'FeatureFlagEngine',\n  });\n\n  /** Storage for active feature flags */\n  private flags: Map<FeatureFlagKey, FeatureFlag<FeatureFlagKey>> = new Map();\n  /** Storage for targeting rules, organized by flag key */\n  private rules: Map<FeatureFlagKey, FeatureFlagRule<FeatureFlagKey>[]> = new Map();\n  /** Storage for manual overrides (useful for testing) */\n  private overrides: Map<FeatureFlagKey, FeatureFlagValue> = new Map();\n\n  /**\n   * Creates a new feature flag evaluation engine.\n   *\n   * @param defaults - Default flag values to fall back to\n   * @param isLoggingEnabled - Whether to enable debug logging\n   */\n  constructor(\n    private defaults: Record<FeatureFlagKey, FeatureFlagValue>,\n    private isLoggingEnabled = false\n  ) {}\n\n  /**\n   * Sets the active feature flags for evaluation.\n   * Clears existing flags and rules before setting new ones.\n   *\n   * @param flags - Array of feature flags to activate\n   */\n  setFlags(flags: FeatureFlag<FeatureFlagKey>[]): void {\n    this.flags.clear();\n    this.rules.clear();\n\n    for (const flag of flags) {\n      this.flags.set(flag.key, flag);\n    }\n\n    this.log('Loaded flags:', this.flags.size);\n  }\n\n  /**\n   * Sets the targeting rules for feature flags.\n   * Rules are automatically sorted by priority (higher numbers first).\n   *\n   * @param rules - Array of feature flag rules\n   */\n  setRules(rules: FeatureFlagRule<FeatureFlagKey>[]): void {\n    this.rules.clear();\n\n    for (const rule of rules) {\n      const existing = this.rules.get(rule.flagKey) ?? [];\n      existing.push(rule);\n      // Sort by priority (higher priority first)\n      existing.sort((a, b) => b.priority - a.priority);\n      this.rules.set(rule.flagKey, existing);\n    }\n\n    this.log('Loaded rules:', rules.length);\n  }\n\n  /**\n   * Gets all targeting rules.\n   *\n   * @returns Array of all feature flag rules\n   */\n  getRules(): FeatureFlagRule<FeatureFlagKey>[] {\n    const allRules: FeatureFlagRule<FeatureFlagKey>[] = [];\n    for (const rules of this.rules.values()) {\n      allRules.push(...rules);\n    }\n    return allRules;\n  }\n\n  /**\n   * Sets a manual override for a specific flag.\n   * Overrides take precedence over all other evaluation logic.\n   *\n   * @param key - The flag key to override\n   * @param value - The value to force for this flag\n   */\n  setOverride(key: FeatureFlagKey, value: FeatureFlagValue): void {\n    this.overrides.set(key, value);\n    this.log('Override set:', key, value);\n  }\n\n  /**\n   * Removes a manual override for a specific flag.\n   *\n   * @param key - The flag key to remove override for\n   */\n  removeOverride(key: FeatureFlagKey): void {\n    this.overrides.delete(key);\n    this.log('Override removed:', key);\n  }\n\n  /**\n   * Updates the default values for feature flags.\n   * This is useful when the FEATURES constant is updated at runtime.\n   *\n   * @param newDefaults - New default values\n   */\n  updateDefaults(newDefaults: Record<FeatureFlagKey, FeatureFlagValue>): void {\n    this.defaults = newDefaults;\n    this.log('Updated default feature values');\n  }\n\n  /**\n   * Clears all manual overrides.\n   */\n  clearOverrides(): void {\n    this.overrides.clear();\n    this.log('All overrides cleared');\n  }\n\n  /**\n   * Gets all current flags.\n   *\n   * @returns Array of all feature flags\n   */\n  getFlags(): FeatureFlag<FeatureFlagKey>[] {\n    return Array.from(this.flags.values());\n  }\n\n  /**\n   * Evaluates a feature flag and returns the complete evaluation result.\n   *\n   * @param key - The feature flag key to evaluate\n   * @param context - Optional context for targeting\n   * @returns Complete evaluation result with value and metadata\n   */\n  evaluate(\n    key: FeatureFlagKey,\n    context?: FeatureFlagContext\n  ): FeatureFlagEvaluation<FeatureFlagKey> {\n    const evaluatedAt = new Date();\n\n    // Check for override first\n    const overrideResult = this.checkOverride(key, evaluatedAt);\n    if (overrideResult) return overrideResult;\n\n    // Get flag from storage\n    const flag = this.flags.get(key);\n    if (!flag) {\n      return this.createDefaultEvaluation(key, evaluatedAt);\n    }\n\n    // Check if flag is disabled\n    if (!flag.isEnabled) {\n      return this.createDisabledEvaluation(key, evaluatedAt);\n    }\n\n    // Check environment\n    if (!this.isEnvironmentMatch(flag, context)) {\n      return this.createDefaultEvaluation(key, evaluatedAt);\n    }\n\n    // Evaluate rules\n    const ruleResult = this.evaluateRules(key, context, evaluatedAt);\n    if (ruleResult) return ruleResult;\n\n    // Check flag-level rollout\n    if (!this.isInFlagRollout(key, flag, context)) {\n      return this.createDefaultEvaluation(key, evaluatedAt);\n    }\n\n    // Return flag value\n    return this.createFlagEvaluation(key, flag, evaluatedAt);\n  }\n\n  /**\n   * Checks for manual override and returns evaluation if found.\n   *\n   * @private\n   * @param key - The feature flag key\n   * @param evaluatedAt - Evaluation timestamp\n   * @returns Evaluation result or null if no override\n   */\n  private checkOverride(\n    key: FeatureFlagKey,\n    evaluatedAt: Date\n  ): FeatureFlagEvaluation<FeatureFlagKey> | null {\n    if (!this.overrides.has(key)) return null;\n\n    const value = this.overrides.get(key)!;\n    return {\n      flagKey: key,\n      value,\n      isEnabled: isTruthy(value),\n      reason: 'override',\n      evaluatedAt,\n    } satisfies FeatureFlagEvaluation<FeatureFlagKey>;\n  }\n\n  /**\n   * Creates default evaluation result.\n   *\n   * @private\n   * @param key - The feature flag key\n   * @param evaluatedAt - Evaluation timestamp\n   * @returns Default evaluation result\n   */\n  private createDefaultEvaluation(\n    key: FeatureFlagKey,\n    evaluatedAt: Date\n  ): FeatureFlagEvaluation<FeatureFlagKey> {\n    const defaultValue = this.defaults[key] ?? false;\n    return {\n      flagKey: key,\n      value: defaultValue,\n      isEnabled: isTruthy(defaultValue),\n      reason: 'default',\n      evaluatedAt,\n    } satisfies FeatureFlagEvaluation<FeatureFlagKey>;\n  }\n\n  /**\n   * Creates disabled evaluation result.\n   *\n   * @private\n   * @param key - The feature flag key\n   * @param evaluatedAt - Evaluation timestamp\n   * @returns Disabled evaluation result\n   */\n  private createDisabledEvaluation(\n    key: FeatureFlagKey,\n    evaluatedAt: Date\n  ): FeatureFlagEvaluation<FeatureFlagKey> {\n    return {\n      flagKey: key,\n      value: false,\n      isEnabled: false,\n      reason: 'disabled',\n      evaluatedAt,\n    } satisfies FeatureFlagEvaluation<FeatureFlagKey>;\n  }\n\n  /**\n   * Creates flag evaluation result.\n   *\n   * @private\n   * @param key - The feature flag key\n   * @param flag - The feature flag\n   * @param evaluatedAt - Evaluation timestamp\n   * @returns Flag evaluation result\n   */\n  private createFlagEvaluation(\n    key: FeatureFlagKey,\n    flag: FeatureFlag<FeatureFlagKey>,\n    evaluatedAt: Date\n  ): FeatureFlagEvaluation<FeatureFlagKey> {\n    return {\n      flagKey: key,\n      value: flag.value,\n      isEnabled: isTruthy(flag.value),\n      reason: 'default',\n      evaluatedAt,\n    } satisfies FeatureFlagEvaluation<FeatureFlagKey>;\n  }\n\n  /**\n   * Checks if environment matches for flag evaluation.\n   *\n   * @private\n   * @param flag - The feature flag\n   * @param context - Evaluation context\n   * @returns true if environment matches\n   */\n  private isEnvironmentMatch(\n    flag: FeatureFlag<FeatureFlagKey>,\n    context?: FeatureFlagContext\n  ): boolean {\n    return flag.environment === 'all' || context?.environment === flag.environment;\n  }\n\n  /**\n   * Checks if user is in flag-level rollout.\n   *\n   * @private\n   * @param key - The feature flag key\n   * @param flag - The feature flag\n   * @param context - Evaluation context\n   * @returns true if user is in rollout\n   */\n  private isInFlagRollout(\n    key: FeatureFlagKey,\n    flag: FeatureFlag<FeatureFlagKey>,\n    context?: FeatureFlagContext\n  ): boolean {\n    if (flag.rolloutPercentage === undefined) return true;\n    const identifier = createRolloutIdentifier(key, context?.userId);\n    return isInRollout(identifier, flag.rolloutPercentage);\n  }\n\n  /**\n   * Evaluates all rules for a flag.\n   *\n   * @private\n   * @param key - The feature flag key\n   * @param context - Evaluation context\n   * @param evaluatedAt - Evaluation timestamp\n   * @returns Rule evaluation result or null if no match\n   */\n  private evaluateRules(\n    key: FeatureFlagKey,\n    context?: FeatureFlagContext,\n    evaluatedAt?: Date\n  ): FeatureFlagEvaluation<FeatureFlagKey> | null {\n    const rules = this.rules.get(key) ?? [];\n\n    for (const rule of rules) {\n      if (!rule.isEnabled) continue;\n\n      const ruleResult = this.evaluateMatchingRule(key, rule, context, evaluatedAt);\n      if (ruleResult) return ruleResult;\n    }\n\n    return null;\n  }\n\n  /**\n   * Evaluates a single matching rule and returns result if it passes.\n   *\n   * @private\n   * @param key - The feature flag key\n   * @param rule - The rule to evaluate\n   * @param context - Evaluation context\n   * @param evaluatedAt - Evaluation timestamp\n   * @returns Rule evaluation result or null if no match\n   */\n  private evaluateMatchingRule(\n    key: FeatureFlagKey,\n    rule: FeatureFlagRule<FeatureFlagKey>,\n    context?: FeatureFlagContext,\n    evaluatedAt?: Date\n  ): FeatureFlagEvaluation<FeatureFlagKey> | null {\n    if (!this.evaluateRule(rule, context)) return null;\n\n    const isInRuleRollout =\n      rule.rolloutPercentage === undefined ||\n      isInRollout(createRolloutIdentifier(key, context?.userId), rule.rolloutPercentage);\n\n    if (!isInRuleRollout) return null;\n\n    return {\n      flagKey: key,\n      value: rule.value,\n      isEnabled: isTruthy(rule.value),\n      reason: 'rule_match',\n      matchedRuleId: rule.id,\n      evaluatedAt: evaluatedAt ?? new Date(),\n    } satisfies FeatureFlagEvaluation<FeatureFlagKey>;\n  }\n\n  /**\n   * Evaluates a single rule against the provided context.\n   * All conditions in the rule must match (AND logic).\n   *\n   * @private\n   * @param rule - The rule to evaluate\n   * @param context - Context to evaluate against\n   * @returns true if the rule matches the context\n   */\n  private evaluateRule(\n    rule: FeatureFlagRule<FeatureFlagKey>,\n    context?: FeatureFlagContext\n  ): boolean {\n    if (rule.conditions.length === 0) return true;\n\n    // All conditions must match (AND logic)\n    return rule.conditions.every(condition => this.evaluateCondition(condition, context));\n  }\n\n  /**\n   * Evaluates a single condition against the provided context.\n   *\n   * @private\n   * @param condition - The condition to evaluate\n   * @param context - Context to evaluate against\n   * @returns true if the condition matches\n   */\n  private evaluateCondition(\n    condition: FeatureFlagCondition,\n    context?: FeatureFlagContext\n  ): boolean {\n    if (!context) return false;\n\n    const contextValue = ContextUtils.getContextValue(condition.field, context);\n    if (contextValue === undefined) return false;\n\n    return evaluateConditionOperator(condition, contextValue);\n  }\n\n  /**\n   * Logs debug information if logging is enabled.\n   *\n   * @private\n   * @param args - Arguments to log\n   */\n  private log(...args: unknown[]): void {\n    if (this.isLoggingEnabled) {\n      this.logger.debug(args.map(arg => String(arg)).join(' '));\n    }\n  }\n}\n","/**\n * Feature Flag Context Utilities\n *\n * Utilities for building, validating, and manipulating feature flag contexts.\n *\n * @fileoverview Feature flag context utilities\n * @version 1.0.0\n */\n\nimport type { FeatureFlagContext } from '@plyaz/types';\nimport { ISO_STANDARDS } from '@plyaz/config';\n\n/**\n * Builder class for creating feature flag evaluation contexts.\n * Provides a fluent interface for setting context properties.\n *\n * @class FeatureFlagContextBuilder\n *\n * @example\n * ```typescript\n * const context = new FeatureFlagContextBuilder()\n *   .setUserId('user123')\n *   .setUserRole('premium')\n *   .setEnvironment('production')\n *   .setPlatform('web')\n *   .setCustom({ subscription: 'premium', betaTester: true })\n *   .build();\n * ```\n */\nexport class FeatureFlagContextBuilder {\n  private context: Partial<FeatureFlagContext> = {};\n\n  /**\n   * Sets the user ID in the context.\n   *\n   * @param userId - User identifier\n   * @returns Builder instance for chaining\n   */\n  setUserId(userId: string): this {\n    this.context.userId = userId;\n    return this;\n  }\n\n  /**\n   * Sets the user email in the context.\n   *\n   * @param userEmail - User email address\n   * @returns Builder instance for chaining\n   */\n  setUserEmail(userEmail: string): this {\n    this.context.userEmail = userEmail;\n    return this;\n  }\n\n  /**\n   * Sets the user role in the context.\n   *\n   * @param userRole - User role or permission level\n   * @returns Builder instance for chaining\n   */\n  setUserRole(userRole: string): this {\n    this.context.userRole = userRole;\n    return this;\n  }\n\n  /**\n   * Sets the country in the context.\n   *\n   * @param country - Country code (ISO 3166-1 alpha-2)\n   * @returns Builder instance for chaining\n   */\n  setCountry(country: string): this {\n    this.context.country = country;\n    return this;\n  }\n\n  /**\n   * Sets the platform in the context.\n   *\n   * @param platform - Platform type\n   * @returns Builder instance for chaining\n   */\n  setPlatform(platform: 'web' | 'mobile' | 'desktop'): this {\n    this.context.platform = platform;\n    return this;\n  }\n\n  /**\n   * Sets the version in the context.\n   *\n   * @param version - Application version\n   * @returns Builder instance for chaining\n   */\n  setVersion(version: string): this {\n    this.context.version = version;\n    return this;\n  }\n\n  /**\n   * Sets the environment in the context.\n   *\n   * @param environment - Current environment\n   * @returns Builder instance for chaining\n   */\n  setEnvironment(environment: 'development' | 'staging' | 'production'): this {\n    this.context.environment = environment;\n    return this;\n  }\n\n  /**\n   * Sets custom context data.\n   *\n   * @param custom - Custom context properties\n   * @returns Builder instance for chaining\n   */\n  setCustom(custom: Record<string, unknown>): this {\n    this.context.custom = { ...this.context.custom, ...custom };\n    return this;\n  }\n\n  /**\n   * Adds a single custom property to the context.\n   *\n   * @param key - Custom property key\n   * @param value - Custom property value\n   * @returns Builder instance for chaining\n   */\n  addCustomProperty(key: string, value: unknown): this {\n    this.context.custom ??= {};\n    this.context.custom[key] = value;\n    return this;\n  }\n\n  /**\n   * Builds the final context object.\n   * Validates required fields and returns the context.\n   *\n   * @returns Complete feature flag context\n   * @throws Error if required environment is not set\n   */\n  build(): FeatureFlagContext {\n    return {\n      environment: this.context.environment ?? 'development',\n      userId: this.context.userId,\n      userEmail: this.context.userEmail,\n      userRole: this.context.userRole,\n      country: this.context.country,\n      platform: this.context.platform,\n      version: this.context.version,\n      custom: this.context.custom,\n    } satisfies FeatureFlagContext;\n  }\n\n  /**\n   * Clears all context data and resets the builder.\n   *\n   * @returns Builder instance for chaining\n   */\n  clear(): this {\n    this.context = {};\n    return this;\n  }\n\n  /**\n   * Creates a copy of the current builder state.\n   *\n   * @returns New builder instance with copied context\n   */\n  clone(): FeatureFlagContextBuilder {\n    const cloned = new FeatureFlagContextBuilder();\n    cloned.context = { ...this.context };\n    if (this.context.custom) {\n      cloned.context.custom = { ...this.context.custom };\n    }\n    return cloned;\n  }\n}\n\n/**\n * Context utilities for common scenarios.\n */\nexport const ContextUtils = {\n  /**\n   * Creates a basic context for anonymous users using the builder.\n   *\n   * @param environment - Target environment\n   * @param platform - User platform\n   * @returns Basic anonymous context\n   */\n  createAnonymousContext(\n    environment: 'development' | 'staging' | 'production',\n    platform: 'web' | 'mobile' | 'desktop' = 'web'\n  ): FeatureFlagContext {\n    return new FeatureFlagContextBuilder()\n      .setEnvironment(environment)\n      .setPlatform(platform)\n      .build();\n  },\n\n  /**\n   * Creates a context for authenticated users using the builder.\n   *\n   * @param params - User context parameters\n   * @returns User context\n   */\n  createUserContext(params: {\n    userId: string;\n    environment: 'development' | 'staging' | 'production';\n    userEmail?: string;\n    userRole?: string;\n    platform?: 'web' | 'mobile' | 'desktop';\n    country?: string;\n    version?: string;\n    custom?: Record<string, unknown>;\n  }): FeatureFlagContext {\n    const builder = new FeatureFlagContextBuilder()\n      .setUserId(params.userId)\n      .setEnvironment(params.environment);\n\n    if (params.userEmail) builder.setUserEmail(params.userEmail);\n    if (params.userRole) builder.setUserRole(params.userRole);\n    if (params.platform) builder.setPlatform(params.platform);\n    if (params.country) builder.setCountry(params.country);\n    if (params.version) builder.setVersion(params.version);\n    if (params.custom) builder.setCustom(params.custom);\n\n    return builder.build();\n  },\n\n  /**\n   * Creates a testing context with minimal required fields.\n   *\n   * @param overrides - Optional context overrides\n   * @returns Testing context\n   */\n  createTestingContext(overrides: Partial<FeatureFlagContext> = {}): FeatureFlagContext {\n    return {\n      environment: 'development',\n      platform: 'web',\n      ...overrides,\n    };\n  },\n\n  /**\n   * Validates if a context object is complete and valid.\n   *\n   * @param context - Context to validate\n   * @returns Validation result\n   */\n  validateContext(context: Partial<FeatureFlagContext>): {\n    isValid: boolean;\n    errors: string[];\n  } {\n    const errors: string[] = [];\n\n    if (!context.environment) {\n      errors.push('Environment is required');\n    } else if (!['development', 'staging', 'production'].includes(context.environment)) {\n      errors.push('Environment must be development, staging, or production');\n    }\n\n    if (context.platform && !['web', 'mobile', 'desktop'].includes(context.platform)) {\n      errors.push('Platform must be web, mobile, or desktop');\n    }\n\n    if (context.country && context.country.length !== ISO_STANDARDS.ISO_COUNTRY_CODE_LENGTH) {\n      errors.push('Country must be a 2-letter ISO country code');\n    }\n\n    return {\n      isValid: errors.length === 0,\n      errors,\n    };\n  },\n\n  /**\n   * Merges multiple context objects, with later contexts taking precedence.\n   *\n   * @param contexts - Array of contexts to merge\n   * @returns Merged context\n   */\n  mergeContexts(...contexts: Partial<FeatureFlagContext>[]): FeatureFlagContext {\n    const merged = contexts.reduce((acc, context) => {\n      const result = {\n        ...acc,\n        ...context,\n      };\n\n      // Only merge custom if either has it\n      if (acc.custom || context.custom) {\n        result.custom = {\n          ...acc.custom,\n          ...context.custom,\n        };\n      }\n\n      return result;\n    }, {} as Partial<FeatureFlagContext>);\n\n    merged.environment ??= 'development';\n\n    return merged as FeatureFlagContext;\n  },\n\n  /**\n   * Extracts a specific field value from a context.\n   *\n   * @param field - Field name to extract\n   * @param context - Context object\n   * @returns Field value or undefined\n   */\n  getContextValue(field: string, context: FeatureFlagContext): unknown {\n    const standardFields = {\n      userId: (ctx: FeatureFlagContext) => ctx.userId,\n      userEmail: (ctx: FeatureFlagContext) => ctx.userEmail,\n      userRole: (ctx: FeatureFlagContext) => ctx.userRole,\n      country: (ctx: FeatureFlagContext) => ctx.country,\n      platform: (ctx: FeatureFlagContext) => ctx.platform,\n      version: (ctx: FeatureFlagContext) => ctx.version,\n      environment: (ctx: FeatureFlagContext) => ctx.environment,\n      custom: (ctx: FeatureFlagContext) => ctx.custom,\n    };\n\n    if (field in standardFields) {\n      return standardFields[field as keyof typeof standardFields](context);\n    }\n\n    return context.custom?.[field];\n  },\n\n  /**\n   * Creates a context fingerprint for caching and consistency.\n   *\n   * @param context - Context to fingerprint\n   * @returns String fingerprint\n   */\n  createFingerprint(context: FeatureFlagContext): string {\n    const relevant = {\n      userId: context.userId,\n      userRole: context.userRole,\n      environment: context.environment,\n      platform: context.platform,\n      country: context.country,\n      version: context.version,\n      custom: context.custom,\n    };\n\n    // Filter out undefined values and sort keys for consistency\n    const filtered = Object.entries(relevant)\n      .filter(([, value]) => value !== undefined)\n      .sort(([a], [b]) => a.localeCompare(b))\n      .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {});\n\n    return JSON.stringify(filtered);\n  },\n\n  /**\n   * Sanitizes a context by removing sensitive information.\n   *\n   * @param context - Context to sanitize\n   * @param sensitiveFields - Fields to remove (default: ['userEmail'])\n   * @returns Sanitized context\n   */\n  sanitizeContext(\n    context: FeatureFlagContext,\n    sensitiveFields: string[] = ['userEmail']\n  ): FeatureFlagContext {\n    const sanitized = { ...context };\n\n    // Deep copy custom object if it exists\n    if (context.custom) {\n      sanitized.custom = { ...context.custom };\n    }\n\n    for (const field of sensitiveFields) {\n      if (field in sanitized) {\n        delete (sanitized as Record<string, unknown>)[field];\n      }\n      if (sanitized.custom && field in sanitized.custom) {\n        delete sanitized.custom[field];\n      }\n    }\n\n    return sanitized;\n  },\n} as const;\n\n/**\n * Utility for creating feature flag context for backend applications.\n *\n * @param params - Context parameters\n * @returns Backend-optimized feature flag context\n */\nexport function createBackendContext(params: {\n  userId?: string;\n  userEmail?: string;\n  environment: 'development' | 'staging' | 'production';\n  userRole?: string;\n  platform?: 'api' | 'worker' | 'cron';\n  country?: string;\n  version?: string;\n  custom?: Record<string, unknown>;\n}): {\n  environment: 'development' | 'staging' | 'production';\n  userId?: string;\n  userEmail?: string;\n  userRole?: string;\n  platform: 'api' | 'worker' | 'cron';\n  country?: string;\n  version?: string;\n  custom?: Record<string, unknown>;\n} {\n  return {\n    environment: params.environment,\n    userId: params.userId,\n    userEmail: params.userEmail,\n    userRole: params.userRole,\n    platform: params.platform ?? 'api',\n    country: params.country,\n    version: params.version,\n    custom: params.custom,\n  };\n}\n\n/**\n * Utility for creating feature flag context for frontend applications.\n *\n * @param params - Context parameters\n * @returns Frontend-optimized feature flag context\n */\nexport function createFrontendContext(params: {\n  userId?: string;\n  userEmail?: string;\n  environment: 'development' | 'staging' | 'production';\n  userRole?: string;\n  platform?: 'web' | 'mobile' | 'desktop';\n  country?: string;\n  version?: string;\n  custom?: Record<string, unknown>;\n}): {\n  environment: 'development' | 'staging' | 'production';\n  userId?: string;\n  userEmail?: string;\n  userRole?: string;\n  platform: 'web' | 'mobile' | 'desktop';\n  country?: string;\n  version?: string;\n  custom?: Record<string, unknown>;\n} {\n  return {\n    environment: params.environment,\n    userId: params.userId,\n    userEmail: params.userEmail,\n    userRole: params.userRole,\n    platform: params.platform ?? 'web',\n    country: params.country,\n    version: params.version,\n    custom: params.custom,\n  };\n}\n","/**\n * Feature Flag Condition Utilities\n *\n * Utilities for evaluating feature flag conditions and rules.\n *\n * @fileoverview Condition evaluation utilities\n * @version 1.0.0\n */\n\nimport type { FeatureFlagCondition } from '@plyaz/types';\nimport { ERROR_CODES } from '@plyaz/types';\nimport { CorePackageError } from '@plyaz/errors';\n\n/**\n * Evaluates condition operator against context value.\n *\n * @param condition - The condition to evaluate\n * @param contextValue - The context value to check against\n * @returns true if the condition matches\n */\nexport function evaluateConditionOperator(\n  condition: FeatureFlagCondition,\n  contextValue: unknown\n): boolean {\n  const { operator } = condition;\n\n  if (isEqualityOperator(operator)) {\n    return evaluateEqualityOperator(operator, contextValue, condition.value);\n  }\n\n  if (isStringOperator(operator)) {\n    return evaluateStringOperator(operator, contextValue, condition.value);\n  }\n\n  if (isArrayOperator(operator)) {\n    return evaluateArrayOperator(operator, condition.value, contextValue);\n  }\n\n  if (isNumericOperator(operator)) {\n    return evaluateNumericOperator(operator, contextValue, condition.value);\n  }\n\n  return false;\n}\n\n/**\n * Checks if operator is equality-based.\n *\n * @param operator - The operator to check\n * @returns true if equality operator\n */\nexport function isEqualityOperator(operator: string): boolean {\n  return operator === 'equals' || operator === 'not_equals';\n}\n\n/**\n * Checks if operator is string-based.\n *\n * @param operator - The operator to check\n * @returns true if string operator\n */\nexport function isStringOperator(operator: string): boolean {\n  return operator === 'contains' || operator === 'not_contains';\n}\n\n/**\n * Checks if operator is array-based.\n *\n * @param operator - The operator to check\n * @returns true if array operator\n */\nexport function isArrayOperator(operator: string): boolean {\n  return operator === 'in' || operator === 'not_in';\n}\n\n/**\n * Checks if operator is numeric-based.\n *\n * @param operator - The operator to check\n * @returns true if numeric operator\n */\nexport function isNumericOperator(operator: string): boolean {\n  return operator === 'greater_than' || operator === 'less_than';\n}\n\n/**\n * Evaluates equality operators.\n *\n * @param operator - equals or not_equals\n * @param contextValue - Value from context\n * @param conditionValue - Value from condition\n * @returns Evaluation result\n */\nexport function evaluateEqualityOperator(\n  operator: string,\n  contextValue: unknown,\n  conditionValue: unknown\n): boolean {\n  const isEqual = contextValue === conditionValue;\n  return operator === 'equals' ? isEqual : !isEqual;\n}\n\n/**\n * Evaluates string operators.\n *\n * @param operator - contains or not_contains\n * @param contextValue - Value from context\n * @param conditionValue - Value from condition\n * @returns Evaluation result\n */\nexport function evaluateStringOperator(\n  operator: string,\n  contextValue: unknown,\n  conditionValue: unknown\n): boolean {\n  // Handle string contains\n  if (typeof contextValue === 'string' && typeof conditionValue === 'string') {\n    const contains = contextValue.includes(conditionValue);\n    return operator === 'contains' ? contains : !contains;\n  }\n\n  // Handle array contains\n  if (Array.isArray(contextValue) && typeof conditionValue === 'string') {\n    const contains = contextValue.includes(conditionValue);\n    return operator === 'contains' ? contains : !contains;\n  }\n\n  // For not_contains, if neither string nor array match, return true\n  return operator === 'not_contains';\n}\n\n/**\n * Evaluates array operators.\n *\n * @param operator - in or not_in\n * @param conditionValue - Array value from condition\n * @param contextValue - Value from context\n * @returns Evaluation result\n */\nexport function evaluateArrayOperator(\n  operator: string,\n  conditionValue: unknown,\n  contextValue: unknown\n): boolean {\n  if (!Array.isArray(conditionValue)) {\n    // For not_in operator, if condition value is not an array, return true\n    return operator === 'not_in';\n  }\n\n  const isIncluded = conditionValue.includes(contextValue);\n  return operator === 'in' ? isIncluded : !isIncluded;\n}\n\n/**\n * Evaluates numeric operators.\n *\n * @param operator - greater_than or less_than\n * @param contextValue - Value from context\n * @param conditionValue - Value from condition\n * @returns Evaluation result\n */\nfunction compareValues<T>(operator: string, left: T, right: T): boolean {\n  switch (operator) {\n    case 'greater_than':\n      return left > right;\n    case 'less_than':\n      return left < right;\n    default:\n      return false;\n  }\n}\n\nexport function evaluateNumericOperator(\n  operator: string,\n  contextValue: unknown,\n  conditionValue: unknown\n): boolean {\n  // Try numeric comparison first\n  const contextNum = Number(contextValue);\n  const conditionNum = Number(conditionValue);\n\n  if (!isNaN(contextNum) && !isNaN(conditionNum)) {\n    return compareValues(operator, contextNum, conditionNum);\n  }\n\n  // Fall back to string comparison for non-numeric values\n  if (typeof contextValue === 'string' && typeof conditionValue === 'string') {\n    return compareValues(operator, contextValue, conditionValue);\n  }\n\n  return false;\n}\n\n/**\n * Condition evaluation utilities.\n */\nexport const ConditionUtils = {\n  /**\n   * Evaluates multiple conditions with AND logic.\n   *\n   * @param conditions - Array of conditions\n   * @param contextValue - Context value getter function\n   * @returns true if all conditions match\n   */\n  evaluateConditionsAnd: (\n    conditions: FeatureFlagCondition[],\n    contextValue: (field: string) => unknown\n  ): boolean => {\n    if (conditions.length === 0) return true;\n\n    return conditions.every(condition => {\n      const value = contextValue(condition.field);\n      if (value === undefined) return false;\n      return evaluateConditionOperator(condition, value);\n    });\n  },\n\n  /**\n   * Evaluates multiple conditions with OR logic.\n   *\n   * @param conditions - Array of conditions\n   * @param contextValue - Context value getter function\n   * @returns true if any condition matches\n   */\n  evaluateConditionsOr: (\n    conditions: FeatureFlagCondition[],\n    contextValue: (field: string) => unknown\n  ): boolean => {\n    if (conditions.length === 0) return true;\n\n    return conditions.some(condition => {\n      const value = contextValue(condition.field);\n      if (value === undefined) return false;\n      return evaluateConditionOperator(condition, value);\n    });\n  },\n\n  /**\n   * Validates a condition structure.\n   *\n   * @param condition - Condition to validate\n   * @returns Validation result\n   */\n  validateCondition: (\n    condition: Partial<FeatureFlagCondition>\n  ): {\n    isValid: boolean;\n    errors: string[];\n  } => {\n    const errors: string[] = [];\n\n    if (!condition.field) {\n      errors.push('Field is required');\n    }\n\n    if (!condition.operator) {\n      errors.push('Operator is required');\n    } else {\n      const validOperators = [\n        'equals',\n        'not_equals',\n        'contains',\n        'not_contains',\n        'in',\n        'not_in',\n        'greater_than',\n        'less_than',\n      ];\n      if (!validOperators.includes(condition.operator)) {\n        errors.push(`Invalid operator: ${condition.operator}`);\n      }\n    }\n\n    if (condition.value === undefined) {\n      errors.push('Value is required');\n    }\n\n    return {\n      isValid: errors.length === 0,\n      errors,\n    };\n  },\n\n  /**\n   * Creates a condition object with validation.\n   *\n   * @param field - Context field to evaluate\n   * @param operator - Comparison operator\n   * @param value - Value to compare against\n   * @returns Valid condition object\n   */\n  createCondition: (\n    field: string,\n    operator: FeatureFlagCondition['operator'],\n    value: FeatureFlagCondition['value']\n  ): FeatureFlagCondition => {\n    const condition = { field, operator, value } as FeatureFlagCondition;\n    const validation = ConditionUtils.validateCondition(condition);\n\n    if (!validation.isValid) {\n      throw new CorePackageError(\n        `Invalid condition: ${validation.errors.join(', ')}`,\n        ERROR_CODES.VALIDATION_ERROR\n      );\n    }\n\n    return condition;\n  },\n} as const;\n","/**\n * Utilities Exports\n */\n\n// Common utilities\nexport * from './common';\n\n// Feature flag utilities\nexport * from './featureFlags';\n\n// Runtime utilities\nexport * from './runtime';\n\n// File operation utilities\nexport * from './files';\n\n// Mapper utilities\nexport * from './mapperUtils';\n\n// HMR-safe singleton helper\nexport { createHmrSafeSingleton } from './hmr-singleton';\nexport type { HmrSingletonOptions, HmrSingletonAccessor } from './hmr-singleton';\n","/**\n * ============================================================================\n * FILE OPERATION UTILITIES\n * ============================================================================\n *\n * Framework-agnostic utilities for common file operations:\n * - Base64 encoding/decoding\n * - Blob creation and download triggering\n * - File key parsing\n * - Filename generation\n *\n * These utilities work in both browser and Node.js environments.\n */\n\nimport {\n  MIME_TYPE_EXTENSIONS,\n  FILE_SIZE_UNITS,\n  FILE_SIZE_MULTIPLIERS,\n  type ParsedFileKey,\n} from '@plyaz/types/core';\n\n// File key path segment counts\nconst FILE_KEY_FULL_PATH_SEGMENTS = 4;\nconst FILE_KEY_THREE_SEGMENTS = 3;\nconst FILE_KEY_TWO_SEGMENTS = 2;\nconst MIME_TYPE_PARTS = 2;\n\n// ─────────────────────────────────────────────────────────────────────────────\n// BASE64 CONVERSION\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Convert a File to base64 string (browser only).\n *\n * @param file - The File object to convert\n * @returns Promise resolving to base64 encoded string (without data URL prefix)\n *\n * @example\n * ```typescript\n * const base64 = await fileToBase64(file);\n * // Use for API upload\n * ```\n */\nexport function fileToBase64(file: File): Promise<string> {\n  return new Promise((resolve, reject) => {\n    const reader = new FileReader();\n    reader.onload = () => {\n      const result = reader.result as string;\n      // Remove data URL prefix (e.g., \"data:application/pdf;base64,\")\n      const base64 = result.split(',')[1] || result;\n      resolve(base64);\n    };\n    reader.onerror = () => reject(reader.error);\n    reader.readAsDataURL(file);\n  });\n}\n\n/**\n * Convert a base64 string to a Blob (browser only).\n *\n * @param base64 - The base64 encoded string\n * @param mimeType - The MIME type for the blob (default: 'application/octet-stream')\n * @returns A Blob containing the decoded data\n *\n * @example\n * ```typescript\n * const blob = base64ToBlob(downloadResult.buffer, 'application/pdf');\n * downloadBlob(blob, 'document.pdf');\n * ```\n */\nexport function base64ToBlob(base64: string, mimeType = 'application/octet-stream'): Blob {\n  const binary = atob(base64);\n  const bytes = new Uint8Array(binary.length);\n  for (let i = 0; i < binary.length; i++) {\n    bytes[i] = binary.charCodeAt(i);\n  }\n  return new Blob([bytes], { type: mimeType });\n}\n\n/**\n * Convert a base64 string to a Buffer (Node.js only).\n *\n * @param base64 - The base64 encoded string\n * @returns A Buffer containing the decoded data\n *\n * @example\n * ```typescript\n * const buffer = base64ToBuffer(encodedData);\n * fs.writeFileSync('output.pdf', buffer);\n * ```\n */\nexport function base64ToBuffer(base64: string): Buffer {\n  return Buffer.from(base64, 'base64');\n}\n\n/**\n * Convert a Buffer or Uint8Array to a base64 string.\n *\n * @param data - The binary data to encode\n * @returns The base64 encoded string\n *\n * @example\n * ```typescript\n * const base64 = bufferToBase64(fileBuffer);\n * ```\n */\nexport function bufferToBase64(data: Buffer | Uint8Array): string {\n  if (Buffer.isBuffer(data)) {\n    return data.toString('base64');\n  }\n  return Buffer.from(data).toString('base64');\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// BROWSER DOWNLOAD\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Trigger a browser download of a Blob.\n *\n * Creates a temporary anchor element to trigger the download,\n * then cleans up the object URL.\n *\n * @param blob - The Blob to download\n * @param filename - The filename to save as\n *\n * @example\n * ```typescript\n * const blob = base64ToBlob(data, 'application/pdf');\n * downloadBlob(blob, 'invoice.pdf');\n * ```\n */\nexport function downloadBlob(blob: Blob, filename: string): void {\n  // Browser-only function - check if we're in a browser environment\n  const win = globalThis as typeof globalThis & { document?: Document };\n  if (!win.document) return;\n\n  const url = URL.createObjectURL(blob);\n  const a = win.document.createElement('a');\n  a.href = url;\n  a.download = filename;\n  win.document.body.appendChild(a);\n  a.click();\n  win.document.body.removeChild(a);\n  URL.revokeObjectURL(url);\n}\n\n/**\n * Download a base64-encoded file in the browser.\n * Combines base64ToBlob and downloadBlob for convenience.\n *\n * @param base64 - The base64 encoded data\n * @param filename - The filename to save as\n * @param mimeType - The MIME type (default: 'application/octet-stream')\n *\n * @example\n * ```typescript\n * downloadBase64(response.data, 'report.pdf', 'application/pdf');\n * ```\n */\nexport function downloadBase64(\n  base64: string,\n  filename: string,\n  mimeType = 'application/octet-stream'\n): void {\n  const blob = base64ToBlob(base64, mimeType);\n  downloadBlob(blob, filename);\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// FILE KEY PARSING\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Parse a storage file key into its components.\n *\n * Supports various key formats:\n * - `entityType/entityId/category/filename`\n * - `entityType/entityId/filename`\n * - `category/filename`\n * - `filename`\n *\n * @param key - The storage key to parse\n * @returns Parsed components\n *\n * @example\n * ```typescript\n * const parsed = parseFileKey('user/123/documents/invoice.pdf');\n * // { entityType: 'user', entityId: '123', category: 'documents', filename: 'invoice.pdf' }\n * ```\n */\nexport function parseFileKey(key: string): ParsedFileKey {\n  const parts = key.split('/');\n  const result: ParsedFileKey = { raw: key };\n\n  if (parts.length >= FILE_KEY_FULL_PATH_SEGMENTS) {\n    // Full path: entityType/entityId/category/filename\n    result.entityType = parts[0];\n    result.entityId = parts[1];\n    result.category = parts[2];\n    result.filename = parts.slice(FILE_KEY_THREE_SEGMENTS).join('/');\n  } else if (parts.length === FILE_KEY_THREE_SEGMENTS) {\n    // entityType/entityId/filename or category/subcategory/filename\n    result.entityType = parts[0];\n    result.entityId = parts[1];\n    result.filename = parts[FILE_KEY_TWO_SEGMENTS];\n  } else if (parts.length === FILE_KEY_TWO_SEGMENTS) {\n    // category/filename\n    result.category = parts[0];\n    result.filename = parts[1];\n  } else {\n    // Just filename\n    result.filename = parts[0];\n  }\n\n  return result;\n}\n\n/**\n * Extract just the filename from a file key or path.\n *\n * @param key - The file key or path\n * @returns The filename portion\n *\n * @example\n * ```typescript\n * getFilenameFromKey('user/123/docs/invoice.pdf'); // 'invoice.pdf'\n * ```\n */\nexport function getFilenameFromKey(key: string): string {\n  return key.split('/').pop() ?? key;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// FILENAME GENERATION\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Generate a filename from a template ID and output format.\n *\n * @param templateId - The template ID (may include path separators)\n * @param outputFormat - The desired output format (e.g., 'pdf', 'docx')\n * @returns A generated filename\n *\n * @example\n * ```typescript\n * generateFilename('invoices/default', 'pdf');\n * // 'default.pdf'\n * ```\n */\nexport function generateFilename(templateId: string, outputFormat: string): string {\n  const baseName = templateId.split('/').pop() ?? 'document';\n  return `${baseName}.${outputFormat}`;\n}\n\n/**\n * Generate a unique filename with timestamp.\n *\n * @param prefix - Filename prefix (default: 'file')\n * @param extension - File extension (default: 'bin')\n * @returns A unique filename\n *\n * @example\n * ```typescript\n * generateUniqueFilename('download', 'pdf');\n * // 'download-1704067200000.pdf'\n * ```\n */\nexport function generateUniqueFilename(prefix = 'file', extension = 'bin'): string {\n  return `${prefix}-${Date.now()}.${extension}`;\n}\n\n/**\n * Infer file extension from MIME type.\n *\n * @param mimeType - The MIME type\n * @returns The inferred extension (without dot)\n *\n * @example\n * ```typescript\n * inferExtensionFromMimeType('application/pdf'); // 'pdf'\n * inferExtensionFromMimeType('image/png'); // 'png'\n * ```\n */\nexport function inferExtensionFromMimeType(mimeType: string): string {\n  // Check exact match first using shared constants\n  if (MIME_TYPE_EXTENSIONS[mimeType]) {\n    return MIME_TYPE_EXTENSIONS[mimeType];\n  }\n\n  // Fallback: try to extract from mime type (e.g., 'image/png' -> 'png')\n  const parts = mimeType.split('/');\n  if (parts.length === MIME_TYPE_PARTS) {\n    return parts[1].split(';')[0].trim();\n  }\n\n  return 'bin';\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// FILE SIZE FORMATTING\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Format file size in human-readable format.\n *\n * @param bytes - Size in bytes\n * @param decimals - Number of decimal places (default: 2)\n * @returns Formatted size string\n *\n * @example\n * ```typescript\n * formatFileSize(1024); // '1 KB'\n * formatFileSize(1536000); // '1.46 MB'\n * ```\n */\nexport function formatFileSize(bytes: number, decimals = 2): string {\n  if (bytes === 0) return '0 Bytes';\n\n  const k = 1024;\n  const dm = decimals < 0 ? 0 : decimals;\n\n  const i = Math.floor(Math.log(bytes) / Math.log(k));\n  const size = Number.parseFloat((bytes / Math.pow(k, i)).toFixed(dm));\n\n  return `${size} ${FILE_SIZE_UNITS[i]}`;\n}\n\n/**\n * Parse a human-readable file size to bytes.\n *\n * @param sizeString - Size string (e.g., '1.5 MB', '100KB')\n * @returns Size in bytes\n *\n * @example\n * ```typescript\n * parseFileSize('1.5 MB'); // 1572864\n * parseFileSize('100KB'); // 102400\n * ```\n */\nexport function parseFileSize(sizeString: string): number {\n  const match = sizeString.trim().match(/^([\\d.]+)\\s*([A-Z]+)$/i);\n  if (!match) {\n    return Number.parseInt(sizeString, 10) || 0;\n  }\n\n  const value = Number.parseFloat(match[1]);\n  const unit = match[2].toUpperCase();\n\n  return Math.round(value * (FILE_SIZE_MULTIPLIERS[unit] ?? 1));\n}\n","/**\n * HMR-Safe Singleton Helper\n *\n * Creates singletons that persist across Next.js Hot Module Replacement (HMR).\n * Uses globalThis to store state so it survives code reloads in development.\n *\n * @example Core initialization\n * ```typescript\n * import { createHmrSafeSingleton } from '@plyaz/core/utils';\n * import { Core, backendConfig } from '@plyaz/core/backend';\n *\n * export const getServerCore = createHmrSafeSingleton('core', async () => {\n *   await Core.initialize(backendConfig);\n *   return Core;\n * });\n *\n * // Usage in API routes\n * export async function GET() {\n *   const core = await getServerCore();\n *   // core.db, core.cache, etc.\n * }\n * ```\n *\n * @example Database connection\n * ```typescript\n * import { createHmrSafeSingleton } from '@plyaz/core/utils';\n * import { drizzle } from 'drizzle-orm/postgres-js';\n * import postgres from 'postgres';\n *\n * export const getDb = createHmrSafeSingleton('db', async () => {\n *   const client = postgres(process.env.DATABASE_URL);\n *   return drizzle(client);\n * });\n * ```\n *\n * @example Cache client\n * ```typescript\n * import { createHmrSafeSingleton } from '@plyaz/core/utils';\n * import Redis from 'ioredis';\n *\n * export const getRedis = createHmrSafeSingleton('redis', async () => {\n *   return new Redis(process.env.REDIS_URL);\n * });\n * ```\n */\n\nimport type { HmrSingletonOptions, HmrSingletonAccessor } from '@plyaz/types/core';\n\n// Re-export types for convenience\nexport type { HmrSingletonOptions, HmrSingletonAccessor } from '@plyaz/types/core';\n\n// Global storage key prefix\nconst GLOBAL_PREFIX = '__plyaz_hmr_singleton__';\n\n/**\n * Type guard to check if an object has a reset method\n */\nfunction hasResetMethod(obj: unknown): obj is { reset: () => Promise<void> } {\n  return (\n    typeof obj === 'object' &&\n    obj !== null &&\n    'reset' in obj &&\n    typeof (obj as Record<string, unknown>).reset === 'function'\n  );\n}\n\n/**\n * Create an HMR-safe singleton accessor.\n *\n * The singleton will persist across Next.js Hot Module Replacement in development,\n * preventing re-initialization on every code change.\n *\n * @param key - Unique key for this singleton (e.g., 'core', 'db', 'redis')\n * @param initializer - Async function that creates the singleton instance\n * @param options - Optional callbacks for lifecycle events\n * @returns Accessor function and utilities\n *\n * @example\n * ```typescript\n * import { createHmrSafeSingleton } from '@plyaz/core/utils';\n *\n * const getCore = createHmrSafeSingleton('core', async () => {\n *   await Core.initialize(config);\n *   return Core;\n * });\n *\n * // In your API route or server component:\n * const core = await getCore();\n *\n * // Check if initialized:\n * if (getCore.isInitialized()) {\n *   // Already initialized\n * }\n *\n * // Reset (for testing):\n * await getCore.reset();\n * ```\n */\nexport function createHmrSafeSingleton<T>(\n  key: string,\n  initializer: () => Promise<T>,\n  options: HmrSingletonOptions = {}\n): HmrSingletonAccessor<T> {\n  const { onInitialized, onError, onReset } = options;\n\n  // Create unique global keys\n  const instanceKey = `${GLOBAL_PREFIX}${key}_instance`;\n  const promiseKey = `${GLOBAL_PREFIX}${key}_promise`;\n  const initializedKey = `${GLOBAL_PREFIX}${key}_initialized`;\n\n  // Type-safe global access\n  const g = globalThis as unknown as Record<string, unknown>;\n\n  // Helper functions for state management\n  function getInstance(): T | undefined {\n    return g[instanceKey] as T | undefined;\n  }\n\n  function setInstance(instance: T): void {\n    g[instanceKey] = instance;\n  }\n\n  function clearInstance(): void {\n    delete g[instanceKey];\n  }\n\n  function getPromise(): Promise<T> | undefined {\n    return g[promiseKey] as Promise<T> | undefined;\n  }\n\n  function setPromise(promise: Promise<T> | null): void {\n    if (promise === null) {\n      delete g[promiseKey];\n    } else {\n      g[promiseKey] = promise;\n    }\n  }\n\n  function isInit(): boolean {\n    return g[initializedKey] === true;\n  }\n\n  function setInit(value: boolean): void {\n    g[initializedKey] = value;\n  }\n\n  /**\n   * Get the singleton instance, initializing if necessary\n   */\n  async function accessor(): Promise<T> {\n    // Already initialized - return cached instance\n    if (isInit()) {\n      const instance = getInstance();\n      if (instance !== undefined) {\n        return instance;\n      }\n    }\n\n    // Initialization in progress - wait for it\n    const existingPromise = getPromise();\n    if (existingPromise) {\n      return existingPromise;\n    }\n\n    // Start initialization\n    const initPromise = (async () => {\n      try {\n        const instance = await initializer();\n        setInstance(instance);\n        setInit(true);\n        onInitialized?.();\n        return instance;\n      } catch (err) {\n        // Reset on failure so next call can retry\n        setPromise(null);\n        const error = err instanceof Error ? err : new Error(String(err));\n        onError?.(error);\n        throw error;\n      }\n    })();\n\n    setPromise(initPromise);\n    return initPromise;\n  }\n\n  /**\n   * Check if the singleton is initialized\n   */\n  accessor.isInitialized = (): boolean => isInit();\n\n  /**\n   * Reset the singleton (for testing or cleanup)\n   */\n  accessor.reset = async (): Promise<void> => {\n    if (isInit()) {\n      // Call cleanup if the instance has a reset method\n      const instance = getInstance();\n      if (hasResetMethod(instance)) {\n        await instance.reset();\n      }\n\n      clearInstance();\n      setInit(false);\n      setPromise(null);\n      onReset?.();\n    }\n  };\n\n  return accessor;\n}\n","/**\n * Package version - single source of truth\n *\n * Reads version from package.json to ensure consistency across:\n * - Health check endpoints\n * - API headers (X-Version)\n * - Observability tags\n * - Logging metadata\n */\n\nimport { createRequire } from 'node:module';\nimport { fileURLToPath } from 'node:url';\nimport { dirname, join } from 'node:path';\nimport { readFileSync } from 'node:fs';\n\nlet cachedVersion: string = '';\n\n/**\n * Get the package version from package.json\n * Caches the result for subsequent calls\n */\nexport function getPackageVersion(): string {\n  if (cachedVersion) return cachedVersion;\n\n  try {\n    // Try ESM approach first\n    const require = createRequire(import.meta.url);\n    const pkg = require('../package.json');\n    cachedVersion = pkg.version ?? '0.0.0';\n  } catch {\n    try {\n      // Fallback: read file directly\n      const currentFile = fileURLToPath(import.meta.url);\n      const currentDir = dirname(currentFile);\n      const pkgPath = join(currentDir, '..', 'package.json');\n      const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));\n      cachedVersion = pkg.version ?? '0.0.0';\n    } catch {\n      // Last resort fallback\n      cachedVersion = '0.0.0';\n    }\n  }\n\n  return cachedVersion;\n}\n\n/**\n * Package version constant\n * Use this for static contexts where async/dynamic loading isn't needed\n */\nexport const VERSION = getPackageVersion();\n\n/**\n * Package name\n */\nexport const PACKAGE_NAME = '@plyaz/core';\n","/**\n * Configuration exports\n *\n * @module config\n */\n\n// Dependencies injection (for custom backend setups)\nexport {\n  setCoreDependencies,\n  getCoreDependencies,\n  hasCoreDependency,\n  getCoreDependency,\n  clearCoreDependencies,\n  type CoreDependencies,\n} from './dependencies';\n","/**\n * Example Module\n *\n * NestJS module demonstrating the proper pattern using domain service directly:\n * Module → Controller → BackendExampleService\n *\n * The BackendExampleService is auto-initialized by Core.initialize() and\n * can be injected via ServiceRegistry or provided directly to controllers.\n *\n * @example Usage in app.module.ts\n * ```typescript\n * import { CoreModule } from '@plyaz/core/nestjs';\n * import { ExampleModule } from '@plyaz/core';\n *\n * @Module({\n *   imports: [\n *     CoreModule.forRoot({ envPath: '.env' }),\n *     ExampleModule,\n *   ],\n * })\n * export class AppModule {}\n * ```\n */\n\nimport { Module } from '@nestjs/common';\nimport { ExampleController, BACKEND_EXAMPLE_DOMAIN_SERVICE } from './example.controller';\nimport { BackendExampleDomainService } from '../../domain/example';\nimport { ServiceRegistry } from '../../init/ServiceRegistry';\n\n@Module({\n  controllers: [ExampleController],\n  providers: [\n    // Provide BackendExampleDomainService via ServiceRegistry\n    // Services are registered during Core.initialize() with proper injection (db, cache, etc.)\n    {\n      provide: BACKEND_EXAMPLE_DOMAIN_SERVICE,\n      useFactory: async () => ServiceRegistry.getAsync<BackendExampleDomainService>('example'),\n    },\n  ],\n  exports: [BACKEND_EXAMPLE_DOMAIN_SERVICE],\n})\nexport class ExampleModule {}\n\n// Re-export for convenience\nexport { BackendExampleDomainService, BACKEND_EXAMPLE_DOMAIN_SERVICE };\n","/**\n * Example Controller\n *\n * Simple NestJS controller demonstrating Core + BackendExampleDomainService integration.\n * Use as reference for building your own backend modules.\n *\n * Demonstrates:\n * - Standard CRUD operations with error handling\n * - Single error throwing (standard pattern)\n * - Array error throwing (multiple validation errors)\n * - Standard API response format using SuccessResponseStandard\n * - How errors are automatically captured and returned as ErrorResponse\n */\n\nimport {\n  Controller,\n  Get,\n  Post,\n  Patch,\n  Delete,\n  Body,\n  Param,\n  HttpCode,\n  HttpStatus,\n  Inject,\n} from '@nestjs/common';\nimport { ApiTags, ApiOperation, ApiBody, ApiParam, ApiResponse } from '@nestjs/swagger';\nimport { BackendExampleDomainService } from '../../domain/example';\nimport { SuccessResponseStandard } from '@plyaz/errors';\nimport type { ExampleEntity, CreateExampleDTO, PatchExampleDTO } from '@plyaz/types/examples';\nimport type { ReturnResponseType } from '@plyaz/types/errors';\nimport type {\n  SendEmailParams,\n  NotificationResult,\n  NotificationResponse,\n} from '@plyaz/types/notifications';\nimport { HTTP_STATUS } from '@plyaz/types';\n\n// Injection token for BackendExampleDomainService\nexport const BACKEND_EXAMPLE_DOMAIN_SERVICE = 'BACKEND_EXAMPLE_DOMAIN_SERVICE';\n\n/**\n * Example Controller\n *\n * Routes:\n * - GET  /example/health                  - Health check\n * - GET  /example/entities/:id            - Get entity by ID\n * - POST /example/entities                - Create entity\n * - PATCH /example/entities/:id           - Update entity\n * - DELETE /example/entities/:id          - Delete entity\n * - POST /example/entities/validated      - Create with full validation (array errors example)\n * - GET  /example/errors/single           - Demo: Single error response\n * - GET  /example/errors/array            - Demo: Array of errors response\n * - POST /example/email                   - Send email using templates\n *\n * NOTE: Upload and generate-document endpoints are now in files.controller.ts\n */\n@ApiTags('example')\n@Controller('example')\nexport class ExampleController {\n  constructor(\n    @Inject(BACKEND_EXAMPLE_DOMAIN_SERVICE)\n    private readonly exampleService: BackendExampleDomainService\n  ) {}\n\n  /**\n   * Health check endpoint\n   * GET /example/health\n   */\n  @Get('health')\n  @ApiOperation({ summary: 'Health check for example service' })\n  @ApiResponse({ status: 200, description: 'Service is healthy' })\n  health(): ReturnResponseType<{ service: boolean; timestamp: string }> {\n    return SuccessResponseStandard('Service is healthy', {\n      service: this.exampleService.isAvailable(),\n      timestamp: new Date().toISOString(),\n    });\n  }\n\n  /**\n   * Get entity by ID\n   * GET /example/entities/:id\n   */\n  @Get('entities/:id')\n  @ApiOperation({ summary: 'Get entity by ID' })\n  @ApiParam({ name: 'id', description: 'Entity UUID' })\n  @ApiResponse({ status: 200, description: 'Entity retrieved successfully' })\n  @ApiResponse({ status: 404, description: 'Entity not found' })\n  async getEntity(@Param('id') id: string): Promise<ReturnResponseType<ExampleEntity | null>> {\n    const entity = await this.exampleService.getById(id);\n    return SuccessResponseStandard('Entity retrieved successfully', entity);\n  }\n\n  /**\n   * Create a new entity\n   * POST /example/entities\n   */\n  @Post('entities')\n  @HttpCode(HttpStatus.CREATED)\n  @ApiOperation({ summary: 'Create a new entity' })\n  @ApiBody({\n    description: 'Entity creation data',\n    schema: {\n      type: 'object',\n      required: ['name'],\n      properties: {\n        name: { type: 'string', description: 'Entity name' },\n        description: { type: 'string', description: 'Entity description' },\n        amount: { type: 'number', description: 'Amount value' },\n        metadata: { type: 'object', description: 'Additional metadata' },\n      },\n    },\n  })\n  @ApiResponse({ status: 201, description: 'Entity created successfully' })\n  @ApiResponse({ status: 400, description: 'Validation error' })\n  async createEntity(@Body() dto: CreateExampleDTO): Promise<ReturnResponseType<ExampleEntity>> {\n    const entity = await this.exampleService.create(dto);\n    return SuccessResponseStandard('Entity created successfully', entity, HTTP_STATUS.CREATED);\n  }\n\n  /**\n   * Update an entity (partial)\n   * PATCH /example/entities/:id\n   */\n  @Patch('entities/:id')\n  @ApiOperation({ summary: 'Update an entity (partial)' })\n  @ApiParam({ name: 'id', description: 'Entity UUID' })\n  @ApiBody({\n    description: 'Partial entity update data',\n    schema: {\n      type: 'object',\n      properties: {\n        name: { type: 'string', description: 'Entity name' },\n        description: { type: 'string', description: 'Entity description' },\n        amount: { type: 'number', description: 'Amount value' },\n      },\n    },\n  })\n  @ApiResponse({ status: 200, description: 'Entity updated successfully' })\n  @ApiResponse({ status: 404, description: 'Entity not found' })\n  async updateEntity(\n    @Param('id') id: string,\n    @Body() dto: PatchExampleDTO\n  ): Promise<ReturnResponseType<ExampleEntity>> {\n    const entity = await this.exampleService.patch(id, dto);\n    return SuccessResponseStandard('Entity updated successfully', entity);\n  }\n\n  /**\n   * Delete an entity\n   * DELETE /example/entities/:id\n   */\n  @Delete('entities/:id')\n  @HttpCode(HttpStatus.OK)\n  @ApiOperation({ summary: 'Delete an entity' })\n  @ApiParam({ name: 'id', description: 'Entity UUID' })\n  @ApiResponse({ status: 200, description: 'Entity deleted successfully' })\n  @ApiResponse({ status: 404, description: 'Entity not found' })\n  async deleteEntity(@Param('id') id: string): Promise<ReturnResponseType<null>> {\n    await this.exampleService.delete(id);\n    return SuccessResponseStandard('Entity deleted successfully', null);\n  }\n\n  /**\n   * Create entity with full validation (array errors pattern)\n   * POST /example/entities/validated\n   */\n  @Post('entities/validated')\n  @HttpCode(HttpStatus.CREATED)\n  @ApiOperation({ summary: 'Create entity with full validation (demo)' })\n  @ApiBody({\n    description: 'Entity data for validation demo',\n    schema: {\n      type: 'object',\n      properties: {\n        name: { type: 'string' },\n        description: { type: 'string' },\n        amount: { type: 'number' },\n      },\n    },\n  })\n  @ApiResponse({ status: 201, description: 'Entity created successfully' })\n  @ApiResponse({ status: 400, description: 'Validation errors (array)' })\n  async createEntityWithValidation(\n    @Body() dto: unknown\n  ): Promise<ReturnResponseType<ExampleEntity>> {\n    const entity = await this.exampleService.create(dto);\n    return SuccessResponseStandard('Entity created successfully', entity, HTTP_STATUS.CREATED);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Error Demonstration Endpoints\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Demo: Single validation error response\n   * GET /example/errors/single\n   */\n  @Get('errors/single')\n  @ApiOperation({ summary: 'Demo: Single validation error response' })\n  @ApiResponse({ status: 400, description: 'Single validation error' })\n  async demoSingleError(): Promise<void> {\n    return await this.exampleService.demoSingleValidationError();\n  }\n\n  /**\n   * Demo: Multiple validation errors response\n   * GET /example/errors/array\n   */\n  @Get('errors/array')\n  @ApiOperation({ summary: 'Demo: Multiple validation errors response' })\n  @ApiResponse({ status: 400, description: 'Array of validation errors' })\n  async demoArrayErrors(): Promise<void> {\n    return await this.exampleService.demoMultipleValidationErrors();\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Email Endpoints (via @plyaz/notifications)\n  // ─────────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Send an email using notification templates\n   * POST /example/email\n   */\n  @Post('email')\n  @HttpCode(HttpStatus.OK)\n  @ApiOperation({ summary: 'Send an email using notification templates' })\n  @ApiBody({\n    description: 'Email parameters',\n    schema: {\n      type: 'object',\n      required: ['to', 'templateId'],\n      properties: {\n        to: { type: 'string', format: 'email', description: 'Recipient email address' },\n        templateId: { type: 'string', description: 'Template ID (e.g., welcome, reset-password)' },\n        templateData: { type: 'object', description: 'Template variables' },\n        locale: { type: 'string', default: 'en', description: 'Locale for template' },\n        subject: { type: 'string', description: 'Custom email subject' },\n      },\n    },\n  })\n  @ApiResponse({ status: 200, description: 'Email sent successfully' })\n  @ApiResponse({ status: 400, description: 'Invalid email parameters' })\n  async sendEmail(\n    @Body() dto: Partial<SendEmailParams>\n  ): Promise<ReturnResponseType<NotificationResult<NotificationResponse>>> {\n    const result = await this.exampleService.sendEmail(dto ?? {});\n    return SuccessResponseStandard('Email sent successfully', result);\n  }\n}\n","/**\n * Files Module\n *\n * NestJS module for Files feature.\n * Uses domain service pattern: Module → Controller → BackendFilesService\n *\n * @example Usage in app.module.ts\n * ```typescript\n * import { CoreModule } from '@plyaz/core/nestjs';\n * import { FilesModule } from '@plyaz/core';\n *\n * @Module({\n *   imports: [\n *     CoreModule.forRoot({ envPath: '.env' }),\n *     FilesModule,\n *   ],\n * })\n * export class AppModule {}\n * ```\n */\n\nimport { Module } from '@nestjs/common';\nimport { FilesController, BACKEND_FILES_DOMAIN_SERVICE } from './files.controller';\nimport { BackendFilesDomainService } from '../../domain/files';\nimport { ServiceRegistry } from '../../init/ServiceRegistry';\n\n@Module({\n  controllers: [FilesController],\n  providers: [\n    // Provide BackendFilesDomainService via ServiceRegistry\n    // Services are registered during Core.initialize() with proper injection (storage, db, etc.)\n    {\n      provide: BACKEND_FILES_DOMAIN_SERVICE,\n      useFactory: async () => ServiceRegistry.getAsync<BackendFilesDomainService>('files'),\n    },\n  ],\n  exports: [BACKEND_FILES_DOMAIN_SERVICE],\n})\nexport class FilesModule {}\n\n// Re-export for convenience\nexport { BackendFilesDomainService, BACKEND_FILES_DOMAIN_SERVICE };\n","/* eslint-disable complexity */\n/**\n * Files Controller\n *\n * REST API endpoints for Files/Media operations.\n * Aligned with @plyaz/api endpoints in files.ts:\n *\n * - POST /files/upload - Upload single file\n * - POST /files/upload/bulk - Upload multiple files\n * - POST /files/generate-document - Generate document from template\n * - GET /files/:id - Get file metadata\n * - GET /files/:id/download - Download file content\n * - GET /files/:id/signed-url - Get signed URL for file\n * - DELETE /files/:id - Delete file\n * - GET /files/health - Health check\n */\n\nimport {\n  Controller,\n  Get,\n  Post,\n  Delete,\n  Body,\n  Param,\n  Inject,\n  HttpCode,\n  HttpStatus,\n  UseInterceptors,\n  UploadedFile,\n  UploadedFiles,\n} from '@nestjs/common';\nimport { FileInterceptor, FilesInterceptor } from '@nestjs/platform-express';\nimport {\n  ApiTags,\n  ApiOperation,\n  ApiBody,\n  ApiParam,\n  ApiResponse,\n  ApiConsumes,\n} from '@nestjs/swagger';\nimport { SuccessResponseStandard } from '@plyaz/errors';\nimport type { ReturnResponseType } from '@plyaz/types/errors';\nimport type { BackendFilesDomainService } from '../../domain/files';\nimport type { FilesEntity } from '@plyaz/types/core';\nimport { FILE_CATEGORY, ENTITY_TYPE, type UploadParams } from '@plyaz/types/storage';\nimport { UPLOAD_CONFIG } from '@plyaz/config';\nimport { coreParseFileCategory, coreParseEntityType } from '../../domain/files';\nimport { GenerateDocumentRequestSchema, type GenerateDocumentRequest } from '@plyaz/types/api';\nimport { SchemaValidationPipe } from '../pipes';\n\n/** Multer file type for uploaded files */\ninterface MulterFile {\n  fieldname: string;\n  originalname: string;\n  encoding: string;\n  mimetype: string;\n  buffer: Buffer;\n  size: number;\n}\n\n/** DTO for bulk file upload with proper enum types */\ninterface BulkUploadDto {\n  files?: Array<Partial<UploadParams> & { base64?: string }>;\n  category?: FILE_CATEGORY;\n  entityType?: ENTITY_TYPE;\n  entityId?: string;\n}\n\nexport const BACKEND_FILES_DOMAIN_SERVICE = 'BACKEND_FILES_DOMAIN_SERVICE';\n\n/**\n * Files Controller\n *\n * Routes:\n * - GET /files/health - Health check\n * - POST /files/upload - Upload single file\n * - POST /files/upload/bulk - Upload multiple files\n * - POST /files/generate-document - Generate document from template\n * - GET /files/:id - Get file metadata\n * - GET /files/:id/download - Download file content\n * - GET /files/:id/signed-url - Get signed URL\n * - DELETE /files/:id - Delete file\n */\n@ApiTags('files')\n@Controller('files')\nexport class FilesController {\n  constructor(\n    @Inject(BACKEND_FILES_DOMAIN_SERVICE)\n    private readonly filesService: BackendFilesDomainService\n  ) {}\n\n  @Get('health')\n  @ApiOperation({ summary: 'Health check for files service' })\n  health(): ReturnResponseType<{ service: boolean; timestamp: string }> {\n    return SuccessResponseStandard('Files service is healthy', {\n      service: this.filesService.isAvailable(),\n      timestamp: new Date().toISOString(),\n    });\n  }\n\n  /**\n   * Upload a single file (multipart/form-data)\n   * POST /files/upload\n   *\n   * Supports both:\n   * - multipart/form-data with 'file' field\n   * - application/json with base64 encoded content\n   */\n  // eslint-disable-next-line max-lines-per-function\n  @Post('upload')\n  @HttpCode(HttpStatus.OK)\n  @UseInterceptors(FileInterceptor('file'))\n  @ApiOperation({ summary: 'Upload a single file' })\n  @ApiConsumes('multipart/form-data', 'application/json')\n  @ApiBody({\n    description: 'File upload - use multipart/form-data for file upload or JSON with base64',\n    schema: {\n      type: 'object',\n      properties: {\n        file: { type: 'string', format: 'binary', description: 'File to upload (multipart)' },\n        base64: {\n          type: 'string',\n          description: 'Base64 encoded file content (JSON)',\n          example: 'SGVsbG8gV29ybGQh',\n        },\n        filename: { type: 'string', description: 'Original filename', example: 'document.pdf' },\n        mimeType: {\n          type: 'string',\n          description: 'MIME type',\n          example: 'application/pdf',\n          enum: [\n            'application/pdf',\n            'image/png',\n            'image/jpeg',\n            'image/webp',\n            'video/mp4',\n            'audio/mpeg',\n            'application/zip',\n          ],\n        },\n        category: {\n          type: 'string',\n          description: 'File category',\n          enum: ['document', 'image', 'video', 'audio', 'archive', 'other'],\n          example: 'document',\n        },\n        entityType: {\n          type: 'string',\n          description: 'Entity type that owns this file',\n          enum: ['user', 'post', 'comment', 'message', 'product', 'order', 'system'],\n          example: 'user',\n        },\n        entityId: {\n          type: 'string',\n          format: 'uuid',\n          description: 'Entity UUID',\n          example: '550e8400-e29b-41d4-a716-446655440000',\n        },\n        bucket: {\n          type: 'string',\n          description: 'Storage bucket name',\n          example: 'uploads',\n        },\n        path: {\n          type: 'string',\n          description: 'Custom storage path',\n          example: 'users/avatars',\n        },\n        metadata: {\n          type: 'object',\n          description: 'Additional metadata',\n          example: { tags: ['profile', 'avatar'] },\n        },\n      },\n    },\n  })\n  @ApiResponse({ status: 200, description: 'File uploaded successfully' })\n  async uploadFile(\n    @UploadedFile() file: MulterFile | undefined,\n    @Body() dto: Partial<UploadParams> & { base64?: string }\n  ): Promise<\n    ReturnResponseType<{\n      id: string;\n      key: string;\n      filename: string;\n      mimeType: string;\n      size: number;\n      url?: string;\n      publicUrl?: string;\n      bucket?: string;\n      adapter?: string;\n      entityType?: string;\n      entityId?: string;\n      category?: string;\n      uploadedAt?: Date;\n      variants?: Record<string, unknown>;\n    }>\n  > {\n    const safeDto = dto ?? {};\n\n    // Build upload params - prefer multipart file over base64\n    const uploadParams: Partial<UploadParams> = {\n      ...safeDto,\n      file: file?.buffer ?? (safeDto.base64 ? Buffer.from(safeDto.base64, 'base64') : undefined),\n      filename: safeDto.filename ?? file?.originalname,\n      mimeType: safeDto.mimeType ?? file?.mimetype,\n    };\n\n    const result = await this.filesService.uploadFile(uploadParams);\n\n    // Get DB record for UUID (same as editor app)\n    const dbRecord = await this.filesService.getByStoragePath(result.metadata.path);\n\n    return SuccessResponseStandard('File uploaded successfully', {\n      id: dbRecord?.id ?? result.metadata.fileId,\n      key: result.metadata.path,\n      filename: result.metadata.filename,\n      mimeType: result.metadata.mimeType,\n      size: result.metadata.size,\n      url: result.metadata.url,\n      publicUrl: result.metadata.url,\n      bucket: result.metadata.bucket,\n      adapter: result.metadata.adapter,\n      entityType: result.metadata.entityType,\n      entityId: result.metadata.entityId,\n      category: result.metadata.category,\n      uploadedAt: result.metadata.uploadedAt,\n      variants: result.variants,\n    });\n  }\n\n  /**\n   * Upload multiple files (multipart/form-data)\n   * POST /files/upload/bulk\n   *\n   * Supports both:\n   * - multipart/form-data with 'files' field (multiple files)\n   * - application/json with array of base64 encoded files\n   */\n  @Post('upload/bulk')\n  @HttpCode(HttpStatus.OK)\n  @UseInterceptors(FilesInterceptor('files', UPLOAD_CONFIG.MAX_CONCURRENT))\n  @ApiOperation({ summary: 'Upload multiple files' })\n  @ApiConsumes('multipart/form-data', 'application/json')\n  @ApiBody({\n    description: 'Multiple file upload - use multipart/form-data or JSON with base64 array',\n    schema: {\n      type: 'object',\n      properties: {\n        files: {\n          type: 'array',\n          items: { type: 'string', format: 'binary' },\n          description: 'Files to upload (multipart)',\n        },\n        category: {\n          type: 'string',\n          description: 'Category for all files',\n          enum: ['document', 'image', 'video', 'audio', 'archive', 'other'],\n          example: 'image',\n        },\n        entityType: {\n          type: 'string',\n          description: 'Entity type for all files',\n          enum: ['user', 'post', 'comment', 'message', 'product', 'order', 'system'],\n          example: 'post',\n        },\n        entityId: {\n          type: 'string',\n          format: 'uuid',\n          description: 'Entity UUID for all files',\n          example: '550e8400-e29b-41d4-a716-446655440000',\n        },\n      },\n    },\n  })\n  @ApiResponse({ status: 200, description: 'Files uploaded successfully' })\n  async uploadFiles(\n    @UploadedFiles() files: MulterFile[] | undefined,\n    @Body() dto: BulkUploadDto & { category?: string; entityType?: string }\n  ): Promise<\n    ReturnResponseType<\n      Array<{\n        id: string;\n        key: string;\n        filename: string;\n        mimeType: string;\n        size: number;\n        url?: string;\n        publicUrl?: string;\n        bucket?: string;\n        adapter?: string;\n        entityType?: string;\n        entityId?: string;\n        category?: string;\n        uploadedAt?: Date;\n        variants?: Record<string, unknown>;\n      }>\n    >\n  > {\n    let uploadParamsArray: Partial<UploadParams>[] = [];\n\n    // Parse enum values safely (handles both typed DTO and string from form-data)\n    const category = coreParseFileCategory(dto?.category);\n    const entityType = coreParseEntityType(dto?.entityType);\n\n    if (files && files.length > 0) {\n      // Multipart upload - convert multer files to upload params\n      uploadParamsArray = files.map(file => ({\n        file: file.buffer,\n        filename: file.originalname,\n        mimeType: file.mimetype,\n        category,\n        entityType,\n        entityId: dto?.entityId,\n      }));\n    } else if (dto?.files && dto.files.length > 0) {\n      // JSON upload with base64\n      uploadParamsArray = dto.files.map(f => ({\n        ...f,\n        file: f.base64 ? Buffer.from(f.base64, 'base64') : undefined,\n      }));\n    }\n\n    const results = await this.filesService.uploadFiles(uploadParamsArray);\n\n    // Get DB records for UUIDs (same as editor app)\n    const responseData = await Promise.all(\n      results.map(async result => {\n        const dbRecord = await this.filesService.getByStoragePath(result.metadata.path);\n        return {\n          id: dbRecord?.id ?? result.metadata.fileId,\n          key: result.metadata.path,\n          filename: result.metadata.filename,\n          mimeType: result.metadata.mimeType,\n          size: result.metadata.size,\n          url: result.metadata.url,\n          publicUrl: result.metadata.url,\n          bucket: result.metadata.bucket,\n          adapter: result.metadata.adapter,\n          entityType: result.metadata.entityType,\n          entityId: result.metadata.entityId,\n          category: result.metadata.category,\n          uploadedAt: result.metadata.uploadedAt,\n          variants: result.variants,\n        };\n      })\n    );\n\n    return SuccessResponseStandard('Files uploaded successfully', responseData);\n  }\n\n  /**\n   * Generate a document from template\n   * POST /files/generate-document\n   *\n   * Uses SchemaValidationPipe for request validation via @plyaz/types schema.\n   */\n  @Post('generate-document')\n  @HttpCode(HttpStatus.OK)\n  @ApiOperation({ summary: 'Generate a document from template' })\n  @ApiBody({\n    description: 'Document generation parameters',\n    schema: {\n      type: 'object',\n      required: ['templateId', 'templateData'],\n      properties: {\n        templateId: {\n          type: 'string',\n          description: 'Template ID',\n          example: 'invoice-template',\n        },\n        templateData: {\n          type: 'object',\n          description: 'Data to populate template',\n          example: {\n            invoiceNumber: 'INV-001',\n            customerName: 'John Doe',\n            items: [{ name: 'Product A', quantity: 2, price: 29.99 }],\n            total: 59.98,\n          },\n        },\n        outputFormat: {\n          type: 'string',\n          enum: ['pdf', 'docx', 'xlsx', 'html'],\n          default: 'pdf',\n          example: 'pdf',\n        },\n        locale: { type: 'string', description: 'Locale for template', example: 'en-US' },\n        pdfOptions: {\n          type: 'object',\n          description: 'PDF rendering options',\n          example: { format: 'A4', landscape: false },\n        },\n      },\n    },\n  })\n  @ApiResponse({ status: 200, description: 'Document generated successfully' })\n  @ApiResponse({ status: 400, description: 'Validation error' })\n  async generateDocument(\n    @Body(new SchemaValidationPipe(GenerateDocumentRequestSchema))\n    dto: GenerateDocumentRequest\n  ): Promise<ReturnResponseType<{ buffer: string; size: number }>> {\n    const buffer = await this.filesService.generateFile(dto);\n    return SuccessResponseStandard('Document generated successfully', {\n      buffer: buffer.toString('base64'),\n      size: buffer.length,\n    });\n  }\n\n  /**\n   * Get file metadata\n   * GET /files/:id\n   */\n  @Get(':id')\n  @ApiOperation({ summary: 'Get file metadata by ID' })\n  @ApiParam({\n    name: 'id',\n    description: 'File UUID from media table',\n    example: '550e8400-e29b-41d4-a716-446655440000',\n  })\n  @ApiResponse({ status: 200, description: 'File metadata retrieved' })\n  @ApiResponse({ status: 404, description: 'File not found' })\n  async getFile(@Param('id') id: string): Promise<ReturnResponseType<FilesEntity | null>> {\n    const entity = await this.filesService.getById(id);\n    return SuccessResponseStandard('File retrieved', entity);\n  }\n\n  /**\n   * Download file content\n   * GET /files/:id/download\n   */\n  @Get(':id/download')\n  @ApiOperation({ summary: 'Download file content' })\n  @ApiParam({\n    name: 'id',\n    description: 'File UUID from media table',\n    example: '550e8400-e29b-41d4-a716-446655440000',\n  })\n  @ApiResponse({ status: 200, description: 'File content (base64 encoded)' })\n  @ApiResponse({ status: 404, description: 'File not found' })\n  async downloadFile(\n    @Param('id') id: string\n  ): Promise<ReturnResponseType<{ buffer: string; filename: string; mimeType: string }>> {\n    const result = await this.filesService.downloadFile({ fileId: id });\n    return SuccessResponseStandard('File downloaded', result);\n  }\n\n  /**\n   * Get signed URL for file\n   * GET /files/:id/signed-url\n   */\n  @Get(':id/signed-url')\n  @ApiOperation({ summary: 'Get a signed URL for file download' })\n  @ApiParam({\n    name: 'id',\n    description: 'File UUID from media table',\n    example: '550e8400-e29b-41d4-a716-446655440000',\n  })\n  @ApiResponse({ status: 200, description: 'Signed URL generated' })\n  @ApiResponse({ status: 404, description: 'File not found' })\n  async getSignedUrl(\n    @Param('id') id: string\n  ): Promise<ReturnResponseType<{ url: string; expiresAt: string }>> {\n    const result = await this.filesService.getSignedUrl({ fileId: id });\n    return SuccessResponseStandard('Signed URL generated', result);\n  }\n\n  /**\n   * Delete file\n   * DELETE /files/:id\n   */\n  @Delete(':id')\n  @HttpCode(HttpStatus.OK)\n  @ApiOperation({ summary: 'Delete a file' })\n  @ApiParam({\n    name: 'id',\n    description: 'File UUID from media table',\n    example: '550e8400-e29b-41d4-a716-446655440000',\n  })\n  @ApiResponse({ status: 200, description: 'File deleted successfully' })\n  @ApiResponse({ status: 404, description: 'File not found' })\n  async deleteFile(@Param('id') id: string): Promise<ReturnResponseType<null>> {\n    await this.filesService.delete(id);\n    return SuccessResponseStandard('File deleted', null);\n  }\n}\n","/**\n * Storage Enum Type Guards\n *\n * Runtime type guards for storage enums. Useful for validating\n * string inputs from API requests, form data, etc.\n *\n * @module @plyaz/core/domain/files\n *\n * @example\n * ```typescript\n * import { coreIsFileCategory, coreParseFileCategory } from '@plyaz/core/domain/files';\n * import { FILE_CATEGORY } from '@plyaz/types/storage';\n *\n * // Type guard usage\n * if (coreIsFileCategory(value)) {\n *   // value is now typed as FILE_CATEGORY\n * }\n *\n * // Parser usage (returns undefined if invalid)\n * const category = coreParseFileCategory(req.body.category);\n * ```\n */\n\nimport {\n  FILE_CATEGORY,\n  ENTITY_TYPE,\n  FILE_ACCESS_LEVEL,\n  UPLOAD_STATUS,\n  STORAGE_ADAPTER_TYPE,\n} from '@plyaz/types/storage';\n\n/** Cached enum values for FILE_CATEGORY */\nconst FILE_CATEGORY_VALUES: readonly string[] = Object.values(FILE_CATEGORY);\n\n/** Cached enum values for ENTITY_TYPE */\nconst ENTITY_TYPE_VALUES: readonly string[] = Object.values(ENTITY_TYPE);\n\n/** Cached enum values for FILE_ACCESS_LEVEL */\nconst FILE_ACCESS_LEVEL_VALUES: readonly string[] = Object.values(FILE_ACCESS_LEVEL);\n\n/** Cached enum values for UPLOAD_STATUS */\nconst UPLOAD_STATUS_VALUES: readonly string[] = Object.values(UPLOAD_STATUS);\n\n/** Cached enum values for STORAGE_ADAPTER_TYPE */\nconst STORAGE_ADAPTER_TYPE_VALUES: readonly string[] = Object.values(STORAGE_ADAPTER_TYPE);\n\n/**\n * Check if value is a valid FILE_CATEGORY enum value\n */\nexport function coreIsFileCategory(value: unknown): value is FILE_CATEGORY {\n  return typeof value === 'string' && FILE_CATEGORY_VALUES.includes(value);\n}\n\n/**\n * Safely parse a string to FILE_CATEGORY enum\n * @returns FILE_CATEGORY if valid, undefined otherwise\n */\nexport function coreParseFileCategory(value: string | undefined | null): FILE_CATEGORY | undefined {\n  return value && coreIsFileCategory(value) ? value : undefined;\n}\n\n/**\n * Check if value is a valid ENTITY_TYPE enum value\n */\nexport function coreIsEntityType(value: unknown): value is ENTITY_TYPE {\n  return typeof value === 'string' && ENTITY_TYPE_VALUES.includes(value);\n}\n\n/**\n * Safely parse a string to ENTITY_TYPE enum\n * @returns ENTITY_TYPE if valid, undefined otherwise\n */\nexport function coreParseEntityType(value: string | undefined | null): ENTITY_TYPE | undefined {\n  return value && coreIsEntityType(value) ? value : undefined;\n}\n\n/**\n * Check if value is a valid FILE_ACCESS_LEVEL enum value\n */\nexport function coreIsFileAccessLevel(value: unknown): value is FILE_ACCESS_LEVEL {\n  return typeof value === 'string' && FILE_ACCESS_LEVEL_VALUES.includes(value);\n}\n\n/**\n * Safely parse a string to FILE_ACCESS_LEVEL enum\n * @returns FILE_ACCESS_LEVEL if valid, undefined otherwise\n */\nexport function coreParseFileAccessLevel(\n  value: string | undefined | null\n): FILE_ACCESS_LEVEL | undefined {\n  return value && coreIsFileAccessLevel(value) ? value : undefined;\n}\n\n/**\n * Check if value is a valid UPLOAD_STATUS enum value\n */\nexport function coreIsUploadStatus(value: unknown): value is UPLOAD_STATUS {\n  return typeof value === 'string' && UPLOAD_STATUS_VALUES.includes(value);\n}\n\n/**\n * Safely parse a string to UPLOAD_STATUS enum\n * @returns UPLOAD_STATUS if valid, undefined otherwise\n */\nexport function coreParseUploadStatus(value: string | undefined | null): UPLOAD_STATUS | undefined {\n  return value && coreIsUploadStatus(value) ? value : undefined;\n}\n\n/**\n * Check if value is a valid STORAGE_ADAPTER_TYPE enum value\n */\nexport function coreIsStorageAdapterType(value: unknown): value is STORAGE_ADAPTER_TYPE {\n  return typeof value === 'string' && STORAGE_ADAPTER_TYPE_VALUES.includes(value);\n}\n\n/**\n * Safely parse a string to STORAGE_ADAPTER_TYPE enum\n * @returns STORAGE_ADAPTER_TYPE if valid, undefined otherwise\n */\nexport function coreParseStorageAdapterType(\n  value: string | undefined | null\n): STORAGE_ADAPTER_TYPE | undefined {\n  return value && coreIsStorageAdapterType(value) ? value : undefined;\n}\n","/**\n * Schema Validation Pipe\n *\n * NestJS pipe that validates request data using schema definitions.\n * Throws ValidationError[] which is caught by the global exception filter.\n *\n * @example\n * ```typescript\n * import { SchemaValidationPipe } from '@plyaz/core/backend';\n * import { UploadFileRequestSchema } from '@plyaz/types/api';\n *\n * @Post('upload')\n * async uploadFile(\n *   @Body(new SchemaValidationPipe(UploadFileRequestSchema)) dto: UploadFileRequest\n * ) {\n *   // dto is validated and typed\n * }\n * ```\n *\n * @example Global pipe\n * ```typescript\n * // main.ts\n * import { SchemaValidationPipe } from '@plyaz/core/backend';\n * import { MyGlobalSchema } from '@plyaz/types';\n *\n * app.useGlobalPipes(new SchemaValidationPipe(MyGlobalSchema));\n * ```\n */\n\nimport type { PipeTransform } from '@nestjs/common';\nimport type { ZodError } from 'zod';\nimport type { ValidatableSchema } from '@plyaz/types/core';\nimport { zodErrorToValidationErrors } from '@plyaz/errors';\n\n/**\n * Schema Validation Pipe\n *\n * Validates incoming data against a schema definition.\n * On validation failure, throws an array of ValidationError\n * which is handled by the global NestJS exception filter.\n */\nexport class SchemaValidationPipe<T = unknown> implements PipeTransform<unknown, T> {\n  constructor(private readonly schema: ValidatableSchema<T>) {}\n\n  /**\n   * Transform and validate the incoming value\n   *\n   * @param value - The value to validate\n   * @returns The validated and transformed value\n   * @throws ValidationError[] if validation fails\n   */\n  transform(value: unknown): T {\n    const result = this.schema.safeParse(value);\n\n    if (!result.success) {\n      // Throw array of ValidationErrors - caught by global exception filter\n      // Cast to ZodError since ValidatableSchema uses simplified interface\n      throw zodErrorToValidationErrors(result.error as ZodError);\n    }\n\n    return result.data;\n  }\n}\n\n/**\n * Create a validation pipe for a specific schema\n *\n * @param schema - Schema to validate against\n * @returns SchemaValidationPipe instance\n *\n * @example\n * ```typescript\n * import { createValidationPipe } from '@plyaz/core/backend';\n * import { UserSchema } from '@plyaz/types';\n *\n * @Post()\n * create(@Body(createValidationPipe(UserSchema)) dto: User) { ... }\n * ```\n */\nexport function createValidationPipe<T>(schema: ValidatableSchema<T>): SchemaValidationPipe<T> {\n  return new SchemaValidationPipe(schema);\n}\n","/**\n * Notifications Module\n *\n * NestJS module for Notifications feature.\n * Uses domain service pattern: Module → Controller → BackendNotificationsService\n *\n * @example Usage in app.module.ts\n * ```typescript\n * import { CoreModule } from '@plyaz/core/nestjs';\n * import { NotificationsModule } from '@plyaz/core';\n *\n * @Module({\n *   imports: [\n *     CoreModule.forRoot({ envPath: '.env' }),\n *     NotificationsModule,\n *   ],\n * })\n * export class AppModule {}\n * ```\n */\n\nimport { Module } from '@nestjs/common';\nimport {\n  NotificationsController,\n  BACKEND_NOTIFICATIONS_DOMAIN_SERVICE,\n} from './notifications.controller';\nimport { BackendNotificationsDomainService } from '../../domain/notifications';\nimport { ServiceRegistry } from '../../init/ServiceRegistry';\n\n@Module({\n  controllers: [NotificationsController],\n  providers: [\n    // Provide BackendNotificationsDomainService via ServiceRegistry\n    // Services are registered during Core.initialize() with proper injection (notifications, db, etc.)\n    {\n      provide: BACKEND_NOTIFICATIONS_DOMAIN_SERVICE,\n      useFactory: async () =>\n        ServiceRegistry.getAsync<BackendNotificationsDomainService>('notifications'),\n    },\n  ],\n  exports: [BACKEND_NOTIFICATIONS_DOMAIN_SERVICE],\n})\nexport class NotificationsModule {}\n\n// Re-export for convenience\nexport { BackendNotificationsDomainService, BACKEND_NOTIFICATIONS_DOMAIN_SERVICE };\n","/**\n * Notifications Controller\n *\n * REST API endpoints for Notifications management.\n * Notifications are created automatically when emails/SMS/push are sent.\n * Only listing and deletion are exposed via API.\n *\n * Also handles short URL redirects for email tracking links and\n * user notification preference management including unsubscribe.\n *\n * @endpoints\n * - GET    /notifications/health           - Health check\n * - GET    /notifications                  - List all notifications\n * - DELETE /notifications/:id              - Delete notification\n * - GET    /notifications/s/:code          - Redirect short URL (tracking)\n * - GET    /notifications/s/:code/analytics - Get short URL analytics\n * - GET    /notifications/preferences      - Get user preferences\n * - PATCH  /notifications/preferences      - Update user preferences\n * - GET    /notifications/unsubscribe      - Process unsubscribe token from email\n */\n\nimport {\n  Controller,\n  Get,\n  Delete,\n  Patch,\n  Param,\n  Query,\n  Body,\n  Inject,\n  HttpCode,\n  HttpStatus,\n  Res,\n} from '@nestjs/common';\nimport { ApiTags, ApiOperation, ApiParam, ApiQuery, ApiResponse, ApiBody } from '@nestjs/swagger';\nimport type { Response } from 'express';\nimport { SuccessResponseStandard, CorePackageError } from '@plyaz/errors';\nimport { CORE_ERROR_CODES } from '@plyaz/types';\nimport type { ReturnResponseType } from '@plyaz/types/errors';\nimport type { BackendNotificationsDomainService } from '../../domain/notifications';\nimport type { NotificationPreferencesDatabaseRow } from '../../models/notifications';\nimport { SYSTEM_USER_ID } from '@plyaz/types/core';\nimport type { QueryNotificationsDTO, NotificationsEntity } from '@plyaz/types/core';\nimport type { UrlAnalytics } from '@plyaz/types/notifications';\nimport { Core } from '../../init/CoreInitializer';\n\n// Injection token for the domain service\nexport const BACKEND_NOTIFICATIONS_DOMAIN_SERVICE = 'BACKEND_NOTIFICATIONS_DOMAIN_SERVICE';\n\n/**\n * Notifications Controller\n *\n * Routes:\n * - GET    /notifications/health  - Health check\n * - GET    /notifications         - List all notifications\n * - DELETE /notifications/:id     - Delete notification\n *\n * NOTE: Notifications are created internally when emails/SMS/push are sent.\n * No POST/PATCH/GET-by-ID endpoints are exposed.\n */\n@ApiTags('notifications')\n@Controller('notifications')\nexport class NotificationsController {\n  constructor(\n    @Inject(BACKEND_NOTIFICATIONS_DOMAIN_SERVICE)\n    private readonly notificationsService: BackendNotificationsDomainService\n  ) {}\n\n  /**\n   * Health check endpoint\n   * GET /notifications/health\n   */\n  @Get('health')\n  @ApiOperation({ summary: 'Health check for notifications service' })\n  @ApiResponse({ status: 200, description: 'Service is healthy' })\n  health(): ReturnResponseType<{ service: boolean; timestamp: string }> {\n    return SuccessResponseStandard('Service is healthy', {\n      service: this.notificationsService.isAvailable(),\n      timestamp: new Date().toISOString(),\n    });\n  }\n\n  /**\n   * List all notifications\n   * GET /notifications\n   */\n  @Get()\n  @ApiOperation({ summary: 'List all notifications' })\n  @ApiQuery({ name: 'limit', required: false, type: Number, description: 'Max results to return' })\n  @ApiQuery({ name: 'offset', required: false, type: Number, description: 'Skip results' })\n  @ApiQuery({ name: 'userId', required: false, type: String, description: 'Filter by user ID' })\n  @ApiResponse({ status: 200, description: 'Notifications retrieved successfully' })\n  async findAll(\n    @Query() query: QueryNotificationsDTO\n  ): Promise<ReturnResponseType<NotificationsEntity[]>> {\n    const entities = await this.notificationsService.getAll(query);\n    return SuccessResponseStandard('Notifications retrieved successfully', entities);\n  }\n\n  /**\n   * Delete notification\n   * DELETE /notifications/:id\n   */\n  @Delete(':id')\n  @HttpCode(HttpStatus.OK)\n  @ApiOperation({ summary: 'Delete a notification' })\n  @ApiParam({ name: 'id', description: 'Notification UUID' })\n  @ApiResponse({ status: 200, description: 'Notification deleted successfully' })\n  @ApiResponse({ status: 404, description: 'Notification not found' })\n  async remove(@Param('id') id: string): Promise<ReturnResponseType<null>> {\n    await this.notificationsService.delete(id);\n    return SuccessResponseStandard('Notification deleted successfully', null);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Short URL Redirect (for email tracking links)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Redirect short URL to original URL\n   * GET /notifications/s/:code\n   */\n  @Get('s/:code')\n  @ApiOperation({ summary: 'Redirect short URL to original URL (for email tracking)' })\n  @ApiParam({ name: 'code', description: 'Short URL code' })\n  @ApiResponse({ status: 302, description: 'Redirects to original URL' })\n  @ApiResponse({ status: 404, description: 'Short URL not found or expired' })\n  async redirectShortUrl(@Param('code') code: string, @Res() res: Response): Promise<void> {\n    const originalUrl = await this.notificationsService.resolveShortUrl(code);\n    if (!originalUrl) {\n      throw new CorePackageError(\n        'Short URL not found or expired',\n        CORE_ERROR_CODES.RESOURCE_NOT_FOUND,\n        { context: { shortCode: code } }\n      );\n    }\n    res.redirect(HttpStatus.FOUND, originalUrl);\n  }\n\n  /**\n   * Get short URL analytics\n   * GET /notifications/s/:code/analytics\n   */\n  @Get('s/:code/analytics')\n  @ApiOperation({ summary: 'Get short URL click analytics' })\n  @ApiParam({ name: 'code', description: 'Short URL code' })\n  @ApiResponse({ status: 200, description: 'Analytics retrieved successfully' })\n  @ApiResponse({ status: 404, description: 'Short URL not found' })\n  async getShortUrlAnalytics(\n    @Param('code') code: string\n  ): Promise<ReturnResponseType<UrlAnalytics>> {\n    const analytics = await this.notificationsService.getShortUrlAnalytics(code);\n    if (!analytics) {\n      throw new CorePackageError('Short URL not found', CORE_ERROR_CODES.RESOURCE_NOT_FOUND, {\n        context: { shortCode: code },\n      });\n    }\n    return SuccessResponseStandard('Short URL analytics retrieved', analytics);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Notification Preferences (for unsubscribe/opt-out management)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Get user notification preferences\n   * GET /notifications/preferences\n   */\n  @Get('preferences')\n  @ApiOperation({ summary: 'Get user notification preferences' })\n  @ApiResponse({ status: 200, description: 'Preferences retrieved successfully' })\n  async getPreferences(): Promise<ReturnResponseType<NotificationPreferencesDatabaseRow>> {\n    // TODO(@Muhammad-Usman): Replace with userId from @plyaz/auth middleware\n    const userId = SYSTEM_USER_ID;\n    const preferences = await this.notificationsService.getUserPreferences(userId);\n    return SuccessResponseStandard('Notification preferences retrieved', preferences);\n  }\n\n  /**\n   * Update user notification preferences\n   * PATCH /notifications/preferences\n   */\n  @Patch('preferences')\n  @ApiOperation({ summary: 'Update user notification preferences' })\n  @ApiBody({\n    description: 'Preferences to update',\n    schema: {\n      type: 'object',\n      properties: {\n        email_enabled: { type: 'boolean', description: 'Enable email notifications' },\n        sms_enabled: { type: 'boolean', description: 'Enable SMS notifications' },\n        push_enabled: { type: 'boolean', description: 'Enable push notifications' },\n        marketing_enabled: { type: 'boolean', description: 'Enable marketing emails' },\n      },\n    },\n  })\n  @ApiResponse({ status: 200, description: 'Preferences updated successfully' })\n  async updatePreferences(\n    @Body() body: Partial<NotificationPreferencesDatabaseRow>\n  ): Promise<ReturnResponseType<NotificationPreferencesDatabaseRow | null>> {\n    // TODO(@Muhammad-Usman): Replace with userId from @plyaz/auth middleware\n    const userId = SYSTEM_USER_ID;\n    const updated = await this.notificationsService.updateUserPreferences(userId, body ?? {});\n    return SuccessResponseStandard('Notification preferences updated', updated);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Unsubscribe (for email unsubscribe links)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Process unsubscribe token from email link\n   * GET /notifications/unsubscribe?token=...\n   */\n  @Get('unsubscribe')\n  @ApiOperation({ summary: 'Process unsubscribe token from email link' })\n  @ApiQuery({ name: 'token', required: true, description: 'Encrypted unsubscribe token' })\n  @ApiResponse({ status: 200, description: 'Unsubscribed successfully' })\n  @ApiResponse({ status: 400, description: 'Invalid or missing token' })\n  async unsubscribe(\n    @Query('token') token: string\n  ): Promise<ReturnResponseType<{ success: boolean; message: string }>> {\n    if (!token) {\n      throw new CorePackageError('Missing unsubscribe token', CORE_ERROR_CODES.VALIDATION_ERROR, {\n        context: { field: 'token' },\n      });\n    }\n\n    const encryptionKey = Core.initOptions.env?.ENCRYPTION_KEY;\n    if (!encryptionKey) {\n      throw new CorePackageError(\n        'Unsubscribe feature not configured',\n        CORE_ERROR_CODES.CONFIGURATION_INVALID,\n        { context: { reason: 'Missing encryption key' } }\n      );\n    }\n\n    const result = await this.notificationsService.unsubscribe(token, encryptionKey);\n\n    return SuccessResponseStandard(result.message, {\n      success: result.success,\n      message: result.message,\n    });\n  }\n}\n","/**\n * Feature Flag Domain Service (Backend)\n *\n * Backend-specific domain service that extends BaseDomainService and\n * uses providers (database, redis, memory, etc.) to manage feature flags.\n *\n * Runtime: Backend only (uses providers, no API calls)\n *\n * @example\n * ```typescript\n * // Create service instance with a provider\n * const provider = new DatabaseFeatureFlagProvider(config, FEATURES);\n * await provider.initialize();\n *\n * const flagService = new FeatureFlagDomainService({\n *   enabled: true,\n *   provider,\n * });\n *\n * // Use the service\n * const isEnabled = await flagService.isEnabled('new-feature', { userId: 'user-123' });\n * ```\n */\nimport type {\n  FeatureFlag,\n  FeatureFlagRule,\n  FeatureFlagContext,\n  FeatureFlagValue,\n  FeatureFlagEvaluation,\n  CreateFlagRequest,\n  FeatureFlagProvider,\n} from '@plyaz/types';\nimport { BaseDomainService } from '../../domain/base';\nimport { CoreEventManager } from '../../events/CoreEventManager';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────────────────────\n\n// Import for local use\nimport type {\n  FeatureFlagDomainServiceConfig as _FeatureFlagDomainServiceConfig,\n  FeatureFlagDomainEventType,\n} from '@plyaz/types/features';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Service\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Feature Flag Backend Service\n *\n * Extends BaseDomainService with generics for strong typing.\n * Uses an injected provider (database, redis, memory, etc.) for data access.\n *\n * No mapper/validator as this service handles simple flag values.\n * No API client - uses provider directly for data access.\n */\nexport class FeatureFlagDomainService extends BaseDomainService<_FeatureFlagDomainServiceConfig> {\n  /** The feature flag provider */\n  private readonly provider: FeatureFlagProvider<string>;\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Constructor\n  // ─────────────────────────────────────────────────────────────────────────\n\n  constructor(config: _FeatureFlagDomainServiceConfig) {\n    const serviceConfig: _FeatureFlagDomainServiceConfig = {\n      enabled: true,\n      defaults: {},\n      ...config,\n    };\n\n    super({\n      serviceName: 'FeatureFlagDomainService',\n      supportedRuntimes: ['backend'],\n      serviceConfig,\n      // No API client for backend - uses provider directly\n    });\n\n    // Store the provider\n    this.provider = config.provider;\n\n    // Mark as initialized (provider should already be initialized)\n    this._initialized = true;\n\n    this.logInfo('Service initialized with provider');\n    CoreEventManager.emit('featureFlag:backend:provider:initialized', { providerType: 'unknown' });\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Abstract Implementations\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Check if service is available\n   */\n  isAvailable(): boolean {\n    return this.isServiceEnabled && this.provider !== null;\n  }\n\n  /**\n   * Dispose/cleanup the service\n   */\n  dispose(): void {\n    if (this.provider) {\n      this.provider.dispose();\n      CoreEventManager.emit('featureFlag:backend:provider:disposed', {});\n    }\n    this.logInfo('Service disposed');\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Provider Operations\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Refresh the provider cache\n   */\n  async refresh(): Promise<void> {\n    this.assertReady();\n    await this.provider.refresh();\n    CoreEventManager.emit('featureFlag:backend:provider:refreshed', {});\n    this.logDebug('Provider cache refreshed');\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Evaluation Operations\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Evaluate a single feature flag\n   *\n   * @param key - Feature flag key\n   * @param context - Evaluation context (user, environment, etc.)\n   * @returns Full evaluation result\n   */\n  async evaluate(\n    key: string,\n    context?: FeatureFlagContext\n  ): Promise<FeatureFlagEvaluation<string>> {\n    this.assertReady();\n    const evalContext = context ?? this.config.defaultContext;\n\n    CoreEventManager.emit('featureFlag:backend:evaluating', { key, context: evalContext });\n\n    try {\n      const result = await this.provider.getFlag(key, evalContext);\n      CoreEventManager.emit('featureFlag:backend:evaluated', { key, result });\n      return result;\n    } catch (error) {\n      CoreEventManager.emit('featureFlag:backend:evaluate:error', { key, error });\n      throw error;\n    }\n  }\n\n  /**\n   * Check if a feature flag is enabled\n   *\n   * @param key - Feature flag key\n   * @param context - Evaluation context\n   * @returns Boolean indicating if flag is enabled\n   */\n  async isEnabled(key: string, context?: FeatureFlagContext): Promise<boolean> {\n    this.assertReady();\n    const evalContext = context ?? this.config.defaultContext;\n    return this.provider.isEnabled(key, evalContext);\n  }\n\n  /**\n   * Get the value of a feature flag\n   *\n   * @param key - Feature flag key\n   * @param context - Evaluation context\n   * @returns The flag value\n   */\n  async getValue<T = FeatureFlagValue>(key: string, context?: FeatureFlagContext): Promise<T> {\n    this.assertReady();\n    const evalContext = context ?? this.config.defaultContext;\n    return this.provider.getValue<T>(key, evalContext);\n  }\n\n  /**\n   * Evaluate all feature flags for a context\n   *\n   * @param context - Evaluation context\n   * @returns Record of all flag evaluations\n   */\n  async evaluateAll(\n    context?: FeatureFlagContext\n  ): Promise<Record<string, FeatureFlagEvaluation<string>>> {\n    this.assertReady();\n    const evalContext = context ?? this.config.defaultContext;\n\n    try {\n      const result = await this.provider.getAllFlags(evalContext);\n      return result;\n    } catch (error) {\n      this.logError('Failed to evaluate all flags', { error });\n      throw error;\n    }\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // CRUD Operations\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Create a new feature flag\n   *\n   * @param data - Flag creation data\n   * @returns The created feature flag\n   */\n  async create(data: CreateFlagRequest<string>): Promise<FeatureFlag<string>> {\n    this.assertReady();\n\n    CoreEventManager.emit('featureFlag:backend:creating', { data });\n\n    try {\n      const flag = await this.provider.createFlag(data);\n      CoreEventManager.emit('featureFlag:backend:created', { flag });\n      this.logInfo('Feature flag created', { key: data.key });\n      return flag;\n    } catch (error) {\n      CoreEventManager.emit('featureFlag:backend:create:error', { error, data });\n      throw error;\n    }\n  }\n\n  /**\n   * Update an existing feature flag\n   *\n   * @param key - Flag key to update\n   * @param data - Partial update data\n   * @returns The updated feature flag\n   */\n  async update(\n    key: string,\n    data: Partial<CreateFlagRequest<string>>\n  ): Promise<FeatureFlag<string>> {\n    this.assertReady();\n\n    CoreEventManager.emit('featureFlag:backend:updating', { key, data });\n\n    try {\n      const flag = await this.provider.updateFlag(key, data);\n      CoreEventManager.emit('featureFlag:backend:updated', { flag });\n      this.logInfo('Feature flag updated', { key });\n      return flag;\n    } catch (error) {\n      CoreEventManager.emit('featureFlag:backend:update:error', { error, key });\n      throw error;\n    }\n  }\n\n  /**\n   * Delete a feature flag\n   *\n   * @param key - Flag key to delete\n   */\n  async delete(key: string): Promise<void> {\n    this.assertReady();\n\n    CoreEventManager.emit('featureFlag:backend:deleting', { key });\n\n    try {\n      await this.provider.deleteFlag(key);\n      CoreEventManager.emit('featureFlag:backend:deleted', { key });\n      this.logInfo('Feature flag deleted', { key });\n    } catch (error) {\n      CoreEventManager.emit('featureFlag:backend:delete:error', { error, key });\n      throw error;\n    }\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Rules Operations\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Get rules for a specific flag\n   *\n   * @param key - Flag key\n   * @returns Array of rules\n   */\n  async getRules(key: string): Promise<FeatureFlagRule<string>[]> {\n    this.assertReady();\n\n    try {\n      const rules = await this.provider.getRules(key);\n      return rules;\n    } catch (error) {\n      this.logError('Failed to get rules', { key, error });\n      throw error;\n    }\n  }\n\n  /**\n   * Get all rules\n   *\n   * @returns Array of all rules\n   */\n  async getAllRules(): Promise<FeatureFlagRule<string>[]> {\n    this.assertReady();\n\n    try {\n      const rules = await this.provider.getAllRules();\n      return rules;\n    } catch (error) {\n      this.logError('Failed to get all rules', { error });\n      throw error;\n    }\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Override Operations (Runtime Overrides)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Set a runtime override for a flag (in-memory, not persisted)\n   *\n   * @param key - Flag key\n   * @param value - Override value\n   */\n  setOverride(key: string, value: FeatureFlagValue): void {\n    this.assertReady();\n\n    CoreEventManager.emit('featureFlag:backend:override:setting', { key, value });\n    this.provider.setOverride(key, value);\n    CoreEventManager.emit('featureFlag:backend:override:set', { key, value });\n    this.logDebug('Override set', { key, value });\n  }\n\n  /**\n   * Remove a runtime override for a flag\n   *\n   * @param key - Flag key\n   */\n  removeOverride(key: string): void {\n    this.assertReady();\n\n    CoreEventManager.emit('featureFlag:backend:override:removing', { key });\n    this.provider.removeOverride(key);\n    CoreEventManager.emit('featureFlag:backend:override:removed', { key });\n    this.logDebug('Override removed', { key });\n  }\n\n  /**\n   * Clear all runtime overrides\n   */\n  clearOverrides(): void {\n    this.assertReady();\n    this.provider.clearOverrides();\n    this.logDebug('All overrides cleared');\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Subscription\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Subscribe to provider changes\n   *\n   * @param callback - Callback when flags change\n   * @returns Unsubscribe function\n   */\n  subscribe(callback: () => void): () => void {\n    this.assertReady();\n    return this.provider.subscribe(callback);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Event Subscription\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Subscribe to feature flag events\n   *\n   * @param event - Event type to subscribe to\n   * @param handler - Event handler\n   * @returns Unsubscribe function\n   */\n  on(event: FeatureFlagDomainEventType, handler: (data: unknown) => void): () => void {\n    return CoreEventManager.on(event, handler);\n  }\n}\n","/**\n * Feature Flag NestJS Module\n *\n * NestJS wrapper around the unified FeatureFlagModule.\n * Adds the controller for REST API endpoints.\n *\n * @example\n * ```typescript\n * import { FeatureFlagModule } from '@plyaz/core/backend/featureFlags';\n *\n * @Module({\n *   imports: [FeatureFlagModule.forRoot({ provider: 'database' })],\n * })\n * export class AppModule {}\n * ```\n */\n\nimport {\n  Module,\n  Global,\n  type DynamicModule,\n  type OnModuleDestroy,\n  type Type,\n  type ForwardReference,\n  type InjectionToken,\n} from '@nestjs/common';\nimport { FeatureFlagController } from './feature-flag.controller';\nimport { createFeatureFlagService, FEATURE_FLAG_SERVICE } from '../../domain/featureFlags/module';\nimport { FeatureFlagService } from '../../domain/featureFlags/service';\nimport type { FeatureFlagKey } from '../../domain/types';\nimport { CoreFeatureFlagModuleConfig } from '@plyaz/types/core';\n\n/**\n * Feature Flag Module\n *\n * Provides feature flag functionality as a NestJS module.\n * Uses the domain FeatureFlagService directly - no NestJS wrapper needed.\n *\n * @example\n * ```typescript\n * // In your app.module.ts\n * @Module({\n *   imports: [\n *     FeatureFlagModule.forRoot({ provider: 'database' })\n *   ],\n * })\n * export class AppModule {}\n * ```\n *\n * @example\n * ```typescript\n * // In your service - inject the domain service\n * @Injectable()\n * export class MyService {\n *   constructor(\n *     @Inject(FEATURE_FLAG_SERVICE)\n *     private readonly featureFlagService: FeatureFlagService<FeatureFlagKey>\n *   ) {}\n *\n *   async doSomething() {\n *     const isEnabled = await this.featureFlagService.isEnabled('MY_FEATURE');\n *   }\n * }\n * ```\n */\n@Global()\n@Module({\n  controllers: [FeatureFlagController],\n})\nexport class FeatureFlagModule implements OnModuleDestroy {\n  private static serviceInstance: FeatureFlagService<FeatureFlagKey> | null = null;\n\n  onModuleDestroy(): void {\n    if (FeatureFlagModule.serviceInstance) {\n      FeatureFlagModule.serviceInstance.dispose();\n      FeatureFlagModule.serviceInstance = null;\n    }\n  }\n\n  /**\n   * Creates the module with configuration.\n   *\n   * @param options - Module configuration options\n   * @returns Configured dynamic module\n   *\n   * @example\n   * ```typescript\n   * @Module({\n   *   imports: [\n   *     FeatureFlagModule.forRoot({\n   *       provider: 'database',\n   *       cacheEnabled: true,\n   *       cacheTtl: 600,\n   *     })\n   *   ],\n   * })\n   * export class AppModule {}\n   * ```\n   */\n  static forRoot(options: CoreFeatureFlagModuleConfig = {}): DynamicModule {\n    return {\n      module: FeatureFlagModule,\n      providers: [\n        {\n          provide: FEATURE_FLAG_SERVICE,\n          useFactory: async (): Promise<FeatureFlagService<FeatureFlagKey>> => {\n            FeatureFlagModule.serviceInstance = await createFeatureFlagService(options);\n            return FeatureFlagModule.serviceInstance;\n          },\n        },\n      ],\n      exports: [FEATURE_FLAG_SERVICE],\n    };\n  }\n\n  /**\n   * Creates the module with async configuration.\n   * Useful when configuration depends on other services.\n   *\n   * @param options - Async module configuration options\n   * @returns Configured async dynamic module\n   *\n   * @example\n   * ```typescript\n   * @Module({\n   *   imports: [\n   *     FeatureFlagModule.forRootAsync({\n   *       imports: [ConfigModule],\n   *       inject: [ConfigService],\n   *       useFactory: (configService: ConfigService) => ({\n   *         provider: configService.get('FEATURE_FLAG_PROVIDER'),\n   *         cacheEnabled: configService.get('FEATURE_FLAG_CACHE_ENABLED'),\n   *       }),\n   *     })\n   *   ],\n   * })\n   * export class AppModule {}\n   * ```\n   */\n  static forRootAsync(options: {\n    imports?: Array<Type<unknown> | DynamicModule | Promise<DynamicModule> | ForwardReference>;\n    inject?: InjectionToken[];\n    useFactory: (\n      ...args: unknown[]\n    ) => CoreFeatureFlagModuleConfig | Promise<CoreFeatureFlagModuleConfig>;\n  }): DynamicModule {\n    return {\n      module: FeatureFlagModule,\n      imports: options.imports ?? [],\n      providers: [\n        {\n          provide: FEATURE_FLAG_SERVICE,\n          inject: options.inject ?? [],\n          useFactory: async (...args: unknown[]): Promise<FeatureFlagService<FeatureFlagKey>> => {\n            const moduleOptions = await options.useFactory(...args);\n            FeatureFlagModule.serviceInstance = await createFeatureFlagService(moduleOptions);\n            return FeatureFlagModule.serviceInstance;\n          },\n        },\n      ],\n      exports: [FEATURE_FLAG_SERVICE],\n    };\n  }\n}\n","/**\n * Feature Flag Controller\n *\n * NestJS controller for feature flag management.\n * Uses the domain FeatureFlagService directly.\n *\n * @fileoverview NestJS controller for feature flags\n */\n\nimport { Controller, Get, Post, Put, Delete, Param, Body, Inject } from '@nestjs/common';\nimport { ApiTags, ApiOperation, ApiParam, ApiBody, ApiResponse } from '@nestjs/swagger';\nimport type {\n  FeatureFlagValue,\n  FeatureFlagContext,\n  FeatureFlagEvaluation,\n  FeatureFlag,\n  FeatureFlagRule,\n  CreateFlagRequest,\n} from '@plyaz/types';\nimport { ERROR_CODES, HTTP_STATUS } from '@plyaz/types';\nimport { BaseError } from '@plyaz/errors';\nimport { FEATURE_FLAG_SERVICE, FeatureFlagService } from '@domain/featureFlags';\nimport type { FeatureFlagKey } from '@domain/types';\n\n/**\n * Request DTO for flag evaluation.\n */\ninterface EvaluateFlagRequest {\n  context?: FeatureFlagContext;\n}\n\n/**\n * Feature Flag Controller\n *\n * Provides REST endpoints for feature flag management and evaluation.\n * Uses the domain FeatureFlagService directly.\n *\n * @example\n * ```typescript\n * // GET /feature-flags/AUTH_GOOGLE/evaluate\n * // POST /feature-flags\n * // PUT /feature-flags/AUTH_GOOGLE\n * ```\n */\n@ApiTags('feature-flags')\n@Controller('feature-flags')\nexport class FeatureFlagController {\n  constructor(\n    @Inject(FEATURE_FLAG_SERVICE)\n    private readonly featureFlagService: FeatureFlagService<FeatureFlagKey>\n  ) {}\n\n  /**\n   * Evaluates a feature flag for the given context.\n   */\n  @Post(':key/evaluate')\n  @ApiOperation({ summary: 'Evaluate a feature flag' })\n  @ApiParam({ name: 'key', description: 'Feature flag key' })\n  @ApiBody({\n    description: 'Evaluation context',\n    schema: {\n      type: 'object',\n      properties: {\n        context: {\n          type: 'object',\n          properties: {\n            userId: { type: 'string' },\n            email: { type: 'string' },\n            attributes: { type: 'object' },\n          },\n        },\n      },\n    },\n  })\n  @ApiResponse({ status: 200, description: 'Flag evaluation result' })\n  async evaluateFlag(\n    @Param('key') key: FeatureFlagKey,\n    @Body() body: EvaluateFlagRequest = {}\n  ): Promise<FeatureFlagEvaluation<FeatureFlagKey>> {\n    try {\n      return await this.featureFlagService.getFlag(key, body.context);\n    } catch (error) {\n      throw new BaseError(\n        ERROR_CODES.API_INVALID_INPUT,\n        HTTP_STATUS.BAD_REQUEST,\n        `Failed to evaluate flag: ${error instanceof Error ? error.message : 'Unknown error'}`\n      );\n    }\n  }\n\n  /**\n   * Checks if a feature flag is enabled.\n   */\n  @Post(':key/enabled')\n  @ApiOperation({ summary: 'Check if a feature flag is enabled' })\n  @ApiParam({ name: 'key', description: 'Feature flag key' })\n  @ApiResponse({ status: 200, description: 'Returns isEnabled boolean' })\n  async isEnabled(\n    @Param('key') key: FeatureFlagKey,\n    @Body() body: EvaluateFlagRequest = {}\n  ): Promise<{ isEnabled: boolean }> {\n    try {\n      const isEnabled = await this.featureFlagService.isEnabled(key, body.context);\n      return { isEnabled };\n    } catch (error) {\n      throw new BaseError(\n        ERROR_CODES.API_INVALID_INPUT,\n        HTTP_STATUS.BAD_REQUEST,\n        `Failed to check flag status: ${error instanceof Error ? error.message : 'Unknown error'}`\n      );\n    }\n  }\n\n  /**\n   * Gets all feature flags with their evaluations.\n   */\n  @Post('evaluate-all')\n  @ApiOperation({ summary: 'Evaluate all feature flags' })\n  @ApiResponse({ status: 200, description: 'All flag evaluations' })\n  async evaluateAllFlags(\n    @Body() body: EvaluateFlagRequest = {}\n  ): Promise<Record<string, FeatureFlagEvaluation<FeatureFlagKey>>> {\n    try {\n      return await this.featureFlagService.getAllFlags(body.context);\n    } catch (error) {\n      throw new BaseError(\n        ERROR_CODES.SERVER_ERROR,\n        HTTP_STATUS.INTERNAL_SERVER_ERROR,\n        `Failed to evaluate all flags: ${error instanceof Error ? error.message : 'Unknown error'}`\n      );\n    }\n  }\n\n  /**\n   * Creates a new feature flag.\n   */\n  @Post()\n  @ApiOperation({ summary: 'Create a new feature flag' })\n  @ApiBody({\n    description: 'Flag creation data',\n    schema: {\n      type: 'object',\n      required: ['key', 'defaultValue'],\n      properties: {\n        key: { type: 'string', description: 'Unique flag key' },\n        defaultValue: { description: 'Default value (boolean, string, number, or object)' },\n        description: { type: 'string' },\n        enabled: { type: 'boolean', default: true },\n      },\n    },\n  })\n  @ApiResponse({ status: 200, description: 'Flag created successfully' })\n  async createFlag(\n    @Body() createData: CreateFlagRequest<FeatureFlagKey>\n  ): Promise<FeatureFlag<FeatureFlagKey>> {\n    try {\n      return await this.featureFlagService.createFlag(createData);\n    } catch (error) {\n      throw new BaseError(\n        ERROR_CODES.API_INVALID_INPUT,\n        HTTP_STATUS.BAD_REQUEST,\n        `Failed to create flag: ${error instanceof Error ? error.message : 'Unknown error'}`\n      );\n    }\n  }\n\n  /**\n   * Updates an existing feature flag.\n   */\n  @Put(':key')\n  @ApiOperation({ summary: 'Update a feature flag' })\n  @ApiParam({ name: 'key', description: 'Feature flag key' })\n  @ApiResponse({ status: 200, description: 'Flag updated successfully' })\n  async updateFlag(\n    @Param('key') key: FeatureFlagKey,\n    @Body() updateData: Partial<CreateFlagRequest<FeatureFlagKey>>\n  ): Promise<FeatureFlag<FeatureFlagKey>> {\n    try {\n      return await this.featureFlagService.updateFlag(key, updateData);\n    } catch (error) {\n      throw new BaseError(\n        ERROR_CODES.API_INVALID_INPUT,\n        HTTP_STATUS.BAD_REQUEST,\n        `Failed to update flag: ${error instanceof Error ? error.message : 'Unknown error'}`\n      );\n    }\n  }\n\n  /**\n   * Deletes a feature flag.\n   */\n  @Delete(':key')\n  @ApiOperation({ summary: 'Delete a feature flag' })\n  @ApiParam({ name: 'key', description: 'Feature flag key' })\n  @ApiResponse({ status: 200, description: 'Flag deleted successfully' })\n  async deleteFlag(@Param('key') key: FeatureFlagKey): Promise<{ isSuccessful: boolean }> {\n    try {\n      await this.featureFlagService.deleteFlag(key);\n      return { isSuccessful: true };\n    } catch (error) {\n      throw new BaseError(\n        ERROR_CODES.API_INVALID_INPUT,\n        HTTP_STATUS.BAD_REQUEST,\n        `Failed to delete flag: ${error instanceof Error ? error.message : 'Unknown error'}`\n      );\n    }\n  }\n\n  /**\n   * Sets a manual override for a flag.\n   */\n  @Post(':key/override')\n  @ApiOperation({ summary: 'Set a manual override for a flag' })\n  @ApiParam({ name: 'key', description: 'Feature flag key' })\n  @ApiBody({\n    description: 'Override value',\n    schema: {\n      type: 'object',\n      required: ['value'],\n      properties: {\n        value: { description: 'Override value' },\n      },\n    },\n  })\n  @ApiResponse({ status: 200, description: 'Override set successfully' })\n  async setOverride(\n    @Param('key') key: FeatureFlagKey,\n    @Body('value') value: FeatureFlagValue\n  ): Promise<{ isSuccessful: boolean }> {\n    try {\n      this.featureFlagService.setOverride(key, value);\n      return { isSuccessful: true };\n    } catch (error) {\n      throw new BaseError(\n        ERROR_CODES.API_INVALID_INPUT,\n        HTTP_STATUS.BAD_REQUEST,\n        `Failed to set override: ${error instanceof Error ? error.message : 'Unknown error'}`\n      );\n    }\n  }\n\n  /**\n   * Removes a manual override for a flag.\n   */\n  @Delete(':key/override')\n  @ApiOperation({ summary: 'Remove a manual override for a flag' })\n  @ApiParam({ name: 'key', description: 'Feature flag key' })\n  @ApiResponse({ status: 200, description: 'Override removed successfully' })\n  async removeOverride(@Param('key') key: FeatureFlagKey): Promise<{ isSuccessful: boolean }> {\n    try {\n      this.featureFlagService.removeOverride(key);\n      return { isSuccessful: true };\n    } catch (error) {\n      throw new BaseError(\n        ERROR_CODES.API_INVALID_INPUT,\n        HTTP_STATUS.BAD_REQUEST,\n        `Failed to remove override: ${error instanceof Error ? error.message : 'Unknown error'}`\n      );\n    }\n  }\n\n  /**\n   * Gets all rules for a specific flag.\n   */\n  @Get(':key/rules')\n  @ApiOperation({ summary: 'Get all rules for a feature flag' })\n  @ApiParam({ name: 'key', description: 'Feature flag key' })\n  @ApiResponse({ status: 200, description: 'Flag rules retrieved' })\n  async getFlagRules(\n    @Param('key') key: FeatureFlagKey\n  ): Promise<FeatureFlagRule<FeatureFlagKey>[]> {\n    try {\n      return await this.featureFlagService.getRules(key);\n    } catch (error) {\n      throw new BaseError(\n        ERROR_CODES.API_INVALID_INPUT,\n        HTTP_STATUS.BAD_REQUEST,\n        `Failed to get flag rules: ${error instanceof Error ? error.message : 'Unknown error'}`\n      );\n    }\n  }\n\n  /**\n   * Forces a refresh of the feature flag cache.\n   */\n  @Post('refresh')\n  @ApiOperation({ summary: 'Force refresh of feature flag cache' })\n  @ApiResponse({ status: 200, description: 'Cache refreshed successfully' })\n  async refreshCache(): Promise<{ isSuccessful: boolean }> {\n    try {\n      await this.featureFlagService.refresh();\n      return { isSuccessful: true };\n    } catch (error) {\n      throw new BaseError(\n        ERROR_CODES.SERVER_ERROR,\n        HTTP_STATUS.INTERNAL_SERVER_ERROR,\n        `Failed to refresh cache: ${error instanceof Error ? error.message : 'Unknown error'}`\n      );\n    }\n  }\n\n  /**\n   * Gets service health status.\n   */\n  @Get('health')\n  @ApiOperation({ summary: 'Get feature flag service health status' })\n  @ApiResponse({ status: 200, description: 'Health status retrieved' })\n  async getHealth(): Promise<{\n    isInitialized: boolean;\n    provider: string;\n  }> {\n    return {\n      isInitialized: this.featureFlagService.getIsInitialized(),\n      provider: this.featureFlagService.getProviderType(),\n    };\n  }\n}\n","/**\n * Feature Flag Service\n *\n * Domain service that wraps the provider and provides a unified API\n * for feature flag operations. This is the main entry point for\n * feature flag functionality.\n *\n * @fileoverview Domain service for feature flags\n * @version 1.0.0\n */\n\nimport type {\n  FeatureFlagProvider,\n  FeatureFlagConfig,\n  FeatureFlagContext,\n  FeatureFlagEvaluation,\n  FeatureFlagValue,\n  FeatureFlag,\n  FeatureFlagRule,\n  CreateFlagRequest,\n} from '@plyaz/types';\nimport { PackageLogger } from '@plyaz/logger';\n\n/**\n * Feature Flag Service\n *\n * The main service for feature flag operations. Wraps the provider\n * and adds logging, error handling, and lifecycle management.\n *\n * @example\n * ```typescript\n * // Create via factory\n * const service = await FeatureFlagServiceFactory.createAndInitialize(config, FEATURES);\n *\n * // Use directly\n * const isEnabled = await service.isEnabled('MY_FEATURE');\n * const flag = await service.createFlag({ key: 'NEW_FLAG', value: true, name: 'New Flag' });\n * ```\n */\nexport class FeatureFlagService<FeatureFlagKey extends string> {\n  private readonly logger = new PackageLogger({\n    packageName: 'core',\n    service: 'FeatureFlagService',\n  });\n\n  private isInitialized = false;\n\n  constructor(\n    private readonly provider: FeatureFlagProvider<FeatureFlagKey>,\n    private readonly config: FeatureFlagConfig<FeatureFlagKey>\n  ) {}\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Lifecycle\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Initializes the service and underlying provider.\n   */\n  async initialize(): Promise<void> {\n    if (this.isInitialized) {\n      return;\n    }\n\n    try {\n      await this.provider.initialize();\n      this.isInitialized = true;\n      this.logger.info(`Feature flag service initialized with ${this.config.provider} provider`);\n    } catch (error) {\n      this.logger.error('Failed to initialize feature flag service', { error });\n      throw error;\n    }\n  }\n\n  /**\n   * Disposes the service and underlying provider.\n   */\n  dispose(): void {\n    this.provider.dispose();\n    this.isInitialized = false;\n    this.logger.info('Feature flag service disposed');\n  }\n\n  /**\n   * Refreshes the provider cache.\n   */\n  async refresh(): Promise<void> {\n    await this.provider.refresh();\n    this.logger.debug('Feature flag cache refreshed');\n  }\n\n  /**\n   * Gets whether the service is initialized.\n   */\n  getIsInitialized(): boolean {\n    return this.isInitialized;\n  }\n\n  /**\n   * Gets the provider type.\n   */\n  getProviderType(): string {\n    return this.config.provider;\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Read Operations\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Evaluates a feature flag.\n   */\n  async getFlag(\n    key: FeatureFlagKey,\n    context?: FeatureFlagContext\n  ): Promise<FeatureFlagEvaluation<FeatureFlagKey>> {\n    return this.provider.getFlag(key, context);\n  }\n\n  /**\n   * Gets all feature flag evaluations.\n   */\n  async getAllFlags(\n    context?: FeatureFlagContext\n  ): Promise<Record<string, FeatureFlagEvaluation<FeatureFlagKey>>> {\n    return this.provider.getAllFlags(context);\n  }\n\n  /**\n   * Checks if a feature flag is enabled.\n   */\n  async isEnabled(key: FeatureFlagKey, context?: FeatureFlagContext): Promise<boolean> {\n    return this.provider.isEnabled(key, context);\n  }\n\n  /**\n   * Gets the value of a feature flag.\n   */\n  async getValue<T = FeatureFlagValue>(\n    key: FeatureFlagKey,\n    context?: FeatureFlagContext\n  ): Promise<T> {\n    return this.provider.getValue<T>(key, context);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Flag Management\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Creates a new feature flag.\n   */\n  async createFlag(data: CreateFlagRequest<FeatureFlagKey>): Promise<FeatureFlag<FeatureFlagKey>> {\n    const flag = await this.provider.createFlag(data);\n    this.logger.info('Feature flag created', { key: data.key });\n    return flag;\n  }\n\n  /**\n   * Updates an existing feature flag.\n   */\n  async updateFlag(\n    key: FeatureFlagKey,\n    data: Partial<CreateFlagRequest<FeatureFlagKey>>\n  ): Promise<FeatureFlag<FeatureFlagKey>> {\n    const flag = await this.provider.updateFlag(key, data);\n    this.logger.info('Feature flag updated', { key });\n    return flag;\n  }\n\n  /**\n   * Deletes a feature flag.\n   */\n  async deleteFlag(key: FeatureFlagKey): Promise<void> {\n    await this.provider.deleteFlag(key);\n    this.logger.info('Feature flag deleted', { key });\n  }\n\n  /**\n   * Gets all rules for a specific flag.\n   */\n  async getRules(key: FeatureFlagKey): Promise<FeatureFlagRule<FeatureFlagKey>[]> {\n    return this.provider.getRules(key);\n  }\n\n  /**\n   * Gets all enabled rules.\n   */\n  async getAllRules(): Promise<FeatureFlagRule<FeatureFlagKey>[]> {\n    return this.provider.getAllRules();\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Override Operations\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Sets a runtime override for a flag.\n   */\n  setOverride(key: FeatureFlagKey, value: FeatureFlagValue): void {\n    this.provider.setOverride(key, value);\n    this.logger.debug('Override set', { key, value });\n  }\n\n  /**\n   * Removes a runtime override for a flag.\n   */\n  removeOverride(key: FeatureFlagKey): void {\n    this.provider.removeOverride(key);\n    this.logger.debug('Override removed', { key });\n  }\n\n  /**\n   * Clears all runtime overrides.\n   */\n  clearOverrides(): void {\n    this.provider.clearOverrides();\n    this.logger.debug('All overrides cleared');\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Subscription\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Subscribes to flag changes.\n   */\n  subscribe(callback: () => void): () => void {\n    return this.provider.subscribe(callback);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Provider Access (for advanced use cases)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Gets the underlying provider instance.\n   * Use with caution - prefer service methods.\n   */\n  getProvider(): FeatureFlagProvider<FeatureFlagKey> {\n    return this.provider;\n  }\n}\n","/**\n * Feature Flag Provider - Core Implementation\n *\n * Main provider class that orchestrates feature flag evaluation and management.\n * This will be moved to @plyaz/core when the package structure is finalized.\n *\n * @fileoverview Core feature flag provider implementation\n * @version 1.0.0\n */\n\nimport type {\n  FeatureFlagProvider as IFeatureFlagProvider,\n  FeatureFlagConfig,\n  FeatureFlagContext,\n  FeatureFlagEvaluation,\n  FeatureFlagValue,\n  FetchFeatureFlagDataResponse,\n  FeatureFlag,\n  FeatureFlagRule,\n  CreateFlagRequest,\n} from '@plyaz/types';\nimport { FeatureFlagEngine } from '@engine/featureFlags/engine';\nimport { CacheManager } from '@base/cache/index';\nimport { TIME_CONSTANTS } from '@plyaz/config';\n\n/**\n * Subscription callback function type\n */\nexport type SubscriptionCallback = () => void;\n\n/**\n * Core feature flag provider that implements the main business logic.\n * This class orchestrates between the evaluation engine, caching, and data providers.\n *\n * @class FeatureFlagProvider\n * @implements {IFeatureFlagProvider}\n *\n * @example\n * ```typescript\n * const provider = new MemoryFeatureFlagProvider<MyFeatureFlags>(config, FEATURES);\n * await provider.initialize();\n *\n * const isEnabled = await provider.isEnabled('AUTH_GOOGLE', context);\n * const value = await provider.getValue('ROLLOUT_PERCENTAGE', context);\n * ```\n */\nexport abstract class FeatureFlagProvider<FeatureFlagKey extends string>\n  implements IFeatureFlagProvider<FeatureFlagKey>\n{\n  protected engine: FeatureFlagEngine<FeatureFlagKey>;\n  protected cacheManager: CacheManager;\n  protected subscribers = new Set<SubscriptionCallback>();\n  protected refreshTimer?: ReturnType<typeof setInterval>;\n  protected isInitialized = false;\n  protected features: Record<FeatureFlagKey, FeatureFlagValue>;\n  protected initializePromise?: Promise<void>;\n\n  /**\n   * Creates a new feature flag provider.\n   *\n   * @param config - Provider configuration\n   * @param features - Record of feature flag keys to their default values\n   */\n  constructor(\n    protected config: FeatureFlagConfig<FeatureFlagKey>,\n    features: Record<FeatureFlagKey, FeatureFlagValue>\n  ) {\n    this.features = features;\n    // Initialize engine with defaults from FEATURES constant\n    this.engine = new FeatureFlagEngine<FeatureFlagKey>(features, config.isLoggingEnabled ?? false);\n\n    // Initialize cache manager\n    this.cacheManager = new CacheManager({\n      isEnabled: config.isCacheEnabled,\n      ttl: config.cacheTtl,\n      strategy: 'memory', // Default to memory, can be overridden\n    });\n\n    this.setupRefreshTimer();\n  }\n\n  /**\n   * Abstract method to fetch flags and rules from the provider's data source.\n   * Must be implemented by concrete provider classes.\n   *\n   * @protected\n   * @abstract\n   * @returns Promise resolving to flags and rules\n   */\n  protected abstract fetchData(): Promise<FetchFeatureFlagDataResponse<FeatureFlagKey>>;\n\n  /**\n   * Initializes the provider by loading initial data.\n   *\n   * @returns Promise that resolves when initialization is complete\n   */\n  async initialize(): Promise<void> {\n    if (this.isInitialized) {\n      return;\n    }\n\n    // If already initializing, wait for that to complete\n    if (this.initializePromise) {\n      return this.initializePromise;\n    }\n\n    // Create and store the initialization promise\n    this.initializePromise = this.doInitialize();\n    return this.initializePromise;\n  }\n\n  /**\n   * Performs the actual initialization work.\n   *\n   * @private\n   * @returns Promise that resolves when initialization is complete\n   */\n  private async doInitialize(): Promise<void> {\n    try {\n      await this.refresh();\n      this.isInitialized = true;\n      this.log('Provider initialized successfully');\n    } catch (error) {\n      this.log('Failed to initialize provider:', error);\n      // Clear the promise so initialization can be retried\n      this.initializePromise = undefined;\n      throw error;\n    }\n  }\n\n  /**\n   * Gets a feature flag evaluation for the specified key and context.\n   *\n   * @param key - The feature flag key\n   * @param context - Optional context for evaluation\n   * @returns Promise resolving to the flag evaluation\n   */\n  async getFlag(\n    key: FeatureFlagKey,\n    context?: FeatureFlagContext\n  ): Promise<FeatureFlagEvaluation<FeatureFlagKey>> {\n    if (!this.isInitialized) {\n      await this.initialize();\n    }\n\n    // Check cache first if enabled\n    if (this.config.isCacheEnabled) {\n      const cacheKey = this.generateCacheKey(key, context);\n      const cached = await this.cacheManager.get<FeatureFlagEvaluation<FeatureFlagKey>>(cacheKey);\n      if (cached) {\n        return cached;\n      }\n\n      // Evaluate and cache the result\n      const evaluation = this.engine.evaluate(key, context);\n      await this.cacheManager.set(cacheKey, evaluation);\n      return evaluation;\n    }\n\n    // Direct evaluation without caching\n    return this.engine.evaluate(key, context);\n  }\n\n  /**\n   * Checks if a feature flag is enabled.\n   *\n   * @param key - The feature flag key\n   * @param context - Optional context for evaluation\n   * @returns Promise resolving to boolean indicating if flag is enabled\n   */\n  async isEnabled(key: FeatureFlagKey, context?: FeatureFlagContext): Promise<boolean> {\n    const evaluation = await this.getFlag(key, context);\n    return evaluation.isEnabled;\n  }\n\n  /**\n   * Gets the value of a feature flag.\n   *\n   * @template T - The expected type of the flag value\n   * @param key - The feature flag key\n   * @param context - Optional context for evaluation\n   * @returns Promise resolving to the flag value\n   */\n  async getValue<T = FeatureFlagValue>(\n    key: FeatureFlagKey,\n    context?: FeatureFlagContext\n  ): Promise<T> {\n    const evaluation = await this.getFlag(key, context);\n    return evaluation.value as T;\n  }\n\n  /**\n   * Gets all feature flag evaluations for the given context.\n   *\n   * @param context - Optional context for evaluation\n   * @returns Promise resolving to record of flag evaluations\n   */\n  async getAllFlags(\n    context?: FeatureFlagContext\n  ): Promise<Record<string, FeatureFlagEvaluation<FeatureFlagKey>>> {\n    if (!this.isInitialized) {\n      await this.initialize();\n    }\n\n    const results: Record<string, FeatureFlagEvaluation<FeatureFlagKey>> = {};\n\n    // First, evaluate all default flags from FEATURES\n    for (const key of Object.keys(this.features) as FeatureFlagKey[]) {\n      results[key] = await this.getFlag(key, context);\n    }\n\n    // Then, evaluate any additional flags from the engine\n    const engineFlags = this.engine.getFlags();\n    for (const flag of engineFlags) {\n      if (!(flag.key in results)) {\n        results[flag.key] = await this.getFlag(flag.key, context);\n      }\n    }\n\n    return results;\n  }\n\n  /**\n   * Refreshes the provider by fetching latest data from the source.\n   *\n   * @returns Promise that resolves when refresh is complete\n   */\n  async refresh(): Promise<void> {\n    try {\n      const { flags, rules } = await this.fetchData();\n\n      this.engine.setFlags(flags);\n      this.engine.setRules(rules);\n\n      // Clear cache after refresh\n      await this.cacheManager.clear();\n\n      // Notify subscribers\n      this.notifySubscribers();\n\n      this.log(`Refreshed with ${flags.length} flags and ${rules.length} rules`);\n    } catch (error) {\n      this.log('Failed to refresh provider:', error);\n      throw error;\n    }\n  }\n\n  /**\n   * Subscribes to provider updates.\n   *\n   * @param callback - Function to call when provider updates\n   * @returns Unsubscribe function\n   */\n  subscribe(callback: SubscriptionCallback): () => void {\n    this.subscribers.add(callback);\n    return () => {\n      this.subscribers.delete(callback);\n    };\n  }\n\n  /**\n   * Sets an override for a specific flag key.\n   *\n   * @param key - The flag key to override\n   * @param value - The value to force for this flag\n   */\n  setOverride(key: FeatureFlagKey, value: FeatureFlagValue): void {\n    this.engine.setOverride(key, value);\n    void this.cacheManager.clear(); // Clear cache to ensure overrides take effect\n    this.notifySubscribers();\n  }\n\n  /**\n   * Removes an override for a specific flag key.\n   *\n   * @param key - The flag key to remove override for\n   */\n  removeOverride(key: FeatureFlagKey): void {\n    this.engine.removeOverride(key);\n    void this.cacheManager.clear();\n    this.notifySubscribers();\n  }\n\n  /**\n   * Clears all overrides.\n   */\n  clearOverrides(): void {\n    this.engine.clearOverrides();\n    void this.cacheManager.clear();\n    this.notifySubscribers();\n  }\n\n  /**\n   * Disposes of the provider, cleaning up resources.\n   */\n  dispose(): void {\n    if (this.refreshTimer) {\n      clearInterval(this.refreshTimer);\n      this.refreshTimer = undefined;\n    }\n\n    this.subscribers.clear();\n    void this.cacheManager.clear();\n    this.isInitialized = false;\n\n    this.log('Provider disposed');\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Flag Management Operations\n  // Each provider implements these based on its storage backend:\n  // - Memory: in-memory storage (ephemeral)\n  // - File: JSON/YAML file storage\n  // - Redis: Redis storage\n  // - API: External API calls\n  // - Database: Database storage\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Creates a new feature flag.\n   * Abstract - each provider implements based on its storage backend.\n   *\n   * @param data - Flag creation data\n   * @returns The created feature flag\n   */\n  abstract createFlag(\n    data: CreateFlagRequest<FeatureFlagKey>\n  ): Promise<FeatureFlag<FeatureFlagKey>>;\n\n  /**\n   * Updates an existing feature flag.\n   * Abstract - each provider implements based on its storage backend.\n   *\n   * @param key - Flag key to update\n   * @param data - Partial flag data to update\n   * @returns The updated feature flag\n   */\n  abstract updateFlag(\n    key: FeatureFlagKey,\n    data: Partial<CreateFlagRequest<FeatureFlagKey>>\n  ): Promise<FeatureFlag<FeatureFlagKey>>;\n\n  /**\n   * Deletes a feature flag.\n   * Abstract - each provider implements based on its storage backend.\n   *\n   * @param key - Flag key to delete\n   */\n  abstract deleteFlag(key: FeatureFlagKey): Promise<void>;\n\n  /**\n   * Gets all rules for a specific flag.\n   * Abstract - each provider implements based on its storage backend.\n   *\n   * @param key - Flag key to get rules for\n   * @returns Array of rules for the flag\n   */\n  abstract getRules(key: FeatureFlagKey): Promise<FeatureFlagRule<FeatureFlagKey>[]>;\n\n  /**\n   * Gets all enabled rules across all flags.\n   * Abstract - each provider implements based on its storage backend.\n   *\n   * @returns Array of all enabled rules\n   */\n  abstract getAllRules(): Promise<FeatureFlagRule<FeatureFlagKey>[]>;\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Optional Extensions\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Optional method to sync features at runtime.\n   * This is useful for providers that can update their features dynamically.\n   *\n   * @param newFeatures - New features to sync\n   * @returns Promise that resolves when sync is complete\n   */\n  syncFeatures?(newFeatures: Record<FeatureFlagKey, FeatureFlagValue>): Promise<void>;\n\n  /**\n   * Generates a cache key for flag evaluation.\n   *\n   * @protected\n   * @param key - Feature flag key\n   * @param context - Evaluation context\n   * @returns Cache key string\n   */\n  protected generateCacheKey(key: FeatureFlagKey, context?: FeatureFlagContext): string {\n    if (!context) {\n      return key;\n    }\n\n    // Create a stable cache key from context\n    const contextKey = JSON.stringify({\n      userId: context.userId,\n      userRole: context.userRole,\n      environment: context.environment,\n      platform: context.platform,\n      country: context.country,\n      version: context.version,\n    });\n\n    return `${key}:${contextKey}`;\n  }\n\n  /**\n   * Sets up the automatic refresh timer if configured.\n   *\n   * @protected\n   */\n  protected setupRefreshTimer(): void {\n    if (this.config.refreshInterval > 0) {\n      this.refreshTimer = setInterval(() => {\n        void this.refresh().catch(error => {\n          this.log('Auto-refresh failed:', error);\n        });\n      }, this.config.refreshInterval * TIME_CONSTANTS.MILLISECONDS_PER_SECOND);\n    }\n  }\n\n  /**\n   * Notifies all subscribers of provider updates.\n   *\n   * @protected\n   */\n  protected notifySubscribers(): void {\n    for (const callback of Array.from(this.subscribers)) {\n      try {\n        callback();\n      } catch (error) {\n        this.log('Subscriber callback error:', error);\n      }\n    }\n  }\n\n  /**\n   * Logs a message if logging is enabled.\n   *\n   * @protected\n   * @param args - Arguments to log\n   */\n  protected log(...args: unknown[]): void {\n    if (this.config.isLoggingEnabled) {\n      console.log('[FeatureFlagProvider]', ...args);\n    }\n  }\n}\n","/**\n * Memory Feature Flag Provider\n *\n * In-memory provider implementation that uses the FEATURES constant for flag data.\n * This will be moved to @plyaz/core when the package structure is finalized.\n *\n * @fileoverview Memory provider implementation for feature flags\n * @version 1.0.0\n */\n\nimport type {\n  FeatureFlag,\n  FeatureFlagRule,\n  FeatureFlagConfig,\n  FeatureFlagValue,\n  CreateFlagRequest,\n} from '@plyaz/types';\nimport { ERROR_CODES } from '@plyaz/types';\nimport { CorePackageError } from '@plyaz/errors';\nimport { FeatureFlagProvider } from '../provider';\n\n/**\n * Memory-based feature flag provider that loads flags from the FEATURES constant.\n *\n * @class MemoryFeatureFlagProvider\n * @extends {FeatureFlagProvider}\n *\n * @example\n * ```typescript\n * const provider = new MemoryFeatureFlagProvider<FeatureFlagKey>({\n *   provider: 'memory',\n *   isCacheEnabled: false,\n *   isLoggingEnabled: true,\n * }, FEATURES);\n *\n * await provider.initialize();\n * const isEnabled = await provider.isEnabled('AUTH_GOOGLE');\n * ```\n */\nexport class MemoryFeatureFlagProvider<\n  FeatureFlagKey extends string,\n> extends FeatureFlagProvider<FeatureFlagKey> {\n  private flags: FeatureFlag<FeatureFlagKey>[] = [];\n  private rules: FeatureFlagRule<FeatureFlagKey>[] = [];\n\n  /**\n   * Creates a new memory feature flag provider.\n   *\n   * @param config - Provider configuration\n   * @param features - Record of feature flag keys to their default values\n   */\n  constructor(\n    config: FeatureFlagConfig<FeatureFlagKey>,\n    features: Record<FeatureFlagKey, FeatureFlagValue>\n  ) {\n    super(config, features);\n    this.validateConfig();\n  }\n\n  /**\n   * Fetches flags and rules from memory (FEATURES constant).\n   *\n   * @protected\n   * @returns Promise resolving to flags and rules from memory\n   */\n  protected async fetchData(): Promise<{\n    flags: FeatureFlag<FeatureFlagKey>[];\n    rules: FeatureFlagRule<FeatureFlagKey>[];\n  }> {\n    this.log('Fetching feature flags from memory (FEATURES constant)');\n\n    const currentTime = new Date();\n\n    // Convert FEATURES constant to FeatureFlag objects\n    this.flags = Object.entries(this.features).map(([key, value]) =>\n      this.createFeatureFlagFromConstant(\n        key as FeatureFlagKey,\n        value as FeatureFlagValue,\n        currentTime\n      )\n    );\n\n    // Memory provider doesn't have rules by default, but allows manual addition\n    this.rules = [...this.getManualRules()];\n\n    this.log(`Loaded ${this.flags.length} flags and ${this.rules.length} rules from memory`);\n\n    return {\n      flags: this.flags,\n      rules: this.rules,\n    };\n  }\n\n  /**\n   * Creates a FeatureFlag object from a FEATURES constant entry.\n   *\n   * @private\n   * @param key - The feature flag key\n   * @param value - The value from FEATURES constant\n   * @param currentTime - Current timestamp\n   * @returns FeatureFlag object\n   */\n  private createFeatureFlagFromConstant(\n    key: FeatureFlagKey,\n    value: FeatureFlagValue,\n    currentTime: Date\n  ): FeatureFlag<FeatureFlagKey> {\n    return {\n      key,\n      name: this.generateFlagName(key),\n      description: `Memory-based flag for ${key}`,\n      isEnabled: true,\n      value,\n      type: this.inferFlagType(value),\n      environment: 'all',\n      rolloutPercentage: undefined,\n      createdAt: currentTime,\n      updatedAt: currentTime,\n      createdBy: 'memory-system',\n      updatedBy: 'memory-system',\n    } satisfies FeatureFlag<FeatureFlagKey>;\n  }\n\n  /**\n   * Generates a human-readable name from a flag key.\n   *\n   * @private\n   * @param key - The feature flag key\n   * @returns Human-readable flag name\n   */\n  private generateFlagName(key: FeatureFlagKey): string {\n    return key\n      .split('_')\n      .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n      .join(' ');\n  }\n\n  /**\n   * Infers the flag type from its value.\n   *\n   * @private\n   * @param value - The flag value\n   * @returns The inferred type\n   */\n  private inferFlagType(value: FeatureFlagValue): 'boolean' | 'string' | 'number' | 'json' {\n    if (typeof value === 'boolean') return 'boolean';\n    if (typeof value === 'string') return 'string';\n    if (typeof value === 'number') return 'number';\n    return 'json';\n  }\n\n  /**\n   * Gets manually added rules for memory provider.\n   *\n   * @private\n   * @returns Array of manually configured rules\n   */\n  private getManualRules(): FeatureFlagRule<FeatureFlagKey>[] {\n    return this.config.memoryRules ?? [];\n  }\n\n  /**\n   * Validates the memory provider configuration.\n   *\n   * @private\n   * @throws Error if configuration is invalid\n   */\n  private validateConfig(): void {\n    if (this.config.provider !== 'memory') {\n      throw new CorePackageError(\n        'Memory provider requires provider to be set to \"memory\"',\n        ERROR_CODES.CLIENT_INVALID_CONFIG\n      );\n    }\n\n    if (this.config.memoryRules && !Array.isArray(this.config.memoryRules)) {\n      throw new CorePackageError(\n        'memoryRules must be an array if provided',\n        ERROR_CODES.CLIENT_INVALID_CONFIG\n      );\n    }\n  }\n\n  /**\n   * Adds a rule to the memory provider at runtime.\n   *\n   * @param rule - The rule to add\n   */\n  addRule(rule: FeatureFlagRule<FeatureFlagKey>): void {\n    this.rules.push(rule);\n    this.engine.setRules(this.rules);\n    void this.cacheManager.clear();\n    this.notifySubscribers();\n    this.log(`Added rule: ${rule.name} for flag: ${rule.flagKey}`);\n  }\n\n  /**\n   * Removes a rule from the memory provider.\n   *\n   * @param ruleId - The ID of the rule to remove\n   */\n  removeRule(ruleId: string): void {\n    const initialCount = this.rules.length;\n    this.rules = this.rules.filter(rule => rule.id !== ruleId);\n\n    if (this.rules.length < initialCount) {\n      this.engine.setRules(this.rules);\n      void this.cacheManager.clear();\n      this.notifySubscribers();\n      this.log(`Removed rule with ID: ${ruleId}`);\n    } else {\n      this.log(`Rule with ID ${ruleId} not found`);\n    }\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Flag Management Operations (implements abstract methods)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Creates a new feature flag in memory.\n   *\n   * @param data - Flag creation data\n   * @returns The created feature flag\n   */\n  async createFlag(data: CreateFlagRequest<FeatureFlagKey>): Promise<FeatureFlag<FeatureFlagKey>> {\n    if (this.flags.some(f => f.key === data.key)) {\n      throw new CorePackageError(\n        `Flag with key ${data.key} already exists`,\n        ERROR_CODES.DB_DUPLICATE_ENTRY\n      );\n    }\n\n    const currentTime = new Date();\n    const newFlag: FeatureFlag<FeatureFlagKey> = {\n      key: data.key,\n      name: data.name,\n      description: data.description ?? '',\n      value: data.value,\n      isEnabled: data.isEnabled ?? true,\n      type: this.inferFlagType(data.value),\n      environment: data.environment ?? 'all',\n      rolloutPercentage: data.rolloutPercentage,\n      createdAt: currentTime,\n      updatedAt: currentTime,\n      createdBy: 'memory-runtime',\n      updatedBy: 'memory-runtime',\n    };\n\n    this.flags.push(newFlag);\n    this.engine.setFlags(this.flags);\n    void this.cacheManager.clear();\n    this.notifySubscribers();\n\n    this.log(`Created flag: ${data.key}`);\n    return newFlag;\n  }\n\n  /**\n   * Updates an existing feature flag in memory.\n   *\n   * @param key - Flag key to update\n   * @param data - Partial flag data to update\n   * @returns The updated feature flag\n   */\n  async updateFlag(\n    key: FeatureFlagKey,\n    data: Partial<CreateFlagRequest<FeatureFlagKey>>\n  ): Promise<FeatureFlag<FeatureFlagKey>> {\n    const flagIndex = this.flags.findIndex(f => f.key === key);\n    if (flagIndex === -1) {\n      throw new CorePackageError(`Flag with key ${key} not found`, ERROR_CODES.RESOURCE_NOT_FOUND);\n    }\n\n    const existingFlag = this.flags[flagIndex];\n    const updatedFlag: FeatureFlag<FeatureFlagKey> = {\n      ...existingFlag,\n      ...data,\n      key, // Ensure key doesn't change\n      type: data.value !== undefined ? this.inferFlagType(data.value) : existingFlag.type,\n      updatedAt: new Date(),\n      updatedBy: 'memory-runtime',\n    };\n\n    this.flags[flagIndex] = updatedFlag;\n    this.engine.setFlags(this.flags);\n    void this.cacheManager.clear();\n    this.notifySubscribers();\n\n    this.log(`Updated flag: ${key}`);\n    return updatedFlag;\n  }\n\n  /**\n   * Deletes a feature flag from memory.\n   *\n   * @param key - Flag key to delete\n   */\n  async deleteFlag(key: FeatureFlagKey): Promise<void> {\n    const initialCount = this.flags.length;\n    this.flags = this.flags.filter(flag => flag.key !== key);\n\n    if (this.flags.length === initialCount) {\n      throw new CorePackageError(`Flag with key ${key} not found`, ERROR_CODES.RESOURCE_NOT_FOUND);\n    }\n\n    this.engine.setFlags(this.flags);\n    void this.cacheManager.clear();\n    this.notifySubscribers();\n    this.log(`Deleted flag: ${key}`);\n  }\n\n  /**\n   * Gets all rules for a specific flag.\n   *\n   * @param key - Flag key to get rules for\n   * @returns Array of rules for the flag\n   */\n  async getRules(key: FeatureFlagKey): Promise<FeatureFlagRule<FeatureFlagKey>[]> {\n    return this.rules.filter(rule => rule.flagKey === key);\n  }\n\n  /**\n   * Gets all enabled rules.\n   *\n   * @returns Array of all enabled rules\n   */\n  async getAllRules(): Promise<FeatureFlagRule<FeatureFlagKey>[]> {\n    return this.rules.filter(rule => rule.isEnabled);\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Memory-specific methods (beyond abstract interface)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Adds a new flag to memory at runtime.\n   *\n   * @param key - The flag key\n   * @param value - The flag value\n   * @param props - Optional flag properties\n   */\n  addFlag(\n    key: FeatureFlagKey,\n    value: FeatureFlagValue,\n    props?: Partial<\n      Pick<\n        FeatureFlag<FeatureFlagKey>,\n        'name' | 'description' | 'isEnabled' | 'environment' | 'rolloutPercentage' | 'type'\n      >\n    >\n  ): void {\n    if (this.flagExists(key)) {\n      return;\n    }\n\n    const newFlag = this.createNewFlag(key, value, props);\n    this.addFlagToStore(key, newFlag, value);\n  }\n\n  /**\n   * Checks if a flag with the given key exists.\n   */\n  private flagExists(key: FeatureFlagKey): boolean {\n    const exists = this.flags.some(flag => flag.key === key);\n    if (exists) {\n      this.log(`Flag with key ${key} already exists in memory`);\n    }\n    return exists;\n  }\n\n  /**\n   * Creates a new flag object.\n   */\n  private createNewFlag(\n    key: FeatureFlagKey,\n    value: FeatureFlagValue,\n    props?: Partial<\n      Pick<\n        FeatureFlag<FeatureFlagKey>,\n        'name' | 'description' | 'isEnabled' | 'environment' | 'rolloutPercentage' | 'type'\n      >\n    >\n  ): FeatureFlag<FeatureFlagKey> {\n    const currentTime = new Date();\n    const flagDefaults = this.getDefaultFlagProperties(key, value);\n    const flagProps = this.mergeWithUserProps(flagDefaults, props);\n\n    return {\n      key,\n      ...flagProps,\n      value,\n      type: flagDefaults.type,\n      createdAt: currentTime,\n      updatedAt: currentTime,\n      createdBy: 'memory-runtime',\n      updatedBy: 'memory-runtime',\n    } satisfies FeatureFlag<FeatureFlagKey>;\n  }\n\n  /**\n   * Gets default properties for a new flag.\n   */\n  private getDefaultFlagProperties(\n    key: FeatureFlagKey,\n    value: FeatureFlagValue\n  ): {\n    name: string;\n    description: string;\n    isEnabled: boolean;\n    type: 'boolean' | 'string' | 'number' | 'json';\n    environment: 'all';\n    rolloutPercentage: undefined;\n  } {\n    return {\n      name: this.generateFlagName(key),\n      description: `Runtime-added flag for ${key}`,\n      isEnabled: true,\n      type: this.inferFlagType(value),\n      environment: 'all' as const,\n      rolloutPercentage: undefined,\n    };\n  }\n\n  /**\n   * Merges default properties with user-provided properties.\n   */\n  private mergeWithUserProps(\n    defaults: ReturnType<typeof this.getDefaultFlagProperties>,\n    props?: Partial<\n      Pick<\n        FeatureFlag<FeatureFlagKey>,\n        'name' | 'description' | 'isEnabled' | 'environment' | 'rolloutPercentage' | 'type'\n      >\n    >\n  ): Pick<\n    FeatureFlag<FeatureFlagKey>,\n    'name' | 'description' | 'isEnabled' | 'environment' | 'rolloutPercentage' | 'type'\n  > {\n    const merged = { ...defaults, ...props };\n\n    // If type is provided in props, use it; otherwise use the inferred type\n    if (props?.type) {\n      merged.type = props.type;\n    }\n\n    return merged;\n  }\n\n  /**\n   * Adds the flag to the store and notifies systems.\n   */\n  private addFlagToStore(\n    key: FeatureFlagKey,\n    newFlag: FeatureFlag<FeatureFlagKey>,\n    value: FeatureFlagValue\n  ): void {\n    this.flags.push(newFlag);\n    this.engine.setFlags(this.flags);\n    void this.cacheManager.clear();\n    this.notifySubscribers();\n    this.log(`Added new flag: ${key} with value:`, value);\n  }\n\n  /**\n   * Removes a flag from memory.\n   *\n   * @param key - The flag key to remove\n   */\n  removeFlag(key: FeatureFlagKey): void {\n    const initialCount = this.flags.length;\n    this.flags = this.flags.filter(flag => flag.key !== key);\n\n    if (this.flags.length < initialCount) {\n      this.engine.setFlags(this.flags);\n      void this.cacheManager.clear();\n      this.notifySubscribers();\n      this.log(`Removed flag: ${key}`);\n    } else {\n      this.log(`Flag with key ${key} not found in memory`);\n    }\n  }\n\n  /**\n   * Gets all current flags in memory.\n   *\n   * @returns Array of current flags\n   */\n  getCurrentFlags(): FeatureFlag<FeatureFlagKey>[] {\n    return [...this.flags];\n  }\n\n  /**\n   * Gets all current rules in memory.\n   *\n   * @returns Array of current rules\n   */\n  getCurrentRules(): FeatureFlagRule<FeatureFlagKey>[] {\n    return [...this.rules];\n  }\n\n  /**\n   * Updates the features object and syncs all flags.\n   * This allows updating the FEATURES constant at runtime.\n   *\n   * @param newFeatures - New features object to sync with\n   */\n  async syncFeatures(newFeatures: Record<FeatureFlagKey, FeatureFlagValue>): Promise<void> {\n    this.log('Syncing with new FEATURES values');\n\n    // Update the internal features reference\n    this.features = newFeatures;\n\n    // Refresh to reload all flags from the new features\n    await this.refresh();\n\n    this.log(`Synced ${Object.keys(newFeatures).length} features`);\n  }\n\n  /**\n   * Resets the memory provider to its initial state.\n   */\n  async reset(): Promise<void> {\n    this.log('Resetting memory provider to initial state');\n    await this.refresh();\n  }\n\n  /**\n   * Gets statistics about the memory provider.\n   *\n   * @returns Provider statistics\n   */\n  getStats(): {\n    flagCount: number;\n    ruleCount: number;\n    cacheSize: number;\n    subscriberCount: number;\n    isInitialized: boolean;\n  } {\n    return {\n      flagCount: this.flags.length,\n      ruleCount: this.rules.length,\n      cacheSize: 0, // Memory cache size would need to be tracked\n      subscriberCount: this.subscribers.size,\n      isInitialized: this.isInitialized,\n    };\n  }\n\n  /**\n   * Logs messages with MemoryFeatureFlagProvider prefix.\n   *\n   * @param args - Arguments to log\n   */\n  protected log(...args: unknown[]): void {\n    if (this.config.isLoggingEnabled) {\n      console.log('[MemoryFeatureFlagProvider]', ...args);\n    }\n  }\n}\n","/**\n * File Feature Flag Provider\n *\n * File-based provider implementation supporting JSON and YAML configuration files.\n * This will be moved to @plyaz/core when the package structure is finalized.\n *\n * @fileoverview File provider implementation for feature flags\n * @version 1.0.0\n */\n\nimport type {\n  FeatureFlag,\n  FeatureFlagRule,\n  FeatureFlagConfig,\n  FeatureFlagValue,\n  CreateFlagRequest,\n} from '@plyaz/types';\nimport { ERROR_CODES } from '@plyaz/types';\nimport { CorePackageError } from '@plyaz/errors';\nimport { FeatureFlagProvider } from '../provider';\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport { promisify } from 'node:util';\nimport { fileURLToPath } from 'node:url';\nimport * as yaml from 'yaml';\nimport { FILE_CHECK_INTERVAL_DEFAULT, FORMAT_CONSTANTS } from '@plyaz/config';\n\nconst readFile = promisify(fs.readFile);\nconst writeFile = promisify(fs.writeFile);\nconst access = promisify(fs.access);\nconst mkdir = promisify(fs.mkdir);\n\ninterface FileData<FeatureFlagKey extends string> {\n  flags: FeatureFlag<FeatureFlagKey>[];\n  rules: FeatureFlagRule<FeatureFlagKey>[];\n}\n\nconst FORMAT_JSON_INDENT = 2;\n\n/**\n * File-based feature flag provider supporting JSON and YAML formats.\n *\n * @class FileFeatureFlagProvider\n * @extends {FeatureFlagProvider}\n *\n * @example\n * ```typescript\n * const provider = new FileFeatureFlagProvider<FeatureFlagKey>({\n *   provider: 'file',\n *   fileConfig: {\n *     filePath: './config/feature-flags.json',\n *     format: 'json',\n *     shouldWatchForChanges: true,\n *   },\n *   isCacheEnabled: true,\n *   cacheTtl: 60,\n * }, FEATURES);\n *\n * await provider.initialize();\n * const isEnabled = await provider.isEnabled('AUTH_GOOGLE');\n * ```\n */\nexport class FileFeatureFlagProvider<\n  FeatureFlagKey extends string,\n> extends FeatureFlagProvider<FeatureFlagKey> {\n  private fileWatcher?: fs.FSWatcher;\n  private lastFileContent?: string;\n  private fileCheckInterval?: ReturnType<typeof setInterval>;\n  private flags: FeatureFlag<FeatureFlagKey>[] = [];\n  private rules: FeatureFlagRule<FeatureFlagKey>[] = [];\n\n  /**\n   * Creates a new file feature flag provider.\n   *\n   * @param config - Provider configuration with file settings\n   * @param features - Record of feature flag keys to their default values\n   */\n  constructor(\n    config: FeatureFlagConfig<FeatureFlagKey>,\n    features: Record<FeatureFlagKey, FeatureFlagValue>\n  ) {\n    super(config, features);\n    this.validateConfig();\n  }\n\n  /**\n   * Initializes the provider and sets up file watching if enabled.\n   */\n  async initialize(): Promise<void> {\n    await super.initialize();\n\n    // Set up file watching after initialization\n    if (this.config.fileConfig?.shouldWatchForChanges) {\n      this.setupFileWatcher();\n    }\n  }\n\n  /**\n   * Fetches flags and rules from the configuration file.\n   *\n   * @protected\n   * @returns Promise resolving to flags and rules from file\n   */\n  protected async fetchData(): Promise<{\n    flags: FeatureFlag<FeatureFlagKey>[];\n    rules: FeatureFlagRule<FeatureFlagKey>[];\n  }> {\n    const { filePath, format } = this.config.fileConfig!;\n    const resolvedPath = this.resolveFilePath(filePath);\n\n    try {\n      await access(resolvedPath, fs.constants.R_OK);\n      const content = await readFile(resolvedPath, 'utf-8');\n      this.lastFileContent = content;\n      const data = await this.parseFileContent(content, format);\n      this.validateFileData(data);\n\n      // Store flags and rules for CRUD operations\n      this.flags = data.flags || [];\n      this.rules = data.rules || [];\n\n      return {\n        flags: this.flags,\n        rules: this.rules,\n      };\n    } catch (error) {\n      return this.handleFetchDataError(error, resolvedPath, format);\n    }\n  }\n\n  /**\n   * Parses file content based on format.\n   *\n   * @private\n   */\n  private async parseFileContent(\n    content: string,\n    format: 'json' | 'yaml'\n  ): Promise<FileData<FeatureFlagKey>> {\n    if (format === 'json') {\n      return this.parseJSON(content);\n    } else if (format === 'yaml') {\n      return await this.parseYAML(content);\n    }\n    throw new CorePackageError(\n      `Unsupported file format: ${format}`,\n      ERROR_CODES.CLIENT_INVALID_CONFIG\n    );\n  }\n\n  /**\n   * Handles errors for fetchData, including file creation and fallback.\n   *\n   * @private\n   */\n  private async handleFetchDataError(\n    error: unknown,\n    resolvedPath: string,\n    format: 'json' | 'yaml'\n  ): Promise<{ flags: FeatureFlag<FeatureFlagKey>[]; rules: FeatureFlagRule<FeatureFlagKey>[] }> {\n    const isFileNotFound = this.isFileNotFoundError(error);\n\n    if (isFileNotFound && this.config.shouldFallbackToDefaults) {\n      return await this.handleFileNotFound(resolvedPath, format);\n    }\n\n    this.log(`Error reading file ${resolvedPath}:`, error);\n\n    if (this.config.shouldFallbackToDefaults) {\n      return this.handleFallbackToDefaults();\n    }\n\n    throw error;\n  }\n\n  /**\n   * Type guard for NodeJS.ErrnoException.\n   */\n  private isFileNotFoundError(error: unknown): error is globalThis.NodeJS.ErrnoException {\n    return (\n      error instanceof Error &&\n      typeof (error as globalThis.NodeJS.ErrnoException).code === 'string' &&\n      (error as globalThis.NodeJS.ErrnoException).code === 'ENOENT'\n    );\n  }\n\n  /**\n   * Handles the case when the file is not found and fallback is enabled.\n   */\n  private async handleFileNotFound(\n    resolvedPath: string,\n    format: 'json' | 'yaml'\n  ): Promise<{ flags: FeatureFlag<FeatureFlagKey>[]; rules: FeatureFlagRule<FeatureFlagKey>[] }> {\n    this.log(`File not found at ${resolvedPath}, creating with default values`);\n    try {\n      await this.createDefaultFile(resolvedPath, format);\n      const content = await readFile(resolvedPath, 'utf-8');\n      this.lastFileContent = content;\n      const data = await this.parseFileContent(content, format);\n      return {\n        flags: data.flags || [],\n        rules: data.rules || [],\n      };\n    } catch (createError) {\n      this.log('Error creating default file:', createError);\n      return {\n        flags: this.createDefaultFlags(),\n        rules: [],\n      };\n    }\n  }\n\n  /**\n   * Handles fallback to default flags and rules.\n   */\n  private handleFallbackToDefaults(): {\n    flags: FeatureFlag<FeatureFlagKey>[];\n    rules: FeatureFlagRule<FeatureFlagKey>[];\n  } {\n    this.log('Falling back to default values');\n    return {\n      flags: this.createDefaultFlags(),\n      rules: [],\n    };\n  }\n\n  /**\n   * Validates the file provider configuration.\n   *\n   * @private\n   * @throws Error if configuration is invalid\n   */\n  private validateConfig(): void {\n    if (this.config.provider !== 'file') {\n      throw new CorePackageError(\n        'File provider requires provider to be set to \"file\"',\n        ERROR_CODES.CLIENT_INVALID_CONFIG\n      );\n    }\n\n    if (!this.config.fileConfig) {\n      throw new CorePackageError(\n        'File configuration is required for file provider',\n        ERROR_CODES.CLIENT_INVALID_CONFIG\n      );\n    }\n\n    const { filePath, format } = this.config.fileConfig;\n\n    if (!filePath) {\n      throw new CorePackageError('File path is required', ERROR_CODES.CLIENT_INVALID_CONFIG);\n    }\n\n    if (!format || !['json', 'yaml'].includes(format)) {\n      throw new CorePackageError(\n        'File format must be either \"json\" or \"yaml\"',\n        ERROR_CODES.CLIENT_INVALID_CONFIG\n      );\n    }\n  }\n\n  /**\n   * Resolves the file path, supporting relative and absolute paths.\n   *\n   * @private\n   * @param filePath - The file path from configuration\n   * @returns Resolved absolute file path\n   */\n  private resolveFilePath(filePath: string): string {\n    // Default to src/config/feature-provider.json if not provided\n    let pathToResolve = filePath;\n\n    if (!pathToResolve) {\n      // For ES modules, we need to calculate __dirname equivalent\n      // eslint-disable-next-line @typescript-eslint/naming-convention\n      const __filename = fileURLToPath(import.meta.url);\n      // eslint-disable-next-line @typescript-eslint/naming-convention\n      const __dirname = path.dirname(__filename);\n      pathToResolve = path.join(__dirname, '../../../config/feature-provider.json');\n    }\n\n    // If absolute path, return as is\n    if (path.isAbsolute(pathToResolve)) {\n      return pathToResolve;\n    }\n\n    // Resolve relative to current working directory\n    return path.resolve(process.cwd(), pathToResolve);\n  }\n\n  /**\n   * Parses JSON content.\n   *\n   * @private\n   * @param content - File content\n   * @returns Parsed data\n   */\n  private parseJSON(content: string): FileData<FeatureFlagKey> {\n    try {\n      return JSON.parse(content);\n    } catch (error) {\n      throw new CorePackageError(\n        `Invalid JSON format: ${error instanceof Error ? error.message : String(error)}`,\n        ERROR_CODES.VALIDATION_ERROR\n      );\n    }\n  }\n\n  /**\n   * Parses YAML content.\n   *\n   * @private\n   * @param content - File content\n   * @returns Parsed data\n   */\n  private async parseYAML(content: string): Promise<FileData<FeatureFlagKey>> {\n    try {\n      const data = yaml.parse(content) as FileData<FeatureFlagKey>;\n      return data;\n    } catch (error) {\n      throw new CorePackageError(\n        `Invalid YAML format: ${error instanceof Error ? error.message : String(error)}`,\n        ERROR_CODES.VALIDATION_ERROR\n      );\n    }\n  }\n\n  /**\n   * Validates the structure of file data.\n   *\n   * @private\n   * @param data - Parsed file data\n   */\n  private validateFileData(data: unknown): void {\n    if (!data || typeof data !== 'object') {\n      throw new CorePackageError('File must contain a valid object', ERROR_CODES.VALIDATION_ERROR);\n    }\n\n    const fileData = data as Record<string, unknown>;\n\n    this.checkFlagsArray(fileData.flags);\n    this.checkRulesArray(fileData.rules);\n  }\n\n  private checkFlagsArray(flags: unknown): void {\n    if (flags && !Array.isArray(flags)) {\n      throw new CorePackageError('\"flags\" must be an array', ERROR_CODES.VALIDATION_ERROR);\n    }\n    if (Array.isArray(flags)) {\n      this.validateFlags(flags);\n    }\n  }\n\n  private checkRulesArray(rules: unknown): void {\n    if (rules && !Array.isArray(rules)) {\n      throw new CorePackageError('\"rules\" must be an array', ERROR_CODES.VALIDATION_ERROR);\n    }\n    if (Array.isArray(rules)) {\n      this.validateRules(rules);\n    }\n  }\n\n  private validateFlags(flags: unknown[]): void {\n    flags.forEach((flag: unknown, index: number) => {\n      if (!flag || typeof flag !== 'object') {\n        throw new CorePackageError(\n          `Flag at index ${index} must be an object`,\n          ERROR_CODES.VALIDATION_ERROR\n        );\n      }\n      const flagObj = flag as Record<string, unknown>;\n      if (!flagObj.key || typeof flagObj.key !== 'string') {\n        throw new CorePackageError(\n          `Flag at index ${index} must have a \"key\" property`,\n          ERROR_CODES.VALIDATION_ERROR\n        );\n      }\n      if (flagObj.value === undefined) {\n        throw new CorePackageError(\n          `Flag \"${flagObj.key}\" must have a \"value\" property`,\n          ERROR_CODES.VALIDATION_ERROR\n        );\n      }\n    });\n  }\n\n  private validateRules(rules: unknown[]): void {\n    rules.forEach((rule: unknown, index: number) => {\n      if (!rule || typeof rule !== 'object') {\n        throw new CorePackageError(\n          `Rule at index ${index} must be an object`,\n          ERROR_CODES.VALIDATION_ERROR\n        );\n      }\n      const ruleObj = rule as Record<string, unknown>;\n      if (!ruleObj.id || typeof ruleObj.id !== 'string') {\n        throw new CorePackageError(\n          `Rule at index ${index} must have an \"id\" property`,\n          ERROR_CODES.VALIDATION_ERROR\n        );\n      }\n      if (!ruleObj.flagKey || typeof ruleObj.flagKey !== 'string') {\n        throw new CorePackageError(\n          `Rule \"${ruleObj.id}\" must have a \"flagKey\" property`,\n          ERROR_CODES.VALIDATION_ERROR\n        );\n      }\n      if (!Array.isArray(ruleObj.conditions)) {\n        throw new CorePackageError(\n          `Rule \"${ruleObj.id}\" must have a \"conditions\" array`,\n          ERROR_CODES.VALIDATION_ERROR\n        );\n      }\n    });\n  }\n\n  /**\n   * Creates a default configuration file with values from features.\n   *\n   * @private\n   * @param filePath - Path where to create the file\n   * @param format - File format (json or yaml)\n   */\n  private async createDefaultFile(filePath: string, format: 'json' | 'yaml'): Promise<void> {\n    // Ensure directory exists\n    const dir = path.dirname(filePath);\n    await mkdir(dir, { recursive: true });\n\n    // Create default data structure\n    const defaultData: FileData<FeatureFlagKey> = {\n      flags: this.createDefaultFlags(),\n      rules: [],\n    };\n\n    // Serialize based on format\n    let content: string;\n    if (format === 'json') {\n      content = JSON.stringify(defaultData, null, FORMAT_CONSTANTS.JSON_INDENT_SPACES);\n    } else {\n      content = yaml.stringify(defaultData);\n    }\n\n    // Write file\n    await writeFile(filePath, content, 'utf-8');\n    this.log(`Created default feature flag file at: ${filePath}`);\n  }\n\n  /**\n   * Creates default flags from the features configuration.\n   *\n   * @private\n   * @returns Array of default flags\n   */\n  private createDefaultFlags(): FeatureFlag<FeatureFlagKey>[] {\n    return Object.entries(this.features).map(([key, value]) => ({\n      key: key as FeatureFlagKey,\n      value: value as FeatureFlagValue,\n      isEnabled: true,\n      name: key,\n      description: `Default flag for ${key}`,\n      type:\n        typeof value === 'boolean'\n          ? 'boolean'\n          : typeof value === 'number'\n            ? 'number'\n            : typeof value === 'string'\n              ? 'string'\n              : 'json',\n      environment: 'development',\n      createdAt: new Date(),\n      updatedAt: new Date(),\n      createdBy: 'system',\n      updatedBy: 'system',\n      metadata: {},\n      tags: [],\n    }));\n  }\n\n  /**\n   * Sets up file watching for hot reload if enabled.\n   *\n   * @private\n   */\n  private setupFileWatcher(): void {\n    if (!this.config.fileConfig?.shouldWatchForChanges) {\n      return;\n    }\n\n    const { filePath } = this.config.fileConfig;\n    const resolvedPath = this.resolveFilePath(filePath);\n\n    try {\n      // Use fs.watch for file system events\n      this.fileWatcher = fs.watch(resolvedPath, async eventType => {\n        if (eventType === 'change') {\n          this.log(`File changed: ${resolvedPath}`);\n\n          // Debounce rapid changes\n          if (this.fileCheckInterval) {\n            clearTimeout(this.fileCheckInterval);\n          }\n\n          this.fileCheckInterval = setTimeout(async () => {\n            try {\n              // Check if content actually changed\n              const content = await readFile(resolvedPath, 'utf-8');\n              if (content !== this.lastFileContent) {\n                this.log('File content changed, refreshing...');\n                await this.refresh();\n              }\n            } catch (error) {\n              this.log('Error reading changed file:', error);\n            }\n          }, this.config.fileConfig?.fileCheckInterval ?? FILE_CHECK_INTERVAL_DEFAULT); // Use configured interval or default\n        }\n      });\n\n      this.log(`File watching enabled for: ${resolvedPath}`);\n    } catch (error) {\n      this.log(`Failed to set up file watching: ${error}`);\n      // File watching is optional, so we don't throw\n    }\n  }\n\n  /**\n   * Disposes of the file provider and stops file watching.\n   */\n  dispose(): void {\n    super.dispose();\n\n    if (this.fileWatcher) {\n      this.fileWatcher.close();\n      this.fileWatcher = undefined;\n      this.log('File watching stopped');\n    }\n\n    if (this.fileCheckInterval) {\n      clearTimeout(this.fileCheckInterval);\n      this.fileCheckInterval = undefined;\n    }\n  }\n\n  /**\n   * Refreshes the provider by fetching latest data from the file.\n   * Overrides base class to store rules.\n   *\n   * @returns Promise that resolves when refresh is complete\n   */\n  async refresh(): Promise<void> {\n    // Just call parent refresh - it will call fetchData and set everything properly\n    await super.refresh();\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Flag Management Operations (implements abstract methods)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Creates a new feature flag and persists to file.\n   *\n   * @param data - Flag creation data\n   * @returns The created feature flag\n   */\n  async createFlag(data: CreateFlagRequest<FeatureFlagKey>): Promise<FeatureFlag<FeatureFlagKey>> {\n    if (this.flags.some(f => f.key === data.key)) {\n      throw new CorePackageError(\n        `Flag with key ${data.key} already exists`,\n        ERROR_CODES.DB_DUPLICATE_ENTRY\n      );\n    }\n\n    const currentTime = new Date();\n    const newFlag: FeatureFlag<FeatureFlagKey> = {\n      key: data.key,\n      name: data.name,\n      description: data.description ?? '',\n      value: data.value,\n      isEnabled: data.isEnabled ?? true,\n      type: this.inferFlagType(data.value),\n      environment: data.environment ?? 'all',\n      rolloutPercentage: data.rolloutPercentage,\n      createdAt: currentTime,\n      updatedAt: currentTime,\n      createdBy: 'file-provider',\n      updatedBy: 'file-provider',\n    };\n\n    this.flags.push(newFlag);\n    await this.persistToFile();\n    this.log(`Created flag: ${data.key}`);\n    return newFlag;\n  }\n\n  /**\n   * Updates an existing feature flag and persists to file.\n   *\n   * @param key - Flag key to update\n   * @param data - Partial flag data to update\n   * @returns The updated feature flag\n   */\n  async updateFlag(\n    key: FeatureFlagKey,\n    data: Partial<CreateFlagRequest<FeatureFlagKey>>\n  ): Promise<FeatureFlag<FeatureFlagKey>> {\n    const flagIndex = this.flags.findIndex(f => f.key === key);\n    if (flagIndex === -1) {\n      throw new CorePackageError(`Flag with key ${key} not found`, ERROR_CODES.RESOURCE_NOT_FOUND);\n    }\n\n    const existingFlag = this.flags[flagIndex];\n    const updatedFlag: FeatureFlag<FeatureFlagKey> = {\n      ...existingFlag,\n      ...data,\n      key, // Ensure key doesn't change\n      type: data.value !== undefined ? this.inferFlagType(data.value) : existingFlag.type,\n      updatedAt: new Date(),\n      updatedBy: 'file-provider',\n    };\n\n    this.flags[flagIndex] = updatedFlag;\n    await this.persistToFile();\n    this.log(`Updated flag: ${key}`);\n    return updatedFlag;\n  }\n\n  /**\n   * Deletes a feature flag and persists to file.\n   *\n   * @param key - Flag key to delete\n   */\n  async deleteFlag(key: FeatureFlagKey): Promise<void> {\n    const initialCount = this.flags.length;\n    this.flags = this.flags.filter(flag => flag.key !== key);\n\n    if (this.flags.length === initialCount) {\n      throw new CorePackageError(`Flag with key ${key} not found`, ERROR_CODES.RESOURCE_NOT_FOUND);\n    }\n\n    await this.persistToFile();\n    this.log(`Deleted flag: ${key}`);\n  }\n\n  /**\n   * Gets all rules for a specific flag.\n   *\n   * @param key - Flag key to get rules for\n   * @returns Array of rules for the flag\n   */\n  async getRules(key: FeatureFlagKey): Promise<FeatureFlagRule<FeatureFlagKey>[]> {\n    return this.rules.filter(rule => rule.flagKey === key);\n  }\n\n  /**\n   * Gets all enabled rules.\n   *\n   * @returns Array of all enabled rules\n   */\n  async getAllRules(): Promise<FeatureFlagRule<FeatureFlagKey>[]> {\n    return this.rules.filter(rule => rule.isEnabled);\n  }\n\n  /**\n   * Persists current flags and rules to file.\n   *\n   * @private\n   */\n  private async persistToFile(): Promise<void> {\n    const { filePath, format } = this.config.fileConfig!;\n    const resolvedPath = this.resolveFilePath(filePath);\n\n    const fileData: FileData<FeatureFlagKey> = {\n      flags: this.flags,\n      rules: this.rules,\n    };\n\n    let content: string;\n    if (format === 'json') {\n      content = JSON.stringify(fileData, null, FORMAT_JSON_INDENT);\n    } else {\n      content = yaml.stringify(fileData);\n    }\n\n    await writeFile(resolvedPath, content, 'utf-8');\n    this.lastFileContent = content;\n\n    // Update engine with new flags\n    this.engine.setFlags(this.flags);\n    this.engine.setRules(this.rules);\n    void this.cacheManager.clear();\n    this.notifySubscribers();\n  }\n\n  /**\n   * Infers the flag type from its value.\n   *\n   * @private\n   */\n  private inferFlagType(value: FeatureFlagValue): 'boolean' | 'string' | 'number' | 'json' {\n    if (typeof value === 'boolean') return 'boolean';\n    if (typeof value === 'string') return 'string';\n    if (typeof value === 'number') return 'number';\n    return 'json';\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // File-specific methods (beyond abstract interface)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Updates the features object and writes to file.\n   * This allows updating the FEATURES at runtime and persisting to file.\n   *\n   * @param newFeatures - New features object to sync with\n   */\n  async syncFeatures(newFeatures: Record<FeatureFlagKey, FeatureFlagValue>): Promise<void> {\n    this.log('Syncing with new FEATURES values and updating file');\n\n    // Update the internal features reference\n    this.features = newFeatures;\n\n    // Create new file data with updated features\n    const fileData: FileData<FeatureFlagKey> = {\n      flags: this.createDefaultFlags(),\n      rules: this.rules || [],\n    };\n\n    // Write to file\n    const { filePath, format } = this.config.fileConfig!;\n    const resolvedPath = this.resolveFilePath(filePath);\n\n    try {\n      let content: string;\n      if (format === 'json') {\n        content = JSON.stringify(fileData, null, FORMAT_CONSTANTS.JSON_INDENT_SPACES);\n      } else {\n        content = yaml.stringify(fileData);\n      }\n\n      await writeFile(resolvedPath, content, 'utf-8');\n      this.lastFileContent = content;\n\n      // Update engine defaults before refresh\n      this.engine.updateDefaults(newFeatures);\n\n      // Refresh to reload from file (this will trigger watchers if enabled)\n      await this.refresh();\n\n      this.log(`Synced ${Object.keys(newFeatures).length} features to file: ${resolvedPath}`);\n    } catch (error) {\n      this.log('Error syncing features to file:', error);\n      throw new CorePackageError(\n        `Failed to sync features to file: ${error instanceof Error ? error.message : String(error)}`,\n        ERROR_CODES.STORAGE_FILE_WRITE_FAILED\n      );\n    }\n  }\n\n  /**\n   * Gets information about the file provider.\n   *\n   * @returns File provider information\n   */\n  getFileInfo(): {\n    filePath?: string;\n    resolvedPath?: string;\n    format?: string;\n    isWatchEnabled: boolean;\n    isImplemented: boolean;\n    lastModified?: Date;\n  } {\n    const filePath = this.config.fileConfig?.filePath;\n    const resolvedPath = filePath ? this.resolveFilePath(filePath) : undefined;\n\n    let lastModified: Date | undefined;\n    if (resolvedPath) {\n      try {\n        const stats = fs.statSync(resolvedPath);\n        lastModified = stats.mtime;\n      } catch {\n        // File might not exist\n      }\n    }\n\n    return {\n      filePath,\n      resolvedPath,\n      format: this.config.fileConfig?.format,\n      isWatchEnabled: Boolean(this.config.fileConfig?.shouldWatchForChanges),\n      isImplemented: true,\n      lastModified,\n    };\n  }\n}\n","/**\n * Redis Feature Flag Provider\n *\n * Redis-based provider implementation supporting distributed caching and storage.\n * This will be moved to @plyaz/core when the package structure is finalized.\n *\n * @fileoverview Redis provider implementation for feature flags\n * @version 1.0.0\n */\n\nimport type {\n  FeatureFlag,\n  FeatureFlagRule,\n  FeatureFlagConfig,\n  FeatureFlagValue,\n  CreateFlagRequest,\n} from '@plyaz/types';\nimport { ERROR_CODES } from '@plyaz/types';\nimport { CorePackageError } from '@plyaz/errors';\nimport { FeatureFlagProvider } from '../provider';\n\n/**\n * Redis-based feature flag provider supporting distributed caching and storage.\n *\n * @class RedisFeatureFlagProvider\n * @extends {FeatureFlagProvider}\n *\n * @example\n * ```typescript\n * const provider = new RedisFeatureFlagProvider<FeatureFlagKey>({\n *   provider: 'redis',\n *   redisConfig: {\n *     url: 'redis://localhost:6379',\n *     keyPrefix: 'feature_flags',\n *   },\n *   isCacheEnabled: true,\n *   cacheTtl: 300,\n * }, FEATURES);\n *\n * await provider.initialize();\n * const isEnabled = await provider.isEnabled('AUTH_GOOGLE');\n * ```\n */\nexport class RedisFeatureFlagProvider<\n  FeatureFlagKey extends string,\n> extends FeatureFlagProvider<FeatureFlagKey> {\n  /**\n   * Creates a new Redis feature flag provider.\n   *\n   * @param config - Provider configuration with Redis settings\n   * @param features - Record of feature flag keys to their default values\n   */\n  constructor(\n    config: FeatureFlagConfig<FeatureFlagKey>,\n    features: Record<FeatureFlagKey, FeatureFlagValue>\n  ) {\n    super(config, features);\n    this.validateConfig();\n    throw new CorePackageError(\n      'Redis provider requires @plyaz/core on Cache implementation',\n      ERROR_CODES.PROVIDER_NOT_IMPLEMENTED\n    );\n  }\n\n  /**\n   * Fetches flags and rules from Redis storage.\n   *\n   * @protected\n   * @returns Promise resolving to flags and rules from Redis\n   */\n  protected async fetchData(): Promise<{\n    flags: FeatureFlag<FeatureFlagKey>[];\n    rules: FeatureFlagRule<FeatureFlagKey>[];\n  }> {\n    throw new CorePackageError(\n      'Redis Provider is not yet fully implemented. Requires integration with cache layer.',\n      ERROR_CODES.PROVIDER_NOT_IMPLEMENTED\n    );\n  }\n\n  /**\n   * Validates the Redis provider configuration.\n   *\n   * @private\n   * @throws Error if configuration is invalid\n   */\n  private validateConfig(): void {\n    if (this.config.provider !== 'redis') {\n      throw new CorePackageError(\n        'Redis provider requires provider to be set to \"redis\"',\n        ERROR_CODES.CLIENT_INVALID_CONFIG\n      );\n    }\n\n    if (!this.config.redisConfig) {\n      throw new CorePackageError(\n        'Redis configuration is required for Redis provider',\n        ERROR_CODES.CLIENT_INVALID_CONFIG\n      );\n    }\n\n    if (!this.config.redisConfig.url) {\n      throw new CorePackageError('Redis URL is required', ERROR_CODES.CLIENT_INVALID_CONFIG);\n    }\n\n    if (!this.isValidRedisUrl(this.config.redisConfig.url)) {\n      throw new CorePackageError(\n        'Redis URL must be a valid Redis connection string (redis:// or rediss://)',\n        ERROR_CODES.CLIENT_INVALID_CONFIG\n      );\n    }\n\n    // Configuration is valid, but implementation is not complete\n    this.log('Redis provider configuration is valid, but implementation is not ready');\n    this.log('Redis URL:', this.config.redisConfig.url);\n    this.log('Key Prefix:', this.config.redisConfig.keyPrefix ?? 'feature_flags');\n  }\n\n  /**\n   * Validates Redis URL format.\n   *\n   * @private\n   * @param url - URL to validate\n   * @returns True if valid Redis URL\n   */\n  private isValidRedisUrl(url: string): boolean {\n    return url.startsWith('redis://') || url.startsWith('rediss://');\n  }\n\n  /**\n   * Gets Redis provider information.\n   *\n   * @returns Redis provider status information\n   */\n  getRedisInfo(): {\n    url?: string;\n    keyPrefix?: string;\n    isImplemented: boolean;\n    requiredImplementation: string[];\n    recommendedPatterns: string[];\n  } {\n    return {\n      url: this.config.redisConfig?.url,\n      keyPrefix: this.config.redisConfig?.keyPrefix ?? 'feature_flags',\n      isImplemented: false,\n      requiredImplementation: [\n        'Integration with cache/strategies/redis.ts',\n        'Redis data storage patterns',\n        'Client management and health monitoring',\n        'Data serialization/deserialization',\n        'Key management strategies',\n      ],\n      recommendedPatterns: [\n        'Hash-based storage for flags',\n        'List-based storage for rules',\n        'Pub/Sub for real-time updates',\n        'TTL for automatic cleanup',\n      ],\n    };\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Flag Management Operations (stub implementations)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  // eslint-disable-next-line no-unused-vars\n  async createFlag(_data: CreateFlagRequest<FeatureFlagKey>): Promise<FeatureFlag<FeatureFlagKey>> {\n    throw new CorePackageError(\n      'Redis provider not yet implemented',\n      ERROR_CODES.PROVIDER_NOT_IMPLEMENTED\n    );\n  }\n\n  async updateFlag(\n    // eslint-disable-next-line no-unused-vars\n    _key: FeatureFlagKey,\n    // eslint-disable-next-line no-unused-vars\n    _data: Partial<CreateFlagRequest<FeatureFlagKey>>\n  ): Promise<FeatureFlag<FeatureFlagKey>> {\n    throw new CorePackageError(\n      'Redis provider not yet implemented',\n      ERROR_CODES.PROVIDER_NOT_IMPLEMENTED\n    );\n  }\n\n  // eslint-disable-next-line no-unused-vars\n  async deleteFlag(_key: FeatureFlagKey): Promise<void> {\n    throw new CorePackageError(\n      'Redis provider not yet implemented',\n      ERROR_CODES.PROVIDER_NOT_IMPLEMENTED\n    );\n  }\n\n  // eslint-disable-next-line no-unused-vars\n  async getRules(_key: FeatureFlagKey): Promise<FeatureFlagRule<FeatureFlagKey>[]> {\n    throw new CorePackageError(\n      'Redis provider not yet implemented',\n      ERROR_CODES.PROVIDER_NOT_IMPLEMENTED\n    );\n  }\n\n  async getAllRules(): Promise<FeatureFlagRule<FeatureFlagKey>[]> {\n    throw new CorePackageError(\n      'Redis provider not yet implemented',\n      ERROR_CODES.PROVIDER_NOT_IMPLEMENTED\n    );\n  }\n}\n","/**\n * API Feature Flag Provider\n *\n * Provider adapter that uses @plyaz/api services with an injected API client\n * to fetch feature flags from a remote API. This provider extends the base\n * FeatureFlagProvider and implements fetchData() using the API services.\n *\n * @fileoverview API provider adapter for feature flags\n * @version 2.0.0\n */\n\nimport type {\n  FeatureFlag,\n  FeatureFlagRule,\n  FeatureFlagValue,\n  CreateFlagRequest,\n} from '@plyaz/types';\nimport { ERROR_CODES } from '@plyaz/types';\nimport { BaseError, CorePackageError } from '@plyaz/errors';\nimport { FeatureFlagProvider } from '../provider';\n\n// Import API services from @plyaz/api\nimport {\n  createFeatureFlag as apiCreateFlag,\n  updateFeatureFlag as apiUpdateFlag,\n  deleteFeatureFlag as apiDeleteFlag,\n  evaluateAllFeatureFlags as apiEvaluateAllFlags,\n  fetchFeatureFlagRules as apiFetchRules,\n} from '@plyaz/api/frontend';\nimport type { ServiceOptions } from '@plyaz/types/api';\nimport type { ApiFeatureFlagConfig as _ApiFeatureFlagConfig } from '@plyaz/types/features';\n\n// API client type from ServiceOptions\ntype ApiClientType = NonNullable<ServiceOptions['apiClient']>;\n\n/**\n * API response type for fetching flags and rules\n */\ninterface ApiFetchResponse<TKey extends string> {\n  flags: FeatureFlag<TKey>[];\n  rules: FeatureFlagRule<TKey>[];\n}\n\n/**\n * API-based feature flag provider\n *\n * Uses @plyaz/api services with an injected API client to communicate with the backend.\n * Pass your configured API client via the config.\n *\n * @class ApiFeatureFlagProvider\n * @extends {FeatureFlagProvider}\n *\n * @example\n * ```typescript\n * // Get client from ApiClientService\n * const apiClient = ApiClientService.getClient();\n *\n * const provider = new ApiFeatureFlagProvider({\n *   provider: 'api',\n *   apiClient,\n *   isCacheEnabled: true,\n *   cacheTtl: 300,\n * }, FEATURES);\n *\n * await provider.initialize();\n * const isEnabled = await provider.isEnabled('new-feature');\n * ```\n */\nexport class ApiFeatureFlagProvider<\n  FeatureFlagKey extends string,\n> extends FeatureFlagProvider<FeatureFlagKey> {\n  protected readonly apiClient: ApiClientType;\n\n  /**\n   * Creates a new API feature flag provider.\n   *\n   * @param config - Provider configuration with API client\n   * @param features - Record of feature flag keys to default values\n   */\n  constructor(\n    config: _ApiFeatureFlagConfig<FeatureFlagKey>,\n    features: Record<FeatureFlagKey, FeatureFlagValue>\n  ) {\n    super(config, features);\n\n    if (!config.apiClient) {\n      throw new CorePackageError(\n        'API provider requires apiClient in config',\n        ERROR_CODES.CLIENT_INVALID_CONFIG\n      );\n    }\n\n    this.apiClient = config.apiClient;\n    this.validateConfig();\n  }\n\n  /**\n   * Get service options with injected client\n   */\n  private getServiceOptions(): ServiceOptions {\n    return { apiClient: this.apiClient };\n  }\n\n  /** Wrap error in CorePackageError if not already a package error */\n  private wrapError(error: unknown): CorePackageError {\n    // If already a package error (BaseError subclass), return as-is\n    if (error instanceof BaseError) {\n      return error as CorePackageError;\n    }\n    // Wrap other errors\n    return new CorePackageError(\n      `API request failed: ${error instanceof Error ? error.message : String(error)}`,\n      ERROR_CODES.NETWORK_ERROR,\n      { cause: error instanceof Error ? error : undefined }\n    );\n  }\n\n  /** Transform API response to flags/rules */\n  private transformResponse(data: ApiFetchResponse<FeatureFlagKey> | undefined): {\n    flags: FeatureFlag<FeatureFlagKey>[];\n    rules: FeatureFlagRule<FeatureFlagKey>[];\n  } {\n    const flags = data?.flags ?? [];\n    const rules = data?.rules ?? [];\n    this.log(`Fetched ${flags.length} flags and ${rules.length} rules from API`);\n    return { flags, rules };\n  }\n\n  /**\n   * Fetches flags and rules from the API endpoint using @plyaz/api services.\n   *\n   * @protected\n   * @returns Promise resolving to flags and rules data\n   */\n  protected async fetchData(): Promise<{\n    flags: FeatureFlag<FeatureFlagKey>[];\n    rules: FeatureFlagRule<FeatureFlagKey>[];\n  }> {\n    try {\n      const apiConfig = this.config as _ApiFeatureFlagConfig<FeatureFlagKey>;\n      const response = await apiEvaluateAllFlags<FeatureFlagKey>(\n        { context: apiConfig.context },\n        this.getServiceOptions()\n      );\n\n      if (!response.isSuccess) {\n        throw new CorePackageError(\n          `Failed to fetch feature flags: ${response.error?.message}`,\n          ERROR_CODES.NETWORK_ERROR\n        );\n      }\n\n      const data = response.data as unknown as ApiFetchResponse<FeatureFlagKey>;\n      return this.transformResponse(data);\n    } catch (error) {\n      throw this.wrapError(error);\n    }\n  }\n\n  /**\n   * Validates the API provider configuration.\n   *\n   * @private\n   */\n  private validateConfig(): void {\n    if (this.config.provider !== 'api') {\n      throw new CorePackageError(\n        'API provider requires provider to be set to \"api\"',\n        ERROR_CODES.CLIENT_INVALID_CONFIG\n      );\n    }\n\n    this.log('API provider configured');\n  }\n\n  /**\n   * Gets API provider status and configuration info.\n   */\n  getApiInfo(): {\n    hasApiClient: boolean;\n  } {\n    return {\n      hasApiClient: Boolean(this.apiClient),\n    };\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // Flag Management Operations (using @plyaz/api services)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Creates a new feature flag via API\n   */\n  async createFlag(data: CreateFlagRequest<FeatureFlagKey>): Promise<FeatureFlag<FeatureFlagKey>> {\n    const requestData = {\n      ...data,\n      isEnabled: data.isEnabled ?? true,\n      environment: data.environment ?? 'development',\n      description: data.description ?? '',\n    };\n    const response = await apiCreateFlag<FeatureFlagKey>(requestData, this.getServiceOptions());\n\n    if (!response.isSuccess) {\n      throw new CorePackageError(\n        `Failed to create flag: ${response.error?.message}`,\n        ERROR_CODES.CONTEXT_OPERATION_FAILED\n      );\n    }\n\n    await this.refresh();\n    return response.data as unknown as FeatureFlag<FeatureFlagKey>;\n  }\n\n  /**\n   * Updates a feature flag via API\n   */\n  async updateFlag(\n    key: FeatureFlagKey,\n    data: Partial<CreateFlagRequest<FeatureFlagKey>>\n  ): Promise<FeatureFlag<FeatureFlagKey>> {\n    const response = await apiUpdateFlag<FeatureFlagKey>({ key, data }, this.getServiceOptions());\n\n    if (!response.isSuccess) {\n      throw new CorePackageError(\n        `Failed to update flag: ${response.error?.message}`,\n        ERROR_CODES.CONTEXT_OPERATION_FAILED\n      );\n    }\n\n    await this.refresh();\n    return response.data as unknown as FeatureFlag<FeatureFlagKey>;\n  }\n\n  /**\n   * Deletes a feature flag via API\n   */\n  async deleteFlag(key: FeatureFlagKey): Promise<void> {\n    const response = await apiDeleteFlag<FeatureFlagKey>(key, this.getServiceOptions());\n\n    if (!response.isSuccess) {\n      throw new CorePackageError(\n        `Failed to delete flag: ${response.error?.message}`,\n        ERROR_CODES.CONTEXT_OPERATION_FAILED\n      );\n    }\n\n    await this.refresh();\n  }\n\n  /**\n   * Gets rules for a specific flag via API\n   */\n  async getRules(key: FeatureFlagKey): Promise<FeatureFlagRule<FeatureFlagKey>[]> {\n    const response = await apiFetchRules<FeatureFlagKey>(key, this.getServiceOptions());\n\n    if (!response.isSuccess) {\n      throw new CorePackageError(\n        `Failed to get rules: ${response.error?.message}`,\n        ERROR_CODES.CONTEXT_OPERATION_FAILED\n      );\n    }\n\n    return (response.data as unknown as { rules: FeatureFlagRule<FeatureFlagKey>[] })?.rules ?? [];\n  }\n\n  /**\n   * Gets all rules via API\n   * Note: This requires fetching rules for all flags individually or a dedicated endpoint\n   */\n  async getAllRules(): Promise<FeatureFlagRule<FeatureFlagKey>[]> {\n    // For now, return the rules from the engine (populated by fetchData)\n    // A dedicated API endpoint would be needed for a direct call\n    return this.engine.getRules();\n  }\n}\n","/**\n * Database Feature Flag Provider\n *\n * Database-based provider using DbService for persistent storage.\n * Requires Core.initialize() to be called first with database config.\n *\n * @fileoverview Database provider for feature flags\n */\n\nimport type {\n  FeatureFlag,\n  FeatureFlagRule,\n  FeatureFlagConfig,\n  FeatureFlagValue,\n  CreateFlagRequest,\n} from '@plyaz/types';\nimport { ERROR_CODES } from '@plyaz/types';\nimport { CorePackageError } from '@plyaz/errors';\nimport { FeatureFlagProvider } from '../provider';\nimport { DbService } from '../../../services/DbService';\nimport { FeatureFlagDatabaseRepository } from '@models/featureFlags';\nimport type { CoreFeatureFlagTableConfig } from '@plyaz/types/core';\nimport { PackageLogger } from '@plyaz/logger';\n\n/**\n * Database-based feature flag provider with @plyaz/db integration.\n *\n * Uses DbService (configured via Core.initialize()) for database operations.\n * No connection string needed here - DbService handles all connection details.\n *\n * @class DatabaseFeatureFlagProvider\n * @extends {FeatureFlagProvider}\n *\n * @example\n * ```typescript\n * // First: Initialize Core with database config\n * await Core.initialize({\n *   db: { adapter: 'sql', sql: { connectionString: '...' } }\n * });\n *\n * // Then: Create database provider\n * const provider = new DatabaseFeatureFlagProvider({\n *   provider: 'database',\n *   isCacheEnabled: true,\n *   cacheTtl: 300,\n * }, FEATURES);\n * await provider.initialize();\n * ```\n */\nexport class DatabaseFeatureFlagProvider<\n  FeatureFlagKey extends string,\n> extends FeatureFlagProvider<FeatureFlagKey> {\n  private _repository?: FeatureFlagDatabaseRepository<FeatureFlagKey>;\n  private _tableConfig?: Partial<CoreFeatureFlagTableConfig>;\n  private readonly logger = new PackageLogger({\n    packageName: 'core',\n    service: 'DatabaseFeatureFlagProvider',\n  });\n\n  /**\n   * Lazily get the repository, creating it on first access after DbService is initialized.\n   */\n  private get repository(): FeatureFlagDatabaseRepository<FeatureFlagKey> {\n    if (!this._repository) {\n      if (!DbService.isInitialized()) {\n        throw new CorePackageError(\n          'DbService not initialized. Call Core.initialize() with db config before accessing repository.',\n          ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n        );\n      }\n      const db = DbService.getInstance().getDatabase();\n      this._repository = new FeatureFlagDatabaseRepository<FeatureFlagKey>(db, this._tableConfig);\n    }\n    return this._repository;\n  }\n\n  /**\n   * Creates a new database feature flag provider.\n   *\n   * @param config - Provider configuration\n   * @param features - Default feature flag values\n   */\n  constructor(\n    config: FeatureFlagConfig<FeatureFlagKey>,\n    features: Record<FeatureFlagKey, FeatureFlagValue>\n  ) {\n    super(config, features);\n\n    // Build table config from databaseConfig (only include defined values)\n    // This prevents undefined values from overriding defaults in the repository\n    const tableConfig: Partial<CoreFeatureFlagTableConfig> | undefined = config.databaseConfig\n      ? (Object.fromEntries(\n          Object.entries({\n            flagsTable: config.databaseConfig.tableName,\n            rulesTable: config.databaseConfig.rulesTableName,\n            evaluationsTable: config.databaseConfig.evaluationsTableName,\n            overridesTable: config.databaseConfig.overridesTableName,\n            evaluationsSchema: config.databaseConfig.evaluationsSchema,\n          }).filter(([, value]) => value !== undefined)\n        ) as Partial<CoreFeatureFlagTableConfig>)\n      : undefined;\n\n    // Repository will be created lazily on first use after DbService is initialized\n    this._tableConfig = tableConfig;\n  }\n\n  /**\n   * Initialize database connection via DbService\n   */\n  async initialize(): Promise<void> {\n    // Ensure DbService is initialized (via Core.initialize())\n    if (!DbService.isInitialized()) {\n      throw new CorePackageError(\n        'DbService not initialized. Call Core.initialize() with db config before using database provider.',\n        ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n      );\n    }\n    this.logger.info('Database feature flag provider initializing');\n    await super.initialize();\n    this.logger.info('Database feature flag provider initialized');\n  }\n\n  /**\n   * Fetches flags and rules from the database.\n   *\n   * @protected\n   * @returns Promise with flags and rules from database\n   */\n  protected async fetchData(): Promise<{\n    flags: FeatureFlag<FeatureFlagKey>[];\n    rules: FeatureFlagRule<FeatureFlagKey>[];\n  }> {\n    try {\n      const [flags, rules] = await Promise.all([\n        this.repository.getAllFlags(),\n        this.repository.getAllRules(),\n      ]);\n\n      this.logger.debug(`Fetched ${flags.length} flags and ${rules.length} rules from database`);\n\n      return { flags, rules };\n    } catch (error) {\n      this.logger.error('Failed to fetch feature flag data from database', { error });\n      throw error;\n    }\n  }\n\n  /**\n   * Dispose resources\n   */\n  dispose(): void {\n    super.dispose();\n    // DbService cleanup is handled at application level, not per-provider\n  }\n\n  /**\n   * Gets database provider status and configuration info.\n   *\n   * @returns Database provider status information\n   */\n  getDatabaseInfo(): {\n    tableName: string;\n    isImplemented: boolean;\n    dbServiceInitialized: boolean;\n  } {\n    return {\n      tableName: this.config.databaseConfig?.tableName ?? 'feature_flags',\n      isImplemented: true,\n      dbServiceInitialized: DbService.isInitialized(),\n    };\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────\n  // CRUD Operations (supported by database provider)\n  // ─────────────────────────────────────────────────────────────────────────\n\n  /**\n   * Creates a new feature flag in the database.\n   *\n   * @param data - Flag creation data\n   * @returns The created feature flag\n   */\n  async createFlag(data: CreateFlagRequest<FeatureFlagKey>): Promise<FeatureFlag<FeatureFlagKey>> {\n    this.logger.debug('Creating feature flag', { key: data.key });\n    const flag = await this.repository.createFlag(data);\n    await this.refresh();\n    this.logger.info('Feature flag created', { key: data.key });\n    return flag;\n  }\n\n  /**\n   * Updates an existing feature flag in the database.\n   *\n   * @param key - Flag key to update\n   * @param data - Partial flag data to update\n   * @returns The updated feature flag\n   */\n  async updateFlag(\n    key: FeatureFlagKey,\n    data: Partial<CreateFlagRequest<FeatureFlagKey>>\n  ): Promise<FeatureFlag<FeatureFlagKey>> {\n    this.logger.debug('Updating feature flag', { key });\n    const flag = await this.repository.updateFlag(key, data);\n    await this.refresh();\n    this.logger.info('Feature flag updated', { key });\n    return flag;\n  }\n\n  /**\n   * Deletes a feature flag from the database.\n   *\n   * @param key - Flag key to delete\n   */\n  async deleteFlag(key: FeatureFlagKey): Promise<void> {\n    this.logger.debug('Deleting feature flag', { key });\n    await this.repository.deleteFlag(key);\n    await this.refresh();\n    this.logger.info('Feature flag deleted', { key });\n  }\n\n  /**\n   * Gets all rules for a specific flag.\n   *\n   * @param key - Flag key to get rules for\n   * @returns Array of rules for the flag\n   */\n  async getRules(key: FeatureFlagKey): Promise<FeatureFlagRule<FeatureFlagKey>[]> {\n    this.logger.debug('Getting rules for flag', { key });\n    return this.repository.getFlagRules(key);\n  }\n\n  /**\n   * Gets all enabled rules across all flags.\n   *\n   * @returns Array of all enabled rules\n   */\n  async getAllRules(): Promise<FeatureFlagRule<FeatureFlagKey>[]> {\n    this.logger.debug('Getting all rules');\n    return this.repository.getAllRules();\n  }\n}\n","/**\n * Feature Flag Service Factory\n *\n * Factory class for creating feature flag services with configured providers.\n *\n * @fileoverview Service factory for feature flag system\n * @version 1.0.0\n */\n\nimport type {\n  FeatureFlagConfig,\n  FeatureFlagProvider,\n  FeatureFlagValue,\n  FeatureFlagProviderType,\n} from '@plyaz/types/features';\nimport { ERROR_CODES } from '@plyaz/types';\nimport { CorePackageError } from '@plyaz/errors';\nimport { FeatureFlagService } from '../service';\nimport { MemoryFeatureFlagProvider } from './memory';\nimport { FileFeatureFlagProvider } from './file';\nimport { RedisFeatureFlagProvider } from './redis';\nimport { ApiFeatureFlagProvider } from './api';\nimport { DatabaseFeatureFlagProvider } from './database';\nimport { FEATURE_FLAG_CACHE_TTL_DEFAULT, FEATURE_FLAG_FILE_PATHS } from '@plyaz/config';\n\n/**\n * Registry of available provider classes.\n * Note: Some providers (like ApiFeatureFlagProvider) have extended config requirements.\n */\nconst PROVIDER_REGISTRY = {\n  memory: MemoryFeatureFlagProvider,\n  file: FileFeatureFlagProvider,\n  redis: RedisFeatureFlagProvider,\n  api: ApiFeatureFlagProvider,\n  database: DatabaseFeatureFlagProvider,\n} as const;\n\n/**\n * Feature flag service factory for creating service instances with providers.\n *\n * @class FeatureFlagServiceFactory\n *\n * @example\n * ```typescript\n * // Create and initialize service\n * const service = await FeatureFlagServiceFactory.createAndInitialize({\n *   provider: 'database',\n *   isCacheEnabled: true,\n *   cacheTtl: 300,\n * }, FEATURES);\n *\n * // Use the service\n * const isEnabled = await service.isEnabled('MY_FEATURE');\n * await service.createFlag({ key: 'NEW', value: true, name: 'New Flag' });\n * ```\n */\nexport class FeatureFlagServiceFactory {\n  /**\n   * Creates a new feature flag service with the configured provider.\n   *\n   * @param config - Provider configuration\n   * @param features - Record of feature flag keys to their default values\n   * @returns Configured service instance (not yet initialized)\n   */\n  static createService<K extends string>(\n    config: FeatureFlagConfig<K>,\n    features: Record<K, FeatureFlagValue>\n  ): FeatureFlagService<K> {\n    const provider = FeatureFlagProviderFactory.create(config, features);\n    return new FeatureFlagService(provider, config);\n  }\n\n  /**\n   * Creates and initializes a feature flag service.\n   *\n   * @param config - Provider configuration\n   * @param features - Record of feature flag keys to their default values\n   * @returns Promise resolving to initialized service instance\n   */\n  static async createAndInitialize<K extends string>(\n    config: FeatureFlagConfig<K>,\n    features: Record<K, FeatureFlagValue>\n  ): Promise<FeatureFlagService<K>> {\n    const service = this.createService(config, features);\n    await service.initialize();\n    return service;\n  }\n\n  /**\n   * Creates a default service with memory provider.\n   *\n   * @param features - Record of feature flag keys to their default values\n   * @param overrides - Optional configuration overrides\n   * @returns Service instance\n   */\n  static createDefaultService<K extends string>(\n    features: Record<K, FeatureFlagValue>,\n    overrides?: Partial<FeatureFlagConfig<K>>\n  ): FeatureFlagService<K> {\n    const config: FeatureFlagConfig<K> = {\n      provider: 'memory',\n      isCacheEnabled: true,\n      cacheTtl: FEATURE_FLAG_CACHE_TTL_DEFAULT,\n      refreshInterval: 0,\n      isLoggingEnabled: false,\n      shouldFallbackToDefaults: true,\n      ...overrides,\n    };\n    return this.createService(config, features);\n  }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Provider Factory (internal use, or for advanced use cases)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Feature flag provider factory for creating provider instances directly.\n * For most use cases, use FeatureFlagServiceFactory instead.\n *\n * @class FeatureFlagProviderFactory\n */\nexport class FeatureFlagProviderFactory {\n  /**\n   * Creates a new feature flag provider instance based on configuration.\n   *\n   * @param config - Provider configuration\n   * @param features - Record of feature flag keys to their default values\n   * @returns Configured provider instance\n   * @throws Error if provider type is unsupported or configuration is invalid\n   */\n  static create<FeatureFlagKey extends string>(\n    config: FeatureFlagConfig<FeatureFlagKey>,\n    features: Record<FeatureFlagKey, FeatureFlagValue>\n  ): FeatureFlagProvider<FeatureFlagKey> {\n    this.validateConfig<FeatureFlagKey>(config);\n\n    const ProviderClass = PROVIDER_REGISTRY[config.provider];\n    if (!ProviderClass) {\n      throw new CorePackageError(\n        `Unsupported provider type: ${config.provider}. Supported: ${this.getSupportedProviders().join(', ')}`,\n        ERROR_CODES.CLIENT_INVALID_CONFIG\n      );\n    }\n\n    try {\n      // Cast to any to allow provider-specific config extensions (e.g., ApiFeatureFlagConfig)\n      return new (ProviderClass as new (\n        config: FeatureFlagConfig<FeatureFlagKey>,\n        features: Record<FeatureFlagKey, FeatureFlagValue>\n      ) => FeatureFlagProvider<FeatureFlagKey>)(config, features);\n    } catch (error) {\n      throw new CorePackageError(\n        `Failed to create ${config.provider} provider: ${error instanceof Error ? error.message : 'Unknown error'}`,\n        ERROR_CODES.CLIENT_INITIALIZATION_FAILED\n      );\n    }\n  }\n\n  /**\n   * Creates a provider with automatic initialization.\n   *\n   * @param config - Provider configuration\n   * @param features - Record of feature flag keys to their default values\n   * @returns Promise resolving to initialized provider instance\n   */\n  static async createAndInitialize<FeatureFlagKey extends string>(\n    config: FeatureFlagConfig<FeatureFlagKey>,\n    features: Record<FeatureFlagKey, FeatureFlagValue>\n  ): Promise<FeatureFlagProvider<FeatureFlagKey>> {\n    const provider = this.create(config, features);\n    await provider.initialize();\n    return provider;\n  }\n\n  /**\n   * Gets a list of all supported provider types.\n   *\n   * @returns Array of supported provider names\n   */\n  static getSupportedProviders(): FeatureFlagProviderType[] {\n    return Object.keys(PROVIDER_REGISTRY) as FeatureFlagProviderType[];\n  }\n\n  /**\n   * Checks if a provider type is supported.\n   *\n   * @param providerType - Provider type to check\n   * @returns True if provider type is supported\n   */\n  static isProviderSupported(providerType: string): providerType is FeatureFlagProviderType {\n    return providerType in PROVIDER_REGISTRY;\n  }\n\n  /**\n   * Gets provider information including implementation status.\n   *\n   * @returns Record of provider information\n   */\n  static getProvidersInfo(): Record<\n    FeatureFlagProviderType,\n    {\n      name: string;\n      isImplemented: boolean;\n      description: string;\n      requirements?: string[];\n    }\n  > {\n    return {\n      memory: {\n        name: 'Memory Provider',\n        isImplemented: true,\n        description: 'In-memory provider using FEATURES constant',\n      },\n      file: {\n        name: 'File Provider',\n        isImplemented: true,\n        description: 'File-based provider supporting JSON and YAML formats',\n      },\n      redis: {\n        name: 'Redis Provider',\n        isImplemented: true,\n        description: 'Redis-based provider for distributed caching',\n        requirements: ['ioredis or redis package'],\n      },\n      api: {\n        name: 'API Provider',\n        isImplemented: false,\n        description: 'Remote API provider for centralized flag management',\n        requirements: ['@plyaz/api package', 'API endpoints implementation'],\n      },\n      database: {\n        name: 'Database Provider',\n        isImplemented: false,\n        description: 'Database provider for persistent flag storage',\n        requirements: ['@plyaz/db package', 'Database schema setup'],\n      },\n    } satisfies Record<\n      FeatureFlagProviderType,\n      {\n        name: string;\n        isImplemented: boolean;\n        description: string;\n        requirements?: string[];\n      }\n    >;\n  }\n\n  /**\n   * Creates a default provider.\n   * Uses file provider if features are not provided, memory provider otherwise.\n   *\n   * @param features - Record of feature flag keys to their default values (optional)\n   * @param overrides - Optional configuration overrides\n   * @returns Provider instance\n   */\n  static createDefault<FeatureFlagKey extends string>(\n    features?: Record<FeatureFlagKey, FeatureFlagValue>,\n    overrides?: Partial<FeatureFlagConfig<FeatureFlagKey>>\n  ): FeatureFlagProvider<FeatureFlagKey> {\n    // If features are not provided, use file provider as default\n    const provider = features ? 'memory' : 'file';\n\n    const defaultConfig: FeatureFlagConfig<FeatureFlagKey> = {\n      provider,\n      isCacheEnabled: true,\n      cacheTtl: FEATURE_FLAG_CACHE_TTL_DEFAULT,\n      refreshInterval: 0, // No auto-refresh\n      isLoggingEnabled: false,\n      shouldFallbackToDefaults: true,\n      ...overrides,\n    };\n\n    // Add default file config if using file provider and no fileConfig provided\n    if (defaultConfig.provider === 'file' && !defaultConfig.fileConfig) {\n      defaultConfig.fileConfig = {\n        filePath: FEATURE_FLAG_FILE_PATHS.DEFAULT,\n        format: 'json',\n        shouldWatchForChanges: false,\n      };\n    }\n\n    return this.create(defaultConfig, features ?? ({} as Record<FeatureFlagKey, FeatureFlagValue>));\n  }\n\n  /**\n   * Type guard to check if a provider supports feature syncing.\n   *\n   * @param provider - The provider instance to check\n   * @returns True if provider has syncFeatures method\n   */\n  static isSyncableProvider<FeatureFlagKey extends string>(\n    provider: FeatureFlagProvider<FeatureFlagKey>\n  ): provider is FeatureFlagProvider<FeatureFlagKey> &\n    Required<Pick<FeatureFlagProvider<FeatureFlagKey>, 'syncFeatures'>> {\n    return 'syncFeatures' in provider && typeof provider.syncFeatures === 'function';\n  }\n\n  /**\n   * Updates features on a provider if it supports the syncFeatures method.\n   * This is useful for providers like MemoryProvider that can update their features at runtime.\n   *\n   * @param provider - The provider instance\n   * @param newFeatures - New features to sync\n   * @returns Promise that resolves when sync is complete\n   * @throws Error if provider doesn't support feature syncing\n   */\n  static async syncFeatures<FeatureFlagKey extends string>(\n    provider: FeatureFlagProvider<FeatureFlagKey>,\n    newFeatures: Record<FeatureFlagKey, FeatureFlagValue>\n  ): Promise<void> {\n    if (this.isSyncableProvider(provider)) {\n      await provider.syncFeatures(newFeatures);\n    } else {\n      throw new CorePackageError(\n        'Provider type does not support feature syncing. Only MemoryProvider and FileProvider support this.',\n        ERROR_CODES.PROVIDER_NOT_IMPLEMENTED\n      );\n    }\n  }\n\n  /**\n   * Checks if a provider supports feature syncing.\n   *\n   * @param provider - The provider instance to check\n   * @returns True if provider supports syncFeatures method\n   */\n  static supportsFeaturesSync<FeatureFlagKey extends string>(\n    provider: FeatureFlagProvider<FeatureFlagKey>\n  ): boolean {\n    return this.isSyncableProvider(provider);\n  }\n\n  /**\n   * Validates provider configuration before instantiation.\n   *\n   * @private\n   * @param config - Configuration to validate\n   * @throws Error if configuration is invalid\n   */\n  public static validateConfig<FeatureFlagKey extends string>(\n    config: FeatureFlagConfig<FeatureFlagKey>\n  ): void {\n    if (!config) {\n      throw new CorePackageError(\n        'Provider configuration is required',\n        ERROR_CODES.CLIENT_INVALID_CONFIG\n      );\n    }\n\n    if (!config.provider) {\n      throw new CorePackageError(\n        'Provider type is required in configuration',\n        ERROR_CODES.CLIENT_INVALID_CONFIG\n      );\n    }\n\n    if (!this.isProviderSupported(config.provider)) {\n      throw new CorePackageError(\n        `Unsupported provider type: ${config.provider}. Supported: ${this.getSupportedProviders().join(', ')}`,\n        ERROR_CODES.CLIENT_INVALID_CONFIG\n      );\n    }\n\n    // Validate cache configuration\n    if (config.isCacheEnabled && config.cacheTtl <= 0) {\n      throw new CorePackageError(\n        'Cache TTL must be greater than 0 when caching is enabled',\n        ERROR_CODES.CLIENT_INVALID_CONFIG\n      );\n    }\n\n    // Validate refresh interval\n    if (config.refreshInterval < 0) {\n      throw new CorePackageError(\n        'Refresh interval cannot be negative',\n        ERROR_CODES.CLIENT_INVALID_CONFIG\n      );\n    }\n\n    // Provider-specific validation\n    this.validateProviderSpecificConfig(config);\n  }\n\n  /**\n   * Validates provider-specific configuration requirements.\n   *\n   * @private\n   * @param config - Configuration to validate\n   * @throws Error if provider-specific configuration is invalid\n   */\n  private static validateProviderSpecificConfig<FeatureFlagKey extends string>(\n    config: FeatureFlagConfig<FeatureFlagKey>\n  ): void {\n    const validationMap = {\n      file: () => this.validateFileConfig<FeatureFlagKey>(config),\n      redis: () => this.validateRedisConfig<FeatureFlagKey>(config),\n      api: () => this.validateApiConfig<FeatureFlagKey>(config),\n      database: () => this.validateDatabaseConfig<FeatureFlagKey>(config),\n      memory: () => {}, // Memory provider has no additional requirements\n    } as const satisfies Record<string, () => void>;\n\n    const validator = validationMap[config.provider as keyof typeof validationMap];\n    if (!validator) {\n      throw new CorePackageError(\n        `Unknown provider type: ${config.provider}`,\n        ERROR_CODES.CLIENT_INVALID_CONFIG\n      );\n    }\n\n    validator();\n  }\n\n  private static validateFileConfig<FeatureFlagKey extends string>(\n    config: FeatureFlagConfig<FeatureFlagKey>\n  ): void {\n    // File config is optional, will use defaults if not provided\n    if (config.fileConfig) {\n      const { format } = config.fileConfig;\n      if (format && !['json', 'yaml'].includes(format)) {\n        throw new CorePackageError(\n          'File format must be either \"json\" or \"yaml\"',\n          ERROR_CODES.CLIENT_INVALID_CONFIG\n        );\n      }\n    }\n  }\n\n  private static validateRedisConfig<FeatureFlagKey extends string>(\n    config: FeatureFlagConfig<FeatureFlagKey>\n  ): void {\n    if (!config.redisConfig) {\n      throw new CorePackageError(\n        'Redis configuration is required for Redis provider',\n        ERROR_CODES.CLIENT_INVALID_CONFIG\n      );\n    }\n  }\n\n  private static validateApiConfig<FeatureFlagKey extends string>(\n    config: FeatureFlagConfig<FeatureFlagKey>\n  ): void {\n    if (!config.apiEndpoint) {\n      throw new CorePackageError(\n        'API endpoint is required for API provider',\n        ERROR_CODES.CLIENT_INVALID_CONFIG\n      );\n    }\n  }\n\n  private static validateDatabaseConfig<FeatureFlagKey extends string>(\n    config: FeatureFlagConfig<FeatureFlagKey>\n  ): void {\n    if (!config.databaseConfig) {\n      throw new CorePackageError(\n        'Database configuration is required for database provider',\n        ERROR_CODES.CLIENT_INVALID_CONFIG\n      );\n    }\n  }\n}\n","/**\n * Feature Flag Module - Shared Service Factory\n *\n * Provides the service factory used by the NestJS FeatureFlagModule.\n * For NestJS usage, import from '@plyaz/core/backend/featureFlags'.\n */\n\nimport type { FeatureFlagConfig } from '@plyaz/types';\nimport { ERROR_CODES } from '@plyaz/types';\nimport type { CoreFeatureFlagModuleConfig } from '@plyaz/types/core';\nimport { FeatureFlagServiceFactory } from './providers/factory';\nimport type { FeatureFlagService } from './service';\nimport type { FeatureFlagKey } from '../types';\nimport { FEATURES, FEATURE_FLAG_CACHE_TTL_DEFAULT } from '@plyaz/config';\nimport { CorePackageError } from '@plyaz/errors';\n\nconst defaultConfig: CoreFeatureFlagModuleConfig = {\n  provider: 'memory',\n  refreshInterval: 0,\n  loggingEnabled: false,\n  cache: {\n    enabled: true,\n    ttl: FEATURE_FLAG_CACHE_TTL_DEFAULT,\n  },\n};\n\ntype ProviderConfig = Partial<FeatureFlagConfig<FeatureFlagKey>>;\n\n/** Build base config shared by all providers */\nfunction buildBaseConfig(config: CoreFeatureFlagModuleConfig): ProviderConfig {\n  return {\n    provider: config.provider ?? 'memory',\n    isCacheEnabled: config.cache?.enabled ?? true,\n    cacheTtl: config.cache?.ttl ?? FEATURE_FLAG_CACHE_TTL_DEFAULT,\n    refreshInterval: config.refreshInterval ?? 0,\n    isLoggingEnabled: config.loggingEnabled ?? false,\n  };\n}\n\n/** Build database provider config */\nfunction buildDatabaseProviderConfig(config: CoreFeatureFlagModuleConfig): ProviderConfig {\n  return {\n    databaseConfig: {\n      connectionString: '', // Not needed, DbService is already initialized\n      tableName: config.db?.tableName ?? 'feature_flags',\n      rulesTableName: config.db?.rulesTableName,\n      evaluationsTableName: config.db?.evaluationsTableName,\n      overridesTableName: config.db?.overridesTableName,\n      evaluationsSchema: config.db?.evaluationsSchema,\n    },\n  };\n}\n\n/** Build redis provider config */\nfunction buildRedisProviderConfig(config: CoreFeatureFlagModuleConfig): ProviderConfig {\n  if (!config.redis?.url) {\n    throw new CorePackageError(\n      'Redis URL is required when using redis provider. Provide redis: { url: \"redis://...\" }',\n      ERROR_CODES.CORE_CONFIGURATION_INVALID\n    );\n  }\n  return {\n    redisConfig: {\n      url: config.redis.url,\n      keyPrefix: config.redis.keyPrefix ?? 'feature_flags:',\n    },\n  };\n}\n\n/** Build API provider config */\n// eslint-disable-next-line complexity\nfunction buildApiProviderConfig(config: CoreFeatureFlagModuleConfig): ProviderConfig {\n  if (!config.api?.client && !config.api?.clientConfig?.baseURL) {\n    throw new CorePackageError(\n      'API provider requires either api.client (ApiClientService instance) or api.clientConfig.baseURL'\n    );\n  }\n  return {\n    apiEndpoint: config.api?.clientConfig?.baseURL ?? 'injected-client',\n  };\n}\n\n/** Build file provider config */\nfunction buildFileProviderConfig(config: CoreFeatureFlagModuleConfig): ProviderConfig {\n  return {\n    fileConfig: {\n      filePath: config.file?.path ?? './feature-flags.json',\n      format: config.file?.format ?? 'json',\n      shouldWatchForChanges: config.file?.watch ?? false,\n    },\n  };\n}\n\n/** Provider config builders map */\nconst providerConfigBuilders: Record<\n  string,\n  (config: CoreFeatureFlagModuleConfig) => ProviderConfig\n> = {\n  database: buildDatabaseProviderConfig,\n  redis: buildRedisProviderConfig,\n  api: buildApiProviderConfig,\n  file: buildFileProviderConfig,\n};\n\nfunction toServiceConfig(\n  config: CoreFeatureFlagModuleConfig\n): Partial<FeatureFlagConfig<FeatureFlagKey>> {\n  const baseConfig = buildBaseConfig(config);\n  const providerBuilder = providerConfigBuilders[config.provider ?? 'memory'];\n\n  if (!providerBuilder) {\n    return baseConfig;\n  }\n\n  return { ...baseConfig, ...providerBuilder(config) };\n}\n\n/**\n * Injection token for NestJS DI\n */\nexport const FEATURE_FLAG_SERVICE = 'FEATURE_FLAG_SERVICE';\n\n/**\n * Creates the FeatureFlagService\n * Used by NestJS FeatureFlagModule internally\n */\nexport async function createFeatureFlagService(\n  config: CoreFeatureFlagModuleConfig = defaultConfig\n): Promise<FeatureFlagService<FeatureFlagKey>> {\n  const serviceConfig = toServiceConfig(config);\n  return FeatureFlagServiceFactory.createAndInitialize(\n    serviceConfig as FeatureFlagConfig<FeatureFlagKey>,\n    FEATURES\n  );\n}\n\n// Re-export service for direct access\nexport { FeatureFlagService } from './service';\n","import { SetMetadata } from '@nestjs/common';\nimport type { FeatureFlagValue } from '@plyaz/types';\nimport type { FeatureFlagKey } from '@domain/types';\nimport { FEATURE_FLAG_METADATA } from '@plyaz/types';\n\n/**\n * Decorator to require a feature flag to be in a specific state\n * before allowing access to the route handler.\n *\n * @param key - The feature flag key\n * @param expected - Expected flag value (default: true)\n */\nexport function FeatureFlag(\n  key: FeatureFlagKey,\n  expected: FeatureFlagValue = true\n): MethodDecorator {\n  return SetMetadata(FEATURE_FLAG_METADATA.FLAG_CHECK, { key, expected }) as MethodDecorator;\n}\n","import type { FeatureFlagKey } from '@domain/types';\nimport { FeatureFlag } from './feature-flag.decorator';\n\n/**\n * Shortcut decorator to require a feature flag to be disabled (false).\n */\nexport function FeatureDisabled(key: FeatureFlagKey): MethodDecorator {\n  return FeatureFlag(key, false);\n}\n","import type { FeatureFlagKey } from '@domain/types';\nimport { FeatureFlag } from './feature-flag.decorator';\n\n/**\n * FeatureEnabled decorator\n * Shorthand for enabling a feature flag with `true`\n */\nexport function FeatureEnabled(key: FeatureFlagKey): MethodDecorator {\n  return FeatureFlag(key, true);\n}\n\n// Ensure TypeScript treats this as a module\nexport {};\n","import { Injectable, CanActivate, ExecutionContext, Inject } from '@nestjs/common';\nimport { PackageLogger } from '@plyaz/logger';\nimport { Reflector } from '@nestjs/core';\nimport {\n  type FeatureFlagValue,\n  type FeatureFlagEvaluation,\n  ERROR_CODES,\n  HTTP_STATUS,\n  FEATURE_FLAG_METADATA,\n} from '@plyaz/types';\nimport type { FeatureFlagKey } from '@domain/types';\nimport { FEATURE_FLAG_SERVICE, FeatureFlagService } from '@domain/featureFlags';\nimport { BaseError } from '@plyaz/errors';\n\n/**\n * Guard that ensures a feature flag is in the expected state\n * before allowing access to a route handler.\n *\n * @example\n * ```typescript\n * @Controller('premium')\n * @UseGuards(FeatureFlagGuard)\n * export class PremiumController {\n *   @Get()\n *   @FeatureEnabled('PREMIUM_FEATURE')\n *   getPremiumData() {\n *     // Only accessible if PREMIUM_FEATURE is enabled\n *   }\n * }\n * ```\n */\n@Injectable()\nexport class FeatureFlagGuard implements CanActivate {\n  private readonly logger = new PackageLogger({\n    packageName: 'core',\n    service: 'FeatureFlagGuard',\n  });\n\n  constructor(\n    private readonly reflector: Reflector,\n    @Inject(FEATURE_FLAG_SERVICE)\n    private readonly featureFlagService: FeatureFlagService<FeatureFlagKey>\n  ) {}\n\n  async canActivate(context: ExecutionContext): Promise<boolean> {\n    // Get metadata set by @FeatureFlag decorator\n    const meta = this.reflector.get<{ key: FeatureFlagKey; expected: FeatureFlagValue }>(\n      FEATURE_FLAG_METADATA.FLAG_CHECK,\n      context.getHandler()\n    );\n\n    if (!meta) return true; // No flag restriction → allow request\n\n    const { key, expected } = meta;\n\n    // Evaluate the feature flag state using domain service\n    const evaluation: FeatureFlagEvaluation<FeatureFlagKey> =\n      await this.featureFlagService.getFlag(key);\n\n    const actual = evaluation.value ?? evaluation.isEnabled;\n\n    if (!this.matches(expected, actual)) {\n      this.logger.info(\n        `FeatureFlagGuard denied: key=${key}, expected=${expected}, actual=${actual}`\n      );\n      throw new BaseError(\n        ERROR_CODES.AUTH_FORBIDDEN,\n        HTTP_STATUS.FORBIDDEN,\n        `Feature ${key} not in required state`\n      );\n    }\n\n    return true;\n  }\n\n  /**\n   * Compare expected vs actual values.\n   */\n  private matches(expected: FeatureFlagValue, actual: unknown): boolean {\n    if (expected === undefined || expected === null) return Boolean(actual);\n\n    if (typeof actual !== 'object' || actual === null) {\n      return String(actual) === String(expected);\n    }\n\n    // Simple deep comparison for objects\n    return JSON.stringify(actual) === JSON.stringify(expected);\n  }\n}\n","import { Injectable, NestMiddleware, Inject } from '@nestjs/common';\nimport { PackageLogger } from '@plyaz/logger';\nimport { BaseError } from '@plyaz/errors';\nimport { FEATURE_FLAG_SERVICE, FeatureFlagService } from '@domain/featureFlags';\nimport type { FeatureFlagKey } from '@domain/types';\nimport type { CoreFeatureFlagRequest } from '@plyaz/types/core';\nimport { FEATURES, HTTP_STATUS } from '@plyaz/config';\nimport { ERROR_CODES } from '@plyaz/types';\n\n// Type guard Function\nfunction isFeatureFlagKey(value: string): value is FeatureFlagKey {\n  return Object.keys(FEATURES).includes(value);\n}\n\n/**\n * FeatureFlagMiddleware - Evaluates and attaches feature flags to every request\n *\n * @description This middleware runs early in the request lifecycle to evaluate feature flags\n * and attach them to the request object. It allows controllers and services to access\n * pre-evaluated flags without making additional service calls, improving performance.\n *\n * **Execution Flow:**\n * 1. Middleware executes first for every incoming HTTP request\n * 2. Extracts flag key from query params, headers, or uses default\n * 3. Calls FeatureFlagService to evaluate the specified flag\n * 4. Attaches evaluated flags to `req.featureFlags` object\n * 5. Passes control to next middleware/interceptor/controller\n *\n * **Flag Key Priority:**\n * 1. Query parameter: `?flag=FEATURE_NAME`\n * 2. HTTP header: `X-Feature-Flag: FEATURE_NAME`\n * 3. Default: `AUTH_GOOGLE`\n *\n * **Use Cases:**\n * - Global feature flag evaluation for all requests\n * - Performance optimization (evaluate once, use many times)\n * - Request-scoped feature flag context\n * - Dynamic flag selection via client parameters\n *\n * @example Setup - Register middleware globally\n * ```typescript\n * // app.module.ts\n * import { MiddlewareConsumer, Module } from '@nestjs/common';\n * import { FeatureFlagMiddleware } from './middleware/feature-flag-middleware';\n *\n * @Module({\n *   // ... other config\n * })\n * export class AppModule {\n *   configure(consumer: MiddlewareConsumer) {\n *     consumer\n *       .apply(FeatureFlagMiddleware)\n *       .forRoutes('*'); // Apply to all routes\n *   }\n * }\n * ```\n *\n * @example Client Usage - Query Parameter\n * ```bash\n * # Client specifies which flag to evaluate\n * curl \"https://api.example.com/users?flag=PREMIUM_FEATURES\"\n *\n * # Middleware evaluates PREMIUM_FEATURES and attaches to request\n * # req.featureFlags = { PREMIUM_FEATURES: true }\n * ```\n *\n * @example Client Usage - HTTP Header\n * ```bash\n * # Alternative: Use HTTP header\n * curl -H \"X-Feature-Flag: NEW_DASHBOARD\" \"https://api.example.com/dashboard\"\n *\n * # Middleware evaluates NEW_DASHBOARD\n * # req.featureFlags = { NEW_DASHBOARD: false }\n * ```\n *\n * @example Controller Access - Use pre-evaluated flags\n * ```typescript\n * @Controller('api')\n * export class ApiController {\n *   @Get('dashboard')\n *   async getDashboard(@Req() req: Request) {\n *     // Access pre-evaluated flags (no service call needed)\n *     const flags = req.featureFlags;\n *\n *     if (flags?.NEW_DASHBOARD) {\n *       return this.dashboardService.getNewDashboard();\n *     } else {\n *       return this.dashboardService.getLegacyDashboard();\n *     }\n *   }\n * }\n * ```\n *\n * @example Service Access - Inject flags into services\n * ```typescript\n * @Injectable()\n * export class UserService {\n *   async getUsers(@Req() req: Request) {\n *     const flags = req.featureFlags;\n *\n *     // Use flags to modify service behavior\n *     if (flags?.ENHANCED_USER_DATA) {\n *       return this.getUsersWithEnhancedData();\n *     }\n *\n *     return this.getBasicUsers();\n *   }\n * }\n * ```\n *\n * @example Error Handling - Invalid flag keys\n * ```typescript\n * // Request with invalid flag:\n * // GET /api/users?flag=INVALID_FLAG\n * //\n * // Response:\n * // HTTP 404 Not Found\n * // {\n * //   \"error\": \"Invalid feature flag key: INVALID_FLAG\",\n * //   \"statusCode\": 404\n * // }\n * ```\n *\n * @example Multiple Flags - Accumulate flags across requests\n * ```typescript\n * // First request adds AUTH_GOOGLE: true\n * // Second request adds PREMIUM_FEATURES: false\n * // req.featureFlags = {\n * //   AUTH_GOOGLE: true,\n * //   PREMIUM_FEATURES: false\n * // }\n * ```\n */\n@Injectable()\nexport class FeatureFlagMiddleware implements NestMiddleware {\n  private readonly logger = new PackageLogger({\n    packageName: 'core',\n    service: 'FeatureFlagMiddleware',\n  });\n\n  constructor(\n    @Inject(FEATURE_FLAG_SERVICE)\n    private readonly featureFlagService: FeatureFlagService<FeatureFlagKey>\n  ) {}\n\n  /**\n   * Main middleware execution method\n   *\n   * @description Processes incoming requests to evaluate and attach feature flags.\n   * Handles flag key extraction from multiple sources and graceful error handling.\n   *\n   * @param {CoreFeatureFlagRequest} req - Express request object with feature flag extensions\n   * @param {unknown} res - Express response object (not used in this middleware)\n   * @param {Function} next - Next middleware function in the chain\n   *\n   * @throws {BaseError} When flag key is invalid or evaluation fails\n   *\n   * @example Request Processing Flow\n   * ```typescript\n   * // 1. Extract flag key from request\n   * const flagKey = req.query.flag || req.headers['x-feature-flag'] || 'AUTH_GOOGLE';\n   *\n   * // 2. Validate flag key exists in system\n   * if (!isFeatureFlagKey(flagKey)) {\n   *   throw new Error('Invalid flag key');\n   * }\n   *\n   * // 3. Evaluate flag using service\n   * const evaluation = await this.featureFlagService.evaluateFlag(flagKey);\n   *\n   * // 4. Attach to request object\n   * req.featureFlags = { [flagKey]: evaluation.isEnabled };\n   *\n   * // 5. Continue to next middleware\n   * next();\n   * ```\n   */\n  // Use a simple next type to avoid conflicts with differing framework types across environments\n  async use(\n    req: CoreFeatureFlagRequest,\n    res: unknown,\n    next: (...args: unknown[]) => void\n  ): Promise<void> {\n    try {\n      const flagKey =\n        // Prefer query param -> header -> default\n        (req.query instanceof URLSearchParams\n          ? req.query.get('flag')\n          : (req.query?.['flag'] as string | undefined)) ??\n        (req.headers?.['x-feature-flag'] as string | undefined) ??\n        'AUTH_GOOGLE';\n\n      if (!isFeatureFlagKey(flagKey)) {\n        throw new BaseError(\n          ERROR_CODES.RETRY_FAILED,\n          HTTP_STATUS.NOT_FOUND,\n          `Invalid feature flag key: ${flagKey}`\n        );\n      }\n\n      const flagEvaluation = await this.featureFlagService.getFlag(flagKey);\n      // Attach dynamically evaluated flag\n      req.featureFlags = {\n        ...req.featureFlags,\n        [flagKey]: flagEvaluation.isEnabled,\n      };\n\n      this.logger.debug(`Feature flags attached to request: ${JSON.stringify(req.featureFlags)}`);\n      next();\n    } catch (error) {\n      this.logger.error('Error evaluating feature flags', { error });\n      throw new BaseError(\n        ERROR_CODES.RETRY_FAILED,\n        HTTP_STATUS.SERVICE_UNAVAILABLE,\n        'Failed to evaluate feature flag'\n      );\n    }\n  }\n}\n","import { Injectable, NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';\nimport { PackageLogger } from '@plyaz/logger';\nimport { Observable, tap } from 'rxjs';\n\n/**\n * Interceptor for feature flag usage analytics.\n *\n * FLOW:\n * 1. Runs AFTER middleware attaches feature flags.\n * 2. Dynamically tracks which feature flags are enabled for this request.\n * 3. Can send metrics to analytics service or database.\n * 4. Calls the next handler (controller/service).\n * 5. After controller/service finishes, optionally track request completion.\n */\n\n@Injectable()\nexport class FeatureFlagLoggingInterceptor implements NestInterceptor {\n  private readonly logger = new PackageLogger({\n    packageName: 'core',\n    service: 'FeatureFlagLoggingInterceptor',\n  });\n\n  intercept(context: ExecutionContext, next: CallHandler): Observable<unknown> {\n    const request = context.switchToHttp().getRequest();\n    const path = request.url;\n    const flags = request.featureFlags ?? {};\n\n    // Dynamically track feature flag usage\n    const featureToTrack = request.headers?.['x-feature-flag'];\n\n    if (featureToTrack && flags[featureToTrack]) {\n      this.trackFeatureUsage(featureToTrack, path);\n    } else {\n      // Fallback: track all enabled flags\n      for (const [flag, enabled] of Object.entries(flags)) {\n        if (enabled) this.trackFeatureUsage(flag, path);\n      }\n    }\n\n    // Proceed to controller/service\n    return next.handle().pipe(\n      tap(() => {\n        // Optional: track request completion\n        this.logger.info(`Completed request: ${path}`);\n      })\n    );\n  }\n\n  private trackFeatureUsage(flag: string, path: string): void {\n    // TODO: Replace this with real analytics integration\n    this.logger.info(`Feature \"${flag}\" used on endpoint \"${path}\"`);\n  }\n}\n","import { Injectable, NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';\nimport { PackageLogger } from '@plyaz/logger';\nimport { BaseError } from '@plyaz/errors';\nimport { HTTP_STATUS } from '@plyaz/types';\n\nimport { Observable } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\n/**\n * Interceptor to enforce feature flag rules in real-time.\n *\n * FLOW:\n * 1. Runs AFTER middleware has attached feature flags to the request.\n * 2. Checks if the requested feature is enabled.\n * 3. If disabled, blocks the request with an HTTP 403.\n * 4. If enabled, passes the request to the controller/service.\n */\n@Injectable()\nexport class ErrorHandlingInterceptor implements NestInterceptor {\n  private readonly logger = new PackageLogger({\n    packageName: 'core',\n    service: 'ErrorHandlingInterceptor',\n  });\n\n  intercept(context: ExecutionContext, next: CallHandler): Observable<unknown> {\n    const req = context.switchToHttp().getRequest();\n    const path = req.url;\n    const flags = req.featureFlags ?? {};\n\n    // Determine which feature flag to enforce.\n    // Optionally, you can pass it in headers, query, or some route metadata.\n    const featureToCheck = req.headers?.['x-feature-flag'] ?? 'GLOBAL_FEATURE';\n\n    // Block request if the feature is disabled\n    if (!flags[featureToCheck]) {\n      this.logger.warn(`Request to ${path} blocked: ${featureToCheck} is disabled`);\n      throw new BaseError('RETRY_FAILED', HTTP_STATUS.FORBIDDEN);\n    }\n\n    // If feature is enabled, continue normally\n    this.logger.debug(`Request to ${path} allowed: ${featureToCheck} is enabled`);\n    return next.handle().pipe(\n      catchError(error => {\n        this.logger.error(`Error processing request to ${path}`, { error });\n        throw new BaseError('INTERNAL_SERVER_ERROR', HTTP_STATUS.INTERNAL_SERVER_ERROR, error);\n      })\n    );\n  }\n}\n","/**\n * Configuration Validation Utilities\n *\n * Validation utilities for feature flag configuration in NestJS applications.\n * Provides error reporting and environment-specific validation.\n *\n */\n\nimport { ValidationError, BaseError } from '@plyaz/errors';\nimport {\n  type CoreFeatureFlagEnvironmentConfig,\n  type CoreFeatureFlagValidationResult,\n} from '@plyaz/types/core';\nimport { ERROR_CODES, HTTP_STATUS, NODE_ENVIRONMENTS } from '@plyaz/types';\nimport { PackageLogger } from '@plyaz/logger';\nimport { isString, isDefined, getValidProviders } from '@/utils/common/validation';\nimport { FEATURE_FLAG_PROVIDERS, NUMERIC_CONSTANTS } from '@plyaz/config';\n\n// Module-level logger for static validation methods\nconst logger = new PackageLogger({\n  packageName: 'core',\n  service: 'FeatureFlagConfigValidator',\n});\n\n/**\n * FeatureFlagConfigValidator - Comprehensive configuration validation for feature flags\n *\n * @description Validates feature flag configuration objects to ensure they meet system requirements\n * and best practices. Provides detailed error reporting and warnings for potential issues.\n *\n * **Validation Categories:**\n * - Provider validation (memory, file, redis, api, database)\n * - Cache configuration validation\n * - Database connection validation\n * - Environment-specific settings validation\n *\n * **Usage Flow:**\n * 1. Configuration is loaded from environment variables\n * 2. Validator checks all settings for correctness\n * 3. Errors prevent system startup\n * 4. Warnings are logged but don't block startup\n *\n * @example Basic Validation\n * ```typescript\n * const config = {\n *   provider: 'database',\n *   isCacheEnabled: true,\n *   cacheTtl: 300,\n *   databaseConfig: {\n *     connectionString: 'https://project.supabase.co',\n *     tableName: 'feature_flags'\n *   }\n * };\n *\n * const result = FeatureFlagConfigValidator.validate(config);\n *\n * if (result.isValid) {\n *   console.log('Configuration is valid!');\n * } else {\n *   console.error('Configuration errors:', result.errors);\n * }\n * ```\n *\n * @example Error Handling\n * ```typescript\n * try {\n *   FeatureFlagConfigValidator.validateOrThrow(config);\n *   // Configuration is valid, proceed with initialization\n * } catch (error) {\n *   console.error('Invalid configuration:', error.message);\n *   process.exit(1);\n * }\n * ```\n */\nexport class FeatureFlagConfigValidator {\n  /**\n   * Validates feature flag configuration and returns detailed results\n   *\n   * @description Performs comprehensive validation of feature flag configuration,\n   * checking all aspects including provider settings, cache configuration,\n   * database connections, and environment-specific settings.\n   *\n   * @param {FeatureFlagEnvironmentConfig} config - Configuration object to validate\n   * @returns {ValidationResult} Validation result with errors and warnings\n   *\n   * @example Successful Validation\n   * ```typescript\n   * const validConfig = {\n   *   provider: 'memory',\n   *   isCacheEnabled: true,\n   *   cacheTtl: 300,\n   *   refreshInterval: 60\n   * };\n   *\n   * const result = FeatureFlagConfigValidator.validate(validConfig);\n   * // result.isValid = true\n   * // result.errors = []\n   * // result.warnings = []\n   * ```\n   *\n   * @example Validation with Errors\n   * ```typescript\n   * const invalidConfig = {\n   *   provider: 'invalid_provider', // Error: invalid provider\n   *   cacheTtl: -100,              // Error: negative TTL\n   *   databaseConfig: {            // Error: missing connection string\n   *     tableName: 'flags'\n   *   }\n   * };\n   *\n   * const result = FeatureFlagConfigValidator.validate(invalidConfig);\n   * // result.isValid = false\n   * // result.errors = [\n   * //   { field: 'provider', message: 'Invalid provider...', code: 'INVALID_PROVIDER' },\n   * //   { field: 'cacheTtl', message: 'Cache TTL must be non-negative', code: 'INVALID_CACHE_TTL' }\n   * // ]\n   * ```\n   *\n   * @example Validation with Warnings\n   * ```typescript\n   * const configWithWarnings = {\n   *   provider: 'database',\n   *   cacheTtl: 7200, // Warning: very high TTL\n   *   isLoggingEnabled: true, // Warning: logging in production\n   *   databaseConfig: {\n   *     connectionString: 'https://project.supabase.co',\n   *     tableName: 'feature_flags'\n   *   }\n   * };\n   *\n   * process.env.NODE_ENV = 'production';\n   * const result = FeatureFlagConfigValidator.validate(configWithWarnings);\n   * // result.isValid = true (warnings don't fail validation)\n   * // result.warnings = [\n   * //   { field: 'cacheTtl', message: 'Cache TTL is very high...', code: 'HIGH_CACHE_TTL' },\n   * //   { field: 'isLoggingEnabled', message: 'Logging is enabled in production...', code: 'PRODUCTION_LOGGING_ENABLED' }\n   * // ]\n   * ```\n   */\n  static validate(config: CoreFeatureFlagEnvironmentConfig): CoreFeatureFlagValidationResult {\n    try {\n      // Validate provider\n      this.validateProvider(config);\n\n      // Validate cache settings\n      this.validateCacheSettings(config);\n\n      // Validate database configuration\n      if (config.provider === FEATURE_FLAG_PROVIDERS.DATABASE) {\n        this.validateDatabaseConfig(config);\n      }\n\n      return {\n        isValid: true,\n        errors: [],\n        warnings: this.getWarnings(config),\n      };\n    } catch (error) {\n      return {\n        isValid: false,\n        errors: [\n          {\n            field: 'config',\n            message: error instanceof Error ? error.message : 'Validation failed',\n            code: error instanceof BaseError ? error.code : 'VALIDATION_ERROR',\n          },\n        ],\n        warnings: [],\n      };\n    }\n  }\n\n  private static validateProvider(config: CoreFeatureFlagEnvironmentConfig): void {\n    const validProviders = getValidProviders();\n\n    if (!validProviders.includes(config.provider)) {\n      throw new ValidationError(\n        ERROR_CODES.CLIENT_INVALID_CONFIG,\n        HTTP_STATUS.BAD_REQUEST,\n        `Invalid provider: ${config.provider}. Must be one of: ${validProviders.join(', ')}`\n      );\n    }\n  }\n\n  private static validateCacheSettings(config: CoreFeatureFlagEnvironmentConfig): void {\n    if (config.cacheTtl < 0) {\n      throw new ValidationError(\n        ERROR_CODES.CLIENT_INVALID_CONFIG,\n        HTTP_STATUS.BAD_REQUEST,\n        'Cache TTL must be non-negative'\n      );\n    }\n\n    if (config.refreshInterval < 0) {\n      throw new ValidationError(\n        ERROR_CODES.CLIENT_INVALID_CONFIG,\n        HTTP_STATUS.BAD_REQUEST,\n        'Refresh interval must be non-negative'\n      );\n    }\n  }\n\n  private static validateDatabaseConfig(config: CoreFeatureFlagEnvironmentConfig): void {\n    if (!config.databaseConfig) {\n      throw new ValidationError(\n        ERROR_CODES.DB_CONFIG_REQUIRED,\n        HTTP_STATUS.BAD_REQUEST,\n        'Database configuration is required for database provider'\n      );\n    }\n\n    const { connectionString, tableName, poolSize, timeout } = config.databaseConfig;\n\n    this.validateConnectionString(connectionString);\n    this.validateTableName(tableName);\n    this.validatePoolSize(poolSize);\n    this.validateTimeout(timeout);\n  }\n\n  private static validateConnectionString(connectionString: string): void {\n    if (!connectionString) {\n      throw new ValidationError(\n        ERROR_CODES.DB_CONFIG_REQUIRED,\n        HTTP_STATUS.BAD_REQUEST,\n        'Database connection string is required'\n      );\n    }\n\n    try {\n      new URL(connectionString);\n    } catch {\n      throw new ValidationError(\n        ERROR_CODES.CLIENT_INVALID_CONFIG,\n        HTTP_STATUS.BAD_REQUEST,\n        'Invalid database connection string format'\n      );\n    }\n  }\n\n  private static validateTableName(tableName: string): void {\n    if (tableName && !isString(tableName)) {\n      throw new ValidationError(\n        ERROR_CODES.CLIENT_INVALID_CONFIG,\n        HTTP_STATUS.BAD_REQUEST,\n        'Table name must be a string'\n      );\n    }\n  }\n\n  private static validatePoolSize(poolSize: number | undefined): void {\n    if (\n      isDefined(poolSize) &&\n      (poolSize < NUMERIC_CONSTANTS.MIN_POOL_SIZE || poolSize > NUMERIC_CONSTANTS.MAX_POOL_SIZE)\n    ) {\n      throw new ValidationError(\n        ERROR_CODES.CLIENT_INVALID_CONFIG,\n        HTTP_STATUS.BAD_REQUEST,\n        'Pool size must be between 1 and 100'\n      );\n    }\n  }\n\n  private static validateTimeout(timeout: number | undefined): void {\n    if (isDefined(timeout) && timeout < NUMERIC_CONSTANTS.MIN_TIMEOUT_MS) {\n      throw new ValidationError(\n        ERROR_CODES.CLIENT_INVALID_CONFIG,\n        HTTP_STATUS.BAD_REQUEST,\n        'Timeout must be at least 1000ms'\n      );\n    }\n  }\n\n  private static getWarnings(\n    config: CoreFeatureFlagEnvironmentConfig,\n    environment?: string\n  ): never[] {\n    // Use provided environment or fallback to config-based detection\n    const env =\n      environment ??\n      (config.isLoggingEnabled ? NODE_ENVIRONMENTS.DEVELOPMENT : NODE_ENVIRONMENTS.PRODUCTION);\n\n    if (config.cacheTtl > NUMERIC_CONSTANTS.ONE_HOUR_SECONDS) {\n      logger.warn(\n        'Cache TTL is very high (>1 hour). Consider reducing for better responsiveness.',\n        {\n          field: 'cacheTtl',\n          value: config.cacheTtl,\n          code: 'HIGH_CACHE_TTL',\n        }\n      );\n    }\n\n    if (env === NODE_ENVIRONMENTS.PRODUCTION && config.isLoggingEnabled) {\n      logger.warn('Logging is enabled in production. Consider disabling for performance.', {\n        field: 'isLoggingEnabled',\n        code: 'PRODUCTION_LOGGING_ENABLED',\n      });\n    }\n\n    if (env === NODE_ENVIRONMENTS.DEVELOPMENT && !config.isCacheEnabled) {\n      logger.warn('Cache is disabled in development. This may impact performance testing.', {\n        field: 'isCacheEnabled',\n        code: 'DEVELOPMENT_CACHE_DISABLED',\n      });\n    }\n\n    return [];\n  }\n\n  /**\n   * Validates configuration and throws error if validation fails\n   *\n   * @description Convenience method that validates configuration and throws a detailed\n   * error if validation fails. This is typically used during application startup\n   * to ensure the system doesn't start with invalid configuration.\n   *\n   * @param {FeatureFlagEnvironmentConfig} config - Configuration to validate\n   * @throws {DatabasePackageError} When validation fails with detailed error messages\n   *\n   * @example Startup Validation\n   * ```typescript\n   * // In FeatureFlagService.onModuleInit()\n   * try {\n   *   const config = FeatureFlagConfigFactory.fromOptions();\n   *   FeatureFlagConfigValidator.validateOrThrow(config);\n   *\n   *   // Configuration is valid, proceed with initialization\n   *   this.provider = FeatureFlagProviderFactory.create(config, FEATURES);\n   *   await this.provider.initialize();\n   * } catch (error) {\n   *   this.logger.error('Configuration validation failed:', error.message);\n   *   throw error; // Prevent service from starting\n   * }\n   * ```\n   *\n   * @example Error Output\n   * ```typescript\n   * // When validation fails, throws DatabasePackageError with message:\n   * // \"Configuration validation failed:\n   * // provider: Invalid provider: invalid_type. Must be one of: memory, file, redis, api, database\n   * // cacheTtl: Cache TTL must be non-negative\n   * // databaseConfig.connectionString: Database connection string is required\"\n   * ```\n   *\n   * @example Environment Variable Validation\n   * ```bash\n   * # Missing required environment variables:\n   * # SUPABASE_URL=  # Empty/missing\n   * # FEATURE_FLAG_PROVIDER=database\n   *\n   * # Results in error:\n   * # \"Configuration validation failed:\n   * # databaseConfig.connectionString: Database connection string is required\"\n   * ```\n   */\n  static validateOrThrow(config: CoreFeatureFlagEnvironmentConfig): void {\n    // Validate provider\n    this.validateProvider(config);\n\n    // Validate cache settings\n    this.validateCacheSettings(config);\n\n    // Validate database configuration\n    if (config.provider === FEATURE_FLAG_PROVIDERS.DATABASE) {\n      this.validateDatabaseConfig(config);\n    }\n  }\n}\n","/**\n * Feature Flag Configuration\n *\n * Configuration integration for feature flags with environment variable support.\n * Imports configuration from .env.local and provides validation.\n *\n */\n\nimport { FeatureFlagConfigValidator } from './validation';\nimport {\n  NODE_ENVIRONMENTS,\n  FEATURE_FLAG_DEFAULTS,\n  FEATURE_FLAG_PROVIDERS,\n  type CoreFeatureFlagEnvironmentConfig,\n} from '@plyaz/types/core';\nimport { Core } from '../../../init/CoreInitializer';\n\n// Import for local use\nimport type { FeatureFlagConfigOptions as _FeatureFlagConfigOptions } from '@plyaz/types/features';\n\n/**\n * Feature flag configuration factory\n *\n * This factory is the FIRST component called during application startup.\n * It reads environment variables from .env.local and creates a validated configuration object.\n *\n * @example\n * ```typescript\n * // Step 1: Called automatically by FeatureFlagService.onModuleInit()\n * const config = FeatureFlagConfigFactory.fromOptions({ environment: Core.env.NODE_ENV });\n *\n * // Step 2: Configuration is validated\n * // Step 3: Provider is created with this config\n * const provider = FeatureFlagProviderFactory.create(config, FEATURES);\n * ```\n *\n * @example Environment Variables (.env.local)\n * ```bash\n * SUPABASE_URL=https://your-project.supabase.co\n * SUPABASE_ANON_PUBLIC_KEY=your-anon-key\n * FEATURE_FLAG_PROVIDER=database\n * FEATURE_FLAG_CACHE_ENABLED=true\n * FEATURE_FLAG_CACHE_TTL=300\n * FEATURE_FLAG_TABLE_NAME=feature_flags\n * ```\n */\nexport class FeatureFlagConfigFactory {\n  /**\n   * Creates configuration from environment variables\n   *\n   * **EXECUTION ORDER: This is called FIRST in the initialization chain**\n   *\n   * Flow:\n   * 1. NestJS starts → FeatureFlagModule loads\n   * 2. FeatureFlagService.onModuleInit() called\n   * 3. → initializeProvider() called\n   * 4. → **THIS METHOD CALLED** ← YOU ARE HERE\n   * 5. → Configuration validated\n   * 6. → Provider created and initialized\n   * 7. → Database connection established\n   *\n   * @returns Validated configuration object ready for provider creation\n   * @throws {FeatureFlagConfigError} If required options are missing or invalid\n   */\n  /**\n   * Creates configuration from explicit options\n   *\n   * All options have sensible defaults - only provide what you need to override.\n   * Environment is automatically read from Core.env.NODE_ENV.\n   *\n   * Note: For 'database' provider, DbService must be initialized first via Core.initialize().\n   * The database provider uses the already-configured DbService, no connection string needed here.\n   *\n   * @example Basic usage with defaults (memory provider)\n   * ```typescript\n   * const config = FeatureFlagConfigFactory.fromOptions();\n   * // Uses memory provider, cache enabled, default TTL\n   * ```\n   *\n   * @example Database provider (requires Core.initialize() first)\n   * ```typescript\n   * // First: Core.initialize() with db config\n   * await Core.initialize({ db: { adapter: 'sql', sql: { connectionString: '...' } } });\n   *\n   * // Then: Use database provider for feature flags\n   * const config = FeatureFlagConfigFactory.fromOptions({ provider: 'database' });\n   * ```\n   *\n   * @example Custom cache settings\n   * ```typescript\n   * const config = FeatureFlagConfigFactory.fromOptions({\n   *   cacheEnabled: true,\n   *   cacheTtl: 600,  // 10 minutes\n   *   refreshInterval: 30,\n   * });\n   * ```\n   */\n  // eslint-disable-next-line complexity\n  static fromOptions(options: _FeatureFlagConfigOptions = {}): CoreFeatureFlagEnvironmentConfig {\n    // Resolve provider with default\n    const provider = options.provider ?? FEATURE_FLAG_PROVIDERS.MEMORY;\n\n    // Get environment from Core.env (set during Core.initialize())\n    const environment = Core.isInitialized ? Core.env.NODE_ENV : NODE_ENVIRONMENTS.DEVELOPMENT;\n    const isDevelopment = environment === NODE_ENVIRONMENTS.DEVELOPMENT;\n\n    const config: CoreFeatureFlagEnvironmentConfig = {\n      provider,\n      isCacheEnabled: options.cacheEnabled ?? true,\n      cacheTtl: options.cacheTtl ?? FEATURE_FLAG_DEFAULTS.CACHE_TTL,\n      refreshInterval: options.refreshInterval ?? FEATURE_FLAG_DEFAULTS.REFRESH_INTERVAL,\n      shouldFallbackToDefaults: options.fallbackToDefaults ?? true,\n      isLoggingEnabled: options.loggingEnabled ?? isDevelopment,\n    };\n\n    // Add database config if using database provider\n    // Note: Connection is handled by DbService, we just need table name\n    if (provider === FEATURE_FLAG_PROVIDERS.DATABASE) {\n      config.databaseConfig = {\n        connectionString: '', // Not used - DbService handles connection\n        tableName: options.tableName ?? FEATURE_FLAG_DEFAULTS.TABLE_NAME,\n        poolSize: FEATURE_FLAG_DEFAULTS.POOL_SIZE,\n        timeout: FEATURE_FLAG_DEFAULTS.TIMEOUT,\n      };\n    }\n\n    FeatureFlagConfigValidator.validateOrThrow(config);\n    return config;\n  }\n}\n","/**\n * Webhooks Module\n *\n * NestJS module for handling incoming webhooks from external services:\n * - Storage providers (R2, Supabase)\n * - Notification providers (SendGrid, Infobip)\n * - Media processing services\n *\n * Uses Core.storage and Core.notifications for webhook processing.\n * No custom service needed - all logic is handled by the packages.\n *\n * @example Usage in app.module.ts\n * ```typescript\n * import { CoreModule } from '@plyaz/core/nestjs';\n * import { WebhooksModule } from '@plyaz/core/backend';\n *\n * @Module({\n *   imports: [\n *     CoreModule.forRoot({ envPath: '.env' }),\n *     WebhooksModule,\n *   ],\n * })\n * export class AppModule {}\n * ```\n */\n\nimport { Module } from '@nestjs/common';\nimport { WebhooksController } from './webhooks.controller';\n\n@Module({\n  controllers: [WebhooksController],\n})\nexport class WebhooksModule {}\n","/**\n * Webhooks Controller\n *\n * Exposes webhook endpoints for external services.\n * Uses StorageService and NotificationService instances for webhook processing.\n * All webhooks verify signatures before processing.\n *\n * @endpoints\n * - POST /webhooks/storage/:provider     - Storage webhooks (r2 | supabase | media)\n * - POST /webhooks/notifications/:provider - Notification webhooks (sendgrid | infobip)\n * - POST /webhooks/notifications/infobip/:type - Infobip typed webhooks (delivery | tracking)\n */\n\nimport { Controller, Post, Body, Headers, Req, Param, HttpCode, HttpStatus } from '@nestjs/common';\nimport { ApiTags, ApiOperation, ApiParam, ApiResponse } from '@nestjs/swagger';\nimport type { Request } from 'express';\nimport { StorageService, NotificationService } from '../../services';\nimport { CorePackageError } from '@plyaz/errors';\nimport { CORE_ERROR_CODES } from '@plyaz/types/errors';\nimport {\n  NOTIFICATION_PROVIDERS,\n  NOTIFICATION_CHANNELS,\n  type NotificationWebhookPayload,\n  type WebhookProcessingResult as NotificationWebhookResult,\n} from '@plyaz/types/notifications';\nimport {\n  STORAGE_WEBHOOK_EVENT_TYPE,\n  type StorageWebhookPayload,\n  type StorageWebhookProcessingResult,\n} from '@plyaz/types/storage';\nimport { Core } from '../../init/CoreInitializer';\nimport { PackageLogger } from '@plyaz/logger';\n\n// Use Core's logger transport for consistency\nconst log = new PackageLogger({\n  packageName: 'core',\n  service: 'webhooks',\n  transport: Core.loggerTransport,\n});\n\ninterface WebhookRequest extends Request {\n  rawBody?: Buffer;\n}\n\n/** Supported storage webhook providers */\ntype StorageWebhookProvider = 'r2' | 'supabase' | 'media';\n\n/** Supported notification webhook providers */\ntype NotificationWebhookProvider = 'sendgrid' | 'infobip';\n\n/** Maps route param to internal provider name */\nconst STORAGE_PROVIDER_MAP: Record<StorageWebhookProvider, string> = {\n  r2: 'cloudflare-r2',\n  supabase: 'supabase-storage',\n  media: 'media-processor',\n};\n\n/** Maps route param to notification provider constant */\nconst NOTIFICATION_PROVIDER_MAP: Record<NotificationWebhookProvider, string> = {\n  sendgrid: NOTIFICATION_PROVIDERS.SENDGRID,\n  infobip: NOTIFICATION_PROVIDERS.INFOBIP,\n};\n\n/** HTTP response for webhook endpoints - subset of internal result */\ntype WebhookHttpResponse = Pick<\n  StorageWebhookProcessingResult | NotificationWebhookResult,\n  'success'\n> & {\n  message?: string;\n  eventsProcessed?: number;\n};\n\n@ApiTags('webhooks')\n@Controller('webhooks')\nexport class WebhooksController {\n  // ===========================================================================\n  // Storage Webhooks\n  // ===========================================================================\n\n  /**\n   * Generic storage webhook endpoint\n   * Handles: R2, Supabase, and media processing webhooks\n   */\n  @Post('storage/:provider')\n  @HttpCode(HttpStatus.OK)\n  @ApiOperation({ summary: 'Handle storage provider webhooks' })\n  @ApiParam({\n    name: 'provider',\n    description: 'Storage provider',\n    enum: ['r2', 'supabase', 'media'],\n  })\n  @ApiResponse({ status: 200, description: 'Webhook processed successfully' })\n  @ApiResponse({ status: 400, description: 'Unknown provider' })\n  @ApiResponse({ status: 503, description: 'Storage service not initialized' })\n  async handleStorageWebhook(\n    @Param('provider') provider: string,\n    @Headers() headers: Record<string, string>,\n    @Body() body: Record<string, unknown>,\n    @Req() req: WebhookRequest\n  ): Promise<WebhookHttpResponse> {\n    const internalProvider = this.resolveStorageProvider(provider);\n    return this.processStorageWebhook(internalProvider, headers, body, req);\n  }\n\n  private resolveStorageProvider(provider: string): string {\n    const normalizedProvider = provider.toLowerCase() as StorageWebhookProvider;\n\n    switch (normalizedProvider) {\n      case 'r2':\n      case 'supabase':\n      case 'media':\n        return STORAGE_PROVIDER_MAP[normalizedProvider];\n      default:\n        throw new CorePackageError(\n          `Unknown storage provider: ${provider}`,\n          CORE_ERROR_CODES.PROVIDER_NOT_FOUND,\n          {\n            context: { provider, service: 'storage' },\n            statusCode: HttpStatus.BAD_REQUEST,\n          }\n        );\n    }\n  }\n\n  private async processStorageWebhook(\n    provider: string,\n    headers: Record<string, string>,\n    body: Record<string, unknown>,\n    req: WebhookRequest\n  ): Promise<WebhookHttpResponse> {\n    if (!StorageService.isInitialized()) {\n      throw new CorePackageError(\n        'Storage service not initialized',\n        CORE_ERROR_CODES.INITIALIZATION_FAILED,\n        {\n          context: { provider, service: 'storage' },\n          statusCode: HttpStatus.SERVICE_UNAVAILABLE,\n        }\n      );\n    }\n\n    const storage = StorageService.getInstance().getStorage();\n\n    try {\n      const eventType = this.extractStorageEventType(body);\n\n      const payload: StorageWebhookPayload<Record<string, unknown>> = {\n        method: req.method,\n        url: req.originalUrl || req.url,\n        headers,\n        body,\n        rawBody: req.rawBody?.toString('utf-8'),\n      };\n\n      const result = await storage.handleWebhook(provider, eventType, payload);\n\n      if (result.duplicate) {\n        log.debug('[Webhook:Storage] Duplicate webhook ignored', { provider });\n        return {\n          success: true,\n          message: 'Duplicate webhook, already processed',\n        };\n      }\n\n      log.info('[Webhook:Storage] Processed', {\n        provider,\n        eventsProcessed: result.events?.length ?? 0,\n      });\n\n      return {\n        success: result.success,\n        eventsProcessed: result.events?.length ?? 0,\n      };\n    } catch (err) {\n      const error = err instanceof Error ? err : new Error(String(err));\n      log.error('[Webhook:Storage] Processing failed', { provider, error });\n\n      if (CorePackageError.isCorePackageError(error)) {\n        throw error;\n      }\n\n      throw new CorePackageError(error.message, CORE_ERROR_CODES.OPERATION_FAILED, {\n        context: { provider, service: 'storage', operation: 'webhook' },\n        cause: error,\n        statusCode: HttpStatus.INTERNAL_SERVER_ERROR,\n      });\n    }\n  }\n\n  private extractStorageEventType(body: Record<string, unknown>): STORAGE_WEBHOOK_EVENT_TYPE {\n    // R2 format\n    if (body.Records && Array.isArray(body.Records)) {\n      const record = body.Records[0] as Record<string, unknown> | undefined;\n      const eventName = record?.eventName as string | undefined;\n\n      if (eventName?.includes('ObjectCreated')) {\n        return STORAGE_WEBHOOK_EVENT_TYPE.ObjectCreated;\n      }\n      if (eventName?.includes('ObjectRemoved')) {\n        return STORAGE_WEBHOOK_EVENT_TYPE.ObjectDeleted;\n      }\n    }\n\n    // Supabase format\n    switch (body.type) {\n      case 'INSERT':\n        return STORAGE_WEBHOOK_EVENT_TYPE.ObjectCreated;\n      case 'UPDATE':\n        return STORAGE_WEBHOOK_EVENT_TYPE.ObjectUpdated;\n      case 'DELETE':\n        return STORAGE_WEBHOOK_EVENT_TYPE.ObjectDeleted;\n    }\n\n    // Media processing format\n    if (body.event === 'transcode_complete' || body.event === 'processing_complete') {\n      return STORAGE_WEBHOOK_EVENT_TYPE.TranscodeComplete;\n    }\n\n    // Default\n    return STORAGE_WEBHOOK_EVENT_TYPE.ObjectCreated;\n  }\n\n  // ===========================================================================\n  // Notification Webhooks\n  // ===========================================================================\n\n  /**\n   * Generic notification webhook endpoint\n   * Handles: SendGrid and Infobip webhooks\n   */\n  @Post('notifications/:provider')\n  @HttpCode(HttpStatus.OK)\n  @ApiOperation({ summary: 'Handle notification provider webhooks' })\n  @ApiParam({\n    name: 'provider',\n    description: 'Notification provider',\n    enum: ['sendgrid', 'infobip'],\n  })\n  @ApiResponse({ status: 200, description: 'Webhook processed successfully' })\n  @ApiResponse({ status: 400, description: 'Unknown provider' })\n  @ApiResponse({ status: 503, description: 'Notification service not initialized' })\n  async handleNotificationWebhook(\n    @Param('provider') provider: string,\n    @Headers() headers: Record<string, string>,\n    @Body() body: Record<string, unknown>,\n    @Req() req: WebhookRequest\n  ): Promise<WebhookHttpResponse> {\n    const internalProvider = this.resolveNotificationProvider(provider);\n    return this.processNotificationWebhook(internalProvider, headers, body, req);\n  }\n\n  /**\n   * Infobip webhook with type parameter\n   * Handles: delivery status and tracking events separately\n   */\n  @Post('notifications/infobip/:type')\n  @HttpCode(HttpStatus.OK)\n  @ApiOperation({ summary: 'Handle Infobip typed webhooks (delivery/tracking)' })\n  @ApiParam({\n    name: 'type',\n    description: 'Webhook type',\n    enum: ['delivery', 'tracking'],\n  })\n  @ApiResponse({ status: 200, description: 'Webhook processed successfully' })\n  @ApiResponse({ status: 400, description: 'Unknown webhook type' })\n  async handleInfobipTypedWebhook(\n    @Param('type') type: string,\n    @Headers() headers: Record<string, string>,\n    @Body() body: Record<string, unknown>,\n    @Req() req: WebhookRequest\n  ): Promise<WebhookHttpResponse> {\n    if (type !== 'delivery' && type !== 'tracking') {\n      throw new CorePackageError(\n        `Unknown Infobip webhook type: ${type}`,\n        CORE_ERROR_CODES.VALIDATION_FAILED,\n        {\n          context: { type, provider: 'infobip', service: 'notifications' },\n          statusCode: HttpStatus.BAD_REQUEST,\n        }\n      );\n    }\n\n    return this.processNotificationWebhook(NOTIFICATION_PROVIDERS.INFOBIP, headers, body, req);\n  }\n\n  private resolveNotificationProvider(provider: string): string {\n    const normalizedProvider = provider.toLowerCase() as NotificationWebhookProvider;\n\n    switch (normalizedProvider) {\n      case 'sendgrid':\n      case 'infobip':\n        return NOTIFICATION_PROVIDER_MAP[normalizedProvider];\n      default:\n        throw new CorePackageError(\n          `Unknown notification provider: ${provider}`,\n          CORE_ERROR_CODES.PROVIDER_NOT_FOUND,\n          {\n            context: { provider, service: 'notifications' },\n            statusCode: HttpStatus.BAD_REQUEST,\n          }\n        );\n    }\n  }\n\n  private async processNotificationWebhook(\n    provider: string,\n    headers: Record<string, string>,\n    body: Record<string, unknown>,\n    req: WebhookRequest\n  ): Promise<WebhookHttpResponse> {\n    if (!NotificationService.isInitialized()) {\n      throw new CorePackageError(\n        'Notification service not initialized',\n        CORE_ERROR_CODES.INITIALIZATION_FAILED,\n        {\n          context: { provider, service: 'notifications' },\n          statusCode: HttpStatus.SERVICE_UNAVAILABLE,\n        }\n      );\n    }\n\n    const notifications = NotificationService.getInstance().getNotifications();\n\n    try {\n      const payload: NotificationWebhookPayload<Record<string, unknown>> = {\n        headers,\n        body,\n        method: req.method,\n        url: req.originalUrl || req.url,\n      };\n\n      const result = await notifications.processWebhook(\n        provider,\n        NOTIFICATION_CHANNELS.EMAIL,\n        payload\n      );\n\n      if (result.duplicate) {\n        log.debug('[Webhook:Notification] Duplicate webhook ignored', {\n          provider,\n        });\n        return {\n          success: true,\n          message: 'Duplicate webhook, already processed',\n        };\n      }\n\n      log.info('[Webhook:Notification] Processed', {\n        provider,\n        eventsProcessed: result.events?.length ?? 0,\n      });\n\n      return {\n        success: result.success,\n        eventsProcessed: result.events?.length ?? 0,\n      };\n    } catch (err) {\n      const error = err instanceof Error ? err : new Error(String(err));\n      log.error('[Webhook:Notification] Processing failed', {\n        provider,\n        error,\n      });\n\n      if (CorePackageError.isCorePackageError(error)) {\n        throw error;\n      }\n\n      throw new CorePackageError(error.message, CORE_ERROR_CODES.OPERATION_FAILED, {\n        context: { provider, service: 'notifications', operation: 'webhook' },\n        cause: error,\n        statusCode: HttpStatus.INTERNAL_SERVER_ERROR,\n      });\n    }\n  }\n}\n","import { Injectable, NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';\nimport { Observable, of, tap } from 'rxjs';\n\n/**\n * Caching interceptor for feature flag responses.\n *\n * FLOW:\n * 1. Runs AFTER middleware attaches dynamic feature flags.\n * 2. Generates a cache key based on request URL and enabled flags.\n * 3. If a cached response exists for this combination, returns it immediately.\n * 4. Otherwise, calls the next handler and caches the response.\n */\n@Injectable()\nexport class Caching implements NestInterceptor {\n  // Map to store cached responses keyed by URL + active feature flags\n  private cache = new Map<string, unknown>();\n\n  intercept(context: ExecutionContext, next: CallHandler): Observable<unknown> {\n    const request = context.switchToHttp().getRequest();\n\n    // Include active flags in cache key\n    const flagsKey = JSON.stringify(request.featureFlags ?? {});\n    const cacheKey = `${request.url}|${flagsKey}`;\n\n    if (this.cache.has(cacheKey)) {\n      // Return cached response as Observable\n      return of(this.cache.get(cacheKey));\n    }\n\n    // Otherwise, proceed to handler and cache the response\n    return next.handle().pipe(\n      tap(response => {\n        this.cache.set(cacheKey, response);\n      })\n    );\n  }\n}\n","/**\n * NestJS integration exports\n */\nimport type { INestApplication } from '@nestjs/common';\nimport { Core } from '../CoreInitializer';\nimport {\n  configureNestApp as configureNestAppInternal,\n  getDefaultNestJsConfig,\n  type ConfigureNestAppResult,\n} from './configureNestApp';\n\nexport { CoreModule, CORE_OPTIONS, DB_SERVICE } from './CoreModule';\nexport { StreamingModule } from './StreamingModule';\nexport { StreamingController, STREAM_SERVER } from './StreamingController';\nexport { getDefaultNestJsConfig, type ConfigureNestAppResult };\n\n/**\n * Configure a NestJS application with middleware based on CoreInitOptions.\n * Uses the options passed to CoreModule.forRoot() automatically.\n *\n * @param app - NestJS application instance\n * @returns Configuration result with enabled/skipped features\n *\n * @example\n * ```typescript\n * import { NestFactory } from '@nestjs/core';\n * import { configureNestApp } from '@plyaz/core/nestjs';\n *\n * const app = await NestFactory.create(AppModule);\n * const result = await configureNestApp(app);\n * console.log('Enabled:', result.enabled);\n * ```\n */\nexport async function configureNestApp(app: INestApplication): Promise<ConfigureNestAppResult> {\n  return configureNestAppInternal(app, Core.initOptions);\n}\n","/**\n * NestJS App Configuration Helper\n *\n * Configures a NestJS application with middleware based on CoreInitOptions.\n * Call this in your main.ts after creating the app.\n *\n * @example\n * ```typescript\n * import { NestFactory } from '@nestjs/core';\n * import { configureNestApp } from '@plyaz/core/nestjs';\n * import { AppModule } from './app.module';\n * import { buildCoreConfig } from './config';\n *\n * async function bootstrap() {\n *   const app = await NestFactory.create(AppModule);\n *   const options = buildCoreConfig();\n *\n *   // Configure middleware, validation, security, etc.\n *   await configureNestApp(app, options);\n *\n *   await app.listen(3000);\n * }\n * ```\n */\n\nimport {\n  VersioningType,\n  type INestApplication,\n  type ExceptionFilter,\n  type VersioningOptions,\n} from '@nestjs/common';\nimport type { CoreNestJsMiddlewareConfig } from '@plyaz/types/core';\nimport { TIME_CONSTANTS } from '@plyaz/config';\nimport { PackageLogger } from '@plyaz/logger';\nimport { createNestJsExceptionFilter } from '@plyaz/errors/middleware/backend';\nimport { Core, type CoreInitOptions } from '../CoreInitializer';\n\n// Default configuration values\nconst DEFAULTS = {\n  bodyLimit: '10mb',\n  timeout: 30000,\n  shutdownTimeout: 10000,\n  rateLimit: {\n    ttl: 60,\n    limit: 100,\n  },\n  validation: {\n    whitelist: true,\n    transform: true,\n    forbidNonWhitelisted: false,\n    disableErrorMessages: false,\n  },\n  swagger: {\n    path: 'docs', // Relative to globalPrefix\n    title: 'API Documentation',\n    version: '1.0',\n  },\n} as const;\n\n/**\n * Result of configuring a NestJS app\n */\nexport interface ConfigureNestAppResult {\n  /** Features that were enabled */\n  enabled: string[];\n  /** Features that were skipped (not configured or dependencies missing) */\n  skipped: string[];\n  /** Any warnings during configuration */\n  warnings: string[];\n  /** Configured paths */\n  paths: {\n    /** API prefix (e.g., 'api') */\n    prefix?: string;\n    /** Swagger docs path (e.g., 'api/docs') */\n    swagger?: string;\n  };\n}\n\n/**\n * Configure a NestJS application with middleware based on CoreInitOptions.\n *\n * This function applies:\n * - Compression middleware (if compression: true)\n * - Helmet security headers (if helmet: true)\n * - Rate limiting (if rateLimit config provided)\n * - Global validation pipe (if validation: true)\n * - Body size limits\n * - Request timeout\n * - Raw body parsing for webhooks\n * - Swagger documentation (if swagger config provided)\n * - CORS configuration\n * - Global prefix\n * - Graceful shutdown handlers\n *\n * @param app - NestJS application instance\n * @param options - Core initialization options (reads nestjs config)\n * @returns Configuration result with enabled/skipped features\n *\n * @example Basic usage\n * ```typescript\n * const app = await NestFactory.create(AppModule);\n * await configureNestApp(app, {\n *   nestjs: {\n *     compression: true,\n *     helmet: true,\n *     validation: true,\n *   },\n * });\n * ```\n *\n * @example Full production config\n * ```typescript\n * await configureNestApp(app, {\n *   nestjs: {\n *     compression: true,\n *     helmet: true,\n *     rateLimit: { ttl: 60, limit: 100 },\n *     validation: { whitelist: true, transform: true },\n *     bodyLimit: '10mb',\n *     timeout: 30000,\n *     rawBody: { paths: ['/webhooks/*'] },\n *     swagger: { enabled: false },\n *     globalPrefix: 'api',\n *     excludeFromPrefix: ['health', 'metrics'],\n *     gracefulShutdown: true,\n *   },\n * });\n * ```\n */\n// eslint-disable-next-line complexity, max-lines-per-function\nexport async function configureNestApp(\n  app: INestApplication,\n  options: CoreInitOptions\n): Promise<ConfigureNestAppResult> {\n  const config = options.nestjs ?? {};\n  const isProduction = options.environment === 'production' || Core.env.NODE_ENV === 'production';\n  const logger = new PackageLogger({\n    packageName: 'core',\n    service: 'NestJS',\n    transport: Core.loggerTransport,\n  });\n\n  const result: ConfigureNestAppResult = {\n    enabled: [],\n    skipped: [],\n    warnings: [],\n    paths: {},\n  };\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Compression\n  // ─────────────────────────────────────────────────────────────────────────────\n  if (config.compression === true || (config.compression !== false && isProduction)) {\n    try {\n      const compression = await import('compression');\n      app.use(compression.default());\n      result.enabled.push('compression');\n      logger.debug('Compression middleware enabled');\n    } catch {\n      result.skipped.push('compression');\n      result.warnings.push('compression package not installed - run: pnpm add compression');\n    }\n  } else {\n    result.skipped.push('compression');\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Helmet Security Headers\n  // ─────────────────────────────────────────────────────────────────────────────\n  if (config.helmet !== false) {\n    try {\n      const helmet = await import('helmet');\n      const helmetOptions = typeof config.helmet === 'object' ? config.helmet : {};\n      app.use(helmet.default(helmetOptions));\n      result.enabled.push('helmet');\n      logger.debug('Helmet security headers enabled');\n    } catch {\n      result.skipped.push('helmet');\n      result.warnings.push('helmet package not installed - run: pnpm add helmet');\n    }\n  } else {\n    result.skipped.push('helmet');\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Rate Limiting\n  // ─────────────────────────────────────────────────────────────────────────────\n  if (config.rateLimit !== false) {\n    try {\n      // NestJS throttler module is typically configured in the module, not middleware\n      // We'll use express-rate-limit as a fallback for raw middleware approach\n      const rateLimit = await import('express-rate-limit');\n      const rateLimitConfig =\n        typeof config.rateLimit === 'object' ? config.rateLimit : DEFAULTS.rateLimit;\n\n      const limiter = rateLimit.default({\n        windowMs:\n          (rateLimitConfig.ttl ?? DEFAULTS.rateLimit.ttl) * TIME_CONSTANTS.MILLISECONDS_PER_SECOND,\n        max: rateLimitConfig.limit ?? DEFAULTS.rateLimit.limit,\n        standardHeaders: true,\n        legacyHeaders: false,\n        skip: 'skipIf' in rateLimitConfig ? rateLimitConfig.skipIf : undefined,\n      });\n\n      app.use(limiter);\n      result.enabled.push('rateLimit');\n      logger.debug('Rate limiting enabled', {\n        ttl: rateLimitConfig.ttl ?? DEFAULTS.rateLimit.ttl,\n        limit: rateLimitConfig.limit ?? DEFAULTS.rateLimit.limit,\n      });\n    } catch {\n      result.skipped.push('rateLimit');\n      result.warnings.push(\n        'express-rate-limit package not installed - run: pnpm add express-rate-limit'\n      );\n    }\n  } else {\n    result.skipped.push('rateLimit');\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Global Validation Pipe\n  // ─────────────────────────────────────────────────────────────────────────────\n  if (config.validation !== false) {\n    try {\n      const { ValidationPipe } = await import('@nestjs/common');\n      const validationConfig =\n        typeof config.validation === 'object' ? config.validation : DEFAULTS.validation;\n\n      const pipe = new ValidationPipe({\n        whitelist: validationConfig.whitelist ?? DEFAULTS.validation.whitelist,\n        transform: validationConfig.transform ?? DEFAULTS.validation.transform,\n        forbidNonWhitelisted:\n          validationConfig.forbidNonWhitelisted ?? DEFAULTS.validation.forbidNonWhitelisted,\n        disableErrorMessages:\n          validationConfig.disableErrorMessages ?? DEFAULTS.validation.disableErrorMessages,\n      });\n\n      app.useGlobalPipes(pipe);\n      result.enabled.push('validation');\n      logger.debug('Global validation pipe enabled', { ...validationConfig });\n    } catch {\n      result.skipped.push('validation');\n      result.warnings.push('Failed to create validation pipe');\n    }\n  } else {\n    result.skipped.push('validation');\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Global Exception Filter (for proper ErrorResponse format)\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Use Core.httpErrorHandler if available (created during Core.initialize based on config)\n  // Falls back to direct creation if Core didn't create it (e.g., runtime detection issue)\n  try {\n    let FilterClass: (new () => ExceptionFilter) | null = null;\n\n    // Try Core.httpErrorHandler first (respects errorHandler config from Core.initialize)\n    if (Core.httpErrorHandler && typeof Core.httpErrorHandler === 'function') {\n      FilterClass = Core.httpErrorHandler as new () => ExceptionFilter;\n      logger.debug('Using Core.httpErrorHandler for exception filter');\n    } else {\n      // Fallback: create directly (in case runtime wasn't detected as nestjs)\n      const isProduction = Core.env.NODE_ENV === 'production';\n      const errorConfig = Core.errorConfig ?? {};\n      FilterClass = createNestJsExceptionFilter({\n        source: 'nestjs',\n        includeStack: errorConfig.includeStack ?? !isProduction,\n        logErrors: errorConfig.logger ?? errorConfig.logToConsole ?? true,\n      }) as unknown as new () => ExceptionFilter;\n      logger.debug('Created exception filter directly (Core.httpErrorHandler not available)');\n    }\n\n    app.useGlobalFilters(new FilterClass());\n    result.enabled.push('exceptionFilter');\n  } catch (err) {\n    result.skipped.push('exceptionFilter');\n    result.warnings.push(\n      `Failed to register exception filter: ${err instanceof Error ? err.message : String(err)}`\n    );\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Body Parser / Size Limits\n  // ─────────────────────────────────────────────────────────────────────────────\n  if (config.bodyLimit) {\n    try {\n      const bodyParser = await import('body-parser');\n      const limit = config.bodyLimit ?? DEFAULTS.bodyLimit;\n      app.use(bodyParser.json({ limit }));\n      app.use(bodyParser.urlencoded({ limit, extended: true }));\n      result.enabled.push('bodyLimit');\n      logger.debug('Body parser configured', { limit });\n    } catch {\n      // body-parser is usually bundled with express, so this shouldn't fail\n      result.skipped.push('bodyLimit');\n    }\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Raw Body for Webhooks\n  // ─────────────────────────────────────────────────────────────────────────────\n  if (config.rawBody) {\n    try {\n      const bodyParser = await import('body-parser');\n      const rawBodyConfig = typeof config.rawBody === 'object' ? config.rawBody : {};\n      const paths = rawBodyConfig.paths ?? ['/webhooks'];\n\n      // Add raw body parsing middleware\n      app.use(\n        bodyParser.raw({\n          type: 'application/json',\n          verify: (req: unknown, _res: unknown, buf: Buffer) => {\n            // Check if path matches\n            const request = req as { rawBody?: Buffer; originalUrl?: string };\n            const reqPath = request.originalUrl ?? '';\n            if (paths.some((p: string) => reqPath.includes(p.replace('*', '')))) {\n              request.rawBody = buf;\n            }\n          },\n        })\n      );\n\n      result.enabled.push('rawBody');\n      logger.debug('Raw body parsing enabled for paths', { paths });\n    } catch {\n      result.skipped.push('rawBody');\n    }\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // CORS\n  // ─────────────────────────────────────────────────────────────────────────────\n  if (config.cors !== false && config.cors !== undefined) {\n    const corsConfig = typeof config.cors === 'object' ? config.cors : {};\n    app.enableCors({\n      origin: corsConfig.origin ?? true,\n      credentials: corsConfig.credentials ?? true,\n      methods: corsConfig.methods,\n      allowedHeaders: corsConfig.allowedHeaders,\n    });\n    result.enabled.push('cors');\n    logger.debug('CORS configured', { ...corsConfig });\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // API Versioning (MUST be before setGlobalPrefix for URI versioning to work)\n  // ─────────────────────────────────────────────────────────────────────────────\n  if (config.versioning) {\n    try {\n      const versionConfig = config.versioning;\n\n      // Build versioning options based on type\n      let versioningOptions: VersioningOptions;\n\n      if (versionConfig.type === 'custom' && versionConfig.extractor) {\n        versioningOptions = {\n          type: VersioningType.CUSTOM,\n          defaultVersion: versionConfig.defaultVersion,\n          extractor: versionConfig.extractor,\n        };\n      } else if (versionConfig.type === 'header') {\n        versioningOptions = {\n          type: VersioningType.HEADER,\n          defaultVersion: versionConfig.defaultVersion,\n          header: versionConfig.header ?? 'X-API-Version',\n        };\n      } else if (versionConfig.type === 'media-type') {\n        versioningOptions = {\n          type: VersioningType.MEDIA_TYPE,\n          defaultVersion: versionConfig.defaultVersion,\n          key: versionConfig.key ?? 'v',\n        };\n      } else {\n        // Default: URI versioning\n        versioningOptions = {\n          type: VersioningType.URI,\n          defaultVersion: versionConfig.defaultVersion,\n          prefix: versionConfig.prefix ?? 'v',\n        };\n      }\n\n      app.enableVersioning(versioningOptions);\n      result.enabled.push('versioning');\n      logger.debug('API versioning enabled', {\n        type: versionConfig.type ?? 'uri',\n        defaultVersion: versionConfig.defaultVersion,\n      });\n    } catch {\n      result.skipped.push('versioning');\n      result.warnings.push('Failed to enable versioning');\n    }\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Global Prefix\n  // ─────────────────────────────────────────────────────────────────────────────\n  const prefix = config.globalPrefix !== false ? (config.globalPrefix ?? 'api') : undefined;\n  if (prefix) {\n    const exclude = config.excludeFromPrefix ?? ['health'];\n    app.setGlobalPrefix(prefix, { exclude });\n    result.enabled.push('globalPrefix');\n    result.paths.prefix = prefix;\n    logger.debug('Global prefix set', { prefix, exclude });\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Swagger Documentation\n  // ─────────────────────────────────────────────────────────────────────────────\n  const swaggerEnabled = isProduction\n    ? (typeof config.swagger === 'object' && config.swagger.enabled === true) ||\n      config.swagger === true\n    : config.swagger !== false;\n\n  if (swaggerEnabled) {\n    try {\n      const { SwaggerModule, DocumentBuilder } = await import('@nestjs/swagger');\n      const swaggerConfig = typeof config.swagger === 'object' ? config.swagger : DEFAULTS.swagger;\n\n      const documentBuilder = new DocumentBuilder()\n        .setTitle(swaggerConfig.title ?? DEFAULTS.swagger.title)\n        .setVersion(swaggerConfig.version ?? DEFAULTS.swagger.version);\n\n      if ('description' in swaggerConfig && swaggerConfig.description) {\n        documentBuilder.setDescription(swaggerConfig.description);\n      }\n\n      if ('bearerAuth' in swaggerConfig && swaggerConfig.bearerAuth) {\n        documentBuilder.addBearerAuth();\n      }\n\n      const document = SwaggerModule.createDocument(app, documentBuilder.build());\n      // Construct swagger path\n      // If path starts with '/', treat as absolute (don't add prefix)\n      // If path is relative (e.g., 'docs'), prepend the prefix\n      const configPath = swaggerConfig.path ?? DEFAULTS.swagger.path;\n      const isAbsolutePath = configPath.startsWith('/');\n      const cleanPath = configPath.replace(/^\\/+/, ''); // Remove leading slashes\n      const fullPath = isAbsolutePath ? cleanPath : prefix ? `${prefix}/${cleanPath}` : cleanPath;\n      SwaggerModule.setup(fullPath, app, document);\n\n      result.enabled.push('swagger');\n      result.paths.swagger = fullPath;\n      logger.debug('Swagger documentation enabled', { path: fullPath });\n    } catch {\n      result.skipped.push('swagger');\n      result.warnings.push('@nestjs/swagger package not installed - run: pnpm add @nestjs/swagger');\n    }\n  } else {\n    result.skipped.push('swagger');\n  }\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Graceful Shutdown\n  // ─────────────────────────────────────────────────────────────────────────────\n  /* eslint-disable n/no-process-exit -- Graceful shutdown requires process.exit */\n  if (config.gracefulShutdown !== false) {\n    const timeout = config.shutdownTimeout ?? DEFAULTS.shutdownTimeout;\n\n    // Enable shutdown hooks\n    app.enableShutdownHooks();\n\n    // SIGTERM handler\n    process.on('SIGTERM', async () => {\n      logger.info('SIGTERM received, initiating graceful shutdown...');\n      const shutdownTimer = setTimeout(() => {\n        logger.warn('Graceful shutdown timeout, forcing exit');\n        process.exit(1);\n      }, timeout);\n\n      try {\n        await app.close();\n        clearTimeout(shutdownTimer);\n        logger.info('Graceful shutdown complete');\n        process.exit(0);\n      } catch (err) {\n        clearTimeout(shutdownTimer);\n        logger.error('Error during shutdown', { error: err });\n        process.exit(1);\n      }\n    });\n\n    // SIGINT handler (Ctrl+C)\n    process.on('SIGINT', async () => {\n      logger.info('SIGINT received, initiating graceful shutdown...');\n      const shutdownTimer = setTimeout(() => {\n        logger.warn('Graceful shutdown timeout, forcing exit');\n        process.exit(1);\n      }, timeout);\n\n      try {\n        await app.close();\n        clearTimeout(shutdownTimer);\n        logger.info('Graceful shutdown complete');\n        process.exit(0);\n      } catch (err) {\n        clearTimeout(shutdownTimer);\n        logger.error('Error during shutdown', { error: err });\n        process.exit(1);\n      }\n    });\n\n    result.enabled.push('gracefulShutdown');\n    logger.debug('Graceful shutdown handlers registered', { timeout });\n  }\n  /* eslint-enable n/no-process-exit */\n\n  // ─────────────────────────────────────────────────────────────────────────────\n  // Request Timeout (applied via middleware)\n  // ─────────────────────────────────────────────────────────────────────────────\n  if (config.timeout && config.timeout > 0) {\n    try {\n      const connectTimeout = await import('connect-timeout');\n      app.use(connectTimeout.default(`${config.timeout}ms`));\n      result.enabled.push('timeout');\n      logger.debug('Request timeout configured', { timeout: config.timeout });\n    } catch {\n      // connect-timeout is optional\n      result.skipped.push('timeout');\n    }\n  }\n\n  // Log summary\n  logger.info('NestJS app configured', {\n    enabled: result.enabled,\n    skipped: result.skipped.length > 0 ? result.skipped : undefined,\n    warnings: result.warnings.length > 0 ? result.warnings : undefined,\n  });\n\n  return result;\n}\n\n/**\n * Get default NestJS middleware configuration.\n * Use this as a base and override specific options.\n *\n * @param isProduction - Whether running in production\n * @returns Default configuration\n */\nexport function getDefaultNestJsConfig(isProduction = false): CoreNestJsMiddlewareConfig {\n  return {\n    compression: isProduction,\n    helmet: true,\n    rateLimit: isProduction ? DEFAULTS.rateLimit : false,\n    validation: DEFAULTS.validation,\n    bodyLimit: DEFAULTS.bodyLimit,\n    timeout: DEFAULTS.timeout,\n    rawBody: false,\n    swagger: { enabled: !isProduction, ...DEFAULTS.swagger },\n    globalPrefix: 'api',\n    excludeFromPrefix: ['health'],\n    gracefulShutdown: true,\n    shutdownTimeout: DEFAULTS.shutdownTimeout,\n  };\n}\n","/**\n * Next.js Adapter\n *\n * Provides utilities for Next.js API routes with auto-initialization\n * and service injection.\n *\n * @example\n * ```typescript\n * // app/api/users/route.ts\n * import { createHandler } from '@plyaz/core/adapters';\n *\n * export const GET = createHandler(async ({ db, query }) => {\n *   const users = await db.list('users');\n *   return { users };\n * });\n *\n * export const POST = createHandler(async ({ db, body }) => {\n *   const user = await db.create('users', body);\n *   return { user, status: 201 };\n * });\n * ```\n */\n\nimport { Core } from '../init/CoreInitializer';\nimport { HTTP_STATUS } from '@plyaz/types';\nimport type {\n  CoreNextJsHandlerContext,\n  CoreNextJsHandler,\n  CoreNextJsHandlerOptions,\n  CoreNextJsHandlerResult,\n} from '@plyaz/types/core';\n\n/**\n * Parse query parameters from URL\n */\nfunction parseQuery(url: string): Record<string, string | string[]> {\n  const query: Record<string, string | string[]> = {};\n  const searchParams = new URL(url).searchParams;\n\n  for (const [key, value] of searchParams.entries()) {\n    const existing = query[key];\n    if (existing) {\n      query[key] = Array.isArray(existing) ? [...existing, value] : [existing, value];\n    } else {\n      query[key] = value;\n    }\n  }\n\n  return query;\n}\n\n/**\n * Parse headers from Request\n */\nfunction parseHeaders(request: Request): Record<string, string> {\n  const headers: Record<string, string> = {};\n  request.headers.forEach((value, key) => {\n    headers[key] = value;\n  });\n  return headers;\n}\n\n/**\n * Create a Next.js route handler with auto-initialization and service injection\n *\n * @example Basic usage\n * ```typescript\n * // app/api/users/route.ts\n * import { createHandler } from '@plyaz/core/adapters';\n *\n * export const GET = createHandler(async ({ db }) => {\n *   const users = await db.list('users');\n *   return { users };\n * });\n * ```\n *\n * @example With params and custom status\n * ```typescript\n * // app/api/users/[id]/route.ts\n * export const GET = createHandler(async ({ db, params }) => {\n *   const user = await db.get('users', params.id);\n *   if (!user) {\n *     return { error: 'Not found', status: 404 };\n *   }\n *   return { user };\n * });\n * ```\n *\n * @example With body parsing\n * ```typescript\n * export const POST = createHandler(async ({ db, body }) => {\n *   const user = await db.create('users', body);\n *   return { user, status: 201 };\n * });\n * ```\n *\n * @example Return raw Response\n * ```typescript\n * export const GET = createHandler(async ({ db }) => {\n *   const data = await db.list('files');\n *   return new Response(JSON.stringify(data), {\n *     headers: { 'Content-Type': 'application/json' },\n *   });\n * });\n * ```\n */\n/** Parse request body for mutation methods */\nasync function parseRequestBody(request: Request): Promise<unknown> {\n  if (!['POST', 'PUT', 'PATCH'].includes(request.method)) {\n    return undefined;\n  }\n  try {\n    return await request.json();\n  } catch {\n    return undefined;\n  }\n}\n\n/** Build handler context from request */\nasync function buildHandlerContext(\n  request: Request,\n  context?: { params?: Record<string, string> }\n): Promise<CoreNextJsHandlerContext> {\n  return {\n    db: Core.db,\n    params: context?.params ?? {},\n    query: parseQuery(request.url),\n    body: await parseRequestBody(request),\n    headers: parseHeaders(request),\n    request,\n  };\n}\n\n/** Create JSON response from handler result */\nfunction createJsonResponse(result: Response | CoreNextJsHandlerResult): Response {\n  if (result instanceof Response) {\n    return result;\n  }\n\n  const { status = 200, headers: resultHeaders, ...responseBody } = result;\n  return new Response(JSON.stringify(responseBody), {\n    status,\n    headers: { 'Content-Type': 'application/json', ...resultHeaders },\n  });\n}\n\n/** Create error response */\nfunction createErrorResponse(error: unknown): Response {\n  console.error('[Next.js Handler Error]', error);\n  const message = error instanceof Error ? error.message : 'Internal Server Error';\n  const status = (error as { status?: number }).status ?? HTTP_STATUS.INTERNAL_SERVER_ERROR;\n\n  return new Response(JSON.stringify({ error: message }), {\n    status,\n    headers: { 'Content-Type': 'application/json' },\n  });\n}\n\nexport function createHandler(\n  handler: CoreNextJsHandler,\n  options?: CoreNextJsHandlerOptions\n): (request: Request, context?: { params?: Record<string, string> }) => Promise<Response> {\n  return async (request: Request, context?: { params?: Record<string, string> }) => {\n    try {\n      if (!Core.isInitialized) {\n        await Core.initialize(options?.coreOptions ?? {});\n      }\n\n      const ctx = await buildHandlerContext(request, context);\n      const result = await handler(ctx);\n      return createJsonResponse(result);\n    } catch (error) {\n      return createErrorResponse(error);\n    }\n  };\n}\n\n// Re-export for convenience\nexport { createHandler as nextHandler };\n","/**\n * NestJS Framework Adapter\n *\n * Provides CoreModule for NestJS dependency injection.\n * Initializes core services (db, env) for use across NestJS modules.\n */\n\nimport type { DynamicModule } from '@nestjs/common';\nimport { DbService } from '../services/DbService';\nimport type { CoreDbServiceConfig } from '../services/DbService';\nimport type { CoreNestJsModuleOptions, CoreNestJsModuleAsyncOptions } from '@plyaz/types/core';\nimport { config as loadDotenv } from 'dotenv';\n\n/**\n * Core module options for NestJS\n * Extended with specific DbServiceConfig type\n */\ninterface CoreModuleOptions extends Omit<CoreNestJsModuleOptions, 'db'> {\n  /** Database configuration */\n  db?: CoreDbServiceConfig;\n}\n\n/**\n * Async options for CoreModule\n * Extended with specific CoreModuleOptions type\n */\ninterface CoreModuleAsyncOptions extends Omit<CoreNestJsModuleAsyncOptions, 'useFactory'> {\n  useFactory: (...args: unknown[]) => CoreModuleOptions | Promise<CoreModuleOptions>;\n}\n\n/**\n * Injection tokens for Core services\n */\nexport const CORE_DB_SERVICE = 'CORE_DB_SERVICE';\nexport const CORE_ENV = 'CORE_ENV';\nexport const CORE_OPTIONS = 'CORE_OPTIONS';\n\n/**\n * CoreModule for NestJS\n *\n * Provides Core services (DbService, etc.) via NestJS dependency injection.\n * Import additional modules (FeatureFlagModule, etc.) separately.\n *\n * @example\n * ```typescript\n * import { Module } from '@nestjs/common';\n * import { CoreModule } from '@plyaz/core/adapters';\n * import { FeatureFlagModule } from '@plyaz/core/backend/featureFlags';\n *\n * @Module({\n *   imports: [\n *     CoreModule.forRoot({ envPath: '.env' }),\n *     FeatureFlagModule.forRoot({ provider: 'database' }), // Auto-receives DbService\n *   ],\n * })\n * export class AppModule {}\n * ```\n *\n * @example Async configuration\n * ```typescript\n * CoreModule.forRootAsync({\n *   imports: [ConfigModule],\n *   inject: [ConfigService],\n *   useFactory: (config: ConfigService) => ({\n *     db: {\n *       adapter: 'drizzle',\n *       drizzle: {\n *         connectionString: config.get('DATABASE_URL'),\n *       },\n *     },\n *   }),\n * })\n * ```\n */\nexport const CoreModule = {\n  /**\n   * Register CoreModule with static configuration\n   */\n  forRoot(options: CoreModuleOptions = {}): DynamicModule {\n    const isGlobal = options.isGlobal ?? true;\n\n    return {\n      module: CoreModuleClass,\n      global: isGlobal,\n      providers: [\n        {\n          provide: CORE_OPTIONS,\n          useValue: options,\n        },\n        {\n          provide: CORE_ENV,\n          useFactory: () => {\n            if (options.envPath) {\n              loadDotenv({ path: options.envPath });\n            }\n            return process.env;\n          },\n        },\n        {\n          provide: CORE_DB_SERVICE,\n          useFactory: async () => {\n            if (options.db) {\n              return DbService.initialize(options.db);\n            }\n            return null;\n          },\n        },\n        {\n          provide: DbService,\n          useFactory: () => DbService.getInstance(),\n        },\n      ],\n      exports: [CORE_DB_SERVICE, CORE_ENV, CORE_OPTIONS, DbService],\n    };\n  },\n\n  /**\n   * Register CoreModule with async configuration\n   */\n  forRootAsync(options: CoreModuleAsyncOptions): DynamicModule {\n    const isGlobal = options.isGlobal ?? true;\n\n    return {\n      module: CoreModuleClass,\n      global: isGlobal,\n      imports: options.imports ?? [],\n      providers: [\n        {\n          provide: CORE_OPTIONS,\n          inject: options.inject ?? [],\n          useFactory: options.useFactory,\n        },\n        {\n          provide: CORE_ENV,\n          inject: [CORE_OPTIONS],\n          useFactory: (coreOptions: CoreModuleOptions) => {\n            if (coreOptions.envPath) {\n              loadDotenv({ path: coreOptions.envPath });\n            }\n            return process.env;\n          },\n        },\n        {\n          provide: CORE_DB_SERVICE,\n          inject: [CORE_OPTIONS],\n          useFactory: async (coreOptions: CoreModuleOptions) => {\n            if (coreOptions.db) {\n              return DbService.initialize(coreOptions.db);\n            }\n            return null;\n          },\n        },\n        {\n          provide: DbService,\n          useFactory: () => DbService.getInstance(),\n        },\n      ],\n      exports: [CORE_DB_SERVICE, CORE_ENV, CORE_OPTIONS, DbService],\n    };\n  },\n};\n\n/**\n * Empty class for module reference\n * NestJS requires a class for the module property\n */\nclass CoreModuleClass {}\n"]}