aboutsummaryrefslogtreecommitdiff
path: root/src/internal/base32.ts
blob: f3e15bb43de894da2501fd7dea530c29851792cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
 * Crockford's Base32 - Excludes I, L, O, and U which may be confused with numbers
 */
export const CROCKFORDS_BASE32 = '0123456789ABCDEFGHJKMNPQRSTVWXYZ';

/**
 * Encodes a Date into 10 characters base32 string.
 *
 * @param date The Date to encode.
 */
export function dateToBase32(date: Date): string {
  let value = date.valueOf();
  let result = '';
  for (let len = 10; len > 0; len--) {
    const mod = value % 32;
    result = CROCKFORDS_BASE32[mod] + result;
    value = (value - mod) / 32;
  }

  return result;
}