diff --git a/en/api/@connectum/events-amqp/index.md b/en/api/@connectum/events-amqp/index.md index 8a69147..d5f43f9 100644 --- a/en/api/@connectum/events-amqp/index.md +++ b/en/api/@connectum/events-amqp/index.md @@ -4,6 +4,7 @@ ## Modules +- [testing](testing/index.md) - [types](types/index.md) ## Classes diff --git a/en/api/@connectum/events-amqp/testing/functions/FakeAmqpAdapter.md b/en/api/@connectum/events-amqp/testing/functions/FakeAmqpAdapter.md new file mode 100644 index 0000000..8b47c45 --- /dev/null +++ b/en/api/@connectum/events-amqp/testing/functions/FakeAmqpAdapter.md @@ -0,0 +1,37 @@ +[Connectum API Reference](../../../../index.md) / [@connectum/events-amqp](../../index.md) / [testing](../index.md) / FakeAmqpAdapter + +# Function: FakeAmqpAdapter() + +> **FakeAmqpAdapter**(`options?`): [`FakeAmqpAdapterInstance`](../interfaces/FakeAmqpAdapterInstance.md) + +Defined in: [packages/events-amqp/src/testing.ts:192](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L192) + +Create a programmable AMQP adapter test double. + +## Parameters + +### options? + +[`FakeAmqpAdapterOptions`](../interfaces/FakeAmqpAdapterOptions.md) = `{}` + +## Returns + +[`FakeAmqpAdapterInstance`](../interfaces/FakeAmqpAdapterInstance.md) + +## Example + +```typescript +import { FakeAmqpAdapter } from '@connectum/events-amqp/testing'; +import { AmqpPublishTimeoutError } from '@connectum/events-amqp'; + +const fake = FakeAmqpAdapter(); +const bus = createEventBus({ adapter: fake, routes: [eventRoutes] }); +await bus.start(); + +// The state-UNKNOWN outcome, untestable against a real broker: +fake.control.nextPublish(new AmqpPublishTimeoutError('no outcome (UNKNOWN)')); +await assert.rejects(() => bus.publish(OrderSchema, order), AmqpPublishTimeoutError); + +fake.control.dropConnection(); // disconnected → reconnecting +fake.control.completeRecovery(); // connected { reconnected: true } +``` diff --git a/en/api/@connectum/events-amqp/testing/index.md b/en/api/@connectum/events-amqp/testing/index.md new file mode 100644 index 0000000..a0bfe4f --- /dev/null +++ b/en/api/@connectum/events-amqp/testing/index.md @@ -0,0 +1,58 @@ +[Connectum API Reference](../../../index.md) / [@connectum/events-amqp](../index.md) / testing + +# testing + +Programmable AMQP test double — the `@connectum/events-amqp/testing` subpath (#203). + +`FakeAmqpAdapter` models the REAL adapter's observable contracts without a +broker and without importing `amqplib` at runtime: + +- the typed error taxonomy (`AmqpConnectionError`, `AmqpTopologyError`, …) — + inject outcomes per publish via [FakeAmqpControl.nextPublish](interfaces/FakeAmqpControl.md#nextpublish), + including `AmqpPublishTimeoutError`: the state-UNKNOWN outcome that no + real broker (or even Toxiproxy) reproduces deterministically; +- the canonical lifecycle union ([AmqpLifecycleCallbacks.onLifecycle](../types/interfaces/AmqpLifecycleCallbacks.md#onlifecycle)) + INCLUDING the deprecated flat-callback shim — events go through the real + adapter's dispatch, so ordering, shim payloads, and exception isolation + match the real adapter by construction; +- the state machine: `connect()` on a live or recovering (or dead + retries-exhausted) adapter throws `already connected` like the real one; + a mid-recovery `subscribe()` PARKS and settles with the recovery outcome; + the probe-then-recover `connect()` semantics gate on `AmqpTopologyError` + exactly like the real probe. + +Deliberately NOT modeled (documented divergences): +- timing: there is no backoff — recovery advances only via explicit + [FakeAmqpControl.completeRecovery](interfaces/FakeAmqpControl.md#completerecovery) / [FakeAmqpControl.exhaustRecovery](interfaces/FakeAmqpControl.md#exhaustrecovery) + calls, and `reconnecting.delay` is always `0`; +- a queued topology `failSetup` at `connect()` WITHOUT fail-fast reports + `setup-failed { initial: true }` and then connects anyway (the real + adapter would keep retrying inside recovery); a NON-topology queued + failure at `connect()` is consumed silently and the connect proceeds + (the real adapter treats it as transient and blocks in recovery); +- broker-driven settlement: handler `ack`/`nack` calls are RECORDED (see + the [FakeAmqpControl.deliver](interfaces/FakeAmqpControl.md#deliver) result) but do not drive redelivery — + re-deliver explicitly with a higher `attempt` to model it. Handler + rejections are swallowed exactly like the real consumer (which nacks for + redelivery instead of propagating); +- the wire-level envelope: [FakeAmqpControl.published](interfaces/FakeAmqpControl.md#published) records the + bus-facing call as the adapter received it. Wire fidelity is the real + adapter's integration-tested domain. Incoming envelope headers ARE + handled with parity: `deliver()` honors `x-event-id`/`x-published-at` + and strips the internal keys from handler-visible metadata. + +## Interfaces + +- [FakeAmqpAdapterInstance](interfaces/FakeAmqpAdapterInstance.md) +- [FakeAmqpAdapterOptions](interfaces/FakeAmqpAdapterOptions.md) +- [FakeAmqpControl](interfaces/FakeAmqpControl.md) +- [FakeDeliveryResult](interfaces/FakeDeliveryResult.md) +- [FakePublishedRecord](interfaces/FakePublishedRecord.md) + +## Type Aliases + +- [FakePublishOutcome](type-aliases/FakePublishOutcome.md) + +## Functions + +- [FakeAmqpAdapter](functions/FakeAmqpAdapter.md) diff --git a/en/api/@connectum/events-amqp/testing/interfaces/FakeAmqpAdapterInstance.md b/en/api/@connectum/events-amqp/testing/interfaces/FakeAmqpAdapterInstance.md new file mode 100644 index 0000000..0f1514c --- /dev/null +++ b/en/api/@connectum/events-amqp/testing/interfaces/FakeAmqpAdapterInstance.md @@ -0,0 +1,143 @@ +[Connectum API Reference](../../../../index.md) / [@connectum/events-amqp](../../index.md) / [testing](../index.md) / FakeAmqpAdapterInstance + +# Interface: FakeAmqpAdapterInstance + +Defined in: [packages/events-amqp/src/testing.ts:144](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L144) + +The fake adapter: a drop-in EventAdapter plus its [FakeAmqpControl](FakeAmqpControl.md). + +## Extends + +- `EventAdapter` + +## Properties + +### control + +> `readonly` **control**: [`FakeAmqpControl`](FakeAmqpControl.md) + +Defined in: [packages/events-amqp/src/testing.ts:145](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L145) + +*** + +### name + +> `readonly` **name**: `string` + +Defined in: packages/events/dist/index.d.ts:105 + +Adapter name for identification (e.g., "nats", "kafka", "redis", "memory") + +#### Inherited from + +`EventAdapter.name` + +## Methods + +### connect() + +> **connect**(`context?`): `Promise`\<`void`\> + +Defined in: packages/events/dist/index.d.ts:113 + +Connect to the message broker. + +#### Parameters + +##### context? + +`AdapterContext` + +Optional adapter context with service-level information + derived from proto service descriptors. Adapters may use + `context.serviceName` for broker-level client identification. + +#### Returns + +`Promise`\<`void`\> + +#### Inherited from + +`EventAdapter.connect` + +*** + +### disconnect() + +> **disconnect**(): `Promise`\<`void`\> + +Defined in: packages/events/dist/index.d.ts:115 + +Disconnect from the message broker + +#### Returns + +`Promise`\<`void`\> + +#### Inherited from + +`EventAdapter.disconnect` + +*** + +### publish() + +> **publish**(`eventType`, `payload`, `options?`): `Promise`\<`void`\> + +Defined in: packages/events/dist/index.d.ts:117 + +Publish a serialized event to a topic + +#### Parameters + +##### eventType + +`string` + +##### payload + +`Uint8Array` + +##### options? + +`PublishOptions` + +#### Returns + +`Promise`\<`void`\> + +#### Inherited from + +`EventAdapter.publish` + +*** + +### subscribe() + +> **subscribe**(`patterns`, `handler`, `options?`): `Promise`\<`EventSubscription`\> + +Defined in: packages/events/dist/index.d.ts:119 + +Subscribe to event patterns with a raw handler + +#### Parameters + +##### patterns + +`string`[] + +##### handler + +`RawEventHandler` + +##### options? + +`RawSubscribeOptions` + +#### Returns + +`Promise`\<`EventSubscription`\> + +#### Inherited from + +`EventAdapter.subscribe` diff --git a/en/api/@connectum/events-amqp/testing/interfaces/FakeAmqpAdapterOptions.md b/en/api/@connectum/events-amqp/testing/interfaces/FakeAmqpAdapterOptions.md new file mode 100644 index 0000000..03b1580 --- /dev/null +++ b/en/api/@connectum/events-amqp/testing/interfaces/FakeAmqpAdapterOptions.md @@ -0,0 +1,28 @@ +[Connectum API Reference](../../../../index.md) / [@connectum/events-amqp](../../index.md) / [testing](../index.md) / FakeAmqpAdapterOptions + +# Interface: FakeAmqpAdapterOptions + +Defined in: [packages/events-amqp/src/testing.ts:53](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L53) + +Options for [FakeAmqpAdapter](../functions/FakeAmqpAdapter.md). + +## Properties + +### failFastOnInitialSetupError? + +> `readonly` `optional` **failFastOnInitialSetupError?**: `boolean` + +Defined in: [packages/events-amqp/src/testing.ts:60](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L60) + +Mirror of the real option: a topology `failSetup(...)` queued before +`connect()` rejects it with the typed error instead of report-and-proceed. + +*** + +### lifecycle? + +> `readonly` `optional` **lifecycle?**: [`AmqpLifecycleCallbacks`](../../types/interfaces/AmqpLifecycleCallbacks.md) + +Defined in: [packages/events-amqp/src/testing.ts:55](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L55) + +The same lifecycle surface as the real adapter (union + flat shim). diff --git a/en/api/@connectum/events-amqp/testing/interfaces/FakeAmqpControl.md b/en/api/@connectum/events-amqp/testing/interfaces/FakeAmqpControl.md new file mode 100644 index 0000000..a62fd04 --- /dev/null +++ b/en/api/@connectum/events-amqp/testing/interfaces/FakeAmqpControl.md @@ -0,0 +1,204 @@ +[Connectum API Reference](../../../../index.md) / [@connectum/events-amqp](../../index.md) / [testing](../index.md) / FakeAmqpControl + +# Interface: FakeAmqpControl + +Defined in: [packages/events-amqp/src/testing.ts:88](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L88) + +Deterministic control surface of the fake. + +## Properties + +### published + +> `readonly` **published**: readonly [`FakePublishedRecord`](FakePublishedRecord.md)[] + +Defined in: [packages/events-amqp/src/testing.ts:130](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L130) + +Successfully acked publishes, in order. + +## Methods + +### block() + +> **block**(`reason?`): `void` + +Defined in: [packages/events-amqp/src/testing.ts:120](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L120) + +Broker flow control: `blocked { reason }` / `unblocked` (union-only events). + +#### Parameters + +##### reason? + +`string` + +#### Returns + +`void` + +*** + +### completeRecovery() + +> **completeRecovery**(): `void` + +Defined in: [packages/events-amqp/src/testing.ts:111](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L111) + +Advance a pending recovery: consumes a queued `failSetup` (reported per +its gating, stays recovering) or, with nothing queued, completes with +`connected { reconnected: true }` and settles parked subscribes. + +#### Returns + +`void` + +*** + +### deliver() + +> **deliver**(`eventType`, `payload`, `options?`): `Promise`\<[`FakeDeliveryResult`](FakeDeliveryResult.md)\> + +Defined in: [packages/events-amqp/src/testing.ts:140](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L140) + +Deliver an event to matching subscriptions (NATS-style wildcard +matching, one consumer per distinct group — competing-consumer parity; +requires the connected state, like a real broker). Internal envelope +keys (`x-event-id`, `x-published-at`, `x-connectum-publish-id`) are +honored and stripped from handler-visible metadata, mirroring the real +consumer. Resolves with the settlement summary once every handler +settles; handler rejections are swallowed (counted in `failed`). + +#### Parameters + +##### eventType + +`string` + +##### payload + +`Uint8Array` + +##### options? + +###### attempt? + +`number` + +###### metadata? + +`Record`\<`string`, `string`\> + +#### Returns + +`Promise`\<[`FakeDeliveryResult`](FakeDeliveryResult.md)\> + +*** + +### dropConnection() + +> **dropConnection**(`error?`): `void` + +Defined in: [packages/events-amqp/src/testing.ts:105](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L105) + +Sever the connection: dispatches `disconnected { error }` then +`reconnecting { attempt: 1, delay: 0 }` and parks in the recovering +state — publishes fail fast with `AmqpConnectionError`, exactly like +the real adapter's recovery window; new `subscribe()` calls PARK. + +#### Parameters + +##### error? + +`Error` + +#### Returns + +`void` + +*** + +### exhaustRecovery() + +> **exhaustRecovery**(`error?`): `void` + +Defined in: [packages/events-amqp/src/testing.ts:118](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L118) + +Terminal outcome: `reconnect-failed { error }`. The dead adapter fails +publishes fast, rejects parked subscribes typed, and deactivates all +subscriptions (the cycle died — so did its consumers). Reconnect +requires `disconnect()` first, like the real retries-exhausted state. + +#### Parameters + +##### error? + +`Error` + +#### Returns + +`void` + +*** + +### failSetup() + +> **failSetup**(`error?`, `object?`): `void` + +Defined in: [packages/events-amqp/src/testing.ts:98](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L98) + +Queue a setup failure. An `AmqpTopologyError` (the default) follows the +real gating: `setup-failed { initial: true, attempt: 0 }` at `connect()` +(typed rejection under `failFastOnInitialSetupError`), or +`setup-failed { initial: false, attempt }` at the next +[completeRecovery](#completerecovery). A NON-topology error follows the real gating +too: no `setup-failed` event — at `connect()` it is consumed silently, +at `completeRecovery` it only schedules the next `reconnecting`. + +#### Parameters + +##### error? + +`Error` + +##### object? + +[`AmqpTopologyObject`](../../type-aliases/AmqpTopologyObject.md) + +#### Returns + +`void` + +*** + +### nextPublish() + +> **nextPublish**(...`outcomes`): `void` + +Defined in: [packages/events-amqp/src/testing.ts:128](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L128) + +Queue FIFO outcomes for upcoming `publish()` calls. An empty queue means +`"ack"`. Use the real error classes (`AmqpPublishNackError`, +`AmqpConnectionError`, `AmqpPublishTimeoutError` — the state-UNKNOWN +outcome only this fake reproduces deterministically, …). + +#### Parameters + +##### outcomes + +...[`FakePublishOutcome`](../type-aliases/FakePublishOutcome.md)[] + +#### Returns + +`void` + +*** + +### unblock() + +> **unblock**(): `void` + +Defined in: [packages/events-amqp/src/testing.ts:121](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L121) + +#### Returns + +`void` diff --git a/en/api/@connectum/events-amqp/testing/interfaces/FakeDeliveryResult.md b/en/api/@connectum/events-amqp/testing/interfaces/FakeDeliveryResult.md new file mode 100644 index 0000000..f4797bf --- /dev/null +++ b/en/api/@connectum/events-amqp/testing/interfaces/FakeDeliveryResult.md @@ -0,0 +1,57 @@ +[Connectum API Reference](../../../../index.md) / [@connectum/events-amqp](../../index.md) / [testing](../index.md) / FakeDeliveryResult + +# Interface: FakeDeliveryResult + +Defined in: [packages/events-amqp/src/testing.ts:74](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L74) + +Settlement summary of one [FakeAmqpControl.deliver](FakeAmqpControl.md#deliver) call. + +## Properties + +### acked + +> `readonly` **acked**: `number` + +Defined in: [packages/events-amqp/src/testing.ts:78](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L78) + +Handlers that called `ack()`. + +*** + +### delivered + +> `readonly` **delivered**: `number` + +Defined in: [packages/events-amqp/src/testing.ts:76](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L76) + +Handlers invoked (one per matching fan-out sub + one per distinct group). + +*** + +### failed + +> `readonly` **failed**: `number` + +Defined in: [packages/events-amqp/src/testing.ts:84](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L84) + +Handlers that rejected (swallowed, like the real consumer's nack-on-error path). + +*** + +### nacked + +> `readonly` **nacked**: `number` + +Defined in: [packages/events-amqp/src/testing.ts:80](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L80) + +Handlers that called `nack(false)`. + +*** + +### requeued + +> `readonly` **requeued**: `number` + +Defined in: [packages/events-amqp/src/testing.ts:82](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L82) + +Handlers that called `nack(true)` — model redelivery by delivering again with `attempt + 1`. diff --git a/en/api/@connectum/events-amqp/testing/interfaces/FakePublishedRecord.md b/en/api/@connectum/events-amqp/testing/interfaces/FakePublishedRecord.md new file mode 100644 index 0000000..c0dadd3 --- /dev/null +++ b/en/api/@connectum/events-amqp/testing/interfaces/FakePublishedRecord.md @@ -0,0 +1,31 @@ +[Connectum API Reference](../../../../index.md) / [@connectum/events-amqp](../../index.md) / [testing](../index.md) / FakePublishedRecord + +# Interface: FakePublishedRecord + +Defined in: [packages/events-amqp/src/testing.ts:67](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L67) + +A recorded successful publish, as the adapter received it from the bus. + +## Properties + +### eventType + +> `readonly` **eventType**: `string` + +Defined in: [packages/events-amqp/src/testing.ts:68](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L68) + +*** + +### options? + +> `readonly` `optional` **options?**: `PublishOptions` + +Defined in: [packages/events-amqp/src/testing.ts:70](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L70) + +*** + +### payload + +> `readonly` **payload**: `Uint8Array` + +Defined in: [packages/events-amqp/src/testing.ts:69](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L69) diff --git a/en/api/@connectum/events-amqp/testing/type-aliases/FakePublishOutcome.md b/en/api/@connectum/events-amqp/testing/type-aliases/FakePublishOutcome.md new file mode 100644 index 0000000..5b6723a --- /dev/null +++ b/en/api/@connectum/events-amqp/testing/type-aliases/FakePublishOutcome.md @@ -0,0 +1,9 @@ +[Connectum API Reference](../../../../index.md) / [@connectum/events-amqp](../../index.md) / [testing](../index.md) / FakePublishOutcome + +# Type Alias: FakePublishOutcome + +> **FakePublishOutcome** = `"ack"` \| `Error` + +Defined in: [packages/events-amqp/src/testing.ts:64](https://github.com/Connectum-Framework/connectum/blob/main/packages/events-amqp/src/testing.ts#L64) + +One publish outcome: `"ack"` resolves; an `Error` rejects the publish with it. diff --git a/en/api/typedoc-sidebar.json b/en/api/typedoc-sidebar.json index df0d183..af47095 100644 --- a/en/api/typedoc-sidebar.json +++ b/en/api/typedoc-sidebar.json @@ -1 +1 @@ -[{"text":"@connectum/auth","link":"/en/api/@connectum/auth/","collapsed":true,"items":[{"text":"Modules","collapsed":true,"items":[{"text":"proto","link":"/en/api/@connectum/auth/proto/","collapsed":true,"items":[{"text":"Type Aliases","collapsed":true,"items":[{"text":"AuthRequirements","link":"/en/api/@connectum/auth/proto/type-aliases/AuthRequirements.md"},{"text":"MethodAuth","link":"/en/api/@connectum/auth/proto/type-aliases/MethodAuth.md"},{"text":"ServiceAuth","link":"/en/api/@connectum/auth/proto/type-aliases/ServiceAuth.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"AuthRequirementsSchema","link":"/en/api/@connectum/auth/proto/variables/AuthRequirementsSchema.md"},{"text":"method_auth","link":"/en/api/@connectum/auth/proto/variables/method_auth.md"},{"text":"MethodAuthSchema","link":"/en/api/@connectum/auth/proto/variables/MethodAuthSchema.md"},{"text":"service_auth","link":"/en/api/@connectum/auth/proto/variables/service_auth.md"},{"text":"ServiceAuthSchema","link":"/en/api/@connectum/auth/proto/variables/ServiceAuthSchema.md"}]}]},{"text":"testing","link":"/en/api/@connectum/auth/testing/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"RsaTestKeypair","link":"/en/api/@connectum/auth/testing/interfaces/RsaTestKeypair.md"},{"text":"TestJwksServer","link":"/en/api/@connectum/auth/testing/interfaces/TestJwksServer.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"TEST_JWT_KID","link":"/en/api/@connectum/auth/testing/variables/TEST_JWT_KID.md"},{"text":"TEST_JWT_SECRET","link":"/en/api/@connectum/auth/testing/variables/TEST_JWT_SECRET.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"createMockAuthContext","link":"/en/api/@connectum/auth/testing/functions/createMockAuthContext.md"},{"text":"createTestJwt","link":"/en/api/@connectum/auth/testing/functions/createTestJwt.md"},{"text":"createTestJwtRS256","link":"/en/api/@connectum/auth/testing/functions/createTestJwtRS256.md"},{"text":"generateRsaTestKeypair","link":"/en/api/@connectum/auth/testing/functions/generateRsaTestKeypair.md"},{"text":"startTestJwksServer","link":"/en/api/@connectum/auth/testing/functions/startTestJwksServer.md"},{"text":"withAuthContext","link":"/en/api/@connectum/auth/testing/functions/withAuthContext.md"}]}]}]},{"text":"Classes","collapsed":true,"items":[{"text":"AuthzDeniedError","link":"/en/api/@connectum/auth/classes/AuthzDeniedError.md"},{"text":"LruCache","link":"/en/api/@connectum/auth/classes/LruCache.md"}]},{"text":"Interfaces","collapsed":true,"items":[{"text":"AuthContext","link":"/en/api/@connectum/auth/interfaces/AuthContext.md"},{"text":"AuthInterceptorOptions","link":"/en/api/@connectum/auth/interfaces/AuthInterceptorOptions.md"},{"text":"AuthzDeniedDetails","link":"/en/api/@connectum/auth/interfaces/AuthzDeniedDetails.md"},{"text":"AuthzInterceptorOptions","link":"/en/api/@connectum/auth/interfaces/AuthzInterceptorOptions.md"},{"text":"AuthzRule","link":"/en/api/@connectum/auth/interfaces/AuthzRule.md"},{"text":"CacheOptions","link":"/en/api/@connectum/auth/interfaces/CacheOptions.md"},{"text":"ClientBearerInterceptorOptions","link":"/en/api/@connectum/auth/interfaces/ClientBearerInterceptorOptions.md"},{"text":"ClientGatewayInterceptorOptions","link":"/en/api/@connectum/auth/interfaces/ClientGatewayInterceptorOptions.md"},{"text":"GatewayAuthInterceptorOptions","link":"/en/api/@connectum/auth/interfaces/GatewayAuthInterceptorOptions.md"},{"text":"GatewayHeaderMapping","link":"/en/api/@connectum/auth/interfaces/GatewayHeaderMapping.md"},{"text":"InternalAuthInterceptorOptions","link":"/en/api/@connectum/auth/interfaces/InternalAuthInterceptorOptions.md"},{"text":"JwtAuthInterceptorOptions","link":"/en/api/@connectum/auth/interfaces/JwtAuthInterceptorOptions.md"},{"text":"MeshIdentityEntry","link":"/en/api/@connectum/auth/interfaces/MeshIdentityEntry.md"},{"text":"MeshIdentityTrustOptions","link":"/en/api/@connectum/auth/interfaces/MeshIdentityTrustOptions.md"},{"text":"ProtoAuthzInterceptorOptions","link":"/en/api/@connectum/auth/interfaces/ProtoAuthzInterceptorOptions.md"},{"text":"ResolvedMethodAuth","link":"/en/api/@connectum/auth/interfaces/ResolvedMethodAuth.md"},{"text":"SessionAuthInterceptorOptions","link":"/en/api/@connectum/auth/interfaces/SessionAuthInterceptorOptions.md"},{"text":"SharedSecretTrustOptions","link":"/en/api/@connectum/auth/interfaces/SharedSecretTrustOptions.md"},{"text":"SignedTokenIssuer","link":"/en/api/@connectum/auth/interfaces/SignedTokenIssuer.md"},{"text":"SignedTokenTrustOptions","link":"/en/api/@connectum/auth/interfaces/SignedTokenTrustOptions.md"}]},{"text":"Type Aliases","collapsed":true,"items":[{"text":"AuthzEffect","link":"/en/api/@connectum/auth/type-aliases/AuthzEffect.md"},{"text":"InterceptorFactory","link":"/en/api/@connectum/auth/type-aliases/InterceptorFactory.md"},{"text":"InternalTrustSource","link":"/en/api/@connectum/auth/type-aliases/InternalTrustSource.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"AUTH_HEADERS","link":"/en/api/@connectum/auth/variables/AUTH_HEADERS.md"},{"text":"authContextStorage","link":"/en/api/@connectum/auth/variables/authContextStorage.md"},{"text":"AuthzEffect","link":"/en/api/@connectum/auth/variables/AuthzEffect.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"createAuthInterceptor","link":"/en/api/@connectum/auth/functions/createAuthInterceptor.md"},{"text":"createAuthzInterceptor","link":"/en/api/@connectum/auth/functions/createAuthzInterceptor.md"},{"text":"createClientBearerInterceptor","link":"/en/api/@connectum/auth/functions/createClientBearerInterceptor.md"},{"text":"createClientGatewayInterceptor","link":"/en/api/@connectum/auth/functions/createClientGatewayInterceptor.md"},{"text":"createGatewayAuthInterceptor","link":"/en/api/@connectum/auth/functions/createGatewayAuthInterceptor.md"},{"text":"createInternalAuthInterceptor","link":"/en/api/@connectum/auth/functions/createInternalAuthInterceptor.md"},{"text":"createJwtAuthInterceptor","link":"/en/api/@connectum/auth/functions/createJwtAuthInterceptor.md"},{"text":"createProtoAuthzInterceptor","link":"/en/api/@connectum/auth/functions/createProtoAuthzInterceptor.md"},{"text":"createSessionAuthInterceptor","link":"/en/api/@connectum/auth/functions/createSessionAuthInterceptor.md"},{"text":"getAuthContext","link":"/en/api/@connectum/auth/functions/getAuthContext.md"},{"text":"getInternalMethods","link":"/en/api/@connectum/auth/functions/getInternalMethods.md"},{"text":"getPublicMethods","link":"/en/api/@connectum/auth/functions/getPublicMethods.md"},{"text":"matchesMethodPattern","link":"/en/api/@connectum/auth/functions/matchesMethodPattern.md"},{"text":"meshIdentityTrust","link":"/en/api/@connectum/auth/functions/meshIdentityTrust.md"},{"text":"parseAuthHeaders","link":"/en/api/@connectum/auth/functions/parseAuthHeaders.md"},{"text":"requireAuthContext","link":"/en/api/@connectum/auth/functions/requireAuthContext.md"},{"text":"resolveMethodAuth","link":"/en/api/@connectum/auth/functions/resolveMethodAuth.md"},{"text":"setAuthHeaders","link":"/en/api/@connectum/auth/functions/setAuthHeaders.md"},{"text":"sharedSecretTrust","link":"/en/api/@connectum/auth/functions/sharedSecretTrust.md"},{"text":"signedTokenTrust","link":"/en/api/@connectum/auth/functions/signedTokenTrust.md"}]}]},{"text":"@connectum/cli","link":"/en/api/@connectum/cli/","collapsed":true,"items":[{"text":"commands","collapsed":true,"items":[{"text":"proto-sync","link":"/en/api/@connectum/cli/commands/proto-sync/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"ProtoSyncOptions","link":"/en/api/@connectum/cli/commands/proto-sync/interfaces/ProtoSyncOptions.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"protoSyncCommand","link":"/en/api/@connectum/cli/commands/proto-sync/variables/protoSyncCommand.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"executeProtoSync","link":"/en/api/@connectum/cli/commands/proto-sync/functions/executeProtoSync.md"}]}]}]},{"text":"utils","collapsed":true,"items":[{"text":"reflection","link":"/en/api/@connectum/cli/utils/reflection/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"ReflectionResult","link":"/en/api/@connectum/cli/utils/reflection/interfaces/ReflectionResult.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"fetchFileDescriptorSetBinary","link":"/en/api/@connectum/cli/utils/reflection/functions/fetchFileDescriptorSetBinary.md"},{"text":"fetchReflectionData","link":"/en/api/@connectum/cli/utils/reflection/functions/fetchReflectionData.md"}]}]}]}]},{"text":"@connectum/core","link":"/en/api/@connectum/core/","collapsed":true,"items":[{"text":"Modules","collapsed":true,"items":[{"text":"config","link":"/en/api/@connectum/core/config/"},{"text":"types","link":"/en/api/@connectum/core/types/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"CreateServerOptions","link":"/en/api/@connectum/core/types/interfaces/CreateServerOptions.md"},{"text":"EventBusLike","link":"/en/api/@connectum/core/types/interfaces/EventBusLike.md"},{"text":"ProtocolContext","link":"/en/api/@connectum/core/types/interfaces/ProtocolContext.md"},{"text":"ProtocolRegistration","link":"/en/api/@connectum/core/types/interfaces/ProtocolRegistration.md"},{"text":"Server","link":"/en/api/@connectum/core/types/interfaces/Server.md"},{"text":"ServerClientOptions","link":"/en/api/@connectum/core/types/interfaces/ServerClientOptions.md"},{"text":"ShutdownOptions","link":"/en/api/@connectum/core/types/interfaces/ShutdownOptions.md"},{"text":"TLSOptions","link":"/en/api/@connectum/core/types/interfaces/TLSOptions.md"}]},{"text":"Type Aliases","collapsed":true,"items":[{"text":"HttpHandler","link":"/en/api/@connectum/core/types/type-aliases/HttpHandler.md"},{"text":"LifecycleEvent","link":"/en/api/@connectum/core/types/type-aliases/LifecycleEvent.md"},{"text":"NodeRequest","link":"/en/api/@connectum/core/types/type-aliases/NodeRequest.md"},{"text":"NodeResponse","link":"/en/api/@connectum/core/types/type-aliases/NodeResponse.md"},{"text":"ServerState","link":"/en/api/@connectum/core/types/type-aliases/ServerState.md"},{"text":"ShutdownHook","link":"/en/api/@connectum/core/types/type-aliases/ShutdownHook.md"},{"text":"TransportServer","link":"/en/api/@connectum/core/types/type-aliases/TransportServer.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"LifecycleEvent","link":"/en/api/@connectum/core/types/variables/LifecycleEvent.md"},{"text":"ServerState","link":"/en/api/@connectum/core/types/variables/ServerState.md"}]}]}]},{"text":"Classes","collapsed":true,"items":[{"text":"CatalogConfigError","link":"/en/api/@connectum/core/classes/CatalogConfigError.md"},{"text":"TransportValidationError","link":"/en/api/@connectum/core/classes/TransportValidationError.md"}]},{"text":"Interfaces","collapsed":true,"items":[{"text":"BidiStreamHandle","link":"/en/api/@connectum/core/interfaces/BidiStreamHandle.md"},{"text":"CatalogClient","link":"/en/api/@connectum/core/interfaces/CatalogClient.md"},{"text":"ClientStreamHandle","link":"/en/api/@connectum/core/interfaces/ClientStreamHandle.md"},{"text":"ConnectumCallMap","link":"/en/api/@connectum/core/interfaces/ConnectumCallMap.md"},{"text":"ConnectumStreamMap","link":"/en/api/@connectum/core/interfaces/ConnectumStreamMap.md"},{"text":"Context","link":"/en/api/@connectum/core/interfaces/Context.md"},{"text":"CreateCatalogClientOptions","link":"/en/api/@connectum/core/interfaces/CreateCatalogClientOptions.md"},{"text":"CreateLocalTransportOptions","link":"/en/api/@connectum/core/interfaces/CreateLocalTransportOptions.md"},{"text":"DnsResolverOptions","link":"/en/api/@connectum/core/interfaces/DnsResolverOptions.md"},{"text":"PerServiceEnvResolverOptions","link":"/en/api/@connectum/core/interfaces/PerServiceEnvResolverOptions.md"},{"text":"ResolverContext","link":"/en/api/@connectum/core/interfaces/ResolverContext.md"},{"text":"SanitizableError","link":"/en/api/@connectum/core/interfaces/SanitizableError.md"},{"text":"ServiceDefinition","link":"/en/api/@connectum/core/interfaces/ServiceDefinition.md"},{"text":"StreamingMethodInfo","link":"/en/api/@connectum/core/interfaces/StreamingMethodInfo.md"}]},{"text":"Type Aliases","collapsed":true,"items":[{"text":"CallOptions","link":"/en/api/@connectum/core/type-aliases/CallOptions.md"},{"text":"CatalogCall","link":"/en/api/@connectum/core/type-aliases/CatalogCall.md"},{"text":"CatalogStream","link":"/en/api/@connectum/core/type-aliases/CatalogStream.md"},{"text":"ConnectumEnv","link":"/en/api/@connectum/core/type-aliases/ConnectumEnv.md"},{"text":"ConnectumMethodImpl","link":"/en/api/@connectum/core/type-aliases/ConnectumMethodImpl.md"},{"text":"ConnectumServiceImpl","link":"/en/api/@connectum/core/type-aliases/ConnectumServiceImpl.md"},{"text":"EffectiveTransport","link":"/en/api/@connectum/core/type-aliases/EffectiveTransport.md"},{"text":"RemoteResolver","link":"/en/api/@connectum/core/type-aliases/RemoteResolver.md"},{"text":"ServiceCatalog","link":"/en/api/@connectum/core/type-aliases/ServiceCatalog.md"},{"text":"ServiceOptions","link":"/en/api/@connectum/core/type-aliases/ServiceOptions.md"},{"text":"StreamReturn","link":"/en/api/@connectum/core/type-aliases/StreamReturn.md"},{"text":"TransportValidationMode","link":"/en/api/@connectum/core/type-aliases/TransportValidationMode.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"BooleanFromStringSchema","link":"/en/api/@connectum/core/variables/BooleanFromStringSchema.md"},{"text":"ConnectumEnvSchema","link":"/en/api/@connectum/core/variables/ConnectumEnvSchema.md"},{"text":"defaultPropagateHeaders","link":"/en/api/@connectum/core/variables/defaultPropagateHeaders.md"},{"text":"EffectiveTransport","link":"/en/api/@connectum/core/variables/EffectiveTransport.md"},{"text":"LogFormatSchema","link":"/en/api/@connectum/core/variables/LogFormatSchema.md"},{"text":"LoggerBackendSchema","link":"/en/api/@connectum/core/variables/LoggerBackendSchema.md"},{"text":"LogLevelSchema","link":"/en/api/@connectum/core/variables/LogLevelSchema.md"},{"text":"NodeEnvSchema","link":"/en/api/@connectum/core/variables/NodeEnvSchema.md"},{"text":"tlsPath","link":"/en/api/@connectum/core/variables/tlsPath.md"},{"text":"TRANSPORT_VALIDATION_ERROR_CODE","link":"/en/api/@connectum/core/variables/TRANSPORT_VALIDATION_ERROR_CODE.md"},{"text":"TransportValidationMode","link":"/en/api/@connectum/core/variables/TransportValidationMode.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"collectStreamingMethods","link":"/en/api/@connectum/core/functions/collectStreamingMethods.md"},{"text":"createCatalogClient","link":"/en/api/@connectum/core/functions/createCatalogClient.md"},{"text":"createLocalTransport","link":"/en/api/@connectum/core/functions/createLocalTransport.md"},{"text":"createServer","link":"/en/api/@connectum/core/functions/createServer.md"},{"text":"defineCatalog","link":"/en/api/@connectum/core/functions/defineCatalog.md"},{"text":"defineLazyService","link":"/en/api/@connectum/core/functions/defineLazyService.md"},{"text":"defineService","link":"/en/api/@connectum/core/functions/defineService.md"},{"text":"dnsResolver","link":"/en/api/@connectum/core/functions/dnsResolver.md"},{"text":"getTLSPath","link":"/en/api/@connectum/core/functions/getTLSPath.md"},{"text":"isSanitizableError","link":"/en/api/@connectum/core/functions/isSanitizableError.md"},{"text":"mapResolver","link":"/en/api/@connectum/core/functions/mapResolver.md"},{"text":"matchServicesPattern","link":"/en/api/@connectum/core/functions/matchServicesPattern.md"},{"text":"mergeCatalogs","link":"/en/api/@connectum/core/functions/mergeCatalogs.md"},{"text":"mergeEnabledServices","link":"/en/api/@connectum/core/functions/mergeEnabledServices.md"},{"text":"parseEnvConfig","link":"/en/api/@connectum/core/functions/parseEnvConfig.md"},{"text":"parseServicesEnv","link":"/en/api/@connectum/core/functions/parseServicesEnv.md"},{"text":"perServiceEnvResolver","link":"/en/api/@connectum/core/functions/perServiceEnvResolver.md"},{"text":"readTLSCertificates","link":"/en/api/@connectum/core/functions/readTLSCertificates.md"},{"text":"resolveEffectiveTransport","link":"/en/api/@connectum/core/functions/resolveEffectiveTransport.md"},{"text":"safeParseEnvConfig","link":"/en/api/@connectum/core/functions/safeParseEnvConfig.md"},{"text":"singleTransportResolver","link":"/en/api/@connectum/core/functions/singleTransportResolver.md"}]}]},{"text":"@connectum/events","link":"/en/api/@connectum/events/","collapsed":true,"items":[{"text":"Modules","collapsed":true,"items":[{"text":"types","link":"/en/api/@connectum/events/types/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"AdapterContext","link":"/en/api/@connectum/events/types/interfaces/AdapterContext.md"},{"text":"DlqOptions","link":"/en/api/@connectum/events/types/interfaces/DlqOptions.md"},{"text":"EventAdapter","link":"/en/api/@connectum/events/types/interfaces/EventAdapter.md"},{"text":"EventBus","link":"/en/api/@connectum/events/types/interfaces/EventBus.md"},{"text":"EventBusOptions","link":"/en/api/@connectum/events/types/interfaces/EventBusOptions.md"},{"text":"EventContext","link":"/en/api/@connectum/events/types/interfaces/EventContext.md"},{"text":"EventContextInit","link":"/en/api/@connectum/events/types/interfaces/EventContextInit.md"},{"text":"EventHandlerConfig","link":"/en/api/@connectum/events/types/interfaces/EventHandlerConfig.md"},{"text":"EventRouteEntry","link":"/en/api/@connectum/events/types/interfaces/EventRouteEntry.md"},{"text":"EventRouter","link":"/en/api/@connectum/events/types/interfaces/EventRouter.md"},{"text":"EventSubscription","link":"/en/api/@connectum/events/types/interfaces/EventSubscription.md"},{"text":"MiddlewareConfig","link":"/en/api/@connectum/events/types/interfaces/MiddlewareConfig.md"},{"text":"PublishOptions","link":"/en/api/@connectum/events/types/interfaces/PublishOptions.md"},{"text":"RawEvent","link":"/en/api/@connectum/events/types/interfaces/RawEvent.md"},{"text":"RawSubscribeOptions","link":"/en/api/@connectum/events/types/interfaces/RawSubscribeOptions.md"},{"text":"RetryOptions","link":"/en/api/@connectum/events/types/interfaces/RetryOptions.md"}]},{"text":"Type Aliases","collapsed":true,"items":[{"text":"EventAdapterFactory","link":"/en/api/@connectum/events/types/type-aliases/EventAdapterFactory.md"},{"text":"EventMiddleware","link":"/en/api/@connectum/events/types/type-aliases/EventMiddleware.md"},{"text":"EventMiddlewareNext","link":"/en/api/@connectum/events/types/type-aliases/EventMiddlewareNext.md"},{"text":"EventRoute","link":"/en/api/@connectum/events/types/type-aliases/EventRoute.md"},{"text":"RawEventHandler","link":"/en/api/@connectum/events/types/type-aliases/RawEventHandler.md"},{"text":"ServiceEventHandlers","link":"/en/api/@connectum/events/types/type-aliases/ServiceEventHandlers.md"},{"text":"TypedEventHandler","link":"/en/api/@connectum/events/types/type-aliases/TypedEventHandler.md"}]}]}]},{"text":"Classes","collapsed":true,"items":[{"text":"EventRouterImpl","link":"/en/api/@connectum/events/classes/EventRouterImpl.md"},{"text":"NonRetryableError","link":"/en/api/@connectum/events/classes/NonRetryableError.md"},{"text":"RetryableError","link":"/en/api/@connectum/events/classes/RetryableError.md"}]},{"text":"Interfaces","collapsed":true,"items":[{"text":"BroadcastReactor","link":"/en/api/@connectum/events/interfaces/BroadcastReactor.md"},{"text":"BroadcastSubscribersOptions","link":"/en/api/@connectum/events/interfaces/BroadcastSubscribersOptions.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"composeMiddleware","link":"/en/api/@connectum/events/functions/composeMiddleware.md"},{"text":"createBroadcastSubscribers","link":"/en/api/@connectum/events/functions/createBroadcastSubscribers.md"},{"text":"createEventBus","link":"/en/api/@connectum/events/functions/createEventBus.md"},{"text":"createEventContext","link":"/en/api/@connectum/events/functions/createEventContext.md"},{"text":"deriveServiceName","link":"/en/api/@connectum/events/functions/deriveServiceName.md"},{"text":"dlqMiddleware","link":"/en/api/@connectum/events/functions/dlqMiddleware.md"},{"text":"matchPattern","link":"/en/api/@connectum/events/functions/matchPattern.md"},{"text":"MemoryAdapter","link":"/en/api/@connectum/events/functions/MemoryAdapter.md"},{"text":"resolveTopicName","link":"/en/api/@connectum/events/functions/resolveTopicName.md"},{"text":"retryMiddleware","link":"/en/api/@connectum/events/functions/retryMiddleware.md"}]}]},{"text":"@connectum/events-amqp","link":"/en/api/@connectum/events-amqp/","collapsed":true,"items":[{"text":"Modules","collapsed":true,"items":[{"text":"types","link":"/en/api/@connectum/events-amqp/types/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"AmqpAdapterOptions","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpAdapterOptions.md"},{"text":"AmqpBindingDeclaration","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpBindingDeclaration.md"},{"text":"AmqpConsumerOptions","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpConsumerOptions.md"},{"text":"AmqpExchangeDeclaration","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpExchangeDeclaration.md"},{"text":"AmqpExchangeOptions","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpExchangeOptions.md"},{"text":"AmqpLifecycleCallbacks","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpLifecycleCallbacks.md"},{"text":"AmqpPublisherOptions","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpPublisherOptions.md"},{"text":"AmqpPublishRetryOptions","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpPublishRetryOptions.md"},{"text":"AmqpQueueDeclaration","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpQueueDeclaration.md"},{"text":"AmqpQueueOptions","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpQueueOptions.md"},{"text":"AmqpQueueOverride","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpQueueOverride.md"},{"text":"AmqpRecoveryOptions","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpRecoveryOptions.md"},{"text":"AmqpSerializationOptions","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpSerializationOptions.md"},{"text":"AmqpTopology","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpTopology.md"}]},{"text":"Type Aliases","collapsed":true,"items":[{"text":"AmqpLifecycleEvent","link":"/en/api/@connectum/events-amqp/types/type-aliases/AmqpLifecycleEvent.md"},{"text":"AmqpTopologyMode","link":"/en/api/@connectum/events-amqp/types/type-aliases/AmqpTopologyMode.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"AmqpTopologyMode","link":"/en/api/@connectum/events-amqp/types/variables/AmqpTopologyMode.md"}]}]}]},{"text":"Classes","collapsed":true,"items":[{"text":"AmqpAdapterError","link":"/en/api/@connectum/events-amqp/classes/AmqpAdapterError.md"},{"text":"AmqpConnectionError","link":"/en/api/@connectum/events-amqp/classes/AmqpConnectionError.md"},{"text":"AmqpPublishNackError","link":"/en/api/@connectum/events-amqp/classes/AmqpPublishNackError.md"},{"text":"AmqpPublishTimeoutError","link":"/en/api/@connectum/events-amqp/classes/AmqpPublishTimeoutError.md"},{"text":"AmqpSerializationError","link":"/en/api/@connectum/events-amqp/classes/AmqpSerializationError.md"},{"text":"AmqpTopologyError","link":"/en/api/@connectum/events-amqp/classes/AmqpTopologyError.md"},{"text":"AmqpUnroutableError","link":"/en/api/@connectum/events-amqp/classes/AmqpUnroutableError.md"}]},{"text":"Type Aliases","collapsed":true,"items":[{"text":"AmqpTopologyObject","link":"/en/api/@connectum/events-amqp/type-aliases/AmqpTopologyObject.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"AmqpAdapter","link":"/en/api/@connectum/events-amqp/functions/AmqpAdapter.md"},{"text":"isAutoRetriablePublishError","link":"/en/api/@connectum/events-amqp/functions/isAutoRetriablePublishError.md"},{"text":"toAmqpPattern","link":"/en/api/@connectum/events-amqp/functions/toAmqpPattern.md"}]}]},{"text":"@connectum/events-kafka","link":"/en/api/@connectum/events-kafka/","collapsed":true,"items":[{"text":"Modules","collapsed":true,"items":[{"text":"types","link":"/en/api/@connectum/events-kafka/types/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"KafkaAdapterOptions","link":"/en/api/@connectum/events-kafka/types/interfaces/KafkaAdapterOptions.md"}]}]}]},{"text":"Functions","collapsed":true,"items":[{"text":"KafkaAdapter","link":"/en/api/@connectum/events-kafka/functions/KafkaAdapter.md"}]}]},{"text":"@connectum/events-nats","link":"/en/api/@connectum/events-nats/","collapsed":true,"items":[{"text":"Modules","collapsed":true,"items":[{"text":"types","link":"/en/api/@connectum/events-nats/types/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"NatsAdapterOptions","link":"/en/api/@connectum/events-nats/types/interfaces/NatsAdapterOptions.md"},{"text":"NatsConsumerOptions","link":"/en/api/@connectum/events-nats/types/interfaces/NatsConsumerOptions.md"}]}]}]},{"text":"Functions","collapsed":true,"items":[{"text":"NatsAdapter","link":"/en/api/@connectum/events-nats/functions/NatsAdapter.md"}]}]},{"text":"@connectum/events-redis","link":"/en/api/@connectum/events-redis/","collapsed":true,"items":[{"text":"Modules","collapsed":true,"items":[{"text":"types","link":"/en/api/@connectum/events-redis/types/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"RedisAdapterOptions","link":"/en/api/@connectum/events-redis/types/interfaces/RedisAdapterOptions.md"},{"text":"RedisBrokerOptions","link":"/en/api/@connectum/events-redis/types/interfaces/RedisBrokerOptions.md"}]}]}]},{"text":"Functions","collapsed":true,"items":[{"text":"RedisAdapter","link":"/en/api/@connectum/events-redis/functions/RedisAdapter.md"}]}]},{"text":"@connectum/healthcheck","link":"/en/api/@connectum/healthcheck/","collapsed":true,"items":[{"text":"@connectum/healthcheck","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/","collapsed":true,"items":[{"text":"Classes","collapsed":true,"items":[{"text":"HealthcheckManager","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/classes/HealthcheckManager.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"healthcheckManager","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/variables/healthcheckManager.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"createHealthcheckManager","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/functions/createHealthcheckManager.md"},{"text":"createHttpHealthHandler","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/functions/createHttpHealthHandler.md"},{"text":"Healthcheck","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/functions/Healthcheck.md"},{"text":"parseServiceFromUrl","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/functions/parseServiceFromUrl.md"}]}]},{"text":"@connectum/healthcheck/types","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/types/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"HealthcheckOptions","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/types/interfaces/HealthcheckOptions.md"},{"text":"ServiceStatus","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/types/interfaces/ServiceStatus.md"}]},{"text":"Type Aliases","collapsed":true,"items":[{"text":"ServingStatus","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/types/type-aliases/ServingStatus.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"ServingStatus","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/types/variables/ServingStatus.md"}]}]}]},{"text":"@connectum/interceptors","link":"/en/api/@connectum/interceptors/","collapsed":true,"items":[{"text":"Modules","collapsed":true,"items":[{"text":"bulkhead","link":"/en/api/@connectum/interceptors/bulkhead/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"createBulkheadInterceptor","link":"/en/api/@connectum/interceptors/bulkhead/functions/createBulkheadInterceptor.md"}]}]},{"text":"circuit-breaker","link":"/en/api/@connectum/interceptors/circuit-breaker/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"createCircuitBreakerInterceptor","link":"/en/api/@connectum/interceptors/circuit-breaker/functions/createCircuitBreakerInterceptor.md"},{"text":"defaultFailurePredicate","link":"/en/api/@connectum/interceptors/circuit-breaker/functions/defaultFailurePredicate.md"}]}]},{"text":"defaults","link":"/en/api/@connectum/interceptors/defaults/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"DefaultInterceptorOptions","link":"/en/api/@connectum/interceptors/defaults/interfaces/DefaultInterceptorOptions.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"createDefaultInterceptors","link":"/en/api/@connectum/interceptors/defaults/functions/createDefaultInterceptors.md"}]}]},{"text":"errorHandler","link":"/en/api/@connectum/interceptors/errorHandler/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"createErrorHandlerInterceptor","link":"/en/api/@connectum/interceptors/errorHandler/functions/createErrorHandlerInterceptor.md"}]}]},{"text":"fallback","link":"/en/api/@connectum/interceptors/fallback/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"createFallbackInterceptor","link":"/en/api/@connectum/interceptors/fallback/functions/createFallbackInterceptor.md"}]}]},{"text":"logger","link":"/en/api/@connectum/interceptors/logger/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"createLoggerInterceptor","link":"/en/api/@connectum/interceptors/logger/functions/createLoggerInterceptor.md"}]}]},{"text":"method-filter","link":"/en/api/@connectum/interceptors/method-filter/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"createMethodFilterInterceptor","link":"/en/api/@connectum/interceptors/method-filter/functions/createMethodFilterInterceptor.md"}]}]},{"text":"retry","link":"/en/api/@connectum/interceptors/retry/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"createRetryInterceptor","link":"/en/api/@connectum/interceptors/retry/functions/createRetryInterceptor.md"}]}]},{"text":"serializer","link":"/en/api/@connectum/interceptors/serializer/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"createSerializerInterceptor","link":"/en/api/@connectum/interceptors/serializer/functions/createSerializerInterceptor.md"}]}]},{"text":"timeout","link":"/en/api/@connectum/interceptors/timeout/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"createTimeoutInterceptor","link":"/en/api/@connectum/interceptors/timeout/functions/createTimeoutInterceptor.md"}]}]}]},{"text":"Interfaces","collapsed":true,"items":[{"text":"BulkheadOptions","link":"/en/api/@connectum/interceptors/interfaces/BulkheadOptions.md"},{"text":"CircuitBreakerOptions","link":"/en/api/@connectum/interceptors/interfaces/CircuitBreakerOptions.md"},{"text":"ErrorHandlerOptions","link":"/en/api/@connectum/interceptors/interfaces/ErrorHandlerOptions.md"},{"text":"FallbackOptions","link":"/en/api/@connectum/interceptors/interfaces/FallbackOptions.md"},{"text":"LoggerOptions","link":"/en/api/@connectum/interceptors/interfaces/LoggerOptions.md"},{"text":"RetryOptions","link":"/en/api/@connectum/interceptors/interfaces/RetryOptions.md"},{"text":"SerializerOptions","link":"/en/api/@connectum/interceptors/interfaces/SerializerOptions.md"},{"text":"TimeoutOptions","link":"/en/api/@connectum/interceptors/interfaces/TimeoutOptions.md"}]},{"text":"Type Aliases","collapsed":true,"items":[{"text":"InterceptorFactory","link":"/en/api/@connectum/interceptors/type-aliases/InterceptorFactory.md"},{"text":"MethodFilterMap","link":"/en/api/@connectum/interceptors/type-aliases/MethodFilterMap.md"}]}]},{"text":"@connectum/otel","link":"/en/api/@connectum/otel/","collapsed":true,"items":[{"text":"Modules","collapsed":true,"items":[{"text":"attributes","link":"/en/api/@connectum/otel/attributes/","collapsed":true,"items":[{"text":"Type Aliases","collapsed":true,"items":[{"text":"ConnectErrorCode","link":"/en/api/@connectum/otel/attributes/type-aliases/ConnectErrorCode.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"ATTR_CONNECTUM_TRANSPORT","link":"/en/api/@connectum/otel/attributes/variables/ATTR_CONNECTUM_TRANSPORT.md"},{"text":"ATTR_CONNECTUM_TRANSPORT_METRIC","link":"/en/api/@connectum/otel/attributes/variables/ATTR_CONNECTUM_TRANSPORT_METRIC.md"},{"text":"ATTR_ERROR_TYPE","link":"/en/api/@connectum/otel/attributes/variables/ATTR_ERROR_TYPE.md"},{"text":"ATTR_NETWORK_PEER_ADDRESS","link":"/en/api/@connectum/otel/attributes/variables/ATTR_NETWORK_PEER_ADDRESS.md"},{"text":"ATTR_NETWORK_PEER_PORT","link":"/en/api/@connectum/otel/attributes/variables/ATTR_NETWORK_PEER_PORT.md"},{"text":"ATTR_NETWORK_PROTOCOL_NAME","link":"/en/api/@connectum/otel/attributes/variables/ATTR_NETWORK_PROTOCOL_NAME.md"},{"text":"ATTR_NETWORK_TRANSPORT","link":"/en/api/@connectum/otel/attributes/variables/ATTR_NETWORK_TRANSPORT.md"},{"text":"ATTR_RPC_CONNECT_RPC_STATUS_CODE","link":"/en/api/@connectum/otel/attributes/variables/ATTR_RPC_CONNECT_RPC_STATUS_CODE.md"},{"text":"ATTR_RPC_MESSAGE_ID","link":"/en/api/@connectum/otel/attributes/variables/ATTR_RPC_MESSAGE_ID.md"},{"text":"ATTR_RPC_MESSAGE_TYPE","link":"/en/api/@connectum/otel/attributes/variables/ATTR_RPC_MESSAGE_TYPE.md"},{"text":"ATTR_RPC_MESSAGE_UNCOMPRESSED_SIZE","link":"/en/api/@connectum/otel/attributes/variables/ATTR_RPC_MESSAGE_UNCOMPRESSED_SIZE.md"},{"text":"ATTR_RPC_METHOD","link":"/en/api/@connectum/otel/attributes/variables/ATTR_RPC_METHOD.md"},{"text":"ATTR_RPC_SERVICE","link":"/en/api/@connectum/otel/attributes/variables/ATTR_RPC_SERVICE.md"},{"text":"ATTR_RPC_SYSTEM","link":"/en/api/@connectum/otel/attributes/variables/ATTR_RPC_SYSTEM.md"},{"text":"ATTR_SERVER_ADDRESS","link":"/en/api/@connectum/otel/attributes/variables/ATTR_SERVER_ADDRESS.md"},{"text":"ATTR_SERVER_PORT","link":"/en/api/@connectum/otel/attributes/variables/ATTR_SERVER_PORT.md"},{"text":"ConnectErrorCode","link":"/en/api/@connectum/otel/attributes/variables/ConnectErrorCode.md"},{"text":"ConnectErrorCodeName","link":"/en/api/@connectum/otel/attributes/variables/ConnectErrorCodeName.md"},{"text":"CONNECTUM_INTERNAL_TRANSPORT_HEADER","link":"/en/api/@connectum/otel/attributes/variables/CONNECTUM_INTERNAL_TRANSPORT_HEADER.md"},{"text":"CONNECTUM_INTERNAL_TRANSPORT_IN_PROCESS","link":"/en/api/@connectum/otel/attributes/variables/CONNECTUM_INTERNAL_TRANSPORT_IN_PROCESS.md"},{"text":"RPC_MESSAGE_EVENT","link":"/en/api/@connectum/otel/attributes/variables/RPC_MESSAGE_EVENT.md"},{"text":"RPC_SYSTEM_CONNECT_RPC","link":"/en/api/@connectum/otel/attributes/variables/RPC_SYSTEM_CONNECT_RPC.md"}]}]},{"text":"client-interceptor","link":"/en/api/@connectum/otel/client-interceptor/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"createOtelClientInterceptor","link":"/en/api/@connectum/otel/client-interceptor/functions/createOtelClientInterceptor.md"}]}]},{"text":"interceptor","link":"/en/api/@connectum/otel/interceptor/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"createOtelInterceptor","link":"/en/api/@connectum/otel/interceptor/functions/createOtelInterceptor.md"}]}]},{"text":"logger","link":"/en/api/@connectum/otel/logger/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"Logger","link":"/en/api/@connectum/otel/logger/interfaces/Logger.md"},{"text":"LoggerOptions","link":"/en/api/@connectum/otel/logger/interfaces/LoggerOptions.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"getLogger","link":"/en/api/@connectum/otel/logger/functions/getLogger.md"}]}]},{"text":"meter","link":"/en/api/@connectum/otel/meter/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"getMeter","link":"/en/api/@connectum/otel/meter/functions/getMeter.md"}]}]},{"text":"metrics","link":"/en/api/@connectum/otel/metrics/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"RpcClientMetrics","link":"/en/api/@connectum/otel/metrics/interfaces/RpcClientMetrics.md"},{"text":"RpcServerMetrics","link":"/en/api/@connectum/otel/metrics/interfaces/RpcServerMetrics.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"createRpcClientMetrics","link":"/en/api/@connectum/otel/metrics/functions/createRpcClientMetrics.md"},{"text":"createRpcServerMetrics","link":"/en/api/@connectum/otel/metrics/functions/createRpcServerMetrics.md"}]}]},{"text":"provider","link":"/en/api/@connectum/otel/provider/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"ProviderOptions","link":"/en/api/@connectum/otel/provider/interfaces/ProviderOptions.md"},{"text":"ResourceAttributeInputs","link":"/en/api/@connectum/otel/provider/interfaces/ResourceAttributeInputs.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"buildResourceAttributes","link":"/en/api/@connectum/otel/provider/functions/buildResourceAttributes.md"},{"text":"getProvider","link":"/en/api/@connectum/otel/provider/functions/getProvider.md"},{"text":"initProvider","link":"/en/api/@connectum/otel/provider/functions/initProvider.md"},{"text":"parseOtelResourceAttributesEnv","link":"/en/api/@connectum/otel/provider/functions/parseOtelResourceAttributesEnv.md"},{"text":"shutdownProvider","link":"/en/api/@connectum/otel/provider/functions/shutdownProvider.md"}]}]},{"text":"shared","link":"/en/api/@connectum/otel/shared/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"BaseAttributeParams","link":"/en/api/@connectum/otel/shared/interfaces/BaseAttributeParams.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"applyAttributeFilter","link":"/en/api/@connectum/otel/shared/functions/applyAttributeFilter.md"},{"text":"buildBaseAttributes","link":"/en/api/@connectum/otel/shared/functions/buildBaseAttributes.md"},{"text":"buildErrorAttributes","link":"/en/api/@connectum/otel/shared/functions/buildErrorAttributes.md"},{"text":"detectConnectumTransport","link":"/en/api/@connectum/otel/shared/functions/detectConnectumTransport.md"},{"text":"estimateMessageSize","link":"/en/api/@connectum/otel/shared/functions/estimateMessageSize.md"},{"text":"wrapAsyncIterable","link":"/en/api/@connectum/otel/shared/functions/wrapAsyncIterable.md"}]}]},{"text":"traceAll","link":"/en/api/@connectum/otel/traceAll/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"traceAll","link":"/en/api/@connectum/otel/traceAll/functions/traceAll.md"}]}]},{"text":"traced","link":"/en/api/@connectum/otel/traced/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"traced","link":"/en/api/@connectum/otel/traced/functions/traced.md"}]}]},{"text":"tracer","link":"/en/api/@connectum/otel/tracer/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"getTracer","link":"/en/api/@connectum/otel/tracer/functions/getTracer.md"}]}]}]},{"text":"Interfaces","collapsed":true,"items":[{"text":"BatchSpanProcessorOptions","link":"/en/api/@connectum/otel/interfaces/BatchSpanProcessorOptions.md"},{"text":"CollectorOptions","link":"/en/api/@connectum/otel/interfaces/CollectorOptions.md"},{"text":"Meter","link":"/en/api/@connectum/otel/interfaces/Meter.md"},{"text":"OtelBaseOptions","link":"/en/api/@connectum/otel/interfaces/OtelBaseOptions.md"},{"text":"OtelClientInterceptorOptions","link":"/en/api/@connectum/otel/interfaces/OtelClientInterceptorOptions.md"},{"text":"OtelInterceptorOptions","link":"/en/api/@connectum/otel/interfaces/OtelInterceptorOptions.md"},{"text":"OTLPSettings","link":"/en/api/@connectum/otel/interfaces/OTLPSettings.md"},{"text":"TraceAllOptions","link":"/en/api/@connectum/otel/interfaces/TraceAllOptions.md"},{"text":"TracedOptions","link":"/en/api/@connectum/otel/interfaces/TracedOptions.md"},{"text":"Tracer","link":"/en/api/@connectum/otel/interfaces/Tracer.md"}]},{"text":"Type Aliases","collapsed":true,"items":[{"text":"ArgsFilter","link":"/en/api/@connectum/otel/type-aliases/ArgsFilter.md"},{"text":"ExporterType","link":"/en/api/@connectum/otel/type-aliases/ExporterType.md"},{"text":"MethodArgsFilter","link":"/en/api/@connectum/otel/type-aliases/MethodArgsFilter.md"},{"text":"OtelAttributeFilter","link":"/en/api/@connectum/otel/type-aliases/OtelAttributeFilter.md"},{"text":"OtelFilter","link":"/en/api/@connectum/otel/type-aliases/OtelFilter.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"ExporterType","link":"/en/api/@connectum/otel/variables/ExporterType.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"getBatchSpanProcessorOptions","link":"/en/api/@connectum/otel/functions/getBatchSpanProcessorOptions.md"},{"text":"getCollectorOptions","link":"/en/api/@connectum/otel/functions/getCollectorOptions.md"},{"text":"getOTLPSettings","link":"/en/api/@connectum/otel/functions/getOTLPSettings.md"},{"text":"getServiceMetadata","link":"/en/api/@connectum/otel/functions/getServiceMetadata.md"}]}]},{"text":"@connectum/reflection","link":"/en/api/@connectum/reflection/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"collectFileProtos","link":"/en/api/@connectum/reflection/functions/collectFileProtos.md"},{"text":"Reflection","link":"/en/api/@connectum/reflection/functions/Reflection.md"}]}]},{"text":"@connectum/test-fixtures","link":"/en/api/@connectum/test-fixtures/","collapsed":true,"items":[{"text":"index","link":"/en/api/@connectum/test-fixtures/index/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"MockCall","link":"/en/api/@connectum/test-fixtures/index/interfaces/MockCall.md"},{"text":"MockFn","link":"/en/api/@connectum/test-fixtures/index/interfaces/MockFn.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"assertConnectError","link":"/en/api/@connectum/test-fixtures/index/functions/assertConnectError.md"},{"text":"createFakeMethod","link":"/en/api/@connectum/test-fixtures/index/functions/createFakeMethod.md"},{"text":"createFakeService","link":"/en/api/@connectum/test-fixtures/index/functions/createFakeService.md"},{"text":"createMockDescField","link":"/en/api/@connectum/test-fixtures/index/functions/createMockDescField.md"},{"text":"createMockDescMessage","link":"/en/api/@connectum/test-fixtures/index/functions/createMockDescMessage.md"},{"text":"createMockDescMethod","link":"/en/api/@connectum/test-fixtures/index/functions/createMockDescMethod.md"},{"text":"createMockFn","link":"/en/api/@connectum/test-fixtures/index/functions/createMockFn.md"},{"text":"createMockNext","link":"/en/api/@connectum/test-fixtures/index/functions/createMockNext.md"},{"text":"createMockNextError","link":"/en/api/@connectum/test-fixtures/index/functions/createMockNextError.md"},{"text":"createMockNextSlow","link":"/en/api/@connectum/test-fixtures/index/functions/createMockNextSlow.md"},{"text":"createMockRequest","link":"/en/api/@connectum/test-fixtures/index/functions/createMockRequest.md"},{"text":"createMockStream","link":"/en/api/@connectum/test-fixtures/index/functions/createMockStream.md"}]}]},{"text":"types","link":"/en/api/@connectum/test-fixtures/types/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"FakeMethodOptions","link":"/en/api/@connectum/test-fixtures/types/interfaces/FakeMethodOptions.md"},{"text":"FakeServiceOptions","link":"/en/api/@connectum/test-fixtures/types/interfaces/FakeServiceOptions.md"},{"text":"MockDescFieldOptions","link":"/en/api/@connectum/test-fixtures/types/interfaces/MockDescFieldOptions.md"},{"text":"MockDescMessageOptions","link":"/en/api/@connectum/test-fixtures/types/interfaces/MockDescMessageOptions.md"},{"text":"MockDescMethodOptions","link":"/en/api/@connectum/test-fixtures/types/interfaces/MockDescMethodOptions.md"},{"text":"MockNextOptions","link":"/en/api/@connectum/test-fixtures/types/interfaces/MockNextOptions.md"},{"text":"MockRequestOptions","link":"/en/api/@connectum/test-fixtures/types/interfaces/MockRequestOptions.md"},{"text":"MockStreamOptions","link":"/en/api/@connectum/test-fixtures/types/interfaces/MockStreamOptions.md"}]}]}]},{"text":"@connectum/testing","link":"/en/api/@connectum/testing/","collapsed":true,"items":[{"text":"index","link":"/en/api/@connectum/testing/index/","collapsed":true,"items":[{"text":"Classes","collapsed":true,"items":[{"text":"InMemoryMetricCollector","link":"/en/api/@connectum/testing/index/classes/InMemoryMetricCollector.md"},{"text":"InMemorySpanCollector","link":"/en/api/@connectum/testing/index/classes/InMemorySpanCollector.md"}]},{"text":"Interfaces","collapsed":true,"items":[{"text":"CreateMockContextOptions","link":"/en/api/@connectum/testing/index/interfaces/CreateMockContextOptions.md"},{"text":"FakeMethodOptions","link":"/en/api/@connectum/testing/index/interfaces/FakeMethodOptions.md"},{"text":"FakeServiceOptions","link":"/en/api/@connectum/testing/index/interfaces/FakeServiceOptions.md"},{"text":"MockCall","link":"/en/api/@connectum/testing/index/interfaces/MockCall.md"},{"text":"MockDescFieldOptions","link":"/en/api/@connectum/testing/index/interfaces/MockDescFieldOptions.md"},{"text":"MockDescMessageOptions","link":"/en/api/@connectum/testing/index/interfaces/MockDescMessageOptions.md"},{"text":"MockDescMethodOptions","link":"/en/api/@connectum/testing/index/interfaces/MockDescMethodOptions.md"},{"text":"MockFn","link":"/en/api/@connectum/testing/index/interfaces/MockFn.md"},{"text":"MockNextOptions","link":"/en/api/@connectum/testing/index/interfaces/MockNextOptions.md"},{"text":"MockRequestOptions","link":"/en/api/@connectum/testing/index/interfaces/MockRequestOptions.md"},{"text":"MockService","link":"/en/api/@connectum/testing/index/interfaces/MockService.md"},{"text":"MockStreamOptions","link":"/en/api/@connectum/testing/index/interfaces/MockStreamOptions.md"},{"text":"NormalizedMetric","link":"/en/api/@connectum/testing/index/interfaces/NormalizedMetric.md"},{"text":"NormalizedSpan","link":"/en/api/@connectum/testing/index/interfaces/NormalizedSpan.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"MOCK_RESPONSE_HEADER","link":"/en/api/@connectum/testing/index/variables/MOCK_RESPONSE_HEADER.md"},{"text":"TRANSPORT_METRIC_ATTRIBUTE","link":"/en/api/@connectum/testing/index/variables/TRANSPORT_METRIC_ATTRIBUTE.md"},{"text":"TRANSPORT_SPAN_ATTRIBUTE","link":"/en/api/@connectum/testing/index/variables/TRANSPORT_SPAN_ATTRIBUTE.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"assertConnectError","link":"/en/api/@connectum/testing/index/functions/assertConnectError.md"},{"text":"createFakeMethod","link":"/en/api/@connectum/testing/index/functions/createFakeMethod.md"},{"text":"createFakeService","link":"/en/api/@connectum/testing/index/functions/createFakeService.md"},{"text":"createLocalClient","link":"/en/api/@connectum/testing/index/functions/createLocalClient.md"},{"text":"createMockContext","link":"/en/api/@connectum/testing/index/functions/createMockContext.md"},{"text":"createMockDescField","link":"/en/api/@connectum/testing/index/functions/createMockDescField.md"},{"text":"createMockDescMessage","link":"/en/api/@connectum/testing/index/functions/createMockDescMessage.md"},{"text":"createMockDescMethod","link":"/en/api/@connectum/testing/index/functions/createMockDescMethod.md"},{"text":"createMockFn","link":"/en/api/@connectum/testing/index/functions/createMockFn.md"},{"text":"createMockNext","link":"/en/api/@connectum/testing/index/functions/createMockNext.md"},{"text":"createMockNextError","link":"/en/api/@connectum/testing/index/functions/createMockNextError.md"},{"text":"createMockNextSlow","link":"/en/api/@connectum/testing/index/functions/createMockNextSlow.md"},{"text":"createMockRequest","link":"/en/api/@connectum/testing/index/functions/createMockRequest.md"},{"text":"createMockStream","link":"/en/api/@connectum/testing/index/functions/createMockStream.md"},{"text":"createTestServer","link":"/en/api/@connectum/testing/index/functions/createTestServer.md"},{"text":"mockResolver","link":"/en/api/@connectum/testing/index/functions/mockResolver.md"},{"text":"mockService","link":"/en/api/@connectum/testing/index/functions/mockService.md"},{"text":"withTestServer","link":"/en/api/@connectum/testing/index/functions/withTestServer.md"}]}]},{"text":"types","link":"/en/api/@connectum/testing/types/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"CreateTestServerOptions","link":"/en/api/@connectum/testing/types/interfaces/CreateTestServerOptions.md"},{"text":"TestServer","link":"/en/api/@connectum/testing/types/interfaces/TestServer.md"}]}]}]}] \ No newline at end of file +[{"text":"@connectum/auth","link":"/en/api/@connectum/auth/","collapsed":true,"items":[{"text":"Modules","collapsed":true,"items":[{"text":"proto","link":"/en/api/@connectum/auth/proto/","collapsed":true,"items":[{"text":"Type Aliases","collapsed":true,"items":[{"text":"AuthRequirements","link":"/en/api/@connectum/auth/proto/type-aliases/AuthRequirements.md"},{"text":"MethodAuth","link":"/en/api/@connectum/auth/proto/type-aliases/MethodAuth.md"},{"text":"ServiceAuth","link":"/en/api/@connectum/auth/proto/type-aliases/ServiceAuth.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"AuthRequirementsSchema","link":"/en/api/@connectum/auth/proto/variables/AuthRequirementsSchema.md"},{"text":"method_auth","link":"/en/api/@connectum/auth/proto/variables/method_auth.md"},{"text":"MethodAuthSchema","link":"/en/api/@connectum/auth/proto/variables/MethodAuthSchema.md"},{"text":"service_auth","link":"/en/api/@connectum/auth/proto/variables/service_auth.md"},{"text":"ServiceAuthSchema","link":"/en/api/@connectum/auth/proto/variables/ServiceAuthSchema.md"}]}]},{"text":"testing","link":"/en/api/@connectum/auth/testing/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"RsaTestKeypair","link":"/en/api/@connectum/auth/testing/interfaces/RsaTestKeypair.md"},{"text":"TestJwksServer","link":"/en/api/@connectum/auth/testing/interfaces/TestJwksServer.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"TEST_JWT_KID","link":"/en/api/@connectum/auth/testing/variables/TEST_JWT_KID.md"},{"text":"TEST_JWT_SECRET","link":"/en/api/@connectum/auth/testing/variables/TEST_JWT_SECRET.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"createMockAuthContext","link":"/en/api/@connectum/auth/testing/functions/createMockAuthContext.md"},{"text":"createTestJwt","link":"/en/api/@connectum/auth/testing/functions/createTestJwt.md"},{"text":"createTestJwtRS256","link":"/en/api/@connectum/auth/testing/functions/createTestJwtRS256.md"},{"text":"generateRsaTestKeypair","link":"/en/api/@connectum/auth/testing/functions/generateRsaTestKeypair.md"},{"text":"startTestJwksServer","link":"/en/api/@connectum/auth/testing/functions/startTestJwksServer.md"},{"text":"withAuthContext","link":"/en/api/@connectum/auth/testing/functions/withAuthContext.md"}]}]}]},{"text":"Classes","collapsed":true,"items":[{"text":"AuthzDeniedError","link":"/en/api/@connectum/auth/classes/AuthzDeniedError.md"},{"text":"LruCache","link":"/en/api/@connectum/auth/classes/LruCache.md"}]},{"text":"Interfaces","collapsed":true,"items":[{"text":"AuthContext","link":"/en/api/@connectum/auth/interfaces/AuthContext.md"},{"text":"AuthInterceptorOptions","link":"/en/api/@connectum/auth/interfaces/AuthInterceptorOptions.md"},{"text":"AuthzDeniedDetails","link":"/en/api/@connectum/auth/interfaces/AuthzDeniedDetails.md"},{"text":"AuthzInterceptorOptions","link":"/en/api/@connectum/auth/interfaces/AuthzInterceptorOptions.md"},{"text":"AuthzRule","link":"/en/api/@connectum/auth/interfaces/AuthzRule.md"},{"text":"CacheOptions","link":"/en/api/@connectum/auth/interfaces/CacheOptions.md"},{"text":"ClientBearerInterceptorOptions","link":"/en/api/@connectum/auth/interfaces/ClientBearerInterceptorOptions.md"},{"text":"ClientGatewayInterceptorOptions","link":"/en/api/@connectum/auth/interfaces/ClientGatewayInterceptorOptions.md"},{"text":"GatewayAuthInterceptorOptions","link":"/en/api/@connectum/auth/interfaces/GatewayAuthInterceptorOptions.md"},{"text":"GatewayHeaderMapping","link":"/en/api/@connectum/auth/interfaces/GatewayHeaderMapping.md"},{"text":"InternalAuthInterceptorOptions","link":"/en/api/@connectum/auth/interfaces/InternalAuthInterceptorOptions.md"},{"text":"JwtAuthInterceptorOptions","link":"/en/api/@connectum/auth/interfaces/JwtAuthInterceptorOptions.md"},{"text":"MeshIdentityEntry","link":"/en/api/@connectum/auth/interfaces/MeshIdentityEntry.md"},{"text":"MeshIdentityTrustOptions","link":"/en/api/@connectum/auth/interfaces/MeshIdentityTrustOptions.md"},{"text":"ProtoAuthzInterceptorOptions","link":"/en/api/@connectum/auth/interfaces/ProtoAuthzInterceptorOptions.md"},{"text":"ResolvedMethodAuth","link":"/en/api/@connectum/auth/interfaces/ResolvedMethodAuth.md"},{"text":"SessionAuthInterceptorOptions","link":"/en/api/@connectum/auth/interfaces/SessionAuthInterceptorOptions.md"},{"text":"SharedSecretTrustOptions","link":"/en/api/@connectum/auth/interfaces/SharedSecretTrustOptions.md"},{"text":"SignedTokenIssuer","link":"/en/api/@connectum/auth/interfaces/SignedTokenIssuer.md"},{"text":"SignedTokenTrustOptions","link":"/en/api/@connectum/auth/interfaces/SignedTokenTrustOptions.md"}]},{"text":"Type Aliases","collapsed":true,"items":[{"text":"AuthzEffect","link":"/en/api/@connectum/auth/type-aliases/AuthzEffect.md"},{"text":"InterceptorFactory","link":"/en/api/@connectum/auth/type-aliases/InterceptorFactory.md"},{"text":"InternalTrustSource","link":"/en/api/@connectum/auth/type-aliases/InternalTrustSource.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"AUTH_HEADERS","link":"/en/api/@connectum/auth/variables/AUTH_HEADERS.md"},{"text":"authContextStorage","link":"/en/api/@connectum/auth/variables/authContextStorage.md"},{"text":"AuthzEffect","link":"/en/api/@connectum/auth/variables/AuthzEffect.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"createAuthInterceptor","link":"/en/api/@connectum/auth/functions/createAuthInterceptor.md"},{"text":"createAuthzInterceptor","link":"/en/api/@connectum/auth/functions/createAuthzInterceptor.md"},{"text":"createClientBearerInterceptor","link":"/en/api/@connectum/auth/functions/createClientBearerInterceptor.md"},{"text":"createClientGatewayInterceptor","link":"/en/api/@connectum/auth/functions/createClientGatewayInterceptor.md"},{"text":"createGatewayAuthInterceptor","link":"/en/api/@connectum/auth/functions/createGatewayAuthInterceptor.md"},{"text":"createInternalAuthInterceptor","link":"/en/api/@connectum/auth/functions/createInternalAuthInterceptor.md"},{"text":"createJwtAuthInterceptor","link":"/en/api/@connectum/auth/functions/createJwtAuthInterceptor.md"},{"text":"createProtoAuthzInterceptor","link":"/en/api/@connectum/auth/functions/createProtoAuthzInterceptor.md"},{"text":"createSessionAuthInterceptor","link":"/en/api/@connectum/auth/functions/createSessionAuthInterceptor.md"},{"text":"getAuthContext","link":"/en/api/@connectum/auth/functions/getAuthContext.md"},{"text":"getInternalMethods","link":"/en/api/@connectum/auth/functions/getInternalMethods.md"},{"text":"getPublicMethods","link":"/en/api/@connectum/auth/functions/getPublicMethods.md"},{"text":"matchesMethodPattern","link":"/en/api/@connectum/auth/functions/matchesMethodPattern.md"},{"text":"meshIdentityTrust","link":"/en/api/@connectum/auth/functions/meshIdentityTrust.md"},{"text":"parseAuthHeaders","link":"/en/api/@connectum/auth/functions/parseAuthHeaders.md"},{"text":"requireAuthContext","link":"/en/api/@connectum/auth/functions/requireAuthContext.md"},{"text":"resolveMethodAuth","link":"/en/api/@connectum/auth/functions/resolveMethodAuth.md"},{"text":"setAuthHeaders","link":"/en/api/@connectum/auth/functions/setAuthHeaders.md"},{"text":"sharedSecretTrust","link":"/en/api/@connectum/auth/functions/sharedSecretTrust.md"},{"text":"signedTokenTrust","link":"/en/api/@connectum/auth/functions/signedTokenTrust.md"}]}]},{"text":"@connectum/cli","link":"/en/api/@connectum/cli/","collapsed":true,"items":[{"text":"commands","collapsed":true,"items":[{"text":"proto-sync","link":"/en/api/@connectum/cli/commands/proto-sync/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"ProtoSyncOptions","link":"/en/api/@connectum/cli/commands/proto-sync/interfaces/ProtoSyncOptions.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"protoSyncCommand","link":"/en/api/@connectum/cli/commands/proto-sync/variables/protoSyncCommand.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"executeProtoSync","link":"/en/api/@connectum/cli/commands/proto-sync/functions/executeProtoSync.md"}]}]}]},{"text":"utils","collapsed":true,"items":[{"text":"reflection","link":"/en/api/@connectum/cli/utils/reflection/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"ReflectionResult","link":"/en/api/@connectum/cli/utils/reflection/interfaces/ReflectionResult.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"fetchFileDescriptorSetBinary","link":"/en/api/@connectum/cli/utils/reflection/functions/fetchFileDescriptorSetBinary.md"},{"text":"fetchReflectionData","link":"/en/api/@connectum/cli/utils/reflection/functions/fetchReflectionData.md"}]}]}]}]},{"text":"@connectum/core","link":"/en/api/@connectum/core/","collapsed":true,"items":[{"text":"Modules","collapsed":true,"items":[{"text":"config","link":"/en/api/@connectum/core/config/"},{"text":"types","link":"/en/api/@connectum/core/types/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"CreateServerOptions","link":"/en/api/@connectum/core/types/interfaces/CreateServerOptions.md"},{"text":"EventBusLike","link":"/en/api/@connectum/core/types/interfaces/EventBusLike.md"},{"text":"ProtocolContext","link":"/en/api/@connectum/core/types/interfaces/ProtocolContext.md"},{"text":"ProtocolRegistration","link":"/en/api/@connectum/core/types/interfaces/ProtocolRegistration.md"},{"text":"Server","link":"/en/api/@connectum/core/types/interfaces/Server.md"},{"text":"ServerClientOptions","link":"/en/api/@connectum/core/types/interfaces/ServerClientOptions.md"},{"text":"ShutdownOptions","link":"/en/api/@connectum/core/types/interfaces/ShutdownOptions.md"},{"text":"TLSOptions","link":"/en/api/@connectum/core/types/interfaces/TLSOptions.md"}]},{"text":"Type Aliases","collapsed":true,"items":[{"text":"HttpHandler","link":"/en/api/@connectum/core/types/type-aliases/HttpHandler.md"},{"text":"LifecycleEvent","link":"/en/api/@connectum/core/types/type-aliases/LifecycleEvent.md"},{"text":"NodeRequest","link":"/en/api/@connectum/core/types/type-aliases/NodeRequest.md"},{"text":"NodeResponse","link":"/en/api/@connectum/core/types/type-aliases/NodeResponse.md"},{"text":"ServerState","link":"/en/api/@connectum/core/types/type-aliases/ServerState.md"},{"text":"ShutdownHook","link":"/en/api/@connectum/core/types/type-aliases/ShutdownHook.md"},{"text":"TransportServer","link":"/en/api/@connectum/core/types/type-aliases/TransportServer.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"LifecycleEvent","link":"/en/api/@connectum/core/types/variables/LifecycleEvent.md"},{"text":"ServerState","link":"/en/api/@connectum/core/types/variables/ServerState.md"}]}]}]},{"text":"Classes","collapsed":true,"items":[{"text":"CatalogConfigError","link":"/en/api/@connectum/core/classes/CatalogConfigError.md"},{"text":"TransportValidationError","link":"/en/api/@connectum/core/classes/TransportValidationError.md"}]},{"text":"Interfaces","collapsed":true,"items":[{"text":"BidiStreamHandle","link":"/en/api/@connectum/core/interfaces/BidiStreamHandle.md"},{"text":"CatalogClient","link":"/en/api/@connectum/core/interfaces/CatalogClient.md"},{"text":"ClientStreamHandle","link":"/en/api/@connectum/core/interfaces/ClientStreamHandle.md"},{"text":"ConnectumCallMap","link":"/en/api/@connectum/core/interfaces/ConnectumCallMap.md"},{"text":"ConnectumStreamMap","link":"/en/api/@connectum/core/interfaces/ConnectumStreamMap.md"},{"text":"Context","link":"/en/api/@connectum/core/interfaces/Context.md"},{"text":"CreateCatalogClientOptions","link":"/en/api/@connectum/core/interfaces/CreateCatalogClientOptions.md"},{"text":"CreateLocalTransportOptions","link":"/en/api/@connectum/core/interfaces/CreateLocalTransportOptions.md"},{"text":"DnsResolverOptions","link":"/en/api/@connectum/core/interfaces/DnsResolverOptions.md"},{"text":"PerServiceEnvResolverOptions","link":"/en/api/@connectum/core/interfaces/PerServiceEnvResolverOptions.md"},{"text":"ResolverContext","link":"/en/api/@connectum/core/interfaces/ResolverContext.md"},{"text":"SanitizableError","link":"/en/api/@connectum/core/interfaces/SanitizableError.md"},{"text":"ServiceDefinition","link":"/en/api/@connectum/core/interfaces/ServiceDefinition.md"},{"text":"StreamingMethodInfo","link":"/en/api/@connectum/core/interfaces/StreamingMethodInfo.md"}]},{"text":"Type Aliases","collapsed":true,"items":[{"text":"CallOptions","link":"/en/api/@connectum/core/type-aliases/CallOptions.md"},{"text":"CatalogCall","link":"/en/api/@connectum/core/type-aliases/CatalogCall.md"},{"text":"CatalogStream","link":"/en/api/@connectum/core/type-aliases/CatalogStream.md"},{"text":"ConnectumEnv","link":"/en/api/@connectum/core/type-aliases/ConnectumEnv.md"},{"text":"ConnectumMethodImpl","link":"/en/api/@connectum/core/type-aliases/ConnectumMethodImpl.md"},{"text":"ConnectumServiceImpl","link":"/en/api/@connectum/core/type-aliases/ConnectumServiceImpl.md"},{"text":"EffectiveTransport","link":"/en/api/@connectum/core/type-aliases/EffectiveTransport.md"},{"text":"RemoteResolver","link":"/en/api/@connectum/core/type-aliases/RemoteResolver.md"},{"text":"ServiceCatalog","link":"/en/api/@connectum/core/type-aliases/ServiceCatalog.md"},{"text":"ServiceOptions","link":"/en/api/@connectum/core/type-aliases/ServiceOptions.md"},{"text":"StreamReturn","link":"/en/api/@connectum/core/type-aliases/StreamReturn.md"},{"text":"TransportValidationMode","link":"/en/api/@connectum/core/type-aliases/TransportValidationMode.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"BooleanFromStringSchema","link":"/en/api/@connectum/core/variables/BooleanFromStringSchema.md"},{"text":"ConnectumEnvSchema","link":"/en/api/@connectum/core/variables/ConnectumEnvSchema.md"},{"text":"defaultPropagateHeaders","link":"/en/api/@connectum/core/variables/defaultPropagateHeaders.md"},{"text":"EffectiveTransport","link":"/en/api/@connectum/core/variables/EffectiveTransport.md"},{"text":"LogFormatSchema","link":"/en/api/@connectum/core/variables/LogFormatSchema.md"},{"text":"LoggerBackendSchema","link":"/en/api/@connectum/core/variables/LoggerBackendSchema.md"},{"text":"LogLevelSchema","link":"/en/api/@connectum/core/variables/LogLevelSchema.md"},{"text":"NodeEnvSchema","link":"/en/api/@connectum/core/variables/NodeEnvSchema.md"},{"text":"tlsPath","link":"/en/api/@connectum/core/variables/tlsPath.md"},{"text":"TRANSPORT_VALIDATION_ERROR_CODE","link":"/en/api/@connectum/core/variables/TRANSPORT_VALIDATION_ERROR_CODE.md"},{"text":"TransportValidationMode","link":"/en/api/@connectum/core/variables/TransportValidationMode.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"collectStreamingMethods","link":"/en/api/@connectum/core/functions/collectStreamingMethods.md"},{"text":"createCatalogClient","link":"/en/api/@connectum/core/functions/createCatalogClient.md"},{"text":"createLocalTransport","link":"/en/api/@connectum/core/functions/createLocalTransport.md"},{"text":"createServer","link":"/en/api/@connectum/core/functions/createServer.md"},{"text":"defineCatalog","link":"/en/api/@connectum/core/functions/defineCatalog.md"},{"text":"defineLazyService","link":"/en/api/@connectum/core/functions/defineLazyService.md"},{"text":"defineService","link":"/en/api/@connectum/core/functions/defineService.md"},{"text":"dnsResolver","link":"/en/api/@connectum/core/functions/dnsResolver.md"},{"text":"getTLSPath","link":"/en/api/@connectum/core/functions/getTLSPath.md"},{"text":"isSanitizableError","link":"/en/api/@connectum/core/functions/isSanitizableError.md"},{"text":"mapResolver","link":"/en/api/@connectum/core/functions/mapResolver.md"},{"text":"matchServicesPattern","link":"/en/api/@connectum/core/functions/matchServicesPattern.md"},{"text":"mergeCatalogs","link":"/en/api/@connectum/core/functions/mergeCatalogs.md"},{"text":"mergeEnabledServices","link":"/en/api/@connectum/core/functions/mergeEnabledServices.md"},{"text":"parseEnvConfig","link":"/en/api/@connectum/core/functions/parseEnvConfig.md"},{"text":"parseServicesEnv","link":"/en/api/@connectum/core/functions/parseServicesEnv.md"},{"text":"perServiceEnvResolver","link":"/en/api/@connectum/core/functions/perServiceEnvResolver.md"},{"text":"readTLSCertificates","link":"/en/api/@connectum/core/functions/readTLSCertificates.md"},{"text":"resolveEffectiveTransport","link":"/en/api/@connectum/core/functions/resolveEffectiveTransport.md"},{"text":"safeParseEnvConfig","link":"/en/api/@connectum/core/functions/safeParseEnvConfig.md"},{"text":"singleTransportResolver","link":"/en/api/@connectum/core/functions/singleTransportResolver.md"}]}]},{"text":"@connectum/events","link":"/en/api/@connectum/events/","collapsed":true,"items":[{"text":"Modules","collapsed":true,"items":[{"text":"types","link":"/en/api/@connectum/events/types/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"AdapterContext","link":"/en/api/@connectum/events/types/interfaces/AdapterContext.md"},{"text":"DlqOptions","link":"/en/api/@connectum/events/types/interfaces/DlqOptions.md"},{"text":"EventAdapter","link":"/en/api/@connectum/events/types/interfaces/EventAdapter.md"},{"text":"EventBus","link":"/en/api/@connectum/events/types/interfaces/EventBus.md"},{"text":"EventBusOptions","link":"/en/api/@connectum/events/types/interfaces/EventBusOptions.md"},{"text":"EventContext","link":"/en/api/@connectum/events/types/interfaces/EventContext.md"},{"text":"EventContextInit","link":"/en/api/@connectum/events/types/interfaces/EventContextInit.md"},{"text":"EventHandlerConfig","link":"/en/api/@connectum/events/types/interfaces/EventHandlerConfig.md"},{"text":"EventRouteEntry","link":"/en/api/@connectum/events/types/interfaces/EventRouteEntry.md"},{"text":"EventRouter","link":"/en/api/@connectum/events/types/interfaces/EventRouter.md"},{"text":"EventSubscription","link":"/en/api/@connectum/events/types/interfaces/EventSubscription.md"},{"text":"MiddlewareConfig","link":"/en/api/@connectum/events/types/interfaces/MiddlewareConfig.md"},{"text":"PublishOptions","link":"/en/api/@connectum/events/types/interfaces/PublishOptions.md"},{"text":"RawEvent","link":"/en/api/@connectum/events/types/interfaces/RawEvent.md"},{"text":"RawSubscribeOptions","link":"/en/api/@connectum/events/types/interfaces/RawSubscribeOptions.md"},{"text":"RetryOptions","link":"/en/api/@connectum/events/types/interfaces/RetryOptions.md"}]},{"text":"Type Aliases","collapsed":true,"items":[{"text":"EventAdapterFactory","link":"/en/api/@connectum/events/types/type-aliases/EventAdapterFactory.md"},{"text":"EventMiddleware","link":"/en/api/@connectum/events/types/type-aliases/EventMiddleware.md"},{"text":"EventMiddlewareNext","link":"/en/api/@connectum/events/types/type-aliases/EventMiddlewareNext.md"},{"text":"EventRoute","link":"/en/api/@connectum/events/types/type-aliases/EventRoute.md"},{"text":"RawEventHandler","link":"/en/api/@connectum/events/types/type-aliases/RawEventHandler.md"},{"text":"ServiceEventHandlers","link":"/en/api/@connectum/events/types/type-aliases/ServiceEventHandlers.md"},{"text":"TypedEventHandler","link":"/en/api/@connectum/events/types/type-aliases/TypedEventHandler.md"}]}]}]},{"text":"Classes","collapsed":true,"items":[{"text":"EventRouterImpl","link":"/en/api/@connectum/events/classes/EventRouterImpl.md"},{"text":"NonRetryableError","link":"/en/api/@connectum/events/classes/NonRetryableError.md"},{"text":"RetryableError","link":"/en/api/@connectum/events/classes/RetryableError.md"}]},{"text":"Interfaces","collapsed":true,"items":[{"text":"BroadcastReactor","link":"/en/api/@connectum/events/interfaces/BroadcastReactor.md"},{"text":"BroadcastSubscribersOptions","link":"/en/api/@connectum/events/interfaces/BroadcastSubscribersOptions.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"composeMiddleware","link":"/en/api/@connectum/events/functions/composeMiddleware.md"},{"text":"createBroadcastSubscribers","link":"/en/api/@connectum/events/functions/createBroadcastSubscribers.md"},{"text":"createEventBus","link":"/en/api/@connectum/events/functions/createEventBus.md"},{"text":"createEventContext","link":"/en/api/@connectum/events/functions/createEventContext.md"},{"text":"deriveServiceName","link":"/en/api/@connectum/events/functions/deriveServiceName.md"},{"text":"dlqMiddleware","link":"/en/api/@connectum/events/functions/dlqMiddleware.md"},{"text":"matchPattern","link":"/en/api/@connectum/events/functions/matchPattern.md"},{"text":"MemoryAdapter","link":"/en/api/@connectum/events/functions/MemoryAdapter.md"},{"text":"resolveTopicName","link":"/en/api/@connectum/events/functions/resolveTopicName.md"},{"text":"retryMiddleware","link":"/en/api/@connectum/events/functions/retryMiddleware.md"}]}]},{"text":"@connectum/events-amqp","link":"/en/api/@connectum/events-amqp/","collapsed":true,"items":[{"text":"Modules","collapsed":true,"items":[{"text":"testing","link":"/en/api/@connectum/events-amqp/testing/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"FakeAmqpAdapterInstance","link":"/en/api/@connectum/events-amqp/testing/interfaces/FakeAmqpAdapterInstance.md"},{"text":"FakeAmqpAdapterOptions","link":"/en/api/@connectum/events-amqp/testing/interfaces/FakeAmqpAdapterOptions.md"},{"text":"FakeAmqpControl","link":"/en/api/@connectum/events-amqp/testing/interfaces/FakeAmqpControl.md"},{"text":"FakeDeliveryResult","link":"/en/api/@connectum/events-amqp/testing/interfaces/FakeDeliveryResult.md"},{"text":"FakePublishedRecord","link":"/en/api/@connectum/events-amqp/testing/interfaces/FakePublishedRecord.md"}]},{"text":"Type Aliases","collapsed":true,"items":[{"text":"FakePublishOutcome","link":"/en/api/@connectum/events-amqp/testing/type-aliases/FakePublishOutcome.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"FakeAmqpAdapter","link":"/en/api/@connectum/events-amqp/testing/functions/FakeAmqpAdapter.md"}]}]},{"text":"types","link":"/en/api/@connectum/events-amqp/types/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"AmqpAdapterOptions","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpAdapterOptions.md"},{"text":"AmqpBindingDeclaration","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpBindingDeclaration.md"},{"text":"AmqpConsumerOptions","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpConsumerOptions.md"},{"text":"AmqpExchangeDeclaration","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpExchangeDeclaration.md"},{"text":"AmqpExchangeOptions","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpExchangeOptions.md"},{"text":"AmqpLifecycleCallbacks","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpLifecycleCallbacks.md"},{"text":"AmqpPublisherOptions","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpPublisherOptions.md"},{"text":"AmqpPublishRetryOptions","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpPublishRetryOptions.md"},{"text":"AmqpQueueDeclaration","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpQueueDeclaration.md"},{"text":"AmqpQueueOptions","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpQueueOptions.md"},{"text":"AmqpQueueOverride","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpQueueOverride.md"},{"text":"AmqpRecoveryOptions","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpRecoveryOptions.md"},{"text":"AmqpSerializationOptions","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpSerializationOptions.md"},{"text":"AmqpTopology","link":"/en/api/@connectum/events-amqp/types/interfaces/AmqpTopology.md"}]},{"text":"Type Aliases","collapsed":true,"items":[{"text":"AmqpLifecycleEvent","link":"/en/api/@connectum/events-amqp/types/type-aliases/AmqpLifecycleEvent.md"},{"text":"AmqpTopologyMode","link":"/en/api/@connectum/events-amqp/types/type-aliases/AmqpTopologyMode.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"AmqpTopologyMode","link":"/en/api/@connectum/events-amqp/types/variables/AmqpTopologyMode.md"}]}]}]},{"text":"Classes","collapsed":true,"items":[{"text":"AmqpAdapterError","link":"/en/api/@connectum/events-amqp/classes/AmqpAdapterError.md"},{"text":"AmqpConnectionError","link":"/en/api/@connectum/events-amqp/classes/AmqpConnectionError.md"},{"text":"AmqpPublishNackError","link":"/en/api/@connectum/events-amqp/classes/AmqpPublishNackError.md"},{"text":"AmqpPublishTimeoutError","link":"/en/api/@connectum/events-amqp/classes/AmqpPublishTimeoutError.md"},{"text":"AmqpSerializationError","link":"/en/api/@connectum/events-amqp/classes/AmqpSerializationError.md"},{"text":"AmqpTopologyError","link":"/en/api/@connectum/events-amqp/classes/AmqpTopologyError.md"},{"text":"AmqpUnroutableError","link":"/en/api/@connectum/events-amqp/classes/AmqpUnroutableError.md"}]},{"text":"Type Aliases","collapsed":true,"items":[{"text":"AmqpTopologyObject","link":"/en/api/@connectum/events-amqp/type-aliases/AmqpTopologyObject.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"AmqpAdapter","link":"/en/api/@connectum/events-amqp/functions/AmqpAdapter.md"},{"text":"isAutoRetriablePublishError","link":"/en/api/@connectum/events-amqp/functions/isAutoRetriablePublishError.md"},{"text":"toAmqpPattern","link":"/en/api/@connectum/events-amqp/functions/toAmqpPattern.md"}]}]},{"text":"@connectum/events-kafka","link":"/en/api/@connectum/events-kafka/","collapsed":true,"items":[{"text":"Modules","collapsed":true,"items":[{"text":"types","link":"/en/api/@connectum/events-kafka/types/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"KafkaAdapterOptions","link":"/en/api/@connectum/events-kafka/types/interfaces/KafkaAdapterOptions.md"}]}]}]},{"text":"Functions","collapsed":true,"items":[{"text":"KafkaAdapter","link":"/en/api/@connectum/events-kafka/functions/KafkaAdapter.md"}]}]},{"text":"@connectum/events-nats","link":"/en/api/@connectum/events-nats/","collapsed":true,"items":[{"text":"Modules","collapsed":true,"items":[{"text":"types","link":"/en/api/@connectum/events-nats/types/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"NatsAdapterOptions","link":"/en/api/@connectum/events-nats/types/interfaces/NatsAdapterOptions.md"},{"text":"NatsConsumerOptions","link":"/en/api/@connectum/events-nats/types/interfaces/NatsConsumerOptions.md"}]}]}]},{"text":"Functions","collapsed":true,"items":[{"text":"NatsAdapter","link":"/en/api/@connectum/events-nats/functions/NatsAdapter.md"}]}]},{"text":"@connectum/events-redis","link":"/en/api/@connectum/events-redis/","collapsed":true,"items":[{"text":"Modules","collapsed":true,"items":[{"text":"types","link":"/en/api/@connectum/events-redis/types/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"RedisAdapterOptions","link":"/en/api/@connectum/events-redis/types/interfaces/RedisAdapterOptions.md"},{"text":"RedisBrokerOptions","link":"/en/api/@connectum/events-redis/types/interfaces/RedisBrokerOptions.md"}]}]}]},{"text":"Functions","collapsed":true,"items":[{"text":"RedisAdapter","link":"/en/api/@connectum/events-redis/functions/RedisAdapter.md"}]}]},{"text":"@connectum/healthcheck","link":"/en/api/@connectum/healthcheck/","collapsed":true,"items":[{"text":"@connectum/healthcheck","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/","collapsed":true,"items":[{"text":"Classes","collapsed":true,"items":[{"text":"HealthcheckManager","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/classes/HealthcheckManager.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"healthcheckManager","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/variables/healthcheckManager.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"createHealthcheckManager","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/functions/createHealthcheckManager.md"},{"text":"createHttpHealthHandler","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/functions/createHttpHealthHandler.md"},{"text":"Healthcheck","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/functions/Healthcheck.md"},{"text":"parseServiceFromUrl","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/functions/parseServiceFromUrl.md"}]}]},{"text":"@connectum/healthcheck/types","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/types/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"HealthcheckOptions","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/types/interfaces/HealthcheckOptions.md"},{"text":"ServiceStatus","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/types/interfaces/ServiceStatus.md"}]},{"text":"Type Aliases","collapsed":true,"items":[{"text":"ServingStatus","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/types/type-aliases/ServingStatus.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"ServingStatus","link":"/en/api/@connectum/healthcheck/@connectum/healthcheck/types/variables/ServingStatus.md"}]}]}]},{"text":"@connectum/interceptors","link":"/en/api/@connectum/interceptors/","collapsed":true,"items":[{"text":"Modules","collapsed":true,"items":[{"text":"bulkhead","link":"/en/api/@connectum/interceptors/bulkhead/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"createBulkheadInterceptor","link":"/en/api/@connectum/interceptors/bulkhead/functions/createBulkheadInterceptor.md"}]}]},{"text":"circuit-breaker","link":"/en/api/@connectum/interceptors/circuit-breaker/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"createCircuitBreakerInterceptor","link":"/en/api/@connectum/interceptors/circuit-breaker/functions/createCircuitBreakerInterceptor.md"},{"text":"defaultFailurePredicate","link":"/en/api/@connectum/interceptors/circuit-breaker/functions/defaultFailurePredicate.md"}]}]},{"text":"defaults","link":"/en/api/@connectum/interceptors/defaults/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"DefaultInterceptorOptions","link":"/en/api/@connectum/interceptors/defaults/interfaces/DefaultInterceptorOptions.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"createDefaultInterceptors","link":"/en/api/@connectum/interceptors/defaults/functions/createDefaultInterceptors.md"}]}]},{"text":"errorHandler","link":"/en/api/@connectum/interceptors/errorHandler/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"createErrorHandlerInterceptor","link":"/en/api/@connectum/interceptors/errorHandler/functions/createErrorHandlerInterceptor.md"}]}]},{"text":"fallback","link":"/en/api/@connectum/interceptors/fallback/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"createFallbackInterceptor","link":"/en/api/@connectum/interceptors/fallback/functions/createFallbackInterceptor.md"}]}]},{"text":"logger","link":"/en/api/@connectum/interceptors/logger/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"createLoggerInterceptor","link":"/en/api/@connectum/interceptors/logger/functions/createLoggerInterceptor.md"}]}]},{"text":"method-filter","link":"/en/api/@connectum/interceptors/method-filter/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"createMethodFilterInterceptor","link":"/en/api/@connectum/interceptors/method-filter/functions/createMethodFilterInterceptor.md"}]}]},{"text":"retry","link":"/en/api/@connectum/interceptors/retry/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"createRetryInterceptor","link":"/en/api/@connectum/interceptors/retry/functions/createRetryInterceptor.md"}]}]},{"text":"serializer","link":"/en/api/@connectum/interceptors/serializer/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"createSerializerInterceptor","link":"/en/api/@connectum/interceptors/serializer/functions/createSerializerInterceptor.md"}]}]},{"text":"timeout","link":"/en/api/@connectum/interceptors/timeout/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"createTimeoutInterceptor","link":"/en/api/@connectum/interceptors/timeout/functions/createTimeoutInterceptor.md"}]}]}]},{"text":"Interfaces","collapsed":true,"items":[{"text":"BulkheadOptions","link":"/en/api/@connectum/interceptors/interfaces/BulkheadOptions.md"},{"text":"CircuitBreakerOptions","link":"/en/api/@connectum/interceptors/interfaces/CircuitBreakerOptions.md"},{"text":"ErrorHandlerOptions","link":"/en/api/@connectum/interceptors/interfaces/ErrorHandlerOptions.md"},{"text":"FallbackOptions","link":"/en/api/@connectum/interceptors/interfaces/FallbackOptions.md"},{"text":"LoggerOptions","link":"/en/api/@connectum/interceptors/interfaces/LoggerOptions.md"},{"text":"RetryOptions","link":"/en/api/@connectum/interceptors/interfaces/RetryOptions.md"},{"text":"SerializerOptions","link":"/en/api/@connectum/interceptors/interfaces/SerializerOptions.md"},{"text":"TimeoutOptions","link":"/en/api/@connectum/interceptors/interfaces/TimeoutOptions.md"}]},{"text":"Type Aliases","collapsed":true,"items":[{"text":"InterceptorFactory","link":"/en/api/@connectum/interceptors/type-aliases/InterceptorFactory.md"},{"text":"MethodFilterMap","link":"/en/api/@connectum/interceptors/type-aliases/MethodFilterMap.md"}]}]},{"text":"@connectum/otel","link":"/en/api/@connectum/otel/","collapsed":true,"items":[{"text":"Modules","collapsed":true,"items":[{"text":"attributes","link":"/en/api/@connectum/otel/attributes/","collapsed":true,"items":[{"text":"Type Aliases","collapsed":true,"items":[{"text":"ConnectErrorCode","link":"/en/api/@connectum/otel/attributes/type-aliases/ConnectErrorCode.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"ATTR_CONNECTUM_TRANSPORT","link":"/en/api/@connectum/otel/attributes/variables/ATTR_CONNECTUM_TRANSPORT.md"},{"text":"ATTR_CONNECTUM_TRANSPORT_METRIC","link":"/en/api/@connectum/otel/attributes/variables/ATTR_CONNECTUM_TRANSPORT_METRIC.md"},{"text":"ATTR_ERROR_TYPE","link":"/en/api/@connectum/otel/attributes/variables/ATTR_ERROR_TYPE.md"},{"text":"ATTR_NETWORK_PEER_ADDRESS","link":"/en/api/@connectum/otel/attributes/variables/ATTR_NETWORK_PEER_ADDRESS.md"},{"text":"ATTR_NETWORK_PEER_PORT","link":"/en/api/@connectum/otel/attributes/variables/ATTR_NETWORK_PEER_PORT.md"},{"text":"ATTR_NETWORK_PROTOCOL_NAME","link":"/en/api/@connectum/otel/attributes/variables/ATTR_NETWORK_PROTOCOL_NAME.md"},{"text":"ATTR_NETWORK_TRANSPORT","link":"/en/api/@connectum/otel/attributes/variables/ATTR_NETWORK_TRANSPORT.md"},{"text":"ATTR_RPC_CONNECT_RPC_STATUS_CODE","link":"/en/api/@connectum/otel/attributes/variables/ATTR_RPC_CONNECT_RPC_STATUS_CODE.md"},{"text":"ATTR_RPC_MESSAGE_ID","link":"/en/api/@connectum/otel/attributes/variables/ATTR_RPC_MESSAGE_ID.md"},{"text":"ATTR_RPC_MESSAGE_TYPE","link":"/en/api/@connectum/otel/attributes/variables/ATTR_RPC_MESSAGE_TYPE.md"},{"text":"ATTR_RPC_MESSAGE_UNCOMPRESSED_SIZE","link":"/en/api/@connectum/otel/attributes/variables/ATTR_RPC_MESSAGE_UNCOMPRESSED_SIZE.md"},{"text":"ATTR_RPC_METHOD","link":"/en/api/@connectum/otel/attributes/variables/ATTR_RPC_METHOD.md"},{"text":"ATTR_RPC_SERVICE","link":"/en/api/@connectum/otel/attributes/variables/ATTR_RPC_SERVICE.md"},{"text":"ATTR_RPC_SYSTEM","link":"/en/api/@connectum/otel/attributes/variables/ATTR_RPC_SYSTEM.md"},{"text":"ATTR_SERVER_ADDRESS","link":"/en/api/@connectum/otel/attributes/variables/ATTR_SERVER_ADDRESS.md"},{"text":"ATTR_SERVER_PORT","link":"/en/api/@connectum/otel/attributes/variables/ATTR_SERVER_PORT.md"},{"text":"ConnectErrorCode","link":"/en/api/@connectum/otel/attributes/variables/ConnectErrorCode.md"},{"text":"ConnectErrorCodeName","link":"/en/api/@connectum/otel/attributes/variables/ConnectErrorCodeName.md"},{"text":"CONNECTUM_INTERNAL_TRANSPORT_HEADER","link":"/en/api/@connectum/otel/attributes/variables/CONNECTUM_INTERNAL_TRANSPORT_HEADER.md"},{"text":"CONNECTUM_INTERNAL_TRANSPORT_IN_PROCESS","link":"/en/api/@connectum/otel/attributes/variables/CONNECTUM_INTERNAL_TRANSPORT_IN_PROCESS.md"},{"text":"RPC_MESSAGE_EVENT","link":"/en/api/@connectum/otel/attributes/variables/RPC_MESSAGE_EVENT.md"},{"text":"RPC_SYSTEM_CONNECT_RPC","link":"/en/api/@connectum/otel/attributes/variables/RPC_SYSTEM_CONNECT_RPC.md"}]}]},{"text":"client-interceptor","link":"/en/api/@connectum/otel/client-interceptor/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"createOtelClientInterceptor","link":"/en/api/@connectum/otel/client-interceptor/functions/createOtelClientInterceptor.md"}]}]},{"text":"interceptor","link":"/en/api/@connectum/otel/interceptor/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"createOtelInterceptor","link":"/en/api/@connectum/otel/interceptor/functions/createOtelInterceptor.md"}]}]},{"text":"logger","link":"/en/api/@connectum/otel/logger/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"Logger","link":"/en/api/@connectum/otel/logger/interfaces/Logger.md"},{"text":"LoggerOptions","link":"/en/api/@connectum/otel/logger/interfaces/LoggerOptions.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"getLogger","link":"/en/api/@connectum/otel/logger/functions/getLogger.md"}]}]},{"text":"meter","link":"/en/api/@connectum/otel/meter/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"getMeter","link":"/en/api/@connectum/otel/meter/functions/getMeter.md"}]}]},{"text":"metrics","link":"/en/api/@connectum/otel/metrics/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"RpcClientMetrics","link":"/en/api/@connectum/otel/metrics/interfaces/RpcClientMetrics.md"},{"text":"RpcServerMetrics","link":"/en/api/@connectum/otel/metrics/interfaces/RpcServerMetrics.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"createRpcClientMetrics","link":"/en/api/@connectum/otel/metrics/functions/createRpcClientMetrics.md"},{"text":"createRpcServerMetrics","link":"/en/api/@connectum/otel/metrics/functions/createRpcServerMetrics.md"}]}]},{"text":"provider","link":"/en/api/@connectum/otel/provider/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"ProviderOptions","link":"/en/api/@connectum/otel/provider/interfaces/ProviderOptions.md"},{"text":"ResourceAttributeInputs","link":"/en/api/@connectum/otel/provider/interfaces/ResourceAttributeInputs.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"buildResourceAttributes","link":"/en/api/@connectum/otel/provider/functions/buildResourceAttributes.md"},{"text":"getProvider","link":"/en/api/@connectum/otel/provider/functions/getProvider.md"},{"text":"initProvider","link":"/en/api/@connectum/otel/provider/functions/initProvider.md"},{"text":"parseOtelResourceAttributesEnv","link":"/en/api/@connectum/otel/provider/functions/parseOtelResourceAttributesEnv.md"},{"text":"shutdownProvider","link":"/en/api/@connectum/otel/provider/functions/shutdownProvider.md"}]}]},{"text":"shared","link":"/en/api/@connectum/otel/shared/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"BaseAttributeParams","link":"/en/api/@connectum/otel/shared/interfaces/BaseAttributeParams.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"applyAttributeFilter","link":"/en/api/@connectum/otel/shared/functions/applyAttributeFilter.md"},{"text":"buildBaseAttributes","link":"/en/api/@connectum/otel/shared/functions/buildBaseAttributes.md"},{"text":"buildErrorAttributes","link":"/en/api/@connectum/otel/shared/functions/buildErrorAttributes.md"},{"text":"detectConnectumTransport","link":"/en/api/@connectum/otel/shared/functions/detectConnectumTransport.md"},{"text":"estimateMessageSize","link":"/en/api/@connectum/otel/shared/functions/estimateMessageSize.md"},{"text":"wrapAsyncIterable","link":"/en/api/@connectum/otel/shared/functions/wrapAsyncIterable.md"}]}]},{"text":"traceAll","link":"/en/api/@connectum/otel/traceAll/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"traceAll","link":"/en/api/@connectum/otel/traceAll/functions/traceAll.md"}]}]},{"text":"traced","link":"/en/api/@connectum/otel/traced/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"traced","link":"/en/api/@connectum/otel/traced/functions/traced.md"}]}]},{"text":"tracer","link":"/en/api/@connectum/otel/tracer/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"getTracer","link":"/en/api/@connectum/otel/tracer/functions/getTracer.md"}]}]}]},{"text":"Interfaces","collapsed":true,"items":[{"text":"BatchSpanProcessorOptions","link":"/en/api/@connectum/otel/interfaces/BatchSpanProcessorOptions.md"},{"text":"CollectorOptions","link":"/en/api/@connectum/otel/interfaces/CollectorOptions.md"},{"text":"Meter","link":"/en/api/@connectum/otel/interfaces/Meter.md"},{"text":"OtelBaseOptions","link":"/en/api/@connectum/otel/interfaces/OtelBaseOptions.md"},{"text":"OtelClientInterceptorOptions","link":"/en/api/@connectum/otel/interfaces/OtelClientInterceptorOptions.md"},{"text":"OtelInterceptorOptions","link":"/en/api/@connectum/otel/interfaces/OtelInterceptorOptions.md"},{"text":"OTLPSettings","link":"/en/api/@connectum/otel/interfaces/OTLPSettings.md"},{"text":"TraceAllOptions","link":"/en/api/@connectum/otel/interfaces/TraceAllOptions.md"},{"text":"TracedOptions","link":"/en/api/@connectum/otel/interfaces/TracedOptions.md"},{"text":"Tracer","link":"/en/api/@connectum/otel/interfaces/Tracer.md"}]},{"text":"Type Aliases","collapsed":true,"items":[{"text":"ArgsFilter","link":"/en/api/@connectum/otel/type-aliases/ArgsFilter.md"},{"text":"ExporterType","link":"/en/api/@connectum/otel/type-aliases/ExporterType.md"},{"text":"MethodArgsFilter","link":"/en/api/@connectum/otel/type-aliases/MethodArgsFilter.md"},{"text":"OtelAttributeFilter","link":"/en/api/@connectum/otel/type-aliases/OtelAttributeFilter.md"},{"text":"OtelFilter","link":"/en/api/@connectum/otel/type-aliases/OtelFilter.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"ExporterType","link":"/en/api/@connectum/otel/variables/ExporterType.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"getBatchSpanProcessorOptions","link":"/en/api/@connectum/otel/functions/getBatchSpanProcessorOptions.md"},{"text":"getCollectorOptions","link":"/en/api/@connectum/otel/functions/getCollectorOptions.md"},{"text":"getOTLPSettings","link":"/en/api/@connectum/otel/functions/getOTLPSettings.md"},{"text":"getServiceMetadata","link":"/en/api/@connectum/otel/functions/getServiceMetadata.md"}]}]},{"text":"@connectum/reflection","link":"/en/api/@connectum/reflection/","collapsed":true,"items":[{"text":"Functions","collapsed":true,"items":[{"text":"collectFileProtos","link":"/en/api/@connectum/reflection/functions/collectFileProtos.md"},{"text":"Reflection","link":"/en/api/@connectum/reflection/functions/Reflection.md"}]}]},{"text":"@connectum/test-fixtures","link":"/en/api/@connectum/test-fixtures/","collapsed":true,"items":[{"text":"index","link":"/en/api/@connectum/test-fixtures/index/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"MockCall","link":"/en/api/@connectum/test-fixtures/index/interfaces/MockCall.md"},{"text":"MockFn","link":"/en/api/@connectum/test-fixtures/index/interfaces/MockFn.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"assertConnectError","link":"/en/api/@connectum/test-fixtures/index/functions/assertConnectError.md"},{"text":"createFakeMethod","link":"/en/api/@connectum/test-fixtures/index/functions/createFakeMethod.md"},{"text":"createFakeService","link":"/en/api/@connectum/test-fixtures/index/functions/createFakeService.md"},{"text":"createMockDescField","link":"/en/api/@connectum/test-fixtures/index/functions/createMockDescField.md"},{"text":"createMockDescMessage","link":"/en/api/@connectum/test-fixtures/index/functions/createMockDescMessage.md"},{"text":"createMockDescMethod","link":"/en/api/@connectum/test-fixtures/index/functions/createMockDescMethod.md"},{"text":"createMockFn","link":"/en/api/@connectum/test-fixtures/index/functions/createMockFn.md"},{"text":"createMockNext","link":"/en/api/@connectum/test-fixtures/index/functions/createMockNext.md"},{"text":"createMockNextError","link":"/en/api/@connectum/test-fixtures/index/functions/createMockNextError.md"},{"text":"createMockNextSlow","link":"/en/api/@connectum/test-fixtures/index/functions/createMockNextSlow.md"},{"text":"createMockRequest","link":"/en/api/@connectum/test-fixtures/index/functions/createMockRequest.md"},{"text":"createMockStream","link":"/en/api/@connectum/test-fixtures/index/functions/createMockStream.md"}]}]},{"text":"types","link":"/en/api/@connectum/test-fixtures/types/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"FakeMethodOptions","link":"/en/api/@connectum/test-fixtures/types/interfaces/FakeMethodOptions.md"},{"text":"FakeServiceOptions","link":"/en/api/@connectum/test-fixtures/types/interfaces/FakeServiceOptions.md"},{"text":"MockDescFieldOptions","link":"/en/api/@connectum/test-fixtures/types/interfaces/MockDescFieldOptions.md"},{"text":"MockDescMessageOptions","link":"/en/api/@connectum/test-fixtures/types/interfaces/MockDescMessageOptions.md"},{"text":"MockDescMethodOptions","link":"/en/api/@connectum/test-fixtures/types/interfaces/MockDescMethodOptions.md"},{"text":"MockNextOptions","link":"/en/api/@connectum/test-fixtures/types/interfaces/MockNextOptions.md"},{"text":"MockRequestOptions","link":"/en/api/@connectum/test-fixtures/types/interfaces/MockRequestOptions.md"},{"text":"MockStreamOptions","link":"/en/api/@connectum/test-fixtures/types/interfaces/MockStreamOptions.md"}]}]}]},{"text":"@connectum/testing","link":"/en/api/@connectum/testing/","collapsed":true,"items":[{"text":"index","link":"/en/api/@connectum/testing/index/","collapsed":true,"items":[{"text":"Classes","collapsed":true,"items":[{"text":"InMemoryMetricCollector","link":"/en/api/@connectum/testing/index/classes/InMemoryMetricCollector.md"},{"text":"InMemorySpanCollector","link":"/en/api/@connectum/testing/index/classes/InMemorySpanCollector.md"}]},{"text":"Interfaces","collapsed":true,"items":[{"text":"CreateMockContextOptions","link":"/en/api/@connectum/testing/index/interfaces/CreateMockContextOptions.md"},{"text":"FakeMethodOptions","link":"/en/api/@connectum/testing/index/interfaces/FakeMethodOptions.md"},{"text":"FakeServiceOptions","link":"/en/api/@connectum/testing/index/interfaces/FakeServiceOptions.md"},{"text":"MockCall","link":"/en/api/@connectum/testing/index/interfaces/MockCall.md"},{"text":"MockDescFieldOptions","link":"/en/api/@connectum/testing/index/interfaces/MockDescFieldOptions.md"},{"text":"MockDescMessageOptions","link":"/en/api/@connectum/testing/index/interfaces/MockDescMessageOptions.md"},{"text":"MockDescMethodOptions","link":"/en/api/@connectum/testing/index/interfaces/MockDescMethodOptions.md"},{"text":"MockFn","link":"/en/api/@connectum/testing/index/interfaces/MockFn.md"},{"text":"MockNextOptions","link":"/en/api/@connectum/testing/index/interfaces/MockNextOptions.md"},{"text":"MockRequestOptions","link":"/en/api/@connectum/testing/index/interfaces/MockRequestOptions.md"},{"text":"MockService","link":"/en/api/@connectum/testing/index/interfaces/MockService.md"},{"text":"MockStreamOptions","link":"/en/api/@connectum/testing/index/interfaces/MockStreamOptions.md"},{"text":"NormalizedMetric","link":"/en/api/@connectum/testing/index/interfaces/NormalizedMetric.md"},{"text":"NormalizedSpan","link":"/en/api/@connectum/testing/index/interfaces/NormalizedSpan.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"MOCK_RESPONSE_HEADER","link":"/en/api/@connectum/testing/index/variables/MOCK_RESPONSE_HEADER.md"},{"text":"TRANSPORT_METRIC_ATTRIBUTE","link":"/en/api/@connectum/testing/index/variables/TRANSPORT_METRIC_ATTRIBUTE.md"},{"text":"TRANSPORT_SPAN_ATTRIBUTE","link":"/en/api/@connectum/testing/index/variables/TRANSPORT_SPAN_ATTRIBUTE.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"assertConnectError","link":"/en/api/@connectum/testing/index/functions/assertConnectError.md"},{"text":"createFakeMethod","link":"/en/api/@connectum/testing/index/functions/createFakeMethod.md"},{"text":"createFakeService","link":"/en/api/@connectum/testing/index/functions/createFakeService.md"},{"text":"createLocalClient","link":"/en/api/@connectum/testing/index/functions/createLocalClient.md"},{"text":"createMockContext","link":"/en/api/@connectum/testing/index/functions/createMockContext.md"},{"text":"createMockDescField","link":"/en/api/@connectum/testing/index/functions/createMockDescField.md"},{"text":"createMockDescMessage","link":"/en/api/@connectum/testing/index/functions/createMockDescMessage.md"},{"text":"createMockDescMethod","link":"/en/api/@connectum/testing/index/functions/createMockDescMethod.md"},{"text":"createMockFn","link":"/en/api/@connectum/testing/index/functions/createMockFn.md"},{"text":"createMockNext","link":"/en/api/@connectum/testing/index/functions/createMockNext.md"},{"text":"createMockNextError","link":"/en/api/@connectum/testing/index/functions/createMockNextError.md"},{"text":"createMockNextSlow","link":"/en/api/@connectum/testing/index/functions/createMockNextSlow.md"},{"text":"createMockRequest","link":"/en/api/@connectum/testing/index/functions/createMockRequest.md"},{"text":"createMockStream","link":"/en/api/@connectum/testing/index/functions/createMockStream.md"},{"text":"createTestServer","link":"/en/api/@connectum/testing/index/functions/createTestServer.md"},{"text":"mockResolver","link":"/en/api/@connectum/testing/index/functions/mockResolver.md"},{"text":"mockService","link":"/en/api/@connectum/testing/index/functions/mockService.md"},{"text":"withTestServer","link":"/en/api/@connectum/testing/index/functions/withTestServer.md"}]}]},{"text":"types","link":"/en/api/@connectum/testing/types/","collapsed":true,"items":[{"text":"Interfaces","collapsed":true,"items":[{"text":"CreateTestServerOptions","link":"/en/api/@connectum/testing/types/interfaces/CreateTestServerOptions.md"},{"text":"TestServer","link":"/en/api/@connectum/testing/types/interfaces/TestServer.md"}]}]}]}] \ No newline at end of file diff --git a/en/packages/events-amqp.md b/en/packages/events-amqp.md index 5dadea7..2225f0f 100644 --- a/en/packages/events-amqp.md +++ b/en/packages/events-amqp.md @@ -582,6 +582,56 @@ const routes = (events: EventRouter) => { Internal headers (`x-event-id`, `x-published-at`, `x-connectum-publish-id`) are set by the adapter on publish and stripped from metadata on delivery. +## Testing + +A programmable test double ships via the **`@connectum/events-amqp/testing`** subpath (since 1.3.0) -- model AMQP failure semantics in unit tests without a broker and without `amqplib` in the runtime graph: + +```typescript +import { FakeAmqpAdapter } from '@connectum/events-amqp/testing'; +import { AmqpPublishNackError, AmqpPublishTimeoutError } from '@connectum/events-amqp'; + +const fake = FakeAmqpAdapter({ lifecycle: { onLifecycle: (e) => log.push(e) } }); +const bus = createEventBus({ adapter: fake, routes: [eventRoutes] }); +await bus.start(); + +// Inject publish outcomes (FIFO; empty queue = ack). This includes +// AmqpPublishTimeoutError -- the state-UNKNOWN outcome that no real broker +// (or even Toxiproxy) reproduces deterministically: +fake.control.nextPublish(new AmqpPublishNackError('nacked'), new AmqpPublishTimeoutError('no outcome')); +await assert.rejects(() => bus.publish(OrderSchema, order), AmqpPublishNackError); +await assert.rejects(() => bus.publish(OrderSchema, order), AmqpPublishTimeoutError); + +// Drive the connection lifecycle deterministically: +fake.control.dropConnection(); // disconnected → reconnecting (publishes fail fast; subscribes PARK) +fake.control.failSetup(); // the next recovery re-assert fails (setup-failed for topology errors) +fake.control.completeRecovery(); // …consume it, then heal on the next call +fake.control.completeRecovery(); // connected { reconnected: true }, parked subscribes complete + +// Deliver events (wildcards + competing-consumer groups) and assert settlement: +const result = await fake.control.deliver('order.created', payload); +// result: { delivered, acked, nacked, requeued, failed } +``` + +**Parity contract.** Lifecycle events go through the real adapter's dispatch, so the canonical `AmqpLifecycleEvent` union ordering, the deprecated flat callbacks, and exception isolation match by construction. Errors are the real typed classes -- `instanceof` holds across the subpath boundary. The state machine mirrors the real adapter: `connect()` on a live, recovering, or retries-exhausted fake throws `already connected`; a mid-recovery `subscribe()` parks and settles with the recovery outcome; `setup-failed` and fail-fast gate on `AmqpTopologyError` exactly like the real probe. Incoming envelope headers (`x-event-id`, `x-published-at`) are honored and stripped like the real consumer. + +**Documented divergences.** There is no timing simulation: recovery advances only via explicit `control` calls, and `reconnecting.delay` is `0`. Handler `ack`/`nack` calls are recorded in the `deliver()` result but do not drive redelivery -- re-deliver explicitly with `attempt + 1` (handler rejections are swallowed and counted as `failed`, like the real nack-on-error consumer). `control.published` records the bus-facing call, not the wire envelope. A queued topology `failSetup` at `connect()` without `failFastOnInitialSetupError` reports and proceeds instead of blocking forever. + +::: tip Choosing a test double +For the generic happy path (routing, handlers, middleware, DLQ flows) prefer `MemoryAdapter` from `@connectum/events`. Reach for `FakeAmqpAdapter` when the test needs AMQP failure semantics: typed publish outcomes, recovery/lifecycle sequences, or topology-error classification. For real-broker semantics, run the integration suite against RabbitMQ. +::: + +### `./testing` subpath exports + +| Export | Description | +|--------|-------------| +| `FakeAmqpAdapter` | Factory creating the programmable fake (returns `FakeAmqpAdapterInstance`) | +| `FakeAmqpAdapterInstance` | The fake itself -- an `EventAdapter` extended with the `control` handle | +| `FakeAmqpAdapterOptions` | Options type (`lifecycle`, `failFastOnInitialSetupError`) | +| `FakeAmqpControl` | The control-surface type (`nextPublish`, `dropConnection`, `completeRecovery`, `exhaustRecovery`, `failSetup`, `block`/`unblock`, `deliver`, `published`) | +| `FakePublishOutcome` | One queued publish outcome: `"ack"` or an `Error` to reject with | +| `FakePublishedRecord` | One recorded bus-facing publish (`eventType`, `payload`, `options`) | +| `FakeDeliveryResult` | Settlement counts returned by `control.deliver()` | + ## Exports Summary | Export | Description | diff --git a/en/packages/events.md b/en/packages/events.md index b600727..a56bfc1 100644 --- a/en/packages/events.md +++ b/en/packages/events.md @@ -324,7 +324,7 @@ const bus = createEventBus({ adapter: MemoryAdapter(), routes: [eventRoutes] }); **Secondary pattern -- `EventAdapterFactory`** (`() => EventAdapter`, exported since 1.3.0): a zero-argument factory for the places where each consumer needs its **own** broker connection -- `createBroadcastSubscribers()` invokes it once per reactor. Prefer the instance elsewhere: a test double with its own configuration does not fit a zero-argument factory signature without a wrapper closure. -**Test doubles:** `MemoryAdapter` covers the generic happy path (routing, handlers, middleware, DLQ flows). Broker-specific failure semantics (typed AMQP error taxonomy, recovery/lifecycle behavior) cannot be modeled generically -- a programmable `FakeAmqpAdapter` will ship via the `@connectum/events-amqp/testing` subpath (tracked in [connectum#203](https://github.com/Connectum-Framework/connectum/issues/203)). For real-broker integration semantics, see each adapter package's testing notes. +**Test doubles:** `MemoryAdapter` covers the generic happy path (routing, handlers, middleware, DLQ flows). Broker-specific failure semantics (typed AMQP error taxonomy, recovery/lifecycle behavior) cannot be modeled generically -- use the programmable `FakeAmqpAdapter` from the `@connectum/events-amqp/testing` subpath (since 1.3.0; see [events-amqp Testing](./events-amqp.md#testing)). For real-broker integration semantics, see each adapter package's testing notes. ### Consumer Groups