Socket
Socket
Sign inDemoInstall

@effect/stm

Package Overview
Dependencies
Maintainers
3
Versions
48
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@effect/stm - npm Package Compare versions

Comparing version 0.7.0 to 0.8.1

183

internal_effect_untraced/core.js

@@ -6,4 +6,6 @@ "use strict";

});
exports.zipWith = exports.zipRight = exports.zipLeft = exports.zip = exports.withSTMRuntime = exports.unsafeAtomically = exports.sync = exports.succeed = exports.retry = exports.orTry = exports.matchSTM = exports.map = exports.isSTM = exports.interruptAs = exports.interrupt = exports.flatMap = exports.failSync = exports.fail = exports.ensuring = exports.effect = exports.dieSync = exports.dieMessage = exports.die = exports.contramapContext = exports.commit = exports.catchAll = exports.STMTypeId = exports.STMDriver = void 0;
exports.zipWith = exports.zipRight = exports.zipLeft = exports.zip = exports.withSTMRuntime = exports.unsafeAtomically = exports.sync = exports.succeed = exports.retry = exports.orTry = exports.matchSTM = exports.map = exports.isSTM = exports.interruptAs = exports.interrupt = exports.flatMap = exports.failSync = exports.fail = exports.ensuring = exports.effect = exports.dieSync = exports.dieMessage = exports.die = exports.contramapContext = exports.contextWithSTM = exports.contextWith = exports.context = exports.commit = exports.catchAll = exports.STMTypeId = exports.STMDriver = void 0;
var Chunk = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Chunk"));
var Context = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Context"));
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Debug"));
var Either = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Either"));

@@ -14,4 +16,4 @@ var Equal = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Equal"));

var MRef = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/MutableRef"));
var _ReadonlyArray = /*#__PURE__*/require("@effect/data/ReadonlyArray");
var Cause = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Cause"));
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Debug"));
var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Effect"));

@@ -78,3 +80,3 @@ var Exit = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Exit"));

/** @internal */
const isSTM = u => typeof u === "object" && u != null && STMTypeId in u;
const isSTM = u => typeof u === "object" && u != null && STMTypeId in u || Context.isGenericTag(u);
/** @internal */

@@ -227,2 +229,11 @@ exports.isSTM = isSTM;

/** @internal */
const context = /*#__PURE__*/Debug.methodWithTrace(trace => () => effect((_, __, env) => env).traced(trace));
/** @internal */
exports.context = context;
const contextWith = /*#__PURE__*/Debug.methodWithTrace((trace, restore) => f => map(context(), restore(f)).traced(trace));
/** @internal */
exports.contextWith = contextWith;
const contextWithSTM = /*#__PURE__*/Debug.methodWithTrace((trace, restore) => f => flatMap(context(), restore(f)).traced(trace));
/** @internal */
exports.contextWithSTM = contextWithSTM;
class STMDriver {

@@ -296,84 +307,92 @@ constructor(self, journal, fiberId, r0) {

const current = curr;
switch (current.i0) {
case OpCodes.OP_TRACED:
{
this.pushStack(current);
curr = current.i1;
break;
}
case OpCodes.OP_DIE:
{
const annotation = new Cause.StackAnnotation(this.stackToLines(), MRef.incrementAndGet(Cause.globalErrorSeq));
exit = TExit.die(current.i1(), annotation);
break;
}
case OpCodes.OP_FAIL:
{
const annotation = new internalCause.StackAnnotation(this.stackToLines(), MRef.incrementAndGet(Cause.globalErrorSeq));
const cont = this.nextFailure();
if (cont === undefined) {
exit = TExit.fail(current.i1(), annotation);
} else {
curr = cont.i2(current.i1());
if (current && Context.isGenericTag(current)) {
if (Context.isTag(current)) {
curr = effect((_, __, env) => Context.unsafeGet(env, current));
} else {
curr = current["i0"];
}
} else {
switch (current.i0) {
case OpCodes.OP_TRACED:
{
this.pushStack(current);
curr = current.i1;
break;
}
break;
}
case OpCodes.OP_RETRY:
{
const cont = this.nextRetry();
if (cont === undefined) {
exit = TExit.retry;
} else {
curr = cont.i2();
case OpCodes.OP_DIE:
{
const annotation = new Cause.StackAnnotation(this.stackToLines(), MRef.incrementAndGet(Cause.globalErrorSeq));
exit = TExit.die(current.i1(), annotation);
break;
}
break;
}
case OpCodes.OP_INTERRUPT:
{
const annotation = new Cause.StackAnnotation(this.stackToLines(), MRef.incrementAndGet(Cause.globalErrorSeq));
exit = TExit.interrupt(this.fiberId, annotation);
break;
}
case OpCodes.OP_WITH_STM_RUNTIME:
{
curr = current.i1(this);
break;
}
case OpCodes.OP_ON_SUCCESS:
case OpCodes.OP_ON_FAILURE:
case OpCodes.OP_ON_RETRY:
{
this.pushStack(current);
curr = current.i1;
break;
}
case OpCodes.OP_PROVIDE:
{
const env = this.env;
this.env = current.i2(env);
curr = ensuring(sync(() => this.env = env))(current.i1);
break;
}
case OpCodes.OP_SUCCEED:
{
const value = current.i1;
const cont = this.nextSuccess();
if (cont === undefined) {
exit = TExit.succeed(value);
} else {
curr = cont.i2(value);
case OpCodes.OP_FAIL:
{
const annotation = new internalCause.StackAnnotation(this.stackToLines(), MRef.incrementAndGet(Cause.globalErrorSeq));
const cont = this.nextFailure();
if (cont === undefined) {
exit = TExit.fail(current.i1(), annotation);
} else {
curr = cont.i2(current.i1());
}
break;
}
break;
}
case OpCodes.OP_SYNC:
{
const value = current.i1();
const cont = this.nextSuccess();
if (cont === undefined) {
exit = TExit.succeed(value);
} else {
curr = cont.i2(value);
case OpCodes.OP_RETRY:
{
const cont = this.nextRetry();
if (cont === undefined) {
exit = TExit.retry;
} else {
curr = cont.i2();
}
break;
}
break;
}
case OpCodes.OP_INTERRUPT:
{
const annotation = new Cause.StackAnnotation(this.stackToLines(), MRef.incrementAndGet(Cause.globalErrorSeq));
exit = TExit.interrupt(this.fiberId, annotation);
break;
}
case OpCodes.OP_WITH_STM_RUNTIME:
{
curr = current.i1(this);
break;
}
case OpCodes.OP_ON_SUCCESS:
case OpCodes.OP_ON_FAILURE:
case OpCodes.OP_ON_RETRY:
{
this.pushStack(current);
curr = current.i1;
break;
}
case OpCodes.OP_PROVIDE:
{
const env = this.env;
this.env = current.i2(env);
curr = ensuring(sync(() => this.env = env))(current.i1);
break;
}
case OpCodes.OP_SUCCEED:
{
const value = current.i1;
const cont = this.nextSuccess();
if (cont === undefined) {
exit = TExit.succeed(value);
} else {
curr = cont.i2(value);
}
break;
}
case OpCodes.OP_SYNC:
{
const value = current.i1();
const cont = this.nextSuccess();
if (cont === undefined) {
exit = TExit.succeed(value);
} else {
curr = cont.i2(value);
}
break;
}
}
}

@@ -545,3 +564,3 @@ } catch (e) {

exports.withSTMRuntime = withSTMRuntime;
const zip = /*#__PURE__*/Debug.dualWithTrace(2, trace => (self, that) => zipWith(that, (a, a1) => [a, a1])(self).traced(trace));
const zip = /*#__PURE__*/Debug.dualWithTrace(2, trace => (self, that) => zipWith(that, (a, a1) => (0, _ReadonlyArray.tuple)(a, a1))(self).traced(trace));
/** @internal */

@@ -548,0 +567,0 @@ exports.zip = zip;

@@ -6,6 +6,7 @@ "use strict";

});
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.provideServiceSTM = exports.provideService = exports.provideContext = 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.match = 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.gen = exports.fromOption = exports.fromEither = exports.forEachDiscard = exports.forEach = 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.either = exports.contextWithSTM = exports.contextWith = exports.context = exports.cond = exports.commitEither = exports.collectSTM = exports.collectFirst = exports.collectAllDiscard = exports.collectAll = exports.collect = exports.check = exports.catchSome = exports.attempt = exports.asUnit = exports.asSomeError = exports.asSome = exports.as = exports.all = 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.tryCatch = exports.tapError = exports.tapBoth = exports.tap = void 0;
exports.unleft = 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.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.provideServiceSTM = exports.provideService = exports.provideContext = 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.match = 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.gen = exports.fromOption = exports.fromEither = exports.forEachDiscard = exports.forEach = 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.either = exports.cond = exports.commitEither = exports.collectSTM = exports.collectFirst = exports.collectAllDiscard = exports.collectAll = exports.collect = exports.check = exports.catchSome = exports.attempt = exports.asUnit = exports.asSomeError = exports.asSome = exports.as = exports.all = 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 = void 0;
var Chunk = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Chunk"));
var Context = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Context"));
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Debug"));
var Either = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Either"));

@@ -15,3 +16,2 @@ var _Function = /*#__PURE__*/require("@effect/data/Function");

var Cause = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Cause"));
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Debug"));
var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Effect"));

@@ -110,11 +110,2 @@ var Exit = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Exit"));

exports.either = either;
const context = /*#__PURE__*/Debug.methodWithTrace(trace => () => core.effect((_, __, env) => env).traced(trace));
/** @internal */
exports.context = context;
const contextWith = /*#__PURE__*/Debug.methodWithTrace((trace, restore) => f => core.map(context(), restore(f)).traced(trace));
/** @internal */
exports.contextWith = contextWith;
const contextWithSTM = /*#__PURE__*/Debug.methodWithTrace((trace, restore) => f => core.flatMap(context(), restore(f)).traced(trace));
/** @internal */
exports.contextWithSTM = contextWithSTM;
const eventually = /*#__PURE__*/Debug.methodWithTrace(trace => self => core.matchSTM(self, () => eventually(self), core.succeed).traced(trace));

@@ -352,3 +343,3 @@ /** @internal */

exports.provideService = provideService;
const provideServiceSTM = /*#__PURE__*/Debug.dualWithTrace(3, trace => (self, tag, stm) => contextWithSTM(env => core.flatMap(stm, service => provideContext(self, Context.add(env, tag, service)))).traced(trace));
const provideServiceSTM = /*#__PURE__*/Debug.dualWithTrace(3, trace => (self, tag, stm) => core.contextWithSTM(env => core.flatMap(stm, service => provideContext(self, Context.add(env, tag, service)))).traced(trace));
/** @internal */

@@ -408,11 +399,2 @@ exports.provideServiceSTM = provideServiceSTM;

exports.partition = partition;
const service = /*#__PURE__*/Debug.methodWithTrace(trace => tag => contextWith(Context.unsafeGet(tag)).traced(trace));
/** @internal */
exports.service = service;
const serviceWith = /*#__PURE__*/Debug.methodWithTrace(trace => (tag, f) => core.map(f)(service(tag)).traced(trace));
/** @internal */
exports.serviceWith = serviceWith;
const serviceWithSTM = /*#__PURE__*/Debug.methodWithTrace(trace => (tag, f) => core.flatMap(f)(service(tag)).traced(trace));
/** @internal */
exports.serviceWithSTM = serviceWithSTM;
const some = /*#__PURE__*/Debug.methodWithTrace(trace => self => core.matchSTM(self, e => core.fail(Option.some(e)), Option.match(() => core.fail(Option.none()), core.succeed)).traced(trace));

@@ -419,0 +401,0 @@ /** @internal */

@@ -8,6 +8,6 @@ "use strict";

var Chunk = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Chunk"));
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Debug"));
var Equal = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Equal"));
var Option = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Option"));
var Order = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/typeclass/Order"));
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Debug"));
var core = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/stm/internal_effect_untraced/core"));

@@ -14,0 +14,0 @@ var stm = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/stm/internal_effect_untraced/stm"));

@@ -7,5 +7,5 @@ "use strict";

exports.succeed = exports.poll = exports.make = exports.fail = exports.done = exports._await = exports.TDeferredTypeId = void 0;
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Debug"));
var Either = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Either"));
var Option = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Option"));
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Debug"));
var core = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/stm/internal_effect_untraced/core"));

@@ -12,0 +12,0 @@ var stm = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/stm/internal_effect_untraced/stm"));

@@ -8,6 +8,6 @@ "use strict";

var Chunk = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Chunk"));
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Debug"));
var _Function = /*#__PURE__*/require("@effect/data/Function");
var HashSet = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/HashSet"));
var Option = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Option"));
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Debug"));
var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Effect"));

@@ -14,0 +14,0 @@ var core = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/stm/internal_effect_untraced/core"));

@@ -8,2 +8,3 @@ "use strict";

var Chunk = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Chunk"));
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Debug"));
var Equal = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Equal"));

@@ -13,3 +14,2 @@ var Hash = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Hash"));

var Option = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Option"));
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Debug"));
var core = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/stm/internal_effect_untraced/core"));

@@ -16,0 +16,0 @@ var stm = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/stm/internal_effect_untraced/stm"));

@@ -8,6 +8,6 @@ "use strict";

var Chunk = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Chunk"));
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Debug"));
var Option = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Option"));
var ReadonlyArray = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/ReadonlyArray"));
var SortedMap = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/SortedMap"));
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Debug"));
var core = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/stm/internal_effect_untraced/core"));

@@ -14,0 +14,0 @@ var tRef = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/stm/internal_effect_untraced/tRef"));

@@ -8,4 +8,4 @@ "use strict";

var Chunk = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Chunk"));
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Debug"));
var Option = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Option"));
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Debug"));
var core = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/stm/internal_effect_untraced/core"));

@@ -12,0 +12,0 @@ var OpCodes = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/stm/internal_effect_untraced/opCodes/strategy"));

@@ -8,4 +8,4 @@ "use strict";

var Context = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Context"));
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Debug"));
var Random = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Random"));
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Debug"));
var Layer = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Layer"));

@@ -85,19 +85,19 @@ var core = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/stm/internal_effect_untraced/core"));

exports.live = live;
const next = /*#__PURE__*/Debug.methodWithTrace(trace => () => stm.serviceWithSTM(Tag, random => random.next()).traced(trace));
const next = /*#__PURE__*/Debug.methodWithTrace(trace => () => core.flatMap(Tag, random => random.next()).traced(trace));
/** @internal */
exports.next = next;
const nextBoolean = /*#__PURE__*/Debug.methodWithTrace(trace => () => stm.serviceWithSTM(Tag, random => random.nextBoolean()).traced(trace));
const nextBoolean = /*#__PURE__*/Debug.methodWithTrace(trace => () => core.flatMap(Tag, random => random.nextBoolean()).traced(trace));
/** @internal */
exports.nextBoolean = nextBoolean;
const nextInt = /*#__PURE__*/Debug.methodWithTrace(trace => () => stm.serviceWithSTM(Tag, random => random.nextInt()).traced(trace));
const nextInt = /*#__PURE__*/Debug.methodWithTrace(trace => () => core.flatMap(Tag, random => random.nextInt()).traced(trace));
/** @internal */
exports.nextInt = nextInt;
const nextIntBetween = /*#__PURE__*/Debug.methodWithTrace(trace => (low, high) => stm.serviceWithSTM(Tag, random => random.nextIntBetween(low, high)).traced(trace));
const nextIntBetween = /*#__PURE__*/Debug.methodWithTrace(trace => (low, high) => core.flatMap(Tag, random => random.nextIntBetween(low, high)).traced(trace));
/** @internal */
exports.nextIntBetween = nextIntBetween;
const nextRange = /*#__PURE__*/Debug.methodWithTrace(trace => (min, max) => stm.serviceWithSTM(Tag, random => random.nextRange(min, max)).traced(trace));
const nextRange = /*#__PURE__*/Debug.methodWithTrace(trace => (min, max) => core.flatMap(Tag, random => random.nextRange(min, max)).traced(trace));
/** @internal */
exports.nextRange = nextRange;
const shuffle = /*#__PURE__*/Debug.methodWithTrace(trace => elements => stm.serviceWithSTM(Tag, random => random.shuffle(elements)).traced(trace));
const shuffle = /*#__PURE__*/Debug.methodWithTrace(trace => elements => core.flatMap(Tag, random => random.shuffle(elements)).traced(trace));
exports.shuffle = shuffle;
//# sourceMappingURL=tRandom.js.map

@@ -7,6 +7,6 @@ "use strict";

exports.writeLocks = exports.writeLocked = exports.writeLock = exports.withWriteLock = exports.withReadLock = exports.withLock = exports.releaseWrite = exports.releaseRead = exports.readLocks = exports.readLocked = exports.readLock = exports.make = exports.locked = exports.lock = exports.fiberWriteLocks = exports.fiberReadLocks = exports.acquireWrite = exports.acquireRead = exports.WriteLock = exports.TReentrantLockTypeId = exports.ReadLock = void 0;
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Debug"));
var Equal = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Equal"));
var HashMap = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/HashMap"));
var Option = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Option"));
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Debug"));
var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Effect"));

@@ -13,0 +13,0 @@ var FiberId = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Fiber/Id"));

@@ -7,5 +7,5 @@ "use strict";

exports.updateSomeAndGet = exports.updateSome = exports.updateAndGet = exports.update = exports.unsafeSet = exports.unsafeGet = exports.setAndGet = exports.set = exports.modifySome = exports.modify = exports.make = exports.getAndUpdateSome = exports.getAndUpdate = exports.getAndSet = exports.get = exports.TRefTypeId = exports.TRefImpl = void 0;
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Debug"));
var _Function = /*#__PURE__*/require("@effect/data/Function");
var Option = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Option"));
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Debug"));
var core = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/stm/internal_effect_untraced/core"));

@@ -12,0 +12,0 @@ var Entry = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/stm/internal_effect_untraced/stm/entry"));

@@ -7,4 +7,4 @@ "use strict";

exports.withPermitsScoped = exports.withPermits = exports.withPermitScoped = exports.withPermit = exports.unsafeMakeSemaphore = exports.releaseN = exports.release = exports.make = exports.available = exports.acquireN = exports.acquire = exports.TSemaphoreTypeId = void 0;
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Debug"));
var Cause = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Cause"));
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Debug"));
var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Effect"));

@@ -11,0 +11,0 @@ var core = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/stm/internal_effect_untraced/core"));

@@ -8,4 +8,4 @@ "use strict";

var Chunk = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Chunk"));
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Debug"));
var HashSet = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/HashSet"));
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Debug"));
var core = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/stm/internal_effect_untraced/core"));

@@ -12,0 +12,0 @@ var tMap = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/stm/internal_effect_untraced/tMap"));

{
"name": "@effect/stm",
"version": "0.7.0",
"version": "0.8.1",
"license": "MIT",

@@ -10,4 +10,4 @@ "repository": {

"dependencies": {
"@effect/data": "~0.6.0",
"@effect/io": "~0.13.0"
"@effect/data": "~0.9.1",
"@effect/io": "~0.16.1"
},

@@ -14,0 +14,0 @@ "publishConfig": {

import * as Chunk from "@effect/data/Chunk"
import type * as Context from "@effect/data/Context"
import * as Context from "@effect/data/Context"
import * as Debug from "@effect/data/Debug"
import * as Either from "@effect/data/Either"

@@ -9,4 +10,4 @@ import * as Equal from "@effect/data/Equal"

import * as MRef from "@effect/data/MutableRef"
import { tuple } from "@effect/data/ReadonlyArray"
import * as Cause from "@effect/io/Cause"
import * as Debug from "@effect/io/Debug"
import * as Effect from "@effect/io/Effect"

@@ -186,3 +187,3 @@ import * as Exit from "@effect/io/Exit"

export const isSTM = (u: unknown): u is STM.STM<unknown, unknown, unknown> =>
typeof u === "object" && u != null && STMTypeId in u
typeof u === "object" && u != null && STMTypeId in u || Context.isGenericTag(u)

@@ -429,2 +430,20 @@ /** @internal */

/** @internal */
export const context = Debug.methodWithTrace((trace) =>
<R>(): STM.STM<R, never, Context.Context<R>> => effect<R, Context.Context<R>>((_, __, env) => env).traced(trace)
)
/** @internal */
export const contextWith = Debug.methodWithTrace((trace, restore) =>
<R0, R>(f: (environment: Context.Context<R0>) => R): STM.STM<R0, never, R> =>
map(context<R0>(), restore(f)).traced(trace)
)
/** @internal */
export const contextWithSTM = Debug.methodWithTrace((trace, restore) =>
<R0, R, E, A>(
f: (environment: Context.Context<R0>) => STM.STM<R, E, A>
): STM.STM<R0 | R, E, A> => flatMap(context<R0>(), restore(f)).traced(trace)
)
/** @internal */
export class STMDriver<R, E, A> {

@@ -505,3 +524,3 @@ private contStack: Array<Continuation> = []

run(): TExit.TExit<E, A> {
let curr = this.self as Primitive | undefined
let curr = this.self as Primitive | Context.GenericTag | undefined
let exit: TExit.TExit<unknown, unknown> | undefined = undefined

@@ -511,85 +530,93 @@ while (exit === undefined && curr !== undefined) {

const current = curr
switch (current.i0) {
case OpCodes.OP_TRACED: {
this.pushStack(current)
curr = current.i1 as Primitive
break
if (current && Context.isGenericTag(current)) {
if (Context.isTag(current)) {
curr = effect((_, __, env) => Context.unsafeGet(env, current)) as Primitive
} else {
curr = current["i0"]
}
case OpCodes.OP_DIE: {
const annotation = new Cause.StackAnnotation(
this.stackToLines(),
MRef.incrementAndGet(Cause.globalErrorSeq)
)
exit = TExit.die(current.i1(), annotation)
break
}
case OpCodes.OP_FAIL: {
const annotation = new internalCause.StackAnnotation(
this.stackToLines(),
MRef.incrementAndGet(Cause.globalErrorSeq)
)
const cont = this.nextFailure()
if (cont === undefined) {
exit = TExit.fail(current.i1(), annotation)
} else {
curr = cont.i2(current.i1()) as Primitive
} else {
switch (current.i0) {
case OpCodes.OP_TRACED: {
this.pushStack(current)
curr = current.i1 as Primitive
break
}
break
}
case OpCodes.OP_RETRY: {
const cont = this.nextRetry()
if (cont === undefined) {
exit = TExit.retry
} else {
curr = cont.i2() as Primitive
case OpCodes.OP_DIE: {
const annotation = new Cause.StackAnnotation(
this.stackToLines(),
MRef.incrementAndGet(Cause.globalErrorSeq)
)
exit = TExit.die(current.i1(), annotation)
break
}
break
}
case OpCodes.OP_INTERRUPT: {
const annotation = new Cause.StackAnnotation(
this.stackToLines(),
MRef.incrementAndGet(Cause.globalErrorSeq)
)
exit = TExit.interrupt(this.fiberId, annotation)
break
}
case OpCodes.OP_WITH_STM_RUNTIME: {
curr = current.i1(this as STMDriver<unknown, unknown, unknown>) as Primitive
break
}
case OpCodes.OP_ON_SUCCESS:
case OpCodes.OP_ON_FAILURE:
case OpCodes.OP_ON_RETRY: {
this.pushStack(current)
curr = current.i1 as Primitive
break
}
case OpCodes.OP_PROVIDE: {
const env = this.env
this.env = current.i2(env)
curr = pipe(
current.i1,
ensuring(sync(() => (this.env = env)))
) as Primitive
break
}
case OpCodes.OP_SUCCEED: {
const value = current.i1
const cont = this.nextSuccess()
if (cont === undefined) {
exit = TExit.succeed(value)
} else {
curr = cont.i2(value) as Primitive
case OpCodes.OP_FAIL: {
const annotation = new internalCause.StackAnnotation(
this.stackToLines(),
MRef.incrementAndGet(Cause.globalErrorSeq)
)
const cont = this.nextFailure()
if (cont === undefined) {
exit = TExit.fail(current.i1(), annotation)
} else {
curr = cont.i2(current.i1()) as Primitive
}
break
}
break
}
case OpCodes.OP_SYNC: {
const value = current.i1()
const cont = this.nextSuccess()
if (cont === undefined) {
exit = TExit.succeed(value)
} else {
curr = cont.i2(value) as Primitive
case OpCodes.OP_RETRY: {
const cont = this.nextRetry()
if (cont === undefined) {
exit = TExit.retry
} else {
curr = cont.i2() as Primitive
}
break
}
break
case OpCodes.OP_INTERRUPT: {
const annotation = new Cause.StackAnnotation(
this.stackToLines(),
MRef.incrementAndGet(Cause.globalErrorSeq)
)
exit = TExit.interrupt(this.fiberId, annotation)
break
}
case OpCodes.OP_WITH_STM_RUNTIME: {
curr = current.i1(this as STMDriver<unknown, unknown, unknown>) as Primitive
break
}
case OpCodes.OP_ON_SUCCESS:
case OpCodes.OP_ON_FAILURE:
case OpCodes.OP_ON_RETRY: {
this.pushStack(current)
curr = current.i1 as Primitive
break
}
case OpCodes.OP_PROVIDE: {
const env = this.env
this.env = current.i2(env)
curr = pipe(
current.i1,
ensuring(sync(() => (this.env = env)))
) as Primitive
break
}
case OpCodes.OP_SUCCEED: {
const value = current.i1
const cont = this.nextSuccess()
if (cont === undefined) {
exit = TExit.succeed(value)
} else {
curr = cont.i2(value) as Primitive
}
break
}
case OpCodes.OP_SYNC: {
const value = current.i1()
const cont = this.nextSuccess()
if (cont === undefined) {
exit = TExit.succeed(value)
} else {
curr = cont.i2(value) as Primitive
}
break
}
}

@@ -864,8 +891,8 @@ }

self: STM.STM<R, E, A>
) => STM.STM<R1 | R, E1 | E, readonly [A, A1]>,
) => STM.STM<R1 | R, E1 | E, [A, A1]>,
<R, E, A, R1, E1, A1>(
self: STM.STM<R, E, A>,
that: STM.STM<R1, E1, A1>
) => STM.STM<R1 | R, E1 | E, readonly [A, A1]>
>(2, (trace) => (self, that) => pipe(self, zipWith(that, (a, a1) => [a, a1] as const)).traced(trace))
) => STM.STM<R1 | R, E1 | E, [A, A1]>
>(2, (trace) => (self, that) => pipe(self, zipWith(that, (a, a1) => tuple(a, a1))).traced(trace))

@@ -872,0 +899,0 @@ /** @internal */

import * as Chunk from "@effect/data/Chunk"
import * as Context from "@effect/data/Context"
import * as Debug from "@effect/data/Debug"
import * as Either from "@effect/data/Either"

@@ -9,3 +10,2 @@ import type { LazyArg } from "@effect/data/Function"

import * as Cause from "@effect/io/Cause"
import * as Debug from "@effect/io/Debug"
import * as Effect from "@effect/io/Effect"

@@ -246,20 +246,2 @@ import * as Exit from "@effect/io/Exit"

/** @internal */
export const context = Debug.methodWithTrace((trace) =>
<R>(): STM.STM<R, never, Context.Context<R>> => core.effect<R, Context.Context<R>>((_, __, env) => env).traced(trace)
)
/** @internal */
export const contextWith = Debug.methodWithTrace((trace, restore) =>
<R0, R>(f: (environment: Context.Context<R0>) => R): STM.STM<R0, never, R> =>
core.map(context<R0>(), restore(f)).traced(trace)
)
/** @internal */
export const contextWithSTM = Debug.methodWithTrace((trace, restore) =>
<R0, R, E, A>(
f: (environment: Context.Context<R0>) => STM.STM<R, E, A>
): STM.STM<R0 | R, E, A> => core.flatMap(context<R0>(), restore(f)).traced(trace)
)
/** @internal */
export const eventually = Debug.methodWithTrace((trace) =>

@@ -921,3 +903,3 @@ <R, E, A>(self: STM.STM<R, E, A>): STM.STM<R, E, A> =>

export const provideService = Debug.dualWithTrace<
<T extends Context.Tag<any>>(
<T extends Context.Tag<any, any>>(
tag: T,

@@ -927,8 +909,8 @@ resource: Context.Tag.Service<T>

self: STM.STM<R, E, A>
) => STM.STM<Exclude<R, Context.Tag.Service<T>>, E, A>,
<R, E, A, T extends Context.Tag<any>>(
) => STM.STM<Exclude<R, Context.Tag.Identifier<T>>, E, A>,
<R, E, A, T extends Context.Tag<any, any>>(
self: STM.STM<R, E, A>,
tag: T,
resource: Context.Tag.Service<T>
) => STM.STM<Exclude<R, Context.Tag.Service<T>>, E, A>
) => STM.STM<Exclude<R, Context.Tag.Identifier<T>>, E, A>
>(3, (trace) => (self, tag, resource) => provideServiceSTM(self, tag, core.succeed(resource)).traced(trace))

@@ -938,20 +920,20 @@

export const provideServiceSTM = Debug.dualWithTrace<
<T extends Context.Tag<T>, R1, E1>(
tag: Context.Tag<T>,
<T extends Context.Tag<any, any>, R1, E1>(
tag: T,
stm: STM.STM<R1, E1, Context.Tag.Service<T>>
) => <R, E, A>(
self: STM.STM<R, E, A>
) => STM.STM<R1 | Exclude<R, Context.Tag.Service<T>>, E1 | E, A>,
<R, E, A, T extends Context.Tag<T>, R1, E1>(
) => STM.STM<R1 | Exclude<R, Context.Tag.Identifier<T>>, E1 | E, A>,
<R, E, A, T extends Context.Tag<any, any>, R1, E1>(
self: STM.STM<R, E, A>,
tag: T,
stm: STM.STM<R1, E1, Context.Tag.Service<T>>
) => STM.STM<R1 | Exclude<R, Context.Tag.Service<T>>, E1 | E, A>
) => STM.STM<R1 | Exclude<R, Context.Tag.Identifier<T>>, E1 | E, A>
>(3, (trace) =>
<R, E, A, T extends Context.Tag<T>, R1, E1>(
<R, E, A, T extends Context.Tag<any, any>, R1, E1>(
self: STM.STM<R, E, A>,
tag: T,
stm: STM.STM<R1, E1, Context.Tag.Service<T>>
): STM.STM<R1 | Exclude<R, Context.Tag.Service<T>>, E1 | E, A> =>
contextWithSTM((env: Context.Context<R1 | Exclude<R, Context.Tag.Service<T>>>) =>
): STM.STM<R1 | Exclude<R, Context.Tag.Identifier<T>>, E1 | E, A> =>
core.contextWithSTM((env: Context.Context<R1 | Exclude<R, Context.Tag.Identifier<T>>>) =>
core.flatMap(

@@ -1179,19 +1161,2 @@ stm,

/** @internal */
export const service = Debug.methodWithTrace((trace) =>
<T>(tag: Context.Tag<T>): STM.STM<T, never, T> => contextWith<T, T>(Context.unsafeGet(tag)).traced(trace)
)
/** @internal */
export const serviceWith = Debug.methodWithTrace((trace) =>
<T, A>(tag: Context.Tag<T>, f: (service: T) => A): STM.STM<T, never, A> =>
pipe(service(tag), core.map(f)).traced(trace)
)
/** @internal */
export const serviceWithSTM = Debug.methodWithTrace((trace) =>
<T, R, E, A>(tag: Context.Tag<T>, f: (service: T) => STM.STM<R, E, A>): STM.STM<R | T, E, A> =>
pipe(service(tag), core.flatMap(f)).traced(trace)
)
/** @internal */
export const some = Debug.methodWithTrace((trace) =>

@@ -1198,0 +1163,0 @@ <R, E, A>(self: STM.STM<R, E, Option.Option<A>>): STM.STM<R, Option.Option<E>, A> =>

import * as Chunk from "@effect/data/Chunk"
import * as Debug from "@effect/data/Debug"
import * as Equal from "@effect/data/Equal"

@@ -7,3 +8,2 @@ import { pipe } from "@effect/data/Function"

import * as Order from "@effect/data/typeclass/Order"
import * as Debug from "@effect/io/Debug"
import * as core from "@effect/stm/internal_effect_untraced/core"

@@ -10,0 +10,0 @@ import * as stm from "@effect/stm/internal_effect_untraced/stm"

@@ -0,4 +1,4 @@

import * as Debug from "@effect/data/Debug"
import * as Either from "@effect/data/Either"
import * as Option from "@effect/data/Option"
import * as Debug from "@effect/io/Debug"
import * as core from "@effect/stm/internal_effect_untraced/core"

@@ -5,0 +5,0 @@ import * as stm from "@effect/stm/internal_effect_untraced/stm"

import * as Chunk from "@effect/data/Chunk"
import * as Debug from "@effect/data/Debug"
import { identity, pipe } from "@effect/data/Function"
import * as HashSet from "@effect/data/HashSet"
import * as Option from "@effect/data/Option"
import * as Debug from "@effect/io/Debug"
import * as Effect from "@effect/io/Effect"

@@ -7,0 +7,0 @@ import type * as Scope from "@effect/io/Scope"

import * as Chunk from "@effect/data/Chunk"
import * as Debug from "@effect/data/Debug"
import * as Equal from "@effect/data/Equal"

@@ -8,3 +9,2 @@ import type { LazyArg } from "@effect/data/Function"

import * as Option from "@effect/data/Option"
import * as Debug from "@effect/io/Debug"
import * as core from "@effect/stm/internal_effect_untraced/core"

@@ -11,0 +11,0 @@ import * as stm from "@effect/stm/internal_effect_untraced/stm"

import * as Chunk from "@effect/data/Chunk"
import * as Debug from "@effect/data/Debug"
import { pipe } from "@effect/data/Function"

@@ -8,3 +9,2 @@ import * as Option from "@effect/data/Option"

import type * as Order from "@effect/data/typeclass/Order"
import * as Debug from "@effect/io/Debug"
import * as core from "@effect/stm/internal_effect_untraced/core"

@@ -11,0 +11,0 @@ import * as tRef from "@effect/stm/internal_effect_untraced/tRef"

import * as Chunk from "@effect/data/Chunk"
import * as Debug from "@effect/data/Debug"
import { pipe } from "@effect/data/Function"
import * as Option from "@effect/data/Option"
import type { Predicate } from "@effect/data/Predicate"
import * as Debug from "@effect/io/Debug"
import * as core from "@effect/stm/internal_effect_untraced/core"

@@ -7,0 +7,0 @@ import * as OpCodes from "@effect/stm/internal_effect_untraced/opCodes/strategy"

import type * as Chunk from "@effect/data/Chunk"
import * as Context from "@effect/data/Context"
import * as Debug from "@effect/data/Debug"
import { pipe } from "@effect/data/Function"
import * as Random from "@effect/data/Random"
import * as Debug from "@effect/io/Debug"
import * as Layer from "@effect/io/Layer"

@@ -88,3 +88,3 @@ import * as core from "@effect/stm/internal_effect_untraced/core"

/** @internal */
export const Tag: Context.Tag<TRandom.TRandom> = Context.Tag<TRandom.TRandom>()
export const Tag = Context.Tag<TRandom.TRandom>()

@@ -131,3 +131,3 @@ class TRandomImpl implements TRandom.TRandom {

export const next = Debug.methodWithTrace((trace) =>
(): STM.STM<TRandom.TRandom, never, number> => stm.serviceWithSTM(Tag, (random) => random.next()).traced(trace)
(): STM.STM<TRandom.TRandom, never, number> => core.flatMap(Tag, (random) => random.next()).traced(trace)
)

@@ -137,4 +137,3 @@

export const nextBoolean = Debug.methodWithTrace((trace) =>
(): STM.STM<TRandom.TRandom, never, boolean> =>
stm.serviceWithSTM(Tag, (random) => random.nextBoolean()).traced(trace)
(): STM.STM<TRandom.TRandom, never, boolean> => core.flatMap(Tag, (random) => random.nextBoolean()).traced(trace)
)

@@ -144,3 +143,3 @@

export const nextInt = Debug.methodWithTrace((trace) =>
(): STM.STM<TRandom.TRandom, never, number> => stm.serviceWithSTM(Tag, (random) => random.nextInt()).traced(trace)
(): STM.STM<TRandom.TRandom, never, number> => core.flatMap(Tag, (random) => random.nextInt()).traced(trace)
)

@@ -151,3 +150,3 @@

(low: number, high: number): STM.STM<TRandom.TRandom, never, number> =>
stm.serviceWithSTM(Tag, (random) => random.nextIntBetween(low, high)).traced(trace)
core.flatMap(Tag, (random) => random.nextIntBetween(low, high)).traced(trace)
)

@@ -158,3 +157,3 @@

(min: number, max: number): STM.STM<TRandom.TRandom, never, number> =>
stm.serviceWithSTM(Tag, (random) => random.nextRange(min, max)).traced(trace)
core.flatMap(Tag, (random) => random.nextRange(min, max)).traced(trace)
)

@@ -165,3 +164,3 @@

<A>(elements: Iterable<A>): STM.STM<TRandom.TRandom, never, Chunk.Chunk<A>> =>
stm.serviceWithSTM(Tag, (random) => random.shuffle(elements)).traced(trace)
core.flatMap(Tag, (random) => random.shuffle(elements)).traced(trace)
)

@@ -0,5 +1,5 @@

import * as Debug from "@effect/data/Debug"
import * as Equal from "@effect/data/Equal"
import * as HashMap from "@effect/data/HashMap"
import * as Option from "@effect/data/Option"
import * as Debug from "@effect/io/Debug"
import * as Effect from "@effect/io/Effect"

@@ -6,0 +6,0 @@ import * as FiberId from "@effect/io/Fiber/Id"

@@ -0,4 +1,4 @@

import * as Debug from "@effect/data/Debug"
import { dual, pipe } from "@effect/data/Function"
import * as Option from "@effect/data/Option"
import * as Debug from "@effect/io/Debug"
import * as core from "@effect/stm/internal_effect_untraced/core"

@@ -5,0 +5,0 @@ import * as Entry from "@effect/stm/internal_effect_untraced/stm/entry"

@@ -0,3 +1,3 @@

import * as Debug from "@effect/data/Debug"
import * as Cause from "@effect/io/Cause"
import * as Debug from "@effect/io/Debug"
import * as Effect from "@effect/io/Effect"

@@ -4,0 +4,0 @@ import type * as Scope from "@effect/io/Scope"

import * as Chunk from "@effect/data/Chunk"
import * as Debug from "@effect/data/Debug"
import { pipe } from "@effect/data/Function"

@@ -6,3 +7,2 @@ import * as HashSet from "@effect/data/HashSet"

import type { Predicate } from "@effect/data/Predicate"
import * as Debug from "@effect/io/Debug"
import * as core from "@effect/stm/internal_effect_untraced/core"

@@ -9,0 +9,0 @@ import * as tMap from "@effect/stm/internal_effect_untraced/tMap"

/**
* @since 1.0.0
*/
import type * as Chunk from "@effect/data/Chunk"
import * as Chunk from "@effect/data/Chunk"
import type * as Context from "@effect/data/Context"
import * as Debug from "@effect/data/Debug"
import type * as Either from "@effect/data/Either"
import type { LazyArg } from "@effect/data/Function"
import type { TypeLambda } from "@effect/data/HKT"
import type * as Option from "@effect/data/Option"
import type { Predicate } from "@effect/data/Predicate"
import type * as Cause from "@effect/io/Cause"
import type * as Debug from "@effect/io/Debug"
import * as applicative from "@effect/data/typeclass/Applicative"
import type * as bicovariant from "@effect/data/typeclass/Bicovariant"
import * as chainable from "@effect/data/typeclass/Chainable"
import * as covariant from "@effect/data/typeclass/Covariant"
import type * as flatMap_ from "@effect/data/typeclass/FlatMap"
import * as invariant from "@effect/data/typeclass/Invariant"
import type * as monad from "@effect/data/typeclass/Monad"
import type { Monoid } from "@effect/data/typeclass/Monoid"
import * as of_ from "@effect/data/typeclass/Of"
import type * as pointed from "@effect/data/typeclass/Pointed"
import type * as product_ from "@effect/data/typeclass/Product"
import type * as semiAlternative from "@effect/data/typeclass/SemiAlternative"
import * as semiApplicative from "@effect/data/typeclass/SemiApplicative"
import * as semiCoproduct from "@effect/data/typeclass/SemiCoproduct"
import type { Semigroup } from "@effect/data/typeclass/Semigroup"
import * as semiProduct from "@effect/data/typeclass/SemiProduct"
import * as Cause from "@effect/io/Cause"
import type * as Effect from "@effect/io/Effect"

@@ -67,3 +84,21 @@ import type * as FiberId from "@effect/io/Fiber/Id"

export interface STM<R, E, A> extends STM.Variance<R, E, A>, Effect.Effect<R, E, A> {}
/**
* @category type lambdas
* @since 1.0.0
*/
export interface STMTypeLambda extends TypeLambda {
readonly type: STM<this["Out2"], this["Out1"], this["Target"]>
}
/**
* @since 1.0.0
* @category models
*/
declare module "@effect/data/Context" {
interface Tag<Identifier, Service> extends STM<Identifier, never, Service> {}
interface TracedTag<Identifier, Service> extends STM<Identifier, never, Service> {}
}
/**
* @internal

@@ -73,8 +108,3 @@ * @since 1.0.0

export interface STM<R, E, A> {
/** @internal */
trace: Debug.Trace
/** @internal */
traced(trace: Debug.Trace): STM<R, E, A>
/** @internal */
commit(): Effect.Effect<R, E, A>
}

@@ -373,3 +403,3 @@

*/
export const context: <R>() => STM<R, never, Context.Context<R>> = stm.context
export const context: <R>() => STM<R, never, Context.Context<R>> = core.context

@@ -382,3 +412,3 @@ /**

*/
export const contextWith: <R0, R>(f: (environment: Context.Context<R0>) => R) => STM<R0, never, R> = stm.contextWith
export const contextWith: <R0, R>(f: (environment: Context.Context<R0>) => R) => STM<R0, never, R> = core.contextWith

@@ -393,3 +423,3 @@ /**

f: (environment: Context.Context<R0>) => STM<R, E, A>
) => STM<R0 | R, E, A> = stm.contextWithSTM
) => STM<R0 | R, E, A> = core.contextWithSTM

@@ -1139,13 +1169,11 @@ /**

export const provideService: {
<T extends Context.Tag<any>>(
<T extends Context.Tag<any, any>>(
tag: T,
resource: Context.Tag.Service<T>
): <R, E, A>(
self: STM<R, E, A>
) => STM<Exclude<R, Context.Tag.Service<T>>, E, A>
<R, E, A, T extends Context.Tag<any>>(
): <R, E, A>(self: STM<R, E, A>) => STM<Exclude<R, Context.Tag.Identifier<T>>, E, A>
<R, E, A, T extends Context.Tag<any, any>>(
self: STM<R, E, A>,
tag: T,
resource: Context.Tag.Service<T>
): STM<Exclude<R, Context.Tag.Service<T>>, E, A>
): STM<Exclude<R, Context.Tag.Identifier<T>>, E, A>
} = stm.provideService

@@ -1161,13 +1189,11 @@

export const provideServiceSTM: {
<T extends Context.Tag<T>, R1, E1>(
tag: Context.Tag<T>,
<T extends Context.Tag<any, any>, R1, E1>(
tag: T,
stm: STM<R1, E1, Context.Tag.Service<T>>
): <R, E, A>(
self: STM<R, E, A>
) => STM<R1 | Exclude<R, Context.Tag.Service<T>>, E1 | E, A>
<R, E, A, T extends Context.Tag<T>, R1, E1>(
): <R, E, A>(self: STM<R, E, A>) => STM<R1 | Exclude<R, Context.Tag.Identifier<T>>, E1 | E, A>
<R, E, A, T extends Context.Tag<any, any>, R1, E1>(
self: STM<R, E, A>,
tag: T,
stm: STM<R1, E1, Context.Tag.Service<T>>
): STM<R1 | Exclude<R, Context.Tag.Service<T>>, E | E1, A>
): STM<R1 | Exclude<R, Context.Tag.Identifier<T>>, E | E1, A>
} = stm.provideServiceSTM

@@ -1387,29 +1413,2 @@

/**
* Accesses the specified service in the environment of the effect.
*
* @since 1.0.0
* @category constructors
*/
export const service: <T>(tag: Context.Tag<T>) => STM<T, never, T> = stm.service
/**
* Effectfully accesses the specified service in the environment of the
* effect.
*
* @since 1.0.0
* @category constructors
*/
export const serviceWith: <T, A>(tag: Context.Tag<T>, f: (service: T) => A) => STM<T, never, A> = stm.serviceWith
/**
* Effectfully accesses the specified service in the environment of the
* effect.
*
* @since 1.0.0
* @category constructors
*/
export const serviceWithSTM: <T, R, E, A>(tag: Context.Tag<T>, f: (service: T) => STM<R, E, A>) => STM<T | R, E, A> =
stm.serviceWithSTM
/**
* Converts an option on values into an option on errors.

@@ -1748,4 +1747,4 @@ *

export const zip: {
<R1, E1, A1>(that: STM<R1, E1, A1>): <R, E, A>(self: STM<R, E, A>) => STM<R1 | R, E1 | E, readonly [A, A1]>
<R, E, A, R1, E1, A1>(self: STM<R, E, A>, that: STM<R1, E1, A1>): STM<R | R1, E | E1, readonly [A, A1]>
<R1, E1, A1>(that: STM<R1, E1, A1>): <R, E, A>(self: STM<R, E, A>) => STM<R1 | R, E1 | E, [A, A1]>
<R, E, A, R1, E1, A1>(self: STM<R, E, A>, that: STM<R1, E1, A1>): STM<R | R1, E | E1, [A, A1]>
} = core.zip

@@ -1797,1 +1796,297 @@

} = core.zipWith
/**
* @category instances
* @since 1.0.0
*/
export const Bicovariant: bicovariant.Bicovariant<STMTypeLambda> = {
bimap: mapBoth
}
const imap = covariant.imap<STMTypeLambda>(map)
/**
* @category instances
* @since 1.0.0
*/
export const Covariant: covariant.Covariant<STMTypeLambda> = {
imap,
map
}
/**
* @category instances
* @since 1.0.0
*/
export const Invariant: invariant.Invariant<STMTypeLambda> = {
imap
}
/**
* @category instances
* @since 1.0.0
*/
export const Pointed: pointed.Pointed<STMTypeLambda> = {
of: succeed,
imap,
map
}
/**
* @category instances
* @since 1.0.0
*/
export const FlatMap: flatMap_.FlatMap<STMTypeLambda> = {
flatMap
}
/**
* @category instances
* @since 1.0.0
*/
export const Chainable: chainable.Chainable<STMTypeLambda> = {
imap,
map,
flatMap
}
/**
* @category instances
* @since 1.0.0
*/
export const Monad: monad.Monad<STMTypeLambda> = {
imap,
of: succeed,
map,
flatMap
}
/**
* @category instances
* @since 1.0.0
*/
export const SemiProduct: semiProduct.SemiProduct<STMTypeLambda> = {
imap,
product: zip,
productMany: (self, rest) => flatMap(self, (a) => map(collectAll(rest), (r) => [a, ...r]))
}
/**
* @category instances
* @since 1.0.0
*/
export const Product: product_.Product<STMTypeLambda> = {
of: succeed,
imap,
product: SemiProduct.product,
productMany: SemiProduct.productMany,
productAll: (rest) => map(collectAll(rest), (x) => Array.from(x))
}
/**
* @category instances
* @since 1.0.0
*/
export const SemiApplicative: semiApplicative.SemiApplicative<STMTypeLambda> = {
imap,
map,
product: SemiProduct.product,
productMany: SemiProduct.productMany
}
/**
* @category instances
* @since 1.0.0
*/
export const Applicative: applicative.Applicative<STMTypeLambda> = {
imap,
of: succeed,
map,
product: SemiProduct.product,
productMany: SemiProduct.productMany,
productAll: Product.productAll
}
/**
* This function takes an iterable of `STM` values and returns a new
* `STM` value that represents the first `STM` value in the iterable
* that succeeds. If all of the `Effect` values in the iterable fail, then
* the resulting `STM` value will fail as well.
*
* This function is sequential, meaning that the `STM` values in the
* iterable will be executed in sequence, and the first one that succeeds
* will determine the outcome of the resulting `STM` value.
*
* @param effects - The iterable of `STM` values to evaluate.
*
* @returns A new `STM` value that represents the first successful
* `STM` value in the iterable, or a failed `STM` value if all of the
* `STM` values in the iterable fail.
*
* @since 1.0.0
* @category elements
*/
export const firstSuccessOf = Debug.methodWithTrace((trace) =>
<R, E, A>(effects: Iterable<STM<R, E, A>>): STM<R, E, A> =>
suspend<R, E, A>(() => {
const list = Chunk.fromIterable(effects)
if (!Chunk.isNonEmpty(list)) {
return dieSync(() => Cause.IllegalArgumentException(`Received an empty collection of effects`))
}
return Chunk.reduce(
Chunk.tailNonEmpty(list),
Chunk.headNonEmpty(list),
(left, right) => orElse(left, () => right)
)
}).traced(trace)
)
/**
* @category instances
* @since 1.0.0
*/
export const SemiCoproduct: semiCoproduct.SemiCoproduct<STMTypeLambda> = {
imap,
coproduct: (self, that) => orElse(self, () => that),
coproductMany: (self, rest) => firstSuccessOf([self, ...rest])
}
/**
* @category instances
* @since 1.0.0
*/
export const SemiAlternative: semiAlternative.SemiAlternative<STMTypeLambda> = {
map,
imap,
coproduct: SemiCoproduct.coproduct,
coproductMany: SemiCoproduct.coproductMany
}
/**
* @category do notation
* @since 1.0.0
*/
export const Do: <R = never, E = never>() => STM<R, E, {}> = of_.Do(Pointed)
/**
* @category do notation
* @since 1.0.0
*/
export const bind: {
<N extends string, A extends object, O2, E2, B>(
name: Exclude<N, keyof A>,
f: (a: A) => STM<O2, E2, B>
): <O1, E1>(self: STM<O1, E1, A>) => STM<O2 | O1, E2 | E1, { [K in N | keyof A]: K extends keyof A ? A[K] : B }>
<O1_1, E1_1, A_1 extends object, N_1 extends string, O2_1, E2_1, B_1>(
self: STM<O1_1, E1_1, A_1>,
name: Exclude<N_1, keyof A_1>,
f: (a: A_1) => STM<O2_1, E2_1, B_1>
): STM<O1_1 | O2_1, E1_1 | E2_1, { [K_1 in N_1 | keyof A_1]: K_1 extends keyof A_1 ? A_1[K_1] : B_1 }>
} = chainable.bind(Chainable)
const let_: {
<N extends string, A extends object, B>(
name: Exclude<N, keyof A>,
f: (a: A) => B
): <O, E>(self: STM<O, E, A>) => STM<O, E, { [K in N | keyof A]: K extends keyof A ? A[K] : B }>
<O_1, E_1, A_1 extends object, N_1 extends string, B_1>(
self: STM<O_1, E_1, A_1>,
name: Exclude<N_1, keyof A_1>,
f: (a: A_1) => B_1
): STM<O_1, E_1, { [K_1 in N_1 | keyof A_1]: K_1 extends keyof A_1 ? A_1[K_1] : B_1 }>
} = covariant.let(Covariant)
export {
/**
* @category do notation
* @since 1.0.0
*/
let_ as let
}
/**
* @category do notation
* @since 1.0.0
*/
export const letDiscard: {
<N extends string, A extends object, B>(
name: Exclude<N, keyof A>,
b: B
): <O, E>(self: STM<O, E, A>) => STM<O, E, { [K in N | keyof A]: K extends keyof A ? A[K] : B }>
<O_1, E_1, A_1 extends object, N_1 extends string, B_1>(
self: STM<O_1, E_1, A_1>,
name: Exclude<N_1, keyof A_1>,
b: B_1
): STM<O_1, E_1, { [K_1 in N_1 | keyof A_1]: K_1 extends keyof A_1 ? A_1[K_1] : B_1 }>
} = covariant.letDiscard(Covariant)
/**
* @category do notation
* @since 1.0.0
*/
export const bindDiscard: {
<N extends string, A extends object, O2, E2, B>(
name: Exclude<N, keyof A>,
that: STM<O2, E2, B>
): <O1, E1>(self: STM<O1, E1, A>) => STM<O2 | O1, E2 | E1, { [K in N | keyof A]: K extends keyof A ? A[K] : B }>
<O1_1, E1_1, A_1 extends object, N_1 extends string, O2_1, E2_1, B_1>(
self: STM<O1_1, E1_1, A_1>,
name: Exclude<N_1, keyof A_1>,
that: STM<O2_1, E2_1, B_1>
): STM<O1_1 | O2_1, E1_1 | E2_1, { [K_1 in N_1 | keyof A_1]: K_1 extends keyof A_1 ? A_1[K_1] : B_1 }>
} = semiProduct.bindDiscard(SemiProduct)
/**
* @category do notation
* @since 1.0.0
*/
export const bindTo: {
<N extends string>(name: N): <O, E, A>(self: STM<O, E, A>) => STM<O, E, { [K in N]: A }>
<O_1, E_1, A_1, N_1 extends string>(self: STM<O_1, E_1, A_1>, name: N_1): STM<O_1, E_1, { [K_1 in N_1]: A_1 }>
} = invariant.bindTo(SemiProduct)
/**
* @category utils
* @since 1.0.0
*/
export const nonEmptyStruct: <R extends { readonly [x: string]: STM<any, any, any> }>(
fields: (keyof R extends never ? never : R) & { readonly [x: string]: STM<any, any, any> }
) => STM<
[R[keyof R]] extends [STM<infer O, any, any>] ? O : never,
[R[keyof R]] extends [STM<any, infer E, any>] ? E : never,
{ [K in keyof R]: [R[K]] extends [STM<any, any, infer A>] ? A : never }
> = semiProduct.nonEmptyStruct(SemiProduct)
/**
* @category utils
* @since 1.0.0
*/
export const nonEmptyTuple: <T extends readonly [STM<any, any, any>, ...Array<STM<any, any, any>>]>(
...elements: T
) => STM<
[T[number]] extends [STM<infer O, any, any>] ? O : never,
[T[number]] extends [STM<any, infer E, any>] ? E : never,
{ [I in keyof T]: [T[I]] extends [STM<any, any, infer A>] ? A : never }
> = semiProduct.nonEmptyTuple(SemiProduct)
/**
* @category utils
* @since 1.0.0
*/
export const getFailureSemigroup: <A, O, E>(S: Semigroup<A>) => Semigroup<STM<O, E, A>> = semiApplicative.getSemigroup(
SemiApplicative
)
/**
* @category utils
* @since 1.0.0
*/
export const getFirstSuccessSemigroup: <A, O, E>(S: Semigroup<A>) => Semigroup<STM<O, E, A>> = semiCoproduct
.getSemigroup(
SemiCoproduct
)
/**
* @category utils
* @since 1.0.0
*/
export const getFailureMonoid: <A, O, E>(M: Monoid<A>) => Monoid<STM<O, E, A>> = applicative.getMonoid(Applicative)

@@ -72,3 +72,3 @@ /**

*/
export const Tag: Context.Tag<TRandom> = internal.Tag
export const Tag: Context.Tag<TRandom, TRandom> = internal.Tag

@@ -75,0 +75,0 @@ /**

/**
* @since 1.0.0
*/
import type * as Chunk from "@effect/data/Chunk";
import * as Chunk from "@effect/data/Chunk";
import type * as Context from "@effect/data/Context";
import type * as Either from "@effect/data/Either";
import type { LazyArg } from "@effect/data/Function";
import type { TypeLambda } from "@effect/data/HKT";
import type * as Option from "@effect/data/Option";
import type { Predicate } from "@effect/data/Predicate";
import type * as Cause from "@effect/io/Cause";
import * as applicative from "@effect/data/typeclass/Applicative";
import type * as bicovariant from "@effect/data/typeclass/Bicovariant";
import * as chainable from "@effect/data/typeclass/Chainable";
import * as covariant from "@effect/data/typeclass/Covariant";
import type * as flatMap_ from "@effect/data/typeclass/FlatMap";
import * as invariant from "@effect/data/typeclass/Invariant";
import type * as monad from "@effect/data/typeclass/Monad";
import type { Monoid } from "@effect/data/typeclass/Monoid";
import type * as pointed from "@effect/data/typeclass/Pointed";
import type * as product_ from "@effect/data/typeclass/Product";
import type * as semiAlternative from "@effect/data/typeclass/SemiAlternative";
import * as semiApplicative from "@effect/data/typeclass/SemiApplicative";
import * as semiCoproduct from "@effect/data/typeclass/SemiCoproduct";
import type { Semigroup } from "@effect/data/typeclass/Semigroup";
import * as semiProduct from "@effect/data/typeclass/SemiProduct";
import * as Cause from "@effect/io/Cause";
import type * as Effect from "@effect/io/Effect";

@@ -63,4 +79,21 @@ import type * as FiberId from "@effect/io/Fiber/Id";

/**
* @category type lambdas
* @since 1.0.0
*/
export interface STMTypeLambda extends TypeLambda {
readonly type: STM<this["Out2"], this["Out1"], this["Target"]>;
}
/**
* @since 1.0.0
* @category models
*/
declare module "@effect/data/Context" {
interface Tag<Identifier, Service> extends STM<Identifier, never, Service> {
}
interface TracedTag<Identifier, Service> extends STM<Identifier, never, Service> {
}
}
/**
* @since 1.0.0
*/
export declare namespace STM {

@@ -947,4 +980,4 @@ /**

export declare const provideService: {
<T extends Context.Tag<any>>(tag: T, resource: Context.Tag.Service<T>): <R, E, A>(self: STM<R, E, A>) => STM<Exclude<R, Context.Tag.Service<T>>, E, A>;
<R, E, A, T extends Context.Tag<any>>(self: STM<R, E, A>, tag: T, resource: Context.Tag.Service<T>): STM<Exclude<R, Context.Tag.Service<T>>, E, A>;
<T extends Context.Tag<any, any>>(tag: T, resource: Context.Tag.Service<T>): <R, E, A>(self: STM<R, E, A>) => STM<Exclude<R, Context.Tag.Identifier<T>>, E, A>;
<R, E, A, T extends Context.Tag<any, any>>(self: STM<R, E, A>, tag: T, resource: Context.Tag.Service<T>): STM<Exclude<R, Context.Tag.Identifier<T>>, E, A>;
};

@@ -959,4 +992,4 @@ /**

export declare const provideServiceSTM: {
<T extends Context.Tag<T>, R1, E1>(tag: Context.Tag<T>, stm: STM<R1, E1, Context.Tag.Service<T>>): <R, E, A>(self: STM<R, E, A>) => STM<R1 | Exclude<R, Context.Tag.Service<T>>, E1 | E, A>;
<R, E, A, T extends Context.Tag<T>, R1, E1>(self: STM<R, E, A>, tag: T, stm: STM<R1, E1, Context.Tag.Service<T>>): STM<R1 | Exclude<R, Context.Tag.Service<T>>, E | E1, A>;
<T extends Context.Tag<any, any>, R1, E1>(tag: T, stm: STM<R1, E1, Context.Tag.Service<T>>): <R, E, A>(self: STM<R, E, A>) => STM<R1 | Exclude<R, Context.Tag.Identifier<T>>, E1 | E, A>;
<R, E, A, T extends Context.Tag<any, any>, R1, E1>(self: STM<R, E, A>, tag: T, stm: STM<R1, E1, Context.Tag.Service<T>>): STM<R1 | Exclude<R, Context.Tag.Identifier<T>>, E | E1, A>;
};

@@ -1150,25 +1183,2 @@ /**

/**
* Accesses the specified service in the environment of the effect.
*
* @since 1.0.0
* @category constructors
*/
export declare const service: <T>(tag: Context.Tag<T>) => STM<T, never, T>;
/**
* Effectfully accesses the specified service in the environment of the
* effect.
*
* @since 1.0.0
* @category constructors
*/
export declare const serviceWith: <T, A>(tag: Context.Tag<T>, f: (service: T) => A) => STM<T, never, A>;
/**
* Effectfully accesses the specified service in the environment of the
* effect.
*
* @since 1.0.0
* @category constructors
*/
export declare const serviceWithSTM: <T, R, E, A>(tag: Context.Tag<T>, f: (service: T) => STM<R, E, A>) => STM<T | R, E, A>;
/**
* Converts an option on values into an option on errors.

@@ -1439,4 +1449,4 @@ *

export declare const zip: {
<R1, E1, A1>(that: STM<R1, E1, A1>): <R, E, A>(self: STM<R, E, A>) => STM<R1 | R, E1 | E, readonly [A, A1]>;
<R, E, A, R1, E1, A1>(self: STM<R, E, A>, that: STM<R1, E1, A1>): STM<R | R1, E | E1, readonly [A, A1]>;
<R1, E1, A1>(that: STM<R1, E1, A1>): <R, E, A>(self: STM<R, E, A>) => STM<R1 | R, E1 | E, [A, A1]>;
<R, E, A, R1, E1, A1>(self: STM<R, E, A>, that: STM<R1, E1, A1>): STM<R | R1, E | E1, [A, A1]>;
};

@@ -1476,2 +1486,195 @@ /**

};
/**
* @category instances
* @since 1.0.0
*/
export declare const Bicovariant: bicovariant.Bicovariant<STMTypeLambda>;
/**
* @category instances
* @since 1.0.0
*/
export declare const Covariant: covariant.Covariant<STMTypeLambda>;
/**
* @category instances
* @since 1.0.0
*/
export declare const Invariant: invariant.Invariant<STMTypeLambda>;
/**
* @category instances
* @since 1.0.0
*/
export declare const Pointed: pointed.Pointed<STMTypeLambda>;
/**
* @category instances
* @since 1.0.0
*/
export declare const FlatMap: flatMap_.FlatMap<STMTypeLambda>;
/**
* @category instances
* @since 1.0.0
*/
export declare const Chainable: chainable.Chainable<STMTypeLambda>;
/**
* @category instances
* @since 1.0.0
*/
export declare const Monad: monad.Monad<STMTypeLambda>;
/**
* @category instances
* @since 1.0.0
*/
export declare const SemiProduct: semiProduct.SemiProduct<STMTypeLambda>;
/**
* @category instances
* @since 1.0.0
*/
export declare const Product: product_.Product<STMTypeLambda>;
/**
* @category instances
* @since 1.0.0
*/
export declare const SemiApplicative: semiApplicative.SemiApplicative<STMTypeLambda>;
/**
* @category instances
* @since 1.0.0
*/
export declare const Applicative: applicative.Applicative<STMTypeLambda>;
/**
* This function takes an iterable of `STM` values and returns a new
* `STM` value that represents the first `STM` value in the iterable
* that succeeds. If all of the `Effect` values in the iterable fail, then
* the resulting `STM` value will fail as well.
*
* This function is sequential, meaning that the `STM` values in the
* iterable will be executed in sequence, and the first one that succeeds
* will determine the outcome of the resulting `STM` value.
*
* @param effects - The iterable of `STM` values to evaluate.
*
* @returns A new `STM` value that represents the first successful
* `STM` value in the iterable, or a failed `STM` value if all of the
* `STM` values in the iterable fail.
*
* @since 1.0.0
* @category elements
*/
export declare const firstSuccessOf: <R, E, A>(effects: Iterable<STM<R, E, A>>) => STM<R, E, A>;
/**
* @category instances
* @since 1.0.0
*/
export declare const SemiCoproduct: semiCoproduct.SemiCoproduct<STMTypeLambda>;
/**
* @category instances
* @since 1.0.0
*/
export declare const SemiAlternative: semiAlternative.SemiAlternative<STMTypeLambda>;
/**
* @category do notation
* @since 1.0.0
*/
export declare const Do: <R = never, E = never>() => STM<R, E, {}>;
/**
* @category do notation
* @since 1.0.0
*/
export declare const bind: {
<N extends string, A extends object, O2, E2, B>(name: Exclude<N, keyof A>, f: (a: A) => STM<O2, E2, B>): <O1, E1>(self: STM<O1, E1, A>) => STM<O2 | O1, E2 | E1, {
[K in N | keyof A]: K extends keyof A ? A[K] : B;
}>;
<O1_1, E1_1, A_1 extends object, N_1 extends string, O2_1, E2_1, B_1>(self: STM<O1_1, E1_1, A_1>, name: Exclude<N_1, keyof A_1>, f: (a: A_1) => STM<O2_1, E2_1, B_1>): STM<O1_1 | O2_1, E1_1 | E2_1, {
[K_1 in N_1 | keyof A_1]: K_1 extends keyof A_1 ? A_1[K_1] : B_1;
}>;
};
declare const let_: {
<N extends string, A extends object, B>(name: Exclude<N, keyof A>, f: (a: A) => B): <O, E>(self: STM<O, E, A>) => STM<O, E, {
[K in N | keyof A]: K extends keyof A ? A[K] : B;
}>;
<O_1, E_1, A_1 extends object, N_1 extends string, B_1>(self: STM<O_1, E_1, A_1>, name: Exclude<N_1, keyof A_1>, f: (a: A_1) => B_1): STM<O_1, E_1, {
[K_1 in N_1 | keyof A_1]: K_1 extends keyof A_1 ? A_1[K_1] : B_1;
}>;
};
export {
/**
* @category do notation
* @since 1.0.0
*/
let_ as let };
/**
* @category do notation
* @since 1.0.0
*/
export declare const letDiscard: {
<N extends string, A extends object, B>(name: Exclude<N, keyof A>, b: B): <O, E>(self: STM<O, E, A>) => STM<O, E, {
[K in N | keyof A]: K extends keyof A ? A[K] : B;
}>;
<O_1, E_1, A_1 extends object, N_1 extends string, B_1>(self: STM<O_1, E_1, A_1>, name: Exclude<N_1, keyof A_1>, b: B_1): STM<O_1, E_1, {
[K_1 in N_1 | keyof A_1]: K_1 extends keyof A_1 ? A_1[K_1] : B_1;
}>;
};
/**
* @category do notation
* @since 1.0.0
*/
export declare const bindDiscard: {
<N extends string, A extends object, O2, E2, B>(name: Exclude<N, keyof A>, that: STM<O2, E2, B>): <O1, E1>(self: STM<O1, E1, A>) => STM<O2 | O1, E2 | E1, {
[K in N | keyof A]: K extends keyof A ? A[K] : B;
}>;
<O1_1, E1_1, A_1 extends object, N_1 extends string, O2_1, E2_1, B_1>(self: STM<O1_1, E1_1, A_1>, name: Exclude<N_1, keyof A_1>, that: STM<O2_1, E2_1, B_1>): STM<O1_1 | O2_1, E1_1 | E2_1, {
[K_1 in N_1 | keyof A_1]: K_1 extends keyof A_1 ? A_1[K_1] : B_1;
}>;
};
/**
* @category do notation
* @since 1.0.0
*/
export declare const bindTo: {
<N extends string>(name: N): <O, E, A>(self: STM<O, E, A>) => STM<O, E, {
[K in N]: A;
}>;
<O_1, E_1, A_1, N_1 extends string>(self: STM<O_1, E_1, A_1>, name: N_1): STM<O_1, E_1, {
[K_1 in N_1]: A_1;
}>;
};
/**
* @category utils
* @since 1.0.0
*/
export declare const nonEmptyStruct: <R extends {
readonly [x: string]: STM<any, any, any>;
}>(fields: (keyof R extends never ? never : R) & {
readonly [x: string]: STM<any, any, any>;
}) => STM<[
R[keyof R]
] extends [STM<infer O, any, any>] ? O : never, [
R[keyof R]
] extends [STM<any, infer E, any>] ? E : never, {
[K in keyof R]: [R[K]] extends [STM<any, any, infer A>] ? A : never;
}>;
/**
* @category utils
* @since 1.0.0
*/
export declare const nonEmptyTuple: <T extends readonly [STM<any, any, any>, ...Array<STM<any, any, any>>]>(...elements: T) => STM<[
T[number]
] extends [STM<infer O, any, any>] ? O : never, [
T[number]
] extends [STM<any, infer E, any>] ? E : never, {
[I in keyof T]: [T[I]] extends [STM<any, any, infer A>] ? A : never;
}>;
/**
* @category utils
* @since 1.0.0
*/
export declare const getFailureSemigroup: <A, O, E>(S: Semigroup<A>) => Semigroup<STM<O, E, A>>;
/**
* @category utils
* @since 1.0.0
*/
export declare const getFirstSuccessSemigroup: <A, O, E>(S: Semigroup<A>) => Semigroup<STM<O, E, A>>;
/**
* @category utils
* @since 1.0.0
*/
export declare const getFailureMonoid: <A, O, E>(M: Monoid<A>) => Monoid<STM<O, E, A>>;
//# sourceMappingURL=STM.d.ts.map

@@ -6,4 +6,15 @@ "use strict";

});
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.provideServiceSTM = exports.provideService = exports.provideContext = 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.matchSTM = exports.match = exports.mapError = exports.mapBoth = exports.mapAttempt = exports.map = exports.loopDiscard = exports.loop = exports.left = exports.iterate = exports.isSuccess = exports.isSTM = exports.isFailure = exports.interruptAs = exports.interrupt = exports.ignore = exports.ifSTM = exports.head = exports.gen = exports.fromOption = exports.fromEither = exports.forEachDiscard = exports.forEach = 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.ensuring = exports.either = exports.dieSync = exports.dieMessage = exports.die = exports.contramapContext = exports.contextWithSTM = exports.contextWith = exports.context = 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.asUnit = exports.asSomeError = exports.asSome = exports.as = exports.all = 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 = exports.serviceWith = exports.service = exports.right = exports.retryWhile = exports.retryUntil = exports.retry = void 0;
exports.none = exports.nonEmptyTuple = exports.nonEmptyStruct = exports.negate = exports.mergeAll = exports.merge = exports.matchSTM = exports.match = exports.mapError = exports.mapBoth = exports.mapAttempt = exports.map = exports.loopDiscard = exports.loop = exports.letDiscard = exports.let = exports.left = exports.iterate = exports.isSuccess = exports.isSTM = exports.isFailure = exports.interruptAs = exports.interrupt = exports.ignore = exports.ifSTM = exports.head = exports.getFirstSuccessSemigroup = exports.getFailureSemigroup = exports.getFailureMonoid = exports.gen = exports.fromOption = exports.fromEither = exports.forEachDiscard = exports.forEach = exports.flipWith = exports.flip = exports.flattenErrorOption = exports.flatten = exports.flatMapError = exports.flatMap = exports.firstSuccessOf = 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.ensuring = exports.either = exports.dieSync = exports.dieMessage = exports.die = exports.contramapContext = exports.contextWithSTM = exports.contextWith = exports.context = exports.cond = exports.commitEither = exports.commit = exports.collectSTM = exports.collectFirst = exports.collectAllDiscard = exports.collectAll = exports.collect = exports.check = exports.catchSome = exports.catchAll = exports.bindTo = exports.bindDiscard = exports.bind = exports.attempt = exports.asUnit = exports.asSomeError = exports.asSome = exports.as = exports.all = exports.acquireUseRelease = exports.absolve = exports.SemiProduct = exports.SemiCoproduct = exports.SemiApplicative = exports.SemiAlternative = exports.STMTypeId = exports.Product = exports.Pointed = exports.Monad = exports.Invariant = exports.FlatMap = exports.Do = exports.Covariant = exports.Chainable = exports.Bicovariant = exports.Applicative = 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.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.provideServiceSTM = exports.provideService = exports.provideContext = exports.partition = exports.orTry = exports.orElseSucceed = exports.orElseOptional = exports.orElseFail = exports.orElseEither = exports.orElse = exports.orDieWith = exports.orDie = exports.option = void 0;
var Chunk = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Chunk"));
var Debug = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Debug"));
var applicative = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/typeclass/Applicative"));
var chainable = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/typeclass/Chainable"));
var covariant = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/typeclass/Covariant"));
var invariant = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/typeclass/Invariant"));
var of_ = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/typeclass/Of"));
var semiApplicative = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/typeclass/SemiApplicative"));
var semiCoproduct = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/typeclass/SemiCoproduct"));
var semiProduct = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/typeclass/SemiProduct"));
var Cause = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/io/Cause"));
var core = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/stm/internal_effect_untraced/core"));

@@ -15,2 +26,6 @@ var stm = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/stm/internal_effect_untraced/stm"));

* @since 1.0.0
*/
/**
* @since 1.0.0
* @category symbols

@@ -204,3 +219,3 @@ */

exports.cond = cond;
const context = stm.context;
const context = core.context;
/**

@@ -213,3 +228,3 @@ * Accesses the environment of the transaction to perform a transaction.

exports.context = context;
const contextWith = stm.contextWith;
const contextWith = core.contextWith;
/**

@@ -222,3 +237,3 @@ * Accesses the environment of the transaction to perform a transaction.

exports.contextWith = contextWith;
const contextWithSTM = stm.contextWithSTM;
const contextWithSTM = core.contextWithSTM;
/**

@@ -969,28 +984,2 @@ * Transforms the environment being provided to this effect with the specified

/**
* Accesses the specified service in the environment of the effect.
*
* @since 1.0.0
* @category constructors
*/
exports.right = right;
const service = stm.service;
/**
* Effectfully accesses the specified service in the environment of the
* effect.
*
* @since 1.0.0
* @category constructors
*/
exports.service = service;
const serviceWith = stm.serviceWith;
/**
* Effectfully accesses the specified service in the environment of the
* effect.
*
* @since 1.0.0
* @category constructors
*/
exports.serviceWith = serviceWith;
const serviceWithSTM = stm.serviceWithSTM;
/**
* Converts an option on values into an option on errors.

@@ -1001,3 +990,3 @@ *

*/
exports.serviceWithSTM = serviceWithSTM;
exports.right = right;
const some = stm.some;

@@ -1277,3 +1266,224 @@ /**

const zipWith = core.zipWith;
/**
* @category instances
* @since 1.0.0
*/
exports.zipWith = zipWith;
const Bicovariant = {
bimap: mapBoth
};
exports.Bicovariant = Bicovariant;
const imap = /*#__PURE__*/covariant.imap(map);
/**
* @category instances
* @since 1.0.0
*/
const Covariant = {
imap,
map
};
/**
* @category instances
* @since 1.0.0
*/
exports.Covariant = Covariant;
const Invariant = {
imap
};
/**
* @category instances
* @since 1.0.0
*/
exports.Invariant = Invariant;
const Pointed = {
of: succeed,
imap,
map
};
/**
* @category instances
* @since 1.0.0
*/
exports.Pointed = Pointed;
const FlatMap = {
flatMap
};
/**
* @category instances
* @since 1.0.0
*/
exports.FlatMap = FlatMap;
const Chainable = {
imap,
map,
flatMap
};
/**
* @category instances
* @since 1.0.0
*/
exports.Chainable = Chainable;
const Monad = {
imap,
of: succeed,
map,
flatMap
};
/**
* @category instances
* @since 1.0.0
*/
exports.Monad = Monad;
const SemiProduct = {
imap,
product: zip,
productMany: (self, rest) => flatMap(self, a => map(collectAll(rest), r => [a, ...r]))
};
/**
* @category instances
* @since 1.0.0
*/
exports.SemiProduct = SemiProduct;
const Product = {
of: succeed,
imap,
product: SemiProduct.product,
productMany: SemiProduct.productMany,
productAll: rest => map(collectAll(rest), x => Array.from(x))
};
/**
* @category instances
* @since 1.0.0
*/
exports.Product = Product;
const SemiApplicative = {
imap,
map,
product: SemiProduct.product,
productMany: SemiProduct.productMany
};
/**
* @category instances
* @since 1.0.0
*/
exports.SemiApplicative = SemiApplicative;
const Applicative = {
imap,
of: succeed,
map,
product: SemiProduct.product,
productMany: SemiProduct.productMany,
productAll: Product.productAll
};
/**
* This function takes an iterable of `STM` values and returns a new
* `STM` value that represents the first `STM` value in the iterable
* that succeeds. If all of the `Effect` values in the iterable fail, then
* the resulting `STM` value will fail as well.
*
* This function is sequential, meaning that the `STM` values in the
* iterable will be executed in sequence, and the first one that succeeds
* will determine the outcome of the resulting `STM` value.
*
* @param effects - The iterable of `STM` values to evaluate.
*
* @returns A new `STM` value that represents the first successful
* `STM` value in the iterable, or a failed `STM` value if all of the
* `STM` values in the iterable fail.
*
* @since 1.0.0
* @category elements
*/
exports.Applicative = Applicative;
const firstSuccessOf = /*#__PURE__*/Debug.methodWithTrace(trace => effects => suspend(() => {
const list = Chunk.fromIterable(effects);
if (!Chunk.isNonEmpty(list)) {
return dieSync(() => Cause.IllegalArgumentException(`Received an empty collection of effects`));
}
return Chunk.reduce(Chunk.tailNonEmpty(list), Chunk.headNonEmpty(list), (left, right) => orElse(left, () => right));
}).traced(trace));
/**
* @category instances
* @since 1.0.0
*/
exports.firstSuccessOf = firstSuccessOf;
const SemiCoproduct = {
imap,
coproduct: (self, that) => orElse(self, () => that),
coproductMany: (self, rest) => firstSuccessOf([self, ...rest])
};
/**
* @category instances
* @since 1.0.0
*/
exports.SemiCoproduct = SemiCoproduct;
const SemiAlternative = {
map,
imap,
coproduct: SemiCoproduct.coproduct,
coproductMany: SemiCoproduct.coproductMany
};
/**
* @category do notation
* @since 1.0.0
*/
exports.SemiAlternative = SemiAlternative;
const Do = /*#__PURE__*/of_.Do(Pointed);
/**
* @category do notation
* @since 1.0.0
*/
exports.Do = Do;
const bind = /*#__PURE__*/chainable.bind(Chainable);
exports.bind = bind;
const let_ = /*#__PURE__*/covariant.let(Covariant);
exports.let = let_;
/**
* @category do notation
* @since 1.0.0
*/
const letDiscard = /*#__PURE__*/covariant.letDiscard(Covariant);
/**
* @category do notation
* @since 1.0.0
*/
exports.letDiscard = letDiscard;
const bindDiscard = /*#__PURE__*/semiProduct.bindDiscard(SemiProduct);
/**
* @category do notation
* @since 1.0.0
*/
exports.bindDiscard = bindDiscard;
const bindTo = /*#__PURE__*/invariant.bindTo(SemiProduct);
/**
* @category utils
* @since 1.0.0
*/
exports.bindTo = bindTo;
const nonEmptyStruct = /*#__PURE__*/semiProduct.nonEmptyStruct(SemiProduct);
/**
* @category utils
* @since 1.0.0
*/
exports.nonEmptyStruct = nonEmptyStruct;
const nonEmptyTuple = /*#__PURE__*/semiProduct.nonEmptyTuple(SemiProduct);
/**
* @category utils
* @since 1.0.0
*/
exports.nonEmptyTuple = nonEmptyTuple;
const getFailureSemigroup = /*#__PURE__*/semiApplicative.getSemigroup(SemiApplicative);
/**
* @category utils
* @since 1.0.0
*/
exports.getFailureSemigroup = getFailureSemigroup;
const getFirstSuccessSemigroup = /*#__PURE__*/semiCoproduct.getSemigroup(SemiCoproduct);
/**
* @category utils
* @since 1.0.0
*/
exports.getFirstSuccessSemigroup = getFirstSuccessSemigroup;
const getFailureMonoid = /*#__PURE__*/applicative.getMonoid(Applicative);
exports.getFailureMonoid = getFailureMonoid;
//# sourceMappingURL=STM.js.map

@@ -57,3 +57,3 @@ /**

*/
export declare const Tag: Context.Tag<TRandom>;
export declare const Tag: Context.Tag<TRandom, TRandom>;
/**

@@ -60,0 +60,0 @@ * The "live" `TRandom` service wrapped into a `Layer`.

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

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

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

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

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

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

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc