QueueHyperlinkMetadata<Id, T, E, EEnqueue, R>Queue declaration metadata for QueueHyperlinkDefinition and QueueHyperlinkServiceDefinition.
export interface interface QueueHyperlinkMetadata<Id extends string, T, E = never, EEnqueue = never, R = never>Queue declaration metadata for
QueueHyperlinkDefinition
and
QueueHyperlinkMetadata<
function (type parameter) Id in QueueHyperlinkMetadata<Id extends string, T, E = never, EEnqueue = never, R = never>Id extends string,
function (type parameter) T in QueueHyperlinkMetadata<Id extends string, T, E = never, EEnqueue = never, R = never>T,
function (type parameter) E in QueueHyperlinkMetadata<Id extends string, T, E = never, EEnqueue = never, R = never>E = never,
function (type parameter) EEnqueue in QueueHyperlinkMetadata<Id extends string, T, E = never, EEnqueue = never, R = never>EEnqueue = never,
function (type parameter) R in QueueHyperlinkMetadata<Id extends string, T, E = never, EEnqueue = never, R = never>R = never,
> {
readonly QueueHyperlinkMetadata<Id extends string, T, E = never, EEnqueue = never, R = never>.id: Id extends stringid: function (type parameter) Id in QueueHyperlinkMetadata<Id extends string, T, E = never, EEnqueue = never, R = never>Id;
readonly QueueHyperlinkMetadata<Id extends string, T, E = never, EEnqueue = never, R = never>.kind: "queue"kind: "queue";
readonly QueueHyperlinkMetadata<Id extends string, T, E = never, EEnqueue = never, R = never>.tag: Context.Service<Id, EngineQueueHandle<T, E, EEnqueue, R, void>>(property) QueueHyperlinkMetadata<Id extends string, T, E = never, EEnqueue = never, R = never>.tag: {
of: (this: void, self: EngineQueueHandle<T, E, EEnqueue, R, void>) => EngineQueueHandle<T, E, EEnqueue, R, void>;
context: (self: EngineQueueHandle<T, E, EEnqueue, R, void>) => Context.Context<Id>;
use: (f: (service: EngineQueueHandle<T, E, EEnqueue, R, void>) => Effect.Effect<A, E, R>) => Effect.Effect<A, E, Id | R>;
useSync: (f: (service: EngineQueueHandle<T, E, EEnqueue, R, void>) => A) => Effect.Effect<A, never, Id>;
Identifier: Identifier;
Service: Shape;
key: string;
stack: string | undefined;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
tag: import ContextContext.interface Service<in out Identifier, in out Shape>Context key with helper methods for working with a service.
Details
context creates a one-service Context, use and useSync retrieve the
service from the current Effect context before applying a function, and of
is a type-level helper for service values.
Example (Defining a service key)
import { Context } from "effect"
// Define an identifier for a database service
const Database = Context.Service<{ query: (sql: string) => string }>(
"Database"
)
// The key can be used to store and retrieve services
const context = Context.make(Database, { query: (sql) => `Result: ${sql}` })
Creates a Context service key.
When to use
Use when you need to define a context service key for a dependency that must
be provided by the surrounding context.
Details
Call Context.Service("Key") for a function-style key, or use the two-stage
form Context.Service<Self, Shape>()("Key") for class-style service
declarations. The returned key can be yielded as an Effect and passed to
Context.make, Context.add, and the Context getter functions.
Gotchas
The string key is the runtime identity of the service. Reusing the same key
string for unrelated services makes them occupy the same slot in a
Context.
Example (Creating service keys)
import { Context } from "effect"
// Create a simple service
const Database = Context.Service<{
query: (sql: string) => string
}>("Database")
// Create a service class
class Config extends Context.Service<Config, {
port: number
}>()("Config") {}
// Use the services to create contexts
const db = Context.make(Database, {
query: (sql) => `Result: ${sql}`
})
const config = Context.make(Config, { port: 8080 })
Namespace containing utility types for Context service keys.
Example (Extracting service types)
import { Context } from "effect"
const Database = Context.Service<{
query: (sql: string) => string
}>("Database")
// Extract service type from a key
type DatabaseService = Context.Service.Shape<typeof Database>
// Extract identifier type from a key
type DatabaseId = Context.Service.Identifier<typeof Database>
Service<function (type parameter) Id in QueueHyperlinkMetadata<Id extends string, T, E = never, EEnqueue = never, R = never>Id, type EngineQueueHandle<
T,
E = never,
EEnqueue = never,
R = never,
A = void
> = QueueHandleApi<T, E, EEnqueue, R, A> &
QueueHandlePhantomWorkerFailures<E>
Priority queue surface for yield*able queue services (T, E, enqueue errors EEnqueue, requirements R last).
EngineQueueHandle<function (type parameter) T in QueueHyperlinkMetadata<Id extends string, T, E = never, EEnqueue = never, R = never>T, function (type parameter) E in QueueHyperlinkMetadata<Id extends string, T, E = never, EEnqueue = never, R = never>E, function (type parameter) EEnqueue in QueueHyperlinkMetadata<Id extends string, T, E = never, EEnqueue = never, R = never>EEnqueue, function (type parameter) R in QueueHyperlinkMetadata<Id extends string, T, E = never, EEnqueue = never, R = never>R>>;
/**
* Serializable item codec metadata when {@link QueueHyperlinkConfig.itemSchema}
* was provided on {@link QueueHyperlink.Service}. Used by typed the process manager
* contracts for remote discovery and drift checks.
*/
readonly QueueHyperlinkMetadata<Id extends string, T, E = never, EEnqueue = never, R = never>.item?: QueueItemCodecDescriptorSerializable item codec metadata when
QueueHyperlinkConfig.itemSchema
was provided on
QueueHyperlink.Service
. Used by typed the process manager
contracts for remote discovery and drift checks.
item?: QueueItemCodecDescriptor;
}