Skip to content

Latest commit

 

History

History
413 lines (237 loc) · 13.5 KB

CHANGELOG.md

File metadata and controls

413 lines (237 loc) · 13.5 KB

@sv443-network/userutils

8.3.3

Patch Changes

  • ca8b62e: Made CJS bundle available on NPM too

8.3.2

Patch Changes

  • 99abaab: Made CJS bundle available on JSR

8.3.1

Patch Changes

  • 390110e: Throw an error when calling interceptEvent() on window or unsafeWindow on FireMonkey instead of crashing the entire page

8.3.0

Minor Changes

  • 1ecd63c: Added support for the signal property in fetchAdvanced()

8.2.0

Minor Changes

  • 3fe8b25: Added overload to mapRange() that only needs both max values and assumes 0 for both min values
  • d7e8a31: Added utility type Prettify to make complex types more readable
  • 8ec2010: Added randomCase parameter to the function randomId() (true by default)
  • d9a36d5: Added property migrateIds to the constructor of DataStore for easier ID migration
  • b2f757e: Added enhancedEntropy parameter to the function randRange() (false by default)

8.1.0

Minor Changes

  • 6296529: Added new DataStoreSerializer methods loadStoresData(), resetStoresData() and deleteStoresData() for parallelized bulk operations on DataStore instances
  • b0bce9c: Added DataStore method migrateId() to be able to migrate to a new ID

8.0.2

Patch Changes

  • a8bca8f: Added exports.types in addition to just types in package.json

8.0.1

Patch Changes

  • a92000b: Added exports to package.json and corrected module property

8.0.0

Major Changes

  • 54ee0ce: Changed hexToRgb() and rgbToHex() to support #RGBA and #RRGGBBAA color codes (with an alpha channel). Both functions now have an alpha value immediately after blue, which can be set to undefined to restore the old behavior.

Minor Changes

  • 54ee0ce: Added parameter upperCase (false by default) to lightenColor() and darkenColor()

Patch Changes

  • 54ee0ce: Consolidated behavior of lightenColor() and darkenColor() when using non-number values

7.3.0

Minor Changes

  • 7e8e147: - Added tr.forLang() to get the translation for a specified language code
    • Added tr.getTranslations() to return the translations object for the given or currently active language

7.2.2

Patch Changes

  • a171b0d: Fix color functions not being exported 🥴

7.2.1

Patch Changes

  • e00d4d9: Fixed dev-only TypeScript shims being included in the final bundle

7.2.0

Minor Changes

  • 3b8aa88: Added color manipulation functions hexToRgb(), rgbToHex(), lightenColor() and darkenColor()
  • 7303aa2: Added setInnerHtmlUnsafe() for setting innerHTML unsanitized using a Trusted Types policy

Patch Changes

  • 7303aa2: Made addGlobalStyle() use the new setInnerHtmlUnsafe() to fix the error "This document requires 'TrustedHTML' assignment" on Chromium-based browsers

7.1.0

Minor Changes

  • 7335c59: Added Dialog class for easily creating customizable modal dialogs
  • ca50132: Added NanoEmitter class for lightweight event emitter functionality in both OOP and FP

7.0.1

Patch Changes

  • d8f6852: Fix package.json exports

7.0.0

Major Changes

  • fadebf0: Removed the function insertAfter() because the DOM API already has the method insertAdjacentElement() that has the same functionality and even four positions to pick from. To get the same behavior as insertAfter(refElem, newElem), you can use refElem.insertAdjacentElement("afterend", newElem)

Minor Changes

  • ca6ff58: Added option checkInterval to SelectorObserver to check on interval instead of on mutation
  • 1e2015c: Added DataStoreSerializer class for centralized and much easier and safer de-/serialization of any number of DataStore instances
  • 5190f0b: SelectorObserver's addListener() now returns an unsubscribe function to more easily remove a listener
  • e1d467c: Added function computeHash() to calculate the hash / checksum of a string
  • 948ac89: DataStore: made runMigrations, encodeData and decodeData public and added encodingEnabled method
  • d7cdac0: Made randomId() default to using Math.random() and added the parameter enhancedEntropy to revert back to the much slower but also much more entropic implementation
  • 287b006: Added ability to change DataStore storage engine from default "GM" to "localStorage" and "sessionStorage"

6.3.0

Minor Changes

  • fa09004: Made openInNewTab() use GM.openInTab by default and fall back to the old behavior. Also added background param to specify if the tab should get focus when opened.

6.2.0

Minor Changes

  • 0173235: Add property to change the debounce edge in SelectorObserver instances

6.1.0

Minor Changes

  • a11ed77: Added parameter to switch debounce() to trigger on the rising edge, instead of just the falling edge (see docs)

6.0.1

Patch Changes

  • 08248c1: Fixed terminology in JSDoc comments of the DataStore class

6.0.0

Major Changes

  • e921593: Renamed ConfigManager to DataStore to make its implied purpose as a generic JSON database more clear.
    • the constructor property defaultConfig is now called defaultData
    • deleteConfig() is now called deleteData()
    • the internal GM storage keys will still have the prefix _uucfg for backwards compatibility

Minor Changes

  • da679c6: Added function getSiblingsFrame() that returns a frame of an element's siblings, with a given alignment and size

Patch Changes

  • 0c716a6: Lowered the Error.stackTraceLimit by a multiple of 10 to preserve memory

5.0.1

Patch Changes

  • 2b885c3: ConfigManager.loadData() now returns a copy of the data

5.0.0

Major Changes

  • c980ff3: compress() now uses the same value "string" (unlike previously "base64") for the outputType parameter like decompress()

Minor Changes

  • ca1b596: Added encodeData() and decodeData() to the ConfigManager options to allow for easy data compression

4.2.1

Patch Changes

  • 0462e35: Fixed TS types for overload of SelectorObserver constructor

4.2.0

Minor Changes

  • 47639f0: Added SelectorObserver options disableOnNoListeners and enableOnAddListener
  • 4a58caa: addGlobalStyle now returns the created style element
  • 5038967: fetchAdvanced is now a drop-in replacement and timeout can now optionally be disabled

Patch Changes

  • 17a6ad5: randomizeArray now returns a copy if an empty array is passed as well

4.1.0

Minor Changes

  • 885323d: Added function observeElementProp to allow observing element property changes

4.0.0

Major Changes

  • dae5450: Removed amplifyMedia function due to massive inconsistencies in sound quality

Minor Changes

  • 168c2aa: Added functions compress and decompress to compress and decompress strings using gzip or deflate
  • 49bc85e: Added utility types NonEmptyString and LooseUnion

Patch Changes

  • 2ae665d: fixed wrong TS type for SelectorObserver options in constructor

3.0.0

Major Changes

  • 1859022: onSelector() has been turned into the SelectorObserver class to reduce the performance impact on larger sites:

    • its instances can be scoped to any element lower in the DOM tree, unlike before where it was always observing the entire body with all its children
    • separate instances can be disabled and reenabled individually on demand
    • separate instances can have different MutationObserver options set to further reduce performance impact
    • the separation into instances allows for a new "chaining" paradigm where selector listeners are only added and checked for once they are actually needed (see examples in the documentation)
    • when using chaining, separate instances can be created and have listeners added to them before their base element is available in the DOM tree
    • every listener can have a set debounce time, so that it doesn't get called too often (works the same as the debounce() function, but is disabled by default)
    • there are now multiple methods to get and delete specific listeners

    The SelectorObserver.addListener() method is backwards compatible with the old onSelector() function, so you can just add the class instance in front (for full backwards compat use document.body for the baseElement parameter of the constructor), then change the old function's name and it should work as before. For more info and examples, please view the SelectorObserver documentation

Minor Changes

  • 0db73b5: Removed the limiter (DynamicsCompressorNode) from amplifyMedia() for clear and undistorted audio.

    Notable changes:

    • The property source has been renamed to sourceNode to fit the naming of the gainNode property
    • A boolean property enabled has been added to check if the amplification is enabled or not
    • The parameter initialMultiplier has been renamed to initialGain to reduce confusion (it is not a multiplier strictly speaking)
  • 736784f: Added function randomId() to randomly generate cryptographically strong hexadecimal IDs

  • 563e515: Added utility type NonEmptyArray for typing an array with at least 1 item

Patch Changes

  • a123da6: Added @linkcode references to the JSDoc in-IDE documentation

2.0.1

Patch Changes

  • 63af1a7: Change default limiter options to be more balanced

2.0.0

Major Changes

  • b53a946: Added compression to amplifyMedia() to prevent audio clipping and distortion and modified return type accordingly:
    • Renamed: amplify() to setGain() and getAmpLevel() to getGain()
    • Added properties: enable(), disable(), setLimiterOptions() and limiterNode
    • Other changes: Amplification is no longer enabled automatically, enable() must now be called manually after initializing

1.2.0

Minor Changes

  • 84b37f1: Added utility type Stringifiable to describe a string or any value that can be converted to one
  • 142c5e2: Added function insertValues() to insert values into a string with placeholders
  • 16ce257: Added lightweight translation system

1.1.3

Patch Changes

  • ad17374: Add support for OpenUserJS

1.1.2

Patch Changes

  • 049aeb0: Export ConfigMigrationsDict for easier use with TypeScript

1.1.1

Patch Changes

  • 4799a9f: Fix TS error in ConfigManager migration functions

1.1.0

Minor Changes

  • db5cded: Added isScrollable() to check whether an element has a horizontal or vertical scroll bar

Patch Changes

  • 9e26464: Replaced most occurrences of HTMLElement in the docs with Element for better compatibility

1.0.0

Major Changes

  • a500a98: Added ConfigManager to manage persistent user configurations including data versioning and migration

Patch Changes

  • 6d0a700: Event interceptor can now be toggled at runtime (#16)
  • d038b21: Global (IIFE) build now comes with a header

0.5.3

Patch Changes

  • f97dae6: change bundling process

0.5.2

Patch Changes

  • 18d4a10: make npm bundle smaller

0.5.1

Patch Changes

  • aa8efbd: fix documentation

0.5.0

Minor Changes

  • 54e7905: Features:

    • add function amplifyMedia() to boost the volume of a MediaElement past its default maximum
    • allow all MutationObserver.observe() options to be passed to initOnSelector()

    Fixes:

    • fix onSelector() not triggering correctly

0.4.1

Patch Changes

  • 85ec87b: fix missing export for array functions

0.4.0

Minor Changes

  • 231a79c: Refactored code and documentation and added new functions:
    • mapRange() to map a number from one range to the same spot in another range
    • randRange() to generate a random number between a min and max boundary
    • randomItem() to return a random item from an array
    • randomItemIndex() to return a tuple of a random item and its index from an array
    • takeRandomItem() to return a random item from an array and mutate it to remove the item
    • randomizeArray() to return a copy of the array with its items in a random order

Patch Changes

  • 7edf837: decrease npm bundle size

0.3.0

Minor Changes

  • 07ec443: add getSelectorMap() to return all currently registered selectors

0.2.0

Minor Changes

  • 0cf2254: add onSelector() to call a listener once a selector is found in the DOM

0.1.1

Patch Changes

  • bb60db0: minor fixes

0.1.0

Minor Changes

  • 9206f6e: Initial release - Features:
    • onSelector() to call a listener once a selector is found in the DOM
    • autoPlural() to automatically pluralize a string
    • clamp() to clamp a number between a min and max value
    • pauseFor() to pause the execution of a function for a given amount of time
    • debounce() to call a function only once, after a given amount of time
    • getUnsafeWindow() to get the unsafeWindow object or fall back to the regular window object
    • insertAfter() to insert an element as a sibling after another element
    • addParent() to add a parent element around another element
    • addGlobalStyle() to add a global style to the page
    • preloadImages() to preload images into the browser cache for faster loading later on
    • fetchAdvanced() as a wrapper around the fetch API with a timeout option
    • openInNewTab() to open a link in a new tab
    • interceptEvent() to conditionally intercept events registered by addEventListener() on any given EventTarget object
    • interceptWindowEvent() to conditionally intercept events registered by addEventListener() on the window object