UNPKG

@shi-corp/objectid-converter

Version:
21 lines (20 loc) 864 B
import { stringify } from 'uuid'; export function convertToObjectId(sid) { if (typeof sid !== 'string') { throw new Error('The provided sid is not a string!'); } else if (!sid.match(/^S-1-12-1-\d{8,10}-\d{8,10}-\d{8,10}-\d{8,10}$/gum)) { throw new Error('The provided SID is not an Entra ID SID!'); } const splitSid = sid. replace(/^S-1-12-1-/gum, ''). split('-'). map((element) => parseInt(element, 10)); const sidBuffer = new Uint8Array(new Uint32Array(splitSid).buffer); [sidBuffer[0], sidBuffer[3]] = [sidBuffer[3], sidBuffer[0]]; [sidBuffer[1], sidBuffer[2]] = [sidBuffer[2], sidBuffer[1]]; [sidBuffer[5], sidBuffer[4]] = [sidBuffer[4], sidBuffer[5]]; [sidBuffer[7], sidBuffer[6]] = [sidBuffer[6], sidBuffer[7]]; const objectId = stringify(sidBuffer); return objectId; }