@kensio/quando 0.1.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +135 -4
- package/dist/assigned.d.ts +68 -0
- package/dist/assigned.d.ts.map +1 -0
- package/dist/assigned.js +84 -0
- package/dist/assigned.js.map +1 -0
- package/dist/build.d.ts +54 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/build.js +77 -0
- package/dist/build.js.map +1 -0
- package/dist/canonical-rule.d.ts +23 -0
- package/dist/canonical-rule.d.ts.map +1 -0
- package/dist/canonical-rule.js +139 -0
- package/dist/canonical-rule.js.map +1 -0
- package/dist/canonical.d.ts +44 -0
- package/dist/canonical.d.ts.map +1 -0
- package/dist/canonical.js +53 -0
- package/dist/canonical.js.map +1 -0
- package/dist/cascade.d.ts +107 -0
- package/dist/cascade.d.ts.map +1 -0
- package/dist/cascade.js +53 -0
- package/dist/cascade.js.map +1 -0
- package/dist/context.d.ts +44 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +9 -0
- package/dist/context.js.map +1 -0
- package/dist/day-rules.d.ts +23 -0
- package/dist/day-rules.d.ts.map +1 -0
- package/dist/day-rules.js +102 -0
- package/dist/day-rules.js.map +1 -0
- package/dist/index.d.ts +37 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -2
- package/dist/index.js.map +1 -1
- package/dist/interpret.d.ts +31 -0
- package/dist/interpret.d.ts.map +1 -0
- package/dist/interpret.js +99 -0
- package/dist/interpret.js.map +1 -0
- package/dist/interval-stream.d.ts +11 -4
- package/dist/interval-stream.d.ts.map +1 -1
- package/dist/interval-stream.js.map +1 -1
- package/dist/merge.d.ts +43 -0
- package/dist/merge.d.ts.map +1 -0
- package/dist/merge.js +79 -0
- package/dist/merge.js.map +1 -0
- package/dist/parse-cascade.d.ts +37 -0
- package/dist/parse-cascade.d.ts.map +1 -0
- package/dist/parse-cascade.js +105 -0
- package/dist/parse-cascade.js.map +1 -0
- package/dist/parse-fields.d.ts +27 -0
- package/dist/parse-fields.d.ts.map +1 -0
- package/dist/parse-fields.js +65 -0
- package/dist/parse-fields.js.map +1 -0
- package/dist/parse-shape.d.ts +39 -0
- package/dist/parse-shape.d.ts.map +1 -0
- package/dist/parse-shape.js +77 -0
- package/dist/parse-shape.js.map +1 -0
- package/dist/parse.d.ts +22 -0
- package/dist/parse.d.ts.map +1 -0
- package/dist/parse.js +93 -0
- package/dist/parse.js.map +1 -0
- package/dist/plain-forms.d.ts +22 -0
- package/dist/plain-forms.d.ts.map +1 -0
- package/dist/plain-forms.js +54 -0
- package/dist/plain-forms.js.map +1 -0
- package/dist/query.d.ts +73 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +127 -0
- package/dist/query.js.map +1 -0
- package/dist/resolve.d.ts +31 -0
- package/dist/resolve.d.ts.map +1 -0
- package/dist/resolve.js +95 -0
- package/dist/resolve.js.map +1 -0
- package/dist/rota.d.ts +49 -0
- package/dist/rota.d.ts.map +1 -0
- package/dist/rota.js +41 -0
- package/dist/rota.js.map +1 -0
- package/dist/rule.d.ts +73 -0
- package/dist/rule.d.ts.map +1 -0
- package/dist/rule.js +20 -0
- package/dist/rule.js.map +1 -0
- package/dist/schedule.d.ts +69 -0
- package/dist/schedule.d.ts.map +1 -0
- package/dist/schedule.js +80 -0
- package/dist/schedule.js.map +1 -0
- package/dist/tally.d.ts +76 -0
- package/dist/tally.d.ts.map +1 -0
- package/dist/tally.js +80 -0
- package/dist/tally.js.map +1 -0
- package/dist/time-rules.d.ts +18 -0
- package/dist/time-rules.d.ts.map +1 -0
- package/dist/time-rules.js +55 -0
- package/dist/time-rules.js.map +1 -0
- package/dist/valued-stream.d.ts +51 -0
- package/dist/valued-stream.d.ts.map +1 -0
- package/dist/valued-stream.js +148 -0
- package/dist/valued-stream.js.map +1 -0
- package/package.json +22 -20
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Streams of intervals that carry values, and the operations resolution needs
|
|
3
|
+
* over them.
|
|
4
|
+
*
|
|
5
|
+
* The same shape as `interval-stream.ts` one level down, and deliberately
|
|
6
|
+
* separate from it. Those sweeps are set algebra over *when*, and nothing in
|
|
7
|
+
* them has an opinion about values. {@link overlay} is where an opinion is
|
|
8
|
+
* needed, and it is handed one rather than choosing.
|
|
9
|
+
*/
|
|
10
|
+
import type { Valued } from "./cascade.js";
|
|
11
|
+
import type { Merge } from "./merge.js";
|
|
12
|
+
/**
|
|
13
|
+
* A lazy sequence of valued intervals.
|
|
14
|
+
*
|
|
15
|
+
* Same contract as `IntervalStream` — ascending by start, non-overlapping,
|
|
16
|
+
* coalesced — with one addition: touching intervals carrying the same value
|
|
17
|
+
* are merged, so where two intervals do touch, the values on either side of
|
|
18
|
+
* the boundary differ.
|
|
19
|
+
*/
|
|
20
|
+
export type ValuedStream<V> = Iterable<Valued<V>>;
|
|
21
|
+
/**
|
|
22
|
+
* Two streams laid over one another, with `merge` settling the overlap.
|
|
23
|
+
*
|
|
24
|
+
* Where only one covers a moment, its value comes through. Where both do, the
|
|
25
|
+
* two values go to `merge`, `under` first. Where neither does, the moment is
|
|
26
|
+
* absent, the same as everywhere else in the library.
|
|
27
|
+
*
|
|
28
|
+
* It walks both fronts and cuts whichever runs on at the other's boundary, so
|
|
29
|
+
* it pulls only as far as the next piece of the answer and stays lazy over
|
|
30
|
+
* endless sources.
|
|
31
|
+
*
|
|
32
|
+
* Output is not coalesced. Cutting at every boundary splits runs carrying the
|
|
33
|
+
* same value on both sides, and {@link coalesce} over the top puts them back.
|
|
34
|
+
* Teaching this sweep to look ahead instead would buy nothing.
|
|
35
|
+
*/
|
|
36
|
+
export declare function overlay<V>(under: ValuedStream<V>, over: ValuedStream<V>, merge: Merge<V>): ValuedStream<V>;
|
|
37
|
+
/**
|
|
38
|
+
* Adjacent intervals carrying the same value are one interval.
|
|
39
|
+
*
|
|
40
|
+
* Without this, a run that happens to be split across two layers comes back as
|
|
41
|
+
* two touching intervals with equal values — the same assignment said twice,
|
|
42
|
+
* and a stream that no longer satisfies the coalesced contract the rest of the
|
|
43
|
+
* library keeps.
|
|
44
|
+
*
|
|
45
|
+
* Sameness is `Object.is`, so primitives and shared references merge while
|
|
46
|
+
* structurally-equal objects do not. That is the conservative way round: it
|
|
47
|
+
* splits an interval that could have been merged rather than merging two the
|
|
48
|
+
* caller meant to keep apart.
|
|
49
|
+
*/
|
|
50
|
+
export declare function coalesce<V>(source: ValuedStream<V>): ValuedStream<V>;
|
|
51
|
+
//# sourceMappingURL=valued-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valued-stream.d.ts","sourceRoot":"","sources":["../src/valued-stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGxC;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAElD;;;;;;;;;;;;;;GAcG;AACH,wBAAiB,OAAO,CAAC,CAAC,EACxB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EACtB,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EACrB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GACd,YAAY,CAAC,CAAC,CAAC,CAsDjB;AA+CD;;;;;;;;;;;;GAYG;AACH,wBAAiB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAmBrE"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Streams of intervals that carry values, and the operations resolution needs
|
|
3
|
+
* over them.
|
|
4
|
+
*
|
|
5
|
+
* The same shape as `interval-stream.ts` one level down, and deliberately
|
|
6
|
+
* separate from it. Those sweeps are set algebra over *when*, and nothing in
|
|
7
|
+
* them has an opinion about values. {@link overlay} is where an opinion is
|
|
8
|
+
* needed, and it is handed one rather than choosing.
|
|
9
|
+
*/
|
|
10
|
+
import { compareEnds, compareStarts, earlierEnd } from "./interval.js";
|
|
11
|
+
import { peekable } from "./stream.js";
|
|
12
|
+
/**
|
|
13
|
+
* Two streams laid over one another, with `merge` settling the overlap.
|
|
14
|
+
*
|
|
15
|
+
* Where only one covers a moment, its value comes through. Where both do, the
|
|
16
|
+
* two values go to `merge`, `under` first. Where neither does, the moment is
|
|
17
|
+
* absent, the same as everywhere else in the library.
|
|
18
|
+
*
|
|
19
|
+
* It walks both fronts and cuts whichever runs on at the other's boundary, so
|
|
20
|
+
* it pulls only as far as the next piece of the answer and stays lazy over
|
|
21
|
+
* endless sources.
|
|
22
|
+
*
|
|
23
|
+
* Output is not coalesced. Cutting at every boundary splits runs carrying the
|
|
24
|
+
* same value on both sides, and {@link coalesce} over the top puts them back.
|
|
25
|
+
* Teaching this sweep to look ahead instead would buy nothing.
|
|
26
|
+
*/
|
|
27
|
+
export function* overlay(under, over, merge) {
|
|
28
|
+
const a = peekable(under);
|
|
29
|
+
const b = peekable(over);
|
|
30
|
+
// What is left of each front interval. A stretch already yielded is cut off
|
|
31
|
+
// the front rather than yielded twice, which is what keeps this to one pass
|
|
32
|
+
// over sources that can only be read forwards.
|
|
33
|
+
let restA = a.peek();
|
|
34
|
+
let restB = b.peek();
|
|
35
|
+
for (;;) {
|
|
36
|
+
if (restA === undefined || restB === undefined) {
|
|
37
|
+
yield* remainder(restA ?? restB, restA === undefined ? b : a);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const order = compareStarts(restA.start, restB.start);
|
|
41
|
+
if (order === 0) {
|
|
42
|
+
// Both cover the stretch up to whichever ends first, and that stretch is
|
|
43
|
+
// the only place `merge` is ever called.
|
|
44
|
+
const end = earlierEnd(restA.end, restB.end);
|
|
45
|
+
yield { start: restA.start, end, value: merge(restA.value, restB.value) };
|
|
46
|
+
const cutA = cut(restA, end, a);
|
|
47
|
+
restB = cut(restB, end, b);
|
|
48
|
+
restA = cutA;
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
// One of them starts first and holds alone until the other begins. Its own
|
|
52
|
+
// end may come first, in which case the whole of it stands alone.
|
|
53
|
+
if (order < 0) {
|
|
54
|
+
const boundary = restB.start;
|
|
55
|
+
if (compareEnds(restA.end, boundary) <= 0) {
|
|
56
|
+
yield restA;
|
|
57
|
+
a.drop();
|
|
58
|
+
restA = a.peek();
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
yield { start: restA.start, end: boundary, value: restA.value };
|
|
62
|
+
restA = { ...restA, start: boundary };
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
const boundary = restA.start;
|
|
66
|
+
if (compareEnds(restB.end, boundary) <= 0) {
|
|
67
|
+
yield restB;
|
|
68
|
+
b.drop();
|
|
69
|
+
restB = b.peek();
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
yield { start: restB.start, end: boundary, value: restB.value };
|
|
73
|
+
restB = { ...restB, start: boundary };
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Whatever is left of one side once the other is spent, beginning with the
|
|
78
|
+
* piece already in hand.
|
|
79
|
+
*
|
|
80
|
+
* That piece may have been cut short, so it is yielded from the local rather
|
|
81
|
+
* than read again from the source, and the source's own copy of it dropped.
|
|
82
|
+
*/
|
|
83
|
+
function* remainder(held, source) {
|
|
84
|
+
if (held === undefined) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
yield held;
|
|
88
|
+
source.drop();
|
|
89
|
+
for (;;) {
|
|
90
|
+
const next = source.peek();
|
|
91
|
+
if (next === undefined) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
source.drop();
|
|
95
|
+
yield next;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* What is left of an interval once the stretch up to `end` has been yielded.
|
|
100
|
+
*
|
|
101
|
+
* An interval used up entirely is dropped and the next one pulled, so the
|
|
102
|
+
* front always holds something still to yield.
|
|
103
|
+
*/
|
|
104
|
+
function cut(interval, end, source) {
|
|
105
|
+
if (end === undefined || compareEnds(interval.end, end) <= 0) {
|
|
106
|
+
source.drop();
|
|
107
|
+
return source.peek();
|
|
108
|
+
}
|
|
109
|
+
return { ...interval, start: end };
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Adjacent intervals carrying the same value are one interval.
|
|
113
|
+
*
|
|
114
|
+
* Without this, a run that happens to be split across two layers comes back as
|
|
115
|
+
* two touching intervals with equal values — the same assignment said twice,
|
|
116
|
+
* and a stream that no longer satisfies the coalesced contract the rest of the
|
|
117
|
+
* library keeps.
|
|
118
|
+
*
|
|
119
|
+
* Sameness is `Object.is`, so primitives and shared references merge while
|
|
120
|
+
* structurally-equal objects do not. That is the conservative way round: it
|
|
121
|
+
* splits an interval that could have been merged rather than merging two the
|
|
122
|
+
* caller meant to keep apart.
|
|
123
|
+
*/
|
|
124
|
+
export function* coalesce(source) {
|
|
125
|
+
let open;
|
|
126
|
+
for (const next of source) {
|
|
127
|
+
if (open === undefined) {
|
|
128
|
+
open = next;
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
if (Object.is(open.value, next.value) && touches(open, next)) {
|
|
132
|
+
open = { ...open, end: next.end };
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
yield open;
|
|
136
|
+
open = next;
|
|
137
|
+
}
|
|
138
|
+
if (open !== undefined) {
|
|
139
|
+
yield open;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/** Whether one interval ends exactly where the next begins. */
|
|
143
|
+
function touches(open, next) {
|
|
144
|
+
return (open.end !== undefined &&
|
|
145
|
+
next.start !== undefined &&
|
|
146
|
+
Temporal.ZonedDateTime.compare(open.end, next.start) === 0);
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=valued-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valued-stream.js","sourceRoot":"","sources":["../src/valued-stream.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kensio/quando",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Declarative temporal rules for schedules, deadlines, constraints, and exceptions",
|
|
5
|
-
"repository":
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/KensioSoftware/quando"
|
|
8
|
+
},
|
|
6
9
|
"homepage": "https://quandojs.dev",
|
|
7
10
|
"bugs": "https://github.com/KensioSoftware/quando/issues",
|
|
8
11
|
"main": "./dist/index.js",
|
|
@@ -23,25 +26,11 @@
|
|
|
23
26
|
"imports": {
|
|
24
27
|
"#test/*": "./test/*"
|
|
25
28
|
},
|
|
26
|
-
"packageManager": "pnpm@11.21.0+sha512.521705bce689924eac72f5a3587122f362689ef6571e55ba80076fd637c11132ecffada26fad4ea79c485bfddbfd3d5a2a5b05805a77e893de71ec8a6cca3bb1",
|
|
27
29
|
"engines": {
|
|
28
30
|
"node": ">=26.0.0"
|
|
29
31
|
},
|
|
30
|
-
"scripts": {
|
|
31
|
-
"build": "rm -rf dist && tsc -p tsconfig.build.json",
|
|
32
|
-
"prepack": "pnpm build",
|
|
33
|
-
"build:check": "tsc -p tsconfig.json --noEmit",
|
|
34
|
-
"fmt": "oxlint --fix . && oxfmt .",
|
|
35
|
-
"lint": "oxlint . && oxfmt --check .",
|
|
36
|
-
"lint:ci": "oxlint --format=github . && oxfmt --check .",
|
|
37
|
-
"docs:check": "./scripts/sh/docs-check.sh",
|
|
38
|
-
"fta": "./scripts/sh/fta.sh",
|
|
39
|
-
"test": "vitest run",
|
|
40
|
-
"test:coverage": "vitest run --coverage",
|
|
41
|
-
"pack:check": "./scripts/sh/pack-check.sh",
|
|
42
|
-
"check": "pnpm fmt && pnpm docs:check && pnpm fta && pnpm build:check && pnpm pack:check && pnpm test:coverage"
|
|
43
|
-
},
|
|
44
32
|
"devDependencies": {
|
|
33
|
+
"@faker-js/faker": "^10.6.0",
|
|
45
34
|
"@kensio/smartass": "^1.33.0",
|
|
46
35
|
"@semantic-release/exec": "7.1.0",
|
|
47
36
|
"@types/node": "^26.0.0",
|
|
@@ -49,7 +38,7 @@
|
|
|
49
38
|
"@vitest/coverage-v8": "^4.1.10",
|
|
50
39
|
"conventional-changelog-conventionalcommits": "9.3.1",
|
|
51
40
|
"fta-cli": "^3.0.0",
|
|
52
|
-
"oxfmt": "^0.
|
|
41
|
+
"oxfmt": "^0.65.0",
|
|
53
42
|
"oxlint": "^1.77.0",
|
|
54
43
|
"oxlint-tsgolint": "^7.0.2001",
|
|
55
44
|
"semantic-release": "25.0.9",
|
|
@@ -67,5 +56,18 @@
|
|
|
67
56
|
},
|
|
68
57
|
"author": "Kensio Software",
|
|
69
58
|
"license": "Apache-2.0",
|
|
70
|
-
"type": "module"
|
|
71
|
-
|
|
59
|
+
"type": "module",
|
|
60
|
+
"scripts": {
|
|
61
|
+
"build": "rm -rf dist && tsc -p tsconfig.build.json",
|
|
62
|
+
"build:check": "tsc -p tsconfig.json --noEmit",
|
|
63
|
+
"fmt": "oxlint --fix . && oxfmt .",
|
|
64
|
+
"lint": "oxlint . && oxfmt --check .",
|
|
65
|
+
"lint:ci": "oxlint --format=github . && oxfmt --check .",
|
|
66
|
+
"docs:check": "./scripts/sh/docs-check.sh",
|
|
67
|
+
"fta": "./scripts/sh/fta.sh",
|
|
68
|
+
"test": "vitest run",
|
|
69
|
+
"test:coverage": "vitest run --coverage",
|
|
70
|
+
"pack:check": "./scripts/sh/pack-check.sh",
|
|
71
|
+
"check": "pnpm fmt && pnpm docs:check && pnpm fta && pnpm build:check && pnpm pack:check && pnpm test:coverage"
|
|
72
|
+
}
|
|
73
|
+
}
|