Aktueller Stand

This commit is contained in:
2026-01-23 01:33:35 +01:00
parent 082dc5e110
commit 2766dd12c5
10109 changed files with 1578841 additions and 77685 deletions

View File

@@ -0,0 +1,33 @@
import * as Chunk from "../../Chunk.js";
import * as Intervals from "../../ScheduleIntervals.js";
/** @internal */
export const OP_CONTINUE = "Continue";
/** @internal */
export const OP_DONE = "Done";
/** @internal */
export const _continue = intervals => {
return {
_tag: OP_CONTINUE,
intervals
};
};
/** @internal */
export const continueWith = interval => {
return {
_tag: OP_CONTINUE,
intervals: Intervals.make(Chunk.of(interval))
};
};
/** @internal */
export const done = {
_tag: OP_DONE
};
/** @internal */
export const isContinue = self => {
return self._tag === OP_CONTINUE;
};
/** @internal */
export const isDone = self => {
return self._tag === OP_DONE;
};
//# sourceMappingURL=decision.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"decision.js","names":["Chunk","Intervals","OP_CONTINUE","OP_DONE","_continue","intervals","_tag","continueWith","interval","make","of","done","isContinue","self","isDone"],"sources":["../../../../src/internal/schedule/decision.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,gBAAgB;AAGvC,OAAO,KAAKC,SAAS,MAAM,4BAA4B;AAEvD;AACA,OAAO,MAAMC,WAAW,GAAG,UAAmB;AAK9C;AACA,OAAO,MAAMC,OAAO,GAAG,MAAe;AAKtC;AACA,OAAO,MAAMC,SAAS,GAAIC,SAA8B,IAAuC;EAC7F,OAAO;IACLC,IAAI,EAAEJ,WAAW;IACjBG;GACD;AACH,CAAC;AAED;AACA,OAAO,MAAME,YAAY,GAAIC,QAA2B,IAAuC;EAC7F,OAAO;IACLF,IAAI,EAAEJ,WAAW;IACjBG,SAAS,EAAEJ,SAAS,CAACQ,IAAI,CAACT,KAAK,CAACU,EAAE,CAACF,QAAQ,CAAC;GAC7C;AACH,CAAC;AAED;AACA,OAAO,MAAMG,IAAI,GAAsC;EACrDL,IAAI,EAAEH;CACP;AAED;AACA,OAAO,MAAMS,UAAU,GAAIC,IAAuC,IAAuC;EACvG,OAAOA,IAAI,CAACP,IAAI,KAAKJ,WAAW;AAClC,CAAC;AAED;AACA,OAAO,MAAMY,MAAM,GAAID,IAAuC,IAAmC;EAC/F,OAAOA,IAAI,CAACP,IAAI,KAAKH,OAAO;AAC9B,CAAC","ignoreList":[]}

View File

@@ -0,0 +1,70 @@
import * as Duration from "../../Duration.js";
import { dual } from "../../Function.js";
import * as Option from "../../Option.js";
/** @internal */
const IntervalSymbolKey = "effect/ScheduleInterval";
/** @internal */
export const IntervalTypeId = /*#__PURE__*/Symbol.for(IntervalSymbolKey);
/** @internal */
export const empty = {
[IntervalTypeId]: IntervalTypeId,
startMillis: 0,
endMillis: 0
};
/** @internal */
export const make = (startMillis, endMillis) => {
if (startMillis > endMillis) {
return empty;
}
return {
[IntervalTypeId]: IntervalTypeId,
startMillis,
endMillis
};
};
/** @internal */
export const lessThan = /*#__PURE__*/dual(2, (self, that) => min(self, that) === self);
/** @internal */
export const min = /*#__PURE__*/dual(2, (self, that) => {
if (self.endMillis <= that.startMillis) return self;
if (that.endMillis <= self.startMillis) return that;
if (self.startMillis < that.startMillis) return self;
if (that.startMillis < self.startMillis) return that;
if (self.endMillis <= that.endMillis) return self;
return that;
});
/** @internal */
export const max = /*#__PURE__*/dual(2, (self, that) => min(self, that) === self ? that : self);
/** @internal */
export const isEmpty = self => {
return self.startMillis >= self.endMillis;
};
/** @internal */
export const isNonEmpty = self => {
return !isEmpty(self);
};
/** @internal */
export const intersect = /*#__PURE__*/dual(2, (self, that) => {
const start = Math.max(self.startMillis, that.startMillis);
const end = Math.min(self.endMillis, that.endMillis);
return make(start, end);
});
/** @internal */
export const size = self => {
return Duration.millis(self.endMillis - self.startMillis);
};
/** @internal */
export const union = /*#__PURE__*/dual(2, (self, that) => {
const start = Math.max(self.startMillis, that.startMillis);
const end = Math.min(self.endMillis, that.endMillis);
return start < end ? Option.none() : Option.some(make(start, end));
});
/** @internal */
export const after = startMilliseconds => {
return make(startMilliseconds, Number.POSITIVE_INFINITY);
};
/** @internal */
export const before = endMilliseconds => {
return make(Number.NEGATIVE_INFINITY, endMilliseconds);
};
//# sourceMappingURL=interval.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"interval.js","names":["Duration","dual","Option","IntervalSymbolKey","IntervalTypeId","Symbol","for","empty","startMillis","endMillis","make","lessThan","self","that","min","max","isEmpty","isNonEmpty","intersect","start","Math","end","size","millis","union","none","some","after","startMilliseconds","Number","POSITIVE_INFINITY","before","endMilliseconds","NEGATIVE_INFINITY"],"sources":["../../../../src/internal/schedule/interval.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}

View File

@@ -0,0 +1,122 @@
import * as Chunk from "../../Chunk.js";
import { dual, pipe } from "../../Function.js";
import * as Option from "../../Option.js";
import * as Interval from "../../ScheduleInterval.js";
import { getBugErrorMessage } from "../errors.js";
/** @internal */
const IntervalsSymbolKey = "effect/ScheduleIntervals";
/** @internal */
export const IntervalsTypeId = /*#__PURE__*/Symbol.for(IntervalsSymbolKey);
/** @internal */
export const make = intervals => {
return {
[IntervalsTypeId]: IntervalsTypeId,
intervals
};
};
/** @internal */
export const empty = /*#__PURE__*/make(/*#__PURE__*/Chunk.empty());
/** @internal */
export const fromIterable = intervals => Array.from(intervals).reduce((intervals, interval) => pipe(intervals, union(make(Chunk.of(interval)))), empty);
/** @internal */
export const union = /*#__PURE__*/dual(2, (self, that) => {
if (!Chunk.isNonEmpty(that.intervals)) {
return self;
}
if (!Chunk.isNonEmpty(self.intervals)) {
return that;
}
if (Chunk.headNonEmpty(self.intervals).startMillis < Chunk.headNonEmpty(that.intervals).startMillis) {
return unionLoop(Chunk.tailNonEmpty(self.intervals), that.intervals, Chunk.headNonEmpty(self.intervals), Chunk.empty());
}
return unionLoop(self.intervals, Chunk.tailNonEmpty(that.intervals), Chunk.headNonEmpty(that.intervals), Chunk.empty());
});
/** @internal */
const unionLoop = (_self, _that, _interval, _acc) => {
let self = _self;
let that = _that;
let interval = _interval;
let acc = _acc;
while (Chunk.isNonEmpty(self) || Chunk.isNonEmpty(that)) {
if (!Chunk.isNonEmpty(self) && Chunk.isNonEmpty(that)) {
if (interval.endMillis < Chunk.headNonEmpty(that).startMillis) {
acc = pipe(acc, Chunk.prepend(interval));
interval = Chunk.headNonEmpty(that);
that = Chunk.tailNonEmpty(that);
self = Chunk.empty();
} else {
interval = Interval.make(interval.startMillis, Chunk.headNonEmpty(that).endMillis);
that = Chunk.tailNonEmpty(that);
self = Chunk.empty();
}
} else if (Chunk.isNonEmpty(self) && Chunk.isEmpty(that)) {
if (interval.endMillis < Chunk.headNonEmpty(self).startMillis) {
acc = pipe(acc, Chunk.prepend(interval));
interval = Chunk.headNonEmpty(self);
that = Chunk.empty();
self = Chunk.tailNonEmpty(self);
} else {
interval = Interval.make(interval.startMillis, Chunk.headNonEmpty(self).endMillis);
that = Chunk.empty();
self = Chunk.tailNonEmpty(self);
}
} else if (Chunk.isNonEmpty(self) && Chunk.isNonEmpty(that)) {
if (Chunk.headNonEmpty(self).startMillis < Chunk.headNonEmpty(that).startMillis) {
if (interval.endMillis < Chunk.headNonEmpty(self).startMillis) {
acc = pipe(acc, Chunk.prepend(interval));
interval = Chunk.headNonEmpty(self);
self = Chunk.tailNonEmpty(self);
} else {
interval = Interval.make(interval.startMillis, Chunk.headNonEmpty(self).endMillis);
self = Chunk.tailNonEmpty(self);
}
} else if (interval.endMillis < Chunk.headNonEmpty(that).startMillis) {
acc = pipe(acc, Chunk.prepend(interval));
interval = Chunk.headNonEmpty(that);
that = Chunk.tailNonEmpty(that);
} else {
interval = Interval.make(interval.startMillis, Chunk.headNonEmpty(that).endMillis);
that = Chunk.tailNonEmpty(that);
}
} else {
throw new Error(getBugErrorMessage("Intervals.unionLoop"));
}
}
return make(pipe(acc, Chunk.prepend(interval), Chunk.reverse));
};
/** @internal */
export const intersect = /*#__PURE__*/dual(2, (self, that) => intersectLoop(self.intervals, that.intervals, Chunk.empty()));
/** @internal */
const intersectLoop = (_left, _right, _acc) => {
let left = _left;
let right = _right;
let acc = _acc;
while (Chunk.isNonEmpty(left) && Chunk.isNonEmpty(right)) {
const interval = pipe(Chunk.headNonEmpty(left), Interval.intersect(Chunk.headNonEmpty(right)));
const intervals = Interval.isEmpty(interval) ? acc : pipe(acc, Chunk.prepend(interval));
if (pipe(Chunk.headNonEmpty(left), Interval.lessThan(Chunk.headNonEmpty(right)))) {
left = Chunk.tailNonEmpty(left);
} else {
right = Chunk.tailNonEmpty(right);
}
acc = intervals;
}
return make(Chunk.reverse(acc));
};
/** @internal */
export const start = self => {
return pipe(self.intervals, Chunk.head, Option.getOrElse(() => Interval.empty)).startMillis;
};
/** @internal */
export const end = self => {
return pipe(self.intervals, Chunk.head, Option.getOrElse(() => Interval.empty)).endMillis;
};
/** @internal */
export const lessThan = /*#__PURE__*/dual(2, (self, that) => start(self) < start(that));
/** @internal */
export const isNonEmpty = self => {
return Chunk.isNonEmpty(self.intervals);
};
/** @internal */
export const max = /*#__PURE__*/dual(2, (self, that) => lessThan(self, that) ? that : self);
//# sourceMappingURL=intervals.js.map

File diff suppressed because one or more lines are too long