@elaraai/e3-ui 1.0.94 → 1.0.95

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.
Files changed (303) hide show
  1. package/dist/src/allocation/adapters.d.ts +159 -0
  2. package/dist/src/allocation/adapters.d.ts.map +1 -0
  3. package/dist/src/allocation/adapters.js +241 -0
  4. package/dist/src/allocation/adapters.js.map +1 -0
  5. package/dist/src/allocation/functions.d.ts +664 -0
  6. package/dist/src/allocation/functions.d.ts.map +1 -0
  7. package/dist/src/allocation/functions.js +782 -0
  8. package/dist/src/allocation/functions.js.map +1 -0
  9. package/dist/src/allocation/index.d.ts +2985 -0
  10. package/dist/src/allocation/index.d.ts.map +1 -0
  11. package/dist/src/allocation/index.js +499 -0
  12. package/dist/src/allocation/index.js.map +1 -0
  13. package/dist/src/allocation/types.d.ts +832 -0
  14. package/dist/src/allocation/types.d.ts.map +1 -0
  15. package/dist/src/allocation/types.js +360 -0
  16. package/dist/src/allocation/types.js.map +1 -0
  17. package/dist/src/bind/func.d.ts +14 -0
  18. package/dist/src/bind/func.d.ts.map +1 -1
  19. package/dist/src/bind/func.js +22 -1
  20. package/dist/src/bind/func.js.map +1 -1
  21. package/dist/src/calendar/index.d.ts +510 -1639
  22. package/dist/src/calendar/index.d.ts.map +1 -1
  23. package/dist/src/calendar/index.js +56 -29
  24. package/dist/src/calendar/index.js.map +1 -1
  25. package/dist/src/flowchart/canvas.d.ts +9 -21
  26. package/dist/src/flowchart/canvas.d.ts.map +1 -1
  27. package/dist/src/flowchart/canvas.js +10 -22
  28. package/dist/src/flowchart/canvas.js.map +1 -1
  29. package/dist/src/flowchart/flowchart.d.ts +19 -13
  30. package/dist/src/flowchart/flowchart.d.ts.map +1 -1
  31. package/dist/src/flowchart/flowchart.js.map +1 -1
  32. package/dist/src/flowchart/index.d.ts +44 -21
  33. package/dist/src/flowchart/index.d.ts.map +1 -1
  34. package/dist/src/flowchart/index.js +43 -20
  35. package/dist/src/flowchart/index.js.map +1 -1
  36. package/dist/src/flowchart/library.d.ts +166 -81
  37. package/dist/src/flowchart/library.d.ts.map +1 -1
  38. package/dist/src/flowchart/library.js +232 -105
  39. package/dist/src/flowchart/library.js.map +1 -1
  40. package/dist/src/flowchart/over.d.ts +9 -16
  41. package/dist/src/flowchart/over.d.ts.map +1 -1
  42. package/dist/src/flowchart/over.js +9 -16
  43. package/dist/src/flowchart/over.js.map +1 -1
  44. package/dist/src/flowchart/payload.d.ts +710 -508
  45. package/dist/src/flowchart/payload.d.ts.map +1 -1
  46. package/dist/src/flowchart/payload.js +128 -74
  47. package/dist/src/flowchart/payload.js.map +1 -1
  48. package/dist/src/flowchart/window.d.ts +132 -347
  49. package/dist/src/flowchart/window.d.ts.map +1 -1
  50. package/dist/src/flowchart/window.js +48 -55
  51. package/dist/src/flowchart/window.js.map +1 -1
  52. package/dist/src/index.d.ts +11 -7
  53. package/dist/src/index.d.ts.map +1 -1
  54. package/dist/src/index.js +14 -6
  55. package/dist/src/index.js.map +1 -1
  56. package/dist/src/internal.d.ts +18 -7
  57. package/dist/src/internal.d.ts.map +1 -1
  58. package/dist/src/internal.js +28 -9
  59. package/dist/src/internal.js.map +1 -1
  60. package/dist/src/plan/event-rows.d.ts +26 -10
  61. package/dist/src/plan/event-rows.d.ts.map +1 -1
  62. package/dist/src/plan/event-rows.js +39 -13
  63. package/dist/src/plan/event-rows.js.map +1 -1
  64. package/dist/src/plan/ir.d.ts +244 -815
  65. package/dist/src/plan/ir.d.ts.map +1 -1
  66. package/dist/src/plan/ir.js +8 -6
  67. package/dist/src/plan/ir.js.map +1 -1
  68. package/dist/src/plan/library.d.ts +3 -0
  69. package/dist/src/plan/library.d.ts.map +1 -1
  70. package/dist/src/plan/library.js +1 -1
  71. package/dist/src/plan/library.js.map +1 -1
  72. package/dist/src/plan/ordered-source.d.ts +1 -0
  73. package/dist/src/plan/ordered-source.d.ts.map +1 -1
  74. package/dist/src/plan/plan.d.ts +559 -1667
  75. package/dist/src/plan/plan.d.ts.map +1 -1
  76. package/dist/src/plan/plan.js +123 -45
  77. package/dist/src/plan/plan.js.map +1 -1
  78. package/dist/src/plan/root.d.ts +16 -20
  79. package/dist/src/plan/root.d.ts.map +1 -1
  80. package/dist/src/plan/root.js +23 -33
  81. package/dist/src/plan/root.js.map +1 -1
  82. package/dist/src/roster/coverage.d.ts +17 -231
  83. package/dist/src/roster/coverage.d.ts.map +1 -1
  84. package/dist/src/roster/coverage.js +94 -90
  85. package/dist/src/roster/coverage.js.map +1 -1
  86. package/dist/src/roster/fit.d.ts +59 -0
  87. package/dist/src/roster/fit.d.ts.map +1 -0
  88. package/dist/src/roster/fit.js +155 -0
  89. package/dist/src/roster/fit.js.map +1 -0
  90. package/dist/src/roster/index.d.ts +2862 -3662
  91. package/dist/src/roster/index.d.ts.map +1 -1
  92. package/dist/src/roster/index.js +383 -81
  93. package/dist/src/roster/index.js.map +1 -1
  94. package/dist/src/roster/library.d.ts +37 -92
  95. package/dist/src/roster/library.d.ts.map +1 -1
  96. package/dist/src/roster/library.js +25 -64
  97. package/dist/src/roster/library.js.map +1 -1
  98. package/dist/src/roster/lists.d.ts +195 -0
  99. package/dist/src/roster/lists.d.ts.map +1 -0
  100. package/dist/src/roster/lists.js +233 -0
  101. package/dist/src/roster/lists.js.map +1 -0
  102. package/dist/src/roster/rules.d.ts +17 -260
  103. package/dist/src/roster/rules.d.ts.map +1 -1
  104. package/dist/src/roster/rules.js +135 -132
  105. package/dist/src/roster/rules.js.map +1 -1
  106. package/dist/src/roster/targets.d.ts +115 -0
  107. package/dist/src/roster/targets.d.ts.map +1 -0
  108. package/dist/src/roster/targets.js +213 -0
  109. package/dist/src/roster/targets.js.map +1 -0
  110. package/dist/src/roster/times.d.ts +251 -0
  111. package/dist/src/roster/times.d.ts.map +1 -0
  112. package/dist/src/roster/times.js +174 -0
  113. package/dist/src/roster/times.js.map +1 -0
  114. package/dist/src/roster/types.d.ts +828 -183
  115. package/dist/src/roster/types.d.ts.map +1 -1
  116. package/dist/src/roster/types.js +224 -97
  117. package/dist/src/roster/types.js.map +1 -1
  118. package/dist/src/schedule/accessor.d.ts +28 -0
  119. package/dist/src/schedule/accessor.d.ts.map +1 -0
  120. package/dist/src/schedule/accessor.js +39 -0
  121. package/dist/src/schedule/accessor.js.map +1 -0
  122. package/dist/src/schedule/events.d.ts +170 -42
  123. package/dist/src/schedule/events.d.ts.map +1 -1
  124. package/dist/src/schedule/events.js +431 -171
  125. package/dist/src/schedule/events.js.map +1 -1
  126. package/dist/src/schedule/index.d.ts +41 -4
  127. package/dist/src/schedule/index.d.ts.map +1 -1
  128. package/dist/src/schedule/index.js +35 -3
  129. package/dist/src/schedule/index.js.map +1 -1
  130. package/dist/src/schedule/library.d.ts +13 -3
  131. package/dist/src/schedule/library.d.ts.map +1 -1
  132. package/dist/src/schedule/library.js +11 -4
  133. package/dist/src/schedule/library.js.map +1 -1
  134. package/dist/src/schedule/periods.d.ts +115 -0
  135. package/dist/src/schedule/periods.d.ts.map +1 -0
  136. package/dist/src/schedule/periods.js +215 -0
  137. package/dist/src/schedule/periods.js.map +1 -0
  138. package/dist/src/schedule/record-window.d.ts +25 -3
  139. package/dist/src/schedule/record-window.d.ts.map +1 -1
  140. package/dist/src/schedule/record-window.js +31 -18
  141. package/dist/src/schedule/record-window.js.map +1 -1
  142. package/dist/src/schedule/resources.d.ts +82 -4
  143. package/dist/src/schedule/resources.d.ts.map +1 -1
  144. package/dist/src/schedule/resources.js +44 -14
  145. package/dist/src/schedule/resources.js.map +1 -1
  146. package/dist/src/schedule/session.d.ts +69 -0
  147. package/dist/src/schedule/session.d.ts.map +1 -0
  148. package/dist/src/schedule/session.js +121 -0
  149. package/dist/src/schedule/session.js.map +1 -0
  150. package/dist/src/schedule/templates.d.ts +14 -2
  151. package/dist/src/schedule/templates.d.ts.map +1 -1
  152. package/dist/src/schedule/templates.js +5 -3
  153. package/dist/src/schedule/templates.js.map +1 -1
  154. package/dist/src/schedule/types.d.ts +1671 -37
  155. package/dist/src/schedule/types.d.ts.map +1 -1
  156. package/dist/src/schedule/types.js +196 -5
  157. package/dist/src/schedule/types.js.map +1 -1
  158. package/dist/src/schedule/window.d.ts +14 -0
  159. package/dist/src/schedule/window.d.ts.map +1 -1
  160. package/dist/src/schedule/window.js +14 -4
  161. package/dist/src/schedule/window.js.map +1 -1
  162. package/dist/src/schedule/words.d.ts +22 -0
  163. package/dist/src/schedule/words.d.ts.map +1 -0
  164. package/dist/src/schedule/words.js +25 -0
  165. package/dist/src/schedule/words.js.map +1 -0
  166. package/dist/src/sheet/index.d.ts +61 -27
  167. package/dist/src/sheet/index.d.ts.map +1 -1
  168. package/dist/src/sheet/index.js +59 -25
  169. package/dist/src/sheet/index.js.map +1 -1
  170. package/dist/src/sheet/library.d.ts +21 -3
  171. package/dist/src/sheet/library.d.ts.map +1 -1
  172. package/dist/src/sheet/library.js +23 -6
  173. package/dist/src/sheet/library.js.map +1 -1
  174. package/dist/src/sheet/registers.d.ts +100 -85
  175. package/dist/src/sheet/registers.d.ts.map +1 -1
  176. package/dist/src/sheet/registers.js +100 -85
  177. package/dist/src/sheet/registers.js.map +1 -1
  178. package/dist/src/sheet/root.d.ts +8 -12
  179. package/dist/src/sheet/root.d.ts.map +1 -1
  180. package/dist/src/sheet/root.js +6 -40
  181. package/dist/src/sheet/root.js.map +1 -1
  182. package/dist/src/sheet/sheet.d.ts +598 -2349
  183. package/dist/src/sheet/sheet.d.ts.map +1 -1
  184. package/dist/src/sheet/sheet.js +124 -37
  185. package/dist/src/sheet/sheet.js.map +1 -1
  186. package/dist/src/sheet/sub-rows.d.ts +74 -28
  187. package/dist/src/sheet/sub-rows.d.ts.map +1 -1
  188. package/dist/src/sheet/sub-rows.js +74 -28
  189. package/dist/src/sheet/sub-rows.js.map +1 -1
  190. package/dist/src/sheet/templates.d.ts +98 -34
  191. package/dist/src/sheet/templates.d.ts.map +1 -1
  192. package/dist/src/sheet/templates.js +102 -58
  193. package/dist/src/sheet/templates.js.map +1 -1
  194. package/dist/src/sheet/types.d.ts +289 -1359
  195. package/dist/src/sheet/types.d.ts.map +1 -1
  196. package/dist/src/sheet/types.js +20 -26
  197. package/dist/src/sheet/types.js.map +1 -1
  198. package/dist/src/sheet/views.d.ts +10 -11
  199. package/dist/src/sheet/views.d.ts.map +1 -1
  200. package/dist/src/sheet/views.js +15 -20
  201. package/dist/src/sheet/views.js.map +1 -1
  202. package/dist/src/{roster/visibility.d.ts → utils/key-visibility.d.ts} +42 -7
  203. package/dist/src/utils/key-visibility.d.ts.map +1 -0
  204. package/dist/src/utils/key-visibility.js +36 -0
  205. package/dist/src/utils/key-visibility.js.map +1 -0
  206. package/dist/src/utils/ordered-source.d.ts +1 -0
  207. package/dist/src/utils/ordered-source.d.ts.map +1 -1
  208. package/dist/src/utils/ordered-source.js +8 -3
  209. package/dist/src/utils/ordered-source.js.map +1 -1
  210. package/dist/src/utils/record-sources.d.ts +107 -0
  211. package/dist/src/utils/record-sources.d.ts.map +1 -0
  212. package/dist/src/utils/record-sources.js +132 -0
  213. package/dist/src/utils/record-sources.js.map +1 -0
  214. package/dist/test/allocation/allocation.examples.d.ts +2902 -0
  215. package/dist/test/allocation/allocation.examples.d.ts.map +1 -0
  216. package/dist/test/allocation/allocation.examples.js +643 -0
  217. package/dist/test/allocation/allocation.examples.js.map +1 -0
  218. package/dist/test/allocation/fit.examples.d.ts +546 -0
  219. package/dist/test/allocation/fit.examples.d.ts.map +1 -0
  220. package/dist/test/allocation/fit.examples.js +171 -0
  221. package/dist/test/allocation/fit.examples.js.map +1 -0
  222. package/dist/test/allocation/kiln-yard.d.ts +181 -0
  223. package/dist/test/allocation/kiln-yard.d.ts.map +1 -0
  224. package/dist/test/allocation/kiln-yard.js +228 -0
  225. package/dist/test/allocation/kiln-yard.js.map +1 -0
  226. package/dist/test/bind/data/data.examples.d.ts +651 -1
  227. package/dist/test/bind/data/data.examples.d.ts.map +1 -1
  228. package/dist/test/bind/data/data.examples.js +140 -2
  229. package/dist/test/bind/data/data.examples.js.map +1 -1
  230. package/dist/test/bind/func/func.examples.d.ts +10 -1
  231. package/dist/test/bind/func/func.examples.d.ts.map +1 -1
  232. package/dist/test/bind/func/func.examples.js +8 -1
  233. package/dist/test/bind/func/func.examples.js.map +1 -1
  234. package/dist/test/bind/record/record.examples.d.ts +633 -1
  235. package/dist/test/bind/record/record.examples.d.ts.map +1 -1
  236. package/dist/test/bind/record/record.examples.js +26 -2
  237. package/dist/test/bind/record/record.examples.js.map +1 -1
  238. package/dist/test/calendar/calendar-records.examples.d.ts.map +1 -1
  239. package/dist/test/calendar/calendar-records.examples.js +18 -14
  240. package/dist/test/calendar/calendar-records.examples.js.map +1 -1
  241. package/dist/test/calendar/calendar.examples.d.ts +521 -16
  242. package/dist/test/calendar/calendar.examples.d.ts.map +1 -1
  243. package/dist/test/calendar/calendar.examples.js +182 -135
  244. package/dist/test/calendar/calendar.examples.js.map +1 -1
  245. package/dist/test/examples-package.d.ts +75 -0
  246. package/dist/test/examples-package.d.ts.map +1 -0
  247. package/dist/test/examples-package.js +263 -0
  248. package/dist/test/examples-package.js.map +1 -0
  249. package/dist/test/flowchart/flowchart.examples.d.ts +211 -19
  250. package/dist/test/flowchart/flowchart.examples.d.ts.map +1 -1
  251. package/dist/test/flowchart/flowchart.examples.js +102 -75
  252. package/dist/test/flowchart/flowchart.examples.js.map +1 -1
  253. package/dist/test/plan/plan-events.examples.d.ts +1439 -209
  254. package/dist/test/plan/plan-events.examples.d.ts.map +1 -1
  255. package/dist/test/plan/plan-events.examples.js +199 -59
  256. package/dist/test/plan/plan-events.examples.js.map +1 -1
  257. package/dist/test/plan/plan-records.examples.d.ts +420 -0
  258. package/dist/test/plan/plan-records.examples.d.ts.map +1 -1
  259. package/dist/test/plan/plan-records.examples.js +70 -19
  260. package/dist/test/plan/plan-records.examples.js.map +1 -1
  261. package/dist/test/plan/plan-windows.examples.d.ts +636 -55
  262. package/dist/test/plan/plan-windows.examples.d.ts.map +1 -1
  263. package/dist/test/plan/plan-windows.examples.js +69 -33
  264. package/dist/test/plan/plan-windows.examples.js.map +1 -1
  265. package/dist/test/plan/plan.examples.d.ts +153 -31
  266. package/dist/test/plan/plan.examples.d.ts.map +1 -1
  267. package/dist/test/plan/plan.examples.js +178 -101
  268. package/dist/test/plan/plan.examples.js.map +1 -1
  269. package/dist/test/roster/domain.examples.d.ts +467 -250
  270. package/dist/test/roster/domain.examples.d.ts.map +1 -1
  271. package/dist/test/roster/domain.examples.js +92 -29
  272. package/dist/test/roster/domain.examples.js.map +1 -1
  273. package/dist/test/roster/roster-records.examples.d.ts +430 -586
  274. package/dist/test/roster/roster-records.examples.d.ts.map +1 -1
  275. package/dist/test/roster/roster-records.examples.js +102 -43
  276. package/dist/test/roster/roster-records.examples.js.map +1 -1
  277. package/dist/test/roster/roster.examples.d.ts +2319 -606
  278. package/dist/test/roster/roster.examples.d.ts.map +1 -1
  279. package/dist/test/roster/roster.examples.js +456 -148
  280. package/dist/test/roster/roster.examples.js.map +1 -1
  281. package/dist/test/roster/warehouse.d.ts +172 -63
  282. package/dist/test/roster/warehouse.d.ts.map +1 -1
  283. package/dist/test/roster/warehouse.js +172 -39
  284. package/dist/test/roster/warehouse.js.map +1 -1
  285. package/dist/test/schedule/schedule.examples.d.ts +3499 -0
  286. package/dist/test/schedule/schedule.examples.d.ts.map +1 -0
  287. package/dist/test/schedule/schedule.examples.js +192 -0
  288. package/dist/test/schedule/schedule.examples.js.map +1 -0
  289. package/dist/test/sheet/sheet-records.examples.d.ts.map +1 -1
  290. package/dist/test/sheet/sheet-records.examples.js +22 -18
  291. package/dist/test/sheet/sheet-records.examples.js.map +1 -1
  292. package/dist/test/sheet/sheet.examples.d.ts +715 -26
  293. package/dist/test/sheet/sheet.examples.d.ts.map +1 -1
  294. package/dist/test/sheet/sheet.examples.js +204 -130
  295. package/dist/test/sheet/sheet.examples.js.map +1 -1
  296. package/package.json +17 -10
  297. package/dist/src/roster/people.d.ts +0 -50
  298. package/dist/src/roster/people.d.ts.map +0 -1
  299. package/dist/src/roster/people.js +0 -32
  300. package/dist/src/roster/people.js.map +0 -1
  301. package/dist/src/roster/visibility.d.ts.map +0 -1
  302. package/dist/src/roster/visibility.js +0 -25
  303. package/dist/src/roster/visibility.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/roster/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/roster/types.ts"],"names":[],"mappings":"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"}
@@ -2,39 +2,52 @@
2
2
  * Copyright (c) 2025 Elara AI Pty Ltd
3
3
  * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
4
  */
5
- import { ArrayType, BooleanType, DateTimeType, DictType, FloatType, IntegerType, NullType, OptionType, SetType, StringType, StructType, VariantType, } from "@elaraai/east";
5
+ /**
6
+ * The Roster's East types (#1368, `Builder Interfaces Spec.md` §5.3). A week
7
+ * is the Roster's reading of the app's own rows — each duty the app's row,
8
+ * with the roles the Roster reads from it — carried in the fit's, the pay's
9
+ * and the check's requests and in the renderer, and stored nowhere. The types
10
+ * over a week take the app's duty row type, `R`: each is a constructor, and
11
+ * the same `R` gives the same East type (`isTypeEqual`).
12
+ *
13
+ * @packageDocumentation
14
+ */
15
+ import { ArrayType, BlobType, BooleanType, DateTimeType, DictType, EastTypeType, FloatType, FunctionType, IntegerType, NullType, OptionType, SetType, StringType, StructType, VariantType, } from "@elaraai/east";
16
+ import { RecordCommitInfoType } from "@elaraai/e3-types";
6
17
  import { StatusTokenType } from "@elaraai/east-ui";
7
- import { ScheduleClockType } from "../schedule/types.js";
18
+ import { EditingType } from "@elaraai/east-ui/internal";
19
+ import { RowInspectorType } from "../utils/row-inspector.js";
20
+ import { ScheduleClockType, ScheduleEntriesType, ScheduleFitType, SchedulePeriodStatusType, ScheduleRefusalType } from "../schedule/types.js";
8
21
  /**
9
- * One shift of one group on one day. Day zero is the record key's UTC date.
22
+ * One shift of one group on one day of the week.
10
23
  * @remarks Slot keys compare by East value, including when decoded in the browser.
11
- * @property day - Day within the week, from zero to six
24
+ * @property day - Day within the week, from zero to six: the duty's day (§5.5, rule 1) less the week's first
12
25
  * @property group - Group key
13
26
  * @property shift - Shift key
14
27
  */
15
28
  export const RosterSlotType = StructType({ day: IntegerType, group: StringType, shift: StringType });
16
29
  /**
17
- * The subject of an assignment.
30
+ * Who a duty is: a person, or an agency asked to send someone.
18
31
  * @remarks Requests reserve positions without pretending an agency has supplied a named person.
19
- * @property person - The original staff record key
20
- * @property request - The agency asked to supply someone
32
+ * @property person - The person's key, of the `people` resource kind
33
+ * @property request - The agency's key, of the `agencies` resource kind
21
34
  */
22
35
  export const RosterWhoType = VariantType({ person: StringType, request: StringType });
23
36
  /**
24
- * An assignment stored within one week.
25
- * @remarks A start offset moves the start; overtime extends the end. Agreement is absent for an unchanged shift.
26
- * @property slot - The day, group and shift
27
- * @property who - A named person or an agency request
28
- * @property position - Position held on this assignment
29
- * @property activity - One skill or duty, or none
30
- * @property offset - Start offset in hours, negative for an early start
31
- * @property overtime - Additional hours after the shift
32
- * @property agreed - Whether the person agreed to changed hours
33
- */
34
- export const RosterAssignmentType = StructType({
35
- slot: RosterSlotType, who: RosterWhoType, position: StringType, activity: OptionType(StringType),
36
- offset: FloatType, overtime: FloatType, agreed: OptionType(BooleanType),
37
- });
37
+ * One duty, as the Roster reads it from the app's row (`R`): its slot, who it
38
+ * is, and its roles, beside the row itself, every field of it.
39
+ *
40
+ * @typeParam R - The app's duty row type
41
+ * @param row - The app's duty row type
42
+ * @returns The assignment type over it
43
+ * @remarks Its times are the duty's own; the Roster gives them no name and no worth (§5.5). Its `hours` are what the duty counts.
44
+ */
45
+ export function RosterAssignmentTypeFor(row) {
46
+ return StructType({
47
+ slot: RosterSlotType, who: RosterWhoType, position: StringType, activity: OptionType(StringType),
48
+ start: DateTimeType, end: DateTimeType, hours: FloatType, row,
49
+ });
50
+ }
38
51
  /**
39
52
  * A slot's staffing and work targets.
40
53
  * @remarks A duty needs assigned hours, whereas a skill also has holder capacity.
@@ -45,50 +58,61 @@ export const RosterRequirementType = StructType({ positions: IntegerType, hours:
45
58
  /** Targets keyed by the complete slot. @remarks Use East's comparator for these struct keys. */
46
59
  export const RosterRequirementsType = DictType(RosterSlotType, RosterRequirementType);
47
60
  /**
48
- * The durable status of a week.
49
- * @remarks Publishing saves the complete week and its status atomically.
61
+ * A week's status: Schedule's period status, read from the app's weeks record
62
+ * (`Schedule.periods`).
50
63
  * @property draft - An editable week
51
- * @property published - A read-only week and its publication instant
64
+ * @property published - A read-only week, and when it was published when the app's published case holds the time
65
+ * @property other - Another case of the app's status, by its name: read-only
52
66
  */
53
- export const RosterStatusType = VariantType({ draft: NullType, published: StructType({ at: DateTimeType }) });
67
+ export const RosterStatusType = SchedulePeriodStatusType;
54
68
  /**
55
- * The single atomic entry in the roster record.
56
- * @remarks Assignments, targets, dismissals and publication share one optimistic patch baseline.
57
- * @property status - Draft or published
58
- * @property assignments - Assignments by stable identifier
59
- * @property requirements - Targets by slot
60
- * @property dismissed - Proposal identifiers rejected for this week
69
+ * One week of the app's rows, as the Roster reads them.
70
+ *
71
+ * @typeParam R - The app's duty row type
72
+ * @param row - The app's duty row type
73
+ * @returns The week type over it
74
+ * @remarks Its assignments are the week's duties by their keys; its requirements the app's targets by slot; its status and its dismissals the app's week row's.
61
75
  */
62
- export const RosterWeekType = StructType({
63
- status: RosterStatusType, assignments: DictType(StringType, RosterAssignmentType),
64
- requirements: RosterRequirementsType, dismissed: SetType(StringType),
65
- });
66
- /** Weeks keyed by their first day at UTC midnight. @remarks This is the roster record's stored wire type. */
67
- export const RosterWeeksType = DictType(DateTimeType, RosterWeekType);
76
+ export function RosterWeekTypeFor(row) {
77
+ return StructType({
78
+ status: RosterStatusType, assignments: DictType(StringType, RosterAssignmentTypeFor(row)),
79
+ requirements: RosterRequirementsType, dismissed: SetType(StringType),
80
+ });
81
+ }
68
82
  /**
69
- * A skill within a group, or a duty available to every group.
70
- * @remarks Keys are unique across all skills and duties.
71
- * @property key - Stable identifier
83
+ * One row of an activities record, keyed by the activity's key: a skill of one
84
+ * group, or a duty of none, which every group may assign (#1342).
85
+ * @remarks `Roster.activities` reads a record of these, or of the app's own rows through its accessors.
86
+ * @property label - Display name
87
+ * @property code - Short code on assignment chips
88
+ * @property group - The group whose skill it is; none, a duty every group shares
89
+ */
90
+ export const RosterActivityType = StructType({ label: StringType, code: StringType, group: OptionType(StringType) });
91
+ /**
92
+ * An activity resolved from the author's keyed activities: a skill within a
93
+ * group, or a duty available to every group.
94
+ * @remarks Keys are unique across all skills and duties: they are the activities record's keys.
95
+ * @property key - Stable identifier: its key in the activities record
72
96
  * @property label - Display name
73
97
  * @property code - Short code on assignment chips
98
+ * @property group - The group whose skill it is; none, a duty
74
99
  */
75
- export const RosterSkillType = StructType({ key: StringType, label: StringType, code: StringType });
100
+ export const RosterSkillType = StructType({ key: StringType, label: StringType, code: StringType, group: OptionType(StringType) });
76
101
  /**
77
- * A group of people and the skills its work requires.
102
+ * A group of people. Its skills are the activities of that group.
78
103
  * @remarks The array order controls the grid and library order.
79
104
  * @property key - Stable identifier
80
105
  * @property label - Display name
81
- * @property skills - Skills in display order
82
106
  */
83
- export const RosterGroupType = StructType({ key: StringType, label: StringType, skills: ArrayType(RosterSkillType) });
107
+ export const RosterGroupType = StructType({ key: StringType, label: StringType });
84
108
  /**
85
- * A recurring shift's time and nominal hours.
86
- * @remarks An end past midnight belongs to the following day; the assignment still belongs to its start day.
109
+ * A recurring shift's start and nominal hours.
110
+ * @remarks An end past midnight belongs to the following day; a duty still belongs to its shift's start day.
87
111
  * @property key - Stable identifier
88
112
  * @property label - Display name
89
113
  * @property code - Short code in the week layout
90
114
  * @property start - Start time in UTC, shared with Schedule
91
- * @property hours - Nominal shift duration
115
+ * @property hours - Nominal shift duration: what a new duty runs, and a skill holder's capacity
92
116
  */
93
117
  export const RosterShiftType = StructType({
94
118
  key: StringType, label: StringType, code: StringType, start: ScheduleClockType, hours: FloatType,
@@ -105,13 +129,13 @@ export const RosterPositionType = StructType({ key: StringType, label: StringTyp
105
129
  /**
106
130
  * An agency from which positions may be requested.
107
131
  * @remarks The first agency supplies the suggested open-position fix.
108
- * @property key - Stable identifier
132
+ * @property key - Stable identifier: its key in the `agencies` resource kind
109
133
  * @property name - Display name
110
134
  */
111
135
  export const RosterAgencyType = StructType({ key: StringType, name: StringType });
112
136
  /**
113
- * A person resolved from the author's keyed staff data.
114
- * @remarks Roster reads staff; all edits go to the weeks record.
137
+ * A person resolved from the app's staff rows (the `people` resource kind).
138
+ * @remarks Roster reads staff; it never writes them.
115
139
  * @property key - Original staff key
116
140
  * @property name - Display name
117
141
  * @property group - Home group
@@ -130,39 +154,27 @@ export const RosterPersonType = StructType({
130
154
  /**
131
155
  * Built-in checks enabled for the roster.
132
156
  * @remarks Rest reads this week only; double booking is always reported.
133
- * @property rest - Minimum hours between shifts; zero disables the rest check
157
+ * @property rest - Minimum hours between duties; zero disables the rest check
134
158
  * @property lead - Check staffed slots for a lead
135
159
  * @property trainer - Check trainees have a trainer
136
160
  * @property skill - Check activities against held skills
137
- * @property agree - Report unagreed changed hours
138
161
  */
139
- export const RosterRulesType = StructType({ rest: FloatType, lead: BooleanType, trainer: BooleanType, skill: BooleanType, agree: BooleanType });
140
- /**
141
- * Optional costing configuration.
142
- * @remarks Omitting costs hides monetary readouts; it does not affect staffing checks.
143
- * @property currency - Currency identifier for the shared formatter
144
- * @property rates - Permanent, overtime and agency hourly rates
145
- * @property budget - Daily budget, or none
146
- */
147
- export const RosterCostsType = StructType({
148
- currency: StringType, rates: StructType({ permanent: FloatType, overtime: FloatType, agency: FloatType }), budget: OptionType(FloatType),
149
- });
162
+ export const RosterRulesType = StructType({ rest: FloatType, lead: BooleanType, trainer: BooleanType, skill: BooleanType });
150
163
  /**
151
164
  * Complete reference data used by coverage and checks.
152
- * @remarks Visibility filters never remove people from this context.
165
+ * @remarks Visibility filters never remove people or activities from this context.
153
166
  * @property people - All resolved staff by original key
154
- * @property groups - Groups and their skills
155
- * @property duties - Activities available to every group
167
+ * @property groups - Groups
168
+ * @property activities - Every activity: each group's skills, and the duties of no group
156
169
  * @property shifts - Shift definitions
157
170
  * @property positions - Position definitions
158
171
  * @property agencies - Agencies available for gap fixes
159
172
  * @property rules - Enabled rules
160
- * @property costs - Optional monetary configuration
161
173
  */
162
174
  export const RosterContextType = StructType({
163
- people: DictType(StringType, RosterPersonType), groups: ArrayType(RosterGroupType), duties: ArrayType(RosterSkillType),
175
+ people: DictType(StringType, RosterPersonType), groups: ArrayType(RosterGroupType), activities: ArrayType(RosterSkillType),
164
176
  shifts: ArrayType(RosterShiftType), positions: ArrayType(RosterPositionType), agencies: ArrayType(RosterAgencyType),
165
- rules: RosterRulesType, costs: OptionType(RosterCostsType),
177
+ rules: RosterRulesType,
166
178
  });
167
179
  /**
168
180
  * Coverage for one required activity.
@@ -172,77 +184,192 @@ export const RosterContextType = StructType({
172
184
  * @property holders - Number of people holding the skill, or none for a duty
173
185
  * @property capacity - Nominal hours available from holders, or none for a duty
174
186
  * @property gap - Positive shortfall in skill capacity
175
- * @property assigned - Hours explicitly assigned to this activity
187
+ * @property assigned - Hours of the duties assigned to this activity
176
188
  */
177
189
  export const RosterCoverageLineType = StructType({
178
190
  skill: StringType, needed: FloatType, holders: OptionType(IntegerType), capacity: OptionType(FloatType), gap: FloatType, assigned: FloatType,
179
191
  });
180
192
  /**
181
- * Staffing, work and costs for a complete slot.
182
- * @remarks Requests fill positions and contribute requested hours, but never count as named people or skilled holders.
193
+ * Staffing, work and pay for a complete slot.
194
+ * @remarks Requests fill positions and contribute their hours, but never count as named people or skilled holders.
183
195
  * @property positions - Required positions
184
196
  * @property filled - Assignments including requests
185
197
  * @property open - Unfilled positions, at least zero
186
198
  * @property people - Named people assigned
187
- * @property hours - Permanent, agency, overtime, requested, needed and total rostered hours
199
+ * @property hours - Permanent, agency, requested, needed and total rostered hours: each duty's hours
188
200
  * @property lines - Required skills in group order, then duties
189
- * @property cost - Total cost, zero when costs are absent
201
+ * @property cost - The slot's pay: its duties' costs summed over every code; zero without `pay`
190
202
  * @property lead - A named person holds a lead position
191
203
  * @property trainer - A trainer is assigned
192
204
  */
193
205
  export const RosterCoverageType = StructType({
194
206
  positions: IntegerType, filled: IntegerType, open: IntegerType, people: IntegerType,
195
- hours: StructType({ permanent: FloatType, agency: FloatType, overtime: FloatType, requested: FloatType, needed: FloatType, rostered: FloatType }),
207
+ hours: StructType({ permanent: FloatType, agency: FloatType, requested: FloatType, needed: FloatType, rostered: FloatType }),
196
208
  lines: ArrayType(RosterCoverageLineType), cost: FloatType, lead: BooleanType, trainer: BooleanType,
197
209
  });
198
210
  /**
199
- * An externally computed staffing proposal.
200
- * @remarks Acceptance creates an assignment; rejection stores this key in the week's dismissed set.
201
- * @property key - Proposal identifier
202
- * @property week - Week's first day
203
- * @property slot - Suggested destination
211
+ * A suggested placement, as the Roster reads it from the app's rows
212
+ * (`Roster.proposals`).
213
+ * @remarks Acceptance creates a duty; rejection keeps this key in the week's dismissed set.
214
+ * @property key - Its row's key
215
+ * @property day - The day it suggests, a UTC midnight
216
+ * @property group - The group it suggests
217
+ * @property shift - The shift it suggests
204
218
  * @property person - Original staff key
205
219
  * @property reason - Explanation presented to the planner
206
220
  */
207
- export const RosterProposalType = StructType({ key: StringType, week: DateTimeType, slot: RosterSlotType, person: StringType, reason: StringType });
221
+ export const RosterProposalType = StructType({ key: StringType, day: DateTimeType, group: StringType, shift: StringType, person: StringType, reason: StringType });
222
+ /**
223
+ * What a Find fix looks for (#1334): what the app's fit is asked who fits.
224
+ * @property leads - Someone in a lead position
225
+ * @property trainers - Someone who trains others
226
+ * @property skill - Someone who holds this skill, by its activity key
227
+ */
228
+ export const RosterNeedType = VariantType({ leads: NullType, trainers: NullType, skill: StringType });
208
229
  /**
209
230
  * A corrective action offered for an issue.
210
- * @remarks Every data-changing action is one gesture of the shared edit session.
231
+ * @remarks Every data-changing action is one gesture of the shared edit history. A find edits nothing: it asks the app's fit who fits its need on the issue's slot, and is offered only when the Roster has a `fit` (#1334).
211
232
  * @property request - Request someone from this agency
212
- * @property agree - Mark the assignment agreed
213
233
  * @property accept - Accept this proposal key
214
- * @property move - Move the assignment to this shift
215
- * @property start - Set this start offset in hours
216
- * @property find - Show leads, trainers or holders of a skill in the library
234
+ * @property move - Move the duty to this shift
235
+ * @property start - Move the duty to start at this later time, its length kept
236
+ * @property find - Find who fits this need on the issue's slot: the app's fit's answer, in the People tab
217
237
  */
218
238
  export const RosterFixType = VariantType({
219
- request: StringType, agree: NullType, accept: StringType, move: StringType, start: FloatType,
220
- find: VariantType({ leads: NullType, trainers: NullType, skill: StringType }),
239
+ request: StringType, accept: StringType, move: StringType, start: DateTimeType, find: RosterNeedType,
221
240
  });
222
241
  /**
223
242
  * One explanation or warning about the drafted roster.
224
243
  * @remarks Warnings do not introduce a separate validation barrier to Save or Publish.
225
- * @property kind - Breach, gap, agreement or proposal
244
+ * @property kind - Breach, gap or proposal
226
245
  * @property tone - Shared semantic tone
227
246
  * @property title - Short explanation
228
247
  * @property detail - Supporting explanation
229
248
  * @property slot - Affected slot, or none
230
- * @property assignment - Affected assignment key, or none
249
+ * @property assignment - Affected duty key, or none
231
250
  * @property flag - Short text on a chip, or none
232
251
  * @property fix - Offered action, or none
233
252
  */
234
253
  export const RosterIssueType = StructType({
235
- kind: VariantType({ breach: NullType, gap: NullType, agree: NullType, proposal: NullType }),
254
+ kind: VariantType({ breach: NullType, gap: NullType, proposal: NullType }),
236
255
  tone: StatusTokenType, title: StringType, detail: StringType, slot: OptionType(RosterSlotType),
237
256
  assignment: OptionType(StringType), flag: OptionType(StringType), fix: OptionType(RosterFixType),
238
257
  });
258
+ /**
259
+ * The app's pay's answer (§5.6): each duty's cost, by its key, in the app's
260
+ * own pay codes.
261
+ * @remarks The Roster knows no pay code in advance: it totals what the app gives, by code and in all.
262
+ */
263
+ export const RosterPayType = DictType(StringType, DictType(StringType, FloatType));
264
+ /**
265
+ * One question to the app's pay (§5.6): one person's duties for the week, or
266
+ * one agency's requests.
267
+ *
268
+ * @typeParam R - The app's duty row type
269
+ * @param row - The app's duty row type
270
+ * @returns The request type over it
271
+ * @remarks `who` is the person or the agency; `duties` its duties, by key; `context` the complete staff and configuration.
272
+ */
273
+ export function RosterPayRequestTypeFor(row) {
274
+ return StructType({ who: RosterWhoType, start: DateTimeType, duties: DictType(StringType, RosterAssignmentTypeFor(row)), context: RosterContextType });
275
+ }
239
276
  /**
240
277
  * Input to an application's additional roster checks.
241
- * @remarks The built-in coverage has already been calculated for the same draft.
242
- * @property start - Week's first day
243
- * @property week - Drafted week
244
- * @property context - Complete reference data
245
- * @property coverage - Coverage for every configured slot
278
+ *
279
+ * @typeParam R - The app's duty row type
280
+ * @param row - The app's duty row type
281
+ * @returns The check's context over it
282
+ * @remarks The built-in coverage has already been calculated for the same draft, and so have the pay's costs: `start` the week's first day, `week` the drafted week, `context` the complete reference data, `coverage` every configured slot's, `pay` each duty's costs by code.
283
+ */
284
+ export function RosterCheckContextTypeFor(row) {
285
+ return StructType({
286
+ start: DateTimeType, week: RosterWeekTypeFor(row), context: RosterContextType,
287
+ coverage: DictType(RosterSlotType, RosterCoverageType), pay: RosterPayType,
288
+ });
289
+ }
290
+ /** Why someone does not fit a need: Schedule's, shared with the Allocation (#1334). */
291
+ export const RosterRefusalType = ScheduleRefusalType;
292
+ /** One verdict of the app's fit: Schedule's, shared with the Allocation — it fits with a score, a reason and a warning, or it is refused (#1334). */
293
+ export const RosterFitType = ScheduleFitType;
294
+ /**
295
+ * One question to the app's fit (#1334): who fits a Find fix's need on its
296
+ * issue's slot, over the drafted week.
297
+ *
298
+ * @typeParam R - The app's duty row type
299
+ * @param row - The app's duty row type
300
+ * @returns The request type over it
301
+ * @remarks `need` what is looked for, `slot` the issue's, `start` the week's first day, `week` the drafted week, `context` the complete staff and configuration — every person, whatever the rail shows — and `coverage` the drafted week's.
302
+ */
303
+ export function RosterFitRequestTypeFor(row) {
304
+ return StructType({
305
+ need: RosterNeedType, slot: RosterSlotType, start: DateTimeType, week: RosterWeekTypeFor(row), context: RosterContextType,
306
+ coverage: DictType(RosterSlotType, RosterCoverageType),
307
+ });
308
+ }
309
+ /**
310
+ * Where a duty sits, as the Roster reads it from its roles (§5.5, rules 1 and
311
+ * 8): placed in the week, another week's, or a duty the Roster cannot place —
312
+ * one whose shift or group isn't configured, or that names no one — which it
313
+ * lists in Issues and keeps as stored.
314
+ *
315
+ * @typeParam R - The app's duty row type
316
+ * @param row - The app's duty row type
317
+ * @returns The placement type over it
318
+ * @remarks `placed` the duty as the week holds it; `elsewhere` a duty of another week; `unplaced` the issue that lists it.
319
+ */
320
+ export function RosterPlacementTypeFor(row) {
321
+ return VariantType({ placed: RosterAssignmentTypeFor(row), elsewhere: NullType, unplaced: RosterIssueType });
322
+ }
323
+ /**
324
+ * A target's roles, as the Roster reads them from the app's row
325
+ * (`Roster.targets`): the slot it is for, and what it asks of it.
326
+ * @property day - The day, a UTC midnight
327
+ * @property group - The group's key
328
+ * @property shift - The shift's key
329
+ * @property positions - Positions to fill
330
+ * @property hours - Hours required, by activity key
331
+ */
332
+ export const RosterTargetRolesType = StructType({
333
+ day: DateTimeType, group: StringType, shift: StringType, positions: IntegerType, hours: DictType(StringType, FloatType),
334
+ });
335
+ /**
336
+ * One stored target, as the targets' `rows` gives it: its roles, read in the
337
+ * pass that reads the row, and the row as bytes at the row type.
338
+ * @property roles - Its roles
339
+ * @property row - Its row, as bytes at the row type
340
+ */
341
+ export const RosterTargetEntryType = StructType({ roles: RosterTargetRolesType, row: BlobType });
342
+ /**
343
+ * The app's targets, closed (`Roster.targets`): its record of targets, a row
344
+ * per slot, read and written through its roles over bytes, so the Roster's
345
+ * payload is one type whatever the record holds.
346
+ * @property editing - The shared session over the record: whole rows by their key, its patch door
347
+ * @property entries - The record read by key, when it is given `entries`; `none` for a record read whole
348
+ * @property rows - The targets whose day falls in `[from, to)`, by key, each its roles and its row; `none` while a read is in flight
349
+ * @property read - A drafted row's roles, from its bytes
350
+ * @property write - The row with its roles written, and every other field as it was
351
+ * @property create - A new row from the roles, every other field its type's default
352
+ * @property history - The record's commits, newest first
353
+ * @property inspector - The app's own form for one target, over its row as bytes; `none`, the Roster's
354
+ * @property rowType - The row type
355
+ */
356
+ export const RosterTargetsKindType = StructType({
357
+ editing: EditingType,
358
+ entries: OptionType(ScheduleEntriesType),
359
+ rows: FunctionType([DateTimeType, DateTimeType], OptionType(DictType(StringType, RosterTargetEntryType))),
360
+ read: FunctionType([BlobType], RosterTargetRolesType),
361
+ write: FunctionType([BlobType, RosterTargetRolesType], BlobType),
362
+ create: FunctionType([RosterTargetRolesType], BlobType),
363
+ history: FunctionType([], OptionType(ArrayType(RecordCommitInfoType))),
364
+ inspector: OptionType(RowInspectorType),
365
+ rowType: EastTypeType,
366
+ });
367
+ /**
368
+ * The app's fit's answer (#1334). It echoes its question, so the Roster
369
+ * matches each answer to the question it asked.
370
+ * @property need - The need answered
371
+ * @property slot - The slot answered
372
+ * @property people - A verdict for every person, by staff key; the People tab shows the fits, best first
246
373
  */
247
- export const RosterCheckContextType = StructType({ start: DateTimeType, week: RosterWeekType, context: RosterContextType, coverage: DictType(RosterSlotType, RosterCoverageType) });
374
+ export const RosterFitResultType = StructType({ need: RosterNeedType, slot: RosterSlotType, people: DictType(StringType, RosterFitType) });
248
375
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/roster/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/roster/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * An accessor of a Schedule declaration, `(row, key) => …`, reified once
7
+ * (#1367): a real East function over the row and its key, which the kind
8
+ * calls per row (`shared/reify.ts`' rule), held to the type it returns. One
9
+ * returning another type is refused at build, naming the accessor and what it
10
+ * returns, rather than in East's own words.
11
+ *
12
+ * @packageDocumentation
13
+ */
14
+ import { type EastType, type ExprType, type FunctionType, type SubtypeExprOrValue } from "@elaraai/east";
15
+ /**
16
+ * Reifies an accessor over a row and its key, held to the type it returns.
17
+ *
18
+ * @typeParam T - The type it returns
19
+ * @param rowType - The row type
20
+ * @param keyType - The key type
21
+ * @param out - The type it returns
22
+ * @param accessor - The author's accessor
23
+ * @param refusal - The refusal's words, given what the accessor returns instead, as East prints a type (`.String`)
24
+ * @returns The accessor, an East function `(row, key) => T`
25
+ * @throws {Error} The refusal, for an accessor returning another type; any other error its body throws, as it threw it
26
+ */
27
+ export declare function scheduleAccessor<T extends EastType>(rowType: EastType, keyType: EastType, out: T, accessor: (row: ExprType<EastType>, key: ExprType<EastType>) => SubtypeExprOrValue<T>, refusal: (returns: string) => string): ExprType<FunctionType<[EastType, EastType], T>>;
28
+ //# sourceMappingURL=accessor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessor.d.ts","sourceRoot":"","sources":["../../../src/schedule/accessor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;GAQG;AAEH,OAAO,EAA4C,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnJ;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,QAAQ,EAC/C,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,QAAQ,EACjB,GAAG,EAAE,CAAC,EACN,QAAQ,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,kBAAkB,CAAC,CAAC,CAAC,EACrF,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GACrC,QAAQ,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CASjD"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * An accessor of a Schedule declaration, `(row, key) => …`, reified once
7
+ * (#1367): a real East function over the row and its key, which the kind
8
+ * calls per row (`shared/reify.ts`' rule), held to the type it returns. One
9
+ * returning another type is refused at build, naming the accessor and what it
10
+ * returns, rather than in East's own words.
11
+ *
12
+ * @packageDocumentation
13
+ */
14
+ import { East, Expr, TypeMismatchError, printType } from "@elaraai/east";
15
+ /**
16
+ * Reifies an accessor over a row and its key, held to the type it returns.
17
+ *
18
+ * @typeParam T - The type it returns
19
+ * @param rowType - The row type
20
+ * @param keyType - The key type
21
+ * @param out - The type it returns
22
+ * @param accessor - The author's accessor
23
+ * @param refusal - The refusal's words, given what the accessor returns instead, as East prints a type (`.String`)
24
+ * @returns The accessor, an East function `(row, key) => T`
25
+ * @throws {Error} The refusal, for an accessor returning another type; any other error its body throws, as it threw it
26
+ */
27
+ export function scheduleAccessor(rowType, keyType, out, accessor, refusal) {
28
+ try {
29
+ return East.function([rowType, keyType], out, (_$, row, key) => accessor(row, key));
30
+ }
31
+ catch (err) {
32
+ if (!(err instanceof TypeMismatchError))
33
+ throw err;
34
+ // What it returns, as East infers it from the accessor's own body.
35
+ const inferred = East.function([rowType, keyType], undefined, (_$, row, key) => accessor(row, key));
36
+ throw new Error(refusal(printType(Expr.type(inferred).output)));
37
+ }
38
+ }
39
+ //# sourceMappingURL=accessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessor.js","sourceRoot":"","sources":["../../../src/schedule/accessor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAA4E,MAAM,eAAe,CAAC;AAEnJ;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAC5B,OAAiB,EACjB,OAAiB,EACjB,GAAM,EACN,QAAqF,EACrF,OAAoC;IAEpC,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAA+D,CAAC;IACtJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,YAAY,iBAAiB,CAAC;YAAE,MAAM,GAAG,CAAC;QACnD,mEAAmE;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAuB,CAAC,CAAC;QAC1H,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAE,IAAI,CAAC,IAAI,CAAC,QAA2B,CAAkB,CAAC,MAAkB,CAAC,CAAC,CAAC,CAAC;IACrH,CAAC;AACL,CAAC"}