This commit is contained in:
@@ -41,6 +41,9 @@ export class LensImpl<in out A, in out ER = never, in out EW = never, in out RR
|
||||
/**
|
||||
* Checks whether a value implements `Lens`.
|
||||
*/
|
||||
/**
|
||||
* Determines whether a value implements the `Lens` interface.
|
||||
*/
|
||||
export const isLens = (u: unknown): u is Lens<unknown, unknown, unknown, unknown, unknown> => Predicate.hasProperty(u, LensTypeId)
|
||||
|
||||
|
||||
@@ -294,6 +297,9 @@ export const focusChunkAt: {
|
||||
)
|
||||
|
||||
|
||||
/**
|
||||
* Reads the current value from the Lens.
|
||||
*/
|
||||
export const get = <A, ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>): Effect.Effect<A, ER, RR> => self.get
|
||||
|
||||
export const set: {
|
||||
@@ -303,6 +309,9 @@ export const set: {
|
||||
self.modify<void, never, never>(() => Effect.succeed([void 0, value] as const)),
|
||||
)
|
||||
|
||||
/**
|
||||
* Sets the `Lens` to a new value and returns the previous value.
|
||||
*/
|
||||
export const getAndSet: {
|
||||
<A, ER, EW, RR, RW>(value: A): (self: Lens<A, ER, EW, RR, RW>) => Effect.Effect<A, ER | EW, RR | RW>
|
||||
<A, ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>, value: A): Effect.Effect<A, ER | EW, RR | RW>
|
||||
@@ -310,6 +319,9 @@ export const getAndSet: {
|
||||
self.modify<A, never, never>(a => Effect.succeed([a, value] as const)),
|
||||
)
|
||||
|
||||
/**
|
||||
* Applies a synchronous transformation to the focused value, discarding the previous value.
|
||||
*/
|
||||
export const update: {
|
||||
<A, ER, EW, RR, RW>(f: (a: A) => A): (self: Lens<A, ER, EW, RR, RW>) => Effect.Effect<void, ER | EW, RR | RW>
|
||||
<A, ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>, f: (a: A) => A): Effect.Effect<void, ER | EW, RR | RW>
|
||||
@@ -317,6 +329,9 @@ export const update: {
|
||||
self.modify<void, never, never>(a => Effect.succeed([void 0, f(a)] as const)),
|
||||
)
|
||||
|
||||
/**
|
||||
* Applies an effectful transformation to the focused value, discarding the previous value.
|
||||
*/
|
||||
export const updateEffect: {
|
||||
<A, ER, EW, RR, RW, E, R>(f: (a: A) => Effect.Effect<A, E, R>): (self: Lens<A, ER, EW, RR, RW>) => Effect.Effect<void, ER | EW | E, RR | RW | R>
|
||||
<A, ER, EW, RR, RW, E, R>(self: Lens<A, ER, EW, RR, RW>, f: (a: A) => Effect.Effect<A, E, R>): Effect.Effect<void, ER | EW | E, RR | RW | R>
|
||||
@@ -327,6 +342,9 @@ export const updateEffect: {
|
||||
)),
|
||||
)
|
||||
|
||||
/**
|
||||
* Applies a synchronous transformation while returning the previous value.
|
||||
*/
|
||||
export const getAndUpdate: {
|
||||
<A, ER, EW, RR, RW>(f: (a: A) => A): (self: Lens<A, ER, EW, RR, RW>) => Effect.Effect<A, ER | EW, RR | RW>
|
||||
<A, ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>, f: (a: A) => A): Effect.Effect<A, ER | EW, RR | RW>
|
||||
@@ -334,6 +352,9 @@ export const getAndUpdate: {
|
||||
self.modify<A, never, never>(a => Effect.succeed([a, f(a)] as const)),
|
||||
)
|
||||
|
||||
/**
|
||||
* Applies an effectful transformation while returning the previous value.
|
||||
*/
|
||||
export const getAndUpdateEffect: {
|
||||
<A, ER, EW, RR, RW, E, R>(f: (a: A) => Effect.Effect<A, E, R>): (self: Lens<A, ER, EW, RR, RW>) => Effect.Effect<A, ER | EW | E, RR | RW | R>
|
||||
<A, ER, EW, RR, RW, E, R>(self: Lens<A, ER, EW, RR, RW>, f: (a: A) => Effect.Effect<A, E, R>): Effect.Effect<A, ER | EW | E, RR | RW | R>
|
||||
@@ -344,6 +365,9 @@ export const getAndUpdateEffect: {
|
||||
)),
|
||||
)
|
||||
|
||||
/**
|
||||
* Sets the value and returns the new value.
|
||||
*/
|
||||
export const setAndGet: {
|
||||
<A, ER, EW, RR, RW>(value: A): (self: Lens<A, ER, EW, RR, RW>) => Effect.Effect<A, ER | EW, RR | RW>
|
||||
<A, ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>, value: A): Effect.Effect<A, ER | EW, RR | RW>
|
||||
@@ -351,6 +375,9 @@ export const setAndGet: {
|
||||
self.modify<A, never, never>(() => Effect.succeed([value, value] as const)),
|
||||
)
|
||||
|
||||
/**
|
||||
* Applies a synchronous update and returns the new value.
|
||||
*/
|
||||
export const updateAndGet: {
|
||||
<A, ER, EW, RR, RW>(f: (a: A) => A): (self: Lens<A, ER, EW, RR, RW>) => Effect.Effect<A, ER | EW, RR | RW>
|
||||
<A, ER, EW, RR, RW>(self: Lens<A, ER, EW, RR, RW>, f: (a: A) => A): Effect.Effect<A, ER | EW, RR | RW>
|
||||
@@ -361,6 +388,9 @@ export const updateAndGet: {
|
||||
}),
|
||||
)
|
||||
|
||||
/**
|
||||
* Applies an effectful update and returns the new value.
|
||||
*/
|
||||
export const updateAndGetEffect: {
|
||||
<A, ER, EW, RR, RW, E, R>(f: (a: A) => Effect.Effect<A, E, R>): (self: Lens<A, ER, EW, RR, RW>) => Effect.Effect<A, ER | EW | E, RR | RW | R>
|
||||
<A, ER, EW, RR, RW, E, R>(self: Lens<A, ER, EW, RR, RW>, f: (a: A) => Effect.Effect<A, E, R>): Effect.Effect<A, ER | EW | E, RR | RW | R>
|
||||
|
||||
Reference in New Issue
Block a user