* add linting for no-param-reassign and fix resulting linting errors

* add linting for prefer-object-spread and fix resulting linting errors

* add linting for no-restricted-syntax and fix 1/2 of resulting errors

* add linting for no-prototype-builtins and fix resulting linting errors

* add linting for class-methods-use-this and fix most resulting errors. Add /tools and /tests to linter. Update height in UpgradeBanner

* finish linting for class-methods-use-this

* add linting for no-mixed-operators and fix resulting linting errors

* add linting for import/prefer-default-export and fix resulting linting errors

* add linting for react/no-access-state-in-setstate and fix resulting linting errors

* add linting for react/jsx-props-no-spreading and fix resulting linting errors

* finish linting errors for no-restricted-syntax. 1 remains: couldn't resolve removing iterator loops for urlSearchParams

* Fix linting errors resulting from the merge with develop

* Refactor UNSAFE_componentWillMount into either constructor or componentDidMount, leave notes for how decision was made.

* Refactor UNSAFE_componentWillReceiveProps to componentDidUpdate or getDerivedStateFromProps

* re-enable lint exception for no-prototype-builtins and revert calls back to hasOwnProperty

* add single line exception for no-restricted-syntax linting rule

* add linting for react/destructuring-assignment and fix errors. ToDo: test code and check for errors

* Fix minor bugs

* Fix General Settings last updated text

* rework linting rule no-param-reassign to have more exceptions and param object destructuring

* Remove file and line linting exceptions.

* re-add linting rule react/sort-comp and fix resulting errors

* remove added linting exception consistent-return and fix resulting errors

* remove added linting expression no-use-before-define and fix resulting errors. fix BugDB.js bug.

* Fix linting error

* fix minor bugs

* Code cleanup: fix PromoModal imports

* remove unnecessary hasOwnProperty calls after refactored for...in loops

* Fix missing strings bug

* Fix last remaining string bug

* Begin work on a global object for debugging.

* Add accountEvents array to Ghostery Debug for logging login/out events

* Add way to output window.GHOSTERY for the user

* prevent error when not signed in

* Promises don't reject, just give important data to user

* Download DebugInfo as a JSON file.

* Fix linting error

* Fix bug with race condition on Debug Information page

* Add translation string for opening debug information page

* address some issues on PR

* Address remaining PR issues

* Update Help component test snapshot

* Remove front-end parts of the debugging interface. Debugger will be console only

* Remove log key reference from README

* Remove LOG global and refactor log utility to gate on debug value instead of log value

* Delete unneeded debug_information message handler from background

* Implement logging toggle in console debugger

* Implement globals getter with support for string and regex literal arguments for console debugger

* Add support for hitting AB server with arbitrary ir from debug console

* Reorganize the tab info objects

* Rename getActiveTabInfo to accurately reflect function. Add support for logging that overrides global logging setting

* Add help and status method stubs to GhosteryDebug. Add support for getting all conf props, a single one, or a subset using regexp

* Improve pretty printing for GhosteryDebug help and status methods

* Only expose global GHOSTERY debug option if consoleDebug is set in manifest

* Factor out getting an object slice to getObjectSlice utility function

* Remove the consoleDebug manifest key and related code

* Add support for forcing promo modal display to console debugger

* Rename GHOSTERY console debug object to ghostery because toggling Caps Lock is ANNoyINg

* Fleshing out help function for console debugger

* Prettify ghostery console debugger help function output. Continue fleshing out help contents

* Continue fleshing out debugger help. Add first handling of a case where a function name is passed in to the help method

* Exploring console API to format debugger output better

* Continue iterating on debugger output formatting

* Add ads to console debugger

* Iterate on debugger help output

* Flesh out implementation of ghosteryDebug#getConfData output. Flesh out debugger help output for this function

* Flesh out implementation of ghosteryDebug#getGlobals output and its help output

* Factor pickRandomArrEl function out to utils, flesh it out, and document it. Revise help output for getABTests to conform to standard format for function help output. Remove addition of linebreaks from typeset method to help fix and improve output formatting. Adjust output styles accordingly and define sub header styles.

* Give debugger's typeset method the responsibility for adding new lines before and after debugger help output. Add CSS style markers for a standard way to specify which styles the printToConsole method should apply

* Fix bug in debugger output formatting

* Add debugger help output for ghostery.hitABServerWithIr()

* Begin to factor out help strings from GhosteryDebug#help to a static field on GhosteryDebug

* Factor help strings out to static class fields on GhosteryDebug

* Organize GhosteryDebug by grouping formatting and output code and grouping help CLI & strings. Document GhosteryDebug#printToConsole and GhosteryDebug#typeset. Add ToC.

* Rearrange static class fields in help strings section of GhosteryDebug to account for the apparent fact that static class fields must be defined before being referenced by other class fields. Fix small typos.

* Move toggleLogging to settings GhosteryDebug instance field. Move status to settings.show. Move isLog and objectDisplayStyle into settings

* Add help output for GhosteryDebug#settings.toggleLogging

* Add help output for GhosteryDebug#settings.show(). Standardize show() and toggleLogging() output to use typeset() and printToConsole(). Add Babel support for optional chaining syntax

* Flesh out help output for GhosteryDebug#settings.show

* Begin GhosteryDebug#settings.setOutputStyle implementation. Factor common printToConsole code out to a helper

* Finish implementing GhosteryDebug#settings.toggleOutputStyle. Factor out common code in the settings togglers to helper methods

* Flesh out GhosteryDebugger#forceOnePromoModalDisplay to produce formatted output and handle bad arguments. Rework PromoModals so that modals can be added, removed, and priority-shifted around without necessitating any changes to the GhosteryDebug help output or other code.

* Factor string array assembly out from GhosteryDebugger#help to a helper that can be called independently by other methods. Update showPromoModal output to use the standard formatting provided by the typeset & printToConsole chain. Improve docs for PromoModals#showPromoModal. Make the PromoModals#showPromoModal argument handling case-insensitive. Add PromoModals.getActiveModalTypes. Improve getObjectSlice util function docs. Improve pickRandomArrEl util function docs and error messaging. Add capitalize utility function. Solve global warming.

* Remove some unused or redundant code from GhosteryDebug

* Prep printToConsole and typeset for handling objects, so that printToConsole and its helpers can take sole responsibility for console calls

* Add error handling to getObjectSlice util function and return whether a match was found, so we can provide better messaging about the return values in GhosteryDebug methods that use the utility

* Adjust error check order in getObjectSlice util function

* Remove extra line

* Pipe getConfData and getGlobals output through the standard typeset / printToConsole  chain

* Move GhosteryDebug#_outputObjectSlice out of the printing section since it now delegates printing to printToConsole

* Convert GhosteryDebug#getABTests to use standard typeset and printToConsole output pipeline. Factor pushing an object to output array as object or string based on debugger setting out to helper

* Update ABTest to support hitting the A/B server without automatically logging out the return values

* Implement standardized output formatting and error checking for GhosteryDebug#hitABServerWithIr

* rename hitABServerWithIr to hitABServerWithIrAsync to make it clear that it is beautiful

* Rename hitABServerWithIrAsync to fetchABTestsWithIr cos it is shorter and will match fetchCMPCampaigns

* Replace some magic strings. Clean up fetchABTestsWithIr output formatting

* Rework debugger log toggling to avoid creating a circular dependency

* Replace '__SUBHEADER__' magic string with string constant

* Replace '__MAINHEADER__' magic string with string constant

* Replace '__HIGHLIGHT__' CSS marker magic string with string constant in GhosteryDebugger

* Allow changing values of CSS marker string constants without having to modify GhosteryDebug#printToConsole or printFormatted

* Variety of minor org and doc tweaks to GhosteryDebug

* Minor reorg in GhosteryDebug

* Rework CMP to accept fetch requests from debugger

* Continue implementing GhosteryDebug#fetchCMPCampaigns. Improve documentation for several utility functions.

* Fleshing out documentation for GhosteryDebug fields

* Further document fields in GhosteryDebug

* Flesh out fetchCMPCampaigns implementation to conform to standard output formatting. Add docs

* add openPanel function to debugger for automation testing

* rename debugger class

* rename ghostery debugger vars

* open intro hub and android panel from debugger

* Cut Debugger#getDebugInfo

* Remove babel optional chaining plugin and the couple Debugger lines that used it

* Update naming and itdy up export

* rework getActiveTabInfo and add to help menu

* Refactor Debugger#getUserData to print to console better and to handle errors better

* Convert Debugger#getUserData to an arrow func. JSDoc it.

* Add help output for Debugger#getUserData. Clean up main help menu a little.

* handle undefined returns in console

* Print account events at the end of Debugger#getUserData output

* Cap Debugger accountEvents array at 1000 most recent events

* Update help output for Debugger#getUserData

* Fix typo

* Conceal Debugger _toggleSettingsHelper from console

* Rename Debugger accountEvents array to signal that it's private

* Add JSDocs for Debugger getABTests and getConfData. Tidy up existing JSDocs

* Add Debugger getGlobals JSDoc. Tidy up openPanel and openIntroHub JSDocs

* Add JSDoc for Debugger showPromoModal. Remove @async tag in other ones as it is only intended for use with functions defined with the async keyword

* Add Debugger addAccountEvent JSDoc

* Add JSDoc for Debugger _printObjectSlice

* Add JSDoc for Debugger _push

* JSDoc Debugger settings object and settings.show. Convert settings to a closure to force JSDoc to document inner properties

* JSDoc the Debugger's toggle setting methods

* Fix accountEvents printing in Debugger getUserData

* Fix bug that was preventing subscription data from showing in Debugger getUserData output

* Make it so timestamps are not double quoted in ghostery._accountEvents output

Co-authored-by: Christopher Tino <4699516+christophertino@users.noreply.github.com>
Co-authored-by: wlycdgr <ilya.zarembsky@gmail.com>
Co-authored-by: Christopher Tino <christopher_tino@yahoo.com>