90 lines
2.9 KiB
JavaScript
90 lines
2.9 KiB
JavaScript
fetch('/api/v1/info')
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
window.flags = data.reasonFlags;
|
|
})
|
|
.catch(error => console.error('Error fetching flags:', error));
|
|
|
|
/**
|
|
* Adds a flag to the current flags.
|
|
* @param {number} flags - The current set of flags.
|
|
* @param {number} flagToAdd - The flag to add.
|
|
* @returns {number} - The updated flags with the new flag added.
|
|
*/
|
|
function addFlag(flags, flagToAdd) {
|
|
return flags | flagToAdd;
|
|
}
|
|
|
|
/**
|
|
* Removes a flag from the current flags.
|
|
* @param {number} flags - The current set of flags.
|
|
* @param {number} flagToRemove - The flag to remove.
|
|
* @returns {number} - The updated flags with the flag removed.
|
|
*/
|
|
function removeFlag(flags, flagToRemove) {
|
|
return flags & ~flagToRemove;
|
|
}
|
|
|
|
/**
|
|
* Checks if a flag is set in the current flags.
|
|
* @param {number} flags - The current set of flags.
|
|
* @param {number} flagToCheck - The flag to check.
|
|
* @returns {boolean} - True if the flag is set, otherwise false.
|
|
*/
|
|
function hasFlag(flags, flagToCheck) {
|
|
return (flags & flagToCheck) !== 0;
|
|
}
|
|
|
|
/**
|
|
* Toggles a flag in the current flags.
|
|
* @param {number} flags - The current set of flags.
|
|
* @param {number} flagToToggle - The flag to toggle.
|
|
* @returns {number} - The updated flags with the flag toggled.
|
|
*/
|
|
function toggleFlag(flags, flagToToggle) {
|
|
return flags ^ flagToToggle;
|
|
}
|
|
|
|
/**
|
|
* Checks if all specified flags are set.
|
|
* @param {number} flags - The current set of flags.
|
|
* @param {number} flagsToCheck - The flags to check (can be multiple combined).
|
|
* @returns {boolean} - True if all specified flags are set, otherwise false.
|
|
*/
|
|
function hasAllFlags(flags, flagsToCheck) {
|
|
return (flags & flagsToCheck) === flagsToCheck;
|
|
}
|
|
|
|
/**
|
|
* Checks if any of the specified flags are set.
|
|
* @param {number} flags - The current set of flags.
|
|
* @param {number} flagsToCheck - The flags to check (can be multiple combined).
|
|
* @returns {boolean} - True if any of the specified flags are set, otherwise false.
|
|
*/
|
|
function hasAnyFlag(flags, flagsToCheck) {
|
|
return (flags & flagsToCheck) !== 0;
|
|
}
|
|
|
|
/**
|
|
* Generates a flag mapping from an array of names.
|
|
* @param {string[]} flagNames - An array of names to define as flags.
|
|
* @returns {Object} - An object where keys are the flag names and values are powers of 2.
|
|
*/
|
|
function defineFlags(flagNames) {
|
|
return flagNames.reduce((flags, name, index) => {
|
|
flags[name] = 1 << index; // Assign a power of 2 to each flag
|
|
return flags;
|
|
}, {});
|
|
}
|
|
|
|
/**
|
|
* Retrieves the names of the flags that are set.
|
|
* @param {number} flags - The current set of flags.
|
|
* @param {Object} flagDefinitions - An object where keys are flag names and values are powers of 2.
|
|
* @returns {string[]} - An array of flag names that are set.
|
|
*/
|
|
function getSetFlags(flags, flagDefinitions) {
|
|
return Object.keys(flagDefinitions).filter(flagName =>
|
|
(flags & flagDefinitions[flagName]) !== 0
|
|
);
|
|
} |