版博士V2.0程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

165 lines
6.1 KiB

  1. type QueryValue = string | number | undefined | null | Record<string, any>;
  2. type QueryObject = Record<string, QueryValue | QueryValue[]>;
  3. declare function parseQuery(parametersString?: string): QueryObject;
  4. declare function encodeQueryItem(key: string, value: QueryValue | QueryValue[]): string;
  5. declare function stringifyQuery(query: QueryObject): string;
  6. /**
  7. * Encode characters that need to be encoded on the path, search and hash
  8. * sections of the URL.
  9. *
  10. * @internal
  11. * @param text - string to encode
  12. * @returns encoded string
  13. */
  14. declare function encode(text: string | number): string;
  15. /**
  16. * Encode characters that need to be encoded on the hash section of the URL.
  17. *
  18. * @param text - string to encode
  19. * @returns encoded string
  20. */
  21. declare function encodeHash(text: string): string;
  22. /**
  23. * Encode characters that need to be encoded query values on the query
  24. * section of the URL.
  25. *
  26. * @param input - string to encode
  27. * @returns encoded string
  28. */
  29. declare function encodeQueryValue(input: QueryValue): string;
  30. /**
  31. * Like `encodeQueryValue` but also encodes the `=` character.
  32. *
  33. * @param text - string to encode
  34. */
  35. declare function encodeQueryKey(text: string | number): string;
  36. /**
  37. * Encode characters that need to be encoded on the path section of the URL.
  38. *
  39. * @param text - string to encode
  40. * @returns encoded string
  41. */
  42. declare function encodePath(text: string | number): string;
  43. /**
  44. * Encode characters that need to be encoded on the path section of the URL as a
  45. * param. This function encodes everything {@link encodePath} does plus the
  46. * slash (`/`) character.
  47. *
  48. * @param text - string to encode
  49. * @returns encoded string
  50. */
  51. declare function encodeParam(text: string | number): string;
  52. /**
  53. * Decode text using `decodeURIComponent`. Returns the original text if it
  54. * fails.
  55. *
  56. * @param text - string to decode
  57. * @returns decoded string
  58. */
  59. declare function decode(text?: string | number): string;
  60. /**
  61. * Decode path section of URL (consistent with encodePath for slash encoding).
  62. *
  63. * @param text - string to decode
  64. * @returns decoded string
  65. */
  66. declare function decodePath(text: string): string;
  67. /**
  68. * Decode query value (consistent with encodeQueryValue for plus encoding).
  69. *
  70. * @param text - string to decode
  71. * @returns decoded string
  72. */
  73. declare function decodeQueryValue(text: string): string;
  74. declare function encodeHost(name?: string): string;
  75. interface ParsedURL {
  76. protocol?: string;
  77. host?: string;
  78. auth?: string;
  79. pathname: string;
  80. hash: string;
  81. search: string;
  82. }
  83. interface ParsedAuth {
  84. username: string;
  85. password: string;
  86. }
  87. interface ParsedHost {
  88. hostname: string;
  89. port: string;
  90. }
  91. declare function parseURL(input?: string, defaultProto?: string): ParsedURL;
  92. declare function parsePath(input?: string): ParsedURL;
  93. declare function parseAuth(input?: string): ParsedAuth;
  94. declare function parseHost(input?: string): ParsedHost;
  95. declare function stringifyParsedURL(parsed: ParsedURL): string;
  96. declare class $URL implements URL {
  97. protocol: string;
  98. host: string;
  99. auth: string;
  100. pathname: string;
  101. query: QueryObject;
  102. hash: string;
  103. constructor(input?: string);
  104. get hostname(): string;
  105. get port(): string;
  106. get username(): string;
  107. get password(): string;
  108. get hasProtocol(): number;
  109. get isAbsolute(): number | boolean;
  110. get search(): string;
  111. get searchParams(): URLSearchParams;
  112. get origin(): string;
  113. get fullpath(): string;
  114. get encodedAuth(): string;
  115. get href(): string;
  116. append(url: $URL): void;
  117. toJSON(): string;
  118. toString(): string;
  119. }
  120. declare function isRelative(inputString: string): boolean;
  121. interface HasProtocolOptions {
  122. acceptRelative?: boolean;
  123. strict?: boolean;
  124. }
  125. declare function hasProtocol(inputString: string, opts?: HasProtocolOptions): boolean;
  126. /**
  127. * @deprecated
  128. * Same as { hasProtocol(inputString, { acceptRelative: true })
  129. */
  130. declare function hasProtocol(inputString: string, acceptRelative: boolean): boolean;
  131. declare function hasTrailingSlash(input?: string, queryParameters?: boolean): boolean;
  132. declare function withoutTrailingSlash(input?: string, queryParameters?: boolean): string;
  133. declare function withTrailingSlash(input?: string, queryParameters?: boolean): string;
  134. declare function hasLeadingSlash(input?: string): boolean;
  135. declare function withoutLeadingSlash(input?: string): string;
  136. declare function withLeadingSlash(input?: string): string;
  137. declare function cleanDoubleSlashes(input?: string): string;
  138. declare function withBase(input: string, base: string): string;
  139. declare function withoutBase(input: string, base: string): string;
  140. declare function withQuery(input: string, query: QueryObject): string;
  141. declare function getQuery(input: string): QueryObject;
  142. declare function isEmptyURL(url: string): boolean;
  143. declare function isNonEmptyURL(url: string): boolean;
  144. declare function joinURL(base: string, ...input: string[]): string;
  145. declare function withHttp(input: string): string;
  146. declare function withHttps(input: string): string;
  147. declare function withoutProtocol(input: string): string;
  148. declare function withProtocol(input: string, protocol: string): string;
  149. declare function createURL(input: string): $URL;
  150. declare function normalizeURL(input: string): string;
  151. declare function resolveURL(base: string, ...input: string[]): string;
  152. declare function isSamePath(p1: string, p2: string): boolean;
  153. interface CompareURLOptions {
  154. trailingSlash?: boolean;
  155. leadingSlash?: boolean;
  156. encoding?: boolean;
  157. }
  158. declare function isEqual(a: string, b: string, options?: CompareURLOptions): boolean;
  159. export { $URL, HasProtocolOptions, ParsedAuth, ParsedHost, ParsedURL, QueryObject, QueryValue, cleanDoubleSlashes, createURL, decode, decodePath, decodeQueryValue, encode, encodeHash, encodeHost, encodeParam, encodePath, encodeQueryItem, encodeQueryKey, encodeQueryValue, getQuery, hasLeadingSlash, hasProtocol, hasTrailingSlash, isEmptyURL, isEqual, isNonEmptyURL, isRelative, isSamePath, joinURL, normalizeURL, parseAuth, parseHost, parsePath, parseQuery, parseURL, resolveURL, stringifyParsedURL, stringifyQuery, withBase, withHttp, withHttps, withLeadingSlash, withProtocol, withQuery, withTrailingSlash, withoutBase, withoutLeadingSlash, withoutProtocol, withoutTrailingSlash };