placementt-core 1.400.1104 → 1.400.1106
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/lib/callables/registry.d.ts +0 -56
- package/lib/callables/surveys.d.ts +0 -30
- package/lib/callables/surveys.js +0 -14
- package/lib/callables/surveys.js.map +1 -1
- package/lib/surveys/evidence.js +26 -1
- package/lib/surveys/evidence.js.map +1 -1
- package/lib/surveys/evidence.test.js +30 -0
- package/lib/surveys/evidence.test.js.map +1 -1
- package/package.json +1 -1
- package/src/callables/surveys.ts +0 -14
- package/src/surveys/evidence.test.ts +33 -0
- package/src/surveys/evidence.ts +28 -1
|
@@ -884,34 +884,6 @@ export declare const allCallables: {
|
|
|
884
884
|
resolvedCount?: number | undefined;
|
|
885
885
|
}>;
|
|
886
886
|
};
|
|
887
|
-
"surveys-setSurveySendPolicy": {
|
|
888
|
-
request: z.ZodObject<{
|
|
889
|
-
oId: z.ZodString;
|
|
890
|
-
kind: z.ZodEnum<[string, ...string[]]>;
|
|
891
|
-
policy: z.ZodEnum<["auto", "manual"]>;
|
|
892
|
-
}, "strip", z.ZodTypeAny, {
|
|
893
|
-
oId: string;
|
|
894
|
-
kind: string;
|
|
895
|
-
policy: "auto" | "manual";
|
|
896
|
-
}, {
|
|
897
|
-
oId: string;
|
|
898
|
-
kind: string;
|
|
899
|
-
policy: "auto" | "manual";
|
|
900
|
-
}>;
|
|
901
|
-
response: z.ZodObject<{
|
|
902
|
-
oId: z.ZodString;
|
|
903
|
-
kind: z.ZodEnum<[string, ...string[]]>;
|
|
904
|
-
policy: z.ZodEnum<["auto", "manual"]>;
|
|
905
|
-
}, "strip", z.ZodTypeAny, {
|
|
906
|
-
oId: string;
|
|
907
|
-
kind: string;
|
|
908
|
-
policy: "auto" | "manual";
|
|
909
|
-
}, {
|
|
910
|
-
oId: string;
|
|
911
|
-
kind: string;
|
|
912
|
-
policy: "auto" | "manual";
|
|
913
|
-
}>;
|
|
914
|
-
};
|
|
915
887
|
"surveys-provisionSurveysNow": {
|
|
916
888
|
request: z.ZodObject<{
|
|
917
889
|
oId: z.ZodString;
|
|
@@ -1564,34 +1536,6 @@ export declare const callableGroups: {
|
|
|
1564
1536
|
resolvedCount?: number | undefined;
|
|
1565
1537
|
}>;
|
|
1566
1538
|
};
|
|
1567
|
-
"surveys-setSurveySendPolicy": {
|
|
1568
|
-
request: z.ZodObject<{
|
|
1569
|
-
oId: z.ZodString;
|
|
1570
|
-
kind: z.ZodEnum<[string, ...string[]]>;
|
|
1571
|
-
policy: z.ZodEnum<["auto", "manual"]>;
|
|
1572
|
-
}, "strip", z.ZodTypeAny, {
|
|
1573
|
-
oId: string;
|
|
1574
|
-
kind: string;
|
|
1575
|
-
policy: "auto" | "manual";
|
|
1576
|
-
}, {
|
|
1577
|
-
oId: string;
|
|
1578
|
-
kind: string;
|
|
1579
|
-
policy: "auto" | "manual";
|
|
1580
|
-
}>;
|
|
1581
|
-
response: z.ZodObject<{
|
|
1582
|
-
oId: z.ZodString;
|
|
1583
|
-
kind: z.ZodEnum<[string, ...string[]]>;
|
|
1584
|
-
policy: z.ZodEnum<["auto", "manual"]>;
|
|
1585
|
-
}, "strip", z.ZodTypeAny, {
|
|
1586
|
-
oId: string;
|
|
1587
|
-
kind: string;
|
|
1588
|
-
policy: "auto" | "manual";
|
|
1589
|
-
}, {
|
|
1590
|
-
oId: string;
|
|
1591
|
-
kind: string;
|
|
1592
|
-
policy: "auto" | "manual";
|
|
1593
|
-
}>;
|
|
1594
|
-
};
|
|
1595
1539
|
"surveys-provisionSurveysNow": {
|
|
1596
1540
|
request: z.ZodObject<{
|
|
1597
1541
|
oId: z.ZodString;
|
|
@@ -409,36 +409,6 @@ export declare const surveyCallables: {
|
|
|
409
409
|
resolvedCount?: number | undefined;
|
|
410
410
|
}>;
|
|
411
411
|
};
|
|
412
|
-
"surveys-setSurveySendPolicy": {
|
|
413
|
-
request: z.ZodObject<{
|
|
414
|
-
oId: z.ZodString;
|
|
415
|
-
kind: z.ZodEnum<[string, ...string[]]>;
|
|
416
|
-
/** "manual" leaves the cycle scheduled but stops the cron sending it, and
|
|
417
|
-
* emails the cycle's owner on the day instead. */
|
|
418
|
-
policy: z.ZodEnum<["auto", "manual"]>;
|
|
419
|
-
}, "strip", z.ZodTypeAny, {
|
|
420
|
-
oId: string;
|
|
421
|
-
kind: string;
|
|
422
|
-
policy: "auto" | "manual";
|
|
423
|
-
}, {
|
|
424
|
-
oId: string;
|
|
425
|
-
kind: string;
|
|
426
|
-
policy: "auto" | "manual";
|
|
427
|
-
}>;
|
|
428
|
-
response: z.ZodObject<{
|
|
429
|
-
oId: z.ZodString;
|
|
430
|
-
kind: z.ZodEnum<[string, ...string[]]>;
|
|
431
|
-
policy: z.ZodEnum<["auto", "manual"]>;
|
|
432
|
-
}, "strip", z.ZodTypeAny, {
|
|
433
|
-
oId: string;
|
|
434
|
-
kind: string;
|
|
435
|
-
policy: "auto" | "manual";
|
|
436
|
-
}, {
|
|
437
|
-
oId: string;
|
|
438
|
-
kind: string;
|
|
439
|
-
policy: "auto" | "manual";
|
|
440
|
-
}>;
|
|
441
|
-
};
|
|
442
412
|
"surveys-provisionSurveysNow": {
|
|
443
413
|
request: z.ZodObject<{
|
|
444
414
|
oId: z.ZodString;
|
package/lib/callables/surveys.js
CHANGED
|
@@ -169,20 +169,6 @@ exports.surveyCallables = {
|
|
|
169
169
|
resolvedCount: zod_1.z.number().optional(),
|
|
170
170
|
}),
|
|
171
171
|
},
|
|
172
|
-
"surveys-setSurveySendPolicy": {
|
|
173
|
-
request: zod_1.z.object({
|
|
174
|
-
oId: zod_1.z.string(),
|
|
175
|
-
kind: surveyKind,
|
|
176
|
-
/** "manual" leaves the cycle scheduled but stops the cron sending it, and
|
|
177
|
-
* emails the cycle's owner on the day instead. */
|
|
178
|
-
policy: zod_1.z.enum(["auto", "manual"]),
|
|
179
|
-
}),
|
|
180
|
-
response: zod_1.z.object({
|
|
181
|
-
oId: zod_1.z.string(),
|
|
182
|
-
kind: surveyKind,
|
|
183
|
-
policy: zod_1.z.enum(["auto", "manual"]),
|
|
184
|
-
}),
|
|
185
|
-
},
|
|
186
172
|
"surveys-provisionSurveysNow": {
|
|
187
173
|
request: zod_1.z.object({
|
|
188
174
|
oId: zod_1.z.string(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surveys.js","sourceRoot":"","sources":["../../src/callables/surveys.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"surveys.js","sourceRoot":"","sources":["../../src/callables/surveys.ts"],"names":[],"mappings":"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"}
|
package/lib/surveys/evidence.js
CHANGED
|
@@ -31,6 +31,31 @@ const timeOf = (value) => {
|
|
|
31
31
|
const time = new Date(value).getTime();
|
|
32
32
|
return Number.isNaN(time) ? undefined : time;
|
|
33
33
|
};
|
|
34
|
+
/** A day with no time on it, e.g. "2026-09-20". */
|
|
35
|
+
const DATE_ONLY = /^\d{4}-\d{2}-\d{2}$/;
|
|
36
|
+
const DAY = 24 * 60 * 60 * 1000;
|
|
37
|
+
/**
|
|
38
|
+
* One piece of evidence as a moment to compare against the ask.
|
|
39
|
+
*
|
|
40
|
+
* Not every record carries a timestamp. An activity's `dateCreated` is written as a
|
|
41
|
+
* day, and a day read as midnight throws away the whole of the day the ask went out
|
|
42
|
+
* on: a pupil asked at 08:00 who logs something at 10:00 would go on being asked
|
|
43
|
+
* until tomorrow, which is exactly the nag the task exists to stop.
|
|
44
|
+
*
|
|
45
|
+
* So a day-stamped record counts at the END of its day. The cost is that something
|
|
46
|
+
* logged earlier on the morning of the ask counts too, which is the right way round
|
|
47
|
+
* to be wrong: it is the pupil's own day's work either way, and the alternative is
|
|
48
|
+
* telling them they have not done the thing they have just done.
|
|
49
|
+
*
|
|
50
|
+
* @param {string} [value] the stored date.
|
|
51
|
+
* @return {number|undefined} the moment to compare, or nothing when unparseable.
|
|
52
|
+
*/
|
|
53
|
+
const evidenceTime = (value) => {
|
|
54
|
+
const time = timeOf(value);
|
|
55
|
+
if (time === undefined)
|
|
56
|
+
return undefined;
|
|
57
|
+
return DATE_ONLY.test(value) ? time + DAY - 1 : time;
|
|
58
|
+
};
|
|
34
59
|
/**
|
|
35
60
|
* The dates one source's evidence carries, unfiltered and unsorted.
|
|
36
61
|
*
|
|
@@ -69,7 +94,7 @@ const evaluateSurveyEvidence = (args) => {
|
|
|
69
94
|
const asked = Math.max(1, Math.floor(args.minimum ?? rule.minimum ?? 1));
|
|
70
95
|
const from = timeOf(sentAt);
|
|
71
96
|
const qualifying = (0, exports.surveyEvidenceDates)(rule.source, evidence)
|
|
72
|
-
.map((date) => ({ date, time:
|
|
97
|
+
.map((date) => ({ date, time: evidenceTime(date) }))
|
|
73
98
|
.filter((e) => e.time !== undefined && (from === undefined || e.time >= from))
|
|
74
99
|
.sort((a, b) => a.time - b.time);
|
|
75
100
|
const satisfied = qualifying.length >= asked;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/surveys/evidence.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;AAGH,yCAAwC;AA6BxC,oFAAoF;AACpF,MAAM,MAAM,GAAG,CAAC,KAAc,EAAoB,EAAE;IAChD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IACvC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC,CAAC;AAEF;;;;;;GAMG;AACI,MAAM,mBAAmB,GAAG,CAC/B,MAA4B,EAAE,QAAwB,EAC9C,EAAE;IACV,IAAI,MAAM,KAAK,mBAAmB,EAAE,CAAC;QACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;aAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,WAAW,CAAC;aAClD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAqB,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,KAAK,uBAAuB,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;IACpG,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;SAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC;SACpB,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5D,CAAC,CAAC;AAZW,QAAA,mBAAmB,uBAY9B;AAEF;;;;;;;;;;GAUG;AACI,MAAM,sBAAsB,GAAG,CAAC,IAQtC,EAAwB,EAAE;IACvB,MAAM,EAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAC,GAAG,IAAI,CAAC;IACtC,4EAA4E;IAC5E,gFAAgF;IAChF,uCAAuC;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAE5B,MAAM,UAAU,GAAG,IAAA,2BAAmB,EAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC;SACxD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/surveys/evidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,6 +65,36 @@ describe("evaluateSurveyEvidence", () => {
|
|
|
65
65
|
});
|
|
66
66
|
expect(result).toMatchObject({ count: 1, satisfied: true, satisfiedAt: SENT });
|
|
67
67
|
});
|
|
68
|
+
/**
|
|
69
|
+
* An activity's `dateCreated` is a day, not a timestamp — see the web's
|
|
70
|
+
* CreateStudentActivity, which writes it through convertDate's "dbstring". Read
|
|
71
|
+
* as midnight it loses the day of the ask, and a pupil who logs something the
|
|
72
|
+
* same morning they are emailed goes on being chased until tomorrow.
|
|
73
|
+
*/
|
|
74
|
+
it("counts a day-stamped record logged on the day of the ask", () => {
|
|
75
|
+
const result = (0, evidence_1.evaluateSurveyEvidence)({
|
|
76
|
+
rule: activitiesRule,
|
|
77
|
+
sentAt: SENT,
|
|
78
|
+
evidence: { activities: [{ dateCreated: "2026-10-01" }] },
|
|
79
|
+
});
|
|
80
|
+
expect(result).toMatchObject({ count: 1, satisfied: true, satisfiedAt: "2026-10-01" });
|
|
81
|
+
});
|
|
82
|
+
it("still ignores a day-stamped record from before the ask", () => {
|
|
83
|
+
expect((0, evidence_1.evaluateSurveyEvidence)({
|
|
84
|
+
rule: activitiesRule,
|
|
85
|
+
sentAt: SENT,
|
|
86
|
+
evidence: { activities: [{ dateCreated: "2026-09-30" }] },
|
|
87
|
+
})).toMatchObject({ count: 0, satisfied: false });
|
|
88
|
+
});
|
|
89
|
+
it("takes a timestamp on the day of the ask at its own time", () => {
|
|
90
|
+
// Only a date-only value is stretched across its day; something that says
|
|
91
|
+
// what time it happened is taken at its word.
|
|
92
|
+
expect((0, evidence_1.evaluateSurveyEvidence)({
|
|
93
|
+
rule: activitiesRule,
|
|
94
|
+
sentAt: SENT,
|
|
95
|
+
evidence: { activities: [{ dateCreated: "2026-10-01T07:00:00.000Z" }] },
|
|
96
|
+
})).toMatchObject({ count: 0, satisfied: false });
|
|
97
|
+
});
|
|
68
98
|
it("honours a per-launch minimum over the kind's own", () => {
|
|
69
99
|
const evidence = { savedNextSteps: entries(AFTER, LATER) };
|
|
70
100
|
expect((0, evidence_1.evaluateSurveyEvidence)({ rule: nextStepsRule, sentAt: SENT, evidence }).satisfied).toBe(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.test.js","sourceRoot":"","sources":["../../src/surveys/evidence.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"evidence.test.js","sourceRoot":"","sources":["../../src/surveys/evidence.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/callables/surveys.ts
CHANGED
|
@@ -171,20 +171,6 @@ export const surveyCallables = {
|
|
|
171
171
|
resolvedCount: z.number().optional(),
|
|
172
172
|
}),
|
|
173
173
|
},
|
|
174
|
-
"surveys-setSurveySendPolicy": {
|
|
175
|
-
request: z.object({
|
|
176
|
-
oId: z.string(),
|
|
177
|
-
kind: surveyKind,
|
|
178
|
-
/** "manual" leaves the cycle scheduled but stops the cron sending it, and
|
|
179
|
-
* emails the cycle's owner on the day instead. */
|
|
180
|
-
policy: z.enum(["auto", "manual"]),
|
|
181
|
-
}),
|
|
182
|
-
response: z.object({
|
|
183
|
-
oId: z.string(),
|
|
184
|
-
kind: surveyKind,
|
|
185
|
-
policy: z.enum(["auto", "manual"]),
|
|
186
|
-
}),
|
|
187
|
-
},
|
|
188
174
|
"surveys-provisionSurveysNow": {
|
|
189
175
|
request: z.object({
|
|
190
176
|
oId: z.string(),
|
|
@@ -81,6 +81,39 @@ describe("evaluateSurveyEvidence", () => {
|
|
|
81
81
|
expect(result).toMatchObject({count: 1, satisfied: true, satisfiedAt: SENT});
|
|
82
82
|
});
|
|
83
83
|
|
|
84
|
+
/**
|
|
85
|
+
* An activity's `dateCreated` is a day, not a timestamp — see the web's
|
|
86
|
+
* CreateStudentActivity, which writes it through convertDate's "dbstring". Read
|
|
87
|
+
* as midnight it loses the day of the ask, and a pupil who logs something the
|
|
88
|
+
* same morning they are emailed goes on being chased until tomorrow.
|
|
89
|
+
*/
|
|
90
|
+
it("counts a day-stamped record logged on the day of the ask", () => {
|
|
91
|
+
const result = evaluateSurveyEvidence({
|
|
92
|
+
rule: activitiesRule,
|
|
93
|
+
sentAt: SENT,
|
|
94
|
+
evidence: {activities: [{dateCreated: "2026-10-01"}]},
|
|
95
|
+
});
|
|
96
|
+
expect(result).toMatchObject({count: 1, satisfied: true, satisfiedAt: "2026-10-01"});
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
it("still ignores a day-stamped record from before the ask", () => {
|
|
100
|
+
expect(evaluateSurveyEvidence({
|
|
101
|
+
rule: activitiesRule,
|
|
102
|
+
sentAt: SENT,
|
|
103
|
+
evidence: {activities: [{dateCreated: "2026-09-30"}]},
|
|
104
|
+
})).toMatchObject({count: 0, satisfied: false});
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
it("takes a timestamp on the day of the ask at its own time", () => {
|
|
108
|
+
// Only a date-only value is stretched across its day; something that says
|
|
109
|
+
// what time it happened is taken at its word.
|
|
110
|
+
expect(evaluateSurveyEvidence({
|
|
111
|
+
rule: activitiesRule,
|
|
112
|
+
sentAt: SENT,
|
|
113
|
+
evidence: {activities: [{dateCreated: "2026-10-01T07:00:00.000Z"}]},
|
|
114
|
+
})).toMatchObject({count: 0, satisfied: false});
|
|
115
|
+
});
|
|
116
|
+
|
|
84
117
|
it("honours a per-launch minimum over the kind's own", () => {
|
|
85
118
|
const evidence = {savedNextSteps: entries(AFTER, LATER)};
|
|
86
119
|
expect(evaluateSurveyEvidence({rule: nextStepsRule, sentAt: SENT, evidence}).satisfied).toBe(false);
|
package/src/surveys/evidence.ts
CHANGED
|
@@ -58,6 +58,33 @@ const timeOf = (value?: string): number|undefined => {
|
|
|
58
58
|
return Number.isNaN(time) ? undefined : time;
|
|
59
59
|
};
|
|
60
60
|
|
|
61
|
+
/** A day with no time on it, e.g. "2026-09-20". */
|
|
62
|
+
const DATE_ONLY = /^\d{4}-\d{2}-\d{2}$/;
|
|
63
|
+
|
|
64
|
+
const DAY = 24 * 60 * 60 * 1000;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* One piece of evidence as a moment to compare against the ask.
|
|
68
|
+
*
|
|
69
|
+
* Not every record carries a timestamp. An activity's `dateCreated` is written as a
|
|
70
|
+
* day, and a day read as midnight throws away the whole of the day the ask went out
|
|
71
|
+
* on: a pupil asked at 08:00 who logs something at 10:00 would go on being asked
|
|
72
|
+
* until tomorrow, which is exactly the nag the task exists to stop.
|
|
73
|
+
*
|
|
74
|
+
* So a day-stamped record counts at the END of its day. The cost is that something
|
|
75
|
+
* logged earlier on the morning of the ask counts too, which is the right way round
|
|
76
|
+
* to be wrong: it is the pupil's own day's work either way, and the alternative is
|
|
77
|
+
* telling them they have not done the thing they have just done.
|
|
78
|
+
*
|
|
79
|
+
* @param {string} [value] the stored date.
|
|
80
|
+
* @return {number|undefined} the moment to compare, or nothing when unparseable.
|
|
81
|
+
*/
|
|
82
|
+
const evidenceTime = (value?: string): number|undefined => {
|
|
83
|
+
const time = timeOf(value);
|
|
84
|
+
if (time === undefined) return undefined;
|
|
85
|
+
return DATE_ONLY.test(value as string) ? time + DAY - 1 : time;
|
|
86
|
+
};
|
|
87
|
+
|
|
61
88
|
/**
|
|
62
89
|
* The dates one source's evidence carries, unfiltered and unsorted.
|
|
63
90
|
*
|
|
@@ -107,7 +134,7 @@ export const evaluateSurveyEvidence = (args: {
|
|
|
107
134
|
const from = timeOf(sentAt);
|
|
108
135
|
|
|
109
136
|
const qualifying = surveyEvidenceDates(rule.source, evidence)
|
|
110
|
-
.map((date) => ({date, time:
|
|
137
|
+
.map((date) => ({date, time: evidenceTime(date)}))
|
|
111
138
|
.filter((e): e is {date: string, time: number} =>
|
|
112
139
|
e.time !== undefined && (from === undefined || e.time >= from))
|
|
113
140
|
.sort((a, b) => a.time - b.time);
|