shinkansen-relay
Version:
602 lines (595 loc) • 13.6 kB
JavaScript
/**
* @typedef {RelayTypes.RegulateParamsType} RegulateParamsType
* @typedef {RelayTypes.RegulateType} RegulateType
*/
import debug from 'debug'
import {
Signals
} from 'shinkansen-signals'
const log = debug('shinkansen-relay')
log('`shinkansen` is awake')
/**
* @param {RegulateParamsType} params
* @returns {RegulateType}
*/
export default function regulate ({
HAS_ALPHA = false,
HAS_OMEGA = false,
HAS_ALPHA_CHANGED = false,
HAS_OMEGA_CHANGED = false,
WAS_ALPHA_DEFINED = false,
WAS_OMEGA_DEFINED = false
} = {}) {
log('regulate')
if (
HAS_ALPHA
) {
if (
HAS_OMEGA
) {
if (
HAS_ALPHA_CHANGED
) {
if (
HAS_OMEGA_CHANGED
) {
if (
WAS_ALPHA_DEFINED
) {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.CHANGE_ALPHA_CHANGE_OMEGA,
SERVICE: '001'
}
} else {
return {
SIGNAL: Signals.CHANGE_ALPHA_ENTER_OMEGA,
SERVICE: '002'
}
}
} else {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '003'
}
} else {
return {
SIGNAL: Signals.ENTER_ALPHA_ENTER_OMEGA,
SERVICE: '004'
}
}
}
} else {
if (
WAS_ALPHA_DEFINED
) {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '005'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '006'
}
}
} else {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '007'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '008'
}
}
}
}
} else {
if (
HAS_OMEGA_CHANGED
) {
if (
WAS_ALPHA_DEFINED
) {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.REMAIN_ALPHA_CHANGE_OMEGA,
SERVICE: '009'
}
} else {
return {
SIGNAL: Signals.REMAIN_ALPHA_ENTER_OMEGA,
SERVICE: '010'
}
}
} else {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '011'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '012'
}
}
}
} else {
if (
WAS_ALPHA_DEFINED
) {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.REMAIN_ALPHA_REMAIN_OMEGA,
SERVICE: '013'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '014'
}
}
} else {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '015'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '016'
}
}
}
}
}
} else {
if (
HAS_ALPHA_CHANGED
) {
if (
HAS_OMEGA_CHANGED
) {
if (
WAS_ALPHA_DEFINED
) {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.CHANGE_ALPHA_LEAVE_OMEGA,
SERVICE: '017'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '018'
}
}
} else {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '019'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '020'
}
}
}
} else {
if (
WAS_ALPHA_DEFINED
) {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '021'
}
} else {
return {
SIGNAL: Signals.CHANGE_ALPHA,
SERVICE: '022'
}
}
} else {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '023'
}
} else {
return {
SIGNAL: Signals.ENTER_ALPHA,
SERVICE: '024'
}
}
}
}
} else {
if (
HAS_OMEGA_CHANGED
) {
if (
WAS_ALPHA_DEFINED
) {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.REMAIN_ALPHA_LEAVE_OMEGA,
SERVICE: '025'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '026'
}
}
} else {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '027'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '028'
}
}
}
} else {
if (
WAS_ALPHA_DEFINED
) {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '029'
}
} else {
return {
SIGNAL: Signals.REMAIN_ALPHA,
SERVICE: '030'
}
}
} else {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '031'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '032'
}
}
}
}
}
}
} else {
if (
HAS_OMEGA
) {
if (
HAS_ALPHA_CHANGED
) {
if (
HAS_OMEGA_CHANGED
) {
if (
WAS_ALPHA_DEFINED
) {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '033'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '034'
}
}
} else {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '035'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '036'
}
}
}
} else {
if (
WAS_ALPHA_DEFINED
) {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '037'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '038'
}
}
} else {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '039'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '040'
}
}
}
}
} else {
if (
HAS_OMEGA_CHANGED
) {
if (
WAS_ALPHA_DEFINED
) {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '041'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '042'
}
}
} else {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '043'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '044'
}
}
}
} else {
if (
WAS_ALPHA_DEFINED
) {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '045'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '046'
}
}
} else {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '047'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '048'
}
}
}
}
}
} else {
if (
HAS_ALPHA_CHANGED
) {
if (
HAS_OMEGA_CHANGED
) {
if (
WAS_ALPHA_DEFINED
) {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.LEAVE_ALPHA_LEAVE_OMEGA,
SERVICE: '049'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '050'
}
}
} else {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '051'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '052'
}
}
}
} else {
if (
WAS_ALPHA_DEFINED
) {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '053'
}
} else {
return {
SIGNAL: Signals.LEAVE_ALPHA,
SERVICE: '054'
}
}
} else {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '055'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '056'
}
}
}
}
} else {
if (
HAS_OMEGA_CHANGED
) {
if (
WAS_ALPHA_DEFINED
) {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '057'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '058'
}
}
} else {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '059'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '060'
}
}
}
} else {
if (
WAS_ALPHA_DEFINED
) {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '061'
}
} else {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '062'
}
}
} else {
if (
WAS_OMEGA_DEFINED
) {
return {
SIGNAL: Signals.EXCEPTION,
SERVICE: '063'
}
} else {
return {
SIGNAL: Signals.INDEX,
SERVICE: '064'
}
}
}
}
}
}
}
}