Utils.ts 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import { JSFuck } from '../enums/JSFuck';
  2. export class Utils {
  3. /**
  4. * @type {string}
  5. */
  6. public static readonly hexadecimalPrefix: string = '0x';
  7. /**
  8. * @param {number} dec
  9. * @returns {string}
  10. */
  11. public static decToHex (dec: number): string {
  12. const radix: number = 16;
  13. return dec.toString(radix);
  14. }
  15. /**
  16. * @param {string} url
  17. * @returns {string}
  18. */
  19. public static extractDomainFromUrl (url: string): string {
  20. let domain: string;
  21. if (url.indexOf('://') > -1 || url.indexOf('//') === 0) {
  22. domain = url.split('/')[2];
  23. } else {
  24. domain = url.split('/')[0];
  25. }
  26. domain = domain.split(':')[0];
  27. return domain;
  28. }
  29. /**
  30. * @param {number} number
  31. * @returns {boolean}
  32. */
  33. public static isCeilNumber (number: number): boolean {
  34. return number % 1 === 0;
  35. }
  36. /**
  37. * @param {string} string
  38. * @param {number} times
  39. * @returns {string}
  40. */
  41. public static stringRotate (string: string, times: number): string {
  42. if (!string) {
  43. throw new ReferenceError(`Cannot rotate empty string.`);
  44. }
  45. for (let i: number = 0; i < times; i++) {
  46. string = string[string.length - 1] + string.substring(0, string.length - 1);
  47. }
  48. return string;
  49. }
  50. /**
  51. * @param {string} string
  52. * @returns {string}
  53. */
  54. public static stringToJSFuck (string: string): string {
  55. return Array
  56. .from(string)
  57. .map((character: string): string => {
  58. return JSFuck[<any>character] || character;
  59. })
  60. .join(' + ');
  61. }
  62. /**
  63. * @returns {string}
  64. */
  65. public static generateIden (): string {
  66. let validIden: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_';
  67. let ret: string = '';
  68. const idenIdx: (() => number) = () => Math.floor(Math.random() * validIden.length) % validIden.length;
  69. ret += validIden[idenIdx()];
  70. validIden += '0123456789';
  71. const len: number = Math.floor((Math.random() * 10) + 3);
  72. for (let i: number = 0; i < len; i++) {
  73. ret += validIden[idenIdx()];
  74. }
  75. return ret;
  76. }
  77. }