MCPcopy Create free account
hub / github.com/Effect-TS/effect / unsafeUpdateAs

Function unsafeUpdateAs

packages/effect/src/internal/fiberRefs.ts:221–252  ·  view source on GitHub ↗
(
  locals: Map<FiberRef.FiberRef<any>, Arr.NonEmptyReadonlyArray<readonly [FiberId.Single, any]>>,
  fiberId: FiberId.Single,
  fiberRef: FiberRef.FiberRef<any>,
  value: any
)

Source from the content-addressed store, hash-verified

219})
220
221const unsafeUpdateAs = (
222 locals: Map<FiberRef.FiberRef<any>, Arr.NonEmptyReadonlyArray<readonly [FiberId.Single, any]>>,
223 fiberId: FiberId.Single,
224 fiberRef: FiberRef.FiberRef<any>,
225 value: any
226) => {
227 const oldStack: ReadonlyArray<readonly [FiberId.Single, any]> = locals.get(fiberRef) ?? []
228 let newStack: Arr.NonEmptyReadonlyArray<readonly [FiberId.Single, any]> | undefined
229
230 if (Arr.isNonEmptyReadonlyArray(oldStack)) {
231 const [currentId, currentValue] = Arr.headNonEmpty(oldStack)
232 if (currentId[Equal.symbol](fiberId)) {
233 if (Equal.equals(currentValue, value)) {
234 return
235 } else {
236 newStack = [
237 [fiberId, value] as const,
238 ...oldStack.slice(1)
239 ]
240 }
241 } else {
242 newStack = [
243 [fiberId, value] as const,
244 ...oldStack
245 ]
246 }
247 } else {
248 newStack = [[fiberId, value] as const]
249 }
250
251 locals.set(fiberRef, newStack)
252}
253
254/** @internal */
255export const updateManyAs = dual<

Callers 1

fiberRefs.tsFile · 0.85

Calls 2

getMethod · 0.65
setMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…