Skip to main content
function schedule<R, S, T>(config): Schedule;
Create a schedule definition. Returns an immutable Schedule that can be composed via .with() and solved via .solve().

Type Parameters

R

R extends readonly string[]

S

S extends readonly string[] = readonly []

T

T extends Record<string, SemanticTimeEntry> = Record<string, SemanticTimeEntry>

Parameters

config
required

Returns

Schedule

Example

const venue = schedule({
  roleIds: ["waiter", "runner", "manager"],
  skillIds: ["senior"],
  times: {
    lunch: time({ startTime: t(12), endTime: t(15) }),
    dinner: time(
      { startTime: t(17), endTime: t(21) },
      { startTime: t(18), endTime: t(22), dayOfWeek: weekend },
    ),
  },
  coverage: [
    cover("lunch", "waiter", 2),
    cover("dinner", "waiter", 4, { dayOfWeek: weekdays }),
    cover("dinner", "waiter", 5, { dayOfWeek: weekend }),
    cover("dinner", "manager", 1),
  ],
  shiftPatterns: [
    shift("lunch_shift", t(11, 30), t(15)),
    shift("evening", t(17), t(22)),
  ],
  rules: [
    maxHoursPerDay(10),
    maxHoursPerWeek(48),
    minRestBetweenShifts(11),
  ],
});