mirror of
https://github.com/ragestudio/relic.git
synced 2025-06-27 03:14:18 +00:00
71 lines
1.7 KiB
JavaScript
Executable File
71 lines
1.7 KiB
JavaScript
Executable File
import { constants } from 'node:os'
|
|
|
|
import { SIGRTMAX } from './realtime.js'
|
|
import { getSignals } from './signals.js'
|
|
|
|
// Retrieve `signalsByName`, an object mapping signal name to signal properties.
|
|
// We make sure the object is sorted by `number`.
|
|
const getSignalsByName = () => {
|
|
const signals = getSignals()
|
|
return Object.fromEntries(signals.map(getSignalByName))
|
|
}
|
|
|
|
const getSignalByName = ({
|
|
name,
|
|
number,
|
|
description,
|
|
supported,
|
|
action,
|
|
forced,
|
|
standard,
|
|
}) => [name, { name, number, description, supported, action, forced, standard }]
|
|
|
|
export const signalsByName = getSignalsByName()
|
|
|
|
// Retrieve `signalsByNumber`, an object mapping signal number to signal
|
|
// properties.
|
|
// We make sure the object is sorted by `number`.
|
|
const getSignalsByNumber = () => {
|
|
const signals = getSignals()
|
|
const length = SIGRTMAX + 1
|
|
const signalsA = Array.from({ length }, (value, number) =>
|
|
getSignalByNumber(number, signals),
|
|
)
|
|
return Object.assign({}, ...signalsA)
|
|
}
|
|
|
|
const getSignalByNumber = (number, signals) => {
|
|
const signal = findSignalByNumber(number, signals)
|
|
|
|
if (signal === undefined) {
|
|
return {}
|
|
}
|
|
|
|
const { name, description, supported, action, forced, standard } = signal
|
|
return {
|
|
[number]: {
|
|
name,
|
|
number,
|
|
description,
|
|
supported,
|
|
action,
|
|
forced,
|
|
standard,
|
|
},
|
|
}
|
|
}
|
|
|
|
// Several signals might end up sharing the same number because of OS-specific
|
|
// numbers, in which case those prevail.
|
|
const findSignalByNumber = (number, signals) => {
|
|
const signal = signals.find(({ name }) => constants.signals[name] === number)
|
|
|
|
if (signal !== undefined) {
|
|
return signal
|
|
}
|
|
|
|
return signals.find((signalA) => signalA.number === number)
|
|
}
|
|
|
|
export const signalsByNumber = getSignalsByNumber()
|