{"version":3,"file":"index.cjs","sources":["../src/constants.ts","../src/domains/client/error.ts","../src/helpers/name-valid.ts","../src/domains/client/helpers.ts","../src/domains/identity-provider/constants.ts","../src/domains/identity-provider/utils.ts","../src/domains/identity-provider/preset/constants.ts","../src/domains/identity-provider/preset/utils.ts","../src/domains/permission/constants.ts","../src/domains/permission/helpers.ts","../src/domains/policy/helpers.ts","../src/domains/realm/constants.ts","../src/domains/realm/helpers.ts","../src/domains/robot/helpers.ts","../src/domains/robot/error.ts","../src/domains/role/constants.ts","../src/domains/role/utils.ts","../src/domains/scope/constants.ts","../src/domains/scope/utils.ts","../src/domains/user/error.ts","../src/domains/user/utils.ts","../src/domains/user/validator.ts","../src/domains/contstants.ts","../src/domains/helpers.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum ValidatorGroup {\n    CREATE = 'create',\n    UPDATE = 'update',\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { AuthupError, ErrorCode } from '@authup/errors';\n\nexport class ClientError extends AuthupError {\n    static credentialsInvalid() {\n        return new ClientError({\n            code: ErrorCode.ENTITY_CREDENTIALS_INVALID,\n            message: 'The client credentials are invalid.',\n        });\n    }\n\n    static notFound() {\n        return new ClientError({\n            code: ErrorCode.ENTITY_NOT_FOUND,\n            message: 'The client account was not found.',\n        });\n    }\n\n    static inactive() {\n        return new ClientError({\n            code: ErrorCode.ENTITY_INACTIVE,\n            message: 'The client account is inactive.',\n        });\n    }\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { AuthupError } from '@authup/errors';\n\nexport type NameValidOptions = {\n    throwOnFailure?: boolean;\n};\nexport function isNameValid(input: string, options: NameValidOptions = {}): boolean {\n    if (/\\s/g.test(input)) {\n        if (options.throwOnFailure) {\n            throw new AuthupError('Whitespace character is not allowed.');\n        }\n\n        return false;\n    }\n\n    if (/^[A-Za-z0-9-_.]+$/.test(input)) {\n        return true;\n    }\n\n    if (options.throwOnFailure) {\n        throw new AuthupError('Only the characters [A-Za-z0-9-_.]+ are allowed.');\n    }\n\n    return false;\n}\n","/*\n * Copyright (c) 2021-2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { NameValidOptions } from '../../helpers';\nimport { isNameValid } from '../../helpers';\n\nexport function isClientNameValid(name: string, options: NameValidOptions = {}) : boolean {\n    return isNameValid(name, options);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum IdentityProviderProtocol {\n    LDAP = 'ldap',\n    OAUTH2 = 'oauth2',\n    OIDC = 'oidc',\n}\n\nexport enum IdentityProviderMappingSyncMode {\n    /**\n     * Synchronize on initial user login.\n     */\n    ONCE = 'once',\n    /**\n     * Synchronize on every user login.\n     */\n    ALWAYS = 'always',\n    /**\n     * Synchronize based on idp configuration.\n     */\n    INHERIT = 'inherit',\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { NameValidOptions } from '../../helpers';\nimport { isNameValid } from '../../helpers';\n\nexport function buildIdentityProviderAuthorizeCallbackPath(id: string | number) {\n    return `/identity-providers/${id}/authorize-callback`;\n}\n\nexport function buildIdentityProviderAuthorizePath(id: string | number) {\n    return `/identity-providers/${id}/authorize-url`;\n}\n\nexport function isIdentityProviderNameValid(input: string, options: NameValidOptions = {}) : boolean {\n    return isNameValid(input, options);\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum IdentityProviderPreset {\n    FACEBOOK = 'facebook',\n    GITHUB = 'github',\n    GITLAB = 'gitlab',\n    GOOGLE = 'google',\n    PAYPAL = 'paypal',\n    INSTAGRAM = 'instagram',\n    STACKOVERFLOW = 'stackoverflow',\n    TWITTER = 'twitter',\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { IdentityProviderProtocol } from '../constants';\nimport { IdentityProviderPreset } from './constants';\n\nexport function getIdentityProviderProtocolForPreset(\n    id: `${IdentityProviderPreset}`,\n) : `${IdentityProviderProtocol}` | undefined {\n    switch (id) {\n        case IdentityProviderPreset.GITHUB:\n        case IdentityProviderPreset.GITLAB:\n        case IdentityProviderPreset.GOOGLE:\n        case IdentityProviderPreset.FACEBOOK:\n        case IdentityProviderPreset.INSTAGRAM:\n        case IdentityProviderPreset.PAYPAL:\n        case IdentityProviderPreset.STACKOVERFLOW:\n        case IdentityProviderPreset.TWITTER:\n            return IdentityProviderProtocol.OIDC;\n    }\n\n    return undefined;\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum PermissionName {\n    CLIENT_CREATE = 'client_create',\n    CLIENT_DELETE = 'client_delete',\n    CLIENT_UPDATE = 'client_update',\n    CLIENT_READ = 'client_read',\n    CLIENT_SELF_MANAGE = 'client_self_manage',\n\n    CLIENT_PERMISSION_CREATE = 'client_permission_create',\n    CLIENT_PERMISSION_DELETE = 'client_permission_delete',\n    CLIENT_PERMISSION_READ = 'client_permission_read',\n\n    CLIENT_ROLE_CREATE = 'client_role_create',\n    CLIENT_ROLE_DELETE = 'client_role_delete',\n    CLIENT_ROLE_UPDATE = 'client_role_update',\n    CLIENT_ROLE_READ = 'client_role_read',\n\n    CLIENT_SCOPE_CREATE = 'client_scope_create',\n    CLIENT_SCOPE_DELETE = 'client_scope_delete',\n\n    IDENTITY_PROVIDER_CREATE = 'identity_provider_create',\n    IDENTITY_PROVIDER_DELETE = 'identity_provider_delete',\n    IDENTITY_PROVIDER_UPDATE = 'identity_provider_update',\n    IDENTITY_PROVIDER_READ = 'identity_provider_read',\n\n    IDENTITY_PROVIDER_ROLE_CREATE = 'identity_provider_role_create',\n    IDENTITY_PROVIDER_ROLE_DELETE = 'identity_provider_role_delete',\n    IDENTITY_PROVIDER_ROLE_UPDATE = 'identity_provider_role_update',\n\n    PERMISSION_CREATE = 'permission_create',\n    PERMISSION_DELETE = 'permission_delete',\n    PERMISSION_UPDATE = 'permission_update',\n    PERMISSION_READ = 'permission_read',\n\n    REALM_CREATE = 'realm_create',\n    REALM_DELETE = 'realm_delete',\n    REALM_UPDATE = 'realm_update',\n    REALM_READ = 'realm_read',\n\n    ROBOT_CREATE = 'robot_create',\n    ROBOT_DELETE = 'robot_delete',\n    ROBOT_UPDATE = 'robot_update',\n    ROBOT_READ = 'robot_read',\n    ROBOT_SELF_MANAGE = 'robot_self_manage',\n\n    ROBOT_PERMISSION_CREATE = 'robot_permission_create',\n    ROBOT_PERMISSION_DELETE = 'robot_permission_delete',\n    ROBOT_PERMISSION_READ = 'robot_permission_read',\n\n    ROBOT_ROLE_CREATE = 'robot_role_create',\n    ROBOT_ROLE_DELETE = 'robot_role_delete',\n    ROBOT_ROLE_UPDATE = 'robot_role_update',\n    ROBOT_ROLE_READ = 'robot_role_read',\n\n    ROLE_CREATE = 'role_create',\n    ROLE_DELETE = 'role_delete',\n    ROLE_UPDATE = 'role_update',\n    ROLE_READ = 'role_read',\n\n    ROLE_PERMISSION_CREATE = 'role_permission_create',\n    ROLE_PERMISSION_DELETE = 'role_permission_delete',\n    ROLE_PERMISSION_READ = 'role_permission_read',\n\n    SCOPE_CREATE = 'scope_create',\n    SCOPE_DELETE = 'scope_delete',\n    SCOPE_UPDATE = 'scope_update',\n    SCOPE_READ = 'scope_read',\n\n    USER_CREATE = 'user_create',\n    USER_DELETE = 'user_delete',\n    USER_UPDATE = 'user_update',\n    USER_READ = 'user_read',\n    USER_SELF_MANAGE = 'user_self_update',\n\n    USER_PERMISSION_CREATE = 'user_permission_create',\n    USER_PERMISSION_DELETE = 'user_permission_delete',\n    USER_PERMISSION_READ = 'user_permission_read',\n\n    USER_ROLE_CREATE = 'user_role_create',\n    USER_ROLE_DELETE = 'user_role_delete',\n    USER_ROLE_UPDATE = 'user_role_update',\n    USER_ROLE_READ = 'user_role_read',\n}\n","/*\n * Copyright (c) 2021-2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { NameValidOptions } from '../../helpers';\nimport { isNameValid } from '../../helpers';\n\nexport function isPermissionNameValid(name: string, options: NameValidOptions = {}) : boolean {\n    return isNameValid(name, options);\n}\n","/*\n * Copyright (c) 2021-2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { NameValidOptions } from '../../helpers';\nimport { isNameValid } from '../../helpers';\n\nexport function isPolicyNameValid(name: string, options: NameValidOptions = {}) : boolean {\n    return isNameValid(name, options);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport const REALM_MASTER_NAME = 'master';\nexport const REALM_NAME_REGEX = /^[a-zA-Z0-9_]{3,128}$/;\n","/*\n * Copyright (c) 2021-2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { NameValidOptions } from '../../helpers';\nimport { isNameValid } from '../../helpers';\n\nexport function isRealmNameValid(name: string, options: NameValidOptions = {}) : boolean {\n    return isNameValid(name, options);\n}\n","/*\n * Copyright (c) 2021-2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { NameValidOptions } from '../../helpers';\nimport { isNameValid } from '../../helpers';\n\nexport function isRobotNameValid(name: string, options: NameValidOptions = {}) : boolean {\n    return isNameValid(name, options);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { AuthupError, ErrorCode } from '@authup/errors';\n\nexport class RobotError extends AuthupError {\n    static credentialsInvalid() {\n        return new RobotError({\n            code: ErrorCode.ENTITY_CREDENTIALS_INVALID,\n            message: 'The robot credentials are invalid.',\n        });\n    }\n\n    static notFound() {\n        return new RobotError({\n            code: ErrorCode.ENTITY_NOT_FOUND,\n            message: 'The robot account was not found.',\n        });\n    }\n\n    static inactive() {\n        return new RobotError({\n            code: ErrorCode.ENTITY_INACTIVE,\n            message: 'The robot account is inactive.',\n        });\n    }\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport const ROLE_ADMIN_NAME = 'admin';\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { NameValidOptions } from '../../helpers';\nimport { isNameValid } from '../../helpers';\n\nexport function isRoleNameValid(name: string, options: NameValidOptions = {}) : boolean {\n    return isNameValid(name, options);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum ScopeName {\n    /**\n     * Full permissions\n     */\n    GLOBAL = 'global',\n\n    /**\n     * for Openid usage (id-token)\n     */\n    OPEN_ID = 'openid',\n\n    /**\n     * /users/@me with email (userinfo & id-token)\n     */\n    EMAIL = 'email',\n\n    /**\n     * Roles array (id-token)\n     */\n    ROLES = 'roles',\n\n    /**\n     * /users/@me without email (userinfo & id-token)\n     */\n    IDENTITY = 'identity',\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { NameValidOptions } from '../../helpers';\nimport { isNameValid } from '../../helpers';\n\nexport function isScopeNameValid(name: string, options: NameValidOptions = {}) : boolean {\n    return isNameValid(name, options);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { AuthupError, ErrorCode } from '@authup/errors';\n\nexport class UserError extends AuthupError {\n    static credentialsInvalid() {\n        return new UserError({\n            code: ErrorCode.ENTITY_CREDENTIALS_INVALID,\n            message: 'The user credentials are invalid.',\n        });\n    }\n\n    static notFound() {\n        return new UserError({\n            code: ErrorCode.ENTITY_NOT_FOUND,\n            message: 'The user account was not found.',\n        });\n    }\n\n    static inactive() {\n        return new UserError({\n            code: ErrorCode.ENTITY_INACTIVE,\n            message: 'The user account is inactive.',\n        });\n    }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { AuthupError } from '@authup/errors';\nimport type { NameValidOptions } from '../../helpers';\nimport { isNameValid } from '../../helpers';\n\nexport function isUserNameValid(input: string, options: NameValidOptions = {}) : boolean {\n    if (!isNameValid(input, options)) return false;\n\n    input = input.toLowerCase();\n\n    const isReservedName = [\n        'bot',\n        'system',\n        'everyone',\n        'here',\n    ].some((el) => input.startsWith(el));\n\n    if (isReservedName) {\n        if (options.throwOnFailure) {\n            throw new AuthupError(`${input} is a reserved name.`);\n        }\n\n        return false;\n    }\n\n    return true;\n}\n\nexport function isValidUserEmail(input: string) {\n    return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(input);\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { createValidator } from '@validup/adapter-zod';\nimport { Container } from 'validup';\nimport zod from 'zod';\nimport { ValidatorGroup } from '../../constants';\nimport type { User } from './entity';\nimport { isUserNameValid } from './utils';\n\nexport class UserValidator extends Container<User> {\n    protected initialize() {\n        super.initialize();\n\n        const nameValidator = createValidator(\n            zod\n                .string()\n                .min(3)\n                .max(128)\n                .check((ctx) => {\n                    try {\n                        isUserNameValid(ctx.value, { throwOnFailure: true });\n                    } catch (e) {\n                        ctx.issues.push({\n                            input: ctx.value,\n                            code: 'custom',\n                            message: e instanceof Error ? e.message : 'The user name is not valid.',\n                        });\n                    }\n                }),\n        );\n\n        this.mount(\n            'name',\n            { group: ValidatorGroup.CREATE },\n            nameValidator,\n        );\n        this.mount(\n            'name',\n            { group: ValidatorGroup.UPDATE, optional: true },\n            nameValidator,\n        );\n\n        this.mount(\n            'name_locked',\n            { optional: true },\n            createValidator(zod.boolean()),\n        );\n\n        // ----------------------------------------------\n\n        this.mount(\n            'first_name',\n            { optional: true },\n            createValidator(zod.string().min(3).max(128).nullable()),\n        );\n\n        this.mount(\n            'last_name',\n            { optional: true },\n            createValidator(zod.string().min(3).max(128).nullable()),\n        );\n\n        // ----------------------------------------------\n\n        this.mount(\n            'display_name',\n            { optional: true },\n            createValidator(zod.string().min(3).max(256).nullable()),\n        );\n\n        // ----------------------------------------------\n\n        this.mount(\n            'email',\n            { optional: true },\n            createValidator(zod.string().email().nullable()),\n        );\n\n        // ----------------------------------------------\n\n        this.mount(\n            'password',\n            { optional: true },\n            createValidator(zod.string().min(3).max(512)),\n        );\n\n        // ----------------------------------------------\n\n        this.mount(\n            'active',\n            { optional: true },\n            createValidator(zod.boolean()),\n        );\n\n        this.mount(\n            'name_locked',\n            { optional: true },\n            createValidator(zod.boolean()),\n        );\n\n        this.mount(\n            'realm_id',\n            { group: ValidatorGroup.CREATE, optional: true },\n            createValidator(zod.string().uuid()),\n        );\n\n        this.mount(\n            'status',\n            { optional: true },\n            createValidator(zod.string().min(3).max(256).nullable()),\n        );\n\n        this.mount(\n            'status_message',\n            { optional: true },\n            createValidator(zod.string().min(3).max(256).nullable()),\n        );\n    }\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum EntityType {\n    CLIENT = 'client',\n    CLIENT_PERMISSION = 'clientPermission',\n    CLIENT_ROLE = 'clientRole',\n    CLIENT_SCOPE = 'clientScope',\n    IDENTITY_PROVIDER = 'identityProvider',\n    IDENTITY_PROVIDER_ACCOUNT = 'identityProviderAccount',\n    IDENTITY_PROVIDER_ATTRIBUTE = 'identityProviderAttribute',\n    IDENTITY_PROVIDER_ROLE_MAPPING = 'identityProviderRoleMapping',\n    POLICY = 'policy',\n    POLICY_ATTRIBUTE = 'policyAttribute',\n    PERMISSION = 'permission',\n    REALM = 'realm',\n    ROBOT = 'robot',\n    ROBOT_PERMISSION = 'robotPermission',\n    ROBOT_ROLE = 'robotRole',\n    ROLE = 'role',\n    ROLE_ATTRIBUTE = 'roleAttribute',\n    ROLE_PERMISSION = 'rolePermission',\n    SCOPE = 'scope', // todo: add\n    USER = 'user',\n    USER_ATTRIBUTE = 'userAttribute',\n    USER_PERMISSION = 'userPermission',\n    USER_ROLE = 'userRole',\n}\n\nexport enum EntityDefaultEventName {\n    CREATED = 'created',\n    DELETED = 'deleted',\n    UPDATED = 'updated',\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function buildEntityChannelName(entity: string, id?: string | number) {\n    return id ? `${entity}:${id}` : entity;\n}\n\nexport function buildEntityNamespaceName(id: string) {\n    return `/realm#${id}`;\n}\n"],"names":["ValidatorGroup","ClientError","AuthupError","credentialsInvalid","code","ErrorCode","ENTITY_CREDENTIALS_INVALID","message","notFound","ENTITY_NOT_FOUND","inactive","ENTITY_INACTIVE","isNameValid","input","options","test","throwOnFailure","isClientNameValid","name","IdentityProviderProtocol","IdentityProviderMappingSyncMode","buildIdentityProviderAuthorizeCallbackPath","id","buildIdentityProviderAuthorizePath","isIdentityProviderNameValid","IdentityProviderPreset","getIdentityProviderProtocolForPreset","GITHUB","GITLAB","GOOGLE","FACEBOOK","INSTAGRAM","PAYPAL","STACKOVERFLOW","TWITTER","OIDC","undefined","PermissionName","isPermissionNameValid","isPolicyNameValid","REALM_MASTER_NAME","REALM_NAME_REGEX","isRealmNameValid","isRobotNameValid","RobotError","ROLE_ADMIN_NAME","isRoleNameValid","ScopeName","isScopeNameValid","UserError","isUserNameValid","toLowerCase","isReservedName","some","el","startsWith","isValidUserEmail","UserValidator","Container","initialize","nameValidator","createValidator","zod","string","min","max","check","ctx","value","e","issues","push","Error","mount","group","CREATE","UPDATE","optional","boolean","nullable","email","uuid","EntityType","EntityDefaultEventName","buildEntityChannelName","entity","buildEntityNamespaceName"],"mappings":"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"}