{"version":3,"sources":["../../../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","../../../src/utils/common/id.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/config/dependencies.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/StreamServer.ts","../../../src/events/streaming/StreamRegistry.ts","../../../src/utils/runtime.ts","../../../src/init/CoreInitializer.ts","../../../src/init/nestjs/configureNestApp.ts","../../../src/init/nestjs/CoreModule.ts","../../../src/services/DbService.ts","../../../src/init/nestjs/StreamingController.ts","../../../src/init/nestjs/StreamingModule.ts","../../../src/init/nestjs/index.ts"],"names":["v","state","d","b","__assign","o","Reflect","hasOwn","ownKeys","metadataRegistry","metadata","OrdinaryDefineOwnMetadata","OrdinaryHasOwnMetadata","OrdinaryGetOwnMetadata","OrdinaryOwnMetadataKeys","defineMetadata","hasOwnMetadata","getOwnMetadata","getOwnMetadataKeys","deleteMetadata","MapIterator","Map","Set","WeakMap","exports","Controller","Inject","Global","RequestMethod","RouteParamtypes","Response","HttpStatus","ShutdownSignal","VersioningType","logger","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","i","Subject","AnonymousSubject","DEFAULT_CONFIG","NotificationKind","Notification","ConnectableObservable","BehaviorSubject","AsyncSubject","ReplaySubject","_a","TimeInterval","window","sourceIndex","require_decorators","EventEmitter","PRODUCTION_CONFIG","STAGING_CONFIG","DEVELOPMENT_CONFIG","setDefaultApiClient","ApiPackageError","PACKAGE_STATUS_CODES","API_ERROR_CODES","OPERATIONS","generateRequestId","ERROR_CODES","ERROR_CATEGORY","HTTP_STATUS","CORE_EVENTS","mergeConfigs","createApiClient","PackageLogger","errors","CorePackageError","OBSERVABILITY_METRICS","BACKEND_RUNTIMES","UNIVERSAL_RUNTIMES","DbService","FRONTEND_RUNTIMES","TIME_CONSTANTS","DEFAULT_STALE_MINUTES","DEFAULT_MAX_STALE_AGE","StreamPackageError","STREAM_ERROR_CODES","STREAMING_DEFAULTS","CoreLogger","STORE_KEYS","clearEventEmitter","BaseError","createStandaloneFeatureFlagStore","initializeErrorSystem","setEventEmitter","initializeGlobalErrorHandler","import_common","config","isProduction","createNestJsExceptionFilter","document","createDatabaseService","DatabasePackageError","DATABASE_ERROR_CODES","StreamingController","CoreModule","configureNestApp"],"mappings":"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","file":"index.cjs","sourcesContent":["/******************************************************************************\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","/**\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","/**\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 * 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","// 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 * 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 * 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 * 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 * 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 * NestJS Module for @plyaz/core\n *\n * Provides dependency injection integration for NestJS applications.\n * Supports optional streaming integration when streaming config is provided.\n *\n * @example\n * ```typescript\n * // app.module.ts\n * import { CoreModule } from '@plyaz/core/nestjs';\n *\n * @Module({\n *   imports: [\n *     CoreModule.forRoot({\n *       envPath: '.env',\n *       db: { adapter: 'sql' },\n *     }),\n *   ],\n * })\n * export class AppModule {}\n * ```\n *\n * @example With streaming\n * ```typescript\n * CoreModule.forRoot({\n *   db: { adapter: 'sql' },\n *   streaming: {\n *     enabled: true,\n *     server: { heartbeatInterval: 30000 },\n *   },\n * })\n * ```\n *\n * @example Async configuration\n * ```typescript\n * CoreModule.forRootAsync({\n *   imports: [ConfigModule],\n *   useFactory: (config: ConfigService) => ({\n *     db: {\n *       adapter: 'sql',\n *       sql: { connectionString: config.get('DATABASE_URL') },\n *     },\n *   }),\n *   inject: [ConfigService],\n * })\n * ```\n */\n\nimport { Global, type DynamicModule, type Provider, type Type } from '@nestjs/common';\nimport { Core, type CoreInitOptions } from '../CoreInitializer';\nimport { DbService } from '../../services/DbService';\nimport type { CoreNestJsCoreModuleAsyncOptions } from '@plyaz/types/core';\nimport { STREAM_SERVER, StreamingController } from './StreamingController';\nimport type { StreamServer } from '../../events/streaming/StreamServer';\n\n/**\n * Injection tokens for Core services\n */\nexport const CORE_OPTIONS = Symbol('CORE_OPTIONS');\nexport const DB_SERVICE = Symbol('DB_SERVICE');\n\n/**\n * Async configuration options for CoreModule\n * Uses CoreInitOptions for type safety with Core.initialize()\n */\ntype CoreModuleAsyncOptions = CoreNestJsCoreModuleAsyncOptions;\n\n/**\n * CoreModule - NestJS DI module for @plyaz/core\n *\n * Features:\n * - Database service injection\n * - Optional streaming integration\n * - Full Core.initialize() orchestration\n * - Global module - providers available throughout the app\n */\n@Global()\nexport class CoreModule {\n  /**\n   * Register CoreModule with static configuration\n   */\n  static forRoot(options: CoreInitOptions = {}): DynamicModule {\n    const streamingEnabled = options.streaming?.enabled === true;\n    const controllers: Type[] = streamingEnabled ? [StreamingController] : [];\n    // Use symbols for exports to avoid private constructor type issues\n    const moduleExports: symbol[] = [DB_SERVICE, CORE_OPTIONS];\n\n    const providers: Provider[] = [\n      {\n        provide: CORE_OPTIONS,\n        useValue: options,\n      },\n      // DB_SERVICE provider - expects Core.initialize() to be called in main.ts BEFORE NestFactory.create()\n      // This avoids module duplication issues with local linked packages\n      {\n        provide: DB_SERVICE,\n        useFactory: () => {\n          if (!Core.isInitialized) {\n            throw new Error(\n              'Core not initialized. Call Core.initialize() in main.ts before NestFactory.create(). ' +\n                'Import from @plyaz/core/backend to register backend dependencies.'\n            );\n          }\n          return Core.db;\n        },\n      },\n      // Alias for class-based injection\n      {\n        provide: DbService,\n        useExisting: DB_SERVICE,\n      },\n    ];\n\n    // Add streaming provider if enabled\n    if (streamingEnabled) {\n      providers.push({\n        provide: STREAM_SERVER,\n        useFactory: (): StreamServer | null => Core.streamServer,\n        inject: [DB_SERVICE], // Wait for initialization via DB_SERVICE\n      });\n      moduleExports.push(STREAM_SERVER);\n    }\n\n    return {\n      module: CoreModule,\n      global: true,\n      controllers,\n      providers,\n      exports: moduleExports,\n    };\n  }\n\n  /**\n   * Register CoreModule with async configuration\n   */\n  static forRootAsync(options: CoreModuleAsyncOptions): DynamicModule {\n    // Note: For async, we can't know if streaming is enabled at module definition time\n    // Users should use StreamingModule.forRootAsync() for async streaming config\n    const providers: Provider[] = [\n      {\n        provide: CORE_OPTIONS,\n        useFactory: options.useFactory,\n        inject: options.inject ?? [],\n      },\n      // DB_SERVICE provider - expects Core.initialize() to be called in main.ts\n      {\n        provide: DB_SERVICE,\n        useFactory: () => {\n          if (!Core.isInitialized) {\n            throw new Error(\n              'Core not initialized. Call Core.initialize() in main.ts before NestFactory.create(). ' +\n                'Import from @plyaz/core/backend to register backend dependencies.'\n            );\n          }\n          return Core.db;\n        },\n      },\n      // Alias for class-based injection\n      {\n        provide: DbService,\n        useExisting: DB_SERVICE,\n      },\n      // Add streaming provider for async (will be null if not configured)\n      {\n        provide: STREAM_SERVER,\n        useFactory: (): StreamServer | null => Core.streamServer,\n        inject: [DB_SERVICE], // Wait for initialization via DB_SERVICE\n      },\n    ];\n\n    return {\n      module: CoreModule,\n      global: true,\n      imports: options.imports ?? [],\n      providers,\n      exports: [DB_SERVICE, CORE_OPTIONS, STREAM_SERVER],\n    };\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 * NestJS Streaming Controller\n *\n * SSE streaming controller for NestJS applications.\n * Provides the /events/stream endpoint for real-time updates.\n *\n * @example\n * ```typescript\n * // Automatically included when using StreamingModule\n * @Module({\n *   imports: [StreamingModule.forRoot()],\n * })\n * export class AppModule {}\n *\n * // Or import directly for custom routing\n * @Module({\n *   controllers: [StreamingController],\n *   providers: [{ provide: STREAM_SERVER, useValue: streamServer }],\n * })\n * export class CustomStreamingModule {}\n * ```\n */\n\nimport { Controller, Get, Req, Res, Inject } from '@nestjs/common';\nimport type { Request, Response } from 'express';\nimport type { StreamServer } from '../../events/streaming/StreamServer';\nimport type { NestJSHandler } from '../../events/streaming/frameworks';\n\n/**\n * Injection token for StreamServer\n */\nexport const STREAM_SERVER = Symbol('STREAM_SERVER');\n\n/**\n * StreamingController - NestJS SSE endpoint controller\n *\n * Handles GET /events/stream requests using the StreamServer's NestJS adapter.\n */\n@Controller('events')\nexport class StreamingController {\n  constructor(\n    @Inject(STREAM_SERVER)\n    private readonly streamServer: StreamServer\n  ) {}\n\n  /**\n   * SSE streaming endpoint\n   *\n   * Clients connect to this endpoint to receive real-time updates.\n   * Supports channel subscription via query params: ?channels=uploads,system\n   *\n   * @param req - NestJS/Express request\n   * @param res - NestJS/Express response\n   */\n  @Get('stream')\n  async stream(@Req() req: Request, @Res() res: Response): Promise<void> {\n    const handler = this.streamServer.getHandler<NestJSHandler>('nestjs');\n    await handler(req, res);\n  }\n}\n","/**\n * NestJS Streaming Module\n *\n * Provides SSE streaming integration for NestJS applications.\n * Can be used standalone or integrated with CoreModule.\n *\n * @example Standalone usage\n * ```typescript\n * import { StreamingModule } from '@plyaz/core/nestjs';\n * import { FilesStreamEndpoint, SystemStreamEndpoint } from '@plyaz/core/streaming';\n *\n * @Module({\n *   imports: [\n *     StreamingModule.forRoot({\n *       server: { heartbeatInterval: 30000 },\n *       endpoints: [\n *         { endpoint: FilesStreamEndpoint, config: { enabled: true } },\n *         { endpoint: SystemStreamEndpoint, config: { enabled: true } },\n *       ],\n *     }),\n *   ],\n * })\n * export class AppModule {}\n * ```\n *\n * @example Async configuration\n * ```typescript\n * StreamingModule.forRootAsync({\n *   imports: [ConfigModule],\n *   useFactory: (config: ConfigService) => ({\n *     server: {\n *       heartbeatInterval: config.get('STREAM_HEARTBEAT_INTERVAL'),\n *     },\n *     endpoints: [...],\n *   }),\n *   inject: [ConfigService],\n * })\n * ```\n */\n\nimport type {\n  DynamicModule,\n  Provider,\n  OnModuleDestroy,\n  InjectionToken,\n  OptionalFactoryDependency,\n  Type,\n  ForwardReference,\n} from '@nestjs/common';\nimport { StreamServer, StreamRegistry } from '../../events/streaming';\nimport { STREAMING_DEFAULTS } from '@plyaz/config/streaming';\nimport type { StreamingModuleConfig, StreamingModuleAsyncOptions } from '@plyaz/types/core';\nimport { StreamingController, STREAM_SERVER } from './StreamingController';\n\n/**\n * StreamingModule - NestJS streaming integration\n *\n * Provides:\n * - StreamServer instance with SSE transport\n * - StreamingController for /events/stream endpoint\n * - StreamRegistry initialization with endpoints\n * - Automatic cleanup on module destroy\n */\nexport class StreamingModule implements OnModuleDestroy {\n  private static streamServer: StreamServer | null = null;\n\n  async onModuleDestroy(): Promise<void> {\n    if (StreamingModule.streamServer) {\n      StreamingModule.streamServer.dispose();\n      StreamingModule.streamServer = null;\n    }\n    StreamRegistry.dispose();\n  }\n\n  /**\n   * Register StreamingModule with static configuration\n   */\n  static forRoot(config: StreamingModuleConfig = {}): DynamicModule {\n    const includeController = config.includeController !== false;\n\n    const providers: Provider[] = [\n      {\n        provide: STREAM_SERVER,\n        useFactory: async (): Promise<StreamServer> => {\n          return StreamingModule.initializeStreamServer(config);\n        },\n      },\n    ];\n\n    return {\n      module: StreamingModule,\n      global: config.isGlobal !== false,\n      controllers: includeController ? [StreamingController] : [],\n      providers,\n      exports: [STREAM_SERVER],\n    };\n  }\n\n  /**\n   * Register StreamingModule with async configuration\n   */\n  static forRootAsync(options: StreamingModuleAsyncOptions): DynamicModule {\n    const includeController = options.includeController !== false;\n\n    const configProvider: Provider = {\n      provide: 'STREAMING_MODULE_CONFIG',\n      useFactory: options.useFactory,\n      inject: (options.inject ?? []) as (InjectionToken | OptionalFactoryDependency)[],\n    };\n\n    const streamServerProvider: Provider = {\n      provide: STREAM_SERVER,\n      useFactory: async (config: StreamingModuleConfig): Promise<StreamServer> => {\n        return StreamingModule.initializeStreamServer(config);\n      },\n      inject: ['STREAMING_MODULE_CONFIG'],\n    };\n\n    return {\n      module: StreamingModule,\n      global: options.isGlobal !== false,\n      imports: (options.imports ?? []) as (\n        | Type\n        | DynamicModule\n        | Promise<DynamicModule>\n        | ForwardReference\n      )[],\n      controllers: includeController ? [StreamingController] : [],\n      providers: [configProvider, streamServerProvider],\n      exports: [STREAM_SERVER],\n    };\n  }\n\n  /**\n   * Initialize StreamServer with configuration\n   */\n  // eslint-disable-next-line complexity\n  private static async initializeStreamServer(\n    config: StreamingModuleConfig\n  ): Promise<StreamServer> {\n    // Dispose existing server if any\n    if (StreamingModule.streamServer) {\n      StreamingModule.streamServer.dispose();\n    }\n\n    // Create stream server\n    const builder = StreamServer.create().withSSE({\n      heartbeatInterval:\n        config.server?.broadcaster?.heartbeatInterval ?? STREAMING_DEFAULTS.HEARTBEAT_INTERVAL_MS,\n    });\n\n    // Set default channels\n    const defaultChannels = config.server?.defaultChannels ?? STREAMING_DEFAULTS.DEFAULT_CHANNELS;\n    builder.withDefaultChannels(defaultChannels as never[]);\n\n    const streamServer = builder.build();\n    streamServer.initialize();\n    StreamingModule.streamServer = streamServer;\n\n    // Initialize endpoints if provided\n    if (config.endpoints?.length) {\n      await StreamRegistry.initialize({\n        broadcaster: streamServer.getBroadcaster(),\n        endpoints: config.endpoints,\n      });\n    }\n\n    return streamServer;\n  }\n\n  /**\n   * Get the current StreamServer instance (for testing/debugging)\n   */\n  static getStreamServer(): StreamServer | null {\n    return StreamingModule.streamServer;\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"]}