<T extends Array<unknown>>(
...ctxs: { [K in keyof T]: Context<T[K]> }
): Context<T[number]>Merges any number of Contexts into one.
When to use
Use when you need to combine a variadic list of contexts.
Details
When multiple contexts contain the same service key, the service from the last context with that key is kept.
Example (Merging multiple contexts)
import { Context } from "effect"
import * as assert from "node:assert"
const Port = Context.Service<{ PORT: number }>("Port")
const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
const Host = Context.Service<{ HOST: string }>("Host")
const firstContext = Context.make(Port, { PORT: 8080 })
const secondContext = Context.make(Timeout, { TIMEOUT: 5000 })
const thirdContext = Context.make(Host, { HOST: "localhost" })
const context = Context.mergeAll(
firstContext,
secondContext,
thirdContext
)
assert.deepStrictEqual(Context.get(context, Port), { PORT: 8080 })
assert.deepStrictEqual(Context.get(context, Timeout), { TIMEOUT: 5000 })
assert.deepStrictEqual(Context.get(context, Host), { HOST: "localhost" })export const const mergeAll: <
T extends Array<unknown>
>(
...ctxs: { [K in keyof T]: Context<T[K]> }
) => Context<T[number]>
Merges any number of Contexts into one.
When to use
Use when you need to combine a variadic list of contexts.
Details
When multiple contexts contain the same service key, the service from the
last context with that key is kept.
Example (Merging multiple contexts)
import { Context } from "effect"
import * as assert from "node:assert"
const Port = Context.Service<{ PORT: number }>("Port")
const Timeout = Context.Service<{ TIMEOUT: number }>("Timeout")
const Host = Context.Service<{ HOST: string }>("Host")
const firstContext = Context.make(Port, { PORT: 8080 })
const secondContext = Context.make(Timeout, { TIMEOUT: 5000 })
const thirdContext = Context.make(Host, { HOST: "localhost" })
const context = Context.mergeAll(
firstContext,
secondContext,
thirdContext
)
assert.deepStrictEqual(Context.get(context, Port), { PORT: 8080 })
assert.deepStrictEqual(Context.get(context, Timeout), { TIMEOUT: 5000 })
assert.deepStrictEqual(Context.get(context, Host), { HOST: "localhost" })
mergeAll = <function (type parameter) T in <T extends Array<unknown>>(...ctxs: { [K in keyof T]: Context<T[K]>; }): Context<T[number]>T extends interface Array<T>Array<unknown>>(
...ctxs: [...{ [K in keyof T]: Context<T[K]> }](parameter) ctxs: {
length: number;
toString: () => string;
toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string };
pop: () => { [K in keyof T]: Context<T[K]>; }[number] | undefined;
push: (...items: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => number;
concat: { (...items: Array<ConcatArray<{ [K in keyof T]: Context<T[K]>; }[number]>>): Array<{ [K in keyof T]: Context<T[K]>; }[number]>; (...items: Array<{ [K in keyof T]: Context<T[K]>; }[number] | ConcatArray<{ [K in keyof T]: Context<T[K]>; }[n…;
join: (separator?: string) => string;
reverse: () => Array<{ [K in keyof T]: Context<T[K]>; }[number]>;
shift: () => { [K in keyof T]: Context<T[K]>; }[number] | undefined;
slice: (start?: number, end?: number) => Array<{ [K in keyof T]: Context<T[K]>; }[number]>;
sort: (compareFn?: ((a: { [K in keyof T]: Context<T[K]>; }[number], b: { [K in keyof T]: Context<T[K]>; }[number]) => number) | undefined) => [...{ [K in keyof T]: Context<T[K]>; }];
splice: { (start: number, deleteCount?: number): Array<{ [K in keyof T]: Context<T[K]>; }[number]>; (start: number, deleteCount: number, ...items: Array<{ [K in keyof T]: Context<T[K]>; }[number]>): Array<{ [K in keyof T]: Context<T[K]>; }[number]…;
unshift: (...items: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => number;
indexOf: (searchElement: { [K in keyof T]: Context<T[K]>; }[number], fromIndex?: number) => number;
lastIndexOf: (searchElement: { [K in keyof T]: Context<T[K]>; }[number], fromIndex?: number) => number;
every: { (predicate: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => value is S, thisArg?: any): this is S[]; (predicate: (value: { [K in keyof T]: Context<T[K]>; }[n…;
some: (predicate: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => unknown, thisArg?: any) => boolean;
forEach: (callbackfn: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => void, thisArg?: any) => void;
map: (callbackfn: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => U, thisArg?: any) => Array<U>;
filter: { (predicate: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => value is S, thisArg?: any): Array<S>; (predicate: (value: { [K in keyof T]: Context<T[K]>; }[numb…;
reduce: { (callbackfn: (previousValue: { [K in keyof T]: Context<T[K]>; }[number], currentValue: { [K in keyof T]: Context<T[K]>; }[number], currentIndex: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => { [K in keyof T]: Conte…;
reduceRight: { (callbackfn: (previousValue: { [K in keyof T]: Context<T[K]>; }[number], currentValue: { [K in keyof T]: Context<T[K]>; }[number], currentIndex: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => { [K in keyof T]: Conte…;
find: { (predicate: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, obj: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => value is S, thisArg?: any): S | undefined; (predicate: (value: { [K in keyof T]: Context<T[K]>; }[n…;
findIndex: (predicate: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, obj: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => unknown, thisArg?: any) => number;
fill: (value: { [K in keyof T]: Context<T[K]>; }[number], start?: number, end?: number) => [...{ [K in keyof T]: Context<T[K]>; }];
copyWithin: (target: number, start: number, end?: number) => [...{ [K in keyof T]: Context<T[K]>; }];
entries: () => ArrayIterator<[number, { [K in keyof T]: Context<T[K]>; }[number]]>;
keys: () => ArrayIterator<number>;
values: () => ArrayIterator<{ [K in keyof T]: Context<T[K]>; }[number]>;
includes: (searchElement: { [K in keyof T]: Context<T[K]>; }[number], fromIndex?: number) => boolean;
flatMap: (callback: (this: This, value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => U | ReadonlyArray<U>, thisArg?: This | undefined) => Array<U>;
flat: (this: A, depth?: D | undefined) => Array<FlatArray<A, D>>;
at: (index: number) => { [K in keyof T]: Context<T[K]>; }[number] | undefined;
findLast: { (predicate: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => value is S, thisArg?: any): S | undefined; (predicate: (value: { [K in keyof T]: Context<T[K]>; }…;
findLastIndex: (predicate: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => unknown, thisArg?: any) => number;
toReversed: () => Array<{ [K in keyof T]: Context<T[K]>; }[number]>;
toSorted: (compareFn?: ((a: { [K in keyof T]: Context<T[K]>; }[number], b: { [K in keyof T]: Context<T[K]>; }[number]) => number) | undefined) => Array<{ [K in keyof T]: Context<T[K]>; }[number]>;
toSpliced: { (start: number, deleteCount: number, ...items: Array<{ [K in keyof T]: Context<T[K]>; }[number]>): Array<{ [K in keyof T]: Context<T[K]>; }[number]>; (start: number, deleteCount?: number): Array<{ [K in keyof T]: Context<T[K]>; }[number]…;
with: (index: number, value: { [K in keyof T]: Context<T[K]>; }[number]) => Array<{ [K in keyof T]: Context<T[K]>; }[number]>;
}
ctxs: [...{ [function (type parameter) KK in keyof function (type parameter) T in <T extends Array<unknown>>(...ctxs: { [K in keyof T]: Context<T[K]>; }): Context<T[number]>T]: interface Context<in Services>Immutable collection of service implementations used for dependency
injection in Effect programs.
Details
The type parameter tracks the service identifiers available in the context.
At runtime, services are stored by each key's string key.
Example (Creating a context with multiple services)
import { Context } from "effect"
// Create a context with multiple services
const Logger = Context.Service<{ log: (msg: string) => void }>("Logger")
const Database = Context.Service<{ query: (sql: string) => string }>(
"Database"
)
const context = Context.make(Logger, {
log: (msg: string) => console.log(msg)
})
.pipe(Context.add(Database, { query: (sql) => `Result: ${sql}` }))
Context<function (type parameter) T in <T extends Array<unknown>>(...ctxs: { [K in keyof T]: Context<T[K]>; }): Context<T[number]>T[function (type parameter) KK]> }]
): interface Context<in Services>Immutable collection of service implementations used for dependency
injection in Effect programs.
Details
The type parameter tracks the service identifiers available in the context.
At runtime, services are stored by each key's string key.
Example (Creating a context with multiple services)
import { Context } from "effect"
// Create a context with multiple services
const Logger = Context.Service<{ log: (msg: string) => void }>("Logger")
const Database = Context.Service<{ query: (sql: string) => string }>(
"Database"
)
const context = Context.make(Logger, {
log: (msg: string) => console.log(msg)
})
.pipe(Context.add(Database, { query: (sql) => `Result: ${sql}` }))
Context<function (type parameter) T in <T extends Array<unknown>>(...ctxs: { [K in keyof T]: Context<T[K]>; }): Context<T[number]>T[number]> => {
const const map: Map<any, any>map = new var Map: MapConstructor
new () => Map<any, any> (+3 overloads)
Map()
for (let let i: numberi = 0; let i: numberi < ctxs: [...{ [K in keyof T]: Context<T[K]> }](parameter) ctxs: {
length: number;
toString: () => string;
toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string };
pop: () => { [K in keyof T]: Context<T[K]>; }[number] | undefined;
push: (...items: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => number;
concat: { (...items: Array<ConcatArray<{ [K in keyof T]: Context<T[K]>; }[number]>>): Array<{ [K in keyof T]: Context<T[K]>; }[number]>; (...items: Array<{ [K in keyof T]: Context<T[K]>; }[number] | ConcatArray<{ [K in keyof T]: Context<T[K]>; }[n…;
join: (separator?: string) => string;
reverse: () => Array<{ [K in keyof T]: Context<T[K]>; }[number]>;
shift: () => { [K in keyof T]: Context<T[K]>; }[number] | undefined;
slice: (start?: number, end?: number) => Array<{ [K in keyof T]: Context<T[K]>; }[number]>;
sort: (compareFn?: ((a: { [K in keyof T]: Context<T[K]>; }[number], b: { [K in keyof T]: Context<T[K]>; }[number]) => number) | undefined) => [...{ [K in keyof T]: Context<T[K]>; }];
splice: { (start: number, deleteCount?: number): Array<{ [K in keyof T]: Context<T[K]>; }[number]>; (start: number, deleteCount: number, ...items: Array<{ [K in keyof T]: Context<T[K]>; }[number]>): Array<{ [K in keyof T]: Context<T[K]>; }[number]…;
unshift: (...items: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => number;
indexOf: (searchElement: { [K in keyof T]: Context<T[K]>; }[number], fromIndex?: number) => number;
lastIndexOf: (searchElement: { [K in keyof T]: Context<T[K]>; }[number], fromIndex?: number) => number;
every: { (predicate: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => value is S, thisArg?: any): this is S[]; (predicate: (value: { [K in keyof T]: Context<T[K]>; }[n…;
some: (predicate: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => unknown, thisArg?: any) => boolean;
forEach: (callbackfn: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => void, thisArg?: any) => void;
map: (callbackfn: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => U, thisArg?: any) => Array<U>;
filter: { (predicate: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => value is S, thisArg?: any): Array<S>; (predicate: (value: { [K in keyof T]: Context<T[K]>; }[numb…;
reduce: { (callbackfn: (previousValue: { [K in keyof T]: Context<T[K]>; }[number], currentValue: { [K in keyof T]: Context<T[K]>; }[number], currentIndex: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => { [K in keyof T]: Conte…;
reduceRight: { (callbackfn: (previousValue: { [K in keyof T]: Context<T[K]>; }[number], currentValue: { [K in keyof T]: Context<T[K]>; }[number], currentIndex: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => { [K in keyof T]: Conte…;
find: { (predicate: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, obj: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => value is S, thisArg?: any): S | undefined; (predicate: (value: { [K in keyof T]: Context<T[K]>; }[n…;
findIndex: (predicate: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, obj: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => unknown, thisArg?: any) => number;
fill: (value: { [K in keyof T]: Context<T[K]>; }[number], start?: number, end?: number) => [...{ [K in keyof T]: Context<T[K]>; }];
copyWithin: (target: number, start: number, end?: number) => [...{ [K in keyof T]: Context<T[K]>; }];
entries: () => ArrayIterator<[number, { [K in keyof T]: Context<T[K]>; }[number]]>;
keys: () => ArrayIterator<number>;
values: () => ArrayIterator<{ [K in keyof T]: Context<T[K]>; }[number]>;
includes: (searchElement: { [K in keyof T]: Context<T[K]>; }[number], fromIndex?: number) => boolean;
flatMap: (callback: (this: This, value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => U | ReadonlyArray<U>, thisArg?: This | undefined) => Array<U>;
flat: (this: A, depth?: D | undefined) => Array<FlatArray<A, D>>;
at: (index: number) => { [K in keyof T]: Context<T[K]>; }[number] | undefined;
findLast: { (predicate: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => value is S, thisArg?: any): S | undefined; (predicate: (value: { [K in keyof T]: Context<T[K]>; }…;
findLastIndex: (predicate: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => unknown, thisArg?: any) => number;
toReversed: () => Array<{ [K in keyof T]: Context<T[K]>; }[number]>;
toSorted: (compareFn?: ((a: { [K in keyof T]: Context<T[K]>; }[number], b: { [K in keyof T]: Context<T[K]>; }[number]) => number) | undefined) => Array<{ [K in keyof T]: Context<T[K]>; }[number]>;
toSpliced: { (start: number, deleteCount: number, ...items: Array<{ [K in keyof T]: Context<T[K]>; }[number]>): Array<{ [K in keyof T]: Context<T[K]>; }[number]>; (start: number, deleteCount?: number): Array<{ [K in keyof T]: Context<T[K]>; }[number]…;
with: (index: number, value: { [K in keyof T]: Context<T[K]>; }[number]) => Array<{ [K in keyof T]: Context<T[K]>; }[number]>;
}
ctxs.length: numberlength; let i: numberi++) {
ctxs: [...{ [K in keyof T]: Context<T[K]> }](parameter) ctxs: {
length: number;
toString: () => string;
toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string };
pop: () => { [K in keyof T]: Context<T[K]>; }[number] | undefined;
push: (...items: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => number;
concat: { (...items: Array<ConcatArray<{ [K in keyof T]: Context<T[K]>; }[number]>>): Array<{ [K in keyof T]: Context<T[K]>; }[number]>; (...items: Array<{ [K in keyof T]: Context<T[K]>; }[number] | ConcatArray<{ [K in keyof T]: Context<T[K]>; }[n…;
join: (separator?: string) => string;
reverse: () => Array<{ [K in keyof T]: Context<T[K]>; }[number]>;
shift: () => { [K in keyof T]: Context<T[K]>; }[number] | undefined;
slice: (start?: number, end?: number) => Array<{ [K in keyof T]: Context<T[K]>; }[number]>;
sort: (compareFn?: ((a: { [K in keyof T]: Context<T[K]>; }[number], b: { [K in keyof T]: Context<T[K]>; }[number]) => number) | undefined) => [...{ [K in keyof T]: Context<T[K]>; }];
splice: { (start: number, deleteCount?: number): Array<{ [K in keyof T]: Context<T[K]>; }[number]>; (start: number, deleteCount: number, ...items: Array<{ [K in keyof T]: Context<T[K]>; }[number]>): Array<{ [K in keyof T]: Context<T[K]>; }[number]…;
unshift: (...items: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => number;
indexOf: (searchElement: { [K in keyof T]: Context<T[K]>; }[number], fromIndex?: number) => number;
lastIndexOf: (searchElement: { [K in keyof T]: Context<T[K]>; }[number], fromIndex?: number) => number;
every: { (predicate: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => value is S, thisArg?: any): this is S[]; (predicate: (value: { [K in keyof T]: Context<T[K]>; }[n…;
some: (predicate: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => unknown, thisArg?: any) => boolean;
forEach: (callbackfn: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => void, thisArg?: any) => void;
map: (callbackfn: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => U, thisArg?: any) => Array<U>;
filter: { (predicate: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => value is S, thisArg?: any): Array<S>; (predicate: (value: { [K in keyof T]: Context<T[K]>; }[numb…;
reduce: { (callbackfn: (previousValue: { [K in keyof T]: Context<T[K]>; }[number], currentValue: { [K in keyof T]: Context<T[K]>; }[number], currentIndex: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => { [K in keyof T]: Conte…;
reduceRight: { (callbackfn: (previousValue: { [K in keyof T]: Context<T[K]>; }[number], currentValue: { [K in keyof T]: Context<T[K]>; }[number], currentIndex: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => { [K in keyof T]: Conte…;
find: { (predicate: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, obj: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => value is S, thisArg?: any): S | undefined; (predicate: (value: { [K in keyof T]: Context<T[K]>; }[n…;
findIndex: (predicate: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, obj: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => unknown, thisArg?: any) => number;
fill: (value: { [K in keyof T]: Context<T[K]>; }[number], start?: number, end?: number) => [...{ [K in keyof T]: Context<T[K]>; }];
copyWithin: (target: number, start: number, end?: number) => [...{ [K in keyof T]: Context<T[K]>; }];
entries: () => ArrayIterator<[number, { [K in keyof T]: Context<T[K]>; }[number]]>;
keys: () => ArrayIterator<number>;
values: () => ArrayIterator<{ [K in keyof T]: Context<T[K]>; }[number]>;
includes: (searchElement: { [K in keyof T]: Context<T[K]>; }[number], fromIndex?: number) => boolean;
flatMap: (callback: (this: This, value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => U | ReadonlyArray<U>, thisArg?: This | undefined) => Array<U>;
flat: (this: A, depth?: D | undefined) => Array<FlatArray<A, D>>;
at: (index: number) => { [K in keyof T]: Context<T[K]>; }[number] | undefined;
findLast: { (predicate: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => value is S, thisArg?: any): S | undefined; (predicate: (value: { [K in keyof T]: Context<T[K]>; }…;
findLastIndex: (predicate: (value: { [K in keyof T]: Context<T[K]>; }[number], index: number, array: Array<{ [K in keyof T]: Context<T[K]>; }[number]>) => unknown, thisArg?: any) => number;
toReversed: () => Array<{ [K in keyof T]: Context<T[K]>; }[number]>;
toSorted: (compareFn?: ((a: { [K in keyof T]: Context<T[K]>; }[number], b: { [K in keyof T]: Context<T[K]>; }[number]) => number) | undefined) => Array<{ [K in keyof T]: Context<T[K]>; }[number]>;
toSpliced: { (start: number, deleteCount: number, ...items: Array<{ [K in keyof T]: Context<T[K]>; }[number]>): Array<{ [K in keyof T]: Context<T[K]>; }[number]>; (start: number, deleteCount?: number): Array<{ [K in keyof T]: Context<T[K]>; }[number]…;
with: (index: number, value: { [K in keyof T]: Context<T[K]>; }[number]) => Array<{ [K in keyof T]: Context<T[K]>; }[number]>;
}
ctxs[let i: numberi].Context<in Services>.mapUnsafe: ReadonlyMap<string, any>mapUnsafe.ReadonlyMap<string, any>.forEach(callbackfn: (value: any, key: string, map: ReadonlyMap<string, any>) => void, thisArg?: any): voidforEach((value: anyvalue, key: stringkey) => {
const map: Map<any, any>map.Map<any, any>.set(key: any, value: any): Map<any, any>Adds a new element with a specified key and value to the Map. If an element with the same key already exists, the element will be updated.
set(key: stringkey, value: anyvalue)
})
}
return const makeUnsafe: <Services = never>(
mapUnsafe: ReadonlyMap<string, any>
) => Context<Services>
Creates a Context from an existing service map.
When to use
Use when constructing a low-level Context from a trusted map whose lifecycle
you control.
Gotchas
This is unsafe because later mutation of the provided map can affect the
created Context. Prefer empty, make, add, or merge for normal
Context construction.
Example (Creating a context from a map)
import { Context } from "effect"
// Create a context from a Map (unsafe)
const map = new Map([
["Logger", { log: (msg: string) => console.log(msg) }]
])
const context = Context.makeUnsafe(map)
makeUnsafe(const map: Map<any, any>map)
}