SYMBOL INDEX (218 symbols across 39 files) FILE: server/consts.js constant ROLES (line 1) | const ROLES = { FILE: server/handlers/auth.handler.js function authenticate (line 16) | function authenticate(type, error, isStrict, redirect) { function admin (line 92) | function admin(req, res, next) { function signup (line 97) | async function signup(req, res) { function createAdminUser (line 116) | async function createAdminUser(req, res) { function login (line 143) | function login(req, res) { function verify (line 155) | async function verify(req, res, next) { function changePassword (line 181) | async function changePassword(req, res) { function generateApiKey (line 211) | async function generateApiKey(req, res) { function resetPassword (line 234) | async function resetPassword(req, res) { function newPassword (line 261) | async function newPassword(req, res) { function changeEmailRequest (line 286) | async function changeEmailRequest(req, res) { function changeEmail (line 331) | async function changeEmail(req, res, next) { function featureAccess (line 363) | function featureAccess(features, redirect) { function featureAccessPage (line 378) | function featureAccessPage(features) { FILE: server/handlers/domains.handler.js function add (line 9) | async function add(req, res) { function addAdmin (line 30) | async function addAdmin(req, res) { function remove (line 51) | async function remove(req, res) { function removeAdmin (line 87) | async function removeAdmin(req, res) { function getAdmin (line 115) | async function getAdmin(req, res) { function ban (line 154) | async function ban(req, res) { FILE: server/handlers/helpers.handler.js function error (line 10) | function error(error, req, res, _next) { function verify (line 38) | function verify(req, res, next) { function parseQuery (line 54) | function parseQuery(req, res, next) { function rateLimit (line 88) | function rateLimit(params) { function adminSetup (line 127) | async function adminSetup(req, res, next) { FILE: server/handlers/links.handler.js constant URL (line 5) | const URL = require("node:url"); function get (line 19) | async function get(req, res) { function getAdmin (line 51) | async function getAdmin(req, res) { function create (line 99) | async function create(req, res) { function edit (line 163) | async function edit(req, res) { function editAdmin (line 256) | async function editAdmin(req, res) { function remove (line 349) | async function remove(req, res) { function report (line 374) | async function report(req, res) { function ban (line 391) | async function ban(req, res) { function redirect (line 459) | async function redirect(req, res, next) { function redirectProtected (line 547) | async function redirectProtected(req, res) { function redirectCustomDomainHomepage (line 587) | async function redirectCustomDomainHomepage(req, res, next) { function stats (line 610) | async function stats(req, res) { FILE: server/handlers/locals.handler.js function isHTML (line 5) | function isHTML(req, res, next) { function noLayout (line 11) | function noLayout(req, res, next) { function viewTemplate (line 16) | function viewTemplate(template) { function config (line 23) | function config(req, res, next) { function user (line 39) | async function user(req, res, next) { function newPassword (line 46) | function newPassword(req, res, next) { function createLink (line 51) | function createLink(req, res, next) { function editLink (line 56) | function editLink(req, res, next) { function protected (line 62) | function protected(req, res, next) { function adminTable (line 67) | function adminTable(req, res, next) { FILE: server/handlers/renders.handler.js function homepage (line 11) | async function homepage(req, res) { function login (line 21) | async function login(req, res) { function logout (line 32) | function logout(req, res) { function createAdmin (line 39) | async function createAdmin(req, res) { function notFound (line 50) | function notFound(req, res) { function settings (line 56) | function settings(req, res) { function admin (line 62) | function admin(req, res) { function stats (line 68) | function stats(req, res) { function banned (line 74) | async function banned(req, res) { function report (line 80) | async function report(req, res) { function resetPassword (line 90) | async function resetPassword(req, res) { function resetPasswordSetNewPassword (line 96) | async function resetPasswordSetNewPassword(req, res) { function verifyChangeEmail (line 118) | async function verifyChangeEmail(req, res) { function verify (line 124) | async function verify(req, res) { function terms (line 130) | async function terms(req, res) { function confirmLinkDelete (line 142) | async function confirmLinkDelete(req, res) { function confirmLinkBan (line 160) | async function confirmLinkBan(req, res) { function confirmUserDelete (line 176) | async function confirmUserDelete(req, res) { function confirmUserBan (line 191) | async function confirmUserBan(req, res) { function createUser (line 206) | async function createUser(req, res) { function addDomainAdmin (line 212) | async function addDomainAdmin(req, res) { function addDomainForm (line 218) | async function addDomainForm(req, res) { function confirmDomainDelete (line 222) | async function confirmDomainDelete(req, res) { function confirmDomainBan (line 235) | async function confirmDomainBan(req, res) { function confirmDomainDeleteAdmin (line 252) | async function confirmDomainDeleteAdmin(req, res) { function getReportEmail (line 267) | async function getReportEmail(req, res) { function getSupportEmail (line 276) | async function getSupportEmail(req, res) { function linkEdit (line 286) | async function linkEdit(req, res) { function linkEditAdmin (line 297) | async function linkEditAdmin(req, res) { FILE: server/handlers/users.handler.js function get (line 8) | async function get(req, res) { function remove (line 20) | async function remove(req, res) { function removeByAdmin (line 35) | async function removeByAdmin(req, res) { function getAdmin (line 64) | async function getAdmin(req, res) { function ban (line 105) | async function ban(req, res) { function create (line 157) | async function create(req, res) { FILE: server/handlers/validators.handler.js constant URL (line 6) | const URL = require("node:url"); function bannedDomain (line 504) | async function bannedDomain(domain) { function bannedHost (line 515) | async function bannedHost(domain) { FILE: server/mail/mail.js function verification (line 49) | async function verification(user) { function changeEmail (line 73) | async function changeEmail(user) { function resetPasswordToken (line 97) | async function resetPasswordToken(user) { function sendReportEmail (line 121) | async function sendReportEmail(link) { FILE: server/migrations/20200211220920_constraints.js function up (line 3) | async function up(knex) { function down (line 12) | async function down() { FILE: server/migrations/20200510140704_domains.js function up (line 3) | async function up(knex) { function down (line 31) | async function down() { FILE: server/migrations/20200718124944_description.js function up (line 1) | async function up(knex) { function down (line 10) | async function down() { FILE: server/migrations/20200730203154_expire_in.js function up (line 1) | async function up(knex) { function down (line 10) | async function down() { FILE: server/migrations/20200810195255_change_email.js function up (line 1) | async function up(knex) { function down (line 15) | async function down() { FILE: server/migrations/20241103083933_user-roles.js function up (line 7) | async function up(knex) { function down (line 37) | async function down(knex) {} FILE: server/migrations/20241223062111_indexes.js function up (line 9) | async function up(knex) { function down (line 36) | async function down(knex) { FILE: server/migrations/20241223103044_visits_user_id.js function up (line 5) | async function up(knex) { function down (line 56) | async function down(knex) {} FILE: server/migrations/20241223155527_visits_user_id_index.js function up (line 9) | async function up(knex) { function down (line 23) | async function down(knex) { FILE: server/migrations/20250106070444_remove_cooldown.js function up (line 1) | async function up(knex) { function down (line 24) | async function down(knex) {} FILE: server/models/domain.model.js function createDomainTable (line 1) | async function createDomainTable(knex) { FILE: server/models/host.model.js function createHostTable (line 1) | async function createHostTable(knex) { FILE: server/models/ip.model.js function createIPTable (line 1) | async function createIPTable(knex) { FILE: server/models/link.model.js function createLinkTable (line 1) | async function createLinkTable(knex) { FILE: server/models/user.model.js function createUserTable (line 3) | async function createUserTable(knex) { FILE: server/models/visit.model.js function createVisitTable (line 1) | async function createVisitTable(knex) { FILE: server/passport.js function enableOIDC (line 78) | async function enableOIDC() { FILE: server/queries/domain.queries.js function find (line 6) | async function find(match) { function get (line 22) | function get(match) { function add (line 26) | async function add(params) { function update (line 63) | async function update(match, update) { function normalizeMatch (line 85) | function normalizeMatch(match) { function getAdmin (line 126) | async function getAdmin(match, params) { function totalAdmin (line 173) | async function totalAdmin(match, params) { function remove (line 213) | async function remove(domain) { FILE: server/queries/host.queries.js function find (line 6) | async function find(match) { function add (line 24) | async function add(params) { FILE: server/queries/link.queries.js function normalizeMatch (line 32) | function normalizeMatch(match) { function total (line 63) | async function total(match, params) { function totalAdmin (line 85) | async function totalAdmin(match, params) { function get (line 121) | async function get(match, params) { function getAdmin (line 141) | async function getAdmin(match, params) { function find (line 179) | async function find(match) { function create (line 200) | async function create(params) { function remove (line 232) | async function remove(match) { function batchRemove (line 248) | async function batchRemove(match) { function update (line 264) | async function update(match, update) { function incrementVisit (line 294) | function incrementVisit(match) { FILE: server/queries/user.queries.js function find (line 10) | async function find(match) { function add (line 39) | async function add(params, user) { function update (line 67) | async function update(match, update, methods) { function remove (line 98) | async function remove(user) { function normalizeMatch (line 119) | function normalizeMatch(match) { function getAdmin (line 130) | async function getAdmin(match, params) { function totalAdmin (line 180) | async function totalAdmin(match, params) { function create (line 223) | async function create(params) { function findAny (line 242) | async function findAny() { FILE: server/queries/visit.queries.js function add (line 8) | async function add(params) { function find (line 71) | async function find(match, total) { FILE: server/queues/queues.js method add (line 28) | add(data) { FILE: server/queues/visit.js constant URL (line 3) | const URL = require("node:url"); function filterInBrowser (line 11) | function filterInBrowser(agent) { function filterInOs (line 17) | function filterInOs(agent) { FILE: server/utils/asyncHandler.js function asyncHandler (line 1) | function asyncHandler(fn) { FILE: server/utils/knex.js function knexUtils (line 2) | function knexUtils(knex) { FILE: server/utils/utils.js constant JWT (line 4) | const JWT = require("jsonwebtoken"); class CustomError (line 17) | class CustomError extends Error { method constructor (line 18) | constructor(message, statusCode, data) { function isAdmin (line 34) | function isAdmin(user) { function signToken (line 38) | function signToken(user) { function setToken (line 50) | function setToken(res, token) { function deleteCurrentToken (line 58) | function deleteCurrentToken(res) { function generateRandomPassword (line 62) | function generateRandomPassword() { function generateId (line 68) | async function generateId(query, domain_id) { function addProtocol (line 77) | function addProtocol(url) { function getSiteURL (line 82) | function getSiteURL() { function getShortURL (line 87) | function getShortURL(address, domain) { function statsObjectToArray (line 94) | function statsObjectToArray(obj) { function getDifferenceFunction (line 111) | function getDifferenceFunction(type) { function parseDatetime (line 119) | function parseDatetime(date) { function parseTimestamps (line 124) | function parseTimestamps(item) { function dateToUTC (line 131) | function dateToUTC(date) { function getStatsPeriods (line 148) | function getStatsPeriods(now) { function parseBooleanQuery (line 200) | function parseBooleanQuery(query) { function getInitStats (line 206) | function getInitStats() { constant MINUTE (line 231) | const MINUTE = 60, constant HOUR (line 231) | const MINUTE = 60, constant DAY (line 231) | const MINUTE = 60, constant WEEK (line 231) | const MINUTE = 60, constant MONTH (line 231) | const MINUTE = 60, constant YEAR (line 231) | const MINUTE = 60, function getTimeAgo (line 237) | function getTimeAgo(dateString) { function sleep (line 347) | function sleep(ms) { function removeWww (line 351) | function removeWww(host) { function registerHandlebarsHelpers (line 355) | function registerHandlebarsHelpers() { function getCustomCSSFileNames (line 403) | function getCustomCSSFileNames() { FILE: static/scripts/main.js function resetForm (line 17) | function resetForm(id) { function closest (line 41) | function closest(selector, elm) { function getQueryParams (line 56) | function getQueryParams() { function trimText (line 67) | function trimText(selector, length) { function formatDateHour (line 78) | function formatDateHour(selector) { function handleQRCode (line 88) | function handleQRCode(element, id) { function handleCopyLink (line 105) | function handleCopyLink(element) { function handleShortURLCopyLink (line 110) | function handleShortURLCopyLink(element) { function openDialog (line 121) | function openDialog(id, name) { function closeDialog (line 130) | function closeDialog() { function setLinksLimit (line 147) | function setLinksLimit(event) { function setLinksSkip (line 157) | function setLinksSkip(event, action) { function updateLinksNav (line 175) | function updateLinksNav() { function resetTableNav (line 191) | function resetTableNav() { function setTab (line 213) | function setTab(event, targetId) { function onSearchChange (line 226) | function onSearchChange(event) { function clearSeachInput (line 232) | function clearSeachInput(event) { function onSearchInputLoad (line 243) | function onSearchInputLoad() { function canSendVerificationEmail (line 263) | function canSendVerificationEmail() { FILE: static/scripts/stats.js function createViewsChartLabel (line 2) | function createViewsChartLabel(ctx) { function changeStatsPeriod (line 43) | function changeStatsPeriod(event) { function beautifyBrowserName (line 62) | function beautifyBrowserName(name) { function createViewsChart (line 75) | function createViewsChart() { function createBrowsersChart (line 160) | function createBrowsersChart() { function createReferrersChart (line 232) | function createReferrersChart() { function beautifyOsName (line 302) | function beautifyOsName(name) { function createOsChart (line 314) | function createOsChart() { function feedMapData (line 386) | function feedMapData(period) { function mapTooltipHoverOver (line 415) | function mapTooltipHoverOver() { function mapTooltipHoverOut (line 428) | function mapTooltipHoverOut() { function createCharts (line 440) | function createCharts() {