{"version":3,"sources":["../src/id.ts"],"names":[],"mappings":";AAGO,IAAM,EAAA,GAAN,MAAM,GAAA,CAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOZ,OAAO,aAAA,GAAwB;AAC3B,IAAA,MAAM,GAAA,uBAAU,IAAA,EAAK;AACrB,IAAA,MAAM,MAAM,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,OAAA,KAAY,GAAI,CAAA;AAC3C,IAAA,MAAM,IAAA,GAAO,IAAI,eAAA,EAAgB;AAGjC,IAAA,MAAM,YAAA,GAAe,GAAA,CAAI,QAAA,CAAS,EAAE,CAAA,GAAI,IAAA,CAAK,QAAA,CAAS,EAAE,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAA;AACzE,IAAA,OAAO,YAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAc,OAAO,EAAA,EAAoB;AACrC,IAAA,OAAO,EAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAc,MAAA,CAAO,OAAA,GAAkB,CAAA,EAAW;AAE9C,IAAA,MAAM,MAAA,GAAS,IAAG,aAAA,EAAc;AAChC,IAAA,IAAI,aAAA,GAAgB,EAAA;AACpB,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,EAAS,CAAA,EAAA,EAAK;AAC9B,MAAA,MAAM,cAAA,GAAiB,KAAK,KAAA,CAAM,IAAA,CAAK,QAAO,GAAI,EAAE,CAAA,CAAE,QAAA,CAAS,EAAE,CAAA;AACjE,MAAA,aAAA,IAAiB,cAAA;AAAA,IACrB;AACA,IAAA,OAAO,MAAA,GAAS,aAAA;AAAA,EACpB;AACJ","file":"id.mjs","sourcesContent":["/**\n * Helper class to generate ID strings for resources.\n */\nexport class ID {\n    /**\n     * Generate an hex ID based on timestamp.\n     * Recreated from https://www.php.net/manual/en/function.uniqid.php\n     *\n     * @returns {string}\n     */\n    static #hexTimestamp(): string {\n        const now = new Date();\n        const sec = Math.floor(now.getTime() / 1000);\n        const msec = now.getMilliseconds();\n\n        // Convert to hexadecimal\n        const hexTimestamp = sec.toString(16) + msec.toString(16).padStart(5, '0');\n        return hexTimestamp;\n    }\n\n    /**\n     * Uses the provided ID as the ID for the resource.\n     *\n     * @param {string} id\n     * @returns {string}\n     */\n    public static custom(id: string): string {\n        return id\n    }\n\n    /**\n     * Have Appwrite generate a unique ID for you.\n     * \n     * @param {number} padding. Default is 7.\n     * @returns {string}\n     */\n    public static unique(padding: number = 7): string {\n        // Generate a unique ID with padding to have a longer ID\n        const baseId = ID.#hexTimestamp();\n        let randomPadding = '';\n        for (let i = 0; i < padding; i++) {\n            const randomHexDigit = Math.floor(Math.random() * 16).toString(16);\n            randomPadding += randomHexDigit;\n        }\n        return baseId + randomPadding;\n    }\n}\n"]}