{"version":3,"file":"index.mjs","sources":["../../../../node_modules/.bun/uuidv7@1.0.2/node_modules/uuidv7/dist/index.js","../../../@hive/api-key-auth/dist/index.mjs"],"sourcesContent":["/**\n * uuidv7: A JavaScript implementation of UUID version 7\n *\n * Copyright 2021-2024 LiosK\n *\n * @license Apache-2.0\n * @packageDocumentation\n */\nconst DIGITS = \"0123456789abcdef\";\n/** Represents a UUID as a 16-byte byte array. */\nexport class UUID {\n    /** @param bytes - The 16-byte byte array representation. */\n    constructor(bytes) {\n        this.bytes = bytes;\n    }\n    /**\n     * Creates an object from the internal representation, a 16-byte byte array\n     * containing the binary UUID representation in the big-endian byte order.\n     *\n     * This method does NOT shallow-copy the argument, and thus the created object\n     * holds the reference to the underlying buffer.\n     *\n     * @throws TypeError if the length of the argument is not 16.\n     */\n    static ofInner(bytes) {\n        if (bytes.length !== 16) {\n            throw new TypeError(\"not 128-bit length\");\n        }\n        else {\n            return new UUID(bytes);\n        }\n    }\n    /**\n     * Builds a byte array from UUIDv7 field values.\n     *\n     * @param unixTsMs - A 48-bit `unix_ts_ms` field value.\n     * @param randA - A 12-bit `rand_a` field value.\n     * @param randBHi - The higher 30 bits of 62-bit `rand_b` field value.\n     * @param randBLo - The lower 32 bits of 62-bit `rand_b` field value.\n     * @throws RangeError if any field value is out of the specified range.\n     */\n    static fromFieldsV7(unixTsMs, randA, randBHi, randBLo) {\n        if (!Number.isInteger(unixTsMs) ||\n            !Number.isInteger(randA) ||\n            !Number.isInteger(randBHi) ||\n            !Number.isInteger(randBLo) ||\n            unixTsMs < 0 ||\n            randA < 0 ||\n            randBHi < 0 ||\n            randBLo < 0 ||\n            unixTsMs > 281474976710655 ||\n            randA > 0xfff ||\n            randBHi > 1073741823 ||\n            randBLo > 4294967295) {\n            throw new RangeError(\"invalid field value\");\n        }\n        const bytes = new Uint8Array(16);\n        bytes[0] = unixTsMs / 2 ** 40;\n        bytes[1] = unixTsMs / 2 ** 32;\n        bytes[2] = unixTsMs / 2 ** 24;\n        bytes[3] = unixTsMs / 2 ** 16;\n        bytes[4] = unixTsMs / 2 ** 8;\n        bytes[5] = unixTsMs;\n        bytes[6] = 0x70 | (randA >>> 8);\n        bytes[7] = randA;\n        bytes[8] = 0x80 | (randBHi >>> 24);\n        bytes[9] = randBHi >>> 16;\n        bytes[10] = randBHi >>> 8;\n        bytes[11] = randBHi;\n        bytes[12] = randBLo >>> 24;\n        bytes[13] = randBLo >>> 16;\n        bytes[14] = randBLo >>> 8;\n        bytes[15] = randBLo;\n        return new UUID(bytes);\n    }\n    /**\n     * Builds a byte array from a string representation.\n     *\n     * This method accepts the following formats:\n     *\n     * - 32-digit hexadecimal format without hyphens: `0189dcd553117d408db09496a2eef37b`\n     * - 8-4-4-4-12 hyphenated format: `0189dcd5-5311-7d40-8db0-9496a2eef37b`\n     * - Hyphenated format with surrounding braces: `{0189dcd5-5311-7d40-8db0-9496a2eef37b}`\n     * - RFC 9562 URN format: `urn:uuid:0189dcd5-5311-7d40-8db0-9496a2eef37b`\n     *\n     * Leading and trailing whitespaces represents an error.\n     *\n     * @throws SyntaxError if the argument could not parse as a valid UUID string.\n     */\n    static parse(uuid) {\n        var _a, _b, _c, _d;\n        let hex = undefined;\n        switch (uuid.length) {\n            case 32:\n                hex = (_a = /^[0-9a-f]{32}$/i.exec(uuid)) === null || _a === void 0 ? void 0 : _a[0];\n                break;\n            case 36:\n                hex =\n                    (_b = /^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i\n                        .exec(uuid)) === null || _b === void 0 ? void 0 : _b.slice(1, 6).join(\"\");\n                break;\n            case 38:\n                hex =\n                    (_c = /^\\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\\}$/i\n                        .exec(uuid)) === null || _c === void 0 ? void 0 : _c.slice(1, 6).join(\"\");\n                break;\n            case 45:\n                hex =\n                    (_d = /^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i\n                        .exec(uuid)) === null || _d === void 0 ? void 0 : _d.slice(1, 6).join(\"\");\n                break;\n            default:\n                break;\n        }\n        if (hex) {\n            const inner = new Uint8Array(16);\n            for (let i = 0; i < 16; i += 4) {\n                const n = parseInt(hex.substring(2 * i, 2 * i + 8), 16);\n                inner[i + 0] = n >>> 24;\n                inner[i + 1] = n >>> 16;\n                inner[i + 2] = n >>> 8;\n                inner[i + 3] = n;\n            }\n            return new UUID(inner);\n        }\n        else {\n            throw new SyntaxError(\"could not parse UUID string\");\n        }\n    }\n    /**\n     * @returns The 8-4-4-4-12 canonical hexadecimal string representation\n     * (`0189dcd5-5311-7d40-8db0-9496a2eef37b`).\n     */\n    toString() {\n        let text = \"\";\n        for (let i = 0; i < this.bytes.length; i++) {\n            text += DIGITS.charAt(this.bytes[i] >>> 4);\n            text += DIGITS.charAt(this.bytes[i] & 0xf);\n            if (i === 3 || i === 5 || i === 7 || i === 9) {\n                text += \"-\";\n            }\n        }\n        return text;\n    }\n    /**\n     * @returns The 32-digit hexadecimal representation without hyphens\n     * (`0189dcd553117d408db09496a2eef37b`).\n     */\n    toHex() {\n        let text = \"\";\n        for (let i = 0; i < this.bytes.length; i++) {\n            text += DIGITS.charAt(this.bytes[i] >>> 4);\n            text += DIGITS.charAt(this.bytes[i] & 0xf);\n        }\n        return text;\n    }\n    /** @returns The 8-4-4-4-12 canonical hexadecimal string representation. */\n    toJSON() {\n        return this.toString();\n    }\n    /**\n     * Reports the variant field value of the UUID or, if appropriate, \"NIL\" or\n     * \"MAX\".\n     *\n     * For convenience, this method reports \"NIL\" or \"MAX\" if `this` represents\n     * the Nil or Max UUID, although the Nil and Max UUIDs are technically\n     * subsumed under the variants `0b0` and `0b111`, respectively.\n     */\n    getVariant() {\n        const n = this.bytes[8] >>> 4;\n        if (n < 0) {\n            throw new Error(\"unreachable\");\n        }\n        else if (n <= 0b0111) {\n            return this.bytes.every((e) => e === 0) ? \"NIL\" : \"VAR_0\";\n        }\n        else if (n <= 0b1011) {\n            return \"VAR_10\";\n        }\n        else if (n <= 0b1101) {\n            return \"VAR_110\";\n        }\n        else if (n <= 0b1111) {\n            return this.bytes.every((e) => e === 0xff) ? \"MAX\" : \"VAR_RESERVED\";\n        }\n        else {\n            throw new Error(\"unreachable\");\n        }\n    }\n    /**\n     * Returns the version field value of the UUID or `undefined` if the UUID does\n     * not have the variant field value of `0b10`.\n     */\n    getVersion() {\n        return this.getVariant() === \"VAR_10\" ? this.bytes[6] >>> 4 : undefined;\n    }\n    /** Creates an object from `this`. */\n    clone() {\n        return new UUID(this.bytes.slice(0));\n    }\n    /** Returns true if `this` is equivalent to `other`. */\n    equals(other) {\n        return this.compareTo(other) === 0;\n    }\n    /**\n     * Returns a negative integer, zero, or positive integer if `this` is less\n     * than, equal to, or greater than `other`, respectively.\n     */\n    compareTo(other) {\n        for (let i = 0; i < 16; i++) {\n            const diff = this.bytes[i] - other.bytes[i];\n            if (diff !== 0) {\n                return Math.sign(diff);\n            }\n        }\n        return 0;\n    }\n}\n/**\n * Encapsulates the monotonic counter state.\n *\n * This class provides APIs to utilize a separate counter state from that of the\n * global generator used by {@link uuidv7} and {@link uuidv7obj}. In addition to\n * the default {@link generate} method, this class has {@link generateOrAbort}\n * that is useful to absolutely guarantee the monotonically increasing order of\n * generated UUIDs. See their respective documentation for details.\n */\nexport class V7Generator {\n    /**\n     * Creates a generator object with the default random number generator, or\n     * with the specified one if passed as an argument. The specified random\n     * number generator should be cryptographically strong and securely seeded.\n     */\n    constructor(randomNumberGenerator) {\n        this.timestamp = 0;\n        this.counter = 0;\n        this.random = randomNumberGenerator !== null && randomNumberGenerator !== void 0 ? randomNumberGenerator : getDefaultRandom();\n    }\n    /**\n     * Generates a new UUIDv7 object from the current timestamp, or resets the\n     * generator upon significant timestamp rollback.\n     *\n     * This method returns a monotonically increasing UUID by reusing the previous\n     * timestamp even if the up-to-date timestamp is smaller than the immediately\n     * preceding UUID's. However, when such a clock rollback is considered\n     * significant (i.e., by more than ten seconds), this method resets the\n     * generator and returns a new UUID based on the given timestamp, breaking the\n     * increasing order of UUIDs.\n     *\n     * See {@link generateOrAbort} for the other mode of generation and\n     * {@link generateOrResetCore} for the low-level primitive.\n     */\n    generate() {\n        return this.generateOrResetCore(Date.now(), 10000);\n    }\n    /**\n     * Generates a new UUIDv7 object from the current timestamp, or returns\n     * `undefined` upon significant timestamp rollback.\n     *\n     * This method returns a monotonically increasing UUID by reusing the previous\n     * timestamp even if the up-to-date timestamp is smaller than the immediately\n     * preceding UUID's. However, when such a clock rollback is considered\n     * significant (i.e., by more than ten seconds), this method aborts and\n     * returns `undefined` immediately.\n     *\n     * See {@link generate} for the other mode of generation and\n     * {@link generateOrAbortCore} for the low-level primitive.\n     */\n    generateOrAbort() {\n        return this.generateOrAbortCore(Date.now(), 10000);\n    }\n    /**\n     * Generates a new UUIDv7 object from the `unixTsMs` passed, or resets the\n     * generator upon significant timestamp rollback.\n     *\n     * This method is equivalent to {@link generate} except that it takes a custom\n     * timestamp and clock rollback allowance.\n     *\n     * @param rollbackAllowance - The amount of `unixTsMs` rollback that is\n     * considered significant. A suggested value is `10_000` (milliseconds).\n     * @throws RangeError if `unixTsMs` is not a 48-bit positive integer.\n     */\n    generateOrResetCore(unixTsMs, rollbackAllowance) {\n        let value = this.generateOrAbortCore(unixTsMs, rollbackAllowance);\n        if (value === undefined) {\n            // reset state and resume\n            this.timestamp = 0;\n            value = this.generateOrAbortCore(unixTsMs, rollbackAllowance);\n        }\n        return value;\n    }\n    /**\n     * Generates a new UUIDv7 object from the `unixTsMs` passed, or returns\n     * `undefined` upon significant timestamp rollback.\n     *\n     * This method is equivalent to {@link generateOrAbort} except that it takes a\n     * custom timestamp and clock rollback allowance.\n     *\n     * @param rollbackAllowance - The amount of `unixTsMs` rollback that is\n     * considered significant. A suggested value is `10_000` (milliseconds).\n     * @throws RangeError if `unixTsMs` is not a 48-bit positive integer.\n     */\n    generateOrAbortCore(unixTsMs, rollbackAllowance) {\n        const MAX_COUNTER = 4398046511103;\n        if (!Number.isInteger(unixTsMs) ||\n            unixTsMs < 1 ||\n            unixTsMs > 281474976710655) {\n            throw new RangeError(\"`unixTsMs` must be a 48-bit positive integer\");\n        }\n        else if (rollbackAllowance < 0 || rollbackAllowance > 281474976710655) {\n            throw new RangeError(\"`rollbackAllowance` out of reasonable range\");\n        }\n        if (unixTsMs > this.timestamp) {\n            this.timestamp = unixTsMs;\n            this.resetCounter();\n        }\n        else if (unixTsMs + rollbackAllowance >= this.timestamp) {\n            // go on with previous timestamp if new one is not much smaller\n            this.counter++;\n            if (this.counter > MAX_COUNTER) {\n                // increment timestamp at counter overflow\n                this.timestamp++;\n                this.resetCounter();\n            }\n        }\n        else {\n            // abort if clock went backwards to unbearable extent\n            return undefined;\n        }\n        return UUID.fromFieldsV7(this.timestamp, Math.trunc(this.counter / 2 ** 30), this.counter & (2 ** 30 - 1), this.random.nextUint32());\n    }\n    /** Initializes the counter at a 42-bit random integer. */\n    resetCounter() {\n        this.counter =\n            this.random.nextUint32() * 0x400 + (this.random.nextUint32() & 0x3ff);\n    }\n    /**\n     * Generates a new UUIDv4 object utilizing the random number generator inside.\n     *\n     * @internal\n     */\n    generateV4() {\n        const bytes = new Uint8Array(Uint32Array.of(this.random.nextUint32(), this.random.nextUint32(), this.random.nextUint32(), this.random.nextUint32()).buffer);\n        bytes[6] = 0x40 | (bytes[6] >>> 4);\n        bytes[8] = 0x80 | (bytes[8] >>> 2);\n        return UUID.ofInner(bytes);\n    }\n}\n/** Returns the default random number generator available in the environment. */\nconst getDefaultRandom = () => {\n    // detect Web Crypto API\n    if (typeof crypto !== \"undefined\" &&\n        typeof crypto.getRandomValues !== \"undefined\") {\n        return new BufferedCryptoRandom();\n    }\n    else {\n        // fall back on Math.random() unless the flag is set to true\n        if (typeof UUIDV7_DENY_WEAK_RNG !== \"undefined\" && UUIDV7_DENY_WEAK_RNG) {\n            throw new Error(\"no cryptographically strong RNG available\");\n        }\n        return {\n            nextUint32: () => Math.trunc(Math.random() * 65536) * 65536 +\n                Math.trunc(Math.random() * 65536),\n        };\n    }\n};\n/**\n * Wraps `crypto.getRandomValues()` to enable buffering; this uses a small\n * buffer by default to avoid both unbearable throughput decline in some\n * environments and the waste of time and space for unused values.\n */\nclass BufferedCryptoRandom {\n    constructor() {\n        this.buffer = new Uint32Array(8);\n        this.cursor = 0xffff;\n    }\n    nextUint32() {\n        if (this.cursor >= this.buffer.length) {\n            crypto.getRandomValues(this.buffer);\n            this.cursor = 0;\n        }\n        return this.buffer[this.cursor++];\n    }\n}\nlet defaultGenerator;\n/**\n * Generates a UUIDv7 string.\n *\n * @returns The 8-4-4-4-12 canonical hexadecimal string representation\n * (\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\").\n */\nexport const uuidv7 = () => uuidv7obj().toString();\n/** Generates a UUIDv7 object. */\nexport const uuidv7obj = () => (defaultGenerator || (defaultGenerator = new V7Generator())).generate();\n/**\n * Generates a UUIDv4 string.\n *\n * @returns The 8-4-4-4-12 canonical hexadecimal string representation\n * (\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\").\n */\nexport const uuidv4 = () => uuidv4obj().toString();\n/** Generates a UUIDv4 object. */\nexport const uuidv4obj = () => (defaultGenerator || (defaultGenerator = new V7Generator())).generateV4();\n","import { Auth } from \"@hive/sdk/auth\";\nimport { ExpiredCredentialsError, InvalidCredentialsError, MissingCredentialsError, ResourceNotFoundError } from \"@hive/sdk/errors\";\nimport { Selector } from \"@hive/sdk/selector\";\nimport { uuidv7 } from \"uuidv7\";\n\n//#region src/index.ts\nvar ApiKeyAuth = class ApiKeyAuth extends Auth {\n\tstatic selector = new Selector({\n\t\ttype: \"database\",\n\t\tid: \".auth\"\n\t});\n\t/**\n\t* Storage instance to use for storing and retrieving the Database containing\n\t* the API keys.\n\t*/\n\tstorage;\n\t/**\n\t* Logger instance to use for logging.\n\t*/\n\tlogger;\n\t/**\n\t* Array of static API keys that work without access to the `.auth` Database.\n\t*/\n\tstaticKeys;\n\t/**\n\t* Reference to the Promise returned when invoking `start`.\n\t* Used primarily to deduplicate Database initialization.\n\t*/\n\tstarting = null;\n\tconstructor(config) {\n\t\tsuper();\n\t\tthis.storage = config.storage;\n\t\tthis.logger = config.logger ?? null;\n\t\tthis.staticKeys = config.staticKeys ?? [];\n\t}\n\t/**\n\t* Start the API Key Authentication instance.\n\t*\n\t* @returns Promise resolving the Database containing the API keys.\n\t*/\n\tstart = async () => {\n\t\tif (this.starting) return this.starting;\n\t\tthis.starting = new Promise(async (resolve, reject) => {\n\t\t\tconst selector = ApiKeyAuth.selector;\n\t\t\ttry {\n\t\t\t\tconst { resource: db } = await this.storage.get(selector).catch((err) => {\n\t\t\t\t\tif (err instanceof ResourceNotFoundError) return this.storage.create(selector);\n\t\t\t\t\tthrow err;\n\t\t\t\t});\n\t\t\t\tawait db.query([`CREATE TABLE IF NOT EXISTS api_keys (\n            id INTEGER PRIMARY KEY AUTOINCREMENT,\n            name TEXT NOT NULL,\n            scope TEXT,\n            token TEXT NOT NULL UNIQUE,\n            expires_at INTEGER,\n            created_at INTEGER NOT NULL,\n            updated_at INTEGER,\n            deleted_at INTEGER\n          );`, \"CREATE INDEX IF NOT EXISTS idx_api_keys_token ON api_keys (token);\"]);\n\t\t\t\tconst totalKeys = await db.query([\"SELECT COUNT(*) as count FROM api_keys;\"]).then(([{ rows }]) => rows[0].count);\n\t\t\t\tif (totalKeys === 0) {\n\t\t\t\t\tconst key = await this.create({\n\t\t\t\t\t\tname: \"default\",\n\t\t\t\t\t\tscope: null,\n\t\t\t\t\t\texpiresAt: new Date(Date.now() + 5 * 60 * 1e3)\n\t\t\t\t\t});\n\t\t\t\t\tconsole.info(`\\n\\n\\nNo API Keys found the configured Database. Use the following Token to configure your instance (expires in 5 minutes): ${key.token}\\n\\n\\n`);\n\t\t\t\t}\n\t\t\t\treturn resolve(db);\n\t\t\t} catch (err) {\n\t\t\t\treject(err);\n\t\t\t} finally {\n\t\t\t\tthis.starting = null;\n\t\t\t}\n\t\t});\n\t\treturn this.starting;\n\t};\n\t/**\n\t* Stop the API Key Authentication instance.\n\t*\n\t* @returns Promise resolving once the API Key Authentication instance has\n\t* been stopped.\n\t*/\n\tstop = async () => {\n\t\tawait this.storage.free(ApiKeyAuth.selector);\n\t};\n\tlist = async () => {\n\t\tconst keys = await this.storage.query(ApiKeyAuth.selector, {\n\t\t\tstatements: [{\n\t\t\t\tsql: \"SELECT * FROM api_keys;\",\n\t\t\t\tparams: null,\n\t\t\t\tmethod: \"all\"\n\t\t\t}],\n\t\t\tmode: \"DEFERRED\"\n\t\t}).then(([{ rows }]) => rows.map((row) => ({\n\t\t\tid: row.id.toString(),\n\t\t\tname: row.name,\n\t\t\tscope: row.scope,\n\t\t\ttoken: \"*\".repeat(32),\n\t\t\texpiresAt: row.expires_at ? new Date(row.expires_at) : null,\n\t\t\tcreatedAt: new Date(row.created_at),\n\t\t\tupdatedAt: row.updated_at ? new Date(row.updated_at) : null,\n\t\t\tdeletedAt: row.deleted_at ? new Date(row.deleted_at) : null\n\t\t})));\n\t\treturn keys;\n\t};\n\tcreate = async (opts) => {\n\t\tconst { name, scope, expiresAt } = opts;\n\t\tconst token = uuidv7();\n\t\tconst key = await this.storage.query(ApiKeyAuth.selector, {\n\t\t\tstatements: [{\n\t\t\t\tsql: \"INSERT INTO api_keys (name, scope, token, expires_at, created_at, updated_at, deleted_at) VALUES (?, ?, ?, ?, ?, ?, ?) RETURNING *;\",\n\t\t\t\tparams: [\n\t\t\t\t\tname,\n\t\t\t\t\tscope?.key ?? null,\n\t\t\t\t\ttoken,\n\t\t\t\t\texpiresAt?.getTime() ?? null,\n\t\t\t\t\tDate.now(),\n\t\t\t\t\tnull,\n\t\t\t\t\tnull\n\t\t\t\t],\n\t\t\t\tmethod: \"all\"\n\t\t\t}],\n\t\t\tmode: \"DEFERRED\"\n\t\t}).then(([{ rows }]) => rows[0]);\n\t\treturn {\n\t\t\tid: key.id.toString(),\n\t\t\tname: key.name,\n\t\t\tscope: key.scope,\n\t\t\ttoken: key.token,\n\t\t\texpiresAt: key.expires_at ? new Date(key.expires_at) : null,\n\t\t\tcreatedAt: new Date(key.created_at),\n\t\t\tupdatedAt: key.updated_at ? new Date(key.updated_at) : null,\n\t\t\tdeletedAt: key.deleted_at ? new Date(key.deleted_at) : null\n\t\t};\n\t};\n\tupdate = async (id, opts) => {\n\t\tconst { name, scope, expiresAt } = opts;\n\t\tconst updates = { updated_at: Date.now() };\n\t\tif (name) updates.name = name;\n\t\tif (scope) updates.scope = scope.key;\n\t\tif (expiresAt) updates.expires_at = expiresAt.getTime();\n\t\tconst key = await this.storage.query(ApiKeyAuth.selector, {\n\t\t\tmode: \"DEFERRED\",\n\t\t\tstatements: [{\n\t\t\t\tsql: `UPDATE api_keys SET ${Object.keys(updates).map((key$1) => `${key$1} = ?`).join(\", \")} WHERE id = ? RETURNING *;`,\n\t\t\t\tparams: [...Object.values(updates), id],\n\t\t\t\tmethod: \"all\"\n\t\t\t}]\n\t\t}).then(([{ rows }]) => rows[0]);\n\t\tif (!key) throw new InvalidCredentialsError();\n\t\treturn {\n\t\t\tid: key.id.toString(),\n\t\t\tname: key.name,\n\t\t\tscope: key.scope,\n\t\t\ttoken: \"*\".repeat(32),\n\t\t\texpiresAt: key.expires_at ? new Date(key.expires_at) : null,\n\t\t\tcreatedAt: new Date(key.created_at),\n\t\t\tupdatedAt: key.updated_at ? new Date(key.updated_at) : null,\n\t\t\tdeletedAt: key.deleted_at ? new Date(key.deleted_at) : null\n\t\t};\n\t};\n\tdelete = async (id) => {\n\t\tconst key = await this.storage.query(ApiKeyAuth.selector, {\n\t\t\tstatements: [{\n\t\t\t\tsql: \"UPDATE api_keys SET expires_at = ?, deleted_at = ? WHERE id = ? RETURNING *;\",\n\t\t\t\tparams: [\n\t\t\t\t\tDate.now() - 1,\n\t\t\t\t\tDate.now() - 1,\n\t\t\t\t\tid\n\t\t\t\t],\n\t\t\t\tmethod: \"all\"\n\t\t\t}],\n\t\t\tmode: \"DEFERRED\"\n\t\t}).then(([{ rows }]) => rows[0]);\n\t\tif (!key) throw new InvalidCredentialsError();\n\t};\n\tisValid = async (token) => {\n\t\tif (!token) throw new MissingCredentialsError();\n\t\tif (this.staticKeys.includes(token)) return {\n\t\t\tid: crypto.randomUUID(),\n\t\t\tname: crypto.randomUUID(),\n\t\t\tscope: null,\n\t\t\ttoken,\n\t\t\texpiresAt: null,\n\t\t\tcreatedAt: new Date(),\n\t\t\tupdatedAt: null,\n\t\t\tdeletedAt: null\n\t\t};\n\t\tconst key = await this.storage.query(ApiKeyAuth.selector, {\n\t\t\tmode: \"DEFERRED\",\n\t\t\tstatements: [{\n\t\t\t\tsql: \"SELECT * FROM api_keys WHERE token = ?;\",\n\t\t\t\tparams: [token],\n\t\t\t\tmethod: \"all\"\n\t\t\t}]\n\t\t}).then(([{ rows }]) => rows[0]);\n\t\tif (!key) throw new InvalidCredentialsError();\n\t\tif (key.expires_at && key.expires_at < Date.now()) throw new ExpiredCredentialsError();\n\t\treturn {\n\t\t\tid: key.id.toString(),\n\t\t\tname: key.name,\n\t\t\tscope: key.scope,\n\t\t\ttoken: \"*\".repeat(32),\n\t\t\texpiresAt: key.expires_at ? new Date(key.expires_at) : null,\n\t\t\tcreatedAt: new Date(key.created_at),\n\t\t\tupdatedAt: key.updated_at ? new Date(key.updated_at) : null,\n\t\t\tdeletedAt: key.deleted_at ? new Date(key.deleted_at) : null\n\t\t};\n\t};\n\thasAccess = async (token, resource) => {\n\t\tif (!token) throw new MissingCredentialsError();\n\t\tif (this.staticKeys.includes(token)) return {\n\t\t\tid: crypto.randomUUID(),\n\t\t\tname: crypto.randomUUID(),\n\t\t\tscope: null,\n\t\t\ttoken,\n\t\t\texpiresAt: null,\n\t\t\tcreatedAt: new Date(),\n\t\t\tupdatedAt: null,\n\t\t\tdeletedAt: null\n\t\t};\n\t\tconst key = await this.storage.query(ApiKeyAuth.selector, {\n\t\t\tmode: \"DEFERRED\",\n\t\t\tstatements: [{\n\t\t\t\tsql: \"SELECT * FROM api_keys WHERE token = ?;\",\n\t\t\t\tparams: [token],\n\t\t\t\tmethod: \"all\"\n\t\t\t}]\n\t\t}).then(([{ rows }]) => rows[0]);\n\t\tif (!key) throw new InvalidCredentialsError();\n\t\tif (key.expires_at && key.expires_at < Date.now()) throw new ExpiredCredentialsError();\n\t\tconst apiKey = {\n\t\t\tid: key.id.toString(),\n\t\t\tname: key.name,\n\t\t\tscope: key.scope,\n\t\t\ttoken: \"*\".repeat(32),\n\t\t\texpiresAt: key.expires_at ? new Date(key.expires_at) : null,\n\t\t\tcreatedAt: new Date(key.created_at),\n\t\t\tupdatedAt: key.updated_at ? new Date(key.updated_at) : null,\n\t\t\tdeletedAt: key.deleted_at ? new Date(key.deleted_at) : null\n\t\t};\n\t\tif (resource === void 0) return apiKey;\n\t\tif (!key.scope) return apiKey;\n\t\tif (resource === null) throw new InvalidCredentialsError();\n\t\tif (!resource.key.startsWith(key.scope)) throw new InvalidCredentialsError();\n\t\treturn apiKey;\n\t};\n};\n\n//#endregion\nexport { ApiKeyAuth };"],"names":["ApiKeyAuth"],"mappings":"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","x_google_ignoreList":[0]}