mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-27 00:52:50 +00:00
42 lines
1.5 KiB
TypeScript
42 lines
1.5 KiB
TypeScript
/**
|
|
* EDR run-number pairs, keyed by the odd EXPORT run (Ethiopia → Djibouti). The
|
|
* even IMPORT run (Djibouti → Ethiopia) is fixed by the export run.
|
|
*
|
|
* Run numbers are always 4 digits (8401, never 84001). Pairs are listed out
|
|
* rather than computed from the 8001/+100/+1 pattern, so a run that ever breaks
|
|
* the convention stays correct here.
|
|
*
|
|
* SeedWagonRunNumbers2280000000000 carries its own frozen copy on purpose: a
|
|
* migration must keep doing what it did when it was applied, whereas this list
|
|
* is live config for the update script. Add or retire runs HERE.
|
|
*/
|
|
export const TRAIN_RUN_PAIRS: Record<string, string> = {
|
|
'8001': '8002',
|
|
'8101': '8102',
|
|
'8201': '8202',
|
|
'8301': '8302',
|
|
'8401': '8402',
|
|
'8501': '8502',
|
|
'8601': '8602',
|
|
'8701': '8702',
|
|
'8801': '8802',
|
|
'8901': '8902',
|
|
'9001': '9002',
|
|
};
|
|
|
|
/** Even IMPORT run -> its odd EXPORT run. Derived so the two cannot drift. */
|
|
export const EXPORT_BY_IMPORT: Record<string, string> = Object.fromEntries(
|
|
Object.entries(TRAIN_RUN_PAIRS).map(([exportRun, importRun]) => [importRun, exportRun]),
|
|
);
|
|
|
|
/**
|
|
* Normalise any run number to its EXPORT run. Accepts either half of a pair, so
|
|
* a sheet listing "8002" and one listing "8001" both resolve to the same train.
|
|
* Returns null when the number belongs to no known run.
|
|
*/
|
|
export const toExportRun = (run: string): string | null => {
|
|
const value = run.trim();
|
|
if (TRAIN_RUN_PAIRS[value]) return value;
|
|
return EXPORT_BY_IMPORT[value] ?? null;
|
|
};
|