url-match.d.ts 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. import { AbstractMatch, AbstractMatchConfig } from './abstract-match';
  2. import type { StripPrefixConfigObj } from '../autolinker';
  3. /**
  4. * @class Autolinker.match.Url
  5. * @extends Autolinker.match.AbstractMatch
  6. *
  7. * Represents a Url match found in an input string which should be Autolinked.
  8. *
  9. * See this class's superclass ({@link Autolinker.match.Match}) for more details.
  10. */
  11. export declare class UrlMatch extends AbstractMatch {
  12. /**
  13. * @public
  14. * @property {'url'} type
  15. *
  16. * A string name for the type of match that this class represents. Can be
  17. * used in a TypeScript discriminating union to type-narrow from the
  18. * `Match` type.
  19. */
  20. readonly type: 'url';
  21. /**
  22. * @cfg {String} url (required)
  23. *
  24. * The url that was matched.
  25. */
  26. private url;
  27. /**
  28. * @cfg {"scheme"/"www"/"tld"} urlMatchType (required)
  29. *
  30. * The type of URL match that this class represents. This helps to determine
  31. * if the match was made in the original text with a prefixed scheme (ex:
  32. * 'http://www.google.com'), a prefixed 'www' (ex: 'www.google.com'), or
  33. * was matched by a known top-level domain (ex: 'google.com').
  34. */
  35. private readonly urlMatchType;
  36. /**
  37. * @cfg {Boolean} protocolRelativeMatch (required)
  38. *
  39. * `true` if the URL is a protocol-relative match. A protocol-relative match
  40. * is a URL that starts with '//', and will be either http:// or https://
  41. * based on the protocol that the site is loaded under.
  42. */
  43. private readonly protocolRelativeMatch;
  44. /**
  45. * @cfg {Object} stripPrefix (required)
  46. *
  47. * The Object form of {@link Autolinker#cfg-stripPrefix}.
  48. */
  49. private readonly stripPrefix;
  50. /**
  51. * @cfg {Boolean} stripTrailingSlash (required)
  52. * @inheritdoc Autolinker#cfg-stripTrailingSlash
  53. */
  54. private readonly stripTrailingSlash;
  55. /**
  56. * @cfg {Boolean} decodePercentEncoding (required)
  57. * @inheritdoc Autolinker#cfg-decodePercentEncoding
  58. */
  59. private readonly decodePercentEncoding;
  60. /**
  61. * @private
  62. * @property {Boolean} protocolPrepended
  63. *
  64. * Will be set to `true` if the 'http://' protocol has been prepended to the {@link #url} (because the
  65. * {@link #url} did not have a protocol)
  66. */
  67. private protocolPrepended;
  68. /**
  69. * @method constructor
  70. * @param {Object} cfg The configuration properties for the Match
  71. * instance, specified in an Object (map).
  72. */
  73. constructor(cfg: UrlMatchConfig);
  74. /**
  75. * Returns a string name for the type of match that this class represents.
  76. * For the case of UrlMatch, returns 'url'.
  77. *
  78. * @return {String}
  79. */
  80. getType(): 'url';
  81. /**
  82. * Returns a string name for the type of URL match that this class
  83. * represents.
  84. *
  85. * This helps to determine if the match was made in the original text with a
  86. * prefixed scheme (ex: 'http://www.google.com'), a prefixed 'www' (ex:
  87. * 'www.google.com'), or was matched by a known top-level domain (ex:
  88. * 'google.com').
  89. *
  90. * @return {"scheme"/"www"/"tld"}
  91. */
  92. getUrlMatchType(): UrlMatchType;
  93. /**
  94. * Returns the url that was matched, assuming the protocol to be 'http://' if the original
  95. * match was missing a protocol.
  96. *
  97. * @return {String}
  98. */
  99. getUrl(): string;
  100. /**
  101. * Returns the anchor href that should be generated for the match.
  102. *
  103. * @return {String}
  104. */
  105. getAnchorHref(): string;
  106. /**
  107. * Returns the anchor text that should be generated for the match.
  108. *
  109. * @return {String}
  110. */
  111. getAnchorText(): string;
  112. }
  113. export interface UrlMatchConfig extends AbstractMatchConfig {
  114. url: string;
  115. urlMatchType: UrlMatchType;
  116. protocolRelativeMatch: boolean;
  117. stripPrefix: Required<StripPrefixConfigObj>;
  118. stripTrailingSlash: boolean;
  119. decodePercentEncoding: boolean;
  120. }
  121. export declare type UrlMatchType = 'scheme' | 'tld' | 'ipV4';