SYMBOL INDEX (134 symbols across 19 files) FILE: src/archive-data.ts function getSlackArchiveData (line 8) | async function getSlackArchiveData(): Promise { function setSlackArchiveData (line 21) | async function setSlackArchiveData( FILE: src/backup.ts function createBackup (line 13) | async function createBackup() { function deleteBackup (line 31) | async function deleteBackup() { function deleteOlderBackups (line 60) | async function deleteOlderBackups() { FILE: src/channels.ts function getChannelName (line 12) | function getChannelName(channel: Channel) { function isPublicChannel (line 18) | function isPublicChannel(channel: Channel) { function isPrivateChannel (line 22) | function isPrivateChannel(channel: Channel) { function isDmChannel (line 26) | function isDmChannel(channel: Channel, users: Users) { function isBotChannel (line 30) | function isBotChannel(channel: Channel, users: Users) { function isChannels (line 34) | function isChannels(input: any): input is ConversationsListResponse { function downloadChannels (line 38) | async function downloadChannels( FILE: src/cli.ts function selectMergeFiles (line 44) | async function selectMergeFiles(): Promise { function selectChannels (line 72) | async function selectChannels( function selectChannelTypes (line 139) | async function selectChannelTypes(): Promise> { function getToken (line 180) | async function getToken() { function writeLastSuccessfulArchive (line 207) | async function writeLastSuccessfulArchive() { function getLastSuccessfulRun (line 212) | function getLastSuccessfulRun() { function getAuthTest (line 234) | async function getAuthTest() { function main (line 265) | async function main() { FILE: src/config.ts function findCliParameter (line 11) | function findCliParameter(param: string) { function getCliParameter (line 23) | function getCliParameter(param: string) { constant AUTOMATIC_MODE (line 35) | const AUTOMATIC_MODE = findCliParameter("--automatic"); constant USE_PREVIOUS_CHANNEL_CONFIG (line 36) | const USE_PREVIOUS_CHANNEL_CONFIG = findCliParameter( constant CHANNEL_TYPES (line 39) | const CHANNEL_TYPES = getCliParameter("--channel-types"); constant NO_BACKUP (line 40) | const NO_BACKUP = findCliParameter("--no-backup"); constant NO_SEARCH (line 41) | const NO_SEARCH = findCliParameter("--no-search"); constant NO_FILE_DOWNLOAD (line 42) | const NO_FILE_DOWNLOAD = findCliParameter("--no-file-download"); constant NO_SLACK_CONNECT (line 43) | const NO_SLACK_CONNECT = findCliParameter("--no-slack-connect"); constant FORCE_HTML_GENERATION (line 44) | const FORCE_HTML_GENERATION = findCliParameter( constant EXCLUDE_CHANNELS (line 47) | const EXCLUDE_CHANNELS = getCliParameter("--exclude-channels"); constant BASE_DIR (line 48) | const BASE_DIR = process.cwd(); constant OUT_DIR (line 49) | const OUT_DIR = path.join(BASE_DIR, "slack-archive"); constant TOKEN_FILE (line 50) | const TOKEN_FILE = path.join(OUT_DIR, ".token"); constant DATE_FILE (line 51) | const DATE_FILE = path.join(OUT_DIR, ".last-successful-run"); constant DATA_DIR (line 52) | const DATA_DIR = path.join(OUT_DIR, "data"); constant HTML_DIR (line 53) | const HTML_DIR = path.join(OUT_DIR, "html"); constant FILES_DIR (line 54) | const FILES_DIR = path.join(HTML_DIR, "files"); constant AVATARS_DIR (line 55) | const AVATARS_DIR = path.join(HTML_DIR, "avatars"); constant EMOJIS_DIR (line 56) | const EMOJIS_DIR = path.join(HTML_DIR, "emojis"); constant INDEX_PATH (line 58) | const INDEX_PATH = path.join(OUT_DIR, "index.html"); constant SEARCH_PATH (line 59) | const SEARCH_PATH = path.join(OUT_DIR, "search.html"); constant MESSAGES_JS_PATH (line 60) | const MESSAGES_JS_PATH = path.join(__dirname, "../static/scroll.js"); constant SEARCH_TEMPLATE_PATH (line 61) | const SEARCH_TEMPLATE_PATH = path.join( constant CHANNELS_DATA_PATH (line 65) | const CHANNELS_DATA_PATH = path.join(DATA_DIR, "channels.json"); constant USERS_DATA_PATH (line 66) | const USERS_DATA_PATH = path.join(DATA_DIR, "users.json"); constant EMOJIS_DATA_PATH (line 67) | const EMOJIS_DATA_PATH = path.join(DATA_DIR, "emojis.json"); constant SLACK_ARCHIVE_DATA_PATH (line 68) | const SLACK_ARCHIVE_DATA_PATH = path.join( constant SEARCH_DATA_PATH (line 72) | const SEARCH_DATA_PATH = path.join(DATA_DIR, "search.js"); function getChannelDataFilePath (line 74) | function getChannelDataFilePath(channelId: string) { function getChannelUploadFilePath (line 78) | function getChannelUploadFilePath(channelId: string, fileName: string) { function getHTMLFilePath (line 82) | function getHTMLFilePath(channelId: string, index: number) { function getAvatarFilePath (line 86) | function getAvatarFilePath(userId: string, extension: string) { FILE: src/create-html.tsx constant MESSAGE_CHUNK (line 45) | const MESSAGE_CHUNK = 1000; function formatTimestamp (line 57) | function formatTimestamp(message: Message, dateFormat = "PPPPpppp") { type FilesProps (line 64) | interface FilesProps { type AvatarProps (line 117) | interface AvatarProps { type ParentMessageProps (line 132) | interface ParentMessageProps { type ReactionProps (line 153) | interface ReactionProps { type EmojiProps (line 173) | interface EmojiProps { type MessageProps (line 184) | interface MessageProps { type MessagesPageProps (line 221) | interface MessagesPageProps { type ChannelLinkProps (line 253) | interface ChannelLinkProps { type IndexPageProps (line 291) | interface IndexPageProps { type HeaderProps (line 409) | interface HeaderProps { type PaginationProps (line 446) | interface PaginationProps { function renderIndexPage (line 508) | async function renderIndexPage() { type RenderMessagesPageOptions (line 516) | interface RenderMessagesPageOptions { function renderMessagesPage (line 523) | function renderMessagesPage(options: RenderMessagesPageOptions, spinner:... function renderAndWrite (line 548) | async function renderAndWrite(page: JSX.Element, filePath: string) { function getChannelsToCreateFilesFor (line 555) | async function getChannelsToCreateFilesFor( function createHtmlForChannel (line 584) | async function createHtmlForChannel({ function createHtmlForChannels (line 638) | async function createHtmlForChannels(channels: Array = []) { FILE: src/data-load.ts function getFile (line 19) | async function getFile(filePath: string, returnIfEmpty: T): Promise { function getMessages (line 31) | async function getMessages( function getUsers (line 45) | async function getUsers(): Promise { function getEmoji (line 49) | async function getEmoji(): Promise { function getChannels (line 53) | async function getChannels(): Promise> { function getSearchFile (line 57) | async function getSearchFile(): Promise { function readFile (line 70) | async function readFile(filePath: string, encoding = "utf8") { function readJSON (line 76) | async function readJSON(filePath: string) { FILE: src/data-write.ts function write (line 6) | async function write(filePath: string, data: any) { function writeAndMerge (line 12) | async function writeAndMerge(filePath: string, newData: any) { FILE: src/download-files.ts type DownloadUrlOptions (line 16) | interface DownloadUrlOptions { function downloadURL (line 21) | async function downloadURL( function downloadFile (line 48) | async function downloadFile( function downloadFilesForChannel (line 78) | async function downloadFilesForChannel(channelId: string, spinner: Ora) { FILE: src/emoji.ts function getUnicodeEmoji (line 15) | function getUnicodeEmoji() { function getEmojiFilePath (line 28) | function getEmojiFilePath(name: string, extension?: string) { function isEmojiUnicode (line 44) | function isEmojiUnicode(name: string) { function getEmojiUnicode (line 49) | function getEmojiUnicode(name: string) { function downloadEmojiList (line 61) | async function downloadEmojiList(): Promise { function downloadEmoji (line 75) | async function downloadEmoji( function getEmojiAlias (line 100) | function getEmojiAlias(name: string): string { function downloadEmojis (line 106) | async function downloadEmojis( FILE: src/interfaces.ts type User (line 8) | type User = SlackUser; type Users (line 10) | type Users = Record; type Emojis (line 12) | type Emojis = Record; type ArchiveMessage (line 14) | interface ArchiveMessage extends SlackMessage { type Reaction (line 18) | type Reaction = SlackReaction; type Message (line 20) | type Message = SlackMessage; type Channel (line 22) | type Channel = SlackChannel; type File (line 24) | type File = SlackFile; type SearchPageIndex (line 26) | type SearchPageIndex = Record>; type SearchFile (line 28) | type SearchFile = { type SearchMessage (line 35) | type SearchMessage = { type SlackArchiveChannelData (line 42) | interface SlackArchiveChannelData { type SlackArchiveData (line 47) | interface SlackArchiveData { type ChunkInfo (line 52) | interface ChunkInfo { type ChunksInfo (line 58) | type ChunksInfo = Array; FILE: src/messages.ts function isConversation (line 15) | function isConversation(input: any): input is ConversationsHistoryRespon... type DownloadMessagesResult (line 19) | interface DownloadMessagesResult { function downloadMessages (line 24) | async function downloadMessages( function downloadReplies (line 78) | async function downloadReplies( function downloadExtras (line 110) | async function downloadExtras( FILE: src/reactions.ts function hasReactions (line 3) | function hasReactions(message: Message) { FILE: src/retry.ts type RetryOptions (line 1) | interface RetryOptions { function retry (line 10) | async function retry( function wait (line 36) | function wait(ms = 250) { FILE: src/search.ts constant INDEX_OF_PAGES (line 35) | const INDEX_OF_PAGES: SearchPageIndex = {}; function recordPage (line 37) | function recordPage(channelId?: string, timestamp?: string) { function createSearch (line 52) | async function createSearch() { function createSearchFile (line 64) | async function createSearchFile(spinner: Ora) { function createSearchHTML (line 113) | async function createSearchHTML() { function getSize (line 138) | function getSize() { function getScript (line 143) | function getScript(script: string) { FILE: src/threads.ts function isThread (line 3) | function isThread(message: Message) { FILE: src/timestamp.ts function slackTimestampToJavaScriptTimestamp (line 1) | function slackTimestampToJavaScriptTimestamp(ts?: string) { FILE: src/users.ts function downloadUser (line 15) | async function downloadUser( function downloadAvatars (line 42) | async function downloadAvatars() { function downloadAvatarForUser (line 55) | async function downloadAvatarForUser(user?: User | null) { function getName (line 81) | function getName(userId: string | undefined, users: Users) { FILE: src/web-client.ts function getWebClient (line 6) | function getWebClient() { function authTest (line 13) | async function authTest() {