SYMBOL INDEX (3797 symbols across 366 files) FILE: client/assets/ebooks/htmlParser.js class HtmlParser (line 204) | class HtmlParser { method constructor (line 208) | constructor(bookDoc) { method getContent (line 214) | getContent(bookDoc) { method getAnchoredDoc (line 234) | getAnchoredDoc() { method getContentList (line 237) | getContentList() { FILE: client/assets/ebooks/mobi.js function ab2str (line 5) | function ab2str(buf) { class Buffer (line 14) | class Buffer { method constructor (line 19) | constructor(capacity) { method write (line 26) | write(byte) { method get (line 34) | get(idx) { method size (line 46) | size() { method shrink (line 53) | shrink() { class Fragment (line 85) | class Fragment { method constructor (line 89) | constructor(capacity) { method write (line 95) | write(byte) { method full (line 103) | full() { method get (line 106) | get(idx) { class MobiFile (line 148) | class MobiFile { method constructor (line 156) | constructor(data) { method parse (line 163) | parse() { } method getUint8 (line 165) | getUint8() { method getUint16 (line 171) | getUint16() { method getUint32 (line 177) | getUint32() { method getStr (line 183) | getStr(size) { method skip (line 189) | skip(size) { method setoffset (line 193) | setoffset(_of) { method get_record_extrasize (line 197) | get_record_extrasize(data, flags) { method buffer_get_varlen (line 218) | buffer_get_varlen(data, pos) { method read_text (line 241) | read_text() { method read_text_record (line 251) | read_text_record(i) { method read_image (line 268) | read_image(idx) { method load (line 276) | load() { method load_pdbheader (line 282) | load_pdbheader() { method load_reclist (line 301) | load_reclist() { method load_record0 (line 312) | load_record0() { method load_record0_header (line 317) | load_record0_header() { method load_mobi_header (line 333) | load_mobi_header() { method load_exth_header (line 384) | load_exth_header() { method extractContent (line 388) | extractContent(s) { method render (line 393) | render(isElectron = false) { FILE: client/cypress/tests/components/cards/ItemSlider.cy.js function createMountOptions (line 5) | function createMountOptions(shelftype) { FILE: client/cypress/tests/components/cards/LazyBookCard.cy.js function createMountOptions (line 7) | function createMountOptions() { FILE: client/cypress/tests/utils/ElapsedPrettyExtended.cy.js function DHMStoSeconds (line 8) | function DHMStoSeconds(days, hours, minutes, seconds) { FILE: client/mixins/bookshelfCardsHelpers.js method data (line 9) | data() { method getComponentClass (line 18) | getComponentClass() { method getComponentName (line 25) | getComponentName() { method setCardSize (line 32) | async setCardSize() { method mountEntityCard (line 77) | mountEntityCard(index) { FILE: client/mixins/menuKeyboardNavigation.js method data (line 24) | data() { method menuNavigationHandler (line 30) | menuNavigationHandler(event) { method recalcScroll (line 60) | recalcScroll() { method isMenuItemSelected (line 79) | isMenuItemSelected(item) { FILE: client/mixins/uploadHelpers.js method data (line 4) | data() { method checkFileType (line 13) | checkFileType(filename) { method filterItemFiles (line 26) | filterItemFiles(files, mediaType) { method itemFromTreeItems (line 44) | itemFromTreeItems(items, mediaType) { method traverseForItem (line 58) | traverseForItem(folder, mediaType, depth = 1) { method fileTreeToItems (line 72) | fileTreeToItems(filetree, mediaType) { method getFilesDropped (line 97) | getFilesDropped(dataTransferItems) { method cleanBook (line 151) | cleanBook(book, index) { method cleanPodcast (line 181) | cleanPodcast(item, index) { method cleanItem (line 199) | cleanItem(item, mediaType, index) { method getItemsFromDataTransferItems (line 203) | async getItemsFromDataTransferItems(dataTransferItems, mediaType) { method getItemsFromFilelist (line 227) | getItemsFromFilelist(filelist, mediaType) { FILE: client/players/AudioTrack.js class AudioTrack (line 1) | class AudioTrack { method constructor (line 2) | constructor(track, sessionId, routerBasePath) { method fullContentUrl (line 23) | get fullContentUrl() { method relativeContentUrl (line 33) | get relativeContentUrl() { FILE: client/players/CastPlayer.js class CastPlayer (line 4) | class CastPlayer extends EventEmitter { method constructor (line 5) | constructor(ctx) { method currentTrack (line 33) | get currentTrack() { method initialize (line 37) | initialize() { method evtMediaInfoChanged (line 44) | evtMediaInfoChanged() { method destroy (line 67) | destroy() { method set (line 73) | async set(libraryItem, tracks, isHlsTranscode, startTime, playWhenRead... method resetStream (line 94) | resetStream(startTime) { method playPause (line 98) | playPause() { method play (line 102) | play() { method pause (line 106) | pause() { method getCurrentTime (line 110) | getCurrentTime() { method getDuration (line 115) | getDuration() { method setPlaybackRate (line 121) | setPlaybackRate(playbackRate) { method seek (line 125) | async seek(time, playWhenReady) { method setVolume (line 141) | setVolume(volume) { FILE: client/players/LocalAudioPlayer.js class LocalAudioPlayer (line 4) | class LocalAudioPlayer extends EventEmitter { method constructor (line 5) | constructor(ctx) { method currentTrack (line 27) | get currentTrack() { method initialize (line 31) | initialize() { method evtPlay (line 59) | evtPlay() { method evtPause (line 62) | evtPause() { method evtProgress (line 65) | evtProgress() { method evtEnded (line 69) | evtEnded() { method evtError (line 81) | evtError(error) { method evtLoadedMetadata (line 85) | evtLoadedMetadata(data) { method evtTimeupdate (line 97) | evtTimeupdate() { method destroy (line 103) | destroy() { method set (line 110) | set(libraryItem, tracks, isHlsTranscode, startTime, playWhenReady = fa... method setHlsStream (line 128) | setHlsStream() { method setDirectPlay (line 195) | setDirectPlay() { method loadCurrentTrack (line 203) | loadCurrentTrack() { method destroyHlsInstance (line 212) | destroyHlsInstance() { method resetStream (line 221) | async resetStream(startTime) { method playPause (line 227) | playPause() { method play (line 233) | play() { method pause (line 238) | pause() { method getCurrentTime (line 243) | getCurrentTime() { method getDuration (line 248) | getDuration() { method setPlaybackRate (line 254) | setPlaybackRate(playbackRate) { method seek (line 260) | seek(time, playWhenReady) { method setVolume (line 291) | setVolume(volume) { method isValidDuration (line 297) | isValidDuration(duration) { method getBufferedRanges (line 304) | getBufferedRanges() { method getLastBufferedTime (line 330) | getLastBufferedTime() { FILE: client/players/PlayerHandler.js class PlayerHandler (line 5) | class PlayerHandler { method constructor (line 6) | constructor(ctx) { method isCasting (line 28) | get isCasting() { method libraryItemId (line 31) | get libraryItemId() { method isPlayingCastedItem (line 34) | get isPlayingCastedItem() { method isPlayingLocalItem (line 37) | get isPlayingLocalItem() { method playerPlaying (line 40) | get playerPlaying() { method episode (line 43) | get episode() { method jumpForwardAmount (line 47) | get jumpForwardAmount() { method jumpBackwardAmount (line 50) | get jumpBackwardAmount() { method setSessionId (line 54) | setSessionId(sessionId) { method load (line 59) | load(libraryItem, episodeId, playWhenReady, playbackRate, startTimeOve... method switchPlayer (line 72) | switchPlayer(playWhenReady) { method setPlayerListeners (line 113) | setPlayerListeners() { method playerError (line 121) | playerError() { method playerFinished (line 129) | playerFinished() { method playerStateChange (line 141) | playerStateChange(state) { method playerTimeupdate (line 165) | playerTimeupdate(time) { method playerBufferTimeUpdate (line 169) | playerBufferTimeUpdate(buffertime) { method getDeviceId (line 173) | getDeviceId() { method prepare (line 182) | async prepare(forceTranscode = false) { method prepareOpenSession (line 203) | prepareOpenSession(session, playbackRate) { method prepareSession (line 217) | prepareSession(session) { method closePlayer (line 240) | closePlayer() { method resetPlayer (line 246) | resetPlayer() { method resetStream (line 258) | resetStream(startTime, streamId) { method startPlayInterval (line 270) | startPlayInterval() { method sendCloseSession (line 289) | sendCloseSession() { method sendProgressSync (line 308) | sendProgressSync(currentTime) { method stopPlayInterval (line 336) | stopPlayInterval() { method playPause (line 341) | playPause() { method play (line 345) | play() { method pause (line 349) | pause() { method getCurrentTime (line 353) | getCurrentTime() { method getDuration (line 357) | getDuration() { method jumpBackward (line 361) | jumpBackward() { method jumpForward (line 368) | jumpForward() { method setVolume (line 375) | setVolume(volume) { method setPlaybackRate (line 380) | setPlaybackRate(playbackRate) { method seek (line 386) | seek(time, shouldSync = true) { FILE: client/players/castUtils.js function getMediaInfoFromTrack (line 1) | function getMediaInfoFromTrack(libraryItem, castImage, track) { function buildCastMediaInfo (line 30) | function buildCastMediaInfo(libraryItem, coverUrl, tracks) { function buildCastQueueRequest (line 35) | function buildCastQueueRequest(libraryItem, coverUrl, tracks, startTime) { function castLoadMedia (line 68) | function castLoadMedia(castSession, request) { function buildCastLoadRequest (line 80) | function buildCastLoadRequest(libraryItem, coverUrl, tracks, startTime, ... FILE: client/plugins/i18n.js function loadTranslationStrings (line 134) | function loadTranslationStrings(code) { function loadi18n (line 147) | async function loadi18n(code) { function initialize (line 192) | async function initialize() { FILE: client/plugins/init.client.js function xmlToJson (line 159) | function xmlToJson(xml) { FILE: client/plugins/utils.js function supplant (line 229) | function supplant(str, subs) { FILE: client/plugins/version.js function parseSemver (line 4) | function parseSemver(ver) { function getReleases (line 28) | function getReleases() { function checkForUpdate (line 53) | async function checkForUpdate() { FILE: client/static/libarchive/wasm-gen/libarchive.js function locateFile (line 8) | function locateFile(path) { if (Module["locateFile"]) { return Module["l... function dynamicAlloc (line 8) | function dynamicAlloc(size) { var ret = HEAP32[DYNAMICTOP_PTR >> 2]; var... function getNativeTypeSize (line 8) | function getNativeTypeSize(type) { switch (type) { case "i1": case "i8":... function assert (line 8) | function assert(condition, text) { if (!condition) { abort("Assertion fa... function getCFunc (line 8) | function getCFunc(ident) { var func = Module["_" + ident]; assert(func, ... function ccall (line 8) | function ccall(ident, returnType, argTypes, args, opts) { var toC = { "s... function cwrap (line 8) | function cwrap(ident, returnType, argTypes, opts) { argTypes = argTypes ... function setValue (line 8) | function setValue(ptr, value, type, noSafe) { type = type || "i8"; if (t... function allocate (line 8) | function allocate(slab, types, allocator, ptr) { var zeroinit, size; if ... function getMemory (line 8) | function getMemory(size) { if (!runtimeInitialized) return dynamicAlloc(... function UTF8ArrayToString (line 8) | function UTF8ArrayToString(u8Array, idx, maxBytesToRead) { var endIdx = ... function UTF8ToString (line 8) | function UTF8ToString(ptr, maxBytesToRead) { return ptr ? UTF8ArrayToStr... function stringToUTF8Array (line 8) | function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) { i... function stringToUTF8 (line 8) | function stringToUTF8(str, outPtr, maxBytesToWrite) { return stringToUTF... function lengthBytesUTF8 (line 8) | function lengthBytesUTF8(str) { var len = 0; for (var i = 0; i < str.len... function writeArrayToMemory (line 8) | function writeArrayToMemory(array, buffer) { HEAP8.set(array, buffer) } function writeAsciiToMemory (line 8) | function writeAsciiToMemory(str, buffer, dontAddNull) { for (var i = 0; ... function demangle (line 8) | function demangle(func) { return func } function demangleAll (line 8) | function demangleAll(text) { var regex = /__Z[\w\d_]+/g; return text.rep... function jsStackTrace (line 8) | function jsStackTrace() { var err = new Error; if (!err.stack) { try { t... function stackTrace (line 8) | function stackTrace() { var js = jsStackTrace(); if (Module["extraStackT... function alignUp (line 8) | function alignUp(x, multiple) { if (x % multiple > 0) { x += multiple - ... function updateGlobalBufferViews (line 8) | function updateGlobalBufferViews() { Module["HEAP8"] = HEAP8 = new Int8A... function callRuntimeCallbacks (line 8) | function callRuntimeCallbacks(callbacks) { while (callbacks.length > 0) ... function preRun (line 8) | function preRun() { if (Module["preRun"]) { if (typeof Module["preRun"] ... function ensureInitRuntime (line 8) | function ensureInitRuntime() { if (runtimeInitialized) return; runtimeIn... function preMain (line 8) | function preMain() { FS.ignorePermissions = false; callRuntimeCallbacks(... function exitRuntime (line 8) | function exitRuntime() { runtimeExited = true } function postRun (line 8) | function postRun() { if (Module["postRun"]) { if (typeof Module["postRun... function addOnPreRun (line 8) | function addOnPreRun(cb) { __ATPRERUN__.unshift(cb) } function addOnPostRun (line 8) | function addOnPostRun(cb) { __ATPOSTRUN__.unshift(cb) } function getUniqueRunDependency (line 8) | function getUniqueRunDependency(id) { return id } function addRunDependency (line 8) | function addRunDependency(id) { runDependencies++; if (Module["monitorRu... function removeRunDependency (line 8) | function removeRunDependency(id) { runDependencies--; if (Module["monito... function isDataURI (line 8) | function isDataURI(filename) { return String.prototype.startsWith ? file... function getBinary (line 8) | function getBinary() { try { if (Module["wasmBinary"]) { return new Uint... function getBinaryPromise (line 8) | function getBinaryPromise() { if (!Module["wasmBinary"] && (ENVIRONMENT_... function createWasm (line 8) | function createWasm(env) { var info = { "env": env, "global": { "NaN": N... function ___buildEnvironment (line 8) | function ___buildEnvironment(environ) { var MAX_ENV_VALUES = 64; var TOT... function ___setErrNo (line 8) | function ___setErrNo(value) { if (Module["___errno_location"]) HEAP32[Mo... function trim (line 8) | function trim(arr) { var start = 0; for (; start < arr.length; start++) ... function isRealDir (line 8) | function isRealDir(p) { return p !== "." && p !== ".." } function toAbsolute (line 8) | function toAbsolute(root) { return function (p) { return PATH.join2(root... function done (line 8) | function done(err) { if (err) { if (!done.errored) { done.errored = true... function ensureParent (line 8) | function ensureParent(path) { var parts = path.split("/"); var parent = ... function base (line 8) | function base(path) { var parts = path.split("/"); return parts[parts.le... function doCallback (line 8) | function doCallback(err) { FS.syncFSRequests--; return callback(err) } function done (line 8) | function done(err) { if (err) { if (!done.errored) { done.errored = true... function LazyUint8Array (line 8) | function LazyUint8Array() { this.lengthKnown = false; this.chunks = [] } function processData (line 8) | function processData(byteArray) { function finish(byteArray) { if (preFi... function finish (line 8) | function finish() { if (fail == 0) onload(); else onerror() } function finish (line 8) | function finish() { if (fail == 0) onload(); else onerror() } function ___syscall140 (line 8) | function ___syscall140(which, varargs) { SYSCALLS.varargs = varargs; try... function ___syscall146 (line 8) | function ___syscall146(which, varargs) { SYSCALLS.varargs = varargs; try... function ___syscall168 (line 8) | function ___syscall168(which, varargs) { SYSCALLS.varargs = varargs; try... function ___syscall195 (line 8) | function ___syscall195(which, varargs) { SYSCALLS.varargs = varargs; try... function ___syscall196 (line 8) | function ___syscall196(which, varargs) { SYSCALLS.varargs = varargs; try... function ___syscall197 (line 8) | function ___syscall197(which, varargs) { SYSCALLS.varargs = varargs; try... function ___syscall221 (line 8) | function ___syscall221(which, varargs) { SYSCALLS.varargs = varargs; try... function ___syscall3 (line 8) | function ___syscall3(which, varargs) { SYSCALLS.varargs = varargs; try {... function ___syscall4 (line 8) | function ___syscall4(which, varargs) { SYSCALLS.varargs = varargs; try {... function ___syscall41 (line 8) | function ___syscall41(which, varargs) { SYSCALLS.varargs = varargs; try ... function ___syscall42 (line 8) | function ___syscall42(which, varargs) { SYSCALLS.varargs = varargs; try ... function ___syscall5 (line 8) | function ___syscall5(which, varargs) { SYSCALLS.varargs = varargs; try {... function ___syscall6 (line 8) | function ___syscall6(which, varargs) { SYSCALLS.varargs = varargs; try {... function _abort (line 8) | function _abort() { Module["abort"]() } function _emscripten_get_heap_size (line 8) | function _emscripten_get_heap_size() { return HEAP8.length } function abortOnCannotGrowMemory (line 8) | function abortOnCannotGrowMemory(requestedSize) { abort("OOM") } function emscripten_realloc_buffer (line 8) | function emscripten_realloc_buffer(size) { var PAGE_MULTIPLE = 65536; si... function _emscripten_resize_heap (line 8) | function _emscripten_resize_heap(requestedSize) { var oldSize = _emscrip... function _exit (line 8) | function _exit(status) { exit(status) } function _tzset (line 8) | function _tzset() { if (_tzset.called) return; _tzset.called = true; HEA... function _localtime_r (line 8) | function _localtime_r(time, tmPtr) { _tzset(); var date = new Date(HEAP3... function _localtime (line 8) | function _localtime(time) { return _localtime_r(time, ___tm_current) } function _emscripten_memcpy_big (line 8) | function _emscripten_memcpy_big(dest, src, num) { HEAPU8.set(HEAPU8.suba... function _mktime (line 8) | function _mktime(tmPtr) { _tzset(); var date = new Date(HEAP32[tmPtr + 2... function _posix_spawn_file_actions_addclose (line 8) | function _posix_spawn_file_actions_addclose() { err("missing function: p... function _posix_spawn_file_actions_adddup2 (line 8) | function _posix_spawn_file_actions_adddup2() { err("missing function: po... function _posix_spawn_file_actions_destroy (line 8) | function _posix_spawn_file_actions_destroy() { err("missing function: po... function _posix_spawn_file_actions_init (line 8) | function _posix_spawn_file_actions_init() { err("missing function: posix... function _fork (line 8) | function _fork() { ___setErrNo(11); return -1 } function _posix_spawnp (line 8) | function _posix_spawnp() { return _fork.apply(null, arguments) } function _timegm (line 8) | function _timegm(tmPtr) { _tzset(); var time = Date.UTC(HEAP32[tmPtr + 2... function _wait (line 8) | function _wait(stat_loc) { ___setErrNo(10); return -1 } function _waitpid (line 8) | function _waitpid() { return _wait.apply(null, arguments) } function intArrayFromString (line 8) | function intArrayFromString(stringy, dontAddNull, length) { var len = le... function ExitStatus (line 8) | function ExitStatus(status) { this.name = "ExitStatus"; this.message = "... function run (line 8) | function run(args) { args = args || Module["arguments"]; if (runDependen... function exit (line 8) | function exit(status, implicit) { if (implicit && Module["noExitRuntime"... function abort (line 8) | function abort(what) { if (Module["onAbort"]) { Module["onAbort"](what) ... FILE: client/static/libarchive/worker-bundle.js class r (line 1) | class r { constructor(e) { this._wasmModule = e, this._runCode = e.runCo... method constructor (line 1) | constructor(e) { this._wasmModule = e, this._runCode = e.runCode, this... method open (line 1) | open(e) { null !== this._file && (console.warn("Closing previous file"... method close (line 1) | close() { this._runCode.closeArchive(this._archive), this._wasmModule.... method hasEncryptedData (line 1) | hasEncryptedData() { this._archive = this._runCode.openArchive(this._f... method setPassphrase (line 1) | setPassphrase(e) { this._passphrase = e } method entries (line 1) | *entries(r = !1, t = null) { let n; for (this._archive = this._runCode... method _loadFile (line 1) | _loadFile(e, r, t) { try { const n = new Uint8Array(e); this._fileLeng... method _promiseHandles (line 1) | _promiseHandles() { let e = null, r = null; return { promise: new Prom... function m (line 1) | function m(e) { var r = M[q >> 2], t = r + e + 15 & -16; if (t <= Fe()) ... function h (line 1) | function h(e) { switch (e) { case "i1": case "i8": return 1; case "i16":... function y (line 1) | function y(e, r) { e || Ke("Assertion failed: " + r) } function E (line 1) | function E(e) { var r = n["_" + e]; return y(r, "Cannot call unknown fun... function _ (line 1) | function _(e, r, t, n, o) { var i = { string: function (e) { var r = 0; ... function b (line 1) | function b(e, r, t, n) { switch ("*" === (t = t || "i8").charAt(t.length... function S (line 1) | function S(e, r, t, n) { var o, i; "number" == typeof e ? (o = !0, i = e... function F (line 1) | function F(e) { return $ ? Le(e) : m(e) } function N (line 1) | function N(e, r, t) { for (var n = r + t, o = r; e[o] && !(o >= n);)++o;... function I (line 1) | function I(e, r) { return e ? N(R, e, r) : "" } function z (line 1) | function z(e, r, t, n) { if (!(n > 0)) return 0; for (var o = t, i = t +... function C (line 1) | function C(e, r, t) { return z(e, R, r, t) } function L (line 1) | function L(e) { for (var r = 0, t = 0; t < e.length; ++t) { var n = e.ch... function U (line 1) | function U(e, r, t) { for (var n = 0; n < e.length; ++n)P[r++ >> 0] = e.... function j (line 1) | function j() { var e = function () { var e = new Error; if (!e.stack) { ... function H (line 1) | function H(e, r) { return e % r > 0 && (e += r - e % r), e } function W (line 1) | function W() { n.HEAP8 = P = new Int8Array(A), n.HEAP16 = T = new Int16A... function Z (line 1) | function Z(e) { for (; e.length > 0;) { var r = e.shift(); if ("function... function oe (line 1) | function oe(e) { te++, n.monitorRunDependencies && n.monitorRunDependenc... function ie (line 1) | function ie(e) { if (te--, n.monitorRunDependencies && n.monitorRunDepen... function se (line 1) | function se(e) { return String.prototype.startsWith ? e.startsWith(ae) :... function fe (line 1) | function fe() { try { if (n.wasmBinary) return new Uint8Array(n.wasmBina... function le (line 1) | function le(e) { var r = { env: e, global: { NaN: NaN, Infinity: 1 / 0 }... function me (line 1) | function me(e) { return n.___errno_location && (M[n.___errno_location() ... function t (line 1) | function t(e) { for (var r = 0; r < e.length && "" === e[r]; r++); for (... function n (line 1) | function n(e) { return "." !== e && ".." !== e } function o (line 1) | function o(e) { return function (r) { return pe.join2(e, r) } } method constructor (line 1) | constructor() { this.preRun = [], this.postRun = [], this.totalDepende... method print (line 1) | print(...e) { console.log(e) } method printErr (line 1) | printErr(...e) { console.error(e) } method initFunctions (line 1) | initFunctions() { this.runCode = { getVersion: this.cwrap("get_version... method monitorRunDependencies (line 1) | monitorRunDependencies() { } method locateFile (line 1) | locateFile(e) { return `wasm-gen/${e}` } function c (line 1) | function c(e) { return e ? c.errored ? void 0 : (c.errored = !0, t(e)) :... function n (line 1) | function n(e) { for (var n = e.split("/"), o = r, i = 0; i < n.length - ... function o (line 1) | function o(e) { var r = e.split("/"); return r[r.length - 1] } method constructor (line 1) | constructor() { this.preRun = [], this.postRun = [], this.totalDepende... method print (line 1) | print(...e) { console.log(e) } method printErr (line 1) | printErr(...e) { console.error(e) } method initFunctions (line 1) | initFunctions() { this.runCode = { getVersion: this.cwrap("get_version... method monitorRunDependencies (line 1) | monitorRunDependencies() { } method locateFile (line 1) | locateFile(e) { return `wasm-gen/${e}` } function o (line 1) | function o(e) { return _e.syncFSRequests--, r(e) } method constructor (line 1) | constructor() { this.preRun = [], this.postRun = [], this.totalDepende... method print (line 1) | print(...e) { console.log(e) } method printErr (line 1) | printErr(...e) { console.error(e) } method initFunctions (line 1) | initFunctions() { this.runCode = { getVersion: this.cwrap("get_version... method monitorRunDependencies (line 1) | monitorRunDependencies() { } method locateFile (line 1) | locateFile(e) { return `wasm-gen/${e}` } function i (line 1) | function i(e) { if (e) return i.errored ? void 0 : (i.errored = !0, o(e)... function i (line 1) | function i() { this.lengthKnown = !1, this.chunks = [] } function d (line 1) | function d(t) { function d(t) { f && f(), u || _e.createDataFile(e, r, t... function c (line 1) | function c() { 0 == s ? r() : t() } function f (line 1) | function f() { 0 == u ? r() : t() } function Fe (line 1) | function Fe() { return P.length } function Ae (line 1) | function Ae(e) { var r = Fe(); if (e > 2147418112) return !1; for (var t... function Re (line 1) | function Re() { if (!Re.called) { Re.called = !0, M[ze() >> 2] = 60 * (n... function Be (line 1) | function Be(e, r, t) { var n = t > 0 ? t : L(e) + 1, o = new Array(n), i... function We (line 1) | function We(e) { this.name = "ExitStatus", this.message = "Program termi... function qe (line 1) | function qe(e) { function r() { n.calledRun || (n.calledRun = !0, g || (... function Ke (line 1) | function Ke(e) { throw n.onAbort && n.onAbort(e), void 0 !== e ? (d(e), ... class o (line 1) | class o { constructor() { this.preRun = [], this.postRun = [], this.tota... method constructor (line 1) | constructor() { this.preRun = [], this.postRun = [], this.totalDepende... method print (line 1) | print(...e) { console.log(e) } method printErr (line 1) | printErr(...e) { console.error(e) } method initFunctions (line 1) | initFunctions() { this.runCode = { getVersion: this.cwrap("get_version... method monitorRunDependencies (line 1) | monitorRunDependencies() { } method locateFile (line 1) | locateFile(e) { return `wasm-gen/${e}` } FILE: client/static/libs/marked/index.js function i (line 6) | function i(e,t){for(var u=0;ue.length)&&(t=e.length);for(var u=0,n=new Ar... function b (line 6) | function b(e,t){var u,n="undefined"!=typeof Symbol&&e[Symbol.iterator]||... function e (line 6) | function e(){return{baseUrl:null,breaks:!1,extensions:null,gfm:!0,header... function u (line 6) | function u(e){return t[e]} function D (line 6) | function D(e,t){if(t){if(n.test(e))return e.replace(l,u)}else if(a.test(... function x (line 6) | function x(e){return e.replace(c,function(e,t){return"colon"===(t=t.toLo... function p (line 6) | function p(u,e){u="string"==typeof u?u:u.source,e=e||"";var n={replace:f... function g (line 6) | function g(e,t,u){if(e){try{n=decodeURIComponent(x(u)).replace(f,"").toL... function d (line 6) | function d(e){for(var t,u,n=1;n>=1,e+=e... function B (line 6) | function B(e,t,u,n){var r=t.href,t=t.title?D(t.title):null,i=e[1].replac... function e (line 6) | function e(e){this.options=e||r.defaults} function j (line 6) | function j(e){return e.replace(/---/g,"—").replace(/--/g,"–").replace(/(... function _ (line 6) | function _(e){for(var t,u="",n=e.length,r=0;re(...t,...n)} function n (line 6) | function n(e){return function(...t){var n=t.pop();return e.call(this,t,n)}} function a (line 6) | function a(e){setTimeout(e,0)} function i (line 6) | function i(e){return(t,...n)=>e(()=>t(...n))} function r (line 6) | function r(e){return u(e)?function(...t){const n=t.pop(),a=e.apply(this,... function s (line 6) | function s(e,t){return e.then(e=>{l(t,null,e)},e=>{l(t,e&&e.message?e:ne... function l (line 6) | function l(e,t,n){try{e(t,n)}catch(e){_e(t=>{throw t},e)}} function u (line 6) | function u(e){return"AsyncFunction"===e[Symbol.toStringTag]} function d (line 6) | function d(e){return"AsyncGenerator"===e[Symbol.toStringTag]} function p (line 6) | function p(e){return"function"==typeof e[Symbol.asyncIterator]} function c (line 6) | function c(e){if("function"!=typeof e)throw new Error("expected a functi... function o (line 6) | function o(e,t=e.length){if(!t)throw new Error("arity is undefined");ret... function h (line 6) | function h(e){return function(t,...n){const a=o(function(a){var i=this;r... function f (line 6) | function f(e,t,n,a){t=t||[];var i=[],r=0,s=c(n);return e(t,(e,t,n)=>{var... function y (line 6) | function y(e){return e&&"number"==typeof e.length&&0<=e.length&&0==e.len... function m (line 6) | function m(e){function t(...t){if(null!==e){var n=e;e=null,n.apply(this,... function g (line 6) | function g(e){return e[Symbol.iterator]&&e[Symbol.iterator]()} function k (line 6) | function k(e){var t=-1,n=e.length;return function(){return++t=t||d||l||(d=!0,e.next().then(({value... function O (line 6) | function O(e,t,n){function a(e,t){!1===e&&(l=!0);!0===l||(e?n(e):(++r===... function _ (line 6) | function _(e,t,n){return Ie(e,1/0,t,n)} function b (line 6) | function b(){function e(e,...a){return e?n(e):void t(1l(e,t))}function i(){if(!h)... function I (line 6) | function I(e){let t="",n=0,a=e.indexOf("*/");for(;n{function a(e,... function w (line 6) | function w(e,t){e.length=1,e.head=e.tail=t} function B (line 6) | function B(e,t,n){function a(e,t){f[e].push(t)}function i(e,t){const n=(... function T (line 6) | function T(e,t){return B(e,1,t)} function F (line 6) | function F(e,t,n){return B(e,t,n)} function C (line 6) | function C(...e){var t=e.map(c);return function(...e){var n=this,a=e[e.l... function P (line 6) | function P(...e){return C(...e.reverse())} function R (line 6) | function R(...e){return function(...t){var n=t.pop();return n(null,...e)}} function z (line 6) | function z(e,t){return(n,a,i,r)=>{var s,l=!1;const u=c(i);n(a,(n,a,i)=>{... function N (line 6) | function N(e){return(t,...n)=>c(t)(...n,(t,...n)=>{"object"==typeof cons... function V (line 6) | function V(e,t,n){const a=c(t);return Xe(e,(...e)=>{const t=e.pop();a(..... function Y (line 6) | function Y(e){return(t,n,a)=>e(t,a)} function q (line 6) | function q(e){return u(e)?e:function(...t){var n=t.pop(),a=!0;t.push((..... function D (line 6) | function D(e,t,n,a){var r=Array(t.length);e(t,(e,t,a)=>{n(e,(e,n)=>{r[t]... function Q (line 6) | function Q(e,t,n,a){var i=[];e(t,(e,t,a)=>{n(e,(n,r)=>n?a(n):void(r&&i.p... function U (line 6) | function U(e,t,n,a){var i=y(t)?D:Q;return i(e,t,c(n),a)} function G (line 6) | function G(e,t,n){return ut(e,1/0,t,n)} function W (line 6) | function W(e,t,n){return ut(e,1,t,n)} function H (line 6) | function H(e,t,n){return pt(e,1/0,t,n)} function J (line 6) | function J(e,t,n){return pt(e,1,t,n)} function K (line 6) | function K(e,t=e=>e){var a=Object.create(null),r=Object.create(null),s=c... function X (line 6) | function X(e,t){return ot(Me,e,t)} function Z (line 6) | function Z(e,t,n){return ot(Ae(t),e,n)} function $ (line 6) | function $(e,t){var n=c(e);return B((e,t)=>{n(e[0],t)},t,1)} function ee (line 6) | function ee(e){return(e<<1)+1} function te (line 6) | function te(e){return(e+1>>1)-1} function ne (line 6) | function ne(e,t){return e.priority===t.priority?e.pushCount({data... function ie (line 6) | function ie(e,t,n,a){var i=[...e].reverse();return qe(i,t,n,a)} function re (line 6) | function re(e){var t=c(e);return n(function(e,n){return e.push((e,...t)=... function se (line 6) | function se(e){var t;return Array.isArray(e)?t=e.map(re):(t={},Object.ke... function le (line 6) | function le(e,t,n,a){const i=c(n);return U(e,t,(e,t)=>{i(e,(e,n)=>{t(e,!... function ue (line 6) | function ue(e){return function(){return e}} function de (line 6) | function de(e,t,n){function a(){r((e,...t)=>{!1===e||(e&&s++{var s,l=!1;n.push((...e)=... function fe (line 6) | function fe(e){for(var t=Array(e);e--;)t[e]=e;return t} function ye (line 6) | function ye(e,t,n,a){var i=c(n);return De(fe(e),t,i,a)} function me (line 6) | function me(e,t,n){return ye(e,1/0,t,n)} function ge (line 6) | function ge(e,t,n){return ye(e,1,t,n)} function ke (line 6) | function ke(e,t,n,a){3>=arguments.length&&"function"==typeof t&&(a=n,n=t... function ve (line 6) | function ve(e){return(...t)=>(e.unmemoized||e)(...t)} function Se (line 6) | function Se(e,t,n){const a=c(e);return _t(e=>a((t,n)=>e(t,!n)),t,n)} function i (line 6) | function i(e,t){if(!u)if(c-=1,e)l=!0,a(e);else if(!1===e)l=!0,u=!0;else{... function r (line 6) | function r(){for(o=!0;ca?1:0} function a (line 6) | function a(e,...t){if(e)return n(e);l=t;!1===e||s(i)} function i (line 6) | function i(e,t){return e?n(e):!1===e?void 0:t?void r(a):n(null,...l)} function n (line 6) | function n(t){var n=c(e[i++]);n(...t,L(a))} function a (line 6) | function a(a,...r){return!1===a?void 0:a||i===e.length?t(a,...r):void n(r)} FILE: server/libs/bcryptjs/index.js function g (line 11) | function g(){this.batch_=null} function p (line 11) | function p(b){return b instanceof h?b:new h(function(a,h){a(b)})} function b (line 13) | function b(b){return function(A){h||(h=!0,b.call(a,A))}} function b (line 15) | function b(a,b){return"function"==typeof a?function(b){try{t(a(b))}catch... function b (line 16) | function b(){switch(g.state_){case 1:a(g.result_);break;case 2:h(g.resul... function m (line 17) | function m(b){return function(h){r[b]=h;q--;0==q&&a(r)}} function a (line 18) | function a(n){if("undefined"!==typeof module&&module&&module.exports)try... function g (line 19) | function g(n,k){for(var a=n.length^k.length,c=0;c=k||k>n.length)throw Error("Illegal le... function q (line 19) | function q(a,k){var n=0,c=a.length,e=0,f=[];if(0>= function h (line 20) | function h(a,k,l,c){var e= function v (line 23) | function v(a,k){for(var n=0,c=0;4>n;++n)c=c<<8|a[k]&255,k=(k+1)%a.length... function b (line 23) | function b(a,k,l){for(var c=0,e=[0,0],f=k.length,d=l.length,n,b=0;b {}) { method clear (line 13) | clear() { method set (line 17) | set() { FILE: server/libs/expressFileupload/utilities.js constant SAFE_FILE_NAME_REGEX (line 8) | const SAFE_FILE_NAME_REGEX = /[^\w-]/g; constant MAX_EXTENSION_LENGTH (line 9) | const MAX_EXTENSION_LENGTH = 3; constant TEMP_COUNTER_MAX (line 12) | const TEMP_COUNTER_MAX = 65536; constant TEMP_PREFIX (line 13) | const TEMP_PREFIX = 'tmp'; constant OBJECT_PROTOTYPE_KEYS (line 83) | const OBJECT_PROTOTYPE_KEYS = Object.getOwnPropertyNames(Object.prototype); constant ARRAY_PROTOTYPE_KEYS (line 84) | const ARRAY_PROTOTYPE_KEYS = Object.getOwnPropertyNames(Array.prototype); FILE: server/libs/fastSort/index.js function getSortStrategy (line 53) | function getSortStrategy(sortBy, comparer, order) { function createNewSortInstance (line 87) | function createNewSortInstance(opts) { FILE: server/libs/fluentFfmpeg/ffprobe.js function legacyTag (line 7) | function legacyTag(key) { return key.match(/^TAG:/); } function legacyDisposition (line 8) | function legacyDisposition(key) { return key.match(/^DISPOSITION:/); } function parseFfprobeOutput (line 10) | function parseFfprobeOutput(out) { function handleCallback (line 103) | function handleCallback(err, data) { function handleExit (line 179) | function handleExit(err) { FILE: server/libs/fluentFfmpeg/index.d.ts type FfmpegCommandLogger (line 7) | interface FfmpegCommandLogger { type FfmpegCommandOptions (line 14) | interface FfmpegCommandOptions { type FilterSpecification (line 26) | interface FilterSpecification { type PresetFunction (line 33) | type PresetFunction = (command: FfmpegCommand) => void; type Filter (line 35) | interface Filter { type Filters (line 42) | interface Filters { type FiltersCallback (line 45) | type FiltersCallback = (err: Error, filters: Filters) => void; type Codec (line 47) | interface Codec { type Codecs (line 59) | interface Codecs { type CodecsCallback (line 62) | type CodecsCallback = (err: Error, codecs: Codecs) => void; type Encoder (line 64) | interface Encoder { type Encoders (line 73) | interface Encoders { type EncodersCallback (line 76) | type EncodersCallback = (err: Error, encoders: Encoders) => void; type Format (line 78) | interface Format { type Formats (line 83) | interface Formats { type FormatsCallback (line 86) | type FormatsCallback = (err: Error, formats: Formats) => void; type FfprobeData (line 88) | interface FfprobeData { type FfprobeStream (line 94) | interface FfprobeStream { type FfprobeStreamDisposition (line 144) | interface FfprobeStreamDisposition { type FfprobeFormat (line 160) | interface FfprobeFormat { type ScreenshotsConfig (line 175) | interface ScreenshotsConfig { type AudioVideoFilter (line 185) | interface AudioVideoFilter { class FfmpegCommand (line 203) | class FfmpegCommand extends events.EventEmitter { FILE: server/libs/fluentFfmpeg/index.js function FfmpegCommand (line 36) | function FfmpegCommand(input, options) { FILE: server/libs/fluentFfmpeg/options/videosize.js function getScalePadFilters (line 19) | function getScalePadFilters(width, height, aspect, color) { function createSizeFilters (line 68) | function createSizeFilters(output, key, value) { FILE: server/libs/fluentFfmpeg/processor.js function runFfprobe (line 19) | function runFfprobe(command) { function handleExit (line 160) | function handleExit(err) { function emitEnd (line 415) | function emitEnd(err, stdout, stderr) { FILE: server/libs/fluentFfmpeg/recipes.js function getMetadata (line 156) | function getMetadata(cb) { FILE: server/libs/fluentFfmpeg/utils.js function parseProgressLine (line 19) | function parseProgressLine(line) { function emit (line 385) | function emit(line) { FILE: server/libs/fsExtra/copy/copy-sync.js function copySync (line 9) | function copySync (src, dest, opts) { function handleFilterAndCopy (line 32) | function handleFilterAndCopy (destStat, src, dest, opts) { function startCopy (line 39) | function startCopy (destStat, src, dest, opts) { function getStats (line 44) | function getStats (destStat, src, dest, opts) { function onFile (line 58) | function onFile (srcStat, destStat, src, dest, opts) { function mayCopyFile (line 63) | function mayCopyFile (srcStat, src, dest, opts) { function copyFile (line 72) | function copyFile (srcStat, src, dest, opts) { function handleTimestamps (line 78) | function handleTimestamps (srcMode, src, dest) { function fileIsNotWritable (line 86) | function fileIsNotWritable (srcMode) { function makeFileWritable (line 90) | function makeFileWritable (dest, srcMode) { function setDestMode (line 94) | function setDestMode (dest, srcMode) { function setDestTimestamps (line 98) | function setDestTimestamps (src, dest) { function onDir (line 106) | function onDir (srcStat, destStat, src, dest, opts) { function mkDirAndCopy (line 111) | function mkDirAndCopy (srcMode, src, dest, opts) { function copyDir (line 117) | function copyDir (src, dest, opts) { function copyDirItem (line 121) | function copyDirItem (item, src, dest, opts) { function onLink (line 128) | function onLink (destStat, src, dest, opts) { function copyLink (line 164) | function copyLink (resolvedSrc, dest) { FILE: server/libs/fsExtra/copy/copy.js function copy (line 10) | function copy (src, dest, opts, cb) { function checkParentDir (line 44) | function checkParentDir (destStat, src, dest, opts, cb) { function handleFilter (line 56) | function handleFilter (onInclude, destStat, src, dest, opts, cb) { function startCopy (line 63) | function startCopy (destStat, src, dest, opts, cb) { function getStats (line 68) | function getStats (destStat, src, dest, opts, cb) { function onFile (line 84) | function onFile (srcStat, destStat, src, dest, opts, cb) { function mayCopyFile (line 89) | function mayCopyFile (srcStat, src, dest, opts, cb) { function copyFile (line 100) | function copyFile (srcStat, src, dest, opts, cb) { function handleTimestampsAndMode (line 108) | function handleTimestampsAndMode (srcMode, src, dest, cb) { function fileIsNotWritable (line 121) | function fileIsNotWritable (srcMode) { function makeFileWritable (line 125) | function makeFileWritable (dest, srcMode, cb) { function setDestTimestampsAndMode (line 129) | function setDestTimestampsAndMode (srcMode, src, dest, cb) { function setDestMode (line 136) | function setDestMode (dest, srcMode, cb) { function setDestTimestamps (line 140) | function setDestTimestamps (src, dest, cb) { function onDir (line 150) | function onDir (srcStat, destStat, src, dest, opts, cb) { function mkDirAndCopy (line 155) | function mkDirAndCopy (srcMode, src, dest, opts, cb) { function copyDir (line 165) | function copyDir (src, dest, opts, cb) { function copyDirItems (line 172) | function copyDirItems (items, src, dest, opts, cb) { function copyDirItem (line 178) | function copyDirItem (items, item, src, dest, opts, cb) { function onLink (line 191) | function onLink (destStat, src, dest, opts, cb) { function copyLink (line 228) | function copyLink (resolvedSrc, dest, cb) { FILE: server/libs/fsExtra/empty/index.js function emptyDirSync (line 20) | function emptyDirSync(dir) { FILE: server/libs/fsExtra/ensure/file.js function createFile (line 8) | function createFile(file, callback) { function createFileSync (line 43) | function createFileSync(file) { FILE: server/libs/fsExtra/ensure/link.js function createLink (line 10) | function createLink(srcpath, dstpath, callback) { function createLinkSync (line 39) | function createLinkSync(srcpath, dstpath) { FILE: server/libs/fsExtra/ensure/symlink-paths.js function symlinkPaths (line 29) | function symlinkPaths (srcpath, dstpath, callback) { function symlinkPathsSync (line 67) | function symlinkPathsSync (srcpath, dstpath) { FILE: server/libs/fsExtra/ensure/symlink-type.js function symlinkType (line 5) | function symlinkType (srcpath, type, callback) { function symlinkTypeSync (line 16) | function symlinkTypeSync (srcpath, type) { FILE: server/libs/fsExtra/ensure/symlink.js function createSymlink (line 22) | function createSymlink(srcpath, dstpath, type, callback) { function _createSymlink (line 39) | function _createSymlink(srcpath, dstpath, type, callback) { function createSymlinkSync (line 58) | function createSymlinkSync(srcpath, dstpath, type) { FILE: server/libs/fsExtra/move/move-sync.js function moveSync (line 10) | function moveSync (src, dest, opts) { function isParentRoot (line 20) | function isParentRoot (dest) { function doRename (line 26) | function doRename (src, dest, overwrite, isChangingCase) { function rename (line 36) | function rename (src, dest, overwrite) { function moveAcrossDevice (line 45) | function moveAcrossDevice (src, dest, overwrite) { FILE: server/libs/fsExtra/move/move.js function move (line 11) | function move (src, dest, opts, cb) { function isParentRoot (line 35) | function isParentRoot (dest) { function doRename (line 41) | function doRename (src, dest, overwrite, isChangingCase, cb) { function rename (line 56) | function rename (src, dest, overwrite, cb) { function moveAcrossDevice (line 64) | function moveAcrossDevice (src, dest, overwrite, cb) { FILE: server/libs/fsExtra/path-exists/index.js function pathExists (line 5) | function pathExists(path) { FILE: server/libs/fsExtra/remove/index.js function remove (line 7) | function remove(path, callback) { function removeSync (line 13) | function removeSync(path) { FILE: server/libs/fsExtra/remove/rimraf.js function defaults (line 9) | function defaults (options) { function rimraf (line 27) | function rimraf (p, options, cb) { function rimraf_ (line 72) | function rimraf_ (p, options, cb) { function fixWinEPERM (line 112) | function fixWinEPERM (p, options, er, cb) { function fixWinEPERMSync (line 134) | function fixWinEPERMSync (p, options, er) { function rmdir (line 167) | function rmdir (p, options, originalEr, cb) { function rmkids (line 186) | function rmkids (p, options, cb) { function rimrafSync (line 216) | function rimrafSync (p, options) { function rmdirSync (line 259) | function rmdirSync (p, options, originalEr) { function rmkidsSync (line 276) | function rmkidsSync (p, options) { FILE: server/libs/fsExtra/util/stat.js function getStats (line 7) | function getStats (src, dest, opts) { function getStatsSync (line 20) | function getStatsSync (src, dest, opts) { function checkPaths (line 35) | function checkPaths (src, dest, funcName, opts, cb) { function checkPathsSync (line 66) | function checkPathsSync (src, dest, funcName, opts) { function checkParentPaths (line 98) | function checkParentPaths (src, srcStat, dest, funcName, cb) { function checkParentPathsSync (line 114) | function checkParentPathsSync (src, srcStat, dest, funcName) { function areIdentical (line 131) | function areIdentical (srcStat, destStat) { function isSrcSubdir (line 137) | function isSrcSubdir (src, dest) { function errMsg (line 143) | function errMsg (src, dest, funcName) { FILE: server/libs/fsExtra/util/utimes.js function utimesMillis (line 5) | function utimesMillis (path, atime, mtime, callback) { function utimesMillisSync (line 17) | function utimesMillisSync (path, atime, mtime) { FILE: server/libs/fusejs/index.js function e (line 13) | function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){va... function t (line 13) | function t(t){for(var n=1;ne.length)&&(t=e.length);for(var n=0,r=new Ar... function s (line 13) | function s(e){var t=function(e,t){if("object"!=typeof e||null===e)return... function h (line 13) | function h(e){return Array.isArray?Array.isArray(e):"[object Array]"===p... function f (line 13) | function f(e){return null==e?"":function(e){if("string"==typeof e)return... function d (line 13) | function d(e){return"string"==typeof e} function v (line 13) | function v(e){return"number"==typeof e} function g (line 13) | function g(e){return!0===e||!1===e||function(e){return function(e){retur... function A (line 13) | function A(e){return null!=e} function y (line 13) | function y(e){return!e.trim().length} function p (line 13) | function p(e){return null==e?void 0===e?"[object Undefined]":"[object Nu... function e (line 13) | function e(t){var n=this;r(this,e),this._keys=[],this._keyMap={};var u=0... function B (line 13) | function B(e){var t=null,n=null,r=null,u=1,i=null;if(d(e)||h(e))r=e,t=D(... function D (line 13) | function D(e){return h(e)?e:e.split(".")} function b (line 13) | function b(e){return h(e)?e.join("."):e} function e (line 13) | function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0... function L (line 13) | function L(e,t){var n=arguments.length>2&&void 0!==arguments[2]?argument... function S (line 13) | function S(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[... function O (line 13) | function O(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?argume... function j (line 13) | function j(e){for(var t={},n=0,r=e.length;n1&&void 0!==arguments[1]?arg... function W (line 13) | function W(e,t){for(var n=0,r=P.length;n1&&void 0!==arguments[1]?arguments[... FILE: server/libs/imageType/fileType.js function readUInt64LE (line 7) | function readUInt64LE(buf, offset = 0) { FILE: server/libs/isexe/index.js function isexe (line 16) | function isexe(path, options, cb) { function sync (line 50) | function sync(path, options) { FILE: server/libs/isexe/mode.js function isexe (line 6) | function isexe(path, options, cb) { function sync (line 12) | function sync(path, options) { function checkStat (line 16) | function checkStat(stat, options) { function checkMode (line 20) | function checkMode(stat, options) { FILE: server/libs/isexe/windows.js function checkPathExt (line 6) | function checkPathExt(path, options) { function checkStat (line 27) | function checkStat(stat, path, options) { function isexe (line 34) | function isexe(path, options, cb) { function sync (line 40) | function sync(path, options) { FILE: server/libs/jsonwebtoken/sign.js function isPlainObject (line 11) | function isPlainObject(value) { function isInteger (line 15) | function isInteger(val) { function isNumber (line 18) | function isNumber(val) { function isString (line 21) | function isString(val) { function validate (line 46) | function validate(schema, allowUnknown, object, parameterName) { function validateOptions (line 65) | function validateOptions(options) { function validatePayload (line 69) | function validatePayload(payload) { function failure (line 107) | function failure(err) { FILE: server/libs/jwa/buffer-equal-constant-time/index.js function bufferEq (line 8) | function bufferEq(a, b) { FILE: server/libs/jwa/ecdsa-sig-formatter/index.js function base64Url (line 15) | function base64Url(base64) { function signatureAsBuffer (line 22) | function signatureAsBuffer(signature) { function derToJose (line 32) | function derToJose(signature, alg) { function countPadding (line 117) | function countPadding(buf, start, stop) { function joseToDer (line 131) | function joseToDer(signature, alg) { FILE: server/libs/jwa/ecdsa-sig-formatter/param-bytes-for-alg.js function getParamSize (line 3) | function getParamSize(keySize) { function getParamBytesForAlg (line 14) | function getParamBytesForAlg(alg) { FILE: server/libs/jwa/index.js function checkIsPublicKey (line 23) | function checkIsPublicKey(key) { function checkIsPrivateKey (line 53) | function checkIsPrivateKey(key) { function checkIsSecretKey (line 69) | function checkIsSecretKey(key) { function fromBase64 (line 95) | function fromBase64(base64) { function toBase64 (line 102) | function toBase64(base64url) { function typeError (line 117) | function typeError(template) { function bufferOrString (line 123) | function bufferOrString(obj) { function normalizeInput (line 127) | function normalizeInput(thing) { function createHmacSigner (line 133) | function createHmacSigner(bits) { function createHmacVerifier (line 143) | function createHmacVerifier(bits) { function createKeySigner (line 150) | function createKeySigner(bits) { function createKeyVerifier (line 162) | function createKeyVerifier(bits) { function createPSSKeySigner (line 173) | function createPSSKeySigner(bits) { function createPSSKeyVerifier (line 187) | function createPSSKeyVerifier(bits) { function createECDSASigner (line 202) | function createECDSASigner(bits) { function createECDSAVerifer (line 211) | function createECDSAVerifer(bits) { function createNoneSigner (line 220) | function createNoneSigner() { function createNoneVerifier (line 226) | function createNoneVerifier() { FILE: server/libs/jws/lib/data-stream.js function DataStream (line 6) | function DataStream(data) { FILE: server/libs/jws/lib/sign-stream.js function base64url (line 9) | function base64url(string, encoding) { function jwsSecuredInput (line 18) | function jwsSecuredInput(header, payload, encoding) { function jwsSign (line 25) | function jwsSign(opts) { function SignStream (line 36) | function SignStream(opts) { FILE: server/libs/jws/lib/verify-stream.js function isObject (line 10) | function isObject(thing) { function safeJsonParse (line 14) | function safeJsonParse(thing) { function headerFromJWS (line 21) | function headerFromJWS(jwsSig) { function securedInputFromJWS (line 26) | function securedInputFromJWS(jwsSig) { function signatureFromJWS (line 30) | function signatureFromJWS(jwsSig) { function payloadFromJWS (line 34) | function payloadFromJWS(jwsSig, encoding) { function isValidJws (line 40) | function isValidJws(string) { function jwsVerify (line 44) | function jwsVerify(jwsSig, algorithm, secretOrKey) { function jwsDecode (line 57) | function jwsDecode(jwsSig, opts) { function VerifyStream (line 80) | function VerifyStream(opts) { FILE: server/libs/libarchive/archive.js class CompressedFile (line 11) | class CompressedFile { method constructor (line 13) | constructor(name, size, path, archiveRef) { method name (line 23) | get name() { method size (line 29) | get size() { method extract (line 37) | extract() { class Archive (line 43) | class Archive { method open (line 50) | static open(fileBuffer) { method constructor (line 60) | constructor(file, options) { method open (line 74) | async open() { method close (line 90) | close() { method hasEncryptedData (line 99) | hasEncryptedData() { method usePassword (line 112) | usePassword(archivePassword) { method getFilesObject (line 126) | getFilesObject() { method getFilesArray (line 145) | getFilesArray() { method extractSingleFile (line 151) | extractSingleFile(target) { method extractFiles (line 171) | extractFiles(extractCallback) { method _cloneContent (line 196) | _cloneContent(obj) { method _objectToArray (line 205) | _objectToArray(obj, path = '') { method _getProp (line 220) | _getProp(obj, path) { method _postMessage (line 232) | _postMessage(msg, callback) { method _msgHandler (line 239) | _msgHandler(callback, resolve, reject, msg) { method _workerMsg (line 253) | _workerMsg(msg) { FILE: server/libs/libarchive/wasm-libarchive.js function locateFile (line 11) | function locateFile(path) { if (Module["locateFile"]) { return Module["l... function dynamicAlloc (line 11) | function dynamicAlloc(size) { var ret = HEAP32[DYNAMICTOP_PTR >> 2]; var... function getNativeTypeSize (line 11) | function getNativeTypeSize(type) { switch (type) { case "i1": case "i8":... function assert (line 11) | function assert(condition, text) { if (!condition) { abort("Assertion fa... function getCFunc (line 11) | function getCFunc(ident) { var func = Module["_" + ident]; assert(func, ... function ccall (line 11) | function ccall(ident, returnType, argTypes, args, opts) { var toC = { "s... function cwrap (line 11) | function cwrap(ident, returnType, argTypes, opts) { argTypes = argTypes ... function setValue (line 11) | function setValue(ptr, value, type, noSafe) { type = type || "i8"; if (t... function allocate (line 11) | function allocate(slab, types, allocator, ptr) { var zeroinit, size; if ... function getMemory (line 11) | function getMemory(size) { if (!runtimeInitialized) return dynamicAlloc(... function UTF8ArrayToString (line 11) | function UTF8ArrayToString(u8Array, idx, maxBytesToRead) { var endIdx = ... function UTF8ToString (line 11) | function UTF8ToString(ptr, maxBytesToRead) { return ptr ? UTF8ArrayToStr... function stringToUTF8Array (line 11) | function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) { i... function stringToUTF8 (line 11) | function stringToUTF8(str, outPtr, maxBytesToWrite) { return stringToUTF... function lengthBytesUTF8 (line 11) | function lengthBytesUTF8(str) { var len = 0; for (var i = 0; i < str.len... function writeArrayToMemory (line 11) | function writeArrayToMemory(array, buffer) { HEAP8.set(array, buffer) } function writeAsciiToMemory (line 11) | function writeAsciiToMemory(str, buffer, dontAddNull) { for (var i = 0; ... function demangle (line 11) | function demangle(func) { return func } function demangleAll (line 11) | function demangleAll(text) { var regex = /__Z[\w\d_]+/g; return text.rep... function jsStackTrace (line 11) | function jsStackTrace() { var err = new Error; if (!err.stack) { try { t... function stackTrace (line 11) | function stackTrace() { var js = jsStackTrace(); if (Module["extraStackT... function alignUp (line 11) | function alignUp(x, multiple) { if (x % multiple > 0) { x += multiple - ... function updateGlobalBufferViews (line 11) | function updateGlobalBufferViews() { Module["HEAP8"] = HEAP8 = new Int8A... function callRuntimeCallbacks (line 11) | function callRuntimeCallbacks(callbacks) { while (callbacks.length > 0) ... function preRun (line 11) | function preRun() { if (Module["preRun"]) { if (typeof Module["preRun"] ... function ensureInitRuntime (line 11) | function ensureInitRuntime() { if (runtimeInitialized) return; runtimeIn... function preMain (line 11) | function preMain() { FS.ignorePermissions = false; callRuntimeCallbacks(... function exitRuntime (line 11) | function exitRuntime() { runtimeExited = true } function postRun (line 11) | function postRun() { if (Module["postRun"]) { if (typeof Module["postRun... function addOnPreRun (line 11) | function addOnPreRun(cb) { __ATPRERUN__.unshift(cb) } function addOnPostRun (line 11) | function addOnPostRun(cb) { __ATPOSTRUN__.unshift(cb) } function getUniqueRunDependency (line 11) | function getUniqueRunDependency(id) { return id } function addRunDependency (line 11) | function addRunDependency(id) { runDependencies++; if (Module["monitorRu... function removeRunDependency (line 11) | function removeRunDependency(id) { runDependencies--; if (Module["monito... function isDataURI (line 11) | function isDataURI(filename) { return String.prototype.startsWith ? file... function getBinary (line 11) | function getBinary() { try { if (Module["wasmBinary"]) { return new Uint... function getBinaryPromise (line 11) | function getBinaryPromise() { if (!Module["wasmBinary"] && (ENVIRONMENT_... function createWasm (line 11) | function createWasm(env) { var info = { "env": env, "global": { "NaN": N... function ___buildEnvironment (line 11) | function ___buildEnvironment(environ) { var MAX_ENV_VALUES = 64; var TOT... function ___setErrNo (line 11) | function ___setErrNo(value) { if (Module["___errno_location"]) HEAP32[Mo... function trim (line 11) | function trim(arr) { var start = 0; for (; start < arr.length; start++) ... function isRealDir (line 11) | function isRealDir(p) { return p !== "." && p !== ".." } function toAbsolute (line 11) | function toAbsolute(root) { return function (p) { return PATH.join2(root... function done (line 11) | function done(err) { if (err) { if (!done.errored) { done.errored = true... function ensureParent (line 11) | function ensureParent(path) { var parts = path.split("/"); var parent = ... function base (line 11) | function base(path) { var parts = path.split("/"); return parts[parts.le... function doCallback (line 11) | function doCallback(err) { FS.syncFSRequests--; return callback(err) } function done (line 11) | function done(err) { if (err) { if (!done.errored) { done.errored = true... function LazyUint8Array (line 11) | function LazyUint8Array() { this.lengthKnown = false; this.chunks = [] } function processData (line 11) | function processData(byteArray) { function finish(byteArray) { if (preFi... function finish (line 11) | function finish() { if (fail == 0) onload(); else onerror() } function finish (line 11) | function finish() { if (fail == 0) onload(); else onerror() } function ___syscall140 (line 11) | function ___syscall140(which, varargs) { SYSCALLS.varargs = varargs; try... function ___syscall146 (line 11) | function ___syscall146(which, varargs) { SYSCALLS.varargs = varargs; try... function ___syscall168 (line 11) | function ___syscall168(which, varargs) { SYSCALLS.varargs = varargs; try... function ___syscall195 (line 11) | function ___syscall195(which, varargs) { SYSCALLS.varargs = varargs; try... function ___syscall196 (line 11) | function ___syscall196(which, varargs) { SYSCALLS.varargs = varargs; try... function ___syscall197 (line 11) | function ___syscall197(which, varargs) { SYSCALLS.varargs = varargs; try... function ___syscall221 (line 11) | function ___syscall221(which, varargs) { SYSCALLS.varargs = varargs; try... function ___syscall3 (line 11) | function ___syscall3(which, varargs) { SYSCALLS.varargs = varargs; try {... function ___syscall4 (line 11) | function ___syscall4(which, varargs) { SYSCALLS.varargs = varargs; try {... function ___syscall41 (line 11) | function ___syscall41(which, varargs) { SYSCALLS.varargs = varargs; try ... function ___syscall42 (line 11) | function ___syscall42(which, varargs) { SYSCALLS.varargs = varargs; try ... function ___syscall5 (line 11) | function ___syscall5(which, varargs) { SYSCALLS.varargs = varargs; try {... function ___syscall6 (line 11) | function ___syscall6(which, varargs) { SYSCALLS.varargs = varargs; try {... function _abort (line 11) | function _abort() { Module["abort"]() } function _emscripten_get_heap_size (line 11) | function _emscripten_get_heap_size() { return HEAP8.length } function abortOnCannotGrowMemory (line 11) | function abortOnCannotGrowMemory(requestedSize) { abort("OOM") } function emscripten_realloc_buffer (line 11) | function emscripten_realloc_buffer(size) { var PAGE_MULTIPLE = 65536; si... function _emscripten_resize_heap (line 11) | function _emscripten_resize_heap(requestedSize) { var oldSize = _emscrip... function _exit (line 11) | function _exit(status) { exit(status) } function _tzset (line 11) | function _tzset() { if (_tzset.called) return; _tzset.called = true; HEA... function _localtime_r (line 11) | function _localtime_r(time, tmPtr) { _tzset(); var date = new Date(HEAP3... function _localtime (line 11) | function _localtime(time) { return _localtime_r(time, ___tm_current) } function _emscripten_memcpy_big (line 11) | function _emscripten_memcpy_big(dest, src, num) { HEAPU8.set(HEAPU8.suba... function _mktime (line 11) | function _mktime(tmPtr) { _tzset(); var date = new Date(HEAP32[tmPtr + 2... function _posix_spawn_file_actions_addclose (line 11) | function _posix_spawn_file_actions_addclose() { err("missing function: p... function _posix_spawn_file_actions_adddup2 (line 11) | function _posix_spawn_file_actions_adddup2() { err("missing function: po... function _posix_spawn_file_actions_destroy (line 11) | function _posix_spawn_file_actions_destroy() { err("missing function: po... function _posix_spawn_file_actions_init (line 11) | function _posix_spawn_file_actions_init() { err("missing function: posix... function _fork (line 11) | function _fork() { ___setErrNo(11); return -1 } function _posix_spawnp (line 11) | function _posix_spawnp() { return _fork.apply(null, arguments) } function _timegm (line 11) | function _timegm(tmPtr) { _tzset(); var time = Date.UTC(HEAP32[tmPtr + 2... function _wait (line 11) | function _wait(stat_loc) { ___setErrNo(10); return -1 } function _waitpid (line 11) | function _waitpid() { return _wait.apply(null, arguments) } function intArrayFromString (line 11) | function intArrayFromString(stringy, dontAddNull, length) { var len = le... function ExitStatus (line 11) | function ExitStatus(status) { this.name = "ExitStatus"; this.message = "... function run (line 11) | function run(args) { args = args || Module["arguments"]; if (runDependen... function exit (line 11) | function exit(status, implicit) { if (implicit && Module["noExitRuntime"... function abort (line 11) | function abort(what) { if (Module["onAbort"]) { Module["onAbort"](what) ... FILE: server/libs/libarchive/wasm-module.js constant TYPE_MAP (line 8) | const TYPE_MAP = { class ArchiveReader (line 18) | class ArchiveReader { method constructor (line 23) | constructor(wasmModule) { method open (line 34) | open(file) { method close (line 48) | close() { method hasEncryptedData (line 60) | hasEncryptedData() { method setPassphrase (line 77) | setPassphrase(passphrase) { method entries (line 86) | *entries(skipExtraction = false, except = null) { method _loadFile (line 119) | _loadFile(fileBuffer, resolve, reject) { method _promiseHandles (line 131) | _promiseHandles() { class WasmModule (line 142) | class WasmModule { method constructor (line 143) | constructor() { method print (line 149) | print(...text) { method printErr (line 153) | printErr(...text) { method initFunctions (line 157) | initFunctions() { method monitorRunDependencies (line 222) | monitorRunDependencies() { } method locateFile (line 224) | locateFile(path /* ,prefix */) { FILE: server/libs/lodash.once/index.js function before (line 67) | function before(n, func) { function once (line 102) | function once(func) { function isObject (line 131) | function isObject(value) { function isObjectLike (line 160) | function isObjectLike(value) { function isSymbol (line 181) | function isSymbol(value) { function toFinite (line 209) | function toFinite(value) { function toInteger (line 247) | function toInteger(value) { function toNumber (line 277) | function toNumber(value) { FILE: server/libs/memorystore/index.js method constructor (line 23) | constructor(checkPeriod, ttl, max) { method get (line 45) | get(sid, fn) { method set (line 68) | set(sid, sess, fn) { method destroy (line 87) | destroy(sid, fn) { method touch (line 108) | touch(sid, sess, fn) { FILE: server/libs/nodeCron/background-scheduled-task/daemon.js function register (line 5) | function register(message){ FILE: server/libs/nodeCron/background-scheduled-task/index.js class BackgroundScheduledTask (line 8) | class BackgroundScheduledTask extends EventEmitter { method constructor (line 9) | constructor(cronExpression, taskPath, options) { method start (line 27) | start() { method stop (line 50) | stop() { method pid (line 56) | pid() { method isRunning (line 62) | isRunning() { FILE: server/libs/nodeCron/convert-expression/asterisk-to-range-conversion.js function convertAsterisk (line 3) | function convertAsterisk(expression, replecement){ function convertAsterisksToRanges (line 10) | function convertAsterisksToRanges(expressions){ FILE: server/libs/nodeCron/convert-expression/index.js function appendSeccondExpression (line 14) | function appendSeccondExpression(expressions) { function removeSpaces (line 21) | function removeSpaces(str) { function normalizeIntegers (line 26) | function normalizeIntegers(expressions) { function interprete (line 54) | function interprete(expression) { FILE: server/libs/nodeCron/convert-expression/month-names-conversion.js function convertMonthName (line 8) | function convertMonthName(expression, items){ function interprete (line 15) | function interprete(monthExpression){ FILE: server/libs/nodeCron/convert-expression/range-conversion.js function replaceWithRange (line 3) | function replaceWithRange(expression, text, init, end) { function convertRange (line 21) | function convertRange(expression){ function convertAllRanges (line 31) | function convertAllRanges(expressions){ FILE: server/libs/nodeCron/convert-expression/step-values-conversion.js function convertSteps (line 4) | function convertSteps(expressions){ FILE: server/libs/nodeCron/convert-expression/week-day-names-conversion.js function convertWeekDayName (line 7) | function convertWeekDayName(expression, items){ function convertWeekDays (line 14) | function convertWeekDays(expression){ FILE: server/libs/nodeCron/index.js function schedule (line 24) | function schedule(expression, func, options) { function createTask (line 32) | function createTask(expression, func, options) { function validate (line 45) | function validate(expression) { function getTasks (line 60) | function getTasks() { FILE: server/libs/nodeCron/pattern-validation.js function isValidExpression (line 13) | function isValidExpression(expression, min, max) { function isInvalidSecond (line 34) | function isInvalidSecond(expression) { function isInvalidMinute (line 42) | function isInvalidMinute(expression) { function isInvalidHour (line 50) | function isInvalidHour(expression) { function isInvalidDayOfMonth (line 58) | function isInvalidDayOfMonth(expression) { function isInvalidMonth (line 66) | function isInvalidMonth(expression) { function isInvalidWeekDay (line 74) | function isInvalidWeekDay(expression) { function validateFields (line 84) | function validateFields(patterns, executablePatterns) { function validate (line 112) | function validate(pattern) { FILE: server/libs/nodeCron/scheduled-task.js class ScheduledTask (line 8) | class ScheduledTask extends EventEmitter { method constructor (line 9) | constructor(cronExpression, func, options) { method now (line 37) | now(now = 'manual') { method start (line 42) | start() { method stop (line 46) | stop() { FILE: server/libs/nodeCron/scheduler.js class Scheduler (line 6) | class Scheduler extends EventEmitter { method constructor (line 7) | constructor(pattern, timezone, autorecover) { method start (line 13) | start() { method stop (line 41) | stop() { FILE: server/libs/nodeCron/task.js class Task (line 5) | class Task extends EventEmitter{ method constructor (line 6) | constructor(execution){ method execute (line 14) | execute(now) { FILE: server/libs/nodeCron/time-matcher.js function matchPattern (line 4) | function matchPattern(pattern, value){ class TimeMatcher (line 12) | class TimeMatcher{ method constructor (line 13) | constructor(pattern, timezone){ method match (line 20) | match(date){ method apply (line 33) | apply(date){ FILE: server/libs/nodeFfprobe/index.js function doProbe (line 9) | function doProbe(file) { FILE: server/libs/nodeStreamZip/index.js function open (line 148) | function open() { function readFile (line 163) | function readFile() { function readUntilFoundCallback (line 178) | function readUntilFoundCallback(err, bytesRead) { function readCentralDirectory (line 209) | function readCentralDirectory() { function readCentralDirectoryComplete (line 224) | function readCentralDirectoryComplete() { function readZip64CentralDirectoryLocator (line 259) | function readZip64CentralDirectoryLocator() { function readZip64CentralDirectoryLocatorComplete (line 279) | function readZip64CentralDirectoryLocatorComplete() { function readZip64CentralDirectoryComplete (line 299) | function readZip64CentralDirectoryComplete() { function readEntries (line 312) | function readEntries() { function readEntriesCallback (line 322) | function readEntriesCallback(err, bytesRead) { function checkEntriesExist (line 366) | function checkEntriesExist() { method get (line 373) | get() { function dataOffset (line 484) | function dataOffset(entry) { function canVerifyCrc (line 488) | function canVerifyCrc(entry) { function extract (line 493) | function extract(entry, outPath, callback) { function createDirectories (line 531) | function createDirectories(baseDir, dirs, callback) { function extractFiles (line 545) | function extractFiles(baseDir, baseRelPath, files, callback, extractedCo... method constructor (line 672) | constructor(config) { method entriesCount (line 689) | get entriesCount() { method comment (line 693) | get comment() { method entry (line 697) | async entry(name) { method entries (line 702) | async entries() { method stream (line 707) | async stream(entry) { method entryData (line 720) | async entryData(entry) { method extract (line 735) | async extract(entry, outPath) { method close (line 748) | async close() { class CentralDirectoryHeader (line 762) | class CentralDirectoryHeader { method read (line 763) | read(data) { class CentralDirectoryLoc64Header (line 780) | class CentralDirectoryLoc64Header { method read (line 781) | read(data) { class CentralDirectoryZip64Header (line 790) | class CentralDirectoryZip64Header { method read (line 791) | read(data) { class ZipEntry (line 806) | class ZipEntry { method readHeader (line 807) | readHeader(data, offset) { method readDataHeader (line 847) | readDataHeader(data) { method read (line 881) | read(data, offset, textDecoder) { method validateName (line 896) | validateName() { method readExtra (line 902) | readExtra(data, offset) { method parseZip64Extra (line 917) | parseZip64Extra(data, offset, length) { method encrypted (line 939) | get encrypted() { method isFile (line 943) | get isFile() { class FsRead (line 948) | class FsRead { method constructor (line 949) | constructor(fd, buffer, offset, length, position, callback) { method read (line 960) | read(sync) { method readCallback (line 990) | readCallback(sync, err, bytesRead) { class FileWindowBuffer (line 1003) | class FileWindowBuffer { method constructor (line 1004) | constructor(fd) { method checkOp (line 1011) | checkOp() { method read (line 1017) | read(pos, length, callback) { method expandLeft (line 1026) | expandLeft(length, callback) { method expandRight (line 1036) | expandRight(length, callback) { method moveRight (line 1050) | moveRight(length, callback, shift) { class EntryDataReaderStream (line 1069) | class EntryDataReaderStream extends stream.Readable { method constructor (line 1070) | constructor(fd, offset, length) { method _read (line 1079) | _read(n) { method readCallback (line 1088) | readCallback(err, bytesRead, buffer) { class EntryVerifyStream (line 1104) | class EntryVerifyStream extends stream.Transform { method constructor (line 1105) | constructor(baseStm, crc, size) { method _transform (line 1113) | _transform(data, encoding, callback) { class CrcVerify (line 1124) | class CrcVerify { method constructor (line 1125) | constructor(crc, size) { method data (line 1134) | data(data) { method getCrcTable (line 1157) | static getCrcTable() { function parseZipTime (line 1182) | function parseZipTime(timebytes, datebytes) { function toBits (line 1198) | function toBits(dec, size) { function readUInt64LE (line 1206) | function readUInt64LE(buffer, offset) { FILE: server/libs/passportLocal/strategy.js function lookup (line 8) | function lookup(obj, field) { function Strategy (line 53) | function Strategy(options, verify) { function verified (line 98) | function verified(err, user, info) { FILE: server/libs/recursiveReaddirAsync/index.js function adopt (line 32) | function adopt(value) { return value instanceof P ? value : new P(functi... function fulfilled (line 34) | function fulfilled(value) { try { step(generator.next(value)); } catch (... function rejected (line 35) | function rejected(value) { try { step(generator["throw"](value)); } catc... function step (line 36) | function step(result) { result.done ? resolve(result.value) : adopt(resu... function stat (line 69) | function stat(file) { function readFile (line 92) | function readFile(file, encoding = 'base64') { function checkItem (line 114) | function checkItem(path, settings) { function addOptionalKeys (line 133) | function addOptionalKeys(obj, file, settings, deep) { function read (line 151) | function read(rpath, data, settings, deep, resolve, reject) { function myReaddir (line 188) | function myReaddir(path, settings, deep) { function normalizePath (line 219) | function normalizePath(path) { function exists (line 228) | function exists(fullname, settings) { function onlyInclude (line 244) | function onlyInclude(settings, content) { function listDir (line 265) | function listDir(path, settings, progress, deep = 0) { function statDir (line 291) | function statDir(collection, settings, progress, deep) { function statDirItem (line 322) | function statDirItem(collection, i, settings, progress, deep) { function list (line 358) | function list(path, options, progress) { FILE: server/libs/requestIp/index.js function _typeof (line 5) | function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbo... function getClientIpFromXForwardedFor (line 16) | function getClientIpFromXForwardedFor(value) { function getClientIp (line 57) | function getClientIp(req) { function mw (line 149) | function mw(options) { FILE: server/libs/requestIp/isJs.js function a (line 5) | function a(n) { return function () { return !n.apply(null, e.call(argume... function u (line 5) | function u(n) { return function () { var t = c(arguments); var e = t.len... function o (line 5) | function o(n) { return function () { var t = c(arguments); var e = t.len... function f (line 5) | function f(n, t) { var e = t + ""; var r = +(e.match(/\d+/) || NaN); var... function c (line 5) | function c(t) { var r = e.call(t); var a = r.length; if (a === 1 && n.ar... function d (line 5) | function d(t, e) { n[t] = function (n) { return e[t].test(n) } } function j (line 5) | function j() { var t = n; for (var e in t) { if (r.call(t, e) && n["func... FILE: server/libs/rss/index.js function ifTruePush (line 12) | function ifTruePush(bool, array, data) { function ifTruePushArray (line 18) | function ifTruePushArray(bool, array, dataArray) { function getSize (line 28) | function getSize(filename) { function generateXML (line 35) | function generateXML(data) { function RSS (line 142) | function RSS(options, items) { FILE: server/libs/sanitizeHtml/index.js function escapeStringRegexp (line 13) | function escapeStringRegexp(string) { function isObject (line 26) | function isObject(o) { function isPlainObject (line 30) | function isPlainObject(o) { function each (line 60) | function each(obj, cb) { function has (line 69) | function has(obj, key) { function isEmptyObject (line 73) | function isEmptyObject(obj) { constant VALID_HTML_ATTRIBUTE_NAME (line 95) | const VALID_HTML_ATTRIBUTE_NAME = /^[^\0\t\n\f\r /<=>]+$/; function sanitizeHtml (line 101) | function sanitizeHtml(html, options, _recursing) { FILE: server/libs/streamsearch/index.js function memcmp (line 12) | function memcmp(buf1, pos1, buf2, pos2, num) { class SBMH (line 20) | class SBMH { method constructor (line 21) | constructor(needle, cb) { method reset (line 97) | reset() { method push (line 103) | push(chunk, pos) { method destroy (line 114) | destroy() { function feed (line 122) | function feed(self, data) { function matchNeedle (line 260) | function matchNeedle(self, data, pos, len) { FILE: server/libs/umzug/storage/contract.js function isUmzugStorage (line 4) | function isUmzugStorage(arg) { FILE: server/libs/umzug/storage/json.js method readAsync (line 31) | async readAsync(filepath) { method writeAsync (line 35) | async writeAsync(filepath, content) { class JSONStorage (line 40) | class JSONStorage { method constructor (line 41) | constructor(options) { method logMigration (line 45) | async logMigration({ name: migrationName }) { method unlogMigration (line 50) | async unlogMigration({ name: migrationName }) { method executed (line 55) | async executed() { FILE: server/libs/umzug/storage/memory.js method logMigration (line 7) | async logMigration({ name }) { method unlogMigration (line 10) | async unlogMigration({ name }) { FILE: server/libs/umzug/storage/mongodb.js function isMongoDBCollectionOptions (line 4) | function isMongoDBCollectionOptions(arg) { class MongoDBStorage (line 7) | class MongoDBStorage { method constructor (line 8) | constructor(options) { method logMigration (line 19) | async logMigration({ name: migrationName }) { method unlogMigration (line 22) | async unlogMigration({ name: migrationName }) { method executed (line 25) | async executed() { FILE: server/libs/umzug/storage/sequelize.js constant DIALECTS_WITH_CHARSET_AND_COLLATE (line 4) | const DIALECTS_WITH_CHARSET_AND_COLLATE = new Set(['mysql', 'mariadb']); class SequelizeStorage (line 5) | class SequelizeStorage { method constructor (line 13) | constructor(options) { method getModel (line 27) | getModel() { method syncModel (line 51) | async syncModel() { method logMigration (line 54) | async logMigration({ name: migrationName }) { method unlogMigration (line 60) | async unlogMigration({ name: migrationName }) { method executed (line 68) | async executed() { method _model (line 80) | _model() { FILE: server/libs/umzug/umzug.js class MigrationError (line 53) | class MigrationError extends Error { method constructor (line 55) | constructor(migration, original) { method info (line 63) | get info() { method errorString (line 66) | static errorString(cause) { class Umzug (line 71) | class Umzug { method constructor (line 73) | constructor(options) { method logging (line 79) | logging(message) { method executed (line 84) | async executed() { method _executed (line 92) | async _executed(context) { method pending (line 98) | async pending() { method _pending (line 105) | async _pending(context) { method runCommand (line 110) | async runCommand(command, cb) { method up (line 118) | async up(options = {}) { method down (line 163) | async down(options = {}) { method create (line 206) | async create(options) { method defaultCreationTemplate (line 266) | static defaultCreationTemplate(filepath) { method findNameIndex (line 286) | findNameIndex(migrations, name) { method findMigrations (line 293) | findMigrations(migrations, names) { method getContext (line 303) | async getContext() { method getMigrationsResolver (line 309) | getMigrationsResolver(inputMigrations) { class MissingResolverError (line 381) | class MissingResolverError extends Error { method constructor (line 382) | constructor(filepath) { FILE: server/libs/watcher/aborter/controller.js function AbortController (line 6) | function AbortController() { FILE: server/libs/watcher/aborter/signal.js function AbortSignal (line 6) | function AbortSignal() { FILE: server/libs/watcher/are-shallow-equal.js function areShallowEqual (line 6) | function areShallowEqual(x, y) { FILE: server/libs/watcher/atomically/consts.js constant DEFAULT_ENCODING (line 5) | const DEFAULT_ENCODING = 'utf8'; constant DEFAULT_FILE_MODE (line 7) | const DEFAULT_FILE_MODE = 0o666; constant DEFAULT_FOLDER_MODE (line 9) | const DEFAULT_FOLDER_MODE = 0o777; constant DEFAULT_READ_OPTIONS (line 11) | const DEFAULT_READ_OPTIONS = {}; constant DEFAULT_WRITE_OPTIONS (line 13) | const DEFAULT_WRITE_OPTIONS = {}; constant DEFAULT_TIMEOUT_ASYNC (line 15) | const DEFAULT_TIMEOUT_ASYNC = 5000; constant DEFAULT_TIMEOUT_SYNC (line 17) | const DEFAULT_TIMEOUT_SYNC = 100; constant IS_POSIX (line 19) | const IS_POSIX = !!process.getuid; constant IS_USER_ROOT (line 21) | const IS_USER_ROOT = process.getuid ? !process.getuid() : false; constant LIMIT_BASENAME_LENGTH (line 23) | const LIMIT_BASENAME_LENGTH = 128; constant LIMIT_FILES_DESCRIPTORS (line 25) | const LIMIT_FILES_DESCRIPTORS = 10000; FILE: server/libs/watcher/atomically/index.js function readFile (line 11) | function readFile(filePath, options = consts_1.DEFAULT_READ_OPTIONS) { function readFileSync (line 20) | function readFileSync(filePath, options = consts_1.DEFAULT_READ_OPTIONS) { FILE: server/libs/watcher/constants.js constant DEBOUNCE (line 10) | const DEBOUNCE = 300; constant DEPTH (line 12) | const DEPTH = 20; constant PLATFORM (line 14) | const PLATFORM = os_1.default.platform(); constant IS_LINUX (line 16) | const IS_LINUX = (PLATFORM === 'linux'); constant IS_MAC (line 18) | const IS_MAC = (PLATFORM === 'darwin'); constant IS_WINDOWS (line 20) | const IS_WINDOWS = (PLATFORM === 'win32'); constant HAS_NATIVE_RECURSION (line 22) | const HAS_NATIVE_RECURSION = IS_MAC || IS_WINDOWS; constant POLLING_INTERVAL (line 24) | const POLLING_INTERVAL = 3000; constant POLLING_TIMEOUT (line 26) | const POLLING_TIMEOUT = 20000; constant RENAME_TIMEOUT (line 28) | const RENAME_TIMEOUT = 1250; FILE: server/libs/watcher/debounce.js function debounce (line 15) | function debounce(func, wait, immediate) { FILE: server/libs/watcher/promise-concurrency-limiter.js class Limiter (line 4) | class Limiter { method constructor (line 6) | constructor(options) { method add (line 12) | add(fn) { method flush (line 20) | flush() { method run (line 28) | run(fn) { FILE: server/libs/watcher/ripstat/consts.js constant IS_WINDOWS (line 5) | const IS_WINDOWS = (process.platform === 'win32'); constant RETRY_TIMEOUT (line 9) | const RETRY_TIMEOUT = 5000; FILE: server/libs/watcher/ripstat/stats.js class Stats (line 9) | class Stats { method constructor (line 11) | constructor(stats) { method _isMode (line 28) | _isMode(mode) { method isDirectory (line 32) | isDirectory() { method isFile (line 35) | isFile() { method isBlockDevice (line 38) | isBlockDevice() { method isCharacterDevice (line 41) | isCharacterDevice() { method isSymbolicLink (line 44) | isSymbolicLink() { method isFIFO (line 47) | isFIFO() { method isSocket (line 50) | isSocket() { FILE: server/libs/watcher/string-indexes.js function indexes (line 3) | function indexes(str, substr) { FILE: server/libs/watcher/utils.js method castError (line 30) | castError(exception) { method isError (line 43) | isError(x) { FILE: server/libs/watcher/watcher.js class Watcher (line 17) | class Watcher extends events_1.EventEmitter { method constructor (line 19) | constructor(target, options, handler) { method isClosed (line 39) | isClosed() { method isIgnored (line 42) | isIgnored(targetPath, ignore) { method isReady (line 45) | isReady() { method close (line 48) | close() { method error (line 58) | error(exception) { method event (line 64) | event(event, targetPath, targetPathNext) { method ready (line 70) | ready() { method pollerExists (line 76) | pollerExists(targetPath, options) { method subwatcherExists (line 86) | subwatcherExists(targetPath, options) { method watchersClose (line 96) | watchersClose(folderPath, filePath, recursive = true) { method watchersLock (line 120) | watchersLock(callback) { method watchersRestore (line 128) | watchersRestore() { method watcherAdd (line 136) | async watcherAdd(config, baseWatcherHandler) { method watcherClose (line 144) | watcherClose(config) { method watcherExists (line 162) | watcherExists(folderPath, options, handler, filePath) { method watchDirectories (line 180) | async watchDirectories(foldersPaths, options, handler, filePath, baseW... method watchDirectory (line 214) | async watchDirectory(folderPath, options, handler, filePath, baseWatch... method watchFileOnce (line 240) | async watchFileOnce(filePath, options, callback) { method watchFile (line 266) | async watchFile(filePath, options, handler) { method watchPollingOnce (line 275) | async watchPollingOnce(targetPath, options, callback) { method watchPolling (line 293) | async watchPolling(targetPath, options, callback) { method watchUnknownChild (line 314) | async watchUnknownChild(targetPath, options, handler) { method watchUnknownTarget (line 320) | async watchUnknownTarget(targetPath, options, handler) { method watchPaths (line 326) | async watchPaths(targetPaths, options, handler) { method watchPath (line 342) | async watchPath(targetPath, options, handler) { method watch (line 368) | async watch(target, options, handler = utils_1.default.lang.noop) { FILE: server/libs/watcher/watcher_handler.js class WatcherHandler (line 11) | class WatcherHandler { method constructor (line 13) | constructor(watcher, config, base) { method _isSubRoot (line 24) | _isSubRoot(targetPath) { method _makeHandlerBatched (line 32) | _makeHandlerBatched(delay = constants_1.DEBOUNCE) { method eventsDeduplicate (line 59) | eventsDeduplicate(events) { method eventsPopulate (line 74) | async eventsPopulate(targetPaths, events = [], isInitial = false) { method eventsPopulateAddDir (line 90) | async eventsPopulateAddDir(targetPaths, targetPath, events = [], isIni... method eventsPopulateUnlinkDir (line 104) | async eventsPopulateUnlinkDir(targetPaths, targetPath, events = [], is... method onTargetAdd (line 117) | onTargetAdd(targetPath) { method onTargetAddDir (line 127) | onTargetAddDir(targetPath) { method onTargetChange (line 140) | onTargetChange(targetPath) { method onTargetUnlink (line 145) | onTargetUnlink(targetPath) { method onTargetUnlinkDir (line 156) | onTargetUnlinkDir(targetPath) { method onTargetEvent (line 168) | onTargetEvent(event) { method onTargetEvents (line 186) | onTargetEvents(events) { method onWatcherEvent (line 191) | onWatcherEvent(event, targetPath, isInitial = false) { method onWatcherChange (line 194) | onWatcherChange(event = "change" /* CHANGE */, targetName) { method onWatcherError (line 204) | onWatcherError(error) { method init (line 213) | async init() { method initWatcherEvents (line 217) | async initWatcherEvents() { method initInitialEvents (line 223) | async initInitialEvents() { FILE: server/libs/watcher/watcher_locker.js class WatcherLocker (line 11) | class WatcherLocker { method constructor (line 13) | constructor(watcher) { method getLockAdd (line 18) | getLockAdd(config, timeout = constants_1.RENAME_TIMEOUT) { method getLockUnlink (line 54) | getLockUnlink(config, timeout = constants_1.RENAME_TIMEOUT) { method getLockTargetAdd (line 78) | getLockTargetAdd(targetPath, timeout) { method getLockTargetAddDir (line 87) | getLockTargetAddDir(targetPath, timeout) { method getLockTargetUnlink (line 96) | getLockTargetUnlink(targetPath, timeout) { method getLockTargetUnlinkDir (line 105) | getLockTargetUnlinkDir(targetPath, timeout) { method reset (line 114) | reset() { FILE: server/libs/watcher/watcher_poller.js class WatcherPoller (line 10) | class WatcherPoller { method constructor (line 11) | constructor() { method getIno (line 17) | getIno(targetPath, event, type) { method getStats (line 28) | getStats(targetPath) { method poll (line 31) | async poll(targetPath, timeout) { method reset (line 40) | reset() { method update (line 44) | async update(targetPath, timeout) { method updateIno (line 98) | updateIno(targetPath, event, stats) { method updateStats (line 102) | updateStats(targetPath, stats) { FILE: server/libs/watcher/watcher_stats.js class WatcherStats (line 6) | class WatcherStats { method constructor (line 8) | constructor(stats) { method isFile (line 20) | isFile() { method isDirectory (line 23) | isDirectory() { method isSymbolicLink (line 26) | isSymbolicLink() { FILE: server/libs/which/index.js constant COLON (line 11) | const COLON = isWindows ? ';' : ':' FILE: server/libs/xml/escapeForXML.js function escapeForXML (line 9) | function escapeForXML(string) { FILE: server/libs/xml/index.js function xml (line 10) | function xml(input, options) { function element (line 103) | function element(/*input, …*/) { function create_indent (line 132) | function create_indent(character, count) { function resolve (line 136) | function resolve(data, indent, indent_count) { function format (line 228) | function format(append, elem, end) { function attribute (line 281) | function attribute(key, value) { FILE: server/managers/AbMergeManager.js class AbMergeManager (line 19) | class AbMergeManager { method constructor (line 20) | constructor() { method getPendingTaskByLibraryItemId (line 32) | getPendingTaskByLibraryItemId(libraryItemId) { method cancelEncode (line 42) | cancelEncode(task) { method startAudiobookMerge (line 57) | async startAudiobookMerge(userId, libraryItem, options = {}) { method runAudiobookMerge (line 110) | async runAudiobookMerge(libraryItem, task, encodingOptions) { method removeTask (line 260) | async removeTask(task, removeTempFilepath = false) { FILE: server/managers/ApiCacheManager.js class ApiCacheManager (line 5) | class ApiCacheManager { method constructor (line 12) | constructor(cache = new LRUCache(this.defaultCacheOptions), ttlOptions... method init (line 17) | init(database = Database) { method getModelName (line 22) | getModelName(model) { method clearByUrlPattern (line 29) | clearByUrlPattern(urlPattern) { method clearUserProgressSlices (line 44) | clearUserProgressSlices(modelName, hook) { method clear (line 52) | clear(model, hook) { method reset (line 66) | reset() { method middleware (line 73) | get middleware() { FILE: server/managers/AudioMetadataManager.js class AudioMetadataMangaer (line 16) | class AudioMetadataMangaer { method constructor (line 17) | constructor() { method getQueuedTaskData (line 29) | getQueuedTaskData() { method getIsLibraryItemQueuedOrProcessing (line 33) | getIsLibraryItemQueuedOrProcessing(libraryItemId) { method getMetadataObjectForApi (line 42) | getMetadataObjectForApi(libraryItem) { method handleBatchEmbed (line 52) | handleBatchEmbed(userId, libraryItems, options = {}) { method updateMetadataForItem (line 64) | async updateMetadataForItem(userId, libraryItem, options = {}) { method runMetadataEmbed (line 133) | async runMetadataEmbed(task) { method handleTaskFinished (line 270) | handleTaskFinished(task) { FILE: server/managers/BackupManager.js class BackupManager (line 20) | class BackupManager { method constructor (line 21) | constructor() { method backupPath (line 30) | get backupPath() { method backupPathEnvSet (line 34) | get backupPathEnvSet() { method backupSchedule (line 38) | get backupSchedule() { method backupsToKeep (line 42) | get backupsToKeep() { method maxBackupSize (line 46) | get maxBackupSize() { method init (line 50) | async init() { method reload (line 68) | async reload() { method scheduleCron (line 75) | scheduleCron() { method updateCronSchedule (line 88) | updateCronSchedule() { method uploadBackup (line 103) | async uploadBackup(req, res) { method requestCreateBackup (line 161) | async requestCreateBackup(res) { method requestApplyBackup (line 178) | async requestApplyBackup(apiCacheManager, backup, res) { method loadBackups (line 247) | async loadBackups() { method runBackup (line 296) | async runBackup() { method removeBackup (line 356) | async removeBackup(backup) { method backupSqliteDb (line 371) | backupSqliteDb(backup) { method zipBackup (line 394) | zipBackup(sqliteBackupPath, backup) { FILE: server/managers/BinaryManager.js class ZippedAssetDownloader (line 13) | class ZippedAssetDownloader { method constructor (line 14) | constructor() { method getReleaseUrl (line 18) | getReleaseUrl(releaseTag) { method extractAssetUrl (line 22) | extractAssetUrl(assets, assetName) { method getAssetName (line 26) | getAssetName(binaryName, releaseTag) { method getAssetFileName (line 30) | getAssetFileName(binaryName) { method getAssetUrl (line 34) | async getAssetUrl(releaseTag, assetName) { method downloadAsset (line 54) | async downloadAsset(assetUrl, destDir) { method extractFiles (line 76) | async extractFiles(zipPath, filesToExtract, destDir) { method downloadAndExtractFiles (line 102) | async downloadAndExtractFiles(releaseTag, assetName, filesToExtract, d... method downloadBinary (line 116) | async downloadBinary(binaryName, releaseTag, destDir) { class FFBinariesDownloader (line 125) | class FFBinariesDownloader extends ZippedAssetDownloader { method constructor (line 126) | constructor() { method getPlatformSuffix (line 131) | getPlatformSuffix() { method getReleaseUrl (line 152) | getReleaseUrl(releaseTag) { method extractAssetUrl (line 156) | extractAssetUrl(assets, assetName) { method getAssetName (line 166) | getAssetName(binaryName, releaseTag) { method getAssetFileName (line 170) | getAssetFileName(binaryName) { class NunicodeDownloader (line 175) | class NunicodeDownloader extends ZippedAssetDownloader { method constructor (line 176) | constructor() { method getPlatformSuffix (line 181) | getPlatformSuffix() { method getAssetUrl (line 198) | async getAssetUrl(releaseTag, assetName) { method getAssetName (line 202) | getAssetName(binaryName, releaseTag) { method getAssetFileName (line 209) | getAssetFileName(binaryName) { class Binary (line 222) | class Binary { method constructor (line 223) | constructor(name, type, envVariable, validVersions, source, required =... method find (line 239) | async find(mainInstallDir, altInstallDir) { method getFileName (line 257) | getFileName() { method isLibraryVersionValid (line 269) | async isLibraryVersionValid(libraryPath) { method isExecutableVersionValid (line 281) | async isExecutableVersionValid(executablePath) { method isGood (line 293) | async isGood(binaryPath) { method download (line 305) | async download(destination) { class BinaryManager (line 323) | class BinaryManager { method constructor (line 330) | constructor(requiredBinaries = this.defaultRequiredBinaries) { method init (line 337) | async init() { method removeBinary (line 371) | async removeBinary(destination, binary) { method removeOldBinaries (line 388) | async removeOldBinaries(binaries) { method findRequiredBinaries (line 400) | async findRequiredBinaries() { method install (line 423) | async install(binaries) { FILE: server/managers/CacheManager.js class CacheManager (line 9) | class CacheManager { method constructor (line 10) | constructor() { method ensureCachePaths (line 20) | async ensureCachePaths() { method handleCoverCache (line 38) | async handleCoverCache(res, libraryItemId, options = {}) { method purgeCoverCache (line 85) | purgeCoverCache(libraryItemId) { method purgeImageCache (line 89) | purgeImageCache(entityId) { method purgeEntityCache (line 93) | async purgeEntityCache(entityId, cachePath) { method removeCache (line 106) | removeCache(path) { method purgeAll (line 120) | async purgeAll() { method purgeItems (line 130) | async purgeItems() { method handleAuthorCache (line 147) | async handleAuthorCache(res, authorId, options = {}) { FILE: server/managers/CoverManager.js class CoverManager (line 14) | class CoverManager { method constructor (line 15) | constructor() {} method getCoverDirectory (line 17) | getCoverDirectory(libraryItem) { method getFilesInDirectory (line 25) | getFilesInDirectory(dir) { method removeFile (line 34) | removeFile(filepath) { method removeOldCovers (line 47) | async removeOldCovers(dirpath, newCoverExt) { method checkFileIsValidImage (line 63) | async checkFileIsValidImage(imagepath, removeOnInvalid = false) { method uploadCover (line 88) | async uploadCover(libraryItem, coverFile) { method validateCoverPath (line 132) | async validateCoverPath(coverPath, libraryItem) { method saveEmbeddedCoverArt (line 215) | async saveEmbeddedCoverArt(audioFiles, libraryItemId, libraryItemPath) { method saveEbookCoverArt (line 252) | async saveEbookCoverArt(ebookFileScanData, libraryItemId, libraryItemP... method downloadCoverFromUrlNew (line 290) | async downloadCoverFromUrlNew(url, libraryItemId, libraryItemPath, for... FILE: server/managers/CoverSearchManager.js class CoverSearchManager (line 9) | class CoverSearchManager { method constructor (line 10) | constructor() { method startSearch (line 34) | async startSearch(requestId, searchParams, onResult, onComplete, onErr... method cancelSearch (line 78) | cancelSearch(requestId) { method searchPodcastCovers (line 92) | async searchPodcastCovers(requestId, title, signal, onResult, onError) { method searchBookCovers (line 117) | async searchBookCovers(requestId, provider, title, author, signal, onR... method executeWithTimeout (line 165) | async executeWithTimeout(fn, timeout, signal) { method extractCoversFromResults (line 222) | extractCoversFromResults(results) { method cancelAllSearches (line 245) | cancelAllSearches() { FILE: server/managers/CronManager.js class CronManager (line 9) | class CronManager { method constructor (line 10) | constructor(podcastManager, playbackSessionManager) { method init (line 27) | async init(libraries) { method initOpenSessionCleanupCron (line 42) | initOpenSessionCleanupCron() { method initLibraryScanCrons (line 56) | initLibraryScanCrons(libraries) { method startCronForLibrary (line 69) | startCronForLibrary(_library) { method removeCronForLibrary (line 91) | removeCronForLibrary(library) { method updateLibraryScanCron (line 100) | updateLibraryScanCron(library) { method initPodcastCrons (line 121) | async initPodcastCrons() { method startPodcastCron (line 154) | startPodcastCron(expression, libraryItemIds) { method executePodcastCron (line 174) | async executePodcastCron(expression) { method removePodcastEpisodeCron (line 216) | removePodcastEpisodeCron(podcastCron) { method checkUpdatePodcastCron (line 226) | checkUpdatePodcastCron(libraryItem) { FILE: server/managers/EmailManager.js class EmailManager (line 5) | class EmailManager { method constructor (line 6) | constructor() { } method getTransporter (line 8) | getTransporter() { method sendTest (line 12) | async sendTest(res) { method sendEBookToDevice (line 39) | async sendEBookToDevice(ebookFile, device, res) { FILE: server/managers/LogManager.js constant TAG (line 9) | const TAG = '[LogManager]' class LogManager (line 20) | class LogManager { method constructor (line 21) | constructor() { method loggerDailyLogsToKeep (line 35) | get loggerDailyLogsToKeep() { method ensureLogDirs (line 39) | async ensureLogDirs() { method init (line 55) | async init() { method scanLogFiles (line 94) | async scanLogFiles() { method removeLogFile (line 113) | async removeLogFile(filename) { method logToFile (line 134) | async logToFile(logObj) { method logCrashToFile (line 163) | async logCrashToFile(logObj) { method getMostRecentCurrentDailyLogs (line 179) | getMostRecentCurrentDailyLogs() { FILE: server/managers/MigrationManager.js class MigrationManager (line 9) | class MigrationManager { method constructor (line 17) | constructor(sequelize, isDatabaseNew, configPath = global.configPath) { method init (line 37) | async init(serverVersion) { method runMigrations (line 72) | async runMigrations() { method initUmzug (line 136) | async initUmzug(umzugStorage = new SequelizeStorage({ sequelize: this.... method fetchVersionsFromDatabase (line 193) | async fetchVersionsFromDatabase() { method checkOrCreateMigrationsMetaTable (line 209) | async checkOrCreateMigrationsMetaTable() { method extractVersionFromTag (line 252) | extractVersionFromTag(tag) { method copyMigrationsToConfigDir (line 258) | async copyMigrationsToConfigDir() { method findMigrationsToRun (line 281) | findMigrationsToRun(migrations, executedMigrations, direction) { method updateMaxVersion (line 300) | async updateMaxVersion() { method updateDatabaseVersion (line 312) | async updateDatabaseVersion() { FILE: server/managers/NotificationManager.js class NotificationManager (line 7) | class NotificationManager { method constructor (line 8) | constructor() { method getData (line 13) | getData() { method onPodcastEpisodeDownloaded (line 22) | async onPodcastEpisodeDownloaded(libraryItem, episode) { method onBackupCompleted (line 55) | async onBackupCompleted(backup, totalBackupCount, removedOldest) { method onRSSFeedFailed (line 81) | async onRSSFeedFailed(feedUrl, numFailed, title) { method onRSSFeedDisabled (line 105) | async onRSSFeedDisabled(feedUrl, numFailed, title) { method onBackupFailed (line 126) | async onBackupFailed(errorMsg) { method onTest (line 141) | onTest() { method triggerNotification (line 151) | async triggerNotification(eventName, eventData, intentionallyFail = fa... method checkTriggerNotification (line 186) | checkTriggerNotification(eventName, eventData) { method notificationFinished (line 200) | notificationFinished() { method sendTestNotification (line 212) | sendTestNotification(notification) { method sendNotification (line 222) | sendNotification(notification, eventData) { FILE: server/managers/PlaybackSessionManager.js class PlaybackSessionManager (line 19) | class PlaybackSessionManager { method constructor (line 20) | constructor() { method getSession (line 35) | getSession(sessionId) { method getUserSession (line 38) | getUserSession(userId) { method getStream (line 41) | getStream(sessionId) { method getDeviceInfo (line 52) | async getDeviceInfo(req, clientDeviceInfo = null) { method startSessionRequest (line 80) | async startSessionRequest(req, res, episodeId) { method syncSessionRequest (line 95) | async syncSessionRequest(user, session, payload, res) { method syncLocalSessionsRequest (line 103) | async syncLocalSessionsRequest(req, res) { method syncLocalSession (line 127) | async syncLocalSession(user, sessionJson, deviceInfo) { method syncLocalSessionRequest (line 281) | async syncLocalSessionRequest(req, res) { method closeSessionRequest (line 299) | async closeSessionRequest(user, session, syncData, res) { method startSession (line 313) | async startSession(user, deviceInfo, libraryItem, episodeId, options) { method syncSession (line 373) | async syncSession(user, session, syncData) { method closeSession (line 421) | async closeSession(user, session, syncData = null) { method saveSession (line 433) | saveSession(session) { method removeSession (line 448) | async removeSession(sessionId) { method removeOrphanStreams (line 461) | async removeOrphanStreams() { method closeStaleOpenSessions (line 489) | async closeStaleOpenSessions() { FILE: server/managers/PodcastManager.js class PodcastManager (line 25) | class PodcastManager { method constructor (line 26) | constructor() { method getEpisodeDownloadsInQueue (line 36) | getEpisodeDownloadsInQueue(libraryItemId) { method clearDownloadQueue (line 40) | clearDownloadQueue(libraryItemId = null) { method downloadPodcastEpisodes (line 60) | async downloadPodcastEpisodes(libraryItem, episodesToDownload, isAutoD... method startPodcastEpisodeDownload (line 73) | async startPodcastEpisodeDownload(podcastEpisodeDownload) { method scanAddPodcastEpisodeAudioFile (line 192) | async scanAddPodcastEpisodeAudioFile() { method getRemoveOldestEpisode (line 273) | async getRemoveOldestEpisode(libraryItem, episodeIdJustDownloaded) { method probeAudioFile (line 307) | async probeAudioFile(libraryFile) { method runEpisodeCheck (line 325) | async runEpisodeCheck(libraryItem) { method checkPodcastForNewEpisodes (line 380) | async checkPodcastForNewEpisodes(podcastLibraryItem, dateToCheckForEpi... method checkAndDownloadNewEpisodes (line 417) | async checkAndDownloadNewEpisodes(libraryItem, maxEpisodesToDownload) { method findEpisode (line 441) | async findEpisode(rssFeedUrl, searchTitle) { method getParsedOPMLFileFeeds (line 472) | getParsedOPMLFileFeeds(opmlText) { method getOPMLFeeds (line 476) | async getOPMLFeeds(opmlText) { method generateOPMLFileText (line 505) | generateOPMLFileText(podcasts) { method getDownloadQueueDetails (line 509) | getDownloadQueueDetails(libraryId = null) { method createPodcastsFromFeedUrls (line 526) | async createPodcastsFromFeedUrls(rssFeedUrls, folder, autoDownloadEpis... FILE: server/managers/RssFeedManager.js class RssFeedManager (line 10) | class RssFeedManager { method constructor (line 11) | constructor() {} method init (line 16) | async init() { method findFeedForEntityId (line 58) | findFeedForEntityId(entityId) { method checkExistsBySlug (line 71) | checkExistsBySlug(slug) { method checkFeedRequiresUpdate (line 87) | async checkFeedRequiresUpdate(feed) { method getFeed (line 164) | async getFeed(req, res) { method getFeedItem (line 196) | async getFeedItem(req, res) { method getFeedCover (line 228) | async getFeedCover(req, res) { method getFeedOptionsFromReqOptions (line 266) | getFeedOptionsFromReqOptions(options) { method openFeedForItem (line 287) | async openFeedForItem(userId, libraryItem, options) { method openFeedForCollection (line 308) | async openFeedForCollection(userId, collectionExpanded, options) { method openFeedForSeries (line 329) | async openFeedForSeries(userId, seriesExpanded, options) { method handleCloseFeed (line 349) | async handleCloseFeed(feed) { method closeFeedForEntityId (line 362) | async closeFeedForEntityId(entityId) { method closeFeedsForEntityIds (line 378) | async closeFeedsForEntityIds(entityIds) { method getFeeds (line 393) | getFeeds() { FILE: server/managers/ShareManager.js class ShareManager (line 14) | class ShareManager { method constructor (line 15) | constructor() { method init (line 23) | init() { method addOpenSharePlaybackSession (line 30) | addOpenSharePlaybackSession(playbackSession) { method closeSharePlaybackSession (line 39) | closeSharePlaybackSession(playbackSession) { method findByMediaItemId (line 49) | findByMediaItemId(mediaItemId) { method findBySlug (line 66) | findBySlug(slug) { method findPlaybackSessionBySessionId (line 82) | findPlaybackSessionBySessionId(shareSessionId) { method loadMediaItemShares (line 90) | async loadMediaItemShares() { method scheduleMediaItemShare (line 114) | scheduleMediaItemShare(mediaItemShare) { method openMediaItemShare (line 136) | openMediaItemShare(mediaItemShare) { method removeMediaItemShare (line 149) | async removeMediaItemShare(mediaItemShareId) { method destroyMediaItemShare (line 172) | destroyMediaItemShare(mediaItemShareId) { method closeStaleOpenShareSessions (line 179) | closeStaleOpenShareSessions() { FILE: server/managers/TaskManager.js class TaskManager (line 11) | class TaskManager { method constructor (line 12) | constructor() { method addTask (line 22) | addTask(task) { method taskFinished (line 32) | taskFinished(task) { method createAndAddTask (line 48) | createAndAddTask(action, titleString, descriptionString, showSuccess, ... method createAndEmitFailedTask (line 63) | createAndEmitFailedTask(action, titleString, descriptionString, errorM... FILE: server/migrations/v2.15.0-series-column-unique.js function up (line 17) | async function up({ context: { queryInterface, logger } }) { function down (line 199) | async function down({ context: { queryInterface, logger } }) { FILE: server/migrations/v2.15.1-reindex-nocase.js function up (line 16) | async function up({ context: { queryInterface, logger } }) { function down (line 33) | async function down({ context: { queryInterface, logger } }) { FILE: server/migrations/v2.15.2-index-creation.js function up (line 16) | async function up({ context: { queryInterface, logger } }) { function down (line 67) | async function down({ context: { queryInterface, logger } }) { FILE: server/migrations/v2.17.0-uuid-replacement.js function up (line 16) | async function up({ context: { queryInterface, logger } }) { function down (line 64) | async function down({ context: { queryInterface, logger } }) { FILE: server/migrations/v2.17.3-fk-constraints.js function up (line 17) | async function up({ context: { queryInterface, logger } }) { function down (line 106) | async function down({ context: { queryInterface, logger } }) { function getUpdatedForeignKeys (line 153) | async function getUpdatedForeignKeys(queryInterface, tableName, constrai... function describeTableWithFKs (line 183) | async function describeTableWithFKs(queryInterface, tableName, updatedFo... function changeConstraints (line 210) | async function changeConstraints(queryInterface, tableName, constraints) { FILE: server/migrations/v2.17.4-use-subfolder-for-oidc-redirect-uris.js function up (line 19) | async function up({ context: { queryInterface, logger } }) { function down (line 41) | async function down({ context: { queryInterface, logger } }) { function getServerSettings (line 58) | async function getServerSettings(queryInterface, logger) { function updateServerSettings (line 76) | async function updateServerSettings(queryInterface, logger, serverSettin... FILE: server/migrations/v2.17.5-remove-host-from-feed-urls.js function up (line 20) | async function up({ context: { queryInterface, logger } }) { function down (line 50) | async function down({ context: { queryInterface, logger } }) { FILE: server/migrations/v2.17.6-share-add-isdownloadable.js function up (line 20) | async function up({ context: { queryInterface, logger } }) { function down (line 49) | async function down({ context: { queryInterface, logger } }) { FILE: server/migrations/v2.17.7-add-indices.js function up (line 20) | async function up({ context: { queryInterface, logger } }) { function down (line 36) | async function down({ context: { queryInterface, logger } }) { function addIndex (line 54) | async function addIndex(queryInterface, logger, tableName, columns) { function removeIndex (line 77) | async function removeIndex(queryInterface, logger, tableName, columns) { FILE: server/migrations/v2.19.1-copy-title-to-library-items.js function up (line 24) | async function up({ context: { queryInterface, logger } }) { function down (line 50) | async function down({ context: { queryInterface, logger } }) { function addIndex (line 75) | async function addIndex(queryInterface, logger, tableName, columns) { function removeIndex (line 100) | async function removeIndex(queryInterface, logger, tableName, columns) { function addColumn (line 106) | async function addColumn(queryInterface, logger, table, column, options) { function removeColumn (line 117) | async function removeColumn(queryInterface, logger, table, column) { function copyColumn (line 123) | async function copyColumn(queryInterface, logger, sourceTable, sourceCol... function addTrigger (line 134) | async function addTrigger(queryInterface, logger, sourceTable, sourceCol... function removeTrigger (line 153) | async function removeTrigger(queryInterface, logger, targetTable, target... function convertToSnakeCase (line 160) | function convertToSnakeCase(str) { FILE: server/migrations/v2.19.4-improve-podcast-queries.js function up (line 25) | async function up({ context: { queryInterface, logger } }) { function down (line 59) | async function down({ context: { queryInterface, logger } }) { function populateNumEpisodes (line 76) | async function populateNumEpisodes(queryInterface, logger) { function populatePodcastId (line 85) | async function populatePodcastId(queryInterface, logger) { function addColumn (line 105) | async function addColumn(queryInterface, logger, table, column, options) { function removeColumn (line 124) | async function removeColumn(queryInterface, logger, table, column) { function addTrigger (line 149) | async function addTrigger(queryInterface, logger, sourceTable, sourceCol... function removeTrigger (line 178) | async function removeTrigger(queryInterface, logger, sourceTable, source... function copyColumn (line 198) | async function copyColumn(queryInterface, logger, sourceTable, sourceCol... function convertToSnakeCase (line 215) | function convertToSnakeCase(str) { FILE: server/migrations/v2.20.0-improve-author-sort-queries.js function up (line 41) | async function up({ context: { queryInterface, logger } }) { function down (line 74) | async function down({ context: { queryInterface, logger } }) { class MigrationHelper (line 95) | class MigrationHelper { method constructor (line 96) | constructor(queryInterface, logger) { method addColumn (line 101) | async addColumn(table, column, options) { method addColumns (line 112) | async addColumns() { method removeColumn (line 120) | async removeColumn(table, column) { method removeColumns (line 131) | async removeColumns() { method populateColumnsFromSource (line 139) | async populateColumnsFromSource() { method addBookAuthorsTrigger (line 154) | async addBookAuthorsTrigger(action) { method addAuthorsUpdateTrigger (line 178) | async addAuthorsUpdateTrigger() { method addTriggers (line 202) | async addTriggers() { method removeBookAuthorsTrigger (line 208) | async removeBookAuthorsTrigger(action) { method removeAuthorsUpdateTrigger (line 215) | async removeAuthorsUpdateTrigger() { method removeTriggers (line 222) | async removeTriggers() { method addIndex (line 228) | async addIndex(tableName, columns) { method addIndexes (line 244) | async addIndexes() { method removeIndex (line 250) | async removeIndex(tableName, columns) { method removeIndexes (line 256) | async removeIndexes() { function convertToSnakeCase (line 268) | function convertToSnakeCase(str) { FILE: server/migrations/v2.26.0-create-auth-tables.js function up (line 20) | async function up({ context: { queryInterface, logger } }) { function down (line 138) | async function down({ context: { queryInterface, logger } }) { FILE: server/migrations/v2.33.0-add-discover-query-indexes.js function up (line 27) | async function up({ context: { queryInterface, logger } }) { function down (line 37) | async function down({ context: { queryInterface, logger } }) { function addIndexIfMissing (line 47) | async function addIndexIfMissing(queryInterface, logger, index) { function removeIndexIfExists (line 62) | async function removeIndexIfExists(queryInterface, logger, index) { FILE: server/models/ApiKey.js class ApiKeyCache (line 21) | class ApiKeyCache { method constructor (line 22) | constructor() { method getById (line 26) | getById(id) { method set (line 31) | set(apiKey) { method delete (line 36) | delete(apiKeyId) { method maybeInvalidate (line 40) | maybeInvalidate(apiKey) { class ApiKey (line 47) | class ApiKey extends Model { method constructor (line 48) | constructor(values, options) { method getDefaultPermissions (line 84) | static getDefaultPermissions() { method mergePermissionsWithDefault (line 105) | static mergePermissionsWithDefault(reqPermissions) { method deactivateExpiredApiKeys (line 141) | static async deactivateExpiredApiKeys() { method generateApiKey (line 166) | static async generateApiKey(tokenSecret, keyId, name, expiresIn) { method getById (line 198) | static async getById(apiKeyId) { method init (line 215) | static init(sequelize) { method update (line 256) | async update(values, options) { method save (line 261) | async save(options) { method destroy (line 266) | async destroy(options) { FILE: server/models/Author.js class Author (line 4) | class Author extends Model { method constructor (line 5) | constructor(values, options) { method getLastFirst (line 33) | static getLastFirst(name) { method checkExistsById (line 43) | static async checkExistsById(authorId) { method getByNameAndLibrary (line 55) | static async getByNameAndLibrary(authorName, libraryId) { method getAllLibraryItemsForAuthor (line 71) | static async getAllLibraryItemsForAuthor(authorId) { method findOrCreateByNameAndLibrary (line 116) | static async findOrCreateByNameAndLibrary(name, libraryId) { method init (line 130) | static init(sequelize) { method toOldJSON (line 176) | toOldJSON() { method toOldJSONExpanded (line 194) | toOldJSONExpanded(numBooks = 0) { method toJSONMinimal (line 200) | toJSONMinimal() { FILE: server/models/Book.js class Book (line 76) | class Book extends Model { method constructor (line 77) | constructor(values, options) { method init (line 139) | static init(sequelize) { method authorName (line 212) | get authorName() { method authorNameLF (line 226) | get authorNameLF() { method seriesName (line 243) | get seriesName() { method includedAudioFiles (line 259) | get includedAudioFiles() { method hasMediaFiles (line 263) | get hasMediaFiles() { method hasAudioTracks (line 267) | get hasAudioTracks() { method checkCanDirectPlay (line 277) | checkCanDirectPlay(supportedMimeTypes) { method getTracklist (line 292) | getTracklist(libraryItemId) { method getChapters (line 308) | getChapters() { method getPlaybackTitle (line 312) | getPlaybackTitle() { method getPlaybackAuthor (line 316) | getPlaybackAuthor() { method getPlaybackDuration (line 320) | getPlaybackDuration() { method size (line 329) | get size() { method getAbsMetadataJson (line 338) | getAbsMetadataJson() { method updateFromRequest (line 369) | async updateFromRequest(payload) { method updateAuthorsFromRequest (line 454) | async updateAuthorsFromRequest(authors, libraryId) { method updateSeriesFromRequest (line 499) | async updateSeriesFromRequest(seriesObjects, libraryId) { method oldMetadataToJSON (line 554) | oldMetadataToJSON() { method oldMetadataToJSONMinified (line 576) | oldMetadataToJSONMinified() { method oldMetadataToJSONExpanded (line 598) | oldMetadataToJSONExpanded() { method toOldJSON (line 616) | toOldJSON(libraryItemId) { method toOldJSONMinified (line 639) | toOldJSONMinified() { method toOldJSONExpanded (line 661) | toOldJSONExpanded(libraryItemId) { FILE: server/models/BookAuthor.js class BookAuthor (line 3) | class BookAuthor extends Model { method constructor (line 4) | constructor(values, options) { method removeByIds (line 17) | static removeByIds(authorId = null, bookId = null) { method getCountForAuthor (line 32) | static getCountForAuthor(authorId) { method init (line 44) | static init(sequelize) { FILE: server/models/BookSeries.js class BookSeries (line 3) | class BookSeries extends Model { method constructor (line 4) | constructor(values, options) { method removeByIds (line 19) | static removeByIds(seriesId = null, bookId = null) { method init (line 32) | static init(sequelize) { FILE: server/models/Collection.js class Collection (line 3) | class Collection extends Model { method constructor (line 4) | constructor(values, options) { method getOldCollectionsJsonExpanded (line 34) | static async getOldCollectionsJsonExpanded(user, libraryId, include) { method getExpandedById (line 118) | static async getExpandedById(collectionId) { method removeAllForLibrary (line 151) | static async removeAllForLibrary(libraryId) { method init (line 164) | static init(sequelize) { method getBooksExpandedWithLibraryItem (line 192) | getBooksExpandedWithLibraryItem() { method getOldJsonExpanded (line 222) | async getOldJsonExpanded(user, include) { method toOldJSON (line 263) | toOldJSON(libraryItemIds = []) { method toOldJSONExpanded (line 275) | toOldJSONExpanded() { FILE: server/models/CollectionBook.js class CollectionBook (line 3) | class CollectionBook extends Model { method constructor (line 4) | constructor(values, options) { method init (line 19) | static init(sequelize) { FILE: server/models/CustomMetadataProvider.js class CustomMetadataProvider (line 11) | class CustomMetadataProvider extends Model { method constructor (line 12) | constructor(values, options) { method getForClientByMediaType (line 40) | static async getForClientByMediaType(mediaType) { method checkExistsBySlug (line 56) | static async checkExistsBySlug(providerSlug) { method init (line 67) | static init(sequelize) { method getSlug (line 88) | getSlug() { method toClientJson (line 96) | toClientJson() { FILE: server/models/Device.js class Device (line 4) | class Device extends Model { method constructor (line 5) | constructor(values, options) { method getOldDeviceByDeviceId (line 32) | static async getOldDeviceByDeviceId(deviceId) { method createFromOld (line 42) | static createFromOld(oldDevice) { method updateFromOld (line 47) | static updateFromOld(oldDevice) { method getFromOld (line 56) | static getFromOld(oldDeviceInfo) { method init (line 92) | static init(sequelize) { method toOldJSON (line 122) | toOldJSON() { method getOldDevice (line 149) | getOldDevice() { FILE: server/models/Feed.js constant RSS (line 5) | const RSS = require('../libs/rss') class Feed (line 21) | class Feed extends Model { method constructor (line 22) | constructor(values, options) { method removeById (line 80) | static async removeById(feedId) { method getFeedObjForLibraryItem (line 100) | static getFeedObjForLibraryItem(userId, libraryItem, slug, serverAddre... method createFeedForLibraryItem (line 153) | static async createFeedForLibraryItem(userId, libraryItem, slug, serve... method getFeedObjForCollection (line 189) | static getFeedObjForCollection(userId, collectionExpanded, slug, serve... method createFeedForCollection (line 248) | static async createFeedForCollection(userId, collectionExpanded, slug,... method getFeedObjForSeries (line 279) | static getFeedObjForSeries(userId, seriesExpanded, slug, serverAddress... method createFeedForSeries (line 337) | static async createFeedForSeries(userId, seriesExpanded, slug, serverA... method init (line 366) | static init(sequelize) { method updateFeedForEntity (line 476) | async updateFeedForEntity() { method getEntity (line 553) | getEntity(options) { method buildXml (line 563) | buildXml(hostPrefix) { method getEpisodePath (line 627) | getEpisodePath(id) { method toOldJSON (line 633) | toOldJSON() { method toOldJSONMinified (line 665) | toOldJSONMinified() { FILE: server/models/FeedEpisode.js class FeedEpisode (line 8) | class FeedEpisode extends Model { method constructor (line 9) | constructor(values, options) { method getFeedEpisodeObjFromPodcastEpisode (line 58) | static getFeedEpisodeObjFromPodcastEpisode(libraryItemExpanded, feed, ... method createFromPodcastEpisodes (line 88) | static async createFromPodcastEpisodes(libraryItemExpanded, feed, slug... method checkUseChapterTitlesForEpisodes (line 119) | static checkUseChapterTitlesForEpisodes(trackList, book) { method getFeedEpisodeObjFromAudiobookTrack (line 141) | static getFeedEpisodeObjFromAudiobookTrack(book, pubDateStart, feed, s... method createFromAudiobookTracks (line 189) | static async createFromAudiobookTracks(libraryItemExpanded, feed, slug... method createFromBooks (line 217) | static async createFromBooks(books, feed, slug, transaction) { method init (line 250) | static init(sequelize) { method getOldEpisode (line 287) | getOldEpisode() { method getRSSData (line 314) | getRSSData(hostPrefix) { FILE: server/models/Library.js class Library (line 19) | class Library extends Model { method constructor (line 20) | constructor(values, options) { method getDefaultLibrarySettingsForMediaType (line 56) | static getDefaultLibrarySettingsForMediaType(mediaType) { method defaultMetadataPrecedence (line 84) | static get defaultMetadataPrecedence() { method getAllWithFolders (line 92) | static getAllWithFolders() { method findByIdWithFolders (line 104) | static findByIdWithFolders(libraryId) { method getAllLibraryIds (line 114) | static async getAllLibraryIds() { method getMaxDisplayOrder (line 127) | static getMaxDisplayOrder() { method resetDisplayOrder (line 135) | static async resetDisplayOrder() { method init (line 154) | static init(sequelize) { method isPodcast (line 179) | get isPodcast() { method isBook (line 182) | get isBook() { method lastScanMetadataPrecedence (line 188) | get lastScanMetadataPrecedence() { method librarySettings (line 195) | get librarySettings() { method toOldJSON (line 202) | toOldJSON() { FILE: server/models/LibraryFolder.js class LibraryFolder (line 3) | class LibraryFolder extends Model { method constructor (line 4) | constructor(values, options) { method init (line 23) | static init(sequelize) { method toOldJSON (line 49) | toOldJSON() { FILE: server/models/LibraryItem.js class LibraryItem (line 27) | class LibraryItem extends Model { method constructor (line 28) | constructor(values, options) { method getLibraryItemsIncrement (line 94) | static getLibraryItemsIncrement(offset, limit, where = null) { method removeById (line 136) | static removeById(libraryItemId) { method findAllExpandedWhere (line 150) | static async findAllExpandedWhere(where = null) { method getExpandedById (line 191) | static async getExpandedById(libraryItemId) { method findOneExpanded (line 242) | static async findOneExpanded(where, replacements = null, include = nul... method getByFilterAndSort (line 294) | static async getByFilterAndSort(library, user, options) { method getPersonalizedShelves (line 338) | static async getPersonalizedShelves(library, user, include, limit) { method getForAuthor (line 571) | static async getForAuthor(author, user = null) { method checkExistsById (line 581) | static async checkExistsById(libraryItemId) { method getCoverPath (line 590) | static async getCoverPath(libraryItemId) { method saveMetadataFile (line 616) | async saveMetadataFile() { method init (line 722) | static init(sequelize) { method isBook (line 849) | get isBook() { method isPodcast (line 852) | get isPodcast() { method hasAudioTracks (line 855) | get hasAudioTracks() { method getMedia (line 864) | getMedia(options) { method getMediaExpanded (line 874) | getMediaExpanded() { method hasAudioTracks (line 913) | hasAudioTracks() { method getAudioFileWithIno (line 930) | getAudioFileWithIno(ino) { method getTrackList (line 950) | getTrackList(episodeId) { method getLibraryFileWithIno (line 963) | getLibraryFileWithIno(ino) { method getLibraryFiles (line 969) | getLibraryFiles() { method getLibraryFilesJson (line 973) | getLibraryFilesJson() { method toOldJSON (line 977) | toOldJSON() { method toOldJSONMinified (line 1007) | toOldJSONMinified() { method toOldJSONExpanded (line 1035) | toOldJSONExpanded() { FILE: server/models/MediaItemShare.js class MediaItemShare (line 32) | class MediaItemShare extends Model { method constructor (line 33) | constructor(values, options) { method toJSONForClient (line 65) | toJSONForClient() { method getMediaItemsLibraryItem (line 85) | static async getMediaItemsLibraryItem(mediaItemId, mediaItemType) { method getMediaItem (line 105) | getMediaItem(options) { method init (line 116) | static init(sequelize) { FILE: server/models/MediaProgress.js class MediaProgress (line 5) | class MediaProgress extends Model { method constructor (line 6) | constructor(values, options) { method removeById (line 41) | static removeById(mediaProgressId) { method init (line 57) | static init(sequelize) { method getMediaItem (line 149) | getMediaItem(options) { method getOldMediaProgress (line 155) | getOldMediaProgress() { method progress (line 178) | get progress() { method applyProgressUpdate (line 190) | async applyProgressUpdate(progressPayload) { FILE: server/models/PlaybackSession.js class PlaybackSession (line 5) | class PlaybackSession extends Model { method constructor (line 6) | constructor(values, options) { method getOldPlaybackSessions (line 55) | static async getOldPlaybackSessions(where = null) { method getById (line 67) | static async getById(sessionId) { method getOldPlaybackSession (line 79) | static getOldPlaybackSession(playbackSessionExpanded) { method removeById (line 110) | static removeById(sessionId) { method createFromOld (line 118) | static createFromOld(oldPlaybackSession) { method updateFromOld (line 125) | static updateFromOld(oldPlaybackSession) { method getFromOld (line 135) | static getFromOld(oldPlaybackSession) { method getMediaItem (line 164) | getMediaItem(options) { method init (line 174) | static init(sequelize) { FILE: server/models/Playlist.js class Playlist (line 5) | class Playlist extends Model { method constructor (line 6) | constructor(values, options) { method getOldPlaylistsForUserAndLibrary (line 37) | static async getOldPlaylistsForUserAndLibrary(userId, libraryId) { method getNumPlaylistsForUserAndLibrary (line 96) | static async getNumPlaylistsForUserAndLibrary(userId, libraryId) { method getPlaylistsForMediaItemIds (line 110) | static async getPlaylistsForMediaItemIds(mediaItemIds) { method removeMediaItemsFromPlaylists (line 172) | static async removeMediaItemsFromPlaylists(mediaItemIds) { method init (line 214) | static init(sequelize) { method getMediaItemsExpandedWithLibraryItem (line 272) | getMediaItemsExpandedWithLibraryItem() { method getOldJsonExpanded (line 314) | async getOldJsonExpanded() { method checkHasMediaItem (line 325) | checkHasMediaItem(libraryItemId, episodeId) { method toOldJSON (line 335) | toOldJSON() { method toOldJSONExpanded (line 347) | toOldJSONExpanded() { FILE: server/models/PlaylistMediaItem.js class PlaylistMediaItem (line 3) | class PlaylistMediaItem extends Model { method constructor (line 4) | constructor(values, options) { method getMediaItem (line 26) | getMediaItem(options) { method init (line 36) | static init(sequelize) { FILE: server/models/Podcast.js class Podcast (line 14) | class Podcast extends Model { method constructor (line 15) | constructor(values, options) { method createFromRequest (line 79) | static async createFromRequest(payload, transaction) { method init (line 123) | static init(sequelize) { method hasMediaFiles (line 170) | get hasMediaFiles() { method hasAudioTracks (line 174) | get hasAudioTracks() { method size (line 178) | get size() { method getAbsMetadataJson (line 183) | getAbsMetadataJson() { method updateFromRequest (line 207) | async updateFromRequest(payload) { method checkCanDirectPlay (line 297) | checkCanDirectPlay(supportedMimeTypes, episodeId) { method getTracklist (line 319) | getTracklist(libraryItemId, episodeId) { method getChapters (line 335) | getChapters(episodeId) { method getPlaybackTitle (line 345) | getPlaybackTitle(episodeId) { method getPlaybackAuthor (line 355) | getPlaybackAuthor() { method getPlaybackDuration (line 359) | getPlaybackDuration(episodeId) { method getLatestEpisodePublishedAt (line 373) | getLatestEpisodePublishedAt() { method checkHasEpisodeByFeedEpisode (line 388) | checkHasEpisodeByFeedEpisode(feedEpisode) { method oldMetadataToJSON (line 397) | oldMetadataToJSON() { method oldMetadataToJSONExpanded (line 415) | oldMetadataToJSONExpanded() { method toOldJSON (line 426) | toOldJSON(libraryItemId) { method toOldJSONMinified (line 449) | toOldJSONMinified() { method toOldJSONExpanded (line 466) | toOldJSONExpanded(libraryItemId) { FILE: server/models/PodcastEpisode.js class PodcastEpisode (line 11) | class PodcastEpisode extends Model { method constructor (line 12) | constructor(values, options) { method createFromRssPodcastEpisode (line 61) | static async createFromRssPodcastEpisode(rssPodcastEpisode, podcastId,... method init (line 97) | static init(sequelize) { method size (line 153) | get size() { method duration (line 157) | get duration() { method checkMatchesGuidOrEnclosureUrl (line 168) | checkMatchesGuidOrEnclosureUrl(guid, enclosureURL) { method getAudioTrack (line 184) | getAudioTrack(libraryItemId) { method toOldJSON (line 193) | toOldJSON(libraryItemId) { method toOldJSONExpanded (line 230) | toOldJSONExpanded(libraryItemId) { FILE: server/models/Series.js class Series (line 5) | class Series extends Model { method constructor (line 6) | constructor(values, options) { method checkExistsById (line 35) | static async checkExistsById(seriesId) { method getByNameAndLibrary (line 46) | static async getByNameAndLibrary(seriesName, libraryId) { method getExpandedById (line 62) | static async getExpandedById(seriesId) { method findOrCreateByNameAndLibrary (line 75) | static async findOrCreateByNameAndLibrary(seriesName, libraryId) { method init (line 89) | static init(sequelize) { method getBooksExpandedWithLibraryItem (line 144) | getBooksExpandedWithLibraryItem() { method toOldJSON (line 168) | toOldJSON() { method toJSONMinimal (line 180) | toJSONMinimal(sequence) { FILE: server/models/Session.js class Session (line 3) | class Session extends Model { method constructor (line 4) | constructor(values, options) { method createSession (line 28) | static async createSession(userId, ipAddress, userAgent, refreshToken,... method cleanupExpiredSessions (line 37) | static async cleanupExpiredSessions() { method init (line 52) | static init(sequelize) { FILE: server/models/Setting.js class Setting (line 7) | class Setting extends Model { method constructor (line 8) | constructor(values, options) { method getOldSettings (line 21) | static async getOldSettings() { method updateSettingObj (line 36) | static updateSettingObj(setting) { method init (line 47) | static init(sequelize) { FILE: server/models/User.js class UserCache (line 10) | class UserCache { method constructor (line 11) | constructor() { method getById (line 15) | getById(id) { method getByEmail (line 20) | getByEmail(email) { method getByUsername (line 25) | getByUsername(username) { method getByOldId (line 30) | getByOldId(oldUserId) { method getByOpenIDSub (line 35) | getByOpenIDSub(sub) { method set (line 40) | set(user) { method delete (line 45) | delete(userId) { method maybeInvalidate (line 49) | maybeInvalidate(user) { class User (line 83) | class User extends Model { method constructor (line 84) | constructor(values, options) { method getSampleAbsPermissions (line 147) | static getSampleAbsPermissions() { method getDefaultPermissionsForUserType (line 169) | static getDefaultPermissionsForUserType(type) { method createRootUser (line 192) | static async createRootUser(username, pash, auth) { method findUserFromOpenIdUserInfo (line 220) | static async findUserFromOpenIdUserInfo(userinfo) { method createUserFromOpenIdUserInfo (line 311) | static async createUserFromOpenIdUserInfo(userinfo) { method getUserByUsername (line 348) | static async getUserByUsername(username) { method getUserByEmail (line 373) | static async getUserByEmail(email) { method getUserById (line 398) | static async getUserById(userId) { method getUserByIdOrOldId (line 420) | static async getUserByIdOrOldId(userId) { method getUserByOpenIDSub (line 442) | static async getUserByOpenIDSub(sub) { method getMinifiedUserObjects (line 462) | static async getMinifiedUserObjects() { method getHasRootUser (line 478) | static async getHasRootUser() { method checkUserExistsWithUsername (line 492) | static async checkUserExistsWithUsername(username) { method mediaProgressRemoved (line 501) | static mediaProgressRemoved(mediaProgress) { method init (line 513) | static init(sequelize) { method isRoot (line 546) | get isRoot() { method isAdminOrUp (line 549) | get isAdminOrUp() { method isUser (line 552) | get isUser() { method isGuest (line 555) | get isGuest() { method canAccessExplicitContent (line 558) | get canAccessExplicitContent() { method canDelete (line 561) | get canDelete() { method canUpdate (line 564) | get canUpdate() { method canDownload (line 567) | get canDownload() { method canUpload (line 570) | get canUpload() { method authOpenIDSub (line 574) | get authOpenIDSub() { method toJSONForPublic (line 585) | toJSONForPublic(sessions) { method toOldJSONForBrowser (line 604) | toOldJSONForBrowser(hideRootToken = false, minimal = false) { method checkCanAccessLibrary (line 647) | checkCanAccessLibrary(libraryId) { method checkCanAccessLibraryItemWithTags (line 659) | checkCanAccessLibraryItemWithTags(tags) { method checkCanAccessLibraryItem (line 676) | checkCanAccessLibraryItem(libraryItem) { method getDefaultLibraryId (line 692) | getDefaultLibraryId(libraryIds) { method getMediaProgress (line 704) | getMediaProgress(mediaItemId) { method getOldMediaProgress (line 717) | getOldMediaProgress(libraryItemId, episodeId = null) { method createUpdateMediaProgressFromPayload (line 731) | async createUpdateMediaProgressFromPayload(progressPayload) { method findBookmark (line 842) | findBookmark(libraryItemId, time) { method createBookmark (line 854) | async createBookmark(libraryItemId, time, title) { method updateBookmark (line 886) | async updateBookmark(libraryItemId, time, title) { method removeBookmark (line 905) | async removeBookmark(libraryItemId, time) { method addSeriesToHideFromContinueListening (line 921) | async addSeriesToHideFromContinueListening(seriesId) { method removeSeriesFromHideFromContinueListening (line 937) | async removeSeriesFromHideFromContinueListening(seriesId) { method updatePermissionsFromExternalJSON (line 954) | async updatePermissionsFromExternalJSON(absPermissions) { method update (line 1011) | async update(values, options) { method save (line 1016) | async save(options) { method destroy (line 1021) | async destroy(options) { FILE: server/objects/Backup.js class Backup (line 5) | class Backup { method constructor (line 6) | constructor(data = null) { method detailsString (line 25) | get detailsString() { method construct (line 34) | construct(data) { method toJSON (line 50) | toJSON() { method setData (line 65) | setData(backupDirPath) { FILE: server/objects/DailyLog.js class DailyLog (line 7) | class DailyLog { method constructor (line 12) | constructor(dailyLogDirPath) { method getCurrentDailyLogFilename (line 29) | static getCurrentDailyLogFilename() { method getCurrentDateString (line 33) | static getCurrentDateString() { method toJSON (line 37) | toJSON() { method appendBufferedLogs (line 50) | appendBufferedLogs() { method appendLog (line 65) | appendLog(logObj) { method appendLogLine (line 75) | async appendLogLine(line) { method loadLogs (line 96) | async loadLogs() { FILE: server/objects/DeviceInfo.js class DeviceInfo (line 4) | class DeviceInfo { method constructor (line 8) | constructor(deviceInfo = null) { method construct (line 35) | construct(deviceInfo) { method toJSON (line 43) | toJSON() { method deviceDescription (line 69) | get deviceDescription() { method getTempDeviceId (line 79) | getTempDeviceId() { method setData (line 84) | setData(ip, ua, clientDeviceInfo, serverVersion, userId) { method update (line 120) | update(deviceInfo) { FILE: server/objects/Notification.js class Notification (line 3) | class Notification { method constructor (line 4) | constructor(notification = null) { method construct (line 25) | construct(notification) { method toJSON (line 41) | toJSON() { method setData (line 59) | setData(payload) { method update (line 71) | update(payload) { method updateNotificationFired (line 97) | updateNotificationFired(success) { method replaceVariablesInTemplate (line 104) | replaceVariablesInTemplate(templateText, data) { method parseTitleTemplate (line 117) | parseTitleTemplate(data) { method parseBodyTemplate (line 121) | parseBodyTemplate(data) { method getApprisePayload (line 125) | getApprisePayload(data) { FILE: server/objects/PlaybackSession.js class PlaybackSession (line 6) | class PlaybackSession { method constructor (line 7) | constructor(session) { method toJSON (line 52) | toJSON() { method toJSONForClient (line 86) | toJSONForClient(libraryItem) { method construct (line 117) | construct(session) { method mediaItemId (line 170) | get mediaItemId() { method progress (line 175) | get progress() { method deviceId (line 181) | get deviceId() { method deviceDescription (line 185) | get deviceDescription() { method mediaProgressObject (line 190) | get mediaProgressObject() { method setData (line 208) | setData(libraryItem, userId, mediaPlayer, deviceInfo, startTime, episo... method addListeningTime (line 237) | addListeningTime(timeListened) { FILE: server/objects/PodcastEpisodeDownload.js class PodcastEpisodeDownload (line 6) | class PodcastEpisodeDownload { method constructor (line 7) | constructor() { method toJSONForClient (line 30) | toJSONForClient() { method urlFileExtension (line 53) | get urlFileExtension() { method fileExtension (line 57) | get fileExtension() { method enclosureType (line 62) | get enclosureType() { method episodeTitle (line 66) | get episodeTitle() { method targetPath (line 69) | get targetPath() { method targetRelPath (line 72) | get targetRelPath() { method libraryItemId (line 75) | get libraryItemId() { method pubYear (line 78) | get pubYear() { method getSanitizedFilename (line 86) | getSanitizedFilename(title) { method setAppendRandomId (line 95) | setAppendRandomId(appendRandomId) { method setData (line 107) | setData(rssPodcastEpisode, libraryItem, isAutoDownload, libraryId) { method setFinished (line 127) | setFinished(success) { FILE: server/objects/Stream.js class Stream (line 15) | class Stream extends EventEmitter { method constructor (line 16) | constructor(sessionId, streamPath, user, libraryItem, episodeId, start... method episode (line 47) | get episode() { method mediaTitle (line 51) | get mediaTitle() { method totalDuration (line 54) | get totalDuration() { method tracks (line 57) | get tracks() { method tracksAudioFileType (line 60) | get tracksAudioFileType() { method tracksMimeType (line 64) | get tracksMimeType() { method tracksCodec (line 68) | get tracksCodec() { method mimeTypesToForceAAC (line 72) | get mimeTypesToForceAAC() { method codecsToForceAAC (line 75) | get codecsToForceAAC() { method userToken (line 78) | get userToken() { method hlsSegmentType (line 83) | get hlsSegmentType() { method segmentBasename (line 86) | get segmentBasename() { method segmentStartNumber (line 89) | get segmentStartNumber() { method numSegments (line 93) | get numSegments() { method clientPlaylistUri (line 100) | get clientPlaylistUri() { method isAACEncodable (line 103) | get isAACEncodable() { method transcodeForceAAC (line 106) | get transcodeForceAAC() { method toJSON (line 110) | toJSON() { method checkSegmentNumberRequest (line 125) | async checkSegmentNumberRequest(segNum) { method generatePlaylist (line 147) | async generatePlaylist() { method checkFiles (line 153) | async checkFiles() { method startLoop (line 218) | startLoop() { method start (line 234) | async start() { method close (line 358) | async close(errorMessage = null) { method cancelTranscode (line 381) | cancelTranscode() { method waitCancelTranscode (line 388) | async waitCancelTranscode() { method reset (line 397) | async reset(time) { method clientEmit (line 416) | clientEmit(evtName, data) { method getAudioTrack (line 420) | getAudioTrack() { FILE: server/objects/Task.js class Task (line 10) | class Task { method constructor (line 11) | constructor() { method toJSON (line 54) | toJSON() { method setData (line 85) | setData(action, titleString, descriptionString, showSuccess, data = {}) { method setFailed (line 104) | setFailed(messageString) { method setFinished (line 119) | setFinished(newDescriptionString = null, clearDescription = false) { FILE: server/objects/TrackProgressMonitor.js class TrackProgressMonitor (line 1) | class TrackProgressMonitor { method constructor (line 27) | constructor(trackDurations, trackStartedCallback, progressCallback, tr... method #outsideCurrentTrack (line 41) | #outsideCurrentTrack(progress) { method #moveToNextTrack (line 46) | #moveToNextTrack() { method #trackStarted (line 58) | #trackStarted() { method #progressUpdated (line 62) | #progressUpdated(totalProgress) { method #trackFinished (line 67) | #trackFinished() { method update (line 75) | update(totalProgress) { method finish (line 84) | finish() { FILE: server/objects/files/AudioFile.js class AudioFile (line 5) | class AudioFile { method constructor (line 6) | constructor(data) { method toJSON (line 43) | toJSON() { method construct (line 72) | construct(data) { method mimeType (line 103) | get mimeType() { method setDataFromProbe (line 113) | setDataFromProbe(libraryFile, probeData) { method syncChapters (line 138) | syncChapters(updatedChapters) { method clone (line 162) | clone() { method updateFromScan (line 171) | updateFromScan(scannedAudioFile) { FILE: server/objects/files/AudioTrack.js class AudioTrack (line 1) | class AudioTrack { method constructor (line 2) | constructor() { method toJSON (line 13) | toJSON() { method setData (line 26) | setData(itemId, audioFile, startOffset) { method setFromStream (line 38) | setFromStream(title, duration, contentUrl) { FILE: server/objects/files/EBookFile.js class EBookFile (line 3) | class EBookFile { method constructor (line 4) | constructor(file) { method construct (line 16) | construct(file) { method toJSON (line 24) | toJSON() { method isEpub (line 34) | get isEpub() { method setData (line 38) | setData(libraryFile) { method updateFromLibraryFile (line 46) | updateFromLibraryFile(libraryFile) { FILE: server/objects/files/LibraryFile.js class LibraryFile (line 6) | class LibraryFile { method constructor (line 7) | constructor(file) { method construct (line 19) | construct(file) { method toJSON (line 27) | toJSON() { method clone (line 38) | clone() { method fileType (line 42) | get fileType() { method isMediaFile (line 51) | get isMediaFile() { method isEBookFile (line 55) | get isEBookFile() { method isOPFFile (line 59) | get isOPFFile() { method setDataFromPath (line 63) | async setDataFromPath(path, relPath) { FILE: server/objects/metadata/AudioMetaTags.js class AudioMetaTags (line 1) | class AudioMetaTags { method constructor (line 2) | constructor(metadata) { method toJSON (line 46) | toJSON() { method trackNumAndTotal (line 57) | get trackNumAndTotal() { method discNumAndTotal (line 78) | get discNumAndTotal() { method discNumber (line 97) | get discNumber() { method discTotal (line 100) | get discTotal() { method trackNumber (line 103) | get trackNumber() { method trackTotal (line 106) | get trackTotal() { method construct (line 110) | construct(metadata) { method setData (line 151) | setData(payload) { method updateData (line 191) | updateData(payload) { method clone (line 242) | clone() { method isEqual (line 246) | isEqual(audioFileMetadata) { FILE: server/objects/metadata/FileMetadata.js class FileMetadata (line 1) | class FileMetadata { method constructor (line 2) | constructor(metadata) { method construct (line 20) | construct(metadata) { method toJSON (line 31) | toJSON() { method clone (line 44) | clone() { method format (line 48) | get format() { method filenameNoExt (line 52) | get filenameNoExt() { method update (line 56) | update(payload) { method setData (line 67) | setData(payload) { FILE: server/objects/settings/EmailSettings.js class EmailSettings (line 13) | class EmailSettings { method constructor (line 14) | constructor(settings = null) { method construct (line 33) | construct(settings) { method toJSON (line 50) | toJSON() { method update (line 65) | update(payload) { method getTransportObject (line 114) | getTransportObject() { method checkUserCanAccessDevice (line 146) | checkUserCanAccessDevice(device, user) { method getEReaderDevices (line 164) | getEReaderDevices(user) { method getEReaderDevice (line 174) | getEReaderDevice(deviceName) { FILE: server/objects/settings/NotificationSettings.js class NotificationSettings (line 5) | class NotificationSettings { method constructor (line 6) | constructor(settings = null) { method construct (line 20) | construct(settings) { method toJSON (line 29) | toJSON() { method isUseable (line 41) | get isUseable() { method getHasActiveNotificationsForEvent (line 49) | getHasActiveNotificationsForEvent(eventName) { method getActiveNotificationsForEvent (line 57) | getActiveNotificationsForEvent(eventName) { method getNotification (line 61) | getNotification(id) { method removeNotification (line 65) | removeNotification(id) { method update (line 73) | update(payload) { method createNotification (line 97) | createNotification(payload) { method updateNotification (line 107) | updateNotification(payload) { FILE: server/objects/settings/ServerSettings.js class ServerSettings (line 8) | class ServerSettings { method constructor (line 9) | constructor(settings) { method construct (line 92) | construct(settings) { method toJSON (line 206) | toJSON() { method toJSONForBrowser (line 263) | toJSONForBrowser() { method supportedAuthMethods (line 274) | get supportedAuthMethods() { method isOpenIDAuthSettingsValid (line 281) | get isOpenIDAuthSettingsValid() { method authenticationSettings (line 285) | get authenticationSettings() { method authFormData (line 311) | get authFormData() { method update (line 328) | update(payload) { FILE: server/providers/Audible.js class Audible (line 5) | class Audible { method constructor (line 8) | constructor() { method cleanSeriesSequence (line 32) | cleanSeriesSequence(seriesName, sequence) { method cleanResult (line 43) | cleanResult(item) { method asinSearch (line 97) | asinSearch(asin, region, timeout = this.#responseTimeout) { method search (line 128) | async search(title, author, asin, region, timeout = this.#responseTime... FILE: server/providers/AudiobookCovers.js class AudiobookCovers (line 4) | class AudiobookCovers { method constructor (line 7) | constructor() {} method search (line 15) | async search(search, timeout = this.#responseTimeout) { FILE: server/providers/Audnexus.js class Audnexus (line 15) | class Audnexus { method constructor (line 18) | constructor() { method authorASINsRequest (line 46) | authorASINsRequest(name, region) { method authorRequest (line 69) | authorRequest(asin, region) { method findAuthorByASIN (line 96) | async findAuthorByASIN(asin, region) { method findAuthorByName (line 116) | async findAuthorByName(name, region, maxLevenshtein = 3) { method getChaptersByASIN (line 151) | getChaptersByASIN(asin, region) { method _processRequest (line 169) | async _processRequest(request) { FILE: server/providers/CustomProviderAdapter.js class CustomProviderAdapter (line 6) | class CustomProviderAdapter { method constructor (line 9) | constructor() {} method search (line 21) | async search(title, author, isbn, providerSlug, mediaType, timeout = t... FILE: server/providers/FantLab.js class FantLab (line 4) | class FantLab { method constructor (line 26) | constructor() {} method search (line 34) | async search(title, author, timeout = this.#responseTimeout) { method getWork (line 63) | async getWork(item, timeout = this.#responseTimeout) { method cleanBookData (line 97) | async cleanBookData(bookData, timeout = this.#responseTimeout) { method tryGetGenres (line 121) | tryGetGenres(classificatory) { method tryGetSubGenres (line 142) | tryGetSubGenres(rootGenre) { method tryGetCoverFromEditions (line 153) | async tryGetCoverFromEditions(editions, timeout = this.#responseTimeou... method getCoverFromEdition (line 182) | async getCoverFromEdition(editionId, timeout = this.#responseTimeout) { FILE: server/providers/GoogleBooks.js class GoogleBooks (line 4) | class GoogleBooks { method constructor (line 7) | constructor() {} method extractIsbn (line 9) | extractIsbn(industryIdentifiers) { method cleanResult (line 17) | cleanResult(item) { method search (line 50) | async search(title, author, timeout = this.#responseTimeout) { FILE: server/providers/MusicBrainz.js class MusicBrainz (line 6) | class MusicBrainz { method constructor (line 7) | constructor() { } method userAgentString (line 9) | get userAgentString() { method searchTrack (line 14) | searchTrack(options) { FILE: server/providers/OpenLibrary.js class OpenLibrary (line 3) | class OpenLibrary { method constructor (line 6) | constructor() { method get (line 16) | get(uri, timeout = this.#responseTimeout) { method isbnLookup (line 31) | async isbnLookup(isbn) { method getWorksData (line 41) | async getWorksData(worksKey) { method parsePublishYear (line 68) | parsePublishYear(doc, worksData) { method cleanSearchDoc (line 77) | async cleanSearchDoc(doc) { method search (line 89) | async search(query) { method searchTitle (line 109) | async searchTitle(title, timeout = this.#responseTimeout) { FILE: server/providers/iTunes.js class iTunes (line 30) | class iTunes { method constructor (line 33) | constructor() {} method search (line 42) | search(options, timeout = this.#responseTimeout) { method getCoverArtwork (line 74) | getCoverArtwork(data) { method cleanAudiobook (line 105) | cleanAudiobook(data) { method searchAudiobooks (line 128) | searchAudiobooks(term, timeout = this.#responseTimeout) { method cleanPodcast (line 139) | cleanPodcast(data) { method searchPodcasts (line 164) | searchPodcasts(term, options = {}, timeout = this.#responseTimeout) { FILE: server/routers/ApiRouter.js class ApiRouter (line 39) | class ApiRouter { method constructor (line 40) | constructor(Server) { method init (line 64) | init() { method handleDeleteLibraryItem (line 367) | async handleDeleteLibraryItem(libraryItemId, mediaItemIds) { method checkRemoveEmptySeries (line 407) | async checkRemoveEmptySeries(seriesIds) { method checkRemoveAuthorsWithNoBooks (line 465) | async checkRemoveAuthorsWithNoBooks(authorIds) { method getUserListeningSessionsHelper (line 518) | async getUserListeningSessionsHelper(userId) { method getUserItemListeningSessionsHelper (line 523) | async getUserItemListeningSessionsHelper(userId, mediaItemId) { method getUserListeningStatsHelpers (line 528) | async getUserListeningStatsHelpers(userId) { FILE: server/routers/HlsRouter.js class HlsRouter (line 10) | class HlsRouter { method constructor (line 11) | constructor(auth, playbackSessionManager) { method init (line 20) | init() { method parseSegmentFilename (line 24) | parseSegmentFilename(filename) { method validateStreamFilePath (line 39) | validateStreamFilePath(streamDir, filepath) { method streamFileRequest (line 51) | async streamFileRequest(req, res) { FILE: server/routers/PublicRouter.js class PublicRouter (line 5) | class PublicRouter { method constructor (line 6) | constructor(playbackSessionManager) { method init (line 15) | init() { FILE: server/scanner/AbsMetadataFileScanner.js class AbsMetadataFileScanner (line 7) | class AbsMetadataFileScanner { method constructor (line 8) | constructor() { } method scanBookMetadataFile (line 18) | async scanBookMetadataFile(libraryScan, libraryItemData, bookMetadata,... method scanPodcastMetadataFile (line 57) | async scanPodcastMetadataFile(libraryScan, libraryItemData, podcastMet... FILE: server/scanner/AudioFileScanner.js class AudioFileScanner (line 11) | class AudioFileScanner { method constructor (line 12) | constructor() {} method isSequential (line 19) | isSequential(nums) { method removeDupes (line 35) | removeDupes(nums) { method runSmartTrackOrder (line 52) | runSmartTrackOrder(libraryItemRelPath, audioFiles) { method getTrackAndDiscNumberFromFilename (line 111) | getTrackAndDiscNumberFromFilename(mediaMetadataFromScan, audioLibraryF... method scan (line 156) | async scan(mediaType, libraryFile, mediaMetadataFromScan) { method executeMediaFileScans (line 189) | async executeMediaFileScans(mediaType, libraryItemScanData, audioLibra... method probeAudioFile (line 208) | probeAudioFile(audioFilePath) { method setBookMetadataFromAudioMetaTags (line 221) | setBookMetadataFromAudioMetaTags(bookTitle, audioFiles, bookMetadata, ... method setPodcastMetadataFromAudioMetaTags (line 360) | setPodcastMetadataFromAudioMetaTags(audioFile, podcastMetadata, librar... method setPodcastEpisodeMetadataFromAudioMetaTags (line 419) | setPodcastEpisodeMetadataFromAudioMetaTags(podcastEpisode, scanLogger) { method getBookChaptersFromAudioFiles (line 495) | getBookChaptersFromAudioFiles(bookTitle, audioFiles, libraryScan) { method parseGenresString (line 583) | parseGenresString(genreTag) { FILE: server/scanner/BookScanner.js class BookScanner (line 51) | class BookScanner { method constructor (line 52) | constructor() {} method rescanExistingBookLibraryItem (line 61) | async rescanExistingBookLibraryItem(existingLibraryItem, libraryItemDa... method scanNewBookLibraryItem (line 443) | async scanNewBookLibraryItem(libraryItemData, librarySettings, library... method getBookMetadataFromScanData (line 649) | async getBookMetadataFromScanData(audioFiles, ebookFileScanData, libra... method constructor (line 704) | constructor(bookMetadata, audioFiles, ebookFileScanData, libraryItemDa... method folderStructure (line 716) | folderStructure() { method audioMetatags (line 723) | audioMetatags() { method nfoFile (line 762) | async nfoFile() { method txtFiles (line 770) | async txtFiles() { method opfFile (line 790) | async opfFile() { method absMetadata (line 798) | async absMetadata() { method saveMetadataFile (line 810) | async saveMetadataFile(libraryItem, libraryScan) { method checkAuthorsRemovedFromBooks (line 893) | async checkAuthorsRemovedFromBooks(libraryId, scanLogger) { method checkSeriesRemovedFromBooks (line 936) | async checkSeriesRemovedFromBooks(libraryId, scanLogger) { method searchForCover (line 975) | async searchForCover(libraryItemId, libraryItemPath, title, author, li... FILE: server/scanner/LibraryItemScanData.js class LibraryItemScanData (line 6) | class LibraryItemScanData { method constructor (line 13) | constructor(data) { method libraryItemObject (line 55) | get libraryItemObject() { method hasLibraryFileChanges (line 77) | get hasLibraryFileChanges() { method hasAudioFileChanges (line 82) | get hasAudioFileChanges() { method audioLibraryFilesModified (line 87) | get audioLibraryFilesModified() { method audioLibraryFilesRemoved (line 92) | get audioLibraryFilesRemoved() { method audioLibraryFilesAdded (line 97) | get audioLibraryFilesAdded() { method audioLibraryFiles (line 102) | get audioLibraryFiles() { method imageLibraryFilesModified (line 107) | get imageLibraryFilesModified() { method imageLibraryFilesRemoved (line 112) | get imageLibraryFilesRemoved() { method imageLibraryFilesAdded (line 117) | get imageLibraryFilesAdded() { method imageLibraryFiles (line 122) | get imageLibraryFiles() { method ebookLibraryFilesModified (line 127) | get ebookLibraryFilesModified() { method ebookLibraryFilesRemoved (line 132) | get ebookLibraryFilesRemoved() { method ebookLibraryFilesAdded (line 137) | get ebookLibraryFilesAdded() { method ebookLibraryFiles (line 142) | get ebookLibraryFiles() { method descTxtLibraryFile (line 147) | get descTxtLibraryFile() { method readerTxtLibraryFile (line 152) | get readerTxtLibraryFile() { method metadataAbsLibraryFile (line 157) | get metadataAbsLibraryFile() { method metadataJsonLibraryFile (line 162) | get metadataJsonLibraryFile() { method metadataOpfLibraryFile (line 167) | get metadataOpfLibraryFile() { method metadataNfoLibraryFile (line 172) | get metadataNfoLibraryFile() { method checkLibraryItemData (line 182) | async checkLibraryItemData(existingLibraryItem, libraryScan) { method compareUpdateLibraryFile (line 291) | compareUpdateLibraryFile(libraryItemPath, existingLibraryFile, scanned... method checkAudioFileRemoved (line 323) | checkAudioFileRemoved(existingAudioFile) { method checkEbookFileRemoved (line 338) | checkEbookFileRemoved(ebookFile) { method setBookMetadataFromFilenames (line 353) | setBookMetadataFromFilenames(bookMetadata) { FILE: server/scanner/LibraryItemScanner.js class LibraryItemScanner (line 19) | class LibraryItemScanner { method constructor (line 20) | constructor() {} method scanLibraryItem (line 29) | async scanLibraryItem(libraryItemId, updateLibraryItemDetails = null) { method checkAuthorsAndSeriesRemovedFromBooks (line 84) | async checkAuthorsAndSeriesRemovedFromBooks(libraryId, scanLogger) { method getLibraryItemScanData (line 101) | async getLibraryItemScanData(libraryItemPath, library, folder, isSingl... method rescanLibraryItemMedia (line 170) | rescanLibraryItemMedia(existingLibraryItem, libraryItemData, librarySe... method scanNewLibraryItem (line 185) | async scanNewLibraryItem(libraryItemData, librarySettings, libraryScan) { method scanPotentialNewLibraryItem (line 206) | async scanPotentialNewLibraryItem(libraryItemPath, library, folder, is... FILE: server/scanner/LibraryScan.js class LibraryScan (line 9) | class LibraryScan { method constructor (line 10) | constructor() { method libraryId (line 33) | get libraryId() { method libraryName (line 36) | get libraryName() { method libraryMediaType (line 39) | get libraryMediaType() { method libraryFolders (line 42) | get libraryFolders() { method timestamp (line 46) | get timestamp() { method resultStats (line 50) | get resultStats() { method elapsedTimestamp (line 53) | get elapsedTimestamp() { method logFilename (line 56) | get logFilename() { method scanResultsString (line 59) | get scanResultsString() { method scanResults (line 69) | get scanResults() { method toJSON (line 79) | toJSON() { method setData (line 98) | setData(library, type = 'scan') { method setComplete (line 106) | setComplete() { method addLog (line 111) | addLog(level, ...args) { method saveLog (line 125) | async saveLog() { FILE: server/scanner/LibraryScanner.js class LibraryScanner (line 18) | class LibraryScanner { method constructor (line 19) | constructor() { method isLibraryScanning (line 33) | isLibraryScanning(libraryId) { method setCancelLibraryScan (line 41) | setCancelLibraryScan(libraryId) { method scan (line 51) | async scan(library, forceRescan = false) { method scanLibrary (line 143) | async scanLibrary(libraryScan, forceRescan) { method shouldCancelScan (line 288) | shouldCancelScan(libraryScan) { method scanFolder (line 302) | async scanFolder(library, folder) { method scanFilesChanged (line 372) | async scanFilesChanged(fileUpdates, pendingTask) { method getFileUpdatesGrouped (line 469) | getFileUpdatesGrouped(fileUpdates) { method scanFolderUpdates (line 492) | async scanFolderUpdates(library, folder, fileUpdateGroup) { function ItemToFileInoMatch (line 645) | function ItemToFileInoMatch(libraryItem1, libraryItem2) { function ItemToItemInoMatch (line 649) | function ItemToItemInoMatch(libraryItem1, libraryItem2) { function hasAudioFiles (line 653) | function hasAudioFiles(fileUpdateGroup, itemDir) { function isSingleMediaFile (line 657) | function isSingleMediaFile(fileUpdateGroup, itemDir) { function findLibraryItemByItemToItemInoMatch (line 661) | async function findLibraryItemByItemToItemInoMatch(libraryId, fullPath) { function findLibraryItemByItemToFileInoMatch (line 672) | async function findLibraryItemByItemToFileInoMatch(libraryId, fullPath, ... function findLibraryItemByFileToItemInoMatch (line 694) | async function findLibraryItemByFileToItemInoMatch(libraryId, fullPath, ... FILE: server/scanner/MediaProbeData.js class MediaProbeData (line 3) | class MediaProbeData { method constructor (line 4) | constructor(probeData) { method construct (line 35) | construct(probeData) { method setData (line 45) | setData(data) { FILE: server/scanner/NfoFileScanner.js class NfoFileScanner (line 4) | class NfoFileScanner { method constructor (line 5) | constructor() {} method scanBookNfoFile (line 13) | async scanBookNfoFile(nfoLibraryFileObj, bookMetadata) { FILE: server/scanner/OpfFileScanner.js class OpfFileScanner (line 4) | class OpfFileScanner { method constructor (line 5) | constructor() {} method scanBookOpfFile (line 13) | async scanBookOpfFile(opfLibraryFileObj, bookMetadata) { FILE: server/scanner/PodcastScanner.js class PodcastScanner (line 34) | class PodcastScanner { method constructor (line 35) | constructor() {} method rescanExistingPodcastLibraryItem (line 44) | async rescanExistingPodcastLibraryItem(existingLibraryItem, libraryIte... method scanNewPodcastLibraryItem (line 263) | async scanNewPodcastLibraryItem(libraryItemData, librarySettings, libr... method getPodcastMetadataFromScanData (line 372) | async getPodcastMetadataFromScanData(podcastEpisodes, libraryItemData,... method saveMetadataFile (line 410) | async saveMetadataFile(libraryItem, libraryScan) { FILE: server/scanner/ScanLogger.js class ScanLogger (line 4) | class ScanLogger { method constructor (line 5) | constructor() { method toJSON (line 23) | toJSON() { method setData (line 34) | setData(type, name) { method setComplete (line 41) | setComplete() { method addLog (line 46) | addLog(level, ...args) { FILE: server/scanner/Scanner.js class Scanner (line 27) | class Scanner { method constructor (line 28) | constructor() {} method quickMatchLibraryItem (line 37) | async quickMatchLibraryItem(apiRouterCtx, libraryItem, options = {}) { method quickMatchPodcastBuildUpdatePayload (line 145) | quickMatchPodcastBuildUpdatePayload(libraryItem, matchData, options) { method quickMatchBookBuildUpdatePayload (line 194) | async quickMatchBookBuildUpdatePayload(apiRouterCtx, libraryItem, matc... method quickMatchPodcastEpisodes (line 359) | async quickMatchPodcastEpisodes(libraryItem, options = {}) { method updateEpisodeWithMatch (line 391) | async updateEpisodeWithMatch(episode, episodeToMatch, options = {}) { method matchLibraryItemsChunk (line 435) | async matchLibraryItemsChunk(apiRouterCtx, library, libraryItems, libr... method matchLibraryItems (line 472) | async matchLibraryItems(apiRouterCtx, library) { FILE: server/utils/comicBookExtractors.js class AbstractComicBookExtractor (line 10) | class AbstractComicBookExtractor { method constructor (line 11) | constructor(comicPath) { method getBuffer (line 15) | async getBuffer() { method open (line 28) | async open() { method getFilePaths (line 32) | async getFilePaths() { method extractToFile (line 36) | async extractToFile(filePath, outputFilePath) { method extractToBuffer (line 40) | async extractToBuffer(filePath) { method close (line 44) | close() { class CbrComicBookExtractor (line 49) | class CbrComicBookExtractor extends AbstractComicBookExtractor { method constructor (line 50) | constructor(comicPath) { method open (line 56) | async open() { method getFilePaths (line 64) | async getFilePaths() { method removeEmptyParentDirs (line 73) | async removeEmptyParentDirs(file) { method extractToBuffer (line 84) | async extractToBuffer(file) { method extractToFile (line 96) | async extractToFile(file, outputFilePath) { method close (line 107) | close() { class CbzComicBookExtractor (line 112) | class CbzComicBookExtractor extends AbstractComicBookExtractor { method constructor (line 113) | constructor(comicPath) { method open (line 118) | async open() { method getFilePaths (line 124) | async getFilePaths() { method extractToBuffer (line 132) | async extractToBuffer(file) { method extractToFile (line 139) | async extractToFile(file, outputFilePath) { method close (line 147) | close() { class CbzStreamZipComicBookExtractor (line 153) | class CbzStreamZipComicBookExtractor extends AbstractComicBookExtractor { method constructor (line 154) | constructor(comicPath) { method open (line 159) | async open() { method getFilePaths (line 164) | async getFilePaths() { method extractToBuffer (line 172) | async extractToBuffer(file) { method extractToFile (line 179) | async extractToFile(file, outputFilePath) { method close (line 191) | close() { function createComicBookExtractor (line 203) | function createComicBookExtractor(comicPath) { FILE: server/utils/ffmpegHelpers.js function escapeSingleQuotes (line 9) | function escapeSingleQuotes(path) { function writeConcatFile (line 16) | async function writeConcatFile(tracks, outputPath, startTime = 0) { function extractCoverArt (line 50) | async function extractCoverArt(filepath, outputpath) { function resizeImage (line 77) | async function resizeImage(filePath, outputPath, width, height) { function generateFFMetadata (line 235) | function generateFFMetadata(metadata, chapters) { function writeFFMetadataFile (line 271) | async function writeFFMetadataFile(metadata, chapters, ffmetadataPath) { function addCoverAndMetadataToFile (line 297) | async function addCoverAndMetadataToFile(audioFilePath, coverFilePath, m... function escapeFFMetadataValue (line 391) | function escapeFFMetadataValue(value) { function getFFMetadataObject (line 402) | function getFFMetadataObject(libraryItem, audioFilesLength) { function mergeAudioFiles (line 442) | async function mergeAudioFiles(audioTracks, duration, itemCachePath, out... FILE: server/utils/fileUtils.js function isSameOrSubPath (line 29) | function isSameOrSubPath(parentPath, childPath) { function getFileStat (line 41) | function getFileStat(path) { function getFileTimestampsWithIno (line 50) | async function getFileTimestampsWithIno(path) { function checkPathIsFile (line 97) | async function checkPathIsFile(filepath) { function getIno (line 107) | function getIno(path) { function readTextFile (line 123) | async function readTextFile(path) { function copyToExisting (line 545) | async function copyToExisting(srcPath, destPath) { FILE: server/utils/generators/abmetadataGenerator.js function parseJsonMetadataText (line 4) | function parseJsonMetadataText(text) { function cleanChaptersArray (line 51) | function cleanChaptersArray(chaptersArray, mediaTitle) { FILE: server/utils/generators/hlsPlaylistGenerator.js function getPlaylistStr (line 3) | function getPlaylistStr(segmentName, duration, segmentLength, hlsSegment... function generatePlaylist (line 31) | function generatePlaylist(outputPath, segmentName, duration, segmentLeng... FILE: server/utils/htmlSanitizer.js function sanitize (line 9) | function sanitize(html) { function stripAllTags (line 28) | function stripAllTags(html, shouldDecodeEntities = true) { function decodeHTMLEntities (line 41) | function decodeHTMLEntities(strToDecode) { FILE: server/utils/index.js function elapsedPretty (line 82) | function elapsedPretty(seconds) { function secondsToTimestamp (line 113) | function secondsToTimestamp(seconds, includeMs = false, alwaysIncludeHou... class ValidationError (line 281) | class ValidationError extends Error { method constructor (line 282) | constructor(paramName, message, status = 400) { class NotFoundError (line 291) | class NotFoundError extends Error { method constructor (line 292) | constructor(message, status = 404) { FILE: server/utils/libraryHelpers.js method getSeriesFromBooks (line 16) | getSeriesFromBooks(libraryItems, filterSeries, hideSingleBookSeries) { method collapseBookSeries (line 68) | collapseBookSeries(libraryItems, filterSeries, hideSingleBookSeries) { method handleCollapseSubseries (line 102) | async handleCollapseSubseries(payload, seriesId, user, library) { FILE: server/utils/longTimeout.js class LongTimeout (line 4) | class LongTimeout { method constructor (line 5) | constructor() { method clear (line 10) | clear() { method set (line 19) | set(fn, timeout) { FILE: server/utils/migrations/absMetadataMigration.js function writeMetadataFileForItem (line 12) | async function writeMetadataFileForItem(libraryItem) { function runMigration (line 69) | async function runMigration(Database, offset = 0, totalCreated = 0) { FILE: server/utils/migrations/dbMigration.js function getTitleIgnorePrefix (line 24) | function getTitleIgnorePrefix(title) { function getDeviceInfoString (line 35) | function getDeviceInfoString(deviceInfo, UserId) { function migrateBook (line 50) | function migrateBook(oldLibraryItem, LibraryItem) { function migratePodcast (line 152) | function migratePodcast(oldLibraryItem, LibraryItem) { function migrateLibraryItems (line 234) | function migrateLibraryItems(oldLibraryItems) { function migrateLibraries (line 324) | function migrateLibraries(oldLibraries) { function migrateAuthors (line 378) | function migrateAuthors(oldAuthors, oldLibraryItems) { function migrateSeries (line 428) | function migrateSeries(oldSerieses, oldLibraryItems) { function migrateUsers (line 472) | function migrateUsers(oldUsers) { function migrateSessions (line 577) | function migrateSessions(oldSessions) { function migrateCollections (line 701) | function migrateCollections(oldCollections) { function migratePlaylists (line 750) | function migratePlaylists(oldPlaylists) { function migrateFeeds (line 817) | function migrateFeeds(oldFeeds) { function migrateSettings (line 918) | function migrateSettings(oldSettings) { function handleMigrateLibraries (line 956) | async function handleMigrateLibraries(DatabaseModels) { function handleMigrateSettings (line 969) | async function handleMigrateSettings(DatabaseModels) { function handleMigrateAuthors (line 981) | async function handleMigrateAuthors(DatabaseModels, oldLibraryItems) { function handleMigrateSeries (line 993) | async function handleMigrateSeries(DatabaseModels, oldLibraryItems) { function handleMigrateLibraryItems (line 1005) | async function handleMigrateLibraryItems(DatabaseModels, oldLibraryItems) { function handleMigrateAuthorsSeriesAndLibraryItems (line 1018) | async function handleMigrateAuthorsSeriesAndLibraryItems(DatabaseModels) { function handleMigrateUsers (line 1036) | async function handleMigrateUsers(DatabaseModels) { function handleMigrateSessions (line 1049) | async function handleMigrateSessions(DatabaseModels) { function handleMigrateCollections (line 1069) | async function handleMigrateCollections(DatabaseModels) { function handleMigratePlaylists (line 1082) | async function handleMigratePlaylists(DatabaseModels) { function handleMigrateFeeds (line 1095) | async function handleMigrateFeeds(DatabaseModels) { function migrationPatchNewColumns (line 1161) | async function migrationPatchNewColumns(queryInterface) { function handleOldLibraryItems (line 1201) | async function handleOldLibraryItems(ctx) { function handleOldLibraries (line 1259) | async function handleOldLibraries(ctx) { function handleOldUsers (line 1292) | async function handleOldUsers(ctx) { function migrationPatch2LibraryItems (line 1404) | async function migrationPatch2LibraryItems(ctx, offset = 0) { function migrationPatch2Books (line 1446) | async function migrationPatch2Books(ctx, offset = 0) { function migrationPatch2Podcasts (line 1492) | async function migrationPatch2Podcasts(ctx, offset = 0) { function migrationPatch2Series (line 1526) | async function migrationPatch2Series(ctx, offset = 0) { function migrationPatch2Authors (line 1560) | async function migrationPatch2Authors(ctx, offset = 0) { function migrationPatch2BookAuthors (line 1596) | async function migrationPatch2BookAuthors(ctx, offset = 0) { function migrationPatch2BookSeries (line 1631) | async function migrationPatch2BookSeries(ctx, offset = 0) { FILE: server/utils/migrations/oldDbFiles.js function processDbFile (line 9) | async function processDbFile(filepath) { function loadDbData (line 47) | async function loadDbData(dbpath) { FILE: server/utils/parsers/parseComicMetadata.js function extractCoverImage (line 16) | async function extractCoverImage(comicPath, comicImageFilepath, outputCo... function parse (line 38) | async function parse(ebookFile) { FILE: server/utils/parsers/parseEbookMetadata.js function parse (line 18) | async function parse(ebookFile) { function extractCoverImage (line 37) | async function extractCoverImage(ebookFileScanData, outputCoverPath) { FILE: server/utils/parsers/parseEpubMetadata.js function extractFileFromEpub (line 14) | async function extractFileFromEpub(epubPath, filepath) { function extractXmlToJson (line 34) | async function extractXmlToJson(epubPath, xmlFilepath) { function extractCoverImage (line 48) | async function extractCoverImage(epubPath, epubImageFilepath, outputCove... function parse (line 73) | async function parse(ebookFile) { FILE: server/utils/parsers/parseFullName.js function handleError (line 30) | function handleError(errorMessage) { function fixParsedNameCase (line 39) | function fixParsedNameCase(fixedCaseName, fixCaseNow) { FILE: server/utils/parsers/parseNameString.js function parseName (line 8) | function parseName(name) { function checkIsALastName (line 21) | function checkIsALastName(name) { FILE: server/utils/parsers/parseNfoMetadata.js function parseNfoMetadata (line 1) | function parseNfoMetadata(nfoText) { function extractYear (line 101) | function extractYear(str) { FILE: server/utils/parsers/parseOPML.js function parse (line 9) | function parse(opmlText) { FILE: server/utils/parsers/parseOpfMetadata.js function parseCreators (line 17) | function parseCreators(metadata) { function fetchCreators (line 44) | function fetchCreators(creators, role) { function fetchTagString (line 49) | function fetchTagString(metadata, tag) { function fetchDate (line 76) | function fetchDate(metadata) { function fetchPublisher (line 84) | function fetchPublisher(metadata) { function fetchIdentifier (line 97) | function fetchIdentifier(metadata, scheme) { function fetchISBN (line 110) | function fetchISBN(metadata) { function fetchASIN (line 114) | function fetchASIN(metadata) { function fetchTitle (line 118) | function fetchTitle(metadata) { function fetchSubtitle (line 122) | function fetchSubtitle(metadata) { function fetchDescription (line 126) | function fetchDescription(metadata) { function fetchGenres (line 135) | function fetchGenres(metadata) { function fetchLanguage (line 140) | function fetchLanguage(metadata) { function fetchSeries (line 144) | function fetchSeries(metadataMeta) { function fetchNarrators (line 173) | function fetchNarrators(creators, metadata) { function fetchTags (line 184) | function fetchTags(metadata) { function stripPrefix (line 189) | function stripPrefix(str) { FILE: server/utils/parsers/parseOverdriveMediaMarkers.js function cleanOverdriveMediaMarkers (line 6) | function cleanOverdriveMediaMarkers(overdriveMediaMarkers) { function objectValuesArrayToString (line 63) | function objectValuesArrayToString(arrayOfObjects) { function removeExtraChapters (line 76) | function removeExtraChapters(parsedOverdriveMediaMarkers) { function addChapterEndTimes (line 88) | function addChapterEndTimes(chapters, totalAudioDuration) { function generateParsedChapters (line 102) | function generateParsedChapters(includedAudioFiles, cleanedOverdriveMedi... FILE: server/utils/podcastUtils.js function extractFirstArrayItem (line 61) | function extractFirstArrayItem(json, key) { function extractStringOrStringify (line 66) | function extractStringOrStringify(json) { function extractFirstArrayItemString (line 78) | function extractFirstArrayItemString(json, key) { function extractImage (line 89) | function extractImage(channel) { function extractCategories (line 100) | function extractCategories(channel) { function extractPodcastMetadata (line 121) | function extractPodcastMetadata(channel) { function extractEpisodeData (line 153) | function extractEpisodeData(item) { function cleanEpisodeData (line 263) | function cleanEpisodeData(data) { function extractPodcastEpisodes (line 289) | function extractPodcastEpisodes(items) { function cleanPodcastJson (line 300) | function cleanPodcastJson(rssJson, excludeEpisodeMetadata) { FILE: server/utils/prober.js function tryGrabBitRate (line 6) | function tryGrabBitRate(stream, all_streams, total_bit_rate) { function tryGrabFrameRate (line 48) | function tryGrabFrameRate(stream) { function tryGrabSampleRate (line 61) | function tryGrabSampleRate(stream) { function tryGrabChannelLayout (line 67) | function tryGrabChannelLayout(stream) { function tryGrabTags (line 73) | function tryGrabTags(stream, ...tags) { function parseMediaStreamInfo (line 83) | function parseMediaStreamInfo(stream, all_streams, total_bit_rate) { function isNullOrNaN (line 122) | function isNullOrNaN(val) { function parseChapters (line 139) | function parseChapters(_chapters) { function parseTags (line 164) | function parseTags(format, verbose) { function getDefaultAudioStream (line 230) | function getDefaultAudioStream(audioStreams) { function parseProbeData (line 238) | function parseProbeData(data, verbose = false) { function probe (line 293) | function probe(filepath, verbose = false) { function rawProbe (line 331) | function rawProbe(filepath) { FILE: server/utils/profiler.js function profile (line 7) | function profile(asyncFunc, isFindQuery = true, funcName = asyncFunc.nam... FILE: server/utils/queries/adminStats.js method getListeningSessionsForYear (line 12) | async getListeningSessionsForYear(year) { method getNumAuthorsAddedForYear (line 29) | async getNumAuthorsAddedForYear(year) { method getBooksAddedForYear (line 46) | async getBooksAddedForYear(year) { method getStatsForYear (line 69) | async getStatsForYear(year) { method getTotalSize (line 181) | async getTotalSize() { method getNumAudioFiles (line 207) | async getNumAudioFiles() { FILE: server/utils/queries/authorFilters.js method getAuthorsTotalCount (line 11) | async getAuthorsTotalCount(libraryId) { method getAuthorsWithCount (line 27) | async getAuthorsWithCount(libraryId, limit) { method search (line 62) | async search(libraryId, query, limit, offset) { FILE: server/utils/queries/libraryFilters.js method decode (line 13) | decode(text) { method getFilteredLibraryItems (line 24) | async getFilteredLibraryItems(libraryId, user, options) { method getMediaItemsInProgress (line 51) | async getMediaItemsInProgress(library, user, include, limit) { method getLibraryItemsMostRecentlyAdded (line 88) | async getLibraryItemsMostRecentlyAdded(library, user, include, limit) { method getLibraryItemsContinueSeries (line 136) | async getLibraryItemsContinueSeries(library, user, include, limit) { method getMediaFinished (line 165) | async getMediaFinished(library, user, include, limit) { method getSeriesMostRecentlyAdded (line 202) | async getSeriesMostRecentlyAdded(library, user, include, limit) { method getNewestAuthors (line 329) | async getNewestAuthors(library, user, limit) { method getLibraryItemsToDiscover (line 373) | async getLibraryItemsToDiscover(library, user, include, limit) { method getNewestPodcastEpisodes (line 399) | async getNewestPodcastEpisodes(library, user, limit) { method getLibraryItemsForAuthor (line 421) | async getLibraryItemsForAuthor(author, user, limit, offset) { method getLibraryItemsForCollection (line 434) | getLibraryItemsForCollection(collection) { method getFilterData (line 444) | async getFilterData(mediaType, libraryId) { FILE: server/utils/queries/libraryItemFilters.js method getAllLibraryItemsWithTags (line 12) | async getAllLibraryItemsWithTags(tags) { method getAllLibraryItemsWithGenres (line 77) | async getAllLibraryItemsWithGenres(genres) { method getAllLibraryItemsWithNarrators (line 138) | async getAllLibraryItemsWithNarrators(narrators) { method search (line 181) | search(user, library, query, limit) { method getLargestItems (line 195) | async getLargestItems(libraryId, limit) { FILE: server/utils/queries/libraryItemsBookFilters.js method getUserPermissionBookWhereQuery (line 17) | getUserPermissionBookWhereQuery(user) { method getCollapseSeriesMediaProgressFilter (line 52) | getCollapseSeriesMediaProgressFilter(value) { method getMediaGroupQuery (line 103) | getMediaGroupQuery(group, value) { method getOrder (line 254) | getOrder(sortBy, sortDesc, collapseseries) { method getCollapseSeriesBooksToExclude (line 312) | async getCollapseSeriesBooksToExclude(bookFindOptions, seriesWhere) { method clearCountCache (line 354) | clearCountCache(hook) { method findAndCountAll (line 359) | async findAndCountAll(findOptions, limit, offset, useCountCache) { method getFilteredLibraryItems (line 398) | async getFilteredLibraryItems(libraryId, user, filterGroup, filterValue,... method getContinueSeriesLibraryItems (line 703) | async getContinueSeriesLibraryItems(library, user, include, limit, offse... method getDiscoverLibraryItems (line 848) | async getDiscoverLibraryItems(libraryId, user, include, limit) { method getLibraryItemsForCollection (line 1033) | async getLibraryItemsForCollection(collection) { method getLibraryItemsForSeries (line 1078) | async getLibraryItemsForSeries(series, user) { method search (line 1092) | async search(user, library, query, limit, offset) { method getGenresWithCount (line 1289) | async getGenresWithCount(libraryId) { method getBookLibraryStats (line 1311) | async getBookLibraryStats(libraryId) { method getLongestBooks (line 1331) | async getLongestBooks(libraryId, limit) { FILE: server/utils/queries/libraryItemsPodcastFilters.js method getUserPermissionPodcastWhereQuery (line 15) | getUserPermissionPodcastWhereQuery(user) { method getMediaGroupQuery (line 49) | getMediaGroupQuery(group, value) { method getOrder (line 78) | getOrder(sortBy, sortDesc) { method clearCountCache (line 105) | clearCountCache(model, hook) { method findAndCountAll (line 110) | async findAndCountAll(findOptions, model, limit, offset, useCountCache) { method getFilteredLibraryItems (line 146) | async getFilteredLibraryItems(libraryId, user, filterGroup, filterValue,... method getFilteredPodcastEpisodes (line 256) | async getFilteredPodcastEpisodes(libraryId, user, filterGroup, filterVal... method search (line 361) | async search(user, library, query, limit, offset) { method getRecentEpisodes (line 506) | async getRecentEpisodes(user, library, limit, offset) { method getPodcastLibraryStats (line 565) | async getPodcastLibraryStats(libraryId) { method getGenresWithCount (line 589) | async getGenresWithCount(libraryId) { method getLongestPodcasts (line 612) | async getLongestPodcasts(libraryId, limit) { FILE: server/utils/queries/seriesFilters.js method decode (line 7) | decode(text) { method getFilteredSeries (line 24) | async getFilteredSeries(library, user, filterBy, sortBy, sortDesc, inclu... FILE: server/utils/queries/userStats.js method getUserListeningSessionsForYear (line 14) | async getUserListeningSessionsForYear(userId, year) { method getBookMediaProgressFinishedForYear (line 43) | async getBookMediaProgressFinishedForYear(userId, year) { method getStatsForYear (line 71) | async getStatsForYear(userId, year) { FILE: server/utils/rateLimiterFactory.js class RateLimiterFactory (line 8) | class RateLimiterFactory { method constructor (line 12) | constructor() { method getAuthRateLimiter (line 20) | getAuthRateLimiter() { FILE: server/utils/scandir.js function isMediaFile (line 19) | function isMediaFile(mediaType, ext, audiobooksOnly = false) { function isScannableNonMediaFile (line 27) | function isScannableNonMediaFile(ext) { function checkFilepathIsAudioFile (line 33) | function checkFilepathIsAudioFile(filepath) { function groupFileItemsIntoLibraryItemDirs (line 48) | function groupFileItemsIntoLibraryItemDirs(mediaType, fileItems, audiobo... function buildLibraryFile (line 130) | function buildLibraryFile(libraryItemPath, files) { function getBookDataFromDir (line 149) | function getBookDataFromDir(relPath, parseSubtitle = false) { function getNarrator (line 182) | function getNarrator(folder) { function getSequence (line 205) | function getSequence(folder) { function getPublishedYear (line 234) | function getPublishedYear(folder) { function getSubtitle (line 253) | function getSubtitle(folder) { function getASIN (line 265) | function getASIN(folder) { function getPodcastDataFromDir (line 282) | function getPodcastDataFromDir(relPath) { function getDataFromMediaDir (line 299) | function getDataFromMediaDir(libraryMediaType, folderPath, relPath) { FILE: server/utils/stringifySequelizeQuery.js function stringifySequelizeQuery (line 1) | function stringifySequelizeQuery(findOptions) { FILE: test/server/managers/migrations/v1.0.0-migration.js function up (line 1) | async function up() { function down (line 5) | async function down() { FILE: test/server/managers/migrations/v1.1.0-migration.js function up (line 1) | async function up() { function down (line 5) | async function down() { FILE: test/server/managers/migrations/v1.10.0-migration.js function up (line 1) | async function up() { function down (line 5) | async function down() { FILE: test/server/managers/migrations/v1.2.0-migration.js function up (line 1) | async function up() { function down (line 5) | async function down() { FILE: test/server/migrations/v0.0.1-migration_example.js function up (line 18) | async function up({ context: { queryInterface, logger } }) { function down (line 42) | async function down({ context: { queryInterface, logger } }) { FILE: test/server/utils/ffmpegHelpers.test.js function createTestSetup (line 12) | function createTestSetup() { function createTestSetup (line 71) | function createTestSetup() { FILE: test/server/utils/stringifySequeslizeQuery.test.js class DummyClass (line 5) | class DummyClass {}