@qcobro/common 1.12.4 → 1.13.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/dist/bin/engineEval.d.ts +67 -0
- package/dist/bin/engineEval.d.ts.map +1 -0
- package/dist/bin/engineEval.js +290 -0
- package/dist/bin/engineEval.js.map +1 -0
- package/dist/config.d.ts +2 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -2
- package/dist/config.js.map +1 -1
- package/dist/evaluation/evaluate.d.ts +4 -0
- package/dist/evaluation/evaluate.d.ts.map +1 -0
- package/dist/evaluation/evaluate.js +504 -0
- package/dist/evaluation/evaluate.js.map +1 -0
- package/dist/evaluation/index.d.ts +3 -0
- package/dist/evaluation/index.d.ts.map +1 -0
- package/dist/evaluation/index.js +3 -0
- package/dist/evaluation/index.js.map +1 -0
- package/dist/evaluation/scorecard.d.ts +84 -0
- package/dist/evaluation/scorecard.d.ts.map +1 -0
- package/dist/evaluation/scorecard.js +29 -0
- package/dist/evaluation/scorecard.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/schemas/engineEvents.d.ts +407 -0
- package/dist/schemas/engineEvents.d.ts.map +1 -0
- package/dist/schemas/engineEvents.js +179 -0
- package/dist/schemas/engineEvents.js.map +1 -0
- package/dist/schemas/index.d.ts +1 -0
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +1 -0
- package/dist/schemas/index.js.map +1 -1
- package/dist/types/engine.d.ts +5 -0
- package/dist/types/engine.d.ts.map +1 -1
- package/dist/utils/index.d.ts +2 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/pacing.d.ts +17 -0
- package/dist/utils/pacing.d.ts.map +1 -0
- package/dist/utils/pacing.js +18 -0
- package/dist/utils/pacing.js.map +1 -0
- package/dist/utils/time.d.ts +16 -0
- package/dist/utils/time.d.ts.map +1 -1
- package/dist/utils/time.js +17 -0
- package/dist/utils/time.js.map +1 -1
- package/package.json +4 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC"}
|
package/dist/schemas/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC"}
|
package/dist/types/engine.d.ts
CHANGED
|
@@ -46,5 +46,10 @@ export interface TickReport {
|
|
|
46
46
|
at: string;
|
|
47
47
|
campaigns: CampaignTickReport[];
|
|
48
48
|
channelUsage: Partial<Record<EngineChannel, ChannelUsage>>;
|
|
49
|
+
/**
|
|
50
|
+
* Flight-recorder events collected during the tick (engine-events capability).
|
|
51
|
+
* The runner flushes them to the configured sink, best-effort, after the tick.
|
|
52
|
+
*/
|
|
53
|
+
events?: import("../schemas/engineEvents.js").EngineEvent[];
|
|
49
54
|
}
|
|
50
55
|
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/types/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,oFAAoF;AACpF,MAAM,WAAW,KAAK;IACpB,GAAG,IAAI,IAAI,CAAC;CACb;AAED,iFAAiF;AACjF,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,mBAAmB,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC;AAE5F,0DAA0D;AAC1D,MAAM,MAAM,kBAAkB,GAC1B,YAAY,GACZ,eAAe,GACf,wBAAwB,GACxB,uBAAuB,GACvB,mBAAmB,GACnB,kBAAkB,CAAC;AAEvB,iEAAiE;AACjE,MAAM,MAAM,eAAe,GACvB,YAAY,GACZ,iBAAiB,GACjB,UAAU,GACV,UAAU,GACV,mBAAmB,GACnB,oBAAoB,GACpB,oBAAoB,GACpB,cAAc,GACd,WAAW,GACX,kBAAkB,CAAC;AAEvB,2CAA2C;AAC3C,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,eAAe,CAAC;IAC1B,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,+CAA+C;AAC/C,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,yEAAyE;IACzE,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,iDAAiD;AACjD,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,oFAAoF;AACpF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/types/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,oFAAoF;AACpF,MAAM,WAAW,KAAK;IACpB,GAAG,IAAI,IAAI,CAAC;CACb;AAED,iFAAiF;AACjF,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,mBAAmB,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC;AAE5F,0DAA0D;AAC1D,MAAM,MAAM,kBAAkB,GAC1B,YAAY,GACZ,eAAe,GACf,wBAAwB,GACxB,uBAAuB,GACvB,mBAAmB,GACnB,kBAAkB,CAAC;AAEvB,iEAAiE;AACjE,MAAM,MAAM,eAAe,GACvB,YAAY,GACZ,iBAAiB,GACjB,UAAU,GACV,UAAU,GACV,mBAAmB,GACnB,oBAAoB,GACpB,oBAAoB,GACpB,cAAc,GACd,WAAW,GACX,kBAAkB,CAAC;AAEvB,2CAA2C;AAC3C,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,eAAe,CAAC;IAC1B,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,+CAA+C;AAC/C,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,yEAAyE;IACzE,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,iDAAiD;AACjD,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,oFAAoF;AACpF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;IAC3D;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,4BAA4B,EAAE,WAAW,EAAE,CAAC;CAC7D"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { withErrorHandlingAndValidation } from "./withErrorHandlingAndValidation.js";
|
|
2
2
|
export { renderTemplate, extractTemplateTokens, buildOutreachContext, pickRandomNumber } from "./outreach.js";
|
|
3
|
-
export { localParts, localDateString, isSameLocalDay, localWeekdayISO, localTimeHHMM } from "./time.js";
|
|
3
|
+
export { localParts, localDateString, isSameLocalDay, localWeekdayISO, localTimeHHMM, isWithinScheduleWindow, type ScheduleWindow } from "./time.js";
|
|
4
|
+
export { bucketOf, perTickCapacity, type PacingBucket } from "./pacing.js";
|
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACb,sBAAsB,EACtB,KAAK,cAAc,EACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/utils/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { withErrorHandlingAndValidation } from "./withErrorHandlingAndValidation.js";
|
|
2
2
|
export { renderTemplate, extractTemplateTokens, buildOutreachContext, pickRandomNumber } from "./outreach.js";
|
|
3
|
-
export { localParts, localDateString, isSameLocalDay, localWeekdayISO, localTimeHHMM } from "./time.js";
|
|
3
|
+
export { localParts, localDateString, isSameLocalDay, localWeekdayISO, localTimeHHMM, isWithinScheduleWindow } from "./time.js";
|
|
4
|
+
export { bucketOf, perTickCapacity } from "./pacing.js";
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACb,sBAAsB,EAEvB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAqB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { EngineChannel } from "../types/engine.js";
|
|
2
|
+
/**
|
|
3
|
+
* The engine's pacing buckets. Rate limits are per bucket, not per channel:
|
|
4
|
+
* both voice channels share one bucket (one caller-ID pool, one concurrency
|
|
5
|
+
* budget). This mapping is THE single encoding of that fact — the engine picks
|
|
6
|
+
* buckets with it and the evaluator groups usage with it, so a future bucket
|
|
7
|
+
* split only changes this function.
|
|
8
|
+
*/
|
|
9
|
+
export type PacingBucket = "voice" | "sms" | "email" | "whatsApp";
|
|
10
|
+
export declare function bucketOf(channel: EngineChannel): PacingBucket;
|
|
11
|
+
/**
|
|
12
|
+
* Tokens a bucket may spend in a single tick, from its per-minute rate. Shared
|
|
13
|
+
* by the engine's token buckets and the evaluator's SAF-5 cap check so the two
|
|
14
|
+
* can never drift.
|
|
15
|
+
*/
|
|
16
|
+
export declare function perTickCapacity(ratePerMinute: number, tickSeconds: number): number;
|
|
17
|
+
//# sourceMappingURL=pacing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pacing.d.ts","sourceRoot":"","sources":["../../src/utils/pacing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC;AAElE,wBAAgB,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,YAAY,CAK7D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAElF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export function bucketOf(channel) {
|
|
2
|
+
if (channel === "VOICE_AI" || channel === "VOICE_PRERECORDED")
|
|
3
|
+
return "voice";
|
|
4
|
+
if (channel === "SMS")
|
|
5
|
+
return "sms";
|
|
6
|
+
if (channel === "EMAIL")
|
|
7
|
+
return "email";
|
|
8
|
+
return "whatsApp";
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Tokens a bucket may spend in a single tick, from its per-minute rate. Shared
|
|
12
|
+
* by the engine's token buckets and the evaluator's SAF-5 cap check so the two
|
|
13
|
+
* can never drift.
|
|
14
|
+
*/
|
|
15
|
+
export function perTickCapacity(ratePerMinute, tickSeconds) {
|
|
16
|
+
return Math.floor((Math.max(0, ratePerMinute) * Math.max(1, tickSeconds)) / 60);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=pacing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pacing.js","sourceRoot":"","sources":["../../src/utils/pacing.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,QAAQ,CAAC,OAAsB;IAC7C,IAAI,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,mBAAmB;QAAE,OAAO,OAAO,CAAC;IAC9E,IAAI,OAAO,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,OAAO,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IACxC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,aAAqB,EAAE,WAAmB;IACxE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAClF,CAAC"}
|
package/dist/utils/time.d.ts
CHANGED
|
@@ -21,5 +21,21 @@ export declare function isSameLocalDay(a: Date, b: Date, timeZone: string): bool
|
|
|
21
21
|
export declare function localWeekdayISO(date: Date, timeZone: string): number;
|
|
22
22
|
/** Local `HH:MM` (24h) for an instant in the timezone. */
|
|
23
23
|
export declare function localTimeHHMM(date: Date, timeZone: string): string;
|
|
24
|
+
/** The schedule fields a contact window comprises (a campaign row or an event snapshot). */
|
|
25
|
+
export interface ScheduleWindow {
|
|
26
|
+
startDate: Date;
|
|
27
|
+
endDate: Date | null;
|
|
28
|
+
/** ISO weekdays (1 = Monday … 7 = Sunday). */
|
|
29
|
+
daysOfWeek: number[];
|
|
30
|
+
/** Local wall-clock bounds, `HH:MM` 24h. Windows do not span midnight. */
|
|
31
|
+
startTime: string;
|
|
32
|
+
endTime: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Whether `at` falls inside the schedule window, evaluated in `timeZone`. The
|
|
36
|
+
* single window rule shared by the engine's dispatch gate and the evaluator's
|
|
37
|
+
* SAF-1 check, so the judge can never disagree with the engine about a window.
|
|
38
|
+
*/
|
|
39
|
+
export declare function isWithinScheduleWindow(w: ScheduleWindow, at: Date, timeZone: string): boolean;
|
|
24
40
|
export {};
|
|
25
41
|
//# sourceMappingURL=time.d.ts.map
|
package/dist/utils/time.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/utils/time.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,UAAU,UAAU;IAClB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;CACd;AAYD,sFAAsF;AACtF,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CAmBnE;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1E;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAElE"}
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/utils/time.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,UAAU,UAAU;IAClB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;CACd;AAYD,sFAAsF;AACtF,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CAmBnE;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1E;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,4FAA4F;AAC5F,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;IACrB,8CAA8C;IAC9C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAO7F"}
|
package/dist/utils/time.js
CHANGED
|
@@ -49,4 +49,21 @@ export function localWeekdayISO(date, timeZone) {
|
|
|
49
49
|
export function localTimeHHMM(date, timeZone) {
|
|
50
50
|
return localParts(date, timeZone).time;
|
|
51
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Whether `at` falls inside the schedule window, evaluated in `timeZone`. The
|
|
54
|
+
* single window rule shared by the engine's dispatch gate and the evaluator's
|
|
55
|
+
* SAF-1 check, so the judge can never disagree with the engine about a window.
|
|
56
|
+
*/
|
|
57
|
+
export function isWithinScheduleWindow(w, at, timeZone) {
|
|
58
|
+
const { date, weekday, time } = localParts(at, timeZone);
|
|
59
|
+
if (date < localDateString(w.startDate, timeZone))
|
|
60
|
+
return false;
|
|
61
|
+
if (w.endDate && date > localDateString(w.endDate, timeZone))
|
|
62
|
+
return false;
|
|
63
|
+
if (!w.daysOfWeek.includes(weekday))
|
|
64
|
+
return false;
|
|
65
|
+
if (time < w.startTime || time > w.endTime)
|
|
66
|
+
return false;
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
52
69
|
//# sourceMappingURL=time.js.map
|
package/dist/utils/time.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../src/utils/time.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,MAAM,cAAc,GAA2B;IAC7C,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;CACP,CAAC;AAEF,sFAAsF;AACtF,MAAM,UAAU,UAAU,CAAC,IAAU,EAAE,QAAgB;IACrD,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QAC3C,QAAQ;QACR,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxF,kFAAkF;IAClF,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;IACrD,OAAO;QACL,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE;QACjD,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAC3C,IAAI,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE;KAChC,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,eAAe,CAAC,IAAU,EAAE,QAAgB;IAC1D,OAAO,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,cAAc,CAAC,CAAO,EAAE,CAAO,EAAE,QAAgB;IAC/D,OAAO,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACvE,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,eAAe,CAAC,IAAU,EAAE,QAAgB;IAC1D,OAAO,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC;AAC5C,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,aAAa,CAAC,IAAU,EAAE,QAAgB;IACxD,OAAO,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC"}
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../src/utils/time.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qcobro/common",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.13.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
@@ -11,6 +11,9 @@
|
|
|
11
11
|
"exports": {
|
|
12
12
|
".": "./dist/index.js"
|
|
13
13
|
},
|
|
14
|
+
"bin": {
|
|
15
|
+
"engine-eval": "./dist/bin/engineEval.js"
|
|
16
|
+
},
|
|
14
17
|
"scripts": {
|
|
15
18
|
"build": "tsc -b --force",
|
|
16
19
|
"clean": "rm -rf dist *.tsbuildinfo",
|