ponomar-ts 0.1.0-alpha.9 → 0.2.0-alpha.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.
@@ -12,6 +12,8 @@ export interface ComposeServiceOptions {
12
12
  /** Ritual variant: `0` = normal, `1` = Lenten (no kathisma),
13
13
  * `2` = Lenten (with kathisma), `3` = Lenten during Holy Week. */
14
14
  readonly PFlag2?: number;
15
+ /** SixthHour only: `1` if a scripture reading (paremia) is appointed today. */
16
+ readonly PFlag3?: number;
15
17
  /** Cap on `<GET>` expansion depth. Default: `4`. Guards against upstream
16
18
  * templates that might cycle if hand-edited. */
17
19
  readonly maxIncludeDepth?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/engine/compose.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGlE,OAAO,KAAK,EACX,gBAAgB,EAEhB,YAAY,EACZ,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;gFACgF;AAChF,MAAM,WAAW,qBAAqB;IACrC,wEAAwE;IACxE,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB;yBACqB;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;uEACmE;IACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;qDACiD;IACjD,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B;;;;4DAIwD;IACxD,QAAQ,CAAC,UAAU,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACjD;AAED,wBAAgB,cAAc,CAC7B,SAAS,EAAE,YAAY,EACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,qBAA0B,GACjC,eAAe,CAqBjB"}
1
+ {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/engine/compose.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGlE,OAAO,KAAK,EACX,gBAAgB,EAEhB,YAAY,EACZ,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;gFACgF;AAChF,MAAM,WAAW,qBAAqB;IACrC,wEAAwE;IACxE,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB;yBACqB;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;uEACmE;IACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;qDACiD;IACjD,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B;;;;4DAIwD;IACxD,QAAQ,CAAC,UAAU,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACjD;AAED,wBAAgB,cAAc,CAC7B,SAAS,EAAE,YAAY,EACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,qBAA0B,GACjC,eAAe,CAsBjB"}
@@ -29,6 +29,7 @@ export function composeService(gregorian, template, options = {}) {
29
29
  PS: options.PS ?? 0,
30
30
  PFlag1: options.PFlag1 ?? 0,
31
31
  PFlag2: options.PFlag2 ?? 0,
32
+ PFlag3: options.PFlag3 ?? 0,
32
33
  });
33
34
  const maxDepth = options.maxIncludeDepth ?? 4;
34
35
  const seen = new Set();
@@ -1 +1 @@
1
- {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/engine/compose.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/engine/compose.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"day.d.ts","sourceRoot":"","sources":["../../src/engine/day.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAO5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGlE;;;GAGG;AACH,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,YAAY,GAAG,UAAU,CAerE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACzB,GAAG,EAAE,UAAU,EACf,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GACtC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAWlC"}
1
+ {"version":3,"file":"day.d.ts","sourceRoot":"","sources":["../../src/engine/day.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAO5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGlE;;;GAGG;AACH,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,YAAY,GAAG,UAAU,CAerE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACzB,GAAG,EAAE,UAAU,EACf,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GACtC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAclC"}
@@ -34,6 +34,9 @@ export function dslContext(ctx, extra) {
34
34
  nday: ctx.nday,
35
35
  ndayP: ctx.ndayP,
36
36
  ndayF: ctx.ndayF,
37
+ // `Year` is the Julian civil year (upstream `Main.java` line 462).
38
+ // Referenced by menaion Cmd guards like `Year % 4 == 0` for Feb 29.
39
+ Year: ctx.julian.year,
37
40
  dRank: 0,
38
41
  GS: 1,
39
42
  ...extra,
@@ -1 +1 @@
1
- {"version":3,"file":"day.js","sourceRoot":"","sources":["../../src/engine/day.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,0EAA0E;AAC1E,0EAA0E;AAC1E,0EAA0E;AAC1E,qBAAqB;AAGrB,OAAO,EACN,SAAS,EACT,SAAS,EACT,UAAU,EACV,aAAa,GACb,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAgBvD,MAAM,UAAU,iBAAiB,CAAC,SAAuB;IACxD,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACjD,OAAO;QACN,SAAS;QACT,MAAM;QACN,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC;QACtB,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC;QACtB,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC;QACpC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC;QACrC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC;KACrC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACzB,GAAe,EACf,KAAwC;IAExC,OAAO;QACN,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,KAAK,EAAE,CAAC;QACR,EAAE,EAAE,CAAC;QACL,GAAG,KAAK;KACR,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"day.js","sourceRoot":"","sources":["../../src/engine/day.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,0EAA0E;AAC1E,0EAA0E;AAC1E,0EAA0E;AAC1E,qBAAqB;AAGrB,OAAO,EACN,SAAS,EACT,SAAS,EACT,UAAU,EACV,aAAa,GACb,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAgBvD,MAAM,UAAU,iBAAiB,CAAC,SAAuB;IACxD,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACjD,OAAO;QACN,SAAS;QACT,MAAM;QACN,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC;QACtB,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC;QACtB,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC;QACpC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC;QACrC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC;KACrC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACzB,GAAe,EACf,KAAwC;IAExC,OAAO;QACN,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,mEAAmE;QACnE,oEAAoE;QACpE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI;QACrB,KAAK,EAAE,CAAC;QACR,EAAE,EAAE,CAAC;QACL,GAAG,KAAK;KACR,CAAC;AACH,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { CalendarDate } from "../core/calendar/pcalendar.ts";
2
+ import type { ComposedService } from "./compose.ts";
3
+ import type { DayContext } from "./day.ts";
4
+ import type { HourSelection } from "./services.ts";
5
+ export type HourName = "prime" | "third" | "sixth" | "ninth";
6
+ export interface GetHourServiceOptions {
7
+ readonly PS?: number;
8
+ readonly PFlag1?: number;
9
+ readonly PFlag2?: number;
10
+ readonly PFlag3?: number;
11
+ }
12
+ export interface HourServiceResult {
13
+ readonly context: DayContext;
14
+ readonly hour: HourName;
15
+ readonly selection: HourSelection | undefined;
16
+ readonly templateName: string | null;
17
+ readonly service: ComposedService | null;
18
+ readonly PS: number;
19
+ readonly PFlag1: number;
20
+ readonly PFlag2: number;
21
+ readonly PFlag3: number;
22
+ }
23
+ export declare function getHourService(gregorian: CalendarDate, hour: HourName, options?: GetHourServiceOptions): HourServiceResult;
24
+ //# sourceMappingURL=hours.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hours.d.ts","sourceRoot":"","sources":["../../src/engine/hours.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,eAAe,CAAC;AAEnE,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,aAAa,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AASD,wBAAgB,cAAc,CAC7B,SAAS,EAAE,YAAY,EACvB,IAAI,EAAE,QAAQ,EACd,OAAO,GAAE,qBAA0B,GACjC,iBAAiB,CA6CnB"}
@@ -0,0 +1,84 @@
1
+ // Hour service wrappers over `composeService`.
2
+ //
3
+ // Ported from Ponomar/{NinthHour,SixthHour,ThirdHour,Prime}.java — the
4
+ // "which template do I compose for this Little Hour today, and with what
5
+ // service flags?" glue. Each upstream class is essentially a switch on the
6
+ // merged `HourSelection.type` from `ServiceInfo.java` plus a couple of
7
+ // per-service defaults; that's what this module encodes.
8
+ //
9
+ // The mapping (see NinthHour.xml / etc. headers for canonical semantics):
10
+ //
11
+ // * `type === "None"` → no service today (Royal Hours are served instead);
12
+ // result is `{ service: null, templateName: null }`.
13
+ // * `type === "Paschal"`→ compose `PaschalHours.xml` (invariant across all
14
+ // four hours during Bright Week).
15
+ // * `type === "Easter"` → normal template composition; the `Easter`
16
+ // moniker is upstream's tag for the Pentecostarion
17
+ // period after Bright Week.
18
+ // * `type === "Normal"` → normal template composition with `PFlag2 = 0`.
19
+ // * `type === "Lenten"` → normal template composition with `PFlag2 = 1`
20
+ // (Lenten variant with troparia + prostrations).
21
+ //
22
+ // `PS` / `PFlag1` / `PFlag2` may be overridden by the caller. `PFlag2` is
23
+ // auto-derived from `HourSelection.type` when the caller doesn't set it.
24
+ import { composeService } from "./compose.js";
25
+ import { getServices } from "./services.js";
26
+ const HOUR_TEMPLATE = {
27
+ prime: "Prime",
28
+ third: "ThirdHour",
29
+ sixth: "SixthHour",
30
+ ninth: "NinthHour",
31
+ };
32
+ export function getHourService(gregorian, hour, options = {}) {
33
+ const services = getServices(gregorian);
34
+ const selection = pickSelection(services, hour);
35
+ const PS = options.PS ?? 0;
36
+ const PFlag1 = options.PFlag1 ?? 0;
37
+ const PFlag3 = options.PFlag3 ?? 0;
38
+ if (selection === undefined || selection.type === "None") {
39
+ return {
40
+ context: services.context,
41
+ hour,
42
+ selection,
43
+ templateName: null,
44
+ service: null,
45
+ PS,
46
+ PFlag1,
47
+ PFlag2: options.PFlag2 ?? 0,
48
+ PFlag3,
49
+ };
50
+ }
51
+ const derivedPFlag2 = selection.type === "Lenten" ? 1 : 0;
52
+ const PFlag2 = options.PFlag2 ?? derivedPFlag2;
53
+ const templateName = selection.type === "Paschal" ? "PaschalHours" : HOUR_TEMPLATE[hour];
54
+ const service = composeService(gregorian, templateName, {
55
+ PS,
56
+ PFlag1,
57
+ PFlag2,
58
+ PFlag3,
59
+ });
60
+ return {
61
+ context: services.context,
62
+ hour,
63
+ selection,
64
+ templateName,
65
+ service,
66
+ PS,
67
+ PFlag1,
68
+ PFlag2,
69
+ PFlag3,
70
+ };
71
+ }
72
+ function pickSelection(services, hour) {
73
+ switch (hour) {
74
+ case "prime":
75
+ return services.prime;
76
+ case "third":
77
+ return services.terce;
78
+ case "sixth":
79
+ return services.sexte;
80
+ case "ninth":
81
+ return services.none;
82
+ }
83
+ }
84
+ //# sourceMappingURL=hours.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hours.js","sourceRoot":"","sources":["../../src/engine/hours.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,EAAE;AACF,uEAAuE;AACvE,yEAAyE;AACzE,2EAA2E;AAC3E,uEAAuE;AACvE,yDAAyD;AACzD,EAAE;AACF,0EAA0E;AAC1E,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,6EAA6E;AAC7E,4DAA4D;AAC5D,sEAAsE;AACtE,6EAA6E;AAC7E,sDAAsD;AACtD,2EAA2E;AAC3E,0EAA0E;AAC1E,2EAA2E;AAC3E,EAAE;AACF,0EAA0E;AAC1E,yEAAyE;AAIzE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAwB5C,MAAM,aAAa,GAAuC;IACzD,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;CAClB,CAAC;AAEF,MAAM,UAAU,cAAc,CAC7B,SAAuB,EACvB,IAAc,EACd,UAAiC,EAAE;IAEnC,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAEnC,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1D,OAAO;YACN,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,IAAI;YACJ,SAAS;YACT,YAAY,EAAE,IAAI;YAClB,OAAO,EAAE,IAAI;YACb,EAAE;YACF,MAAM;YACN,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC;YAC3B,MAAM;SACN,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC;IAE/C,MAAM,YAAY,GACjB,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAErE,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,EAAE,YAAY,EAAE;QACvD,EAAE;QACF,MAAM;QACN,MAAM;QACN,MAAM;KACN,CAAC,CAAC;IAEH,OAAO;QACN,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,IAAI;QACJ,SAAS;QACT,YAAY;QACZ,OAAO;QACP,EAAE;QACF,MAAM;QACN,MAAM;QACN,MAAM;KACN,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CACrB,QAAwB,EACxB,IAAc;IAEd,QAAQ,IAAI,EAAE,CAAC;QACd,KAAK,OAAO;YACX,OAAO,QAAQ,CAAC,KAAK,CAAC;QACvB,KAAK,OAAO;YACX,OAAO,QAAQ,CAAC,KAAK,CAAC;QACvB,KAAK,OAAO;YACX,OAAO,QAAQ,CAAC,KAAK,CAAC;QACvB,KAAK,OAAO;YACX,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;AACF,CAAC"}
@@ -35,6 +35,8 @@ export type { OrderedMatinsReading, OrderedMatinsReadings, } from "./orderedMati
35
35
  export { getOrderedMatinsReadings } from "./orderedMatins.ts";
36
36
  export type { ComposedService, ComposeServiceOptions } from "./compose.ts";
37
37
  export { composeService } from "./compose.ts";
38
+ export type { GetHourServiceOptions, HourName, HourServiceResult, } from "./hours.ts";
39
+ export { getHourService } from "./hours.ts";
38
40
  export type { ResolvedTitle } from "./phrases.ts";
39
41
  export { getPhrase, resolveBibleHeader, resolveCommand, resolveCreate, resolveTitle, } from "./phrases.ts";
40
42
  export type { BibleDirective, CreateDirective, GetDirective, Phrase, ServiceDirective, ServiceTemplate, ServiceTitle, } from "../data/types.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD,oCAAoC;AACpC,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,gFAAgF;IAChF,QAAQ,CAAC,aAAa,EAAE,SAAS,aAAa,EAAE,CAAC;IACjD,mEAAmE;IACnE,QAAQ,CAAC,aAAa,EAAE,SAAS,aAAa,EAAE,CAAC;IACjD,gEAAgE;IAChE,QAAQ,CAAC,SAAS,EAAE,SAAS,aAAa,EAAE,CAAC;IAC7C;yEACqE;IACrE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,YAAY,GAAG,aAAa,CAoBvE;AAED,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC1E,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EACX,MAAM,EACN,aAAa,EACb,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,GACT,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACX,aAAa,EACb,uBAAuB,EACvB,UAAU,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACrE,YAAY,EACX,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,aAAa,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EACX,sBAAsB,EACtB,cAAc,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EACX,YAAY,EACZ,iBAAiB,EACjB,SAAS,GACT,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EACX,oBAAoB,EACpB,qBAAqB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EACN,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,YAAY,GACZ,MAAM,cAAc,CAAC;AACtB,YAAY,EACX,cAAc,EACd,eAAe,EACf,YAAY,EACZ,MAAM,EACN,gBAAgB,EAChB,eAAe,EACf,YAAY,GACZ,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD,oCAAoC;AACpC,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,gFAAgF;IAChF,QAAQ,CAAC,aAAa,EAAE,SAAS,aAAa,EAAE,CAAC;IACjD,mEAAmE;IACnE,QAAQ,CAAC,aAAa,EAAE,SAAS,aAAa,EAAE,CAAC;IACjD,gEAAgE;IAChE,QAAQ,CAAC,SAAS,EAAE,SAAS,aAAa,EAAE,CAAC;IAC7C;yEACqE;IACrE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,YAAY,GAAG,aAAa,CAoBvE;AAED,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC1E,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EACX,MAAM,EACN,aAAa,EACb,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,GACT,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACX,aAAa,EACb,uBAAuB,EACvB,UAAU,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACrE,YAAY,EACX,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,aAAa,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EACX,sBAAsB,EACtB,cAAc,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EACX,YAAY,EACZ,iBAAiB,EACjB,SAAS,GACT,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EACX,oBAAoB,EACpB,qBAAqB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,YAAY,EACX,qBAAqB,EACrB,QAAQ,EACR,iBAAiB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EACN,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,YAAY,GACZ,MAAM,cAAc,CAAC;AACtB,YAAY,EACX,cAAc,EACd,eAAe,EACf,YAAY,EACZ,MAAM,EACN,gBAAgB,EAChB,eAAe,EACf,YAAY,GACZ,MAAM,kBAAkB,CAAC"}
@@ -38,5 +38,6 @@ export { getServices } from "./services.js";
38
38
  export { getPropers } from "./propers.js";
39
39
  export { getOrderedMatinsReadings } from "./orderedMatins.js";
40
40
  export { composeService } from "./compose.js";
41
+ export { getHourService } from "./hours.js";
41
42
  export { getPhrase, resolveBibleHeader, resolveCommand, resolveCreate, resolveTitle, } from "./phrases.js";
42
43
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,EAAE;AACF,iEAAiE;AACjE,0EAA0E;AAC1E,6EAA6E;AAC7E,0CAA0C;AAI1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAgB7C,MAAM,UAAU,gBAAgB,CAAC,SAAuB;IACvD,MAAM,OAAO,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,MAAM,SAAS,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,aAAa,CAAC,CAAC;IACvD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC;YAC3D,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QACvB,CAAC;IACF,CAAC;IACD,OAAO;QACN,OAAO;QACP,aAAa;QACb,aAAa;QACb,SAAS;QACT,KAAK;KACL,CAAC;AACH,CAAC;AAGD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAc7C,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAOrE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK1C,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAM5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EACN,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,YAAY,GACZ,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,EAAE;AACF,iEAAiE;AACjE,0EAA0E;AAC1E,6EAA6E;AAC7E,0CAA0C;AAI1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAgB7C,MAAM,UAAU,gBAAgB,CAAC,SAAuB;IACvD,MAAM,OAAO,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,MAAM,SAAS,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,aAAa,CAAC,CAAC;IACvD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC;YAC3D,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QACvB,CAAC;IACF,CAAC;IACD,OAAO;QACN,OAAO;QACP,aAAa;QACb,aAAa;QACb,SAAS;QACT,KAAK;KACL,CAAC;AACH,CAAC;AAGD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAc7C,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAOrE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK1C,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAM5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAM9C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EACN,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,YAAY,GACZ,MAAM,cAAc,CAAC"}
package/dist/index.d.ts CHANGED
@@ -12,6 +12,6 @@ export * as pcalendar from "./core/calendar/pcalendar.ts";
12
12
  export * as dsl from "./core/dsl/index.ts";
13
13
  export * as data from "./data/index.ts";
14
14
  export * as engine from "./engine/index.ts";
15
- export { getLiturgicalDay, getDailyReadings, getLiturgyReadings, getFasting, getOrderedLiturgyReadings, getServices, getPropers, getOrderedMatinsReadings, composeService, getPhrase, resolveCreate, resolveCommand, resolveBibleHeader, resolveTitle } from "./engine/index.ts";
16
- export type { LiturgicalDay, DailyReadings, ReadingRef, FastingResult, FastingLevel, FastingPermissions, OrderedLiturgyReadings, OrderedReading, HourSelection, ServicesResult, DailyPropers, ProperRef, OrderedMatinsReading, OrderedMatinsReadings, ComposedService, ComposeServiceOptions, ServiceDirective, ServiceTemplate, ServiceTitle, Phrase, ResolvedTitle, } from "./engine/index.ts";
15
+ export { getLiturgicalDay, getDailyReadings, getLiturgyReadings, getFasting, getOrderedLiturgyReadings, getServices, getPropers, getOrderedMatinsReadings, composeService, getHourService, getPhrase, resolveCreate, resolveCommand, resolveBibleHeader, resolveTitle } from "./engine/index.ts";
16
+ export type { LiturgicalDay, DailyReadings, ReadingRef, FastingResult, FastingLevel, FastingPermissions, OrderedLiturgyReadings, OrderedReading, HourSelection, ServicesResult, DailyPropers, ProperRef, OrderedMatinsReading, OrderedMatinsReadings, ComposedService, ComposeServiceOptions, HourName, HourServiceResult, GetHourServiceOptions, ServiceDirective, ServiceTemplate, ServiceTitle, Phrase, ResolvedTitle, } from "./engine/index.ts";
17
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,iBAAiB,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,KAAK,SAAS,MAAM,8BAA8B,CAAC;AAC1D,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,EAAE,yBAAyB,EAAE,WAAW,EAAE,UAAU,EAAE,wBAAwB,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjR,YAAY,EACX,aAAa,EACb,aAAa,EACb,UAAU,EACV,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,cAAc,EACd,YAAY,EACZ,SAAS,EACT,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,MAAM,EACN,aAAa,GACb,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,iBAAiB,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,KAAK,SAAS,MAAM,8BAA8B,CAAC;AAC1D,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,EAAE,yBAAyB,EAAE,WAAW,EAAE,UAAU,EAAE,wBAAwB,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjS,YAAY,EACX,aAAa,EACb,aAAa,EACb,UAAU,EACV,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,cAAc,EACd,YAAY,EACZ,SAAS,EACT,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,QAAQ,EACR,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,MAAM,EACN,aAAa,GACb,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -12,5 +12,5 @@ export * as pcalendar from "./core/calendar/pcalendar.js";
12
12
  export * as dsl from "./core/dsl/index.js";
13
13
  export * as data from "./data/index.js";
14
14
  export * as engine from "./engine/index.js";
15
- export { getLiturgicalDay, getDailyReadings, getLiturgyReadings, getFasting, getOrderedLiturgyReadings, getServices, getPropers, getOrderedMatinsReadings, composeService, getPhrase, resolveCreate, resolveCommand, resolveBibleHeader, resolveTitle } from "./engine/index.js";
15
+ export { getLiturgicalDay, getDailyReadings, getLiturgyReadings, getFasting, getOrderedLiturgyReadings, getServices, getPropers, getOrderedMatinsReadings, composeService, getHourService, getPhrase, resolveCreate, resolveCommand, resolveBibleHeader, resolveTitle } from "./engine/index.js";
16
16
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,iBAAiB,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,KAAK,SAAS,MAAM,8BAA8B,CAAC;AAC1D,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,EAAE,yBAAyB,EAAE,WAAW,EAAE,UAAU,EAAE,wBAAwB,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,iBAAiB,CAAC;AAChC,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,KAAK,SAAS,MAAM,8BAA8B,CAAC;AAC1D,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,EAAE,yBAAyB,EAAE,WAAW,EAAE,UAAU,EAAE,wBAAwB,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ponomar-ts",
3
- "version": "0.1.0-alpha.9",
3
+ "version": "0.2.0-alpha.0",
4
4
  "description": "TypeScript port of the Ponomar Orthodox liturgics engine: paschal date math, Typicon rule dispatcher, saint & reading resolution.",
5
5
  "keywords": [
6
6
  "orthodox",
@@ -39,6 +39,8 @@ export interface ComposeServiceOptions {
39
39
  /** Ritual variant: `0` = normal, `1` = Lenten (no kathisma),
40
40
  * `2` = Lenten (with kathisma), `3` = Lenten during Holy Week. */
41
41
  readonly PFlag2?: number;
42
+ /** SixthHour only: `1` if a scripture reading (paremia) is appointed today. */
43
+ readonly PFlag3?: number;
42
44
  /** Cap on `<GET>` expansion depth. Default: `4`. Guards against upstream
43
45
  * templates that might cycle if hand-edited. */
44
46
  readonly maxIncludeDepth?: number;
@@ -70,6 +72,7 @@ export function composeService(
70
72
  PS: options.PS ?? 0,
71
73
  PFlag1: options.PFlag1 ?? 0,
72
74
  PFlag2: options.PFlag2 ?? 0,
75
+ PFlag3: options.PFlag3 ?? 0,
73
76
  });
74
77
  const maxDepth = options.maxIncludeDepth ?? 4;
75
78
  const seen = new Set<string>();
package/src/engine/day.ts CHANGED
@@ -61,6 +61,9 @@ export function dslContext(
61
61
  nday: ctx.nday,
62
62
  ndayP: ctx.ndayP,
63
63
  ndayF: ctx.ndayF,
64
+ // `Year` is the Julian civil year (upstream `Main.java` line 462).
65
+ // Referenced by menaion Cmd guards like `Year % 4 == 0` for Feb 29.
66
+ Year: ctx.julian.year,
64
67
  dRank: 0,
65
68
  GS: 1,
66
69
  ...extra,
@@ -0,0 +1,125 @@
1
+ // Hour service wrappers over `composeService`.
2
+ //
3
+ // Ported from Ponomar/{NinthHour,SixthHour,ThirdHour,Prime}.java — the
4
+ // "which template do I compose for this Little Hour today, and with what
5
+ // service flags?" glue. Each upstream class is essentially a switch on the
6
+ // merged `HourSelection.type` from `ServiceInfo.java` plus a couple of
7
+ // per-service defaults; that's what this module encodes.
8
+ //
9
+ // The mapping (see NinthHour.xml / etc. headers for canonical semantics):
10
+ //
11
+ // * `type === "None"` → no service today (Royal Hours are served instead);
12
+ // result is `{ service: null, templateName: null }`.
13
+ // * `type === "Paschal"`→ compose `PaschalHours.xml` (invariant across all
14
+ // four hours during Bright Week).
15
+ // * `type === "Easter"` → normal template composition; the `Easter`
16
+ // moniker is upstream's tag for the Pentecostarion
17
+ // period after Bright Week.
18
+ // * `type === "Normal"` → normal template composition with `PFlag2 = 0`.
19
+ // * `type === "Lenten"` → normal template composition with `PFlag2 = 1`
20
+ // (Lenten variant with troparia + prostrations).
21
+ //
22
+ // `PS` / `PFlag1` / `PFlag2` may be overridden by the caller. `PFlag2` is
23
+ // auto-derived from `HourSelection.type` when the caller doesn't set it.
24
+
25
+ import type { CalendarDate } from "../core/calendar/pcalendar.ts";
26
+ import type { ComposedService } from "./compose.ts";
27
+ import { composeService } from "./compose.ts";
28
+ import type { DayContext } from "./day.ts";
29
+ import { getServices } from "./services.ts";
30
+ import type { HourSelection, ServicesResult } from "./services.ts";
31
+
32
+ export type HourName = "prime" | "third" | "sixth" | "ninth";
33
+
34
+ export interface GetHourServiceOptions {
35
+ readonly PS?: number;
36
+ readonly PFlag1?: number;
37
+ readonly PFlag2?: number;
38
+ readonly PFlag3?: number;
39
+ }
40
+
41
+ export interface HourServiceResult {
42
+ readonly context: DayContext;
43
+ readonly hour: HourName;
44
+ readonly selection: HourSelection | undefined;
45
+ readonly templateName: string | null;
46
+ readonly service: ComposedService | null;
47
+ readonly PS: number;
48
+ readonly PFlag1: number;
49
+ readonly PFlag2: number;
50
+ readonly PFlag3: number;
51
+ }
52
+
53
+ const HOUR_TEMPLATE: Readonly<Record<HourName, string>> = {
54
+ prime: "Prime",
55
+ third: "ThirdHour",
56
+ sixth: "SixthHour",
57
+ ninth: "NinthHour",
58
+ };
59
+
60
+ export function getHourService(
61
+ gregorian: CalendarDate,
62
+ hour: HourName,
63
+ options: GetHourServiceOptions = {},
64
+ ): HourServiceResult {
65
+ const services = getServices(gregorian);
66
+ const selection = pickSelection(services, hour);
67
+ const PS = options.PS ?? 0;
68
+ const PFlag1 = options.PFlag1 ?? 0;
69
+ const PFlag3 = options.PFlag3 ?? 0;
70
+
71
+ if (selection === undefined || selection.type === "None") {
72
+ return {
73
+ context: services.context,
74
+ hour,
75
+ selection,
76
+ templateName: null,
77
+ service: null,
78
+ PS,
79
+ PFlag1,
80
+ PFlag2: options.PFlag2 ?? 0,
81
+ PFlag3,
82
+ };
83
+ }
84
+
85
+ const derivedPFlag2 = selection.type === "Lenten" ? 1 : 0;
86
+ const PFlag2 = options.PFlag2 ?? derivedPFlag2;
87
+
88
+ const templateName =
89
+ selection.type === "Paschal" ? "PaschalHours" : HOUR_TEMPLATE[hour];
90
+
91
+ const service = composeService(gregorian, templateName, {
92
+ PS,
93
+ PFlag1,
94
+ PFlag2,
95
+ PFlag3,
96
+ });
97
+
98
+ return {
99
+ context: services.context,
100
+ hour,
101
+ selection,
102
+ templateName,
103
+ service,
104
+ PS,
105
+ PFlag1,
106
+ PFlag2,
107
+ PFlag3,
108
+ };
109
+ }
110
+
111
+ function pickSelection(
112
+ services: ServicesResult,
113
+ hour: HourName,
114
+ ): HourSelection | undefined {
115
+ switch (hour) {
116
+ case "prime":
117
+ return services.prime;
118
+ case "third":
119
+ return services.terce;
120
+ case "sixth":
121
+ return services.sexte;
122
+ case "ninth":
123
+ return services.none;
124
+ }
125
+ }
@@ -94,6 +94,12 @@ export type {
94
94
  export { getOrderedMatinsReadings } from "./orderedMatins.ts";
95
95
  export type { ComposedService, ComposeServiceOptions } from "./compose.ts";
96
96
  export { composeService } from "./compose.ts";
97
+ export type {
98
+ GetHourServiceOptions,
99
+ HourName,
100
+ HourServiceResult,
101
+ } from "./hours.ts";
102
+ export { getHourService } from "./hours.ts";
97
103
  export type { ResolvedTitle } from "./phrases.ts";
98
104
  export {
99
105
  getPhrase,
package/src/index.ts CHANGED
@@ -13,7 +13,7 @@ export * as pcalendar from "./core/calendar/pcalendar.ts";
13
13
  export * as dsl from "./core/dsl/index.ts";
14
14
  export * as data from "./data/index.ts";
15
15
  export * as engine from "./engine/index.ts";
16
- export { getLiturgicalDay, getDailyReadings, getLiturgyReadings, getFasting, getOrderedLiturgyReadings, getServices, getPropers, getOrderedMatinsReadings, composeService, getPhrase, resolveCreate, resolveCommand, resolveBibleHeader, resolveTitle } from "./engine/index.ts";
16
+ export { getLiturgicalDay, getDailyReadings, getLiturgyReadings, getFasting, getOrderedLiturgyReadings, getServices, getPropers, getOrderedMatinsReadings, composeService, getHourService, getPhrase, resolveCreate, resolveCommand, resolveBibleHeader, resolveTitle } from "./engine/index.ts";
17
17
  export type {
18
18
  LiturgicalDay,
19
19
  DailyReadings,
@@ -31,6 +31,9 @@ export type {
31
31
  OrderedMatinsReadings,
32
32
  ComposedService,
33
33
  ComposeServiceOptions,
34
+ HourName,
35
+ HourServiceResult,
36
+ GetHourServiceOptions,
34
37
  ServiceDirective,
35
38
  ServiceTemplate,
36
39
  ServiceTitle,