@authup/core-kit
Version:
Package containing global constants, types & interfaces.
1 lines • 25.4 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../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/contstants.ts","../src/domains/helpers.ts"],"sourcesContent":["/*\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 (userinfo & id-token)\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';\nimport { ScopeName } from './constants';\n\nexport function transformOAuth2ScopeToArray(scope?: string | string[]) : string[] {\n if (!scope) {\n return [];\n }\n\n if (Array.isArray(scope)) {\n return scope;\n }\n\n return scope.split(/\\s+|,+/);\n}\n\nexport function hasOAuth2OpenIDScope(scope?: string | string[]) : boolean {\n return transformOAuth2ScopeToArray(scope).indexOf(ScopeName.OPEN_ID) !== -1;\n}\n\nexport function isOAuth2ScopeAllowed(\n available?: string | string[],\n required?: string[] | string,\n) : boolean {\n available = transformOAuth2ScopeToArray(available);\n\n if (available.indexOf(ScopeName.GLOBAL) !== -1) {\n return true;\n }\n\n if (available.length === 0) {\n return false;\n }\n\n required = transformOAuth2ScopeToArray(required);\n for (let i = 0; i < required.length; i++) {\n if (available.indexOf(required[i]) === -1) {\n return false;\n }\n }\n\n return true;\n}\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) 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":["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","transformOAuth2ScopeToArray","scope","Array","isArray","split","hasOAuth2OpenIDScope","indexOf","OPEN_ID","isOAuth2ScopeAllowed","available","required","GLOBAL","length","i","isScopeNameValid","UserError","isUserNameValid","toLowerCase","isReservedName","some","el","startsWith","isValidUserEmail","EntityType","EntityDefaultEventName","buildEntityChannelName","entity","buildEntityNamespaceName"],"mappings":"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"}