@effect/stm
Advanced tools
Comparing version 0.0.6 to 0.0.7
@@ -6,4 +6,4 @@ "use strict"; | ||
}); | ||
exports.unit = exports.tryCatch = exports.tapError = exports.tapBoth = exports.tap = exports.suspend = exports.summarized = exports.succeedSome = exports.succeedRight = exports.succeedNone = exports.succeedLeft = exports.someOrFailException = exports.someOrFail = exports.someOrElseSTM = exports.someOrElse = exports.some = exports.serviceWithSTM = exports.serviceWith = exports.service = exports.right = exports.retryWhile = exports.retryUntil = exports.replicateSTMDiscard = exports.replicateSTM = exports.replicate = exports.repeatWhile = exports.repeatUntil = exports.rejectSTM = exports.reject = exports.refineOrDieWith = exports.refineOrDie = exports.reduceRight = exports.reduceAll = exports.reduce = exports.provideEnvironment = exports.partition = exports.orElseSucceed = exports.orElseOptional = exports.orElseFail = exports.orElseEither = exports.orElse = exports.orDieWith = exports.orDie = exports.option = exports.none = exports.negate = exports.mergeAll = exports.merge = exports.mapError = exports.mapBoth = exports.mapAttempt = exports.loopDiscard = exports.loop = exports.left = exports.iterate = exports.isSuccess = exports.isFailure = exports.ignore = exports.ifSTM = exports.head = exports.fromOption = exports.fromEither = exports.forEachDiscard = exports.forEach = exports.fold = exports.flipWith = exports.flip = exports.flattenErrorOption = exports.flatten = exports.flatMapError = exports.filterOrFail = exports.filterOrElseWith = exports.filterOrElse = exports.filterOrDieMessage = exports.filterOrDie = exports.filterNot = exports.filter = exports.fiberId = exports.exists = exports.every = exports.eventually = exports.environmentWithSTM = exports.environmentWith = exports.environment = exports.either = exports.cond = exports.commitEither = exports.collectSTM = exports.collectFirst = exports.collectAllDiscard = exports.collectAll = exports.collect = exports.check = exports.catchSome = exports.attempt = exports.asSomeError = exports.asSome = exports.as = exports.acquireUseRelease = exports.absolve = void 0; | ||
exports.whenSTM = exports.whenCaseSTM = exports.whenCase = exports.when = exports.validateFirst = exports.validateAll = exports.unsome = exports.unright = exports.unlessSTM = exports.unless = exports.unleft = void 0; | ||
exports.tryCatch = exports.tapError = exports.tapBoth = exports.tap = exports.suspend = exports.summarized = exports.succeedSome = exports.succeedRight = exports.succeedNone = exports.succeedLeft = exports.struct = exports.someOrFailException = exports.someOrFail = exports.someOrElseSTM = exports.someOrElse = exports.some = exports.serviceWithSTM = exports.serviceWith = exports.service = exports.right = exports.retryWhile = exports.retryUntil = exports.replicateSTMDiscard = exports.replicateSTM = exports.replicate = exports.repeatWhile = exports.repeatUntil = exports.rejectSTM = exports.reject = exports.refineOrDieWith = exports.refineOrDie = exports.reduceRight = exports.reduceAll = exports.reduce = exports.provideEnvironment = exports.partition = exports.orElseSucceed = exports.orElseOptional = exports.orElseFail = exports.orElseEither = exports.orElse = exports.orDieWith = exports.orDie = exports.option = exports.none = exports.negate = exports.mergeAll = exports.merge = exports.mapError = exports.mapBoth = exports.mapAttempt = exports.loopDiscard = exports.loop = exports.left = exports.iterate = exports.isSuccess = exports.isFailure = exports.ignore = exports.ifSTM = exports.head = exports.fromOption = exports.fromEither = exports.forEachDiscard = exports.forEach = exports.fold = exports.flipWith = exports.flip = exports.flattenErrorOption = exports.flatten = exports.flatMapError = exports.filterOrFail = exports.filterOrElseWith = exports.filterOrElse = exports.filterOrDieMessage = exports.filterOrDie = exports.filterNot = exports.filter = exports.fiberId = exports.exists = exports.every = exports.eventually = exports.environmentWithSTM = exports.environmentWith = exports.environment = exports.either = exports.cond = exports.commitEither = exports.collectSTM = exports.collectFirst = exports.collectAllDiscard = exports.collectAll = exports.collect = exports.check = exports.catchSome = exports.attempt = exports.asSomeError = exports.asSome = exports.as = exports.acquireUseRelease = exports.absolve = void 0; | ||
exports.whenSTM = exports.whenCaseSTM = exports.whenCase = exports.when = exports.validateFirst = exports.validateAll = exports.unsome = exports.unright = exports.unlessSTM = exports.unless = exports.unleft = exports.unit = exports.tuple = void 0; | ||
var Cause = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Cause")); | ||
@@ -41,8 +41,8 @@ var _Debug = /*#__PURE__*/require("@effect/io/Debug"); | ||
let state = STMState.running; | ||
return Effect.foldCauseEffect(cause => { | ||
return Effect.matchCauseEffect(cause => { | ||
if (STMState.isDone(state) && Exit.isSuccess(state.exit)) { | ||
return Effect.foldCauseEffect(cause2 => Effect.failCause(Cause.parallel(cause, cause2)), () => Effect.failCause(cause))(release(state.exit.value)); | ||
return Effect.matchCauseEffect(cause2 => Effect.failCause(Cause.parallel(cause, cause2)), () => Effect.failCause(cause))(release(state.exit.value)); | ||
} | ||
return Effect.failCause(cause); | ||
}, a => Effect.foldCauseEffect(cause => Effect.foldCauseEffect(cause2 => Effect.failCause(Cause.parallel(cause, cause2)), () => Effect.failCause(cause))(release(a)), a2 => Effect.as(a2)(release(a)))(restore(use(a))))(restore(core.unsafeAtomically(acquire, exit => { | ||
}, a => Effect.matchCauseEffect(cause => Effect.matchCauseEffect(cause2 => Effect.failCause(Cause.parallel(cause, cause2)), () => Effect.failCause(cause))(release(a)), a2 => Effect.as(a2)(release(a)))(restore(use(a))))(restore(core.unsafeAtomically(acquire, exit => { | ||
state = STMState.done(exit); | ||
@@ -914,2 +914,17 @@ }, () => { | ||
exports.someOrFailException = someOrFailException; | ||
const struct = r => { | ||
const trace = (0, _Debug.getCallTrace)(); | ||
return core.map(values => { | ||
const res = {}; | ||
for (const [k, v] of values) { | ||
res[k] = v; | ||
} | ||
return res; | ||
})(forEach(([_, e]) => core.map(a => [_, a])(e))(Object.entries(r))).traced(trace); | ||
}; | ||
/** | ||
* @macro traced | ||
* @internal | ||
*/ | ||
exports.struct = struct; | ||
const succeedLeft = value => { | ||
@@ -1011,2 +1026,11 @@ const trace = (0, _Debug.getCallTrace)(); | ||
exports.tryCatch = tryCatch; | ||
const tuple = (...t) => { | ||
const trace = (0, _Debug.getCallTrace)(); | ||
return core.map(Chunk.toReadonlyArray)(collectAll(t)).traced(trace); | ||
}; | ||
/** | ||
* @macro traced | ||
* @internal | ||
*/ | ||
exports.tuple = tuple; | ||
const unit = () => { | ||
@@ -1013,0 +1037,0 @@ const trace = (0, _Debug.getCallTrace)(); |
{ | ||
"name": "@effect/stm", | ||
"version": "0.0.6", | ||
"version": "0.0.7", | ||
"license": "MIT", | ||
@@ -10,5 +10,5 @@ "repository": { | ||
"dependencies": { | ||
"@effect/io": "~0.0.42", | ||
"@effect/io": "~0.0.44", | ||
"@fp-ts/core": "~0.0.11", | ||
"@fp-ts/data": "~0.0.28" | ||
"@fp-ts/data": "~0.0.31" | ||
}, | ||
@@ -15,0 +15,0 @@ "publishConfig": { |
@@ -7,5 +7,7 @@ import * as Cause from "@effect/io/Cause" | ||
import * as effectCore from "@effect/io/internal/core" | ||
import type { EnforceNonEmptyRecord } from "@effect/io/src/internal/types" | ||
import * as core from "@effect/stm/internal/core" | ||
import * as Journal from "@effect/stm/internal/stm/journal" | ||
import * as STMState from "@effect/stm/internal/stm/stmState" | ||
import type { NonEmptyArraySTM, TupleSTM } from "@effect/stm/internal/types" | ||
import type * as STM from "@effect/stm/STM" | ||
@@ -53,3 +55,3 @@ import * as Chunk from "@fp-ts/data/Chunk" | ||
), | ||
Effect.foldCauseEffect( | ||
Effect.matchCauseEffect( | ||
(cause) => { | ||
@@ -59,3 +61,3 @@ if (STMState.isDone(state) && Exit.isSuccess(state.exit)) { | ||
release(state.exit.value), | ||
Effect.foldCauseEffect( | ||
Effect.matchCauseEffect( | ||
(cause2) => Effect.failCause(Cause.parallel(cause, cause2)), | ||
@@ -71,7 +73,7 @@ () => Effect.failCause(cause) | ||
restore(use(a)), | ||
Effect.foldCauseEffect( | ||
Effect.matchCauseEffect( | ||
(cause) => | ||
pipe( | ||
release(a), | ||
Effect.foldCauseEffect( | ||
Effect.matchCauseEffect( | ||
(cause2) => Effect.failCause(Cause.parallel(cause, cause2)), | ||
@@ -1180,2 +1182,29 @@ () => Effect.failCause(cause) | ||
*/ | ||
export const struct = <NER extends Record<string, STM.STM<any, any, any>>>( | ||
r: EnforceNonEmptyRecord<NER> | Record<string, STM.STM<any, any, any>> | ||
): STM.STM< | ||
[NER[keyof NER]] extends [{ [core.STMTypeId]: { _R: (_: never) => infer R } }] ? R : never, | ||
[NER[keyof NER]] extends [{ [core.STMTypeId]: { _E: (_: never) => infer E } }] ? E : never, | ||
{ | ||
[K in keyof NER]: [NER[K]] extends [{ [core.STMTypeId]: { _A: (_: never) => infer A } }] ? A : never | ||
} | ||
> => { | ||
const trace = getCallTrace() | ||
return pipe( | ||
Object.entries(r), | ||
forEach(([_, e]) => pipe(e, core.map((a) => [_, a] as const))), | ||
core.map((values) => { | ||
const res = {} | ||
for (const [k, v] of values) { | ||
res[k] = v | ||
} | ||
return res | ||
}) | ||
).traced(trace) as any | ||
} | ||
/** | ||
* @macro traced | ||
* @internal | ||
*/ | ||
export const succeedLeft = <A>(value: A): STM.STM<never, never, Either.Either<A, never>> => { | ||
@@ -1306,2 +1335,17 @@ const trace = getCallTrace() | ||
*/ | ||
export const tuple = <T extends NonEmptyArraySTM>( | ||
...t: T | ||
): STM.STM< | ||
[T[number]] extends [{ [core.STMTypeId]: { _R: (_: never) => infer R } }] ? R : never, | ||
[T[number]] extends [{ [core.STMTypeId]: { _E: (_: never) => infer E } }] ? E : never, | ||
TupleSTM<T> | ||
> => { | ||
const trace = getCallTrace() | ||
return pipe(collectAll(t), core.map(Chunk.toReadonlyArray)).traced(trace) as any | ||
} | ||
/** | ||
* @macro traced | ||
* @internal | ||
*/ | ||
export const unit = (): STM.STM<never, never, void> => { | ||
@@ -1308,0 +1352,0 @@ const trace = getCallTrace() |
@@ -7,4 +7,6 @@ /** | ||
import type * as FiberId from "@effect/io/Fiber/Id" | ||
import type { EnforceNonEmptyRecord } from "@effect/io/src/internal/types" | ||
import * as core from "@effect/stm/internal/core" | ||
import * as stm from "@effect/stm/internal/stm" | ||
import type { NonEmptyArraySTM, TupleSTM } from "@effect/stm/internal/types" | ||
import type * as Chunk from "@fp-ts/data/Chunk" | ||
@@ -1271,3 +1273,19 @@ import type * as Context from "@fp-ts/data/Context" | ||
) => STM<R, E | Cause.NoSuchElementException, A> = stm.someOrFailException | ||
/** | ||
* @macro traced | ||
* @since 1.0.0 | ||
* @category constructors | ||
*/ | ||
export const struct: <NER extends Record<string, STM<any, any, any>>>( | ||
r: EnforceNonEmptyRecord<NER> | Record<string, STM<any, any, any>> | ||
) => STM< | ||
[NER[keyof NER]] extends [{ [STMTypeId]: { _R: (_: never) => infer R } }] ? R : never, | ||
[NER[keyof NER]] extends [{ [STMTypeId]: { _E: (_: never) => infer E } }] ? E : never, | ||
{ | ||
[K in keyof NER]: [NER[K]] extends [{ [STMTypeId]: { _A: (_: never) => infer A } }] ? A : never | ||
} | ||
> = stm.struct | ||
/** | ||
* Returns an `STM` effect that succeeds with the specified value. | ||
@@ -1394,2 +1412,17 @@ * | ||
/** | ||
* Like `forEach` + `identity` with a tuple type. | ||
* | ||
* @macro traced | ||
* @since 1.0.0 | ||
* @category constructors | ||
*/ | ||
export const tuple: <T extends NonEmptyArraySTM>( | ||
...t: T | ||
) => STM< | ||
[T[number]] extends [{ [STMTypeId]: { _R: (_: never) => infer R } }] ? R : never, | ||
[T[number]] extends [{ [STMTypeId]: { _E: (_: never) => infer E } }] ? E : never, | ||
TupleSTM<T> | ||
> = stm.tuple | ||
/** | ||
* Converts a `STM<R, Either<E, A>, A2>` into a `STM<R, E, Either<A2, A>>`. | ||
@@ -1396,0 +1429,0 @@ * The inverse of `left`. |
46
STM.d.ts
@@ -7,2 +7,4 @@ /** | ||
import type * as FiberId from "@effect/io/Fiber/Id"; | ||
import type { EnforceNonEmptyRecord } from "@effect/io/src/internal/types"; | ||
import type { NonEmptyArraySTM, TupleSTM } from "@effect/stm/internal/types"; | ||
import type * as Chunk from "@fp-ts/data/Chunk"; | ||
@@ -1038,2 +1040,26 @@ import type * as Context from "@fp-ts/data/Context"; | ||
/** | ||
* @macro traced | ||
* @since 1.0.0 | ||
* @category constructors | ||
*/ | ||
export declare const struct: <NER extends Record<string, STM<any, any, any>>>(r: EnforceNonEmptyRecord<NER> | Record<string, STM<any, any, any>>) => STM<[ | ||
NER[keyof NER] | ||
] extends [{ | ||
[STMTypeId]: { | ||
_R: (_: never) => infer R; | ||
}; | ||
}] ? R : never, [ | ||
NER[keyof NER] | ||
] extends [{ | ||
[STMTypeId]: { | ||
_E: (_: never) => infer E; | ||
}; | ||
}] ? E : never, { | ||
[K in keyof NER]: [NER[K]] extends [{ | ||
[STMTypeId]: { | ||
_A: (_: never) => infer A; | ||
}; | ||
}] ? A : never; | ||
}>; | ||
/** | ||
* Returns an `STM` effect that succeeds with the specified value. | ||
@@ -1139,2 +1165,22 @@ * | ||
/** | ||
* Like `forEach` + `identity` with a tuple type. | ||
* | ||
* @macro traced | ||
* @since 1.0.0 | ||
* @category constructors | ||
*/ | ||
export declare const tuple: <T extends NonEmptyArraySTM>(...t: T) => STM<[ | ||
T[number] | ||
] extends [{ | ||
[STMTypeId]: { | ||
_R: (_: never) => infer R; | ||
}; | ||
}] ? R : never, [ | ||
T[number] | ||
] extends [{ | ||
[STMTypeId]: { | ||
_E: (_: never) => infer E; | ||
}; | ||
}] ? E : never, TupleSTM<T>>; | ||
/** | ||
* Converts a `STM<R, Either<E, A>, A2>` into a `STM<R, E, Either<A2, A>>`. | ||
@@ -1141,0 +1187,0 @@ * The inverse of `left`. |
22
STM.js
@@ -7,3 +7,3 @@ "use strict"; | ||
exports.serviceWith = exports.service = exports.right = exports.retryWhile = exports.retryUntil = exports.retry = exports.replicateSTMDiscard = exports.replicateSTM = exports.replicate = exports.repeatWhile = exports.repeatUntil = exports.rejectSTM = exports.reject = exports.refineOrDieWith = exports.refineOrDie = exports.reduceRight = exports.reduceAll = exports.reduce = exports.provideSomeEnvironment = exports.provideEnvironment = exports.partition = exports.orTry = exports.orElseSucceed = exports.orElseOptional = exports.orElseFail = exports.orElseEither = exports.orElse = exports.orDieWith = exports.orDie = exports.option = exports.none = exports.negate = exports.mergeAll = exports.merge = exports.mapError = exports.mapBoth = exports.mapAttempt = exports.map = exports.loopDiscard = exports.loop = exports.left = exports.iterate = exports.isSuccess = exports.isFailure = exports.interruptWith = exports.interrupt = exports.ignore = exports.ifSTM = exports.head = exports.fromOption = exports.fromEither = exports.forEachDiscard = exports.forEach = exports.foldSTM = exports.fold = exports.flipWith = exports.flip = exports.flattenErrorOption = exports.flatten = exports.flatMapError = exports.flatMap = exports.filterOrFail = exports.filterOrElseWith = exports.filterOrElse = exports.filterOrDieMessage = exports.filterOrDie = exports.filterNot = exports.filter = exports.fiberId = exports.failSync = exports.fail = exports.exists = exports.every = exports.eventually = exports.environmentWithSTM = exports.environmentWith = exports.environment = exports.ensuring = exports.either = exports.dieSync = exports.dieMessage = exports.die = exports.cond = exports.commitEither = exports.commit = exports.collectSTM = exports.collectFirst = exports.collectAllDiscard = exports.collectAll = exports.collect = exports.check = exports.catchSome = exports.catchAll = exports.attempt = exports.asSomeError = exports.asSome = exports.as = exports.acquireUseRelease = exports.absolve = exports.STMTypeId = void 0; | ||
exports.zipWith = exports.zipRight = exports.zipLeft = exports.zip = exports.whenSTM = exports.whenCaseSTM = exports.whenCase = exports.when = exports.validateFirst = exports.validateAll = exports.unsome = exports.unright = exports.unlessSTM = exports.unless = exports.unleft = exports.unit = exports.tryCatch = exports.tapError = exports.tapBoth = exports.tap = exports.sync = exports.suspend = exports.summarized = exports.succeedSome = exports.succeedRight = exports.succeedNone = exports.succeedLeft = exports.succeed = exports.someOrFailException = exports.someOrFail = exports.someOrElseSTM = exports.someOrElse = exports.some = exports.serviceWithSTM = void 0; | ||
exports.zipWith = exports.zipRight = exports.zipLeft = exports.zip = exports.whenSTM = exports.whenCaseSTM = exports.whenCase = exports.when = exports.validateFirst = exports.validateAll = exports.unsome = exports.unright = exports.unlessSTM = exports.unless = exports.unleft = exports.unit = exports.tuple = exports.tryCatch = exports.tapError = exports.tapBoth = exports.tap = exports.sync = exports.suspend = exports.summarized = exports.succeedSome = exports.succeedRight = exports.succeedNone = exports.succeedLeft = exports.succeed = exports.struct = exports.someOrFailException = exports.someOrFail = exports.someOrElseSTM = exports.someOrElse = exports.some = exports.serviceWithSTM = void 0; | ||
var core = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/stm/internal/core")); | ||
@@ -1082,2 +1082,9 @@ var stm = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/stm/internal/stm")); | ||
/** | ||
* @macro traced | ||
* @since 1.0.0 | ||
* @category constructors | ||
*/ | ||
exports.someOrFailException = someOrFailException; | ||
const struct = stm.struct; | ||
/** | ||
* Returns an `STM` effect that succeeds with the specified value. | ||
@@ -1089,3 +1096,3 @@ * | ||
*/ | ||
exports.someOrFailException = someOrFailException; | ||
exports.struct = struct; | ||
const succeed = core.succeed; | ||
@@ -1196,2 +1203,11 @@ /** | ||
/** | ||
* Like `forEach` + `identity` with a tuple type. | ||
* | ||
* @macro traced | ||
* @since 1.0.0 | ||
* @category constructors | ||
*/ | ||
exports.tryCatch = tryCatch; | ||
const tuple = stm.tuple; | ||
/** | ||
* Converts a `STM<R, Either<E, A>, A2>` into a `STM<R, E, Either<A2, A>>`. | ||
@@ -1204,3 +1220,3 @@ * The inverse of `left`. | ||
*/ | ||
exports.tryCatch = tryCatch; | ||
exports.tuple = tuple; | ||
const unleft = stm.unleft; | ||
@@ -1207,0 +1223,0 @@ /** |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
1131183
212
24791
Updated@effect/io@~0.0.44
Updated@fp-ts/data@~0.0.31