File size: 859 Bytes
87dab07 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | // Shared shape for the public device-pairing join shortcode.
export const DEVICE_PAIRING_JOIN_CODE_BYTES = 16;
const DEVICE_PAIRING_JOIN_CODE_RE = /^[A-Za-z0-9_-]{22}$/u;
export function isDevicePairingJoinCode(value: string): boolean {
return DEVICE_PAIRING_JOIN_CODE_RE.test(value);
}
export function parseDevicePairingJoinRequestPath(pathname: string): string | null {
// Public endpoints may include an advertised context path. The final /j namespace
// is the stable route contract; preserving only root /j would mint unusable URLs.
// Terminal /j first: a context path may itself contain a /j/ segment
// (e.g. /proxy/j/app/j), and shortcodes never contain slashes.
if (pathname.endsWith("/j")) {
return "";
}
const markerIndex = pathname.lastIndexOf("/j/");
return markerIndex >= 0 ? pathname.slice(markerIndex + 3) : null;
}
|