@elaraai/e3-ui 1.0.94 → 1.0.96
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/src/allocation/adapters.d.ts +159 -0
- package/dist/src/allocation/adapters.d.ts.map +1 -0
- package/dist/src/allocation/adapters.js +241 -0
- package/dist/src/allocation/adapters.js.map +1 -0
- package/dist/src/allocation/functions.d.ts +664 -0
- package/dist/src/allocation/functions.d.ts.map +1 -0
- package/dist/src/allocation/functions.js +782 -0
- package/dist/src/allocation/functions.js.map +1 -0
- package/dist/src/allocation/index.d.ts +2985 -0
- package/dist/src/allocation/index.d.ts.map +1 -0
- package/dist/src/allocation/index.js +499 -0
- package/dist/src/allocation/index.js.map +1 -0
- package/dist/src/allocation/types.d.ts +832 -0
- package/dist/src/allocation/types.d.ts.map +1 -0
- package/dist/src/allocation/types.js +360 -0
- package/dist/src/allocation/types.js.map +1 -0
- package/dist/src/bind/func.d.ts +14 -0
- package/dist/src/bind/func.d.ts.map +1 -1
- package/dist/src/bind/func.js +22 -1
- package/dist/src/bind/func.js.map +1 -1
- package/dist/src/calendar/index.d.ts +510 -1639
- package/dist/src/calendar/index.d.ts.map +1 -1
- package/dist/src/calendar/index.js +56 -29
- package/dist/src/calendar/index.js.map +1 -1
- package/dist/src/flowchart/canvas.d.ts +9 -21
- package/dist/src/flowchart/canvas.d.ts.map +1 -1
- package/dist/src/flowchart/canvas.js +10 -22
- package/dist/src/flowchart/canvas.js.map +1 -1
- package/dist/src/flowchart/flowchart.d.ts +19 -13
- package/dist/src/flowchart/flowchart.d.ts.map +1 -1
- package/dist/src/flowchart/flowchart.js.map +1 -1
- package/dist/src/flowchart/index.d.ts +44 -21
- package/dist/src/flowchart/index.d.ts.map +1 -1
- package/dist/src/flowchart/index.js +43 -20
- package/dist/src/flowchart/index.js.map +1 -1
- package/dist/src/flowchart/library.d.ts +166 -81
- package/dist/src/flowchart/library.d.ts.map +1 -1
- package/dist/src/flowchart/library.js +232 -105
- package/dist/src/flowchart/library.js.map +1 -1
- package/dist/src/flowchart/over.d.ts +9 -16
- package/dist/src/flowchart/over.d.ts.map +1 -1
- package/dist/src/flowchart/over.js +9 -16
- package/dist/src/flowchart/over.js.map +1 -1
- package/dist/src/flowchart/payload.d.ts +710 -508
- package/dist/src/flowchart/payload.d.ts.map +1 -1
- package/dist/src/flowchart/payload.js +128 -74
- package/dist/src/flowchart/payload.js.map +1 -1
- package/dist/src/flowchart/window.d.ts +132 -347
- package/dist/src/flowchart/window.d.ts.map +1 -1
- package/dist/src/flowchart/window.js +48 -55
- package/dist/src/flowchart/window.js.map +1 -1
- package/dist/src/index.d.ts +11 -7
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +14 -6
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal.d.ts +18 -7
- package/dist/src/internal.d.ts.map +1 -1
- package/dist/src/internal.js +28 -9
- package/dist/src/internal.js.map +1 -1
- package/dist/src/plan/event-rows.d.ts +26 -10
- package/dist/src/plan/event-rows.d.ts.map +1 -1
- package/dist/src/plan/event-rows.js +39 -13
- package/dist/src/plan/event-rows.js.map +1 -1
- package/dist/src/plan/ir.d.ts +244 -815
- package/dist/src/plan/ir.d.ts.map +1 -1
- package/dist/src/plan/ir.js +8 -6
- package/dist/src/plan/ir.js.map +1 -1
- package/dist/src/plan/library.d.ts +3 -0
- package/dist/src/plan/library.d.ts.map +1 -1
- package/dist/src/plan/library.js +1 -1
- package/dist/src/plan/library.js.map +1 -1
- package/dist/src/plan/ordered-source.d.ts +1 -0
- package/dist/src/plan/ordered-source.d.ts.map +1 -1
- package/dist/src/plan/plan.d.ts +559 -1667
- package/dist/src/plan/plan.d.ts.map +1 -1
- package/dist/src/plan/plan.js +123 -45
- package/dist/src/plan/plan.js.map +1 -1
- package/dist/src/plan/root.d.ts +16 -20
- package/dist/src/plan/root.d.ts.map +1 -1
- package/dist/src/plan/root.js +23 -33
- package/dist/src/plan/root.js.map +1 -1
- package/dist/src/roster/coverage.d.ts +17 -231
- package/dist/src/roster/coverage.d.ts.map +1 -1
- package/dist/src/roster/coverage.js +94 -90
- package/dist/src/roster/coverage.js.map +1 -1
- package/dist/src/roster/fit.d.ts +59 -0
- package/dist/src/roster/fit.d.ts.map +1 -0
- package/dist/src/roster/fit.js +155 -0
- package/dist/src/roster/fit.js.map +1 -0
- package/dist/src/roster/index.d.ts +2862 -3662
- package/dist/src/roster/index.d.ts.map +1 -1
- package/dist/src/roster/index.js +383 -81
- package/dist/src/roster/index.js.map +1 -1
- package/dist/src/roster/library.d.ts +37 -92
- package/dist/src/roster/library.d.ts.map +1 -1
- package/dist/src/roster/library.js +25 -64
- package/dist/src/roster/library.js.map +1 -1
- package/dist/src/roster/lists.d.ts +195 -0
- package/dist/src/roster/lists.d.ts.map +1 -0
- package/dist/src/roster/lists.js +233 -0
- package/dist/src/roster/lists.js.map +1 -0
- package/dist/src/roster/rules.d.ts +17 -260
- package/dist/src/roster/rules.d.ts.map +1 -1
- package/dist/src/roster/rules.js +135 -132
- package/dist/src/roster/rules.js.map +1 -1
- package/dist/src/roster/targets.d.ts +115 -0
- package/dist/src/roster/targets.d.ts.map +1 -0
- package/dist/src/roster/targets.js +213 -0
- package/dist/src/roster/targets.js.map +1 -0
- package/dist/src/roster/times.d.ts +251 -0
- package/dist/src/roster/times.d.ts.map +1 -0
- package/dist/src/roster/times.js +174 -0
- package/dist/src/roster/times.js.map +1 -0
- package/dist/src/roster/types.d.ts +828 -183
- package/dist/src/roster/types.d.ts.map +1 -1
- package/dist/src/roster/types.js +224 -97
- package/dist/src/roster/types.js.map +1 -1
- package/dist/src/schedule/accessor.d.ts +28 -0
- package/dist/src/schedule/accessor.d.ts.map +1 -0
- package/dist/src/schedule/accessor.js +39 -0
- package/dist/src/schedule/accessor.js.map +1 -0
- package/dist/src/schedule/events.d.ts +170 -42
- package/dist/src/schedule/events.d.ts.map +1 -1
- package/dist/src/schedule/events.js +431 -171
- package/dist/src/schedule/events.js.map +1 -1
- package/dist/src/schedule/index.d.ts +41 -4
- package/dist/src/schedule/index.d.ts.map +1 -1
- package/dist/src/schedule/index.js +35 -3
- package/dist/src/schedule/index.js.map +1 -1
- package/dist/src/schedule/library.d.ts +13 -3
- package/dist/src/schedule/library.d.ts.map +1 -1
- package/dist/src/schedule/library.js +11 -4
- package/dist/src/schedule/library.js.map +1 -1
- package/dist/src/schedule/periods.d.ts +115 -0
- package/dist/src/schedule/periods.d.ts.map +1 -0
- package/dist/src/schedule/periods.js +215 -0
- package/dist/src/schedule/periods.js.map +1 -0
- package/dist/src/schedule/record-window.d.ts +25 -3
- package/dist/src/schedule/record-window.d.ts.map +1 -1
- package/dist/src/schedule/record-window.js +31 -18
- package/dist/src/schedule/record-window.js.map +1 -1
- package/dist/src/schedule/resources.d.ts +82 -4
- package/dist/src/schedule/resources.d.ts.map +1 -1
- package/dist/src/schedule/resources.js +44 -14
- package/dist/src/schedule/resources.js.map +1 -1
- package/dist/src/schedule/session.d.ts +69 -0
- package/dist/src/schedule/session.d.ts.map +1 -0
- package/dist/src/schedule/session.js +121 -0
- package/dist/src/schedule/session.js.map +1 -0
- package/dist/src/schedule/templates.d.ts +14 -2
- package/dist/src/schedule/templates.d.ts.map +1 -1
- package/dist/src/schedule/templates.js +5 -3
- package/dist/src/schedule/templates.js.map +1 -1
- package/dist/src/schedule/types.d.ts +1671 -37
- package/dist/src/schedule/types.d.ts.map +1 -1
- package/dist/src/schedule/types.js +196 -5
- package/dist/src/schedule/types.js.map +1 -1
- package/dist/src/schedule/window.d.ts +14 -0
- package/dist/src/schedule/window.d.ts.map +1 -1
- package/dist/src/schedule/window.js +14 -4
- package/dist/src/schedule/window.js.map +1 -1
- package/dist/src/schedule/words.d.ts +22 -0
- package/dist/src/schedule/words.d.ts.map +1 -0
- package/dist/src/schedule/words.js +25 -0
- package/dist/src/schedule/words.js.map +1 -0
- package/dist/src/sheet/index.d.ts +61 -27
- package/dist/src/sheet/index.d.ts.map +1 -1
- package/dist/src/sheet/index.js +59 -25
- package/dist/src/sheet/index.js.map +1 -1
- package/dist/src/sheet/library.d.ts +21 -3
- package/dist/src/sheet/library.d.ts.map +1 -1
- package/dist/src/sheet/library.js +23 -6
- package/dist/src/sheet/library.js.map +1 -1
- package/dist/src/sheet/registers.d.ts +100 -85
- package/dist/src/sheet/registers.d.ts.map +1 -1
- package/dist/src/sheet/registers.js +100 -85
- package/dist/src/sheet/registers.js.map +1 -1
- package/dist/src/sheet/root.d.ts +8 -12
- package/dist/src/sheet/root.d.ts.map +1 -1
- package/dist/src/sheet/root.js +6 -40
- package/dist/src/sheet/root.js.map +1 -1
- package/dist/src/sheet/sheet.d.ts +598 -2349
- package/dist/src/sheet/sheet.d.ts.map +1 -1
- package/dist/src/sheet/sheet.js +124 -37
- package/dist/src/sheet/sheet.js.map +1 -1
- package/dist/src/sheet/sub-rows.d.ts +74 -28
- package/dist/src/sheet/sub-rows.d.ts.map +1 -1
- package/dist/src/sheet/sub-rows.js +74 -28
- package/dist/src/sheet/sub-rows.js.map +1 -1
- package/dist/src/sheet/templates.d.ts +98 -34
- package/dist/src/sheet/templates.d.ts.map +1 -1
- package/dist/src/sheet/templates.js +102 -58
- package/dist/src/sheet/templates.js.map +1 -1
- package/dist/src/sheet/types.d.ts +289 -1359
- package/dist/src/sheet/types.d.ts.map +1 -1
- package/dist/src/sheet/types.js +20 -26
- package/dist/src/sheet/types.js.map +1 -1
- package/dist/src/sheet/views.d.ts +10 -11
- package/dist/src/sheet/views.d.ts.map +1 -1
- package/dist/src/sheet/views.js +15 -20
- package/dist/src/sheet/views.js.map +1 -1
- package/dist/src/{roster/visibility.d.ts → utils/key-visibility.d.ts} +42 -7
- package/dist/src/utils/key-visibility.d.ts.map +1 -0
- package/dist/src/utils/key-visibility.js +36 -0
- package/dist/src/utils/key-visibility.js.map +1 -0
- package/dist/src/utils/ordered-source.d.ts +1 -0
- package/dist/src/utils/ordered-source.d.ts.map +1 -1
- package/dist/src/utils/ordered-source.js +8 -3
- package/dist/src/utils/ordered-source.js.map +1 -1
- package/dist/src/utils/record-sources.d.ts +107 -0
- package/dist/src/utils/record-sources.d.ts.map +1 -0
- package/dist/src/utils/record-sources.js +132 -0
- package/dist/src/utils/record-sources.js.map +1 -0
- package/dist/test/allocation/allocation.examples.d.ts +2902 -0
- package/dist/test/allocation/allocation.examples.d.ts.map +1 -0
- package/dist/test/allocation/allocation.examples.js +643 -0
- package/dist/test/allocation/allocation.examples.js.map +1 -0
- package/dist/test/allocation/fit.examples.d.ts +546 -0
- package/dist/test/allocation/fit.examples.d.ts.map +1 -0
- package/dist/test/allocation/fit.examples.js +171 -0
- package/dist/test/allocation/fit.examples.js.map +1 -0
- package/dist/test/allocation/kiln-yard.d.ts +181 -0
- package/dist/test/allocation/kiln-yard.d.ts.map +1 -0
- package/dist/test/allocation/kiln-yard.js +228 -0
- package/dist/test/allocation/kiln-yard.js.map +1 -0
- package/dist/test/bind/data/data.examples.d.ts +651 -1
- package/dist/test/bind/data/data.examples.d.ts.map +1 -1
- package/dist/test/bind/data/data.examples.js +140 -2
- package/dist/test/bind/data/data.examples.js.map +1 -1
- package/dist/test/bind/func/func.examples.d.ts +10 -1
- package/dist/test/bind/func/func.examples.d.ts.map +1 -1
- package/dist/test/bind/func/func.examples.js +8 -1
- package/dist/test/bind/func/func.examples.js.map +1 -1
- package/dist/test/bind/record/record.examples.d.ts +633 -1
- package/dist/test/bind/record/record.examples.d.ts.map +1 -1
- package/dist/test/bind/record/record.examples.js +26 -2
- package/dist/test/bind/record/record.examples.js.map +1 -1
- package/dist/test/calendar/calendar-records.examples.d.ts.map +1 -1
- package/dist/test/calendar/calendar-records.examples.js +18 -14
- package/dist/test/calendar/calendar-records.examples.js.map +1 -1
- package/dist/test/calendar/calendar.examples.d.ts +521 -16
- package/dist/test/calendar/calendar.examples.d.ts.map +1 -1
- package/dist/test/calendar/calendar.examples.js +182 -135
- package/dist/test/calendar/calendar.examples.js.map +1 -1
- package/dist/test/examples-package.d.ts +75 -0
- package/dist/test/examples-package.d.ts.map +1 -0
- package/dist/test/examples-package.js +263 -0
- package/dist/test/examples-package.js.map +1 -0
- package/dist/test/flowchart/flowchart.examples.d.ts +211 -19
- package/dist/test/flowchart/flowchart.examples.d.ts.map +1 -1
- package/dist/test/flowchart/flowchart.examples.js +102 -75
- package/dist/test/flowchart/flowchart.examples.js.map +1 -1
- package/dist/test/plan/plan-events.examples.d.ts +1439 -209
- package/dist/test/plan/plan-events.examples.d.ts.map +1 -1
- package/dist/test/plan/plan-events.examples.js +199 -59
- package/dist/test/plan/plan-events.examples.js.map +1 -1
- package/dist/test/plan/plan-records.examples.d.ts +420 -0
- package/dist/test/plan/plan-records.examples.d.ts.map +1 -1
- package/dist/test/plan/plan-records.examples.js +70 -19
- package/dist/test/plan/plan-records.examples.js.map +1 -1
- package/dist/test/plan/plan-windows.examples.d.ts +636 -55
- package/dist/test/plan/plan-windows.examples.d.ts.map +1 -1
- package/dist/test/plan/plan-windows.examples.js +69 -33
- package/dist/test/plan/plan-windows.examples.js.map +1 -1
- package/dist/test/plan/plan.examples.d.ts +153 -31
- package/dist/test/plan/plan.examples.d.ts.map +1 -1
- package/dist/test/plan/plan.examples.js +178 -101
- package/dist/test/plan/plan.examples.js.map +1 -1
- package/dist/test/roster/domain.examples.d.ts +467 -250
- package/dist/test/roster/domain.examples.d.ts.map +1 -1
- package/dist/test/roster/domain.examples.js +92 -29
- package/dist/test/roster/domain.examples.js.map +1 -1
- package/dist/test/roster/roster-records.examples.d.ts +430 -586
- package/dist/test/roster/roster-records.examples.d.ts.map +1 -1
- package/dist/test/roster/roster-records.examples.js +102 -43
- package/dist/test/roster/roster-records.examples.js.map +1 -1
- package/dist/test/roster/roster.examples.d.ts +2319 -606
- package/dist/test/roster/roster.examples.d.ts.map +1 -1
- package/dist/test/roster/roster.examples.js +456 -148
- package/dist/test/roster/roster.examples.js.map +1 -1
- package/dist/test/roster/warehouse.d.ts +172 -63
- package/dist/test/roster/warehouse.d.ts.map +1 -1
- package/dist/test/roster/warehouse.js +172 -39
- package/dist/test/roster/warehouse.js.map +1 -1
- package/dist/test/schedule/schedule.examples.d.ts +3499 -0
- package/dist/test/schedule/schedule.examples.d.ts.map +1 -0
- package/dist/test/schedule/schedule.examples.js +192 -0
- package/dist/test/schedule/schedule.examples.js.map +1 -0
- package/dist/test/sheet/sheet-records.examples.d.ts.map +1 -1
- package/dist/test/sheet/sheet-records.examples.js +22 -18
- package/dist/test/sheet/sheet-records.examples.js.map +1 -1
- package/dist/test/sheet/sheet.examples.d.ts +715 -26
- package/dist/test/sheet/sheet.examples.d.ts.map +1 -1
- package/dist/test/sheet/sheet.examples.js +204 -130
- package/dist/test/sheet/sheet.examples.js.map +1 -1
- package/package.json +17 -10
- package/dist/src/roster/people.d.ts +0 -50
- package/dist/src/roster/people.d.ts.map +0 -1
- package/dist/src/roster/people.js +0 -32
- package/dist/src/roster/people.js.map +0 -1
- package/dist/src/roster/visibility.d.ts.map +0 -1
- package/dist/src/roster/visibility.js +0 -25
- package/dist/src/roster/visibility.js.map +0 -1
|
@@ -0,0 +1,159 @@
|
|
|
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
|
+
* The Allocation's adapters (#1371, `Builder Interfaces Spec.md` §6.1, §6.4):
|
|
7
|
+
* what the board books from, the app's keyed rows read as arrivals through
|
|
8
|
+
* accessors, `(row, key) => …`, each reified once into one East function and
|
|
9
|
+
* called per row, as `Schedule.resources` reifies its own; and the board's
|
|
10
|
+
* lanes and resources, built from their `Schedule.resources` kinds' accessors
|
|
11
|
+
* the same way. The board writes none of them: it writes the app's bins
|
|
12
|
+
* (`Schedule.events`) and its days (`Schedule.periods`).
|
|
13
|
+
*
|
|
14
|
+
* An arrival's `values` gives a bin booked from it the fields no role maps
|
|
15
|
+
* (B13). Those are the bin kind's, which only the tag holds, so `values` is
|
|
16
|
+
* reified there, at the bin kind's own fields (`allocationInitial`).
|
|
17
|
+
*
|
|
18
|
+
* @packageDocumentation
|
|
19
|
+
*/
|
|
20
|
+
import { ArrayType, BlobType, DateTimeType, FloatType, FunctionType, OptionType, StringType, type DictType, type EastType, type ExprType, type StructType, type SubtypeExprOrValue } from "@elaraai/east";
|
|
21
|
+
import { TimeStepType } from "@elaraai/east-ui";
|
|
22
|
+
import type { ScheduleResourceKind } from "../schedule/resources.js";
|
|
23
|
+
import { AllocationArrivalType, AllocationDetailType, AllocationIntervalType, AllocationLaneType, AllocationResourceType } from "./types.js";
|
|
24
|
+
/** Brands an arrivals declaration, so the tag knows one from any other value. @internal */
|
|
25
|
+
export declare const ALLOCATION_ARRIVALS: unique symbol;
|
|
26
|
+
/**
|
|
27
|
+
* One of an arrival's accessors: what it reads from the app's row and its key.
|
|
28
|
+
*
|
|
29
|
+
* @typeParam R - The app's row type
|
|
30
|
+
* @typeParam T - What it returns
|
|
31
|
+
*/
|
|
32
|
+
export type AllocationArrivalAccessor<R extends EastType, T extends EastType> = (row: ExprType<R>, key: ExprType<StringType>) => SubtypeExprOrValue<T>;
|
|
33
|
+
/**
|
|
34
|
+
* Accessors reading an app's rows as arrivals, what the board books from
|
|
35
|
+
* (§6.4).
|
|
36
|
+
*
|
|
37
|
+
* @typeParam R - The app's row type
|
|
38
|
+
*/
|
|
39
|
+
export interface AllocationArrivalsConfig<R extends EastType> {
|
|
40
|
+
/** Its code on cards, chips, captions and lists (`LD-2231`). */
|
|
41
|
+
label: AllocationArrivalAccessor<R, StringType>;
|
|
42
|
+
/** Its quantity, booked whole unless split: a bin booked from it takes it as its own. */
|
|
43
|
+
quantity: AllocationArrivalAccessor<R, FloatType>;
|
|
44
|
+
/** How long a resource holds a bin of it (`variant("days", 8)`): a bin booked from it keeps it. */
|
|
45
|
+
hold: AllocationArrivalAccessor<R, TimeStepType>;
|
|
46
|
+
/** What it goes with: a resource holding the same kind ranks it higher in `Allocation.fit`, and a bin booked from it keeps it. Omitted, none. */
|
|
47
|
+
kind?: AllocationArrivalAccessor<R, OptionType<StringType>>;
|
|
48
|
+
/** Its card's second line and the Table chip's tail (`BRK · R2 · spec MC12`). */
|
|
49
|
+
meta?: AllocationArrivalAccessor<R, OptionType<StringType>>;
|
|
50
|
+
/** When it is due: overdue before the plan day. */
|
|
51
|
+
due?: AllocationArrivalAccessor<R, OptionType<DateTimeType>>;
|
|
52
|
+
/** Its ready window, `[from, to)`. */
|
|
53
|
+
window?: AllocationArrivalAccessor<R, OptionType<AllocationIntervalType>>;
|
|
54
|
+
/** Read-only lines in a bin's inspector (`Settings`). */
|
|
55
|
+
details?: AllocationArrivalAccessor<R, ArrayType<AllocationDetailType>>;
|
|
56
|
+
/**
|
|
57
|
+
* A booked bin's own fields: the fields of the bin kind's row that no role maps, which a bin booked from it starts
|
|
58
|
+
* with (`(l) => ({ specBooked: l.spec, … })`). Omitted, each takes its type's default, as a reservation's always do.
|
|
59
|
+
*/
|
|
60
|
+
values?: (row: ExprType<R>, key: ExprType<StringType>) => unknown;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* An arrivals declaration: the app's rows and their accessors, each reified
|
|
64
|
+
* once (`Allocation.arrivals`), and the `values` the tag reifies at the bin
|
|
65
|
+
* kind's own fields.
|
|
66
|
+
*/
|
|
67
|
+
export interface AllocationArrivals {
|
|
68
|
+
/** The brand. */
|
|
69
|
+
readonly [ALLOCATION_ARRIVALS]: true;
|
|
70
|
+
/** Every arrival's row, by key. Erased, so arrivals of any rows are one declaration. */
|
|
71
|
+
readonly rows: ExprType<DictType<StringType, EastType>>;
|
|
72
|
+
/** The rows' type. */
|
|
73
|
+
readonly rowType: EastType;
|
|
74
|
+
/** One arrival from its row and its key: its accessors, each reified once and called once. */
|
|
75
|
+
readonly arrival: ExprType<FunctionType<[EastType, StringType], AllocationArrivalType>>;
|
|
76
|
+
/** The author's `values`, reified by the tag at the bin kind's own fields; `undefined` without one. */
|
|
77
|
+
readonly values: ((row: ExprType<EastType>, key: ExprType<StringType>) => unknown) | undefined;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Declares what the board books from: the arrivals, read from the app's keyed
|
|
81
|
+
* rows (§6.4).
|
|
82
|
+
*
|
|
83
|
+
* @typeParam R - The app's row type
|
|
84
|
+
* @param rows - Every arrival's row, by key — usually a record's `read()`: fits, checks and the library read every one
|
|
85
|
+
* @param config - The accessors; `values`, a booked bin's own fields
|
|
86
|
+
* @returns The declaration `<Allocation arrivals>` takes
|
|
87
|
+
* @throws {Error} When the rows are not a Dict keyed by String, or an accessor returns another type than it takes, naming what it returns
|
|
88
|
+
*
|
|
89
|
+
* @remarks
|
|
90
|
+
* Booking an arrival writes the bin's roles — `arrival` its key, `quantity`,
|
|
91
|
+
* `kind` and `hold` from these accessors, `parts` empty, `at` and `resource`
|
|
92
|
+
* where it is booked — and `values`' struct into the row's other fields.
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```tsx
|
|
96
|
+
* import { DictType, FloatType, StringType, StructType, variant } from "@elaraai/east";
|
|
97
|
+
* import { Allocation, Data } from "@elaraai/e3-ui";
|
|
98
|
+
* import e3 from "@elaraai/e3";
|
|
99
|
+
*
|
|
100
|
+
* const Load = StructType({ code: StringType, m3: FloatType, dryingDays: FloatType });
|
|
101
|
+
* const loads = e3.record("loads", DictType(StringType, Load), new Map());
|
|
102
|
+
*
|
|
103
|
+
* // Inside the board's Reactive body: every load the day may book.
|
|
104
|
+
* const arrivals = Allocation.arrivals(Data.bind(loads).read(), { label: (l) => l.code, quantity: (l) => l.m3, hold: (l) => variant("days", l.dryingDays) });
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
export declare function allocationArrivals<R extends EastType>(rows: ExprType<DictType<StringType, R>>, config: AllocationArrivalsConfig<R>): AllocationArrivals;
|
|
108
|
+
/**
|
|
109
|
+
* Whether a value is an arrivals declaration (`Allocation.arrivals`).
|
|
110
|
+
*
|
|
111
|
+
* @param value - What an app passed as `arrivals`
|
|
112
|
+
* @returns Whether it is one
|
|
113
|
+
* @internal
|
|
114
|
+
*/
|
|
115
|
+
export declare function isAllocationArrivals(value: unknown): value is AllocationArrivals;
|
|
116
|
+
/**
|
|
117
|
+
* Every arrival, read from the app's rows through the declaration's
|
|
118
|
+
* accessors, each called once per row, in the rows' key order.
|
|
119
|
+
*
|
|
120
|
+
* @param arrivals - The declaration
|
|
121
|
+
* @returns Every arrival
|
|
122
|
+
* @internal
|
|
123
|
+
*/
|
|
124
|
+
export declare function allocationArrivalsOf(arrivals: AllocationArrivals): ExprType<ArrayType<AllocationArrivalType>>;
|
|
125
|
+
/**
|
|
126
|
+
* The fields a bin booked from an arrival starts with, by the arrival's key:
|
|
127
|
+
* its `values`, as bytes at the bin kind's own fields (B13) — what the bin
|
|
128
|
+
* kind's `create` takes beside the bin's roles.
|
|
129
|
+
*
|
|
130
|
+
* @param arrivals - The declaration
|
|
131
|
+
* @param values - The bin kind's own fields, the ones no role maps (`allocationValues`)
|
|
132
|
+
* @returns An East function from an arrival's key to its starting fields as bytes at `values`; `none` for a key the arrivals do not hold, and for every key without `values`, so each field takes its type's default
|
|
133
|
+
* @throws {Error} When `values` returns another struct than `values`: a field missing, one the bin kind's own fields lack, or one of another type, naming both
|
|
134
|
+
* @internal
|
|
135
|
+
*/
|
|
136
|
+
export declare function allocationInitial(arrivals: AllocationArrivals, values: StructType): ExprType<FunctionType<[StringType], OptionType<BlobType>>>;
|
|
137
|
+
/**
|
|
138
|
+
* The lanes, built from the lanes' resource kind's accessors, each called
|
|
139
|
+
* once per row, in key order (§6.2): each takes a bin each `every`, at its
|
|
140
|
+
* `offset` past the slot's start — on the slot itself without one.
|
|
141
|
+
*
|
|
142
|
+
* @param kind - The lanes' resource kind, read whole and keyed by String
|
|
143
|
+
* @returns Every lane
|
|
144
|
+
* @throws {Error} For a kind read a window at a time, which the tag refuses before it builds the lanes
|
|
145
|
+
* @internal
|
|
146
|
+
*/
|
|
147
|
+
export declare function allocationLanesOf(kind: ScheduleResourceKind<EastType, EastType>): ExprType<ArrayType<AllocationLaneType>>;
|
|
148
|
+
/**
|
|
149
|
+
* The resources, built from the resources' kind's accessors, each called once
|
|
150
|
+
* per row, in key order (§6.2): every resource, whatever the narrowing shows,
|
|
151
|
+
* as fits, checks and totals read them.
|
|
152
|
+
*
|
|
153
|
+
* @param kind - The resources' kind, read whole and keyed by String, with `min` and `max`
|
|
154
|
+
* @returns Every resource; one with no `group` has none, no `note` none, no `hold` no time, and no `jobs` none
|
|
155
|
+
* @throws {Error} For a kind read a window at a time, or with no `min` or `max`, which the tag refuses before it builds the resources
|
|
156
|
+
* @internal
|
|
157
|
+
*/
|
|
158
|
+
export declare function allocationResourcesOf(kind: ScheduleResourceKind<EastType, EastType>): ExprType<ArrayType<AllocationResourceType>>;
|
|
159
|
+
//# sourceMappingURL=adapters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../../src/allocation/adapters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,241 @@
|
|
|
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
|
+
* The Allocation's adapters (#1371, `Builder Interfaces Spec.md` §6.1, §6.4):
|
|
7
|
+
* what the board books from, the app's keyed rows read as arrivals through
|
|
8
|
+
* accessors, `(row, key) => …`, each reified once into one East function and
|
|
9
|
+
* called per row, as `Schedule.resources` reifies its own; and the board's
|
|
10
|
+
* lanes and resources, built from their `Schedule.resources` kinds' accessors
|
|
11
|
+
* the same way. The board writes none of them: it writes the app's bins
|
|
12
|
+
* (`Schedule.events`) and its days (`Schedule.periods`).
|
|
13
|
+
*
|
|
14
|
+
* An arrival's `values` gives a bin booked from it the fields no role maps
|
|
15
|
+
* (B13). Those are the bin kind's, which only the tag holds, so `values` is
|
|
16
|
+
* reified there, at the bin kind's own fields (`allocationInitial`).
|
|
17
|
+
*
|
|
18
|
+
* @packageDocumentation
|
|
19
|
+
*/
|
|
20
|
+
import { ArrayType, BlobType, DateTimeType, East, Expr, FloatType, FunctionType, OptionType, StringType, isSubtype, isTypeEqual, none, printType, some, variant, } from "@elaraai/east";
|
|
21
|
+
import { TimeStepType } from "@elaraai/east-ui";
|
|
22
|
+
import { scheduleAccessor } from "../schedule/accessor.js";
|
|
23
|
+
import { AllocationArrivalType, AllocationDetailType, AllocationIntervalType, AllocationLaneType, AllocationResourceType } from "./types.js";
|
|
24
|
+
/** Brands an arrivals declaration, so the tag knows one from any other value. @internal */
|
|
25
|
+
export const ALLOCATION_ARRIVALS = Symbol("Allocation.arrivals");
|
|
26
|
+
/**
|
|
27
|
+
* Declares what the board books from: the arrivals, read from the app's keyed
|
|
28
|
+
* rows (§6.4).
|
|
29
|
+
*
|
|
30
|
+
* @typeParam R - The app's row type
|
|
31
|
+
* @param rows - Every arrival's row, by key — usually a record's `read()`: fits, checks and the library read every one
|
|
32
|
+
* @param config - The accessors; `values`, a booked bin's own fields
|
|
33
|
+
* @returns The declaration `<Allocation arrivals>` takes
|
|
34
|
+
* @throws {Error} When the rows are not a Dict keyed by String, or an accessor returns another type than it takes, naming what it returns
|
|
35
|
+
*
|
|
36
|
+
* @remarks
|
|
37
|
+
* Booking an arrival writes the bin's roles — `arrival` its key, `quantity`,
|
|
38
|
+
* `kind` and `hold` from these accessors, `parts` empty, `at` and `resource`
|
|
39
|
+
* where it is booked — and `values`' struct into the row's other fields.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```tsx
|
|
43
|
+
* import { DictType, FloatType, StringType, StructType, variant } from "@elaraai/east";
|
|
44
|
+
* import { Allocation, Data } from "@elaraai/e3-ui";
|
|
45
|
+
* import e3 from "@elaraai/e3";
|
|
46
|
+
*
|
|
47
|
+
* const Load = StructType({ code: StringType, m3: FloatType, dryingDays: FloatType });
|
|
48
|
+
* const loads = e3.record("loads", DictType(StringType, Load), new Map());
|
|
49
|
+
*
|
|
50
|
+
* // Inside the board's Reactive body: every load the day may book.
|
|
51
|
+
* const arrivals = Allocation.arrivals(Data.bind(loads).read(), { label: (l) => l.code, quantity: (l) => l.m3, hold: (l) => variant("days", l.dryingDays) });
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export function allocationArrivals(rows, config) {
|
|
55
|
+
const where = "Allocation.arrivals";
|
|
56
|
+
const type = rows instanceof Expr ? Expr.type(rows) : undefined;
|
|
57
|
+
if (type === undefined || type.type !== "Dict" || !isTypeEqual(type.key, StringType)) {
|
|
58
|
+
throw new Error(`${where}: arrivals are a Dict keyed by String — a record's read() — and these are ${type === undefined ? "no East value" : printType(type)}`);
|
|
59
|
+
}
|
|
60
|
+
const rowType = type.value;
|
|
61
|
+
const given = config;
|
|
62
|
+
for (const prop of ["label", "quantity", "hold"]) {
|
|
63
|
+
if (typeof given[prop] !== "function")
|
|
64
|
+
throw new Error(`${where}: \`${prop}\` is an accessor, (row, key) => …, which the board reads of every arrival — give it`);
|
|
65
|
+
}
|
|
66
|
+
// Each accessor, one East function, called per row (`shared/reify.ts`' rule), held to the type it returns.
|
|
67
|
+
const accessor = (prop, out, what, fn) => fn === undefined ? undefined
|
|
68
|
+
: scheduleAccessor(rowType, StringType, out, fn, (returns) => `${where}: \`${prop}\` returns ${what} — and this one returns ${returns}`);
|
|
69
|
+
const optString = OptionType(StringType);
|
|
70
|
+
const label = accessor("label", StringType, "a String, an arrival's code", given.label);
|
|
71
|
+
const quantity = accessor("quantity", FloatType, "a Float, an arrival's quantity", given.quantity);
|
|
72
|
+
const hold = accessor("hold", TimeStepType, "a TimeStep, how long a resource holds a bin of it", given.hold);
|
|
73
|
+
const kind = accessor("kind", optString, "an Option of a String, what an arrival goes with on a resource", given.kind);
|
|
74
|
+
const meta = accessor("meta", optString, "an Option of a String, an arrival's second line", given.meta);
|
|
75
|
+
const due = accessor("due", OptionType(DateTimeType), "an Option of a DateTime, when an arrival is due", given.due);
|
|
76
|
+
const window = accessor("window", OptionType(AllocationIntervalType), "an Option of an Allocation.Types.Interval, an arrival's ready window", given.window);
|
|
77
|
+
const details = accessor("details", ArrayType(AllocationDetailType), "an Array of Allocation.Types.Detail, the lines a bin's inspector shows", given.details);
|
|
78
|
+
// One arrival from its row: each accessor called once.
|
|
79
|
+
const arrival = East.function([rowType, StringType], AllocationArrivalType, ($, row, key) => {
|
|
80
|
+
const call = (fn, otherwise) => {
|
|
81
|
+
if (fn === undefined)
|
|
82
|
+
return otherwise;
|
|
83
|
+
const bound = $.const(fn);
|
|
84
|
+
return bound(row, key);
|
|
85
|
+
};
|
|
86
|
+
const labelOf = $.const(label);
|
|
87
|
+
const quantityOf = $.const(quantity);
|
|
88
|
+
const holdOf = $.const(hold);
|
|
89
|
+
return {
|
|
90
|
+
key, label: labelOf(row, key), meta: call(meta, East.value(none, optString)),
|
|
91
|
+
quantity: quantityOf(row, key), hold: holdOf(row, key), kind: call(kind, East.value(none, optString)),
|
|
92
|
+
due: call(due, East.value(none, OptionType(DateTimeType))), window: call(window, East.value(none, OptionType(AllocationIntervalType))),
|
|
93
|
+
details: call(details, East.value([], ArrayType(AllocationDetailType))),
|
|
94
|
+
};
|
|
95
|
+
});
|
|
96
|
+
return {
|
|
97
|
+
[ALLOCATION_ARRIVALS]: true,
|
|
98
|
+
rows: rows,
|
|
99
|
+
rowType,
|
|
100
|
+
arrival: arrival,
|
|
101
|
+
values: given.values,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Whether a value is an arrivals declaration (`Allocation.arrivals`).
|
|
106
|
+
*
|
|
107
|
+
* @param value - What an app passed as `arrivals`
|
|
108
|
+
* @returns Whether it is one
|
|
109
|
+
* @internal
|
|
110
|
+
*/
|
|
111
|
+
export function isAllocationArrivals(value) {
|
|
112
|
+
return typeof value === "object" && value !== null && !(value instanceof Expr) && value[ALLOCATION_ARRIVALS] === true;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Every arrival, read from the app's rows through the declaration's
|
|
116
|
+
* accessors, each called once per row, in the rows' key order.
|
|
117
|
+
*
|
|
118
|
+
* @param arrivals - The declaration
|
|
119
|
+
* @returns Every arrival
|
|
120
|
+
* @internal
|
|
121
|
+
*/
|
|
122
|
+
export function allocationArrivalsOf(arrivals) {
|
|
123
|
+
const make = arrivals.arrival;
|
|
124
|
+
return arrivals.rows.toArray(($, row, key) => {
|
|
125
|
+
const arrivalOf = $.const(make);
|
|
126
|
+
return arrivalOf(row, key);
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* The fields a bin booked from an arrival starts with, by the arrival's key:
|
|
131
|
+
* its `values`, as bytes at the bin kind's own fields (B13) — what the bin
|
|
132
|
+
* kind's `create` takes beside the bin's roles.
|
|
133
|
+
*
|
|
134
|
+
* @param arrivals - The declaration
|
|
135
|
+
* @param values - The bin kind's own fields, the ones no role maps (`allocationValues`)
|
|
136
|
+
* @returns An East function from an arrival's key to its starting fields as bytes at `values`; `none` for a key the arrivals do not hold, and for every key without `values`, so each field takes its type's default
|
|
137
|
+
* @throws {Error} When `values` returns another struct than `values`: a field missing, one the bin kind's own fields lack, or one of another type, naming both
|
|
138
|
+
* @internal
|
|
139
|
+
*/
|
|
140
|
+
export function allocationInitial(arrivals, values) {
|
|
141
|
+
const given = arrivals.values;
|
|
142
|
+
if (given === undefined) {
|
|
143
|
+
return East.function([StringType], OptionType(BlobType), (_$, _key) => East.value(none, OptionType(BlobType)));
|
|
144
|
+
}
|
|
145
|
+
// What `values` returns, as East infers it from its own body: an object literal missing a field, or holding one the
|
|
146
|
+
// struct lacks, is a struct of another shape, refused naming both rather than read as East would convert it.
|
|
147
|
+
const inferred = Expr.type(East.function([arrivals.rowType, StringType], undefined, (_$, row, key) => given(row, key))).output;
|
|
148
|
+
if (!isSubtype(inferred, values)) {
|
|
149
|
+
throw new Error(`Allocation.arrivals: \`values\` returns a booked bin's own fields, the bin kind's fields no role maps — ${printType(values)} — ` +
|
|
150
|
+
`and this one returns ${printType(inferred)}`);
|
|
151
|
+
}
|
|
152
|
+
const start = East.function([arrivals.rowType, StringType], values, (_$, row, key) => given(row, key));
|
|
153
|
+
const rows = arrivals.rows;
|
|
154
|
+
return East.function([StringType], OptionType(BlobType), ($, key) => {
|
|
155
|
+
const all = $.const(rows);
|
|
156
|
+
const startOf = $.const(start);
|
|
157
|
+
const result = $.let(none, OptionType(BlobType));
|
|
158
|
+
$.match(all.tryGet(key), {
|
|
159
|
+
some: ($2, row) => { $2.assign(result, some(East.Blob.encodeBeast(startOf(row, key), "v2"))); },
|
|
160
|
+
});
|
|
161
|
+
return result;
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* The lanes, built from the lanes' resource kind's accessors, each called
|
|
166
|
+
* once per row, in key order (§6.2): each takes a bin each `every`, at its
|
|
167
|
+
* `offset` past the slot's start — on the slot itself without one.
|
|
168
|
+
*
|
|
169
|
+
* @param kind - The lanes' resource kind, read whole and keyed by String
|
|
170
|
+
* @returns Every lane
|
|
171
|
+
* @throws {Error} For a kind read a window at a time, which the tag refuses before it builds the lanes
|
|
172
|
+
* @internal
|
|
173
|
+
*/
|
|
174
|
+
export function allocationLanesOf(kind) {
|
|
175
|
+
if (kind.source === undefined)
|
|
176
|
+
throw new Error("Allocation: the lanes' kind is read whole — give its rows as a Dict, usually a record's read()");
|
|
177
|
+
const { label, offset } = kind.accessors;
|
|
178
|
+
const lane = East.function([kind.rowType, kind.keyType], AllocationLaneType, ($, row, key) => {
|
|
179
|
+
const labelOf = $.const(label);
|
|
180
|
+
let at;
|
|
181
|
+
if (offset === undefined) {
|
|
182
|
+
at = variant("minutes", 0.0);
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
const offsetOf = $.const(offset);
|
|
186
|
+
at = offsetOf(row, key);
|
|
187
|
+
}
|
|
188
|
+
return { key: key, label: labelOf(row, key), offset: at };
|
|
189
|
+
});
|
|
190
|
+
return kind.source.toArray(($, row, key) => {
|
|
191
|
+
const make = $.const(lane);
|
|
192
|
+
return make(row, key);
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* The resources, built from the resources' kind's accessors, each called once
|
|
197
|
+
* per row, in key order (§6.2): every resource, whatever the narrowing shows,
|
|
198
|
+
* as fits, checks and totals read them.
|
|
199
|
+
*
|
|
200
|
+
* @param kind - The resources' kind, read whole and keyed by String, with `min` and `max`
|
|
201
|
+
* @returns Every resource; one with no `group` has none, no `note` none, no `hold` no time, and no `jobs` none
|
|
202
|
+
* @throws {Error} For a kind read a window at a time, or with no `min` or `max`, which the tag refuses before it builds the resources
|
|
203
|
+
* @internal
|
|
204
|
+
*/
|
|
205
|
+
export function allocationResourcesOf(kind) {
|
|
206
|
+
const a = kind.accessors;
|
|
207
|
+
const { min, max } = a;
|
|
208
|
+
if (kind.source === undefined || min === undefined || max === undefined) {
|
|
209
|
+
throw new Error("Allocation: the resources' kind is read whole and gives each resource's `min` and `max` — Schedule.resources(rows, { …, min, max })");
|
|
210
|
+
}
|
|
211
|
+
const resource = East.function([kind.rowType, kind.keyType], AllocationResourceType, ($, row, key) => {
|
|
212
|
+
const call = (fn, otherwise) => {
|
|
213
|
+
if (fn === undefined)
|
|
214
|
+
return otherwise;
|
|
215
|
+
const bound = $.const(fn);
|
|
216
|
+
return bound(row, key);
|
|
217
|
+
};
|
|
218
|
+
const labelOf = $.const(a.label);
|
|
219
|
+
const metaOf = $.const(a.meta);
|
|
220
|
+
const minOf = $.const(min);
|
|
221
|
+
const maxOf = $.const(max);
|
|
222
|
+
let group;
|
|
223
|
+
if (a.group === undefined) {
|
|
224
|
+
group = none;
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
const groupOf = $.const(a.group);
|
|
228
|
+
group = some(groupOf(row, key));
|
|
229
|
+
}
|
|
230
|
+
return {
|
|
231
|
+
key: key, label: labelOf(row, key), group, meta: metaOf(row, key),
|
|
232
|
+
note: call(a.note, East.value(none, OptionType(StringType))), min: minOf(row, key), max: maxOf(row, key),
|
|
233
|
+
hold: call(a.hold, East.value(variant("days", 0.0), TimeStepType)), jobs: call(a.jobs, East.value([], AllocationResourceType.fields.jobs)),
|
|
234
|
+
};
|
|
235
|
+
});
|
|
236
|
+
return kind.source.toArray(($, row, key) => {
|
|
237
|
+
const make = $.const(resource);
|
|
238
|
+
return make(row, key);
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=adapters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../../src/allocation/adapters.ts"],"names":[],"mappings":"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"}
|