SYMBOL INDEX (48 symbols across 11 files) FILE: backend/model/cryptr.mjs function encrypt (line 5) | function encrypt(unencrypted_thing) { // only use it on primitives. alwa... function decrypt (line 10) | function decrypt(encrypted_thing) { // takes a string and returns a string FILE: backend/model/email.mjs function send (line 19) | async function send(user, subject, msg) { FILE: backend/model/file.mjs function init (line 5) | async function init() { FILE: backend/model/firebase.mjs function create_app (line 3) | function create_app(service_acc_key, db_url, username) { function free_app (line 11) | async function free_app(app) { function get_db (line 15) | function get_db(app) { function is_empty (line 19) | async function is_empty(db) { function insert_data (line 25) | async function insert_data(db, data) { function get_fns_to_import (line 51) | async function get_fns_to_import(db, category) { function delete_imported_fns (line 57) | async function delete_imported_fns(db, fns) { function create_new_auth_token (line 71) | async function create_new_auth_token(app) { FILE: backend/model/logger.mjs function create_logger (line 10) | function create_logger(level) { // https://github.com/winstonjs/winston#... FILE: backend/model/reddit.mjs function create_requester (line 3) | function create_requester(reddit_api_refresh_token) { FILE: backend/model/sql.mjs function init_db (line 10) | async function init_db() { function query (line 63) | async function query(query) { function save_user (line 69) | async function save_user(username, reddit_api_refresh_token_encrypted, c... function update_user (line 99) | async function update_user(username, fields) { function get_user (line 111) | async function get_user(username) { function get_all_non_purged_users (line 124) | async function get_all_non_purged_users() { function backup_db (line 137) | async function backup_db() { function cycle_backup_db (line 146) | function cycle_backup_db() { FILE: backend/model/user.mjs class User (line 16) | class User { method constructor (line 17) | constructor(username, refresh_token, dummy=false) { method save (line 62) | async save() { method get_listing (line 88) | async get_listing(options, category, type) { method parse_listing (line 126) | parse_listing(listing, category, type, from_mixed=false, from_import=f... method replace_latest_fn (line 165) | async replace_latest_fn(category, type) { method sync_category (line 174) | async sync_category(category, type) { method import_category (line 196) | async import_category(category, type) { method request_item_icon_urls (line 220) | async request_item_icon_urls(type, subs, category) { method get_new_item_icon_urls (line 299) | async get_new_item_icon_urls(category) { method update (line 314) | async update(io=null, socket_id=null) { method get_comment_from_reddit (line 501) | async get_comment_from_reddit(comment_id) { method delete_item_from_reddit_acc (line 510) | async delete_item_from_reddit_acc(item_id, item_category, item_type) { method purge (line 561) | async purge() { function fill_usernames_to_socket_ids (line 577) | async function fill_usernames_to_socket_ids() { function get (line 584) | async function get(username, existence_check=false) { function update_all (line 600) | async function update_all(io) { function cycle_update_all (line 682) | function cycle_update_all(io) { FILE: backend/model/utils.mjs function now_epoch (line 1) | function now_epoch() { function strip_trailing_slash (line 6) | function strip_trailing_slash(string) { FILE: frontend/source/hooks.js function handle (line 1) | async function handle(obj) { FILE: frontend/source/utils.js function now_epoch (line 1) | function now_epoch() { function epoch_to_formatted_datetime (line 6) | function epoch_to_formatted_datetime(epoch) { function time_since (line 14) | function time_since(epoch) { function shake_element (line 31) | function shake_element(element) { function show_alert (line 38) | function show_alert(alert_wrapper, message, type) {