export const APP_VERSION = '1.0.0'; export const DEFAULT_AVATAR = 'https://void.cat/d/5VKmKyuHyxrNMf9bWSVPih'; export const OPENGRAPH = { REGEX_VALID_URL: new RegExp( '^' + // protocol identifier '(?:(?:https?|ftp)://)' + // user:pass authentication '(?:\\S+(?::\\S*)?@)?' + '(?:' + // IP address exclusion // private & local networks '(?!(?:10|127)(?:\\.\\d{1,3}){3})' + '(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})' + '(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})' + // IP address dotted notation octets // excludes loopback network 0.0.0.0 // excludes reserved space >= 224.0.0.0 // excludes network & broacast addresses // (first & last IP address of each class) '(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])' + '(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}' + '(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))' + '|' + // host name '(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)' + // domain name '(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*' + // TLD identifier '(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))' + // TLD may end with dot '\\.?' + ')' + // port number '(?::\\d{2,5})?' + // resource path '(?:[/?#]\\S*)?' + '$', 'i' ), REGEX_LOOPBACK: new RegExp( '^' + '(?:(?:10|127)(?:\\.\\d{1,3}){3})' + '|' + '(?:(?:169\\.254|192\\.168|192\\.0)(?:\\.\\d{1,3}){2})' + '|' + '(?:172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})' + '$', 'i' ), REGEX_CONTENT_TYPE_IMAGE: new RegExp('image/.*', 'i'), REGEX_CONTENT_TYPE_AUDIO: new RegExp('audio/.*', 'i'), REGEX_CONTENT_TYPE_VIDEO: new RegExp('video/.*', 'i'), REGEX_CONTENT_TYPE_TEXT: new RegExp('text/.*', 'i'), REGEX_CONTENT_TYPE_APPLICATION: new RegExp('application/.*', 'i'), }; export const FULL_RELAYS = [ 'wss://relayable.org', 'wss://relay.damus.io', 'wss://relay.nostrgraph.net', 'wss://relay.nostr.band/all', 'wss://nostr.mutinywallet.com', ];