Utility functions to deal with different types of sources for Sugarcube.
@sugarcube/source-types
provides utility functions for the Sugarcube Tools distribution. The utility functions can parse, normalize and verify terms in respect to the type of the source. This packages is used across various parts of the Sugarcube distribution, such as Ncube, the Sugarcube Discovery Extension and Sugarcube itself.
npm install --save @sugarcube/source-types
import {sourceType} from "@sugarcube/source-types";
sourceType("I'm gibberish"); // undefined
sourceType("https://youtube.com/watch?v=wer23edsa"); // youtube_video
Map source type for a term
Source type predicates
isTelegramChannel
: Determine if a term is a valid Telegram channel.isTwitterTweet
: Determine if a term is a valid Twitter tweet.isTwitterFeed
: Determine if a term is a valid Twitter feed.isYoutubeVideo
: Determine if a term is a valid Youtube video.isYoutubeChannel
: Determine if a term is a valid Youtube channel.isHttpUrl
: Determine if a term is a valid HTTP url.
Source type parsers
parseTelegramChannel
: Extract a Telegram channel from a term.parseTweetId
: Extract a tweet id from a term.parseTwitterUser
: Extract a Twitter user from a term.parseYoutubeVideo
: Extract a Youtube video id from a term.parseYoutubeChannel
: Extract a Youtube channel id from a term.parseHttpUrl
: Parse a term into a valid HTTP url.
Normalize terms
normalizeTelegramChannelUrl
: Turn a term into a normalized Telegram Channel URL.normalizeTwitterTweetUrl
: Turn a term into a normalized Twitter tweet URL.normalizeTwitterUserUrl
: Turn a term into a normalized Twitter feed URL.normalizeYoutubeVideoUrl
: Turn a term into a normalized Youtube video URL.normalizeYoutubeChannelUrl
: Turn a term into a normalized Youtube channel URL.normalizeHttpUrl
: Turn a term into a normalized HTTP url.
A string literal type containig valid source types.
telegram_channel
twitter_tweet
twitter_channel
youtube_video
youtube_channel
http_url
Detect the type of a source.
sourceType :: (term?: string) -> SourceType | undefined
Check if a term is a valid Telegram channel.
isTelegramChannel :: (term?: string) -> boolean
Check if a term is a valid Twitter tweet.
isTwitterTweet :: (term?: string) -> boolean
Check if a term is a valid Twitter channel.
isTwitterFeed :: (term?: string) -> boolean
Check if a term is a valid Youtube video.
isYoutubeVideo :: (term?: string) -> boolean
Check if a term is a valid Youtube channel.
isYoutubeChannel :: (term?: string) -> boolean
Check if a term is a valid HTTP url.
isHttpUrl :: (term?: string) -> boolean
Extract a Telegram channel from a term.
parseTelegramChannel :: (term?: string) -> string | undefined
parseTelegramChannel("https://t.me/s/soscubamedia"); # soscubamedia
parseTelegramChannel("https://t.me/soscubamedia"); # soscubamedia
Channel names in the form of @soscubamedia
are not valid since they are ambiguous with Twitter user handlers.
Extract a tweet id from a term.
parseTweetId :: (term?: string) -> string | undefined
Extract a Twitter user name from a term.
parseTwitterUser :: (term?: string) -> string | undefined
Extract a Youtube video id from a term.
parseYoutubeVideo :: (term?: string) -> string | undefined
Extract a Youtube channel id from a term.
parseYoutubeChannel :: (term?: string) -> string | undefined
Parse a term and return a HTTP url.
parseHttpUrl :: (term?: string) -> string | undefined
Parse a Telegram channel from a term and return a normalized Telegram channel URL.
normalizeTelegramChannelUrl :: (term?: string) -> string | undefined
Parse a Twitter tweet id from a term and return a normalized Twitter tweet URL.
normalizeTwitterTweetUrl :: (term?: string) -> string | undefined
Parse a Twitter user name from a term and return a normalized Twitter feed URL.
normalizeTwitterUserUrl :: (term?: string) -> string | undefined
Parse a Youtube Video id from a term and return a normalized Youtube video URL.
normalizeYoutubeVideoUrl :: (term?: string) -> string | undefined
Parse a Youtube channel id from a term and return a normalized Youtube channel URL.
normalizeYoutubeChannelUrl :: (term?: string) -> string | undefined
Turn a term into a well formed HTTP url.
normalizeHttpUrl :: (term?: string) -> string | undefined