Utilities and helpers for Brazen user scripts framework
Dieses Skript sollte nicht direkt installiert werden. Es handelt sich hier um eine Bibliothek für andere Skripte, welche über folgenden Befehl in den Metadaten eines Skriptes eingebunden wird // @require https://update.greasyfork.org/scripts/375557/1867302/Brazen%20Framework%20-%20Utilities.js
Foundation module: shared helpers with no site logic. Every other Brazen Framework module depends on this script.
Greasy Fork: Utilities · Loads first among framework modules (after jQuery).
| Constant | Value | Use |
|---|---|---|
REGEX_LINE_BREAK |
/\r?\n/g |
Split textarea rules (Configuration Manager rulesets) |
REGEX_PRESERVE_NUMBERS |
/\D/g |
Strip non-digits from strings |
Fluent MutationObserver wrapper for childList add/remove on a single node.
| Method | Returns | Description |
|---|---|---|
ChildObserver.create() |
ChildObserver |
Factory |
observe(node) |
this |
Attach to a DOM Node |
onNodesAdded(handler) |
this |
(nodes, previousSibling, nextSibling, target) => void |
onNodesRemoved(handler) |
this |
Same callback signature |
pauseObservation() |
— | disconnect() |
resumeObservation() |
— | Re-attach with same options |
The framework uses ChildObserver on each itemListSelectors entry so infinite scroll and AJAX lists receive compliance without manual hooks. Use directly only for non-compliance DOM watching.
ChildObserver.create()
.onNodesAdded((nodes) => { /* ... */ })
.observe(document.querySelector('#results'))
localStorage wrapper with defaults, change callbacks, and optional nested-object serialization.
Constructor: new LocalStore(key, defaultsObject)
| Method | Returns | Description |
|---|---|---|
get() |
Object |
Parse stored JSON; if empty, calls restoreDefaults() |
save(data) |
this |
JSON.stringify + setItem; fires onChange |
delete() |
this |
removeItem |
restoreDefaults() |
Object |
Writes defaults and sets wereDefaultsSet() flag |
onChange(handler) |
this |
(storeObject) => void after every save |
wereDefaultsSet() |
boolean |
true when last get() fell back to defaults |
Nested objects: If stored JSON has top-level arrays, objects, and properties keys, get() uses Utilities.objectFromJSON for round-trip of nested arrays/objects. Plain JSON objects are returned as parsed.
Configuration Manager uses LocalStore for the local driver aggregate ({scriptPrefix}settings / {scriptPrefix}settings-id).
General persistence backends used by Configuration Manager. Constants: STORAGE_DRIVER_LOCAL ('local'), STORAGE_DRIVER_GM ('gm').
| Class | Backend |
|---|---|
StorageDriver |
Abstract: read, write, remove, readStore, writeStore |
LocalStorageDriver |
localStorage |
GmStorageDriver |
Tampermonkey GM_getValue / GM_setValue / GM_deleteValue |
DriverStore |
Aggregate settings wrapper over any StorageDriver (same role as LocalStore for non-local backends) |
Fields default to the local driver; chain attachStorage('gm') after add*Field to use GM storage. Self-managed field types (ledger) call driver primitives directly.
Builds prefixed kebab-case selectors for generated UI fragments.
Constructor: new SelectorGenerator(selectorPrefix) — typically scriptPrefix from the app.
| Method | Returns | Example |
|---|---|---|
getSelector(selector) |
string |
prefix + selector |
getSettingsInputSelector(settingName) |
string |
{prefix}{kebab-name}-setting |
getSettingsRangeInputSelector(name, getMin) |
string |
{prefix}{kebab-name}-min-setting or -max-setting |
getStatLabelSelector(statisticType) |
string |
Used as element id for stat labels |
StatisticsRecorder and View Layer stat widgets use getStatLabelSelector.
Tracks per-filter removal counts and updates DOM labels.
Constructor: new StatisticsRecorder(selectorPrefix)
| Method | Description |
|---|---|
record(statisticType, validationResult, value = 1) |
Increments statisticType and Total only when validationResult is falsy (item failed) |
getTotal() |
Sum of all non-compliant hits |
reset() |
Zero all counters |
updateUI() |
Writes counts to elements whose id matches getStatLabelSelector(type) |
Pair statisticType with config keys used in createStatisticsFormGroup(key) so bottom-panel labels reflect hide counts.
Optional per-rule diagnostics when trackComplianceRules: true on the framework.
| Method | Description |
|---|---|
record(configKey, ruleLabel, count = 1) |
Accumulate hides per filter + rule label |
reset() |
Clear all recorded rules |
getReport(resolveFilterLabel?) |
Sorted report: [{ filterKey, filterLabel, rules: [{ label, count }] }] |
resolveFilterLabel maps internal keys to human-readable filter titles (framework passes Configuration Manager field titles).
| Method | Signature | Notes |
|---|---|---|
sleep |
(ms) => Promise |
Throttles deep attribute loads, paginator fetches, download queue |
callEventHandler |
(handler, params?, defaultValue?) |
Invokes handler or returns default |
callEventHandlerOrFail |
(name, handler, params?) |
Throws if handler missing |
processEventHandlerQueue |
(handlers[], params?, defaultValue?) |
Runs all handlers in order |
generateId |
`(prefix?) => number\ | string` |
toKebabCase |
(text) => string |
Lowercase, spaces → hyphens (tab ids, field keys) |
trimAndKeepNonEmptyStrings |
(strings[]) => string[] |
Trim + drop empty |
buildWholeWordMatchingRegex |
`(words[]) => RegExp\ | null` |
objectToJSON |
(object) => string |
Nested structure with arrays / objects / properties |
objectFromJSON |
(json) => Object |
Inverse of objectToJSON |
await Utilities.sleep(500)
const pattern = Utilities.buildWholeWordMatchingRegex(['foo', 'bar'])
| Method | Signature | Behaviour |
|---|---|---|
isInRange |
(value, lower, upper) => boolean |
If both bounds > 0: inclusive range. If only lower > 0: value >= lower. If only upper > 0: value <= upper. |
doesChildExist |
(item: JQuery, selector) => boolean |
item.find(selector).length > 0 |
isChildMissing |
(item, selector) => boolean |
Inverse of above |
sanitize |
(text, rules) => string |
rules map: regex pattern → replacement string; then trim() |
sanitizeTextNode |
(textNode: JQuery, rules) => Validator |
Mutates node text |
sanitizeNodeOfSelector |
(selector, rules) => Validator |
Sanitizes node + document.title |
regexMatches |
(text, rules) => boolean |
true if no rules or regex matches |
validateTextDoesNotContain |
(text, rules) => boolean |
true if no rules or regex does not match |
iFramesRemover |
() |
Injects iframe { display: none !important; } via GM_addStyle |
Framework range filters and whitelist/blacklist paths use Validator internally. Custom comply callbacks often call isInRange and regexMatches.
This module declares no Tampermonkey grants. Grant GM_addStyle, GM_download, GM_getValue, GM_setValue, etc. on the application script as needed.
@run-at document-end
Next in stack: View Layer