<
Self,
Key extends Schema.Top,
Value extends Schema.Top,
Error extends Schema.Top
>(
tag: ShardMapTag<Self, Key, Value, Error>,
options?: ShardMapOptions
): Layer.Layer<
| Handler<"get">
| Handler<"size">
| Handler<"put">
| Handler<"delete">
| Handler<"getLocal">
| Handler<"putLocal">
| Handler<"deleteLocal">
| Handler<"sizeLocal">
| Handler<"sizeByNode">
| Self
| Hyperlink.Local<Self>,
never,
Hyperlink.PeersId<Self> | Hyperlink.SelfNodeId<Self>
>Serve this ShardMap and grant its local instance from one materialization —
counterpart to Hyperlink.serve. Opens SQLite (:memory: by default; pass
{ filename } for a durable file). Requires the mesh capability:
export const const serve: <
Self,
Key extends Schema.Top,
Value extends Schema.Top,
Error extends Schema.Top
>(
tag: ShardMapTag<Self, Key, Value, Error>,
options?: ShardMapOptions
) => Layer.Layer<unknown, unknown, unknown>
Serve this ShardMap and grant its local instance from one materialization —
counterpart to
Hyperlink.serve
. Opens SQLite (:memory: by default; pass
{ filename } for a durable file). Requires the mesh capability:
serve = <
function (type parameter) Self in <Self, Key extends Schema.Top, Value extends Schema.Top, Error extends Schema.Top>(tag: ShardMapTag<Self, Key, Value, Error>, options?: ShardMapOptions): Layer.Layer<unknown, unknown, unknown>Self,
function (type parameter) Key in <Self, Key extends Schema.Top, Value extends Schema.Top, Error extends Schema.Top>(tag: ShardMapTag<Self, Key, Value, Error>, options?: ShardMapOptions): Layer.Layer<unknown, unknown, unknown>Key extends import SchemaSchema.Top,
function (type parameter) Value in <Self, Key extends Schema.Top, Value extends Schema.Top, Error extends Schema.Top>(tag: ShardMapTag<Self, Key, Value, Error>, options?: ShardMapOptions): Layer.Layer<unknown, unknown, unknown>Value extends import SchemaSchema.Top,
function (type parameter) Error in <Self, Key extends Schema.Top, Value extends Schema.Top, Error extends Schema.Top>(tag: ShardMapTag<Self, Key, Value, Error>, options?: ShardMapOptions): Layer.Layer<unknown, unknown, unknown>Error extends import SchemaSchema.Top,
>(
tag: ShardMapTag<Self, Key, Value, Error>tag: type ShardMapTag<
Self,
Key extends Schema.Top,
Value extends Schema.Top,
Error extends Schema.Top = Schema.Never
> = any
A ShardMap instance tag — wire contract plus stamped key / value / keyOf carriers.
ShardMapTag<function (type parameter) Self in <Self, Key extends Schema.Top, Value extends Schema.Top, Error extends Schema.Top>(tag: ShardMapTag<Self, Key, Value, Error>, options?: ShardMapOptions): Layer.Layer<unknown, unknown, unknown>Self, function (type parameter) Key in <Self, Key extends Schema.Top, Value extends Schema.Top, Error extends Schema.Top>(tag: ShardMapTag<Self, Key, Value, Error>, options?: ShardMapOptions): Layer.Layer<unknown, unknown, unknown>Key, function (type parameter) Value in <Self, Key extends Schema.Top, Value extends Schema.Top, Error extends Schema.Top>(tag: ShardMapTag<Self, Key, Value, Error>, options?: ShardMapOptions): Layer.Layer<unknown, unknown, unknown>Value, function (type parameter) Error in <Self, Key extends Schema.Top, Value extends Schema.Top, Error extends Schema.Top>(tag: ShardMapTag<Self, Key, Value, Error>, options?: ShardMapOptions): Layer.Layer<unknown, unknown, unknown>Error>,
options: ShardMapOptionsoptions?: type ShardMapOptions =
internal.ShardMapOptions
Options for
layer
/
serve
/
serveRemote
.
ShardMapOptions,
) =>
const withSqlite: <A, E, R>(
options: ShardMapOptions | undefined,
layer: Layer.Layer<A, E, R | SqlClient>
) => Layer.Layer<A, E, R>
Provide
SqlClient
(default :memory:) and install the shard-map schema before the
resource layer builds.
withSqlite(
options: ShardMapOptionsoptions,
import HyperlinkHyperlink.serve(
tag: ShardMapTag<Self, Key, Value, Error>tag,
const buildImpl: <
Self,
Key extends Schema.Top,
Value extends Schema.Top,
Error extends Schema.Top
>(
tag: ShardMapTag<Self, Key, Value, Error>,
options?: ShardMapOptions
) => Effect.Effect<
ShardMapImpl<Key, Value>,
never,
PeersId<Self> | SelfNodeId<Self> | SqlClient
>
The served SQL-backed shard + routed/fleet members. Requires
Hyperlink.peers
/
Hyperlink.selfNode
and
SqlClient
(toolkit layers install schema + provide a
default :memory: client).
buildImpl(tag: ShardMapTag<Self, Key, Value, Error>tag, options: ShardMapOptionsoptions).Pipeable.pipe<Effect.Effect<ShardMapImpl<Schema.Top, Schema.Top>, never, any>, Effect.Effect<Hyperlink.ImplOf<{
get: any;
put: any;
delete: any;
getLocal: any;
putLocal: any;
deleteLocal: any;
sizeLocal: any;
sizeByNode: any;
size: any;
}>, never, any>>(this: Effect.Effect<ShardMapImpl<Schema.Top, Schema.Top>, never, any>, ab: (_: Effect.Effect<ShardMapImpl<Schema.Top, Schema.Top>, never, any>) => Effect.Effect<Hyperlink.ImplOf<{
get: any;
put: any;
delete: any;
getLocal: any;
putLocal: any;
deleteLocal: any;
sizeLocal: any;
sizeByNode: any;
size: any;
}>, never, any>): Effect.Effect<...> (+21 overloads)
pipe(import EffectEffect.const map: <ShardMapImpl<Schema.Top, Schema.Top>, Hyperlink.ImplOf<{
get: any;
put: any;
delete: any;
getLocal: any;
putLocal: any;
deleteLocal: any;
sizeLocal: any;
sizeByNode: any;
size: any;
}>>(f: (a: ShardMapImpl<Schema.Top, Schema.Top>) => Hyperlink.ImplOf<{
get: any;
put: any;
delete: any;
getLocal: any;
putLocal: any;
deleteLocal: any;
sizeLocal: any;
sizeByNode: any;
size: any;
}>) => <E, R>(self: Effect.Effect<ShardMapImpl<Schema.Top, Schema.Top>, E, R>) => Effect.Effect<Hyperlink.ImplOf<{
get: any;
put: any;
delete: any;
getLocal: any;
putLocal: any;
deleteLocal: any;
sizeLocal: any;
sizeByNode: any;
size: any;
}>, E, R> (+1 overload)
Transforms the value inside an effect by applying a function to it.
When to use
Use to transform an effect's success value with a function that returns a
plain value, producing a new effect without changing the original effect's
typed error or context requirements.
Details
map takes a function and applies it to the value contained within an
effect, creating a new effect with the transformed value.
It's important to note that effects are immutable, meaning that the original
effect is not modified. Instead, a new effect is returned with the updated
value.
Example (Choosing map syntax variants)
import { Effect, pipe } from "effect"
const myEffect = Effect.succeed(1)
const transformation = (n: number) => n + 1
const mappedWithPipe = pipe(myEffect, Effect.map(transformation))
const mappedWithDataFirst = Effect.map(myEffect, transformation)
const mappedWithMethod = myEffect.pipe(Effect.map(transformation))
Example (Adding a service charge)
import { Effect, pipe } from "effect"
const addServiceCharge = (amount: number) => amount + 1
const fetchTransactionAmount = Effect.promise(() => Promise.resolve(100))
const finalAmount = pipe(
fetchTransactionAmount,
Effect.map(addServiceCharge)
)
Effect.runPromise(finalAmount).then(console.log)
// Output: 101
map((impl: ShardMapImpl<Schema.Top, Schema.Top>(parameter) impl: {
get: (key: KeyT<Key>) => Effect.Effect<Option.Option<ValueT<Value>>>;
put: (value: ValueT<Value>) => Effect.Effect<boolean>;
delete: (key: KeyT<Key>) => Effect.Effect<boolean>;
getLocal: (key: KeyT<Key>) => Effect.Effect<Option.Option<ValueT<Value>>>;
putLocal: (value: ValueT<Value>) => Effect.Effect<void>;
deleteLocal: (key: KeyT<Key>) => Effect.Effect<boolean>;
sizeLocal: Effect.Effect<number>;
sizeByNode: Effect.Effect<Readonly<Record<string, number>>>;
size: Effect.Effect<number>;
}
impl) => const asImpl: <
Key extends Schema.Top,
Value extends Schema.Top,
Error extends Schema.Top
>(
impl: ShardMapImpl<Key, Value>
) => Hyperlink.ImplOf<
ShardMapSpecOf<Key, Value, Error>
>
Bridge concrete
ShardMapImpl
→
Hyperlink.ImplOf
. ImplOf stays opaque under
Schema.Top Key/Value Method params (Telemetry avoids this via a concrete Spec const).
asImpl(impl: ShardMapImpl<Schema.Top, Schema.Top>(parameter) impl: {
get: (key: KeyT<Key>) => Effect.Effect<Option.Option<ValueT<Value>>>;
put: (value: ValueT<Value>) => Effect.Effect<boolean>;
delete: (key: KeyT<Key>) => Effect.Effect<boolean>;
getLocal: (key: KeyT<Key>) => Effect.Effect<Option.Option<ValueT<Value>>>;
putLocal: (value: ValueT<Value>) => Effect.Effect<void>;
deleteLocal: (key: KeyT<Key>) => Effect.Effect<boolean>;
sizeLocal: Effect.Effect<number>;
sizeByNode: Effect.Effect<Readonly<Record<string, number>>>;
size: Effect.Effect<number>;
}
impl))),
),
);