appwrite
Version:
Appwrite is an open-source self-hosted backend server that abstracts and simplifies complex and repetitive development tasks behind a very simple REST API
48 lines (44 loc) • 1.34 kB
text/typescript
/**
* Helper class to generate ID strings for resources.
*/
export class ID {
/**
* Generate an hex ID based on timestamp.
* Recreated from https://www.php.net/manual/en/function.uniqid.php
*
* @returns {string}
*/
static #hexTimestamp(): string {
const now = new Date();
const sec = Math.floor(now.getTime() / 1000);
const msec = now.getMilliseconds();
// Convert to hexadecimal
const hexTimestamp = sec.toString(16) + msec.toString(16).padStart(5, '0');
return hexTimestamp;
}
/**
* Uses the provided ID as the ID for the resource.
*
* @param {string} id
* @returns {string}
*/
public static custom(id: string): string {
return id
}
/**
* Have Appwrite generate a unique ID for you.
*
* @param {number} padding. Default is 7.
* @returns {string}
*/
public static unique(padding: number = 7): string {
// Generate a unique ID with padding to have a longer ID
const baseId = ID.#hexTimestamp();
let randomPadding = '';
for (let i = 0; i < padding; i++) {
const randomHexDigit = Math.floor(Math.random() * 16).toString(16);
randomPadding += randomHexDigit;
}
return baseId + randomPadding;
}
}