SYMBOL INDEX (1578 symbols across 355 files) FILE: benchmarks/crypto/src/bench/base64.ts method before (line 13) | async before() { FILE: benchmarks/crypto/src/bench/hex.ts method before (line 16) | async before() { FILE: benchmarks/crypto/src/bench/key-generation.ts method before (line 8) | async before() { FILE: benchmarks/crypto/src/bench/nonce-generation.ts method before (line 8) | async before() { FILE: benchmarks/crypto/src/bench/round-trip-long.ts method before (line 36) | async before() { FILE: benchmarks/crypto/src/bench/round-trip.ts method before (line 14) | async before() { FILE: benchmarks/crypto/src/bench/stringConvension.ts method before (line 15) | async before() { FILE: benchmarks/crypto/src/index.ts function runBenchmark (line 9) | async function runBenchmark() { FILE: benchmarks/crypto/src/lib/js-nacl.ts function setInstance (line 8) | function setInstance(): Promise { function generateAsymmetricKeys (line 18) | function generateAsymmetricKeys() { function generateNonce (line 22) | function generateNonce(): Uint8Array { function encryptFor (line 26) | function encryptFor( function decryptFrom (line 38) | function decryptFrom( function splitNonceFromMessage (line 50) | function splitNonceFromMessage( function toHex (line 63) | function toHex(array: Uint8Array): string { function fromHex (line 67) | function fromHex(hex: string): Uint8Array { function fromString (line 79) | function fromString(str: string): Uint8Array { function toString (line 85) | function toString(uint8Array: Uint8Array): string { FILE: benchmarks/crypto/src/lib/libsodium.ts function libsodium (line 5) | async function libsodium(): Promise { function genericHash (line 12) | async function genericHash(arr: Uint8Array): Promise { function derivePublicKey (line 18) | async function derivePublicKey(privateKey: Uint8Array): Promise { function generateNonce (line 30) | async function generateNonce(): Promise { function generateAsymmetricKeys (line 36) | async function generateAsymmetricKeys(): Promise { function generateSymmetricKey (line 42) | async function generateSymmetricKey(): Promise { function encryptFor (line 48) | async function encryptFor( function decryptFrom (line 61) | async function decryptFrom( function splitNonceFromMessage (line 79) | async function splitNonceFromMessage( function toHex (line 91) | function toHex(array: Uint8Array): string { function fromHex (line 95) | function fromHex(hex: string): Uint8Array { function toBase64 (line 99) | async function toBase64(array: Uint8Array): Promise { function fromBase64 (line 105) | async function fromBase64(base64: string): Promise { function fromString (line 111) | function fromString(str: string): Uint8Array { function toString (line 117) | function toString(uint8Array: Uint8Array): string { FILE: benchmarks/crypto/src/lib/round-trip-implementations.ts function libsodium (line 5) | async function libsodium(msg: Uint8Array) { function tweetnacl (line 23) | async function tweetnacl(msg: Uint8Array) { function jsnacl (line 41) | async function jsnacl(msg: Uint8Array) { function ensureEquality (line 55) | function ensureEquality( FILE: benchmarks/crypto/src/lib/tweet-nacl.ts function generateAsymmetricKeys (line 6) | function generateAsymmetricKeys() { function generateNonce (line 10) | function generateNonce(): Uint8Array { function encryptFor (line 14) | function encryptFor( function decryptFrom (line 27) | function decryptFrom( function splitNonceFromMessage (line 40) | function splitNonceFromMessage( function toBase64 (line 59) | async function toBase64(array: Uint8Array): Promise { function fromBase64 (line 63) | async function fromBase64(base64: string): Promise { function fromString (line 67) | function fromString(str: string): Uint8Array { function toString (line 73) | function toString(uint8Array: Uint8Array): string { FILE: benchmarks/crypto/src/utils.ts function wrapCatch (line 3) | async function wrapCatch(task) { function fromString (line 12) | function fromString(str: string): Uint8Array { function toString (line 17) | function toString(data: Uint8Array): string { function concat (line 21) | function concat(arr1: Uint8Array, arr2: Uint8Array): Uint8Array { FILE: benchmarks/emoji-replace/src/bench/-utils.ts function assertEq (line 4) | function assertEq(expected: T, actual: T, msg: string) { type Args (line 20) | interface Args { function generateEmojisBench (line 26) | function generateEmojisBench({ FILE: benchmarks/emoji-replace/src/index.ts function runBenchmark (line 5) | async function runBenchmark() { FILE: client/web/addons/crypto/addon-test-support/index.ts function newCrypto (line 20) | async function newCrypto() { FILE: client/web/addons/crypto/addon-test-support/setup.ts function setupWorkers (line 14) | function setupWorkers(hooks: NestedHooks) { FILE: client/web/addons/crypto/addon/-private/types.ts type WorkerLike (line 3) | interface WorkerLike { type WorkerRegistry (line 8) | type WorkerRegistry = { [path: string]: WorkerLike }; FILE: client/web/addons/crypto/addon/connector.ts type Args (line 5) | type Args = { class CryptoConnector (line 29) | class CryptoConnector { method constructor (line 33) | constructor({ workerService, keys }: Args) { method login (line 40) | async login(mnemonic: string) { method mnemonicFromNaClBoxPrivateKey (line 49) | async mnemonicFromNaClBoxPrivateKey(key?: Uint8Array) { method generateKeys (line 58) | async generateKeys() { method generateSigningKeys (line 67) | async generateSigningKeys() { method derivePublicKey (line 76) | async derivePublicKey(privateKey: Uint8Array) { method derivePublicSigningKey (line 85) | async derivePublicSigningKey(privateSigningKey: Uint8Array) { method encryptForSocket (line 94) | async encryptForSocket(payload: Serializable, { publicKey }: KeyPublic) { method decryptFromSocket (line 103) | async decryptFromSocket(socketData: Encrypte... method sign (line 112) | async sign(message: Uint8Array, senderPrivateKey: Uint8Array) { method openSigned (line 121) | async openSigned(signedMessage: Uint8Array, senderPublicKey: Uint8Arra... method hash (line 130) | async hash(message: Uint8Array) { FILE: client/web/addons/crypto/addon/services/workers.ts constant CRYPTO_PATH (line 8) | const CRYPTO_PATH = '/workers/crypto'; constant NETWORKING_PATH (line 9) | const NETWORKING_PATH = '/workers/networking'; class WorkersService (line 11) | class WorkersService extends Service { method getCryptoWorker (line 15) | getCryptoWorker() { method getNetworkingWorker (line 20) | getNetworkingWorker() { method getWorker (line 24) | protected getWorker(path: string): WorkerLike { method willDestroy (line 49) | willDestroy() { type Registry (line 58) | interface Registry { FILE: client/web/addons/crypto/addon/types.ts type KeyPublic (line 1) | type KeyPublic = { publicKey: Uint8Array }; type KeyPrivate (line 2) | type KeyPrivate = { privateKey: Uint8Array }; type KeyPair (line 3) | type KeyPair = KeyPublic & KeyPrivate; type SigningKeyPublic (line 5) | type SigningKeyPublic = { publicSigningKey: Uint8Array }; type SigningKeyPrivate (line 6) | type SigningKeyPrivate = { privateSigningKey: Uint8Array }; type SigningKeyPair (line 7) | type SigningKeyPair = SigningKeyPublic & SigningKeyPrivate; type EncryptedMessage (line 9) | interface EncryptedMessage { type Serializable (line 16) | type Serializable = type EncryptableObject (line 26) | interface EncryptableObject { FILE: client/web/addons/crypto/addon/workers/crypto/actions.ts function login (line 6) | async function login(mnemonic: string): Promise { FILE: client/web/addons/crypto/addon/workers/crypto/messages.ts type API (line 33) | type API = { type CryptoMessage (line 47) | type CryptoMessage = { type Message (line 52) | type Message = { action: Action; args: Args }; function handleMessage (line 54) | function handleMessage( FILE: client/web/addons/crypto/addon/workers/crypto/utils/array.ts function concat (line 1) | function concat(arr1: Uint8Array, arr2: Uint8Array): Uint8Array { FILE: client/web/addons/crypto/addon/workers/crypto/utils/mnemonic.ts function mnemonicFromNaClBoxPrivateKey (line 22) | async function mnemonicFromNaClBoxPrivateKey(privateKey: Uint8Array): Pr... function naclBoxPrivateKeyFromMnemonic (line 31) | async function naclBoxPrivateKeyFromMnemonic(mnemonic: string): Promise<... function computeChecksum (line 53) | async function computeChecksum(nums: Uint8Array): Promise { function applyWords (line 65) | function applyWords(nums: number[]): string[] { function toUint11Array (line 70) | function toUint11Array(input: Uint8Array): number[] { function toUint8Array (line 99) | function toUint8Array(input: number[]): Uint8Array { FILE: client/web/addons/crypto/addon/workers/crypto/utils/nacl.ts function genericHash (line 6) | async function genericHash(arr: Uint8Array): Promise { function derivePublicKey (line 10) | async function derivePublicKey(privateKey: Uint8Array) { function derivePublicSigningKey (line 16) | async function derivePublicSigningKey(privateSigningKey: Uint8Array) { function randomBytes (line 22) | async function randomBytes(length: number) { function sign (line 26) | async function sign(message: Uint8Array, senderPrivateKey: Uint8Array): ... function openSigned (line 30) | async function openSigned( function hash (line 37) | async function hash(message: Uint8Array): Promise { function generateNonce (line 41) | async function generateNonce() { function generateAsymmetricKeys (line 45) | async function generateAsymmetricKeys() { function generateSymmetricKeys (line 54) | async function generateSymmetricKeys() { function generateSigningKeys (line 58) | async function generateSigningKeys() { function encryptFor (line 67) | async function encryptFor( function decryptFrom (line 79) | async function decryptFrom( function splitNonceFromMessage (line 90) | function splitNonceFromMessage(messageWithNonce: Uint8Array): [Uint8Arra... FILE: client/web/addons/crypto/addon/workers/crypto/utils/socket.ts function encryptForSocket (line 11) | async function encryptForSocket(payload: Serializable, to: KeyPublic, fr... function decryptFromSocket (line 20) | async function decryptFromSocket(socketData: EncryptedMessage, privateKe... function decryptMessage (line 30) | async function decryptMessage( FILE: client/web/addons/crypto/addon/workers/crypto/utils/string-encoding.ts function toHex (line 3) | function toHex(array: Uint8Array): string { function fromHex (line 9) | function fromHex(hex: string): Uint8Array { function toBase64 (line 19) | async function toBase64(array: Uint8Array): Promise { function fromBase64 (line 23) | async function fromBase64(base64: string): Promise { function fromString (line 27) | function fromString(str: string): Uint8Array { function toString (line 33) | function toString(uint8Array: Uint8Array): string { function ensureUint8Array (line 37) | function ensureUint8Array(text: string | Uint8Array): Uint8Array { function base64ToHex (line 46) | function base64ToHex(base64: string): string | undefined { FILE: client/web/addons/crypto/index.js method isDevelopingAddon (line 21) | isDevelopingAddon() { method treeForPublic (line 26) | treeForPublic() { FILE: client/web/addons/crypto/lib/worker-build.js function detectWorkers (line 10) | function detectWorkers() { function configureWorkerTree (line 23) | function configureWorkerTree({ isProduction, buildDir }) { function buildWorkers (line 39) | function buildWorkers(env) { FILE: client/web/addons/crypto/tests/dummy/app/app.ts class App (line 7) | class App extends Application { FILE: client/web/addons/crypto/tests/dummy/app/router.js class Router (line 5) | class Router extends EmberRouter { FILE: client/web/addons/encoding/addon/string.ts function toHex (line 3) | function toHex(array: Uint8Array): string { function fromHex (line 9) | function fromHex(hex: string): Uint8Array { type Serializable (line 19) | type Serializable = function convertObjectToQRCodeDataURL (line 29) | async function convertObjectToQRCodeDataURL(object: T): Uint8Array { function convertUint8ArrayToObject (line 43) | function convertUint8ArrayToObject(array: Uint8Array): T { function convertObjectToBase64String (line 49) | function convertObjectToBase64String(object: Serializable): string { function convertBase64StringToObject (line 56) | function convertBase64StringToObject(base64: string): Serializable { function objectToDataURL (line 63) | function objectToDataURL(obj: Serializable): string { function base64ToHex (line 70) | function base64ToHex(base64: string): string | undefined { FILE: client/web/addons/encoding/index.js method isDevelopingAddon (line 13) | isDevelopingAddon() { FILE: client/web/addons/encoding/tests/dummy/app/app.ts class App (line 7) | class App extends Application { FILE: client/web/addons/encoding/tests/dummy/app/router.js class Router (line 5) | class Router extends EmberRouter { FILE: client/web/addons/local-account/addon-test-support/-private/contact.ts function attributesForContact (line 10) | async function attributesForContact() { function buildContact (line 17) | async function buildContact(name: string, attributes = {}): Promise { function setupCurrentUser (line 31) | function setupCurrentUser(hooks: NestedHooks) { function getCurrentUser (line 37) | function getCurrentUser() { FILE: client/web/addons/local-account/addon-test-support/-private/storage.ts function cleanEverything (line 6) | async function cleanEverything(owner: Ember.ApplicationInstance) { function clearLocalStorage (line 16) | function clearLocalStorage(hooks: NestedHooks) { FILE: client/web/addons/local-account/addon-test-support/-private/user.ts function attributesForUser (line 12) | async function attributesForUser() { function buildUser (line 20) | async function buildUser(name: string, attributes = {}): Promise { function createUser (line 34) | async function createUser(name: string, attributes = {}): Promise { FILE: client/web/addons/local-account/addon-test-support/-private/utils.ts type ModelRegistry (line 4) | interface ModelRegistry { function createRecord (line 18) | function createRecord( FILE: client/web/addons/local-account/addon/adapters/application.js method attach (line 16) | attach(callback) { method clear (line 35) | clear() { method get (line 39) | get(namespace) { method set (line 49) | set(namespace, objects) { method replace (line 53) | replace(data) { method groupRecordsForFindMany (line 69) | groupRecordsForFindMany(store, snapshots) { method shouldBackgroundReloadRecord (line 73) | shouldBackgroundReloadRecord() { method shouldReloadAll (line 77) | shouldReloadAll() { method findRecord (line 90) | findRecord(store, type, id) { method findAll (line 102) | findAll(store, type) { method findMany (line 114) | findMany(store, type, ids) { method queryRecord (line 130) | queryRecord(store, type, query) { method query (line 155) | query(store, type, query) { method _query (line 164) | _query(records, query, singleMatch) { method deleteRecord (line 202) | deleteRecord(store, type, snapshot) { method generateIdForRecord (line 214) | generateIdForRecord() { method _setNamespaceData (line 220) | _setNamespaceData(type, namespaceData) { method _getNamespaceData (line 234) | _getNamespaceData(type) { method _loadData (line 260) | _loadData() { method _modelNamespace (line 266) | _modelNamespace(type) { method _adapterNamespace (line 270) | _adapterNamespace() { function updateOrCreate (line 275) | function updateOrCreate(store, type, snapshot) { method shouldBackgroundReloadRecord (line 297) | shouldBackgroundReloadRecord() { method shouldBackgroundReloadAll (line 301) | shouldBackgroundReloadAll() { FILE: client/web/addons/local-account/addon/models/channel-context-chain.ts class ChannelContextChain (line 9) | class ChannelContextChain extends Model { type ModelRegistry (line 24) | interface ModelRegistry { FILE: client/web/addons/local-account/addon/models/channel.ts class Channel (line 8) | class Channel extends Model { type ModelRegistry (line 25) | interface ModelRegistry { FILE: client/web/addons/local-account/addon/models/contact.ts type StatusKeys (line 12) | type StatusKeys = keyof typeof Status; type STATUS (line 13) | type STATUS = typeof Status[StatusKeys]; class Contact (line 15) | class Contact extends Identity { type ModelRegistry (line 22) | interface ModelRegistry { FILE: client/web/addons/local-account/addon/models/identity.ts class Identity (line 13) | class Identity extends Model implements Partial, Partial { method findAndSetName (line 19) | async findAndSetName(id: string, name: string): Promise { method create (line 29) | async create(id: string, name: string): Promise { method allChannels (line 37) | async allChannels(): Promise> { method find (line 43) | async find(uid: string) { FILE: client/web/addons/local-account/addon/services/contact-manager.ts class ContactManager (line 12) | class ContactManager extends Service { method find (line 17) | find(uid: string) { method import (line 21) | async import(contacts: Partial[]) { method findOrCreate (line 35) | async findOrCreate(uid: string, name: string): Promise { method allContacts (line 44) | async allContacts(): Promise> { method create (line 50) | async create(uid: string, name: string): Promise { method addContact (line 64) | async addContact(/* _info: any */) { method findAndSetName (line 74) | private async findAndSetName(uid: string, name: string): Promise { method setIdentity (line 124) | async setIdentity(name: string, keys: KeyPair & Partial { method load (line 146) | async load(): Promise { method currentUser (line 173) | async currentUser(): Promise { method migrate (line 180) | async migrate() { method hydrateCrypto (line 202) | hydrateCrypto(user?: KeyPair) { method importFromKey (line 217) | async importFromKey(name: string, privateKey: Uint8Array, privateSigni... type Registry (line 241) | interface Registry { FILE: client/web/addons/local-account/addon/types.ts type ImportableIdentity (line 1) | interface ImportableIdentity { FILE: client/web/addons/local-account/addon/utils.ts function isContact (line 3) | function isContact(maybe: unknown): maybe is Contact { FILE: client/web/addons/local-account/app/services/store.js class StoreService (line 5) | class StoreService extends Store { method createRecordDataFor (line 6) | createRecordDataFor(modelName, id, clientId, storeWrapper) { FILE: client/web/addons/local-account/tests/dummy/app/app.ts class App (line 7) | class App extends Application { FILE: client/web/addons/local-account/tests/dummy/app/router.js class Router (line 5) | class Router extends EmberRouter { FILE: client/web/addons/networking/addon-test-support/index.ts type Callback (line 9) | type Callback = (...args: unknown[]) => void; function setupSocketServer (line 16) | function setupSocketServer(hooks: NestedHooks) { type Options (line 158) | type Options = { FILE: client/web/addons/networking/addon/errors.ts class UnknownMessageError (line 1) | class UnknownMessageError extends Error {} class DataTransferFailed (line 2) | class DataTransferFailed extends Error {} class CurrentUserMustHaveAName (line 3) | class CurrentUserMustHaveAName extends Error {} FILE: client/web/addons/networking/addon/models/message.ts constant MESSAGE_LIMIT (line 5) | const MESSAGE_LIMIT = 75; type TYPE (line 50) | enum TYPE { type TARGET (line 61) | enum TARGET { class Message (line 73) | class Message extends Model { method unread (line 138) | get unread() { type ModelRegistry (line 148) | interface ModelRegistry { FILE: client/web/addons/networking/addon/models/message/utils.ts type RecordArray (line 5) | type RecordArray = Array; function selectUnreadDirectMessages (line 7) | function selectUnreadDirectMessages( function selectUnreadMessages (line 18) | function selectUnreadMessages(messages: Message[] | RecordArray... function markAsRead (line 35) | async function markAsRead(message: Message) { function messagesForDM (line 41) | function messagesForDM( function isMessageDMBetween (line 53) | function isMessageDMBetween(message: Message, me: string, chattingWithId... FILE: client/web/addons/networking/addon/models/relay.ts class Relay (line 4) | class Relay extends Model { type ModelRegistry (line 16) | interface ModelRegistry { FILE: client/web/addons/networking/addon/required-data.ts function ensureRelays (line 24) | async function ensureRelays(applicationInstance: ApplicationInstance) { FILE: client/web/addons/networking/addon/services/connection.ts type ConnectionHooks (line 13) | type ConnectionHooks = { class ConnectionService (line 17) | class ConnectionService extends Service { method connect (line 25) | connect() { method disconnect (line 29) | disconnect() { method getOpenGraph (line 33) | async getOpenGraph(url: string) { method send (line 37) | async send(payload: OutgoingPayload) { method _connect (line 46) | private async _connect() { method canConnect (line 58) | private canConnect(): Promise { type Registry (line 64) | interface Registry { FILE: client/web/addons/networking/addon/services/connection/ephemeral/ephemeral-connection.ts type Target (line 26) | type Target = { type GetEndpoints (line 33) | type GetEndpoints = () => EndpointInfo[] | Promise; type Options (line 35) | interface Options { class EphemeralConnection (line 41) | class EphemeralConnection { method build (line 80) | static async build( method constructor (line 107) | constructor(publicKeyAsHex?: string) { method setTarget (line 111) | setTarget(publicKeyAsHex?: string) { method setCrypto (line 120) | setCrypto(keys: KeyPair) { method disconnect (line 125) | disconnect() { method teardown (line 131) | teardown() { method onData (line 135) | onData(_data: EncryptedMessage) { method hydrateCrypto (line 141) | async hydrateCrypto(keys?: KeyPair) { method sendToHex (line 150) | sendToHex(message: EncryptableObject, hexPub: string) { method send (line 156) | async send(message: EncryptableObject, target?: Target) { method establishConnection (line 184) | async establishConnection() { function generateEphemeralKeys (line 200) | async function generateEphemeralKeys(workers: WorkersService, keys?: Key... function createConnection (line 214) | async function createConnection( FILE: client/web/addons/networking/addon/services/connection/manager.ts class ConnectionManager (line 18) | class ConnectionManager extends Service { method getOpenGraph (line 26) | async getOpenGraph(url: string): Promise { method acquire (line 53) | acquire() { method setup (line 61) | async setup() { method disconnect (line 87) | disconnect() { method willDestroy (line 93) | willDestroy() { method updateStatus (line 99) | private updateStatus(status: STATUS) { method createConnection (line 103) | private async createConnection(relay: Relay) { type Registry (line 124) | interface Registry { FILE: client/web/addons/networking/addon/services/connection/status.ts constant STATUS_LEVEL_MAP (line 18) | const STATUS_LEVEL_MAP = { class ConnectionStatusService (line 26) | class ConnectionStatusService extends Service { method isConnected (line 33) | get isConnected() { method isConnecting (line 43) | get isConnecting() { method updateStatus (line 47) | updateStatus(text: STATUS) { method showStatusChange (line 56) | async showStatusChange() { type Registry (line 70) | interface Registry { FILE: client/web/addons/networking/addon/services/contacts/online-checker.ts constant THIRTY_SECONDS (line 15) | const THIRTY_SECONDS = 30000; class ContactsOnlineChecker (line 17) | class ContactsOnlineChecker extends Service { method checkOnlineStatus (line 23) | async checkOnlineStatus() { type Registry (line 43) | interface Registry { FILE: client/web/addons/networking/addon/services/messages/-utils/builder.ts type Sender (line 3) | interface Sender { function buildSender (line 8) | function buildSender(sender: Sender) { function buildMessage (line 16) | function buildMessage(msg: Message) { function build (line 25) | function build(msg: Message, sender: Sender) { FILE: client/web/addons/networking/addon/services/messages/auto-responder.ts class MessageAutoResponder (line 16) | class MessageAutoResponder extends Service { method messageReceived (line 21) | async messageReceived(respondToMessage: Message) { method cameOnline (line 31) | async cameOnline(contact: Contact) { type Registry (line 47) | interface Registry { FILE: client/web/addons/networking/addon/services/messages/dispatcher.ts class MessageDispatcher (line 18) | class MessageDispatcher extends Service { method send (line 25) | async send(text: string, to: Contact | Channel) { method sendTo (line 38) | sendTo(message: Message, to: Contact | Channel) { method pingAll (line 55) | async pingAll() { method sendToAll (line 67) | async sendToAll(msg: Message) { method sendToChannel (line 75) | sendToChannel(msg: Message, channel: Channel) { method sendToUser (line 86) | async sendToUser(msg: Message, to: Contact) { type Registry (line 130) | interface Registry { FILE: client/web/addons/networking/addon/services/messages/factory.ts class MessageFactory (line 17) | class MessageFactory extends Service { method buildNewReceivedMessage (line 21) | buildNewReceivedMessage(json: P2PMessage, sender: Identity) { method buildChat (line 41) | buildChat(text: string, to: Identity | Channel) { method buildPing (line 91) | buildPing() { method buildDeliveryConfirmation (line 95) | buildDeliveryConfirmation(forMessage: Message): Message { method build (line 103) | private build(attributes = {}) { type Registry (line 115) | interface Registry { FILE: client/web/addons/networking/addon/services/messages/handler.ts class ReceivedMessageHandler (line 16) | class ReceivedMessageHandler extends Service { method handle (line 24) | async handle(raw: P2PMessage) { method handleDeliveryConfirmation (line 62) | private async handleDeliveryConfirmation(message: Message, raw: P2PMes... method handleInfoChannelInfo (line 76) | private async handleInfoChannelInfo(message: Message, _raw: P2PMessage) { method handleDisconnect (line 80) | private async handleDisconnect(message: Message) { method handleChat (line 86) | private async handleChat(message: Message, raw: P2PMessage) { method handleWhisperChat (line 105) | private async handleWhisperChat(message: Message) { method handleChannelChat (line 116) | private async handleChannelChat(message: Message, _raw: P2PMessage) { method decomposeMessage (line 122) | private async decomposeMessage(json: P2PMessage) { method trimMessages (line 159) | private async trimMessages(lastReceived: Message): Promise { method findOrCreateSender (line 180) | private async findOrCreateSender(senderData: { uid: string; name: stri... type Registry (line 192) | interface Registry { FILE: client/web/addons/networking/addon/services/messages/processor.ts class MessageProcessor (line 13) | class MessageProcessor extends Service { method receive (line 28) | receive(socketData: EncryptedMessage) { method _receive (line 34) | async _receive(socketData: EncryptedMessage) { type Registry (line 46) | interface Registry { FILE: client/web/addons/networking/addon/services/status-manager.ts class StatusManager (line 12) | class StatusManager extends Service { method markOffline (line 16) | async markOffline(uid: string) { method markOnline (line 26) | async markOnline(uid: string | Contact) { type Registry (line 40) | interface Registry { FILE: client/web/addons/networking/addon/types.ts type EndpointInfo (line 1) | interface EndpointInfo { type P2PMessage (line 6) | interface P2PMessage { type RelayStateJson (line 26) | interface RelayStateJson { type RelayState (line 33) | interface RelayState { type OpenGraphData (line 40) | interface OpenGraphData { type RelayOpenGraphResponse (line 64) | interface RelayOpenGraphResponse { FILE: client/web/addons/networking/addon/utils/connection/connection-pool.ts constant STATUS_CONNECTED (line 4) | const STATUS_CONNECTED = 'connected'; constant STATUS_CONNECTING (line 6) | const STATUS_CONNECTING = 'connecting'; constant STATUS_DEGRADED (line 8) | const STATUS_DEGRADED = 'degraded'; constant STATUS_DISCONNECTED (line 10) | const STATUS_DISCONNECTED = 'disconnected'; constant STATUS_UNKNOWN (line 13) | const STATUS_UNKNOWN = 'unknown'; type STATUS (line 15) | type STATUS = type PoolConfig (line 22) | interface PoolConfig { function pool (line 62) | async function pool( class ConnectionPool (line 72) | class ConnectionPool { method constructor (line 77) | constructor(config: PoolConfig) { method activeConnections (line 81) | get activeConnections() { method status (line 85) | get status(): STATUS { method minConnections (line 99) | get minConnections() { method minimumMet (line 103) | get minimumMet() { method acquire (line 108) | async acquire(): Promise { method hydrate (line 118) | async hydrate(): Promise { method drain (line 139) | drain() { method notifyOfStatusChange (line 143) | private notifyOfStatusChange(status?: STATUS) { method nextEndpoint (line 151) | private nextEndpoint(): EndpointInfo { FILE: client/web/addons/networking/addon/utils/connection/connection.ts constant NAME (line 7) | const NAME = Symbol('__PHOENIX_SOCKET__'); type Args (line 15) | interface Args { type OutgoingPayload (line 22) | interface OutgoingPayload { function phoenixSocket (line 27) | function phoenixSocket(): typeof Socket { class Connection (line 32) | class Connection { method constructor (line 50) | constructor({ relay, publicKey, onData, onInfo }: Args) { method connect (line 59) | async connect() { method setupSocket (line 66) | private async setupSocket() { method setupChannels (line 87) | private async setupChannels() { method setupStatsChannel (line 92) | private async setupStatsChannel() { method setupChatChannel (line 113) | private async setupChatChannel() { method send (line 146) | send(payload: OutgoingPayload) { method destroy (line 162) | destroy() { FILE: client/web/addons/networking/index.js method isDevelopingAddon (line 13) | isDevelopingAddon() { FILE: client/web/addons/networking/tests/dummy/app/app.ts class App (line 9) | class App extends Application { FILE: client/web/addons/networking/tests/dummy/app/router.ts class Router (line 5) | class Router extends EmberRouter { FILE: client/web/addons/networking/tests/unit/services/messages/auto-responder-test.ts method perform (line 47) | perform(/* _response: Message, _to: Identity */) { method perform (line 102) | perform(_response: Message, to: Identity) { method perform (line 152) | perform(response: Message, to: Identity) { FILE: client/web/addons/networking/tests/unit/services/messages/handler-test.ts method messageReceived (line 29) | messageReceived() {} method cameOnline (line 30) | cameOnline() {} FILE: client/web/addons/test-helpers/addon-test-support/-private/get-service.ts function getService (line 6) | function getService(name: K): Registry[K] { FILE: client/web/addons/test-helpers/addon-test-support/-private/get-store.ts function getStore (line 5) | function getStore(): StoreService { FILE: client/web/addons/test-helpers/addon-test-support/-private/refresh.ts function refresh (line 5) | async function refresh(mocking: () => T | Promise) { FILE: client/web/addons/test-helpers/addon-test-support/-private/setup-router.ts function setupRouter (line 5) | function setupRouter(hooks: NestedHooks) { FILE: client/web/addons/test-helpers/addon-test-support/-private/visit.ts function visit (line 3) | async function visit(url: string) { FILE: client/web/addons/test-helpers/addon-test-support/-private/wait-until.ts function waitUntil (line 4) | async function waitUntil(func: () => Promise, timeoutMs = 500) { FILE: client/web/addons/test-helpers/index.js method isDevelopingAddon (line 7) | isDevelopingAddon() { FILE: client/web/addons/test-helpers/tests/dummy/app/app.ts class App (line 7) | class App extends Application { FILE: client/web/addons/test-helpers/tests/dummy/app/router.js class Router (line 5) | class Router extends EmberRouter { FILE: client/web/addons/tracked-local-storage/addon/index.ts type WhyCantTSGetDecoratorsRight (line 4) | interface WhyCantTSGetDecoratorsRight { function inLocalStorage (line 16) | function inLocalStorage( FILE: client/web/addons/tracked-local-storage/index.js method isDevelopingAddon (line 7) | isDevelopingAddon() { FILE: client/web/addons/tracked-local-storage/tests/dummy/app/app.ts class App (line 7) | class App extends Application { FILE: client/web/addons/tracked-local-storage/tests/dummy/app/router.js class Router (line 5) | class Router extends EmberRouter { FILE: client/web/addons/tracked-local-storage/tests/unit/in-local-storage-test.ts class Foo (line 15) | class Foo { class Foo (line 31) | class Foo { class Foo (line 47) | class Foo { function storedValueOf (line 101) | function storedValueOf(value: unknown) { FILE: client/web/addons/ui/addon-test-support/key-events.ts function keyPressFor (line 5) | async function keyPressFor( function keyEvents (line 15) | function keyEvents(selector: string) { FILE: client/web/addons/ui/addon/components/collapsible/index.ts class Collapsible (line 7) | class Collapsible extends Component { method toggle (line 11) | toggle() { FILE: client/web/addons/ui/addon/components/dropdown/index.ts type Args (line 5) | interface Args { class Dropdown (line 11) | class Dropdown extends Component { method hasButtonText (line 14) | get hasButtonText() { method hasButtonIcon (line 18) | get hasButtonIcon() { method toggleMenu (line 23) | toggleMenu() { method closeMenu (line 28) | closeMenu() { FILE: client/web/addons/ui/addon/components/field.ts class Field (line 7) | class Field extends Component { FILE: client/web/addons/ui/addon/components/media-info-card.ts class MediaInfoCard (line 7) | class MediaInfoCard extends Component { method isOpen (line 10) | get isOpen() { method toggleShow (line 15) | toggleShow() { FILE: client/web/addons/ui/addon/components/switch.ts class Field (line 7) | class Field extends Component { FILE: client/web/addons/ui/addon/helpers/and.ts function and (line 3) | function and(params: unknown[] /*, hash*/) { FILE: client/web/addons/ui/addon/helpers/eq.ts function eq (line 3) | function eq(params: unknown[] /*, hash*/) { FILE: client/web/addons/ui/addon/helpers/not.ts function not (line 4) | function not(params: unknown[] /*, hash*/) { FILE: client/web/addons/ui/addon/helpers/prevent-default.ts type PositionalArgs (line 3) | type PositionalArgs = [(...args: unknown[]) => void]; function preventDefault (line 5) | function preventDefault([fn]: PositionalArgs /*, hash*/) { FILE: client/web/addons/ui/index.js method isDevelopingAddon (line 31) | isDevelopingAddon() { FILE: client/web/addons/ui/tests/dummy/app/app.ts class App (line 8) | class App extends Application { FILE: client/web/addons/ui/tests/dummy/app/router.js class Router (line 5) | class Router extends EmberRouter { FILE: client/web/config/testem.js constant CI_BROWSER (line 5) | const CI_BROWSER = process.env.CI_BROWSER || 'Chrome'; FILE: client/web/config/utils/ember-build.js function configureBabel (line 9) | function configureBabel(appConfig) { function applyEnvironmentVariables (line 27) | function applyEnvironmentVariables(appOptions) { FILE: client/web/config/utils/log.js function logWithAttention (line 4) | function logWithAttention(...thingsToLog) { FILE: client/web/emberclear/app/app.ts class App (line 9) | class App extends Application { FILE: client/web/emberclear/app/components/app/app-shell-remover.ts method constructor (line 4) | constructor(owner: any, args: any) { method removeAppLoader (line 10) | private removeAppLoader() { FILE: client/web/emberclear/app/components/app/off-canvas/index.ts type Args (line 12) | type Args = Record; class OffCanvasContainer (line 14) | class OffCanvasContainer extends Component { method mode (line 18) | get mode() { method isTabletOrSmaller (line 37) | get isTabletOrSmaller() { method updateWidth (line 42) | updateWidth() { method constructor (line 46) | constructor(owner: unknown, args: Args) { method willDestroy (line 54) | willDestroy() { FILE: client/web/emberclear/app/components/app/sidebar/actions/index.ts type IArgs (line 21) | interface IArgs { class ActionsSidebar (line 26) | class ActionsSidebar extends Component { method allActions (line 33) | get allActions(): Action[] { method newActions (line 41) | get newActions(): Action[] { method addAction (line 46) | async addAction() { function sortByOldest (line 51) | function sortByOldest(action1: Action, action2: Action) { FILE: client/web/emberclear/app/components/app/sidebar/actions/response-action/index.ts type IArgs (line 5) | interface IArgs { class ResponseAction (line 9) | class ResponseAction extends Component { method header (line 10) | get header() { FILE: client/web/emberclear/app/components/app/sidebar/actions/response-panel/index.ts type IArgs (line 6) | interface IArgs { class ResponsePanel (line 10) | class ResponsePanel extends Component { method yes (line 12) | yes() { method no (line 17) | no() { method dismiss (line 22) | dismiss() { FILE: client/web/emberclear/app/components/app/sidebar/chats/channel-form/index.ts type Args (line 12) | type Args = { class ChannelForm (line 16) | class ChannelForm extends Component { method onFormSubmit (line 23) | onFormSubmit() { method onInput (line 28) | onInput({ target = {} as HTMLInputElement }) { method onKeyPress (line 33) | onKeyPress(this: ChannelForm, event: KeyboardEvent) { method didSubmitChannelName (line 48) | async didSubmitChannelName() { method createChannel (line 56) | private async createChannel() { FILE: client/web/emberclear/app/components/app/sidebar/chats/channel/index.ts type Args (line 11) | type Args = { class SidebarChannel (line 15) | class SidebarChannel extends Component { method onClickChannel (line 20) | async onClickChannel(channel: Channel) { FILE: client/web/emberclear/app/components/app/sidebar/chats/contact/index.ts type IArgs (line 15) | interface IArgs { class SidebarContact (line 21) | class SidebarContact extends Component { method isActive (line 27) | get isActive() { method hasUnread (line 31) | get hasUnread() { method onClick (line 36) | async onClick() { method togglePin (line 47) | togglePin() { method canBePinned (line 55) | get canBePinned() { FILE: client/web/emberclear/app/components/app/sidebar/chats/data/index.ts type Args (line 15) | type Args = { class SidebarChatData (line 19) | class SidebarChatData extends Component { method allContacts (line 27) | get allContacts() { method allChannels (line 31) | get allChannels() { method channels (line 35) | get channels() { method contacts (line 46) | get contacts() { method chats (line 73) | get chats() { method displayedChats (line 77) | get displayedChats() { method displayedChannels (line 81) | get displayedChannels() { method idFromURL (line 85) | get idFromURL() { method hideOfflineContacts (line 91) | get hideOfflineContacts() { method offlineContacts (line 95) | get offlineContacts() { method numberOffline (line 103) | get numberOffline() { method showOfflineCounter (line 107) | get showOfflineCounter() { function sortByPinned (line 112) | function sortByPinned(contact1: Contact, contact2: Contact) { function searchByName (line 122) | function searchByName(text: string) { FILE: client/web/emberclear/app/components/app/sidebar/chats/index.ts constant REQUIRED_CHARACTERS_TO_SEARCH (line 8) | const REQUIRED_CHARACTERS_TO_SEARCH = 2; class ContactsSidebar (line 10) | class ContactsSidebar extends Component { method handleSearch (line 19) | handleSearch(e: Event) { method hasEnoughToSearch (line 33) | get hasEnoughToSearch() { method remainingCharacters (line 37) | get remainingCharacters() { FILE: client/web/emberclear/app/components/app/sidebar/index.ts type TabKeys (line 18) | type TabKeys = keyof typeof Tab; type TAB (line 19) | type TAB = typeof Tab[TabKeys]; class Sidebar (line 21) | class Sidebar extends Component { method isShown (line 29) | get isShown() { method hasUnreadAbove (line 33) | get hasUnreadAbove() { method hasUnreadBelow (line 37) | get hasUnreadBelow() { method name (line 41) | get name() { method isLoggedIn (line 45) | get isLoggedIn() { method scrollDownToNearestUnread (line 50) | scrollDownToNearestUnread() { method scrollUpToNearestUnread (line 59) | scrollUpToNearestUnread() { method switchToTab (line 68) | switchToTab(tab: TAB) { method isTabContacts (line 72) | get isTabContacts(): boolean { method isTabChannels (line 76) | get isTabChannels(): boolean { method isTabActions (line 80) | get isTabActions(): boolean { FILE: client/web/emberclear/app/components/app/top-nav/connection-status/index.ts class ConnectionStatus (line 8) | class ConnectionStatus extends Component { FILE: client/web/emberclear/app/components/app/top-nav/current-chat-name/index.ts method isChatVisible (line 10) | get isChatVisible() { FILE: client/web/emberclear/app/components/app/top-nav/index.ts class TopNav (line 11) | class TopNav extends Component { method isInverted (line 17) | get isInverted(): boolean { method allMessages (line 21) | get allMessages() { method hasUnread (line 25) | get hasUnread() { method unreadMessageCount (line 29) | get unreadMessageCount() { method unreadMessageText (line 37) | get unreadMessageText() { FILE: client/web/emberclear/app/components/app/top-nav/install/index.ts class Install (line 7) | class Install extends Component { method install (line 11) | install() { FILE: client/web/emberclear/app/components/app/top-nav/locale-select/-page.ts method optionFor (line 10) | optionFor(lang: string) { FILE: client/web/emberclear/app/components/app/top-nav/locale-select/index.ts class LocaleSwitcher (line 8) | class LocaleSwitcher extends Component { method currentLanguage (line 24) | get currentLanguage() { method didInsert (line 35) | didInsert(element: HTMLDivElement) { method toggleMenu (line 40) | toggleMenu() { method closeMenu (line 45) | closeMenu() { method chooseLanguage (line 50) | chooseLanguage(locale: string) { FILE: client/web/emberclear/app/components/app/top-nav/user-drop-menu/index.ts class UserDropMenu (line 6) | class UserDropMenu extends Component { FILE: client/web/emberclear/app/components/app/update-checker.ts class UpdateChecker (line 8) | class UpdateChecker extends Component { FILE: client/web/emberclear/app/components/copy-text-button.ts class CopyTextButton (line 11) | class CopyTextButton extends Component { method copySuccess (line 15) | async copySuccess() { FILE: client/web/emberclear/app/components/fetch-open-graph.ts type Args (line 14) | type Args = { class FetchOpenGraphComponent (line 18) | class FetchOpenGraphComponent extends Component { method constructor (line 22) | constructor(owner: any, args: Args) { method meta (line 31) | get meta() { method request (line 41) | async request() { function waitUntil (line 70) | function waitUntil(callback: () => boolean): Promise { FILE: client/web/emberclear/app/components/file-chooser/index.ts type IArgs (line 4) | interface IArgs { class FileChooser (line 8) | class FileChooser extends Component { method bindInput (line 12) | bindInput(element: HTMLInputElement) { method openFileChooser (line 17) | openFileChooser() { method didChooseFile (line 22) | didChooseFile(e: Event) { FILE: client/web/emberclear/app/components/mnemonic-display.ts type Args (line 10) | type Args = { class Mnemonic (line 14) | class Mnemonic extends Component { method updateMnemonic (line 22) | async updateMnemonic() { FILE: client/web/emberclear/app/components/modal-static/index.ts type IArgs (line 7) | interface IArgs { class ModalStatic (line 12) | class ModalStatic extends Component { method constructor (line 15) | constructor(owner: any, args: any) { method modal (line 25) | get modal() { method isActive (line 29) | get isActive() { method toggle (line 34) | toggle() { method close (line 43) | close() { method open (line 48) | open() { FILE: client/web/emberclear/app/components/pod/add-friend/add-contact/index.ts class AddModal (line 14) | class AddModal extends Component { method isLoggedIn (line 22) | get isLoggedIn() { method publicIdentity (line 26) | get publicIdentity() { method url (line 34) | get url() { method toggleScanning (line 39) | toggleScanning() { method handleScan (line 44) | async handleScan(identityJson: string) { method onScan (line 57) | onScan(json: string) { method tryCreate (line 62) | async tryCreate(identity: ImportableIdentity) { FILE: client/web/emberclear/app/components/pod/chat/chat-entry/embeds-menu/snippet/-page.ts method selectLanguage (line 14) | selectLanguage(language: string) { FILE: client/web/emberclear/app/components/pod/chat/chat-entry/embeds-menu/snippet/index.ts type Args (line 14) | interface Args { class SnippetModal (line 20) | class SnippetModal extends Component { method sendMessage (line 30) | sendMessage() { method chooseLanguage (line 50) | chooseLanguage({ target = {} as HTMLSelectElement }) { FILE: client/web/emberclear/app/components/pod/chat/chat-entry/index.ts constant EMOJI_REGEX (line 15) | const EMOJI_REGEX = /:[^:]+:/g; type IArgs (line 17) | interface IArgs { class ChatEntry (line 21) | class ChatEntry extends Component { method placeholder (line 31) | get placeholder() { method sendMessage (line 43) | async sendMessage() { method updateText (line 55) | updateText(text: string) { method onInput (line 62) | onInput(event: KeyboardEvent) { method onKeyPress (line 75) | onKeyPress(event: KeyboardEvent) { method dispatchMessage (line 91) | async dispatchMessage(text: string) { FILE: client/web/emberclear/app/components/pod/chat/chat-history/connection-status/index.ts class ConnectionStatus (line 6) | class ConnectionStatus extends Component { FILE: client/web/emberclear/app/components/pod/chat/chat-history/message/delivery-confirmations/index.ts constant TIMEOUT_MS (line 16) | const TIMEOUT_MS = 1000; type IArgs (line 18) | interface IArgs { class DeliveryConfirmation (line 22) | class DeliveryConfirmation extends Component { method wasReceived (line 29) | get wasReceived() { method wasSent (line 33) | get wasSent() { method hasDeliveryConfirmations (line 37) | get hasDeliveryConfirmations() { method waitForConfirmation (line 52) | async waitForConfirmation() { method resend (line 63) | async resend() { method deleteMessage (line 87) | async deleteMessage() { method resendAutomatically (line 94) | async resendAutomatically() { method doDelete (line 104) | doDelete() { method doResend (line 110) | doResend() { method doQueue (line 116) | doQueue() { method doWait (line 122) | doWait() { FILE: client/web/emberclear/app/components/pod/chat/chat-history/message/embedded-resource/metadata-preview/index.ts type Args (line 9) | type Args = { class MetadataPreview (line 13) | class MetadataPreview extends Component { method hasOgData (line 16) | get hasOgData() { method hasImage (line 20) | get hasImage() { method title (line 24) | get title() { method description (line 32) | get description() { FILE: client/web/emberclear/app/components/pod/chat/chat-history/message/header/index.ts type IArgs (line 5) | interface IArgs { class MessageHeader (line 9) | class MessageHeader extends Component { method sender (line 10) | get sender() { method hasSender (line 14) | get hasSender() { method senderName (line 18) | get senderName() { FILE: client/web/emberclear/app/components/pod/chat/chat-history/message/index.ts type IArgs (line 10) | interface IArgs { class MessageDisplay (line 14) | class MessageDisplay extends Component { method messageBody (line 17) | get messageBody() { method direction (line 23) | get direction() { method urls (line 31) | get urls() { FILE: client/web/emberclear/app/components/pod/chat/chat-history/new-messages/index.ts class ChatNewMessages (line 9) | class ChatNewMessages extends Component { method scrollToBottom (line 13) | scrollToBottom() { FILE: client/web/emberclear/app/components/pod/chat/chat-history/notification-prompt/index.ts class NotificationPrompt (line 7) | class NotificationPrompt extends Component { method isVisible (line 10) | get isVisible() { method enableNotifications (line 15) | enableNotifications() { method neverAskAgain (line 20) | neverAskAgain() { method askNextTime (line 25) | askNextTime() { FILE: client/web/emberclear/app/components/pod/chat/chat-history/unread-management/index.ts type IArgs (line 15) | interface IArgs { class UnreadManagement (line 20) | class UnreadManagement extends Component { method findMessagesContainer (line 24) | findMessagesContainer() { method unreadMessages (line 30) | get unreadMessages() { method numberOfUnread (line 37) | get numberOfUnread() { method hasUnreadMessages (line 41) | get hasUnreadMessages() { method shouldRender (line 45) | get shouldRender() { method firstUnreadMessage (line 51) | get firstUnreadMessage(): Message | undefined { method dateOfFirstUnreadMessage (line 55) | get dateOfFirstUnreadMessage(): Date | undefined { method markAllAsRead (line 64) | markAllAsRead() { method scrollToFirstUnread (line 73) | scrollToFirstUnread() { method hasUnreadOffScreen (line 81) | private hasUnreadOffScreen() { FILE: client/web/emberclear/app/components/pod/contacts/contact-table/index.ts class ContactsTable (line 8) | class ContactsTable extends Component { method contacts (line 11) | get contacts() { method remove (line 16) | async remove(contact: Contact) { FILE: client/web/emberclear/app/components/pod/contacts/header/index.ts method contacts (line 9) | get contacts() { FILE: client/web/emberclear/app/components/pod/index/begin-button.ts class BeginButton (line 8) | class BeginButton extends Component { FILE: client/web/emberclear/app/components/pod/index/compatibility/-utils/detection.ts function hasCamera (line 21) | function hasCamera() { function hasNotifications (line 25) | function hasNotifications() { function hasServiceWorker (line 29) | function hasServiceWorker() { function hasWebWorker (line 33) | function hasWebWorker() { function hasIndexedDb (line 37) | function hasIndexedDb() { FILE: client/web/emberclear/app/components/pod/index/compatibility/index.ts class Compatibility (line 16) | class Compatibility extends Component { method isNotCompatible (line 29) | get isNotCompatible() { method constructor (line 33) | constructor(owner: any, args: any) { method detectFeatures (line 40) | async detectFeatures() { method checkSuccess (line 54) | private checkSuccess(value: boolean, { required = false }: { required?... FILE: client/web/emberclear/app/components/pod/login/-machine.ts type Context (line 5) | type Context = Record; type Events (line 7) | type Events = type EmptySubState (line 18) | type EmptySubState = Record; type Schema (line 20) | interface Schema { FILE: client/web/emberclear/app/components/pod/login/login-form/index.ts class LoginForm (line 19) | class LoginForm extends Component { method contacts (line 31) | get contacts() { method isLoggedIn (line 35) | get isLoggedIn() { method login (line 40) | async login() { method uploadSettings (line 56) | async uploadSettings(data: string) { method updateTransferStatus (line 68) | updateTransferStatus(nextValue: boolean) { method onChooseFile (line 73) | onChooseFile(data: string) { method onSubmit (line 78) | onSubmit() { FILE: client/web/emberclear/app/components/pod/login/login-form/transfer-prompt/index.ts type Args (line 10) | type Args = { class TransferPrompt (line 14) | class TransferPrompt extends Component { method constructor (line 15) | constructor(owner: unknown, args: Args) { method verification (line 24) | get verification() { method fromUser (line 28) | get fromUser() { method qrData (line 32) | get qrData() { method taskMessage (line 36) | get taskMessage() { method isLoading (line 43) | get isLoading() { method result (line 47) | get result() { method cancel (line 52) | cancel() { method setupEphemeralConnection (line 64) | async setupEphemeralConnection() { function randomFourLetters (line 80) | function randomFourLetters() { FILE: client/web/emberclear/app/components/pod/q-r/-machine.ts function parseScannedData (line 8) | function parseScannedData(_: Context, event: ScanEvent) { FILE: client/web/emberclear/app/components/pod/q-r/-types.ts type Context (line 3) | interface Context { type LoginQRData (line 9) | type LoginQRData = [ type QRData (line 17) | type QRData = LoginQRData; type ErrorEvent (line 19) | type ErrorEvent = { type: 'error.execution'; data: string }; type ScanEvent (line 20) | type ScanEvent = { type: 'SCAN'; data: string }; type AllowEvent (line 21) | type AllowEvent = { type: 'ALLOW' }; type RetryEvent (line 22) | type RetryEvent = { type: 'RETRY' }; type DenyEvent (line 23) | type DenyEvent = { type: 'DENY' }; type HandleExistenceEvent (line 24) | type HandleExistenceEvent = { type: 'HANDLE_EXISTENCE' }; type ParsedEvent (line 26) | type ParsedEvent = { type: 'PARSED' }; type EmptySubState (line 28) | type EmptySubState = Record; type ScannerSubMachine (line 30) | interface ScannerSubMachine { type LoginSubMachine (line 42) | interface LoginSubMachine { type AddContactSubMachine (line 56) | interface AddContactSubMachine { type Schema (line 68) | interface Schema { type Events (line 85) | type Events = FILE: client/web/emberclear/app/components/pod/q-r/index.ts class QRScan (line 17) | class QRScan extends Component { method state (line 42) | get state() { method ctx (line 46) | get ctx() { method handleScan (line 51) | handleScan(data: string) { method transition (line 56) | transition(transitionName: string) { method setupConnection (line 60) | async setupConnection() { method transferData (line 73) | async transferData() { method addContact (line 81) | addContact() { FILE: client/web/emberclear/app/components/pod/settings/danger-zone/index.ts class DangerSettings (line 9) | class DangerSettings extends Component { method togglePrivateKey (line 19) | togglePrivateKey() { method deleteMessages (line 24) | async deleteMessages() { FILE: client/web/emberclear/app/components/pod/settings/interface/index.ts class InterfaceSettings (line 9) | class InterfaceSettings extends Component { method useDarkTheme (line 13) | useDarkTheme(e: any) { method toggleHideOffline (line 22) | toggleHideOffline() { FILE: client/web/emberclear/app/components/pod/settings/profile/index.ts class ProfileSettings (line 8) | class ProfileSettings extends Component { method name (line 13) | get name() { method save (line 18) | async save(e: Event) { method downloadSettings (line 27) | async downloadSettings() { FILE: client/web/emberclear/app/components/pod/settings/relays/new-relay-form/index.ts class NewRelayForm (line 14) | class NewRelayForm extends Component { method submit (line 22) | submit() { method save (line 28) | async save() { method toggleForm (line 45) | toggleForm() { method reset (line 50) | private reset() { FILE: client/web/emberclear/app/components/pod/settings/relays/relay-table/row/index.ts type Args (line 10) | interface Args { class RelayTableRow (line 14) | class RelayTableRow extends Component { method isActive (line 18) | get isActive() { method remove (line 31) | remove() { method makeDefault (line 40) | async makeDefault() { FILE: client/web/emberclear/app/components/pod/setup/-machine.ts type Context (line 5) | interface Context { type EmptySubState (line 10) | type EmptySubState = Record; type Schema (line 12) | interface Schema { type Event (line 28) | type Event = { type: 'NEXT' } | { type: 'PREV' } | EventObject; FILE: client/web/emberclear/app/components/pod/setup/completed/index.ts class SetupCompleted (line 6) | class SetupCompleted extends Component { FILE: client/web/emberclear/app/components/pod/setup/creating/index.ts type Args (line 12) | type Args = { class NameEntry (line 16) | class NameEntry extends Component { method nameIsBlank (line 21) | get nameIsBlank(): boolean { method createIdentity (line 26) | createIdentity(e: Event) { method create (line 34) | async create() { FILE: client/web/emberclear/app/components/pod/setup/index.ts class SetupWizard (line 13) | class SetupWizard extends Component { FILE: client/web/emberclear/app/components/q-r-scanner/index.ts type IArgs (line 8) | interface IArgs { class QRScanner (line 12) | class QRScanner extends Component { method isCameraActive (line 20) | get isCameraActive() { method toggleCamera (line 25) | async toggleCamera() { method handleData (line 30) | handleData(data: string) { method start (line 35) | async start() { method stop (line 50) | private stop() { method willDestroy (line 55) | willDestroy() { FILE: client/web/emberclear/app/components/search/index.ts type IArgs (line 14) | interface IArgs { constant MAX_RESULTS (line 19) | const MAX_RESULTS = 5; class SearchModal (line 21) | class SearchModal extends Component { method numContacts (line 29) | get numContacts() { method hasResults (line 33) | get hasResults() { method submitSearch (line 38) | submitSearch() { method onInput (line 44) | onInput(e: Event) { method search (line 50) | async search(searchTerm: string) { FILE: client/web/emberclear/app/components/status-icon/index.ts type IArgs (line 5) | interface IArgs { class StatusIcon (line 9) | class StatusIcon extends Component { method color (line 10) | get color() { FILE: client/web/emberclear/app/controllers/application.ts class ApplicationController (line 3) | class ApplicationController extends Controller { FILE: client/web/emberclear/app/controllers/chat/in-channel.ts method id (line 11) | get id() { method messages (line 15) | get messages() { FILE: client/web/emberclear/app/controllers/chat/privately-with.ts method uid (line 14) | get uid() { method messages (line 18) | get messages() { FILE: client/web/emberclear/app/controllers/invite.ts type IQueryParams (line 3) | interface IQueryParams { class InviteController (line 8) | class InviteController extends Controller { type Registry (line 13) | interface Registry { FILE: client/web/emberclear/app/controllers/logout.ts class LogoutController (line 8) | class LogoutController extends Controller { method logout (line 13) | async logout() { FILE: client/web/emberclear/app/helpers/first-8.ts function first8 (line 3) | function first8(params: any[] /*, hash*/) { FILE: client/web/emberclear/app/helpers/handle-sidebar-click.ts type Args (line 8) | type Args = [() => void]; class HandleSidebarClick (line 10) | class HandleSidebarClick extends Helper { method compute (line 13) | compute([handler]: Args) { FILE: client/web/emberclear/app/helpers/has-feature-flag.ts method compute (line 9) | compute([flag]: string[]) { FILE: client/web/emberclear/app/helpers/includes.ts type PositionalArgs (line 3) | type PositionalArgs = [T[], T]; function includes (line 5) | function includes([collection, element]: PositionalArgs /*, hash*/) { FILE: client/web/emberclear/app/helpers/is-channel.js function isChannel (line 5) | function isChannel([record] /*, hash*/) { FILE: client/web/emberclear/app/helpers/is-contact.js function isContact (line 5) | function isContact([record] /*, hash*/) { FILE: client/web/emberclear/app/helpers/is-current-user.js function isContact (line 5) | function isContact([record] /*, hash*/) { FILE: client/web/emberclear/app/helpers/is-present.ts function isPresent (line 4) | function isPresent(params: any[] /*, hash*/) { FILE: client/web/emberclear/app/helpers/or.ts function or (line 3) | function or(params: any[] /*, hash*/) { FILE: client/web/emberclear/app/helpers/queue.ts type Action (line 3) | type Action = (...args: any[]) => any; function queue (line 8) | function queue(actions: Action[] = []) { FILE: client/web/emberclear/app/helpers/sub.ts function sub (line 3) | function sub(params: any[] /*, hash*/) { FILE: client/web/emberclear/app/models/action.ts type ACTION_RESPONSE (line 5) | enum ACTION_RESPONSE { class Action (line 12) | class Action extends Model { type ModelRegistry (line 20) | interface ModelRegistry { FILE: client/web/emberclear/app/models/invitation-result.ts class InvitationResult (line 5) | class InvitationResult extends Model { type ModelRegistry (line 15) | interface ModelRegistry { FILE: client/web/emberclear/app/models/invitation.ts class Invitation (line 6) | class Invitation extends Model { type ModelRegistry (line 15) | interface ModelRegistry { FILE: client/web/emberclear/app/models/message-media.ts class MessageMedia (line 5) | class MessageMedia extends Model { type ModelRegistry (line 14) | interface ModelRegistry { FILE: client/web/emberclear/app/modifiers/format-code.ts type Args (line 10) | interface Args { class FormatCode (line 15) | class FormatCode extends Modifier { method didInstall (line 18) | didInstall() { method makeCodeBlocksFancy (line 29) | private makeCodeBlocksFancy() { method addLanguages (line 39) | private async addLanguages(text: string) { FILE: client/web/emberclear/app/modifiers/has-unread.ts type Args (line 13) | interface Args { class HasUnread (line 18) | class HasUnread extends Modifier { method contact (line 21) | get contact() { method didReceiveArguments (line 25) | didReceiveArguments() { method findUnread (line 31) | async findUnread() { FILE: client/web/emberclear/app/modifiers/maybe-nudge-to-bottom.ts type Args (line 9) | type Args = { class MaybeNudgeToBottom (line 14) | class MaybeNudgeToBottom extends Modifier { method messages (line 17) | get messages() { method appendedMessage (line 21) | get appendedMessage() { method lastMessage (line 25) | get lastMessage() { method didInstall (line 31) | didInstall() { FILE: client/web/emberclear/app/modifiers/message-scroll-listener.ts type Args (line 8) | interface Args { class MessageScrollListener (line 13) | class MessageScrollListener extends Modifier { method messages (line 19) | get messages() { method didInstall (line 23) | didInstall() { method didReceiveArguments (line 39) | didReceiveArguments() { method willRemove (line 52) | willRemove() { method determineIfLastIsVisible (line 58) | private determineIfLastIsVisible() { FILE: client/web/emberclear/app/modifiers/qr-image.ts type Args (line 7) | type Args = { class QRImageModifier (line 12) | class QRImageModifier extends Modifier { method didReceiveArguments (line 13) | didReceiveArguments() { method dataToQR (line 19) | async dataToQR() { function isImage (line 30) | function isImage(element?: Element | null): element is HTMLImageElement { FILE: client/web/emberclear/app/modifiers/read-watcher.ts type Args (line 12) | interface Args { class ReadWatcher (line 17) | class ReadWatcher extends Modifier { method didInstall (line 21) | didInstall() { method didUpdateArguments (line 31) | didUpdateArguments() { method willRemove (line 36) | willRemove() { method disconnect (line 43) | private disconnect() { method markRead (line 55) | private markRead() { method maybeSetupReadWatcher (line 64) | private maybeSetupReadWatcher() { method setupIntersectionObserver (line 74) | private setupIntersectionObserver() { method markReadTask (line 97) | async markReadTask() { FILE: client/web/emberclear/app/modifiers/unread-message-list-observer.ts class UnreadMessagesIntersectionObserver (line 16) | class UnreadMessagesIntersectionObserver extends Modifier { method didInstall (line 22) | didInstall() { method willRemove (line 28) | willRemove() { method respondToWindowFocus (line 32) | private respondToWindowFocus() { method markRead (line 52) | async markRead(message: Message) { FILE: client/web/emberclear/app/modifiers/unread-messages-intersection-observer.ts class UnreadMessagesIntersectionObserver (line 7) | class UnreadMessagesIntersectionObserver extends Modifier { method didInstall (line 10) | didInstall() { method willRemove (line 18) | willRemove() { FILE: client/web/emberclear/app/modifiers/update-document-title.ts class UpdateDocumentTitle (line 7) | class UpdateDocumentTitle extends Modifier { method constructor (line 14) | constructor(owner: any, args: any) { method tokens (line 20) | get tokens() { method willDestroy (line 24) | willDestroy() { method didReceiveArguments (line 28) | didReceiveArguments() { FILE: client/web/emberclear/app/router.js class Router (line 8) | class Router extends EmberRouter { method constructor (line 12) | constructor() { FILE: client/web/emberclear/app/routes/add-friend.ts class AddFriendRoute (line 7) | class AddFriendRoute extends Route { method beforeModel (line 11) | async beforeModel() { FILE: client/web/emberclear/app/routes/application.ts type Model (line 17) | interface Model { class ApplicationRoute (line 22) | class ApplicationRoute extends Route { method beforeModel (line 31) | async beforeModel() { method model (line 43) | async model(): Promise { method afterModel (line 55) | afterModel() { FILE: client/web/emberclear/app/routes/chat.ts type Model (line 10) | interface Model { class ChatRoute (line 14) | class ChatRoute extends Route { method beforeModel (line 20) | async beforeModel() { method model (line 32) | async model(): Promise { method afterModel (line 41) | afterModel() { FILE: client/web/emberclear/app/routes/chat/in-channel.ts type IModelParams (line 7) | interface IModelParams { class ChatInChannelRoute (line 11) | class ChatInChannelRoute extends Route { method model (line 17) | async model(params: IModelParams) { FILE: client/web/emberclear/app/routes/chat/privately-with.ts type IModelParams (line 10) | interface IModelParams { class ChatPrivatelyRoute (line 14) | class ChatPrivatelyRoute extends Route { method beforeModel (line 21) | async beforeModel(transition: any) { method model (line 34) | async model(params: IModelParams) { FILE: client/web/emberclear/app/routes/contacts.ts class ContactsRoute (line 6) | class ContactsRoute extends Route { method beforeModel (line 9) | async beforeModel() { FILE: client/web/emberclear/app/routes/invite.ts class InviteRoute (line 11) | class InviteRoute extends Route { method beforeModel (line 18) | async beforeModel(transition: any) { method acceptInvite (line 36) | async acceptInvite(transition: any) { method acceptContactInvite (line 52) | private async acceptContactInvite(name: string, publicKey: string) { method hasParams (line 72) | private hasParams({ name, publicKey }: IQueryParams) { FILE: client/web/emberclear/app/routes/login.ts class SettingsRoute (line 7) | class SettingsRoute extends Route { method beforeModel (line 11) | async beforeModel() { FILE: client/web/emberclear/app/routes/logout.ts class LogoutRoute (line 7) | class LogoutRoute extends Route { method beforeModel (line 12) | async beforeModel() { FILE: client/web/emberclear/app/routes/qr.js class QrRoute (line 3) | class QrRoute extends Route {} FILE: client/web/emberclear/app/routes/settings.ts class SettingsRoute (line 6) | class SettingsRoute extends Route { method beforeModel (line 9) | async beforeModel() { FILE: client/web/emberclear/app/routes/settings/relays.ts type Model (line 8) | interface Model { class SettingsRelayRoute (line 12) | class SettingsRelayRoute extends Route { method model (line 15) | async model(): Promise { FILE: client/web/emberclear/app/routes/setup.ts class SetupRoute (line 3) | class SetupRoute extends Route { method beforeModel (line 4) | async beforeModel() { FILE: client/web/emberclear/app/services/channels/-utils/channel-factory.ts function buildChannelInfo (line 9) | function buildChannelInfo(channel: Channel): StandardMessage['channelInf... function buildChannelContextChain (line 18) | function buildChannelContextChain( function buildChannelMember (line 36) | function buildChannelMember(member: Identity): ChannelMember { function buildVote (line 44) | function buildVote(vote: Vote): StandardVote { function buildVoteChain (line 51) | function buildVoteChain(voteChain: VoteChain): StandardVoteChain { FILE: client/web/emberclear/app/services/channels/-utils/vote-sorter.ts constant VOTE_ORDERING (line 7) | const VOTE_ORDERING = { type SortedVote (line 17) | type SortedVote = [ type SortedVoteHex (line 27) | type SortedVoteHex = [ function generateSortedVote (line 37) | function generateSortedVote(vote: VoteChain): Uint8Array { function toSortedPublicKeys (line 51) | function toSortedPublicKeys(identities: Identity[]): string[] { FILE: client/web/emberclear/app/services/channels/channel-verifier.ts class ChannelVerifier (line 12) | class ChannelVerifier extends Service { method isValidChain (line 15) | async isValidChain(channel: ChannelContextChain): Promise { method isValidSingleChain (line 43) | private isValidSingleChain(channel: ChannelContextChain): boolean { method isVoteCompletedPositive (line 51) | private isVoteCompletedPositive(vote: VoteChain, admin: Identity): boo... method getDiffs (line 63) | private getDiffs(previousMembers: Identity[], currentMembers: Identity... method isAddValid (line 74) | private isAddValid(channel: ChannelContextChain): boolean { method isPromoteValid (line 96) | private isPromoteValid(channel: ChannelContextChain): boolean { method isRemoveValid (line 114) | private isRemoveValid(channel: ChannelContextChain): boolean { type Registry (line 138) | interface Registry { FILE: client/web/emberclear/app/services/channels/vote-verifier.ts class VoteVerifier (line 15) | class VoteVerifier extends Service { method isValid (line 19) | async isValid(voteToVerify: VoteChain): Promise { method connectCrypto (line 54) | private connectCrypto() { method isTargetAndActionUnchanged (line 63) | private isTargetAndActionUnchanged(vote: VoteChain): boolean { method isKeyMatchingVoteDiff (line 76) | private isKeyMatchingVoteDiff(vote: VoteChain): boolean { method isProperMove (line 119) | private isProperMove( method getVoterDiffs (line 154) | private getVoterDiffs(previousVoters: Identity[], currentVoters: Ident... method isProperMoveBase (line 166) | private isProperMoveBase(vote: VoteChain): boolean { method isInOneButNotBoth (line 175) | private isInOneButNotBoth(arr1: Identity[], arr2: Identity[], key: Ide... type VoterDiffs (line 183) | type VoterDiffs = { type Registry (line 190) | interface Registry { FILE: client/web/emberclear/app/services/chat-scroller.ts constant SCROLL_DELAY (line 11) | const SCROLL_DELAY = 100; class ChatScroller (line 13) | class ChatScroller extends Service { method isViewingOlderMessages (line 16) | get isViewingOlderMessages() { method _isLastVisible (line 20) | _isLastVisible(message: Message) { method maybeNudge (line 30) | async maybeNudge(appendedMessage: HTMLElement) { method scrollToBottom (line 39) | async scrollToBottom() { method shouldScroll (line 47) | private shouldScroll(appendedMessage: HTMLElement) { function isLastVisible (line 71) | function isLastVisible(id: string) { function isBottomOfMessageVisible (line 91) | function isBottomOfMessageVisible(element: HTMLElement, container: HTMLE... type Registry (line 101) | interface Registry { FILE: client/web/emberclear/app/services/connection/ephemeral/login/receive-data.ts type UpdateStatus (line 17) | type UpdateStatus = (status: boolean) => void; class ReceiveDataConnection (line 19) | class ReceiveDataConnection extends EphemeralConnection { method wait (line 32) | wait(updateTransferStatus: UpdateStatus) { method _wait (line 41) | async _wait(updateTransferStatus: UpdateStatus) { method onData (line 81) | async onData(data: EncryptedMessage) { FILE: client/web/emberclear/app/services/connection/ephemeral/login/send-data.ts class SendDataConnection (line 19) | class SendDataConnection extends EphemeralConnection { method establishContact (line 27) | establishContact() { method transferToDevice (line 34) | transferToDevice() { method _establishContact (line 41) | async _establishContact() { method _transferToDevice (line 51) | async _transferToDevice() { method onData (line 65) | async onData(data: EncryptedMessage) { FILE: client/web/emberclear/app/services/current-chat.ts class CurrentChatService (line 11) | class CurrentChatService extends Service { method name (line 16) | get name() { method record (line 32) | get record() { method recordId (line 42) | get recordId() { method recordType (line 46) | get recordType() { method contactId (line 50) | get contactId() { method channelId (line 54) | get channelId() { function contactIdFrom (line 59) | function contactIdFrom(url: string) { function channelIdFrom (line 70) | function channelIdFrom(url: string) { type Registry (line 83) | interface Registry { FILE: client/web/emberclear/app/services/locale.ts constant DEFAULT_LOCALE (line 8) | const DEFAULT_LOCALE = 'en-us'; class LocaleService (line 10) | class LocaleService extends Service { method setLocale (line 15) | async setLocale(locale: string = DEFAULT_LOCALE) { FILE: client/web/emberclear/app/services/modals.ts type IModalArgs (line 4) | interface IModalArgs { class ModalState (line 9) | class ModalState { method constructor (line 13) | constructor(args: IModalArgs) { method open (line 18) | open() { method close (line 22) | close() { method toggle (line 26) | toggle() { class Modals (line 31) | class Modals extends Service { method toggle (line 34) | toggle(name: string) { method close (line 38) | close(name: string) { method open (line 42) | open(name: string) { method isVisible (line 46) | isVisible(name: string) { method find (line 50) | find(name: string) { FILE: client/web/emberclear/app/services/notifications.ts class Notifications (line 12) | class Notifications extends Service { method showInAppPrompt (line 24) | get showInAppPrompt() { method isOnRouteThatDoesNotShowNotifications (line 39) | get isOnRouteThatDoesNotShowNotifications() { method info (line 47) | info(msg: string, title = '', options = {}) { method display (line 51) | async display(msg: string, title: string, options = {}) { method isPermissionGranted (line 65) | get isPermissionGranted() { method isPermissionDenied (line 73) | get isPermissionDenied() { method askPermission (line 77) | askPermission() { method isBrowserCapableOfNotifications (line 90) | get isBrowserCapableOfNotifications() { method showNotification (line 94) | showNotification(msg: string, title = '', options = {}) { type Registry (line 110) | interface Registry { FILE: client/web/emberclear/app/services/prism-manager.ts class PrismManager (line 23) | class PrismManager extends Service { method addLanguage (line 29) | async addLanguage(language: string, element?: HTMLElement) { method ensureLanguage (line 38) | async ensureLanguage(language: string) { method addEssentials (line 61) | async addEssentials() { function addScripts (line 73) | async function addScripts() { function addStyles (line 94) | function addStyles() { function addStyle (line 101) | function addStyle(path: string) { FILE: client/web/emberclear/app/services/qr-manager.ts class QRManager (line 9) | class QRManager extends Service { method setupConnection (line 12) | async setupConnection(context: object, publicKeyAsHex: string) { type Registry (line 24) | interface Registry { FILE: client/web/emberclear/app/services/redirect-manager.ts class RedirectManager (line 8) | class RedirectManager extends Service { method hasPendingRedirect (line 13) | get hasPendingRedirect() { method persistURL (line 17) | persistURL(path: string) { method evaluate (line 21) | async evaluate() { type Registry (line 40) | interface Registry { FILE: client/web/emberclear/app/services/session.ts constant FLAG_KEY (line 13) | const FLAG_KEY = '_features'; class SessionService (line 15) | class SessionService extends Service { method logout (line 23) | async logout() { method hasFeatureFlag (line 35) | hasFeatureFlag(flag: string) { type Registry (line 46) | interface Registry { FILE: client/web/emberclear/app/services/settings.ts type IContactJson (line 15) | interface IContactJson { type IChannelJson (line 20) | interface IChannelJson { type ISettingsJson (line 25) | interface ISettingsJson { constant THEMES (line 34) | const THEMES = { class Settings (line 44) | class Settings extends Service { method selectTheme (line 52) | selectTheme(themeKey: string) { method applyTheme (line 57) | applyTheme() { method import (line 68) | async import(settings: string) { method importData (line 74) | async importData(json: ISettingsJson) { method buildData (line 102) | async buildData(): Promise { method buildSettings (line 108) | async buildSettings(): Promise { type Registry (line 144) | interface Registry { FILE: client/web/emberclear/app/services/sidebar.ts class Sidebar (line 9) | class Sidebar extends Service { method hasUnreadAbove (line 17) | get hasUnreadAbove() { method hasUnreadBelow (line 21) | get hasUnreadBelow() { method show (line 28) | show() { method hide (line 33) | hide() { method toggle (line 38) | toggle() { method clearUnreadBelow (line 42) | clearUnreadBelow() { method clearUnreadAbove (line 46) | clearUnreadAbove() { method ensureUnreadIntersectionObserverExists (line 50) | ensureUnreadIntersectionObserverExists() { method createUnreadObserver (line 56) | private createUnreadObserver(): IntersectionObserver { method handleIntersectionEvent (line 66) | private handleIntersectionEvent(entries: IntersectionObserverEntry[]) { FILE: client/web/emberclear/app/services/toast.ts class Toast (line 8) | class Toast extends Service { method info (line 9) | info(msg: string, title = '', options = {}) { method success (line 13) | success(msg: string, title = '', options = {}) { method warning (line 17) | warning(msg: string, title = '', options = {}) { method error (line 21) | error(msg: string, title = '', options = {}) { method createToast (line 25) | createToast(status: string, msg: string, title: string, options: any) { function createToast (line 32) | function createToast(status: string, message: string, options: any) { FILE: client/web/emberclear/app/services/window.ts class WindowService (line 4) | class WindowService extends Service { method constructor (line 14) | constructor(...args: any[]) { method location (line 20) | get location() { method willDestroy (line 24) | willDestroy() { method checkForDeferredInstall (line 28) | checkForDeferredInstall() { method canInstall (line 45) | get canInstall() { method promptInstall (line 49) | async promptInstall() { method evaluateInstallPrompt (line 57) | async evaluateInstallPrompt() { type Registry (line 72) | interface Registry { FILE: client/web/emberclear/app/utils/breakpoints.ts constant TABLET_WIDTH (line 1) | const TABLET_WIDTH = 832; FILE: client/web/emberclear/app/utils/dom/utils.ts function isElementWithin (line 4) | function isElementWithin(element: HTMLElement, container: HTMLElement): ... function isInElementWithinViewport (line 17) | function isInElementWithinViewport(element: Element, container: Element)... function keepInViewPort (line 37) | function keepInViewPort(element: HTMLElement, margin = 20 /* px */) { function convertAndSanitizeMarkdown (line 73) | function convertAndSanitizeMarkdown(markdown: string) { function scrollIntoViewOfParent (line 81) | function scrollIntoViewOfParent(parent: Element, child: Element) { FILE: client/web/emberclear/app/utils/ember-concurrency.ts function taskService (line 35) | function taskService, Args extends unknown[], ... FILE: client/web/emberclear/app/utils/errors.ts class ConnectionDoesNotExistError (line 1) | class ConnectionDoesNotExistError extends Error {} class MalformedQRCodeError (line 2) | class MalformedQRCodeError extends Error {} class UnrecognizedQRCodeError (line 3) | class UnrecognizedQRCodeError extends Error {} class NoCameraError (line 5) | class NoCameraError extends Error { method constructor (line 6) | constructor(...props: any[]) { class ConnectionError (line 13) | class ConnectionError extends Error {} class RelayNotSetError (line 14) | class RelayNotSetError extends Error { class CurrentUserNotFound (line 18) | class CurrentUserNotFound extends Error { FILE: client/web/emberclear/app/utils/identity-comparison.ts function identitiesIncludes (line 5) | function identitiesIncludes(identities: Identity[], identity: Identity):... function identityEquals (line 9) | function identityEquals(identity1: Identity, identity2: Identity): boole... FILE: client/web/emberclear/app/utils/normalized-meta.ts type Args (line 3) | type Args = { constant YT_PATTERN (line 9) | const YT_PATTERN = /^.*(youtu.be\/|\/v\/|u\/\w\/|embed\/|watch\?v=|&v=)(... constant IMAGE_PATTERN (line 10) | const IMAGE_PATTERN = /(jpg|png|gif|webp)/; constant VIDEO_PATTERN (line 11) | const VIDEO_PATTERN = /(\.(mp4)$)/; constant EXT_PATTERN (line 12) | const EXT_PATTERN = /\.[\w]{2,4}$/; type NormalizedMeta (line 14) | type NormalizedMeta = { function normalizeMeta (line 31) | function normalizeMeta(data: Args): NormalizedMeta { function embedUrlFrom (line 58) | function embedUrlFrom(url: string) { FILE: client/web/emberclear/app/utils/route-matchers.ts constant PRIVATE_CHAT_REGEX (line 1) | const PRIVATE_CHAT_REGEX = /chat\/privately-with\/(.+)/; constant CHANNEL_REGEX (line 2) | const CHANNEL_REGEX = /chat\/in-channel\/(.+)/; function idFrom (line 4) | function idFrom(regex: RegExp, url: string) { FILE: client/web/emberclear/app/utils/string/utils.ts function matchAll (line 1) | function matchAll(str: string, regex: RegExp) { function parseLanguages (line 12) | function parseLanguages(text: string): string[] { constant URL_PATTERN (line 23) | const URL_PATTERN = /(((http|https):\/\/)|(www)){1}[a-zA-Z0-9./?:@\-_=#]... function parseURLs (line 25) | function parseURLs(text: string): string[] { constant HOST_FROM_URL_REGEX (line 33) | const HOST_FROM_URL_REGEX = /\/\/(.+)\//; function hostFromURL (line 35) | function hostFromURL(url: string) { FILE: client/web/emberclear/app/utils/uint8array-equality.ts function equalsUint8Array (line 1) | function equalsUint8Array(arr1: Uint8Array, arr2: Uint8Array): boolean { FILE: client/web/emberclear/config/addons.js constant ENV (line 1) | const ENV = {}; FILE: client/web/emberclear/config/build/addons.js function serviceWorkerConfig (line 9) | function serviceWorkerConfig({ version }) { function addonConfig (line 39) | function addonConfig(env) { FILE: client/web/emberclear/config/build/static.js method buildStaticTrees (line 10) | buildStaticTrees({ isProduction, hash }) { FILE: client/web/emberclear/config/environment.js constant ADDON_ENV (line 3) | const ADDON_ENV = require('./addons'); FILE: client/web/emberclear/scripts/analyze-broccoli.js function analyzeBroccoli (line 12) | async function analyzeBroccoli() { FILE: client/web/emberclear/tests/-temp/qunit-xstate-test.ts type TestCallbackFn (line 7) | type TestCallbackFn = ( FILE: client/web/emberclear/tests/acceptance/chat/privately-with/-acceptance-test.ts method send (line 167) | send() { method send (line 260) | send() { FILE: client/web/emberclear/tests/acceptance/chat/privately-with/format-code-test.ts function submitCodeTo (line 28) | async function submitCodeTo(code: string, to: Contact, assert: Assert) { method send (line 46) | send() { FILE: client/web/emberclear/tests/acceptance/login/acceptance-test.ts method clickLogin (line 18) | clickLogin() { FILE: client/web/emberclear/tests/acceptance/logout-test.ts method load (line 24) | load() {} FILE: client/web/emberclear/tests/acceptance/qr/login/sender-test.ts type TestMachineContext (line 22) | interface TestMachineContext { method test (line 45) | async test({ assert, t }: TestMachineContext) { method test (line 62) | async test({ assert, t }: TestMachineContext) { method test (line 79) | async test({ assert, t }: TestMachineContext) { method test (line 93) | async test({ assert }: TestMachineContext) { method test (line 109) | async test({ assert, t }: TestMachineContext) { method test (line 116) | async test({ assert }: TestMachineContext) { method test (line 128) | async test({ assert, t }: TestMachineContext) { method test (line 142) | async test({ assert }: TestMachineContext) { method exec (line 158) | async exec({ owner }) { method exec (line 163) | async exec({ owner }) { method exec (line 168) | async exec({ owner }) { method exec (line 176) | async exec({ connection }) { method exec (line 181) | async exec({ connection }) { method exec (line 189) | async exec() { method exec (line 194) | async exec() { method exec (line 202) | async exec({ connection }) { method exec (line 207) | async exec({ connection }) { method transferToDevice (line 227) | transferToDevice() { class TestNavigator (line 232) | class TestNavigator extends Service { method mediaDevices (line 233) | get mediaDevices(): any { class TestQRManager (line 246) | class TestQRManager extends Service { method setupConnection (line 248) | async setupConnection() { FILE: client/web/emberclear/tests/acceptance/sidebar-test.ts function setupOfflineContactsTest (line 414) | async function setupOfflineContactsTest() { function onlyCurrentUserIsShownTest (line 420) | function onlyCurrentUserIsShownTest(assert: Assert) { FILE: client/web/emberclear/tests/acceptance/sidebar-visibility-test.ts method load (line 23) | load() {} FILE: client/web/emberclear/tests/helpers/factories/channel-factory.ts function createChannel (line 3) | async function createChannel(name: string, attributes = {}) { FILE: client/web/emberclear/tests/helpers/factories/message-factory.ts function createMessage (line 6) | async function createMessage(to: Identity, from: Identity, body: string,... FILE: client/web/emberclear/tests/helpers/index.ts function assertExternal (line 8) | function assertExternal(assert: any) { FILE: client/web/emberclear/tests/helpers/pages/app.ts method open (line 25) | async open() { FILE: client/web/emberclear/tests/helpers/pages/chat.ts method isScrollable (line 29) | isScrollable() { method scroll (line 35) | scroll(amountInPx: number) { method typeIn (line 49) | typeIn(substring: string) { function isScrollable (line 83) | function isScrollable(element: Element) { FILE: client/web/emberclear/tests/helpers/pages/toast.ts function findToast (line 10) | function findToast(): Element { method isVisible (line 19) | get isVisible() { method text (line 22) | get text() { method dismiss (line 26) | dismiss() { method waitForToast (line 29) | waitForToast() { FILE: client/web/emberclear/tests/helpers/setup-relay-connection-mocks.ts function stubConnection (line 3) | function stubConnection(overrides = {}) { function setupRelayConnectionMocks (line 24) | function setupRelayConnectionMocks(hooks: NestedHooks, overrides = {}) { FILE: client/web/emberclear/tests/helpers/setup-test.ts function setupEmberclearTest (line 10) | function setupEmberclearTest(hooks: NestedHooks) { function setupWindow (line 19) | function setupWindow(hooks: NestedHooks) { FILE: client/web/emberclear/tests/helpers/track-async-data.ts function trackAsyncDataRequests (line 3) | function trackAsyncDataRequests(hooks: NestedHooks) { FILE: client/web/emberclear/tests/integration/components/fetch-open-graph-test.js constant LINKS (line 11) | const LINKS = { method getOpenGraph (line 46) | getOpenGraph(...args) { FILE: client/web/emberclear/tests/unit/service/channels/channel-verifier-test.ts function signatureOf (line 580) | async function signatureOf(vote: VoteChain, user: User): Promise { type Owner (line 18) | type Owner = unknown; class Modifier (line 21) | class Modifier FILE: client/web/emberclear/types/emberclear/addon-services.d.ts type Toast (line 5) | interface Toast { type Intl (line 14) | interface Intl { type Registry (line 20) | interface Registry { FILE: client/web/emberclear/types/emberclear/ember-data.d.ts type ModelRegistry (line 5) | interface ModelRegistry { FILE: client/web/emberclear/types/emberclear/index.d.ts type EmptyRecord (line 15) | type EmptyRecord = Record; type Prism (line 17) | interface Prism { type PublicIdentity (line 21) | interface PublicIdentity { type Array (line 26) | interface Array extends Ember.ArrayPrototypeExtensions { type UserIdentifier (line 32) | interface UserIdentifier { type NamedUser (line 36) | interface NamedUser { type ChannelMember (line 41) | interface ChannelMember { type MemberResult (line 47) | interface MemberResult { type StandardVoteChain (line 53) | interface StandardVoteChain { type StandardVote (line 65) | interface StandardVote { type StandardChannelContextChain (line 70) | interface StandardChannelContextChain { type StandardMessage (line 78) | interface StandardMessage { type LoginSYN (line 104) | type LoginSYN = { type: 'SYN'; data: PublicIdentity }; type LoginACK (line 105) | type LoginACK = { type: 'ACK' }; type LoginHash (line 106) | type LoginHash = { type: 'HASH'; data: string }; type LoginData (line 107) | type LoginData = { type LoginMessage (line 120) | type LoginMessage = LoginData | LoginACK | LoginSYN | LoginHash; type RelayJson (line 122) | type RelayJson = StandardMessage | LoginMessage; FILE: client/web/emberclear/types/index.d.ts type Dict (line 1) | type Dict = { [key: string]: T }; type Window (line 6) | interface Window { type UserChoice (line 15) | interface UserChoice { type FakeBeforeInstallPromptEvent (line 19) | interface FakeBeforeInstallPromptEvent { FILE: client/web/emberclear/types/qr-scanner.d.ts class QrScanner (line 2) | class QrScanner { FILE: client/web/emberclear/types/toastify-js.d.ts type ToastifyToast (line 1) | interface ToastifyToast { type ToastifyOptions (line 7) | interface ToastifyOptions { FILE: client/web/emberclear/vendor/shims/libsodium-wrappers.js function vendorModule (line 2) | function vendorModule() { FILE: client/web/emberclear/vendor/shims/libsodium.js function vendorModule (line 2) | function vendorModule() { FILE: client/web/emberclear/vendor/shims/localforage.js function vendorModule (line 2) | function vendorModule() { FILE: client/web/emberclear/vendor/shims/qrcode.js function vendorModule (line 2) | function vendorModule() { FILE: client/web/libraries/questionably-typed/types/globals.ts type LIES (line 1) | type LIES = T; type TODO (line 3) | type TODO = T; FILE: client/web/libraries/questionably-typed/types/libraries/ember.ts type TF (line 9) | type TF = TemplateFactory; FILE: client/web/libraries/questionably-typed/types/libraries/promise-worker-bi.ts class PWBWorker (line 2) | class PWBWorker { class PWBHost (line 7) | class PWBHost { FILE: client/web/pinochle/app/app.ts class App (line 11) | class App extends Application { FILE: client/web/pinochle/app/components/back-of-cards.ts type Args (line 5) | type Args = { class BackOfCards (line 9) | class BackOfCards extends Component { method isOffline (line 10) | get isOffline() { FILE: client/web/pinochle/app/components/hand/-animation/card-chart.ts type Keyframes (line 6) | type Keyframes = { type Context (line 13) | type Context = { type AdjustEvent (line 26) | type AdjustEvent = { type ToggleEvent (line 31) | type ToggleEvent = { type Event (line 36) | type Event = type Schema (line 48) | interface Schema extends StateSchema { constant SMALL_SCREEN (line 57) | const SMALL_SCREEN = 1000; constant ANIMATION_DURATION (line 58) | const ANIMATION_DURATION = 250; constant DEFAULT_ANIMATION_OPTIONS (line 59) | const DEFAULT_ANIMATION_OPTIONS: KeyframeAnimationOptions = { function isBigScreen (line 65) | function isBigScreen() { function isSmallScreen (line 69) | function isSmallScreen() { function animate (line 73) | function animate(context: Context, next: Keyframe, options: KeyframeAnim... function toSelection (line 93) | function toSelection(ctx: Context) { function toFlat (line 99) | function toFlat(ctx: Context) { function toStack (line 105) | function toStack(ctx: Context) { function toFan (line 109) | function toFan(ctx: Context) { FILE: client/web/pinochle/app/components/hand/-animation/card.ts constant SELECTED_TRANSFORM (line 11) | const SELECTED_TRANSFORM = { class CardAnimation (line 17) | class CardAnimation { method constructor (line 18) | constructor(public element: HTMLElement, public frames: Keyframes) {} method select (line 43) | select() { method deselect (line 48) | deselect() { method toggle (line 53) | toggle(delay: number) { method adjust (line 58) | adjust(frames: Keyframes) { FILE: client/web/pinochle/app/components/hand/-animation/hand-chart.ts type Context (line 9) | type Context = { type SelectEvent (line 17) | type SelectEvent = { type: 'SELECT'; card: Card }; type Event (line 18) | type Event = type Schema (line 26) | interface Schema extends StateSchema { function canPlayCard (line 47) | function canPlayCard() { function isClosed (line 51) | function isClosed(context: Context) { function isOpen (line 55) | function isOpen(context: Context) { FILE: client/web/pinochle/app/components/hand/-animation/hand.ts function getAnimations (line 15) | function getAnimations(points: ReturnType, cards: Card... type ToggleOptions (line 44) | type ToggleOptions = { function adjustHand (line 49) | function adjustHand({ cards, animations }: ToggleOptions) { class HandAnimation (line 72) | class HandAnimation { method constructor (line 73) | constructor(_owner: unknown, public cards: Card[]) {} method toggle (line 96) | toggle() { method send (line 101) | send(...args: Parameters['send']>) { method context (line 108) | get context() { method _fanOpen (line 121) | _fanOpen({ cards, animations }: Context) { method _closeHand (line 137) | _closeHand(context: Context) { method _adjustHand (line 143) | _adjustHand({ cards, animations }: Context) { method _showSelected (line 148) | _showSelected({ animations, cards }: Context, { card }: SelectEvent) { method _returnSelected (line 164) | _returnSelected({ animations, selected }: Context) { FILE: client/web/pinochle/app/components/hand/-animation/key-frames.ts function stackedKeyframes (line 4) | function stackedKeyframes({ path, positions }: ReturnType) { function getPoints (line 64) | function getPoints(num: number) { FILE: client/web/pinochle/app/components/hand/index.ts type Args (line 12) | type Args = { class HandComponent (line 17) | class HandComponent extends Component { method hand (line 19) | get hand() { method meld (line 27) | get meld() { method toggle (line 32) | toggle() { method selectCard (line 37) | selectCard(card: Card) { method adjust (line 42) | adjust() { FILE: client/web/pinochle/app/components/host-game/-statechart.ts type Context (line 5) | type Context = { type SubmitNameEvent (line 11) | type SubmitNameEvent = { type: 'SUBMIT_NAME'; name: string }; type Event (line 12) | type Event = type Schema (line 18) | interface Schema extends StateSchema { FILE: client/web/pinochle/app/components/host-game/index.ts type Args (line 18) | type Args = { class HostGame (line 22) | class HostGame extends Component { method state (line 45) | get state() { method context (line 49) | get context() { method connectedPlayers (line 53) | get connectedPlayers() { method joinUrl (line 57) | get joinUrl() { method canStartGame (line 61) | get canStartGame() { method numRemaining (line 65) | get numRemaining() { method handleSubmit (line 70) | handleSubmit(name: string) { method start (line 75) | start() { method _startGame (line 84) | _startGame() { method _establishConnection (line 100) | async _establishConnection({ name }: Context) { FILE: client/web/pinochle/app/components/join-game/-statechart.ts type Context (line 7) | type Context = { type SubmitNameEvent (line 12) | type SubmitNameEvent = { type: 'SUBMIT_NAME'; name: string }; type Event (line 14) | type Event = type Schema (line 23) | interface Schema extends StateSchema { FILE: client/web/pinochle/app/components/join-game/index.ts type Args (line 23) | type Args = { class JoinGame (line 28) | class JoinGame extends Component { method state (line 54) | get state() { method isJoining (line 58) | get isJoining() { method isWaiting (line 62) | get isWaiting() { method isPending (line 66) | get isPending() { method handleSubmit (line 71) | handleSubmit(name: string) { method _establishConnection (line 79) | async _establishConnection() { method _joinGame (line 109) | _joinGame({ name }: Context) { method _startGame (line 114) | _startGame() { FILE: client/web/pinochle/app/components/lazy/index.ts type Args (line 5) | type Args = { class LazyComponent (line 10) | class LazyComponent extends Component { method constructor (line 13) | constructor(owner: unknown, args: Args) { method isShowing (line 21) | get isShowing() { method cond (line 25) | get cond() { method toggleContent (line 29) | toggleContent() { FILE: client/web/pinochle/app/components/name-entry/index.ts type Args (line 8) | type Args = { class NameEntry (line 12) | class NameEntry extends Component { method hasName (line 15) | get hasName() { method isNameMissing (line 19) | get isNameMissing() { method updateName (line 24) | updateName(e: KeyboardEvent) { method submitName (line 31) | submitName(e: Event) { FILE: client/web/pinochle/app/components/options.ts class Options (line 7) | class Options extends Component { method toggle (line 13) | toggle() { method poorMansEffect (line 17) | get poorMansEffect() { method willDestroy (line 29) | willDestroy() { FILE: client/web/pinochle/app/components/play/as-guest/-statechart.ts type Context (line 3) | type Context = { type Event (line 7) | type Event = { type: 'START_GAME_FAILED' } | { type: 'CONNECTED' }; type Schema (line 9) | interface Schema extends StateSchema { FILE: client/web/pinochle/app/components/play/as-guest/index.ts type Args (line 14) | type Args = { class PlayAsGuest (line 19) | class PlayAsGuest extends Component { method hand (line 21) | get hand() { method hasHand (line 25) | get hasHand() { method chooseCard (line 43) | chooseCard(card: Card) { method getHand (line 51) | getHand() { FILE: client/web/pinochle/app/components/player-order/index.ts type Args (line 8) | type Args = { class PlayerOrder (line 12) | class PlayerOrder extends Component { method gameInfo (line 16) | get gameInfo() { method currentPlayer (line 24) | get currentPlayer() { method players (line 28) | get players() { FILE: client/web/pinochle/app/components/share-link.ts type Args (line 5) | type Args = { class ShareLink (line 9) | class ShareLink extends Component { method copy (line 11) | copy() { method highlight (line 18) | highlight(event: MouseEvent) { FILE: client/web/pinochle/app/game/card.ts type Suit (line 3) | type Suit = 'hearts' | 'spades' | 'diamonds' | 'clubs'; type Value (line 4) | type Value = 9 | 'jack' | 'queen' | 'king' | 10 | 'ace'; constant VALUES (line 6) | const VALUES: Value[] = [9, 'jack', 'queen', 'king', 10, 'ace']; constant SUITS (line 7) | const SUITS: Suit[] = ['hearts', 'spades', 'diamonds', 'clubs']; class Card (line 13) | class Card { method constructor (line 15) | constructor(public suit: Suit, public value: Value) {} method toString (line 17) | toString() { constant VALUE_TO_NUMBER (line 22) | const VALUE_TO_NUMBER = { function isEqualOrHigherValue (line 31) | function isEqualOrHigherValue(a: Card, b: Card) { FILE: client/web/pinochle/app/game/deck.ts function newDeck (line 11) | function newDeck() { function splitDeck (line 31) | function splitDeck(deck: Card[], splits: number) { function sortHand (line 67) | function sortHand(hand: Card[]) { function hasSuit (line 91) | function hasSuit(hand: Card[], suit: Suit) { function shuffle (line 98) | function shuffle(array: T[]) { FILE: client/web/pinochle/app/game/meld.ts type MeldResultMatch (line 5) | interface MeldResultMatch { type MeldResult (line 10) | type MeldResult = { type SuitInfo (line 19) | type SuitInfo = { type ValueInfo (line 24) | type ValueInfo = { class Meld (line 29) | class Meld { method constructor (line 33) | constructor(public cards: Card[], public trump?: Suit) { method score (line 38) | get score() { method matches (line 49) | get matches(): MeldResult { type CalculatorArgs (line 81) | type CalculatorArgs = [Card[], Map, Map, data: SerializedR... method constructor (line 43) | constructor(protected playersById: Record, state?:... method context (line 77) | get context() { method currentPlayer (line 81) | get currentPlayer() { method info (line 85) | get info() { method stateForPlayer (line 97) | stateForPlayer(id: string) { method bid (line 115) | bid({ bid }: Pick) { method toJSON (line 126) | toJSON() { FILE: client/web/pinochle/app/game/networking/host/game-state.ts type Bid (line 11) | type Bid = { type Pass (line 15) | type Pass = { type: 'PASS' }; type DeclareTrump (line 16) | type DeclareTrump = { type: 'DECLARE_TRUMP'; trump: Suit }; type StartEvent (line 18) | type StartEvent = { type: 'START' } & Context; type Event (line 19) | type Event = type Context (line 37) | interface Context { type Schema (line 52) | interface Schema extends StateSchema { function didPass (line 72) | function didPass(ctx: Context) { function _nextPlayer (line 76) | function _nextPlayer(ctx: Pick) { function nextPlayer (line 86) | function nextPlayer() { function nextBiddingPlayer (line 92) | function nextBiddingPlayer({ currentPlayer, playerOrder, bids }: Context) { function setTrump (line 117) | function setTrump() { function playersWithBids (line 121) | function playersWithBids(ctx: Context) { function isBiddingOver (line 133) | function isBiddingOver(ctx: Context) { function setBidWinnerInfo (line 141) | function setBidWinnerInfo() { function hasEveryoneSubmittedMeld (line 160) | function hasEveryoneSubmittedMeld() { function hasBlind (line 166) | function hasBlind(ctx: Context) { function deal (line 170) | function deal(context: Context) { function nextPlayerOrder (line 186) | function nextPlayerOrder(context: Context) { FILE: client/web/pinochle/app/game/networking/host/types.ts type PlayerInfo (line 5) | type PlayerInfo = { type SerializedHost (line 14) | type SerializedHost = { FILE: client/web/pinochle/app/game/networking/host/utils.ts type HasHand (line 4) | type HasHand = { hand: Card[] }; function serializePlayer (line 6) | function serializePlayer(player: PlayerInfo) { function handById (line 15) | function handById(playersById: Record) { function unwrapObject (line 23) | function unwrapObject(obj: Record) { FILE: client/web/pinochle/app/game/networking/types.ts type GuestPlayer (line 4) | type GuestPlayer = { type SerializablePlayer (line 12) | type SerializablePlayer = { type GameInfo (line 18) | type GameInfo = { type GameResult (line 26) | type GameResult = { type GameState (line 40) | type GameState = { type JoinMessage (line 50) | type JoinMessage = { type: 'JOIN'; name: string }; type Syn (line 51) | type Syn = { type: 'SYN' }; type Ack (line 52) | type Ack = { type: 'ACK' }; type GameFull (line 53) | type GameFull = { type: 'GAME_FULL' }; type ConnectivityCheck (line 54) | type ConnectivityCheck = { type: 'CONNECTIVITY_CHECK' }; type Present (line 55) | type Present = { type: 'PRESENT' }; type NotRecognized (line 56) | type NotRecognized = { type: 'NOT_RECOGNIZED' }; type RequestState (line 57) | type RequestState = { type: 'REQUEST_STATE' }; type Start (line 59) | type Start = { type: 'START' } & GameState; type UpdateForGuest (line 60) | type UpdateForGuest = { type: 'GUEST_UPDATE' } & GameState; type WelcomeMessage (line 61) | type WelcomeMessage = { type: 'WELCOME'; players: SerializablePlayer[] }; type PlayCard (line 63) | type PlayCard = { type: 'PLAY_CARD'; id: string }; type Bid (line 64) | type Bid = { type: 'BID'; bid: number }; type DeclareTrump (line 65) | type DeclareTrump = { type: 'DECLARE_TRUMP'; trump: Suit }; type DeclareMeld (line 66) | type DeclareMeld = { type: 'DECLARE_MELD'; meld: unknown }; type FromHostMessage (line 68) | type FromHostMessage = type FromGuestMessage (line 77) | type FromGuestMessage = type GameMessage (line 87) | type GameMessage = FromHostMessage | FromGuestMessage; FILE: client/web/pinochle/app/game/trick.ts constant POINTS (line 3) | const POINTS = ['king', 'ace', 10]; class Trick (line 5) | class Trick { method from (line 8) | static from(stack: Card[]) { method constructor (line 18) | constructor(public maxSize: number) {} method points (line 20) | get points() { method suit (line 24) | get suit() { method last (line 28) | get last() { method isEmpty (line 32) | get isEmpty() { method add (line 36) | add(card: Card) { FILE: client/web/pinochle/app/game/utils/move-validation.ts function isValidMove (line 15) | function isValidMove(trick: Trick, card: Card, trump: Suit) { function availableMoves (line 19) | function availableMoves(trick: Trick, hand: Card[], trump: Suit) { FILE: client/web/pinochle/app/helpers/and.ts function and (line 1) | function and(a: T, b: T) { FILE: client/web/pinochle/app/helpers/contains.ts type PositionalArgs (line 3) | type PositionalArgs = [unknown[], unknown]; function contains (line 5) | function contains([list, element]: PositionalArgs /*, hash*/) { FILE: client/web/pinochle/app/helpers/english-list.ts function englishList (line 1) | function englishList(list: string[]) { FILE: client/web/pinochle/app/helpers/eq.ts type PositionalParams (line 3) | type PositionalParams = unknown[]; function eq (line 5) | function eq([a, b]: PositionalParams /*, hash*/) { FILE: client/web/pinochle/app/helpers/is-number.ts type PositionalParams (line 3) | type PositionalParams = [unknown]; function isNumber (line 5) | function isNumber([maybe]: PositionalParams /*, hash*/) { FILE: client/web/pinochle/app/helpers/not.ts function not (line 1) | function not([element]: T[]) { FILE: client/web/pinochle/app/helpers/or.ts function or (line 1) | function or(...elements: T[]) { FILE: client/web/pinochle/app/helpers/suit-to-symbol.ts constant NAME_MAP (line 3) | const NAME_MAP = { function suitToSymbol (line 10) | function suitToSymbol(name: Suit) { FILE: client/web/pinochle/app/modifiers/fit-text.ts type Args (line 7) | type Args = { class FitTextModifier (line 12) | class FitTextModifier extends Modifier { method didInstall (line 13) | didInstall() { method willRemove (line 18) | willRemove() { method resizeText (line 23) | resizeText() { method _resizeText (line 28) | _resizeText() { FILE: client/web/pinochle/app/modifiers/resize.ts type Args (line 6) | type Args = { class ResizeModifier (line 11) | class ResizeModifier extends Modifier { method didInstall (line 12) | didInstall() { method willRemove (line 16) | willRemove() { method callback (line 21) | callback() { method _callback (line 26) | _callback() { FILE: client/web/pinochle/app/modifiers/stack.ts type Args (line 8) | type Args = { class StackModifier (line 17) | class StackModifier extends Modifier { method didInstall (line 18) | didInstall() { method stack (line 23) | stack() { FILE: client/web/pinochle/app/router.ts class Router (line 5) | class Router extends EmberRouter { FILE: client/web/pinochle/app/routes/game.ts type Transition (line 8) | type Transition = ReturnType; type Params (line 10) | interface Params { class GameRoute (line 23) | class GameRoute extends Route { method beforeModel (line 28) | async beforeModel(transition: Transition) { method model (line 45) | async model(params: Params) { method afterModel (line 58) | async afterModel() { FILE: client/web/pinochle/app/routes/join.ts type Transition (line 8) | type Transition = ReturnType; type Params (line 10) | interface Params { class JoinRoute (line 14) | class JoinRoute extends Route { method beforeModel (line 18) | async beforeModel(transition: Transition) { method model (line 35) | async model(params: Params) { FILE: client/web/pinochle/app/services/game-manager.ts class GameManager (line 17) | class GameManager extends Service { method createHost (line 24) | async createHost(keys?: KeyPair) { method connectToHost (line 34) | async connectToHost(publicKeyAsHex: string, keys?: KeyPair) { method storeAll (line 44) | storeAll() { method loadHosts (line 63) | async loadHosts() { method loadGuests (line 76) | async loadGuests() { method loadHost (line 89) | async loadHost(id: string) { method _loadHosts (line 115) | async _loadHosts() { method _loadGuests (line 123) | async _loadGuests() { type Registry (line 152) | interface Registry { function loadWithDefault (line 157) | function loadWithDefault(key: string, defaultValue?: T) { function store (line 167) | function store(key: string, value: T) { FILE: client/web/pinochle/app/services/guest/dispatcher.ts class GuestDispatcher (line 3) | class GuestDispatcher extends Service {} type Registry (line 7) | interface Registry { FILE: client/web/pinochle/app/services/guest/handler.ts class GuestMessageHandler (line 10) | class GuestMessageHandler extends Service { type Registry (line 50) | interface Registry { FILE: client/web/pinochle/app/services/player-info.ts class PlayerInfo (line 5) | class PlayerInfo extends Service { type Registry (line 11) | interface Registry { FILE: client/web/pinochle/app/utils/array.ts function prev (line 1) | function prev(arr: T[], value: T) { function next (line 10) | function next(arr: T[], value: T) { FILE: client/web/pinochle/app/utils/container.ts function isDestroyed (line 8) | function isDestroyed(context: object) { FILE: client/web/pinochle/app/utils/dom.ts function isHTMLElement (line 7) | function isHTMLElement( FILE: client/web/pinochle/app/utils/trig.ts type XYPoint (line 1) | type XYPoint = { x: number; y: number }; function degreesToRadians (line 3) | function degreesToRadians(degrees: number) { function radiansToDegrees (line 7) | function radiansToDegrees(radians: number) { function circleFromThreePoints (line 16) | function circleFromThreePoints(p1: XYPoint, p2: XYPoint, p3: XYPoint) { FILE: client/web/pinochle/app/utils/use-machine.ts constant INTERPRETER (line 22) | const INTERPRETER = Symbol('interpreter'); constant CONFIG (line 23) | const CONFIG = Symbol('config'); constant MACHINE (line 24) | const MACHINE = Symbol('machine'); constant ERROR_CANT_RECONFIGURE (line 26) | const ERROR_CANT_RECONFIGURE = `Cannot re-invoke withContext after the i... constant ERROR_CHART_MISSING (line 27) | const ERROR_CHART_MISSING = `A statechart was not passed`; type Args (line 29) | type Args>) { method onTransition (line 136) | protected onTransition(fn?: StateListener) { method _setupMachine (line 162) | private _setupMachine() { method setup (line 198) | protected setup() { method teardown (line 207) | protected teardown() { FILE: client/web/pinochle/tests/-pages/join.ts class NameEntryPage (line 7) | class NameEntryPage extends PageObject { method typeName (line 8) | typeName(name: string) { method submit (line 14) | submit() { class JoinPage (line 28) | class JoinPage extends PageObject { method waitFor (line 37) | async waitFor(url: string) { method joinGame (line 43) | async joinGame(gameId: string, name?: string) { method submit (line 57) | async submit(name: string) { method rejoin (line 62) | async rejoin(gameId: string) { method typeName (line 78) | typeName(name: string) { method submitName (line 81) | submitName() { FILE: client/web/pinochle/tests/helpers/index.ts function setupGameHost (line 11) | function setupGameHost(hooks: NestedHooks, onDone: (host: GameHost) => v... function createHost (line 30) | async function createHost() { function setupPlayer (line 43) | function setupPlayer(hooks: NestedHooks, host: GameHost, name: string) { function addPlayerToHost (line 55) | async function addPlayerToHost(host: GameHost, name?: string) { function clearGuests (line 66) | function clearGuests() { function clearHosts (line 76) | function clearHosts() { function stopConnectivityChecking (line 86) | function stopConnectivityChecking(hexId: string) { function setupPlayerTest (line 97) | async function setupPlayerTest(hooks: NestedHooks) { FILE: client/web/pinochle/tests/unit/game/state-test.ts function debugAssert (line 13) | function debugAssert(str: string, cond: unknown): asserts cond { FILE: client/web/pinochle/types/libraries.d.ts class TrackedMap (line 3) | class TrackedMap extends Map {} class TrackedWeakMap (line 4) | class TrackedWeakMap extends WeakMap {} class TrackedSet (line 5) | class TrackedSet extends Set {} class TrackedWeakSet (line 6) | class TrackedWeakSet extends WeakSet {} type LazyTrackedArgs (line 11) | type LazyTrackedArgs = { class Resource (line 18) | class Resource { FILE: client/web/smoke-tests/helpers/start-server.js function startServer (line 6) | async function startServer() { FILE: client/web/smoke-tests/page-objects/add-friend.js class AddFriend (line 5) | class AddFriend extends BasePageObject { method constructor (line 6) | constructor(host, ...args) { method addFriendButton (line 12) | get addFriendButton() { method addFriend (line 25) | async addFriend(user) { FILE: client/web/smoke-tests/page-objects/chat.js class Chat (line 5) | class Chat extends BasePageObject { method input (line 6) | get input() { method sendButton (line 10) | get sendButton() { method messages (line 15) | get messages() { method sendMessage (line 24) | async sendMessage(message) { method waitForResponse (line 33) | async waitForResponse(user) { FILE: client/web/smoke-tests/page-objects/login.js class Login (line 5) | class Login extends BasePageObject { method beginButton (line 6) | get beginButton() { method logInInsteadButton (line 10) | get logInInsteadButton() { method name (line 22) | get name() { method mnemonic (line 26) | get mnemonic() { method logInButton (line 33) | get logInButton() { method logIn (line 37) | async logIn(user) {