Source: jscore/typedef.js

/**
 * @namespace typedef
 * @memberof Help4
 */

/**
 * @typedef {Object} Help4.typedef.HotspotSize
 * @property {string} size
 * @property {number} radius
 * @property {number} icon
 * @property {string} localization
 */

/**
 * @typedef {Object} Help4.typedef.CoreConfiguration
 * @property {?string} customTheme - custom base theme
 * @property {{uacp: string, wpb: string}} defaultLanguage
 * @property {boolean} editor - user has editor permission
 * @property {number} infoBarTimeout
 * @property {number} infoBarTimeoutError
 * @property {number} infoBarTimeoutWhatsNew
 * @property {boolean} isActiveCMP4 - whether CMP4 mode is active
 * @property {boolean} isEditMode - edit mode information
 * @property {boolean} isEditorView - information about author view (published view / author view)
 * @property {boolean} isRemoteMode - DA/WA mode enabled
 * @property {{_: string, uacp: string, wpb: string}} language - language
 * @property {boolean} mixedLanguages - allow mixed languages within tour and learning content
 * @property {string} languageFallbackMode - allow mixed languages within help content, values allowed - standard/mix and defaults to standard
 * @property {boolean} mobile - mobile mode enabled
 * @property {boolean} multifile - allow multifile requests to SEN servers
 * @property {string} noHelpMode - what happens in case of no help
 * @property {boolean} showMinimizeButton - show minimize button on panel
 * @property {boolean} showCloseButton - show close button on panel
 * @property {string} openImmediately - open panel immediately
 * @property {string} playbackTag - what tag to use for playback; default: "published"
 * @property {string} product - product
 * @property {boolean} readCatalogue
 * @property {string} resourceUrl - URL to all CMP resources
 * @property {?string} role - role of user
 * @property {boolean} rtl - enable RTL mode
 * @property {string} screenId - screen ID
 * @property {string} solution - for tracking purposes
 * @property {?string} system - system
 * @property {string} theme - theme name
 * @property {string} tenant - tenant info; only for public s/4 cloud customers
 * @property {string} version - version
 * @property {boolean} recentlyClosed
 */

/**
 * @typedef {Object} Help4.typedef.BPMConfiguration
 * @property {?string} arisBaseUrl - base URL to ARIS server
 * @property {?string} arisTenant - ARIS tenant ID
 */

/**
 * @typedef {Object} Help4.typedef.BrandingConfiguration
 * @property {?string} logoSrc
 * @property {?string} logoUrl
 */

/**
 * @typedef {Object} Help4.typedef.LearningConfiguration
 * @property {boolean} enabled - enable learning mode
 * @property {?string} learningAppBackendUrl - URL to SEN server
 * @property {?string} learningAppCommunityUrl - external URL to community
 * @property {boolean} learningAppFeedback - enable feedback
 * @property {?string} learningAppProjectMode - what project mode to use for learning
 * @property {?string} learningAppWorkspace - workspace id on SEN server
 * @property {?string} learningCenterUrl - URL to external learning center
 * @property {boolean} showLearningCenter - whether to show learning center
 */

/**
 * @typedef {Object} Help4.typedef.TrackingConfiguration
 * @property {?string} trackingUrlSEN - URL of SEN server that receives tracking information
 */

/**
 * @typedef {Object} Help4.typedef.HelpConfiguration
 * @property {?string} autoStartTour - tour to be auto-started on CMP boot
 * @property {?string} featureProfileUACP - will be send as "profile" to UACP server
 * @property {?string} mediaUrl - URl to resolve media from UACP against
 * @property {*} published - ???
 * @property {'uacp'|'wpb'} roModel - RO model information
 * @property {'uacp'|'wpb'} rwModel - RW model information
 * @property {boolean} showLaserBeam - show laser beam in help mode
 * @property {boolean} showShortDescription - whether to show description in tiles
 * @property {'uacp'|'wpb'|'ext'} serviceLayer - backend mode selection (UACP only, SEN only, mixed mode)
 * @property {string} serviceUrl - URL to RO backend
 * @property {?string} serviceUrl2 - URL to RW backend
 * @property {boolean} useGlobalHelp - whether global help feature is enabled
 * @property {?string} fioriApplication - fioriApplication identifier
 * @property {*} whatsNew - ???
 * @property {boolean} whatsNewDirect - play whatsnew immediately
 * @property {number} whatsNewExpiration - whatsnew expiration date
 * @property {boolean} useABAPHelpTexts - enable UR texts for WDA, SAP GUI, etc. in Fiori
 * @property {boolean} useURHotspots - enable UR hotspots for new content (XRAY-6405) - implicit with useABAPHelpTexts
 * @property {boolean} useUI5HelpTexts
 */

/**
 * @typedef {Object} Help4.typedef.FeatureConfiguration
 * @property {boolean} enableFioriSpacesMigration - XRAY-5098
 */

/**
 * @typedef {Object} Help4.typedef.TranslationConfiguration
 * @property {boolean} activeMLTranslation - MLT enabled
 * @property {boolean} allowMLTranslations - ???
 * @property {boolean} translationAvailable - ???
 */

/**
 * @typedef {Object} Help4.typedef.SystemConfiguration
 * @property {boolean} CMP4 - CMP4 mode enabled
 * @property {number} WM - WalkMe support mode
 * @property {Help4.typedef.CoreConfiguration} core - core configuration
 * @property {Help4.typedef.LearningConfiguration} learning - learning configuration
 * @property {Help4.typedef.TrackingConfiguration} tracking - tracking configuration
 * @property {Help4.typedef.HelpConfiguration} help - help & tour configuration
 * @property {Help4.typedef.FeatureConfiguration} features - feature configuration
 * @property {Help4.typedef.TranslationConfiguration} translation - translation configuration
 * @property {Help4.typedef.BPMConfiguration} bpm - BPM configuration
 * @property {Help4.typedef.BrandingConfiguration} branding - Branding configuration
 */

/**
 * iterates an array
 * @typedef {Function} Help4.typedef.MapExecutor
 * @param {*} item - the current item
 * @param {number} index - the current index
 * @param {Array<*>} array - the iterated array
 * @param {Object} [scope] - scope the iterator runs in
 */

/**
 * iterates an array
 * @typedef {Function} Help4.typedef.ForEachExecutor
 * @param {*} item - the current item
 * @param {number} index - the current index
 * @param {Array<*>} array - the iterated array
 * @param {Object} [scope] - scope the iterator runs in
 */

/**
 * iterates an array
 * @typedef {Function} Help4.typedef.EveryExecutor
 * @param {*} item - the current item
 * @param {number} index - the current index
 * @param {Array<*>} array - the iterated array
 * @param {Object} [scope] - scope the iterator runs in
 * @returns {boolean}
 */

/**
 * response of an XHR request
 * @typedef {Object} Help4.typedef.XmlHttpResponse
 * @property {number} status - xhr.status
 * @property {string} statusText - xhr.statusText
 * @property {string} responseText - xhr.responseText
 * @property {?XMLDocument} responseXML - xhr.responseXML
 * @property {boolean} [hasTimeout = false] - did a timeout occur?
 */

/**
 * @typedef {'once'|'always'} Help4.typedef.SplashOption
 */

/**
 * @typedef {
 *  'noicon'|
 *  'whatsthisapp'|
 *  'link'|
 *  'video'|
 *  'prerequisites'|
 *  'faq'|
 *  'pdf'|
 *  'external'|
 *  'support'
 * } Help4.typedef.TileIcons
 */

/**
 * @typedef {'auto'|'W'|'N'|'S'|'E'} Help4.typedef.BubbleOrientation
 */

/**
 * @typedef {
 *  'start'|
 *  'end'|
 *  'important'|
 *  'info'|
 *  'note'|
 *  'tip'|
 *  'action'
 * } Help4.typedef.BubbleType
 */

/**
 * @typedef {
 *  'default'|
 *  'expand'|
 *  'fade'|
 *  'pulse'|
 *  'scaleup'|
 *  'shake'|
 *  'shrink'|
 *  'wobble'
 * } Help4.typedef.BubbleAnimationType
 */

/**
 * @typedef {
 *  'attachment'|
 *  'help'|
 *  'info'|
 *  'learn'|
 *  'link'|
 *  'news'|
 *  'step'|
 *  'star'|
 *  'support'|
 *  'tip'|
 *  'tour'|
 *  'whatsnew'|
 *  'change'|
 *  'compliance'|
 *  'maintain'|
 *  'note'|
 *  'update'|
 *  'warning'
 * } Help4.typedef.HotspotIconType
 */

/**
 * @typedef {'R'|'Q'|'A'|'B'|'C'|'D'|'E'|'F'|'G'|'H'|'I'|'J'|'K'|'L'|'M'|'N'|'O'|'P'} Help4.typedef.HotspotIconPosition
 */